Files
pokeruby/asm/rom_804373C.s
T
2017-01-02 01:26:00 -08:00

5501 lines
87 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 IsDoubleBattle
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 IsDoubleBattle
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 IsDoubleBattle
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 IsDoubleBattle
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 IsDoubleBattle
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 IsDoubleBattle
lsls r0, 24
cmp r0, 0
bne _080445FA
b _080447D4
_080445FA:
ldr r0, _08044684 @ =gBattleTypeFlags
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 gBattleTypeFlags
_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 @ =gBattleTypeFlags
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 gBattleTypeFlags
_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 @ =gBattleTypeFlags
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 gBattleTypeFlags
_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 IsDoubleBattle
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 @ =gBattleTypeFlags
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 gBattleTypeFlags
_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 @ =gBattleTypeFlags
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 gBattleTypeFlags
_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 IsDoubleBattle
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 @ =gBattleTypeFlags
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 gBattleTypeFlags
_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 IsDoubleBattle
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 IsDoubleBattle
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 @ =gNumSafariBalls
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 gNumSafariBalls
_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 IsDoubleBattle
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 GetScaledExpFraction
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 GetScaledExpFraction
GetScaledExpFraction: @ 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 GetScaledExpFraction
thumb_func_start GetScaledHPFraction
GetScaledHPFraction: @ 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 GetScaledHPFraction
thumb_func_start GetHPBarLevel
GetHPBarLevel: @ 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 GetScaledHPFraction
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 GetHPBarLevel
.align 2, 0 @ Don't pad with nop.