summaryrefslogtreecommitdiff
path: root/asm/battle_interface.s
diff options
context:
space:
mode:
Diffstat (limited to 'asm/battle_interface.s')
-rw-r--r--asm/battle_interface.s5500
1 files changed, 5500 insertions, 0 deletions
diff --git a/asm/battle_interface.s b/asm/battle_interface.s
new file mode 100644
index 000000000..b84342e18
--- /dev/null
+++ b/asm/battle_interface.s
@@ -0,0 +1,5500 @@
+ .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.