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