pokeruby/asm/rom_804373C.s
2016-10-28 15:41:15 -07:00

8496 lines
137 KiB
ArmAsm

.include "constants/gba_constants.inc"
.include "constants/species_constants.inc"
.include "asm/macros.inc"
.syntax unified
.text
thumb_func_start sub_804373C
sub_804373C: @ 804373C
movs r0, 0x9
bx lr
thumb_func_end sub_804373C
thumb_func_start sub_8043740
sub_8043740: @ 8043740
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x4
adds r7, r1, 0
lsls r0, 16
lsrs r5, r0, 16
lsls r2, 24
lsrs r2, 24
mov r10, r2
movs r3, 0
movs r2, 0
_0804375C:
lsls r0, r3, 24
asrs r0, 24
mov r3, sp
adds r1, r3, r0
strb r2, [r1]
adds r0, 0x1
lsls r0, 24
lsrs r3, r0, 24
asrs r0, 24
cmp r0, 0x3
ble _0804375C
movs r3, 0x3
movs r0, 0x1
negs r0, r0
mov r9, r0
mov r8, sp
_0804377C:
lsls r0, r5, 16
asrs r6, r0, 16
cmp r6, 0
ble _080437AA
lsls r4, r3, 24
asrs r4, 24
mov r1, sp
adds r5, r1, r4
adds r0, r6, 0
movs r1, 0xA
bl __modsi3
strb r0, [r5]
adds r0, r6, 0
movs r1, 0xA
bl __divsi3
lsls r0, 16
lsrs r5, r0, 16
subs r4, 0x1
lsls r4, 24
lsrs r3, r4, 24
b _0804377C
_080437AA:
lsls r1, r3, 24
asrs r0, r1, 24
cmp r0, r9
ble _080437CE
movs r4, 0xFF
movs r3, 0x1
negs r3, r3
_080437B8:
asrs r2, r1, 24
mov r5, sp
adds r1, r5, r2
ldrb r0, [r1]
orrs r0, r4
strb r0, [r1]
subs r2, 0x1
lsls r1, r2, 24
asrs r0, r1, 24
cmp r0, r3
bgt _080437B8
_080437CE:
mov r1, r8
ldrb r0, [r1, 0x3]
cmp r0, 0xFF
bne _080437DA
movs r0, 0
strb r0, [r1, 0x3]
_080437DA:
mov r2, r10
cmp r2, 0
bne _0804386A
movs r3, 0
movs r1, 0
movs r6, 0xFC
lsls r6, 8
movs r5, 0x1E
mov r12, r5
_080437EC:
lsls r1, 24
asrs r2, r1, 24
mov r0, sp
adds r5, r0, r2
ldrb r0, [r5]
mov r8, r1
cmp r0, 0xFF
bne _08043822
lsls r1, r2, 1
adds r1, r7
ldrh r2, [r1]
adds r0, r6, 0
ands r0, r2
mov r2, r12
orrs r0, r2
strh r0, [r1]
lsls r3, 24
asrs r1, r3, 23
adds r1, r7
adds r1, 0x40
ldrh r2, [r1]
adds r0, r6, 0
ands r0, r2
mov r5, r12
orrs r0, r5
strh r0, [r1]
b _08043852
_08043822:
lsls r2, 1
adds r2, r7
ldrh r0, [r2]
adds r1, r6, 0
ands r1, r0
ldrb r0, [r5]
adds r0, 0x14
orrs r1, r0
strh r1, [r2]
lsls r4, r3, 24
asrs r3, r4, 24
lsls r2, r3, 1
adds r2, r7
adds r2, 0x40
ldrh r0, [r2]
adds r1, r6, 0
ands r1, r0
mov r5, sp
adds r0, r5, r3
ldrb r0, [r0]
adds r0, 0x34
orrs r1, r0
strh r1, [r2]
adds r3, r4, 0
_08043852:
movs r0, 0x80
lsls r0, 17
add r0, r8
lsrs r1, r0, 24
movs r2, 0x80
lsls r2, 17
adds r0, r3, r2
lsrs r3, r0, 24
asrs r0, 24
cmp r0, 0x3
ble _080437EC
b _080438CE
_0804386A:
movs r3, 0
movs r4, 0xFC
lsls r4, 8
movs r6, 0x1E
_08043872:
lsls r1, r3, 24
asrs r2, r1, 24
mov r3, sp
adds r5, r3, r2
ldrb r0, [r5]
adds r3, r1, 0
cmp r0, 0xFF
bne _0804389E
lsls r1, r2, 1
adds r1, r7
ldrh r2, [r1]
adds r0, r4, 0
ands r0, r2
orrs r0, r6
strh r0, [r1]
adds r1, 0x40
ldrh r2, [r1]
adds r0, r4, 0
ands r0, r2
orrs r0, r6
strh r0, [r1]
b _080438C0
_0804389E:
lsls r2, 1
adds r2, r7
ldrh r0, [r2]
adds r1, r4, 0
ands r1, r0
ldrb r0, [r5]
adds r0, 0x14
orrs r1, r0
strh r1, [r2]
adds r2, 0x40
ldrh r0, [r2]
adds r1, r4, 0
ands r1, r0
ldrb r0, [r5]
adds r0, 0x34
orrs r1, r0
strh r1, [r2]
_080438C0:
movs r5, 0x80
lsls r5, 17
adds r0, r3, r5
lsrs r3, r0, 24
asrs r0, 24
cmp r0, 0x3
ble _08043872
_080438CE:
add sp, 0x4
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_8043740
thumb_func_start unref_sub_80438E0
unref_sub_80438E0: @ 80438E0
push {r4,r5,lr}
adds r4, r0, 0
adds r0, r1, 0
adds r5, r2, 0
lsls r4, 16
lsrs r4, 16
movs r1, 0x1E
strh r1, [r5, 0x8]
lsls r0, 16
asrs r0, 16
adds r1, r5, 0
movs r2, 0
bl sub_8043740
lsls r4, 16
asrs r4, 16
adds r5, 0xA
adds r0, r4, 0
adds r1, r5, 0
movs r2, 0x1
bl sub_8043740
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end unref_sub_80438E0
thumb_func_start battle_make_oam_normal_battle
battle_make_oam_normal_battle: @ 8043914
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x4
lsls r0, 24
lsrs r0, 24
mov r10, r0
movs r0, 0
str r0, [sp]
bl battle_type_is_double
lsls r0, 24
cmp r0, 0
bne _08043A28
mov r0, r10
bl battle_side_get_owner
lsls r0, 24
cmp r0, 0
bne _080439AC
ldr r4, _0804399C @ =gSpriteTemplate_820A4EC
adds r0, r4, 0
movs r1, 0xF0
movs r2, 0xA0
movs r3, 0x1
bl CreateSprite
lsls r0, 24
lsrs r6, r0, 24
adds r0, r4, 0
movs r1, 0xF0
movs r2, 0xA0
movs r3, 0x1
bl CreateSpriteAtEnd
lsls r0, 24
lsrs r7, r0, 24
ldr r4, _080439A0 @ =gSprites
lsls r1, r6, 4
adds r1, r6
lsls r1, 2
adds r1, r4
ldrb r2, [r1, 0x1]
movs r3, 0x3F
adds r0, r3, 0
ands r0, r2
strb r0, [r1, 0x1]
lsls r2, r7, 4
adds r2, r7
lsls r2, 2
adds r2, r4
ldrb r0, [r2, 0x1]
ands r3, r0
strb r3, [r2, 0x1]
ldrh r3, [r2, 0x4]
lsls r1, r3, 22
lsrs r1, 22
adds r1, 0x40
ldr r4, _080439A4 @ =0x000003ff
adds r0, r4, 0
ands r1, r0
ldr r0, _080439A8 @ =0xfffffc00
ands r0, r3
orrs r0, r1
strh r0, [r2, 0x4]
b _080439F2
.align 2, 0
_0804399C: .4byte gSpriteTemplate_820A4EC
_080439A0: .4byte gSprites
_080439A4: .4byte 0x000003ff
_080439A8: .4byte 0xfffffc00
_080439AC:
ldr r4, _08043A14 @ =gSpriteTemplate_820A51C
adds r0, r4, 0
movs r1, 0xF0
movs r2, 0xA0
movs r3, 0x1
bl CreateSprite
lsls r0, 24
lsrs r6, r0, 24
adds r0, r4, 0
movs r1, 0xF0
movs r2, 0xA0
movs r3, 0x1
bl CreateSpriteAtEnd
lsls r0, 24
lsrs r7, r0, 24
ldr r0, _08043A18 @ =gSprites
lsls r2, r7, 4
adds r2, r7
lsls r2, 2
adds r2, r0
ldrh r3, [r2, 0x4]
lsls r1, r3, 22
lsrs r1, 22
adds r1, 0x20
ldr r5, _08043A1C @ =0x000003ff
adds r0, r5, 0
ands r1, r0
ldr r0, _08043A20 @ =0xfffffc00
ands r0, r3
orrs r0, r1
strh r0, [r2, 0x4]
movs r0, 0x2
str r0, [sp]
_080439F2:
ldr r2, _08043A18 @ =gSprites
lsls r0, r6, 4
adds r0, r6
lsls r0, 2
adds r0, r2
strh r7, [r0, 0x6]
lsls r0, r7, 4
adds r0, r7
lsls r0, 2
adds r1, r0, r2
strh r6, [r1, 0x38]
adds r2, 0x1C
adds r0, r2
ldr r1, _08043A24 @ =sub_8043D5C
str r1, [r0]
b _08043B50
.align 2, 0
_08043A14: .4byte gSpriteTemplate_820A51C
_08043A18: .4byte gSprites
_08043A1C: .4byte 0x000003ff
_08043A20: .4byte 0xfffffc00
_08043A24: .4byte sub_8043D5C
_08043A28:
mov r0, r10
bl battle_side_get_owner
lsls r0, 24
cmp r0, 0
bne _08043ACC
mov r0, r10
bl battle_get_per_side_status
adds r1, r0, 0
lsls r1, 24
lsrs r1, 25
lsls r0, r1, 1
adds r0, r1
lsls r0, 3
ldr r4, _08043AB8 @ =gSpriteTemplate_820A4EC
adds r0, r4
movs r1, 0xF0
movs r2, 0xA0
movs r3, 0x1
bl CreateSprite
lsls r0, 24
lsrs r6, r0, 24
mov r0, r10
bl battle_get_per_side_status
adds r1, r0, 0
lsls r1, 24
lsrs r1, 25
lsls r0, r1, 1
adds r0, r1
lsls r0, 3
adds r0, r4
movs r1, 0xF0
movs r2, 0xA0
movs r3, 0x1
bl CreateSpriteAtEnd
lsls r0, 24
lsrs r7, r0, 24
ldr r4, _08043ABC @ =gSprites
lsls r0, r6, 4
adds r0, r6
lsls r0, 2
adds r0, r4
strh r7, [r0, 0x6]
lsls r2, r7, 4
adds r2, r7
lsls r2, 2
adds r3, r2, r4
strh r6, [r3, 0x38]
ldrh r1, [r3, 0x4]
mov r8, r1
mov r5, r8
lsls r1, r5, 22
lsrs r1, 22
adds r1, 0x20
ldr r5, _08043AC0 @ =0x000003ff
adds r0, r5, 0
ands r1, r0
ldr r0, _08043AC4 @ =0xfffffc00
mov r5, r8
ands r0, r5
orrs r0, r1
strh r0, [r3, 0x4]
adds r4, 0x1C
adds r2, r4
ldr r0, _08043AC8 @ =sub_8043D5C
str r0, [r2]
movs r0, 0x1
b _08043B4E
.align 2, 0
_08043AB8: .4byte gSpriteTemplate_820A4EC
_08043ABC: .4byte gSprites
_08043AC0: .4byte 0x000003ff
_08043AC4: .4byte 0xfffffc00
_08043AC8: .4byte sub_8043D5C
_08043ACC:
mov r0, r10
bl battle_get_per_side_status
adds r1, r0, 0
lsls r1, 24
lsrs r1, 25
lsls r0, r1, 1
adds r0, r1
lsls r0, 3
ldr r4, _08043C14 @ =gSpriteTemplate_820A51C
adds r0, r4
movs r1, 0xF0
movs r2, 0xA0
movs r3, 0x1
bl CreateSprite
lsls r0, 24
lsrs r6, r0, 24
mov r0, r10
bl battle_get_per_side_status
adds r1, r0, 0
lsls r1, 24
lsrs r1, 25
lsls r0, r1, 1
adds r0, r1
lsls r0, 3
adds r0, r4
movs r1, 0xF0
movs r2, 0xA0
movs r3, 0x1
bl CreateSpriteAtEnd
lsls r0, 24
lsrs r7, r0, 24
ldr r4, _08043C18 @ =gSprites
lsls r0, r6, 4
adds r0, r6
lsls r0, 2
adds r0, r4
strh r7, [r0, 0x6]
lsls r2, r7, 4
adds r2, r7
lsls r2, 2
adds r3, r2, r4
strh r6, [r3, 0x38]
ldrh r1, [r3, 0x4]
mov r8, r1
mov r5, r8
lsls r1, r5, 22
lsrs r1, 22
adds r1, 0x20
ldr r5, _08043C1C @ =0x000003ff
adds r0, r5, 0
ands r1, r0
ldr r0, _08043C20 @ =0xfffffc00
mov r5, r8
ands r0, r5
orrs r0, r1
strh r0, [r3, 0x4]
adds r4, 0x1C
adds r2, r4
ldr r0, _08043C24 @ =sub_8043D5C
str r0, [r2]
movs r0, 0x2
_08043B4E:
str r0, [sp]
_08043B50:
ldr r0, _08043C28 @ =gUnknown_02024A72
add r0, r10
ldrb r1, [r0]
lsls r0, r1, 1
adds r0, r1
lsls r0, 3
ldr r1, _08043C2C @ =gSpriteTemplate_820A56C
adds r0, r1
movs r1, 0x8C
movs r2, 0x3C
movs r3, 0
bl CreateSpriteAtEnd
adds r5, r0, 0
lsls r5, 24
lsrs r5, 24
lsls r4, r5, 4
adds r4, r5
lsls r4, 2
ldr r1, _08043C18 @ =gSprites
mov r8, r1
add r4, r8
mov r0, r10
bl battle_side_get_owner
adds r1, r0, 0
lsls r1, 24
lsrs r1, 21
ldr r0, _08043C30 @ =gSubspriteTables_820A684
adds r1, r0
adds r0, r4, 0
bl SetSubspriteTables
adds r2, r4, 0
adds r2, 0x42
ldrb r1, [r2]
movs r0, 0x3F
ands r0, r1
movs r1, 0x80
orrs r0, r1
strb r0, [r2]
ldrb r1, [r4, 0x5]
movs r0, 0xD
negs r0, r0
ands r0, r1
movs r2, 0x4
mov r9, r2
mov r1, r9
orrs r0, r1
strb r0, [r4, 0x5]
movs r0, 0x1
bl sub_8043CDC
ldrh r1, [r4, 0x4]
lsls r1, 22
lsrs r1, 17
ldr r2, _08043C34 @ =0x06010000
adds r1, r2
ldr r2, _08043C38 @ =REG_BG0HOFS
bl CpuSet
lsls r0, r6, 4
adds r0, r6
lsls r0, 2
add r0, r8
strh r5, [r0, 0x38]
mov r2, r10
strh r2, [r0, 0x3A]
adds r0, 0x3E
ldrb r1, [r0]
mov r5, r9
orrs r1, r5
strb r1, [r0]
lsls r0, r7, 4
adds r0, r7
lsls r0, 2
add r0, r8
adds r0, 0x3E
ldrb r1, [r0]
orrs r1, r5
strb r1, [r0]
strh r6, [r4, 0x38]
mov r0, sp
ldrh r0, [r0]
strh r0, [r4, 0x3A]
adds r4, 0x3E
ldrb r0, [r4]
orrs r0, r5
strb r0, [r4]
adds r0, r6, 0
add sp, 0x4
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_08043C14: .4byte gSpriteTemplate_820A51C
_08043C18: .4byte gSprites
_08043C1C: .4byte 0x000003ff
_08043C20: .4byte 0xfffffc00
_08043C24: .4byte sub_8043D5C
_08043C28: .4byte gUnknown_02024A72
_08043C2C: .4byte gSpriteTemplate_820A56C
_08043C30: .4byte gSubspriteTables_820A684
_08043C34: .4byte 0x06010000
_08043C38: .4byte REG_BG0HOFS
thumb_func_end battle_make_oam_normal_battle
thumb_func_start battle_make_oam_safari_battle
battle_make_oam_safari_battle: @ 8043C3C
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
ldr r4, _08043CC8 @ =gSpriteTemplate_820A54C
adds r0, r4, 0
movs r1, 0xF0
movs r2, 0xA0
movs r3, 0x1
bl CreateSprite
adds r6, r0, 0
lsls r6, 24
lsrs r6, 24
adds r0, r4, 0
movs r1, 0xF0
movs r2, 0xA0
movs r3, 0x1
bl CreateSpriteAtEnd
lsls r0, 24
lsrs r0, 24
ldr r1, _08043CCC @ =gSprites
mov r9, r1
lsls r4, r6, 4
adds r4, r6
lsls r4, 2
add r4, r9
ldrb r3, [r4, 0x1]
movs r2, 0x3F
adds r1, r2, 0
ands r1, r3
strb r1, [r4, 0x1]
lsls r3, r0, 4
adds r3, r0
lsls r3, 2
mov r7, r9
adds r5, r3, r7
ldrb r1, [r5, 0x1]
ands r2, r1
strb r2, [r5, 0x1]
ldrh r1, [r5, 0x4]
mov r8, r1
mov r7, r8
lsls r2, r7, 22
lsrs r2, 22
adds r2, 0x40
ldr r7, _08043CD0 @ =0x000003ff
adds r1, r7, 0
ands r2, r1
ldr r1, _08043CD4 @ =0xfffffc00
mov r7, r8
ands r1, r7
orrs r1, r2
strh r1, [r5, 0x4]
strh r0, [r4, 0x6]
strh r6, [r5, 0x38]
movs r0, 0x1C
add r9, r0
add r3, r9
ldr r0, _08043CD8 @ =sub_8043D5C
str r0, [r3]
adds r0, r6, 0
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_08043CC8: .4byte gSpriteTemplate_820A54C
_08043CCC: .4byte gSprites
_08043CD0: .4byte 0x000003ff
_08043CD4: .4byte 0xfffffc00
_08043CD8: .4byte sub_8043D5C
thumb_func_end battle_make_oam_safari_battle
thumb_func_start sub_8043CDC
sub_8043CDC: @ 8043CDC
lsls r0, 24
lsrs r0, 19
ldr r1, _08043CE8 @ =gUnknown_08D1216C
adds r0, r1
bx lr
.align 2, 0
_08043CE8: .4byte gUnknown_08D1216C
thumb_func_end sub_8043CDC
thumb_func_start sub_8043CEC
sub_8043CEC: @ 8043CEC
push {r4,r5,lr}
adds r4, r0, 0
ldrh r0, [r4, 0x38]
lsls r0, 24
lsrs r5, r0, 24
movs r1, 0x3A
ldrsh r0, [r4, r1]
cmp r0, 0x1
beq _08043D1C
cmp r0, 0x1
bgt _08043D30
cmp r0, 0
bne _08043D30
ldr r2, _08043D18 @ =gSprites
lsls r3, r5, 4
adds r1, r3, r5
lsls r1, 2
adds r1, r2
ldrh r0, [r1, 0x20]
adds r0, 0x10
b _08043D3E
.align 2, 0
_08043D18: .4byte gSprites
_08043D1C:
ldr r2, _08043D2C @ =gSprites
lsls r3, r5, 4
adds r1, r3, r5
lsls r1, 2
adds r1, r2
ldrh r0, [r1, 0x20]
adds r0, 0x10
b _08043D3E
.align 2, 0
_08043D2C: .4byte gSprites
_08043D30:
ldr r2, _08043D58 @ =gSprites
lsls r3, r5, 4
adds r1, r3, r5
lsls r1, 2
adds r1, r2
ldrh r0, [r1, 0x20]
adds r0, 0x8
_08043D3E:
strh r0, [r4, 0x20]
ldrh r0, [r1, 0x22]
strh r0, [r4, 0x22]
adds r0, r3, r5
lsls r0, 2
adds r0, r2
ldrh r1, [r0, 0x24]
strh r1, [r4, 0x24]
ldrh r0, [r0, 0x26]
strh r0, [r4, 0x26]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_08043D58: .4byte gSprites
thumb_func_end sub_8043CEC
thumb_func_start sub_8043D5C
sub_8043D5C: @ 8043D5C
ldrh r1, [r0, 0x38]
lsls r1, 24
lsrs r1, 24
ldr r3, _08043D80 @ =gSprites
lsls r2, r1, 4
adds r2, r1
lsls r2, 2
adds r2, r3
ldrh r1, [r2, 0x20]
adds r1, 0x40
strh r1, [r0, 0x20]
ldrh r1, [r2, 0x22]
strh r1, [r0, 0x22]
ldrh r1, [r2, 0x24]
strh r1, [r0, 0x24]
ldrh r1, [r2, 0x26]
strh r1, [r0, 0x26]
bx lr
.align 2, 0
_08043D80: .4byte gSprites
thumb_func_end sub_8043D5C
thumb_func_start sub_8043D84
sub_8043D84: @ 8043D84
push {r4,r5,lr}
ldr r5, [sp, 0xC]
lsls r0, 24
lsrs r0, 24
lsls r4, r0, 2
adds r4, r0
lsls r4, 2
ldr r0, _08043DA8 @ =0x02017850
adds r4, r0
strb r1, [r4]
str r2, [r4, 0x4]
str r3, [r4, 0x8]
str r5, [r4, 0xC]
ldr r0, _08043DAC @ =0xffff8000
str r0, [r4, 0x10]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_08043DA8: .4byte 0x02017850
_08043DAC: .4byte 0xffff8000
thumb_func_end sub_8043D84
thumb_func_start sub_8043DB0
sub_8043DB0: @ 8043DB0
push {r4,lr}
lsls r0, 24
lsrs r0, 24
ldr r4, _08043DF8 @ =gSprites
lsls r2, r0, 4
adds r2, r0
lsls r2, 2
adds r2, r4
adds r1, r2, 0
adds r1, 0x3E
ldrb r0, [r1]
movs r3, 0x4
orrs r0, r3
strb r0, [r1]
movs r0, 0x38
ldrsh r1, [r2, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r4
adds r0, 0x3E
ldrb r1, [r0]
orrs r1, r3
strb r1, [r0]
ldrh r1, [r2, 0x6]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r4
adds r0, 0x3E
ldrb r1, [r0]
orrs r1, r3
strb r1, [r0]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08043DF8: .4byte gSprites
thumb_func_end sub_8043DB0
thumb_func_start sub_8043DFC
sub_8043DFC: @ 8043DFC
push {r4,r5,lr}
lsls r0, 24
lsrs r0, 24
ldr r5, _08043E4C @ =gSprites
lsls r2, r0, 4
adds r2, r0
lsls r2, 2
adds r2, r5
adds r4, r2, 0
adds r4, 0x3E
ldrb r1, [r4]
movs r3, 0x5
negs r3, r3
adds r0, r3, 0
ands r0, r1
strb r0, [r4]
movs r0, 0x38
ldrsh r1, [r2, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r5
adds r0, 0x3E
ldrb r4, [r0]
adds r1, r3, 0
ands r1, r4
strb r1, [r0]
ldrh r1, [r2, 0x6]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r5
adds r0, 0x3E
ldrb r1, [r0]
ands r3, r1
strb r3, [r0]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_08043E4C: .4byte gSprites
thumb_func_end sub_8043DFC
thumb_func_start sub_8043E50
sub_8043E50: @ 8043E50
push {r4,lr}
lsls r0, 24
lsrs r0, 24
ldr r4, _08043E6C @ =gSprites
lsls r3, r0, 4
adds r3, r0
lsls r3, 2
adds r3, r4
strh r1, [r3, 0x20]
strh r2, [r3, 0x22]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08043E6C: .4byte gSprites
thumb_func_end sub_8043E50
thumb_func_start unref_sub_8043E70
unref_sub_8043E70: @ 8043E70
push {r4,r5,lr}
lsls r0, 24
lsrs r0, 24
ldr r5, _08043EAC @ =gSprites
lsls r4, r0, 4
adds r4, r0
lsls r4, 2
adds r4, r5
ldrh r1, [r4, 0x6]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r5
bl DestroySprite
movs r0, 0x38
ldrsh r1, [r4, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r5
bl DestroySprite
adds r0, r4, 0
bl DestroySprite
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_08043EAC: .4byte gSprites
thumb_func_end unref_sub_8043E70
thumb_func_start nullsub_11
nullsub_11: @ 8043EB0
bx lr
thumb_func_end nullsub_11
thumb_func_start sub_8043EB4
sub_8043EB4: @ 8043EB4
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
lsls r0, 24
lsrs r0, 24
movs r6, 0
ldr r1, _08043F38 @ =gUnknown_02024A68
mov r8, r1
ldrb r2, [r1]
cmp r6, r2
bge _08043F2C
ldr r1, _08043F3C @ =gSprites
mov r12, r1
movs r1, 0x3
ands r0, r1
lsls r5, r0, 2
movs r7, 0xD
negs r7, r7
ldr r2, _08043F40 @ =gUnknown_03004340
mov r9, r2
_08043EDE:
mov r1, r9
adds r0, r6, r1
ldrb r0, [r0]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
add r1, r12
ldrb r4, [r1, 0x6]
ldrh r3, [r1, 0x38]
lsls r3, 24
lsrs r3, 24
ldrb r2, [r1, 0x5]
adds r0, r7, 0
ands r0, r2
orrs r0, r5
strb r0, [r1, 0x5]
lsls r1, r4, 4
adds r1, r4
lsls r1, 2
add r1, r12
ldrb r2, [r1, 0x5]
adds r0, r7, 0
ands r0, r2
orrs r0, r5
strb r0, [r1, 0x5]
lsls r1, r3, 4
adds r1, r3
lsls r1, 2
add r1, r12
ldrb r2, [r1, 0x5]
adds r0, r7, 0
ands r0, r2
orrs r0, r5
strb r0, [r1, 0x5]
adds r6, 0x1
mov r2, r8
ldrb r2, [r2]
cmp r6, r2
blt _08043EDE
_08043F2C:
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08043F38: .4byte gUnknown_02024A68
_08043F3C: .4byte gSprites
_08043F40: .4byte gUnknown_03004340
thumb_func_end sub_8043EB4
thumb_func_start sub_8043F44
sub_8043F44: @ 8043F44
push {r4-r6,lr}
lsls r0, 24
lsrs r6, r0, 24
movs r5, 0
movs r4, 0
bl battle_type_is_double
lsls r0, 24
cmp r0, 0
bne _08043F70
adds r0, r6, 0
bl battle_side_get_owner
lsls r0, 24
cmp r0, 0
beq _08043F6A
movs r5, 0x2C
movs r4, 0x1E
b _08043FA8
_08043F6A:
movs r5, 0x9E
movs r4, 0x58
b _08043FA8
_08043F70:
adds r0, r6, 0
bl battle_get_per_side_status
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
beq _08043F9E
cmp r0, 0x1
bgt _08043F88
cmp r0, 0
beq _08043F92
b _08043FA8
_08043F88:
cmp r0, 0x2
beq _08043F98
cmp r0, 0x3
beq _08043FA4
b _08043FA8
_08043F92:
movs r5, 0x9F
movs r4, 0x4D
b _08043FA8
_08043F98:
movs r5, 0xAB
movs r4, 0x66
b _08043FA8
_08043F9E:
movs r5, 0x2C
movs r4, 0x13
b _08043FA8
_08043FA4:
movs r5, 0x20
movs r4, 0x2C
_08043FA8:
ldr r0, _08043FBC @ =gUnknown_03004340
adds r0, r6, r0
ldrb r0, [r0]
adds r1, r5, 0
adds r2, r4, 0
bl sub_8043E50
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_08043FBC: .4byte gUnknown_03004340
thumb_func_end sub_8043F44
thumb_func_start sub_8043FC0
sub_8043FC0: @ 8043FC0
push {r4-r7,lr}
sub sp, 0x20
lsls r0, 24
lsrs r5, r0, 24
lsls r1, 24
lsrs r6, r1, 24
ldr r1, _08044000 @ =gUnknown_0820A81C
mov r0, sp
movs r2, 0x1E
bl memcpy
bl battle_type_is_double
lsls r0, 24
cmp r0, 0
bne _08044010
ldr r1, _08044004 @ =gSprites
lsls r4, r5, 4
adds r0, r4, r5
lsls r0, 2
adds r0, r1
ldrh r0, [r0, 0x3A]
lsls r0, 24
lsrs r0, 24
bl battle_side_get_owner
lsls r0, 24
ldr r7, _08044008 @ =gUnknown_0820A80C
cmp r0, 0
bne _0804402E
ldr r7, _0804400C @ =gUnknown_0820A804
b _0804402E
.align 2, 0
_08044000: .4byte gUnknown_0820A81C
_08044004: .4byte gSprites
_08044008: .4byte gUnknown_0820A80C
_0804400C: .4byte gUnknown_0820A804
_08044010:
ldr r1, _08044040 @ =gSprites
lsls r4, r5, 4
adds r0, r4, r5
lsls r0, 2
adds r0, r1
ldrh r0, [r0, 0x3A]
lsls r0, 24
lsrs r0, 24
bl battle_side_get_owner
lsls r0, 24
ldr r7, _08044044 @ =gUnknown_0820A80C
cmp r0, 0
bne _0804402E
ldr r7, _08044048 @ =gUnknown_0820A814
_0804402E:
mov r3, sp
adds r3, 0x6
cmp r6, 0x64
bne _0804404C
adds r0, r3, 0
movs r1, 0x64
movs r2, 0
movs r3, 0x3
b _0804408C
.align 2, 0
_08044040: .4byte gSprites
_08044044: .4byte gUnknown_0820A80C
_08044048: .4byte gUnknown_0820A814
_0804404C:
movs r1, 0xFC
strb r1, [r3]
mov r3, sp
adds r3, 0x7
movs r0, 0x11
strb r0, [r3]
adds r3, 0x1
movs r0, 0x1
strb r0, [r3]
adds r3, 0x1
strb r1, [r3]
adds r3, 0x1
movs r2, 0x14
strb r2, [r3]
adds r3, 0x1
movs r0, 0x4
strb r0, [r3]
adds r3, 0x1
movs r0, 0xF0
strb r0, [r3]
adds r3, 0x1
strb r1, [r3]
adds r3, 0x1
strb r2, [r3]
adds r3, 0x1
movs r0, 0
strb r0, [r3]
adds r3, 0x1
adds r0, r3, 0
adds r1, r6, 0
movs r2, 0
movs r3, 0x2
_0804408C:
bl ConvertIntToDecimalStringN
adds r3, r0, 0
movs r0, 0xFC
strb r0, [r3]
adds r3, 0x1
movs r0, 0x13
strb r0, [r3]
adds r3, 0x1
movs r0, 0xF
strb r0, [r3]
movs r0, 0xFF
strb r0, [r3, 0x1]
movs r0, 0x80
lsls r0, 18
mov r1, sp
bl sub_80034D4
ldr r1, _080440E0 @ =gSprites
adds r0, r4, r5
lsls r0, 2
adds r6, r0, r1
ldr r5, _080440E4 @ =0x02000020
movs r4, 0x2
_080440BC:
ldrh r0, [r6, 0x4]
lsls r0, 22
lsrs r0, 17
ldm r7!, {r1}
adds r1, r0
adds r0, r5, 0
ldr r2, _080440E8 @ =REG_BG0CNT
bl CpuSet
adds r5, 0x40
subs r4, 0x1
cmp r4, 0
bne _080440BC
add sp, 0x20
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080440E0: .4byte gSprites
_080440E4: .4byte 0x02000020
_080440E8: .4byte REG_BG0CNT
thumb_func_end sub_8043FC0
thumb_func_start sub_80440EC
sub_80440EC: @ 80440EC
push {r4-r7,lr}
mov r7, r8
push {r7}
sub sp, 0x14
lsls r0, 24
lsrs r7, r0, 24
lsls r1, 16
lsrs r6, r1, 16
lsls r2, 24
lsrs r2, 24
mov r8, r2
ldr r1, _08044144 @ =gUnknown_0820A864
mov r0, sp
movs r2, 0x14
bl memcpy
ldr r1, _08044148 @ =gSprites
lsls r0, r7, 4
adds r0, r7
lsls r0, 2
adds r4, r0, r1
movs r0, 0x3A
ldrsh r5, [r4, r0]
bl battle_type_is_double
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
beq _08044136
lsls r0, r5, 24
lsrs r0, 24
bl battle_side_get_owner
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _0804414C
_08044136:
lsls r1, r6, 16
asrs r1, 16
adds r0, r7, 0
mov r2, r8
bl sub_8044210
b _080441F0
.align 2, 0
_08044144: .4byte gUnknown_0820A864
_08044148: .4byte gSprites
_0804414C:
mov r5, sp
adds r5, 0x6
mov r0, r8
cmp r0, 0
bne _08044190
ldrh r0, [r4, 0x3A]
lsls r0, 24
lsrs r0, 24
bl battle_side_get_owner
lsls r0, 24
ldr r4, _08044188 @ =gUnknown_0820A848
cmp r0, 0
bne _0804416A
ldr r4, _0804418C @ =gUnknown_0820A83C
_0804416A:
movs r0, 0x3
mov r8, r0
lsls r1, r6, 16
asrs r1, 16
adds r0, r5, 0
movs r2, 0x13
movs r3, 0x1
bl sub_8003504
adds r5, r0, 0
movs r0, 0xBA
strb r0, [r5]
movs r0, 0xFF
strb r0, [r5, 0x1]
b _080441B6
.align 2, 0
_08044188: .4byte gUnknown_0820A848
_0804418C: .4byte gUnknown_0820A83C
_08044190:
ldrh r0, [r4, 0x3A]
lsls r0, 24
lsrs r0, 24
bl battle_side_get_owner
lsls r0, 24
ldr r4, _080441FC @ =gUnknown_0820A85C
cmp r0, 0
bne _080441A4
ldr r4, _08044200 @ =gUnknown_0820A854
_080441A4:
movs r0, 0x2
mov r8, r0
lsls r1, r6, 16
asrs r1, 16
adds r0, r5, 0
movs r2, 0xF
movs r3, 0x1
bl sub_8003504
_080441B6:
movs r0, 0x80
lsls r0, 18
mov r1, sp
bl sub_80034D4
mov r0, r8
cmp r0, 0
beq _080441F0
ldr r1, _08044204 @ =gSprites
lsls r0, r7, 4
adds r0, r7
lsls r0, 2
adds r6, r0, r1
adds r7, r4, 0
ldr r5, _08044208 @ =0x02000020
mov r4, r8
_080441D6:
ldrh r0, [r6, 0x4]
lsls r0, 22
lsrs r0, 17
ldm r7!, {r1}
adds r1, r0
adds r0, r5, 0
ldr r2, _0804420C @ =REG_BG0CNT
bl CpuSet
adds r5, 0x40
subs r4, 0x1
cmp r4, 0
bne _080441D6
_080441F0:
add sp, 0x14
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080441FC: .4byte gUnknown_0820A85C
_08044200: .4byte gUnknown_0820A854
_08044204: .4byte gSprites
_08044208: .4byte 0x02000020
_0804420C: .4byte REG_BG0CNT
thumb_func_end sub_80440EC
thumb_func_start sub_8044210
sub_8044210: @ 8044210
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x14
lsls r0, 24
lsrs r5, r0, 24
lsls r1, 16
lsrs r6, r1, 16
mov r9, r6
lsls r2, 24
lsrs r7, r2, 24
ldr r1, _0804427C @ =gUnknown_0820A89C
mov r0, sp
movs r2, 0x14
bl memcpy
ldr r1, _08044280 @ =gSprites
lsls r0, r5, 4
adds r0, r5
lsls r0, 2
adds r0, r1
mov r8, r0
movs r1, 0x3A
ldrsh r4, [r0, r1]
lsls r0, r4, 2
ldr r1, _08044284 @ =0x02017800
adds r0, r1
ldrb r1, [r0]
movs r0, 0x10
ands r0, r1
cmp r0, 0
beq _08044312
mov r2, sp
adds r2, 0x6
cmp r7, 0
bne _0804428C
ldr r7, _08044288 @ =gUnknown_0820A87C
movs r0, 0x6
mov r10, r0
lsls r1, r6, 16
asrs r1, 16
adds r0, r2, 0
movs r2, 0x2B
movs r3, 0x1
bl sub_8003504
adds r2, r0, 0
movs r0, 0xBA
strb r0, [r2]
movs r0, 0xFF
strb r0, [r2, 0x1]
b _080442CE
.align 2, 0
_0804427C: .4byte gUnknown_0820A89C
_08044280: .4byte gSprites
_08044284: .4byte 0x02017800
_08044288: .4byte gUnknown_0820A87C
_0804428C:
ldr r7, _08044324 @ =gUnknown_0820A894
movs r1, 0x2
mov r10, r1
mov r0, r9
lsls r1, r0, 16
asrs r1, 16
adds r0, r2, 0
movs r2, 0xF
movs r3, 0x1
bl sub_8003504
lsls r0, r4, 24
lsrs r0, 24
bl battle_side_get_owner
lsls r0, 24
cmp r0, 0
bne _080442CE
movs r0, 0x74
bl sub_8043CDC
mov r2, r8
ldrh r1, [r2, 0x4]
lsls r1, 22
lsrs r1, 17
movs r2, 0xD0
lsls r2, 3
adds r1, r2
ldr r2, _08044328 @ =0x06010000
adds r1, r2
ldr r2, _0804432C @ =REG_BG0CNT
bl CpuSet
_080442CE:
ldr r6, _08044330 @ =gSprites
lsls r0, r5, 4
adds r0, r5
lsls r0, 2
adds r0, r6
movs r1, 0x38
ldrsh r4, [r0, r1]
movs r0, 0x80
lsls r0, 18
mov r1, sp
bl sub_80034D4
mov r2, r10
cmp r2, 0
beq _08044312
lsls r0, r4, 4
adds r0, r4
lsls r0, 2
adds r6, r0, r6
ldr r5, _08044334 @ =0x02000020
mov r4, r10
_080442F8:
ldrh r0, [r6, 0x4]
lsls r0, 22
lsrs r0, 17
ldm r7!, {r1}
adds r1, r0
adds r0, r5, 0
ldr r2, _0804432C @ =REG_BG0CNT
bl CpuSet
adds r5, 0x40
subs r4, 0x1
cmp r4, 0
bne _080442F8
_08044312:
add sp, 0x14
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08044324: .4byte gUnknown_0820A894
_08044328: .4byte 0x06010000
_0804432C: .4byte REG_BG0CNT
_08044330: .4byte gSprites
_08044334: .4byte 0x02000020
thumb_func_end sub_8044210
thumb_func_start sub_8044338
sub_8044338: @ 8044338
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x20
adds r4, r1, 0
lsls r0, 24
lsrs r0, 24
str r0, [sp, 0x14]
ldr r1, _080443CC @ =gUnknown_0820A864
mov r0, sp
movs r2, 0x14
bl memcpy
ldr r1, _080443D0 @ =gSprites
ldr r2, [sp, 0x14]
lsls r0, r2, 4
adds r0, r2
lsls r0, 2
adds r0, r1
ldrh r0, [r0, 0x3A]
lsls r0, 24
lsrs r0, 24
bl battle_get_per_side_status
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 1
adds r1, r0
lsls r1, 7
ldr r3, _080443D4 @ =0x02000520
adds r6, r1, r3
movs r0, 0x5
mov r8, r0
adds r0, r4, 0
bl GetNature
lsls r0, 24
mov r4, sp
adds r4, 0x6
ldr r1, _080443D8 @ =gNatureNames
lsrs r0, 22
adds r0, r1
ldr r1, [r0]
adds r0, r4, 0
bl StringCopy
adds r0, r6, 0
mov r1, sp
bl sub_80034D4
movs r7, 0x6
movs r5, 0
mov r1, sp
adds r1, 0x9
str r1, [sp, 0x1C]
_080443AA:
mov r2, sp
adds r0, r2, r7
ldrb r1, [r0]
adds r0, r1, 0
subs r0, 0x37
lsls r0, 24
lsrs r0, 24
cmp r0, 0x13
bls _080443C8
adds r0, r1, 0
adds r0, 0x79
lsls r0, 24
lsrs r0, 24
cmp r0, 0x13
bhi _080443DC
_080443C8:
movs r0, 0x2C
b _080443FA
.align 2, 0
_080443CC: .4byte gUnknown_0820A864
_080443D0: .4byte gSprites
_080443D4: .4byte 0x02000520
_080443D8: .4byte gNatureNames
_080443DC:
adds r0, r1, 0
subs r0, 0x4B
lsls r0, 24
lsrs r0, 24
cmp r0, 0x4
bls _080443F4
adds r0, r1, 0
adds r0, 0x65
lsls r0, 24
lsrs r0, 24
cmp r0, 0x4
bhi _080443F8
_080443F4:
movs r0, 0x2D
b _080443FA
_080443F8:
movs r0, 0x2B
_080443FA:
bl sub_8043CDC
lsls r1, r5, 6
adds r1, r6, r1
ldr r2, _080444F8 @ =REG_BG0CNT
bl CpuSet
adds r0, r5, 0x1
lsls r0, 24
lsrs r5, r0, 24
adds r7, 0x1
cmp r5, r8
bcc _080443AA
movs r7, 0x1
ldr r3, [sp, 0x14]
lsls r3, 4
str r3, [sp, 0x18]
movs r0, 0x1
add r0, r8
mov r9, r0
cmp r7, r9
bge _08044486
ldr r1, _080444FC @ =gSprites
ldr r2, _080444F8 @ =REG_BG0CNT
mov r10, r2
ldr r2, [sp, 0x14]
adds r0, r3, r2
lsls r0, 2
adds r0, r1
mov r8, r0
_08044436:
mov r3, r8
ldrh r0, [r3, 0x4]
lsls r0, 22
lsrs r0, 22
adds r5, r7, 0
cmp r7, 0
bge _08044446
adds r5, r7, 0x7
_08044446:
asrs r5, 3
lsls r4, r5, 3
subs r4, r7, r4
adds r0, r4
lsls r5, 6
adds r0, r5
lsls r0, 5
ldr r2, _08044500 @ =0x06010000
adds r1, r0, r2
adds r0, r6, 0
mov r2, r10
bl CpuSet
adds r6, 0x20
mov r3, r8
ldrh r0, [r3, 0x4]
lsls r0, 22
lsrs r0, 22
adds r4, 0x8
adds r0, r4
adds r0, r5
lsls r0, 5
ldr r2, _08044500 @ =0x06010000
adds r1, r0, r2
adds r0, r6, 0
mov r2, r10
bl CpuSet
adds r6, 0x20
adds r7, 0x1
cmp r7, r9
blt _08044436
_08044486:
ldr r6, _080444FC @ =gSprites
ldr r3, [sp, 0x18]
ldr r1, [sp, 0x14]
adds r0, r3, r1
lsls r0, 2
adds r0, r6
ldrh r5, [r0, 0x38]
lsls r5, 24
lsrs r5, 24
ldr r4, _08044504 @ =0x02000000
ldr r2, _08044508 @ =0x00016089
adds r0, r4, r2
ldrb r1, [r0]
mov r0, sp
adds r0, 0x6
movs r2, 0x1
movs r3, 0x2
bl ConvertIntToDecimalStringN
ldr r3, _0804450C @ =0x00016088
adds r4, r3
ldrb r1, [r4]
ldr r0, [sp, 0x1C]
movs r2, 0x1
movs r3, 0x2
bl ConvertIntToDecimalStringN
mov r1, sp
movs r0, 0
strb r0, [r1, 0x5]
movs r0, 0xBA
strb r0, [r1, 0x8]
movs r0, 0x80
lsls r0, 18
bl sub_80034D4
movs r7, 0
lsls r0, r5, 4
adds r0, r5
lsls r0, 2
adds r5, r0, r6
ldr r4, _08044510 @ =0x02000020
_080444DA:
cmp r7, 0x1
bgt _08044514
ldrh r1, [r5, 0x4]
lsls r1, 22
lsrs r1, 22
adds r0, r7, 0x2
adds r1, r0
lsls r1, 5
ldr r0, _08044500 @ =0x06010000
adds r1, r0
adds r0, r4, 0
ldr r2, _080444F8 @ =REG_BG0CNT
bl CpuSet
b _0804452A
.align 2, 0
_080444F8: .4byte REG_BG0CNT
_080444FC: .4byte gSprites
_08044500: .4byte 0x06010000
_08044504: .4byte 0x02000000
_08044508: .4byte 0x00016089
_0804450C: .4byte 0x00016088
_08044510: .4byte 0x02000020
_08044514:
ldrh r1, [r5, 0x4]
lsls r1, 22
lsrs r1, 22
adds r1, r7, r1
lsls r1, 5
ldr r2, _08044544 @ =0x060100c0
adds r1, r2
adds r0, r4, 0
ldr r2, _08044548 @ =REG_BG0CNT
bl CpuSet
_0804452A:
adds r4, 0x40
adds r7, 0x1
cmp r7, 0x4
ble _080444DA
add sp, 0x20
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08044544: .4byte 0x060100c0
_08044548: .4byte REG_BG0CNT
thumb_func_end sub_8044338
thumb_func_start sub_804454C
sub_804454C: @ 804454C
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x4
movs r0, 0
mov r8, r0
ldr r0, _0804466C @ =gUnknown_02024A68
ldrb r0, [r0]
cmp r8, r0
blt _08044566
b _080447E4
_08044566:
ldr r1, _08044670 @ =gSprites
mov r9, r1
movs r2, 0x64
mov r10, r2
ldr r7, _08044674 @ =gUnknown_02024A6A
_08044570:
ldr r0, _08044678 @ =gUnknown_03004340
mov r6, r8
adds r5, r6, r0
ldrb r1, [r5]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
mov r1, r9
adds r1, 0x1C
adds r0, r1
ldr r1, [r0]
ldr r0, _0804467C @ =SpriteCallbackDummy
cmp r1, r0
beq _0804458E
b _080447D4
_0804458E:
lsls r0, r6, 24
lsrs r4, r0, 24
adds r0, r4, 0
bl battle_side_get_owner
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _080445A2
b _080447D4
_080445A2:
bl battle_type_is_double
lsls r0, 24
cmp r0, 0
bne _080445BA
adds r0, r4, 0
bl battle_side_get_owner
lsls r0, 24
cmp r0, 0
bne _080445BA
b _080447D4
_080445BA:
mov r0, r8
lsls r3, r0, 2
ldr r0, _08044680 @ =0x02017800
adds r3, r0
ldr r0, [r3]
lsls r0, 27
lsrs r0, 31
movs r2, 0x1
eors r2, r0
lsls r2, 4
ldrb r0, [r3]
movs r6, 0x11
negs r6, r6
adds r1, r6, 0
ands r0, r1
orrs r0, r2
strb r0, [r3]
ldr r0, [r3]
lsls r0, 27
lsrs r6, r0, 31
adds r0, r4, 0
bl battle_side_get_owner
lsls r0, 24
cmp r0, 0
bne _080446DC
bl battle_type_is_double
lsls r0, 24
cmp r0, 0
bne _080445FA
b _080447D4
_080445FA:
ldr r0, _08044684 @ =gUnknown_020239F8
ldrh r1, [r0]
movs r0, 0x80
ands r0, r1
lsls r0, 16
lsrs r2, r0, 16
cmp r2, 0
beq _0804460C
b _080447D4
_0804460C:
cmp r6, 0x1
bne _08044694
ldrb r1, [r5]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
add r0, r9
ldrh r0, [r0, 0x38]
lsls r0, 24
lsrs r1, r0, 24
str r2, [sp]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
add r0, r9
ldrh r1, [r0, 0x4]
lsls r1, 22
lsrs r1, 17
ldr r0, _08044688 @ =0x06010000
adds r1, r0
mov r0, sp
ldr r2, _0804468C @ =0x05000040
bl CpuSet
ldrb r4, [r5]
ldrh r0, [r7]
mov r1, r10
muls r1, r0
adds r0, r1, 0
ldr r2, _08044690 @ =gPlayerParty
adds r0, r2
movs r1, 0x39
bl GetMonData
adds r1, r0, 0
lsls r1, 16
asrs r1, 16
adds r0, r4, 0
movs r2, 0
bl sub_8044210
ldrb r4, [r5]
ldrh r0, [r7]
mov r6, r10
muls r6, r0
adds r0, r6, 0
ldr r1, _08044690 @ =gPlayerParty
b _08044766
.align 2, 0
_0804466C: .4byte gUnknown_02024A68
_08044670: .4byte gSprites
_08044674: .4byte gUnknown_02024A6A
_08044678: .4byte gUnknown_03004340
_0804467C: .4byte SpriteCallbackDummy
_08044680: .4byte 0x02017800
_08044684: .4byte gUnknown_020239F8
_08044688: .4byte 0x06010000
_0804468C: .4byte 0x05000040
_08044690: .4byte gPlayerParty
_08044694:
ldrb r0, [r5]
bl draw_status_ailment_maybe
ldrb r0, [r5]
ldrh r1, [r7]
mov r2, r10
muls r2, r1
adds r1, r2, 0
ldr r6, _080446D0 @ =gPlayerParty
adds r1, r6
movs r2, 0x5
bl sub_8045A5C
movs r0, 0x75
bl sub_8043CDC
ldrb r2, [r5]
lsls r1, r2, 4
adds r1, r2
lsls r1, 2
add r1, r9
ldrh r1, [r1, 0x4]
lsls r1, 22
lsrs r1, 17
ldr r2, _080446D4 @ =0x06010680
adds r1, r2
ldr r2, _080446D8 @ =REG_BG0CNT
bl CpuSet
b _080447BE
.align 2, 0
_080446D0: .4byte gPlayerParty
_080446D4: .4byte 0x06010680
_080446D8: .4byte REG_BG0CNT
_080446DC:
cmp r6, 0x1
bne _0804478C
ldr r0, _08044704 @ =gUnknown_020239F8
ldrh r1, [r0]
movs r0, 0x80
ands r0, r1
lsls r0, 16
lsrs r2, r0, 16
cmp r2, 0
beq _0804470C
ldrb r0, [r5]
ldrh r1, [r7]
mov r6, r10
muls r6, r1
adds r1, r6, 0
ldr r2, _08044708 @ =gEnemyParty
adds r1, r2
bl sub_8044338
b _080447BE
.align 2, 0
_08044704: .4byte gUnknown_020239F8
_08044708: .4byte gEnemyParty
_0804470C:
ldrb r1, [r5]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
add r0, r9
ldrh r0, [r0, 0x38]
lsls r0, 24
lsrs r1, r0, 24
str r2, [sp]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
add r0, r9
ldrh r1, [r0, 0x4]
lsls r1, 22
lsrs r1, 17
ldr r6, _08044780 @ =0x06010000
adds r1, r6
mov r0, sp
ldr r2, _08044784 @ =0x05000040
bl CpuSet
ldrb r4, [r5]
ldrh r0, [r7]
mov r1, r10
muls r1, r0
adds r0, r1, 0
ldr r2, _08044788 @ =gEnemyParty
adds r0, r2
movs r1, 0x39
bl GetMonData
adds r1, r0, 0
lsls r1, 16
asrs r1, 16
adds r0, r4, 0
movs r2, 0
bl sub_8044210
ldrb r4, [r5]
ldrh r0, [r7]
mov r6, r10
muls r6, r0
adds r0, r6, 0
ldr r1, _08044788 @ =gEnemyParty
_08044766:
adds r0, r1
movs r1, 0x3A
bl GetMonData
adds r1, r0, 0
lsls r1, 16
asrs r1, 16
adds r0, r4, 0
movs r2, 0x1
bl sub_8044210
b _080447BE
.align 2, 0
_08044780: .4byte 0x06010000
_08044784: .4byte 0x05000040
_08044788: .4byte gEnemyParty
_0804478C:
ldrb r0, [r5]
bl draw_status_ailment_maybe
ldrb r0, [r5]
ldrh r1, [r7]
movs r6, 0x64
muls r1, r6
ldr r4, _080447F4 @ =gEnemyParty
adds r1, r4
movs r2, 0x5
bl sub_8045A5C
ldr r0, _080447F8 @ =gUnknown_020239F8
ldrh r1, [r0]
movs r0, 0x80
ands r0, r1
cmp r0, 0
beq _080447BE
ldrb r0, [r5]
ldrh r1, [r7]
muls r1, r6
adds r1, r4
movs r2, 0x4
bl sub_8045A5C
_080447BE:
ldr r0, _080447FC @ =gUnknown_03004340
add r0, r8
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
add r0, r9
ldrh r1, [r0, 0x3C]
movs r2, 0x1
eors r1, r2
strh r1, [r0, 0x3C]
_080447D4:
adds r7, 0x2
movs r2, 0x1
add r8, r2
ldr r0, _08044800 @ =gUnknown_02024A68
ldrb r0, [r0]
cmp r8, r0
bge _080447E4
b _08044570
_080447E4:
add sp, 0x4
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080447F4: .4byte gEnemyParty
_080447F8: .4byte gUnknown_020239F8
_080447FC: .4byte gUnknown_03004340
_08044800: .4byte gUnknown_02024A68
thumb_func_end sub_804454C
thumb_func_start sub_8044804
sub_8044804: @ 8044804
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x28
str r1, [sp, 0xC]
lsls r0, 24
lsrs r0, 24
str r0, [sp, 0x8]
lsls r2, 24
lsrs r2, 24
adds r4, r2, 0
lsls r3, 24
lsrs r3, 24
str r3, [sp, 0x10]
cmp r4, 0
beq _08044834
bl battle_get_per_side_status
lsls r0, 24
lsrs r0, 24
cmp r0, 0x3
beq _08044878
_08044834:
ldr r0, [sp, 0x8]
bl battle_side_get_owner
lsls r0, 24
cmp r0, 0
bne _08044854
movs r7, 0
movs r1, 0x88
movs r2, 0x60
movs r0, 0x64
mov r8, r0
ldr r5, _08044850 @ =0x0000fffb
b _08044884
.align 2, 0
_08044850: .4byte 0x0000fffb
_08044854:
movs r7, 0x1
cmp r4, 0
beq _08044864
bl battle_type_is_double
lsls r0, 24
cmp r0, 0
bne _0804486A
_08044864:
movs r1, 0x68
movs r2, 0x28
b _0804486E
_0804486A:
movs r1, 0x68
movs r2, 0x10
_0804486E:
ldr r3, _08044874 @ =0x0000ff9c
mov r8, r3
b _08044882
.align 2, 0
_08044874: .4byte 0x0000ff9c
_08044878:
movs r7, 0x1
movs r1, 0x68
movs r2, 0x28
ldr r5, _08044930 @ =0x0000ff9c
mov r8, r5
_08044882:
movs r5, 0x5
_08044884:
movs r6, 0
str r6, [sp, 0x14]
lsls r4, r7, 3
ldr r0, _08044934 @ =gUnknown_0820A754
mov r10, r0
lsls r3, r7, 1
mov r9, r3
lsls r1, 16
str r1, [sp, 0x20]
lsls r2, 16
str r2, [sp, 0x24]
ldr r2, _08044938 @ =0x0000ffff
ldr r1, [sp, 0xC]
movs r6, 0x5
_080448A0:
ldrh r0, [r1]
cmp r0, r2
beq _080448B4
ldr r3, [sp, 0x14]
lsls r0, r3, 24
movs r3, 0x80
lsls r3, 17
adds r0, r3
lsrs r0, 24
str r0, [sp, 0x14]
_080448B4:
adds r1, 0x8
subs r6, 0x1
cmp r6, 0
bge _080448A0
mov r6, r10
adds r0, r4, r6
bl LoadCompressedObjectPic
ldr r0, _0804493C @ =gUnknown_0820A784
adds r0, r4, r0
bl LoadSpriteSheet
ldr r0, _08044940 @ =gUnknown_0820A764
adds r0, r4, r0
bl LoadSpritePalette
ldr r0, _08044944 @ =gUnknown_0820A774
adds r0, r4, r0
bl LoadSpritePalette
mov r1, r9
adds r0, r1, r7
lsls r0, 3
ldr r1, _08044948 @ =gSpriteTemplate_820A7A4
adds r0, r1
ldr r2, [sp, 0x20]
asrs r1, r2, 16
ldr r3, [sp, 0x24]
asrs r2, r3, 16
movs r3, 0xA
bl CreateSprite
lsls r0, 24
lsrs r0, 24
str r0, [sp, 0x18]
lsls r0, 4
ldr r6, [sp, 0x18]
adds r0, r6
lsls r0, 2
ldr r1, _0804494C @ =gSprites
adds r4, r0, r1
ldr r1, _08044950 @ =gSubspriteTables_820A6E4
adds r0, r4, 0
bl SetSubspriteTables
mov r0, r8
strh r0, [r4, 0x24]
strh r5, [r4, 0x2E]
cmp r7, 0
beq _08044954
ldrh r0, [r4, 0x20]
subs r0, 0x60
strh r0, [r4, 0x20]
ldrb r1, [r4, 0x3]
movs r0, 0x3F
negs r0, r0
ands r0, r1
movs r1, 0x10
orrs r0, r1
strb r0, [r4, 0x3]
b _0804495A
.align 2, 0
_08044930: .4byte 0x0000ff9c
_08044934: .4byte gUnknown_0820A754
_08044938: .4byte 0x0000ffff
_0804493C: .4byte gUnknown_0820A784
_08044940: .4byte gUnknown_0820A764
_08044944: .4byte gUnknown_0820A774
_08044948: .4byte gSpriteTemplate_820A7A4
_0804494C: .4byte gSprites
_08044950: .4byte gSubspriteTables_820A6E4
_08044954:
ldrh r0, [r4, 0x20]
adds r0, 0x60
strh r0, [r4, 0x20]
_0804495A:
movs r6, 0
ldr r1, _08044A04 @ =gSprites
mov r10, r1
mov r4, sp
mov r2, r9
adds r0, r2, r7
lsls r0, 3
str r0, [sp, 0x1C]
movs r3, 0xA
mov r9, r3
mov r8, r6
_08044970:
ldr r0, _08044A08 @ =gSpriteTemplate_820A7D4
ldr r5, [sp, 0x24]
ldr r1, _08044A0C @ =0xfffc0000
adds r2, r5, r1
ldr r3, [sp, 0x1C]
adds r0, r3, r0
ldr r5, [sp, 0x20]
asrs r1, r5, 16
asrs r2, 16
movs r3, 0x9
bl CreateSpriteAtEnd
strb r0, [r4]
ldr r0, [sp, 0x10]
cmp r0, 0
bne _080449A0
ldrb r0, [r4]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
ldr r2, _08044A10 @ =gSprites + 0x1C
adds r1, r2
ldr r0, _08044A14 @ =sub_8045180
str r0, [r1]
_080449A0:
ldr r5, _08044A04 @ =gSprites
cmp r7, 0
bne _080449BE
ldrb r1, [r4]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
add r0, r10
strh r7, [r0, 0x24]
ldrb r1, [r4]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
add r0, r10
strh r7, [r0, 0x26]
_080449BE:
ldrb r1, [r4]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r5
movs r1, 0
mov r3, sp
ldrh r3, [r3, 0x18]
strh r3, [r0, 0x2E]
cmp r7, 0
bne _08044A18
ldrb r0, [r4]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r5
ldrh r0, [r1, 0x20]
adds r0, 0x18
add r0, r8
strh r0, [r1, 0x20]
ldrb r1, [r4]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r5
mov r1, r9
strh r1, [r0, 0x30]
ldrb r1, [r4]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r5
movs r1, 0x78
b _08044A56
.align 2, 0
_08044A04: .4byte gSprites
_08044A08: .4byte gSpriteTemplate_820A7D4
_08044A0C: .4byte 0xfffc0000
_08044A10: .4byte gSprites + 0x1C
_08044A14: .4byte sub_8045180
_08044A18:
ldrb r0, [r4]
lsls r2, r0, 4
adds r2, r0
lsls r2, 2
adds r2, r5
ldrh r3, [r2, 0x20]
subs r3, 0x18
movs r1, 0x5
subs r1, r6
lsls r0, r1, 2
adds r0, r1
lsls r0, 1
subs r3, r0
strh r3, [r2, 0x20]
ldrb r0, [r4]
lsls r2, r0, 4
adds r2, r0
lsls r2, 2
adds r2, r5
movs r1, 0x6
subs r1, r6
lsls r0, r1, 3
subs r0, r1
adds r0, 0xA
strh r0, [r2, 0x30]
ldrb r1, [r4]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r5
ldr r1, _08044AC4 @ =0x0000ff88
_08044A56:
strh r1, [r0, 0x24]
ldrb r1, [r4]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r5
strh r7, [r0, 0x32]
adds r4, 0x1
movs r2, 0x7
add r9, r2
movs r3, 0xA
add r8, r3
adds r6, 0x1
cmp r6, 0x5
bgt _08044A76
b _08044970
_08044A76:
ldr r0, [sp, 0x8]
bl battle_side_get_owner
lsls r0, 24
cmp r0, 0
bne _08044B5E
movs r6, 0
ldr r5, _08044AC8 @ =gUnknown_020239F8
mov r10, r5
ldr r0, _08044ACC @ =0x0000ffff
mov r9, r0
ldr r7, _08044AD0 @ =gSprites
ldr r1, _08044AD4 @ =0x000003ff
mov r12, r1
ldr r2, _08044AD8 @ =0xfffffc00
mov r8, r2
mov r4, sp
ldr r5, [sp, 0xC]
_08044A9A:
mov r3, r10
ldrh r1, [r3]
movs r0, 0x40
ands r0, r1
cmp r0, 0
beq _08044ADC
ldrh r0, [r5]
cmp r0, r9
beq _08044AE6
cmp r0, 0
bne _08044B2E
ldrb r0, [r4]
lsls r2, r0, 4
adds r2, r0
lsls r2, 2
adds r2, r7
ldrh r3, [r2, 0x4]
lsls r1, r3, 22
lsrs r1, 22
adds r1, 0x3
b _08044B46
.align 2, 0
_08044AC4: .4byte 0x0000ff88
_08044AC8: .4byte gUnknown_020239F8
_08044ACC: .4byte 0x0000ffff
_08044AD0: .4byte gSprites
_08044AD4: .4byte 0x000003ff
_08044AD8: .4byte 0xfffffc00
_08044ADC:
ldr r1, [sp, 0x14]
lsls r0, r1, 24
asrs r0, 24
cmp r6, r0
blt _08044B14
_08044AE6:
ldrb r0, [r4]
lsls r2, r0, 4
adds r2, r0
lsls r2, 2
adds r2, r7
ldrh r3, [r2, 0x4]
lsls r1, r3, 22
lsrs r1, 22
adds r1, 0x1
mov r0, r12
ands r1, r0
mov r0, r8
ands r0, r3
orrs r0, r1
strh r0, [r2, 0x4]
ldrb r1, [r4]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r7
movs r1, 0x1
strh r1, [r0, 0x3C]
b _08044B52
_08044B14:
ldrh r0, [r5]
cmp r0, 0
bne _08044B2E
ldrb r0, [r4]
lsls r2, r0, 4
adds r2, r0
lsls r2, 2
adds r2, r7
ldrh r3, [r2, 0x4]
lsls r1, r3, 22
lsrs r1, 22
adds r1, 0x3
b _08044B46
_08044B2E:
ldr r0, [r5, 0x4]
cmp r0, 0
beq _08044B52
ldrb r0, [r4]
lsls r2, r0, 4
adds r2, r0
lsls r2, 2
adds r2, r7
ldrh r3, [r2, 0x4]
lsls r1, r3, 22
lsrs r1, 22
adds r1, 0x2
_08044B46:
mov r0, r12
ands r1, r0
mov r0, r8
ands r0, r3
orrs r0, r1
strh r0, [r2, 0x4]
_08044B52:
adds r4, 0x1
adds r5, 0x8
adds r6, 0x1
cmp r6, 0x5
ble _08044A9A
b _08044C38
_08044B5E:
movs r6, 0
ldr r1, _08044BA4 @ =gUnknown_020239F8
mov r10, r1
ldr r2, _08044BA8 @ =0x0000ffff
mov r9, r2
ldr r7, _08044BAC @ =gSprites
ldr r3, _08044BB0 @ =0x000003ff
mov r12, r3
ldr r5, _08044BB4 @ =0xfffffc00
mov r8, r5
ldr r5, [sp, 0xC]
mov r4, sp
adds r4, 0x5
_08044B78:
mov r0, r10
ldrh r1, [r0]
movs r0, 0x40
ands r0, r1
cmp r0, 0
beq _08044BB8
ldrh r0, [r5]
cmp r0, r9
beq _08044BC2
cmp r0, 0
bne _08044C0A
ldrb r0, [r4]
lsls r2, r0, 4
adds r2, r0
lsls r2, 2
adds r2, r7
ldrh r3, [r2, 0x4]
lsls r1, r3, 22
lsrs r1, 22
adds r1, 0x3
b _08044C22
.align 2, 0
_08044BA4: .4byte gUnknown_020239F8
_08044BA8: .4byte 0x0000ffff
_08044BAC: .4byte gSprites
_08044BB0: .4byte 0x000003ff
_08044BB4: .4byte 0xfffffc00
_08044BB8:
ldr r1, [sp, 0x14]
lsls r0, r1, 24
asrs r0, 24
cmp r6, r0
blt _08044BF0
_08044BC2:
ldrb r0, [r4]
lsls r2, r0, 4
adds r2, r0
lsls r2, 2
adds r2, r7
ldrh r3, [r2, 0x4]
lsls r1, r3, 22
lsrs r1, 22
adds r1, 0x1
mov r0, r12
ands r1, r0
mov r0, r8
ands r0, r3
orrs r0, r1
strh r0, [r2, 0x4]
ldrb r1, [r4]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r7
movs r1, 0x1
strh r1, [r0, 0x3C]
b _08044C2E
_08044BF0:
ldrh r0, [r5]
cmp r0, 0
bne _08044C0A
ldrb r0, [r4]
lsls r2, r0, 4
adds r2, r0
lsls r2, 2
adds r2, r7
ldrh r3, [r2, 0x4]
lsls r1, r3, 22
lsrs r1, 22
adds r1, 0x3
b _08044C22
_08044C0A:
ldr r0, [r5, 0x4]
cmp r0, 0
beq _08044C2E
ldrb r0, [r4]
lsls r2, r0, 4
adds r2, r0
lsls r2, 2
adds r2, r7
ldrh r3, [r2, 0x4]
lsls r1, r3, 22
lsrs r1, 22
adds r1, 0x2
_08044C22:
mov r0, r12
ands r1, r0
mov r0, r8
ands r0, r3
orrs r0, r1
strh r0, [r2, 0x4]
_08044C2E:
subs r4, 0x1
adds r5, 0x8
adds r6, 0x1
cmp r6, 0x5
ble _08044B78
_08044C38:
ldr r0, _08044C98 @ =TaskDummy
movs r1, 0x5
bl CreateTask
lsls r0, 24
lsrs r4, r0, 24
ldr r2, _08044C9C @ =gTasks
lsls r3, r4, 2
adds r1, r3, r4
lsls r1, 3
adds r0, r1, r2
mov r5, sp
ldrh r5, [r5, 0x8]
strh r5, [r0, 0x8]
mov r6, sp
ldrh r6, [r6, 0x18]
strh r6, [r0, 0xA]
movs r6, 0
adds r0, r2, 0
adds r0, 0xE
adds r1, r0
_08044C62:
mov r5, sp
adds r0, r5, r6
ldrb r0, [r0]
strh r0, [r1]
adds r1, 0x2
adds r6, 0x1
cmp r6, 0x5
ble _08044C62
adds r0, r3, r4
lsls r0, 3
adds r0, r2
ldrh r6, [r5, 0x10]
strh r6, [r0, 0x1C]
movs r0, 0x72
movs r1, 0
bl PlaySE12WithPanning
adds r0, r4, 0
add sp, 0x28
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_08044C98: .4byte TaskDummy
_08044C9C: .4byte gTasks
thumb_func_end sub_8044804
thumb_func_start sub_8044CA0
sub_8044CA0: @ 8044CA0
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x18
lsls r0, 24
lsrs r0, 24
mov r8, r0
ldr r2, _08044DB4 @ =gTasks
lsls r3, r0, 2
adds r1, r3, r0
lsls r1, 3
adds r0, r1, r2
ldrb r4, [r0, 0x1C]
mov r9, r4
ldrb r4, [r0, 0xA]
mov r10, r4
ldrb r0, [r0, 0x8]
str r0, [sp, 0x8]
movs r5, 0
adds r7, r2, 0
ldr r0, _08044DB8 @ =gSprites
mov r12, r0
str r3, [sp, 0xC]
adds r0, r7, 0
adds r0, 0xE
adds r2, r1, r0
_08044CD8:
mov r4, sp
adds r1, r4, r5
ldrh r0, [r2]
strb r0, [r1]
adds r2, 0x2
adds r5, 0x1
cmp r5, 0x5
ble _08044CD8
ldr r1, _08044DBC @ =REG_BLDCNT
movs r2, 0xFD
lsls r2, 6
adds r0, r2, 0
strh r0, [r1]
adds r1, 0x2
movs r0, 0x10
strh r0, [r1]
ldr r0, [sp, 0xC]
add r0, r8
lsls r0, 3
adds r0, r7
movs r1, 0x10
strh r1, [r0, 0x26]
movs r5, 0
mov r4, r10
lsls r4, 4
str r4, [sp, 0x10]
ldr r4, _08044DB8 @ =gSprites
movs r6, 0xD
negs r6, r6
movs r3, 0x4
_08044D14:
mov r1, sp
adds r0, r1, r5
ldrb r0, [r0]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r4
ldrb r2, [r1, 0x1]
adds r0, r6, 0
ands r0, r2
orrs r0, r3
strb r0, [r1, 0x1]
adds r5, 0x1
cmp r5, 0x5
ble _08044D14
ldr r2, [sp, 0x10]
add r2, r10
lsls r2, 2
add r2, r12
ldrb r1, [r2, 0x1]
movs r0, 0xD
negs r0, r0
ands r0, r1
movs r1, 0x4
orrs r0, r1
strb r0, [r2, 0x1]
mov r2, r9
cmp r2, 0
bne _08044D50
b _08044E54
_08044D50:
movs r5, 0
mov r6, r12
mov r9, r5
adds r3, r6, 0
adds r3, 0x1C
mov r4, sp
movs r7, 0
_08044D5E:
ldr r0, [sp, 0x8]
str r3, [sp, 0x14]
bl battle_side_get_owner
lsls r0, 24
lsrs r2, r0, 24
ldr r3, [sp, 0x14]
cmp r2, 0
beq _08044DC4
movs r0, 0x5
subs r0, r5
mov r1, sp
adds r2, r1, r0
ldrb r1, [r2]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r6
strh r7, [r0, 0x30]
ldrb r1, [r2]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r6
mov r1, r9
strh r1, [r0, 0x34]
ldrb r1, [r2]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r6
mov r1, r9
strh r1, [r0, 0x36]
ldrb r1, [r2]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r3
ldr r1, _08044DC0 @ =sub_8045110
str r1, [r0]
ldr r2, _08044DB8 @ =gSprites
mov r12, r2
b _08044DFA
.align 2, 0
_08044DB4: .4byte gTasks
_08044DB8: .4byte gSprites
_08044DBC: .4byte REG_BLDCNT
_08044DC0: .4byte sub_8045110
_08044DC4:
ldrb r1, [r4]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r6
strh r7, [r0, 0x30]
ldrb r1, [r4]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r6
strh r2, [r0, 0x34]
ldrb r1, [r4]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r6
strh r2, [r0, 0x36]
ldrb r1, [r4]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r3
ldr r1, _08044E3C @ =sub_8045110
str r1, [r0]
ldr r0, _08044E40 @ =gSprites
mov r12, r0
_08044DFA:
adds r4, 0x1
adds r7, 0x7
adds r5, 0x1
cmp r5, 0x5
ble _08044D5E
ldr r3, [sp, 0x10]
add r3, r10
lsls r3, 2
mov r1, r12
adds r0, r3, r1
movs r2, 0x2E
ldrsh r1, [r0, r2]
lsrs r2, r1, 31
adds r1, r2
asrs r1, 1
movs r2, 0
strh r1, [r0, 0x2E]
strh r2, [r0, 0x30]
mov r1, r12
adds r1, 0x1C
adds r3, r1
ldr r1, _08044E44 @ =sub_8045048
str r1, [r3]
ldr r1, _08044E48 @ =gSubspriteTables_820A6EC
bl SetSubspriteTables
ldr r1, _08044E4C @ =gTasks
ldr r0, [sp, 0xC]
add r0, r8
lsls r0, 3
adds r0, r1
ldr r1, _08044E50 @ =sub_8044E74
b _08044E5E
.align 2, 0
_08044E3C: .4byte sub_8045110
_08044E40: .4byte gSprites
_08044E44: .4byte sub_8045048
_08044E48: .4byte gSubspriteTables_820A6EC
_08044E4C: .4byte gTasks
_08044E50: .4byte sub_8044E74
_08044E54:
ldr r0, [sp, 0xC]
add r0, r8
lsls r0, 3
adds r0, r7
ldr r1, _08044E70 @ =sub_8044F70
_08044E5E:
str r1, [r0]
add sp, 0x18
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08044E70: .4byte sub_8044F70
thumb_func_end sub_8044CA0
thumb_func_start sub_8044E74
sub_8044E74: @ 8044E74
push {lr}
lsls r0, 24
lsrs r0, 24
ldr r2, _08044EC0 @ =gTasks
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
adds r3, r1, r2
ldrh r0, [r3, 0x1E]
adds r1, r0, 0x1
strh r1, [r3, 0x1E]
lsls r0, 16
lsrs r0, 16
movs r1, 0x1
ands r0, r1
cmp r0, 0
bne _08044EAE
ldrh r0, [r3, 0x26]
subs r2, r0, 0x1
strh r2, [r3, 0x26]
lsls r0, r2, 16
cmp r0, 0
blt _08044EBA
ldr r1, _08044EC4 @ =REG_BLDALPHA
movs r0, 0x10
subs r0, r2
lsls r0, 8
orrs r2, r0
strh r2, [r1]
_08044EAE:
movs r1, 0x26
ldrsh r0, [r3, r1]
cmp r0, 0
bne _08044EBA
ldr r0, _08044EC8 @ =sub_8044ECC
str r0, [r3]
_08044EBA:
pop {r0}
bx r0
.align 2, 0
_08044EC0: .4byte gTasks
_08044EC4: .4byte REG_BLDALPHA
_08044EC8: .4byte sub_8044ECC
thumb_func_end sub_8044E74
thumb_func_start sub_8044ECC
sub_8044ECC: @ 8044ECC
push {r4-r6,lr}
sub sp, 0x8
lsls r0, 24
lsrs r3, r0, 24
ldr r6, _08044F44 @ =gTasks
lsls r0, r3, 2
adds r0, r3
lsls r4, r0, 3
adds r1, r4, r6
ldrh r0, [r1, 0x26]
subs r0, 0x1
movs r5, 0
strh r0, [r1, 0x26]
lsls r0, 16
asrs r2, r0, 16
movs r0, 0x1
negs r0, r0
cmp r2, r0
bne _08044F4C
ldrb r3, [r1, 0xA]
adds r0, r6, 0
adds r0, 0xE
adds r2, r4, r0
_08044EFA:
mov r0, sp
adds r1, r0, r5
ldrh r0, [r2]
strb r0, [r1]
adds r2, 0x2
adds r5, 0x1
cmp r5, 0x5
ble _08044EFA
lsls r0, r3, 4
adds r0, r3
lsls r0, 2
ldr r4, _08044F48 @ =gSprites
adds r0, r4
bl DestroySpriteAndFreeResources
mov r0, sp
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r4
bl DestroySpriteAndFreeResources
movs r5, 0x1
_08044F2A:
mov r1, sp
adds r0, r1, r5
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r4
bl DestroySprite
adds r5, 0x1
cmp r5, 0x5
ble _08044F2A
b _08044F62
.align 2, 0
_08044F44: .4byte gTasks
_08044F48: .4byte gSprites
_08044F4C:
movs r0, 0x3
negs r0, r0
cmp r2, r0
bne _08044F62
ldr r0, _08044F6C @ =REG_BLDCNT
strh r5, [r0]
adds r0, 0x2
strh r5, [r0]
adds r0, r3, 0
bl DestroyTask
_08044F62:
add sp, 0x8
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_08044F6C: .4byte REG_BLDCNT
thumb_func_end sub_8044ECC
thumb_func_start sub_8044F70
sub_8044F70: @ 8044F70
push {r4-r7,lr}
sub sp, 0x8
lsls r0, 24
lsrs r0, 24
adds r4, r0, 0
ldr r7, _08044FA4 @ =gTasks
lsls r0, r4, 2
adds r0, r4
lsls r6, r0, 3
adds r3, r6, r7
ldrh r0, [r3, 0x26]
subs r2, r0, 0x1
movs r5, 0
strh r2, [r3, 0x26]
lsls r0, r2, 16
asrs r1, r0, 16
cmp r1, 0
blt _08044FAC
ldr r1, _08044FA8 @ =REG_BLDALPHA
movs r0, 0x10
subs r0, r2
lsls r0, 8
orrs r2, r0
strh r2, [r1]
b _08045022
.align 2, 0
_08044FA4: .4byte gTasks
_08044FA8: .4byte REG_BLDALPHA
_08044FAC:
movs r0, 0x1
negs r0, r0
cmp r1, r0
bne _0804500C
ldrb r3, [r3, 0xA]
movs r5, 0
adds r0, r7, 0
adds r0, 0xE
adds r2, r6, r0
_08044FBE:
mov r0, sp
adds r1, r0, r5
ldrh r0, [r2]
strb r0, [r1]
adds r2, 0x2
adds r5, 0x1
cmp r5, 0x5
ble _08044FBE
lsls r0, r3, 4
adds r0, r3
lsls r0, 2
ldr r4, _08045008 @ =gSprites
adds r0, r4
bl DestroySpriteAndFreeResources
mov r0, sp
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r4
bl DestroySpriteAndFreeResources
movs r5, 0x1
_08044FEE:
mov r1, sp
adds r0, r1, r5
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r4
bl DestroySprite
adds r5, 0x1
cmp r5, 0x5
ble _08044FEE
b _08045022
.align 2, 0
_08045008: .4byte gSprites
_0804500C:
movs r0, 0x3
negs r0, r0
cmp r1, r0
bne _08045022
ldr r0, _0804502C @ =REG_BLDCNT
strh r5, [r0]
adds r0, 0x2
strh r5, [r0]
adds r0, r4, 0
bl DestroyTask
_08045022:
add sp, 0x8
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0804502C: .4byte REG_BLDCNT
thumb_func_end sub_8044F70
thumb_func_start sub_8045030
sub_8045030: @ 8045030
push {lr}
adds r1, r0, 0
ldrh r2, [r1, 0x24]
movs r3, 0x24
ldrsh r0, [r1, r3]
cmp r0, 0
beq _08045044
ldrh r0, [r1, 0x2E]
adds r0, r2, r0
strh r0, [r1, 0x24]
_08045044:
pop {r0}
bx r0
thumb_func_end sub_8045030
thumb_func_start sub_8045048
sub_8045048: @ 8045048
push {lr}
adds r2, r0, 0
ldrh r0, [r2, 0x30]
adds r1, r0, 0
adds r1, 0x20
strh r1, [r2, 0x30]
movs r3, 0x2E
ldrsh r0, [r2, r3]
cmp r0, 0
ble _08045066
lsls r0, r1, 16
asrs r0, 20
ldrh r1, [r2, 0x24]
adds r0, r1
b _0804506E
_08045066:
lsls r1, 16
asrs r1, 20
ldrh r0, [r2, 0x24]
subs r0, r1
_0804506E:
strh r0, [r2, 0x24]
ldrh r1, [r2, 0x30]
movs r0, 0xF
ands r0, r1
strh r0, [r2, 0x30]
pop {r0}
bx r0
thumb_func_end sub_8045048
thumb_func_start sub_804507C
sub_804507C: @ 804507C
push {r4,lr}
adds r4, r0, 0
ldrh r1, [r4, 0x30]
movs r2, 0x30
ldrsh r0, [r4, r2]
cmp r0, 0
ble _08045090
subs r0, r1, 0x1
strh r0, [r4, 0x30]
b _08045106
_08045090:
ldrh r0, [r4, 0x32]
lsls r0, 24
lsrs r3, r0, 24
ldrh r2, [r4, 0x34]
adds r0, r2, 0
adds r0, 0x38
lsls r1, r0, 16
lsrs r2, r1, 16
ldr r0, _080450C0 @ =0x0000fff0
ands r2, r0
strh r2, [r4, 0x34]
cmp r3, 0
beq _080450C4
lsrs r0, r1, 20
ldrh r1, [r4, 0x24]
adds r0, r1
strh r0, [r4, 0x24]
lsls r0, 16
cmp r0, 0
ble _080450D4
movs r0, 0
strh r0, [r4, 0x24]
b _080450D4
.align 2, 0
_080450C0: .4byte 0x0000fff0
_080450C4:
lsrs r1, 20
ldrh r0, [r4, 0x24]
subs r0, r1
strh r0, [r4, 0x24]
lsls r0, 16
cmp r0, 0
bge _080450D4
strh r3, [r4, 0x24]
_080450D4:
movs r2, 0x24
ldrsh r0, [r4, r2]
cmp r0, 0
bne _08045106
movs r1, 0x3F
cmp r3, 0
beq _080450E4
movs r1, 0xC0
_080450E4:
movs r2, 0x3C
ldrsh r0, [r4, r2]
cmp r0, 0
beq _080450F8
lsls r1, 24
asrs r1, 24
movs r0, 0x74
bl PlaySE2WithPanning
b _08045102
_080450F8:
lsls r1, 24
asrs r1, 24
movs r0, 0x73
bl PlaySE1WithPanning
_08045102:
ldr r0, _0804510C @ =SpriteCallbackDummy
str r0, [r4, 0x1C]
_08045106:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0804510C: .4byte SpriteCallbackDummy
thumb_func_end sub_804507C
thumb_func_start sub_8045110
sub_8045110: @ 8045110
push {r4,lr}
adds r3, r0, 0
ldrh r1, [r3, 0x30]
movs r2, 0x30
ldrsh r0, [r3, r2]
cmp r0, 0
ble _08045124
subs r0, r1, 0x1
strh r0, [r3, 0x30]
b _08045174
_08045124:
ldrh r0, [r3, 0x32]
lsls r0, 24
ldrh r2, [r3, 0x34]
adds r1, r2, 0
adds r1, 0x38
lsls r4, r1, 16
lsrs r2, r4, 16
ldr r1, _08045144 @ =0x0000fff0
ands r2, r1
strh r2, [r3, 0x34]
cmp r0, 0
beq _08045148
lsrs r0, r4, 20
ldrh r1, [r3, 0x24]
adds r0, r1
b _0804514E
.align 2, 0
_08045144: .4byte 0x0000fff0
_08045148:
lsrs r1, r4, 20
ldrh r0, [r3, 0x24]
subs r0, r1
_0804514E:
strh r0, [r3, 0x24]
movs r2, 0x24
ldrsh r0, [r3, r2]
movs r2, 0x20
ldrsh r1, [r3, r2]
adds r0, r1
adds r0, 0x8
movs r1, 0x80
lsls r1, 1
cmp r0, r1
bls _08045174
adds r2, r3, 0
adds r2, 0x3E
ldrb r0, [r2]
movs r1, 0x4
orrs r0, r1
strb r0, [r2]
ldr r0, _0804517C @ =SpriteCallbackDummy
str r0, [r3, 0x1C]
_08045174:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0804517C: .4byte SpriteCallbackDummy
thumb_func_end sub_8045110
thumb_func_start sub_8045180
sub_8045180: @ 8045180
ldrh r2, [r0, 0x2E]
lsls r2, 24
lsrs r2, 24
ldr r3, _0804519C @ =gSprites
lsls r1, r2, 4
adds r1, r2
lsls r1, 2
adds r1, r3
ldrh r2, [r1, 0x24]
strh r2, [r0, 0x24]
ldrh r1, [r1, 0x26]
strh r1, [r0, 0x26]
bx lr
.align 2, 0
_0804519C: .4byte gSprites
thumb_func_end sub_8045180
thumb_func_start sub_80451A0
sub_80451A0: @ 80451A0
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x10
adds r7, r1, 0
lsls r0, 24
lsrs r0, 24
mov r9, r0
ldr r4, _08045238 @ =gUnknown_020238CC
ldr r1, _0804523C @ =gUnknown_0820A8B0
adds r0, r4, 0
bl StringCopy
adds r0, r7, 0
movs r1, 0x2
mov r2, sp
bl GetMonData
mov r0, sp
bl StringGetEnd10
adds r4, 0x3
adds r0, r4, 0
mov r1, sp
bl StringCopy
adds r5, r0, 0
movs r1, 0xFC
strb r1, [r5]
movs r0, 0x3
strb r0, [r5, 0x1]
movs r0, 0x2
strb r0, [r5, 0x2]
strb r1, [r5, 0x3]
movs r0, 0x1
strb r0, [r5, 0x4]
adds r5, 0x5
adds r0, r7, 0
bl GetMonGender
lsls r0, 24
lsrs r6, r0, 24
adds r0, r7, 0
movs r1, 0xB
bl GetMonData
adds r4, r0, 0
lsls r4, 16
lsrs r4, 16
adds r0, r7, 0
movs r1, 0x3
bl GetMonData
adds r2, r0, 0
lsls r2, 24
lsrs r2, 24
adds r0, r4, 0
mov r1, sp
bl sub_8040D3C
cmp r0, 0
beq _08045222
movs r6, 0x64
_08045222:
cmp r6, 0
beq _08045240
cmp r6, 0xFE
beq _08045248
movs r0, 0xB
strb r0, [r5]
movs r0, 0xFF
strb r0, [r5, 0x1]
adds r5, 0x1
b _08045256
.align 2, 0
_08045238: .4byte gUnknown_020238CC
_0804523C: .4byte gUnknown_0820A8B0
_08045240:
movs r0, 0xB
strb r0, [r5]
movs r0, 0xB5
b _0804524E
_08045248:
movs r0, 0xA
strb r0, [r5]
movs r0, 0xB6
_0804524E:
strb r0, [r5, 0x1]
movs r0, 0xFF
strb r0, [r5, 0x2]
adds r5, 0x2
_08045256:
movs r0, 0xFC
strb r0, [r5]
movs r0, 0x13
strb r0, [r5, 0x1]
movs r0, 0x37
strb r0, [r5, 0x2]
movs r0, 0xFF
strb r0, [r5, 0x3]
ldr r1, _080452D8 @ =gSprites
mov r0, r9
lsls r4, r0, 4
adds r0, r4, r0
lsls r0, 2
adds r0, r1
ldrh r0, [r0, 0x3A]
lsls r0, 24
lsrs r0, 24
bl battle_get_per_side_status
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 1
adds r1, r0
lsls r1, 7
ldr r2, _080452DC @ =0x02000520
adds r5, r1, r2
ldr r0, _080452E0 @ =gUnknown_020238CC
mov r8, r0
adds r0, r5, 0
mov r1, r8
bl sub_80034D4
movs r6, 0
movs r1, 0x7
mov r10, r1
adds r0, r7, 0
movs r1, 0x3
bl GetMonData
str r4, [sp, 0xC]
cmp r0, 0x1
bne _08045338
adds r0, r7, 0
movs r1, 0x2D
bl GetMonData
cmp r0, 0
bne _08045338
mov r4, r8
ldrb r1, [r4]
adds r0, r1, 0
cmp r0, 0xFF
beq _08045338
adds r7, r5, 0
_080452C2:
cmp r1, 0xFC
bne _080452E4
ldrb r0, [r4, 0x1]
bl GetExtCtrlCodeLength
lsls r0, 24
lsrs r0, 24
adds r0, 0x1
adds r4, r0
b _08045330
.align 2, 0
_080452D8: .4byte gSprites
_080452DC: .4byte 0x02000520
_080452E0: .4byte gUnknown_020238CC
_080452E4:
adds r0, r1, 0
subs r0, 0x37
lsls r0, 24
lsrs r0, 24
cmp r0, 0x13
bls _080452FC
adds r0, r1, 0
adds r0, 0x79
lsls r0, 24
lsrs r0, 24
cmp r0, 0x13
bhi _08045300
_080452FC:
movs r0, 0x2C
b _0804531E
_08045300:
adds r0, r1, 0
subs r0, 0x4B
lsls r0, 24
lsrs r0, 24
cmp r0, 0x4
bls _08045318
adds r0, r1, 0
adds r0, 0x65
lsls r0, 24
lsrs r0, 24
cmp r0, 0x4
bhi _0804531C
_08045318:
movs r0, 0x2D
b _0804531E
_0804531C:
movs r0, 0x2B
_0804531E:
bl sub_8043CDC
adds r1, r7, 0
ldr r2, _080453C8 @ =REG_BG0CNT
bl CpuSet
adds r7, 0x40
adds r6, 0x1
adds r4, 0x1
_08045330:
ldrb r1, [r4]
adds r0, r1, 0
cmp r0, 0xFF
bne _080452C2
_08045338:
cmp r6, r10
bge _0804535A
lsls r0, r6, 6
adds r4, r0, r5
mov r2, r10
subs r6, r2, r6
_08045344:
movs r0, 0x2B
bl sub_8043CDC
adds r1, r4, 0
ldr r2, _080453C8 @ =REG_BG0CNT
bl CpuSet
adds r4, 0x40
subs r6, 0x1
cmp r6, 0
bne _08045344
_0804535A:
ldr r1, _080453CC @ =gSprites
ldr r0, [sp, 0xC]
add r0, r9
lsls r0, 2
adds r6, r0, r1
ldrh r0, [r6, 0x3A]
lsls r0, 24
lsrs r0, 24
bl battle_side_get_owner
lsls r0, 24
cmp r0, 0
bne _080453D4
bl battle_type_is_double
lsls r0, 24
cmp r0, 0
bne _080453D4
ldr r1, _080453D0 @ =gUnknown_0820A8B4
mov r0, r10
cmp r0, 0
beq _08045438
mov r8, r6
mov r9, r1
ldr r7, _080453C8 @ =REG_BG0CNT
mov r6, r10
_0804538E:
mov r1, r9
adds r1, 0x4
mov r9, r1
subs r1, 0x4
ldm r1!, {r4}
mov r2, r8
ldrh r0, [r2, 0x4]
lsls r0, 22
lsrs r0, 17
adds r4, r0
adds r0, r5, 0
adds r1, r4, 0
adds r2, r7, 0
bl CpuSet
adds r5, 0x20
movs r0, 0x80
lsls r0, 1
adds r4, r0
adds r0, r5, 0
adds r1, r4, 0
adds r2, r7, 0
bl CpuSet
adds r5, 0x20
subs r6, 0x1
cmp r6, 0
bne _0804538E
b _08045438
.align 2, 0
_080453C8: .4byte REG_BG0CNT
_080453CC: .4byte gSprites
_080453D0: .4byte gUnknown_0820A8B4
_080453D4:
ldr r1, _08045448 @ =gSprites
ldr r0, [sp, 0xC]
add r0, r9
lsls r0, 2
adds r4, r0, r1
ldrh r0, [r4, 0x3A]
lsls r0, 24
lsrs r0, 24
bl battle_side_get_owner
lsls r0, 24
ldr r1, _0804544C @ =gUnknown_0820A8DC
cmp r0, 0
bne _080453F2
ldr r1, _08045450 @ =gUnknown_0820A904
_080453F2:
mov r2, r10
cmp r2, 0
beq _08045438
mov r8, r4
mov r9, r1
ldr r7, _08045454 @ =REG_BG0CNT
mov r6, r10
_08045400:
mov r0, r9
adds r0, 0x4
mov r9, r0
subs r0, 0x4
ldm r0!, {r4}
mov r1, r8
ldrh r0, [r1, 0x4]
lsls r0, 22
lsrs r0, 17
adds r4, r0
adds r0, r5, 0
adds r1, r4, 0
adds r2, r7, 0
bl CpuSet
adds r5, 0x20
movs r2, 0x80
lsls r2, 1
adds r4, r2
adds r0, r5, 0
adds r1, r4, 0
adds r2, r7, 0
bl CpuSet
adds r5, 0x20
subs r6, 0x1
cmp r6, 0
bne _08045400
_08045438:
add sp, 0x10
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08045448: .4byte gSprites
_0804544C: .4byte gUnknown_0820A8DC
_08045450: .4byte gUnknown_0820A904
_08045454: .4byte REG_BG0CNT
thumb_func_end sub_80451A0
thumb_func_start sub_8045458
sub_8045458: @ 8045458
push {r4-r7,lr}
sub sp, 0x4
lsls r0, 24
lsrs r2, r0, 24
lsls r1, 24
lsrs r7, r1, 24
ldr r0, _080454F4 @ =gUnknown_020239F8
ldrh r1, [r0]
movs r0, 0x80
lsls r0, 2
ands r0, r1
cmp r0, 0
bne _0804552E
movs r0, 0x8
ands r0, r1
cmp r0, 0
bne _0804552E
ldr r6, _080454F8 @ =gSprites
lsls r0, r2, 4
adds r0, r2
lsls r0, 2
adds r5, r0, r6
ldrh r0, [r5, 0x3A]
lsls r0, 24
lsrs r4, r0, 24
adds r0, r4, 0
bl battle_side_get_owner
lsls r0, 24
cmp r0, 0
beq _0804552E
ldr r1, _080454FC @ =gUnknown_02024A6A
lsls r0, r4, 1
adds r0, r1
ldrh r1, [r0]
movs r0, 0x64
muls r0, r1
ldr r1, _08045500 @ =gEnemyParty
adds r0, r1
movs r1, 0xB
bl GetMonData
lsls r0, 16
lsrs r0, 16
bl SpeciesToNationalPokedexNum
lsls r0, 16
lsrs r0, 16
movs r1, 0x1
bl sub_8090D90
lsls r0, 24
cmp r0, 0
beq _0804552E
ldrh r0, [r5, 0x38]
lsls r0, 24
lsrs r4, r0, 24
cmp r7, 0
beq _0804550C
movs r0, 0x46
bl sub_8043CDC
lsls r1, r4, 4
adds r1, r4
lsls r1, 2
adds r1, r6
ldrh r1, [r1, 0x4]
lsls r1, 22
lsrs r1, 17
movs r2, 0x80
lsls r2, 1
adds r1, r2
ldr r2, _08045504 @ =0x06010000
adds r1, r2
ldr r2, _08045508 @ =REG_BG0CNT
bl CpuSet
b _0804552E
.align 2, 0
_080454F4: .4byte gUnknown_020239F8
_080454F8: .4byte gSprites
_080454FC: .4byte gUnknown_02024A6A
_08045500: .4byte gEnemyParty
_08045504: .4byte 0x06010000
_08045508: .4byte REG_BG0CNT
_0804550C:
str r7, [sp]
lsls r0, r4, 4
adds r0, r4
lsls r0, 2
adds r0, r6
ldrh r1, [r0, 0x4]
lsls r1, 22
lsrs r1, 17
movs r0, 0x80
lsls r0, 1
adds r1, r0
ldr r0, _08045538 @ =0x06010000
adds r1, r0
ldr r2, _0804553C @ =0x05000008
mov r0, sp
bl CpuSet
_0804552E:
add sp, 0x4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08045538: .4byte 0x06010000
_0804553C: .4byte 0x05000008
thumb_func_end sub_8045458
thumb_func_start draw_status_ailment_maybe
draw_status_ailment_maybe: @ 8045540
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
lsls r0, 24
lsrs r0, 24
mov r9, r0
ldr r0, _080455A4 @ =gSprites
mov r2, r9
lsls r1, r2, 4
add r1, r9
lsls r1, 2
adds r1, r0
ldrh r0, [r1, 0x3A]
lsls r0, 24
lsrs r7, r0, 24
ldrh r0, [r1, 0x38]
lsls r0, 24
lsrs r0, 24
mov r10, r0
adds r0, r7, 0
bl battle_side_get_owner
lsls r0, 24
cmp r0, 0
bne _080455B0
ldr r1, _080455A8 @ =gUnknown_02024A6A
lsls r0, r7, 1
adds r0, r1
ldrh r1, [r0]
movs r0, 0x64
muls r0, r1
ldr r1, _080455AC @ =gPlayerParty
adds r0, r1
movs r1, 0x37
bl GetMonData
adds r4, r0, 0
bl battle_type_is_double
lsls r0, 24
movs r3, 0x12
mov r8, r3
cmp r0, 0
bne _080455CC
movs r0, 0x1A
mov r8, r0
b _080455CC
.align 2, 0
_080455A4: .4byte gSprites
_080455A8: .4byte gUnknown_02024A6A
_080455AC: .4byte gPlayerParty
_080455B0:
ldr r1, _080455EC @ =gUnknown_02024A6A
lsls r0, r7, 1
adds r0, r1
ldrh r1, [r0]
movs r0, 0x64
muls r0, r1
ldr r1, _080455F0 @ =gEnemyParty
adds r0, r1
movs r1, 0x37
bl GetMonData
adds r4, r0, 0
movs r1, 0x11
mov r8, r1
_080455CC:
movs r0, 0x7
ands r0, r4
cmp r0, 0
beq _080455F4
movs r0, 0x1B
adds r1, r7, 0
bl sub_80457E8
lsls r0, 24
lsrs r0, 24
bl sub_8043CDC
adds r6, r0, 0
movs r0, 0x2
b _080456FC
.align 2, 0
_080455EC: .4byte gUnknown_02024A6A
_080455F0: .4byte gEnemyParty
_080455F4:
movs r0, 0x88
ands r0, r4
cmp r0, 0
beq _08045612
movs r0, 0x15
adds r1, r7, 0
bl sub_80457E8
lsls r0, 24
lsrs r0, 24
bl sub_8043CDC
adds r6, r0, 0
movs r0, 0
b _080456FC
_08045612:
movs r0, 0x10
ands r0, r4
cmp r0, 0
beq _08045630
movs r0, 0x21
adds r1, r7, 0
bl sub_80457E8
lsls r0, 24
lsrs r0, 24
bl sub_8043CDC
adds r6, r0, 0
movs r0, 0x4
b _080456FC
_08045630:
movs r0, 0x20
ands r0, r4
cmp r0, 0
beq _0804564E
movs r0, 0x1E
adds r1, r7, 0
bl sub_80457E8
lsls r0, 24
lsrs r0, 24
bl sub_8043CDC
adds r6, r0, 0
movs r0, 0x3
b _080456FC
_0804564E:
movs r0, 0x40
ands r0, r4
cmp r0, 0
beq _0804566C
movs r0, 0x18
adds r1, r7, 0
bl sub_80457E8
lsls r0, 24
lsrs r0, 24
bl sub_8043CDC
adds r6, r0, 0
movs r0, 0x1
b _080456FC
_0804566C:
movs r0, 0x27
bl sub_8043CDC
adds r6, r0, 0
movs r4, 0
mov r2, r9
lsls r0, r2, 4
mov r3, r8
lsls r3, 16
mov r8, r3
lsls r7, 2
ldr r1, _080456E8 @ =gSprites
add r0, r9
lsls r0, 2
adds r5, r0, r1
_0804568A:
ldrh r1, [r5, 0x4]
lsls r1, 22
lsrs r1, 22
mov r2, r8
asrs r0, r2, 16
adds r1, r0
adds r1, r4
lsls r1, 5
ldr r3, _080456EC @ =0x06010000
adds r1, r3
adds r0, r6, 0
ldr r2, _080456F0 @ =REG_BG0CNT
bl CpuSet
adds r4, 0x1
cmp r4, 0x2
ble _0804568A
ldr r0, _080456F4 @ =0x02017800
adds r0, r7, r0
ldrb r1, [r0]
movs r0, 0x10
ands r0, r1
cmp r0, 0
bne _080456DC
movs r0, 0x1
bl sub_8043CDC
ldr r2, _080456E8 @ =gSprites
mov r3, r10
lsls r1, r3, 4
add r1, r10
lsls r1, 2
adds r1, r2
ldrh r1, [r1, 0x4]
lsls r1, 22
lsrs r1, 17
ldr r2, _080456EC @ =0x06010000
adds r1, r2
ldr r2, _080456F8 @ =REG_BG0HOFS
bl CpuSet
_080456DC:
mov r0, r9
movs r1, 0x1
bl sub_8045458
b _080457BA
.align 2, 0
_080456E8: .4byte gSprites
_080456EC: .4byte 0x06010000
_080456F0: .4byte REG_BG0CNT
_080456F4: .4byte 0x02017800
_080456F8: .4byte REG_BG0HOFS
_080456FC:
mov r1, r9
lsls r5, r1, 4
add r5, r9
lsls r5, 2
ldr r2, _080457C8 @ =gSprites
adds r5, r2
ldrb r4, [r5, 0x5]
lsrs r4, 4
lsls r4, 4
adds r4, 0xC
adds r4, r7
lsls r0, 1
ldr r1, _080457CC @ =gBattleInterfaceStatusIcons_DynPal
adds r0, r1
ldrh r0, [r0]
movs r3, 0x80
lsls r3, 1
adds r1, r4, r3
movs r2, 0x2
bl FillPalette
lsls r4, 1
ldr r0, _080457D0 @ =gPlttBufferUnfaded + 0x200
adds r0, r4, r0
ldr r1, _080457D4 @ =0x05000200
adds r4, r1
adds r1, r4, 0
movs r2, 0x1
bl CpuSet
ldrh r1, [r5, 0x4]
lsls r1, 22
lsrs r1, 22
add r1, r8
lsls r1, 5
ldr r2, _080457D8 @ =0x06010000
mov r8, r2
add r1, r8
ldr r2, _080457DC @ =REG_BG2HOFS
adds r0, r6, 0
bl CpuSet
bl battle_type_is_double
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
beq _0804576A
adds r0, r7, 0
bl battle_side_get_owner
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _080457B2
_0804576A:
lsls r0, r7, 2
ldr r1, _080457E0 @ =0x02017800
adds r0, r1
ldrb r1, [r0]
movs r0, 0x10
ands r0, r1
cmp r0, 0
bne _080457B2
movs r0, 0
bl sub_8043CDC
mov r3, r10
lsls r4, r3, 4
add r4, r10
lsls r4, 2
ldr r1, _080457C8 @ =gSprites
adds r4, r1
ldrh r1, [r4, 0x4]
lsls r1, 22
lsrs r1, 17
add r1, r8
ldr r5, _080457E4 @ =REG_BG0CNT
adds r2, r5, 0
bl CpuSet
movs r0, 0x41
bl sub_8043CDC
ldrh r1, [r4, 0x4]
lsls r1, 22
lsrs r1, 17
adds r1, 0x20
add r1, r8
adds r2, r5, 0
bl CpuSet
_080457B2:
mov r0, r9
movs r1, 0
bl sub_8045458
_080457BA:
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080457C8: .4byte gSprites
_080457CC: .4byte gBattleInterfaceStatusIcons_DynPal
_080457D0: .4byte gPlttBufferUnfaded + 0x200
_080457D4: .4byte 0x05000200
_080457D8: .4byte 0x06010000
_080457DC: .4byte REG_BG2HOFS
_080457E0: .4byte 0x02017800
_080457E4: .4byte REG_BG0CNT
thumb_func_end draw_status_ailment_maybe
thumb_func_start sub_80457E8
sub_80457E8: @ 80457E8
push {lr}
lsls r0, 24
lsls r1, 24
lsrs r3, r1, 24
lsrs r2, r0, 24
adds r0, r2, 0
subs r0, 0x15
cmp r0, 0xC
bhi _080458A8
lsls r0, 2
ldr r1, _08045804 @ =_08045808
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08045804: .4byte _08045808
.align 2, 0
_08045808:
.4byte _0804583C
.4byte _080458A8
.4byte _080458A8
.4byte _08045852
.4byte _080458A8
.4byte _080458A8
.4byte _08045868
.4byte _080458A8
.4byte _080458A8
.4byte _0804587E
.4byte _080458A8
.4byte _080458A8
.4byte _08045894
_0804583C:
movs r2, 0x15
cmp r3, 0
beq _080458A8
movs r2, 0x47
cmp r3, 0x1
beq _080458A8
movs r2, 0x65
cmp r3, 0x2
bne _080458A8
movs r2, 0x56
b _080458A8
_08045852:
movs r2, 0x18
cmp r3, 0
beq _080458A8
movs r2, 0x4A
cmp r3, 0x1
beq _080458A8
movs r2, 0x68
cmp r3, 0x2
bne _080458A8
movs r2, 0x59
b _080458A8
_08045868:
movs r2, 0x1B
cmp r3, 0
beq _080458A8
movs r2, 0x4D
cmp r3, 0x1
beq _080458A8
movs r2, 0x6B
cmp r3, 0x2
bne _080458A8
movs r2, 0x5C
b _080458A8
_0804587E:
movs r2, 0x1E
cmp r3, 0
beq _080458A8
movs r2, 0x50
cmp r3, 0x1
beq _080458A8
movs r2, 0x6E
cmp r3, 0x2
bne _080458A8
movs r2, 0x5F
b _080458A8
_08045894:
movs r2, 0x21
cmp r3, 0
beq _080458A8
movs r2, 0x53
cmp r3, 0x1
beq _080458A8
movs r2, 0x71
cmp r3, 0x2
bne _080458A8
movs r2, 0x62
_080458A8:
adds r0, r2, 0
pop {r1}
bx r1
thumb_func_end sub_80457E8
thumb_func_start sub_80458B0
sub_80458B0: @ 80458B0
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
lsls r0, 24
lsrs r5, r0, 24
ldr r1, _08045984 @ =gSprites
lsls r0, r5, 4
adds r0, r5
lsls r0, 2
adds r0, r1
ldrh r0, [r0, 0x3A]
lsls r0, 24
lsrs r0, 24
bl battle_get_per_side_status
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 1
adds r1, r0
lsls r1, 7
ldr r0, _08045988 @ =0x02000520
adds r6, r1, r0
movs r1, 0x7
mov r8, r1
ldr r1, _0804598C @ =gUnknown_08400DD6
adds r0, r6, 0
bl sub_80034D4
movs r4, 0
_080458EE:
movs r0, 0x2B
bl sub_8043CDC
lsls r1, r4, 6
adds r1, r6, r1
ldr r2, _08045990 @ =REG_BG0CNT
bl CpuSet
adds r0, r4, 0x1
lsls r0, 24
lsrs r4, r0, 24
cmp r4, r8
bcc _080458EE
movs r7, 0x3
movs r2, 0x3
add r2, r8
mov r9, r2
cmp r7, r9
bge _08045974
ldr r1, _08045984 @ =gSprites
ldr r0, _08045990 @ =REG_BG0CNT
mov r10, r0
lsls r0, r5, 4
adds r0, r5
lsls r0, 2
adds r0, r1
mov r8, r0
_08045924:
mov r1, r8
ldrh r0, [r1, 0x4]
lsls r0, 22
lsrs r0, 22
adds r5, r7, 0
cmp r7, 0
bge _08045934
adds r5, r7, 0x7
_08045934:
asrs r5, 3
lsls r4, r5, 3
subs r4, r7, r4
adds r0, r4
lsls r5, 6
adds r0, r5
lsls r0, 5
ldr r2, _08045994 @ =0x06010000
adds r1, r0, r2
adds r0, r6, 0
mov r2, r10
bl CpuSet
adds r6, 0x20
mov r1, r8
ldrh r0, [r1, 0x4]
lsls r0, 22
lsrs r0, 22
adds r4, 0x8
adds r0, r4
adds r0, r5
lsls r0, 5
ldr r2, _08045994 @ =0x06010000
adds r1, r0, r2
adds r0, r6, 0
mov r2, r10
bl CpuSet
adds r6, 0x20
adds r7, 0x1
cmp r7, r9
blt _08045924
_08045974:
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08045984: .4byte gSprites
_08045988: .4byte 0x02000520
_0804598C: .4byte gUnknown_08400DD6
_08045990: .4byte REG_BG0CNT
_08045994: .4byte 0x06010000
thumb_func_end sub_80458B0
thumb_func_start sub_8045998
sub_8045998: @ 8045998
push {r4-r7,lr}
mov r7, r8
push {r7}
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
ldr r0, _08045A38 @ =gUnknown_020238CC
mov r8, r0
ldr r1, _08045A3C @ =gUnknown_08400DE6
bl StringCopy
adds r7, r0, 0
ldr r0, _08045A40 @ =gUnknown_02038808
ldrb r1, [r0]
adds r0, r7, 0
movs r2, 0xA
movs r3, 0x1
bl sub_8003504
adds r7, r0, 0
ldr r1, _08045A44 @ =gUnknown_08400DF0
bl StringAppend
ldr r0, _08045A48 @ =gSprites
lsls r5, r4, 4
adds r5, r4
lsls r5, 2
adds r5, r0
ldrh r0, [r5, 0x3A]
lsls r0, 24
lsrs r0, 24
bl battle_get_per_side_status
lsls r0, 24
lsrs r0, 24
lsls r4, r0, 1
adds r4, r0
lsls r4, 7
ldr r0, _08045A4C @ =0x02000520
adds r7, r4, r0
movs r6, 0x5
adds r0, r7, 0
mov r1, r8
bl sub_80034D4
ldr r0, _08045A50 @ =0x02000540
adds r7, r4, r0
movs r4, 0x6
_080459F8:
ldrh r0, [r5, 0x4]
lsls r0, 22
lsrs r2, r0, 22
adds r0, r4, 0
cmp r4, 0
bge _08045A06
adds r0, r4, 0x7
_08045A06:
asrs r0, 3
lsls r1, r0, 3
subs r1, r4, r1
adds r1, 0x18
adds r1, r2, r1
lsls r0, 6
adds r1, r0
lsls r1, 5
ldr r0, _08045A54 @ =0x06010000
adds r1, r0
adds r0, r7, 0
ldr r2, _08045A58 @ =REG_BG0CNT
bl CpuSet
adds r7, 0x40
adds r4, 0x1
adds r0, r6, 0x6
cmp r4, r0
blt _080459F8
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08045A38: .4byte gUnknown_020238CC
_08045A3C: .4byte gUnknown_08400DE6
_08045A40: .4byte gUnknown_02038808
_08045A44: .4byte gUnknown_08400DF0
_08045A48: .4byte gSprites
_08045A4C: .4byte 0x02000520
_08045A50: .4byte 0x02000540
_08045A54: .4byte 0x06010000
_08045A58: .4byte REG_BG0CNT
thumb_func_end sub_8045998
thumb_func_start sub_8045A5C
sub_8045A5C: @ 8045A5C
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x8
mov r9, r1
lsls r0, 24
lsrs r0, 24
mov r8, r0
lsls r2, 24
lsrs r7, r2, 24
ldr r1, _08045BE4 @ =gSprites
lsls r0, 4
add r0, r8
lsls r0, 2
adds r0, r1
ldrh r0, [r0, 0x3A]
lsls r0, 24
lsrs r0, 24
mov r10, r0
bl battle_side_get_owner
lsls r0, 24
cmp r0, 0
beq _08045A92
b _08045BF0
_08045A92:
cmp r7, 0x3
beq _08045A9A
cmp r7, 0
bne _08045AAE
_08045A9A:
mov r0, r9
movs r1, 0x38
bl GetMonData
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
mov r0, r8
bl sub_8043FC0
_08045AAE:
cmp r7, 0x1
bhi _08045AC8
mov r0, r9
movs r1, 0x39
bl GetMonData
adds r1, r0, 0
lsls r1, 16
asrs r1, 16
mov r0, r8
movs r2, 0
bl sub_80440EC
_08045AC8:
cmp r7, 0x2
beq _08045AD0
cmp r7, 0
bne _08045AE6
_08045AD0:
mov r0, r9
movs r1, 0x3A
bl GetMonData
adds r1, r0, 0
lsls r1, 16
asrs r1, 16
mov r0, r8
movs r2, 0x1
bl sub_80440EC
_08045AE6:
cmp r7, 0x5
beq _08045AEE
cmp r7, 0
bne _08045B22
_08045AEE:
movs r0, 0
bl load_gfxc_health_bar
mov r0, r9
movs r1, 0x3A
bl GetMonData
adds r4, r0, 0
mov r0, r9
movs r1, 0x39
bl GetMonData
adds r3, r0, 0
movs r0, 0
str r0, [sp]
mov r0, r10
mov r1, r8
adds r2, r4, 0
bl sub_8043D84
mov r0, r10
mov r1, r8
movs r2, 0
movs r3, 0
bl sub_8045C78
_08045B22:
bl battle_type_is_double
lsls r0, 24
lsrs r0, 24
str r0, [sp, 0x4]
cmp r0, 0
bne _08045BA6
cmp r7, 0x6
beq _08045B38
cmp r7, 0
bne _08045BA6
_08045B38:
movs r0, 0x3
bl load_gfxc_health_bar
mov r0, r9
movs r1, 0xB
bl GetMonData
adds r5, r0, 0
lsls r5, 16
lsrs r5, 16
mov r0, r9
movs r1, 0x38
bl GetMonData
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
mov r0, r9
movs r1, 0x19
bl GetMonData
adds r3, r0, 0
ldr r6, _08045BE8 @ =gExperienceTables
lsls r1, r4, 2
ldr r2, _08045BEC @ =gBaseStats
lsls r0, r5, 3
subs r0, r5
lsls r0, 2
adds r0, r2
ldrb r2, [r0, 0x13]
movs r0, 0xCA
lsls r0, 1
muls r0, r2
adds r1, r0
adds r1, r6
ldr r1, [r1]
subs r3, r1
adds r4, 0x1
lsls r4, 2
adds r4, r0
adds r4, r6
ldr r2, [r4]
subs r2, r1
ldr r0, [sp, 0x4]
str r0, [sp]
mov r0, r10
mov r1, r8
bl sub_8043D84
mov r0, r10
mov r1, r8
movs r2, 0x1
movs r3, 0
bl sub_8045C78
_08045BA6:
cmp r7, 0x4
beq _08045BAE
cmp r7, 0
bne _08045BB6
_08045BAE:
mov r0, r8
mov r1, r9
bl sub_80451A0
_08045BB6:
cmp r7, 0x9
beq _08045BBE
cmp r7, 0
bne _08045BC4
_08045BBE:
mov r0, r8
bl draw_status_ailment_maybe
_08045BC4:
cmp r7, 0xA
bne _08045BCE
mov r0, r8
bl sub_80458B0
_08045BCE:
adds r0, r7, 0
subs r0, 0xA
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bhi _08045C66
mov r0, r8
bl sub_8045998
b _08045C66
.align 2, 0
_08045BE4: .4byte gSprites
_08045BE8: .4byte gExperienceTables
_08045BEC: .4byte gBaseStats
_08045BF0:
cmp r7, 0x3
beq _08045BF8
cmp r7, 0
bne _08045C0C
_08045BF8:
mov r0, r9
movs r1, 0x38
bl GetMonData
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
mov r0, r8
bl sub_8043FC0
_08045C0C:
cmp r7, 0x5
beq _08045C14
cmp r7, 0
bne _08045C48
_08045C14:
movs r0, 0
bl load_gfxc_health_bar
mov r0, r9
movs r1, 0x3A
bl GetMonData
adds r4, r0, 0
mov r0, r9
movs r1, 0x39
bl GetMonData
adds r3, r0, 0
movs r0, 0
str r0, [sp]
mov r0, r10
mov r1, r8
adds r2, r4, 0
bl sub_8043D84
mov r0, r10
mov r1, r8
movs r2, 0
movs r3, 0
bl sub_8045C78
_08045C48:
cmp r7, 0x4
beq _08045C50
cmp r7, 0
bne _08045C58
_08045C50:
mov r0, r8
mov r1, r9
bl sub_80451A0
_08045C58:
cmp r7, 0x9
beq _08045C60
cmp r7, 0
bne _08045C66
_08045C60:
mov r0, r8
bl draw_status_ailment_maybe
_08045C66:
add sp, 0x8
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_8045A5C
thumb_func_start sub_8045C78
sub_8045C78: @ 8045C78
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x8
lsls r0, 24
lsrs r7, r0, 24
lsls r2, 24
lsrs r2, 24
mov r9, r2
cmp r2, 0
bne _08045CBC
lsls r5, r7, 2
adds r3, r5, r7
lsls r3, 2
ldr r4, _08045CB8 @ =0x02017850
adds r2, r3, r4
ldr r0, [r2, 0x4]
ldr r1, [r2, 0x8]
ldr r2, [r2, 0xC]
adds r4, 0x10
adds r3, r4
movs r4, 0x6
str r4, [sp]
movs r4, 0x1
str r4, [sp, 0x4]
bl sub_8045F58
adds r6, r0, 0
adds r4, r5, 0
b _08045D0A
.align 2, 0
_08045CB8: .4byte 0x02017850
_08045CBC:
lsls r4, r7, 2
adds r0, r4, r7
lsls r0, 2
mov r10, r0
ldr r6, _08045D50 @ =0x02017850
add r6, r10
ldr r0, [r6, 0x8]
ldr r1, [r6, 0xC]
ldr r2, [r6, 0x4]
movs r3, 0x8
bl sub_8046188
lsls r0, 24
lsrs r5, r0, 24
cmp r5, 0
bne _08045CDE
movs r5, 0x1
_08045CDE:
ldr r0, [r6, 0xC]
mov r8, r0
adds r1, r5, 0
bl __divsi3
cmp r0, 0
bge _08045CEE
negs r0, r0
_08045CEE:
lsls r0, 16
lsrs r5, r0, 16
ldr r0, [r6, 0x4]
ldr r1, [r6, 0x8]
ldr r3, _08045D50 @ =0x02017850
adds r3, 0x10
add r3, r10
movs r2, 0x8
str r2, [sp]
str r5, [sp, 0x4]
mov r2, r8
bl sub_8045F58
adds r6, r0, 0
_08045D0A:
mov r0, r9
cmp r0, 0x1
beq _08045D22
cmp r0, 0
bne _08045D2A
ldr r0, _08045D54 @ =0x02017800
adds r0, r4, r0
ldrb r1, [r0]
movs r0, 0x10
ands r0, r1
cmp r0, 0
bne _08045D2A
_08045D22:
adds r0, r7, 0
mov r1, r9
bl sub_8045D58
_08045D2A:
movs r0, 0x1
negs r0, r0
cmp r6, r0
bne _08045D3E
adds r0, r4, r7
lsls r0, 2
ldr r1, _08045D50 @ =0x02017850
adds r0, r1
movs r1, 0
str r1, [r0, 0x10]
_08045D3E:
adds r0, r6, 0
add sp, 0x8
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_08045D50: .4byte 0x02017850
_08045D54: .4byte 0x02017800
thumb_func_end sub_8045C78
thumb_func_start sub_8045D58
sub_8045D58: @ 8045D58
push {r4-r7,lr}
mov r7, r8
push {r7}
sub sp, 0x10
lsls r0, 24
lsrs r6, r0, 24
lsls r1, 24
lsrs r1, 24
cmp r1, 0
beq _08045D72
cmp r1, 0x1
beq _08045E54
b _08045F42
_08045D72:
lsls r5, r6, 2
adds r3, r5, r6
lsls r3, 2
ldr r4, _08045E00 @ =0x02017850
adds r2, r3, r4
ldr r0, [r2, 0x4]
ldr r1, [r2, 0x8]
ldr r2, [r2, 0xC]
adds r4, 0x10
adds r3, r4
add r4, sp, 0x8
str r4, [sp]
movs r4, 0x6
str r4, [sp, 0x4]
bl sub_804602C
lsls r0, 24
lsrs r0, 24
movs r1, 0x3
mov r8, r1
adds r1, r5, 0
cmp r0, 0x18
bhi _08045DAC
movs r2, 0x38
mov r8, r2
cmp r0, 0x9
bls _08045DAC
movs r4, 0x2F
mov r8, r4
_08045DAC:
movs r5, 0
ldr r7, _08045E04 @ =gSprites
adds r0, r1, r6
lsls r6, r0, 2
_08045DB4:
ldr r0, _08045E00 @ =0x02017850
adds r0, r6, r0
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r7
ldrh r0, [r0, 0x38]
lsls r0, 24
lsrs r4, r0, 24
cmp r5, 0x1
bhi _08045E10
mov r0, r8
bl sub_8043CDC
mov r1, sp
adds r1, r5
adds r1, 0x8
ldrb r1, [r1]
lsls r1, 5
adds r0, r1
lsls r1, r4, 4
adds r1, r4
lsls r1, 2
adds r1, r7
ldrh r1, [r1, 0x4]
lsls r1, 22
lsrs r1, 22
adds r2, r5, 0x2
adds r1, r2
lsls r1, 5
ldr r2, _08045E08 @ =0x06010000
adds r1, r2
ldr r2, _08045E0C @ =REG_BG0CNT
bl CpuSet
b _08045E3E
.align 2, 0
_08045E00: .4byte 0x02017850
_08045E04: .4byte gSprites
_08045E08: .4byte 0x06010000
_08045E0C: .4byte REG_BG0CNT
_08045E10:
mov r0, r8
bl sub_8043CDC
mov r1, sp
adds r1, r5
adds r1, 0x8
ldrb r1, [r1]
lsls r1, 5
adds r0, r1
lsls r1, r4, 4
adds r1, r4
lsls r1, 2
adds r1, r7
ldrh r1, [r1, 0x4]
lsls r1, 22
lsrs r1, 22
adds r1, r5, r1
lsls r1, 5
ldr r4, _08045E4C @ =0x06010040
adds r1, r4
ldr r2, _08045E50 @ =REG_BG0CNT
bl CpuSet
_08045E3E:
adds r0, r5, 0x1
lsls r0, 24
lsrs r5, r0, 24
cmp r5, 0x5
bls _08045DB4
b _08045F42
.align 2, 0
_08045E4C: .4byte 0x06010040
_08045E50: .4byte REG_BG0CNT
_08045E54:
lsls r5, r6, 2
adds r3, r5, r6
lsls r3, 2
ldr r4, _08045EF0 @ =0x02017850
adds r2, r3, r4
ldr r0, [r2, 0x4]
ldr r1, [r2, 0x8]
ldr r2, [r2, 0xC]
adds r4, 0x10
adds r3, r4
add r4, sp, 0x8
str r4, [sp]
movs r4, 0x8
str r4, [sp, 0x4]
bl sub_804602C
ldr r1, _08045EF4 @ =gUnknown_02024A6A
lsls r0, r6, 1
adds r0, r1
ldrh r1, [r0]
movs r0, 0x64
muls r0, r1
ldr r1, _08045EF8 @ =gPlayerParty
adds r0, r1
movs r1, 0x38
bl GetMonData
lsls r0, 24
lsrs r0, 24
adds r1, r5, 0
cmp r0, 0x64
bne _08045EAA
movs r5, 0
movs r2, 0
_08045E98:
mov r0, sp
adds r0, r5
adds r0, 0x8
strb r2, [r0]
adds r0, r5, 0x1
lsls r0, 24
lsrs r5, r0, 24
cmp r5, 0x7
bls _08045E98
_08045EAA:
movs r5, 0
ldr r7, _08045EFC @ =gSprites
adds r0, r1, r6
lsls r0, 2
ldr r1, _08045EF0 @ =0x02017850
adds r4, r0, r1
_08045EB6:
cmp r5, 0x3
bhi _08045F08
movs r0, 0xC
bl sub_8043CDC
mov r1, sp
adds r1, r5
adds r1, 0x8
ldrb r1, [r1]
lsls r1, 5
adds r0, r1
ldrb r2, [r4]
lsls r1, r2, 4
adds r1, r2
lsls r1, 2
adds r1, r7
ldrh r1, [r1, 0x4]
lsls r1, 22
lsrs r1, 22
adds r2, r5, 0
adds r2, 0x24
adds r1, r2
lsls r1, 5
ldr r2, _08045F00 @ =0x06010000
adds r1, r2
ldr r2, _08045F04 @ =REG_BG0CNT
bl CpuSet
b _08045F38
.align 2, 0
_08045EF0: .4byte 0x02017850
_08045EF4: .4byte gUnknown_02024A6A
_08045EF8: .4byte gPlayerParty
_08045EFC: .4byte gSprites
_08045F00: .4byte 0x06010000
_08045F04: .4byte REG_BG0CNT
_08045F08:
movs r0, 0xC
bl sub_8043CDC
mov r1, sp
adds r1, r5
adds r1, 0x8
ldrb r1, [r1]
lsls r1, 5
adds r0, r1
ldrb r2, [r4]
lsls r1, r2, 4
adds r1, r2
lsls r1, 2
adds r1, r7
ldrh r1, [r1, 0x4]
lsls r1, 22
lsrs r1, 22
adds r1, r5, r1
lsls r1, 5
ldr r2, _08045F50 @ =0x06010b80
adds r1, r2
ldr r2, _08045F54 @ =REG_BG0CNT
bl CpuSet
_08045F38:
adds r0, r5, 0x1
lsls r0, 24
lsrs r5, r0, 24
cmp r5, 0x7
bls _08045EB6
_08045F42:
add sp, 0x10
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08045F50: .4byte 0x06010b80
_08045F54: .4byte REG_BG0CNT
thumb_func_end sub_8045D58
thumb_func_start sub_8045F58
sub_8045F58: @ 8045F58
push {r4-r7,lr}
mov r7, r8
push {r7}
adds r7, r0, 0
adds r4, r1, 0
mov r8, r2
adds r5, r3, 0
ldr r1, [sp, 0x18]
ldr r0, [sp, 0x1C]
lsls r0, 16
lsrs r3, r0, 16
lsls r1, 27
lsrs r2, r1, 24
ldr r1, [r5]
ldr r0, _08045F84 @ =0xffff8000
cmp r1, r0
bne _08045F8A
cmp r7, r2
bge _08045F88
lsls r0, r4, 8
str r0, [r5]
b _08045F8A
.align 2, 0
_08045F84: .4byte 0xffff8000
_08045F88:
str r4, [r5]
_08045F8A:
mov r0, r8
subs r4, r0
cmp r4, 0
bge _08045F96
movs r4, 0
b _08045F9C
_08045F96:
cmp r4, r7
ble _08045F9C
adds r4, r7, 0
_08045F9C:
cmp r7, r2
bge _08045FB8
ldr r0, [r5]
asrs r1, r0, 8
adds r6, r0, 0
cmp r4, r1
bne _08045FC4
movs r0, 0xFF
ands r0, r6
cmp r0, 0
bne _08045FC4
movs r0, 0x1
negs r0, r0
b _08046020
_08045FB8:
ldr r6, [r5]
cmp r4, r6
bne _08045FC4
movs r0, 0x1
negs r0, r0
b _08046020
_08045FC4:
cmp r7, r2
bge _08045FFE
lsls r0, r7, 8
adds r1, r2, 0
bl __divsi3
mov r1, r8
cmp r1, 0
bge _08045FE2
adds r0, r6, r0
str r0, [r5]
asrs r2, r0, 8
cmp r2, r4
blt _0804601E
b _08045FF6
_08045FE2:
subs r0, r6, r0
str r0, [r5]
asrs r2, r0, 8
movs r1, 0xFF
ands r0, r1
cmp r0, 0
ble _08045FF2
adds r2, 0x1
_08045FF2:
cmp r2, r4
bgt _0804601E
_08045FF6:
lsls r0, r4, 8
str r0, [r5]
adds r2, r4, 0
b _0804601E
_08045FFE:
mov r0, r8
cmp r0, 0
bge _08046010
ldr r0, [r5]
adds r0, r3
str r0, [r5]
cmp r0, r4
ble _0804601C
b _0804601A
_08046010:
ldr r0, [r5]
subs r0, r3
str r0, [r5]
cmp r0, r4
bge _0804601C
_0804601A:
str r4, [r5]
_0804601C:
ldr r2, [r5]
_0804601E:
adds r0, r2, 0
_08046020:
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_8045F58
thumb_func_start sub_804602C
sub_804602C: @ 804602C
push {r4-r7,lr}
adds r4, r0, 0
mov r12, r3
ldr r7, [sp, 0x14]
ldr r0, [sp, 0x18]
lsls r0, 24
lsrs r6, r0, 24
subs r5, r1, r2
cmp r5, 0
bge _08046044
movs r5, 0
b _0804604A
_08046044:
cmp r5, r4
ble _0804604A
adds r5, r4, 0
_0804604A:
lsls r0, r6, 27
lsrs r3, r0, 24
movs r1, 0
cmp r1, r6
bcs _08046064
movs r2, 0
_08046056:
adds r0, r7, r1
strb r2, [r0]
adds r0, r1, 0x1
lsls r0, 24
lsrs r1, r0, 24
cmp r1, r6
bcc _08046056
_08046064:
cmp r4, r3
bge _08046078
mov r1, r12
ldr r0, [r1]
muls r0, r3
adds r1, r4, 0
bl __divsi3
asrs r0, 8
b _08046084
_08046078:
mov r1, r12
ldr r0, [r1]
muls r0, r3
adds r1, r4, 0
bl __divsi3
_08046084:
lsls r0, 24
lsrs r2, r0, 24
adds r3, r2, 0
cmp r3, 0
bne _0804609A
cmp r5, 0
ble _0804609A
movs r0, 0x1
strb r0, [r7]
movs r3, 0x1
b _080460BE
_0804609A:
movs r1, 0
movs r4, 0x8
_0804609E:
cmp r1, r6
bcs _080460BE
cmp r2, 0x7
bls _080460BA
adds r0, r7, r1
strb r4, [r0]
adds r0, r2, 0
subs r0, 0x8
lsls r0, 24
lsrs r2, r0, 24
adds r0, r1, 0x1
lsls r0, 24
lsrs r1, r0, 24
b _0804609E
_080460BA:
adds r0, r7, r1
strb r2, [r0]
_080460BE:
adds r0, r3, 0
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_804602C
thumb_func_start sub_80460C8
sub_80460C8: @ 80460C8
push {r4-r7,lr}
mov r7, r8
push {r7}
sub sp, 0x8
adds r5, r0, 0
adds r6, r1, 0
adds r4, r2, 0
mov r8, r3
ldr r0, [r5]
ldr r1, [r5, 0x4]
ldr r2, [r5, 0x8]
movs r3, 0x6
str r3, [sp]
movs r3, 0x1
str r3, [sp, 0x4]
adds r3, r6, 0
bl sub_8045F58
lsls r0, 16
lsrs r7, r0, 16
adds r0, r5, 0
adds r1, r6, 0
adds r2, r4, 0
bl sub_8046128
ldr r0, [r5]
cmp r0, 0x2F
bgt _08046108
ldr r0, [r6]
lsls r0, 8
lsrs r1, r0, 16
b _0804610A
_08046108:
ldrh r1, [r6]
_0804610A:
movs r2, 0
ldrsh r0, [r5, r2]
lsls r1, 16
asrs r1, 16
mov r2, r8
bl sub_804373C
lsls r0, r7, 16
asrs r0, 16
add sp, 0x8
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_80460C8
thumb_func_start sub_8046128
sub_8046128: @ 8046128
push {r4-r7,lr}
mov r7, r8
push {r7}
sub sp, 0x1C
adds r5, r0, 0
adds r3, r1, 0
mov r8, r2
ldr r0, [r5]
ldr r1, [r5, 0x4]
ldr r2, [r5, 0x8]
add r4, sp, 0x8
str r4, [sp]
movs r4, 0x6
str r4, [sp, 0x4]
bl sub_804602C
movs r3, 0
add r7, sp, 0x10
mov r12, r7
ldrb r0, [r5, 0xC]
lsls r6, r0, 27
ldr r4, [r5, 0x10]
_08046154:
lsls r2, r3, 1
add r2, r12
lsrs r1, r6, 15
mov r0, sp
adds r0, r3
adds r0, 0x8
ldrb r0, [r0]
adds r0, r4, r0
orrs r1, r0
strh r1, [r2]
adds r0, r3, 0x1
lsls r0, 24
lsrs r3, r0, 24
cmp r3, 0x5
bls _08046154
adds r0, r7, 0
mov r1, r8
movs r2, 0x6
bl CpuSet
add sp, 0x1C
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_8046128
thumb_func_start sub_8046188
sub_8046188: @ 8046188
push {r4-r7,lr}
adds r6, r2, 0
lsls r3, 27
lsrs r7, r3, 24
subs r5, r0, r1
cmp r5, 0
bge _0804619A
movs r5, 0
b _080461A0
_0804619A:
cmp r5, r6
ble _080461A0
adds r5, r6, 0
_080461A0:
muls r0, r7
adds r1, r6, 0
bl __divsi3
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
adds r0, r5, 0
muls r0, r7
adds r1, r6, 0
bl __divsi3
lsls r4, 24
asrs r4, 24
lsls r0, 24
asrs r0, 24
subs r0, r4, r0
cmp r0, 0
bge _080461C8
negs r0, r0
_080461C8:
lsls r0, 24
lsrs r0, 24
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_8046188
thumb_func_start sub_80461D4
sub_80461D4: @ 80461D4
push {r4,lr}
lsls r2, 24
lsrs r2, 24
lsls r0, 16
asrs r4, r0, 16
adds r0, r4, 0
muls r0, r2
lsls r1, 16
asrs r1, 16
bl __divsi3
lsls r0, 24
lsrs r0, 24
cmp r0, 0
bne _080461F8
cmp r4, 0
ble _080461F8
movs r0, 0x1
_080461F8:
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_80461D4
thumb_func_start sub_8046200
sub_8046200: @ 8046200
push {lr}
lsls r0, 16
asrs r0, 16
lsls r1, 16
asrs r1, 16
cmp r0, r1
bne _08046212
movs r0, 0x4
b _0804622E
_08046212:
movs r2, 0x30
bl sub_80461D4
lsls r0, 24
lsrs r1, r0, 24
movs r0, 0x3
cmp r1, 0x18
bhi _0804622E
movs r0, 0x2
cmp r1, 0x9
bhi _0804622E
negs r0, r1
orrs r0, r1
lsrs r0, 31
_0804622E:
pop {r1}
bx r1
thumb_func_end sub_8046200
thumb_func_start sub_8046234
sub_8046234: @ 8046234
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
lsls r0, 16
lsrs r6, r0, 16
lsls r1, 16
lsrs r7, r1, 16
lsls r2, 24
lsrs r4, r2, 24
ldr r5, _0804636C @ =gUnknown_081FAEA4
ldrh r0, [r5, 0x6]
bl GetSpriteTileStartByTag
lsls r0, 16
ldr r1, _08046370 @ =0xffff0000
cmp r0, r1
bne _08046266
adds r0, r5, 0
bl LoadCompressedObjectPic
ldr r0, _08046374 @ =gUnknown_081FAEAC
bl LoadCompressedObjectPalette
_08046266:
ldr r0, _08046378 @ =sub_8046388
bl object_new_hidden_with_callback
mov r8, r0
mov r0, r8
lsls r0, 24
lsrs r0, 24
mov r8, r0
lsls r5, r0, 4
add r5, r8
lsls r5, 2
ldr r0, _0804637C @ =gSprites
adds r5, r0
strh r4, [r5, 0x30]
ldr r0, _08046380 @ =gSpriteTemplate_81FAF0C
mov r9, r0
lsls r6, 16
asrs r0, r6, 16
mov r10, r0
ldr r0, _08046384 @ =0xfff00000
adds r6, r0
asrs r6, 16
lsls r4, r7, 16
asrs r7, r4, 16
adds r4, r0
asrs r4, 16
mov r0, r9
adds r1, r6, 0
adds r2, r4, 0
movs r3, 0x2
bl CreateSprite
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
ldr r0, _0804637C @ =gSprites
adds r1, r0
mov r0, r8
strh r0, [r1, 0x2E]
ldrh r0, [r5, 0x2E]
adds r0, 0x1
strh r0, [r5, 0x2E]
adds r0, r1, 0
bl AnimateSprite
mov r0, r9
mov r1, r10
adds r2, r4, 0
movs r3, 0x2
bl CreateSprite
lsls r0, 24
lsrs r0, 24
lsls r4, r0, 4
adds r4, r0
lsls r4, 2
ldr r0, _0804637C @ =gSprites
adds r4, r0
mov r0, r8
strh r0, [r4, 0x2E]
ldrh r0, [r5, 0x2E]
adds r0, 0x1
strh r0, [r5, 0x2E]
adds r0, r4, 0
movs r1, 0x1
bl StartSpriteAnim
adds r0, r4, 0
bl AnimateSprite
mov r0, r9
adds r1, r6, 0
adds r2, r7, 0
movs r3, 0x2
bl CreateSprite
lsls r0, 24
lsrs r0, 24
lsls r4, r0, 4
adds r4, r0
lsls r4, 2
ldr r0, _0804637C @ =gSprites
adds r4, r0
mov r0, r8
strh r0, [r4, 0x2E]
ldrh r0, [r5, 0x2E]
adds r0, 0x1
strh r0, [r5, 0x2E]
adds r0, r4, 0
movs r1, 0x2
bl StartSpriteAnim
adds r0, r4, 0
bl AnimateSprite
mov r0, r9
mov r1, r10
adds r2, r7, 0
movs r3, 0x2
bl CreateSprite
lsls r0, 24
lsrs r0, 24
lsls r4, r0, 4
adds r4, r0
lsls r4, 2
ldr r0, _0804637C @ =gSprites
adds r4, r0
mov r0, r8
strh r0, [r4, 0x2E]
ldrh r0, [r5, 0x2E]
adds r0, 0x1
strh r0, [r5, 0x2E]
adds r0, r4, 0
movs r1, 0x3
bl StartSpriteAnim
adds r0, r4, 0
bl AnimateSprite
mov r0, r8
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_0804636C: .4byte gUnknown_081FAEA4
_08046370: .4byte 0xffff0000
_08046374: .4byte gUnknown_081FAEAC
_08046378: .4byte sub_8046388
_0804637C: .4byte gSprites
_08046380: .4byte gSpriteTemplate_81FAF0C
_08046384: .4byte 0xfff00000
thumb_func_end sub_8046234
thumb_func_start sub_8046388
sub_8046388: @ 8046388
push {r4,lr}
adds r4, r0, 0
movs r1, 0x2E
ldrsh r0, [r4, r1]
cmp r0, 0
bne _080463C0
ldr r0, _080463B4 @ =gUnknown_081FAEA4
ldrh r0, [r0, 0x6]
bl FreeSpriteTilesByTag
ldr r0, _080463B8 @ =gUnknown_081FAEAC
ldrh r0, [r0, 0x4]
bl FreeSpritePaletteByTag
movs r1, 0x30
ldrsh r0, [r4, r1]
cmp r0, 0
bne _080463BC
adds r0, r4, 0
bl DestroySprite
b _080463C0
.align 2, 0
_080463B4: .4byte gUnknown_081FAEA4
_080463B8: .4byte gUnknown_081FAEAC
_080463BC:
ldr r0, _080463C8 @ =SpriteCallbackDummy
str r0, [r4, 0x1C]
_080463C0:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080463C8: .4byte SpriteCallbackDummy
thumb_func_end sub_8046388
thumb_func_start sub_80463CC
sub_80463CC: @ 80463CC
push {lr}
adds r3, r0, 0
adds r0, 0x3F
ldrb r1, [r0]
movs r0, 0x10
ands r0, r1
cmp r0, 0
beq _080463F6
ldr r2, _080463FC @ =gSprites
movs r0, 0x2E
ldrsh r1, [r3, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
ldrh r1, [r0, 0x2E]
subs r1, 0x1
strh r1, [r0, 0x2E]
adds r0, r3, 0
bl DestroySprite
_080463F6:
pop {r0}
bx r0
.align 2, 0
_080463FC: .4byte gSprites
thumb_func_end sub_80463CC
thumb_func_start sub_8046400
sub_8046400: @ 8046400
push {r4-r6,lr}
adds r4, r0, 0
adds r5, r1, 0
lsls r4, 16
lsrs r4, 16
lsls r5, 24
lsrs r5, 24
ldr r1, _08046450 @ =gUnknown_02024E6D
movs r0, 0x1
strb r0, [r1]
ldr r6, _08046454 @ =gUnknown_02024A60
ldrb r1, [r6]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
ldr r1, _08046458 @ =0x02017810
adds r0, r1
ldrb r1, [r0]
movs r2, 0x8
orrs r1, r2
strb r1, [r0]
ldr r0, _0804645C @ =sub_8046464
movs r1, 0x5
bl CreateTask
lsls r0, 24
lsrs r0, 24
ldr r2, _08046460 @ =gTasks
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
adds r1, r2
strh r4, [r1, 0xA]
strh r5, [r1, 0xC]
ldrb r0, [r6]
strh r0, [r1, 0xE]
movs r0, 0
pop {r4-r6}
pop {r1}
bx r1
.align 2, 0
_08046450: .4byte gUnknown_02024E6D
_08046454: .4byte gUnknown_02024A60
_08046458: .4byte 0x02017810
_0804645C: .4byte sub_8046464
_08046460: .4byte gTasks
thumb_func_end sub_8046400
thumb_func_start sub_8046464
sub_8046464: @ 8046464
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x4
lsls r0, 24
lsrs r0, 24
mov r10, r0
movs r0, 0
str r0, [sp]
ldr r1, _08046498 @ =gTasks
mov r2, r10
lsls r0, r2, 2
add r0, r10
lsls r0, 3
adds r1, r0, r1
ldrh r2, [r1, 0x8]
movs r3, 0x8
ldrsh r0, [r1, r3]
cmp r0, 0
bne _0804649C
adds r0, r2, 0x1
strh r0, [r1, 0x8]
b _08046616
.align 2, 0
_08046498: .4byte gTasks
_0804649C:
ldrh r0, [r1, 0xC]
mov r8, r0
ldrb r5, [r1, 0xE]
adds r0, r5, 0
bl battle_side_get_owner
lsls r0, 24
cmp r0, 0
beq _080464C8
ldr r1, _080464C0 @ =gUnknown_02024A6A
lsls r0, r5, 1
adds r0, r1
ldrh r1, [r0]
movs r0, 0x64
muls r0, r1
ldr r1, _080464C4 @ =gEnemyParty
b _080464D6
.align 2, 0
_080464C0: .4byte gUnknown_02024A6A
_080464C4: .4byte gEnemyParty
_080464C8:
ldr r1, _08046544 @ =gUnknown_02024A6A
lsls r0, r5, 1
adds r0, r1
ldrh r1, [r0]
movs r0, 0x64
muls r0, r1
ldr r1, _08046548 @ =gPlayerParty
_080464D6:
adds r0, r1
movs r1, 0x26
bl GetMonData
lsls r0, 16
lsrs r0, 16
bl ball_number_to_ball_processing_index
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
adds r0, r4, 0
bl sub_80478DC
lsls r0, r4, 1
adds r0, r4
lsls r0, 3
ldr r1, _0804654C @ =gSpriteTemplate_820AAB4
adds r0, r1
movs r1, 0x20
movs r2, 0x50
movs r3, 0x1D
bl CreateSprite
lsls r0, 24
lsrs r7, r0, 24
ldr r2, _08046550 @ =gSprites
mov r9, r2
lsls r0, r7, 4
adds r0, r7
lsls r6, r0, 2
adds r4, r6, r2
movs r0, 0x80
strh r0, [r4, 0x2E]
movs r3, 0
strh r3, [r4, 0x30]
mov r0, r8
strh r0, [r4, 0x3C]
mov r2, r8
cmp r2, 0xFE
beq _0804655C
cmp r2, 0xFF
bne _08046598
ldr r0, _08046554 @ =gUnknown_02024C08
strb r5, [r0]
movs r0, 0x18
strh r0, [r4, 0x20]
movs r0, 0x44
strh r0, [r4, 0x22]
mov r0, r9
adds r0, 0x1C
adds r0, r6, r0
ldr r1, _08046558 @ =sub_8047074
str r1, [r0]
b _080465A6
.align 2, 0
_08046544: .4byte gUnknown_02024A6A
_08046548: .4byte gPlayerParty
_0804654C: .4byte gSpriteTemplate_820AAB4
_08046550: .4byte gSprites
_08046554: .4byte gUnknown_02024C08
_08046558: .4byte sub_8047074
_0804655C:
adds r0, r5, 0
movs r1, 0
bl sub_8077ABC
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x20]
adds r0, r5, 0
movs r1, 0x1
bl sub_8077ABC
lsls r0, 24
lsrs r0, 24
adds r0, 0x18
strh r0, [r4, 0x22]
ldr r0, _08046590 @ =gUnknown_02024C08
strb r5, [r0]
movs r3, 0
strh r3, [r4, 0x2E]
mov r0, r9
adds r0, 0x1C
adds r0, r6, r0
ldr r1, _08046594 @ =sub_8047254
str r1, [r0]
b _080465A6
.align 2, 0
_08046590: .4byte gUnknown_02024C08
_08046594: .4byte sub_8047254
_08046598:
movs r0, 0x1
bl battle_get_side_with_given_state
ldr r1, _080465C4 @ =gUnknown_02024C08
strb r0, [r1]
movs r0, 0x1
str r0, [sp]
_080465A6:
ldr r0, _080465C8 @ =gSprites
lsls r1, r7, 4
adds r1, r7
lsls r1, 2
adds r4, r1, r0
ldr r5, _080465C4 @ =gUnknown_02024C08
ldrb r0, [r5]
strh r0, [r4, 0x3A]
ldr r2, [sp]
cmp r2, 0
bne _080465CC
mov r0, r10
bl DestroyTask
b _08046616
.align 2, 0
_080465C4: .4byte gUnknown_02024C08
_080465C8: .4byte gSprites
_080465CC:
movs r0, 0x22
strh r0, [r4, 0x2E]
ldrb r0, [r5]
movs r1, 0
bl sub_8077ABC
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x32]
ldrb r0, [r5]
movs r1, 0x1
bl sub_8077ABC
lsls r0, 24
lsrs r0, 24
subs r0, 0x10
strh r0, [r4, 0x36]
ldr r0, _08046628 @ =0x0000ffd8
strh r0, [r4, 0x38]
adds r0, r4, 0
bl sub_80786EC
mov r3, r10
strh r3, [r4, 0x6]
ldr r1, _0804662C @ =gTasks
mov r2, r10
lsls r0, r2, 2
add r0, r10
lsls r0, 3
adds r0, r1
ldrb r1, [r5]
strh r1, [r0, 0x10]
ldr r1, _08046630 @ =TaskDummy
str r1, [r0]
movs r0, 0x3D
bl PlaySE
_08046616:
add sp, 0x4
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08046628: .4byte 0x0000ffd8
_0804662C: .4byte gTasks
_08046630: .4byte TaskDummy
thumb_func_end sub_8046464
thumb_func_start objc_0804ABD4
objc_0804ABD4: @ 8046634
push {r4-r7,lr}
mov r7, r8
push {r7}
sub sp, 0x4
adds r7, r0, 0
bl sub_8078718
lsls r0, 24
cmp r0, 0
beq _080466D4
ldrb r6, [r7, 0x6]
ldr r1, _080466E0 @ =gTasks
lsls r0, r6, 2
adds r0, r6
lsls r0, 3
adds r0, r1
ldrb r5, [r0, 0x10]
ldrb r0, [r0, 0xC]
mov r8, r0
adds r0, r7, 0
movs r1, 0x1
bl StartSpriteAnim
adds r2, r7, 0
adds r2, 0x2C
ldrb r0, [r2]
movs r1, 0x80
orrs r0, r1
strb r0, [r2]
ldrh r0, [r7, 0x24]
ldrh r1, [r7, 0x20]
adds r0, r1
movs r1, 0
strh r0, [r7, 0x20]
ldrh r0, [r7, 0x26]
ldrh r2, [r7, 0x22]
adds r0, r2
strh r0, [r7, 0x22]
strh r1, [r7, 0x24]
strh r1, [r7, 0x26]
strh r1, [r7, 0x38]
adds r0, r5, 0
bl sub_8047978
lsls r0, 16
lsrs r0, 16
bl ball_number_to_ball_processing_index
adds r4, r0, 0
ldrh r0, [r7, 0x20]
lsls r0, 24
lsrs r0, 24
ldrh r1, [r7, 0x22]
subs r1, 0x5
lsls r1, 24
lsrs r1, 24
lsls r4, 24
lsrs r4, 24
str r4, [sp]
movs r2, 0x1
movs r3, 0x1C
bl sub_814086C
movs r0, 0
adds r1, r5, 0
movs r2, 0xE
adds r3, r4, 0
bl sub_8141314
lsls r0, 24
lsrs r0, 24
strh r0, [r7, 0x2E]
strh r5, [r7, 0x3A]
mov r0, r8
strh r0, [r7, 0x3C]
adds r0, r6, 0
bl DestroyTask
ldr r0, _080466E4 @ =sub_80466E8
str r0, [r7, 0x1C]
_080466D4:
add sp, 0x4
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080466E0: .4byte gTasks
_080466E4: .4byte sub_80466E8
thumb_func_end objc_0804ABD4
thumb_func_start sub_80466E8
sub_80466E8: @ 80466E8
ldr r1, _080466F0 @ =sub_80466F4
str r1, [r0, 0x1C]
bx lr
.align 2, 0
_080466F0: .4byte sub_80466F4
thumb_func_end sub_80466E8
thumb_func_start sub_80466F4
sub_80466F4: @ 80466F4
push {r4-r7,lr}
adds r6, r0, 0
ldrh r0, [r6, 0x38]
adds r0, 0x1
movs r7, 0
strh r0, [r6, 0x38]
lsls r0, 16
asrs r0, 16
cmp r0, 0xA
bne _0804674E
strh r7, [r6, 0x38]
ldr r0, _08046754 @ =sub_8046760
str r0, [r6, 0x1C]
ldr r5, _08046758 @ =gUnknown_02024BE0
movs r1, 0x3A
ldrsh r0, [r6, r1]
adds r0, r5
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
ldr r4, _0804675C @ =gSprites
adds r0, r4
movs r1, 0x2
bl StartSpriteAffineAnim
movs r1, 0x3A
ldrsh r0, [r6, r1]
adds r0, r5
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r4
bl AnimateSprite
movs r1, 0x3A
ldrsh r0, [r6, r1]
adds r0, r5
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r4
strh r7, [r0, 0x30]
_0804674E:
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08046754: .4byte sub_8046760
_08046758: .4byte gUnknown_02024BE0
_0804675C: .4byte gSprites
thumb_func_end sub_80466F4
thumb_func_start sub_8046760
sub_8046760: @ 8046760
push {r4-r6,lr}
adds r4, r0, 0
ldrh r0, [r4, 0x38]
adds r0, 0x1
strh r0, [r4, 0x38]
lsls r0, 16
asrs r0, 16
cmp r0, 0xB
bne _08046778
movs r0, 0x3C
bl PlaySE
_08046778:
ldr r6, _080467C4 @ =gSprites
ldr r5, _080467C8 @ =gUnknown_02024BE0
movs r1, 0x3A
ldrsh r0, [r4, r1]
adds r0, r5
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r1, r0, r6
adds r0, r1, 0
adds r0, 0x3F
ldrb r0, [r0]
lsls r0, 26
cmp r0, 0
bge _080467D0
adds r0, r4, 0
movs r1, 0x2
bl StartSpriteAnim
movs r2, 0x3A
ldrsh r0, [r4, r2]
adds r0, r5
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r6
adds r0, 0x3E
ldrb r1, [r0]
movs r2, 0x4
orrs r1, r2
strb r1, [r0]
movs r0, 0
strh r0, [r4, 0x38]
ldr r0, _080467CC @ =sub_80467F8
str r0, [r4, 0x1C]
b _080467F0
.align 2, 0
_080467C4: .4byte gSprites
_080467C8: .4byte gUnknown_02024BE0
_080467CC: .4byte sub_80467F8
_080467D0:
ldrh r0, [r1, 0x30]
adds r0, 0x60
strh r0, [r1, 0x30]
movs r1, 0x3A
ldrsh r0, [r4, r1]
adds r0, r5
ldrb r0, [r0]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r6
movs r2, 0x30
ldrsh r0, [r1, r2]
negs r0, r0
asrs r0, 8
strh r0, [r1, 0x26]
_080467F0:
pop {r4-r6}
pop {r0}
bx r0
thumb_func_end sub_8046760
thumb_func_start sub_80467F8
sub_80467F8: @ 80467F8
push {r4,lr}
adds r4, r0, 0
adds r0, 0x3F
ldrb r1, [r0]
movs r0, 0x10
ands r0, r1
cmp r0, 0
beq _08046840
ldrh r0, [r4, 0x38]
adds r0, 0x1
movs r1, 0
strh r0, [r4, 0x38]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1
bne _08046840
strh r1, [r4, 0x34]
movs r0, 0x20
strh r0, [r4, 0x36]
strh r1, [r4, 0x38]
movs r0, 0
movs r1, 0x20
bl Cos
ldrh r1, [r4, 0x22]
adds r0, r1
strh r0, [r4, 0x22]
movs r0, 0x36
ldrsh r1, [r4, r0]
movs r0, 0
bl Cos
negs r0, r0
strh r0, [r4, 0x26]
ldr r0, _08046848 @ =sub_804684C
str r0, [r4, 0x1C]
_08046840:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08046848: .4byte sub_804684C
thumb_func_end sub_80467F8
thumb_func_start sub_804684C
sub_804684C: @ 804684C
push {r4,r5,lr}
adds r4, r0, 0
movs r5, 0
ldrh r0, [r4, 0x34]
movs r1, 0xFF
ands r1, r0
cmp r1, 0
beq _08046862
cmp r1, 0x1
beq _080468D6
b _08046902
_08046862:
movs r1, 0x38
ldrsh r0, [r4, r1]
movs r2, 0x36
ldrsh r1, [r4, r2]
bl Cos
negs r0, r0
strh r0, [r4, 0x26]
ldrh r1, [r4, 0x38]
adds r1, 0x4
ldrh r2, [r4, 0x34]
lsls r0, r2, 16
asrs r0, 24
adds r1, r0
strh r1, [r4, 0x38]
lsls r1, 16
asrs r1, 16
cmp r1, 0x3F
ble _08046902
ldrh r0, [r4, 0x36]
subs r0, 0xA
strh r0, [r4, 0x36]
ldr r1, _080468AC @ =0x00000101
adds r0, r2, r1
strh r0, [r4, 0x34]
lsls r0, 16
asrs r0, 24
cmp r0, 0x4
bne _0804689E
movs r5, 0x1
_0804689E:
cmp r0, 0x2
beq _080468BE
cmp r0, 0x2
bgt _080468B0
cmp r0, 0x1
beq _080468B6
b _080468CE
.align 2, 0
_080468AC: .4byte 0x00000101
_080468B0:
cmp r0, 0x3
beq _080468C6
b _080468CE
_080468B6:
movs r0, 0x38
bl PlaySE
b _08046902
_080468BE:
movs r0, 0x39
bl PlaySE
b _08046902
_080468C6:
movs r0, 0x3A
bl PlaySE
b _08046902
_080468CE:
movs r0, 0x3B
bl PlaySE
b _08046902
_080468D6:
movs r2, 0x38
ldrsh r0, [r4, r2]
movs r2, 0x36
ldrsh r1, [r4, r2]
bl Cos
negs r0, r0
strh r0, [r4, 0x26]
ldrh r1, [r4, 0x38]
subs r1, 0x4
ldrh r2, [r4, 0x34]
lsls r0, r2, 16
asrs r0, 24
subs r1, r0
strh r1, [r4, 0x38]
lsls r1, 16
cmp r1, 0
bgt _08046902
strh r5, [r4, 0x38]
ldr r0, _08046928 @ =0xffffff00
ands r0, r2
strh r0, [r4, 0x34]
_08046902:
cmp r5, 0
beq _0804693A
movs r5, 0
strh r5, [r4, 0x34]
movs r0, 0x40
movs r1, 0x20
bl Cos
ldrh r1, [r4, 0x22]
adds r0, r1
strh r0, [r4, 0x22]
strh r5, [r4, 0x26]
movs r2, 0x3C
ldrsh r0, [r4, r2]
cmp r0, 0
bne _08046930
ldr r0, _0804692C @ =sub_8046C78
str r0, [r4, 0x1C]
b _0804693A
.align 2, 0
_08046928: .4byte 0xffffff00
_0804692C: .4byte sub_8046C78
_08046930:
ldr r0, _08046940 @ =sub_8046944
str r0, [r4, 0x1C]
movs r0, 0x1
strh r0, [r4, 0x36]
strh r5, [r4, 0x38]
_0804693A:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_08046940: .4byte sub_8046944
thumb_func_end sub_804684C
thumb_func_start sub_8046944
sub_8046944: @ 8046944
push {r4,lr}
adds r4, r0, 0
ldrh r0, [r4, 0x34]
adds r0, 0x1
strh r0, [r4, 0x34]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1F
bne _08046978
movs r0, 0
strh r0, [r4, 0x34]
adds r2, r4, 0
adds r2, 0x2C
ldrb r0, [r2]
movs r1, 0x80
orrs r0, r1
strb r0, [r2]
adds r0, r4, 0
movs r1, 0x1
bl StartSpriteAffineAnim
ldr r0, _08046980 @ =sub_8046984
str r0, [r4, 0x1C]
movs r0, 0x17
bl PlaySE
_08046978:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08046980: .4byte sub_8046984
thumb_func_end sub_8046944
thumb_func_start sub_8046984
sub_8046984: @ 8046984
push {r4,lr}
adds r4, r0, 0
ldrh r0, [r4, 0x34]
movs r1, 0xFF
ands r1, r0
cmp r1, 0x4
bhi _08046A84
lsls r0, r1, 2
ldr r1, _0804699C @ =_080469A0
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_0804699C: .4byte _080469A0
.align 2, 0
_080469A0:
.4byte _080469B4
.4byte _080469E6
.4byte _080469B4
.4byte _08046A3A
.4byte _08046A84
_080469B4:
ldrh r0, [r4, 0x36]
ldrh r2, [r4, 0x24]
adds r1, r0, r2
strh r1, [r4, 0x24]
ldrh r1, [r4, 0x38]
adds r0, r1
strh r0, [r4, 0x38]
adds r2, r4, 0
adds r2, 0x2C
ldrb r1, [r2]
movs r0, 0x7F
ands r0, r1
strb r0, [r2]
ldrh r0, [r4, 0x38]
adds r0, 0x3
lsls r0, 16
lsrs r0, 16
cmp r0, 0x6
bls _08046ACA
ldrh r0, [r4, 0x34]
adds r0, 0x1
strh r0, [r4, 0x34]
movs r0, 0
strh r0, [r4, 0x38]
b _08046ACA
_080469E6:
ldrh r0, [r4, 0x38]
adds r0, 0x1
strh r0, [r4, 0x38]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1
bne _08046A2C
movs r0, 0
strh r0, [r4, 0x38]
ldrh r0, [r4, 0x36]
negs r0, r0
strh r0, [r4, 0x36]
ldrh r0, [r4, 0x34]
adds r0, 0x1
strh r0, [r4, 0x34]
adds r2, r4, 0
adds r2, 0x2C
ldrb r1, [r2]
movs r0, 0x7F
ands r0, r1
strb r0, [r2]
movs r2, 0x36
ldrsh r0, [r4, r2]
cmp r0, 0
bge _08046A22
adds r0, r4, 0
movs r1, 0x2
bl ChangeSpriteAffineAnim
b _08046ACA
_08046A22:
adds r0, r4, 0
movs r1, 0x1
bl ChangeSpriteAffineAnim
b _08046ACA
_08046A2C:
adds r0, r4, 0
adds r0, 0x2C
ldrb r1, [r0]
movs r2, 0x80
orrs r1, r2
strb r1, [r0]
b _08046ACA
_08046A3A:
movs r1, 0x80
lsls r1, 1
adds r0, r1, 0
ldrh r2, [r4, 0x34]
adds r0, r2
strh r0, [r4, 0x34]
lsls r0, 16
asrs r0, 24
movs r2, 0x3C
ldrsh r1, [r4, r2]
cmp r0, r1
bne _08046A5C
ldr r0, _08046A58 @ =sub_8046C78
str r0, [r4, 0x1C]
b _08046ACA
.align 2, 0
_08046A58: .4byte sub_8046C78
_08046A5C:
cmp r1, 0x4
bne _08046A70
cmp r0, 0x3
bne _08046A70
ldr r0, _08046A6C @ =sub_8046E7C
str r0, [r4, 0x1C]
b _08046A76
.align 2, 0
_08046A6C: .4byte sub_8046E7C
_08046A70:
ldrh r0, [r4, 0x34]
adds r0, 0x1
strh r0, [r4, 0x34]
_08046A76:
adds r2, r4, 0
adds r2, 0x2C
ldrb r0, [r2]
movs r1, 0x80
orrs r0, r1
strb r0, [r2]
b _08046ACA
_08046A84:
ldrh r0, [r4, 0x38]
adds r0, 0x1
strh r0, [r4, 0x38]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1F
bne _08046ACA
movs r0, 0
strh r0, [r4, 0x38]
ldrh r1, [r4, 0x34]
ldr r0, _08046AB8 @ =0xffffff00
ands r0, r1
strh r0, [r4, 0x34]
adds r0, r4, 0
movs r1, 0x3
bl StartSpriteAffineAnim
movs r1, 0x36
ldrsh r0, [r4, r1]
cmp r0, 0
bge _08046ABC
adds r0, r4, 0
movs r1, 0x2
bl StartSpriteAffineAnim
b _08046AC4
.align 2, 0
_08046AB8: .4byte 0xffffff00
_08046ABC:
adds r0, r4, 0
movs r1, 0x1
bl StartSpriteAffineAnim
_08046AC4:
movs r0, 0x17
bl PlaySE
_08046ACA:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_8046984
thumb_func_start sub_8046AD0
sub_8046AD0: @ 8046AD0
push {r4-r6,lr}
lsls r0, 24
lsrs r4, r0, 24
ldr r1, _08046AFC @ =gTasks
lsls r0, r4, 2
adds r0, r4
lsls r0, 3
adds r0, r1
ldrb r6, [r0, 0xC]
ldrb r3, [r0, 0xA]
ldrh r5, [r0, 0x8]
movs r2, 0x26
ldrsh r0, [r0, r2]
adds r2, r1, 0
cmp r0, 0x20
bhi _08046B88
lsls r0, 2
ldr r1, _08046B00 @ =_08046B04
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08046AFC: .4byte gTasks
_08046B00: .4byte _08046B04
.align 2, 0
_08046B04:
.4byte _08046B88
.4byte _08046BA6
.4byte _08046BB2
.4byte _08046BF6
.4byte _08046B88
.4byte _08046B88
.4byte _08046B88
.4byte _08046B88
.4byte _08046B88
.4byte _08046B88
.4byte _08046B88
.4byte _08046B88
.4byte _08046B88
.4byte _08046B88
.4byte _08046B88
.4byte _08046B88
.4byte _08046B88
.4byte _08046B88
.4byte _08046B88
.4byte _08046B88
.4byte _08046BD0
.4byte _08046B88
.4byte _08046B88
.4byte _08046B88
.4byte _08046B88
.4byte _08046B88
.4byte _08046B88
.4byte _08046B88
.4byte _08046B88
.4byte _08046B88
.4byte _08046C08
.4byte _08046C20
.4byte _08046C48
_08046B88:
lsls r0, r4, 2
adds r0, r4
lsls r0, 3
adds r1, r0, r2
ldrh r2, [r1, 0x18]
movs r3, 0x18
ldrsh r0, [r1, r3]
cmp r0, 0x2
bgt _08046BA0
adds r0, r2, 0x1
strh r0, [r1, 0x18]
b _08046C72
_08046BA0:
adds r0, r6, 0x1
strh r0, [r1, 0x26]
b _08046C72
_08046BA6:
lsls r1, r3, 24
asrs r1, 24
adds r0, r5, 0
bl PlayCry1
b _08046BEE
_08046BB2:
bl StopCryAndClearCrySongs
ldr r1, _08046BCC @ =gTasks
lsls r0, r4, 2
adds r0, r4
lsls r0, 3
adds r0, r1
movs r1, 0x3
strh r1, [r0, 0x1C]
movs r1, 0x14
strh r1, [r0, 0x26]
b _08046C72
.align 2, 0
_08046BCC: .4byte gTasks
_08046BD0:
lsls r0, r4, 2
adds r0, r4
lsls r0, 3
adds r1, r0, r2
ldrh r2, [r1, 0x1C]
movs r6, 0x1C
ldrsh r0, [r1, r6]
cmp r0, 0
bne _08046C5A
lsls r1, r3, 24
asrs r1, 24
adds r0, r5, 0
movs r2, 0x1
bl PlayCry4
_08046BEE:
adds r0, r4, 0
bl DestroyTask
b _08046C72
_08046BF6:
lsls r0, r4, 2
adds r0, r4
lsls r0, 3
adds r0, r2
movs r1, 0x6
strh r1, [r0, 0x1C]
movs r1, 0x1E
strh r1, [r0, 0x26]
b _08046C72
_08046C08:
lsls r0, r4, 2
adds r0, r4
lsls r0, 3
adds r1, r0, r2
ldrh r2, [r1, 0x1C]
movs r3, 0x1C
ldrsh r0, [r1, r3]
cmp r0, 0
bne _08046C5A
ldrh r0, [r1, 0x26]
adds r0, 0x1
strh r0, [r1, 0x26]
_08046C20:
bl IsCryPlayingOrClearCrySongs
lsls r0, 24
cmp r0, 0
bne _08046C72
bl StopCryAndClearCrySongs
ldr r0, _08046C44 @ =gTasks
lsls r1, r4, 2
adds r1, r4
lsls r1, 3
adds r1, r0
movs r0, 0x3
strh r0, [r1, 0x1C]
ldrh r0, [r1, 0x26]
adds r0, 0x1
strh r0, [r1, 0x26]
b _08046C72
.align 2, 0
_08046C44: .4byte gTasks
_08046C48:
lsls r0, r4, 2
adds r0, r4
lsls r0, 3
adds r1, r0, r2
ldrh r2, [r1, 0x1C]
movs r6, 0x1C
ldrsh r0, [r1, r6]
cmp r0, 0
beq _08046C60
_08046C5A:
subs r0, r2, 0x1
strh r0, [r1, 0x1C]
b _08046C72
_08046C60:
lsls r1, r3, 24
asrs r1, 24
adds r0, r5, 0
movs r2, 0
bl PlayCry4
adds r0, r4, 0
bl DestroyTask
_08046C72:
pop {r4-r6}
pop {r0}
bx r0
thumb_func_end sub_8046AD0
thumb_func_start sub_8046C78
sub_8046C78: @ 8046C78
push {r4-r7,lr}
mov r7, r8
push {r7}
sub sp, 0x4
adds r6, r0, 0
ldrh r0, [r6, 0x3A]
lsls r0, 24
lsrs r5, r0, 24
adds r0, r6, 0
movs r1, 0x1
bl StartSpriteAnim
adds r0, r5, 0
bl sub_8047978
lsls r0, 16
lsrs r0, 16
bl ball_number_to_ball_processing_index
adds r4, r0, 0
ldrh r0, [r6, 0x20]
lsls r0, 24
lsrs r0, 24
ldrh r1, [r6, 0x22]
subs r1, 0x5
lsls r1, 24
lsrs r1, 24
lsls r4, 24
lsrs r4, 24
str r4, [sp]
movs r2, 0x1
movs r3, 0x1C
bl sub_814086C
ldrh r1, [r6, 0x3A]
lsls r1, 24
lsrs r1, 24
movs r0, 0x1
movs r2, 0xE
adds r3, r4, 0
bl sub_8141314
lsls r0, 24
lsrs r0, 24
strh r0, [r6, 0x2E]
ldr r0, _08046D0C @ =sub_8046E9C
str r0, [r6, 0x1C]
ldr r0, _08046D10 @ =gMain
ldr r1, _08046D14 @ =0x0000043d
adds r0, r1
ldrb r1, [r0]
movs r0, 0x2
ands r0, r1
cmp r0, 0
bne _08046CE8
b _08046E1C
_08046CE8:
adds r0, r5, 0
bl battle_side_get_owner
lsls r0, 24
cmp r0, 0
beq _08046D20
ldr r1, _08046D18 @ =gUnknown_02024A6A
lsls r0, r5, 1
adds r0, r1
ldrh r1, [r0]
movs r0, 0x64
muls r1, r0
ldr r0, _08046D1C @ =gEnemyParty
adds r0, r1, r0
movs r3, 0x19
mov r8, r3
b _08046D34
.align 2, 0
_08046D0C: .4byte sub_8046E9C
_08046D10: .4byte gMain
_08046D14: .4byte 0x0000043d
_08046D18: .4byte gUnknown_02024A6A
_08046D1C: .4byte gEnemyParty
_08046D20:
ldr r1, _08046D90 @ =gUnknown_02024A6A
lsls r0, r5, 1
adds r0, r1
ldrh r1, [r0]
movs r0, 0x64
muls r1, r0
ldr r0, _08046D94 @ =gPlayerParty
adds r0, r1, r0
movs r1, 0xE7
mov r8, r1
_08046D34:
movs r1, 0xB
bl GetMonData
lsls r0, 16
lsrs r7, r0, 16
movs r0, 0
bl battle_get_side_with_given_state
lsls r0, 24
lsrs r0, 24
cmp r5, r0
beq _08046D5A
movs r0, 0x1
bl battle_get_side_with_given_state
lsls r0, 24
lsrs r0, 24
cmp r5, r0
bne _08046DAE
_08046D5A:
bl battle_type_is_double
lsls r0, 24
cmp r0, 0
beq _08046DAE
ldr r0, _08046D98 @ =0x02017840
ldrb r1, [r0, 0x9]
movs r0, 0x1
ands r0, r1
cmp r0, 0
beq _08046DAE
ldr r0, _08046D9C @ =gUnknown_020239F8
ldrh r1, [r0]
movs r0, 0x40
ands r0, r1
cmp r0, 0
beq _08046DA4
bl IsBGMPlaying
lsls r0, 24
cmp r0, 0
beq _08046DAE
ldr r0, _08046DA0 @ =gMPlay_BGM
bl m4aMPlayStop
b _08046DAE
.align 2, 0
_08046D90: .4byte gUnknown_02024A6A
_08046D94: .4byte gPlayerParty
_08046D98: .4byte 0x02017840
_08046D9C: .4byte gUnknown_020239F8
_08046DA0: .4byte gMPlay_BGM
_08046DA4:
ldr r0, _08046DC8 @ =gMPlay_BGM
ldr r1, _08046DCC @ =0x0000ffff
movs r2, 0x80
bl m4aMPlayVolumeControl
_08046DAE:
bl battle_type_is_double
lsls r0, 24
cmp r0, 0
beq _08046DC4
ldr r0, _08046DD0 @ =0x02017840
ldrb r1, [r0, 0x9]
movs r0, 0x1
ands r0, r1
cmp r0, 0
bne _08046DD4
_08046DC4:
movs r4, 0
b _08046DF6
.align 2, 0
_08046DC8: .4byte gMPlay_BGM
_08046DCC: .4byte 0x0000ffff
_08046DD0: .4byte 0x02017840
_08046DD4:
movs r0, 0
bl battle_get_side_with_given_state
lsls r0, 24
lsrs r0, 24
cmp r5, r0
beq _08046DF0
movs r0, 0x1
bl battle_get_side_with_given_state
lsls r0, 24
lsrs r0, 24
cmp r5, r0
bne _08046DF4
_08046DF0:
movs r4, 0x1
b _08046DF6
_08046DF4:
movs r4, 0x2
_08046DF6:
ldr r0, _08046E6C @ =sub_8046AD0
movs r1, 0x3
bl CreateTask
lsls r0, 24
lsrs r0, 24
ldr r2, _08046E70 @ =gTasks
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
adds r1, r2
movs r2, 0
strh r7, [r1, 0x8]
mov r3, r8
lsls r0, r3, 24
asrs r0, 24
strh r0, [r1, 0xA]
strh r4, [r1, 0xC]
strh r2, [r1, 0x26]
_08046E1C:
ldr r5, _08046E74 @ =gUnknown_02024BE0
movs r1, 0x3A
ldrsh r0, [r6, r1]
adds r0, r5
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
ldr r4, _08046E78 @ =gSprites
adds r0, r4
movs r1, 0x1
bl StartSpriteAffineAnim
movs r3, 0x3A
ldrsh r0, [r6, r3]
adds r0, r5
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r4
bl AnimateSprite
movs r1, 0x3A
ldrsh r0, [r6, r1]
adds r0, r5
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r4
movs r1, 0x80
lsls r1, 5
strh r1, [r0, 0x30]
add sp, 0x4
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08046E6C: .4byte sub_8046AD0
_08046E70: .4byte gTasks
_08046E74: .4byte gUnknown_02024BE0
_08046E78: .4byte gSprites
thumb_func_end sub_8046C78
thumb_func_start sub_8046E7C
sub_8046E7C: @ 8046E7C
adds r3, r0, 0
adds r3, 0x2C
ldrb r1, [r3]
movs r2, 0x40
orrs r1, r2
strb r1, [r3]
ldr r1, _08046E98 @ =sub_8046FBC
str r1, [r0, 0x1C]
movs r1, 0
strh r1, [r0, 0x34]
strh r1, [r0, 0x36]
strh r1, [r0, 0x38]
bx lr
.align 2, 0
_08046E98: .4byte sub_8046FBC
thumb_func_end sub_8046E7C
thumb_func_start sub_8046E9C
sub_8046E9C: @ 8046E9C
push {r4-r7,lr}
adds r5, r0, 0
movs r7, 0
ldrh r0, [r5, 0x3A]
lsls r0, 24
lsrs r4, r0, 24
ldr r6, _08046F00 @ =gSprites
ldr r0, _08046F04 @ =gUnknown_02024BE0
adds r3, r4, r0
ldrb r1, [r3]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r6
adds r0, 0x3E
ldrb r2, [r0]
movs r1, 0x5
negs r1, r1
ands r1, r2
strb r1, [r0]
adds r0, r5, 0
adds r0, 0x3F
ldrb r1, [r0]
movs r0, 0x10
ands r0, r1
cmp r0, 0
beq _08046EDE
adds r2, r5, 0
adds r2, 0x3E
ldrb r0, [r2]
movs r1, 0x4
orrs r0, r1
strb r0, [r2]
_08046EDE:
ldrb r0, [r3]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r6
adds r0, r1, 0
adds r0, 0x3F
ldrb r0, [r0]
lsls r0, 26
cmp r0, 0
bge _08046F08
adds r0, r1, 0
movs r1, 0
bl StartSpriteAffineAnim
movs r7, 0x1
b _08046F24
.align 2, 0
_08046F00: .4byte gSprites
_08046F04: .4byte gUnknown_02024BE0
_08046F08:
ldr r2, _08046FA8 @ =0xfffffee0
adds r0, r2, 0
ldrh r2, [r1, 0x30]
adds r0, r2
strh r0, [r1, 0x30]
ldrb r0, [r3]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r6
ldrh r0, [r1, 0x30]
lsls r0, 16
asrs r0, 24
strh r0, [r1, 0x26]
_08046F24:
adds r0, r5, 0
adds r0, 0x3F
ldrb r1, [r0]
movs r0, 0x10
ands r0, r1
cmp r0, 0
beq _08046FA0
cmp r7, 0
beq _08046FA0
ldr r2, _08046FAC @ =gSprites
ldr r0, _08046FB0 @ =gUnknown_02024BE0
adds r0, r4, r0
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
movs r2, 0
movs r1, 0
strh r1, [r0, 0x26]
ldr r0, _08046FB4 @ =gUnknown_02024E6D
strb r2, [r0]
lsls r1, r4, 1
adds r1, r4
lsls r1, 2
ldr r4, _08046FB8 @ =0x02017810
adds r1, r4
ldrb r2, [r1]
movs r0, 0x9
negs r0, r0
ands r0, r2
strb r0, [r1]
adds r0, r5, 0
bl FreeSpriteOamMatrix
adds r0, r5, 0
bl DestroySprite
movs r3, 0
movs r5, 0x8
adds r2, r4, 0
movs r4, 0x3
_08046F78:
ldrb r1, [r2]
adds r0, r5, 0
ands r0, r1
cmp r0, 0
bne _08046F84
adds r3, 0x1
_08046F84:
adds r2, 0xC
subs r4, 0x1
cmp r4, 0
bge _08046F78
cmp r3, 0x4
bne _08046FA0
movs r4, 0
_08046F92:
lsls r0, r4, 24
lsrs r0, 24
bl sub_804794C
adds r4, 0x1
cmp r4, 0xB
ble _08046F92
_08046FA0:
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08046FA8: .4byte 0xfffffee0
_08046FAC: .4byte gSprites
_08046FB0: .4byte gUnknown_02024BE0
_08046FB4: .4byte gUnknown_02024E6D
_08046FB8: .4byte 0x02017810
thumb_func_end sub_8046E9C
thumb_func_start sub_8046FBC
sub_8046FBC: @ 8046FBC
push {r4-r7,lr}
adds r6, r0, 0
ldrh r0, [r6, 0x3A]
lsls r0, 24
lsrs r7, r0, 24
ldrh r0, [r6, 0x36]
adds r0, 0x1
strh r0, [r6, 0x36]
lsls r0, 16
asrs r1, r0, 16
cmp r1, 0x28
beq _08047056
cmp r1, 0x5F
bne _08046FF4
ldr r0, _08046FEC @ =gUnknown_02024E6D
movs r1, 0
strb r1, [r0]
bl m4aMPlayAllStop
ldr r0, _08046FF0 @ =0x00000173
bl PlaySE
b _08047056
.align 2, 0
_08046FEC: .4byte gUnknown_02024E6D
_08046FF0: .4byte 0x00000173
_08046FF4:
ldr r0, _0804705C @ =0x0000013b
cmp r1, r0
bne _08047056
ldr r5, _08047060 @ =gSprites
ldr r4, _08047064 @ =gUnknown_02024BE0
movs r1, 0x3A
ldrsh r0, [r6, r1]
adds r0, r4
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r5
ldrb r0, [r0, 0x3]
lsls r0, 26
lsrs r0, 27
bl FreeOamMatrix
movs r1, 0x3A
ldrsh r0, [r6, r1]
adds r0, r4
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r5
bl DestroySprite
adds r0, r6, 0
bl DestroySpriteAndFreeResources
ldr r0, _08047068 @ =gMain
ldr r1, _0804706C @ =0x0000043d
adds r0, r1
ldrb r1, [r0]
movs r0, 0x2
ands r0, r1
cmp r0, 0
beq _08047056
lsls r1, r7, 1
adds r1, r7
lsls r1, 2
ldr r0, _08047070 @ =0x02017810
adds r1, r0
ldrb r2, [r1]
movs r0, 0x9
negs r0, r0
ands r0, r2
strb r0, [r1]
_08047056:
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0804705C: .4byte 0x0000013b
_08047060: .4byte gSprites
_08047064: .4byte gUnknown_02024BE0
_08047068: .4byte gMain
_0804706C: .4byte 0x0000043d
_08047070: .4byte 0x02017810
thumb_func_end sub_8046FBC
thumb_func_start sub_8047074
sub_8047074: @ 8047074
push {r4,lr}
adds r4, r0, 0
movs r0, 0x19
strh r0, [r4, 0x2E]
ldrh r0, [r4, 0x3A]
lsls r0, 24
lsrs r0, 24
movs r1, 0x2
bl sub_8077ABC
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x32]
ldrh r0, [r4, 0x3A]
lsls r0, 24
lsrs r0, 24
movs r1, 0x3
bl sub_8077ABC
lsls r0, 24
lsrs r0, 24
adds r0, 0x18
strh r0, [r4, 0x36]
ldr r0, _080470BC @ =0x0000ffe2
strh r0, [r4, 0x38]
ldrh r0, [r4, 0x3A]
strh r0, [r4, 0x6]
adds r0, r4, 0
bl sub_80786EC
ldr r0, _080470C0 @ =sub_80470C4
str r0, [r4, 0x1C]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080470BC: .4byte 0x0000ffe2
_080470C0: .4byte sub_80470C4
thumb_func_end sub_8047074
thumb_func_start sub_80470C4
sub_80470C4: @ 80470C4
push {r4-r7,lr}
mov r7, r8
push {r7}
adds r5, r0, 0
ldrh r0, [r5, 0x3C]
movs r1, 0xFF
mov r8, r1
lsrs r0, 8
subs r0, 0x23
lsls r0, 16
lsrs r0, 16
cmp r0, 0x2C
bhi _080471B8
ldrh r1, [r5, 0x6]
movs r0, 0xFF
lsls r0, 8
ands r0, r1
cmp r0, 0
bne _08047126
ldrh r0, [r5, 0x30]
movs r1, 0x1
adds r6, r1, 0
ands r6, r0
ldrh r0, [r5, 0x32]
adds r7, r1, 0
ands r7, r0
movs r2, 0x30
ldrsh r0, [r5, r2]
movs r1, 0x3
bl __divsi3
movs r1, 0x2
negs r1, r1
adds r4, r1, 0
ands r0, r4
orrs r6, r0
strh r6, [r5, 0x30]
movs r2, 0x32
ldrsh r0, [r5, r2]
movs r1, 0x3
bl __divsi3
ands r0, r4
orrs r7, r0
strh r7, [r5, 0x32]
adds r0, r5, 0
movs r1, 0x4
bl StartSpriteAffineAnim
_08047126:
ldrh r4, [r5, 0x2E]
adds r0, r5, 0
bl sub_8078B5C
movs r1, 0x3A
ldrsh r0, [r5, r1]
movs r1, 0x3
bl __divsi3
adds r1, r0, 0
ldrh r0, [r5, 0x3C]
adds r0, r1
strh r0, [r5, 0x3C]
lsls r0, 16
asrs r0, 24
mov r2, r8
ands r0, r2
movs r2, 0x38
ldrsh r1, [r5, r2]
bl Sin
ldrh r1, [r5, 0x26]
adds r0, r1
strh r0, [r5, 0x26]
movs r2, 0x80
lsls r2, 1
adds r0, r2, 0
ldrh r1, [r5, 0x6]
adds r0, r1
strh r0, [r5, 0x6]
lsls r0, 16
lsrs r0, 24
movs r1, 0x3
bl __umodsi3
lsls r0, 16
cmp r0, 0
beq _08047176
strh r4, [r5, 0x2E]
b _0804717E
_08047176:
lsls r0, r4, 16
asrs r0, 16
subs r0, 0x1
strh r0, [r5, 0x2E]
_0804717E:
ldrh r0, [r5, 0x3C]
lsrs r0, 8
cmp r0, 0x4F
ble _08047220
ldrh r0, [r5, 0x30]
movs r1, 0x1
adds r6, r1, 0
ands r6, r0
ldrh r0, [r5, 0x32]
adds r7, r1, 0
ands r7, r0
movs r2, 0x30
ldrsh r1, [r5, r2]
lsls r0, r1, 1
adds r0, r1
movs r1, 0x2
negs r1, r1
adds r2, r1, 0
ands r0, r2
orrs r0, r6
strh r0, [r5, 0x30]
movs r0, 0x32
ldrsh r1, [r5, r0]
lsls r0, r1, 1
adds r0, r1
ands r0, r2
orrs r0, r7
strh r0, [r5, 0x32]
b _08047220
_080471B8:
adds r0, r5, 0
bl sub_8078718
lsls r0, 24
cmp r0, 0
beq _08047220
ldrh r0, [r5, 0x24]
ldrh r1, [r5, 0x20]
adds r0, r1
movs r1, 0
strh r0, [r5, 0x20]
ldrh r0, [r5, 0x26]
ldrh r2, [r5, 0x22]
adds r0, r2
strh r0, [r5, 0x22]
strh r1, [r5, 0x26]
strh r1, [r5, 0x24]
ldrb r0, [r5, 0x6]
strh r0, [r5, 0x3A]
strh r1, [r5, 0x2E]
bl battle_type_is_double
lsls r0, 24
cmp r0, 0
beq _08047214
ldr r0, _0804720C @ =0x02017840
ldrb r1, [r0, 0x9]
movs r0, 0x1
ands r0, r1
cmp r0, 0
beq _08047214
movs r0, 0x3A
ldrsh r4, [r5, r0]
movs r0, 0x2
bl battle_get_side_with_given_state
lsls r0, 24
lsrs r0, 24
cmp r4, r0
bne _08047214
ldr r0, _08047210 @ =sub_8047230
b _08047216
.align 2, 0
_0804720C: .4byte 0x02017840
_08047210: .4byte sub_8047230
_08047214:
ldr r0, _0804722C @ =sub_8046C78
_08047216:
str r0, [r5, 0x1C]
adds r0, r5, 0
movs r1, 0
bl StartSpriteAffineAnim
_08047220:
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0804722C: .4byte sub_8046C78
thumb_func_end sub_80470C4
thumb_func_start sub_8047230
sub_8047230: @ 8047230
push {lr}
adds r2, r0, 0
ldrh r0, [r2, 0x2E]
adds r1, r0, 0x1
strh r1, [r2, 0x2E]
lsls r0, 16
asrs r0, 16
cmp r0, 0x18
ble _0804724A
movs r0, 0
strh r0, [r2, 0x2E]
ldr r0, _08047250 @ =sub_8046C78
str r0, [r2, 0x1C]
_0804724A:
pop {r0}
bx r0
.align 2, 0
_08047250: .4byte sub_8046C78
thumb_func_end sub_8047230
thumb_func_start sub_8047254
sub_8047254: @ 8047254
push {r4,r5,lr}
adds r5, r0, 0
ldrh r0, [r5, 0x2E]
adds r0, 0x1
strh r0, [r5, 0x2E]
lsls r0, 16
asrs r0, 16
cmp r0, 0xF
ble _080472A4
movs r0, 0
strh r0, [r5, 0x2E]
bl battle_type_is_double
lsls r0, 24
cmp r0, 0
beq _080472A0
ldr r0, _08047298 @ =0x02017840
ldrb r1, [r0, 0x9]
movs r0, 0x1
ands r0, r1
cmp r0, 0
beq _080472A0
movs r0, 0x3A
ldrsh r4, [r5, r0]
movs r0, 0x3
bl battle_get_side_with_given_state
lsls r0, 24
lsrs r0, 24
cmp r4, r0
bne _080472A0
ldr r0, _0804729C @ =sub_8047230
b _080472A2
.align 2, 0
_08047298: .4byte 0x02017840
_0804729C: .4byte sub_8047230
_080472A0:
ldr r0, _080472AC @ =sub_8046C78
_080472A2:
str r0, [r5, 0x1C]
_080472A4:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080472AC: .4byte sub_8046C78
thumb_func_end sub_8047254
thumb_func_start sub_80472B0
sub_80472B0: @ 80472B0
push {r4,lr}
sub sp, 0x4
lsls r0, 24
lsrs r0, 24
lsls r1, 24
lsrs r1, 24
lsls r2, 24
lsrs r2, 24
lsls r3, 24
lsrs r3, 24
movs r4, 0
str r4, [sp]
bl sub_814086C
lsls r0, 24
lsrs r0, 24
add sp, 0x4
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_80472B0
thumb_func_start sub_80472D8
sub_80472D8: @ 80472D8
push {lr}
lsls r0, 24
lsrs r0, 24
lsls r1, 24
lsrs r1, 24
movs r3, 0
bl sub_8141314
lsls r0, 24
lsrs r0, 24
pop {r1}
bx r1
thumb_func_end sub_80472D8
thumb_func_start CreatePokeballSprite
CreatePokeballSprite: @ 80472F0
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x4
adds r5, r0, 0
mov r9, r2
mov r10, r3
ldr r6, [sp, 0x24]
ldr r4, [sp, 0x28]
ldr r0, [sp, 0x2C]
lsls r5, 24
lsrs r5, 24
lsls r1, 24
lsrs r1, 24
str r1, [sp]
mov r1, r9
lsls r1, 24
lsrs r1, 24
mov r9, r1
mov r2, r10
lsls r2, 24
lsrs r2, 24
mov r10, r2
lsls r6, 24
lsrs r6, 24
lsls r4, 24
lsrs r4, 24
lsls r0, 24
lsrs r7, r0, 24
ldr r0, _080473BC @ =gUnknown_0820A92C
bl LoadCompressedObjectPic
ldr r0, _080473C0 @ =gUnknown_0820A98C
bl LoadCompressedObjectPalette
ldr r0, _080473C4 @ =gSpriteTemplate_820AAB4
mov r1, r9
mov r2, r10
adds r3, r4, 0
bl CreateSprite
lsls r0, 24
lsrs r0, 24
ldr r3, _080473C8 @ =gSprites
mov r8, r3
lsls r4, r0, 4
adds r4, r0
lsls r4, 2
adds r1, r4, r3
strh r5, [r1, 0x2E]
lsls r2, r5, 4
adds r2, r5
lsls r2, 2
add r2, r8
ldrh r0, [r2, 0x20]
strh r0, [r1, 0x38]
ldrh r0, [r2, 0x22]
strh r0, [r1, 0x3A]
mov r0, r9
strh r0, [r2, 0x20]
mov r3, r10
strh r3, [r2, 0x22]
strh r7, [r1, 0x30]
mov r0, sp
ldrh r0, [r0]
strh r0, [r1, 0x32]
mov r3, sp
ldrh r3, [r3, 0x30]
strh r3, [r1, 0x34]
ldr r3, [sp, 0x30]
lsrs r0, r3, 16
strh r0, [r1, 0x36]
movs r0, 0x3
ands r6, r0
lsls r6, 2
ldrb r3, [r1, 0x5]
movs r0, 0xD
negs r0, r0
ands r0, r3
orrs r0, r6
strb r0, [r1, 0x5]
movs r0, 0x1C
add r8, r0
add r4, r8
ldr r0, _080473CC @ =sub_80473D0
str r0, [r4]
adds r2, 0x3E
ldrb r0, [r2]
movs r1, 0x4
orrs r0, r1
strb r0, [r2]
add sp, 0x4
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080473BC: .4byte gUnknown_0820A92C
_080473C0: .4byte gUnknown_0820A98C
_080473C4: .4byte gSpriteTemplate_820AAB4
_080473C8: .4byte gSprites
_080473CC: .4byte sub_80473D0
thumb_func_end CreatePokeballSprite
thumb_func_start sub_80473D0
sub_80473D0: @ 80473D0
push {r4-r7,lr}
mov r7, r8
push {r7}
adds r6, r0, 0
ldrh r1, [r6, 0x30]
movs r2, 0x30
ldrsh r0, [r6, r2]
cmp r0, 0
bne _0804747C
ldrh r0, [r6, 0x2E]
lsls r0, 24
lsrs r7, r0, 24
ldrh r0, [r6, 0x32]
lsls r0, 24
lsrs r0, 24
mov r8, r0
ldrh r4, [r6, 0x34]
ldrh r0, [r6, 0x36]
lsls r0, 16
orrs r4, r0
adds r0, r6, 0
adds r0, 0x43
ldrb r0, [r0]
cmp r0, 0
beq _0804740A
subs r0, 0x1
lsls r0, 24
lsrs r5, r0, 24
b _0804740C
_0804740A:
movs r5, 0
_0804740C:
adds r0, r6, 0
movs r1, 0x1
bl StartSpriteAnim
ldrh r0, [r6, 0x20]
lsls r0, 24
lsrs r0, 24
ldrh r1, [r6, 0x22]
subs r1, 0x5
lsls r1, 24
lsrs r1, 24
ldrb r2, [r6, 0x5]
lsls r2, 28
lsrs r2, 30
adds r3, r5, 0
bl sub_80472B0
movs r0, 0x1
mov r1, r8
adds r2, r4, 0
bl sub_80472D8
lsls r0, 24
lsrs r0, 24
movs r5, 0
strh r0, [r6, 0x30]
ldr r0, _08047474 @ =sub_804748C
str r0, [r6, 0x1C]
ldr r0, _08047478 @ =gSprites
lsls r4, r7, 4
adds r4, r7
lsls r4, 2
adds r4, r0
adds r2, r4, 0
adds r2, 0x3E
ldrb r1, [r2]
movs r0, 0x5
negs r0, r0
ands r0, r1
strb r0, [r2]
adds r0, r4, 0
movs r1, 0x1
bl StartSpriteAffineAnim
adds r0, r4, 0
bl AnimateSprite
movs r0, 0x80
lsls r0, 5
strh r0, [r4, 0x30]
strh r5, [r6, 0x3C]
b _08047480
.align 2, 0
_08047474: .4byte sub_804748C
_08047478: .4byte gSprites
_0804747C:
subs r0, r1, 0x1
strh r0, [r6, 0x30]
_08047480:
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_80473D0
thumb_func_start sub_804748C
sub_804748C: @ 804748C
push {r4-r7,lr}
adds r4, r0, 0
movs r0, 0
mov r12, r0
movs r6, 0
ldrh r0, [r4, 0x2E]
lsls r0, 24
lsrs r3, r0, 24
adds r0, r4, 0
adds r0, 0x3F
ldrb r1, [r0]
movs r0, 0x10
ands r0, r1
cmp r0, 0
beq _080474B6
adds r2, r4, 0
adds r2, 0x3E
ldrb r0, [r2]
movs r1, 0x4
orrs r0, r1
strb r0, [r2]
_080474B6:
ldr r0, _08047544 @ =gSprites
lsls r1, r3, 4
adds r1, r3
lsls r1, 2
adds r5, r1, r0
adds r0, r5, 0
adds r0, 0x3F
ldrb r0, [r0]
lsls r0, 26
cmp r0, 0
bge _080474D8
adds r0, r5, 0
movs r1, 0
bl StartSpriteAffineAnim
movs r1, 0x1
mov r12, r1
_080474D8:
movs r2, 0x38
ldrsh r0, [r4, r2]
movs r7, 0x20
ldrsh r1, [r4, r7]
subs r0, r1
movs r1, 0x3C
ldrsh r2, [r4, r1]
muls r0, r2
cmp r0, 0
bge _080474EE
adds r0, 0x7F
_080474EE:
asrs r0, 7
ldrh r7, [r4, 0x20]
adds r0, r7
lsls r0, 16
lsrs r3, r0, 16
movs r1, 0x3A
ldrsh r0, [r4, r1]
movs r7, 0x22
ldrsh r1, [r4, r7]
subs r0, r1
muls r0, r2
cmp r0, 0
bge _0804750A
adds r0, 0x7F
_0804750A:
asrs r0, 7
ldrh r1, [r4, 0x22]
adds r0, r1
strh r3, [r5, 0x20]
strh r0, [r5, 0x22]
ldrh r2, [r4, 0x3C]
movs r7, 0x3C
ldrsh r0, [r4, r7]
cmp r0, 0x7F
bgt _0804754C
ldr r1, _08047548 @ =gSineTable
lsls r0, r2, 24
lsrs r0, 23
adds r0, r1
movs r1, 0
ldrsh r0, [r0, r1]
cmp r0, 0
bge _08047530
adds r0, 0x7
_08047530:
asrs r0, 3
negs r0, r0
lsls r0, 16
lsrs r0, 16
adds r1, r2, 0x4
strh r1, [r4, 0x3C]
strh r0, [r5, 0x24]
strh r0, [r5, 0x26]
b _0804755A
.align 2, 0
_08047544: .4byte gSprites
_08047548: .4byte gSineTable
_0804754C:
ldrh r0, [r4, 0x38]
strh r0, [r5, 0x20]
ldrh r0, [r4, 0x3A]
strh r0, [r5, 0x22]
strh r6, [r5, 0x24]
strh r6, [r5, 0x26]
movs r6, 0x1
_0804755A:
adds r0, r4, 0
adds r0, 0x3F
ldrb r1, [r0]
movs r0, 0x10
ands r0, r1
cmp r0, 0
beq _08047578
mov r2, r12
cmp r2, 0
beq _08047578
cmp r6, 0
beq _08047578
adds r0, r4, 0
bl DestroySpriteAndFreeResources
_08047578:
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_804748C
thumb_func_start sub_8047580
sub_8047580: @ 8047580
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
mov r10, r0
adds r6, r2, 0
mov r8, r3
ldr r5, [sp, 0x20]
ldr r4, [sp, 0x24]
ldr r0, [sp, 0x28]
mov r9, r0
mov r0, r10
lsls r0, 24
lsrs r0, 24
mov r10, r0
lsls r1, 24
lsrs r7, r1, 24
lsls r6, 24
lsrs r6, 24
mov r1, r8
lsls r1, 24
lsrs r1, 24
mov r8, r1
lsls r5, 24
lsrs r5, 24
lsls r4, 24
lsrs r4, 24
mov r0, r9
lsls r0, 24
lsrs r0, 24
mov r9, r0
ldr r0, _08047624 @ =gUnknown_0820A92C
bl LoadCompressedObjectPic
ldr r0, _08047628 @ =gUnknown_0820A98C
bl LoadCompressedObjectPalette
ldr r0, _0804762C @ =gSpriteTemplate_820AAB4
adds r1, r6, 0
mov r2, r8
adds r3, r4, 0
bl CreateSprite
lsls r0, 24
lsrs r0, 24
ldr r6, _08047630 @ =gSprites
lsls r3, r0, 4
adds r3, r0
lsls r3, 2
adds r2, r3, r6
mov r1, r10
strh r1, [r2, 0x2E]
mov r4, r9
strh r4, [r2, 0x30]
strh r7, [r2, 0x32]
mov r1, sp
ldrh r1, [r1, 0x2C]
strh r1, [r2, 0x34]
ldr r4, [sp, 0x2C]
lsrs r1, r4, 16
strh r1, [r2, 0x36]
movs r1, 0x3
ands r5, r1
lsls r5, 2
ldrb r4, [r2, 0x5]
movs r1, 0xD
negs r1, r1
ands r1, r4
orrs r1, r5
strb r1, [r2, 0x5]
adds r6, 0x1C
adds r3, r6
ldr r1, _08047634 @ =sub_8047638
str r1, [r3]
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_08047624: .4byte gUnknown_0820A92C
_08047628: .4byte gUnknown_0820A98C
_0804762C: .4byte gSpriteTemplate_820AAB4
_08047630: .4byte gSprites
_08047634: .4byte sub_8047638
thumb_func_end sub_8047580
thumb_func_start sub_8047638
sub_8047638: @ 8047638
push {r4-r7,lr}
mov r7, r8
push {r7}
adds r4, r0, 0
ldrh r1, [r4, 0x30]
movs r2, 0x30
ldrsh r0, [r4, r2]
cmp r0, 0
bne _080476D0
ldrh r0, [r4, 0x2E]
lsls r0, 24
lsrs r7, r0, 24
ldrh r0, [r4, 0x32]
lsls r0, 24
lsrs r0, 24
mov r8, r0
ldrh r5, [r4, 0x34]
ldrh r0, [r4, 0x36]
lsls r0, 16
orrs r5, r0
adds r0, r4, 0
adds r0, 0x43
ldrb r0, [r0]
cmp r0, 0
beq _08047672
subs r0, 0x1
lsls r0, 24
lsrs r6, r0, 24
b _08047674
_08047672:
movs r6, 0
_08047674:
adds r0, r4, 0
movs r1, 0x1
bl StartSpriteAnim
ldrh r0, [r4, 0x20]
lsls r0, 24
lsrs r0, 24
ldrh r1, [r4, 0x22]
subs r1, 0x5
lsls r1, 24
lsrs r1, 24
ldrb r2, [r4, 0x5]
lsls r2, 28
lsrs r2, 30
adds r3, r6, 0
bl sub_80472B0
movs r0, 0x1
mov r1, r8
adds r2, r5, 0
bl sub_80472D8
lsls r0, 24
lsrs r0, 24
movs r5, 0
strh r0, [r4, 0x30]
ldr r0, _080476C8 @ =sub_80476E0
str r0, [r4, 0x1C]
lsls r4, r7, 4
adds r4, r7
lsls r4, 2
ldr r0, _080476CC @ =gSprites
adds r4, r0
adds r0, r4, 0
movs r1, 0x2
bl StartSpriteAffineAnim
adds r0, r4, 0
bl AnimateSprite
strh r5, [r4, 0x30]
b _080476D4
.align 2, 0
_080476C8: .4byte sub_80476E0
_080476CC: .4byte gSprites
_080476D0:
subs r0, r1, 0x1
strh r0, [r4, 0x30]
_080476D4:
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_8047638
thumb_func_start sub_80476E0
sub_80476E0: @ 80476E0
push {r4,r5,lr}
adds r5, r0, 0
ldrh r0, [r5, 0x38]
adds r0, 0x1
strh r0, [r5, 0x38]
lsls r0, 16
asrs r0, 16
cmp r0, 0xB
bne _080476F8
movs r0, 0x3C
bl PlaySE
_080476F8:
ldrh r1, [r5, 0x2E]
lsls r1, 24
lsrs r1, 24
ldr r2, _08047734 @ =gSprites
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r4, r0, r2
adds r0, r4, 0
adds r0, 0x3F
ldrb r0, [r0]
lsls r0, 26
cmp r0, 0
bge _0804773C
adds r0, r5, 0
movs r1, 0x2
bl StartSpriteAnim
adds r2, r4, 0
adds r2, 0x3E
ldrb r0, [r2]
movs r1, 0x4
orrs r0, r1
strb r0, [r2]
movs r0, 0
strh r0, [r5, 0x38]
ldr r0, _08047738 @ =sub_8047754
str r0, [r5, 0x1C]
b _0804774C
.align 2, 0
_08047734: .4byte gSprites
_08047738: .4byte sub_8047754
_0804773C:
ldrh r0, [r4, 0x30]
adds r0, 0x60
strh r0, [r4, 0x30]
movs r1, 0x30
ldrsh r0, [r4, r1]
negs r0, r0
asrs r0, 8
strh r0, [r4, 0x26]
_0804774C:
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_80476E0
thumb_func_start sub_8047754
sub_8047754: @ 8047754
push {lr}
adds r2, r0, 0
adds r0, 0x3F
ldrb r1, [r0]
movs r0, 0x10
ands r0, r1
cmp r0, 0
beq _08047768
ldr r0, _0804776C @ =SpriteCallbackDummy
str r0, [r2, 0x1C]
_08047768:
pop {r0}
bx r0
.align 2, 0
_0804776C: .4byte SpriteCallbackDummy
thumb_func_end sub_8047754
thumb_func_start obj_delete_and_free_associated_resources_
obj_delete_and_free_associated_resources_: @ 8047770
push {lr}
bl DestroySpriteAndFreeResources
pop {r0}
bx r0
thumb_func_end obj_delete_and_free_associated_resources_
thumb_func_start sub_804777C
sub_804777C: @ 804777C
push {r4-r6,lr}
lsls r0, 24
lsrs r0, 24
adds r5, r0, 0
ldr r0, _080477FC @ =gUnknown_03004340
adds r0, r5, r0
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
ldr r6, _08047800 @ =gSprites
adds r4, r0, r6
movs r1, 0
movs r0, 0x5
strh r0, [r4, 0x2E]
strh r1, [r4, 0x30]
movs r0, 0x73
strh r0, [r4, 0x24]
strh r1, [r4, 0x26]
ldr r0, _08047804 @ =sub_8047830
str r0, [r4, 0x1C]
adds r0, r5, 0
bl battle_side_get_owner
lsls r0, 24
cmp r0, 0
beq _080477CA
ldrh r0, [r4, 0x2E]
negs r0, r0
strh r0, [r4, 0x2E]
ldrh r0, [r4, 0x30]
negs r0, r0
strh r0, [r4, 0x30]
ldrh r0, [r4, 0x24]
negs r0, r0
strh r0, [r4, 0x24]
ldrh r0, [r4, 0x26]
negs r0, r0
strh r0, [r4, 0x26]
_080477CA:
movs r0, 0x38
ldrsh r1, [r4, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r1, r6, 0
adds r1, 0x1C
adds r1, r0, r1
adds r0, r6
ldr r1, [r1]
bl _call_via_r1
adds r0, r5, 0
bl battle_get_per_side_status
lsls r0, 24
lsrs r0, 24
cmp r0, 0x2
bne _080477F4
ldr r0, _08047808 @ =sub_804780C
str r0, [r4, 0x1C]
_080477F4:
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080477FC: .4byte gUnknown_03004340
_08047800: .4byte gSprites
_08047804: .4byte sub_8047830
_08047808: .4byte sub_804780C
thumb_func_end sub_804777C
thumb_func_start sub_804780C
sub_804780C: @ 804780C
push {lr}
adds r1, r0, 0
ldrh r0, [r1, 0x30]
adds r0, 0x1
strh r0, [r1, 0x30]
lsls r0, 16
asrs r0, 16
cmp r0, 0x14
bne _08047826
movs r0, 0
strh r0, [r1, 0x30]
ldr r0, _0804782C @ =sub_8047830
str r0, [r1, 0x1C]
_08047826:
pop {r0}
bx r0
.align 2, 0
_0804782C: .4byte sub_8047830
thumb_func_end sub_804780C
thumb_func_start sub_8047830
sub_8047830: @ 8047830
push {lr}
adds r2, r0, 0
ldrh r0, [r2, 0x24]
ldrh r1, [r2, 0x2E]
subs r0, r1
strh r0, [r2, 0x24]
ldrh r0, [r2, 0x26]
ldrh r1, [r2, 0x30]
subs r0, r1
strh r0, [r2, 0x26]
ldr r0, [r2, 0x24]
cmp r0, 0
bne _0804784E
ldr r0, _08047854 @ =SpriteCallbackDummy
str r0, [r2, 0x1C]
_0804784E:
pop {r0}
bx r0
.align 2, 0
_08047854: .4byte SpriteCallbackDummy
thumb_func_end sub_8047830
thumb_func_start sub_8047858
sub_8047858: @ 8047858
push {r4,r5,lr}
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
ldr r5, _08047890 @ =oamc_804BEB4
adds r0, r5, 0
bl object_new_hidden_with_callback
lsls r0, 24
lsrs r0, 24
ldr r2, _08047894 @ =gSprites
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r3, r1, r2
movs r0, 0x1
strh r0, [r3, 0x2E]
ldr r0, _08047898 @ =gUnknown_03004340
adds r4, r0
ldrb r0, [r4]
strh r0, [r3, 0x30]
adds r2, 0x1C
adds r1, r2
str r5, [r1]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_08047890: .4byte oamc_804BEB4
_08047894: .4byte gSprites
_08047898: .4byte gUnknown_03004340
thumb_func_end sub_8047858
thumb_func_start oamc_804BEB4
oamc_804BEB4: @ 804789C
push {lr}
adds r3, r0, 0
ldrh r1, [r3, 0x30]
lsls r1, 24
lsrs r1, 24
ldr r2, _080478D8 @ =gSprites
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r1, r0, r2
ldrh r0, [r3, 0x2E]
movs r2, 0
strh r0, [r1, 0x26]
ldrh r0, [r3, 0x2E]
negs r0, r0
strh r0, [r3, 0x2E]
ldrh r0, [r3, 0x32]
adds r0, 0x1
strh r0, [r3, 0x32]
lsls r0, 16
asrs r0, 16
cmp r0, 0x15
bne _080478D4
strh r2, [r1, 0x24]
strh r2, [r1, 0x26]
adds r0, r3, 0
bl DestroySprite
_080478D4:
pop {r0}
bx r0
.align 2, 0
_080478D8: .4byte gSprites
thumb_func_end oamc_804BEB4
thumb_func_start sub_80478DC
sub_80478DC: @ 80478DC
push {r4-r6,lr}
lsls r0, 24
lsrs r4, r0, 24
ldr r0, _08047938 @ =gUnknown_0820A92C
lsls r6, r4, 3
adds r5, r6, r0
ldrh r0, [r5, 0x6]
bl GetSpriteTileStartByTag
lsls r0, 16
ldr r1, _0804793C @ =0xffff0000
cmp r0, r1
bne _08047904
adds r0, r5, 0
bl LoadCompressedObjectPic
ldr r0, _08047940 @ =gUnknown_0820A98C
adds r0, r6, r0
bl LoadCompressedObjectPalette
_08047904:
cmp r4, 0x6
beq _08047930
cmp r4, 0x6
blt _08047914
cmp r4, 0xB
bgt _08047914
cmp r4, 0xA
bge _08047930
_08047914:
ldr r1, _08047938 @ =gUnknown_0820A92C
lsls r0, r4, 3
adds r0, r1
ldrh r0, [r0, 0x6]
bl GetSpriteTileStartByTag
adds r1, r0, 0
lsls r1, 16
ldr r0, _08047944 @ =gUnknown_08D030D0
lsrs r1, 11
ldr r2, _08047948 @ =0x06010100
adds r1, r2
bl LZDecompressVram
_08047930:
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_08047938: .4byte gUnknown_0820A92C
_0804793C: .4byte 0xffff0000
_08047940: .4byte gUnknown_0820A98C
_08047944: .4byte gUnknown_08D030D0
_08047948: .4byte 0x06010100
thumb_func_end sub_80478DC
thumb_func_start sub_804794C
sub_804794C: @ 804794C
push {r4,lr}
adds r4, r0, 0
lsls r4, 24
ldr r0, _08047970 @ =gUnknown_0820A92C
lsrs r4, 21
adds r0, r4, r0
ldrh r0, [r0, 0x6]
bl FreeSpriteTilesByTag
ldr r0, _08047974 @ =gUnknown_0820A98C
adds r4, r0
ldrh r0, [r4, 0x4]
bl FreeSpritePaletteByTag
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08047970: .4byte gUnknown_0820A92C
_08047974: .4byte gUnknown_0820A98C
thumb_func_end sub_804794C
thumb_func_start sub_8047978
sub_8047978: @ 8047978
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
adds r0, r4, 0
bl battle_side_get_owner
lsls r0, 24
cmp r0, 0
beq _080479A4
ldr r1, _0804799C @ =gUnknown_02024A6A
lsls r0, r4, 1
adds r0, r1
ldrh r1, [r0]
movs r0, 0x64
muls r0, r1
ldr r1, _080479A0 @ =gEnemyParty
b _080479B2
.align 2, 0
_0804799C: .4byte gUnknown_02024A6A
_080479A0: .4byte gEnemyParty
_080479A4:
ldr r1, _080479C4 @ =gUnknown_02024A6A
lsls r0, r4, 1
adds r0, r1
ldrh r1, [r0]
movs r0, 0x64
muls r0, r1
ldr r1, _080479C8 @ =gPlayerParty
_080479B2:
adds r0, r1
movs r1, 0x26
bl GetMonData
lsls r0, 16
lsrs r0, 16
pop {r4}
pop {r1}
bx r1
.align 2, 0
_080479C4: .4byte gUnknown_02024A6A
_080479C8: .4byte gPlayerParty
thumb_func_end sub_8047978
.align 2, 0 @ Don't pad with nop.