diff options
author | ProjectRevoTPP <projectrevotpp@hotmail.com> | 2017-04-07 04:21:07 +0100 |
---|---|---|
committer | YamaArashi <YamaArashi@users.noreply.github.com> | 2017-04-06 23:50:08 -0700 |
commit | f081eb66f69d054b48abb2cafeff2bfad8b16859 (patch) | |
tree | 299d2a02e4653c91cf73538b3dd0b2c892f721b0 /asm/battle_interface.s | |
parent | 969a309c6a952735ecd1590c1771a51d0587fc06 (diff) |
battle_interface.s
Diffstat (limited to 'asm/battle_interface.s')
-rw-r--r-- | asm/battle_interface.s | 5500 |
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. |