diff options
Diffstat (limited to 'asm/normal.s')
-rwxr-xr-x | asm/normal.s | 5031 |
1 files changed, 5031 insertions, 0 deletions
diff --git a/asm/normal.s b/asm/normal.s new file mode 100755 index 000000000..38c5b7141 --- /dev/null +++ b/asm/normal.s @@ -0,0 +1,5031 @@ + .include "constants/gba_constants.inc" + .include "constants/species_constants.inc" + .include "asm/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 @ =gBattleAnimBankAttacker + 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 gBattleAnimBankAttacker +_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 move_anim_8072740 +_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 move_anim_8072740 +_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 move_anim_8072740 +_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 @ =gBattleAnimBankAttacker + ldrb r6, [r0] + ldr r0, _080E23A0 @ =gBattleAnimBankTarget + 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 gBattleAnimBankAttacker +_080E23A0: .4byte gBattleAnimBankTarget +_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 @ =gBattleAnimBankAttacker + ldrb r0, [r0] + mov r9, r0 + ldr r0, _080E24A8 @ =gBattleAnimBankTarget + 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 gBattleAnimBankAttacker +_080E24A8: .4byte gBattleAnimBankTarget +_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 @ =gUnknown_030041B0 + b _080E250A + .align 2, 0 +_080E24FC: .4byte gUnknown_030041B0 +_080E2500: + ldr r1, _080E2504 @ =gUnknown_030041B8 + b _080E250A + .align 2, 0 +_080E2504: .4byte gUnknown_030041B8 +_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 move_anim_8072740 +_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 @ =gBattleAnimBankAttacker + 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 @ =gBattleAnimBankTarget + 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 gBattleAnimBankAttacker +_080E268C: .4byte gBattleAnimBankTarget +_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 @ =gUnknown_030041B0 + ldrh r1, [r3] + strh r1, [r4] + ldr r4, _080E2708 @ =gUnknown_030041B8 + 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 gUnknown_030041B0 +_080E2708: .4byte gUnknown_030041B8 +_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 @ =gUnknown_030041B0 + 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 gUnknown_030041B0 +_080E2748: + ldrh r0, [r3, 0x8] +_080E274A: + strh r0, [r6] + ldr r2, _080E2768 @ =gUnknown_030041B8 + 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 gUnknown_030041B8 +_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 @ =move_anim_8072740 + adds r0, r5, 0 + bl StoreSpriteCallbackInData + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080E27E0: .4byte sub_80785E4 +_080E27E4: .4byte move_anim_8072740 + 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 @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + beq _080E285C + bl NotInBattle + 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 gBattleAnimBankAttacker +_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 @ =move_anim_8072740 + 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 move_anim_8072740 +_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 move_anim_8072740 +_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 @ =gBattleAnimBankAttacker + b _080E2AE2 + .align 2, 0 +_080E2AD8: .4byte gBattleAnimBankAttacker +_080E2ADC: + movs r5, 0 +_080E2ADE: + mov r0, sp + ldr r1, _080E2AE8 @ =gBattleAnimBankTarget +_080E2AE2: + ldrb r1, [r1] + strb r1, [r0] + b _080E2B26 + .align 2, 0 +_080E2AE8: .4byte gBattleAnimBankTarget +_080E2AEC: + mov r1, sp + ldr r0, _080E2AFC @ =gBattleAnimBankAttacker + ldrb r0, [r0] + strb r0, [r1] + ldr r0, _080E2B00 @ =gBattleAnimBankTarget + ldrb r0, [r0] + strb r0, [r1, 0x1] + b _080E2B26 + .align 2, 0 +_080E2AFC: .4byte gBattleAnimBankAttacker +_080E2B00: .4byte gBattleAnimBankTarget +_080E2B04: + mov r1, sp + movs r0, 0xFF + strb r0, [r1] + b _080E2B26 +_080E2B0C: + movs r5, 0 + mov r2, sp + ldr r0, _080E2B14 @ =gBattleAnimBankAttacker + b _080E2B1E + .align 2, 0 +_080E2B14: .4byte gBattleAnimBankAttacker +_080E2B18: + movs r5, 0 + mov r2, sp + ldr r0, _080E2B70 @ =gBattleAnimBankTarget +_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 gBattleAnimBankTarget + 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 @ =gUnknown_030042C4 + strh r7, [r0] + ldr r0, _080E303C @ =gUnknown_03004240 + 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 NotInBattle + 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 NotInBattle + lsls r0, 24 + cmp r0, 0 + bne _080E3028 + ldr r5, _080E305C @ =gBattleAnimBankAttacker + 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 NotInBattle + lsls r0, 24 + cmp r0, 0 + beq _080E306C + ldr r0, _080E3068 @ =gSharedMem + 0x19348 + ldrh r4, [r0] + b _080E30B4 + .align 2, 0 +_080E3038: .4byte gUnknown_030042C4 +_080E303C: .4byte gUnknown_03004240 +_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 gBattleAnimBankAttacker +_080E3060: .4byte gSprites +_080E3064: .4byte gObjectBankIDs +_080E3068: .4byte gSharedMem + 0x19348 +_080E306C: + ldr r4, _080E308C @ =gBattleAnimBankAttacker + 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 gBattleAnimBankAttacker +_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 @ =gBattleAnimBankAttacker + 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 NotInBattle + 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 @ =gUnknown_030042C0 + 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 @ =gUnknown_030041B4 + 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 gBattleAnimBankAttacker +_080E316C: .4byte 0x040000d4 +_080E3170: .4byte 0x85000400 +_080E3174: .4byte gUnknown_08D20A30 +_080E3178: .4byte gUnknown_08D20A14 +_080E317C: .4byte gUnknown_083DB568 +_080E3180: .4byte gUnknown_030042C0 +_080E3184: .4byte gSprites +_080E3188: .4byte gUnknown_030041B4 +_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 @ =gUnknown_030041B4 + 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 @ =gUnknown_030042C4 + strh r5, [r0] + ldr r0, _080E32B8 @ =gUnknown_03004240 + 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 NotInBattle + 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 @ =gBattleAnimBankAttacker + 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 gUnknown_030041B4 +_080E32B4: .4byte gUnknown_030042C4 +_080E32B8: .4byte gUnknown_03004240 +_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 gBattleAnimBankAttacker + 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 @ =gBattleAnimBankAttacker + b _080E3392 + .align 2, 0 +_080E3388: .4byte gTasks +_080E338C: .4byte gBattleAnimBankAttacker +_080E3390: + ldr r0, _080E34B4 @ =gBattleAnimBankTarget +_080E3392: + ldrb r5, [r0] + movs r0, 0x2 + mov r8, r5 + mov r2, r8 + eors r2, r0 + mov r8, r2 + bl NotInBattle + 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 @ =gUnknown_030042C4 + movs r1, 0 + strh r1, [r0] + ldr r0, _080E34BC @ =gUnknown_03004240 + 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 NotInBattle + 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 NotInBattle + lsls r0, 24 + cmp r0, 0 + beq _080E34E4 + ldr r0, _080E34E0 @ =gSharedMem + 0x19348 + ldrh r4, [r0] + b _080E3522 + .align 2, 0 +_080E34B4: .4byte gBattleAnimBankTarget +_080E34B8: .4byte gUnknown_030042C4 +_080E34BC: .4byte gUnknown_03004240 +_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 NotInBattle + 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 @ =gUnknown_030042C0 + movs r1, 0 + strh r1, [r2] + ldr r0, _080E364C @ =gUnknown_030041B4 + 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 gUnknown_030042C0 +_080E364C: .4byte gUnknown_030041B4 +_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 sub_8077094 + 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 sub_8077094 + 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 @ =gUnknown_030041B4 + 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 gUnknown_030041B4 +_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 @ =gUnknown_030042C4 + strh r5, [r0] + ldr r0, _080E3874 @ =gUnknown_03004240 + 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 NotInBattle + 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 gUnknown_030042C4 +_080E3874: .4byte gUnknown_03004240 +_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 @ =gBattleAnimBankAttacker + 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 gBattleAnimBankAttacker +_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 @ =gBattleAnimBankAttacker + 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 gBattleAnimBankAttacker +_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 @ =gUnknown_030041B0 + lsls r0, r3, 16 + asrs r0, 24 + ldrh r4, [r6] + adds r0, r4 + strh r0, [r6] + ldr r4, _080E3B44 @ =gUnknown_030041B8 + 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 gUnknown_030041B0 +_080E3B44: .4byte gUnknown_030041B8 +_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 @ =gBattleAnimBankAttacker + 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 gBattleAnimBankAttacker +_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 @ =gBattleAnimBankTarget + 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 gBattleAnimBankTarget +_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 @ =gBattleAnimBankAttacker + ldrb r2, [r0] + movs r0, 0x2 + ldr r1, _080E3BD8 @ =gBattleAnimBankTarget + 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 gBattleAnimBankAttacker +_080E3BD8: .4byte gBattleAnimBankTarget + 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 @ =gBattleAnimBankAttacker + 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 gBattleAnimBankAttacker +_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 NotInBattle + 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 @ =gUnknown_030042C4 + movs r1, 0 + strh r1, [r0] + ldr r0, _080E3D38 @ =gUnknown_03004240 + 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 NotInBattle + 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 NotInBattle + lsls r0, 24 + cmp r0, 0 + beq _080E3D58 + ldr r0, _080E3D54 @ =gSharedMem + 0x19348 + ldrh r4, [r0] + b _080E3D96 + .align 2, 0 +_080E3D34: .4byte gUnknown_030042C4 +_080E3D38: .4byte gUnknown_03004240 +_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 NotInBattle + 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 @ =gUnknown_030042C0 + movs r1, 0 + strh r1, [r0] + ldr r0, _080E3E58 @ =gUnknown_030041B4 + 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 gUnknown_030042C0 +_080E3E58: .4byte gUnknown_030041B4 +_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 @ =gUnknown_030041B4 + 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 gUnknown_030041B4 +_080E3EA4: + ldr r1, _080E3ED4 @ =gUnknown_030041B4 + 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 gUnknown_030041B4 +_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 @ =gUnknown_030042C4 + strh r5, [r0] + ldr r0, _080E3FF0 @ =gUnknown_03004240 + 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 NotInBattle + 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 gUnknown_030042C4 +_080E3FF0: .4byte gUnknown_03004240 +_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 @ =gBattleAnimBankAttacker + b _080E407E + .align 2, 0 +_080E4074: .4byte gBattleAnimBankAttacker +_080E4078: + cmp r0, 0x2 + bne _080E4084 + ldr r0, _080E409C @ =gBattleAnimBankTarget +_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 NotInBattle + lsls r0, 24 + cmp r0, 0 + beq _080E40A8 + ldr r0, _080E40A4 @ =gSharedMem + 0x14800 + b _080E40AA + .align 2, 0 +_080E409C: .4byte gBattleAnimBankTarget +_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 @ =gBattleAnimBankAttacker + b _080E4126 + .align 2, 0 +_080E411C: .4byte gBattleAnimBankAttacker +_080E4120: + cmp r0, 0x2 + bne _080E412C + ldr r0, _080E4148 @ =gBattleAnimBankTarget +_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 NotInBattle + lsls r0, 24 + cmp r0, 0 + beq _080E4158 + ldr r0, _080E4154 @ =gSharedMem + 0x14800 + b _080E415A + .align 2, 0 +_080E4148: .4byte gBattleAnimBankTarget +_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 @ =gBattleAnimBankAttacker + b _080E41CE + .align 2, 0 +_080E41C4: .4byte gBattleAnimBankAttacker +_080E41C8: + cmp r0, 0x2 + bne _080E41D4 + ldr r0, _080E41F4 @ =gBattleAnimBankTarget +_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 gBattleAnimBankTarget +_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 NotInBattle + 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 @ =gBattleAnimBankAttacker + ldr r1, _080E4258 @ =gBankTarget + ldrb r1, [r1] + strb r1, [r2] + ldr r2, _080E425C @ =gBattleAnimBankTarget + ldr r1, _080E4260 @ =gEffectBank + ldrb r1, [r1] + strb r1, [r2] + bl DestroyAnimVisualTask + pop {r0} + bx r0 + .align 2, 0 +_080E4254: .4byte gBattleAnimBankAttacker +_080E4258: .4byte gBankTarget +_080E425C: .4byte gBattleAnimBankTarget +_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 @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl GetBankSide + adds r4, r0, 0 + ldr r0, _080E4290 @ =gBattleAnimBankTarget + 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 gBattleAnimBankAttacker +_080E4290: .4byte gBattleAnimBankTarget +_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 @ =gBattleAnimBankTarget + ldr r1, _080E42CC @ =gBankTarget + ldrb r1, [r1] + strb r1, [r2] + bl DestroyAnimVisualTask + pop {r0} + bx r0 + .align 2, 0 +_080E42C8: .4byte gBattleAnimBankTarget +_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 @ =gBattleAnimBankAttacker + ldr r1, _080E42F4 @ =gBankAttacker + ldrb r1, [r1] + strb r1, [r2] + ldr r2, _080E42F8 @ =gBattleAnimBankTarget + ldr r1, _080E42FC @ =gEffectBank + ldrb r1, [r1] + strb r1, [r2] + bl DestroyAnimVisualTask + pop {r0} + bx r0 + .align 2, 0 +_080E42F0: .4byte gBattleAnimBankAttacker +_080E42F4: .4byte gBankAttacker +_080E42F8: .4byte gBattleAnimBankTarget +_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 NotInBattle + 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 @ =gBattleAnimBankAttacker + 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 gBattleAnimBankAttacker +_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 @ =gBattleAnimBankAttacker + 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 gBattleAnimBankAttacker +_080E43B8: .4byte gSharedMem + 0x17800 +_080E43BC: .4byte gTasks + thumb_func_end sub_80E4368 + + .align 2, 0 @ Don't pad with nop. |