.include "constants/gba_constants.inc" .include "include/macros.inc" .syntax unified .text @ normal thumb_func_start sub_80E1CB4 sub_80E1CB4: @ 80E1CB4 push {r4,r5,lr} adds r4, r0, 0 ldr r5, _080E1CEC @ =gBattleAnimArgs ldrh r0, [r5] ldrh r1, [r4, 0x20] adds r0, r1 strh r0, [r4, 0x20] ldrh r0, [r5, 0x2] ldrh r1, [r4, 0x22] adds r0, r1 strh r0, [r4, 0x22] ldrh r0, [r5, 0x4] strh r0, [r4, 0x2E] ldr r0, _080E1CF0 @ =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 lsrs r1, r0, 24 cmp r1, 0 beq _080E1CF4 ldrh r0, [r5, 0x6] negs r0, r0 strh r0, [r4, 0x30] movs r0, 0x1 strh r0, [r4, 0x36] b _080E1D02 .align 2, 0 _080E1CEC: .4byte gBattleAnimArgs _080E1CF0: .4byte gAnimBankAttacker _080E1CF4: ldrh r0, [r5, 0x6] strh r0, [r4, 0x30] strh r1, [r4, 0x36] adds r0, r4, 0 movs r1, 0x1 bl StartSpriteAnim _080E1D02: ldr r0, _080E1D18 @ =gBattleAnimArgs ldrh r0, [r0, 0x8] strh r0, [r4, 0x34] ldr r1, _080E1D1C @ =sub_80E1D20 str r1, [r4, 0x1C] adds r0, r4, 0 bl _call_via_r1 pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080E1D18: .4byte gBattleAnimArgs _080E1D1C: .4byte sub_80E1D20 thumb_func_end sub_80E1CB4 thumb_func_start sub_80E1D20 sub_80E1D20: @ 80E1D20 push {r4,lr} adds r4, r0, 0 movs r1, 0x2E ldrsh r0, [r4, r1] movs r1, 0x1E bl Cos strh r0, [r4, 0x24] movs r2, 0x2E ldrsh r0, [r4, r2] movs r1, 0xA bl Sin strh r0, [r4, 0x26] ldrh r0, [r4, 0x2E] cmp r0, 0x7F bhi _080E1D52 ldrb r0, [r4, 0x5] movs r1, 0xD negs r1, r1 ands r1, r0 movs r0, 0x4 orrs r1, r0 strb r1, [r4, 0x5] b _080E1D5A _080E1D52: ldrb r0, [r4, 0x5] movs r1, 0xC orrs r0, r1 strb r0, [r4, 0x5] _080E1D5A: ldrh r0, [r4, 0x30] ldrh r1, [r4, 0x2E] adds r0, r1 movs r1, 0xFF ands r0, r1 strh r0, [r4, 0x2E] ldrh r0, [r4, 0x32] adds r0, 0x1 strh r0, [r4, 0x32] lsls r0, 16 asrs r0, 16 movs r2, 0x34 ldrsh r1, [r4, r2] cmp r0, r1 bne _080E1D7E adds r0, r4, 0 bl DestroyAnimSprite _080E1D7E: pop {r4} pop {r0} bx r0 thumb_func_end sub_80E1D20 thumb_func_start sub_80E1D84 sub_80E1D84: @ 80E1D84 push {r4,r5,lr} sub sp, 0x4 adds r5, r0, 0 ldr r4, _080E1DBC @ =gBattleAnimArgs movs r1, 0 ldrsh r0, [r4, r1] bl sub_80E1DC4 movs r1, 0x2 ldrsb r1, [r4, r1] ldrb r2, [r4, 0x4] ldrb r3, [r4, 0x6] ldrh r4, [r4, 0x8] str r4, [sp] bl BeginNormalPaletteFade adds r2, r5, 0 adds r2, 0x3E ldrb r0, [r2] movs r1, 0x4 orrs r0, r1 strb r0, [r2] ldr r0, _080E1DC0 @ =sub_80E1E0C str r0, [r5, 0x1C] add sp, 0x4 pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080E1DBC: .4byte gBattleAnimArgs _080E1DC0: .4byte sub_80E1E0C thumb_func_end sub_80E1D84 thumb_func_start sub_80E1DC4 sub_80E1DC4: @ 80E1DC4 push {r4-r6,lr} mov r6, r8 push {r6} sub sp, 0xC lsls r0, 16 lsrs r0, 16 movs r4, 0x1 mov r8, r0 mov r1, r8 ands r1, r4 mov r8, r1 lsls r0, 16 asrs r1, r0, 17 ands r1, r4 asrs r2, r0, 18 ands r2, r4 asrs r3, r0, 19 ands r3, r4 asrs r6, r0, 20 ands r6, r4 asrs r5, r0, 21 ands r5, r4 asrs r0, 22 ands r0, r4 str r6, [sp] str r5, [sp, 0x4] str r0, [sp, 0x8] mov r0, r8 bl sub_80791A8 add sp, 0xC pop {r3} mov r8, r3 pop {r4-r6} pop {r1} bx r1 thumb_func_end sub_80E1DC4 thumb_func_start sub_80E1E0C sub_80E1E0C: @ 80E1E0C push {lr} adds r2, r0, 0 ldr r0, _080E1E28 @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 bne _080E1E22 adds r0, r2, 0 bl DestroyAnimSprite _080E1E22: pop {r0} bx r0 .align 2, 0 _080E1E28: .4byte gPaletteFade thumb_func_end sub_80E1E0C thumb_func_start sub_80E1E2C sub_80E1E2C: @ 80E1E2C push {r4,r5,lr} adds r5, r0, 0 ldr r4, _080E1E78 @ =gBattleAnimArgs ldrh r0, [r4, 0x2] strh r0, [r5, 0x2E] strh r0, [r5, 0x30] ldrh r0, [r4, 0x4] strh r0, [r5, 0x32] ldrh r0, [r4, 0x6] strh r0, [r5, 0x34] ldrh r0, [r4, 0x8] strh r0, [r5, 0x36] ldrh r0, [r4, 0xA] strh r0, [r5, 0x38] ldrh r0, [r4, 0xC] strh r0, [r5, 0x3A] ldrh r0, [r4] strh r0, [r5, 0x3C] movs r1, 0x3C ldrsh r0, [r5, r1] bl sub_80E1DC4 ldrb r1, [r4, 0x8] ldrh r2, [r4, 0x6] bl BlendPalettes adds r2, r5, 0 adds r2, 0x3E ldrb r0, [r2] movs r1, 0x4 orrs r0, r1 strb r0, [r2] ldr r0, _080E1E7C @ =sub_80E1E80 str r0, [r5, 0x1C] pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080E1E78: .4byte gBattleAnimArgs _080E1E7C: .4byte sub_80E1E80 thumb_func_end sub_80E1E2C thumb_func_start sub_80E1E80 sub_80E1E80: @ 80E1E80 push {r4,lr} adds r4, r0, 0 ldrh r1, [r4, 0x2E] movs r2, 0x2E ldrsh r0, [r4, r2] cmp r0, 0 ble _080E1E94 subs r0, r1, 0x1 strh r0, [r4, 0x2E] b _080E1F04 _080E1E94: ldr r0, _080E1EB0 @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 bne _080E1F04 movs r1, 0x32 ldrsh r0, [r4, r1] cmp r0, 0 bne _080E1EB8 ldr r0, _080E1EB4 @ =sub_80E1F0C str r0, [r4, 0x1C] b _080E1F04 .align 2, 0 _080E1EB0: .4byte gPaletteFade _080E1EB4: .4byte sub_80E1F0C _080E1EB8: movs r2, 0x3C ldrsh r0, [r4, r2] bl sub_80E1DC4 adds r3, r0, 0 ldrh r1, [r4, 0x30] movs r0, 0x80 lsls r0, 1 ands r0, r1 cmp r0, 0 beq _080E1EDE ldrh r1, [r4, 0x36] lsls r1, 24 lsrs r1, 24 ldrh r2, [r4, 0x34] adds r0, r3, 0 bl BlendPalettes b _080E1EEC _080E1EDE: ldrh r1, [r4, 0x3A] lsls r1, 24 lsrs r1, 24 ldrh r2, [r4, 0x38] adds r0, r3, 0 bl BlendPalettes _080E1EEC: ldrh r0, [r4, 0x30] movs r2, 0x80 lsls r2, 1 adds r1, r2, 0 eors r0, r1 strh r0, [r4, 0x30] movs r1, 0xFF ands r0, r1 strh r0, [r4, 0x2E] ldrh r0, [r4, 0x32] subs r0, 0x1 strh r0, [r4, 0x32] _080E1F04: pop {r4} pop {r0} bx r0 thumb_func_end sub_80E1E80 thumb_func_start sub_80E1F0C sub_80E1F0C: @ 80E1F0C push {r4,lr} adds r4, r0, 0 ldr r0, _080E1F38 @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 bne _080E1F32 movs r1, 0x3C ldrsh r0, [r4, r1] bl sub_80E1DC4 movs r1, 0 movs r2, 0 bl BlendPalettes adds r0, r4, 0 bl DestroyAnimSprite _080E1F32: pop {r4} pop {r0} bx r0 .align 2, 0 _080E1F38: .4byte gPaletteFade thumb_func_end sub_80E1F0C thumb_func_start sub_80E1F3C sub_80E1F3C: @ 80E1F3C push {r4,lr} adds r4, r0, 0 ldr r1, _080E1F80 @ =gBattleAnimArgs ldrh r0, [r1] ldrh r2, [r4, 0x20] adds r0, r2 movs r2, 0 strh r0, [r4, 0x20] ldrh r0, [r1, 0x2] ldrh r1, [r4, 0x22] adds r0, r1 strh r0, [r4, 0x22] strh r2, [r4, 0x2E] movs r0, 0xA strh r0, [r4, 0x30] movs r0, 0x8 strh r0, [r4, 0x32] movs r0, 0x28 strh r0, [r4, 0x34] movs r0, 0x70 strh r0, [r4, 0x36] strh r2, [r4, 0x38] ldr r1, _080E1F84 @ =move_anim_8074EE0 adds r0, r4, 0 bl StoreSpriteCallbackInData ldr r1, _080E1F88 @ =sub_8078174 str r1, [r4, 0x1C] adds r0, r4, 0 bl _call_via_r1 pop {r4} pop {r0} bx r0 .align 2, 0 _080E1F80: .4byte gBattleAnimArgs _080E1F84: .4byte move_anim_8074EE0 _080E1F88: .4byte sub_8078174 thumb_func_end sub_80E1F3C thumb_func_start sub_80E1F8C sub_80E1F8C: @ 80E1F8C push {r4,r5,lr} lsls r0, 24 lsrs r0, 24 ldr r1, _080E1FD0 @ =gTasks lsls r4, r0, 2 adds r4, r0 lsls r4, 3 adds r4, r1 ldr r3, _080E1FD4 @ =gBattleAnimArgs ldrh r1, [r3] movs r5, 0 strh r1, [r4, 0x8] ldrh r1, [r3, 0x2] strh r1, [r4, 0xA] ldrh r1, [r3, 0x4] strh r1, [r4, 0xC] ldrh r1, [r3, 0x6] strh r1, [r4, 0xE] ldrh r2, [r3, 0x8] strh r2, [r4, 0x10] ldrh r1, [r3, 0xA] strh r1, [r4, 0x12] strh r5, [r4, 0x18] lsls r2, 24 lsrs r2, 24 movs r1, 0 bl sub_80E1FDC ldr r0, _080E1FD8 @ =sub_80E202C str r0, [r4] pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080E1FD0: .4byte gTasks _080E1FD4: .4byte gBattleAnimArgs _080E1FD8: .4byte sub_80E202C thumb_func_end sub_80E1F8C thumb_func_start sub_80E1FDC sub_80E1FDC: @ 80E1FDC push {r4-r6,lr} sub sp, 0x4 adds r5, r1, 0 adds r6, r2, 0 lsls r0, 24 lsrs r0, 24 lsls r5, 24 lsrs r5, 24 lsls r6, 24 lsrs r6, 24 ldr r1, _080E2028 @ =gTasks lsls r4, r0, 2 adds r4, r0 lsls r4, 3 adds r4, r1 movs r1, 0x8 ldrsh r0, [r4, r1] bl sub_80E1DC4 movs r1, 0xA ldrsb r1, [r4, r1] ldrh r2, [r4, 0x12] str r2, [sp] adds r2, r5, 0 adds r3, r6, 0 bl BeginNormalPaletteFade ldrh r0, [r4, 0xC] subs r0, 0x1 strh r0, [r4, 0xC] ldrh r0, [r4, 0x18] movs r1, 0x1 eors r0, r1 strh r0, [r4, 0x18] add sp, 0x4 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080E2028: .4byte gTasks thumb_func_end sub_80E1FDC thumb_func_start sub_80E202C sub_80E202C: @ 80E202C push {r4-r6,lr} lsls r0, 24 lsrs r3, r0, 24 adds r4, r3, 0 ldr r0, _080E2064 @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 bne _080E208E ldr r1, _080E2068 @ =gTasks lsls r2, r3, 2 adds r0, r2, r3 lsls r0, 3 adds r3, r0, r1 movs r5, 0xC ldrsh r0, [r3, r5] adds r6, r1, 0 adds r5, r2, 0 cmp r0, 0 ble _080E2088 movs r1, 0x18 ldrsh r0, [r3, r1] cmp r0, 0 bne _080E206C ldrb r1, [r3, 0xE] ldrb r2, [r3, 0x10] b _080E2070 .align 2, 0 _080E2064: .4byte gPaletteFade _080E2068: .4byte gTasks _080E206C: ldrb r1, [r3, 0x10] ldrb r2, [r3, 0xE] _080E2070: adds r0, r5, r4 lsls r0, 3 adds r0, r6 movs r3, 0xC ldrsh r0, [r0, r3] cmp r0, 0x1 bne _080E2080 movs r2, 0 _080E2080: adds r0, r4, 0 bl sub_80E1FDC b _080E208E _080E2088: adds r0, r4, 0 bl DestroyAnimVisualTask _080E208E: pop {r4-r6} pop {r0} bx r0 thumb_func_end sub_80E202C thumb_func_start sub_80E2094 sub_80E2094: @ 80E2094 push {r4,r5,lr} lsls r0, 24 lsrs r0, 24 ldr r1, _080E20D8 @ =gTasks lsls r4, r0, 2 adds r4, r0 lsls r4, 3 adds r4, r1 ldr r3, _080E20DC @ =gBattleAnimArgs ldrh r1, [r3] movs r5, 0 strh r1, [r4, 0x8] ldrh r1, [r3, 0x2] strh r1, [r4, 0xA] ldrh r1, [r3, 0x4] strh r1, [r4, 0xC] ldrh r1, [r3, 0x6] strh r1, [r4, 0xE] ldrh r2, [r3, 0x8] strh r2, [r4, 0x10] ldrh r1, [r3, 0xA] strh r1, [r4, 0x12] strh r5, [r4, 0x18] lsls r2, 24 lsrs r2, 24 movs r1, 0 bl sub_80E20E4 ldr r0, _080E20E0 @ =sub_80E2140 str r0, [r4] pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080E20D8: .4byte gTasks _080E20DC: .4byte gBattleAnimArgs _080E20E0: .4byte sub_80E2140 thumb_func_end sub_80E2094 thumb_func_start sub_80E20E4 sub_80E20E4: @ 80E20E4 push {r4-r6,lr} sub sp, 0x4 adds r5, r1, 0 adds r6, r2, 0 lsls r0, 24 lsrs r0, 24 lsls r5, 24 lsrs r5, 24 lsls r6, 24 lsrs r6, 24 ldr r1, _080E213C @ =gTasks lsls r4, r0, 2 adds r4, r0 lsls r4, 3 adds r4, r1 ldrh r0, [r4, 0x8] bl IndexOfSpritePaletteTag lsls r0, 24 lsrs r0, 24 adds r0, 0x10 movs r2, 0x1 lsls r2, r0 movs r1, 0xA ldrsb r1, [r4, r1] ldrh r0, [r4, 0x12] str r0, [sp] adds r0, r2, 0 adds r2, r5, 0 adds r3, r6, 0 bl BeginNormalPaletteFade ldrh r0, [r4, 0xC] subs r0, 0x1 strh r0, [r4, 0xC] ldrh r0, [r4, 0x18] movs r1, 0x1 eors r0, r1 strh r0, [r4, 0x18] add sp, 0x4 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080E213C: .4byte gTasks thumb_func_end sub_80E20E4 thumb_func_start sub_80E2140 sub_80E2140: @ 80E2140 push {r4-r6,lr} lsls r0, 24 lsrs r3, r0, 24 adds r4, r3, 0 ldr r0, _080E2178 @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 bne _080E21A2 ldr r1, _080E217C @ =gTasks lsls r2, r3, 2 adds r0, r2, r3 lsls r0, 3 adds r3, r0, r1 movs r5, 0xC ldrsh r0, [r3, r5] adds r6, r1, 0 adds r5, r2, 0 cmp r0, 0 ble _080E219C movs r1, 0x18 ldrsh r0, [r3, r1] cmp r0, 0 bne _080E2180 ldrb r1, [r3, 0xE] ldrb r2, [r3, 0x10] b _080E2184 .align 2, 0 _080E2178: .4byte gPaletteFade _080E217C: .4byte gTasks _080E2180: ldrb r1, [r3, 0x10] ldrb r2, [r3, 0xE] _080E2184: adds r0, r5, r4 lsls r0, 3 adds r0, r6 movs r3, 0xC ldrsh r0, [r0, r3] cmp r0, 0x1 bne _080E2194 movs r2, 0 _080E2194: adds r0, r4, 0 bl sub_80E20E4 b _080E21A2 _080E219C: adds r0, r4, 0 bl DestroyAnimVisualTask _080E21A2: pop {r4-r6} pop {r0} bx r0 thumb_func_end sub_80E2140 thumb_func_start sub_80E21A8 sub_80E21A8: @ 80E21A8 push {r4,r5,lr} sub sp, 0x4 lsls r0, 24 lsrs r0, 24 ldr r1, _080E2208 @ =gTasks lsls r4, r0, 2 adds r4, r0 lsls r4, 3 adds r4, r1 ldr r5, _080E220C @ =gBattleAnimArgs ldrh r0, [r5, 0x2] strh r0, [r4, 0x8] ldrh r0, [r5, 0x2] strh r0, [r4, 0xA] ldrh r0, [r5, 0x4] strh r0, [r4, 0xC] ldrh r0, [r5, 0x6] strh r0, [r4, 0xE] ldrh r0, [r5, 0x8] strh r0, [r4, 0x10] ldrh r0, [r5, 0xA] strh r0, [r4, 0x12] ldrh r0, [r5, 0xC] strh r0, [r4, 0x14] ldrh r0, [r5] strh r0, [r4, 0x16] ldrh r0, [r5] bl IndexOfSpritePaletteTag lsls r0, 24 lsrs r0, 24 adds r0, 0x10 movs r1, 0x1 lsls r1, r0 ldrb r3, [r5, 0x8] ldrh r0, [r5, 0x6] str r0, [sp] adds r0, r1, 0 movs r1, 0 adds r2, r3, 0 bl BeginNormalPaletteFade ldr r0, _080E2210 @ =sub_80E2214 str r0, [r4] add sp, 0x4 pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080E2208: .4byte gTasks _080E220C: .4byte gBattleAnimArgs _080E2210: .4byte sub_80E2214 thumb_func_end sub_80E21A8 thumb_func_start sub_80E2214 sub_80E2214: @ 80E2214 push {r4,r5,lr} sub sp, 0x4 lsls r0, 24 lsrs r5, r0, 24 ldr r1, _080E2238 @ =gTasks lsls r0, r5, 2 adds r0, r5 lsls r0, 3 adds r4, r0, r1 ldrh r1, [r4, 0x8] movs r2, 0x8 ldrsh r0, [r4, r2] cmp r0, 0 ble _080E223C subs r0, r1, 0x1 strh r0, [r4, 0x8] b _080E22C0 .align 2, 0 _080E2238: .4byte gTasks _080E223C: ldr r0, _080E2258 @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 bne _080E22C0 movs r3, 0xC ldrsh r0, [r4, r3] cmp r0, 0 bne _080E2260 ldr r0, _080E225C @ =sub_80E22CC str r0, [r4] b _080E22C0 .align 2, 0 _080E2258: .4byte gPaletteFade _080E225C: .4byte sub_80E22CC _080E2260: ldrh r0, [r4, 0x16] bl IndexOfSpritePaletteTag lsls r0, 24 lsrs r0, 24 adds r0, 0x10 movs r2, 0x1 lsls r2, r0 ldrh r1, [r4, 0xA] movs r0, 0x80 lsls r0, 1 ands r0, r1 cmp r0, 0 beq _080E228E ldrb r3, [r4, 0x10] ldrh r0, [r4, 0xE] str r0, [sp] adds r0, r2, 0 movs r1, 0 adds r2, r3, 0 bl BeginNormalPaletteFade b _080E229E _080E228E: ldrb r3, [r4, 0x14] ldrh r0, [r4, 0x12] str r0, [sp] adds r0, r2, 0 movs r1, 0 adds r2, r3, 0 bl BeginNormalPaletteFade _080E229E: ldr r0, _080E22C8 @ =gTasks lsls r1, r5, 2 adds r1, r5 lsls r1, 3 adds r1, r0 ldrh r0, [r1, 0xA] movs r3, 0x80 lsls r3, 1 adds r2, r3, 0 eors r0, r2 strh r0, [r1, 0xA] movs r2, 0xFF ands r0, r2 strh r0, [r1, 0x8] ldrh r0, [r1, 0xC] subs r0, 0x1 strh r0, [r1, 0xC] _080E22C0: add sp, 0x4 pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080E22C8: .4byte gTasks thumb_func_end sub_80E2214 thumb_func_start sub_80E22CC sub_80E22CC: @ 80E22CC push {r4,r5,lr} sub sp, 0x4 lsls r0, 24 lsrs r4, r0, 24 ldr r0, _080E231C @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 lsls r0, 24 lsrs r5, r0, 24 cmp r5, 0 bne _080E2312 ldr r1, _080E2320 @ =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 ldrh r0, [r0, 0x16] bl IndexOfSpritePaletteTag lsls r0, 24 lsrs r0, 24 adds r0, 0x10 movs r1, 0x1 lsls r1, r0 str r5, [sp] adds r0, r1, 0 movs r1, 0 movs r2, 0 movs r3, 0 bl BeginNormalPaletteFade adds r0, r4, 0 bl DestroyAnimVisualTask _080E2312: add sp, 0x4 pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080E231C: .4byte gPaletteFade _080E2320: .4byte gTasks thumb_func_end sub_80E22CC thumb_func_start sub_80E2324 sub_80E2324: @ 80E2324 push {r4-r7,lr} mov r7, r8 push {r7} sub sp, 0xC lsls r0, 24 lsrs r0, 24 mov r8, r0 movs r2, 0 ldr r0, _080E239C @ =gAnimBankAttacker ldrb r6, [r0] ldr r0, _080E23A0 @ =gAnimBankTarget ldrb r7, [r0] ldr r4, _080E23A4 @ =gBattleAnimArgs ldrh r1, [r4] movs r5, 0x80 lsls r5, 1 adds r0, r5, 0 ands r0, r1 cmp r0, 0 beq _080E235E str r2, [sp] str r2, [sp, 0x4] str r2, [sp, 0x8] movs r0, 0x1 movs r1, 0 movs r3, 0 bl sub_80791A8 adds r2, r0, 0 _080E235E: ldrh r1, [r4, 0x2] adds r0, r5, 0 ands r0, r1 cmp r0, 0 beq _080E2370 movs r0, 0x80 lsls r0, 9 lsls r0, r6 orrs r2, r0 _080E2370: ldrh r1, [r4, 0x4] adds r0, r5, 0 ands r0, r1 cmp r0, 0 beq _080E2382 movs r0, 0x80 lsls r0, 9 lsls r0, r7 orrs r2, r0 _080E2382: adds r0, r2, 0 bl InvertPlttBuffer mov r0, r8 bl DestroyAnimVisualTask add sp, 0xC pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080E239C: .4byte gAnimBankAttacker _080E23A0: .4byte gAnimBankTarget _080E23A4: .4byte gBattleAnimArgs thumb_func_end sub_80E2324 thumb_func_start unref_sub_80E23A8 unref_sub_80E23A8: @ 80E23A8 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} lsls r0, 24 lsrs r0, 24 mov r8, r0 movs r5, 0 ldr r1, _080E249C @ =gTasks lsls r0, 2 add r0, r8 lsls r0, 3 adds r4, r0, r1 movs r1, 0x8 ldrsh r0, [r4, r1] cmp r0, 0 bne _080E23EA ldr r1, _080E24A0 @ =gBattleAnimArgs ldrh r0, [r1] strh r0, [r4, 0xC] ldrh r0, [r1, 0x2] strh r0, [r4, 0xE] ldrh r0, [r1, 0x4] strh r0, [r4, 0x10] ldrh r0, [r1, 0x6] strh r0, [r4, 0xA] ldrh r0, [r1, 0x8] strh r0, [r4, 0x12] ldrh r0, [r1, 0xA] strh r0, [r4, 0x14] ldrh r0, [r1, 0xC] strh r0, [r4, 0x16] _080E23EA: ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] ldr r0, _080E24A4 @ =gAnimBankAttacker ldrb r0, [r0] mov r9, r0 ldr r0, _080E24A8 @ =gAnimBankTarget ldrb r0, [r0] mov r10, r0 ldrh r1, [r4, 0xC] movs r7, 0x80 lsls r7, 1 adds r0, r7, 0 ands r0, r1 cmp r0, 0 beq _080E240C ldr r5, _080E24AC @ =0x0000ffff _080E240C: movs r6, 0x1 adds r0, r6, 0 ands r0, r1 cmp r0, 0 beq _080E243C ldr r2, _080E24B0 @ =gSprites ldr r0, _080E24B4 @ =gHealthboxIDs add r0, r9 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r2, 0x14 adds r0, r2 ldr r0, [r0] ldrh r0, [r0, 0x2] bl IndexOfSpritePaletteTag lsls r0, 24 lsrs r0, 24 adds r1, r6, 0 lsls r1, r0 lsls r1, 16 orrs r5, r1 _080E243C: ldrh r1, [r4, 0xE] adds r0, r7, 0 ands r0, r1 cmp r0, 0 beq _080E2450 adds r0, r6, 0 mov r2, r9 lsls r0, r2 lsls r0, 16 orrs r5, r0 _080E2450: ldrh r1, [r4, 0x10] adds r0, r7, 0 ands r0, r1 cmp r0, 0 beq _080E2464 adds r0, r6, 0 mov r1, r10 lsls r0, r1 lsls r0, 16 orrs r5, r0 _080E2464: movs r1, 0x12 ldrsb r1, [r4, r1] movs r2, 0x14 ldrsb r2, [r4, r2] movs r3, 0x16 ldrsb r3, [r4, r3] adds r0, r5, 0 bl TintPlttBuffer movs r2, 0x8 ldrsh r1, [r4, r2] movs r2, 0xA ldrsh r0, [r4, r2] cmp r1, r0 bne _080E248E adds r0, r5, 0 bl UnfadePlttBuffer mov r0, r8 bl DestroyAnimVisualTask _080E248E: pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080E249C: .4byte gTasks _080E24A0: .4byte gBattleAnimArgs _080E24A4: .4byte gAnimBankAttacker _080E24A8: .4byte gAnimBankTarget _080E24AC: .4byte 0x0000ffff _080E24B0: .4byte gSprites _080E24B4: .4byte gHealthboxIDs thumb_func_end unref_sub_80E23A8 thumb_func_start sub_80E24B8 sub_80E24B8: @ 80E24B8 push {r4,lr} adds r4, r0, 0 adds r2, r4, 0 adds r2, 0x3E ldrb r0, [r2] movs r1, 0x4 orrs r0, r1 strb r0, [r2] ldr r1, _080E24EC @ =gBattleAnimArgs ldrh r0, [r1] negs r0, r0 strh r0, [r4, 0x2E] ldrh r0, [r1, 0x2] strh r0, [r4, 0x30] strh r0, [r4, 0x32] ldrh r0, [r1, 0x4] strh r0, [r4, 0x34] movs r2, 0x6 ldrsh r0, [r1, r2] cmp r0, 0x1 beq _080E2500 cmp r0, 0x1 bgt _080E24F0 cmp r0, 0 beq _080E24F6 b _080E2518 .align 2, 0 _080E24EC: .4byte gBattleAnimArgs _080E24F0: cmp r0, 0x2 beq _080E2508 b _080E2518 _080E24F6: ldr r1, _080E24FC @ =gBattle_BG3_X b _080E250A .align 2, 0 _080E24FC: .4byte gBattle_BG3_X _080E2500: ldr r1, _080E2504 @ =gBattle_BG3_Y b _080E250A .align 2, 0 _080E2504: .4byte gBattle_BG3_Y _080E2508: ldr r1, _080E2514 @ =gSpriteCoordOffsetX _080E250A: adds r0, r4, 0 bl StoreSpriteCallbackInData b _080E2520 .align 2, 0 _080E2514: .4byte gSpriteCoordOffsetX _080E2518: ldr r1, _080E2550 @ =gSpriteCoordOffsetY adds r0, r4, 0 bl StoreSpriteCallbackInData _080E2520: movs r0, 0x3A ldrsh r1, [r4, r0] movs r2, 0x3C ldrsh r0, [r4, r2] lsls r0, 16 orrs r1, r0 ldr r0, [r1] strh r0, [r4, 0x36] ldr r0, _080E2554 @ =gBattleAnimArgs ldrh r0, [r0, 0x6] strh r0, [r4, 0x38] subs r0, 0x2 lsls r0, 16 lsrs r0, 16 cmp r0, 0x1 bhi _080E2544 bl sub_80E260C _080E2544: ldr r0, _080E2558 @ =sub_80E255C str r0, [r4, 0x1C] pop {r4} pop {r0} bx r0 .align 2, 0 _080E2550: .4byte gSpriteCoordOffsetY _080E2554: .4byte gBattleAnimArgs _080E2558: .4byte sub_80E255C thumb_func_end sub_80E24B8 thumb_func_start sub_80E255C sub_80E255C: @ 80E255C push {r4-r7,lr} adds r3, r0, 0 ldrh r1, [r3, 0x34] movs r2, 0x34 ldrsh r0, [r3, r2] cmp r0, 0 ble _080E25A0 subs r0, r1, 0x1 strh r0, [r3, 0x34] ldrh r1, [r3, 0x30] movs r2, 0x30 ldrsh r0, [r3, r2] cmp r0, 0 ble _080E257E subs r0, r1, 0x1 strh r0, [r3, 0x30] b _080E25FA _080E257E: ldrh r0, [r3, 0x32] strh r0, [r3, 0x30] movs r0, 0x3A ldrsh r1, [r3, r0] movs r2, 0x3C ldrsh r0, [r3, r2] lsls r0, 16 orrs r1, r0 movs r0, 0x2E ldrsh r2, [r3, r0] ldr r0, [r1] adds r0, r2 str r0, [r1] ldrh r0, [r3, 0x2E] negs r0, r0 strh r0, [r3, 0x2E] b _080E25FA _080E25A0: movs r2, 0x3A ldrsh r1, [r3, r2] movs r2, 0x3C ldrsh r0, [r3, r2] lsls r0, 16 orrs r1, r0 movs r2, 0x36 ldrsh r0, [r3, r2] str r0, [r1] ldrh r0, [r3, 0x38] subs r0, 0x2 lsls r0, 16 lsrs r0, 16 cmp r0, 0x1 bhi _080E25F4 movs r4, 0 ldr r5, _080E2600 @ =gNoOfAllBanks ldrb r0, [r5] cmp r4, r0 bcs _080E25F4 ldr r2, _080E2604 @ =gSprites mov r12, r2 ldr r6, _080E2608 @ =gObjectBankIDs movs r7, 0x3 negs r7, r7 _080E25D2: adds r0, r4, r6 ldrb r0, [r0] lsls r1, r0, 4 adds r1, r0 lsls r1, 2 add r1, r12 adds r1, 0x3E ldrb r2, [r1] adds r0, r7, 0 ands r0, r2 strb r0, [r1] adds r0, r4, 0x1 lsls r0, 24 lsrs r4, r0, 24 ldrb r0, [r5] cmp r4, r0 bcc _080E25D2 _080E25F4: adds r0, r3, 0 bl DestroyAnimSprite _080E25FA: pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080E2600: .4byte gNoOfAllBanks _080E2604: .4byte gSprites _080E2608: .4byte gObjectBankIDs thumb_func_end sub_80E255C thumb_func_start sub_80E260C sub_80E260C: @ 80E260C push {r4-r6,lr} ldr r6, _080E2680 @ =gSprites ldr r4, _080E2684 @ =gObjectBankIDs ldr r5, _080E2688 @ =gAnimBankAttacker ldrb r0, [r5] adds r0, r4 ldrb r0, [r0] lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r1, r6 adds r1, 0x3E ldrb r3, [r1] movs r2, 0x3 negs r2, r2 adds r0, r2, 0 ands r0, r3 strb r0, [r1] ldr r3, _080E268C @ =gAnimBankTarget ldrb r0, [r3] adds r0, r4 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r6 adds r0, 0x3E ldrb r1, [r0] ands r2, r1 strb r2, [r0] ldr r0, _080E2690 @ =gBattleAnimArgs movs r1, 0x8 ldrsh r0, [r0, r1] cmp r0, 0x2 bne _080E2694 ldrb r0, [r5] adds r0, r4 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r6 adds r0, 0x3E ldrb r1, [r0] movs r2, 0x2 orrs r1, r2 strb r1, [r0] ldrb r0, [r3] adds r0, r4 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r6 adds r0, 0x3E ldrb r1, [r0] b _080E26B0 .align 2, 0 _080E2680: .4byte gSprites _080E2684: .4byte gObjectBankIDs _080E2688: .4byte gAnimBankAttacker _080E268C: .4byte gAnimBankTarget _080E2690: .4byte gBattleAnimArgs _080E2694: cmp r0, 0 bne _080E269C ldrb r0, [r5] b _080E269E _080E269C: ldrb r0, [r3] _080E269E: adds r0, r4 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r6 adds r0, 0x3E ldrb r1, [r0] movs r2, 0x2 _080E26B0: orrs r1, r2 strb r1, [r0] pop {r4-r6} pop {r0} bx r0 thumb_func_end sub_80E260C thumb_func_start sub_80E26BC sub_80E26BC: @ 80E26BC push {r4,lr} lsls r0, 24 lsrs r0, 24 ldr r1, _080E26FC @ =gTasks lsls r2, r0, 2 adds r2, r0 lsls r2, 3 adds r2, r1 ldr r3, _080E2700 @ =gBattleAnimArgs ldrh r1, [r3] strh r1, [r2, 0x8] ldrh r1, [r3, 0x2] strh r1, [r2, 0xA] ldrh r1, [r3, 0x4] strh r1, [r2, 0xC] ldrh r1, [r3, 0x6] strh r1, [r2, 0xE] ldrh r1, [r3, 0x6] strh r1, [r2, 0x18] ldr r4, _080E2704 @ =gBattle_BG3_X ldrh r1, [r3] strh r1, [r4] ldr r4, _080E2708 @ =gBattle_BG3_Y ldrh r1, [r3, 0x2] strh r1, [r4] ldr r1, _080E270C @ =sub_80E2710 str r1, [r2] bl _call_via_r1 pop {r4} pop {r0} bx r0 .align 2, 0 _080E26FC: .4byte gTasks _080E2700: .4byte gBattleAnimArgs _080E2704: .4byte gBattle_BG3_X _080E2708: .4byte gBattle_BG3_Y _080E270C: .4byte sub_80E2710 thumb_func_end sub_80E26BC thumb_func_start sub_80E2710 sub_80E2710: @ 80E2710 push {r4-r7,lr} lsls r0, 24 lsrs r5, r0, 24 ldr r1, _080E2740 @ =gTasks lsls r0, r5, 2 adds r0, r5 lsls r0, 3 adds r3, r0, r1 ldrh r2, [r3, 0xE] movs r4, 0xE ldrsh r0, [r3, r4] mov r12, r1 cmp r0, 0 bne _080E2796 ldr r0, _080E2744 @ =gBattle_BG3_X ldrh r2, [r0] movs r7, 0x8 ldrsh r1, [r3, r7] adds r6, r0, 0 cmp r2, r1 bne _080E2748 ldrh r0, [r3, 0x8] negs r0, r0 b _080E274A .align 2, 0 _080E2740: .4byte gTasks _080E2744: .4byte gBattle_BG3_X _080E2748: ldrh r0, [r3, 0x8] _080E274A: strh r0, [r6] ldr r2, _080E2768 @ =gBattle_BG3_Y ldrh r3, [r2] lsls r1, r5, 2 adds r0, r1, r5 lsls r0, 3 mov r7, r12 adds r4, r0, r7 movs r7, 0xA ldrsh r0, [r4, r7] cmn r3, r0 bne _080E276C movs r0, 0 b _080E2770 .align 2, 0 _080E2768: .4byte gBattle_BG3_Y _080E276C: ldrh r0, [r4, 0xA] negs r0, r0 _080E2770: strh r0, [r2] adds r0, r1, r5 lsls r0, 3 add r0, r12 ldrh r1, [r0, 0x18] strh r1, [r0, 0xE] ldrh r1, [r0, 0xC] subs r1, 0x1 strh r1, [r0, 0xC] lsls r1, 16 asrs r1, 16 cmp r1, 0 bne _080E279A strh r1, [r6] strh r1, [r2] adds r0, r5, 0 bl DestroyAnimVisualTask b _080E279A _080E2796: subs r0, r2, 0x1 strh r0, [r3, 0xE] _080E279A: pop {r4-r7} pop {r0} bx r0 thumb_func_end sub_80E2710 thumb_func_start sub_80E27A0 sub_80E27A0: @ 80E27A0 push {r4,r5,lr} adds r5, r0, 0 ldr r4, _080E27C0 @ =gBattleAnimArgs ldrb r1, [r4, 0x6] bl StartSpriteAffineAnim movs r1, 0x4 ldrsh r0, [r4, r1] cmp r0, 0 bne _080E27C4 adds r0, r5, 0 movs r1, 0x1 bl sub_80787B0 b _080E27CC .align 2, 0 _080E27C0: .4byte gBattleAnimArgs _080E27C4: adds r0, r5, 0 movs r1, 0x1 bl sub_8078764 _080E27CC: ldr r0, _080E27E0 @ =sub_80785E4 str r0, [r5, 0x1C] ldr r1, _080E27E4 @ =DestroyAnimSprite adds r0, r5, 0 bl StoreSpriteCallbackInData pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080E27E0: .4byte sub_80785E4 _080E27E4: .4byte DestroyAnimSprite thumb_func_end sub_80E27A0 thumb_func_start sub_80E27E8 sub_80E27E8: @ 80E27E8 push {r4,r5,lr} adds r5, r0, 0 ldr r4, _080E2808 @ =gBattleAnimArgs ldrb r1, [r4, 0x6] bl StartSpriteAffineAnim movs r1, 0x4 ldrsh r0, [r4, r1] cmp r0, 0 bne _080E280C adds r0, r5, 0 movs r1, 0x1 bl sub_80787B0 b _080E2814 .align 2, 0 _080E2808: .4byte gBattleAnimArgs _080E280C: adds r0, r5, 0 movs r1, 0x1 bl sub_8078764 _080E2814: ldr r0, _080E282C @ =gBattleAnimArgs ldrh r0, [r0, 0x8] strh r0, [r5, 0x2E] ldr r0, _080E2830 @ =sub_80785E4 str r0, [r5, 0x1C] ldr r1, _080E2834 @ =sub_80DA48C adds r0, r5, 0 bl StoreSpriteCallbackInData pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080E282C: .4byte gBattleAnimArgs _080E2830: .4byte sub_80785E4 _080E2834: .4byte sub_80DA48C thumb_func_end sub_80E27E8 thumb_func_start sub_80E2838 sub_80E2838: @ 80E2838 push {r4,lr} adds r4, r0, 0 ldr r0, _080E2868 @ =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 cmp r0, 0 beq _080E285C bl IsContest lsls r0, 24 cmp r0, 0 bne _080E285C ldr r1, _080E286C @ =gBattleAnimArgs ldrh r0, [r1, 0x2] negs r0, r0 strh r0, [r1, 0x2] _080E285C: adds r0, r4, 0 bl sub_80E27A0 pop {r4} pop {r0} bx r0 .align 2, 0 _080E2868: .4byte gAnimBankAttacker _080E286C: .4byte gBattleAnimArgs thumb_func_end sub_80E2838 thumb_func_start sub_80E2870 sub_80E2870: @ 80E2870 push {r4,r5,lr} adds r4, r0, 0 ldr r5, _080E28A8 @ =gBattleAnimArgs movs r0, 0x2 ldrsh r1, [r5, r0] movs r0, 0x1 negs r0, r0 cmp r1, r0 bne _080E288C bl Random movs r1, 0x3 ands r1, r0 strh r1, [r5, 0x2] _080E288C: ldrb r1, [r5, 0x2] adds r0, r4, 0 bl StartSpriteAffineAnim movs r1, 0 ldrsh r0, [r5, r1] cmp r0, 0 bne _080E28AC adds r0, r4, 0 movs r1, 0 bl sub_80787B0 b _080E28B4 .align 2, 0 _080E28A8: .4byte gBattleAnimArgs _080E28AC: adds r0, r4, 0 movs r1, 0 bl sub_8078764 _080E28B4: bl Random lsls r0, 16 lsrs r0, 16 movs r1, 0x30 bl __umodsi3 ldr r1, _080E28F8 @ =0x0000ffe8 adds r0, r1 ldrh r1, [r4, 0x24] adds r0, r1 strh r0, [r4, 0x24] bl Random lsls r0, 16 lsrs r0, 16 movs r1, 0x18 bl __umodsi3 ldr r1, _080E28FC @ =0x0000fff4 adds r0, r1 ldrh r1, [r4, 0x26] adds r0, r1 strh r0, [r4, 0x26] ldr r1, _080E2900 @ =move_anim_8074EE0 adds r0, r4, 0 bl StoreSpriteCallbackInData ldr r0, _080E2904 @ =sub_80785E4 str r0, [r4, 0x1C] pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080E28F8: .4byte 0x0000ffe8 _080E28FC: .4byte 0x0000fff4 _080E2900: .4byte move_anim_8074EE0 _080E2904: .4byte sub_80785E4 thumb_func_end sub_80E2870 thumb_func_start sub_80E2908 sub_80E2908: @ 80E2908 push {r4,r5,lr} adds r4, r0, 0 ldr r5, _080E2968 @ =gBattleAnimArgs ldrb r0, [r5] bl GetAnimBankSpriteId lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x2E] ldr r2, _080E296C @ =gSprites movs r0, 0x2E ldrsh r1, [r4, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 ldrh r1, [r0, 0x24] ldrh r0, [r0, 0x20] adds r1, r0 strh r1, [r4, 0x20] movs r0, 0x2E ldrsh r1, [r4, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 ldrh r1, [r0, 0x26] ldrh r0, [r0, 0x22] adds r1, r0 strh r1, [r4, 0x22] ldrh r0, [r5, 0x2] strh r0, [r4, 0x24] ldrh r0, [r5, 0x4] strh r0, [r4, 0x26] ldrb r1, [r5, 0x6] adds r0, r4, 0 bl StartSpriteAffineAnim ldr r1, _080E2970 @ =move_anim_8074EE0 adds r0, r4, 0 bl StoreSpriteCallbackInData ldr r0, _080E2974 @ =sub_80785E4 str r0, [r4, 0x1C] pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080E2968: .4byte gBattleAnimArgs _080E296C: .4byte gSprites _080E2970: .4byte move_anim_8074EE0 _080E2974: .4byte sub_80785E4 thumb_func_end sub_80E2908 thumb_func_start sub_80E2978 sub_80E2978: @ 80E2978 push {r4,lr} adds r4, r0, 0 ldr r0, _080E2990 @ =gBattleAnimArgs movs r1, 0x4 ldrsh r0, [r0, r1] cmp r0, 0 bne _080E2994 adds r0, r4, 0 movs r1, 0x1 bl sub_80787B0 b _080E299C .align 2, 0 _080E2990: .4byte gBattleAnimArgs _080E2994: adds r0, r4, 0 movs r1, 0x1 bl sub_8078764 _080E299C: ldr r0, _080E29B4 @ =gBattleAnimArgs ldrh r0, [r0, 0x6] strh r0, [r4, 0x2E] ldr r1, _080E29B8 @ =DestroyAnimSprite adds r0, r4, 0 bl StoreSpriteCallbackInData ldr r0, _080E29BC @ =sub_80782D8 str r0, [r4, 0x1C] pop {r4} pop {r0} bx r0 .align 2, 0 _080E29B4: .4byte gBattleAnimArgs _080E29B8: .4byte DestroyAnimSprite _080E29BC: .4byte sub_80782D8 thumb_func_end sub_80E2978 thumb_func_start sub_80E29C0 sub_80E29C0: @ 80E29C0 push {r4,r5,lr} adds r5, r0, 0 ldr r4, _080E29E0 @ =gBattleAnimArgs ldrb r1, [r4, 0x6] bl StartSpriteAffineAnim movs r1, 0x4 ldrsh r0, [r4, r1] cmp r0, 0 bne _080E29E4 adds r0, r5, 0 movs r1, 0x1 bl sub_80787B0 b _080E29EC .align 2, 0 _080E29E0: .4byte gBattleAnimArgs _080E29E4: adds r0, r5, 0 movs r1, 0x1 bl sub_8078764 _080E29EC: ldr r0, _080E29F8 @ =sub_80E29FC str r0, [r5, 0x1C] pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080E29F8: .4byte sub_80E29FC thumb_func_end sub_80E29C0 thumb_func_start sub_80E29FC sub_80E29FC: @ 80E29FC push {lr} adds r3, r0, 0 movs r0, 0x3E adds r0, r3 mov r12, r0 ldrb r2, [r0] lsls r0, r2, 29 lsrs r0, 31 movs r1, 0x1 eors r1, r0 lsls r1, 2 movs r0, 0x5 negs r0, r0 ands r0, r2 orrs r0, r1 mov r1, r12 strb r0, [r1] ldrh r0, [r3, 0x2E] adds r1, r0, 0x1 strh r1, [r3, 0x2E] lsls r0, 16 asrs r0, 16 cmp r0, 0xC ble _080E2A32 adds r0, r3, 0 bl DestroyAnimSprite _080E2A32: pop {r0} bx r0 thumb_func_end sub_80E29FC thumb_func_start sub_80E2A38 sub_80E2A38: @ 80E2A38 push {r4-r6,lr} adds r5, r0, 0 lsls r5, 24 lsrs r5, 24 ldr r4, _080E2A78 @ =gBattleAnimArgs movs r1, 0 ldrsh r0, [r4, r1] bl sub_80E1DC4 adds r6, r0, 0 ldrh r3, [r4] lsls r3, 16 asrs r0, r3, 23 movs r4, 0x1 ands r0, r4 asrs r1, r3, 24 ands r1, r4 asrs r2, r3, 25 ands r2, r4 asrs r3, 26 ands r3, r4 bl sub_80792C0 orrs r6, r0 adds r0, r5, 0 adds r1, r6, 0 bl sub_80E2C8C pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080E2A78: .4byte gBattleAnimArgs thumb_func_end sub_80E2A38 thumb_func_start sub_80E2A7C sub_80E2A7C: @ 80E2A7C push {r4-r7,lr} sub sp, 0x4 lsls r0, 24 lsrs r7, r0, 24 mov r1, sp movs r0, 0xFF strb r0, [r1, 0x1] movs r0, 0x1 bl sub_80E1DC4 adds r5, r0, 0 ldr r0, _080E2AA8 @ =gBattleAnimArgs movs r1, 0 ldrsh r0, [r0, r1] cmp r0, 0x7 bhi _080E2B26 lsls r0, 2 ldr r1, _080E2AAC @ =_080E2AB0 adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _080E2AA8: .4byte gBattleAnimArgs _080E2AAC: .4byte _080E2AB0 .align 2, 0 _080E2AB0: .4byte _080E2AD2 .4byte _080E2ADE .4byte _080E2AD0 .4byte _080E2ADC .4byte _080E2AEC .4byte _080E2B04 .4byte _080E2B0C .4byte _080E2B18 _080E2AD0: movs r5, 0 _080E2AD2: mov r0, sp ldr r1, _080E2AD8 @ =gAnimBankAttacker b _080E2AE2 .align 2, 0 _080E2AD8: .4byte gAnimBankAttacker _080E2ADC: movs r5, 0 _080E2ADE: mov r0, sp ldr r1, _080E2AE8 @ =gAnimBankTarget _080E2AE2: ldrb r1, [r1] strb r1, [r0] b _080E2B26 .align 2, 0 _080E2AE8: .4byte gAnimBankTarget _080E2AEC: mov r1, sp ldr r0, _080E2AFC @ =gAnimBankAttacker ldrb r0, [r0] strb r0, [r1] ldr r0, _080E2B00 @ =gAnimBankTarget ldrb r0, [r0] strb r0, [r1, 0x1] b _080E2B26 .align 2, 0 _080E2AFC: .4byte gAnimBankAttacker _080E2B00: .4byte gAnimBankTarget _080E2B04: mov r1, sp movs r0, 0xFF strb r0, [r1] b _080E2B26 _080E2B0C: movs r5, 0 mov r2, sp ldr r0, _080E2B14 @ =gAnimBankAttacker b _080E2B1E .align 2, 0 _080E2B14: .4byte gAnimBankAttacker _080E2B18: movs r5, 0 mov r2, sp ldr r0, _080E2B70 @ =gAnimBankTarget _080E2B1E: ldrb r0, [r0] movs r1, 0x2 eors r0, r1 strb r0, [r2] _080E2B26: movs r4, 0 mov r6, sp _080E2B2A: ldrb r0, [r6] cmp r4, r0 beq _080E2B54 ldrb r0, [r6, 0x1] cmp r4, r0 beq _080E2B54 adds r0, r4, 0 bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _080E2B54 adds r0, r4, 0 bl sub_80793A8 lsls r0, 24 lsrs r0, 24 movs r1, 0x80 lsls r1, 9 lsls r1, r0 orrs r5, r1 _080E2B54: adds r0, r4, 0x1 lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0x3 bls _080E2B2A adds r0, r7, 0 adds r1, r5, 0 bl sub_80E2C8C add sp, 0x4 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080E2B70: .4byte gAnimBankTarget thumb_func_end sub_80E2A7C thumb_func_start sub_80E2B74 sub_80E2B74: @ 80E2B74 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 ldr r0, _080E2B98 @ =gBattleAnimArgs movs r1, 0 ldrsh r0, [r0, r1] bl sub_80E1DC4 adds r2, r0, 0 ldr r0, _080E2B9C @ =gBattleTerrain ldrb r0, [r0] cmp r0, 0x9 bhi _080E2C4A lsls r0, 2 ldr r1, _080E2BA0 @ =_080E2BA4 adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _080E2B98: .4byte gBattleAnimArgs _080E2B9C: .4byte gBattleTerrain _080E2BA0: .4byte _080E2BA4 .align 2, 0 _080E2BA4: .4byte _080E2BCC .4byte _080E2BDC .4byte _080E2BE8 .4byte _080E2BF8 .4byte _080E2C04 .4byte _080E2C14 .4byte _080E2C24 .4byte _080E2C34 .4byte _080E2C44 .4byte _080E2C44 _080E2BCC: ldr r1, _080E2BD4 @ =gBattleAnimArgs ldr r0, _080E2BD8 @ =0x00000b0c b _080E2C48 .align 2, 0 _080E2BD4: .4byte gBattleAnimArgs _080E2BD8: .4byte 0x00000b0c _080E2BDC: ldr r1, _080E2BE4 @ =gBattleAnimArgs movs r0, 0x9E lsls r0, 4 b _080E2C48 .align 2, 0 _080E2BE4: .4byte gBattleAnimArgs _080E2BE8: ldr r1, _080E2BF0 @ =gBattleAnimArgs ldr r0, _080E2BF4 @ =0x00002f1e b _080E2C48 .align 2, 0 _080E2BF0: .4byte gBattleAnimArgs _080E2BF4: .4byte 0x00002f1e _080E2BF8: ldr r1, _080E2C00 @ =gBattleAnimArgs movs r0, 0x90 lsls r0, 7 b _080E2C48 .align 2, 0 _080E2C00: .4byte gBattleAnimArgs _080E2C04: ldr r1, _080E2C0C @ =gBattleAnimArgs ldr r0, _080E2C10 @ =0x00007ecb b _080E2C48 .align 2, 0 _080E2C0C: .4byte gBattleAnimArgs _080E2C10: .4byte 0x00007ecb _080E2C14: ldr r1, _080E2C1C @ =gBattleAnimArgs ldr r0, _080E2C20 @ =0x00007ecb b _080E2C48 .align 2, 0 _080E2C1C: .4byte gBattleAnimArgs _080E2C20: .4byte 0x00007ecb _080E2C24: ldr r1, _080E2C2C @ =gBattleAnimArgs ldr r0, _080E2C30 @ =0x00002a16 b _080E2C48 .align 2, 0 _080E2C2C: .4byte gBattleAnimArgs _080E2C30: .4byte 0x00002a16 _080E2C34: ldr r1, _080E2C3C @ =gBattleAnimArgs ldr r0, _080E2C40 @ =0x00000d2e b _080E2C48 .align 2, 0 _080E2C3C: .4byte gBattleAnimArgs _080E2C40: .4byte 0x00000d2e _080E2C44: ldr r1, _080E2C58 @ =gBattleAnimArgs ldr r0, _080E2C5C @ =0x00007fff _080E2C48: strh r0, [r1, 0x8] _080E2C4A: adds r0, r4, 0 adds r1, r2, 0 bl sub_80E2C8C pop {r4} pop {r0} bx r0 .align 2, 0 _080E2C58: .4byte gBattleAnimArgs _080E2C5C: .4byte 0x00007fff thumb_func_end sub_80E2B74 thumb_func_start sub_80E2C60 sub_80E2C60: @ 80E2C60 push {r4,lr} adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 ldr r0, _080E2C88 @ =gBattleAnimArgs ldrh r0, [r0] bl IndexOfSpritePaletteTag lsls r0, 24 lsrs r0, 24 adds r0, 0x10 movs r1, 0x1 lsls r1, r0 adds r0, r4, 0 bl sub_80E2C8C pop {r4} pop {r0} bx r0 .align 2, 0 _080E2C88: .4byte gBattleAnimArgs thumb_func_end sub_80E2C60 thumb_func_start sub_80E2C8C sub_80E2C8C: @ 80E2C8C push {lr} lsls r0, 24 lsrs r0, 24 ldr r3, _080E2CC4 @ =gTasks lsls r2, r0, 2 adds r2, r0 lsls r2, 3 adds r2, r3 strh r1, [r2, 0x8] lsrs r1, 16 strh r1, [r2, 0xA] ldr r3, _080E2CC8 @ =gBattleAnimArgs ldrh r1, [r3, 0x2] strh r1, [r2, 0xC] ldrh r1, [r3, 0x4] strh r1, [r2, 0xE] ldrh r1, [r3, 0x6] strh r1, [r2, 0x10] ldrh r1, [r3, 0x8] strh r1, [r2, 0x12] ldrh r1, [r3, 0x4] strh r1, [r2, 0x1C] ldr r1, _080E2CCC @ =sub_80E2CD0 str r1, [r2] bl _call_via_r1 pop {r0} bx r0 .align 2, 0 _080E2CC4: .4byte gTasks _080E2CC8: .4byte gBattleAnimArgs _080E2CCC: .4byte sub_80E2CD0 thumb_func_end sub_80E2C8C thumb_func_start sub_80E2CD0 sub_80E2CD0: @ 80E2CD0 push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} lsls r0, 24 lsrs r7, r0, 24 movs r6, 0 ldr r2, _080E2D50 @ =gTasks lsls r5, r7, 2 adds r0, r5, r7 lsls r0, 3 adds r3, r0, r2 ldrh r0, [r3, 0x1A] mov r8, r0 movs r4, 0x1A ldrsh r1, [r3, r4] movs r4, 0xC ldrsh r0, [r3, r4] mov r9, r2 cmp r1, r0 bne _080E2D66 strh r6, [r3, 0x1A] movs r0, 0x8 ldrsh r4, [r3, r0] movs r1, 0xA ldrsh r0, [r3, r1] lsls r0, 16 orrs r4, r0 mov r8, r5 cmp r4, 0 beq _080E2D32 adds r5, r3, 0 _080E2D10: movs r0, 0x1 ands r0, r4 cmp r0, 0 beq _080E2D24 ldrb r2, [r5, 0x1C] ldrh r3, [r5, 0x12] adds r0, r6, 0 movs r1, 0x10 bl BlendPalette _080E2D24: adds r0, r6, 0 adds r0, 0x10 lsls r0, 16 lsrs r6, r0, 16 lsrs r4, 1 cmp r4, 0 bne _080E2D10 _080E2D32: mov r4, r8 adds r0, r4, r7 lsls r0, 3 mov r1, r9 adds r2, r0, r1 ldrh r0, [r2, 0x1C] movs r4, 0x1C ldrsh r3, [r2, r4] movs r4, 0x10 ldrsh r1, [r2, r4] cmp r3, r1 bge _080E2D54 adds r0, 0x1 strh r0, [r2, 0x1C] b _080E2D6C .align 2, 0 _080E2D50: .4byte gTasks _080E2D54: cmp r3, r1 ble _080E2D5E subs r0, 0x1 strh r0, [r2, 0x1C] b _080E2D6C _080E2D5E: adds r0, r7, 0 bl DestroyAnimVisualTask b _080E2D6C _080E2D66: mov r0, r8 adds r0, 0x1 strh r0, [r3, 0x1A] _080E2D6C: pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 thumb_func_end sub_80E2CD0 thumb_func_start sub_80E2D78 sub_80E2D78: @ 80E2D78 push {r4,r5,lr} sub sp, 0x4 adds r5, r0, 0 lsls r5, 24 lsrs r5, 24 ldr r4, _080E2DAC @ =gBattleAnimArgs ldrb r0, [r4] ldrb r1, [r4, 0x2] ldrb r2, [r4, 0x4] ldrb r3, [r4, 0x6] ldrb r4, [r4, 0x8] str r4, [sp] bl BeginHardwarePaletteFade ldr r1, _080E2DB0 @ =gTasks lsls r0, r5, 2 adds r0, r5 lsls r0, 3 adds r0, r1 ldr r1, _080E2DB4 @ =sub_80E2DB8 str r1, [r0] add sp, 0x4 pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080E2DAC: .4byte gBattleAnimArgs _080E2DB0: .4byte gTasks _080E2DB4: .4byte sub_80E2DB8 thumb_func_end sub_80E2D78 thumb_func_start sub_80E2DB8 sub_80E2DB8: @ 80E2DB8 push {lr} lsls r0, 24 lsrs r2, r0, 24 ldr r0, _080E2DD4 @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 bne _080E2DD0 adds r0, r2, 0 bl DestroyAnimVisualTask _080E2DD0: pop {r0} bx r0 .align 2, 0 _080E2DD4: .4byte gPaletteFade thumb_func_end sub_80E2DB8 thumb_func_start sub_80E2DD8 sub_80E2DD8: @ 80E2DD8 lsls r0, 24 lsrs r0, 24 lsls r1, r0, 2 adds r1, r0 lsls r1, 3 ldr r0, _080E2E04 @ =gTasks adds r1, r0 ldr r2, _080E2E08 @ =gBattleAnimArgs ldrh r0, [r2] movs r3, 0 strh r0, [r1, 0x8] strh r3, [r1, 0xA] ldrh r0, [r2, 0x2] strh r0, [r1, 0xC] ldrh r0, [r2, 0x4] strh r0, [r1, 0xE] ldrh r0, [r2, 0x6] strh r0, [r1, 0x10] strh r3, [r1, 0x12] ldr r0, _080E2E0C @ =sub_80E2E10 str r0, [r1] bx lr .align 2, 0 _080E2E04: .4byte gTasks _080E2E08: .4byte gBattleAnimArgs _080E2E0C: .4byte sub_80E2E10 thumb_func_end sub_80E2DD8 thumb_func_start sub_80E2E10 sub_80E2E10: @ 80E2E10 push {r4-r6,lr} lsls r0, 24 lsrs r5, r0, 24 adds r2, r5, 0 lsls r0, r5, 2 adds r0, r5 lsls r0, 3 ldr r1, _080E2E3C @ =gTasks adds r4, r0, r1 movs r1, 0x10 ldrsh r0, [r4, r1] cmp r0, 0 beq _080E2ED4 ldrh r1, [r4, 0xA] movs r2, 0xA ldrsh r0, [r4, r2] cmp r0, 0 beq _080E2E40 subs r0, r1, 0x1 strh r0, [r4, 0xA] b _080E2EE2 .align 2, 0 _080E2E3C: .4byte gTasks _080E2E40: ldrb r0, [r4, 0x8] bl duplicate_obj_of_side_rel2move_in_transparent_mode strh r0, [r4, 0x14] lsls r0, 16 cmp r0, 0 blt _080E2EBE ldr r6, _080E2ECC @ =gSprites movs r1, 0x14 ldrsh r0, [r4, r1] lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r3, r1, r6 movs r2, 0x8 ldrsh r0, [r4, r2] movs r2, 0x2 cmp r0, 0 beq _080E2E68 movs r2, 0x1 _080E2E68: lsls r2, 2 ldrb r1, [r3, 0x5] movs r0, 0xD negs r0, r0 ands r0, r1 orrs r0, r2 strb r0, [r3, 0x5] movs r0, 0x14 ldrsh r1, [r4, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r6 ldrh r1, [r4, 0xE] strh r1, [r0, 0x2E] movs r2, 0x14 ldrsh r1, [r4, r2] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r6 strh r5, [r0, 0x30] movs r0, 0x14 ldrsh r1, [r4, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r6 movs r1, 0x5 strh r1, [r0, 0x32] movs r2, 0x14 ldrsh r1, [r4, r2] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r1, r6, 0 adds r1, 0x1C adds r0, r1 ldr r1, _080E2ED0 @ =sub_80E2EE8 str r1, [r0] ldrh r0, [r4, 0x12] adds r0, 0x1 strh r0, [r4, 0x12] _080E2EBE: ldrh r0, [r4, 0x10] subs r0, 0x1 strh r0, [r4, 0x10] ldrh r0, [r4, 0xC] strh r0, [r4, 0xA] b _080E2EE2 .align 2, 0 _080E2ECC: .4byte gSprites _080E2ED0: .4byte sub_80E2EE8 _080E2ED4: movs r1, 0x12 ldrsh r0, [r4, r1] cmp r0, 0 bne _080E2EE2 adds r0, r2, 0 bl DestroyAnimVisualTask _080E2EE2: pop {r4-r6} pop {r0} bx r0 thumb_func_end sub_80E2E10 thumb_func_start sub_80E2EE8 sub_80E2EE8: @ 80E2EE8 push {r4,lr} adds r4, r0, 0 ldrh r1, [r4, 0x2E] movs r2, 0x2E ldrsh r0, [r4, r2] cmp r0, 0 beq _080E2EFC subs r0, r1, 0x1 strh r0, [r4, 0x2E] b _080E2F20 _080E2EFC: ldr r3, _080E2F28 @ =gTasks movs r0, 0x32 ldrsh r1, [r4, r0] lsls r1, 1 movs r0, 0x30 ldrsh r2, [r4, r0] lsls r0, r2, 2 adds r0, r2 lsls r0, 3 adds r1, r0 adds r3, 0x8 adds r1, r3 ldrh r0, [r1] subs r0, 0x1 strh r0, [r1] adds r0, r4, 0 bl obj_delete_but_dont_free_vram _080E2F20: pop {r4} pop {r0} bx r0 .align 2, 0 _080E2F28: .4byte gTasks thumb_func_end sub_80E2EE8 thumb_func_start sub_80E2F2C sub_80E2F2C: @ 80E2F2C push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} sub sp, 0x10 lsls r0, 24 lsrs r0, 24 mov r9, r0 movs r7, 0 ldr r0, _080E3038 @ =gBattle_WIN0H strh r7, [r0] ldr r0, _080E303C @ =gBattle_WIN0V strh r7, [r0] ldr r1, _080E3040 @ =REG_WININ ldr r2, _080E3044 @ =0x00003f3f adds r0, r2, 0 strh r0, [r1] adds r1, 0x2 ldr r3, _080E3048 @ =0x00003f3d adds r0, r3, 0 strh r0, [r1] movs r2, 0x80 lsls r2, 19 ldrh r0, [r2] movs r3, 0x80 lsls r3, 8 adds r1, r3, 0 orrs r0, r1 strh r0, [r2] ldr r1, _080E304C @ =REG_BLDCNT ldr r2, _080E3050 @ =0x00003f42 adds r0, r2, 0 strh r0, [r1] adds r1, 0x2 ldr r3, _080E3054 @ =0x00000c08 adds r0, r3, 0 strh r0, [r1] ldr r4, _080E3058 @ =REG_BG1CNT ldrb r1, [r4] movs r0, 0x4 negs r0, r0 mov r8, r0 ands r0, r1 strb r0, [r4] ldrb r1, [r4, 0x1] movs r0, 0x3F ands r0, r1 strb r0, [r4, 0x1] ldrb r0, [r4, 0x1] movs r1, 0x20 orrs r0, r1 strb r0, [r4, 0x1] bl IsContest lsls r0, 24 cmp r0, 0 bne _080E2FAC ldrb r0, [r4] movs r1, 0xD negs r1, r1 ands r1, r0 movs r0, 0x4 orrs r1, r0 strb r1, [r4] _080E2FAC: bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _080E3028 bl IsContest lsls r0, 24 cmp r0, 0 bne _080E3028 ldr r5, _080E305C @ =gAnimBankAttacker ldrb r0, [r5] bl GetBankIdentity lsls r0, 24 lsrs r0, 24 cmp r0, 0x3 beq _080E2FDC ldrb r0, [r5] bl GetBankIdentity lsls r0, 24 cmp r0, 0 bne _080E3028 _080E2FDC: ldrb r0, [r5] movs r6, 0x2 eors r0, r6 bl IsAnimBankSpriteVisible lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _080E3028 ldr r3, _080E3060 @ =gSprites ldr r1, _080E3064 @ =gObjectBankIDs ldrb r0, [r5] eors r0, r6 adds r0, r1 ldrb r0, [r0] lsls r2, r0, 4 adds r2, r0 lsls r2, 2 adds r2, r3 ldrb r3, [r2, 0x5] lsls r1, r3, 28 lsrs r1, 30 subs r1, 0x1 movs r0, 0x3 ands r1, r0 lsls r1, 2 movs r0, 0xD negs r0, r0 ands r0, r3 orrs r0, r1 strb r0, [r2, 0x5] ldrb r1, [r4] mov r0, r8 ands r0, r1 movs r1, 0x1 orrs r0, r1 strb r0, [r4] movs r7, 0x1 _080E3028: bl IsContest lsls r0, 24 cmp r0, 0 beq _080E306C ldr r0, _080E3068 @ =gSharedMem + 0x19348 ldrh r4, [r0] b _080E30B4 .align 2, 0 _080E3038: .4byte gBattle_WIN0H _080E303C: .4byte gBattle_WIN0V _080E3040: .4byte REG_WININ _080E3044: .4byte 0x00003f3f _080E3048: .4byte 0x00003f3d _080E304C: .4byte REG_BLDCNT _080E3050: .4byte 0x00003f42 _080E3054: .4byte 0x00000c08 _080E3058: .4byte REG_BG1CNT _080E305C: .4byte gAnimBankAttacker _080E3060: .4byte gSprites _080E3064: .4byte gObjectBankIDs _080E3068: .4byte gSharedMem + 0x19348 _080E306C: ldr r4, _080E308C @ =gAnimBankAttacker ldrb r0, [r4] bl GetBankSide lsls r0, 24 cmp r0, 0 beq _080E3098 ldr r1, _080E3090 @ =gBattlePartyID ldrb r0, [r4] lsls r0, 1 adds r0, r1 ldrh r1, [r0] movs r0, 0x64 muls r0, r1 ldr r1, _080E3094 @ =gEnemyParty b _080E30A8 .align 2, 0 _080E308C: .4byte gAnimBankAttacker _080E3090: .4byte gBattlePartyID _080E3094: .4byte gEnemyParty _080E3098: ldr r1, _080E3160 @ =gBattlePartyID ldrb r0, [r4] lsls r0, 1 adds r0, r1 ldrh r1, [r0] movs r0, 0x64 muls r0, r1 ldr r1, _080E3164 @ =gPlayerParty _080E30A8: adds r0, r1 movs r1, 0xB bl GetMonData lsls r0, 16 lsrs r4, r0, 16 _080E30B4: movs r0, 0 bl GetAnimBankSpriteId lsls r0, 24 lsrs r5, r0, 24 ldr r0, _080E3168 @ =gAnimBankAttacker ldrb r0, [r0] adds r1, r5, 0 adds r2, r4, 0 bl sub_807A4A0 lsls r0, 24 lsrs r4, r0, 24 mov r0, sp bl sub_8078914 ldr r1, [sp, 0x4] movs r0, 0 str r0, [sp, 0xC] ldr r2, _080E316C @ =0x040000d4 add r0, sp, 0xC str r0, [r2] str r1, [r2, 0x4] ldr r0, _080E3170 @ =0x85000400 str r0, [r2, 0x8] ldr r0, [r2, 0x8] ldr r0, _080E3174 @ =gUnknown_08D20A30 bl LZDecompressVram bl IsContest lsls r0, 24 cmp r0, 0 beq _080E3106 mov r0, sp ldrb r0, [r0, 0x8] ldr r1, [sp, 0x4] movs r2, 0 movs r3, 0 bl sub_80763FC _080E3106: ldr r0, _080E3178 @ =gUnknown_08D20A14 ldr r1, [sp] bl LZDecompressVram ldr r0, _080E317C @ =gUnknown_083DB568 mov r1, sp ldrb r1, [r1, 0x8] lsls r1, 4 adds r1, 0x1 movs r2, 0x2 bl LoadPalette ldr r2, _080E3180 @ =gBattle_BG1_X ldr r0, _080E3184 @ =gSprites lsls r1, r5, 4 adds r1, r5 lsls r1, 2 adds r1, r0 ldrh r0, [r1, 0x20] negs r0, r0 adds r0, 0x20 strh r0, [r2] ldr r2, _080E3188 @ =gBattle_BG1_Y ldrh r0, [r1, 0x22] negs r0, r0 adds r0, 0x20 strh r0, [r2] ldr r1, _080E318C @ =gTasks mov r2, r9 lsls r0, r2, 2 add r0, r9 lsls r0, 3 adds r0, r1 strh r4, [r0, 0x8] strh r7, [r0, 0x14] ldr r1, _080E3190 @ =sub_80E3194 str r1, [r0] add sp, 0x10 pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080E3160: .4byte gBattlePartyID _080E3164: .4byte gPlayerParty _080E3168: .4byte gAnimBankAttacker _080E316C: .4byte 0x040000d4 _080E3170: .4byte 0x85000400 _080E3174: .4byte gUnknown_08D20A30 _080E3178: .4byte gUnknown_08D20A14 _080E317C: .4byte gUnknown_083DB568 _080E3180: .4byte gBattle_BG1_X _080E3184: .4byte gSprites _080E3188: .4byte gBattle_BG1_Y _080E318C: .4byte gTasks _080E3190: .4byte sub_80E3194 thumb_func_end sub_80E2F2C thumb_func_start sub_80E3194 sub_80E3194: @ 80E3194 push {r4-r7,lr} mov r7, r8 push {r7} sub sp, 0x10 lsls r0, 24 lsrs r6, r0, 24 ldr r1, _080E32AC @ =gTasks lsls r0, r6, 2 adds r0, r6 lsls r0, 3 adds r4, r0, r1 ldrh r0, [r4, 0x1C] adds r0, 0x4 movs r5, 0 strh r0, [r4, 0x1C] ldr r7, _080E32B0 @ =gBattle_BG1_Y ldrh r2, [r7] subs r1, r2, 0x4 strh r1, [r7] lsls r0, 16 asrs r0, 16 cmp r0, 0x40 bne _080E329E strh r5, [r4, 0x1C] adds r0, r2, 0 adds r0, 0x3C strh r0, [r7] ldrh r0, [r4, 0x1E] adds r0, 0x1 strh r0, [r4, 0x1E] lsls r0, 16 asrs r0, 16 cmp r0, 0x4 bne _080E329E movs r0, 0 bl sub_8076464 ldr r0, _080E32B4 @ =gBattle_WIN0H strh r5, [r0] ldr r0, _080E32B8 @ =gBattle_WIN0V strh r5, [r0] ldr r0, _080E32BC @ =REG_WININ ldr r2, _080E32C0 @ =0x00003f3f adds r1, r2, 0 strh r1, [r0] adds r0, 0x2 strh r1, [r0] bl IsContest lsls r0, 24 cmp r0, 0 bne _080E3208 ldr r2, _080E32C4 @ =REG_BG1CNT ldrb r1, [r2] movs r0, 0xD negs r0, r0 ands r0, r1 strb r0, [r2] _080E3208: movs r2, 0x80 lsls r2, 19 ldrh r0, [r2] movs r3, 0x80 lsls r3, 8 adds r1, r3, 0 eors r0, r1 strh r0, [r2] ldr r0, _080E32C8 @ =REG_BLDCNT strh r5, [r0] adds r0, 0x2 strh r5, [r0] movs r0, 0 bl GetAnimBankSpriteId ldr r0, _080E32CC @ =gSprites mov r8, r0 movs r2, 0x8 ldrsh r1, [r4, r2] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 add r0, r8 bl DestroySprite mov r0, sp bl sub_8078914 ldr r2, [sp, 0x4] str r5, [sp, 0xC] ldr r1, _080E32D0 @ =0x040000d4 add r0, sp, 0xC str r0, [r1] str r2, [r1, 0x4] ldr r0, _080E32D4 @ =0x85000200 str r0, [r1, 0x8] ldr r0, [r1, 0x8] movs r3, 0x14 ldrsh r0, [r4, r3] cmp r0, 0x1 bne _080E3288 ldr r2, _080E32D8 @ =gObjectBankIDs ldr r0, _080E32DC @ =gAnimBankAttacker ldrb r1, [r0] movs r0, 0x2 eors r0, r1 adds r0, r2 ldrb r0, [r0] lsls r2, r0, 4 adds r2, r0 lsls r2, 2 add r2, r8 ldrb r3, [r2, 0x5] lsls r1, r3, 28 lsrs r1, 30 adds r1, 0x1 movs r0, 0x3 ands r1, r0 lsls r1, 2 movs r0, 0xD negs r0, r0 ands r0, r3 orrs r0, r1 strb r0, [r2, 0x5] _080E3288: ldr r2, _080E32C4 @ =REG_BG1CNT ldrb r1, [r2, 0x1] movs r0, 0x21 negs r0, r0 ands r0, r1 strb r0, [r2, 0x1] movs r0, 0 strh r0, [r7] adds r0, r6, 0 bl DestroyAnimVisualTask _080E329E: add sp, 0x10 pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080E32AC: .4byte gTasks _080E32B0: .4byte gBattle_BG1_Y _080E32B4: .4byte gBattle_WIN0H _080E32B8: .4byte gBattle_WIN0V _080E32BC: .4byte REG_WININ _080E32C0: .4byte 0x00003f3f _080E32C4: .4byte REG_BG1CNT _080E32C8: .4byte REG_BLDCNT _080E32CC: .4byte gSprites _080E32D0: .4byte 0x040000d4 _080E32D4: .4byte 0x85000200 _080E32D8: .4byte gObjectBankIDs _080E32DC: .4byte gAnimBankAttacker thumb_func_end sub_80E3194 thumb_func_start sub_80E32E0 sub_80E32E0: @ 80E32E0 push {r4-r7,lr} mov r7, r8 push {r7} lsls r0, 24 lsrs r3, r0, 24 movs r2, 0 ldr r0, _080E332C @ =gTasks mov r12, r0 ldr r1, _080E3330 @ =sub_80E3338 mov r8, r1 lsls r1, r3, 2 adds r0, r1, r3 lsls r4, r0, 3 mov r7, r12 adds r7, 0x8 adds r5, r1, 0 ldr r6, _080E3334 @ =gBattleAnimArgs _080E3302: lsls r0, r2, 1 adds r1, r0, r4 adds r1, r7 adds r0, r6 ldrh r0, [r0] strh r0, [r1] adds r0, r2, 0x1 lsls r0, 24 lsrs r2, r0, 24 cmp r2, 0x7 bls _080E3302 adds r0, r5, r3 lsls r0, 3 add r0, r12 mov r1, r8 str r1, [r0] pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080E332C: .4byte gTasks _080E3330: .4byte sub_80E3338 _080E3334: .4byte gBattleAnimArgs thumb_func_end sub_80E32E0 thumb_func_start sub_80E3338 sub_80E3338: @ 80E3338 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x24 lsls r0, 24 lsrs r0, 24 mov r9, r0 movs r0, 0 str r0, [sp, 0x1C] movs r1, 0 str r1, [sp, 0x20] add r7, sp, 0xC ldr r2, _080E3388 @ =gTasks mov r3, r9 lsls r1, r3, 2 adds r0, r1, r3 lsls r0, 3 mov r10, r1 adds r1, r2, 0 adds r1, 0x8 adds r1, r0, r1 adds r3, r7, 0 movs r4, 0 movs r2, 0x7 _080E336C: ldrh r0, [r1] strh r0, [r3] strh r4, [r1] adds r1, 0x2 adds r3, 0x2 subs r2, 0x1 cmp r2, 0 bge _080E336C movs r1, 0x4 ldrsh r0, [r7, r1] cmp r0, 0 bne _080E3390 ldr r0, _080E338C @ =gAnimBankAttacker b _080E3392 .align 2, 0 _080E3388: .4byte gTasks _080E338C: .4byte gAnimBankAttacker _080E3390: ldr r0, _080E34B4 @ =gAnimBankTarget _080E3392: ldrb r5, [r0] movs r0, 0x2 mov r8, r5 mov r2, r8 eors r2, r0 mov r8, r2 bl IsContest lsls r0, 24 cmp r0, 0 bne _080E33BC movs r3, 0x6 ldrsh r0, [r7, r3] cmp r0, 0 beq _080E33C0 mov r0, r8 bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 bne _080E33C0 _080E33BC: movs r0, 0 strh r0, [r7, 0x6] _080E33C0: ldr r0, _080E34B8 @ =gBattle_WIN0H movs r1, 0 strh r1, [r0] ldr r0, _080E34BC @ =gBattle_WIN0V strh r1, [r0] ldr r1, _080E34C0 @ =REG_WININ ldr r2, _080E34C4 @ =0x00003f3f adds r0, r2, 0 strh r0, [r1] adds r1, 0x2 ldr r3, _080E34C8 @ =0x00003f3d adds r0, r3, 0 strh r0, [r1] movs r2, 0x80 lsls r2, 19 ldrh r0, [r2] movs r3, 0x80 lsls r3, 8 adds r1, r3, 0 orrs r0, r1 strh r0, [r2] ldr r1, _080E34CC @ =REG_BLDCNT ldr r2, _080E34D0 @ =0x00003f42 adds r0, r2, 0 strh r0, [r1] adds r1, 0x2 movs r3, 0x80 lsls r3, 5 adds r0, r3, 0 strh r0, [r1] ldr r4, _080E34D4 @ =REG_BG1CNT ldrb r1, [r4] movs r6, 0x4 negs r6, r6 adds r0, r6, 0 ands r0, r1 strb r0, [r4] ldrb r1, [r4, 0x1] movs r0, 0x3F ands r0, r1 strb r0, [r4, 0x1] ldrb r0, [r4, 0x1] movs r1, 0x20 orrs r0, r1 strb r0, [r4, 0x1] bl IsContest lsls r0, 24 cmp r0, 0 bne _080E3432 ldrb r0, [r4] movs r1, 0xD negs r1, r1 ands r1, r0 movs r0, 0x4 orrs r1, r0 strb r1, [r4] _080E3432: bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _080E34A4 movs r1, 0x6 ldrsh r0, [r7, r1] cmp r0, 0 bne _080E34A4 adds r0, r5, 0 bl GetBankIdentity lsls r0, 24 lsrs r0, 24 cmp r0, 0x3 beq _080E345E adds r0, r5, 0 bl GetBankIdentity lsls r0, 24 cmp r0, 0 bne _080E34A4 _080E345E: mov r0, r8 bl IsAnimBankSpriteVisible lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _080E34A4 ldr r1, _080E34D8 @ =gSprites ldr r0, _080E34DC @ =gObjectBankIDs add r0, r8 ldrb r0, [r0] lsls r2, r0, 4 adds r2, r0 lsls r2, 2 adds r2, r1 ldrb r3, [r2, 0x5] lsls r1, r3, 28 lsrs r1, 30 subs r1, 0x1 movs r0, 0x3 ands r1, r0 lsls r1, 2 movs r0, 0xD negs r0, r0 ands r0, r3 orrs r0, r1 strb r0, [r2, 0x5] ldrb r1, [r4] adds r0, r6, 0 ands r0, r1 movs r1, 0x1 orrs r0, r1 strb r0, [r4] movs r2, 0x1 str r2, [sp, 0x20] _080E34A4: bl IsContest lsls r0, 24 cmp r0, 0 beq _080E34E4 ldr r0, _080E34E0 @ =gSharedMem + 0x19348 ldrh r4, [r0] b _080E3522 .align 2, 0 _080E34B4: .4byte gAnimBankTarget _080E34B8: .4byte gBattle_WIN0H _080E34BC: .4byte gBattle_WIN0V _080E34C0: .4byte REG_WININ _080E34C4: .4byte 0x00003f3f _080E34C8: .4byte 0x00003f3d _080E34CC: .4byte REG_BLDCNT _080E34D0: .4byte 0x00003f42 _080E34D4: .4byte REG_BG1CNT _080E34D8: .4byte gSprites _080E34DC: .4byte gObjectBankIDs _080E34E0: .4byte gSharedMem + 0x19348 _080E34E4: adds r0, r5, 0 bl GetBankSide lsls r0, 24 cmp r0, 0 beq _080E3508 ldr r1, _080E3500 @ =gBattlePartyID lsls r0, r5, 1 adds r0, r1 ldrh r1, [r0] movs r0, 0x64 muls r0, r1 ldr r1, _080E3504 @ =gEnemyParty b _080E3516 .align 2, 0 _080E3500: .4byte gBattlePartyID _080E3504: .4byte gEnemyParty _080E3508: ldr r1, _080E3568 @ =gBattlePartyID lsls r0, r5, 1 adds r0, r1 ldrh r1, [r0] movs r0, 0x64 muls r0, r1 ldr r1, _080E356C @ =gPlayerParty _080E3516: adds r0, r1 movs r1, 0xB bl GetMonData lsls r0, 16 lsrs r4, r0, 16 _080E3522: ldr r6, _080E3570 @ =gObjectBankIDs adds r0, r5, r6 ldrb r1, [r0] adds r0, r5, 0 adds r2, r4, 0 bl sub_807A4A0 lsls r0, 24 lsrs r5, r0, 24 movs r3, 0x6 ldrsh r0, [r7, r3] cmp r0, 0 beq _080E3550 mov r1, r8 adds r0, r1, r6 ldrb r1, [r0] mov r0, r8 adds r2, r4, 0 bl sub_807A4A0 lsls r0, 24 lsrs r0, 24 str r0, [sp, 0x1C] _080E3550: mov r0, sp bl sub_8078914 movs r2, 0 ldrsh r0, [r7, r2] cmp r0, 0 bne _080E3578 ldr r0, _080E3574 @ =gBattleStatMask1_Tilemap ldr r1, [sp, 0x4] bl LZDecompressVram b _080E3580 .align 2, 0 _080E3568: .4byte gBattlePartyID _080E356C: .4byte gPlayerParty _080E3570: .4byte gObjectBankIDs _080E3574: .4byte gBattleStatMask1_Tilemap _080E3578: ldr r0, _080E35B0 @ =gBattleStatMask2_Tilemap ldr r1, [sp, 0x4] bl LZDecompressVram _080E3580: bl IsContest lsls r0, 24 cmp r0, 0 beq _080E3598 mov r0, sp ldrb r0, [r0, 0x8] ldr r1, [sp, 0x4] movs r2, 0 movs r3, 0 bl sub_80763FC _080E3598: ldr r0, _080E35B4 @ =gBattleStatMask_Gfx ldr r1, [sp] bl LZDecompressVram ldrh r0, [r7, 0x2] lsls r0, 16 asrs r0, 16 cmp r0, 0 bne _080E35BC ldr r0, _080E35B8 @ =gBattleStatMask2_Pal b _080E35FE .align 2, 0 _080E35B0: .4byte gBattleStatMask2_Tilemap _080E35B4: .4byte gBattleStatMask_Gfx _080E35B8: .4byte gBattleStatMask2_Pal _080E35BC: cmp r0, 0x1 bne _080E35C8 ldr r0, _080E35C4 @ =gBattleStatMask1_Pal b _080E35FE .align 2, 0 _080E35C4: .4byte gBattleStatMask1_Pal _080E35C8: cmp r0, 0x2 bne _080E35D4 ldr r0, _080E35D0 @ =gBattleStatMask3_Pal b _080E35FE .align 2, 0 _080E35D0: .4byte gBattleStatMask3_Pal _080E35D4: cmp r0, 0x3 bne _080E35E0 ldr r0, _080E35DC @ =gBattleStatMask4_Pal b _080E35FE .align 2, 0 _080E35DC: .4byte gBattleStatMask4_Pal _080E35E0: cmp r0, 0x4 bne _080E35EC ldr r0, _080E35E8 @ =gBattleStatMask6_Pal b _080E35FE .align 2, 0 _080E35E8: .4byte gBattleStatMask6_Pal _080E35EC: cmp r0, 0x5 bne _080E35F8 ldr r0, _080E35F4 @ =gBattleStatMask7_Pal b _080E35FE .align 2, 0 _080E35F4: .4byte gBattleStatMask7_Pal _080E35F8: cmp r0, 0x6 bne _080E3610 ldr r0, _080E360C @ =gBattleStatMask8_Pal _080E35FE: mov r1, sp ldrb r1, [r1, 0x8] lsls r1, 4 movs r2, 0x20 bl LoadCompressedPalette b _080E361E .align 2, 0 _080E360C: .4byte gBattleStatMask8_Pal _080E3610: ldr r0, _080E3644 @ =gBattleStatMask5_Pal mov r1, sp ldrb r1, [r1, 0x8] lsls r1, 4 movs r2, 0x20 bl LoadCompressedPalette _080E361E: ldr r2, _080E3648 @ =gBattle_BG1_X movs r1, 0 strh r1, [r2] ldr r0, _080E364C @ =gBattle_BG1_Y strh r1, [r0] movs r3, 0 ldrsh r0, [r7, r3] cmp r0, 0x1 bne _080E3658 movs r0, 0x40 strh r0, [r2] ldr r2, _080E3650 @ =gTasks mov r0, r10 add r0, r9 lsls r0, 3 adds r0, r2 ldr r1, _080E3654 @ =0x0000fffd strh r1, [r0, 0xA] b _080E3668 .align 2, 0 _080E3644: .4byte gBattleStatMask5_Pal _080E3648: .4byte gBattle_BG1_X _080E364C: .4byte gBattle_BG1_Y _080E3650: .4byte gTasks _080E3654: .4byte 0x0000fffd _080E3658: ldr r0, _080E3680 @ =gTasks mov r1, r10 add r1, r9 lsls r1, 3 adds r1, r0 movs r2, 0x3 strh r2, [r1, 0xA] adds r2, r0, 0 _080E3668: movs r1, 0x8 ldrsh r0, [r7, r1] cmp r0, 0 bne _080E3684 mov r0, r10 add r0, r9 lsls r0, 3 adds r0, r2 movs r1, 0xA strh r1, [r0, 0x10] movs r1, 0x14 b _080E3692 .align 2, 0 _080E3680: .4byte gTasks _080E3684: mov r0, r10 add r0, r9 lsls r0, 3 adds r0, r2 movs r1, 0xD strh r1, [r0, 0x10] movs r1, 0x1E _080E3692: strh r1, [r0, 0x12] mov r1, r10 add r1, r9 lsls r1, 3 adds r1, r2 strh r5, [r1, 0x8] ldrh r0, [r7, 0x6] strh r0, [r1, 0xC] mov r2, sp ldrh r2, [r2, 0x1C] strh r2, [r1, 0xE] mov r3, sp ldrh r3, [r3, 0x20] strh r3, [r1, 0x14] ldr r0, _080E36D8 @ =gObjectBankIDs add r0, r8 ldrb r0, [r0] strh r0, [r1, 0x16] ldr r0, _080E36DC @ =sub_80E3704 str r0, [r1] movs r1, 0 ldrsh r0, [r7, r1] cmp r0, 0 bne _080E36E0 movs r0, 0x40 negs r0, r0 bl BattleAnimAdjustPanning2 adds r1, r0, 0 lsls r1, 24 asrs r1, 24 movs r0, 0xEF bl PlaySE12WithPanning b _080E36F4 .align 2, 0 _080E36D8: .4byte gObjectBankIDs _080E36DC: .4byte sub_80E3704 _080E36E0: movs r0, 0x40 negs r0, r0 bl BattleAnimAdjustPanning2 adds r1, r0, 0 lsls r1, 24 asrs r1, 24 movs r0, 0xF5 bl PlaySE12WithPanning _080E36F4: add sp, 0x24 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 thumb_func_end sub_80E3338 thumb_func_start sub_80E3704 sub_80E3704: @ 80E3704 push {r4-r7,lr} lsls r0, 24 lsrs r6, r0, 24 ldr r2, _080E3730 @ =gBattle_BG1_Y ldr r1, _080E3734 @ =gTasks lsls r0, r6, 2 adds r0, r6 lsls r0, 3 adds r4, r0, r1 ldrh r0, [r4, 0xA] ldrh r1, [r2] adds r0, r1 strh r0, [r2] movs r3, 0x26 ldrsh r2, [r4, r3] cmp r2, 0x1 beq _080E3774 cmp r2, 0x1 bgt _080E3738 cmp r2, 0 beq _080E373E b _080E3866 .align 2, 0 _080E3730: .4byte gBattle_BG1_Y _080E3734: .4byte gTasks _080E3738: cmp r2, 0x2 beq _080E378E b _080E3866 _080E373E: ldrh r0, [r4, 0x1E] adds r1, r0, 0x1 strh r1, [r4, 0x1E] lsls r0, 16 cmp r0, 0 bgt _080E374C b _080E3866 _080E374C: strh r2, [r4, 0x1E] ldrh r1, [r4, 0x20] adds r1, 0x1 strh r1, [r4, 0x20] ldr r2, _080E3770 @ =REG_BLDALPHA movs r0, 0x10 subs r0, r1 lsls r0, 8 orrs r1, r0 strh r1, [r2] movs r0, 0x20 ldrsh r1, [r4, r0] movs r2, 0x10 ldrsh r0, [r4, r2] cmp r1, r0 bne _080E3866 b _080E3786 .align 2, 0 _080E3770: .4byte REG_BLDALPHA _080E3774: ldrh r0, [r4, 0x1C] adds r0, 0x1 strh r0, [r4, 0x1C] lsls r0, 16 asrs r0, 16 movs r3, 0x12 ldrsh r1, [r4, r3] cmp r0, r1 bne _080E3866 _080E3786: ldrh r0, [r4, 0x26] adds r0, 0x1 strh r0, [r4, 0x26] b _080E3866 _080E378E: ldrh r0, [r4, 0x1E] adds r1, r0, 0x1 strh r1, [r4, 0x1E] lsls r0, 16 cmp r0, 0 ble _080E3866 movs r0, 0 strh r0, [r4, 0x1E] ldrh r1, [r4, 0x20] subs r1, 0x1 strh r1, [r4, 0x20] ldr r7, _080E386C @ =REG_BLDALPHA movs r0, 0x10 subs r0, r1 lsls r0, 8 orrs r1, r0 strh r1, [r7] movs r0, 0x20 ldrsh r5, [r4, r0] cmp r5, 0 bne _080E3866 movs r0, 0 bl sub_8076464 ldr r0, _080E3870 @ =gBattle_WIN0H strh r5, [r0] ldr r0, _080E3874 @ =gBattle_WIN0V strh r5, [r0] ldr r0, _080E3878 @ =REG_WININ ldr r2, _080E387C @ =0x00003f3f adds r1, r2, 0 strh r1, [r0] adds r0, 0x2 strh r1, [r0] bl IsContest lsls r0, 24 cmp r0, 0 bne _080E37E8 ldr r2, _080E3880 @ =REG_BG1CNT ldrb r1, [r2] movs r0, 0xD negs r0, r0 ands r0, r1 strb r0, [r2] _080E37E8: movs r2, 0x80 lsls r2, 19 ldrh r0, [r2] movs r3, 0x80 lsls r3, 8 adds r1, r3, 0 eors r0, r1 strh r0, [r2] ldr r0, _080E3884 @ =REG_BLDCNT strh r5, [r0] strh r5, [r7] movs r0, 0x8 ldrsh r1, [r4, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 ldr r5, _080E3888 @ =gSprites adds r0, r5 bl DestroySprite movs r1, 0xC ldrsh r0, [r4, r1] cmp r0, 0 beq _080E3828 movs r2, 0xE ldrsh r1, [r4, r2] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r5 bl DestroySprite _080E3828: movs r3, 0x14 ldrsh r0, [r4, r3] cmp r0, 0x1 bne _080E3854 movs r1, 0x16 ldrsh r0, [r4, r1] lsls r2, r0, 4 adds r2, r0 lsls r2, 2 adds r2, r5 ldrb r3, [r2, 0x5] lsls r1, r3, 28 lsrs r1, 30 adds r1, 0x1 movs r0, 0x3 ands r1, r0 lsls r1, 2 movs r0, 0xD negs r0, r0 ands r0, r3 orrs r0, r1 strb r0, [r2, 0x5] _080E3854: ldr r2, _080E3880 @ =REG_BG1CNT ldrb r1, [r2, 0x1] movs r0, 0x21 negs r0, r0 ands r0, r1 strb r0, [r2, 0x1] adds r0, r6, 0 bl DestroyAnimVisualTask _080E3866: pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080E386C: .4byte REG_BLDALPHA _080E3870: .4byte gBattle_WIN0H _080E3874: .4byte gBattle_WIN0V _080E3878: .4byte REG_WININ _080E387C: .4byte 0x00003f3f _080E3880: .4byte REG_BG1CNT _080E3884: .4byte REG_BLDCNT _080E3888: .4byte gSprites thumb_func_end sub_80E3704 thumb_func_start sub_80E388C sub_80E388C: @ 80E388C push {r4-r6,lr} sub sp, 0xC adds r5, r0, 0 lsls r5, 24 lsrs r5, 24 movs r0, 0x1 movs r1, 0x1 movs r2, 0x1 movs r3, 0x1 bl sub_80792C0 adds r6, r0, 0 movs r1, 0 bl sub_80E39BC ldr r0, _080E38EC @ =gTasks lsls r4, r5, 2 adds r4, r5 lsls r4, 3 adds r4, r0 lsrs r0, r6, 16 movs r5, 0 strh r0, [r4, 0x24] str r5, [sp] str r5, [sp, 0x4] str r5, [sp, 0x8] movs r0, 0x1 movs r1, 0 movs r2, 0 movs r3, 0 bl sub_80791A8 adds r6, r0, 0 ldr r1, _080E38F0 @ =0x0000ffff ands r6, r1 adds r0, r6, 0 bl sub_80E39BC strh r6, [r4, 0x26] strh r5, [r4, 0x8] strh r5, [r4, 0xA] ldr r0, _080E38F4 @ =sub_80E38F8 str r0, [r4] add sp, 0xC pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080E38EC: .4byte gTasks _080E38F0: .4byte 0x0000ffff _080E38F4: .4byte sub_80E38F8 thumb_func_end sub_80E388C thumb_func_start sub_80E38F8 sub_80E38F8: @ 80E38F8 push {r4-r6,lr} lsls r0, 24 lsrs r2, r0, 24 lsls r0, r2, 2 adds r0, r2 lsls r0, 3 ldr r1, _080E391C @ =gTasks adds r4, r0, r1 movs r0, 0x8 ldrsh r1, [r4, r0] cmp r1, 0x1 beq _080E393C cmp r1, 0x1 bgt _080E3920 cmp r1, 0 beq _080E3926 b _080E39B6 .align 2, 0 _080E391C: .4byte gTasks _080E3920: cmp r1, 0x2 beq _080E39B0 b _080E39B6 _080E3926: ldrh r0, [r4, 0xA] adds r0, 0x1 strh r0, [r4, 0xA] lsls r0, 16 asrs r0, 16 cmp r0, 0x6 ble _080E39B6 strh r1, [r4, 0xA] movs r0, 0x10 strh r0, [r4, 0xC] b _080E39A4 _080E393C: ldrh r0, [r4, 0xA] adds r0, 0x1 strh r0, [r4, 0xA] lsls r0, 16 asrs r0, 16 cmp r0, 0x1 ble _080E39B6 movs r0, 0 strh r0, [r4, 0xA] ldrh r0, [r4, 0xC] subs r0, 0x1 strh r0, [r4, 0xC] movs r5, 0 movs r6, 0x1 _080E3958: movs r1, 0x26 ldrsh r0, [r4, r1] asrs r0, r5 ands r0, r6 cmp r0, 0 beq _080E3972 lsls r0, r5, 20 lsrs r0, 16 ldrb r2, [r4, 0xC] movs r1, 0x10 ldr r3, _080E39AC @ =0x0000ffff bl BlendPalette _080E3972: movs r1, 0x24 ldrsh r0, [r4, r1] asrs r0, r5 ands r0, r6 cmp r0, 0 beq _080E3992 lsls r0, r5, 20 movs r1, 0x80 lsls r1, 17 adds r0, r1 lsrs r0, 16 ldrb r2, [r4, 0xC] movs r1, 0x10 movs r3, 0 bl BlendPalette _080E3992: adds r0, r5, 0x1 lsls r0, 16 lsrs r5, r0, 16 cmp r5, 0xF bls _080E3958 movs r1, 0xC ldrsh r0, [r4, r1] cmp r0, 0 bne _080E39B6 _080E39A4: ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] b _080E39B6 .align 2, 0 _080E39AC: .4byte 0x0000ffff _080E39B0: adds r0, r2, 0 bl DestroyAnimVisualTask _080E39B6: pop {r4-r6} pop {r0} bx r0 thumb_func_end sub_80E38F8 thumb_func_start sub_80E39BC sub_80E39BC: @ 80E39BC push {r4-r6,lr} adds r3, r0, 0 lsls r1, 16 lsrs r6, r1, 16 movs r2, 0 _080E39C6: movs r0, 0x1 ands r0, r3 lsrs r4, r3, 1 adds r5, r2, 0x1 cmp r0, 0 beq _080E39F2 lsls r0, r2, 20 lsrs r2, r0, 16 adds r0, r2, 0 adds r0, 0x10 cmp r2, r0 bge _080E39F2 ldr r1, _080E3A04 @ =gPlttBufferFaded adds r3, r0, 0 _080E39E2: lsls r0, r2, 1 adds r0, r1 strh r6, [r0] adds r0, r2, 0x1 lsls r0, 16 lsrs r2, r0, 16 cmp r2, r3 blt _080E39E2 _080E39F2: adds r3, r4, 0 lsls r0, r5, 16 lsrs r2, r0, 16 cmp r2, 0x1F bls _080E39C6 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080E3A04: .4byte gPlttBufferFaded thumb_func_end sub_80E39BC thumb_func_start sub_80E3A08 sub_80E3A08: @ 80E3A08 push {r4-r6,lr} lsls r0, 24 lsrs r6, r0, 24 movs r4, 0 movs r2, 0 ldr r0, _080E3A50 @ =gAnimBankAttacker ldrb r3, [r0] movs r5, 0x1 _080E3A18: cmp r3, r2 beq _080E3A26 adds r1, r2, 0 adds r1, 0x10 adds r0, r5, 0 lsls r0, r1 orrs r4, r0 _080E3A26: adds r2, 0x1 cmp r2, 0x3 bls _080E3A18 movs r2, 0x5 ldr r0, _080E3A54 @ =gBattleAnimArgs adds r1, r0, 0 adds r1, 0x8 _080E3A34: ldrh r0, [r1] strh r0, [r1, 0x2] subs r1, 0x2 subs r2, 0x1 cmp r2, 0 bne _080E3A34 adds r0, r6, 0 adds r1, r4, 0 bl sub_80E2C8C pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080E3A50: .4byte gAnimBankAttacker _080E3A54: .4byte gBattleAnimArgs thumb_func_end sub_80E3A08 thumb_func_start sub_80E3A58 sub_80E3A58: @ 80E3A58 push {r4-r6,lr} lsls r0, 24 lsrs r6, r0, 24 movs r0, 0 bl sub_80789D4 ldr r0, _080E3AC0 @ =sub_80E3AD0 movs r1, 0x5 bl CreateTask lsls r0, 24 lsrs r5, r0, 24 ldr r4, _080E3AC4 @ =gBattleAnimArgs movs r1, 0x4 ldrsh r0, [r4, r1] cmp r0, 0 beq _080E3A94 ldr r0, _080E3AC8 @ =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 cmp r0, 0 beq _080E3A94 ldrh r0, [r4] negs r0, r0 strh r0, [r4] ldrh r0, [r4, 0x2] negs r0, r0 strh r0, [r4, 0x2] _080E3A94: ldr r0, _080E3ACC @ =gTasks lsls r1, r5, 2 adds r1, r5 lsls r1, 3 adds r1, r0 ldr r2, _080E3AC4 @ =gBattleAnimArgs ldrh r0, [r2] strh r0, [r1, 0xA] ldrh r0, [r2, 0x2] strh r0, [r1, 0xC] ldrh r0, [r2, 0x6] strh r0, [r1, 0xE] ldrh r0, [r1, 0x8] adds r0, 0x1 strh r0, [r1, 0x8] adds r0, r6, 0 bl DestroyAnimVisualTask pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080E3AC0: .4byte sub_80E3AD0 _080E3AC4: .4byte gBattleAnimArgs _080E3AC8: .4byte gAnimBankAttacker _080E3ACC: .4byte gTasks thumb_func_end sub_80E3A58 thumb_func_start sub_80E3AD0 sub_80E3AD0: @ 80E3AD0 push {r4-r7,lr} lsls r0, 24 lsrs r5, r0, 24 ldr r0, _080E3B3C @ =gTasks lsls r1, r5, 2 adds r1, r5 lsls r1, 3 adds r1, r0 ldrh r3, [r1, 0xA] ldrh r0, [r1, 0x1C] adds r3, r0 movs r4, 0 mov r12, r4 strh r3, [r1, 0x1C] ldrh r2, [r1, 0xC] ldrh r7, [r1, 0x1E] adds r2, r7 strh r2, [r1, 0x1E] ldr r6, _080E3B40 @ =gBattle_BG3_X lsls r0, r3, 16 asrs r0, 24 ldrh r4, [r6] adds r0, r4 strh r0, [r6] ldr r4, _080E3B44 @ =gBattle_BG3_Y lsls r0, r2, 16 asrs r0, 24 ldrh r7, [r4] adds r0, r7 strh r0, [r4] movs r0, 0xFF ands r3, r0 strh r3, [r1, 0x1C] ands r2, r0 strh r2, [r1, 0x1E] ldr r0, _080E3B48 @ =gBattleAnimArgs movs r3, 0xE ldrsh r2, [r0, r3] movs r7, 0xE ldrsh r0, [r1, r7] cmp r2, r0 bne _080E3B36 mov r0, r12 strh r0, [r6] strh r0, [r4] movs r0, 0x1 bl sub_80789D4 adds r0, r5, 0 bl DestroyTask _080E3B36: pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080E3B3C: .4byte gTasks _080E3B40: .4byte gBattle_BG3_X _080E3B44: .4byte gBattle_BG3_Y _080E3B48: .4byte gBattleAnimArgs thumb_func_end sub_80E3AD0 thumb_func_start sub_80E3B4C sub_80E3B4C: @ 80E3B4C push {r4,lr} adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 ldr r0, _080E3B70 @ =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide ldr r1, _080E3B74 @ =gBattleAnimArgs lsls r0, 24 lsrs r0, 24 strh r0, [r1, 0xE] adds r0, r4, 0 bl DestroyAnimVisualTask pop {r4} pop {r0} bx r0 .align 2, 0 _080E3B70: .4byte gAnimBankAttacker _080E3B74: .4byte gBattleAnimArgs thumb_func_end sub_80E3B4C thumb_func_start sub_80E3B78 sub_80E3B78: @ 80E3B78 push {r4,lr} adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 ldr r0, _080E3B9C @ =gAnimBankTarget ldrb r0, [r0] bl GetBankSide ldr r1, _080E3BA0 @ =gBattleAnimArgs lsls r0, 24 lsrs r0, 24 strh r0, [r1, 0xE] adds r0, r4, 0 bl DestroyAnimVisualTask pop {r4} pop {r0} bx r0 .align 2, 0 _080E3B9C: .4byte gAnimBankTarget _080E3BA0: .4byte gBattleAnimArgs thumb_func_end sub_80E3B78 thumb_func_start sub_80E3BA4 sub_80E3BA4: @ 80E3BA4 push {r4,r5,lr} lsls r0, 24 lsrs r3, r0, 24 ldr r5, _080E3BD0 @ =gBattleAnimArgs movs r4, 0 ldr r0, _080E3BD4 @ =gAnimBankAttacker ldrb r2, [r0] movs r0, 0x2 ldr r1, _080E3BD8 @ =gAnimBankTarget eors r0, r2 ldrb r1, [r1] cmp r0, r1 bne _080E3BC0 movs r4, 0x1 _080E3BC0: strh r4, [r5, 0xE] adds r0, r3, 0 bl DestroyAnimVisualTask pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080E3BD0: .4byte gBattleAnimArgs _080E3BD4: .4byte gAnimBankAttacker _080E3BD8: .4byte gAnimBankTarget thumb_func_end sub_80E3BA4 thumb_func_start sub_80E3BDC sub_80E3BDC: @ 80E3BDC push {r4-r7,lr} lsls r0, 24 lsrs r5, r0, 24 movs r4, 0 ldr r6, _080E3C3C @ =gSprites _080E3BE6: ldr r0, _080E3C40 @ =gAnimBankAttacker ldrb r0, [r0] cmp r4, r0 beq _080E3C24 lsls r0, r4, 24 lsrs r0, 24 bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _080E3C24 ldr r0, _080E3C44 @ =gObjectBankIDs adds r0, r4, r0 ldrb r0, [r0] lsls r2, r0, 4 adds r2, r0 lsls r2, 2 adds r2, r6 ldr r1, _080E3C48 @ =gBattleAnimArgs adds r2, 0x3E movs r0, 0x1 ldrb r3, [r1] ands r3, r0 lsls r3, 2 ldrb r0, [r2] movs r7, 0x5 negs r7, r7 adds r1, r7, 0 ands r0, r1 orrs r0, r3 strb r0, [r2] _080E3C24: adds r0, r4, 0x1 lsls r0, 16 lsrs r4, r0, 16 cmp r4, 0x3 bls _080E3BE6 adds r0, r5, 0 bl DestroyAnimVisualTask pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080E3C3C: .4byte gSprites _080E3C40: .4byte gAnimBankAttacker _080E3C44: .4byte gObjectBankIDs _080E3C48: .4byte gBattleAnimArgs thumb_func_end sub_80E3BDC thumb_func_start sub_80E3C4C sub_80E3C4C: @ 80E3C4C push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x1C ldr r1, [sp, 0x3C] ldr r4, [sp, 0x40] ldr r5, [sp, 0x44] ldr r6, [sp, 0x48] lsls r0, 24 lsrs r0, 24 mov r9, r0 lsls r2, 16 lsrs r2, 16 str r2, [sp, 0xC] lsls r3, 24 lsrs r7, r3, 24 lsls r1, 24 lsrs r1, 24 mov r8, r1 lsls r4, 24 lsrs r4, 24 str r4, [sp, 0x10] lsls r5, 24 lsrs r5, 24 str r5, [sp, 0x14] lsls r6, 24 lsrs r6, 24 mov r10, r6 movs r0, 0 str r0, [sp, 0x18] movs r0, 0x2 adds r6, r7, 0 eors r6, r0 bl IsContest lsls r0, 24 cmp r0, 0 bne _080E3CAE mov r1, r8 cmp r1, 0 beq _080E3CB2 adds r0, r6, 0 bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 bne _080E3CB2 _080E3CAE: movs r2, 0 mov r8, r2 _080E3CB2: ldr r0, _080E3D34 @ =gBattle_WIN0H movs r1, 0 strh r1, [r0] ldr r0, _080E3D38 @ =gBattle_WIN0V strh r1, [r0] ldr r1, _080E3D3C @ =REG_WININ ldr r3, _080E3D40 @ =0x00003f3f adds r0, r3, 0 strh r0, [r1] adds r1, 0x2 ldr r2, _080E3D44 @ =0x00003f3d adds r0, r2, 0 strh r0, [r1] movs r2, 0x80 lsls r2, 19 ldrh r0, [r2] movs r3, 0x80 lsls r3, 8 adds r1, r3, 0 orrs r0, r1 strh r0, [r2] ldr r1, _080E3D48 @ =REG_BLDCNT ldr r2, _080E3D4C @ =0x00003f42 adds r0, r2, 0 strh r0, [r1] adds r1, 0x2 movs r3, 0x80 lsls r3, 5 adds r0, r3, 0 strh r0, [r1] ldr r4, _080E3D50 @ =REG_BG1CNT ldrb r1, [r4] movs r0, 0x4 negs r0, r0 ands r0, r1 strb r0, [r4] ldrb r1, [r4, 0x1] movs r0, 0x3F ands r0, r1 strb r0, [r4, 0x1] ldrb r0, [r4, 0x1] movs r1, 0x20 orrs r0, r1 strb r0, [r4, 0x1] bl IsContest lsls r0, 24 cmp r0, 0 bne _080E3D22 ldrb r0, [r4] movs r1, 0xD negs r1, r1 ands r1, r0 movs r0, 0x4 orrs r1, r0 strb r1, [r4] _080E3D22: bl IsContest lsls r0, 24 cmp r0, 0 beq _080E3D58 ldr r0, _080E3D54 @ =gSharedMem + 0x19348 ldrh r4, [r0] b _080E3D96 .align 2, 0 _080E3D34: .4byte gBattle_WIN0H _080E3D38: .4byte gBattle_WIN0V _080E3D3C: .4byte REG_WININ _080E3D40: .4byte 0x00003f3f _080E3D44: .4byte 0x00003f3d _080E3D48: .4byte REG_BLDCNT _080E3D4C: .4byte 0x00003f42 _080E3D50: .4byte REG_BG1CNT _080E3D54: .4byte gSharedMem + 0x19348 _080E3D58: adds r0, r7, 0 bl GetBankSide lsls r0, 24 cmp r0, 0 beq _080E3D7C ldr r1, _080E3D74 @ =gBattlePartyID lsls r0, r7, 1 adds r0, r1 ldrh r1, [r0] movs r0, 0x64 muls r0, r1 ldr r1, _080E3D78 @ =gEnemyParty b _080E3D8A .align 2, 0 _080E3D74: .4byte gBattlePartyID _080E3D78: .4byte gEnemyParty _080E3D7C: ldr r1, _080E3E48 @ =gBattlePartyID lsls r0, r7, 1 adds r0, r1 ldrh r1, [r0] movs r0, 0x64 muls r0, r1 ldr r1, _080E3E4C @ =gPlayerParty _080E3D8A: adds r0, r1 movs r1, 0xB bl GetMonData lsls r0, 16 lsrs r4, r0, 16 _080E3D96: ldr r5, _080E3E50 @ =gObjectBankIDs adds r0, r7, r5 ldrb r1, [r0] adds r0, r7, 0 adds r2, r4, 0 bl sub_807A4A0 lsls r0, 24 lsrs r7, r0, 24 mov r0, r8 cmp r0, 0 beq _080E3DC0 adds r0, r6, r5 ldrb r1, [r0] adds r0, r6, 0 adds r2, r4, 0 bl sub_807A4A0 lsls r0, 24 lsrs r0, 24 str r0, [sp, 0x18] _080E3DC0: mov r0, sp bl sub_8078914 ldr r1, [sp, 0x4] ldr r0, [sp, 0x50] bl LZDecompressVram bl IsContest lsls r0, 24 cmp r0, 0 beq _080E3DE6 mov r0, sp ldrb r0, [r0, 0x8] ldr r1, [sp, 0x4] movs r2, 0 movs r3, 0 bl sub_80763FC _080E3DE6: ldr r1, [sp] ldr r0, [sp, 0x4C] bl LZDecompressVram mov r0, sp ldrb r1, [r0, 0x8] lsls r1, 4 ldr r0, [sp, 0x54] movs r2, 0x20 bl LoadCompressedPalette ldr r0, _080E3E54 @ =gBattle_BG1_X movs r1, 0 strh r1, [r0] ldr r0, _080E3E58 @ =gBattle_BG1_Y strh r1, [r0] ldr r1, _080E3E5C @ =gTasks mov r2, r9 lsls r0, r2, 2 add r0, r9 lsls r0, 3 adds r0, r1 mov r3, sp ldrh r3, [r3, 0xC] strh r3, [r0, 0xA] mov r1, sp ldrh r1, [r1, 0x10] strh r1, [r0, 0x10] mov r2, r10 strh r2, [r0, 0x12] mov r3, sp ldrh r3, [r3, 0x14] strh r3, [r0, 0x14] strh r7, [r0, 0x8] mov r1, r8 strh r1, [r0, 0xC] mov r2, sp ldrh r2, [r2, 0x18] strh r2, [r0, 0xE] ldr r1, _080E3E60 @ =sub_80E3E64 str r1, [r0] add sp, 0x1C pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080E3E48: .4byte gBattlePartyID _080E3E4C: .4byte gPlayerParty _080E3E50: .4byte gObjectBankIDs _080E3E54: .4byte gBattle_BG1_X _080E3E58: .4byte gBattle_BG1_Y _080E3E5C: .4byte gTasks _080E3E60: .4byte sub_80E3E64 thumb_func_end sub_80E3C4C thumb_func_start sub_80E3E64 sub_80E3E64: @ 80E3E64 push {r4-r7,lr} lsls r0, 24 lsrs r6, r0, 24 ldr r1, _080E3E9C @ =gTasks lsls r0, r6, 2 adds r0, r6 lsls r0, 3 adds r3, r0, r1 movs r0, 0xA ldrsh r2, [r3, r0] adds r5, r1, 0 cmp r2, 0 bge _080E3E80 negs r2, r2 _080E3E80: ldrh r0, [r3, 0x22] adds r4, r0, r2 strh r4, [r3, 0x22] movs r1, 0xA ldrsh r0, [r3, r1] cmp r0, 0 bge _080E3EA4 ldr r2, _080E3EA0 @ =gBattle_BG1_Y lsls r1, r4, 16 asrs r1, 24 ldrh r0, [r2] subs r0, r1 strh r0, [r2] b _080E3EB0 .align 2, 0 _080E3E9C: .4byte gTasks _080E3EA0: .4byte gBattle_BG1_Y _080E3EA4: ldr r1, _080E3ED4 @ =gBattle_BG1_Y lsls r0, r4, 16 asrs r0, 24 ldrh r2, [r1] adds r0, r2 strh r0, [r1] _080E3EB0: lsls r0, r6, 2 adds r0, r6 lsls r0, 3 adds r4, r0, r5 ldrh r1, [r4, 0x22] movs r0, 0xFF ands r0, r1 movs r2, 0 strh r0, [r4, 0x22] movs r3, 0x26 ldrsh r0, [r4, r3] cmp r0, 0x1 beq _080E3F18 cmp r0, 0x1 bgt _080E3ED8 cmp r0, 0 beq _080E3EDE b _080E3FE2 .align 2, 0 _080E3ED4: .4byte gBattle_BG1_Y _080E3ED8: cmp r0, 0x2 beq _080E3F32 b _080E3FE2 _080E3EDE: ldrh r0, [r4, 0x1E] adds r1, r0, 0x1 strh r1, [r4, 0x1E] lsls r0, 16 asrs r0, 16 movs r3, 0x14 ldrsh r1, [r4, r3] cmp r0, r1 blt _080E3FE2 strh r2, [r4, 0x1E] ldrh r1, [r4, 0x20] adds r1, 0x1 strh r1, [r4, 0x20] ldr r2, _080E3F14 @ =REG_BLDALPHA movs r0, 0x10 subs r0, r1 lsls r0, 8 orrs r1, r0 strh r1, [r2] movs r0, 0x20 ldrsh r1, [r4, r0] movs r2, 0x10 ldrsh r0, [r4, r2] cmp r1, r0 bne _080E3FE2 b _080E3F2A .align 2, 0 _080E3F14: .4byte REG_BLDALPHA _080E3F18: ldrh r0, [r4, 0x1C] adds r0, 0x1 strh r0, [r4, 0x1C] lsls r0, 16 asrs r0, 16 movs r3, 0x12 ldrsh r1, [r4, r3] cmp r0, r1 bne _080E3FE2 _080E3F2A: ldrh r0, [r4, 0x26] adds r0, 0x1 strh r0, [r4, 0x26] b _080E3FE2 _080E3F32: ldrh r0, [r4, 0x1E] adds r1, r0, 0x1 strh r1, [r4, 0x1E] lsls r0, 16 asrs r0, 16 movs r3, 0x14 ldrsh r1, [r4, r3] cmp r0, r1 blt _080E3FE2 strh r2, [r4, 0x1E] ldrh r1, [r4, 0x20] subs r1, 0x1 strh r1, [r4, 0x20] ldr r7, _080E3FE8 @ =REG_BLDALPHA movs r0, 0x10 subs r0, r1 lsls r0, 8 orrs r1, r0 strh r1, [r7] movs r0, 0x20 ldrsh r5, [r4, r0] cmp r5, 0 bne _080E3FE2 movs r0, 0 bl sub_8076464 ldr r0, _080E3FEC @ =gBattle_WIN0H strh r5, [r0] ldr r0, _080E3FF0 @ =gBattle_WIN0V strh r5, [r0] ldr r0, _080E3FF4 @ =REG_WININ ldr r2, _080E3FF8 @ =0x00003f3f adds r1, r2, 0 strh r1, [r0] adds r0, 0x2 strh r1, [r0] bl IsContest lsls r0, 24 cmp r0, 0 bne _080E3F90 ldr r2, _080E3FFC @ =REG_BG1CNT ldrb r1, [r2] movs r0, 0xD negs r0, r0 ands r0, r1 strb r0, [r2] _080E3F90: movs r2, 0x80 lsls r2, 19 ldrh r0, [r2] movs r3, 0x80 lsls r3, 8 adds r1, r3, 0 eors r0, r1 strh r0, [r2] ldr r0, _080E4000 @ =REG_BLDCNT strh r5, [r0] strh r5, [r7] movs r0, 0x8 ldrsh r1, [r4, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 ldr r5, _080E4004 @ =gSprites adds r0, r5 bl DestroySprite movs r1, 0xC ldrsh r0, [r4, r1] cmp r0, 0 beq _080E3FD0 movs r2, 0xE ldrsh r1, [r4, r2] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r5 bl DestroySprite _080E3FD0: ldr r2, _080E3FFC @ =REG_BG1CNT ldrb r1, [r2, 0x1] movs r0, 0x21 negs r0, r0 ands r0, r1 strb r0, [r2, 0x1] adds r0, r6, 0 bl DestroyAnimVisualTask _080E3FE2: pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080E3FE8: .4byte REG_BLDALPHA _080E3FEC: .4byte gBattle_WIN0H _080E3FF0: .4byte gBattle_WIN0V _080E3FF4: .4byte REG_WININ _080E3FF8: .4byte 0x00003f3f _080E3FFC: .4byte REG_BG1CNT _080E4000: .4byte REG_BLDCNT _080E4004: .4byte gSprites thumb_func_end sub_80E3E64 thumb_func_start sub_80E4008 sub_80E4008: @ 80E4008 push {lr} lsls r0, 24 lsrs r0, 24 ldr r2, _080E4020 @ =gBattleAnimArgs ldr r1, _080E4024 @ =gBattleTerrain ldrb r1, [r1] strh r1, [r2] bl DestroyAnimVisualTask pop {r0} bx r0 .align 2, 0 _080E4020: .4byte gBattleAnimArgs _080E4024: .4byte gBattleTerrain thumb_func_end sub_80E4008 thumb_func_start sub_80E4028 sub_80E4028: @ 80E4028 push {r4-r6,lr} sub sp, 0xC lsls r0, 24 lsrs r6, r0, 24 movs r4, 0 ldr r0, _080E4068 @ =gBattleAnimArgs movs r1, 0 ldrsh r0, [r0, r1] cmp r0, 0 bne _080E406C str r4, [sp] str r4, [sp, 0x4] str r4, [sp, 0x8] movs r0, 0x1 movs r1, 0 movs r2, 0 movs r3, 0 bl sub_80791A8 adds r1, r0, 0 movs r0, 0x1 ands r0, r1 cmp r0, 0 bne _080E4084 movs r2, 0x1 _080E405A: lsrs r1, 1 adds r4, 0x1 adds r0, r1, 0 ands r0, r2 cmp r0, 0 beq _080E405A b _080E4084 .align 2, 0 _080E4068: .4byte gBattleAnimArgs _080E406C: cmp r0, 0x1 bne _080E4078 ldr r0, _080E4074 @ =gAnimBankAttacker b _080E407E .align 2, 0 _080E4074: .4byte gAnimBankAttacker _080E4078: cmp r0, 0x2 bne _080E4084 ldr r0, _080E409C @ =gAnimBankTarget _080E407E: ldrb r0, [r0] adds r4, r0, 0 adds r4, 0x10 _080E4084: ldr r0, _080E40A0 @ =gBattleAnimArgs movs r1, 0x2 ldrsh r0, [r0, r1] lsls r5, r0, 5 bl IsContest lsls r0, 24 cmp r0, 0 beq _080E40A8 ldr r0, _080E40A4 @ =gSharedMem + 0x14800 b _080E40AA .align 2, 0 _080E409C: .4byte gAnimBankTarget _080E40A0: .4byte gBattleAnimArgs _080E40A4: .4byte gSharedMem + 0x14800 _080E40A8: ldr r0, _080E40C8 @ =gSharedMem + 0x18000 _080E40AA: adds r2, r5, r0 lsls r1, r4, 5 ldr r0, _080E40CC @ =gPlttBufferUnfaded adds r1, r0 adds r0, r2, 0 movs r2, 0x20 bl memcpy adds r0, r6, 0 bl DestroyAnimVisualTask add sp, 0xC pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080E40C8: .4byte gSharedMem + 0x18000 _080E40CC: .4byte gPlttBufferUnfaded thumb_func_end sub_80E4028 thumb_func_start sub_80E40D0 sub_80E40D0: @ 80E40D0 push {r4-r6,lr} sub sp, 0xC lsls r0, 24 lsrs r6, r0, 24 movs r4, 0 ldr r0, _080E4110 @ =gBattleAnimArgs movs r1, 0 ldrsh r0, [r0, r1] cmp r0, 0 bne _080E4114 str r4, [sp] str r4, [sp, 0x4] str r4, [sp, 0x8] movs r0, 0x1 movs r1, 0 movs r2, 0 movs r3, 0 bl sub_80791A8 adds r1, r0, 0 movs r0, 0x1 ands r0, r1 cmp r0, 0 bne _080E412C movs r2, 0x1 _080E4102: lsrs r1, 1 adds r4, 0x1 adds r0, r1, 0 ands r0, r2 cmp r0, 0 beq _080E4102 b _080E412C .align 2, 0 _080E4110: .4byte gBattleAnimArgs _080E4114: cmp r0, 0x1 bne _080E4120 ldr r0, _080E411C @ =gAnimBankAttacker b _080E4126 .align 2, 0 _080E411C: .4byte gAnimBankAttacker _080E4120: cmp r0, 0x2 bne _080E412C ldr r0, _080E4148 @ =gAnimBankTarget _080E4126: ldrb r0, [r0] adds r4, r0, 0 adds r4, 0x10 _080E412C: lsls r1, r4, 5 ldr r0, _080E414C @ =gPlttBufferUnfaded adds r5, r1, r0 ldr r0, _080E4150 @ =gBattleAnimArgs movs r1, 0x2 ldrsh r0, [r0, r1] lsls r4, r0, 5 bl IsContest lsls r0, 24 cmp r0, 0 beq _080E4158 ldr r0, _080E4154 @ =gSharedMem + 0x14800 b _080E415A .align 2, 0 _080E4148: .4byte gAnimBankTarget _080E414C: .4byte gPlttBufferUnfaded _080E4150: .4byte gBattleAnimArgs _080E4154: .4byte gSharedMem + 0x14800 _080E4158: ldr r0, _080E4174 @ =gSharedMem + 0x18000 _080E415A: adds r1, r4, r0 adds r0, r5, 0 movs r2, 0x20 bl memcpy adds r0, r6, 0 bl DestroyAnimVisualTask add sp, 0xC pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080E4174: .4byte gSharedMem + 0x18000 thumb_func_end sub_80E40D0 thumb_func_start sub_80E4178 sub_80E4178: @ 80E4178 push {r4,r5,lr} sub sp, 0xC lsls r0, 24 lsrs r5, r0, 24 movs r4, 0 ldr r0, _080E41B8 @ =gBattleAnimArgs movs r1, 0 ldrsh r0, [r0, r1] cmp r0, 0 bne _080E41BC str r4, [sp] str r4, [sp, 0x4] str r4, [sp, 0x8] movs r0, 0x1 movs r1, 0 movs r2, 0 movs r3, 0 bl sub_80791A8 adds r1, r0, 0 movs r0, 0x1 ands r0, r1 cmp r0, 0 bne _080E41D4 movs r2, 0x1 _080E41AA: lsrs r1, 1 adds r4, 0x1 adds r0, r1, 0 ands r0, r2 cmp r0, 0 beq _080E41AA b _080E41D4 .align 2, 0 _080E41B8: .4byte gBattleAnimArgs _080E41BC: cmp r0, 0x1 bne _080E41C8 ldr r0, _080E41C4 @ =gAnimBankAttacker b _080E41CE .align 2, 0 _080E41C4: .4byte gAnimBankAttacker _080E41C8: cmp r0, 0x2 bne _080E41D4 ldr r0, _080E41F4 @ =gAnimBankTarget _080E41CE: ldrb r0, [r0] adds r4, r0, 0 adds r4, 0x10 _080E41D4: lsls r1, r4, 5 ldr r0, _080E41F8 @ =gPlttBufferUnfaded adds r0, r1, r0 ldr r2, _080E41FC @ =gPlttBufferFaded adds r1, r2 movs r2, 0x20 bl memcpy adds r0, r5, 0 bl DestroyAnimVisualTask add sp, 0xC pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080E41F4: .4byte gAnimBankTarget _080E41F8: .4byte gPlttBufferUnfaded _080E41FC: .4byte gPlttBufferFaded thumb_func_end sub_80E4178 thumb_func_start sub_80E4200 sub_80E4200: @ 80E4200 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 bl IsContest lsls r0, 24 lsrs r1, r0, 24 cmp r1, 0 beq _080E4220 ldr r1, _080E421C @ =gBattleAnimArgs movs r0, 0x1 strh r0, [r1, 0xE] b _080E4224 .align 2, 0 _080E421C: .4byte gBattleAnimArgs _080E4220: ldr r0, _080E4230 @ =gBattleAnimArgs strh r1, [r0, 0xE] _080E4224: adds r0, r4, 0 bl DestroyAnimVisualTask pop {r4} pop {r0} bx r0 .align 2, 0 _080E4230: .4byte gBattleAnimArgs thumb_func_end sub_80E4200 thumb_func_start sub_80E4234 sub_80E4234: @ 80E4234 push {lr} lsls r0, 24 lsrs r0, 24 ldr r2, _080E4254 @ =gAnimBankAttacker ldr r1, _080E4258 @ =gBankTarget ldrb r1, [r1] strb r1, [r2] ldr r2, _080E425C @ =gAnimBankTarget ldr r1, _080E4260 @ =gEffectBank ldrb r1, [r1] strb r1, [r2] bl DestroyAnimVisualTask pop {r0} bx r0 .align 2, 0 _080E4254: .4byte gAnimBankAttacker _080E4258: .4byte gBankTarget _080E425C: .4byte gAnimBankTarget _080E4260: .4byte gEffectBank thumb_func_end sub_80E4234 thumb_func_start sub_80E4264 sub_80E4264: @ 80E4264 push {r4,r5,lr} lsls r0, 24 lsrs r5, r0, 24 ldr r0, _080E428C @ =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide adds r4, r0, 0 ldr r0, _080E4290 @ =gAnimBankTarget ldrb r0, [r0] bl GetBankSide lsls r4, 24 lsls r0, 24 cmp r4, r0 bne _080E4298 ldr r1, _080E4294 @ =gBattleAnimArgs movs r0, 0x1 b _080E429C .align 2, 0 _080E428C: .4byte gAnimBankAttacker _080E4290: .4byte gAnimBankTarget _080E4294: .4byte gBattleAnimArgs _080E4298: ldr r1, _080E42AC @ =gBattleAnimArgs movs r0, 0 _080E429C: strh r0, [r1, 0xE] adds r0, r5, 0 bl DestroyAnimVisualTask pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080E42AC: .4byte gBattleAnimArgs thumb_func_end sub_80E4264 thumb_func_start sub_80E42B0 sub_80E42B0: @ 80E42B0 push {lr} lsls r0, 24 lsrs r0, 24 ldr r2, _080E42C8 @ =gAnimBankTarget ldr r1, _080E42CC @ =gBankTarget ldrb r1, [r1] strb r1, [r2] bl DestroyAnimVisualTask pop {r0} bx r0 .align 2, 0 _080E42C8: .4byte gAnimBankTarget _080E42CC: .4byte gBankTarget thumb_func_end sub_80E42B0 thumb_func_start sub_80E42D0 sub_80E42D0: @ 80E42D0 push {lr} lsls r0, 24 lsrs r0, 24 ldr r2, _080E42F0 @ =gAnimBankAttacker ldr r1, _080E42F4 @ =gBankAttacker ldrb r1, [r1] strb r1, [r2] ldr r2, _080E42F8 @ =gAnimBankTarget ldr r1, _080E42FC @ =gEffectBank ldrb r1, [r1] strb r1, [r2] bl DestroyAnimVisualTask pop {r0} bx r0 .align 2, 0 _080E42F0: .4byte gAnimBankAttacker _080E42F4: .4byte gBankAttacker _080E42F8: .4byte gAnimBankTarget _080E42FC: .4byte gEffectBank thumb_func_end sub_80E42D0 thumb_func_start sub_80E4300 sub_80E4300: @ 80E4300 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 bl IsContest lsls r0, 24 cmp r0, 0 beq _080E4318 adds r0, r4, 0 bl DestroyAnimVisualTask b _080E434E _080E4318: ldr r0, _080E4354 @ =gTasks lsls r3, r4, 2 adds r3, r4 lsls r3, 3 adds r3, r0 ldr r1, _080E4358 @ =gAnimBankAttacker ldrb r0, [r1] lsls r0, 2 ldr r2, _080E435C @ =gSharedMem + 0x17800 adds r0, r2 ldr r0, [r0] lsls r0, 31 lsrs r0, 31 strh r0, [r3, 0x8] ldrb r1, [r1] lsls r1, 2 adds r1, r2 ldrb r0, [r1] movs r2, 0x1 orrs r0, r2 strb r0, [r1] ldr r0, _080E4360 @ =sub_80E4368 str r0, [r3] ldr r1, _080E4364 @ =gAnimVisualTaskCount ldrb r0, [r1] subs r0, 0x1 strb r0, [r1] _080E434E: pop {r4} pop {r0} bx r0 .align 2, 0 _080E4354: .4byte gTasks _080E4358: .4byte gAnimBankAttacker _080E435C: .4byte gSharedMem + 0x17800 _080E4360: .4byte sub_80E4368 _080E4364: .4byte gAnimVisualTaskCount thumb_func_end sub_80E4300 thumb_func_start sub_80E4368 sub_80E4368: @ 80E4368 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 ldr r0, _080E43B0 @ =gBattleAnimArgs movs r2, 0xE ldrsh r1, [r0, r2] movs r0, 0x80 lsls r0, 5 cmp r1, r0 bne _080E43A8 ldr r0, _080E43B4 @ =gAnimBankAttacker ldrb r3, [r0] lsls r3, 2 ldr r0, _080E43B8 @ =gSharedMem + 0x17800 adds r3, r0 ldr r1, _080E43BC @ =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 ldrb r0, [r0, 0x8] movs r1, 0x1 ands r1, r0 ldrb r2, [r3] movs r0, 0x2 negs r0, r0 ands r0, r2 orrs r0, r1 strb r0, [r3] adds r0, r4, 0 bl DestroyTask _080E43A8: pop {r4} pop {r0} bx r0 .align 2, 0 _080E43B0: .4byte gBattleAnimArgs _080E43B4: .4byte gAnimBankAttacker _080E43B8: .4byte gSharedMem + 0x17800 _080E43BC: .4byte gTasks thumb_func_end sub_80E4368 .align 2, 0 @ Don't pad with nop.