diff --git a/asm/battle_2.s b/asm/battle_2.s new file mode 100644 index 000000000..cd4d649c1 --- /dev/null +++ b/asm/battle_2.s @@ -0,0 +1,16487 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + + thumb_func_start sub_8036760 +sub_8036760: @ 8036760 + push {lr} + bl MoveSaveBlocks_ResetHeap + bl sub_8056F28 + bl dp11_init + bl init_uns_table_pokemon_copy + bl sub_8185F84 + ldr r0, =gBattleTypeFlags + ldr r1, [r0] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _080367CC + movs r0, 0x80 + lsls r0, 17 + ands r0, r1 + cmp r0, 0 + beq _08036798 + bl InitBattle + b _080367BA + .pool +_08036798: + movs r0, 0x80 + lsls r0, 15 + ands r1, r0 + cmp r1, 0 + bne _080367B4 + bl battle_wireless_setup_if_required_maybe + ldr r0, =sub_8037ADC + bl SetMainCallback2 + b _080367BA + .pool +_080367B4: + ldr r0, =intro_end + bl SetMainCallback2 +_080367BA: + ldr r1, =gBattleCommunication + movs r0, 0 + strb r0, [r1] + b _080367D0 + .pool +_080367CC: + bl InitBattle +_080367D0: + pop {r0} + bx r0 + thumb_func_end sub_8036760 + + thumb_func_start InitBattle +InitBattle: @ 80367D4 + push {r4,r5,lr} + sub sp, 0x4 + movs r0, 0 + bl SetHBlankCallback + movs r0, 0 + bl SetVBlankCallback + movs r0, 0 + str r0, [sp] + movs r1, 0xC0 + lsls r1, 19 + ldr r2, =0x05006000 + mov r0, sp + bl CpuSet + movs r0, 0x4C + movs r1, 0 + bl SetGpuReg + movs r0, 0x40 + movs r1, 0xF0 + bl SetGpuReg + ldr r1, =0x00005051 + movs r0, 0x44 + bl SetGpuReg + movs r0, 0x48 + movs r1, 0 + bl SetGpuReg + movs r0, 0x4A + movs r1, 0 + bl SetGpuReg + ldr r0, =gUnknown_02022E24 + movs r2, 0xF0 + strh r2, [r0] + ldr r0, =gBattleTypeFlags + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 15 + ands r0, r1 + cmp r0, 0 + beq _08036870 + ldr r0, =gUnknown_02038BCE + ldrh r1, [r0] + ldr r0, =0x00000c03 + cmp r1, r0 + beq _08036870 + ldr r1, =gUnknown_02022E26 + movs r0, 0x9F + strh r0, [r1] + ldr r0, =gUnknown_02022E28 + strh r2, [r0] + ldr r1, =gUnknown_02022E2A + movs r0, 0x20 + strh r0, [r1] + b _080368BE + .pool +_08036870: + ldr r0, =gUnknown_02022E26 + ldr r2, =0x00005051 + adds r1, r2, 0 + strh r1, [r0] + bl dp12_8087EA4 + ldr r0, =gUnknown_02038C28 + movs r3, 0xF0 + movs r5, 0xF0 + lsls r5, 3 + adds r2, r0, r5 + movs r1, 0x4F +_08036888: + strh r3, [r0] + strh r3, [r2] + adds r2, 0x2 + adds r0, 0x2 + subs r1, 0x1 + cmp r1, 0 + bge _08036888 + movs r1, 0x50 + ldr r4, =gUnknown_0831AC70 + ldr r0, =gUnknown_02038C28 + ldr r3, =0x0000ff10 + movs r5, 0x82 + lsls r5, 4 + adds r2, r0, r5 + adds r0, 0xA0 +_080368A6: + strh r3, [r0] + strh r3, [r2] + adds r2, 0x2 + adds r0, 0x2 + adds r1, 0x1 + cmp r1, 0x9F + ble _080368A6 + ldr r0, [r4] + ldr r1, [r4, 0x4] + ldr r2, [r4, 0x8] + bl sub_80BA038 +_080368BE: + bl ResetPaletteFade + ldr r0, =gUnknown_02022E14 + movs r1, 0 + strh r1, [r0] + ldr r0, =gUnknown_02022E16 + strh r1, [r0] + ldr r0, =gUnknown_02022E18 + strh r1, [r0] + ldr r0, =gUnknown_02022E1A + strh r1, [r0] + ldr r0, =gUnknown_02022E1C + strh r1, [r0] + ldr r0, =gUnknown_02022E1E + strh r1, [r0] + ldr r0, =gUnknown_02022E20 + strh r1, [r0] + ldr r0, =gUnknown_02022E22 + strh r1, [r0] + bl sub_80B0BD0 + ldr r2, =gUnknown_02022FF0 + strb r0, [r2] + ldr r4, =gBattleTypeFlags + ldr r0, [r4] + movs r1, 0x80 + lsls r1, 17 + ands r0, r1 + cmp r0, 0 + beq _080368FE + movs r0, 0x8 + strb r0, [r2] +_080368FE: + bl c2_berry_program_update_menu + bl sub_8035AA4 + bl ResetSpriteData + bl ResetTasks + bl sub_8036154 + bl FreeAllSpritePalettes + ldr r1, =gReservedSpritePaletteCount + movs r0, 0x4 + strb r0, [r1] + ldr r0, =vblank_cb_08078BB4 + bl SetVBlankCallback + bl sub_803269C + ldr r2, [r4] + movs r1, 0xA0 + lsls r1, 1 + adds r0, r2, 0 + ands r0, r1 + cmp r0, r1 + beq _0803693E + ldr r1, =0x00400040 + adds r0, r2, 0 + ands r0, r1 + cmp r0, r1 + bne _08036994 +_0803693E: + ldr r0, =sub_8037458 + bl SetMainCallback2 + b _080369AE + .pool +_08036994: + movs r0, 0x40 + ands r2, r0 + cmp r2, 0 + beq _080369A8 + ldr r0, =sub_8037DF4 + bl SetMainCallback2 + b _080369AE + .pool +_080369A8: + ldr r0, =sub_8036FAC + bl SetMainCallback2 +_080369AE: + ldr r5, =gBattleTypeFlags + ldr r0, [r5] + ldr r1, =0x01000002 + ands r0, r1 + cmp r0, 0 + bne _080369E8 + ldr r4, =gEnemyParty + ldr r0, =gTrainerBattleOpponent_A + ldrh r1, [r0] + adds r0, r4, 0 + movs r2, 0x1 + bl CreateNPCTrainerParty + ldr r0, [r5] + movs r1, 0x80 + lsls r1, 8 + ands r0, r1 + cmp r0, 0 + beq _080369E4 + movs r1, 0x96 + lsls r1, 1 + adds r0, r4, r1 + ldr r1, =gTrainerBattleOpponent_B + ldrh r1, [r1] + movs r2, 0 + bl CreateNPCTrainerParty +_080369E4: + bl SetWildMonHeldItem +_080369E8: + ldr r1, =gMain + ldr r2, =0x00000439 + adds r1, r2 + ldrb r0, [r1] + movs r2, 0x2 + orrs r0, r2 + strb r0, [r1] + ldr r0, =gSaveBlock2Ptr + ldr r1, [r0] + ldr r5, =0x00000ca9 + adds r1, r5 + ldrb r2, [r1] + movs r0, 0x9 + negs r0, r0 + ands r0, r2 + strb r0, [r1] + ldr r4, =gPlayerParty + movs r0, 0xFA + lsls r0, 1 + adds r5, r4, r0 +_08036A10: + adds r0, r4, 0 + movs r1, 0x3 + bl AdjustFriendship + adds r4, 0x64 + cmp r4, r5 + ble _08036A10 + movs r1, 0 + ldr r0, =gBattleCommunication + strb r1, [r0] + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end InitBattle + + thumb_func_start sub_8036A5C +sub_8036A5C: @ 8036A5C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + movs r6, 0 + mov r9, r6 + movs r0, 0xCE + lsls r0, 1 + mov r10, r0 + mov r8, r6 +_08036A72: + movs r0, 0x64 + mov r4, r9 + muls r4, r0 + ldr r0, =gPlayerParty + adds r4, r0 + adds r0, r4, 0 + movs r1, 0x41 + bl GetMonData + lsls r0, 16 + lsrs r5, r0, 16 + adds r0, r4, 0 + movs r1, 0x39 + bl GetMonData + lsls r0, 16 + lsrs r7, r0, 16 + adds r0, r4, 0 + movs r1, 0x37 + bl GetMonData + adds r1, r0, 0 + cmp r5, 0 + beq _08036AEE + cmp r5, r10 + beq _08036ABA + cmp r7, 0 + beq _08036ABA + cmp r1, 0 + bne _08036ABA + movs r0, 0x1 + mov r2, r8 + lsls r0, r2 + orrs r6, r0 + lsls r0, r6, 16 + lsrs r6, r0, 16 +_08036ABA: + cmp r5, 0 + beq _08036AEE + cmp r7, 0 + beq _08036AD6 + cmp r5, r10 + beq _08036ACA + cmp r1, 0 + beq _08036AD6 +_08036ACA: + movs r0, 0x2 + mov r1, r8 + lsls r0, r1 + orrs r6, r0 + lsls r0, r6, 16 + lsrs r6, r0, 16 +_08036AD6: + cmp r5, 0 + beq _08036AEE + cmp r5, r10 + beq _08036AEE + cmp r7, 0 + bne _08036AEE + movs r0, 0x3 + mov r2, r8 + lsls r0, r2 + orrs r6, r0 + lsls r0, r6, 16 + lsrs r6, r0, 16 +_08036AEE: + movs r0, 0x2 + add r8, r0 + movs r1, 0x1 + add r9, r1 + mov r2, r9 + cmp r2, 0x5 + ble _08036A72 + ldr r4, =gBattleStruct + ldr r0, [r4] + movs r1, 0xC1 + lsls r1, 1 + adds r0, r1 + strb r6, [r0] + ldr r0, [r4] + ldr r5, =0x00000183 + adds r0, r5 + lsrs r1, r6, 8 + strb r1, [r0] + ldr r0, =0x000008d2 + bl FlagGet + ldr r1, [r4] + adds r1, r5 + lsls r0, 7 + ldrb r2, [r1] + orrs r0, r2 + strb r0, [r1] + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8036A5C + + thumb_func_start sub_8036B44 +sub_8036B44: @ 8036B44 + push {r4-r7,lr} + ldr r0, =gBattleStruct + ldr r5, [r0] + movs r0, 0xC2 + lsls r0, 1 + adds r4, r5, r0 + bl sub_80E162C + cmp r0, 0x1 + bne _08036BC0 + movs r2, 0 + ldr r7, =gSaveBlock1Ptr + movs r1, 0xC6 + lsls r1, 1 + adds r5, r1 + adds r6, r7, 0 + ldr r3, =0x000031f8 +_08036B66: + adds r0, r4, r2 + ldr r1, [r6] + adds r1, r3 + adds r1, r2 + ldrb r1, [r1] + strb r1, [r0] + adds r2, 0x1 + cmp r2, 0x5 + ble _08036B66 + adds r1, r4, r2 + movs r0, 0xFF + strb r0, [r1] + movs r2, 0 + adds r3, r5, 0 + ldr r6, =gSaveBlock1Ptr + ldr r5, =0x00003214 +_08036B86: + adds r0, r3, r2 + ldr r1, [r6] + adds r1, r5 + adds r1, r2 + ldrb r1, [r1] + strb r1, [r0] + adds r2, 0x1 + cmp r2, 0x11 + ble _08036B86 + ldr r0, [r7] + ldr r1, =0x00003226 + adds r0, r1 + ldrb r0, [r0] + strb r0, [r4, 0x7] + ldr r0, [r7] + adds r1, 0x1 + adds r0, r1 + ldrb r0, [r0] + b _08036C00 + .pool +_08036BC0: + movs r0, 0xAF + bl ItemIdToBerryType + lsls r0, 24 + lsrs r0, 24 + bl GetBerryInfo + adds r3, r0, 0 + movs r2, 0 + movs r0, 0xC6 + lsls r0, 1 + adds r5, r0 +_08036BD8: + adds r0, r4, r2 + adds r1, r3, r2 + ldrb r1, [r1] + strb r1, [r0] + adds r2, 0x1 + cmp r2, 0x5 + ble _08036BD8 + adds r1, r4, r2 + movs r0, 0xFF + strb r0, [r1] + adds r0, r5, 0 + movs r2, 0 + adds r1, r0, 0 + adds r1, 0x11 +_08036BF4: + strb r2, [r1] + subs r1, 0x1 + cmp r1, r0 + bge _08036BF4 + movs r0, 0 + strb r0, [r4, 0x7] +_08036C00: + strb r0, [r4, 0x1A] + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8036B44 + + thumb_func_start berry_801017C +berry_801017C: @ 8036C08 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + ldr r0, =gBattleTypeFlags + ldr r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _08036C20 + b _08036D4C +_08036C20: + bl sub_80E162C + cmp r0, 0x1 + bne _08036CDC + movs r5, 0 + ldr r3, =gEnigmaBerries + ldr r0, =gSaveBlock1Ptr + mov r8, r0 + adds r6, r3, 0 + mov r4, r8 + ldr r2, =0x000031f8 + adds r7, r3, 0 + adds r7, 0x38 +_08036C3A: + adds r1, r5, r6 + ldr r0, [r4] + adds r0, r2 + adds r0, r5 + ldrb r0, [r0] + strb r0, [r1] + adds r1, r5, r7 + ldr r0, [r4] + adds r0, r2 + adds r0, r5 + ldrb r0, [r0] + strb r0, [r1] + adds r5, 0x1 + cmp r5, 0x5 + ble _08036C3A + adds r1, r5, r3 + movs r0, 0xFF + strb r0, [r1] + adds r0, r3, 0 + adds r0, 0x38 + adds r0, r5, r0 + movs r1, 0x1 + negs r1, r1 + strb r1, [r0] + movs r5, 0 + adds r7, r3, 0 + adds r7, 0x8 + ldr r4, =gSaveBlock1Ptr + ldr r2, =0x00003214 + adds r6, r3, 0 + adds r6, 0x40 +_08036C78: + adds r1, r5, r7 + ldr r0, [r4] + adds r0, r2 + adds r0, r5 + ldrb r0, [r0] + strb r0, [r1] + adds r1, r5, r6 + ldr r0, [r4] + adds r0, r2 + adds r0, r5 + ldrb r0, [r0] + strb r0, [r1] + adds r5, 0x1 + cmp r5, 0x11 + ble _08036C78 + mov r1, r8 + ldr r0, [r1] + ldr r2, =0x00003226 + adds r0, r2 + ldrb r1, [r0] + strb r1, [r3, 0x7] + ldrb r0, [r0] + adds r1, r3, 0 + adds r1, 0x3F + strb r0, [r1] + mov r4, r8 + ldr r0, [r4] + ldr r1, =0x00003227 + adds r0, r1 + ldrb r1, [r0] + strb r1, [r3, 0x1A] + ldrb r1, [r0] + adds r0, r3, 0 + adds r0, 0x52 + strb r1, [r0] + b _08036EA0 + .pool +_08036CDC: + movs r0, 0xAF + bl ItemIdToBerryType + lsls r0, 24 + lsrs r0, 24 + bl GetBerryInfo + adds r6, r0, 0 + movs r5, 0 + ldr r4, =gEnigmaBerries + adds r7, r4, 0 + adds r7, 0x38 + adds r3, r4, 0 +_08036CF6: + adds r1, r5, r4 + adds r2, r6, r5 + ldrb r0, [r2] + strb r0, [r1] + adds r1, r5, r7 + ldrb r0, [r2] + strb r0, [r1] + adds r5, 0x1 + cmp r5, 0x5 + ble _08036CF6 + adds r1, r5, r3 + movs r0, 0xFF + strb r0, [r1] + adds r0, r3, 0 + adds r0, 0x38 + adds r0, r5, r0 + movs r1, 0x1 + negs r1, r1 + strb r1, [r0] + movs r5, 0 + adds r4, r3, 0 + adds r4, 0x8 + movs r1, 0 + adds r2, r3, 0 + adds r2, 0x40 +_08036D28: + adds r0, r5, r4 + strb r1, [r0] + adds r0, r5, r2 + strb r1, [r0] + adds r5, 0x1 + cmp r5, 0x11 + ble _08036D28 + movs r1, 0 + strb r1, [r3, 0x7] + adds r0, r3, 0 + adds r0, 0x3F + strb r1, [r0] + strb r1, [r3, 0x1A] + adds r0, 0x13 + strb r1, [r0] + b _08036EA0 + .pool +_08036D4C: + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _08036DF0 + movs r0, 0x80 + lsls r0, 1 + ands r1, r0 + movs r2, 0x4 + mov r8, r2 + cmp r1, 0 + beq _08036D66 + movs r4, 0x2 + mov r8, r4 +_08036D66: + movs r5, 0 + cmp r5, r8 + blt _08036D6E + b _08036EA0 +_08036D6E: + ldr r0, =gLinkPlayers + mov r12, r0 + ldr r3, =gEnigmaBerries + adds r6, r3, 0 + movs r1, 0x8 + adds r1, r6 + mov r9, r1 +_08036D7C: + lsls r1, r5, 8 + ldr r0, =gUnknown_020223C8 + adds r7, r1, r0 + lsls r0, r5, 3 + subs r0, r5 + lsls r0, 2 + add r0, r12 + ldrb r3, [r0, 0x18] + movs r4, 0 + adds r5, 0x1 + mov r10, r5 + lsls r1, r3, 3 + subs r0, r1, r3 + adds r5, r1, 0 + lsls r0, 2 + adds r1, r0, r6 +_08036D9C: + adds r0, r7, r4 + ldrb r0, [r0] + strb r0, [r1] + adds r1, 0x1 + adds r4, 0x1 + cmp r4, 0x5 + ble _08036D9C + subs r0, r5, r3 + lsls r0, 2 + adds r1, r4, r0 + adds r1, r6 + movs r2, 0xFF + strb r2, [r1] + movs r4, 0 + mov r2, r9 + adds r1, r0, r2 + adds r2, r7, 0 + adds r2, 0x8 +_08036DC0: + adds r0, r2, r4 + ldrb r0, [r0] + strb r0, [r1] + adds r1, 0x1 + adds r4, 0x1 + cmp r4, 0x11 + ble _08036DC0 + subs r0, r5, r3 + lsls r0, 2 + adds r0, r6 + ldrb r1, [r7, 0x7] + strb r1, [r0, 0x7] + ldrb r1, [r7, 0x1A] + strb r1, [r0, 0x1A] + mov r5, r10 + cmp r5, r8 + blt _08036D7C + b _08036EA0 + .pool +_08036DF0: + movs r5, 0 + ldr r4, =gEnigmaBerries + mov r9, r4 +_08036DF6: + lsls r0, r5, 8 + ldr r1, =gUnknown_020223C8 + adds r7, r0, r1 + movs r4, 0 + adds r2, r5, 0x1 + mov r10, r2 + lsls r0, r5, 3 + mov r8, r0 + adds r1, r5, 0x2 + mov r12, r1 + subs r1, r0, r5 + mov r2, r12 + lsls r0, r2, 3 + subs r0, r2 + lsls r0, 2 + mov r2, r9 + adds r3, r0, r2 + lsls r1, 2 + adds r2, r1, r2 +_08036E1C: + adds r0, r7, r4 + ldrb r1, [r0] + strb r1, [r2] + ldrb r0, [r0] + strb r0, [r3] + adds r3, 0x1 + adds r2, 0x1 + adds r4, 0x1 + cmp r4, 0x5 + ble _08036E1C + mov r0, r8 + subs r3, r0, r5 + lsls r3, 2 + adds r1, r4, r3 + add r1, r9 + ldrb r0, [r1] + movs r2, 0xFF + orrs r0, r2 + strb r0, [r1] + mov r0, r12 + lsls r2, r0, 3 + subs r2, r0 + lsls r2, 2 + adds r1, r4, r2 + add r1, r9 + ldrb r0, [r1] + movs r4, 0xFF + orrs r0, r4 + strb r0, [r1] + movs r4, 0 + ldr r0, =gEnigmaBerries + adds r0, 0x8 + adds r2, r0 + adds r3, r0 + adds r6, r7, 0 + adds r6, 0x8 +_08036E64: + adds r0, r6, r4 + ldrb r1, [r0] + strb r1, [r3] + ldrb r0, [r0] + strb r0, [r2] + adds r2, 0x1 + adds r3, 0x1 + adds r4, 0x1 + cmp r4, 0x11 + ble _08036E64 + mov r0, r8 + subs r2, r0, r5 + lsls r2, 2 + add r2, r9 + ldrb r0, [r7, 0x7] + strb r0, [r2, 0x7] + mov r1, r12 + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + add r0, r9 + ldrb r1, [r7, 0x7] + strb r1, [r0, 0x7] + ldrb r1, [r7, 0x1A] + strb r1, [r2, 0x1A] + ldrb r1, [r7, 0x1A] + strb r1, [r0, 0x1A] + mov r5, r10 + cmp r5, 0x1 + ble _08036DF6 +_08036EA0: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .pool + thumb_func_end berry_801017C + + thumb_func_start sub_8036EB8 +sub_8036EB8: @ 8036EB8 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r1, 24 + lsrs r3, r1, 24 + movs r6, 0 + ldr r0, =gUnknown_020223C4 + ldrh r2, [r0] + movs r1, 0x80 + lsls r1, 1 + mov r12, r0 + cmp r2, r1 + bne _08036EFC + cmp r3, 0 + bne _08036EEC + ldr r0, =gBattleTypeFlags + ldr r1, [r0] + movs r2, 0xC + b _08036EF2 + .pool +_08036EEC: + ldr r0, =gBattleTypeFlags + ldr r1, [r0] + movs r2, 0x8 +_08036EF2: + orrs r1, r2 + str r1, [r0] + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 +_08036EFC: + cmp r6, 0 + bne _08036FA0 + movs r2, 0 + cmp r2, r4 + bge _08036F20 + ldr r1, =gUnknown_020223C4 + mov r8, r1 + movs r5, 0x80 + lsls r5, 1 +_08036F0E: + adds r1, r5 + adds r2, 0x1 + cmp r2, r4 + bge _08036F20 + mov r7, r8 + ldrh r0, [r7] + ldrh r7, [r1] + cmp r0, r7 + beq _08036F0E +_08036F20: + cmp r2, r4 + bne _08036F48 + cmp r3, 0 + bne _08036F38 + ldr r0, =gBattleTypeFlags + ldr r1, [r0] + movs r2, 0xC + b _08036F3E + .pool +_08036F38: + ldr r0, =gBattleTypeFlags + ldr r1, [r0] + movs r2, 0x8 +_08036F3E: + orrs r1, r2 + str r1, [r0] + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 +_08036F48: + cmp r6, 0 + bne _08036FA0 + movs r2, 0 + ldr r5, =gBattleTypeFlags + cmp r2, r4 + bge _08036F8A + mov r0, r12 + ldrh r1, [r0] + movs r0, 0xC0 + lsls r0, 2 + cmp r1, r0 + beq _08036F82 +_08036F60: + lsls r0, r2, 8 + add r0, r12 + ldrh r0, [r0] + movs r1, 0xC0 + lsls r1, 2 + cmp r0, r1 + bls _08036F72 + cmp r2, r3 + bne _08036F8A +_08036F72: + adds r2, 0x1 + cmp r2, r4 + bge _08036F8A + lsls r0, r2, 8 + add r0, r12 + ldrh r0, [r0] + cmp r0, r1 + bne _08036F60 +_08036F82: + cmp r2, r3 + beq _08036F60 + cmp r2, r3 + bge _08036F60 +_08036F8A: + cmp r2, r4 + bne _08036F98 + ldr r0, [r5] + movs r1, 0xC + b _08036F9C + .pool +_08036F98: + ldr r0, [r5] + movs r1, 0x8 +_08036F9C: + orrs r0, r1 + str r0, [r5] +_08036FA0: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8036EB8 + + thumb_func_start sub_8036FAC +sub_8036FAC: @ 8036FAC + push {r4-r6,lr} + bl RunTasks + bl AnimateSprites + bl BuildOamBuffer + bl GetMultiplayerId + lsls r0, 24 + lsrs r6, r0, 24 + ldr r0, =gBattleScripting + adds r0, 0x25 + strb r6, [r0] + movs r0, 0x1 + adds r5, r6, 0 + eors r5, r0 + ldr r0, =gBattleCommunication + ldrb r0, [r0] + cmp r0, 0x12 + bls _08036FD8 + b _0803744C +_08036FD8: + lsls r0, 2 + ldr r1, =_08036FF0 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .pool + .align 2, 0 +_08036FF0: + .4byte _0803703C + .4byte _08037080 + .4byte _08037144 + .4byte _080371D8 + .4byte _08037200 + .4byte _0803742C + .4byte _08037438 + .4byte _08037230 + .4byte _08037258 + .4byte _0803742C + .4byte _08037438 + .4byte _08037288 + .4byte _080372B0 + .4byte _0803742C + .4byte _08037438 + .4byte _08037318 + .4byte _08037378 + .4byte _080373A0 + .4byte _080373E0 +_0803703C: + bl IsDma3ManagerBusyWithBgCopy + lsls r0, 24 + cmp r0, 0 + bne _08037068 + movs r0, 0 + bl ShowBg + movs r0, 0x1 + bl ShowBg + movs r0, 0x2 + bl ShowBg + movs r0, 0x3 + bl ShowBg + bl sub_805EF14 + ldr r1, =gBattleCommunication + movs r0, 0x1 + strb r0, [r1] +_08037068: + ldr r0, =gLinkVSyncDisabled + ldrb r0, [r0] + cmp r0, 0 + bne _08037072 + b _0803744C +_08037072: + bl sub_800E0E8 + b _0803744C + .pool +_08037080: + ldr r2, =gBattleTypeFlags + ldr r1, [r2] + movs r6, 0x2 + adds r0, r1, 0 + ands r0, r6 + cmp r0, 0 + beq _08037124 + ldr r0, =gUnknown_03003124 + ldrb r0, [r0] + cmp r0, 0 + bne _08037098 + b _0803744C +_08037098: + bl sub_800A520 + lsls r0, 24 + cmp r0, 0 + beq _080370EE + ldr r4, =gBattleStruct + ldr r0, [r4] + movs r5, 0xC0 + lsls r5, 1 + adds r0, r5 + movs r1, 0 + strb r1, [r0] + ldr r0, [r4] + ldr r2, =0x00000181 + adds r1, r0, r2 + movs r0, 0x3 + strb r0, [r1] + bl sub_8036A5C + bl sub_8036B44 + ldr r0, =gTrainerBattleOpponent_A + ldrh r1, [r0] + movs r0, 0xC0 + lsls r0, 4 + cmp r1, r0 + bne _080370D8 + ldr r0, =gLinkPlayers + movs r1, 0 + strh r1, [r0, 0x18] + movs r1, 0x1 + strh r1, [r0, 0x34] +_080370D8: + bl bitmask_all_link_players_but_self + lsls r0, 24 + lsrs r0, 24 + ldr r1, [r4] + adds r1, r5 + movs r2, 0x20 + bl link_0800A448 + ldr r0, =gBattleCommunication + strb r6, [r0] +_080370EE: + ldr r0, =gLinkVSyncDisabled + ldrb r0, [r0] + cmp r0, 0 + bne _080370F8 + b _0803744C +_080370F8: + movs r0, 0 + movs r1, 0 + bl sub_800DFB4 + b _0803744C + .pool +_08037124: + movs r0, 0x80 + lsls r0, 17 + ands r0, r1 + cmp r0, 0 + bne _08037134 + movs r0, 0x4 + orrs r1, r0 + str r1, [r2] +_08037134: + ldr r1, =gBattleCommunication + movs r0, 0xF + strb r0, [r1] + bl berry_801017C + b _0803744C + .pool +_08037144: + bl sub_800A550 + movs r1, 0x3 + ands r1, r0 + cmp r1, 0x3 + beq _08037152 + b _0803744C +_08037152: + bl sub_800A5B4 + movs r0, 0x2 + adds r1, r6, 0 + bl sub_8036EB8 + bl berry_801017C + ldr r0, =task00_0800F6FC + movs r1, 0 + bl CreateTask + lsls r0, 24 + lsrs r0, 24 + ldr r1, =gTasks + lsls r2, r0, 2 + adds r2, r0 + lsls r2, 3 + adds r2, r1 + movs r1, 0 + movs r0, 0x87 + lsls r0, 1 + strh r0, [r2, 0xA] + movs r0, 0x5A + strh r0, [r2, 0xC] + strh r1, [r2, 0x12] + ldr r0, =gBattleStruct + ldr r3, [r0] + movs r4, 0xC1 + lsls r4, 1 + adds r0, r3, r4 + ldrb r1, [r0] + adds r4, 0x1 + adds r0, r3, r4 + ldrb r0, [r0] + lsls r0, 8 + orrs r1, r0 + strh r1, [r2, 0xE] + ldr r1, =gUnknown_020223C4 + lsls r4, r5, 8 + adds r1, 0x2 + adds r4, r1 + ldrh r0, [r4] + strh r0, [r2, 0x10] + lsls r0, r6, 8 + adds r0, r1 + ldrh r0, [r0] + bl sub_8185F90 + ldrh r0, [r4] + bl sub_8185F90 + bl sub_8068AA4 + ldr r1, =gBattleCommunication + b _08037446 + .pool +_080371D8: + bl sub_800A520 + lsls r0, 24 + cmp r0, 0 + bne _080371E4 + b _0803744C +_080371E4: + bl bitmask_all_link_players_but_self + lsls r0, 24 + lsrs r0, 24 + ldr r1, =gPlayerParty + movs r2, 0xC8 + bl link_0800A448 + ldr r1, =gBattleCommunication + b _08037446 + .pool +_08037200: + bl sub_800A550 + movs r1, 0x3 + ands r1, r0 + cmp r1, 0x3 + beq _0803720E + b _0803744C +_0803720E: + bl sub_800A5B4 + ldr r0, =gEnemyParty + lsls r1, r5, 8 + ldr r2, =gUnknown_020223C4 + adds r1, r2 + movs r2, 0xC8 + bl memcpy + ldr r1, =gBattleCommunication + b _08037446 + .pool +_08037230: + bl sub_800A520 + lsls r0, 24 + cmp r0, 0 + bne _0803723C + b _0803744C +_0803723C: + bl bitmask_all_link_players_but_self + lsls r0, 24 + lsrs r0, 24 + ldr r1, =gPlayerParty + 200 + movs r2, 0xC8 + bl link_0800A448 + ldr r1, =gBattleCommunication + b _08037446 + .pool +_08037258: + bl sub_800A550 + movs r1, 0x3 + ands r1, r0 + cmp r1, 0x3 + beq _08037266 + b _0803744C +_08037266: + bl sub_800A5B4 + ldr r0, =gEnemyParty + 200 + lsls r1, r5, 8 + ldr r2, =gUnknown_020223C4 + adds r1, r2 + movs r2, 0xC8 + bl memcpy + ldr r1, =gBattleCommunication + b _08037446 + .pool +_08037288: + bl sub_800A520 + lsls r0, 24 + cmp r0, 0 + bne _08037294 + b _0803744C +_08037294: + bl bitmask_all_link_players_but_self + lsls r0, 24 + lsrs r0, 24 + ldr r1, =gPlayerParty + 400 + movs r2, 0xC8 + bl link_0800A448 + ldr r1, =gBattleCommunication + b _08037446 + .pool +_080372B0: + bl sub_800A550 + movs r1, 0x3 + ands r1, r0 + cmp r1, 0x3 + beq _080372BE + b _0803744C +_080372BE: + bl sub_800A5B4 + ldr r4, =gEnemyParty + 400 + lsls r1, r5, 8 + ldr r0, =gUnknown_020223C4 + adds r1, r0 + adds r0, r4, 0 + movs r2, 0xC8 + bl memcpy + ldr r1, =0xfffffe70 + adds r0, r4, r1 + bl shedinja_something + ldr r2, =0xfffffed4 + adds r0, r4, r2 + bl shedinja_something + adds r0, r4, 0 + subs r0, 0xC8 + bl shedinja_something + adds r0, r4, 0 + subs r0, 0x64 + bl shedinja_something + adds r0, r4, 0 + bl shedinja_something + adds r0, r4, 0 + adds r0, 0x64 + bl shedinja_something + ldr r1, =gBattleCommunication + b _08037446 + .pool +_08037318: + bl sub_8032768 + bl sub_8184E58 + ldr r2, =gBattleCommunication + movs r0, 0 + strb r0, [r2, 0x1] + strb r0, [r2, 0x2] + ldr r0, =gBattleTypeFlags + ldr r0, [r0] + movs r1, 0x2 + ands r0, r1 + cmp r0, 0 + beq _08037372 + movs r3, 0 + ldr r1, =gLinkPlayers + ldrb r0, [r1] + adds r5, r2, 0 + cmp r0, 0x3 + bne _08037356 + movs r4, 0xFF + adds r2, r1, 0 +_08037344: + adds r2, 0x1C + adds r3, 0x1 + cmp r3, 0x1 + bgt _08037356 + ldrh r1, [r2] + adds r0, r4, 0 + ands r0, r1 + cmp r0, 0x3 + beq _08037344 +_08037356: + cmp r3, 0x2 + bne _0803736C + movs r0, 0x10 + strb r0, [r5] + b _0803744C + .pool +_0803736C: + movs r0, 0x12 + strb r0, [r5] + b _0803744C +_08037372: + movs r0, 0x12 + strb r0, [r2] + b _0803744C +_08037378: + bl sub_800A520 + lsls r0, 24 + cmp r0, 0 + beq _0803744C + bl bitmask_all_link_players_but_self + lsls r0, 24 + lsrs r0, 24 + ldr r1, =gUnknown_0203BD2C + movs r2, 0x4 + bl link_0800A448 + ldr r1, =gBattleCommunication + b _08037446 + .pool +_080373A0: + bl sub_800A550 + movs r1, 0x3 + ands r1, r0 + cmp r1, 0x3 + bne _0803744C + bl sub_800A5B4 + ldr r0, =gBattleTypeFlags + ldr r0, [r0] + movs r1, 0x4 + ands r0, r1 + cmp r0, 0 + bne _080373CA + ldr r0, =gUnknown_0203BD2C + lsls r1, r5, 8 + ldr r2, =gUnknown_020223C4 + adds r1, r2 + movs r2, 0x4 + bl memcpy +_080373CA: + ldr r1, =gBattleCommunication + b _08037446 + .pool +_080373E0: + ldr r0, =gUnknown_02024333 + adds r1, r0, 0x1 + bl battle_load_something + lsls r0, 24 + cmp r0, 0 + beq _0803744C + ldr r2, =gUnknown_03005D00 + ldr r1, =gMain + ldr r0, [r1] + str r0, [r2] + ldr r0, =sub_8039EF0 + str r0, [r1] + ldr r0, =sub_8038420 + bl SetMainCallback2 + ldr r2, =gBattleTypeFlags + ldr r1, [r2] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0803744C + movs r0, 0x20 + orrs r1, r0 + str r1, [r2] + b _0803744C + .pool +_0803742C: + ldr r0, =gBattleCommunication + ldrb r1, [r0] + adds r1, 0x1 + strb r1, [r0] + movs r1, 0x1 + strb r1, [r0, 0x1] +_08037438: + ldr r1, =gBattleCommunication + ldrb r0, [r1, 0x1] + subs r0, 0x1 + strb r0, [r1, 0x1] + lsls r0, 24 + cmp r0, 0 + bne _0803744C +_08037446: + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] +_0803744C: + pop {r4-r6} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8036FAC + + thumb_func_start sub_8037458 +sub_8037458: @ 8037458 + push {r4-r7,lr} + sub sp, 0x4 + bl RunTasks + bl AnimateSprites + bl BuildOamBuffer + bl GetMultiplayerId + lsls r0, 24 + lsrs r6, r0, 24 + ldr r0, =gBattleScripting + adds r0, 0x25 + strb r6, [r0] + movs r0, 0x1 + adds r7, r6, 0 + eors r7, r0 + ldr r0, =gBattleCommunication + ldrb r0, [r0] + cmp r0, 0x10 + bls _08037486 + b _080379D6 +_08037486: + lsls r0, 2 + ldr r1, =_0803749C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .pool + .align 2, 0 +_0803749C: + .4byte _080374E0 + .4byte _08037518 + .4byte _0803761C + .4byte _08037670 + .4byte _08037694 + .4byte _08037710 + .4byte _08037734 + .4byte _080377B0 + .4byte _080377CC + .4byte _080377FC + .4byte _08037818 + .4byte _08037848 + .4byte _08037864 + .4byte _08037908 + .4byte _0803793A + .4byte _0803795C + .4byte _080379A0 +_080374E0: + bl IsDma3ManagerBusyWithBgCopy + lsls r0, 24 + cmp r0, 0 + bne _0803750C + movs r0, 0 + bl ShowBg + movs r0, 0x1 + bl ShowBg + movs r0, 0x2 + bl ShowBg + movs r0, 0x3 + bl ShowBg + bl sub_805EF14 + ldr r1, =gBattleCommunication + movs r0, 0x1 + strb r0, [r1] +_0803750C: + ldr r0, =gLinkVSyncDisabled + ldrb r0, [r0] + cmp r0, 0 + beq _08037518 + bl sub_800E0E8 +_08037518: + ldr r2, =gBattleTypeFlags + ldr r1, [r2] + movs r3, 0x2 + adds r0, r1, 0 + ands r0, r3 + cmp r0, 0 + beq _080375FC + ldr r0, =gUnknown_03003124 + ldrb r0, [r0] + cmp r0, 0 + bne _08037530 + b _080379D6 +_08037530: + ldr r6, =gLinkPlayers + movs r0, 0 + strh r0, [r6, 0x18] + strh r3, [r6, 0x34] + adds r1, r6, 0 + adds r1, 0x50 + movs r0, 0x1 + strh r0, [r1] + adds r1, 0x1C + movs r0, 0x3 + strh r0, [r1] + adds r0, r6, 0 + adds r0, 0x40 + ldr r4, =gTrainerBattleOpponent_A + ldrh r1, [r4] + bl sub_8162E20 + adds r0, r6, 0 + adds r0, 0x5C + ldr r5, =gTrainerBattleOpponent_B + ldrh r1, [r5] + bl sub_8162E20 + ldrh r1, [r4] + mov r0, sp + bl sub_8165B88 + mov r0, sp + ldrb r0, [r0] + adds r1, r6, 0 + adds r1, 0x52 + strh r0, [r1] + ldrh r1, [r5] + mov r0, sp + bl sub_8165B88 + mov r0, sp + ldrb r1, [r0] + adds r0, r6, 0 + adds r0, 0x6E + strh r1, [r0] + bl sub_800A520 + lsls r0, 24 + cmp r0, 0 + beq _080375C4 + ldr r4, =gBattleStruct + ldr r0, [r4] + movs r5, 0xC0 + lsls r5, 1 + adds r0, r5 + movs r1, 0 + strb r1, [r0] + ldr r0, [r4] + ldr r2, =0x00000181 + adds r1, r0, r2 + movs r0, 0x3 + strb r0, [r1] + bl sub_8036A5C + bl sub_8036B44 + bl bitmask_all_link_players_but_self + lsls r0, 24 + lsrs r0, 24 + ldr r1, [r4] + adds r1, r5 + movs r2, 0x20 + bl link_0800A448 + ldr r1, =gBattleCommunication + movs r0, 0x2 + strb r0, [r1] +_080375C4: + ldr r0, =gLinkVSyncDisabled + ldrb r0, [r0] + cmp r0, 0 + bne _080375CE + b _080379D6 +_080375CE: + movs r0, 0 + movs r1, 0 + bl sub_800DFB4 + b _080379D6 + .pool +_080375FC: + movs r0, 0x80 + lsls r0, 17 + ands r0, r1 + cmp r0, 0 + bne _0803760C + movs r0, 0x4 + orrs r1, r0 + str r1, [r2] +_0803760C: + ldr r1, =gBattleCommunication + movs r0, 0xD + strb r0, [r1] + bl berry_801017C + b _080379D6 + .pool +_0803761C: + bl sub_800A550 + movs r1, 0x3 + ands r1, r0 + cmp r1, 0x3 + beq _0803762A + b _080379D6 +_0803762A: + bl sub_800A5B4 + movs r0, 0x2 + adds r1, r6, 0 + bl sub_8036EB8 + bl berry_801017C + ldr r0, =task00_0800F6FC + movs r1, 0 + bl CreateTask + lsls r0, 24 + lsrs r0, 24 + ldr r2, =gTasks + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + movs r2, 0 + movs r0, 0x87 + lsls r0, 1 + strh r0, [r1, 0xA] + movs r0, 0x5A + strh r0, [r1, 0xC] + strh r2, [r1, 0x12] + adds r0, 0xEB + strh r0, [r1, 0xE] + strh r0, [r1, 0x10] + b _08037986 + .pool +_08037670: + bl sub_800A520 + lsls r0, 24 + cmp r0, 0 + bne _0803767C + b _080379D6 +_0803767C: + bl bitmask_all_link_players_but_self + lsls r0, 24 + lsrs r0, 24 + ldr r1, =gPlayerParty +_08037686: + movs r2, 0xC8 + bl link_0800A448 + b _08037986 + .pool +_08037694: + bl sub_800A550 + movs r1, 0x3 + ands r1, r0 + cmp r1, 0x3 + beq _080376A2 + b _080379D6 +_080376A2: + bl sub_800A5B4 + ldr r0, =gLinkPlayers + lsls r1, r6, 3 + subs r1, r6 + lsls r1, 2 + adds r1, r0 + ldrh r0, [r1, 0x18] + cmp r0, 0 + beq _080376E8 + ldr r4, =gPlayerParty + lsls r1, r7, 8 + ldr r5, =gUnknown_020223C4 + adds r1, r5 + adds r0, r4, 0 + movs r2, 0xC8 + bl memcpy + movs r0, 0x96 + lsls r0, 1 + adds r4, r0 + lsls r1, r6, 8 + adds r1, r5 + adds r0, r4, 0 + movs r2, 0xC8 + bl memcpy + b _08037986 + .pool +_080376E8: + ldr r4, =gPlayerParty + lsls r1, r6, 8 + ldr r5, =gUnknown_020223C4 + adds r1, r5 + adds r0, r4, 0 + movs r2, 0xC8 + bl memcpy + movs r1, 0x96 + lsls r1, 1 + adds r4, r1 + lsls r1, r7, 8 + adds r1, r5 + adds r0, r4, 0 + movs r2, 0xC8 + b _08037982 + .pool +_08037710: + bl sub_800A520 + lsls r0, 24 + cmp r0, 0 + bne _0803771C + b _080379D6 +_0803771C: + bl bitmask_all_link_players_but_self + lsls r0, 24 + lsrs r0, 24 + ldr r1, =gPlayerParty + 200 + movs r2, 0x64 + bl link_0800A448 + b _08037986 + .pool +_08037734: + bl sub_800A550 + movs r1, 0x3 + ands r1, r0 + cmp r1, 0x3 + beq _08037742 + b _080379D6 +_08037742: + bl sub_800A5B4 + ldr r0, =gLinkPlayers + lsls r1, r6, 3 + subs r1, r6 + lsls r1, 2 + adds r1, r0 + ldrh r0, [r1, 0x18] + cmp r0, 0 + beq _08037788 + ldr r4, =gPlayerParty + 200 + lsls r1, r7, 8 + ldr r5, =gUnknown_020223C4 + adds r1, r5 + adds r0, r4, 0 + movs r2, 0x64 + bl memcpy + movs r2, 0x96 + lsls r2, 1 + adds r4, r2 + lsls r1, r6, 8 + adds r1, r5 + adds r0, r4, 0 + movs r2, 0x64 + bl memcpy + b _08037986 + .pool +_08037788: + ldr r4, =gPlayerParty + 200 + lsls r1, r6, 8 + ldr r5, =gUnknown_020223C4 + adds r1, r5 + adds r0, r4, 0 + movs r2, 0x64 + bl memcpy + movs r0, 0x96 + lsls r0, 1 + adds r4, r0 + lsls r1, r7, 8 + adds r1, r5 + adds r0, r4, 0 + movs r2, 0x64 + b _08037982 + .pool +_080377B0: + bl sub_800A520 + lsls r0, 24 + cmp r0, 0 + bne _080377BC + b _080379D6 +_080377BC: + bl bitmask_all_link_players_but_self + lsls r0, 24 + lsrs r0, 24 + ldr r1, =gEnemyParty + b _08037686 + .pool +_080377CC: + bl sub_800A550 + movs r1, 0x3 + ands r1, r0 + cmp r1, 0x3 + beq _080377DA + b _080379D6 +_080377DA: + bl sub_800A5B4 + bl GetMultiplayerId + lsls r0, 24 + cmp r0, 0 + bne _080377EA + b _08037986 +_080377EA: + ldr r0, =gEnemyParty + ldr r1, =gUnknown_020223C4 + movs r2, 0xC8 + b _08037982 + .pool +_080377FC: + bl sub_800A520 + lsls r0, 24 + cmp r0, 0 + bne _08037808 + b _080379D6 +_08037808: + bl bitmask_all_link_players_but_self + lsls r0, 24 + lsrs r0, 24 + ldr r1, =gEnemyParty + 200 + b _08037686 + .pool +_08037818: + bl sub_800A550 + movs r1, 0x3 + ands r1, r0 + cmp r1, 0x3 + beq _08037826 + b _080379D6 +_08037826: + bl sub_800A5B4 + bl GetMultiplayerId + lsls r0, 24 + cmp r0, 0 + bne _08037836 + b _08037986 +_08037836: + ldr r0, =gEnemyParty + 200 + ldr r1, =gUnknown_020223C4 + movs r2, 0xC8 + b _08037982 + .pool +_08037848: + bl sub_800A520 + lsls r0, 24 + cmp r0, 0 + bne _08037854 + b _080379D6 +_08037854: + bl bitmask_all_link_players_but_self + lsls r0, 24 + lsrs r0, 24 + ldr r1, =gEnemyParty + 400 + b _08037686 + .pool +_08037864: + bl sub_800A550 + movs r1, 0x3 + ands r1, r0 + cmp r1, 0x3 + beq _08037872 + b _080379D6 +_08037872: + bl sub_800A5B4 + bl GetMultiplayerId + lsls r0, 24 + cmp r0, 0 + beq _0803788A + ldr r0, =gEnemyParty + 400 + ldr r1, =gUnknown_020223C4 + movs r2, 0xC8 + bl memcpy +_0803788A: + ldr r4, =gPlayerParty + adds r0, r4, 0 + bl shedinja_something + adds r0, r4, 0 + adds r0, 0x64 + bl shedinja_something + adds r0, r4, 0 + adds r0, 0xC8 + bl shedinja_something + movs r1, 0x96 + lsls r1, 1 + adds r0, r4, r1 + bl shedinja_something + movs r2, 0xC8 + lsls r2, 1 + adds r0, r4, r2 + bl shedinja_something + movs r1, 0xFA + lsls r1, 1 + adds r0, r4, r1 + bl shedinja_something + ldr r4, =gEnemyParty + adds r0, r4, 0 + bl shedinja_something + adds r0, r4, 0 + adds r0, 0x64 + bl shedinja_something + adds r0, r4, 0 + adds r0, 0xC8 + bl shedinja_something + movs r2, 0x96 + lsls r2, 1 + adds r0, r4, r2 + bl shedinja_something + movs r1, 0xC8 + lsls r1, 1 + adds r0, r4, r1 + bl shedinja_something + movs r2, 0xFA + lsls r2, 1 + adds r0, r4, r2 + bl shedinja_something + b _08037986 + .pool +_08037908: + bl sub_8032768 + bl sub_8184E58 + ldr r2, =gBattleCommunication + movs r0, 0 + strb r0, [r2, 0x1] + strb r0, [r2, 0x2] + ldr r0, =gBattleTypeFlags + ldr r0, [r0] + movs r1, 0x2 + ands r0, r1 + cmp r0, 0 + beq _08037934 + movs r0, 0xE + strb r0, [r2] + b _080379D6 + .pool +_08037934: + movs r0, 0x10 + strb r0, [r2] + b _080379D6 +_0803793A: + bl sub_800A520 + lsls r0, 24 + cmp r0, 0 + beq _080379D6 + bl bitmask_all_link_players_but_self + lsls r0, 24 + lsrs r0, 24 + ldr r1, =gUnknown_0203BD2C + movs r2, 0x4 + bl link_0800A448 + b _08037986 + .pool +_0803795C: + bl sub_800A550 + movs r1, 0x3 + ands r1, r0 + cmp r1, 0x3 + bne _080379D6 + bl sub_800A5B4 + ldr r0, =gBattleTypeFlags + ldr r0, [r0] + movs r1, 0x4 + ands r0, r1 + cmp r0, 0 + bne _08037986 + ldr r0, =gUnknown_0203BD2C + lsls r1, r7, 8 + ldr r2, =gUnknown_020223C4 + adds r1, r2 + movs r2, 0x4 +_08037982: + bl memcpy +_08037986: + ldr r1, =gBattleCommunication + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _080379D6 + .pool +_080379A0: + ldr r0, =gUnknown_02024333 + adds r1, r0, 0x1 + bl battle_load_something + lsls r0, 24 + cmp r0, 0 + beq _080379D6 + bl sub_8166188 + ldr r2, =gUnknown_03005D00 + ldr r1, =gMain + ldr r0, [r1] + str r0, [r2] + ldr r0, =sub_8039EF0 + str r0, [r1] + ldr r0, =sub_8038420 + bl SetMainCallback2 + ldr r2, =gBattleTypeFlags + ldr r1, [r2] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _080379D6 + movs r0, 0x20 + orrs r1, r0 + str r1, [r2] +_080379D6: + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8037458 + + thumb_func_start sub_80379F8 +sub_80379F8: @ 80379F8 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp] + movs r0, 0 + mov r8, r0 + ldr r6, =gUnknown_02022FF8 + mov r10, r6 +_08037A12: + ldr r1, [sp] + add r1, r8 + movs r0, 0x64 + adds r4, r1, 0 + muls r4, r0 + ldr r0, =gPlayerParty + adds r4, r0 + adds r0, r4, 0 + movs r1, 0xB + bl GetMonData + mov r1, r8 + lsls r5, r1, 5 + strh r0, [r6] + adds r0, r4, 0 + movs r1, 0xC + bl GetMonData + strh r0, [r6, 0x2] + movs r0, 0x4 + add r0, r10 + mov r9, r0 + adds r7, r5, r0 + adds r0, r4, 0 + movs r1, 0x2 + adds r2, r7, 0 + bl GetMonData + adds r0, r4, 0 + movs r1, 0x38 + bl GetMonData + strb r0, [r6, 0xF] + adds r0, r4, 0 + movs r1, 0x39 + bl GetMonData + strh r0, [r6, 0x10] + adds r0, r4, 0 + movs r1, 0x3A + bl GetMonData + strh r0, [r6, 0x12] + adds r0, r4, 0 + movs r1, 0x37 + bl GetMonData + mov r1, r10 + adds r1, 0x14 + adds r5, r1 + str r0, [r5] + adds r0, r4, 0 + movs r1, 0 + bl GetMonData + str r0, [r6, 0x18] + adds r0, r4, 0 + bl GetMonGender + strb r0, [r6, 0x1C] + adds r0, r7, 0 + bl StripExtCtrlCodes + adds r0, r4, 0 + movs r1, 0x3 + bl GetMonData + cmp r0, 0x1 + beq _08037AA4 + adds r0, r7, 0 + movs r1, 0 + bl sub_81DB4DC +_08037AA4: + adds r6, 0x20 + movs r1, 0x1 + add r8, r1 + mov r0, r8 + cmp r0, 0x2 + ble _08037A12 + ldr r0, =gUnknown_02023058 + ldr r0, [r0] + mov r1, r9 + subs r1, 0x4 + movs r2, 0x60 + bl memcpy + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .pool + thumb_func_end sub_80379F8 + + thumb_func_start sub_8037ADC +sub_8037ADC: @ 8037ADC + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + movs r0, 0x4 + mov r9, r0 + movs r4, 0xF + ldr r6, =gBattleTypeFlags + ldr r0, [r6] + movs r1, 0x80 + lsls r1, 1 + ands r0, r1 + cmp r0, 0 + beq _08037B02 + movs r1, 0x2 + mov r9, r1 + movs r4, 0x3 +_08037B02: + bl GetMultiplayerId + lsls r0, 24 + lsrs r7, r0, 24 + ldr r0, =gBattleScripting + adds r0, 0x25 + movs r2, 0 + mov r8, r2 + strb r7, [r0] + ldr r0, =gBattleStruct + ldr r0, [r0] + adds r1, r0, 0 + adds r1, 0xB4 + str r1, [sp] + adds r0, 0xAC + mov r10, r0 + bl RunTasks + bl AnimateSprites + bl BuildOamBuffer + ldr r5, =gBattleCommunication + ldrb r0, [r5] + cmp r0, 0x1 + beq _08037BA4 + cmp r0, 0x1 + bgt _08037B50 + cmp r0, 0 + beq _08037B5E + b _08037D0A + .pool +_08037B50: + cmp r0, 0x2 + bne _08037B56 + b _08037C64 +_08037B56: + cmp r0, 0x3 + bne _08037B5C + b _08037C9E +_08037B5C: + b _08037D0A +_08037B5E: + ldr r0, =gUnknown_03003124 + ldrb r0, [r0] + cmp r0, 0 + bne _08037B68 + b _08037D0A +_08037B68: + bl sub_800A520 + lsls r0, 24 + cmp r0, 0 + bne _08037B74 + b _08037D0A +_08037B74: + ldr r4, =gUnknown_02023058 + movs r0, 0x60 + bl Alloc + str r0, [r4] + movs r0, 0 + bl sub_80379F8 + bl bitmask_all_link_players_but_self + lsls r0, 24 + lsrs r0, 24 + ldr r1, [r4] + movs r2, 0x60 + bl link_0800A448 + ldrb r0, [r5] + adds r0, 0x1 + strb r0, [r5] + b _08037D0A + .pool +_08037BA4: + bl sub_800A550 + adds r1, r4, 0 + ands r1, r0 + cmp r1, r4 + beq _08037BB2 + b _08037D0A +_08037BB2: + bl sub_800A5B4 + movs r5, 0 + cmp r8, r9 + bge _08037C2E + lsls r0, r7, 3 + subs r0, r7 + lsls r6, r0, 2 + mov r8, r5 + ldr r4, =gUnknown_020223C4 +_08037BC6: + cmp r5, r7 + beq _08037C1E + mov r2, r9 + cmp r2, 0x4 + bne _08037C14 + ldr r2, =gLinkPlayers + mov r1, r8 + adds r0, r1, r2 + ldrh r1, [r0, 0x18] + movs r3, 0x1 + adds r0, r3, 0 + ands r0, r1 + cmp r0, 0 + bne _08037BF8 + adds r0, r6, r2 + ldrh r1, [r0, 0x18] + adds r0, r3, 0 + ands r0, r1 + cmp r0, 0 + beq _08037C04 + b _08037C1E + .pool +_08037BF8: + adds r0, r6, r2 + ldrh r1, [r0, 0x18] + adds r0, r3, 0 + ands r0, r1 + cmp r0, 0 + beq _08037C1E +_08037C04: + ldr r0, =gUnknown_02022FF8 + adds r1, r4, 0 + movs r2, 0x60 + bl memcpy + b _08037C1E + .pool +_08037C14: + ldr r0, =gUnknown_02022FF8 + adds r1, r4, 0 + movs r2, 0x60 + bl memcpy +_08037C1E: + movs r2, 0x80 + lsls r2, 1 + adds r4, r2 + movs r0, 0x1C + add r8, r0 + adds r5, 0x1 + cmp r5, r9 + blt _08037BC6 +_08037C2E: + ldr r1, =gBattleCommunication + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + ldr r1, =gMain + ldr r0, [r1, 0x8] + ldr r2, [sp] + str r0, [r2] + ldr r0, =gBattleTypeFlags + ldr r0, [r0] + mov r2, r10 + str r0, [r2] + ldr r0, =sub_8037ADC + str r0, [r1, 0x8] + bl sub_81B9150 + b _08037D0A + .pool +_08037C64: + bl sub_800A520 + lsls r0, 24 + cmp r0, 0 + beq _08037D0A + ldr r0, =gPaletteFade + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _08037D0A + ldrb r0, [r5] + adds r0, 0x1 + strb r0, [r5] + ldr r0, =gLinkVSyncDisabled + ldrb r0, [r0] + cmp r0, 0 + beq _08037C98 + bl sub_800ADF8 + b _08037D0A + .pool +_08037C98: + bl sub_800AC34 + b _08037D0A +_08037C9E: + ldr r0, =gLinkVSyncDisabled + ldrb r0, [r0] + cmp r0, 0 + beq _08037CE4 + bl sub_8010500 + lsls r0, 24 + cmp r0, 0 + beq _08037D0A + mov r1, r10 + ldr r0, [r1] + str r0, [r6] + ldr r1, =gMain + ldr r2, [sp] + ldr r0, [r2] + str r0, [r1, 0x8] + ldr r0, =InitBattle + bl SetMainCallback2 + ldr r4, =gUnknown_02023058 + ldr r0, [r4] + bl Free + mov r0, r8 + str r0, [r4] + b _08037D0A + .pool +_08037CE4: + ldr r0, =gUnknown_03003124 + ldrb r5, [r0] + cmp r5, 0 + bne _08037D0A + mov r1, r10 + ldr r0, [r1] + str r0, [r6] + ldr r1, =gMain + ldr r2, [sp] + ldr r0, [r2] + str r0, [r1, 0x8] + ldr r0, =InitBattle + bl SetMainCallback2 + ldr r4, =gUnknown_02023058 + ldr r0, [r4] + bl Free + str r5, [r4] +_08037D0A: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8037ADC + + thumb_func_start intro_end +intro_end: @ 8037D2C + push {r4-r7,lr} + mov r7, r8 + push {r7} + ldr r0, =gBattleStruct + ldr r0, [r0] + movs r1, 0xB4 + adds r1, r0 + mov r8, r1 + adds r7, r0, 0 + adds r7, 0xAC + bl RunTasks + bl AnimateSprites + bl BuildOamBuffer + ldr r5, =gBattleCommunication + ldrb r0, [r5] + cmp r0, 0 + beq _08037D64 + cmp r0, 0x1 + beq _08037DA4 + b _08037DD6 + .pool +_08037D64: + ldr r4, =gUnknown_02023058 + movs r0, 0x60 + bl Alloc + str r0, [r4] + movs r0, 0x3 + bl sub_80379F8 + ldrb r0, [r5] + adds r0, 0x1 + strb r0, [r5] + ldr r1, =gMain + ldr r0, [r1, 0x8] + mov r2, r8 + str r0, [r2] + ldr r0, =gBattleTypeFlags + ldr r0, [r0] + str r0, [r7] + ldr r0, =intro_end + str r0, [r1, 0x8] + bl sub_81B9150 + b _08037DD6 + .pool +_08037DA4: + ldr r0, =gPaletteFade + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, 0 + bne _08037DD6 + movs r0, 0x2 + strb r0, [r5] + ldr r1, =gBattleTypeFlags + ldr r0, [r7] + str r0, [r1] + ldr r1, =gMain + mov r2, r8 + ldr r0, [r2] + str r0, [r1, 0x8] + ldr r0, =InitBattle + bl SetMainCallback2 + ldr r4, =gUnknown_02023058 + ldr r0, [r4] + bl Free + str r6, [r4] +_08037DD6: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .pool + thumb_func_end intro_end + + thumb_func_start sub_8037DF4 +sub_8037DF4: @ 8037DF4 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + bl GetMultiplayerId + lsls r0, 24 + lsrs r7, r0, 24 + ldr r0, =gBattleScripting + adds r0, 0x25 + strb r7, [r0] + bl RunTasks + bl AnimateSprites + bl BuildOamBuffer + ldr r0, =gBattleCommunication + ldrb r0, [r0] + cmp r0, 0xA + bls _08037E20 + b _080383F8 +_08037E20: + lsls r0, 2 + ldr r1, =_08037E38 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .pool + .align 2, 0 +_08037E38: + .4byte _08037E64 + .4byte _08037EA8 + .4byte _08037F50 + .4byte _08038026 + .4byte _0803804C + .4byte _08038140 + .4byte _08038164 + .4byte _080382CC + .4byte _0803832C + .4byte _0803836C + .4byte _080383BC +_08037E64: + bl IsDma3ManagerBusyWithBgCopy + lsls r0, 24 + cmp r0, 0 + bne _08037E90 + movs r0, 0 + bl ShowBg + movs r0, 0x1 + bl ShowBg + movs r0, 0x2 + bl ShowBg + movs r0, 0x3 + bl ShowBg + bl sub_805EF14 + ldr r1, =gBattleCommunication + movs r0, 0x1 + strb r0, [r1] +_08037E90: + ldr r0, =gLinkVSyncDisabled + ldrb r0, [r0] + cmp r0, 0 + bne _08037E9A + b _080383F8 +_08037E9A: + bl sub_800E0E8 + b _080383F8 + .pool +_08037EA8: + ldr r2, =gBattleTypeFlags + ldr r1, [r2] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _08037F30 + ldr r0, =gUnknown_03003124 + ldrb r0, [r0] + cmp r0, 0 + bne _08037EBE + b _080383F8 +_08037EBE: + bl sub_800A520 + lsls r0, 24 + cmp r0, 0 + beq _08037F02 + ldr r4, =gBattleStruct + ldr r0, [r4] + movs r5, 0xC0 + lsls r5, 1 + adds r0, r5 + movs r1, 0 + strb r1, [r0] + ldr r0, [r4] + ldr r2, =0x00000181 + adds r1, r0, r2 + movs r0, 0x3 + strb r0, [r1] + bl sub_8036A5C + bl sub_8036B44 + bl bitmask_all_link_players_but_self + lsls r0, 24 + lsrs r0, 24 + ldr r1, [r4] + adds r1, r5 + movs r2, 0x20 + bl link_0800A448 + ldr r1, =gBattleCommunication + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] +_08037F02: + ldr r0, =gLinkVSyncDisabled + ldrb r0, [r0] + cmp r0, 0 + bne _08037F0C + b _080383F8 +_08037F0C: + movs r0, 0 + movs r1, 0 + bl sub_800DFB4 + b _080383F8 + .pool +_08037F30: + movs r0, 0x80 + lsls r0, 17 + ands r0, r1 + cmp r0, 0 + bne _08037F40 + movs r0, 0x4 + orrs r1, r0 + str r1, [r2] +_08037F40: + ldr r1, =gBattleCommunication + movs r0, 0x7 + strb r0, [r1] + bl berry_801017C + b _080383F8 + .pool +_08037F50: + bl sub_800A550 + movs r1, 0xF + ands r1, r0 + cmp r1, 0xF + beq _08037F5E + b _080383F8 +_08037F5E: + bl sub_800A5B4 + movs r0, 0x4 + adds r1, r7, 0 + bl sub_8036EB8 + bl berry_801017C + bl sub_8068AA4 + ldr r0, =task00_0800F6FC + movs r1, 0 + bl CreateTask + lsls r0, 24 + lsrs r2, r0, 24 + ldr r1, =gTasks + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + adds r0, r1 + movs r2, 0 + movs r1, 0x87 + lsls r1, 1 + strh r1, [r0, 0xA] + movs r1, 0x5A + strh r1, [r0, 0xC] + strh r2, [r0, 0x12] + strh r2, [r0, 0xE] + strh r2, [r0, 0x10] + ldr r1, =gUnknown_020223C4 + adds r4, r0, 0 + adds r5, r1, 0x2 + movs r7, 0x3F + movs r6, 0x3 +_08037FA4: + ldrh r0, [r5] + str r2, [sp] + bl sub_8185F90 + ldr r0, =gLinkPlayers + ldr r2, [sp] + adds r0, r2, r0 + ldrh r0, [r0, 0x18] + cmp r0, 0x1 + beq _08037FE6 + cmp r0, 0x1 + bgt _08037FD4 + cmp r0, 0 + beq _08037FDE + b _0803800C + .pool +_08037FD4: + cmp r0, 0x2 + beq _08037FEE + cmp r0, 0x3 + beq _08037FFE + b _0803800C +_08037FDE: + ldrh r0, [r5] + adds r1, r7, 0 + ands r1, r0 + b _08037FF6 +_08037FE6: + ldrh r0, [r5] + adds r1, r7, 0 + ands r1, r0 + b _08038006 +_08037FEE: + ldrh r0, [r5] + adds r1, r7, 0 + ands r1, r0 + lsls r1, 6 +_08037FF6: + ldrh r0, [r4, 0xE] + orrs r1, r0 + strh r1, [r4, 0xE] + b _0803800C +_08037FFE: + ldrh r0, [r5] + adds r1, r7, 0 + ands r1, r0 + lsls r1, 6 +_08038006: + ldrh r0, [r4, 0x10] + orrs r1, r0 + strh r1, [r4, 0x10] +_0803800C: + movs r0, 0x80 + lsls r0, 1 + adds r5, r0 + adds r2, 0x1C + subs r6, 0x1 + cmp r6, 0 + bge _08037FA4 + bl ZeroEnemyPartyMons + ldr r1, =gBattleCommunication + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] +_08038026: + bl sub_800A520 + lsls r0, 24 + cmp r0, 0 + bne _08038032 + b _080383F8 +_08038032: + bl bitmask_all_link_players_but_self + lsls r0, 24 + lsrs r0, 24 + ldr r1, =gPlayerParty + movs r2, 0xC8 + bl link_0800A448 + b _080383A6 + .pool +_0803804C: + bl sub_800A550 + movs r1, 0xF + ands r1, r0 + cmp r1, 0xF + beq _0803805A + b _080383F8 +_0803805A: + bl sub_800A5B4 + movs r6, 0 + lsls r0, r7, 3 + subs r0, r7 + lsls r0, 2 + mov r8, r0 + ldr r4, =gUnknown_020223C4 + movs r5, 0 +_0803806C: + cmp r6, r7 + bne _080380A0 + ldr r0, =gLinkPlayers + adds r0, r5, r0 + ldrh r0, [r0, 0x18] + cmp r0, 0x2 + bgt _0803808C + cmp r0, 0x1 + bge _08038098 + cmp r0, 0 + beq _08038090 + b _0803812A + .pool +_0803808C: + cmp r0, 0x3 + bne _0803812A +_08038090: + ldr r0, =gPlayerParty + b _08038110 + .pool +_08038098: + ldr r0, =gPlayerParty + 300 + b _08038110 + .pool +_080380A0: + ldr r2, =gLinkPlayers + adds r0, r5, r2 + ldrh r1, [r0, 0x18] + movs r3, 0x1 + adds r0, r3, 0 + ands r0, r1 + cmp r0, 0 + bne _080380C4 + mov r1, r8 + adds r0, r1, r2 + ldrh r1, [r0, 0x18] + adds r0, r3, 0 + ands r0, r1 + cmp r0, 0 + beq _080380D2 + b _080380F8 + .pool +_080380C4: + mov r1, r8 + adds r0, r1, r2 + ldrh r1, [r0, 0x18] + adds r0, r3, 0 + ands r0, r1 + cmp r0, 0 + beq _080380F8 +_080380D2: + adds r0, r5, r2 + ldrh r0, [r0, 0x18] + cmp r0, 0x2 + bgt _080380E4 + cmp r0, 0x1 + bge _080380F0 + cmp r0, 0 + beq _080380E8 + b _0803812A +_080380E4: + cmp r0, 0x3 + bne _0803812A +_080380E8: + ldr r0, =gPlayerParty + b _08038110 + .pool +_080380F0: + ldr r0, =gPlayerParty + 300 + b _08038110 + .pool +_080380F8: + adds r0, r5, r2 + ldrh r0, [r0, 0x18] + cmp r0, 0x2 + bgt _0803810A + cmp r0, 0x1 + bge _08038120 + cmp r0, 0 + beq _0803810E + b _0803812A +_0803810A: + cmp r0, 0x3 + bne _0803812A +_0803810E: + ldr r0, =gEnemyParty +_08038110: + adds r1, r4, 0 + movs r2, 0xC8 + bl memcpy + b _0803812A + .pool +_08038120: + ldr r0, =gEnemyParty + 300 + adds r1, r4, 0 + movs r2, 0xC8 + bl memcpy +_0803812A: + movs r2, 0x80 + lsls r2, 1 + adds r4, r2 + adds r5, 0x1C + adds r6, 0x1 + cmp r6, 0x3 + ble _0803806C + b _080383A6 + .pool +_08038140: + bl sub_800A520 + lsls r0, 24 + cmp r0, 0 + bne _0803814C + b _080383F8 +_0803814C: + bl bitmask_all_link_players_but_self + lsls r0, 24 + lsrs r0, 24 + ldr r1, =gPlayerParty + 200 + movs r2, 0x64 + bl link_0800A448 + b _080383A6 + .pool +_08038164: + bl sub_800A550 + movs r1, 0xF + ands r1, r0 + cmp r1, 0xF + beq _08038172 + b _080383F8 +_08038172: + bl sub_800A5B4 + movs r6, 0 + lsls r0, r7, 3 + subs r0, r7 + lsls r0, 2 + mov r8, r0 + ldr r4, =gUnknown_020223C4 + movs r5, 0 +_08038184: + cmp r6, r7 + bne _080381B8 + ldr r0, =gLinkPlayers + adds r0, r5, r0 + ldrh r0, [r0, 0x18] + cmp r0, 0x2 + bgt _080381A4 + cmp r0, 0x1 + bge _080381B0 + cmp r0, 0 + beq _080381A8 + b _08038242 + .pool +_080381A4: + cmp r0, 0x3 + bne _08038242 +_080381A8: + ldr r0, =gPlayerParty + 200 + b _08038228 + .pool +_080381B0: + ldr r0, =gPlayerParty + 500 + b _08038228 + .pool +_080381B8: + ldr r2, =gLinkPlayers + adds r0, r5, r2 + ldrh r1, [r0, 0x18] + movs r3, 0x1 + adds r0, r3, 0 + ands r0, r1 + cmp r0, 0 + bne _080381DC + mov r1, r8 + adds r0, r1, r2 + ldrh r1, [r0, 0x18] + adds r0, r3, 0 + ands r0, r1 + cmp r0, 0 + beq _080381EA + b _08038210 + .pool +_080381DC: + mov r1, r8 + adds r0, r1, r2 + ldrh r1, [r0, 0x18] + adds r0, r3, 0 + ands r0, r1 + cmp r0, 0 + beq _08038210 +_080381EA: + adds r0, r5, r2 + ldrh r0, [r0, 0x18] + cmp r0, 0x2 + bgt _080381FC + cmp r0, 0x1 + bge _08038208 + cmp r0, 0 + beq _08038200 + b _08038242 +_080381FC: + cmp r0, 0x3 + bne _08038242 +_08038200: + ldr r0, =gPlayerParty + 200 + b _08038228 + .pool +_08038208: + ldr r0, =gPlayerParty + 500 + b _08038228 + .pool +_08038210: + adds r0, r5, r2 + ldrh r0, [r0, 0x18] + cmp r0, 0x2 + bgt _08038222 + cmp r0, 0x1 + bge _08038238 + cmp r0, 0 + beq _08038226 + b _08038242 +_08038222: + cmp r0, 0x3 + bne _08038242 +_08038226: + ldr r0, =gEnemyParty + 200 +_08038228: + adds r1, r4, 0 + movs r2, 0x64 + bl memcpy + b _08038242 + .pool +_08038238: + ldr r0, =gEnemyParty + 500 + adds r1, r4, 0 + movs r2, 0x64 + bl memcpy +_08038242: + movs r2, 0x80 + lsls r2, 1 + adds r4, r2 + adds r5, 0x1C + adds r6, 0x1 + cmp r6, 0x3 + ble _08038184 + ldr r4, =gPlayerParty + adds r0, r4, 0 + bl shedinja_something + adds r0, r4, 0 + adds r0, 0x64 + bl shedinja_something + adds r0, r4, 0 + adds r0, 0xC8 + bl shedinja_something + movs r1, 0x96 + lsls r1, 1 + adds r0, r4, r1 + bl shedinja_something + movs r2, 0xC8 + lsls r2, 1 + adds r0, r4, r2 + bl shedinja_something + movs r1, 0xFA + lsls r1, 1 + adds r0, r4, r1 + bl shedinja_something + ldr r4, =gEnemyParty + adds r0, r4, 0 + bl shedinja_something + adds r0, r4, 0 + adds r0, 0x64 + bl shedinja_something + adds r0, r4, 0 + adds r0, 0xC8 + bl shedinja_something + movs r2, 0x96 + lsls r2, 1 + adds r0, r4, r2 + bl shedinja_something + movs r1, 0xC8 + lsls r1, 1 + adds r0, r4, r1 + bl shedinja_something + movs r2, 0xFA + lsls r2, 1 + adds r0, r4, r2 + bl shedinja_something + b _080383A6 + .pool +_080382CC: + bl sub_8032768 + bl sub_8184E58 + ldr r3, =gBattleCommunication + movs r0, 0 + strb r0, [r3, 0x1] + strb r0, [r3, 0x2] + ldr r0, =gBattleTypeFlags + ldr r0, [r0] + movs r1, 0x2 + ands r0, r1 + cmp r0, 0 + beq _08038326 + movs r6, 0 + ldr r0, =gLinkPlayers + ldrb r1, [r0] + adds r4, r3, 0 + adds r2, r0, 0 + cmp r1, 0x3 + bne _0803830A + movs r3, 0xFF +_080382F8: + adds r2, 0x1C + adds r6, 0x1 + cmp r6, 0x3 + bgt _0803830A + ldrh r1, [r2] + adds r0, r3, 0 + ands r0, r1 + cmp r0, 0x3 + beq _080382F8 +_0803830A: + cmp r6, 0x4 + bne _08038320 + movs r0, 0x8 + strb r0, [r4] + b _080383F8 + .pool +_08038320: + movs r0, 0xA + strb r0, [r4] + b _080383F8 +_08038326: + movs r0, 0xA + strb r0, [r3] + b _080383F8 +_0803832C: + bl sub_800A520 + lsls r0, 24 + cmp r0, 0 + beq _080383F8 + ldr r0, =gBattleStruct + ldr r4, [r0] + movs r0, 0xC0 + lsls r0, 1 + adds r4, r0 + ldr r0, =gBattleTypeFlags + ldr r0, [r0] + str r0, [r4] + ldr r0, =gUnknown_0203BD2C + ldr r0, [r0] + str r0, [r4, 0x4] + bl bitmask_all_link_players_but_self + lsls r0, 24 + lsrs r0, 24 + adds r1, r4, 0 + movs r2, 0x8 + bl link_0800A448 + b _080383A6 + .pool +_0803836C: + bl sub_800A550 + movs r1, 0xF + ands r1, r0 + cmp r1, 0xF + bne _080383F8 + bl sub_800A5B4 + movs r2, 0 + b _08038386 +_08038380: + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 +_08038386: + cmp r2, 0x3 + bhi _080383A6 + ldr r4, =gUnknown_020223C4 + lsls r3, r2, 8 + adds r0, r3, r4 + ldrh r0, [r0] + movs r1, 0x4 + ands r0, r1 + cmp r0, 0 + beq _08038380 + adds r1, r4, 0x4 + adds r1, r3, r1 + ldr r0, =gUnknown_0203BD2C + movs r2, 0x4 + bl memcpy +_080383A6: + ldr r1, =gBattleCommunication + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _080383F8 + .pool +_080383BC: + ldr r0, =gUnknown_02024333 + adds r1, r0, 0x1 + bl battle_load_something + lsls r0, 24 + cmp r0, 0 + beq _080383F8 + ldr r2, =gUnknown_03005D00 + ldr r1, =gMain + ldr r0, [r1] + str r0, [r2] + ldr r0, =sub_8039EF0 + str r0, [r1] + ldr r0, =sub_8038420 + bl SetMainCallback2 + ldr r3, =gBattleTypeFlags + ldr r2, [r3] + movs r0, 0x2 + ands r0, r2 + cmp r0, 0 + beq _080383F8 + ldr r0, =gTrainerBattleOpponent_A + movs r4, 0x80 + lsls r4, 4 + adds r1, r4, 0 + strh r1, [r0] + movs r0, 0x20 + orrs r2, r0 + str r2, [r3] +_080383F8: + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8037DF4 + + thumb_func_start sub_8038420 +sub_8038420: @ 8038420 + push {lr} + sub sp, 0x4 + bl AnimateSprites + bl BuildOamBuffer + bl RunTextPrinters + bl UpdatePaletteFade + bl RunTasks + ldr r0, =gMain + ldrh r1, [r0, 0x2C] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _08038482 + ldr r0, =gBattleTypeFlags + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 17 + ands r0, r1 + cmp r0, 0 + beq _08038482 + bl rfu_lacks_rfufunc + lsls r0, 24 + cmp r0, 0 + beq _08038482 + ldr r2, =gScriptResult + ldr r1, =gBattleOutcome + movs r0, 0x5 + strb r0, [r1] + movs r0, 0x5 + strh r0, [r2] + bl ResetPaletteFadeControl + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0 + movs r3, 0x10 + bl BeginNormalPaletteFade + ldr r0, =sub_80384E4 + bl SetMainCallback2 +_08038482: + add sp, 0x4 + pop {r0} + bx r0 + .pool + thumb_func_end sub_8038420 + + thumb_func_start sub_803849C +sub_803849C: @ 803849C + push {lr} + ldr r1, =gMain + ldr r0, =gUnknown_03005D00 + ldr r0, [r0] + str r0, [r1] + ldr r2, =gUnknown_02039B28 + movs r0, 0x3 + strb r0, [r2, 0x15] + ldr r0, =0x00000439 + adds r1, r0 + ldrb r2, [r1] + movs r0, 0x3 + negs r0, r0 + ands r0, r2 + strb r0, [r1] + bl ZeroEnemyPartyMons + movs r0, 0x5A + bl m4aSongNumStop + bl sub_805F094 + bl dp11_free + bl sub_8057028 + pop {r0} + bx r0 + .pool + thumb_func_end sub_803849C + + thumb_func_start sub_80384E4 +sub_80384E4: @ 80384E4 + push {lr} + bl UpdatePaletteFade + ldr r0, =gPaletteFade + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _08038512 + ldr r0, =gMPlay_SE1 + bl m4aMPlayStop + ldr r0, =gMPlay_SE2 + bl m4aMPlayStop + bl sub_803849C + bl FreeAllWindowBuffers + ldr r0, =gMain + ldr r0, [r0, 0x8] + bl SetMainCallback2 +_08038512: + pop {r0} + bx r0 + .pool + thumb_func_end sub_80384E4 + + thumb_func_start sub_8038528 +sub_8038528: @ 8038528 + movs r1, 0 + strh r1, [r0, 0x2E] + ldr r1, =sub_8038538 + str r1, [r0, 0x1C] + bx lr + .pool + thumb_func_end sub_8038528 + + thumb_func_start sub_8038538 +sub_8038538: @ 8038538 + push {r4,r5,lr} + adds r3, r0, 0 + ldr r5, =0x0201c000 + movs r0, 0x2E + ldrsh r1, [r3, r0] + cmp r1, 0x1 + beq _0803856C + cmp r1, 0x1 + bgt _08038554 + cmp r1, 0 + beq _0803855A + b _080385DC + .pool +_08038554: + cmp r1, 0x2 + beq _080385C8 + b _080385DC +_0803855A: + ldrh r0, [r3, 0x2E] + adds r0, 0x1 + strh r0, [r3, 0x2E] + strh r1, [r3, 0x30] + ldr r0, =0x00000281 + strh r0, [r3, 0x32] + strh r1, [r3, 0x34] + movs r0, 0x1 + strh r0, [r3, 0x36] +_0803856C: + ldrh r0, [r3, 0x36] + subs r0, 0x1 + strh r0, [r3, 0x36] + lsls r0, 16 + cmp r0, 0 + bne _080385DC + movs r0, 0x2 + strh r0, [r3, 0x36] + movs r4, 0x30 + ldrsh r2, [r3, r4] + movs r0, 0x34 + ldrsh r1, [r3, r0] + lsls r1, 5 + adds r2, r1 + movs r4, 0x32 + ldrsh r0, [r3, r4] + subs r0, r1 + movs r4, 0x3D + lsls r0, 1 + adds r0, r5 + lsls r2, 1 + adds r2, r5 + movs r1, 0x1C +_0803859A: + strh r4, [r2] + strh r4, [r0] + adds r0, 0x4 + adds r2, 0x4 + subs r1, 0x2 + cmp r1, 0 + bge _0803859A + ldrh r0, [r3, 0x34] + adds r0, 0x1 + strh r0, [r3, 0x34] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x15 + bne _080385DC + ldrh r0, [r3, 0x2E] + adds r0, 0x1 + strh r0, [r3, 0x2E] + movs r0, 0x20 + strh r0, [r3, 0x30] + b _080385DC + .pool +_080385C8: + ldrh r0, [r3, 0x30] + subs r0, 0x1 + strh r0, [r3, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x14 + bne _080385DC + ldr r0, =sub_8036760 + bl SetMainCallback2 +_080385DC: + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8038538 + + thumb_func_start CreateNPCTrainerParty +CreateNPCTrainerParty: @ 80385E8 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x28 + str r0, [sp, 0x10] + lsls r1, 16 + lsrs r1, 16 + str r1, [sp, 0x14] + lsls r2, 24 + lsrs r2, 24 + movs r0, 0 + mov r9, r0 + movs r0, 0x80 + lsls r0, 3 + cmp r1, r0 + bne _08038610 + movs r0, 0 + b _080389E2 +_08038610: + ldr r4, =gBattleTypeFlags + ldr r0, [r4] + ldr r1, =0x043f0908 + ands r0, r1 + ldr r1, [sp, 0x14] + lsls r1, 2 + str r1, [sp, 0x20] + cmp r0, 0x8 + beq _08038624 + b _080389D2 +_08038624: + cmp r2, 0x1 + bne _0803862C + bl ZeroEnemyPartyMons +_0803862C: + ldr r0, [r4] + movs r1, 0x80 + lsls r1, 8 + ands r0, r1 + cmp r0, 0 + beq _08038668 + ldr r0, =gTrainers + ldr r2, [sp, 0x20] + ldr r3, [sp, 0x14] + adds r1, r2, r3 + lsls r1, 3 + adds r1, r0 + adds r2, r1, 0 + adds r2, 0x20 + ldrb r1, [r2] + movs r4, 0x3 + str r4, [sp, 0x1C] + adds r4, r0, 0 + cmp r1, 0x3 + bhi _0803867C + adds r2, r1, 0 + str r2, [sp, 0x1C] + b _0803867C + .pool +_08038668: + ldr r1, =gTrainers + ldr r2, [sp, 0x20] + ldr r3, [sp, 0x14] + adds r0, r2, r3 + lsls r0, 3 + adds r0, r1 + adds r0, 0x20 + ldrb r0, [r0] + str r0, [sp, 0x1C] + adds r4, r1, 0 +_0803867C: + movs r0, 0 + str r0, [sp, 0x18] + b _080389B4 + .pool +_08038688: + ldr r2, [sp, 0x20] + ldr r3, [sp, 0x14] + adds r0, r2, r3 + lsls r0, 3 + adds r1, r0, r4 + ldrb r0, [r1, 0x18] + cmp r0, 0x1 + bne _0803869E + movs r0, 0x80 + mov r10, r0 + b _080386B0 +_0803869E: + ldrb r1, [r1, 0x2] + movs r0, 0x80 + ands r0, r1 + movs r1, 0x88 + mov r10, r1 + cmp r0, 0 + beq _080386B0 + movs r2, 0x78 + mov r10, r2 +_080386B0: + movs r6, 0 + ldr r2, [sp, 0x20] + ldr r3, [sp, 0x14] + adds r0, r2, r3 + lsls r0, 3 + adds r1, r4, 0x4 + adds r0, r1 + ldrb r0, [r0] + ldr r3, [sp, 0x18] + adds r3, 0x1 + str r3, [sp, 0x24] + cmp r0, 0xFF + beq _080386E6 + adds r3, r1, 0 +_080386CC: + ldr r0, [sp, 0x14] + adds r1, r2, r0 + lsls r1, 3 + adds r0, r6, r1 + adds r0, r3 + ldrb r0, [r0] + add r9, r0 + adds r6, 0x1 + adds r1, r6, r1 + adds r1, r3 + ldrb r0, [r1] + cmp r0, 0xFF + bne _080386CC +_080386E6: + ldr r1, [sp, 0x20] + ldr r2, [sp, 0x14] + adds r0, r1, r2 + lsls r1, r0, 3 + adds r0, r1, r4 + ldrb r0, [r0] + cmp r0, 0x1 + beq _08038794 + cmp r0, 0x1 + bgt _08038700 + cmp r0, 0 + beq _0803870E + b _080389AC +_08038700: + cmp r0, 0x2 + bne _08038706 + b _08038854 +_08038706: + cmp r0, 0x3 + bne _0803870C + b _080388E8 +_0803870C: + b _080389AC +_0803870E: + adds r0, r4, 0 + adds r0, 0x24 + adds r0, r1, r0 + ldr r4, [r0] + movs r6, 0 + ldr r3, [sp, 0x18] + lsls r2, r3, 3 + adds r0, r2, r4 + ldrh r1, [r0, 0x4] + movs r0, 0xB + muls r0, r1 + ldr r1, =gSpeciesNames + adds r0, r1 + ldrb r0, [r0] + adds r5, r2, 0 + cmp r0, 0xFF + beq _08038750 + adds r3, r1, 0 + movs r7, 0xB +_08038734: + adds r0, r2, r4 + ldrh r0, [r0, 0x4] + adds r1, r0, 0 + muls r1, r7 + adds r0, r6, r1 + adds r0, r3 + ldrb r0, [r0] + add r9, r0 + adds r6, 0x1 + adds r1, r6, r1 + adds r1, r3 + ldrb r0, [r1] + cmp r0, 0xFF + bne _08038734 +_08038750: + mov r2, r9 + lsls r0, r2, 8 + add r10, r0 + adds r4, r5, r4 + ldrh r1, [r4] + lsls r0, r1, 5 + subs r0, r1 + movs r1, 0xFF + bl __divsi3 + lsls r0, 24 + lsrs r6, r0, 24 + ldr r3, [sp, 0x18] + movs r1, 0x64 + adds r0, r3, 0 + muls r0, r1 + ldr r2, [sp, 0x10] + adds r0, r2, r0 + ldrh r1, [r4, 0x4] + ldrb r2, [r4, 0x2] + movs r3, 0x1 + str r3, [sp] + mov r3, r10 + str r3, [sp, 0x4] + movs r3, 0x2 + str r3, [sp, 0x8] + movs r3, 0 + str r3, [sp, 0xC] + adds r3, r6, 0 + bl CreateMon + b _080389AC + .pool +_08038794: + adds r0, r4, 0 + adds r0, 0x24 + adds r0, r1, r0 + ldr r7, [r0] + movs r6, 0 + ldr r4, [sp, 0x18] + lsls r2, r4, 4 + adds r0, r2, r7 + ldrh r1, [r0, 0x4] + movs r0, 0xB + muls r0, r1 + ldr r1, =gSpeciesNames + adds r0, r1 + ldrb r0, [r0] + mov r8, r2 + cmp r0, 0xFF + beq _080387D6 + adds r3, r1, 0 + movs r4, 0xB +_080387BA: + adds r0, r2, r7 + ldrh r0, [r0, 0x4] + adds r1, r0, 0 + muls r1, r4 + adds r0, r6, r1 + adds r0, r3 + ldrb r0, [r0] + add r9, r0 + adds r6, 0x1 + adds r1, r6, r1 + adds r1, r3 + ldrb r0, [r1] + cmp r0, 0xFF + bne _080387BA +_080387D6: + mov r2, r9 + lsls r0, r2, 8 + add r10, r0 + mov r3, r8 + adds r4, r3, r7 + ldrh r1, [r4] + lsls r0, r1, 5 + subs r0, r1 + movs r1, 0xFF + bl __divsi3 + lsls r0, 24 + lsrs r6, r0, 24 + ldr r0, [sp, 0x18] + movs r1, 0x64 + adds r5, r0, 0 + muls r5, r1 + ldr r2, [sp, 0x10] + adds r5, r2, r5 + ldrh r1, [r4, 0x4] + ldrb r2, [r4, 0x2] + movs r0, 0x1 + str r0, [sp] + mov r3, r10 + str r3, [sp, 0x4] + movs r0, 0x2 + str r0, [sp, 0x8] + movs r0, 0 + str r0, [sp, 0xC] + adds r0, r5, 0 + adds r3, r6, 0 + bl CreateMon + movs r6, 0 + mov r0, r8 + adds r0, 0x6 + adds r4, r7, r0 +_08038820: + adds r1, r6, 0 + adds r1, 0xD + adds r0, r5, 0 + adds r2, r4, 0 + bl SetMonData + adds r1, r6, 0 + adds r1, 0x11 + ldrh r0, [r4] + lsls r2, r0, 1 + adds r2, r0 + lsls r2, 2 + ldr r0, =gBattleMoves + 0x4 @ PP offset + adds r2, r0 + adds r0, r5, 0 + bl SetMonData + adds r4, 0x2 + adds r6, 0x1 + cmp r6, 0x3 + ble _08038820 + b _080389AC + .pool +_08038854: + adds r0, r4, 0 + adds r0, 0x24 + adds r0, r1, r0 + ldr r4, [r0] + movs r6, 0 + ldr r0, [sp, 0x18] + lsls r2, r0, 3 + adds r0, r2, r4 + ldrh r1, [r0, 0x4] + movs r0, 0xB + muls r0, r1 + ldr r1, =gSpeciesNames + adds r0, r1 + ldrb r0, [r0] + adds r5, r2, 0 + cmp r0, 0xFF + beq _08038896 + adds r3, r1, 0 + movs r7, 0xB +_0803887A: + adds r0, r2, r4 + ldrh r0, [r0, 0x4] + adds r1, r0, 0 + muls r1, r7 + adds r0, r6, r1 + adds r0, r3 + ldrb r0, [r0] + add r9, r0 + adds r6, 0x1 + adds r1, r6, r1 + adds r1, r3 + ldrb r0, [r1] + cmp r0, 0xFF + bne _0803887A +_08038896: + mov r2, r9 + lsls r0, r2, 8 + add r10, r0 + adds r5, r4 + ldrh r1, [r5] + lsls r0, r1, 5 + subs r0, r1 + movs r1, 0xFF + bl __divsi3 + lsls r0, 24 + lsrs r6, r0, 24 + ldr r3, [sp, 0x18] + movs r0, 0x64 + adds r4, r3, 0 + muls r4, r0 + ldr r1, [sp, 0x10] + adds r4, r1, r4 + ldrh r1, [r5, 0x4] + ldrb r2, [r5, 0x2] + movs r0, 0x1 + str r0, [sp] + mov r3, r10 + str r3, [sp, 0x4] + movs r0, 0x2 + str r0, [sp, 0x8] + movs r0, 0 + str r0, [sp, 0xC] + adds r0, r4, 0 + adds r3, r6, 0 + bl CreateMon + adds r5, 0x6 + adds r0, r4, 0 + movs r1, 0xC + adds r2, r5, 0 + bl SetMonData + b _080389AC + .pool +_080388E8: + adds r0, r4, 0 + adds r0, 0x24 + adds r0, r1, r0 + ldr r7, [r0] + movs r6, 0 + ldr r4, [sp, 0x18] + lsls r2, r4, 4 + adds r0, r2, r7 + ldrh r1, [r0, 0x4] + movs r0, 0xB + muls r0, r1 + ldr r1, =gSpeciesNames + adds r0, r1 + ldrb r0, [r0] + mov r8, r2 + cmp r0, 0xFF + beq _0803892A + adds r3, r1, 0 + movs r4, 0xB +_0803890E: + adds r0, r2, r7 + ldrh r0, [r0, 0x4] + adds r1, r0, 0 + muls r1, r4 + adds r0, r6, r1 + adds r0, r3 + ldrb r0, [r0] + add r9, r0 + adds r6, 0x1 + adds r1, r6, r1 + adds r1, r3 + ldrb r0, [r1] + cmp r0, 0xFF + bne _0803890E +_0803892A: + mov r2, r9 + lsls r0, r2, 8 + add r10, r0 + mov r3, r8 + adds r5, r3, r7 + ldrh r1, [r5] + lsls r0, r1, 5 + subs r0, r1 + movs r1, 0xFF + bl __divsi3 + lsls r0, 24 + lsrs r6, r0, 24 + ldr r0, [sp, 0x18] + movs r1, 0x64 + adds r4, r0, 0 + muls r4, r1 + ldr r2, [sp, 0x10] + adds r4, r2, r4 + ldrh r1, [r5, 0x4] + ldrb r2, [r5, 0x2] + movs r0, 0x1 + str r0, [sp] + mov r3, r10 + str r3, [sp, 0x4] + movs r0, 0x2 + str r0, [sp, 0x8] + movs r0, 0 + str r0, [sp, 0xC] + adds r0, r4, 0 + adds r3, r6, 0 + bl CreateMon + adds r5, 0x6 + adds r0, r4, 0 + movs r1, 0xC + adds r2, r5, 0 + bl SetMonData + movs r6, 0 + adds r5, r4, 0 + mov r0, r8 + adds r0, 0x8 + adds r4, r7, r0 +_08038982: + adds r1, r6, 0 + adds r1, 0xD + adds r0, r5, 0 + adds r2, r4, 0 + bl SetMonData + adds r1, r6, 0 + adds r1, 0x11 + ldrh r0, [r4] + lsls r2, r0, 1 + adds r2, r0 + lsls r2, 2 + ldr r0, =gBattleMoves + 0x4 @ PP offset + adds r2, r0 + adds r0, r5, 0 + bl SetMonData + adds r4, 0x2 + adds r6, 0x1 + cmp r6, 0x3 + ble _08038982 +_080389AC: + ldr r4, [sp, 0x24] + str r4, [sp, 0x18] + ldr r4, =gTrainers + ldr r0, [sp, 0x18] +_080389B4: + ldr r1, [sp, 0x1C] + cmp r0, r1 + bge _080389BC + b _08038688 +_080389BC: + ldr r2, =gBattleTypeFlags + ldr r1, =gTrainers + ldr r3, [sp, 0x20] + ldr r4, [sp, 0x14] + adds r0, r3, r4 + lsls r0, 3 + adds r0, r1 + ldrb r1, [r0, 0x18] + ldr r0, [r2] + orrs r0, r1 + str r0, [r2] +_080389D2: + ldr r0, =gTrainers + ldr r2, [sp, 0x20] + ldr r3, [sp, 0x14] + adds r1, r2, r3 + lsls r1, 3 + adds r1, r0 + adds r1, 0x20 + ldrb r0, [r1] +_080389E2: + add sp, 0x28 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .pool + thumb_func_end CreateNPCTrainerParty + + thumb_func_start sub_8038A04 +sub_8038A04: @ 8038A04 + push {lr} + ldr r0, =0x04000006 + ldrh r0, [r0] + subs r0, 0x6F + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x30 + bhi _08038A1E + movs r1, 0x98 + lsls r1, 8 + movs r0, 0x8 + bl SetGpuReg +_08038A1E: + pop {r0} + bx r0 + .pool + thumb_func_end sub_8038A04 + + thumb_func_start vblank_cb_08078BB4 +vblank_cb_08078BB4: @ 8038A28 + push {lr} + ldr r0, =gBattleTypeFlags + ldr r0, [r0] + ldr r1, =0x013f0102 + ands r0, r1 + cmp r0, 0 + bne _08038A3A + bl Random +_08038A3A: + ldr r0, =gUnknown_02022E14 + ldrh r1, [r0] + movs r0, 0x10 + bl SetGpuReg + ldr r0, =gUnknown_02022E16 + ldrh r1, [r0] + movs r0, 0x12 + bl SetGpuReg + ldr r0, =gUnknown_02022E18 + ldrh r1, [r0] + movs r0, 0x14 + bl SetGpuReg + ldr r0, =gUnknown_02022E1A + ldrh r1, [r0] + movs r0, 0x16 + bl SetGpuReg + ldr r0, =gUnknown_02022E1C + ldrh r1, [r0] + movs r0, 0x18 + bl SetGpuReg + ldr r0, =gUnknown_02022E1E + ldrh r1, [r0] + movs r0, 0x1A + bl SetGpuReg + ldr r0, =gUnknown_02022E20 + ldrh r1, [r0] + movs r0, 0x1C + bl SetGpuReg + ldr r0, =gUnknown_02022E22 + ldrh r1, [r0] + movs r0, 0x1E + bl SetGpuReg + ldr r0, =gUnknown_02022E24 + ldrh r1, [r0] + movs r0, 0x40 + bl SetGpuReg + ldr r0, =gUnknown_02022E26 + ldrh r1, [r0] + movs r0, 0x44 + bl SetGpuReg + ldr r0, =gUnknown_02022E28 + ldrh r1, [r0] + movs r0, 0x42 + bl SetGpuReg + ldr r0, =gUnknown_02022E2A + ldrh r1, [r0] + movs r0, 0x46 + bl SetGpuReg + bl LoadOam + bl ProcessSpriteCopyRequests + bl TransferPlttBuffer + bl sub_80BA0A8 + pop {r0} + bx r0 + .pool + thumb_func_end vblank_cb_08078BB4 + + thumb_func_start nullsub_17 +nullsub_17: @ 8038B00 + bx lr + thumb_func_end nullsub_17 + + thumb_func_start sub_8038B04 +sub_8038B04: @ 8038B04 + push {r4,r5,lr} + adds r5, r0, 0 + movs r1, 0x2E + ldrsh r0, [r5, r1] + cmp r0, 0 + beq _08038B24 + movs r1, 0x32 + ldrsh r0, [r5, r1] + movs r1, 0xFF + lsls r1, 8 + ands r0, r1 + lsrs r0, 8 + ldrh r1, [r5, 0x30] + adds r0, r1 + strh r0, [r5, 0x20] + b _08038B36 +_08038B24: + movs r1, 0x32 + ldrsh r0, [r5, r1] + movs r1, 0xFF + lsls r1, 8 + ands r0, r1 + asrs r0, 8 + ldrh r1, [r5, 0x30] + subs r1, r0 + strh r1, [r5, 0x20] +_08038B36: + movs r1, 0xC0 + lsls r1, 1 + adds r0, r1, 0 + ldrh r1, [r5, 0x32] + adds r0, r1 + strh r0, [r5, 0x32] + adds r0, r5, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _08038B6A + ldr r4, =0x00002710 + adds r0, r4, 0 + bl FreeSpriteTilesByTag + adds r0, r4, 0 + bl FreeSpritePaletteByTag + adds r0, r5, 0 + bl FreeSpriteOamMatrix + adds r0, r5, 0 + bl DestroySprite +_08038B6A: + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8038B04 + + thumb_func_start sub_8038B74 +sub_8038B74: @ 8038B74 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x1 + bl StartSpriteAffineAnim + ldr r0, =sub_8038B04 + str r0, [r4, 0x1C] + movs r0, 0x68 + bl PlaySE + pop {r4} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8038B74 + + thumb_func_start sub_8038B94 +sub_8038B94: @ 8038B94 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x10 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp] + movs r0, 0 + str r0, [sp, 0x4] + movs r1, 0 + str r1, [sp, 0x8] + ldr r0, =gBattleScripting + adds r0, 0x25 + ldrb r2, [r0] + ldr r0, =gBattleTypeFlags + ldr r0, [r0] + movs r1, 0x40 + ands r0, r1 + cmp r0, 0 + beq _08038C04 + ldr r1, =gLinkPlayers + lsls r0, r2, 3 + subs r0, r2 + lsls r0, 2 + adds r0, r1 + ldrh r0, [r0, 0x18] + cmp r0, 0x1 + beq _08038BF0 + cmp r0, 0x1 + bgt _08038BE8 + cmp r0, 0 + beq _08038C04 + b _08038C0C + .pool +_08038BE8: + cmp r0, 0x2 + beq _08038C04 + cmp r0, 0x3 + bne _08038C0C +_08038BF0: + ldr r0, =gEnemyParty + str r0, [sp, 0x4] + ldr r1, =gPlayerParty + str r1, [sp, 0x8] + b _08038C0C + .pool +_08038C04: + ldr r2, =gPlayerParty + str r2, [sp, 0x4] + ldr r3, =gEnemyParty + str r3, [sp, 0x8] +_08038C0C: + movs r7, 0 + movs r0, 0 + mov r8, r0 + ldr r1, [sp] + lsls r1, 2 + str r1, [sp, 0xC] + movs r2, 0xCE + lsls r2, 1 + mov r10, r2 + mov r9, r0 +_08038C20: + movs r0, 0x64 + mov r4, r8 + muls r4, r0 + ldr r3, [sp, 0x4] + adds r4, r3, r4 + adds r0, r4, 0 + movs r1, 0x41 + bl GetMonData + lsls r0, 16 + lsrs r5, r0, 16 + adds r0, r4, 0 + movs r1, 0x39 + bl GetMonData + lsls r0, 16 + lsrs r6, r0, 16 + adds r0, r4, 0 + movs r1, 0x37 + bl GetMonData + adds r1, r0, 0 + cmp r5, 0 + beq _08038C90 + cmp r5, r10 + beq _08038C64 + cmp r6, 0 + beq _08038C64 + cmp r1, 0 + bne _08038C64 + movs r0, 0x1 + mov r2, r9 + lsls r0, r2 + orrs r7, r0 +_08038C64: + cmp r5, 0 + beq _08038C90 + cmp r6, 0 + beq _08038C7C + cmp r5, r10 + beq _08038C74 + cmp r1, 0 + beq _08038C7C +_08038C74: + movs r0, 0x2 + mov r3, r9 + lsls r0, r3 + orrs r7, r0 +_08038C7C: + cmp r5, 0 + beq _08038C90 + cmp r5, r10 + beq _08038C90 + cmp r6, 0 + bne _08038C90 + movs r0, 0x3 + mov r1, r9 + lsls r0, r1 + orrs r7, r0 +_08038C90: + movs r2, 0x2 + add r9, r2 + movs r3, 0x1 + add r8, r3 + mov r0, r8 + cmp r0, 0x5 + ble _08038C20 + ldr r1, =gTasks + ldr r2, [sp, 0xC] + ldr r3, [sp] + adds r0, r2, r3 + lsls r0, 3 + adds r0, r1 + strh r7, [r0, 0xE] + movs r7, 0 + movs r0, 0 + mov r8, r0 + movs r1, 0xCE + lsls r1, 1 + mov r10, r1 + mov r9, r0 +_08038CBA: + movs r0, 0x64 + mov r4, r8 + muls r4, r0 + ldr r2, [sp, 0x8] + adds r4, r2, r4 + adds r0, r4, 0 + movs r1, 0x41 + bl GetMonData + lsls r0, 16 + lsrs r5, r0, 16 + adds r0, r4, 0 + movs r1, 0x39 + bl GetMonData + lsls r0, 16 + lsrs r6, r0, 16 + adds r0, r4, 0 + movs r1, 0x37 + bl GetMonData + adds r1, r0, 0 + cmp r5, 0 + beq _08038D2A + cmp r5, r10 + beq _08038CFE + cmp r6, 0 + beq _08038CFE + cmp r1, 0 + bne _08038CFE + movs r0, 0x1 + mov r3, r9 + lsls r0, r3 + orrs r7, r0 +_08038CFE: + cmp r5, 0 + beq _08038D2A + cmp r6, 0 + beq _08038D16 + cmp r5, r10 + beq _08038D0E + cmp r1, 0 + beq _08038D16 +_08038D0E: + movs r0, 0x2 + mov r1, r9 + lsls r0, r1 + orrs r7, r0 +_08038D16: + cmp r5, 0 + beq _08038D2A + cmp r5, r10 + beq _08038D2A + cmp r6, 0 + bne _08038D2A + movs r0, 0x3 + mov r2, r9 + lsls r0, r2 + orrs r7, r0 +_08038D2A: + movs r3, 0x2 + add r9, r3 + movs r0, 0x1 + add r8, r0 + mov r1, r8 + cmp r1, 0x5 + ble _08038CBA + ldr r1, =gTasks + ldr r2, [sp, 0xC] + ldr r3, [sp] + adds r0, r2, r3 + lsls r0, 3 + adds r0, r1 + strh r7, [r0, 0x10] + add sp, 0x10 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8038B94 + + thumb_func_start sub_8038D64 +sub_8038D64: @ 8038D64 + push {r4,lr} + sub sp, 0x4 + movs r0, 0 + bl SetHBlankCallback + movs r0, 0 + bl SetVBlankCallback + ldr r0, =gBattleTypeFlags + ldr r1, [r0] + movs r2, 0x21 + negs r2, r2 + ands r1, r2 + str r1, [r0] + ldr r0, =0x003f0100 + ands r0, r1 + cmp r0, 0 + beq _08038DAC + ldr r0, =gMain + ldr r0, [r0, 0x8] + bl SetMainCallback2 + bl sub_8057028 + bl dp11_free + bl sub_805F094 + b _08038EB6 + .pool +_08038DAC: + str r0, [sp] + movs r1, 0xC0 + lsls r1, 19 + ldr r2, =0x05006000 + mov r0, sp + bl CpuSet + movs r0, 0x4C + movs r1, 0 + bl SetGpuReg + movs r0, 0x40 + movs r1, 0xF0 + bl SetGpuReg + ldr r4, =0x00005051 + movs r0, 0x44 + adds r1, r4, 0 + bl SetGpuReg + movs r0, 0x48 + movs r1, 0 + bl SetGpuReg + movs r0, 0x4A + movs r1, 0 + bl SetGpuReg + ldr r1, =gUnknown_02022E24 + movs r0, 0xF0 + strh r0, [r1] + ldr r0, =gUnknown_02022E26 + strh r4, [r0] + bl dp12_8087EA4 + ldr r0, =gUnknown_02038C28 + movs r3, 0xF0 + movs r1, 0xF0 + lsls r1, 3 + adds r2, r0, r1 + movs r1, 0x4F +_08038DFE: + strh r3, [r0] + strh r3, [r2] + adds r2, 0x2 + adds r0, 0x2 + subs r1, 0x1 + cmp r1, 0 + bge _08038DFE + movs r1, 0x50 + ldr r0, =gUnknown_02038C28 + ldr r3, =0x0000ff10 + movs r4, 0x82 + lsls r4, 4 + adds r2, r0, r4 + adds r0, 0xA0 +_08038E1A: + strh r3, [r0] + strh r3, [r2] + adds r2, 0x2 + adds r0, 0x2 + adds r1, 0x1 + cmp r1, 0x9F + ble _08038E1A + bl ResetPaletteFade + ldr r0, =gUnknown_02022E14 + movs r4, 0 + strh r4, [r0] + ldr r0, =gUnknown_02022E16 + strh r4, [r0] + ldr r0, =gUnknown_02022E18 + strh r4, [r0] + ldr r0, =gUnknown_02022E1A + strh r4, [r0] + ldr r0, =gUnknown_02022E1C + strh r4, [r0] + ldr r0, =gUnknown_02022E1E + strh r4, [r0] + ldr r0, =gUnknown_02022E20 + strh r4, [r0] + ldr r0, =gUnknown_02022E22 + strh r4, [r0] + bl c2_berry_program_update_menu + ldr r0, =gUnknown_08C004E0 + movs r1, 0 + movs r2, 0x40 + bl LoadCompressedPalette + bl sub_803570C + bl ResetSpriteData + bl ResetTasks + bl sub_8036154 + movs r0, 0x4A + movs r1, 0x37 + bl SetGpuReg + bl FreeAllSpritePalettes + ldr r1, =gReservedSpritePaletteCount + movs r0, 0x4 + strb r0, [r1] + ldr r0, =vblank_cb_08078BB4 + bl SetVBlankCallback + ldr r0, =task00_0800F6FC + movs r1, 0 + bl CreateTask + lsls r0, 24 + lsrs r0, 24 + ldr r2, =gTasks + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + movs r2, 0x87 + lsls r2, 1 + strh r2, [r1, 0xA] + movs r2, 0x5A + strh r2, [r1, 0xC] + movs r2, 0x1 + strh r2, [r1, 0x12] + bl sub_8038B94 + ldr r0, =sub_8038F14 + bl SetMainCallback2 + ldr r0, =gBattleCommunication + strb r4, [r0] +_08038EB6: + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8038D64 + + thumb_func_start sub_8038F14 +sub_8038F14: @ 8038F14 + push {lr} + bl sub_8038F34 + bl AnimateSprites + bl BuildOamBuffer + bl RunTextPrinters + bl UpdatePaletteFade + bl RunTasks + pop {r0} + bx r0 + thumb_func_end sub_8038F14 + + thumb_func_start sub_8038F34 +sub_8038F34: @ 8038F34 + push {r4-r6,lr} + sub sp, 0x8 + ldr r0, =gBattleCommunication + ldrb r1, [r0] + adds r4, r0, 0 + cmp r1, 0x9 + bls _08038F44 + b _080391C6 +_08038F44: + lsls r0, r1, 2 + ldr r1, =_08038F58 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .pool + .align 2, 0 +_08038F58: + .4byte _08038F80 + .4byte _08038FA0 + .4byte _08038FC2 + .4byte _080390C8 + .4byte _08039100 + .4byte _08039118 + .4byte _0803912C + .4byte _0803914C + .4byte _08039166 + .4byte _08039184 +_08038F80: + movs r0, 0 + bl ShowBg + movs r0, 0x1 + bl ShowBg + movs r0, 0x2 + bl ShowBg + ldr r1, =gBattleCommunication + movs r0, 0xFF + strb r0, [r1, 0x1] + b _08039174 + .pool +_08038FA0: + ldrb r0, [r4, 0x1] + subs r0, 0x1 + strb r0, [r4, 0x1] + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + beq _08038FB0 + b _080391C6 +_08038FB0: + movs r0, 0x1 + negs r0, r0 + str r1, [sp] + movs r1, 0 + movs r2, 0 + movs r3, 0x10 + bl BeginNormalPaletteFade + b _0803910C +_08038FC2: + ldr r0, =gPaletteFade + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _08038FD0 + b _080391C6 +_08038FD0: + bl sub_8185FAC + ldr r2, =gMain + ldr r1, =0x00000439 + adds r2, r1 + movs r1, 0x1 + ands r1, r0 + lsls r1, 2 + ldrb r3, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2] + ldr r0, =gBattleTypeFlags + ldr r0, [r0] + movs r1, 0x40 + ands r0, r1 + movs r3, 0x2 + cmp r0, 0 + beq _08038FFC + movs r3, 0x4 +_08038FFC: + movs r4, 0 + ldr r6, =gSaveBlock2Ptr + cmp r4, r3 + bge _08039022 + ldr r1, =gLinkPlayers + ldrb r0, [r1] + cmp r0, 0x3 + bne _08039022 + movs r5, 0xFF + adds r2, r1, 0 +_08039010: + adds r2, 0x1C + adds r4, 0x1 + cmp r4, r3 + bge _08039022 + ldrh r1, [r2] + adds r0, r5, 0 + ands r0, r1 + cmp r0, 0x3 + beq _08039010 +_08039022: + ldr r0, [r6] + ldr r1, =0x00000ca9 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + bne _080390AC + cmp r4, r3 + bne _080390AC + ldr r0, =0x000008d2 + bl FlagGet + lsls r0, 24 + cmp r0, 0 + beq _08039074 + bl FreeAllWindowBuffers + ldr r0, =sub_80392A8 + bl SetMainCallback2 + b _080391C6 + .pool +_08039074: + ldr r2, =gMain + ldr r1, =0x00000439 + adds r0, r2, r1 + ldrb r1, [r0] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + bne _08039090 + ldr r0, [r2, 0x8] + b _080390B0 + .pool +_08039090: + ldr r0, =gUnknown_03003124 + ldrb r0, [r0] + cmp r0, 0 + bne _08039172 + ldr r0, =sub_80B3AF8 + movs r1, 0x5 + bl CreateTask + b _08039172 + .pool +_080390AC: + ldr r0, =gMain + ldr r0, [r0, 0x8] +_080390B0: + bl SetMainCallback2 + bl sub_8057028 + bl dp11_free + bl sub_805F094 + b _080391C6 + .pool +_080390C8: + movs r0, 0 + str r0, [sp, 0x4] + movs r1, 0xC0 + lsls r1, 19 + ldr r2, =0x05006000 + add r0, sp, 0x4 + bl CpuSet + movs r4, 0 +_080390DA: + lsls r0, r4, 24 + lsrs r0, 24 + bl sub_80363C4 + adds r4, 0x1 + cmp r4, 0x1 + ble _080390DA + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0x10 + movs r3, 0 + bl BeginNormalPaletteFade + b _08039172 + .pool +_08039100: + ldr r0, =gPaletteFade + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080391C6 +_0803910C: + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + b _080391C6 + .pool +_08039118: + ldr r0, =sub_80B3AF8 + bl FuncIsActiveTask + lsls r0, 24 + cmp r0, 0 + bne _080391C6 + b _08039172 + .pool +_0803912C: + bl sub_800A520 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080391C6 + bl sub_800ADF8 + ldr r0, =gUnknown_0824978D + movs r1, 0 + bl battle_show_message_maybe + b _08039172 + .pool +_0803914C: + movs r0, 0 + bl IsTextPrinterActive + lsls r0, 16 + cmp r0, 0 + bne _080391C6 + bl sub_800A520 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080391C6 + b _08039172 +_08039166: + ldr r0, =gLinkVSyncDisabled + ldrb r0, [r0] + cmp r0, 0 + bne _08039172 + bl sub_800AC34 +_08039172: + ldr r1, =gBattleCommunication +_08039174: + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _080391C6 + .pool +_08039184: + ldr r2, =gMain + ldr r1, =0x00000439 + adds r0, r2, r1 + ldrb r1, [r0] + movs r0, 0x4 + ands r0, r1 + adds r3, r2, 0 + cmp r0, 0 + beq _080391A6 + ldr r0, =gLinkVSyncDisabled + ldrb r0, [r0] + cmp r0, 0 + bne _080391A6 + ldr r0, =gUnknown_03003124 + ldrb r0, [r0] + cmp r0, 0x1 + beq _080391C6 +_080391A6: + ldr r0, =0x00000439 + adds r2, r3, r0 + ldrb r1, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + ldr r0, [r3, 0x8] + bl SetMainCallback2 + bl sub_8057028 + bl dp11_free + bl sub_805F094 +_080391C6: + add sp, 0x8 + pop {r4-r6} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8038F34 + + thumb_func_start sub_80391E0 +sub_80391E0: @ 80391E0 + push {lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r1, 24 + lsrs r1, 24 + movs r0, 0 + cmp r1, 0x6 + bhi _080392A0 + lsls r0, r1, 2 + ldr r1, =_08039200 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .pool + .align 2, 0 +_08039200: + .4byte _0803921C + .4byte _08039230 + .4byte _08039244 + .4byte _08039258 + .4byte _0803926C + .4byte _08039280 + .4byte _08039294 +_0803921C: + ldr r0, =gUnknown_0831AA08 + lsls r1, r2, 2 + adds r1, r0 + ldrb r0, [r1] + lsls r0, 30 + lsrs r0, 30 + b _080392A0 + .pool +_08039230: + ldr r0, =gUnknown_0831AA08 + lsls r1, r2, 2 + adds r1, r0 + ldrb r0, [r1] + lsls r0, 28 + lsrs r0, 30 + b _080392A0 + .pool +_08039244: + ldr r0, =gUnknown_0831AA08 + lsls r1, r2, 2 + adds r1, r0 + ldrh r0, [r1] + lsls r0, 23 + lsrs r0, 27 + b _080392A0 + .pool +_08039258: + ldr r0, =gUnknown_0831AA08 + lsls r1, r2, 2 + adds r1, r0 + ldrb r0, [r1, 0x1] + lsls r0, 29 + lsrs r0, 30 + b _080392A0 + .pool +_0803926C: + ldr r0, =gUnknown_0831AA08 + lsls r1, r2, 2 + adds r1, r0 + ldrb r0, [r1, 0x1] + lsls r0, 28 + lsrs r0, 31 + b _080392A0 + .pool +_08039280: + ldr r0, =gUnknown_0831AA08 + lsls r1, r2, 2 + adds r1, r0 + ldrb r0, [r1, 0x1] + lsls r0, 26 + lsrs r0, 30 + b _080392A0 + .pool +_08039294: + ldr r0, =gUnknown_0831AA08 + lsls r1, r2, 2 + adds r1, r0 + ldr r0, [r1] + lsls r0, 8 + lsrs r0, 22 +_080392A0: + pop {r1} + bx r1 + .pool + thumb_func_end sub_80391E0 + + thumb_func_start sub_80392A8 +sub_80392A8: @ 80392A8 + push {r4,lr} + sub sp, 0x8 + movs r0, 0 + bl SetHBlankCallback + movs r0, 0 + bl SetVBlankCallback + movs r4, 0 + str r4, [sp, 0x4] + movs r1, 0xC0 + lsls r1, 19 + ldr r2, =0x05006000 + add r0, sp, 0x4 + bl CpuSet + bl ResetPaletteFade + ldr r0, =gUnknown_02022E14 + strh r4, [r0] + ldr r0, =gUnknown_02022E16 + strh r4, [r0] + ldr r0, =gUnknown_02022E18 + strh r4, [r0] + ldr r0, =gUnknown_02022E1A + strh r4, [r0] + ldr r0, =gUnknown_02022E1C + strh r4, [r0] + ldr r0, =gUnknown_02022E1E + strh r4, [r0] + ldr r0, =gUnknown_02022E20 + strh r4, [r0] + ldr r0, =gUnknown_02022E22 + strh r4, [r0] + bl c2_berry_program_update_menu + movs r1, 0x82 + lsls r1, 5 + movs r0, 0 + bl SetGpuReg + bl sub_803570C +_080392FE: + lsls r0, r4, 24 + lsrs r0, 24 + bl sub_80363C4 + adds r4, 0x1 + cmp r4, 0x1 + ble _080392FE + bl ResetSpriteData + bl ResetTasks + bl FreeAllSpritePalettes + ldr r1, =gReservedSpritePaletteCount + movs r0, 0x4 + strb r0, [r1] + ldr r0, =vblank_cb_08078BB4 + bl SetVBlankCallback + ldr r0, =sub_803937C + bl SetMainCallback2 + movs r0, 0x1 + negs r0, r0 + movs r4, 0 + str r4, [sp] + movs r1, 0 + movs r2, 0x10 + movs r3, 0 + bl BeginNormalPaletteFade + ldr r0, =gBattleCommunication + strb r4, [r0] + add sp, 0x8 + pop {r4} + pop {r0} + bx r0 + .pool + thumb_func_end sub_80392A8 + + thumb_func_start sub_803937C +sub_803937C: @ 803937C + push {lr} + bl sub_803939C + bl AnimateSprites + bl BuildOamBuffer + bl RunTextPrinters + bl UpdatePaletteFade + bl RunTasks + pop {r0} + bx r0 + thumb_func_end sub_803937C + + thumb_func_start sub_803939C +sub_803939C: @ 803939C + push {r4,r5,lr} + sub sp, 0x4 + ldr r0, =gBattleCommunication + ldrb r1, [r0] + adds r4, r0, 0 + cmp r1, 0xC + bls _080393AC + b _0803975E +_080393AC: + lsls r0, r1, 2 + ldr r1, =_080393C0 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .pool + .align 2, 0 +_080393C0: + .4byte _080393F4 + .4byte _08039414 + .4byte _08039450 + .4byte _08039470 + .4byte _0803949C + .4byte _080394D8 + .4byte _0803957C + .4byte _08039704 + .4byte _080395CC + .4byte _08039610 + .4byte _08039678 + .4byte _080396A8 + .4byte _08039704 +_080393F4: + movs r0, 0 + bl ShowBg + movs r0, 0x1 + bl ShowBg + movs r0, 0x2 + bl ShowBg + ldr r1, =gBattleCommunication + ldrb r0, [r1] + adds r0, 0x1 + b _0803975C + .pool +_08039414: + ldr r0, =gMain + ldr r1, =0x00000439 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _08039434 + ldr r0, =gUnknown_03003124 + ldrb r0, [r0] + cmp r0, 0 + bne _08039434 + ldr r0, =sub_80B3AF8 + movs r1, 0x5 + bl CreateTask +_08039434: + ldr r1, =gBattleCommunication + ldrb r0, [r1] + adds r0, 0x1 + b _0803975C + .pool +_08039450: + ldr r0, =sub_80B3AF8 + bl FuncIsActiveTask + lsls r0, 24 + cmp r0, 0 + beq _0803945E + b _0803975E +_0803945E: + ldr r1, =gBattleCommunication + ldrb r0, [r1] + adds r0, 0x1 + b _0803975C + .pool +_08039470: + ldr r0, =gPaletteFade + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _0803947E + b _0803975E +_0803947E: + ldr r0, =gUnknown_085CD28F + movs r1, 0 + bl battle_show_message_maybe + ldr r1, =gBattleCommunication + ldrb r0, [r1] + adds r0, 0x1 + b _0803975C + .pool +_0803949C: + movs r0, 0 + bl IsTextPrinterActive + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0 + beq _080394AC + b _0803975E +_080394AC: + str r0, [sp] + movs r0, 0x18 + movs r1, 0x8 + movs r2, 0x1D + movs r3, 0xD + bl sub_8056A3C + ldr r0, =gUnknown_085CCABB + movs r1, 0xC + bl battle_show_message_maybe + ldr r4, =gBattleCommunication + movs r0, 0x1 + strb r0, [r4, 0x1] + bl sub_8056B74 + b _080396EA + .pool +_080394D8: + ldr r0, =gMain + ldrh r1, [r0, 0x2E] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _08039500 + ldrb r0, [r4, 0x1] + cmp r0, 0 + bne _080394EC + b _0803975E +_080394EC: + movs r0, 0x5 + bl PlaySE + ldrb r0, [r4, 0x1] + bl sub_8056BAC + movs r0, 0 + b _0803951E + .pool +_08039500: + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _08039526 + ldrb r0, [r4, 0x1] + cmp r0, 0 + beq _08039510 + b _0803975E +_08039510: + movs r0, 0x5 + bl PlaySE + ldrb r0, [r4, 0x1] + bl sub_8056BAC + movs r0, 0x1 +_0803951E: + strb r0, [r4, 0x1] + bl sub_8056B74 + b _0803975E +_08039526: + movs r5, 0x1 + adds r0, r5, 0 + ands r0, r1 + cmp r0, 0 + beq _08039560 + movs r0, 0x5 + bl PlaySE + ldr r4, =gBattleCommunication + ldrb r0, [r4, 0x1] + cmp r0, 0 + beq _08039540 + b _080396EA +_08039540: + str r5, [sp] + movs r0, 0x18 + movs r1, 0x8 + movs r2, 0x1D + movs r3, 0xD + bl sub_8056A3C + bl sub_8185338 + strb r0, [r4, 0x1] + movs r0, 0xA + strb r0, [r4] + b _0803975E + .pool +_08039560: + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + bne _0803956A + b _0803975E +_0803956A: + movs r0, 0x5 + bl PlaySE + ldr r1, =gBattleCommunication + ldrb r0, [r1] + adds r0, 0x1 + b _0803975C + .pool +_0803957C: + bl sub_800A520 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0803958A + b _0803975E +_0803958A: + str r0, [sp] + movs r0, 0x18 + movs r1, 0x8 + movs r2, 0x1D + movs r3, 0xD + bl sub_8056A3C + ldr r0, =gMain + ldr r1, =0x00000439 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _080395B4 + bl sub_800ADF8 + ldr r0, =gUnknown_0824978D + movs r1, 0 + bl battle_show_message_maybe +_080395B4: + ldr r1, =gBattleCommunication + ldrb r0, [r1] + adds r0, 0x1 + b _0803975C + .pool +_080395CC: + ldrb r0, [r4, 0x1] + subs r0, 0x1 + strb r0, [r4, 0x1] + lsls r0, 24 + cmp r0, 0 + beq _080395DA + b _0803975E +_080395DA: + ldr r0, =gMain + ldr r1, =0x00000439 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _080395F6 + ldr r0, =gLinkVSyncDisabled + ldrb r0, [r0] + cmp r0, 0 + bne _080395F6 + bl sub_800AC34 +_080395F6: + ldr r1, =gBattleCommunication + ldrb r0, [r1] + adds r0, 0x1 + b _0803975C + .pool +_08039610: + ldr r2, =gMain + ldr r1, =0x00000439 + adds r0, r2, r1 + ldrb r1, [r0] + movs r0, 0x4 + ands r0, r1 + adds r3, r2, 0 + cmp r0, 0 + beq _08039634 + ldr r0, =gLinkVSyncDisabled + ldrb r0, [r0] + cmp r0, 0 + bne _08039634 + ldr r0, =gUnknown_03003124 + ldrb r0, [r0] + cmp r0, 0x1 + bne _08039634 + b _0803975E +_08039634: + ldr r0, =0x00000439 + adds r2, r3, r0 + ldrb r1, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + ldr r0, =gPaletteFade + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _08039650 + b _0803975E +_08039650: + ldr r0, [r3, 0x8] + bl SetMainCallback2 + bl sub_8057028 + bl dp11_free + bl sub_805F094 + b _0803975E + .pool +_08039678: + ldrb r0, [r4, 0x1] + cmp r0, 0x1 + bne _080396A0 + movs r0, 0x37 + bl PlaySE + ldr r0, =gUnknown_085CD2CB +_08039686: + bl StrCpyDecodeToDisplayedStringBattle + ldr r0, =gDisplayedStringBattle + movs r1, 0 + bl battle_show_message_maybe + movs r0, 0x80 + strb r0, [r4, 0x1] + b _080396EA + .pool +_080396A0: + ldr r0, =gUnknown_08242481 + b _08039686 + .pool +_080396A8: + bl sub_800A520 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0803975E + movs r0, 0 + bl IsTextPrinterActive + lsls r0, 16 + cmp r0, 0 + bne _0803975E + ldr r4, =gBattleCommunication + ldrb r0, [r4, 0x1] + subs r0, 0x1 + strb r0, [r4, 0x1] + lsls r0, 24 + cmp r0, 0 + bne _0803975E + ldr r0, =gMain + ldr r1, =0x00000439 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _080396EA + bl sub_800ADF8 + ldr r0, =gUnknown_0824978D + movs r1, 0 + bl battle_show_message_maybe +_080396EA: + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + b _0803975E + .pool +_08039704: + movs r0, 0 + bl IsTextPrinterActive + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0 + bne _0803975E + ldr r0, =gMain + ldr r1, =0x00000439 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x4 + ands r0, r1 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + beq _08039744 + bl sub_800A520 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0803975E + movs r0, 0x1 + negs r0, r0 + str r4, [sp] + b _0803974A + .pool +_08039744: + movs r0, 0x1 + negs r0, r0 + str r1, [sp] +_0803974A: + movs r1, 0 + movs r2, 0 + movs r3, 0x10 + bl BeginNormalPaletteFade + ldr r1, =gBattleCommunication + movs r0, 0x20 + strb r0, [r1, 0x1] + movs r0, 0x8 +_0803975C: + strb r0, [r1] +_0803975E: + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end sub_803939C + + thumb_func_start shedinja_something +shedinja_something: @ 803976C + push {r4,r5,lr} + sub sp, 0x10 + adds r4, r0, 0 + add r5, sp, 0xC + movs r0, 0x1 + strb r0, [r5] + adds r0, r4, 0 + movs r1, 0xB + bl GetMonData + ldr r1, =0x0000012f + cmp r0, r1 + bne _080397B4 + adds r0, r4, 0 + movs r1, 0x3 + bl GetMonData + ldrb r1, [r5] + cmp r0, r1 + beq _080397B4 + adds r0, r4, 0 + movs r1, 0x2 + mov r2, sp + bl GetMonData + ldr r1, =gUnknown_0831ACA0 + mov r0, sp + bl StringCompareWithoutExtCtrlCodes + cmp r0, 0 + bne _080397B4 + adds r0, r4, 0 + movs r1, 0x3 + adds r2, r5, 0 + bl SetMonData +_080397B4: + add sp, 0x10 + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end shedinja_something + + thumb_func_start sub_80397C4 +sub_80397C4: @ 80397C4 + ldr r2, =gUnknown_0831ABA0 + lsls r0, 2 + adds r0, r2 + ldr r0, [r0] + lsls r1, 3 + adds r1, r0 + ldrb r0, [r1, 0x3] + lsls r0, 3 + bx lr + .pool + thumb_func_end sub_80397C4 + + thumb_func_start oac_poke_opponent +oac_poke_opponent: @ 80397DC + push {lr} + sub sp, 0x4 + ldr r1, =sub_803980C + str r1, [r0, 0x1C] + movs r1, 0 + bl StartSpriteAnimIfDifferent + movs r0, 0x80 + lsls r0, 10 + ldr r1, =0x00002108 + str r1, [sp] + movs r1, 0 + movs r2, 0xA + movs r3, 0xA + bl BeginNormalPaletteFade + add sp, 0x4 + pop {r0} + bx r0 + .pool + thumb_func_end oac_poke_opponent + + thumb_func_start sub_803980C +sub_803980C: @ 803980C + push {lr} + adds r2, r0, 0 + ldr r0, =gUnknown_020243FC + ldrh r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _0803982C + ldrh r0, [r2, 0x24] + adds r0, 0x2 + strh r0, [r2, 0x24] + lsls r0, 16 + cmp r0, 0 + bne _0803982C + ldr r0, =sub_8039838 + str r0, [r2, 0x1C] +_0803982C: + pop {r0} + bx r0 + .pool + thumb_func_end sub_803980C + + thumb_func_start sub_8039838 +sub_8039838: @ 8039838 + push {r4,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _08039880 + ldrh r0, [r4, 0x2E] + lsls r0, 24 + lsrs r0, 24 + bl sub_8076918 + ldr r1, =gUnknown_03005D70 + movs r2, 0x2E + ldrsh r0, [r4, r2] + adds r0, r1 + ldrb r0, [r0] + bl sub_80729D0 + ldr r0, =sub_8039894 + str r0, [r4, 0x1C] + adds r0, r4, 0 + movs r1, 0 + bl StartSpriteAnimIfDifferent + movs r0, 0x80 + lsls r0, 10 + ldr r1, =0x00002108 + str r1, [sp] + movs r1, 0 + movs r2, 0xA + movs r3, 0 + bl BeginNormalPaletteFade +_08039880: + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8039838 + + thumb_func_start sub_8039894 +sub_8039894: @ 8039894 + push {lr} + adds r2, r0, 0 + ldr r0, =gPaletteFade + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080398B0 + ldrh r1, [r2, 0x32] + adds r0, r2, 0 + movs r2, 0 + movs r3, 0x1 + bl sub_806ECEC +_080398B0: + pop {r0} + bx r0 + .pool + thumb_func_end sub_8039894 + + thumb_func_start nullsub_18 +nullsub_18: @ 80398B8 + bx lr + thumb_func_end nullsub_18 + + thumb_func_start sub_80398BC +sub_80398BC: @ 80398BC + movs r1, 0x6 + strh r1, [r0, 0x34] + movs r1, 0x1 + strh r1, [r0, 0x36] + ldr r1, =sub_80398D0 + str r1, [r0, 0x1C] + bx lr + .pool + thumb_func_end sub_80398BC + + thumb_func_start sub_80398D0 +sub_80398D0: @ 80398D0 + push {r4,lr} + adds r3, r0, 0 + ldrh r0, [r3, 0x36] + subs r0, 0x1 + strh r0, [r3, 0x36] + lsls r0, 16 + cmp r0, 0 + bne _08039924 + movs r0, 0x8 + strh r0, [r3, 0x36] + 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 r4, 0x5 + negs r4, r4 + adds r0, r4, 0 + ands r0, r2 + orrs r0, r1 + mov r1, r12 + strb r0, [r1] + ldrh r0, [r3, 0x34] + subs r0, 0x1 + strh r0, [r3, 0x34] + lsls r0, 16 + asrs r2, r0, 16 + cmp r2, 0 + bne _08039924 + ldrb r1, [r1] + adds r0, r4, 0 + ands r0, r1 + mov r1, r12 + strb r0, [r1] + ldr r0, =nullsub_18 + str r0, [r3, 0x1C] + ldr r0, =gUnknown_02022F88 + str r2, [r0] +_08039924: + pop {r4} + pop {r0} + bx r0 + .pool + thumb_func_end sub_80398D0 + + thumb_func_start sub_8039934 +sub_8039934: @ 8039934 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + mov r9, r0 + ldrh r0, [r0, 0x2E] + lsls r0, 24 + lsrs r6, r0, 24 + ldr r0, =gUnknown_020244D0 + ldr r0, [r0] + ldr r1, [r0] + lsls r0, r6, 2 + adds r1, r0, r1 + ldrh r0, [r1, 0x2] + cmp r0, 0 + beq _0803995C + adds r4, r0, 0 + b _08039960 + .pool +_0803995C: + mov r0, r9 + ldrh r4, [r0, 0x32] +_08039960: + ldr r1, =gBattlePartyID + lsls r0, r6, 1 + adds r5, r0, r1 + ldrh r0, [r5] + movs r1, 0x64 + mov r8, r1 + mov r1, r8 + muls r1, r0 + adds r0, r1, 0 + ldr r7, =gEnemyParty + adds r0, r7 + movs r1, 0 + bl GetMonData + cmp r4, 0xC9 + bne _080399E4 + ldrh r0, [r5] + mov r1, r8 + muls r1, r0 + adds r0, r1, 0 + adds r0, r7 + movs r1, 0 + bl GetMonData + adds r2, r0, 0 + movs r0, 0xC0 + lsls r0, 18 + ands r0, r2 + lsrs r0, 18 + movs r1, 0xC0 + lsls r1, 10 + ands r1, r2 + lsrs r1, 12 + orrs r0, r1 + movs r1, 0xC0 + lsls r1, 2 + ands r1, r2 + lsrs r1, 6 + orrs r0, r1 + movs r1, 0x3 + ands r1, r2 + orrs r0, r1 + movs r1, 0x1C + bl __umodsi3 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0 + bne _080399D0 + movs r0, 0xC9 + b _080399DA + .pool +_080399D0: + movs r1, 0xCE + lsls r1, 1 + adds r0, r1 + lsls r0, 16 + lsrs r0, 16 +_080399DA: + ldr r1, =gUnknown_08300D38 + lsls r0, 2 + b _08039A1C + .pool +_080399E4: + ldr r0, =0x00000181 + cmp r4, r0 + bne _08039A08 + ldr r0, =gUnknown_08525F78 + ldr r1, =gUnknown_020244E4 + adds r1, r6, r1 + ldrb r1, [r1] + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1, 0x1] + b _08039A20 + .pool +_08039A08: + movs r0, 0xCE + lsls r0, 1 + cmp r4, r0 + bls _08039A18 + ldr r0, =gUnknown_08300D38 + b _08039A1E + .pool +_08039A18: + ldr r1, =gUnknown_08300D38 + lsls r0, r4, 2 +_08039A1C: + adds r0, r1 +_08039A1E: + ldrb r0, [r0, 0x1] +_08039A20: + lsrs r1, r0, 3 + movs r0, 0x8 + subs r0, r1 + mov r1, r9 + strh r0, [r1, 0x34] + movs r0, 0x1 + strh r0, [r1, 0x36] + ldr r0, =sub_8039A48 + str r0, [r1, 0x1C] + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8039934 + + thumb_func_start sub_8039A48 +sub_8039A48: @ 8039A48 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x36] + subs r0, 0x1 + strh r0, [r4, 0x36] + lsls r0, 16 + cmp r0, 0 + bne _08039AC8 + movs r0, 0x2 + strh r0, [r4, 0x36] + ldrh r0, [r4, 0x26] + adds r0, 0x8 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x34] + subs r0, 0x1 + strh r0, [r4, 0x34] + lsls r0, 16 + cmp r0, 0 + bge _08039A7C + adds r0, r4, 0 + bl FreeSpriteOamMatrix + adds r0, r4, 0 + bl DestroySprite + b _08039AC8 +_08039A7C: + ldrh r0, [r4, 0x2E] + lsls r0, 24 + lsrs r0, 24 + bl GetBankIdentity + ldr r1, =gUnknown_020244D4 + ldr r1, [r1] + lsls r0, 24 + lsrs r0, 22 + adds r1, 0x4 + adds r1, r0 + ldr r2, =gUnknown_020244E4 + movs r3, 0x2E + ldrsh r0, [r4, r3] + adds r0, r2 + ldrb r0, [r0] + lsls r0, 11 + ldr r1, [r1] + adds r1, r0 + movs r2, 0x34 + ldrsh r0, [r4, r2] + lsls r0, 8 + adds r1, r0 + movs r2, 0 + movs r0, 0xFF +_08039AAE: + strb r2, [r1] + adds r1, 0x1 + subs r0, 0x1 + cmp r0, 0 + bge _08039AAE + ldr r0, =gUnknown_020244E4 + movs r3, 0x2E + ldrsh r1, [r4, r3] + adds r1, r0 + ldrb r1, [r1] + adds r0, r4, 0 + bl StartSpriteAnim +_08039AC8: + pop {r4} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8039A48 + + thumb_func_start sub_8039AD8 +sub_8039AD8: @ 8039AD8 + movs r1, 0x8 + strh r1, [r0, 0x34] + adds r1, r0, 0 + adds r1, 0x3E + ldrb r1, [r1] + lsls r1, 29 + lsrs r1, 31 + strh r1, [r0, 0x36] + ldr r1, =sub_8039AF4 + str r1, [r0, 0x1C] + bx lr + .pool + thumb_func_end sub_8039AD8 + + thumb_func_start sub_8039AF4 +sub_8039AF4: @ 8039AF4 + push {lr} + adds r3, r0, 0 + ldrh r0, [r3, 0x34] + subs r0, 0x1 + strh r0, [r3, 0x34] + lsls r0, 16 + cmp r0, 0 + bne _08039B26 + 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] + movs r0, 0x8 + strh r0, [r3, 0x34] +_08039B26: + pop {r0} + bx r0 + thumb_func_end sub_8039AF4 + + thumb_func_start sub_8039B2C +sub_8039B2C: @ 8039B2C + movs r1, 0x3E + adds r1, r0 + mov r12, r1 + movs r1, 0x1 + ldrh r2, [r0, 0x36] + ands r2, r1 + lsls r2, 2 + mov r1, r12 + ldrb r3, [r1] + movs r1, 0x5 + negs r1, r1 + ands r1, r3 + orrs r1, r2 + mov r2, r12 + strb r1, [r2] + movs r1, 0 + strh r1, [r0, 0x36] + ldr r1, =nullsub_18 + str r1, [r0, 0x1C] + bx lr + .pool + thumb_func_end sub_8039B2C + + thumb_func_start sub_8039B58 +sub_8039B58: @ 8039B58 + push {r4,lr} + adds r4, r0, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _08039BA0 + ldr r0, =gHitMarker + ldr r0, [r0] + movs r1, 0x80 + ands r0, r1 + cmp r0, 0 + beq _08039B80 + ldr r0, =gBattleTypeFlags + ldr r0, [r0] + ldr r1, =0x02000002 + ands r0, r1 + cmp r0, 0 + beq _08039B94 +_08039B80: + ldrh r0, [r4, 0x32] + bl sub_806F0D4 + lsls r0, 24 + cmp r0, 0 + beq _08039B94 + adds r0, r4, 0 + movs r1, 0x1 + bl StartSpriteAnim +_08039B94: + ldrh r1, [r4, 0x32] + adds r0, r4, 0 + movs r2, 0x1 + movs r3, 0x1 + bl sub_806ECEC +_08039BA0: + pop {r4} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8039B58 + + thumb_func_start sub_8039BB4 +sub_8039BB4: @ 8039BB4 + ldr r1, =oac_poke_ally_ + str r1, [r0, 0x1C] + bx lr + .pool + thumb_func_end sub_8039BB4 + + thumb_func_start oac_poke_ally_ +oac_poke_ally_: @ 8039BC0 + push {lr} + adds r2, r0, 0 + ldr r0, =gUnknown_020243FC + ldrh r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _08039BE4 + ldrh r0, [r2, 0x24] + subs r0, 0x2 + strh r0, [r2, 0x24] + lsls r0, 16 + asrs r1, r0, 16 + cmp r1, 0 + bne _08039BE4 + ldr r0, =nullsub_19 + str r0, [r2, 0x1C] + strh r1, [r2, 0x30] +_08039BE4: + pop {r0} + bx r0 + .pool + thumb_func_end oac_poke_ally_ + + thumb_func_start sub_8039BF0 +sub_8039BF0: @ 8039BF0 + ldr r1, =nullsub_19 + str r1, [r0, 0x1C] + bx lr + .pool + thumb_func_end sub_8039BF0 + + thumb_func_start nullsub_19 +nullsub_19: @ 8039BFC + bx lr + thumb_func_end nullsub_19 + + thumb_func_start sub_8039C00 +sub_8039C00: @ 8039C00 + push {lr} + adds r2, r0, 0 + ldr r0, =gUnknown_020243FC + ldrh r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _08039C20 + ldrh r0, [r2, 0x30] + ldrh r1, [r2, 0x24] + adds r0, r1 + strh r0, [r2, 0x24] + ldrh r0, [r2, 0x32] + ldrh r1, [r2, 0x26] + adds r0, r1 + strh r0, [r2, 0x26] +_08039C20: + pop {r0} + bx r0 + .pool + thumb_func_end sub_8039C00 + + thumb_func_start dp11b_obj_instanciate +dp11b_obj_instanciate: @ 8039C28 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r1, 24 + lsrs r1, 24 + mov r8, r1 + lsls r2, 24 + lsrs r2, 24 + mov r9, r2 + lsls r3, 24 + lsrs r3, 24 + mov r10, r3 + cmp r1, 0 + beq _08039C64 + ldr r0, =gUnknown_020244D0 + ldr r0, [r0] + ldr r1, [r0, 0x4] + lsls r2, r4, 1 + adds r0, r2, r4 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x2 + b _08039C76 + .pool +_08039C64: + ldr r0, =gUnknown_020244D0 + ldr r0, [r0] + ldr r1, [r0, 0x4] + lsls r2, r4, 1 + adds r0, r2, r4 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x4 +_08039C76: + ands r0, r1 + adds r6, r2, 0 + cmp r0, 0 + bne _08039D2C + ldr r0, =objc_dp11b_pingpong + bl CreateInvisibleSpriteWithCallback + lsls r0, 24 + lsrs r5, r0, 24 + mov r0, r8 + cmp r0, 0x1 + bne _08039CD0 + ldr r0, =gUnknown_03005D70 + adds r0, r4, r0 + ldrb r7, [r0] + ldr r2, =gUnknown_020244D0 + ldr r0, [r2] + ldr r0, [r0, 0x4] + adds r1, r6, r4 + lsls r1, 2 + adds r0, r1, r0 + strb r5, [r0, 0x2] + ldr r0, [r2] + ldr r0, [r0, 0x4] + adds r1, r0 + ldrb r0, [r1] + movs r2, 0x2 + orrs r0, r2 + strb r0, [r1] + ldr r2, =gSprites + lsls r3, r5, 4 + adds r0, r3, r5 + lsls r0, 2 + adds r0, r2 + movs r1, 0x80 + b _08039CFE + .pool +_08039CD0: + ldr r0, =gBankSpriteIds + adds r0, r4, r0 + ldrb r7, [r0] + ldr r2, =gUnknown_020244D0 + ldr r0, [r2] + ldr r0, [r0, 0x4] + adds r1, r6, r4 + lsls r1, 2 + adds r0, r1, r0 + strb r5, [r0, 0x3] + ldr r0, [r2] + ldr r0, [r0, 0x4] + adds r1, r0 + ldrb r0, [r1] + movs r2, 0x4 + orrs r0, r2 + strb r0, [r1] + ldr r2, =gSprites + lsls r3, r5, 4 + adds r0, r3, r5 + lsls r0, 2 + adds r0, r2 + movs r1, 0xC0 +_08039CFE: + strh r1, [r0, 0x2E] + adds r4, r2, 0 + adds r1, r3, r5 + lsls r1, 2 + adds r1, r4 + mov r2, r9 + lsls r0, r2, 24 + asrs r0, 24 + movs r2, 0 + strh r0, [r1, 0x30] + mov r3, r10 + lsls r0, r3, 24 + asrs r0, 24 + strh r0, [r1, 0x32] + strh r7, [r1, 0x34] + mov r0, r8 + strh r0, [r1, 0x36] + lsls r0, r7, 4 + adds r0, r7 + lsls r0, 2 + adds r0, r4 + strh r2, [r0, 0x24] + strh r2, [r0, 0x26] +_08039D2C: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .pool + thumb_func_end dp11b_obj_instanciate + + thumb_func_start dp11b_obj_free +dp11b_obj_free: @ 8039D48 + push {r4-r6,lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r1, 24 + lsrs r1, 24 + cmp r1, 0x1 + bne _08039D9C + ldr r6, =gUnknown_020244D0 + ldr r0, [r6] + ldr r1, [r0, 0x4] + lsls r0, r2, 1 + adds r0, r2 + lsls r5, r0, 2 + adds r3, r5, r1 + ldrb r1, [r3] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _08039DEA + ldr r2, =gSprites + ldrb r1, [r3, 0x2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r0, 0x34] + lsls r1, 24 + lsrs r4, r1, 24 + bl DestroySprite + ldr r0, [r6] + ldr r1, [r0, 0x4] + adds r1, r5, r1 + ldrb r2, [r1] + movs r0, 0x3 + negs r0, r0 + b _08039DD6 + .pool +_08039D9C: + ldr r6, =gUnknown_020244D0 + ldr r0, [r6] + ldr r1, [r0, 0x4] + lsls r0, r2, 1 + adds r0, r2 + lsls r5, r0, 2 + adds r3, r5, r1 + ldrb r1, [r3] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _08039DEA + ldr r2, =gSprites + ldrb r1, [r3, 0x3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r0, 0x34] + lsls r1, 24 + lsrs r4, r1, 24 + bl DestroySprite + ldr r0, [r6] + ldr r1, [r0, 0x4] + adds r1, r5, r1 + ldrb r2, [r1] + movs r0, 0x5 + negs r0, r0 +_08039DD6: + ands r0, r2 + strb r0, [r1] + ldr r0, =gSprites + lsls r1, r4, 4 + adds r1, r4 + lsls r1, 2 + adds r1, r0 + movs r0, 0 + strh r0, [r1, 0x24] + strh r0, [r1, 0x26] +_08039DEA: + pop {r4-r6} + pop {r0} + bx r0 + .pool + thumb_func_end dp11b_obj_free + + thumb_func_start objc_dp11b_pingpong +objc_dp11b_pingpong: @ 8039DF8 + push {r4,r5,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x34] + lsls r0, 24 + lsrs r5, r0, 24 + movs r1, 0x36 + ldrsh r0, [r4, r1] + cmp r0, 0x1 + bne _08039E10 + movs r2, 0x2E + ldrsh r0, [r4, r2] + b _08039E14 +_08039E10: + movs r1, 0x2E + ldrsh r0, [r4, r1] +_08039E14: + movs r2, 0x32 + ldrsh r1, [r4, r2] + bl Sin + ldr r2, =gSprites + lsls r1, r5, 4 + adds r1, r5 + lsls r1, 2 + adds r1, r2 + ldrh r2, [r4, 0x32] + adds r0, r2 + strh r0, [r1, 0x26] + ldrh r0, [r4, 0x30] + ldrh r1, [r4, 0x2E] + adds r0, r1 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x2E] + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end objc_dp11b_pingpong + + thumb_func_start sub_8039E44 +sub_8039E44: @ 8039E44 + push {lr} + adds r2, r0, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _08039E5C + ldrh r1, [r2, 0x32] + adds r0, r2, 0 + bl sub_806EEB4 +_08039E5C: + pop {r0} + bx r0 + thumb_func_end sub_8039E44 + + thumb_func_start sub_8039E60 +sub_8039E60: @ 8039E60 + push {r4,lr} + adds r4, r0, 0 + bl sub_8039E9C + adds r0, r4, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _08039E7A + ldr r0, =nullsub_19 + str r0, [r4, 0x1C] +_08039E7A: + pop {r4} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8039E60 + + thumb_func_start sub_8039E84 +sub_8039E84: @ 8039E84 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x1 + bl StartSpriteAnim + ldr r0, =sub_8039E60 + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8039E84 + + thumb_func_start sub_8039E9C +sub_8039E9C: @ 8039E9C + push {lr} + adds r2, r0, 0 + adds r0, 0x2C + ldrb r1, [r0] + movs r0, 0x3F + ands r0, r1 + cmp r0, 0 + bne _08039EBE + ldr r1, =gUnknown_0831ACE0 + adds r0, r2, 0 + adds r0, 0x2B + ldrb r0, [r0] + adds r0, r1 + ldrb r1, [r0] + adds r0, r2, 0 + adds r0, 0x28 + strb r1, [r0] +_08039EBE: + pop {r0} + bx r0 + .pool + thumb_func_end sub_8039E9C + + thumb_func_start nullsub_20 +nullsub_20: @ 8039EC8 + bx lr + thumb_func_end nullsub_20 + + thumb_func_start sub_8039ECC +sub_8039ECC: @ 8039ECC + push {lr} + bl sub_8039F40 + ldr r1, =gBattleCommunication + movs r0, 0 + strb r0, [r1, 0x1] + ldr r1, =gBattleMainFunc + ldr r0, =bc_8012FAC + str r0, [r1] + pop {r0} + bx r0 + .pool + thumb_func_end sub_8039ECC + + thumb_func_start sub_8039EF0 +sub_8039EF0: @ 8039EF0 + push {r4,r5,lr} + ldr r0, =gBattleMainFunc + ldr r0, [r0] + bl _call_via_r0 + ldr r1, =gActiveBank + movs r0, 0 + strb r0, [r1] + ldr r0, =gNoOfAllBanks + ldrb r0, [r0] + cmp r0, 0 + beq _08039F2A + ldr r5, =gBattleBankFunc + adds r4, r1, 0 +_08039F0C: + ldrb r0, [r4] + lsls r0, 2 + adds r0, r5 + ldr r0, [r0] + bl _call_via_r0 + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + ldr r1, =gNoOfAllBanks + lsls r0, 24 + lsrs r0, 24 + ldrb r1, [r1] + cmp r0, r1 + bcc _08039F0C +_08039F2A: + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8039EF0 + + thumb_func_start sub_8039F40 +sub_8039F40: @ 8039F40 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + movs r0, 0 + bl sub_803D580 + bl sub_803D6A0 + movs r2, 0 + movs r3, 0 + ldr r0, =gUnknown_02024260 + mov r10, r0 + ldr r1, =gUnknown_02024258 + mov r9, r1 + ldr r0, =gUnknown_02024250 + mov r8, r0 + ldr r1, =gLastUsedMovesByBanks + mov r12, r1 + ldr r5, =gDisableStructs + movs r4, 0 + ldr r7, =gUnknown_02024240 + ldr r6, =gUnknown_02024268 +_08039F70: + ldr r0, =gStatuses3 + adds r0, r4, r0 + str r3, [r0] + movs r1, 0 +_08039F78: + adds r0, r5, r1 + strb r3, [r0] + adds r1, 0x1 + cmp r1, 0x1B + bls _08039F78 + movs r0, 0x2 + strb r0, [r5, 0x16] + ldr r1, =gUnknown_02024284 + adds r0, r2, r1 + strb r3, [r0] + mov r0, r12 + strh r3, [r0] + mov r1, r8 + strh r3, [r1] + mov r0, r9 + strh r3, [r0] + mov r1, r10 + strh r3, [r1] + ldr r0, =gUnknown_02024270 + adds r1, r2, r0 + movs r0, 0xFF + strb r0, [r1] + strh r3, [r6] + strh r3, [r7] + ldr r1, =gBattleResources + ldr r0, [r1] + ldr r0, [r0, 0x4] + adds r0, r4 + str r3, [r0] + ldr r1, =gUnknown_02024230 + adds r0, r4, r1 + str r3, [r0] + movs r0, 0x2 + add r10, r0 + add r9, r0 + add r8, r0 + add r12, r0 + adds r5, 0x1C + adds r4, 0x4 + adds r7, 0x2 + adds r6, 0x2 + adds r2, 0x1 + cmp r2, 0x3 + ble _08039F70 + movs r5, 0 + ldr r3, =gSideTimers + ldr r4, =gSideAffecting + movs r2, 0x1 +_08039FD8: + strh r5, [r4] + movs r1, 0 +_08039FDC: + adds r0, r3, r1 + strb r5, [r0] + adds r1, 0x1 + cmp r1, 0xB + bls _08039FDC + adds r3, 0xC + adds r4, 0x2 + subs r2, 0x1 + cmp r2, 0 + bge _08039FD8 + movs r1, 0 + ldr r2, =gBankAttacker + strb r1, [r2] + ldr r0, =gBankTarget + strb r1, [r0] + ldr r2, =gBattleWeather + strh r1, [r2] + ldr r1, =gUnknown_020243D0 + movs r2, 0 + movs r3, 0 +_0803A004: + adds r0, r1, r2 + strb r3, [r0] + adds r2, 0x1 + cmp r2, 0x2B + bls _0803A004 + ldr r2, =gHitMarker + movs r0, 0 + str r0, [r2] + ldr r0, =gBattleTypeFlags + ldr r1, [r0] + movs r0, 0x80 + lsls r0, 17 + ands r0, r1 + cmp r0, 0 + bne _0803A090 + movs r0, 0x2 + ands r1, r0 + cmp r1, 0 + bne _0803A0AE + ldr r0, =gSaveBlock2Ptr + ldr r0, [r0] + ldrb r1, [r0, 0x15] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _0803A0AE + movs r0, 0x80 + b _0803A0AC + .pool +_0803A090: + ldr r0, =0x02000002 + ands r1, r0 + cmp r1, 0 + bne _0803A0AE + bl sub_8185FB8 + lsls r0, 24 + cmp r0, 0 + beq _0803A0AE + ldr r1, =gHitMarker + ldr r0, [r1] + movs r1, 0x80 + orrs r0, r1 + ldr r2, =gHitMarker +_0803A0AC: + str r0, [r2] +_0803A0AE: + ldr r3, =gBattleScripting + ldr r0, =gSaveBlock2Ptr + ldr r0, [r0] + ldrb r0, [r0, 0x15] + lsls r0, 30 + lsrs r0, 31 + movs r1, 0 + strb r0, [r3, 0x1D] + ldr r0, =gUnknown_02024212 + strb r1, [r0] + ldr r0, =gBattleOutcome + strb r1, [r0] + ldr r0, =gBattleExecBuffer + str r1, [r0] + ldr r0, =gUnknown_0202432E + movs r2, 0 + strh r1, [r0] + ldr r1, =gBattleResources + ldr r0, [r1] + ldr r0, [r0, 0x8] + adds r0, 0x20 + strb r2, [r0] + ldr r0, [r1] + ldr r0, [r0, 0xC] + adds r0, 0x20 + strb r2, [r0] + ldr r5, =gUnknown_0202432C + ldr r6, =gBattleMoveDamage + ldr r7, =gUnknown_020243FC + ldr r0, =gUnknown_03005D54 + mov r8, r0 + ldr r1, =gAbsentBankFlags + mov r9, r1 + ldr r2, =gEnemyParty + mov r10, r2 + ldr r1, =gBattleCommunication + movs r2, 0 + adds r0, r1, 0x7 +_0803A0FA: + strb r2, [r0] + subs r0, 0x1 + cmp r0, r1 + bge _0803A0FA + movs r4, 0 + strh r4, [r5] + movs r0, 0 + str r0, [r6] + strh r0, [r7] + strb r4, [r3, 0x18] + strb r4, [r3, 0x19] + mov r0, r8 + strb r4, [r0] + mov r1, r9 + strb r4, [r1] + ldr r5, =gBattleStruct + ldr r0, [r5] + adds r0, 0x6C + strb r4, [r0] + ldr r0, [r5] + adds r0, 0x79 + strb r4, [r0] + ldr r0, [r5] + adds r0, 0x7A + strb r4, [r0] + mov r0, r10 + movs r1, 0xB + bl GetMonData + ldr r6, [r5] + adds r6, 0x7C + ldr r2, =gBaseStats + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + adds r1, r2 + ldrb r1, [r1, 0x8] + movs r0, 0x64 + muls r0, r1 + ldr r1, =0x000004fb + bl __divsi3 + strb r0, [r6] + ldr r0, [r5] + adds r0, 0x7B + movs r1, 0x3 + strb r1, [r0] + ldr r0, [r5] + strb r4, [r0, 0x12] + ldr r0, [r5] + adds r0, 0x4A + movs r1, 0x1 + strb r1, [r0] + movs r2, 0 + movs r1, 0 + adds r6, r5, 0 +_0803A16A: + ldr r0, [r5] + adds r0, r2, r0 + adds r0, 0x98 + strb r1, [r0] + ldr r0, [r5] + adds r0, r2, r0 + adds r0, 0xB8 + strb r1, [r0] + ldr r0, [r5] + adds r0, r2, r0 + adds r0, 0xC8 + strb r1, [r0] + ldr r0, [r5] + adds r0, r2, r0 + adds r0, 0xD0 + strb r1, [r0] + ldr r0, [r5] + adds r0, r2, r0 + adds r0, 0xE0 + strb r1, [r0] + ldr r0, [r5] + adds r0, r2, r0 + adds r0, 0xE8 + strb r1, [r0] + ldr r0, [r5] + adds r0, r2, r0 + adds r0, 0xF0 + strb r1, [r0] + ldr r0, [r5] + adds r0, r2, r0 + adds r0, 0xF8 + strb r1, [r0] + adds r2, 0x1 + cmp r2, 0x7 + ble _0803A16A + movs r2, 0 + ldr r4, =gBattleStruct + movs r3, 0xA5 + lsls r3, 2 + movs r1, 0x6 +_0803A1BA: + ldr r0, [r4] + adds r0, r2, r0 + adds r0, r3 + strb r1, [r0] + adds r2, 0x1 + cmp r2, 0x3 + ble _0803A1BA + ldr r0, [r6] + adds r0, 0xDF + movs r1, 0 + strb r1, [r0] + ldr r0, [r6] + adds r0, 0x92 + strb r1, [r0] + bl Random + ldr r1, =gUnknown_02024330 + strh r0, [r1] + ldr r1, =gBattleResults + movs r2, 0 + movs r3, 0 +_0803A1E4: + adds r0, r1, r2 + strb r3, [r0] + adds r2, 0x1 + cmp r2, 0x43 + bls _0803A1E4 + ldr r0, =gEnemyParty + bl IsMonShiny + ldr r3, =gBattleResults + movs r1, 0x1 + ands r1, r0 + lsls r1, 6 + ldrb r2, [r3, 0x5] + movs r0, 0x41 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, 0x5] + ldr r2, =gBattleStruct + ldr r0, [r2] + movs r1, 0xA8 + lsls r1, 2 + adds r0, r1 + movs r1, 0 + strb r1, [r0] + ldr r0, [r2] + ldr r2, =0x000002a1 + adds r0, r2 + strb r1, [r0] + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8039F40 + + thumb_func_start sub_803A284 +sub_803A284: @ 803A284 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x20 + ldr r4, =gDisableStructs + ldr r5, =gActiveBank + ldrb r1, [r5] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + mov r1, sp + adds r0, r4 + ldm r0!, {r2,r3,r6} + stm r1!, {r2,r3,r6} + ldm r0!, {r2,r3,r7} + stm r1!, {r2,r3,r7} + ldr r0, [r0] + str r0, [r1] + ldr r2, =gBattleMoves + ldr r3, =gCurrentMove + ldrh r1, [r3] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0] + mov r12, r4 + mov r9, r5 + ldr r6, =gStatuses3 + mov r10, r6 + cmp r0, 0x7F + beq _0803A35C + movs r5, 0 + mov r6, r9 + movs r4, 0x58 + ldr r2, =gBattleMons + adds r2, 0x18 + movs r1, 0x6 +_0803A2D4: + ldrb r0, [r6] + muls r0, r4 + adds r0, r5, r0 + adds r0, r2 + strb r1, [r0] + adds r5, 0x1 + cmp r5, 0x7 + ble _0803A2D4 + movs r5, 0 + ldr r7, =gNoOfAllBanks + ldrb r7, [r7] + cmp r5, r7 + bge _0803A348 + ldr r0, =gBattleMons + 0x50 + mov r8, r0 + ldr r4, =gDisableStructs + ldr r3, =gStatuses3 +_0803A2F6: + movs r0, 0x58 + muls r0, r5 + mov r1, r8 + adds r2, r0, r1 + ldr r1, [r2] + movs r0, 0x80 + lsls r0, 19 + ands r0, r1 + cmp r0, 0 + beq _0803A31A + ldrb r0, [r4, 0x14] + ldr r6, =gActiveBank + ldrb r6, [r6] + cmp r0, r6 + bne _0803A31A + ldr r0, =0xfbffffff + ands r1, r0 + str r1, [r2] +_0803A31A: + ldr r1, [r3] + movs r0, 0x18 + ands r0, r1 + cmp r0, 0 + beq _0803A33A + ldrb r0, [r4, 0x15] + ldr r7, =gActiveBank + ldrb r7, [r7] + cmp r0, r7 + bne _0803A33A + movs r0, 0x19 + negs r0, r0 + ands r1, r0 + str r1, [r3] + movs r0, 0 + strb r0, [r4, 0x15] +_0803A33A: + adds r4, 0x1C + adds r3, 0x4 + adds r5, 0x1 + ldr r0, =gNoOfAllBanks + ldrb r0, [r0] + cmp r5, r0 + blt _0803A2F6 +_0803A348: + ldr r1, =gCurrentMove + ldrh r0, [r1] + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + ldr r2, =gBattleMoves + adds r1, r2 + ldrb r0, [r1] + cmp r0, 0x7F + bne _0803A414 +_0803A35C: + mov r3, r9 + ldrb r1, [r3] + movs r0, 0x58 + adds r2, r1, 0 + muls r2, r0 + ldr r0, =gBattleMons + adds r0, 0x50 + adds r2, r0 + ldr r0, [r2] + ldr r1, =0x15100007 + ands r0, r1 + str r0, [r2] + ldrb r1, [r3] + lsls r1, 2 + add r1, r10 + ldr r0, [r1] + ldr r2, =0x0003043f + ands r0, r2 + str r0, [r1] + movs r5, 0 + ldr r6, =gNoOfAllBanks + ldrb r6, [r6] + cmp r5, r6 + bge _0803A430 + mov r7, r9 + movs r6, 0 +_0803A390: + ldrb r0, [r7] + bl GetBankSide + adds r4, r0, 0 + lsls r0, r5, 24 + lsrs r0, 24 + bl GetBankSide + lsls r4, 24 + lsls r0, 24 + cmp r4, r0 + beq _0803A3D0 + ldr r1, =gStatuses3 + lsls r0, r5, 2 + adds r2, r0, r1 + ldr r1, [r2] + movs r0, 0x18 + ands r0, r1 + cmp r0, 0 + beq _0803A3D0 + ldr r0, =gDisableStructs + adds r0, r6, r0 + ldrb r0, [r0, 0x15] + ldrb r3, [r7] + cmp r0, r3 + bne _0803A3D0 + movs r0, 0x19 + negs r0, r0 + ands r1, r0 + movs r0, 0x10 + orrs r1, r0 + str r1, [r2] +_0803A3D0: + adds r6, 0x1C + adds r5, 0x1 + ldr r0, =gNoOfAllBanks + ldrb r0, [r0] + cmp r5, r0 + blt _0803A390 + ldr r6, =gDisableStructs + mov r12, r6 + ldr r7, =gActiveBank + mov r9, r7 + b _0803A430 + .pool +_0803A414: + mov r0, r9 + ldrb r1, [r0] + movs r0, 0x58 + muls r0, r1 + ldr r1, =gBattleMons + adds r1, 0x50 + adds r0, r1 + movs r1, 0 + str r1, [r0] + mov r2, r9 + ldrb r0, [r2] + lsls r0, 2 + add r0, r10 + str r1, [r0] +_0803A430: + movs r5, 0 + ldr r3, =gBattleStruct + mov r8, r3 + ldr r6, =gUnknown_020244AC + mov r10, r6 + ldr r7, =gNoOfAllBanks + ldrb r7, [r7] + cmp r5, r7 + bge _0803A490 + ldr r3, =gBattleMons + 0x50 + ldr r7, =gBitTable + ldr r6, =gActiveBank +_0803A448: + movs r0, 0x58 + muls r0, r5 + adds r4, r0, r3 + ldrb r0, [r6] + lsls r0, 2 + adds r0, r7 + ldr r0, [r0] + lsls r2, r0, 16 + ldr r1, [r4] + adds r0, r1, 0 + ands r0, r2 + cmp r0, 0 + beq _0803A466 + bics r1, r2 + str r1, [r4] +_0803A466: + ldr r1, [r4] + movs r0, 0xE0 + lsls r0, 8 + ands r0, r1 + cmp r0, 0 + beq _0803A486 + mov r2, r8 + ldr r0, [r2] + adds r0, r5, r0 + ldrb r0, [r0, 0x14] + ldrb r2, [r6] + cmp r0, r2 + bne _0803A486 + ldr r0, =0xffff1fff + ands r1, r0 + str r1, [r4] +_0803A486: + adds r5, 0x1 + ldr r0, =gNoOfAllBanks + ldrb r0, [r0] + cmp r5, r0 + blt _0803A448 +_0803A490: + mov r1, r9 + ldrb r0, [r1] + add r0, r10 + movs r1, 0 + strb r1, [r0] + mov r2, r9 + ldrb r0, [r2] + ldr r3, =gUnknown_020244B0 + adds r0, r3 + strb r1, [r0] + ldrb r1, [r2] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + mov r6, r12 + adds r1, r0, r6 + movs r5, 0 + movs r2, 0 +_0803A4B4: + adds r0, r1, r5 + strb r2, [r0] + adds r5, 0x1 + cmp r5, 0x1B + bls _0803A4B4 + ldr r7, =gCurrentMove + ldrh r0, [r7] + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + ldr r0, =gBattleMoves + adds r1, r0 + ldrb r0, [r1] + cmp r0, 0x7F + bne _0803A540 + mov r2, r9 + ldrb r1, [r2] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + add r0, r12 + mov r1, sp + ldrb r1, [r1, 0xA] + strb r1, [r0, 0xA] + ldrb r1, [r2] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + add r0, r12 + mov r1, sp + ldrb r1, [r1, 0x15] + strb r1, [r0, 0x15] + ldrb r0, [r2] + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + add r1, r12 + mov r0, sp + ldrb r2, [r0, 0xF] + lsls r2, 28 + movs r4, 0xF + lsrs r2, 28 + ldrb r3, [r1, 0xF] + movs r0, 0x10 + negs r0, r0 + ands r0, r3 + orrs r0, r2 + strb r0, [r1, 0xF] + mov r3, r9 + ldrb r1, [r3] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + add r0, r12 + mov r1, sp + ldrb r1, [r1, 0xF] + lsrs r1, 4 + lsls r1, 4 + ldrb r2, [r0, 0xF] + ands r4, r2 + orrs r4, r1 + strb r4, [r0, 0xF] + ldrb r1, [r3] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + add r0, r12 + mov r1, sp + ldrb r1, [r1, 0x14] + strb r1, [r0, 0x14] +_0803A540: + movs r0, 0 + ldr r6, =gBattleMoveFlags + strb r0, [r6] + mov r7, r9 + ldrb r1, [r7] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + add r0, r12 + movs r4, 0 + movs r1, 0x2 + strb r1, [r0, 0x16] + ldrb r0, [r7] + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + add r1, r12 + mov r0, sp + ldrb r0, [r0, 0x18] + movs r2, 0x2 + ands r2, r0 + ldrb r3, [r1, 0x18] + movs r0, 0x3 + negs r0, r0 + ands r0, r3 + orrs r0, r2 + strb r0, [r1, 0x18] + ldrb r0, [r7] + lsls r0, 1 + ldr r1, =gLastUsedMovesByBanks + adds r0, r1 + movs r2, 0 + strh r4, [r0] + ldrb r0, [r7] + lsls r0, 1 + ldr r3, =gUnknown_02024250 + adds r0, r3 + strh r4, [r0] + ldrb r0, [r7] + lsls r0, 1 + ldr r6, =gUnknown_02024258 + adds r0, r6 + strh r4, [r0] + ldrb r0, [r7] + lsls r0, 1 + ldr r7, =gUnknown_02024260 + adds r0, r7 + strh r4, [r0] + mov r1, r9 + ldrb r0, [r1] + lsls r0, 1 + ldr r3, =gUnknown_02024240 + adds r0, r3 + strh r4, [r0] + ldrb r0, [r1] + ldr r6, =gUnknown_02024270 + adds r0, r6 + movs r1, 0xFF + strb r1, [r0] + mov r7, r9 + ldrb r0, [r7] + mov r3, r8 + ldr r1, [r3] + lsls r0, 1 + adds r0, r1 + adds r0, 0x98 + strb r2, [r0] + ldrb r0, [r7] + ldr r1, [r3] + lsls r0, 1 + adds r0, r1 + adds r0, 0x99 + strb r2, [r0] + ldrb r0, [r7] + ldr r1, [r3] + lsls r0, 3 + adds r0, r1 + adds r0, 0xE0 + strb r2, [r0] + ldrb r0, [r7] + ldr r1, [r3] + lsls r0, 3 + adds r0, r1 + adds r0, 0xE1 + strb r2, [r0] + ldrb r0, [r7] + ldr r1, [r3] + lsls r0, 3 + adds r0, r1 + adds r0, 0xE2 + strb r2, [r0] + ldrb r0, [r7] + ldr r1, [r3] + lsls r0, 3 + adds r0, r1 + adds r0, 0xE3 + strb r2, [r0] + ldrb r0, [r7] + ldr r1, [r3] + lsls r0, 3 + adds r0, r1 + adds r0, 0xE4 + strb r2, [r0] + ldrb r0, [r7] + ldr r1, [r3] + lsls r0, 3 + adds r0, r1 + adds r0, 0xE5 + strb r2, [r0] + ldrb r0, [r7] + ldr r1, [r3] + lsls r0, 3 + adds r0, r1 + adds r0, 0xE6 + strb r2, [r0] + ldrb r0, [r7] + ldr r1, [r3] + lsls r0, 3 + adds r0, r1 + adds r0, 0xE7 + strb r2, [r0] + ldr r1, [r3] + adds r1, 0x92 + ldrb r0, [r7] + lsls r0, 2 + ldr r6, =gBitTable + adds r0, r6 + ldr r2, [r0] + ldrb r0, [r1] + bics r0, r2 + strb r0, [r1] + movs r5, 0 + ldr r7, =gNoOfAllBanks + ldrb r7, [r7] + cmp r5, r7 + bge _0803A6B4 + mov r3, r9 + mov r7, r8 + movs r6, 0 +_0803A656: + ldrb r0, [r3] + cmp r5, r0 + beq _0803A68C + lsls r0, r5, 24 + lsrs r0, 24 + str r3, [sp, 0x1C] + bl GetBankSide + adds r4, r0, 0 + ldr r3, [sp, 0x1C] + ldrb r0, [r3] + bl GetBankSide + lsls r4, 24 + lsls r0, 24 + ldr r3, [sp, 0x1C] + cmp r4, r0 + beq _0803A68C + ldr r0, [r7] + lsls r1, r5, 1 + adds r0, r1, r0 + adds r0, 0x98 + strb r6, [r0] + ldr r0, [r7] + adds r1, r0 + adds r1, 0x99 + strb r6, [r1] +_0803A68C: + ldrb r0, [r3] + ldr r1, [r7] + lsls r0, 1 + lsls r2, r5, 3 + adds r0, r2 + adds r0, r1 + adds r0, 0xE0 + strb r6, [r0] + ldrb r0, [r3] + ldr r1, [r7] + lsls r0, 1 + adds r0, r2 + adds r0, r1 + adds r0, 0xE1 + strb r6, [r0] + adds r5, 0x1 + ldr r0, =gNoOfAllBanks + ldrb r0, [r0] + cmp r5, r0 + blt _0803A656 +_0803A6B4: + mov r1, r9 + ldrb r0, [r1] + mov r2, r8 + ldr r1, [r2] + lsls r0, 1 + adds r0, r1 + adds r0, 0xC8 + movs r2, 0 + strb r2, [r0] + mov r3, r9 + ldrb r0, [r3] + mov r6, r8 + ldr r1, [r6] + lsls r0, 1 + adds r0, r1 + adds r0, 0xC9 + strb r2, [r0] + ldr r0, =gBattleResources + ldr r0, [r0] + ldr r1, [r0, 0x4] + ldrb r0, [r3] + lsls r0, 2 + adds r1, r0 + movs r2, 0 + str r2, [r1] + ldr r0, =gCurrentMove + strh r2, [r0] + ldr r0, [r6] + adds r0, 0xDA + movs r1, 0xFF + strb r1, [r0] + ldrb r0, [r3] + bl ClearBankMoveHistory + mov r7, r9 + ldrb r0, [r7] + bl ClearBankAbilityHistory + add sp, 0x20 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .pool + thumb_func_end sub_803A284 + + thumb_func_start sub_803A75C +sub_803A75C: @ 803A75C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + movs r5, 0 + ldr r6, =gBattleMons + ldr r0, =gStatuses3 + mov r8, r0 + ldr r1, =gBattleStruct + mov r12, r1 + ldr r2, =gUnknown_020244AC + mov r9, r2 + ldr r3, =gUnknown_020244B0 + mov r10, r3 + ldr r7, =gProtectStructs + ldr r4, =gActiveBank + movs r3, 0x58 + adds r2, r6, 0 + adds r2, 0x18 + movs r1, 0x6 +_0803A788: + ldrb r0, [r4] + muls r0, r3 + adds r0, r5, r0 + adds r0, r2 + strb r1, [r0] + adds r5, 0x1 + cmp r5, 0x7 + ble _0803A788 + ldr r0, =gActiveBank + ldrb r1, [r0] + movs r0, 0x58 + muls r0, r1 + adds r2, r6, 0 + adds r2, 0x50 + adds r0, r2 + movs r1, 0 + str r1, [r0] + ldr r3, =gActiveBank + ldrb r0, [r3] + lsls r0, 2 + add r0, r8 + str r1, [r0] + movs r5, 0 + ldr r6, =gNoOfAllBanks + ldrb r6, [r6] + cmp r5, r6 + bge _0803A830 + adds r3, r2, 0 + movs r4, 0 + ldr r0, =gBitTable + mov r8, r0 +_0803A7C6: + ldr r1, [r3] + movs r0, 0x80 + lsls r0, 19 + ands r0, r1 + cmp r0, 0 + beq _0803A7E6 + ldr r2, =gDisableStructs + adds r0, r4, r2 + ldrb r0, [r0, 0x14] + ldr r6, =gActiveBank + ldrb r6, [r6] + cmp r0, r6 + bne _0803A7E6 + ldr r0, =0xfbffffff + ands r1, r0 + str r1, [r3] +_0803A7E6: + ldr r1, =gActiveBank + ldrb r0, [r1] + lsls r0, 2 + add r0, r8 + ldr r0, [r0] + lsls r2, r0, 16 + ldr r1, [r3] + adds r0, r1, 0 + ands r0, r2 + cmp r0, 0 + beq _0803A800 + bics r1, r2 + str r1, [r3] +_0803A800: + ldr r1, [r3] + movs r0, 0xE0 + lsls r0, 8 + ands r0, r1 + cmp r0, 0 + beq _0803A822 + mov r2, r12 + ldr r0, [r2] + adds r0, r5, r0 + ldrb r0, [r0, 0x14] + ldr r6, =gActiveBank + ldrb r6, [r6] + cmp r0, r6 + bne _0803A822 + ldr r0, =0xffff1fff + ands r1, r0 + str r1, [r3] +_0803A822: + adds r3, 0x58 + adds r4, 0x1C + adds r5, 0x1 + ldr r0, =gNoOfAllBanks + ldrb r0, [r0] + cmp r5, r0 + blt _0803A7C6 +_0803A830: + ldr r1, =gActiveBank + ldrb r0, [r1] + add r0, r9 + movs r1, 0 + strb r1, [r0] + ldr r2, =gActiveBank + ldrb r0, [r2] + add r0, r10 + strb r1, [r0] + ldrb r1, [r2] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + ldr r3, =gDisableStructs + adds r1, r0, r3 + movs r5, 0 + movs r2, 0 +_0803A852: + adds r0, r1, r5 + strb r2, [r0] + adds r5, 0x1 + cmp r5, 0x1B + bls _0803A852 + ldr r6, =gActiveBank + ldrb r1, [r6] + lsls r1, 4 + adds r1, r7 + ldrb r2, [r1] + movs r0, 0x2 + negs r0, r0 + mov r9, r0 + ands r0, r2 + strb r0, [r1] + ldrb r1, [r6] + lsls r1, 4 + adds r1, r7 + ldrb r2, [r1] + movs r3, 0x3 + negs r3, r3 + mov r8, r3 + mov r0, r8 + ands r0, r2 + strb r0, [r1] + ldrb r1, [r6] + lsls r1, 4 + adds r1, r7 + ldrb r2, [r1] + movs r6, 0x5 + negs r6, r6 + adds r0, r6, 0 + ands r0, r2 + strb r0, [r1] + ldr r0, =gActiveBank + ldrb r1, [r0] + lsls r1, 4 + adds r1, r7 + ldrb r2, [r1] + subs r3, 0x6 + mov r10, r3 + mov r0, r10 + ands r0, r2 + strb r0, [r1] + ldr r0, =gActiveBank + ldrb r1, [r0] + lsls r1, 4 + adds r1, r7 + ldrb r2, [r1] + movs r0, 0x11 + negs r0, r0 + ands r0, r2 + strb r0, [r1] + ldr r2, =gActiveBank + ldrb r1, [r2] + lsls r1, 4 + adds r1, r7 + ldrb r2, [r1] + movs r5, 0x21 + negs r5, r5 + adds r0, r5, 0 + ands r0, r2 + strb r0, [r1] + ldr r3, =gActiveBank + ldrb r1, [r3] + lsls r1, 4 + adds r1, r7 + ldrb r2, [r1] + movs r4, 0x41 + negs r4, r4 + adds r0, r4, 0 + ands r0, r2 + strb r0, [r1] + ldrb r1, [r3] + lsls r1, 4 + adds r1, r7 + ldrb r2, [r1] + movs r3, 0x7F + adds r0, r3, 0 + ands r0, r2 + strb r0, [r1] + ldr r0, =gActiveBank + ldrb r1, [r0] + lsls r1, 4 + adds r1, r7 + ldrb r2, [r1, 0x1] + mov r0, r9 + ands r0, r2 + strb r0, [r1, 0x1] + ldr r2, =gActiveBank + ldrb r1, [r2] + lsls r1, 4 + adds r1, r7 + ldrb r2, [r1, 0x1] + mov r0, r8 + ands r0, r2 + strb r0, [r1, 0x1] + ldr r0, =gActiveBank + ldrb r1, [r0] + lsls r1, 4 + adds r1, r7 + ldrb r2, [r1, 0x1] + adds r0, r6, 0 + ands r0, r2 + strb r0, [r1, 0x1] + ldr r2, =gActiveBank + ldrb r1, [r2] + lsls r1, 4 + adds r1, r7 + ldrb r2, [r1, 0x1] + movs r0, 0x19 + negs r0, r0 + ands r0, r2 + strb r0, [r1, 0x1] + ldr r1, =gActiveBank + ldrb r0, [r1] + lsls r0, 4 + adds r0, r7 + ldrb r1, [r0, 0x1] + ands r5, r1 + strb r5, [r0, 0x1] + ldr r2, =gActiveBank + ldrb r0, [r2] + lsls r0, 4 + adds r0, r7 + ldrb r1, [r0, 0x1] + ands r4, r1 + strb r4, [r0, 0x1] + ldrb r0, [r2] + lsls r0, 4 + adds r0, r7 + ldrb r1, [r0, 0x1] + ands r3, r1 + strb r3, [r0, 0x1] + ldrb r0, [r2] + lsls r0, 4 + adds r0, r7 + ldrb r1, [r0, 0x2] + mov r3, r9 + ands r3, r1 + strb r3, [r0, 0x2] + ldrb r0, [r2] + lsls r0, 4 + adds r0, r7 + ldrb r1, [r0, 0x2] + mov r2, r8 + ands r2, r1 + strb r2, [r0, 0x2] + ldr r3, =gActiveBank + ldrb r0, [r3] + lsls r0, 4 + adds r0, r7 + ldrb r1, [r0, 0x2] + ands r6, r1 + strb r6, [r0, 0x2] + ldrb r0, [r3] + lsls r0, 4 + adds r0, r7 + ldrb r1, [r0, 0x2] + mov r6, r10 + ands r6, r1 + strb r6, [r0, 0x2] + ldrb r1, [r3] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + ldr r1, =gDisableStructs + adds r0, r1 + movs r2, 0 + movs r1, 0x2 + strb r1, [r0, 0x16] + ldrb r0, [r3] + lsls r0, 1 + ldr r3, =gLastUsedMovesByBanks + adds r0, r3 + movs r3, 0 + strh r2, [r0] + ldr r6, =gActiveBank + ldrb r0, [r6] + lsls r0, 1 + ldr r1, =gUnknown_02024250 + adds r0, r1 + strh r2, [r0] + ldrb r0, [r6] + lsls r0, 1 + ldr r6, =gUnknown_02024258 + adds r0, r6 + strh r2, [r0] + ldr r1, =gActiveBank + ldrb r0, [r1] + lsls r0, 1 + ldr r6, =gUnknown_02024260 + adds r0, r6 + strh r2, [r0] + ldrb r0, [r1] + lsls r0, 1 + ldr r1, =gUnknown_02024240 + adds r0, r1 + strh r2, [r0] + ldr r2, =gActiveBank + ldrb r0, [r2] + ldr r6, =gUnknown_02024270 + adds r0, r6 + movs r1, 0xFF + strb r1, [r0] + ldrb r0, [r2] + mov r2, r12 + ldr r1, [r2] + lsls r0, 1 + adds r0, r1 + adds r0, 0xC8 + strb r3, [r0] + ldr r6, =gActiveBank + ldrb r0, [r6] + ldr r1, [r2] + lsls r0, 1 + adds r0, r1 + adds r0, 0xC9 + strb r3, [r0] + ldrb r0, [r6] + ldr r1, [r2] + lsls r0, 1 + adds r0, r1 + adds r0, 0x98 + strb r3, [r0] + ldrb r0, [r6] + ldr r1, [r2] + lsls r0, 1 + adds r0, r1 + adds r0, 0x99 + strb r3, [r0] + ldrb r0, [r6] + ldr r1, [r2] + lsls r0, 3 + adds r0, r1 + adds r0, 0xE0 + strb r3, [r0] + ldrb r0, [r6] + ldr r1, [r2] + lsls r0, 3 + adds r0, r1 + adds r0, 0xE1 + strb r3, [r0] + ldrb r0, [r6] + ldr r1, [r2] + lsls r0, 3 + adds r0, r1 + adds r0, 0xE2 + strb r3, [r0] + ldrb r0, [r6] + ldr r1, [r2] + lsls r0, 3 + adds r0, r1 + adds r0, 0xE3 + strb r3, [r0] + ldrb r0, [r6] + ldr r1, [r2] + lsls r0, 3 + adds r0, r1 + adds r0, 0xE4 + strb r3, [r0] + ldrb r0, [r6] + ldr r1, [r2] + lsls r0, 3 + adds r0, r1 + adds r0, 0xE5 + strb r3, [r0] + ldrb r0, [r6] + ldr r1, [r2] + lsls r0, 3 + adds r0, r1 + adds r0, 0xE6 + strb r3, [r0] + ldrb r0, [r6] + ldr r1, [r2] + lsls r0, 3 + adds r0, r1 + adds r0, 0xE7 + strb r3, [r0] + ldr r1, [r2] + adds r1, 0x92 + ldrb r0, [r6] + lsls r0, 2 + ldr r2, =gBitTable + adds r0, r2 + ldr r2, [r0] + ldrb r0, [r1] + bics r0, r2 + strb r0, [r1] + movs r5, 0 + ldr r3, =gNoOfAllBanks + ldrb r3, [r3] + cmp r5, r3 + bge _0803AB02 + adds r3, r6, 0 + mov r7, r12 + movs r6, 0 +_0803AAA4: + ldrb r0, [r3] + cmp r5, r0 + beq _0803AADA + lsls r0, r5, 24 + lsrs r0, 24 + str r3, [sp] + bl GetBankSide + adds r4, r0, 0 + ldr r3, [sp] + ldrb r0, [r3] + bl GetBankSide + lsls r4, 24 + lsls r0, 24 + ldr r3, [sp] + cmp r4, r0 + beq _0803AADA + ldr r0, [r7] + lsls r1, r5, 1 + adds r0, r1, r0 + adds r0, 0x98 + strb r6, [r0] + ldr r0, [r7] + adds r1, r0 + adds r1, 0x99 + strb r6, [r1] +_0803AADA: + ldrb r0, [r3] + ldr r1, [r7] + lsls r0, 1 + lsls r2, r5, 3 + adds r0, r2 + adds r0, r1 + adds r0, 0xE0 + strb r6, [r0] + ldrb r0, [r3] + ldr r1, [r7] + lsls r0, 1 + adds r0, r2 + adds r0, r1 + adds r0, 0xE1 + strb r6, [r0] + adds r5, 0x1 + ldr r0, =gNoOfAllBanks + ldrb r0, [r0] + cmp r5, r0 + blt _0803AAA4 +_0803AB02: + ldr r0, =gBattleResources + ldr r0, [r0] + ldr r1, [r0, 0x4] + ldr r2, =gActiveBank + ldrb r0, [r2] + lsls r0, 2 + adds r1, r0 + movs r0, 0 + str r0, [r1] + ldr r4, =gBattleMons + ldrb r0, [r2] + movs r3, 0x58 + adds r2, r0, 0 + muls r2, r3 + b _0803AB6C + .pool +_0803AB6C: + adds r2, r4 + ldr r5, =gBaseStats + ldrh r1, [r2] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r0, r5 + ldrb r0, [r0, 0x6] + adds r2, 0x21 + strb r0, [r2] + ldr r6, =gActiveBank + ldrb r0, [r6] + adds r1, r0, 0 + muls r1, r3 + adds r1, r4 + ldrh r2, [r1] + lsls r0, r2, 3 + subs r0, r2 + lsls r0, 2 + adds r0, r5 + ldrb r0, [r0, 0x7] + adds r1, 0x22 + strb r0, [r1] + ldrb r0, [r6] + bl ClearBankMoveHistory + ldrb r0, [r6] + bl ClearBankAbilityHistory + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .pool + thumb_func_end sub_803A75C + + thumb_func_start bc_8012FAC +bc_8012FAC: @ 803ABC0 + push {r4,r5,lr} + ldr r5, =gBattleCommunication + ldrb r0, [r5] + cmp r0, 0 + beq _0803ABD4 + cmp r0, 0x1 + beq _0803ABF8 + b _0803AC2E + .pool +_0803ABD4: + ldr r4, =gActiveBank + ldrb r0, [r5, 0x1] + strb r0, [r4] + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl dp01_build_cmdbuf_x00_a_b_0 + ldrb r0, [r4] + bl dp01_battle_side_mark_buffer_for_execution + ldrb r0, [r5] + adds r0, 0x1 + strb r0, [r5] + b _0803AC2E + .pool +_0803ABF8: + ldr r0, =gBattleExecBuffer + ldr r2, [r0] + cmp r2, 0 + bne _0803AC2E + ldrb r0, [r5, 0x1] + adds r0, 0x1 + strb r0, [r5, 0x1] + ldr r1, =gNoOfAllBanks + lsls r0, 24 + lsrs r0, 24 + ldrb r1, [r1] + cmp r0, r1 + bne _0803AC2C + ldr r1, =gBattleMainFunc + ldr r0, =bc_load_battlefield + str r0, [r1] + b _0803AC2E + .pool +_0803AC2C: + strb r2, [r5] +_0803AC2E: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end bc_8012FAC + + thumb_func_start bc_load_battlefield +bc_load_battlefield: @ 803AC34 + push {r4,r5,lr} + ldr r0, =gBattleExecBuffer + ldr r5, [r0] + cmp r5, 0 + bne _0803AC64 + movs r0, 0 + bl GetBankByPlayerAI + ldr r4, =gActiveBank + strb r0, [r4] + ldr r0, =gUnknown_02022FF0 + ldrb r1, [r0] + movs r0, 0 + bl dp01_build_cmdbuf_x2E_a + ldrb r0, [r4] + bl dp01_battle_side_mark_buffer_for_execution + ldr r1, =gBattleMainFunc + ldr r0, =sub_803AC84 + str r0, [r1] + ldr r0, =gBattleCommunication + strb r5, [r0] + strb r5, [r0, 0x1] +_0803AC64: + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end bc_load_battlefield + + thumb_func_start sub_803AC84 +sub_803AC84: @ 803AC84 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + ldr r0, =gBattleExecBuffer + ldr r1, [r0] + cmp r1, 0 + beq _0803AC98 + b _0803AF4E +_0803AC98: + ldr r2, =gActiveBank + strb r1, [r2] + ldr r0, =gNoOfAllBanks + ldrb r0, [r0] + cmp r1, r0 + bcc _0803ACA6 + b _0803AF48 +_0803ACA6: + movs r7, 0x58 + ldr r0, =gBattleMons + mov r8, r0 + mov r9, r2 + movs r1, 0x48 + add r1, r8 + mov r10, r1 +_0803ACB4: + ldr r0, =gBattleTypeFlags + ldr r0, [r0] + movs r1, 0x80 + ands r0, r1 + cmp r0, 0 + beq _0803ACFC + ldr r4, =gActiveBank + ldrb r0, [r4] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + bne _0803ACFC + ldrb r0, [r4] + muls r0, r7 + mov r2, r8 + adds r3, r0, r2 + movs r2, 0 + movs r1, 0 +_0803ACDA: + adds r0, r3, r2 + strb r1, [r0] + adds r2, 0x1 + cmp r2, 0x57 + bls _0803ACDA + b _0803ADCA + .pool +_0803ACFC: + mov r1, r9 + ldrb r0, [r1] + muls r0, r7 + mov r2, r8 + adds r3, r0, r2 + movs r2, 0 + ldr r6, =gBaseStats + ldr r5, =gBattleBufferB + ldr r4, =gActiveBank +_0803AD0E: + adds r0, r3, r2 + ldrb r1, [r4] + lsls r1, 9 + adds r1, 0x4 + adds r1, r2, r1 + adds r1, r5 + ldrb r1, [r1] + strb r1, [r0] + adds r2, 0x1 + cmp r2, 0x57 + bls _0803AD0E + mov r1, r9 + ldrb r0, [r1] + adds r2, r0, 0 + muls r2, r7 + add r2, r8 + ldrh r1, [r2] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r0, r6 + ldrb r0, [r0, 0x6] + adds r2, 0x21 + strb r0, [r2] + mov r2, r9 + ldrb r0, [r2] + adds r2, r0, 0 + muls r2, r7 + add r2, r8 + ldrh r1, [r2] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r0, r6 + ldrb r0, [r0, 0x7] + adds r2, 0x22 + strb r0, [r2] + mov r1, r9 + ldrb r0, [r1] + adds r1, r0, 0 + muls r1, r7 + add r1, r8 + ldrh r0, [r1] + ldrb r1, [r1, 0x17] + lsrs r1, 7 + bl GetAbilityBySpecies + mov r2, r9 + ldrb r1, [r2] + muls r1, r7 + add r1, r8 + adds r1, 0x20 + strb r0, [r1] + ldrb r0, [r2] + bl GetBankSide + ldr r1, =gBattleStruct + lsls r0, 24 + lsrs r0, 23 + adds r0, 0xA8 + ldr r1, [r1] + adds r1, r0 + mov r2, r9 + ldrb r0, [r2] + muls r0, r7 + add r0, r8 + ldrh r0, [r0, 0x28] + strh r0, [r1] + movs r2, 0 + ldr r4, =gActiveBank + movs r5, 0x58 + ldr r1, =gBattleMons + 0x18 + adds r6, r4, 0 + movs r0, 0x18 + negs r0, r0 + adds r0, r1 + mov r12, r0 + movs r3, 0x6 +_0803ADAA: + ldrb r0, [r4] + muls r0, r5 + adds r0, r2, r0 + adds r0, r1 + strb r3, [r0] + adds r2, 0x1 + cmp r2, 0x7 + ble _0803ADAA + ldrb r0, [r6] + adds r1, r0, 0 + muls r1, r7 + mov r0, r12 + adds r0, 0x50 + adds r1, r0 + movs r0, 0 + str r0, [r1] +_0803ADCA: + ldr r4, =gActiveBank + ldrb r0, [r4] + bl GetBankIdentity + lsls r0, 24 + cmp r0, 0 + bne _0803ADE4 + movs r0, 0 + bl dp01_build_cmdbuf_x07_7_7_7 + ldrb r0, [r4] + bl dp01_battle_side_mark_buffer_for_execution +_0803ADE4: + ldr r5, =gBattleTypeFlags + ldr r0, [r5] + movs r1, 0x8 + ands r0, r1 + cmp r0, 0 + beq _0803AE60 + ldrb r0, [r4] + bl GetBankIdentity + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0803AE0A + movs r0, 0 + bl dp01_build_cmdbuf_x07_7_7_7 + ldrb r0, [r4] + bl dp01_battle_side_mark_buffer_for_execution +_0803AE0A: + ldrb r0, [r4] + bl GetBankSide + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0803AEC0 + ldr r0, [r5] + ldr r1, =0x063f0902 + ands r0, r1 + cmp r0, 0 + bne _0803AEC0 + ldrb r0, [r4] + muls r0, r7 + add r0, r8 + ldrh r0, [r0] + bl SpeciesToNationalPokedexNum + lsls r0, 16 + lsrs r0, 16 + ldrb r1, [r4] + muls r1, r7 + add r1, r10 + ldr r2, [r1] + movs r1, 0x2 + bl SetPokedexFlag + b _0803AEC0 + .pool +_0803AE60: + ldrb r0, [r4] + bl GetBankSide + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0803AEC0 + ldr r0, [r5] + ldr r1, =0x063f0902 + ands r0, r1 + cmp r0, 0 + bne _0803AE96 + ldrb r0, [r4] + muls r0, r7 + add r0, r8 + ldrh r0, [r0] + bl SpeciesToNationalPokedexNum + lsls r0, 16 + lsrs r0, 16 + ldrb r1, [r4] + muls r1, r7 + add r1, r10 + ldr r2, [r1] + movs r1, 0x2 + bl SetPokedexFlag +_0803AE96: + movs r0, 0 + bl dp01_build_cmdbuf_x04_4_4_4 + ldrb r0, [r4] + bl dp01_battle_side_mark_buffer_for_execution + ldr r1, =gBattlePartyID + ldrb r0, [r4] + lsls r0, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, =gEnemyParty + adds r0, r1 + movs r1, 0xB + movs r2, 0 + bl GetMonData + ldr r1, =gBattleResults + strh r0, [r1, 0x20] +_0803AEC0: + ldr r0, =gBattleTypeFlags + ldr r0, [r0] + movs r1, 0x40 + ands r0, r1 + cmp r0, 0 + beq _0803AEF6 + ldr r4, =gActiveBank + ldrb r0, [r4] + bl GetBankIdentity + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + beq _0803AEEA + ldrb r0, [r4] + bl GetBankIdentity + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + bne _0803AEF6 +_0803AEEA: + movs r0, 0 + bl dp01_build_cmdbuf_x07_7_7_7 + ldrb r0, [r4] + bl dp01_battle_side_mark_buffer_for_execution +_0803AEF6: + ldr r0, =gBattleTypeFlags + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 8 + ands r0, r1 + cmp r0, 0 + beq _0803AF20 + ldr r4, =gActiveBank + ldrb r0, [r4] + bl GetBankIdentity + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + bne _0803AF20 + movs r0, 0 + bl dp01_build_cmdbuf_x07_7_7_7 + ldrb r0, [r4] + bl dp01_battle_side_mark_buffer_for_execution +_0803AF20: + ldr r0, =gBattleTypeFlags + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 11 + ands r0, r1 + cmp r0, 0 + beq _0803AF32 + bl sub_81A56B4 +_0803AF32: + mov r1, r9 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + ldr r1, =gNoOfAllBanks + lsls r0, 24 + lsrs r0, 24 + ldrb r1, [r1] + cmp r0, r1 + bcs _0803AF48 + b _0803ACB4 +_0803AF48: + ldr r1, =gBattleMainFunc + ldr r0, =bc_801333C + str r0, [r1] +_0803AF4E: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .pool + thumb_func_end sub_803AC84 + + thumb_func_start bc_801333C +bc_801333C: @ 803AF80 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x30 + ldr r0, =gBattleExecBuffer + ldr r0, [r0] + cmp r0, 0 + beq _0803AF92 + b _0803B10C +_0803AF92: + ldr r0, =gBattleTypeFlags + ldr r0, [r0] + movs r1, 0x8 + ands r0, r1 + cmp r0, 0 + bne _0803AFA0 + b _0803B0AC +_0803AFA0: + movs r7, 0 + add r0, sp, 0x4 + mov r8, r0 + mov r6, r8 + mov r5, sp +_0803AFAA: + movs r0, 0x64 + adds r1, r7, 0 + muls r1, r0 + ldr r0, =gEnemyParty + adds r4, r1, r0 + adds r0, r4, 0 + movs r1, 0x41 + bl GetMonData + cmp r0, 0 + beq _0803AFD0 + adds r0, r4, 0 + movs r1, 0x41 + bl GetMonData + movs r1, 0xCE + lsls r1, 1 + cmp r0, r1 + bne _0803AFE8 +_0803AFD0: + ldr r0, =0x0000ffff + strh r0, [r5] + movs r0, 0 + b _0803AFFA + .pool +_0803AFE8: + adds r0, r4, 0 + movs r1, 0x39 + bl GetMonData + strh r0, [r5] + adds r0, r4, 0 + movs r1, 0x37 + bl GetMonData +_0803AFFA: + str r0, [r6] + adds r6, 0x8 + adds r5, 0x8 + adds r7, 0x1 + cmp r7, 0x5 + ble _0803AFAA + movs r0, 0x1 + bl GetBankByPlayerAI + ldr r4, =gActiveBank + strb r0, [r4] + movs r0, 0 + mov r1, sp + movs r2, 0x80 + bl dp01_build_cmdbuf_x30_TODO + ldrb r0, [r4] + bl dp01_battle_side_mark_buffer_for_execution + movs r7, 0 + mov r6, r8 + mov r5, sp +_0803B026: + movs r0, 0x64 + adds r1, r7, 0 + muls r1, r0 + ldr r0, =gPlayerParty + adds r4, r1, r0 + adds r0, r4, 0 + movs r1, 0x41 + bl GetMonData + cmp r0, 0 + beq _0803B04C + adds r0, r4, 0 + movs r1, 0x41 + bl GetMonData + movs r1, 0xCE + lsls r1, 1 + cmp r0, r1 + bne _0803B060 +_0803B04C: + ldr r0, =0x0000ffff + strh r0, [r5] + movs r0, 0 + b _0803B072 + .pool +_0803B060: + adds r0, r4, 0 + movs r1, 0x39 + bl GetMonData + strh r0, [r5] + adds r0, r4, 0 + movs r1, 0x37 + bl GetMonData +_0803B072: + str r0, [r6] + adds r6, 0x8 + adds r5, 0x8 + adds r7, 0x1 + cmp r7, 0x5 + ble _0803B026 + movs r0, 0 + bl GetBankByPlayerAI + ldr r4, =gActiveBank + strb r0, [r4] + movs r0, 0 + mov r1, sp + movs r2, 0x80 + bl dp01_build_cmdbuf_x30_TODO + ldrb r0, [r4] + bl dp01_battle_side_mark_buffer_for_execution + ldr r1, =gBattleMainFunc + ldr r0, =bc_battle_begin_message + b _0803B10A + .pool +_0803B0AC: + movs r7, 0 + add r6, sp, 0x4 + mov r5, sp +_0803B0B2: + movs r0, 0x64 + adds r1, r7, 0 + muls r1, r0 + ldr r0, =gPlayerParty + adds r4, r1, r0 + adds r0, r4, 0 + movs r1, 0x41 + bl GetMonData + cmp r0, 0 + beq _0803B0D8 + adds r0, r4, 0 + movs r1, 0x41 + bl GetMonData + movs r1, 0xCE + lsls r1, 1 + cmp r0, r1 + bne _0803B0E8 +_0803B0D8: + ldr r0, =0x0000ffff + strh r0, [r5] + movs r0, 0 + b _0803B0FA + .pool +_0803B0E8: + adds r0, r4, 0 + movs r1, 0x39 + bl GetMonData + strh r0, [r5] + adds r0, r4, 0 + movs r1, 0x37 + bl GetMonData +_0803B0FA: + str r0, [r6] + adds r6, 0x8 + adds r5, 0x8 + adds r7, 0x1 + cmp r7, 0x5 + ble _0803B0B2 + ldr r1, =gBattleMainFunc + ldr r0, =bc_8013568 +_0803B10A: + str r0, [r1] +_0803B10C: + add sp, 0x30 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .pool + thumb_func_end bc_801333C + + thumb_func_start bc_battle_begin_message +bc_battle_begin_message: @ 803B120 + push {lr} + ldr r0, =gBattleExecBuffer + ldr r0, [r0] + cmp r0, 0 + bne _0803B142 + movs r0, 0x1 + bl GetBankByPlayerAI + ldr r1, =gActiveBank + strb r0, [r1] + ldrb r1, [r1] + movs r0, 0 + bl b_std_message + ldr r1, =gBattleMainFunc + ldr r0, =sub_803B180 + str r0, [r1] +_0803B142: + pop {r0} + bx r0 + .pool + thumb_func_end bc_battle_begin_message + + thumb_func_start bc_8013568 +bc_8013568: @ 803B158 + push {lr} + ldr r0, =gBattleExecBuffer + ldr r0, [r0] + cmp r0, 0 + bne _0803B170 + ldr r1, =gBattleMainFunc + ldr r0, =sub_803B3CC + str r0, [r1] + movs r0, 0 + movs r1, 0 + bl b_std_message +_0803B170: + pop {r0} + bx r0 + .pool + thumb_func_end bc_8013568 + + thumb_func_start sub_803B180 +sub_803B180: @ 803B180 + push {lr} + ldr r0, =gBattleExecBuffer + ldr r0, [r0] + cmp r0, 0 + bne _0803B1D0 + ldr r0, =gBattleTypeFlags + ldr r2, [r0] + movs r0, 0x80 + lsls r0, 17 + ands r0, r2 + cmp r0, 0 + beq _0803B1B8 + movs r0, 0x80 + lsls r0, 18 + ands r0, r2 + cmp r0, 0 + beq _0803B1B8 + movs r1, 0x80 + lsls r1, 24 + ands r1, r2 + negs r0, r1 + orrs r0, r1 + lsrs r0, 31 + b _0803B1BA + .pool +_0803B1B8: + movs r0, 0x1 +_0803B1BA: + bl GetBankByPlayerAI + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + movs r0, 0x1 + bl b_std_message + ldr r1, =gBattleMainFunc + ldr r0, =sub_803B25C + str r0, [r1] +_0803B1D0: + pop {r0} + bx r0 + .pool + thumb_func_end sub_803B180 + + thumb_func_start sub_803B1DC +sub_803B1DC: @ 803B1DC + push {r4,r5,lr} + ldr r0, =gBattleTypeFlags + ldr r1, [r0] + movs r0, 0x80 + lsls r0, 17 + ands r0, r1 + cmp r0, 0 + beq _0803B1FC + movs r0, 0x80 + lsls r0, 18 + ands r0, r1 + cmp r0, 0 + beq _0803B1FC + movs r5, 0x2 + cmp r1, 0 + bge _0803B1FE +_0803B1FC: + movs r5, 0x3 +_0803B1FE: + ldr r1, =gActiveBank + movs r0, 0 + strb r0, [r1] + ldr r0, =gNoOfAllBanks + ldrb r0, [r0] + cmp r0, 0 + beq _0803B23A + adds r4, r1, 0 +_0803B20E: + ldrb r0, [r4] + bl GetBankIdentity + lsls r0, 24 + lsrs r0, 24 + cmp r0, r5 + bne _0803B228 + movs r0, 0 + bl dp01_build_cmdbuf_x2F_2F_2F_2F + ldrb r0, [r4] + bl dp01_battle_side_mark_buffer_for_execution +_0803B228: + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + ldr r1, =gNoOfAllBanks + lsls r0, 24 + lsrs r0, 24 + ldrb r1, [r1] + cmp r0, r1 + bcc _0803B20E +_0803B23A: + ldr r1, =gBattleMainFunc + ldr r0, =bc_801362C + str r0, [r1] + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end sub_803B1DC + + thumb_func_start sub_803B25C +sub_803B25C: @ 803B25C + push {r4-r6,lr} + ldr r0, =gBattleTypeFlags + ldr r2, [r0] + movs r0, 0x80 + lsls r0, 17 + ands r0, r2 + cmp r0, 0 + beq _0803B298 + movs r0, 0x80 + lsls r0, 18 + ands r0, r2 + cmp r0, 0 + beq _0803B298 + movs r1, 0x80 + lsls r1, 24 + ands r1, r2 + negs r0, r1 + orrs r0, r1 + lsrs r5, r0, 31 + b _0803B29A + .pool +_0803B288: + ldr r1, =gBattleMainFunc + ldr r0, =sub_803B1DC + b _0803B2F0 + .pool +_0803B298: + movs r5, 0x1 +_0803B29A: + ldr r0, =gBattleExecBuffer + ldr r2, [r0] + cmp r2, 0 + bne _0803B2F2 + ldr r0, =gActiveBank + strb r2, [r0] + ldr r1, =gNoOfAllBanks + adds r4, r0, 0 + ldrb r1, [r1] + cmp r2, r1 + bcs _0803B2EC + adds r6, r4, 0 +_0803B2B2: + ldrb r0, [r4] + bl GetBankIdentity + lsls r0, 24 + lsrs r0, 24 + cmp r0, r5 + bne _0803B2D8 + movs r0, 0 + bl dp01_build_cmdbuf_x2F_2F_2F_2F + ldrb r0, [r4] + bl dp01_battle_side_mark_buffer_for_execution + ldr r0, =gBattleTypeFlags + ldr r0, [r0] + ldr r1, =0x00008040 + ands r0, r1 + cmp r0, 0 + bne _0803B288 +_0803B2D8: + ldrb r0, [r6] + adds r0, 0x1 + strb r0, [r6] + ldr r1, =gNoOfAllBanks + lsls r0, 24 + lsrs r0, 24 + ldr r4, =gActiveBank + ldrb r1, [r1] + cmp r0, r1 + bcc _0803B2B2 +_0803B2EC: + ldr r1, =gBattleMainFunc + ldr r0, =bc_801362C +_0803B2F0: + str r0, [r1] +_0803B2F2: + pop {r4-r6} + pop {r0} + bx r0 + .pool + thumb_func_end sub_803B25C + + thumb_func_start bc_801362C +bc_801362C: @ 803B314 + push {r4-r7,lr} + ldr r0, =gBattleExecBuffer + ldr r1, [r0] + cmp r1, 0 + bne _0803B384 + ldr r2, =gActiveBank + strb r1, [r2] + ldr r0, =gNoOfAllBanks + ldrb r0, [r0] + cmp r1, r0 + bcs _0803B37E + adds r4, r2, 0 + ldr r6, =gBattleMons + movs r5, 0x58 + adds r7, r6, 0 + adds r7, 0x48 +_0803B334: + ldrb r0, [r4] + bl GetBankSide + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0803B36C + ldr r0, =gBattleTypeFlags + ldr r0, [r0] + ldr r1, =0x063f0902 + ands r0, r1 + cmp r0, 0 + bne _0803B36C + ldrb r0, [r4] + muls r0, r5 + adds r0, r6 + ldrh r0, [r0] + bl SpeciesToNationalPokedexNum + lsls r0, 16 + lsrs r0, 16 + ldrb r1, [r4] + muls r1, r5 + adds r1, r7 + ldr r2, [r1] + movs r1, 0x2 + bl SetPokedexFlag +_0803B36C: + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + ldr r1, =gNoOfAllBanks + lsls r0, 24 + lsrs r0, 24 + ldrb r1, [r1] + cmp r0, r1 + bcc _0803B334 +_0803B37E: + ldr r1, =gBattleMainFunc + ldr r0, =sub_803B3CC + str r0, [r1] +_0803B384: + pop {r4-r7} + pop {r0} + bx r0 + .pool + thumb_func_end bc_801362C + + thumb_func_start sub_803B3AC +sub_803B3AC: @ 803B3AC + push {lr} + ldr r0, =gBattleExecBuffer + ldr r0, [r0] + cmp r0, 0 + bne _0803B3BC + ldr r1, =gBattleMainFunc + ldr r0, =sub_803B3CC + str r0, [r1] +_0803B3BC: + pop {r0} + bx r0 + .pool + thumb_func_end sub_803B3AC + + thumb_func_start sub_803B3CC +sub_803B3CC: @ 803B3CC + push {lr} + ldr r0, =gBattleExecBuffer + ldr r0, [r0] + cmp r0, 0 + bne _0803B418 + ldr r1, =gBattleTypeFlags + ldr r2, [r1] + movs r0, 0x80 + lsls r0, 17 + ands r0, r2 + cmp r0, 0 + beq _0803B3F4 + movs r0, 0x80 + lsls r0, 18 + ands r0, r2 + cmp r0, 0 + beq _0803B3F4 + movs r3, 0x1 + cmp r2, 0 + bge _0803B3F6 +_0803B3F4: + movs r3, 0 +_0803B3F6: + ldr r0, [r1] + movs r1, 0x80 + ands r0, r1 + cmp r0, 0 + bne _0803B412 + adds r0, r3, 0 + bl GetBankByPlayerAI + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + movs r0, 0x1 + bl b_std_message +_0803B412: + ldr r1, =gBattleMainFunc + ldr r0, =sub_803B4C8 + str r0, [r1] +_0803B418: + pop {r0} + bx r0 + .pool + thumb_func_end sub_803B3CC + + thumb_func_start sub_803B42C +sub_803B42C: @ 803B42C + push {r4,r5,lr} + ldr r0, =gBattleTypeFlags + ldr r1, [r0] + movs r0, 0x80 + lsls r0, 17 + ands r0, r1 + cmp r0, 0 + beq _0803B44C + movs r0, 0x80 + lsls r0, 18 + ands r0, r1 + cmp r0, 0 + beq _0803B44C + movs r5, 0x3 + cmp r1, 0 + bge _0803B44E +_0803B44C: + movs r5, 0x2 +_0803B44E: + ldr r1, =gActiveBank + movs r0, 0 + strb r0, [r1] + ldr r0, =gNoOfAllBanks + ldrb r0, [r0] + cmp r0, 0 + beq _0803B48A + adds r4, r1, 0 +_0803B45E: + ldrb r0, [r4] + bl GetBankIdentity + lsls r0, 24 + lsrs r0, 24 + cmp r0, r5 + bne _0803B478 + movs r0, 0 + bl dp01_build_cmdbuf_x2F_2F_2F_2F + ldrb r0, [r4] + bl dp01_battle_side_mark_buffer_for_execution +_0803B478: + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + ldr r1, =gNoOfAllBanks + lsls r0, 24 + lsrs r0, 24 + ldrb r1, [r1] + cmp r0, r1 + bcc _0803B45E +_0803B48A: + ldr r2, =gBattleStruct + ldr r0, [r2] + adds r0, 0x4C + movs r1, 0 + strb r1, [r0] + ldr r0, [r2] + adds r0, 0xD9 + strb r1, [r0] + ldr r0, [r2] + movs r2, 0xD1 + lsls r2, 1 + adds r0, r2 + strb r1, [r0] + ldr r1, =gBattleMainFunc + ldr r0, =sub_803B628 + str r0, [r1] + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end sub_803B42C + + thumb_func_start sub_803B4C8 +sub_803B4C8: @ 803B4C8 + push {r4-r6,lr} + ldr r0, =gBattleTypeFlags + ldr r1, [r0] + movs r0, 0x80 + lsls r0, 17 + ands r0, r1 + cmp r0, 0 + beq _0803B500 + movs r0, 0x80 + lsls r0, 18 + ands r0, r1 + cmp r0, 0 + beq _0803B500 + movs r6, 0x1 + cmp r1, 0 + bge _0803B502 + b _0803B500 + .pool +_0803B4F0: + ldr r1, =gBattleMainFunc + ldr r0, =sub_803B42C + b _0803B572 + .pool +_0803B500: + movs r6, 0 +_0803B502: + ldr r0, =gBattleExecBuffer + ldr r2, [r0] + cmp r2, 0 + bne _0803B574 + ldr r0, =gActiveBank + strb r2, [r0] + ldr r1, =gNoOfAllBanks + adds r4, r0, 0 + ldrb r1, [r1] + cmp r2, r1 + bcs _0803B554 + adds r5, r4, 0 +_0803B51A: + ldrb r0, [r4] + bl GetBankIdentity + lsls r0, 24 + lsrs r0, 24 + cmp r0, r6 + bne _0803B540 + movs r0, 0 + bl dp01_build_cmdbuf_x2F_2F_2F_2F + ldrb r0, [r4] + bl dp01_battle_side_mark_buffer_for_execution + ldr r0, =gBattleTypeFlags + ldr r0, [r0] + movs r1, 0x40 + ands r0, r1 + cmp r0, 0 + bne _0803B4F0 +_0803B540: + ldrb r0, [r5] + adds r0, 0x1 + strb r0, [r5] + ldr r1, =gNoOfAllBanks + lsls r0, 24 + lsrs r0, 24 + ldr r4, =gActiveBank + ldrb r1, [r1] + cmp r0, r1 + bcc _0803B51A +_0803B554: + ldr r2, =gBattleStruct + ldr r0, [r2] + adds r0, 0x4C + movs r1, 0 + strb r1, [r0] + ldr r0, [r2] + adds r0, 0xD9 + strb r1, [r0] + ldr r0, [r2] + movs r2, 0xD1 + lsls r2, 1 + adds r0, r2 + strb r1, [r0] + ldr r1, =gBattleMainFunc + ldr r0, =sub_803B628 +_0803B572: + str r0, [r1] +_0803B574: + pop {r4-r6} + pop {r0} + bx r0 + .pool + thumb_func_end sub_803B4C8 + + thumb_func_start sub_803B598 +sub_803B598: @ 803B598 + push {r4,r5,lr} + ldr r0, =gBattleExecBuffer + ldr r1, [r0] + cmp r1, 0 + bne _0803B606 + ldr r2, =gActiveBank + strb r1, [r2] + ldr r0, =gNoOfAllBanks + ldrb r0, [r0] + cmp r1, r0 + bcs _0803B5E6 + adds r4, r2, 0 + ldr r5, =gBattlePartyID +_0803B5B2: + ldrb r0, [r4] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + bne _0803B5D4 + ldrb r0, [r4] + lsls r0, 1 + adds r0, r5 + ldrb r1, [r0] + movs r0, 0 + movs r2, 0 + bl dp01_build_cmdbuf_x05_a_b_c + ldrb r0, [r4] + bl dp01_battle_side_mark_buffer_for_execution +_0803B5D4: + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + ldr r1, =gNoOfAllBanks + lsls r0, 24 + lsrs r0, 24 + ldrb r1, [r1] + cmp r0, r1 + bcc _0803B5B2 +_0803B5E6: + ldr r2, =gBattleStruct + ldr r0, [r2] + adds r0, 0x4C + movs r1, 0 + strb r1, [r0] + ldr r0, [r2] + adds r0, 0xD9 + strb r1, [r0] + ldr r0, [r2] + movs r2, 0xD1 + lsls r2, 1 + adds r0, r2 + strb r1, [r0] + ldr r1, =gBattleMainFunc + ldr r0, =sub_803B628 + str r0, [r1] +_0803B606: + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end sub_803B598 + + thumb_func_start sub_803B628 +sub_803B628: @ 803B628 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + movs r0, 0 + mov r9, r0 + ldr r0, =gBattleExecBuffer + ldr r0, [r0] + cmp r0, 0 + beq _0803B642 + b _0803B8B2 +_0803B642: + ldr r0, =gBattleStruct + ldr r0, [r0] + adds r0, 0x4C + ldrb r0, [r0] + cmp r0, 0 + bne _0803B6C2 + movs r5, 0 + ldr r1, =gNoOfAllBanks + mov r10, r1 + ldrb r3, [r1] + cmp r5, r3 + bge _0803B668 + ldr r2, =gTurnOrder +_0803B65C: + adds r0, r5, r2 + strb r5, [r0] + adds r5, 0x1 + ldrb r0, [r1] + cmp r5, r0 + blt _0803B65C +_0803B668: + movs r5, 0 + b _0803B6B8 + .pool +_0803B67C: + adds r4, r5, 0x1 + mov r8, r4 + ldrb r1, [r1] + cmp r8, r1 + bge _0803B6B6 + ldr r6, =gTurnOrder + ldr r1, =gNoOfAllBanks + mov r10, r1 + lsls r7, r5, 24 +_0803B68E: + adds r0, r5, r6 + ldrb r0, [r0] + adds r1, r4, r6 + ldrb r1, [r1] + movs r2, 0x1 + bl b_first_side + lsls r0, 24 + cmp r0, 0 + beq _0803B6AC + lsls r1, r4, 24 + lsrs r1, 24 + lsrs r0, r7, 24 + bl sub_803CEDC +_0803B6AC: + adds r4, 0x1 + ldr r0, =gNoOfAllBanks + ldrb r0, [r0] + cmp r4, r0 + blt _0803B68E +_0803B6B6: + mov r5, r8 +_0803B6B8: + mov r1, r10 + ldrb r0, [r1] + subs r0, 0x1 + cmp r5, r0 + blt _0803B67C +_0803B6C2: + ldr r5, =gBattleStruct + ldr r0, [r5] + movs r4, 0xD1 + lsls r4, 1 + adds r0, r4 + ldrb r0, [r0] + cmp r0, 0 + bne _0803B6FC + str r0, [sp] + movs r0, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0xFF + bl AbilityBattleEffects + lsls r0, 24 + cmp r0, 0 + beq _0803B6FC + ldr r0, [r5] + adds r0, r4 + movs r1, 0x1 + strb r1, [r0] + b _0803B8B2 + .pool +_0803B6FC: + ldr r2, =gBattleStruct + ldr r0, [r2] + adds r0, 0x4C + ldr r1, =gNoOfAllBanks + ldrb r0, [r0] + ldrb r1, [r1] + cmp r0, r1 + bcs _0803B756 + ldr r5, =gTurnOrder + adds r4, r2, 0 +_0803B710: + ldr r0, [r4] + adds r0, 0x4C + ldrb r0, [r0] + adds r0, r5 + ldrb r1, [r0] + movs r0, 0 + str r0, [sp] + movs r2, 0 + movs r3, 0 + bl AbilityBattleEffects + lsls r0, 24 + cmp r0, 0 + beq _0803B736 + mov r0, r9 + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 +_0803B736: + ldr r1, [r4] + adds r1, 0x4C + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + mov r3, r9 + cmp r3, 0 + beq _0803B748 + b _0803B8B2 +_0803B748: + ldr r0, [r4] + adds r0, 0x4C + ldr r1, =gNoOfAllBanks + ldrb r0, [r0] + ldrb r1, [r1] + cmp r0, r1 + bcc _0803B710 +_0803B756: + movs r0, 0 + str r0, [sp] + movs r0, 0x9 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl AbilityBattleEffects + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + beq _0803B770 + b _0803B8B2 +_0803B770: + str r0, [sp] + movs r0, 0xB + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl AbilityBattleEffects + lsls r0, 24 + cmp r0, 0 + beq _0803B786 + b _0803B8B2 +_0803B786: + ldr r2, =gBattleStruct + ldr r0, [r2] + adds r0, 0xD9 + ldr r1, =gNoOfAllBanks + ldrb r0, [r0] + ldrb r1, [r1] + cmp r0, r1 + bcs _0803B7DA + ldr r5, =gTurnOrder + adds r4, r2, 0 +_0803B79A: + ldr r0, [r4] + adds r0, 0xD9 + ldrb r0, [r0] + adds r0, r5 + ldrb r1, [r0] + movs r0, 0 + movs r2, 0 + bl berry_effects_maybe + lsls r0, 24 + cmp r0, 0 + beq _0803B7BC + mov r0, r9 + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 +_0803B7BC: + ldr r1, [r4] + adds r1, 0xD9 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + mov r0, r9 + cmp r0, 0 + bne _0803B8B2 + ldr r0, [r4] + adds r0, 0xD9 + ldr r1, =gNoOfAllBanks + ldrb r0, [r0] + ldrb r1, [r1] + cmp r0, r1 + bcc _0803B79A +_0803B7DA: + movs r5, 0 + ldr r1, =gBattleStruct + mov r8, r1 + movs r7, 0x6 + ldr r6, =gUnknown_0202421C + ldr r2, =gUnknown_02024274 + movs r4, 0xFF + movs r3, 0 +_0803B7EA: + mov r1, r8 + ldr r0, [r1] + adds r0, r5, r0 + adds r0, 0x5C + strb r7, [r0] + adds r1, r5, r6 + ldrb r0, [r1] + orrs r0, r4 + strb r0, [r1] + strh r3, [r2] + adds r2, 0x2 + adds r5, 0x1 + cmp r5, 0x3 + ble _0803B7EA + movs r0, 0 + bl sub_803D580 + bl sub_803D6A0 + ldr r0, =gBattleStruct + ldr r0, [r0] + adds r0, 0x91 + ldr r1, =gAbsentBankFlags + ldrb r1, [r1] + strb r1, [r0] + ldr r0, =gUnknown_085CC23E + movs r1, 0 + bl battle_show_message_maybe + ldr r1, =gBattleMainFunc + ldr r0, =sub_803BE74 + str r0, [r1] + bl sub_803F988 + ldr r1, =gBattleCommunication + movs r2, 0 + adds r0, r1, 0x7 +_0803B834: + strb r2, [r0] + subs r0, 0x1 + cmp r0, r1 + bge _0803B834 + movs r5, 0 + ldr r3, =gNoOfAllBanks + ldr r2, =gBattleStruct + ldr r6, =gBattleScripting + ldr r7, =gBattleMoveFlags + ldrb r0, [r3] + cmp r5, r0 + bge _0803B866 + ldr r0, =gBattleMons + movs r4, 0x9 + negs r4, r4 + adds r1, r0, 0 + adds r1, 0x50 +_0803B856: + ldr r0, [r1] + ands r0, r4 + str r0, [r1] + adds r1, 0x58 + adds r5, 0x1 + ldrb r0, [r3] + cmp r5, r0 + blt _0803B856 +_0803B866: + ldr r0, [r2] + movs r1, 0 + strb r1, [r0] + ldr r0, [r2] + strb r1, [r0, 0x1] + ldr r0, [r2] + movs r3, 0xD0 + lsls r3, 1 + adds r0, r3 + strb r1, [r0] + ldr r0, [r2] + adds r3, 0x1 + adds r0, r3 + strb r1, [r0] + movs r1, 0 + strb r1, [r6, 0x14] + ldr r0, [r2] + adds r0, 0x4D + strb r1, [r0] + ldr r0, [r2] + strb r1, [r0, 0x3] + strb r1, [r7] + bl Random + ldr r1, =gUnknown_02024330 + strh r0, [r1] + ldr r0, =gBattleTypeFlags + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 11 + ands r0, r1 + cmp r0, 0 + beq _0803B8B2 + bl StopCryAndClearCrySongs + ldr r0, =gUnknown_082DB8BE + bl b_call_bc_move_exec +_0803B8B2: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .pool + thumb_func_end sub_803B628 + + thumb_func_start bc_8013B1C +bc_8013B1C: @ 803B904 + push {r4-r6,lr} + ldr r0, =gBattleExecBuffer + ldr r0, [r0] + cmp r0, 0 + bne _0803B994 + ldr r1, =gBattleMainFunc + ldr r0, =sub_803B9BC + str r0, [r1] + ldr r3, =gNoOfAllBanks + ldr r1, =gBattleCommunication + movs r2, 0 + adds r0, r1, 0x7 +_0803B91C: + strb r2, [r0] + subs r0, 0x1 + cmp r0, r1 + bge _0803B91C + movs r4, 0 + ldrb r3, [r3] + cmp r4, r3 + bge _0803B96E + ldr r5, =gBattleMons + adds r6, r5, 0 + adds r6, 0x4C +_0803B932: + movs r0, 0x58 + adds r2, r4, 0 + muls r2, r0 + adds r1, r5, 0 + adds r1, 0x50 + adds r1, r2, r1 + ldr r3, [r1] + subs r0, 0x61 + ands r3, r0 + str r3, [r1] + adds r2, r6 + ldr r0, [r2] + movs r1, 0x7 + ands r0, r1 + cmp r0, 0 + beq _0803B964 + movs r0, 0x80 + lsls r0, 5 + ands r3, r0 + cmp r3, 0 + beq _0803B964 + lsls r0, r4, 24 + lsrs r0, 24 + bl CancelMultiTurnMoves +_0803B964: + adds r4, 0x1 + ldr r0, =gNoOfAllBanks + ldrb r0, [r0] + cmp r4, r0 + blt _0803B932 +_0803B96E: + ldr r2, =gBattleStruct + ldr r0, [r2] + movs r1, 0 + strb r1, [r0] + ldr r0, [r2] + strb r1, [r0, 0x1] + ldr r0, [r2] + movs r3, 0xD0 + lsls r3, 1 + adds r0, r3 + strb r1, [r0] + ldr r0, [r2] + adds r3, 0x1 + adds r0, r3 + strb r1, [r0] + ldr r0, [r2] + strb r1, [r0, 0x3] + ldr r0, =gBattleMoveFlags + strb r1, [r0] +_0803B994: + pop {r4-r6} + pop {r0} + bx r0 + .pool + thumb_func_end bc_8013B1C + + thumb_func_start sub_803B9BC +sub_803B9BC: @ 803B9BC + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + movs r0, 0x1 + bl sub_803D580 + ldr r0, =gBattleOutcome + ldrb r0, [r0] + cmp r0, 0 + bne _0803B9EA + bl sub_80401D0 + lsls r0, 24 + cmp r0, 0 + beq _0803B9DE + b _0803BB78 +_0803B9DE: + bl sub_8040924 + lsls r0, 24 + cmp r0, 0 + beq _0803B9EA + b _0803BB78 +_0803B9EA: + bl sub_8041728 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + beq _0803B9F8 + b _0803BB78 +_0803B9F8: + ldr r0, =gBattleStruct + ldr r0, [r0] + adds r0, 0x4D + strb r1, [r0] + bl sub_8041364 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + beq _0803BA0E + b _0803BB78 +_0803BA0E: + movs r0, 0 + bl sub_803D580 + ldr r2, =gHitMarker + ldr r0, [r2] + ldr r1, =0xfffffdff + ands r0, r1 + ldr r1, =0xfff7ffff + ands r0, r1 + ldr r1, =0xffbfffff + ands r0, r1 + ldr r1, =0xffefffff + ands r0, r1 + str r0, [r2] + ldr r0, =gBattleScripting + strb r4, [r0, 0x18] + strb r4, [r0, 0x19] + strb r4, [r0, 0x14] + ldr r0, =gBattleMoveDamage + str r4, [r0] + ldr r0, =gBattleMoveFlags + strb r4, [r0] + ldr r1, =gBattleCommunication + movs r2, 0 + adds r0, r1, 0x4 +_0803BA40: + strb r2, [r0] + subs r0, 0x1 + cmp r0, r1 + bge _0803BA40 + ldr r0, =gBattleOutcome + ldrb r0, [r0] + cmp r0, 0 + beq _0803BA98 + ldr r1, =gFightStateTracker + movs r0, 0xC + strb r0, [r1] + ldr r1, =gBattleMainFunc + ldr r0, =bc_bs_exec + str r0, [r1] + b _0803BB78 + .pool +_0803BA98: + ldr r1, =gBattleResults + ldrb r0, [r1, 0x13] + ldr r2, =gBattleStruct + mov r8, r2 + cmp r0, 0xFE + bhi _0803BAB2 + adds r0, 0x1 + strb r0, [r1, 0x13] + ldr r1, [r2] + adds r1, 0xDA + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] +_0803BAB2: + movs r2, 0 + ldr r4, =gNoOfAllBanks + ldr r0, =gAbsentBankFlags + mov r12, r0 + ldr r1, =gUnknown_085CC23E + mov r9, r1 + ldrb r0, [r4] + cmp r2, r0 + bge _0803BAE0 + ldr r7, =gUnknown_0202421C + movs r6, 0xFF + movs r5, 0 + ldr r3, =gUnknown_02024274 +_0803BACC: + adds r1, r2, r7 + ldrb r0, [r1] + orrs r0, r6 + strb r0, [r1] + strh r5, [r3] + adds r3, 0x2 + adds r2, 0x1 + ldrb r1, [r4] + cmp r2, r1 + blt _0803BACC +_0803BAE0: + movs r2, 0 + ldr r3, =gBattleStruct + movs r1, 0x6 +_0803BAE6: + ldr r0, [r3] + adds r0, r2, r0 + adds r0, 0x5C + strb r1, [r0] + adds r2, 0x1 + cmp r2, 0x3 + ble _0803BAE6 + mov r2, r8 + ldr r0, [r2] + adds r0, 0x91 + mov r2, r12 + ldrb r1, [r2] + strb r1, [r0] + mov r0, r9 + movs r1, 0 + bl battle_show_message_maybe + ldr r1, =gBattleMainFunc + ldr r0, =sub_803BE74 + str r0, [r1] + bl Random + ldr r1, =gUnknown_02024330 + strh r0, [r1] + ldr r0, =gBattleTypeFlags + ldr r1, [r0] + movs r0, 0x80 + lsls r0, 10 + ands r0, r1 + cmp r0, 0 + beq _0803BB5C + ldr r0, =gUnknown_082DB881 + bl b_call_bc_move_exec + b _0803BB78 + .pool +_0803BB5C: + movs r0, 0x80 + lsls r0, 11 + ands r1, r0 + cmp r1, 0 + beq _0803BB78 + mov r1, r8 + ldr r0, [r1] + adds r0, 0xDA + ldrb r0, [r0] + cmp r0, 0 + bne _0803BB78 + ldr r0, =gUnknown_082DB8BE + bl b_call_bc_move_exec +_0803BB78: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .pool + thumb_func_end sub_803B9BC + + thumb_func_start sub_803BB88 +sub_803BB88: @ 803BB88 + push {r4-r7,lr} + sub sp, 0x4 + ldr r1, =gBattleMons + ldr r0, =gActiveBank + ldrb r2, [r0] + movs r0, 0x58 + muls r0, r2 + adds r1, r0, r1 + ldrh r0, [r1, 0x2E] + cmp r0, 0xAF + bne _0803BBB8 + ldr r1, =gEnigmaBerries + lsls r0, r2, 3 + subs r0, r2 + lsls r0, 2 + adds r0, r1 + ldrb r2, [r0, 0x7] + b _0803BBC2 + .pool +_0803BBB8: + ldrh r0, [r1, 0x2E] + bl ItemId_GetHoldEffect + lsls r0, 24 + lsrs r2, r0, 24 +_0803BBC2: + ldr r1, =gUnknown_0202420F + ldr r3, =gActiveBank + ldrb r0, [r3] + strb r0, [r1] + cmp r2, 0x25 + bne _0803BBD0 + b _0803BD4C +_0803BBD0: + ldr r0, =gBattleTypeFlags + ldr r0, [r0] + movs r1, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0803BBDE + b _0803BD4C +_0803BBDE: + ldr r1, =gBattleMons + ldrb r2, [r3] + movs r0, 0x58 + muls r0, r2 + adds r0, r1 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0x32 + bne _0803BBF2 + b _0803BD4C +_0803BBF2: + adds r0, r2, 0 + bl GetBankSide + lsls r0, 24 + lsrs r6, r0, 24 + movs r5, 0 + ldr r0, =gNoOfAllBanks + ldrb r0, [r0] + cmp r5, r0 + bge _0803BC86 + movs r7, 0 +_0803BC08: + lsrs r4, r7, 24 + adds r0, r4, 0 + bl GetBankSide + lsls r0, 24 + lsrs r0, 24 + cmp r6, r0 + beq _0803BC2C + ldr r1, =gBattleMons + movs r0, 0x58 + muls r0, r5 + adds r0, r1 + adds r2, r0, 0 + adds r2, 0x20 + ldrb r0, [r2] + cmp r0, 0x17 + bne _0803BC2C + b _0803BD54 +_0803BC2C: + adds r0, r4, 0 + bl GetBankSide + lsls r0, 24 + lsrs r0, 24 + cmp r6, r0 + beq _0803BC76 + ldr r3, =gBattleMons + ldr r0, =gActiveBank + ldrb r0, [r0] + movs r2, 0x58 + muls r0, r2 + adds r1, r0, r3 + adds r0, r1, 0 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0x1A + beq _0803BC76 + adds r0, r1, 0 + adds r0, 0x21 + ldrb r0, [r0] + cmp r0, 0x2 + beq _0803BC76 + adds r0, r1, 0 + adds r0, 0x22 + ldrb r0, [r0] + cmp r0, 0x2 + beq _0803BC76 + adds r0, r5, 0 + muls r0, r2 + adds r0, r3 + adds r2, r0, 0 + adds r2, 0x20 + ldrb r0, [r2] + cmp r0, 0x47 + bne _0803BC76 + b _0803BD70 +_0803BC76: + movs r0, 0x80 + lsls r0, 17 + adds r7, r0 + adds r5, 0x1 + ldr r0, =gNoOfAllBanks + ldrb r0, [r0] + cmp r5, r0 + blt _0803BC08 +_0803BC86: + ldr r4, =gActiveBank + ldrb r1, [r4] + movs r0, 0 + str r0, [sp] + movs r0, 0xF + movs r2, 0x2A + movs r3, 0 + bl AbilityBattleEffects + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0 + beq _0803BCF8 + ldr r6, =gBattleMons + ldrb r0, [r4] + movs r3, 0x58 + muls r0, r3 + adds r1, r0, r6 + adds r0, r1, 0 + adds r0, 0x21 + ldrb r0, [r0] + cmp r0, 0x8 + beq _0803BCBE + adds r0, r1, 0 + adds r0, 0x22 + ldrb r0, [r0] + cmp r0, 0x8 + bne _0803BCF8 +_0803BCBE: + ldr r0, =gBattleScripting + subs r1, r5, 0x1 + strb r1, [r0, 0x17] + ldr r2, =gLastUsedAbility + adds r0, r1, 0 + muls r0, r3 + adds r0, r6 + adds r0, 0x20 + ldrb r0, [r0] + strb r0, [r2] + ldr r1, =gBattleCommunication + movs r0, 0x2 + b _0803BD90 + .pool +_0803BCF8: + ldr r1, =gBattleMons + ldr r0, =gActiveBank + ldrb r2, [r0] + movs r0, 0x58 + muls r0, r2 + adds r1, 0x50 + adds r0, r1 + ldr r0, [r0] + ldr r1, =0x0400e000 + ands r0, r1 + cmp r0, 0 + bne _0803BD22 + ldr r1, =gStatuses3 + lsls r0, r2, 2 + adds r0, r1 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 3 + ands r0, r1 + cmp r0, 0 + beq _0803BD40 +_0803BD22: + ldr r1, =gBattleCommunication + movs r0, 0 + strb r0, [r1, 0x5] + movs r0, 0x1 + b _0803BD92 + .pool +_0803BD40: + ldr r0, =gBattleTypeFlags + ldr r0, [r0] + movs r1, 0x10 + ands r0, r1 + cmp r0, 0 + bne _0803BD8C +_0803BD4C: + movs r0, 0 + b _0803BD92 + .pool +_0803BD54: + ldr r0, =gBattleScripting + strb r5, [r0, 0x17] + ldr r1, =gLastUsedAbility + ldrb r0, [r2] + strb r0, [r1] + ldr r1, =gBattleCommunication + movs r0, 0x2 + b _0803BD90 + .pool +_0803BD70: + ldr r0, =gBattleScripting + strb r5, [r0, 0x17] + ldr r1, =gLastUsedAbility + ldrb r0, [r2] + strb r0, [r1] + ldr r1, =gBattleCommunication + movs r0, 0x2 + b _0803BD90 + .pool +_0803BD8C: + ldr r1, =gBattleCommunication + movs r0, 0x1 +_0803BD90: + strb r0, [r1, 0x5] +_0803BD92: + add sp, 0x4 + pop {r4-r7} + pop {r1} + bx r1 + .pool + thumb_func_end sub_803BB88 + + thumb_func_start sub_803BDA0 +sub_803BDA0: @ 803BDA0 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r5, r0, 24 + movs r3, 0 + ldr r0, =gBattlePartyID + mov r8, r0 + ldr r1, =gUnknown_0203CF00 + mov r12, r1 + ldr r7, =gBattleStruct + lsls r0, r5, 1 + adds r4, r0, r5 + adds r6, r0, 0 +_0803BDBC: + mov r0, r12 + adds r2, r3, r0 + ldr r1, [r7] + adds r0, r4, r3 + adds r0, r1 + adds r0, 0x60 + ldrb r0, [r0] + strb r0, [r2] + adds r3, 0x1 + cmp r3, 0x2 + ble _0803BDBC + mov r1, r8 + adds r0, r6, r1 + ldrb r0, [r0] + bl pokemon_order_func + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r7, =gBattleStruct + ldr r0, [r7] + adds r0, r5, r0 + adds r0, 0x5C + ldrb r0, [r0] + bl pokemon_order_func + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_81B8FB0 + ldr r0, =gBattleTypeFlags + ldr r0, [r0] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0803BE4C + movs r3, 0 + adds r4, r7, 0 + adds r6, r5 + movs r0, 0x2 + adds r1, r5, 0 + eors r1, r0 + ldr r7, =gUnknown_0203CF00 + lsls r0, r1, 1 + adds r5, r0, r1 +_0803BE1A: + ldr r0, [r4] + adds r1, r6, r3 + adds r1, r0 + adds r1, 0x60 + adds r2, r3, r7 + ldrb r0, [r2] + strb r0, [r1] + ldr r1, [r4] + adds r0, r5, r3 + adds r0, r1 + adds r0, 0x60 + ldrb r1, [r2] + strb r1, [r0] + adds r3, 0x1 + cmp r3, 0x2 + ble _0803BE1A + b _0803BE66 + .pool +_0803BE4C: + movs r3, 0 + adds r2, r6, r5 + ldr r4, =gUnknown_0203CF00 +_0803BE52: + ldr r0, [r7] + adds r1, r2, r3 + adds r1, r0 + adds r1, 0x60 + adds r0, r3, r4 + ldrb r0, [r0] + strb r0, [r1] + adds r3, 0x1 + cmp r3, 0x2 + ble _0803BE52 +_0803BE66: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .pool + thumb_func_end sub_803BDA0 + + thumb_func_start sub_803BE74 +sub_803BE74: @ 803BE74 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x1C + ldr r0, =gBattleCommunication + movs r1, 0 + strb r1, [r0, 0x4] + ldr r0, =gActiveBank + strb r1, [r0] + ldr r0, =gNoOfAllBanks + bl _0803CD12 + .pool +_0803BE9C: + ldr r4, =gActiveBank + ldrb r0, [r4] + bl GetBankIdentity + lsls r0, 24 + lsrs r5, r0, 24 + ldr r1, =gBattleCommunication + ldrb r0, [r4] + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x8 + bls _0803BEB8 + bl _0803CD04 +_0803BEB8: + lsls r0, 2 + ldr r1, =_0803BED0 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .pool + .align 2, 0 +_0803BED0: + .4byte _0803BEF4 + .4byte _0803BF0C + .4byte _0803C02C + .4byte _0803C7D8 + .4byte _0803CAD0 + .4byte _0803CB84 + .4byte _0803CBC8 + .4byte _0803CBF4 + .4byte _0803CC38 +_0803BEF4: + bl sub_8185FD0 + ldr r1, =gBattleCommunication + ldr r0, =gActiveBank + ldrb r0, [r0] + adds r0, r1 + bl _0803CC20 + .pool +_0803BF0C: + ldr r0, =gActiveBank + ldrb r1, [r0] + ldr r4, =gBattleStruct + ldr r0, [r4] + adds r1, r0 + adds r1, 0x5C + movs r0, 0x6 + strb r0, [r1] + ldr r0, =gBattleTypeFlags + ldr r0, [r0] + movs r1, 0x40 + ands r0, r1 + cmp r0, 0 + bne _0803BF68 + movs r1, 0x2 + movs r0, 0x2 + ands r0, r5 + cmp r0, 0 + beq _0803BF68 + eors r5, r1 + adds r0, r5, 0 + bl GetBankByPlayerAI + ldr r1, [r4] + adds r1, 0x91 + ldrb r1, [r1] + ldr r2, =gBitTable + lsls r0, 24 + lsrs r0, 22 + adds r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, 0 + bne _0803BF68 + ldr r4, =gBattleCommunication + adds r0, r5, 0 + bl GetBankByPlayerAI + lsls r0, 24 + lsrs r0, 24 + adds r0, r4 + ldrb r0, [r0] + cmp r0, 0x5 + beq _0803BF68 + bl _0803CD04 +_0803BF68: + ldr r0, =gBattleStruct + ldr r0, [r0] + adds r0, 0x91 + ldrb r3, [r0] + ldr r1, =gBitTable + ldr r4, =gActiveBank + ldrb r2, [r4] + lsls r0, r2, 2 + adds r0, r1 + ldr r0, [r0] + ands r3, r0 + cmp r3, 0 + beq _0803BFD0 + ldr r0, =gUnknown_0202421C + adds r0, r2, r0 + movs r1, 0xD + strb r1, [r0] + ldr r0, =gBattleTypeFlags + ldr r0, [r0] + movs r1, 0x40 + ands r0, r1 + cmp r0, 0 + bne _0803BFBC + ldr r0, =gBattleCommunication + ldrb r1, [r4] + adds r1, r0 + movs r0, 0x5 + strb r0, [r1] + bl _0803CD04 + .pool +_0803BFBC: + ldr r0, =gBattleCommunication + ldrb r1, [r4] + adds r1, r0 + movs r0, 0x4 + strb r0, [r1] + bl _0803CD04 + .pool +_0803BFD0: + ldr r1, =gBattleMons + movs r0, 0x58 + muls r0, r2 + adds r1, 0x50 + adds r0, r1 + ldr r1, [r0] + movs r0, 0x80 + lsls r0, 5 + ands r0, r1 + cmp r0, 0 + bne _0803BFF0 + movs r0, 0x80 + lsls r0, 15 + ands r1, r0 + cmp r1, 0 + beq _0803C00C +_0803BFF0: + ldr r0, =gUnknown_0202421C + adds r0, r2, r0 + strb r3, [r0] + ldr r1, =gBattleCommunication + ldrb r0, [r4] + bl _0803CC72 + .pool +_0803C00C: + ldr r0, =gUnknown_0202421C + ldrb r1, [r0] + ldr r0, =gBattleBufferB + ldrb r2, [r0, 0x1] + ldrb r0, [r0, 0x2] + lsls r0, 8 + orrs r2, r0 + movs r0, 0 + bl dp01_build_cmdbuf_x12_a_bb + bl _0803CB68 + .pool +_0803C02C: + ldr r3, =gBattleExecBuffer + ldr r1, =gBitTable + ldr r6, =gActiveBank + ldrb r5, [r6] + lsls r0, r5, 2 + adds r0, r1 + ldr r2, [r0] + lsls r1, r2, 4 + movs r0, 0xF0 + lsls r0, 24 + orrs r1, r0 + orrs r1, r2 + lsls r0, r2, 8 + orrs r1, r0 + lsls r2, 12 + orrs r1, r2 + ldr r0, [r3] + ands r0, r1 + cmp r0, 0 + beq _0803C058 + bl _0803CD04 +_0803C058: + ldr r4, =gBattleBufferB + lsls r0, r5, 9 + adds r4, 0x1 + adds r0, r4 + ldrb r1, [r0] + adds r0, r5, 0 + bl sub_8184FBC + ldr r1, =gUnknown_0202421C + ldrb r0, [r6] + adds r1, r0, r1 + lsls r0, 9 + adds r0, r4 + ldrb r0, [r0] + strb r0, [r1] + ldrb r0, [r6] + lsls r0, 9 + adds r0, r4 + ldrb r0, [r0] + cmp r0, 0xC + bls _0803C084 + b _0803C6C4 +_0803C084: + lsls r0, 2 + ldr r1, =_0803C0A8 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .pool + .align 2, 0 +_0803C0A8: + .4byte _0803C0DC + .4byte _0803C230 + .4byte _0803C268 + .4byte _0803C6C4 + .4byte _0803C6C4 + .4byte _0803C440 + .4byte _0803C48C + .4byte _0803C6C4 + .4byte _0803C6C4 + .4byte _0803C6C4 + .4byte _0803C6C4 + .4byte _0803C6C4 + .4byte _0803C4B4 +_0803C0DC: + bl sub_80400C8 + lsls r0, 24 + cmp r0, 0 + beq _0803C134 + ldr r0, =gBattleCommunication + ldr r3, =gActiveBank + ldrb r1, [r3] + adds r1, r0 + movs r4, 0 + movs r0, 0x6 + strb r0, [r1] + ldrb r1, [r3] + ldr r2, =gBattleStruct + ldr r0, [r2] + adds r1, r0 + adds r1, 0x54 + strb r4, [r1] + ldrb r1, [r3] + ldr r0, [r2] + adds r1, r0 + adds r1, 0x84 + movs r0, 0x4 + strb r0, [r1] + ldrb r1, [r3] + ldr r2, [r2] + adds r2, r1, r2 + ldr r0, =gBattleBufferB + lsls r1, 9 + adds r0, 0x3 + adds r1, r0 + ldrb r0, [r1] + strb r0, [r2, 0xC] + bl _0803CD70 + .pool +_0803C134: + ldr r3, =gDisableStructs + ldr r5, =gActiveBank + ldrb r4, [r5] + lsls r0, r4, 3 + subs r0, r4 + lsls r0, 2 + adds r0, r3 + ldrh r2, [r0, 0x6] + cmp r2, 0 + beq _0803C188 + ldr r1, =gUnknown_02024274 + lsls r0, r4, 1 + adds r0, r1 + strh r2, [r0] + ldrb r2, [r5] + ldr r0, =gBattleStruct + ldr r1, [r0] + adds r1, r2, r1 + adds r1, 0x80 + lsls r0, r2, 3 + subs r0, r2 + lsls r0, 2 + adds r0, r3 + ldrb r0, [r0, 0xC] + strb r0, [r1] + ldr r1, =gBattleCommunication + ldrb r0, [r5] + adds r0, r1 + movs r1, 0x4 + strb r1, [r0] + bl _0803CD70 + .pool +_0803C188: + add r2, sp, 0x4 + ldr r3, =gBattleMons + movs r1, 0x58 + adds r0, r4, 0 + muls r0, r1 + adds r0, r3 + ldrh r0, [r0] + strh r0, [r2, 0x10] + ldrb r0, [r5] + muls r0, r1 + adds r0, r3 + adds r0, 0x21 + ldrb r0, [r0] + strb r0, [r2, 0x12] + ldrb r0, [r5] + muls r0, r1 + adds r0, r3 + adds r0, 0x22 + ldrb r0, [r0] + strb r0, [r2, 0x13] + movs r4, 0 + mov r1, sp + adds r1, 0xC + str r1, [sp, 0x18] + add r2, sp, 0x10 + mov r10, r2 + mov r8, r3 + adds r7, r5, 0 + movs r6, 0x58 + movs r0, 0xC + add r0, r8 + mov r9, r0 + add r5, sp, 0x4 +_0803C1CA: + lsls r2, r4, 1 + ldrb r0, [r7] + muls r0, r6 + adds r0, r2, r0 + add r0, r9 + ldrh r0, [r0] + strh r0, [r5] + ldr r1, [sp, 0x18] + adds r3, r1, r4 + ldrb r0, [r7] + muls r0, r6 + adds r0, r4, r0 + mov r1, r8 + adds r1, 0x24 + adds r0, r1 + ldrb r0, [r0] + strb r0, [r3] + ldrb r0, [r7] + adds r1, r0, 0 + muls r1, r6 + adds r2, r1 + add r2, r9 + ldrh r0, [r2] + add r1, r8 + adds r1, 0x3B + ldrb r1, [r1] + lsls r2, r4, 24 + lsrs r2, 24 + bl CalculatePPWithBonus + mov r2, r10 + adds r1, r2, r4 + strb r0, [r1] + adds r5, 0x2 + adds r4, 0x1 + cmp r4, 0x3 + ble _0803C1CA + ldr r0, =gBattleTypeFlags + ldr r1, [r0] + movs r0, 0x1 + ands r1, r0 + movs r0, 0 + movs r2, 0 + add r3, sp, 0x4 + bl sub_8033E30 + b _0803C42E + .pool +_0803C230: + ldr r0, =gBattleTypeFlags + ldr r0, [r0] + ldr r1, =0x021f0902 + ands r0, r1 + cmp r0, 0 + bne _0803C23E + b _0803C48C +_0803C23E: + ldr r4, =gActiveBank + ldrb r0, [r4] + movs r1, 0x1 + bl sub_8185008 + ldr r1, =gUnknown_02024220 + ldrb r0, [r4] + lsls r0, 2 + adds r0, r1 + ldr r1, =gUnknown_082DB879 + b _0803C784 + .pool +_0803C268: + ldr r5, =gActiveBank + ldrb r0, [r5] + ldr r3, =gBattleStruct + ldr r1, [r3] + adds r1, r0, r1 + adds r1, 0x58 + ldr r2, =gBattlePartyID + lsls r0, 1 + adds r0, r2 + ldrh r0, [r0] + strb r0, [r1] + ldr r7, =gBattleMons + ldrb r2, [r5] + movs r6, 0x58 + adds r0, r2, 0 + muls r0, r6 + adds r1, r7, 0 + adds r1, 0x50 + adds r0, r1 + ldr r1, [r0] + ldr r0, =0x0400e000 + ands r1, r0 + cmp r1, 0 + bne _0803C2B8 + ldr r0, =gBattleTypeFlags + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 11 + ands r0, r1 + cmp r0, 0 + bne _0803C2B8 + ldr r0, =gStatuses3 + lsls r1, r2, 2 + adds r1, r0 + ldr r1, [r1] + movs r0, 0x80 + lsls r0, 3 + ands r1, r0 + cmp r1, 0 + beq _0803C2EC +_0803C2B8: + ldr r0, =gActiveBank + ldrb r0, [r0] + lsls r1, r0, 1 + adds r1, r0 + adds r1, 0x60 + ldr r0, [r3] + adds r0, r1 + str r0, [sp] + movs r0, 0 + movs r1, 0x2 + movs r2, 0x6 + b _0803C400 + .pool +_0803C2EC: + str r1, [sp] + movs r0, 0xC + adds r1, r2, 0 + movs r2, 0x17 + movs r3, 0 + bl AbilityBattleEffects + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + bne _0803C374 + ldrb r1, [r5] + str r4, [sp] + movs r0, 0xC + movs r2, 0x47 + movs r3, 0 + bl AbilityBattleEffects + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + beq _0803C33C + ldrb r0, [r5] + muls r0, r6 + adds r1, r0, r7 + adds r0, r1, 0 + adds r0, 0x21 + ldrb r0, [r0] + cmp r0, 0x2 + beq _0803C33C + adds r0, r1, 0 + adds r0, 0x22 + ldrb r0, [r0] + cmp r0, 0x2 + beq _0803C33C + adds r0, r1, 0 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0x1A + bne _0803C374 +_0803C33C: + ldr r5, =gActiveBank + ldrb r1, [r5] + movs r0, 0 + str r0, [sp] + movs r0, 0xF + movs r2, 0x2A + movs r3, 0 + bl AbilityBattleEffects + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + beq _0803C3B0 + ldr r2, =gBattleMons + ldrb r1, [r5] + movs r0, 0x58 + muls r0, r1 + adds r1, r0, r2 + adds r0, r1, 0 + adds r0, 0x21 + ldrb r0, [r0] + cmp r0, 0x8 + beq _0803C374 + adds r0, r1, 0 + adds r0, 0x22 + ldrb r0, [r0] + cmp r0, 0x8 + bne _0803C3B0 +_0803C374: + subs r1, r4, 0x1 + lsls r1, 4 + movs r0, 0x4 + orrs r1, r0 + lsls r1, 24 + lsrs r1, 24 + ldr r0, =gLastUsedAbility + ldrb r3, [r0] + ldr r4, =gBattleStruct + ldr r0, =gActiveBank + ldrb r0, [r0] + lsls r2, r0, 1 + adds r2, r0 + adds r2, 0x60 + ldr r0, [r4] + adds r0, r2 + str r0, [sp] + movs r0, 0 + movs r2, 0x6 + bl dp01_build_cmdbuf_x16_a_b_c_ptr_d_e_f + b _0803C42E + .pool +_0803C3B0: + ldr r0, =gActiveBank + ldrb r1, [r0] + adds r4, r0, 0 + cmp r1, 0x2 + bne _0803C3D8 + ldr r0, =gUnknown_0202421C + ldrb r0, [r0] + cmp r0, 0x2 + bne _0803C3D8 + ldr r0, =gBattleStruct + ldr r3, [r0] + adds r0, r3, 0 + adds r0, 0x5C + b _0803C3EE + .pool +_0803C3D8: + ldrb r0, [r4] + cmp r0, 0x3 + bne _0803C410 + ldr r0, =gUnknown_0202421C + ldrb r0, [r0, 0x1] + cmp r0, 0x2 + bne _0803C410 + ldr r0, =gBattleStruct + ldr r3, [r0] + adds r0, r3, 0 + adds r0, 0x5D +_0803C3EE: + ldrb r2, [r0] + ldrb r1, [r4] + lsls r0, r1, 1 + adds r0, r1 + adds r0, 0x60 + adds r3, r0 + str r3, [sp] + movs r0, 0 + movs r1, 0 +_0803C400: + movs r3, 0 + bl dp01_build_cmdbuf_x16_a_b_c_ptr_d_e_f + b _0803C42E + .pool +_0803C410: + ldr r2, =gBattleStruct + ldr r0, =gActiveBank + ldrb r0, [r0] + lsls r1, r0, 1 + adds r1, r0 + adds r1, 0x60 + ldr r0, [r2] + adds r0, r1 + str r0, [sp] + movs r0, 0 + movs r1, 0 + movs r2, 0x6 + movs r3, 0 + bl dp01_build_cmdbuf_x16_a_b_c_ptr_d_e_f +_0803C42E: + ldr r0, =gActiveBank + ldrb r0, [r0] + bl dp01_battle_side_mark_buffer_for_execution + b _0803C6C4 + .pool +_0803C440: + bl PlayerPartyAndPokemonStorageFull + lsls r0, 24 + cmp r0, 0 + bne _0803C44C + b _0803C6C4 +_0803C44C: + ldr r1, =gUnknown_02024220 + ldr r3, =gActiveBank + ldrb r0, [r3] + lsls r0, 2 + adds r0, r1 + ldr r1, =gUnknown_082DAB11 + str r1, [r0] + ldr r0, =gBattleCommunication + ldrb r1, [r3] + adds r1, r0 + movs r4, 0 + movs r0, 0x6 + strb r0, [r1] + ldrb r1, [r3] + ldr r2, =gBattleStruct + ldr r0, [r2] + adds r1, r0 + adds r1, 0x54 + strb r4, [r1] + ldrb r1, [r3] + b _0803C7A0 + .pool +_0803C48C: + ldr r2, =gBattleStruct + ldr r4, =gActiveBank + ldrb r1, [r4] + lsls r0, r1, 1 + adds r0, r1 + adds r0, 0x60 + ldr r1, [r2] + adds r1, r0 + movs r0, 0 + bl sub_8033E6C + ldrb r0, [r4] + bl dp01_battle_side_mark_buffer_for_execution + b _0803C6C4 + .pool +_0803C4B4: + ldr r4, =gBattleCommunication + ldr r5, =gActiveBank + ldrb r0, [r5] + adds r0, r4 + movs r1, 0x7 + strb r1, [r0] + ldrb r0, [r5] + bl GetBankIdentity + movs r6, 0x2 + eors r0, r6 + lsls r0, 24 + lsrs r0, 24 + bl GetBankByPlayerAI + lsls r0, 24 + lsrs r0, 24 + adds r0, r4 + movs r1, 0x1 + strb r1, [r0] + ldrb r0, [r5] + bl sub_8185008 + ldrb r0, [r5] + bl GetBankIdentity + eors r0, r6 + lsls r0, 24 + lsrs r0, 24 + bl GetBankByPlayerAI + ldr r1, =gBattleMons + lsls r0, 24 + lsrs r0, 24 + movs r7, 0x58 + muls r0, r7 + adds r4, r1, 0 + adds r4, 0x50 + adds r0, r4 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 5 + ands r0, r1 + cmp r0, 0 + bne _0803C532 + ldrb r0, [r5] + bl GetBankIdentity + eors r0, r6 + lsls r0, 24 + lsrs r0, 24 + bl GetBankByPlayerAI + lsls r0, 24 + lsrs r0, 24 + muls r0, r7 + adds r0, r4 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 15 + ands r0, r1 + cmp r0, 0 + beq _0803C550 +_0803C532: + movs r0, 0 + bl dp01_build_cmdbuf_x32_32_32_32 + ldrb r0, [r5] + bl dp01_battle_side_mark_buffer_for_execution + bl _0803CD70 + .pool +_0803C550: + ldr r4, =gUnknown_0202421C + ldrb r0, [r5] + bl GetBankIdentity + eors r0, r6 + lsls r0, 24 + lsrs r0, 24 + bl GetBankByPlayerAI + lsls r0, 24 + lsrs r0, 24 + adds r0, r4 + ldrb r0, [r0] + cmp r0, 0x2 + bne _0803C590 + ldrb r0, [r5] + bl GetBankIdentity + eors r0, r6 + lsls r0, 24 + lsrs r0, 24 + bl GetBankByPlayerAI + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x2 + bl sub_8185008 + b _0803C6AE + .pool +_0803C590: + ldrb r0, [r5] + bl GetBankIdentity + eors r0, r6 + lsls r0, 24 + lsrs r0, 24 + bl GetBankByPlayerAI + lsls r0, 24 + lsrs r0, 24 + adds r0, r4 + ldrb r0, [r0] + cmp r0, 0x3 + bne _0803C5B6 + ldrb r0, [r5] + bl GetBankIdentity + eors r0, r6 + b _0803C668 +_0803C5B6: + ldrb r0, [r5] + bl GetBankIdentity + eors r0, r6 + lsls r0, 24 + lsrs r0, 24 + bl GetBankByPlayerAI + lsls r0, 24 + lsrs r0, 24 + adds r0, r4 + ldrb r0, [r0] + cmp r0, 0 + bne _0803C628 + ldr r4, =gProtectStructs + ldrb r0, [r5] + bl GetBankIdentity + eors r0, r6 + lsls r0, 24 + lsrs r0, 24 + bl GetBankByPlayerAI + lsls r0, 24 + lsrs r0, 20 + adds r0, r4 + ldrb r0, [r0] + lsls r0, 29 + cmp r0, 0 + blt _0803C616 + ldr r4, =gDisableStructs + ldrb r0, [r5] + bl GetBankIdentity + eors r0, r6 + lsls r0, 24 + lsrs r0, 24 + bl GetBankByPlayerAI + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + adds r1, r4 + ldrh r0, [r1, 0x6] + cmp r0, 0 + beq _0803C628 +_0803C616: + ldrb r0, [r5] + bl GetBankIdentity + eors r0, r6 + b _0803C668 + .pool +_0803C628: + ldr r0, =gBattleTypeFlags + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 10 + ands r0, r1 + cmp r0, 0 + beq _0803C690 + ldr r4, =gUnknown_0202421C + ldr r6, =gActiveBank + ldrb r0, [r6] + bl GetBankIdentity + movs r5, 0x2 + eors r0, r5 + lsls r0, 24 + lsrs r0, 24 + bl GetBankByPlayerAI + lsls r0, 24 + lsrs r0, 24 + adds r0, r4 + ldrb r0, [r0] + cmp r0, 0 + bne _0803C690 + ldr r1, =gRngValue + ldr r0, =gUnknown_0203BD30 + ldr r0, [r0] + str r0, [r1] + ldrb r0, [r6] + bl GetBankIdentity + eors r0, r5 +_0803C668: + lsls r0, 24 + lsrs r0, 24 + bl GetBankByPlayerAI + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x1 + bl sub_8185008 + b _0803C6AE + .pool +_0803C690: + ldr r0, =gActiveBank + ldrb r0, [r0] + bl GetBankIdentity + movs r1, 0x2 + eors r0, r1 + lsls r0, 24 + lsrs r0, 24 + bl GetBankByPlayerAI + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x3 + bl sub_8185008 +_0803C6AE: + movs r0, 0 + bl dp01_build_cmdbuf_x32_32_32_32 + ldr r0, =gActiveBank + ldrb r0, [r0] + bl dp01_battle_side_mark_buffer_for_execution + b _0803CD70 + .pool +_0803C6C4: + ldr r1, =gBattleTypeFlags + ldr r2, [r1] + movs r5, 0x8 + adds r0, r2, 0 + ands r0, r5 + adds r3, r1, 0 + cmp r0, 0 + beq _0803C720 + ldr r0, =0x043f0100 + ands r2, r0 + cmp r2, 0 + beq _0803C720 + ldr r0, =gBattleBufferB + ldr r4, =gActiveBank + ldrb r2, [r4] + lsls r1, r2, 9 + adds r0, 0x1 + adds r1, r0 + ldrb r0, [r1] + cmp r0, 0x3 + bne _0803C720 + ldr r1, =gUnknown_02024220 + lsls r0, r2, 2 + adds r0, r1 + ldr r1, =gUnknown_082DB9BA + str r1, [r0] + ldr r1, =gBattleCommunication + ldrb r0, [r4] + adds r0, r1 + movs r3, 0 + strb r5, [r0] + b _0803C792 + .pool +_0803C720: + ldr r0, [r3] + ldr r1, =0x0200000a + ands r0, r1 + cmp r0, 0x8 + bne _0803C760 + ldr r0, =gBattleBufferB + ldr r4, =gActiveBank + ldrb r1, [r4] + lsls r1, 9 + adds r0, 0x1 + adds r1, r0 + ldrb r0, [r1] + cmp r0, 0x3 + bne _0803C760 + ldr r0, =gUnknown_082DAAFE + bl b_call_bc_move_exec + ldr r1, =gBattleCommunication + ldrb r0, [r4] + adds r0, r1 + b _0803CC20 + .pool +_0803C760: + bl sub_803BB88 + lsls r0, 24 + cmp r0, 0 + beq _0803C7C4 + ldr r0, =gBattleBufferB + ldr r4, =gActiveBank + ldrb r2, [r4] + lsls r1, r2, 9 + adds r0, 0x1 + adds r1, r0 + ldrb r0, [r1] + cmp r0, 0x3 + bne _0803C7C4 + ldr r1, =gUnknown_02024220 + lsls r0, r2, 2 + adds r0, r1 + ldr r1, =gUnknown_082DAB0B +_0803C784: + str r1, [r0] + ldr r0, =gBattleCommunication + ldrb r1, [r4] + adds r1, r0 + movs r3, 0 + movs r0, 0x6 + strb r0, [r1] +_0803C792: + ldrb r1, [r4] + ldr r2, =gBattleStruct + ldr r0, [r2] + adds r1, r0 + adds r1, 0x54 + strb r3, [r1] + ldrb r1, [r4] +_0803C7A0: + ldr r0, [r2] + adds r1, r0 + adds r1, 0x84 + movs r0, 0x1 + strb r0, [r1] + b _0803CD70 + .pool +_0803C7C4: + ldr r2, =gBattleCommunication + ldr r0, =gActiveBank + ldrb r1, [r0] + adds r1, r2 + b _0803CB74 + .pool +_0803C7D8: + ldr r4, =gBattleExecBuffer + ldr r1, =gBitTable + ldr r3, =gActiveBank + ldrb r5, [r3] + lsls r0, r5, 2 + adds r0, r1 + ldr r2, [r0] + lsls r0, r2, 4 + movs r1, 0xF0 + lsls r1, 24 + orrs r0, r1 + orrs r0, r2 + lsls r1, r2, 8 + orrs r0, r1 + lsls r2, 12 + orrs r0, r2 + ldr r1, [r4] + ands r1, r0 + adds r4, r3, 0 + cmp r1, 0 + beq _0803C804 + b _0803CD04 +_0803C804: + ldr r1, =gUnknown_0202421C + adds r0, r5, r1 + ldrb r0, [r0] + adds r2, r1, 0 + cmp r0, 0x9 + bls _0803C812 + b _0803CD04 +_0803C812: + lsls r0, 2 + ldr r1, =_0803C830 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .pool + .align 2, 0 +_0803C830: + .4byte _0803C858 + .4byte _0803C99C + .4byte _0803C9D4 + .4byte _0803CA0A + .4byte _0803CA2C + .4byte _0803CA40 + .4byte _0803CA54 + .4byte _0803CA84 + .4byte _0803CA98 + .4byte _0803CABC +_0803C858: + ldr r1, =gBattleBufferB + ldrb r3, [r4] + lsls r0, r3, 9 + adds r1, 0x1 + adds r0, r1 + ldrb r1, [r0] + cmp r1, 0x3 + blt _0803C88A + cmp r1, 0x9 + ble _0803C878 + cmp r1, 0xF + beq _0803C87E + b _0803C88A + .pool +_0803C878: + adds r0, r3, r2 + strb r1, [r0] + b _0803CD70 +_0803C87E: + adds r1, r3, r2 + movs r0, 0x2 + strb r0, [r1] + bl sub_803CDF8 + b _0803CD70 +_0803C88A: + movs r0, 0x2 + bl sub_818603C + ldr r4, =gBattleBufferB + ldr r6, =gActiveBank + ldrb r3, [r6] + lsls r1, r3, 9 + adds r5, r4, 0x2 + adds r0, r1, r5 + ldrb r2, [r0] + adds r7, r4, 0x3 + adds r1, r7 + ldrb r0, [r1] + lsls r0, 8 + orrs r2, r0 + ldr r0, =0x0000ffff + cmp r2, r0 + bne _0803C8D0 + ldr r0, =gBattleCommunication + adds r0, r3, r0 + movs r1, 0x1 + strb r1, [r0] + ldrb r0, [r6] + bl sub_8185008 + b _0803CD04 + .pool +_0803C8D0: + bl sub_803FB4C + lsls r0, 24 + cmp r0, 0 + beq _0803C91C + ldrb r0, [r6] + movs r1, 0x1 + bl sub_8185008 + ldr r0, =gBattleCommunication + ldrb r1, [r6] + adds r1, r0 + movs r3, 0 + movs r0, 0x6 + strb r0, [r1] + ldrb r1, [r6] + ldr r2, =gBattleStruct + ldr r0, [r2] + adds r1, r0 + adds r1, 0x54 + strb r3, [r1] + ldrb r0, [r6] + lsls r0, 9 + adds r1, r4, 0x1 + adds r0, r1 + strb r3, [r0] + ldrb r1, [r6] + ldr r0, [r2] + adds r1, r0 + adds r1, 0x84 + movs r0, 0x2 + strb r0, [r1] + b _0803CD70 + .pool +_0803C91C: + ldr r0, =gBattleTypeFlags + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 10 + ands r0, r1 + cmp r0, 0 + bne _0803C942 + ldrb r0, [r6] + lsls r1, r0, 9 + adds r1, r5 + ldrb r1, [r1] + bl sub_8184FBC + ldrb r0, [r6] + lsls r1, r0, 9 + adds r1, r7 + ldrb r1, [r1] + bl sub_8184FBC +_0803C942: + ldrb r0, [r6] + ldr r4, =gBattleStruct + ldr r1, [r4] + adds r1, r0, r1 + adds r1, 0x80 + lsls r0, 9 + adds r0, r5 + ldrb r0, [r0] + strb r0, [r1] + ldr r0, =gUnknown_02024274 + ldrb r2, [r6] + lsls r5, r2, 1 + adds r5, r0 + ldr r3, =gBattleMons + ldr r4, [r4] + adds r0, r2, r4 + adds r0, 0x80 + ldrb r0, [r0] + lsls r0, 1 + movs r1, 0x58 + muls r1, r2 + adds r0, r1 + adds r3, 0xC + adds r0, r3 + ldrh r0, [r0] + strh r0, [r5] + ldrb r0, [r6] + adds r4, r0, r4 + lsls r0, 9 + adds r0, r7 + ldrb r0, [r0] + strb r0, [r4, 0xC] + ldr r0, =gBattleCommunication + ldrb r1, [r6] + b _0803CB72 + .pool +_0803C99C: + ldr r2, =gBattleBufferB + ldr r5, =gActiveBank + ldrb r4, [r5] + lsls r1, r4, 9 + adds r0, r2, 0x1 + adds r0, r1, r0 + ldrb r3, [r0] + adds r2, 0x2 + adds r1, r2 + ldrb r0, [r1] + lsls r0, 8 + orrs r3, r0 + cmp r3, 0 + bne _0803C9BA + b _0803CC1C +_0803C9BA: + ldr r0, =gLastUsedItem + strh r3, [r0] + ldr r0, =gBattleCommunication + ldrb r1, [r5] + b _0803CB72 + .pool +_0803C9D4: + ldr r0, =gBattleBufferB + ldr r4, =gActiveBank + ldrb r2, [r4] + lsls r1, r2, 9 + adds r0, 0x1 + adds r1, r0 + ldrb r0, [r1] + cmp r0, 0x6 + bne _0803CA04 + ldr r0, =gBattleCommunication + adds r0, r2, r0 + movs r1, 0x1 + strb r1, [r0] + ldrb r0, [r4] + bl sub_8185008 + b _0803CD04 + .pool +_0803CA04: + bl sub_803CDF8 + b _0803CB6E +_0803CA0A: + ldr r2, =gHitMarker + ldr r0, [r2] + movs r1, 0x80 + lsls r1, 8 + orrs r0, r1 + str r0, [r2] + ldr r2, =gBattleCommunication + ldr r0, =gActiveBank + ldrb r1, [r0] + adds r1, r2 + b _0803CB74 + .pool +_0803CA2C: + ldr r2, =gBattleCommunication + ldr r0, =gActiveBank + ldrb r1, [r0] + adds r1, r2 + b _0803CB74 + .pool +_0803CA40: + ldr r2, =gBattleCommunication + ldr r0, =gActiveBank + ldrb r1, [r0] + adds r1, r2 + b _0803CB74 + .pool +_0803CA54: + ldr r3, =gBattleBufferB + ldr r0, =gActiveBank + ldrb r4, [r0] + lsls r1, r4, 9 + adds r0, r3, 0x1 + adds r0, r1, r0 + ldrb r2, [r0] + adds r3, 0x2 + adds r1, r3 + ldrb r0, [r1] + lsls r0, 8 + orrs r2, r0 + cmp r2, 0 + bne _0803CA72 + b _0803CC1C +_0803CA72: + ldr r1, =gBattleCommunication + adds r1, r4, r1 + b _0803CB74 + .pool +_0803CA84: + ldr r2, =gBattleCommunication + ldr r0, =gActiveBank + ldrb r1, [r0] + adds r1, r2 + b _0803CB74 + .pool +_0803CA98: + ldr r2, =gHitMarker + ldr r0, [r2] + movs r1, 0x80 + lsls r1, 8 + orrs r0, r1 + str r0, [r2] + ldr r2, =gBattleCommunication + ldr r0, =gActiveBank + ldrb r1, [r0] + adds r1, r2 + b _0803CB74 + .pool +_0803CABC: + ldr r2, =gBattleCommunication + ldr r0, =gActiveBank + ldrb r1, [r0] + adds r1, r2 + b _0803CB74 + .pool +_0803CAD0: + ldr r3, =gBattleExecBuffer + ldr r6, =gBitTable + ldr r0, =gActiveBank + ldrb r0, [r0] + lsls r0, 2 + adds r0, r6 + ldr r2, [r0] + lsls r1, r2, 4 + movs r0, 0xF0 + lsls r0, 24 + orrs r1, r0 + orrs r1, r2 + lsls r0, r2, 8 + orrs r1, r0 + lsls r2, 12 + orrs r1, r2 + ldr r0, [r3] + ands r0, r1 + cmp r0, 0 + beq _0803CAFA + b _0803CD04 +_0803CAFA: + bl sub_803CDB8 + lsls r0, 24 + lsrs r0, 24 + negs r1, r0 + orrs r1, r0 + lsrs r4, r1, 31 + ldr r0, =gBattleTypeFlags + ldr r0, [r0] + movs r1, 0x41 + ands r0, r1 + cmp r0, 0x1 + bne _0803CB3C + movs r1, 0x2 + movs r0, 0x2 + ands r0, r5 + cmp r0, 0 + bne _0803CB3C + adds r0, r5, 0 + eors r0, r1 + bl GetBankByPlayerAI + ldr r1, =gBattleStruct + ldr r1, [r1] + adds r1, 0x91 + ldrb r1, [r1] + lsls r0, 24 + lsrs r0, 22 + adds r0, r6 + ldr r0, [r0] + ands r1, r0 + cmp r1, 0 + beq _0803CB5C +_0803CB3C: + movs r0, 0 + movs r1, 0 + adds r2, r4, 0 + bl sub_8034464 + b _0803CB66 + .pool +_0803CB5C: + movs r0, 0 + movs r1, 0x1 + adds r2, r4, 0 + bl sub_8034464 +_0803CB66: + ldr r4, =gActiveBank +_0803CB68: + ldrb r0, [r4] + bl dp01_battle_side_mark_buffer_for_execution +_0803CB6E: + ldr r0, =gBattleCommunication + ldrb r1, [r4] +_0803CB72: + adds r1, r0 +_0803CB74: + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _0803CD04 + .pool +_0803CB84: + ldr r3, =gBattleExecBuffer + ldr r1, =gBitTable + ldr r0, =gActiveBank + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r2, [r0] + lsls r1, r2, 4 + movs r0, 0xF0 + lsls r0, 24 + orrs r1, r0 + orrs r1, r2 + lsls r0, r2, 8 + orrs r1, r0 + lsls r2, 12 + orrs r1, r2 + ldr r0, [r3] + ands r0, r1 + cmp r0, 0 + beq _0803CBAE + b _0803CD04 +_0803CBAE: + ldr r1, =gBattleCommunication + ldrb r0, [r1, 0x4] + adds r0, 0x1 + strb r0, [r1, 0x4] + b _0803CD04 + .pool +_0803CBC8: + ldr r5, =gActiveBank + ldrb r2, [r5] + ldr r0, =gBattleStruct + ldr r0, [r0] + adds r1, r2, r0 + adds r0, r1, 0 + adds r0, 0x54 + ldrb r0, [r0] + cmp r0, 0 + beq _0803CCB4 + ldr r0, =gBattleCommunication + adds r0, r2, r0 + adds r1, 0x84 + ldrb r1, [r1] + strb r1, [r0] + b _0803CD04 + .pool +_0803CBF4: + ldr r3, =gBattleExecBuffer + ldr r1, =gBitTable + ldr r0, =gActiveBank + ldrb r4, [r0] + lsls r0, r4, 2 + adds r0, r1 + ldr r2, [r0] + lsls r1, r2, 4 + movs r0, 0xF0 + lsls r0, 24 + orrs r1, r0 + orrs r1, r2 + lsls r0, r2, 8 + orrs r1, r0 + lsls r2, 12 + orrs r1, r2 + ldr r0, [r3] + ands r0, r1 + cmp r0, 0 + bne _0803CD04 +_0803CC1C: + ldr r0, =gBattleCommunication + adds r0, r4, r0 +_0803CC20: + movs r1, 0x1 + strb r1, [r0] + b _0803CD04 + .pool +_0803CC38: + ldr r5, =gActiveBank + ldrb r2, [r5] + ldr r4, =gBattleStruct + ldr r0, [r4] + adds r0, r2, r0 + adds r0, 0x54 + ldrb r0, [r0] + cmp r0, 0 + beq _0803CCB4 + ldr r0, =gBattleBufferB + lsls r1, r2, 9 + adds r0, 0x1 + adds r1, r0 + ldrb r0, [r1] + cmp r0, 0xD + bne _0803CC94 + ldr r2, =gHitMarker + ldr r0, [r2] + movs r1, 0x80 + lsls r1, 8 + orrs r0, r1 + str r0, [r2] + ldr r1, =gUnknown_0202421C + ldrb r0, [r5] + adds r0, r1 + movs r1, 0x3 + strb r1, [r0] + ldr r1, =gBattleCommunication + ldrb r0, [r5] +_0803CC72: + adds r0, r1 + movs r1, 0x4 + strb r1, [r0] + b _0803CD04 + .pool +_0803CC94: + adds r0, r2, 0 + movs r1, 0x1 + bl sub_8185008 + ldr r2, =gBattleCommunication + ldrb r0, [r5] + adds r2, r0, r2 + ldr r1, [r4] + adds r0, r1 + adds r0, 0x84 + ldrb r0, [r0] + strb r0, [r2] + b _0803CD04 + .pool +_0803CCB4: + ldr r0, =gBankAttacker + strb r2, [r0] + ldr r7, =gBattlescriptCurrInstr + ldr r6, =gUnknown_02024220 + ldrb r0, [r5] + lsls r0, 2 + adds r0, r6 + ldr r4, [r0] + str r4, [r7] + ldr r3, =gBattleExecBuffer + ldr r1, =gBitTable + ldrb r0, [r5] + lsls r0, 2 + adds r0, r1 + ldr r2, [r0] + lsls r1, r2, 4 + movs r0, 0xF0 + lsls r0, 24 + orrs r1, r0 + orrs r1, r2 + lsls r0, r2, 8 + orrs r1, r0 + lsls r2, 12 + orrs r1, r2 + ldr r0, [r3] + ands r0, r1 + cmp r0, 0 + bne _0803CCFA + ldr r0, =gBattleScriptingCommandsTable + ldrb r1, [r4] + lsls r1, 2 + adds r1, r0 + ldr r0, [r1] + bl _call_via_r0 +_0803CCFA: + ldrb r0, [r5] + lsls r0, 2 + adds r0, r6 + ldr r1, [r7] + str r1, [r0] +_0803CD04: + ldr r0, =gActiveBank + ldrb r1, [r0] + adds r1, 0x1 + strb r1, [r0] + ldr r0, =gNoOfAllBanks + lsls r1, 24 + lsrs r1, 24 +_0803CD12: + adds r5, r0, 0 + ldrb r0, [r5] + cmp r1, r0 + bcs _0803CD1E + bl _0803BE9C +_0803CD1E: + ldr r0, =gBattleCommunication + ldrb r0, [r0, 0x4] + ldrb r1, [r5] + cmp r0, r1 + bne _0803CD70 + movs r0, 0x1 + bl sub_818603C + ldr r1, =gBattleMainFunc + ldr r0, =sub_803D2E8 + str r0, [r1] + ldr r0, =gBattleTypeFlags + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 15 + ands r0, r1 + cmp r0, 0 + beq _0803CD70 + movs r4, 0 + ldrb r5, [r5] + cmp r4, r5 + bge _0803CD70 +_0803CD4A: + ldr r0, =gUnknown_0202421C + adds r0, r4, r0 + ldrb r0, [r0] + cmp r0, 0x2 + bne _0803CD66 + lsls r0, r4, 24 + lsrs r0, 24 + ldr r1, =gBattleStruct + ldr r1, [r1] + adds r1, r4, r1 + adds r1, 0x5C + ldrb r1, [r1] + bl sub_80571DC +_0803CD66: + adds r4, 0x1 + ldr r0, =gNoOfAllBanks + ldrb r0, [r0] + cmp r4, r0 + blt _0803CD4A +_0803CD70: + add sp, 0x1C + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .pool + thumb_func_end sub_803BE74 + + thumb_func_start sub_803CDB8 +sub_803CDB8: @ 803CDB8 + push {r4,r5,lr} + movs r3, 0 + movs r1, 0 + ldr r0, =gNoOfAllBanks + ldrb r2, [r0] + adds r5, r0, 0 + cmp r3, r2 + bge _0803CDDA + ldr r4, =gBattleCommunication +_0803CDCA: + adds r0, r1, r4 + ldrb r0, [r0] + cmp r0, 0x5 + bne _0803CDD4 + adds r3, 0x1 +_0803CDD4: + adds r1, 0x1 + cmp r1, r2 + blt _0803CDCA +_0803CDDA: + adds r0, r3, 0x1 + ldrb r5, [r5] + cmp r0, r5 + beq _0803CDF0 + movs r0, 0 + b _0803CDF2 + .pool +_0803CDF0: + movs r0, 0x1 +_0803CDF2: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_803CDB8 + + thumb_func_start sub_803CDF8 +sub_803CDF8: @ 803CDF8 + push {r4-r7,lr} + ldr r7, =gActiveBank + ldrb r0, [r7] + ldr r6, =gBattleStruct + ldr r1, [r6] + adds r1, r0, r1 + adds r1, 0x5C + ldr r4, =gBattleBufferB + lsls r0, 9 + adds r2, r4, 0x1 + adds r0, r2 + ldrb r0, [r0] + strb r0, [r1] + ldrb r0, [r7] + lsls r1, r0, 9 + adds r1, r2 + ldrb r1, [r1] + bl sub_8184FBC + ldr r0, =gBattleTypeFlags + ldr r0, [r0] + movs r1, 0x42 + ands r0, r1 + cmp r0, 0x42 + bne _0803CEC6 + ldrb r0, [r7] + ldr r2, [r6] + lsls r1, r0, 1 + adds r1, r0 + adds r1, r2 + adds r1, 0x60 + ldrb r2, [r1] + movs r0, 0xF + ands r0, r2 + strb r0, [r1] + ldrb r0, [r7] + ldr r2, [r6] + lsls r1, r0, 1 + adds r1, r0 + adds r1, r2 + adds r1, 0x60 + lsls r0, 9 + adds r5, r4, 0x2 + adds r0, r5 + ldrb r2, [r0] + movs r3, 0xF0 + adds r0, r3, 0 + ands r0, r2 + ldrb r2, [r1] + orrs r0, r2 + strb r0, [r1] + ldrb r1, [r7] + ldr r2, [r6] + lsls r0, r1, 1 + adds r0, r1 + adds r0, r2 + adds r0, 0x61 + lsls r1, 9 + adds r4, 0x3 + mov r12, r4 + add r1, r12 + ldrb r1, [r1] + strb r1, [r0] + ldrb r0, [r7] + movs r4, 0x2 + eors r0, r4 + ldr r2, [r6] + lsls r1, r0, 1 + adds r1, r0 + adds r1, r2 + adds r1, 0x60 + ldrb r2, [r1] + adds r0, r3, 0 + ands r0, r2 + strb r0, [r1] + ldrb r0, [r7] + eors r0, r4 + ldr r2, [r6] + lsls r1, r0, 1 + adds r1, r0 + adds r1, r2 + adds r1, 0x60 + ldrb r0, [r7] + lsls r0, 9 + adds r0, r5 + ldrb r0, [r0] + ands r3, r0 + lsrs r3, 4 + ldrb r0, [r1] + orrs r3, r0 + strb r3, [r1] + ldrb r0, [r7] + eors r4, r0 + ldr r0, [r6] + lsls r1, r4, 1 + adds r1, r4 + adds r1, r0 + adds r1, 0x62 + ldrb r0, [r7] + lsls r0, 9 + add r0, r12 + ldrb r0, [r0] + strb r0, [r1] +_0803CEC6: + pop {r4-r7} + pop {r0} + bx r0 + .pool + thumb_func_end sub_803CDF8 + + thumb_func_start sub_803CEDC +sub_803CEDC: @ 803CEDC + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + ldr r2, =gUnknown_0202407A + adds r4, r0, r2 + ldrb r5, [r4] + adds r2, r1, r2 + ldrb r3, [r2] + strb r3, [r4] + strb r5, [r2] + ldr r2, =gTurnOrder + adds r0, r2 + ldrb r5, [r0] + adds r1, r2 + ldrb r2, [r1] + strb r2, [r0] + strb r5, [r1] + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end sub_803CEDC + + thumb_func_start b_first_side +b_first_side: @ 803CF10 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0xC + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + lsls r1, 24 + lsrs r1, 24 + mov r10, r1 + lsls r2, 24 + lsrs r2, 24 + str r2, [sp, 0x4] + movs r0, 0 + str r0, [sp, 0x8] + str r0, [sp] + movs r0, 0x13 + movs r1, 0 + movs r2, 0xD + movs r3, 0 + bl AbilityBattleEffects + lsls r0, 24 + cmp r0, 0 + bne _0803CFD8 + ldr r1, [sp, 0x8] + str r1, [sp] + movs r0, 0x13 + movs r1, 0 + movs r2, 0x4D + movs r3, 0 + bl AbilityBattleEffects + lsls r0, 24 + cmp r0, 0 + bne _0803CFD8 + ldr r1, =gBattleMons + movs r0, 0x58 + mov r2, r9 + muls r2, r0 + adds r0, r2, 0 + adds r0, r1 + adds r0, 0x20 + ldrb r3, [r0] + cmp r3, 0x21 + bne _0803CF7C + ldr r0, =gBattleWeather + ldrh r1, [r0] + movs r0, 0x7 + ands r0, r1 + cmp r0, 0 + bne _0803CF8C +_0803CF7C: + cmp r3, 0x22 + bne _0803CF98 + ldr r0, =gBattleWeather + ldrh r1, [r0] + movs r0, 0x60 + ands r0, r1 + cmp r0, 0 + beq _0803CF98 +_0803CF8C: + movs r3, 0x2 + b _0803CF9A + .pool +_0803CF98: + movs r3, 0x1 +_0803CF9A: + movs r0, 0x58 + mov r1, r10 + muls r1, r0 + adds r0, r1, 0 + ldr r2, =gBattleMons + adds r0, r2 + adds r0, 0x20 + ldrb r2, [r0] + cmp r2, 0x21 + bne _0803CFBA + ldr r0, =gBattleWeather + ldrh r1, [r0] + movs r0, 0x7 + ands r0, r1 + cmp r0, 0 + bne _0803CFCA +_0803CFBA: + cmp r2, 0x22 + bne _0803CFDA + ldr r0, =gBattleWeather + ldrh r1, [r0] + movs r0, 0x60 + ands r0, r1 + cmp r0, 0 + beq _0803CFDA +_0803CFCA: + movs r7, 0x2 + b _0803CFDC + .pool +_0803CFD8: + movs r3, 0x1 +_0803CFDA: + movs r7, 0x1 +_0803CFDC: + ldr r1, =gBattleMons + movs r0, 0x58 + mov r2, r9 + muls r2, r0 + adds r0, r2, 0 + adds r4, r0, r1 + ldrh r0, [r4, 0x6] + muls r3, r0 + ldr r2, =gStatStageRatios + movs r1, 0x1B + ldrsb r1, [r4, r1] + lsls r1, 1 + adds r0, r1, r2 + ldrb r0, [r0] + muls r0, r3 + adds r2, 0x1 + adds r1, r2 + ldrb r1, [r1] + bl __divsi3 + mov r8, r0 + ldrh r0, [r4, 0x2E] + cmp r0, 0xAF + bne _0803D02C + ldr r1, =gEnigmaBerries + mov r3, r9 + lsls r0, r3, 3 + subs r0, r3 + lsls r0, 2 + adds r0, r1 + ldrb r6, [r0, 0x7] + ldrb r5, [r0, 0x1A] + b _0803D040 + .pool +_0803D02C: + ldrh r0, [r4, 0x2E] + bl ItemId_GetHoldEffect + lsls r0, 24 + lsrs r6, r0, 24 + ldrh r0, [r4, 0x2E] + bl ItemId_GetHoldEffectParam + lsls r0, 24 + lsrs r5, r0, 24 +_0803D040: + ldr r0, =gBattleTypeFlags + ldr r0, [r0] + ldr r1, =0x023f0102 + ands r0, r1 + cmp r0, 0 + bne _0803D074 + ldr r0, =0x00000869 + bl FlagGet + lsls r0, 24 + cmp r0, 0 + beq _0803D074 + mov r0, r9 + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + bne _0803D074 + movs r0, 0x6E + mov r1, r8 + muls r1, r0 + adds r0, r1, 0 + movs r1, 0x64 + bl __udivsi3 + mov r8, r0 +_0803D074: + cmp r6, 0x18 + bne _0803D07E + mov r2, r8 + lsrs r2, 1 + mov r8, r2 +_0803D07E: + ldr r1, =gBattleMons + movs r0, 0x58 + mov r3, r9 + muls r3, r0 + adds r0, r3, 0 + adds r1, 0x4C + adds r0, r1 + ldr r0, [r0] + movs r1, 0x40 + ands r0, r1 + cmp r0, 0 + beq _0803D09C + mov r0, r8 + lsrs r0, 2 + mov r8, r0 +_0803D09C: + cmp r6, 0x1A + bne _0803D0B8 + ldr r0, =gUnknown_02024330 + ldrh r4, [r0] + lsls r0, r5, 16 + subs r0, r5 + movs r1, 0x64 + bl __divsi3 + cmp r4, r0 + bge _0803D0B8 + movs r1, 0x1 + negs r1, r1 + mov r8, r1 +_0803D0B8: + ldr r1, =gBattleMons + movs r0, 0x58 + mov r2, r10 + muls r2, r0 + adds r0, r2, 0 + adds r4, r0, r1 + ldrh r0, [r4, 0x6] + adds r3, r0, 0 + muls r3, r7 + ldr r2, =gStatStageRatios + movs r1, 0x1B + ldrsb r1, [r4, r1] + lsls r1, 1 + adds r0, r1, r2 + ldrb r0, [r0] + muls r0, r3 + adds r2, 0x1 + adds r1, r2 + ldrb r1, [r1] + bl __divsi3 + adds r7, r0, 0 + ldrh r0, [r4, 0x2E] + cmp r0, 0xAF + bne _0803D118 + ldr r1, =gEnigmaBerries + mov r3, r10 + lsls r0, r3, 3 + subs r0, r3 + lsls r0, 2 + adds r0, r1 + ldrb r6, [r0, 0x7] + ldrb r5, [r0, 0x1A] + b _0803D12C + .pool +_0803D118: + ldrh r0, [r4, 0x2E] + bl ItemId_GetHoldEffect + lsls r0, 24 + lsrs r6, r0, 24 + ldrh r0, [r4, 0x2E] + bl ItemId_GetHoldEffectParam + lsls r0, 24 + lsrs r5, r0, 24 +_0803D12C: + ldr r0, =gBattleTypeFlags + ldr r0, [r0] + ldr r1, =0x023f0102 + ands r0, r1 + cmp r0, 0 + bne _0803D15C + ldr r0, =0x00000869 + bl FlagGet + lsls r0, 24 + cmp r0, 0 + beq _0803D15C + mov r0, r10 + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + bne _0803D15C + movs r0, 0x6E + muls r0, r7 + movs r1, 0x64 + bl __udivsi3 + adds r7, r0, 0 +_0803D15C: + cmp r6, 0x18 + bne _0803D162 + lsrs r7, 1 +_0803D162: + ldr r2, =gBattleMons + movs r0, 0x58 + mov r1, r10 + muls r1, r0 + adds r0, r1, 0 + adds r1, r2, 0 + adds r1, 0x4C + adds r0, r1 + ldr r0, [r0] + movs r1, 0x40 + ands r0, r1 + cmp r0, 0 + beq _0803D17E + lsrs r7, 2 +_0803D17E: + cmp r6, 0x1A + bne _0803D198 + ldr r0, =gUnknown_02024330 + ldrh r4, [r0] + lsls r0, r5, 16 + subs r0, r5 + movs r1, 0x64 + bl __divsi3 + cmp r4, r0 + bge _0803D198 + movs r7, 0x1 + negs r7, r7 +_0803D198: + ldr r2, [sp, 0x4] + cmp r2, 0 + beq _0803D1B8 + movs r3, 0 + b _0803D254 + .pool +_0803D1B8: + ldr r0, =gUnknown_0202421C + mov r3, r9 + adds r1, r3, r0 + ldrb r1, [r1] + adds r2, r0, 0 + cmp r1, 0 + bne _0803D208 + ldr r0, =gProtectStructs + lsls r1, r3, 4 + adds r1, r0 + ldrb r0, [r1] + lsls r0, 29 + cmp r0, 0 + bge _0803D1E0 + movs r3, 0xA5 + b _0803D20A + .pool +_0803D1E0: + ldr r0, =gBattleStruct + ldr r0, [r0] + add r0, r9 + adds r0, 0x80 + ldrb r0, [r0] + lsls r0, 1 + movs r1, 0x58 + mov r3, r9 + muls r3, r1 + adds r1, r3, 0 + adds r0, r1 + ldr r1, =gBattleMons + adds r1, 0xC + adds r0, r1 + ldrh r3, [r0] + b _0803D20A + .pool +_0803D208: + movs r3, 0 +_0803D20A: + mov r1, r10 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0 + bne _0803D254 + ldr r0, =gProtectStructs + lsls r1, 4 + adds r1, r0 + ldrb r0, [r1] + lsls r0, 29 + cmp r0, 0 + bge _0803D22C + movs r2, 0xA5 + b _0803D256 + .pool +_0803D22C: + ldr r0, =gBattleStruct + ldr r0, [r0] + add r0, r10 + adds r0, 0x80 + ldrb r0, [r0] + lsls r0, 1 + movs r1, 0x58 + mov r2, r10 + muls r2, r1 + adds r1, r2, 0 + adds r0, r1 + ldr r1, =gBattleMons + adds r1, 0xC + adds r0, r1 + ldrh r2, [r0] + b _0803D256 + .pool +_0803D254: + movs r2, 0 +_0803D256: + ldr r4, =gBattleMoves + lsls r0, r3, 1 + adds r0, r3 + lsls r0, 2 + adds r0, r4 + movs r1, 0x7 + ldrsb r1, [r0, r1] + lsls r3, r2, 1 + cmp r1, 0 + bne _0803D27A + adds r0, r3, r2 + lsls r0, 2 + adds r0, r4 + ldrb r0, [r0, 0x7] + lsls r0, 24 + asrs r0, 24 + cmp r0, 0 + beq _0803D2B8 +_0803D27A: + adds r0, r3, r2 + lsls r0, 2 + adds r0, r4 + ldrb r0, [r0, 0x7] + lsls r0, 24 + asrs r0, 24 + cmp r1, r0 + bne _0803D2AE + cmp r8, r7 + bne _0803D2A4 + bl Random + movs r1, 0x1 + ands r1, r0 + cmp r1, 0 + beq _0803D2A4 + movs r3, 0x2 + b _0803D2D4 + .pool +_0803D2A4: + cmp r8, r7 + bcs _0803D2D6 + movs r0, 0x1 + str r0, [sp, 0x8] + b _0803D2D6 +_0803D2AE: + cmp r1, r0 + bge _0803D2D6 + movs r1, 0x1 + str r1, [sp, 0x8] + b _0803D2D6 +_0803D2B8: + cmp r8, r7 + bne _0803D2CE + bl Random + movs r1, 0x1 + ands r1, r0 + cmp r1, 0 + beq _0803D2CE + movs r2, 0x2 + str r2, [sp, 0x8] + b _0803D2D6 +_0803D2CE: + cmp r8, r7 + bcs _0803D2D6 + movs r3, 0x1 +_0803D2D4: + str r3, [sp, 0x8] +_0803D2D6: + ldr r0, [sp, 0x8] + add sp, 0xC + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end b_first_side + + thumb_func_start sub_803D2E8 +sub_803D2E8: @ 803D2E8 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + movs r3, 0 + ldr r0, =gBattleTypeFlags + ldr r1, [r0] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _0803D354 + ldr r0, =gActiveBank + strb r3, [r0] + ldr r4, =gNoOfAllBanks + mov r8, r0 + ldrb r0, [r4] + cmp r3, r0 + bcc _0803D310 + b _0803D54A +_0803D310: + ldr r7, =gUnknown_0202407A + ldr r6, =gUnknown_0202421C + mov r2, r8 + ldr r5, =gTurnOrder +_0803D318: + adds r1, r3, r7 + ldrb r0, [r2] + adds r0, r6 + ldrb r0, [r0] + strb r0, [r1] + adds r1, r3, r5 + ldrb r0, [r2] + strb r0, [r1] + adds r3, 0x1 + ldrb r0, [r2] + adds r0, 0x1 + strb r0, [r2] + lsls r0, 24 + lsrs r0, 24 + ldrb r1, [r4] + cmp r0, r1 + bcc _0803D318 + b _0803D54A + .pool +_0803D354: + movs r2, 0x2 + ands r1, r2 + cmp r1, 0 + beq _0803D3A4 + ldr r0, =gActiveBank + strb r3, [r0] + ldr r1, =gNoOfAllBanks + mov r8, r0 + adds r2, r1, 0 + ldrb r2, [r2] + cmp r3, r2 + bcs _0803D3C0 + ldr r0, =gUnknown_0202421C + ldrb r1, [r0] + adds r4, r0, 0 + cmp r1, 0x3 + beq _0803D3BE +_0803D376: + mov r7, r8 + ldrb r0, [r7] + adds r0, 0x1 + strb r0, [r7] + lsls r0, 24 + lsrs r0, 24 + ldr r1, =gNoOfAllBanks + ldrb r1, [r1] + cmp r0, r1 + bcs _0803D3C0 + ldrb r0, [r7] + adds r0, r4 + ldrb r0, [r0] + cmp r0, 0x3 + bne _0803D376 + b _0803D3BE + .pool +_0803D3A4: + ldr r1, =gUnknown_0202421C + ldrb r0, [r1] + ldr r4, =gActiveBank + mov r8, r4 + cmp r0, 0x3 + bne _0803D3B4 + strb r3, [r4] + movs r3, 0x5 +_0803D3B4: + ldrb r0, [r1, 0x2] + cmp r0, 0x3 + bne _0803D3C0 + mov r7, r8 + strb r2, [r7] +_0803D3BE: + movs r3, 0x5 +_0803D3C0: + cmp r3, 0x5 + bne _0803D448 + ldr r6, =gUnknown_0202407A + ldr r1, =gUnknown_0202421C + mov r2, r8 + ldrb r0, [r2] + adds r0, r1 + ldrb r0, [r0] + strb r0, [r6] + ldr r2, =gTurnOrder + mov r3, r8 + ldrb r0, [r3] + strb r0, [r2] + movs r3, 0x1 + movs r5, 0 + adds r4, r1, 0 + ldr r7, =gBattleMainFunc + mov r10, r7 + ldr r0, =bc_80154A0 + mov r12, r0 + ldr r1, =gBattleStruct + mov r9, r1 + ldr r7, =gNoOfAllBanks + ldrb r7, [r7] + cmp r5, r7 + bge _0803D41A + adds r7, r6, 0 + adds r6, r4, 0 + adds r4, r2, 0 + ldr r2, =gNoOfAllBanks +_0803D3FC: + mov r0, r8 + ldrb r0, [r0] + cmp r5, r0 + beq _0803D412 + adds r1, r3, r7 + adds r0, r5, r6 + ldrb r0, [r0] + strb r0, [r1] + adds r0, r3, r4 + strb r5, [r0] + adds r3, 0x1 +_0803D412: + adds r5, 0x1 + ldrb r1, [r2] + cmp r5, r1 + blt _0803D3FC +_0803D41A: + mov r2, r12 + mov r3, r10 + str r2, [r3] + mov r4, r9 + ldr r0, [r4] + b _0803D554 + .pool +_0803D448: + movs r0, 0 + mov r7, r8 + strb r0, [r7] + ldr r1, =gNoOfAllBanks + ldrb r0, [r1] + cmp r0, 0 + beq _0803D48E + ldr r6, =gUnknown_0202421C + mov r2, r8 + ldr r5, =gUnknown_0202407A + ldr r4, =gTurnOrder +_0803D45E: + ldrb r0, [r2] + adds r0, r6 + ldrb r1, [r0] + subs r0, r1, 0x1 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bhi _0803D47C + adds r0, r3, r5 + strb r1, [r0] + adds r1, r3, r4 + mov r7, r8 + ldrb r0, [r7] + strb r0, [r1] + adds r3, 0x1 +_0803D47C: + ldrb r0, [r2] + adds r0, 0x1 + strb r0, [r2] + lsls r0, 24 + lsrs r0, 24 + ldr r1, =gNoOfAllBanks + ldrb r1, [r1] + cmp r0, r1 + bcc _0803D45E +_0803D48E: + movs r0, 0 + mov r2, r8 + strb r0, [r2] + ldr r4, =gNoOfAllBanks + ldrb r0, [r4] + cmp r0, 0 + beq _0803D4D2 + ldr r6, =gUnknown_0202421C + ldr r5, =gUnknown_0202407A + ldr r4, =gTurnOrder +_0803D4A2: + ldrb r0, [r2] + adds r0, r6 + ldrb r1, [r0] + subs r0, r1, 0x1 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bls _0803D4C0 + adds r0, r3, r5 + strb r1, [r0] + adds r1, r3, r4 + mov r7, r8 + ldrb r0, [r7] + strb r0, [r1] + adds r3, 0x1 +_0803D4C0: + ldrb r0, [r2] + adds r0, 0x1 + strb r0, [r2] + lsls r0, 24 + lsrs r0, 24 + ldr r1, =gNoOfAllBanks + ldrb r1, [r1] + cmp r0, r1 + bcc _0803D4A2 +_0803D4D2: + movs r5, 0 + b _0803D540 + .pool +_0803D4E8: + adds r4, r5, 0x1 + adds r7, r4, 0 + ldrb r1, [r1] + cmp r7, r1 + bge _0803D53E + ldr r6, =gUnknown_0202407A + lsls r2, r5, 24 + mov r8, r2 +_0803D4F8: + ldr r0, =gTurnOrder + adds r1, r5, r0 + ldrb r3, [r1] + adds r0, r4, r0 + ldrb r1, [r0] + adds r0, r5, r6 + ldrb r2, [r0] + cmp r2, 0x1 + beq _0803D534 + adds r0, r4, r6 + ldrb r0, [r0] + cmp r0, 0x1 + beq _0803D534 + cmp r2, 0x2 + beq _0803D534 + cmp r0, 0x2 + beq _0803D534 + adds r0, r3, 0 + movs r2, 0 + bl b_first_side + lsls r0, 24 + cmp r0, 0 + beq _0803D534 + lsls r1, r4, 24 + lsrs r1, 24 + mov r3, r8 + lsrs r0, r3, 24 + bl sub_803CEDC +_0803D534: + adds r4, 0x1 + ldr r0, =gNoOfAllBanks + ldrb r0, [r0] + cmp r4, r0 + blt _0803D4F8 +_0803D53E: + adds r5, r7, 0 +_0803D540: + ldr r1, =gNoOfAllBanks + ldrb r0, [r1] + subs r0, 0x1 + cmp r5, r0 + blt _0803D4E8 +_0803D54A: + ldr r1, =gBattleMainFunc + ldr r0, =bc_80154A0 + str r0, [r1] + ldr r0, =gBattleStruct + ldr r0, [r0] +_0803D554: + adds r0, 0x48 + movs r1, 0 + strb r1, [r0] + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .pool + thumb_func_end sub_803D2E8 + + thumb_func_start sub_803D580 +sub_803D580: @ 803D580 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + ldr r1, =gActiveBank + movs r0, 0 + strb r0, [r1] + ldr r0, =gNoOfAllBanks + ldrb r2, [r0] + adds r5, r1, 0 + cmp r2, 0 + beq _0803D678 + ldr r7, =gProtectStructs + adds r6, r5, 0 + ldr r0, =gBattleMons + 0x50 + mov r12, r0 + ldr r1, =gDisableStructs + mov r8, r1 + mov r10, r8 +_0803D5AE: + mov r2, r9 + cmp r2, 0 + beq _0803D5EC + ldrb r1, [r6] + lsls r1, 4 + adds r1, r7 + ldrb r2, [r1] + movs r0, 0x2 + negs r0, r0 + ands r0, r2 + strb r0, [r1] + ldrb r1, [r6] + lsls r1, 4 + adds r1, r7 + ldrb r2, [r1] + movs r0, 0x3 + negs r0, r0 + ands r0, r2 + strb r0, [r1] + b _0803D648 + .pool +_0803D5EC: + ldrb r0, [r6] + lsls r0, 4 + adds r2, r0, r7 + movs r1, 0 + mov r4, r10 + movs r3, 0 +_0803D5F8: + adds r0, r2, r1 + strb r3, [r0] + adds r1, 0x1 + cmp r1, 0xF + bls _0803D5F8 + ldrb r1, [r5] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r1, r0, r4 + ldrb r0, [r1, 0x16] + cmp r0, 0 + beq _0803D616 + subs r0, 0x1 + strb r0, [r1, 0x16] +_0803D616: + ldrb r1, [r5] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r1, r0, r4 + ldrb r0, [r1, 0x19] + cmp r0, 0 + beq _0803D648 + subs r0, 0x1 + strb r0, [r1, 0x19] + ldrb r2, [r5] + lsls r0, r2, 3 + subs r0, r2 + lsls r0, 2 + adds r0, r4 + ldrb r0, [r0, 0x19] + cmp r0, 0 + bne _0803D648 + movs r0, 0x58 + muls r2, r0 + add r2, r12 + ldr r0, [r2] + ldr r1, =0xffbfffff + ands r0, r1 + str r0, [r2] +_0803D648: + ldrb r2, [r5] + lsls r0, r2, 3 + subs r0, r2 + lsls r0, 2 + add r0, r8 + ldrb r0, [r0, 0xA] + cmp r0, 0 + bne _0803D666 + movs r0, 0x58 + muls r2, r0 + add r2, r12 + ldr r0, [r2] + ldr r1, =0xfeffffff + ands r0, r1 + str r0, [r2] +_0803D666: + ldrb r0, [r5] + adds r0, 0x1 + strb r0, [r5] + lsls r0, 24 + lsrs r0, 24 + ldr r1, =gNoOfAllBanks + ldrb r1, [r1] + cmp r0, r1 + bcc _0803D5AE +_0803D678: + movs r0, 0 + ldr r2, =gSideTimers + strb r0, [r2, 0x8] + strb r0, [r2, 0x14] + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .pool + thumb_func_end sub_803D580 + + thumb_func_start sub_803D6A0 +sub_803D6A0: @ 803D6A0 + push {r4-r6,lr} + ldr r2, =gActiveBank + movs r0, 0 + strb r0, [r2] + ldr r0, =gNoOfAllBanks + ldrb r1, [r0] + adds r6, r0, 0 + cmp r1, 0 + beq _0803D6DE + adds r3, r2, 0 + movs r4, 0 + ldr r5, =gSpecialStatuses +_0803D6B8: + ldrb r1, [r3] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + adds r2, r0, r5 + movs r1, 0 +_0803D6C4: + adds r0, r2, r1 + strb r4, [r0] + adds r1, 0x1 + cmp r1, 0x13 + bls _0803D6C4 + ldrb r0, [r3] + adds r0, 0x1 + strb r0, [r3] + lsls r0, 24 + lsrs r0, 24 + ldrb r1, [r6] + cmp r0, r1 + bcc _0803D6B8 +_0803D6DE: + pop {r4-r6} + pop {r0} + bx r0 + .pool + thumb_func_end sub_803D6A0 + + thumb_func_start bc_80154A0 +bc_80154A0: @ 803D6F0 + push {r4-r7,lr} + ldr r0, =gHitMarker + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 8 + ands r0, r1 + cmp r0, 0 + bne _0803D7AE + ldr r2, =gBattleStruct + ldr r0, [r2] + adds r0, 0x48 + ldr r1, =gNoOfAllBanks + ldrb r0, [r0] + mov r12, r2 + adds r6, r1, 0 + ldrb r1, [r6] + cmp r0, r1 + bcs _0803D7AE + ldr r5, =gActiveBank + ldr r4, =gBankAttacker + movs r7, 0x84 + lsls r7, 1 +_0803D71C: + ldr r1, [r2] + adds r1, 0x48 + ldrb r0, [r1] + strb r0, [r4] + strb r0, [r5] + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + ldr r1, =gUnknown_02024274 + ldrb r3, [r5] + lsls r0, r3, 1 + adds r0, r1 + ldrh r0, [r0] + cmp r0, r7 + bne _0803D7A0 + ldr r1, =gBattleMons + movs r0, 0x58 + muls r0, r3 + adds r1, 0x4C + adds r0, r1 + ldr r0, [r0] + movs r1, 0x7 + ands r0, r1 + cmp r0, 0 + bne _0803D7A0 + ldr r2, =gDisableStructs + ldrb r1, [r4] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x18] + lsls r0, 31 + cmp r0, 0 + bne _0803D7A0 + ldr r0, =gProtectStructs + lsls r1, r3, 4 + adds r1, r0 + ldrb r0, [r1] + lsls r0, 29 + cmp r0, 0 + blt _0803D7A0 + ldr r0, =gUnknown_082DB1FF + bl b_call_bc_move_exec + b _0803D7E8 + .pool +_0803D7A0: + mov r2, r12 + ldr r0, [r2] + adds r0, 0x48 + ldrb r0, [r0] + ldrb r1, [r6] + cmp r0, r1 + bcc _0803D71C +_0803D7AE: + bl b_clear_atk_up_if_hit_flag_unless_enraged + ldr r1, =gUnknown_02024082 + movs r0, 0 + strb r0, [r1] + ldr r1, =gFightStateTracker + ldr r0, =gUnknown_0202407A + movs r3, 0 + ldrb r0, [r0] + strb r0, [r1] + ldr r0, =gDynamicBasePower + movs r2, 0 + strh r3, [r0] + ldr r0, =gBattleStruct + ldr r0, [r0] + strb r2, [r0, 0x13] + ldr r1, =gBattleMainFunc + ldr r0, =bc_bs_exec + str r0, [r1] + ldr r0, =gBattleCommunication + strb r2, [r0, 0x3] + strb r2, [r0, 0x4] + ldr r0, =gBattleScripting + strb r2, [r0, 0x16] + ldr r0, =gBattleResources + ldr r0, [r0] + ldr r0, [r0, 0x8] + adds r0, 0x20 + strb r2, [r0] +_0803D7E8: + pop {r4-r7} + pop {r0} + bx r0 + .pool + thumb_func_end bc_80154A0 + + thumb_func_start bc_bs_exec +bc_bs_exec: @ 803D818 + push {r4-r6,lr} + ldr r6, =gBattleOutcome + ldrb r0, [r6] + ldr r2, =gFightStateTracker + cmp r0, 0 + beq _0803D828 + movs r0, 0xC + strb r0, [r2] +_0803D828: + ldr r5, =gBattleStruct + ldr r0, [r5] + adds r0, 0x4B + ldr r4, =gUnknown_02024082 + ldrb r1, [r4] + strb r1, [r0] + ldr r1, =gUnknown_0831BC0C + ldrb r0, [r2] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + bl _call_via_r0 + ldr r0, =gNoOfAllBanks + ldrb r1, [r4] + ldrb r0, [r0] + cmp r1, r0 + bcc _0803D894 + ldr r2, =gHitMarker + ldr r0, [r2] + ldr r1, =0xffefffff + ands r0, r1 + str r0, [r2] + ldr r3, =gBattleMainFunc + ldr r2, =gUnknown_0831BC44 + ldrb r1, [r6] + movs r0, 0x7F + ands r0, r1 + lsls r0, 2 + adds r0, r2 + ldr r0, [r0] + str r0, [r3] + b _0803D8AC + .pool +_0803D894: + ldr r0, [r5] + adds r0, 0x4B + ldrb r0, [r0] + cmp r0, r1 + beq _0803D8AC + ldr r2, =gHitMarker + ldr r0, [r2] + ldr r1, =0xfffffdff + ands r0, r1 + ldr r1, =0xfff7ffff + ands r0, r1 + str r0, [r2] +_0803D8AC: + pop {r4-r6} + pop {r0} + bx r0 + .pool + thumb_func_end bc_bs_exec + + thumb_func_start sub_803D8C0 +sub_803D8C0: @ 803D8C0 + push {r4,lr} + ldr r1, =gFightStateTracker + movs r0, 0 + strb r0, [r1] + ldr r1, =gBattleTypeFlags + ldr r2, [r1] + ldr r0, =0x02000002 + ands r0, r2 + cmp r0, 0 + beq _0803D920 + ldr r1, =gScriptResult + ldr r4, =gBattleOutcome + ldrb r0, [r4] + strh r0, [r1] + ldr r1, =gBattleTextBuff1 + ldrb r0, [r4] + strb r0, [r1] + movs r0, 0 + bl GetBankByPlayerAI + ldr r1, =gBankAttacker + strb r0, [r1] + ldr r1, =gBattlescriptCurrInstr + ldr r0, =gUnknown_082DAA35 + str r0, [r1] + ldrb r1, [r4] + movs r0, 0x7F + ands r0, r1 + strb r0, [r4] + b _0803DAA4 + .pool +_0803D920: + movs r0, 0x8 + ands r0, r2 + cmp r0, 0 + beq _0803D95C + ldr r0, =0x043f0900 + ands r2, r0 + cmp r2, 0 + beq _0803D95C + bl sub_805EA60 + ldr r1, =gBattlescriptCurrInstr + ldr r0, =gUnknown_082DAA87 + str r0, [r1] + ldr r0, =gTrainerBattleOpponent_A + ldrh r1, [r0] + ldr r0, =0x000003fe + cmp r1, r0 + bne _0803D946 + b _0803DA8A +_0803D946: + b _0803DA94 + .pool +_0803D95C: + ldr r0, [r1] + movs r1, 0xA + ands r0, r1 + cmp r0, 0x8 + beq _0803D968 + b _0803DA9E +_0803D968: + bl sub_805EA60 + ldr r1, =gBattlescriptCurrInstr + ldr r0, =gUnknown_082DA92D + str r0, [r1] + ldr r2, =gTrainers + ldr r0, =gTrainerBattleOpponent_A + ldrh r1, [r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r2 + ldrb r0, [r0, 0x1] + subs r0, 0x3 + cmp r0, 0x32 + bls _0803D98A + b _0803DA94 +_0803D98A: + lsls r0, 2 + ldr r1, =_0803D9A8 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .pool + .align 2, 0 +_0803D9A8: + .4byte _0803DA80 + .4byte _0803DA94 + .4byte _0803DA94 + .4byte _0803DA94 + .4byte _0803DA94 + .4byte _0803DA94 + .4byte _0803DA80 + .4byte _0803DA94 + .4byte _0803DA80 + .4byte _0803DA94 + .4byte _0803DA80 + .4byte _0803DA94 + .4byte _0803DA94 + .4byte _0803DA94 + .4byte _0803DA94 + .4byte _0803DA94 + .4byte _0803DA94 + .4byte _0803DA94 + .4byte _0803DA94 + .4byte _0803DA94 + .4byte _0803DA94 + .4byte _0803DA94 + .4byte _0803DA94 + .4byte _0803DA94 + .4byte _0803DA94 + .4byte _0803DA94 + .4byte _0803DA94 + .4byte _0803DA94 + .4byte _0803DA74 + .4byte _0803DA8A + .4byte _0803DA94 + .4byte _0803DA94 + .4byte _0803DA94 + .4byte _0803DA94 + .4byte _0803DA94 + .4byte _0803DA74 + .4byte _0803DA94 + .4byte _0803DA94 + .4byte _0803DA94 + .4byte _0803DA94 + .4byte _0803DA94 + .4byte _0803DA94 + .4byte _0803DA94 + .4byte _0803DA94 + .4byte _0803DA94 + .4byte _0803DA94 + .4byte _0803DA80 + .4byte _0803DA94 + .4byte _0803DA94 + .4byte _0803DA94 + .4byte _0803DA80 +_0803DA74: + ldr r0, =0x00000163 + bl PlayBGM + b _0803DAA4 + .pool +_0803DA80: + movs r0, 0xD4 + lsls r0, 1 + bl PlayBGM + b _0803DAA4 +_0803DA8A: + movs r0, 0xB1 + lsls r0, 1 + bl PlayBGM + b _0803DAA4 +_0803DA94: + movs r0, 0xCE + lsls r0, 1 + bl PlayBGM + b _0803DAA4 +_0803DA9E: + ldr r1, =gBattlescriptCurrInstr + ldr r0, =gUnknown_082DA96A + str r0, [r1] +_0803DAA4: + ldr r1, =gBattleMainFunc + ldr r0, =sub_803DCD8 + str r0, [r1] + pop {r4} + pop {r0} + bx r0 + .pool + thumb_func_end sub_803D8C0 + + thumb_func_start sub_803DAC0 +sub_803DAC0: @ 803DAC0 + push {r4,lr} + ldr r1, =gFightStateTracker + movs r0, 0 + strb r0, [r1] + ldr r0, =gBattleTypeFlags + ldr r1, [r0] + ldr r0, =0x02000002 + ands r0, r1 + cmp r0, 0 + beq _0803DB7C + ldr r0, =0x003f0100 + ands r1, r0 + cmp r1, 0 + beq _0803DB44 + ldr r3, =gBattleOutcome + ldrb r2, [r3] + movs r0, 0x80 + ands r0, r2 + cmp r0, 0 + beq _0803DB2C + ldr r1, =gBattlescriptCurrInstr + ldr r0, =gUnknown_082DB9C8 + str r0, [r1] + movs r0, 0x7F + ands r0, r2 + strb r0, [r3] + ldr r0, =gSaveBlock2Ptr + ldr r1, [r0] + ldr r0, =0x00000ca9 + adds r1, r0 + ldrb r0, [r1] + movs r2, 0x8 + orrs r0, r2 + strb r0, [r1] + b _0803DB82 + .pool +_0803DB2C: + ldr r1, =gBattlescriptCurrInstr + ldr r0, =gUnknown_082DAA0B + str r0, [r1] + movs r0, 0x7F + ands r0, r2 + strb r0, [r3] + b _0803DB82 + .pool +_0803DB44: + ldr r1, =gBattleTextBuff1 + ldr r4, =gBattleOutcome + ldrb r0, [r4] + strb r0, [r1] + movs r0, 0 + bl GetBankByPlayerAI + ldr r1, =gBankAttacker + strb r0, [r1] + ldr r1, =gBattlescriptCurrInstr + ldr r0, =gUnknown_082DAA35 + str r0, [r1] + ldrb r1, [r4] + movs r0, 0x7F + ands r0, r1 + strb r0, [r4] + b _0803DB82 + .pool +_0803DB7C: + ldr r1, =gBattlescriptCurrInstr + ldr r0, =gUnknown_082DA96D + str r0, [r1] +_0803DB82: + ldr r1, =gBattleMainFunc + ldr r0, =sub_803DCD8 + str r0, [r1] + pop {r4} + pop {r0} + bx r0 + .pool + thumb_func_end sub_803DAC0 + + thumb_func_start sub_803DBA0 +sub_803DBA0: @ 803DBA0 + push {lr} + ldr r1, =gFightStateTracker + movs r0, 0 + strb r0, [r1] + ldr r1, =gBattleTypeFlags + ldr r2, [r1] + ldr r0, =0x003f0100 + ands r0, r2 + cmp r0, 0 + beq _0803DBFC + movs r0, 0x8 + ands r2, r0 + cmp r2, 0 + beq _0803DBFC + ldr r1, =gBattlescriptCurrInstr + ldr r0, =gUnknown_082DB9C1 + str r0, [r1] + ldr r1, =gBattleOutcome + movs r0, 0x9 + strb r0, [r1] + ldr r0, =gSaveBlock2Ptr + ldr r1, [r0] + ldr r0, =0x00000ca9 + adds r1, r0 + ldrb r0, [r1] + movs r2, 0x8 + orrs r0, r2 + strb r0, [r1] + b _0803DC6A + .pool +_0803DBFC: + ldr r0, [r1] + movs r1, 0x80 + lsls r1, 19 + ands r0, r1 + cmp r0, 0 + beq _0803DC24 + ldr r1, =gBattlescriptCurrInstr + ldr r0, =gUnknown_082DB9C1 + str r0, [r1] + ldr r1, =gBattleOutcome + movs r0, 0x9 + strb r0, [r1] + b _0803DC6A + .pool +_0803DC24: + ldr r1, =gProtectStructs + ldr r0, =gBankAttacker + ldrb r0, [r0] + lsls r0, 4 + adds r0, r1 + ldrb r0, [r0, 0x1] + lsls r0, 27 + lsrs r0, 30 + cmp r0, 0x1 + beq _0803DC54 + cmp r0, 0x2 + beq _0803DC64 + ldr r1, =gBattlescriptCurrInstr + ldr r0, =gUnknown_082DAAF0 + b _0803DC68 + .pool +_0803DC54: + ldr r1, =gBattlescriptCurrInstr + ldr r0, =gUnknown_082DAADB + b _0803DC68 + .pool +_0803DC64: + ldr r1, =gBattlescriptCurrInstr + ldr r0, =gUnknown_082DAAE9 +_0803DC68: + str r0, [r1] +_0803DC6A: + ldr r1, =gBattleMainFunc + ldr r0, =sub_803DCD8 + str r0, [r1] + pop {r0} + bx r0 + .pool + thumb_func_end sub_803DBA0 + + thumb_func_start bc_80158BC +bc_80158BC: @ 803DC84 + ldr r1, =gFightStateTracker + movs r0, 0 + strb r0, [r1] + ldr r1, =gBattleTextBuff1 + movs r0, 0xFD + strb r0, [r1] + movs r0, 0x7 + strb r0, [r1, 0x1] + ldr r2, =gBankAttacker + ldrb r0, [r2] + strb r0, [r1, 0x2] + ldr r3, =gBattlePartyID + ldrb r0, [r2] + lsls r0, 1 + adds r0, r3 + ldrh r0, [r0] + strb r0, [r1, 0x3] + movs r0, 0xFF + strb r0, [r1, 0x4] + ldr r1, =gBattlescriptCurrInstr + ldr r0, =gUnknown_082DAAF7 + str r0, [r1] + ldr r1, =gBattleMainFunc + ldr r0, =sub_803DCD8 + str r0, [r1] + bx lr + .pool + thumb_func_end bc_80158BC + + thumb_func_start sub_803DCD8 +sub_803DCD8: @ 803DCD8 + push {r4-r7,lr} + mov r7, r8 + push {r7} + ldr r0, =gFightStateTracker + ldrb r0, [r0] + subs r0, 0xB + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bls _0803DCEE + b _0803DE10 +_0803DCEE: + ldr r0, =gBattleTypeFlags + ldr r1, [r0] + ldr r0, =0x023f0b92 + ands r1, r0 + cmp r1, 0 + bne _0803DDB6 + ldr r2, =gActiveBank + strb r1, [r2] + ldr r0, =gNoOfAllBanks + ldrb r0, [r0] + cmp r1, r0 + bcs _0803DDB2 + adds r5, r2, 0 + ldr r0, =gBattlePartyID + mov r8, r0 + movs r7, 0x64 + ldr r6, =gPlayerParty +_0803DD10: + ldrb r0, [r5] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + bne _0803DDA0 + ldr r4, =gBattleResults + ldrh r0, [r4, 0x6] + cmp r0, 0 + bne _0803DD74 + ldrb r0, [r5] + lsls r0, 1 + add r0, r8 + ldrh r0, [r0] + muls r0, r7 + adds r0, r6 + movs r1, 0xB + movs r2, 0 + bl GetMonData + strh r0, [r4, 0x6] + ldrb r0, [r5] + lsls r0, 1 + add r0, r8 + ldrh r0, [r0] + muls r0, r7 + adds r0, r6 + movs r1, 0x2 + adds r2, r4, 0 + adds r2, 0x8 + bl GetMonData + b _0803DDA0 + .pool +_0803DD74: + ldrb r0, [r5] + lsls r0, 1 + add r0, r8 + ldrh r0, [r0] + muls r0, r7 + adds r0, r6 + movs r1, 0xB + movs r2, 0 + bl GetMonData + strh r0, [r4, 0x26] + ldrb r0, [r5] + lsls r0, 1 + add r0, r8 + ldrh r0, [r0] + muls r0, r7 + adds r0, r6 + movs r1, 0x2 + adds r2, r4, 0 + adds r2, 0x14 + bl GetMonData +_0803DDA0: + ldrb r0, [r5] + adds r0, 0x1 + strb r0, [r5] + ldr r1, =gNoOfAllBanks + lsls r0, 24 + lsrs r0, 24 + ldrb r1, [r1] + cmp r0, r1 + bcc _0803DD10 +_0803DDB2: + bl sub_80EC728 +_0803DDB6: + ldr r0, =gBattleTypeFlags + ldr r0, [r0] + ldr r1, =0x023f0b9a + ands r0, r1 + cmp r0, 0 + bne _0803DDD2 + ldr r0, =gBattleResults + ldrb r1, [r0, 0x5] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _0803DDD2 + bl sub_80EE184 +_0803DDD2: + bl sub_8186444 + movs r0, 0x3 + bl BeginFastPaletteFade + movs r0, 0x5 + bl FadeOutMapMusic + ldr r1, =gBattleMainFunc + ldr r0, =sub_803DE40 + str r0, [r1] + ldr r1, =gUnknown_030061E8 + ldr r0, =sub_8038420 + str r0, [r1] + b _0803DE2A + .pool +_0803DE10: + ldr r0, =gBattleExecBuffer + ldr r0, [r0] + cmp r0, 0 + bne _0803DE2A + ldr r1, =gBattleScriptingCommandsTable + ldr r0, =gBattlescriptCurrInstr + ldr r0, [r0] + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + bl _call_via_r0 +_0803DE2A: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .pool + thumb_func_end sub_803DCD8 + + thumb_func_start sub_803DE40 +sub_803DE40: @ 803DE40 + push {lr} + ldr r0, =gPaletteFade + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _0803DE86 + bl ResetSpriteData + ldr r0, =gUnknown_03005D54 + ldrb r0, [r0] + cmp r0, 0 + beq _0803DE62 + ldr r0, =gBattleOutcome + ldrb r0, [r0] + cmp r0, 0x1 + beq _0803DE80 +_0803DE62: + ldr r1, =gBattleMainFunc + ldr r0, =c4_overworld + str r0, [r1] + b _0803DEA2 + .pool +_0803DE80: + ldr r1, =gBattleMainFunc + ldr r0, =bc_evolution_cutscene + str r0, [r1] +_0803DE86: + bl FreeAllWindowBuffers + ldr r0, =gBattleTypeFlags + ldr r0, [r0] + movs r1, 0x2 + ands r0, r1 + cmp r0, 0 + bne _0803DEA2 + bl sub_805F094 + bl sub_8057028 + bl dp11_free +_0803DEA2: + pop {r0} + bx r0 + .pool + thumb_func_end sub_803DE40 + + thumb_func_start bc_evolution_cutscene +bc_evolution_cutscene: @ 803DEB4 + push {r4-r6,lr} + ldr r0, =gUnknown_03005D54 + ldrb r1, [r0] + adds r3, r0, 0 + cmp r1, 0 + beq _0803DF2E +_0803DEC0: + movs r6, 0 +_0803DEC2: + ldrb r2, [r3] + ldr r0, =gBitTable + lsls r1, r6, 2 + adds r1, r0 + ldr r1, [r1] + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0 + beq _0803DF20 + bics r2, r1 + strb r2, [r3] + movs r0, 0x64 + adds r1, r6, 0 + muls r1, r0 + ldr r0, =gPlayerParty + adds r5, r1, r0 + adds r0, r5, 0 + movs r1, 0 + bl GetEvolutionTargetSpecies + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0 + beq _0803DF20 + bl FreeAllWindowBuffers + ldr r0, =gBattleMainFunc + ldr r1, =sub_803DF48 + str r1, [r0] + lsls r3, r6, 24 + lsrs r3, 24 + adds r0, r5, 0 + adds r1, r4, 0 + movs r2, 0x1 + bl evolution_cutscene + b _0803DF34 + .pool +_0803DF20: + adds r6, 0x1 + ldr r3, =gUnknown_03005D54 + cmp r6, 0x5 + ble _0803DEC2 + ldrb r0, [r3] + cmp r0, 0 + bne _0803DEC0 +_0803DF2E: + ldr r1, =gBattleMainFunc + ldr r0, =c4_overworld + str r0, [r1] +_0803DF34: + pop {r4-r6} + pop {r0} + bx r0 + .pool + thumb_func_end bc_evolution_cutscene + + thumb_func_start sub_803DF48 +sub_803DF48: @ 803DF48 + push {lr} + ldr r0, =gMain + ldr r1, [r0, 0x4] + ldr r0, =sub_8038420 + cmp r1, r0 + bne _0803DF5A + ldr r1, =gBattleMainFunc + ldr r0, =bc_evolution_cutscene + str r0, [r1] +_0803DF5A: + pop {r0} + bx r0 + .pool + thumb_func_end sub_803DF48 + + thumb_func_start c4_overworld +c4_overworld: @ 803DF70 + push {r4-r6,lr} + ldr r6, =gBattleTypeFlags + ldr r0, [r6] + movs r5, 0x2 + ands r0, r5 + cmp r0, 0 + bne _0803DF8C + ldr r4, =gPlayerParty + adds r0, r4, 0 + bl RandomlyGivePartyPokerus + adds r0, r4, 0 + bl PartySpreadPokerus +_0803DF8C: + ldr r4, [r6] + adds r0, r4, 0 + ands r0, r5 + cmp r0, 0 + beq _0803DF9E + ldr r0, =gUnknown_03003124 + ldrb r0, [r0] + cmp r0, 0 + bne _0803DFEC +_0803DF9E: + ldr r1, =gScriptResult + ldr r5, =gBattleOutcome + ldrb r0, [r5] + strh r0, [r1] + ldr r3, =gMain + ldr r0, =0x00000439 + adds r2, r3, r0 + ldrb r1, [r2] + movs r0, 0x3 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + ldr r0, =gUnknown_03005D00 + ldr r0, [r0] + str r0, [r3] + movs r0, 0x80 + lsls r0, 3 + ands r4, r0 + cmp r4, 0 + beq _0803DFDE + ldr r0, =gEnemyParty + bl UpdateRoamerHPStatus + ldrb r1, [r5] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _0803DFDA + cmp r1, 0x7 + bne _0803DFDE +_0803DFDA: + bl SetRoamerInactive +_0803DFDE: + movs r0, 0x5A + bl m4aSongNumStop + ldr r0, =gMain + ldr r0, [r0, 0x8] + bl SetMainCallback2 +_0803DFEC: + pop {r4-r6} + pop {r0} + bx r0 + .pool + thumb_func_end c4_overworld + + thumb_func_start bc_move_exec_returning +bc_move_exec_returning: @ 803E018 + push {lr} + ldr r0, =gFightStateTracker + ldrb r0, [r0] + subs r0, 0xB + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bhi _0803E060 + ldr r3, =gBattleResources + ldr r0, [r3] + ldr r0, [r0, 0xC] + adds r1, r0, 0 + adds r1, 0x20 + ldrb r0, [r1] + cmp r0, 0 + beq _0803E03C + subs r0, 0x1 + strb r0, [r1] +_0803E03C: + ldr r2, =gBattleMainFunc + ldr r0, [r3] + ldr r1, [r0, 0xC] + adds r0, r1, 0 + adds r0, 0x20 + ldrb r0, [r0] + lsls r0, 2 + adds r1, r0 + ldr r0, [r1] + str r0, [r2] + b _0803E07A + .pool +_0803E060: + ldr r0, =gBattleExecBuffer + ldr r0, [r0] + cmp r0, 0 + bne _0803E07A + ldr r1, =gBattleScriptingCommandsTable + ldr r0, =gBattlescriptCurrInstr + ldr r0, [r0] + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + bl _call_via_r0 +_0803E07A: + pop {r0} + bx r0 + .pool + thumb_func_end bc_move_exec_returning + + thumb_func_start sub_803E08C +sub_803E08C: @ 803E08C + push {lr} + ldr r0, =gBattleExecBuffer + ldr r0, [r0] + cmp r0, 0 + bne _0803E0A8 + ldr r1, =gBattleScriptingCommandsTable + ldr r0, =gBattlescriptCurrInstr + ldr r0, [r0] + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + bl _call_via_r0 +_0803E0A8: + pop {r0} + bx r0 + .pool + thumb_func_end sub_803E08C + + thumb_func_start sub_803E0B8 +sub_803E0B8: @ 803E0B8 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + movs r0, 0x4 + str r0, [sp] + ldr r6, =gBankAttacker + ldr r1, =gTurnOrder + ldr r0, =gUnknown_02024082 + ldrb r0, [r0] + adds r0, r1 + ldrb r0, [r0] + strb r0, [r6] + ldr r1, =gBattleStruct + ldr r3, [r1] + adds r0, r3, 0 + adds r0, 0x91 + ldrb r2, [r0] + ldr r1, =gBitTable + ldrb r0, [r6] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + ands r2, r0 + cmp r2, 0 + beq _0803E110 + ldr r1, =gFightStateTracker + movs r0, 0xC + b _0803E83C + .pool +_0803E110: + ldr r1, =gCritMultiplier + movs r0, 0x1 + strb r0, [r1] + ldr r1, =gBattleScripting + movs r0, 0x1 + strb r0, [r1, 0xE] + ldr r5, =0x000001a3 + adds r0, r3, r5 + strb r2, [r0] + ldr r0, =gBattleMoveFlags + strb r2, [r0] + ldr r0, =gUnknown_02024212 + strb r2, [r0] + ldr r0, =gBattleCommunication + strb r2, [r0, 0x6] + ldr r2, =gCurrMovePos + ldr r0, =gUnknown_020241E9 + mov r9, r0 + ldrb r0, [r6] + ldr r3, =gBattleStruct + ldr r1, [r3] + adds r0, r1 + adds r0, 0x80 + ldrb r0, [r0] + mov r5, r9 + strb r0, [r5] + strb r0, [r2] + ldr r1, =gProtectStructs + ldrb r4, [r6] + lsls r0, r4, 4 + adds r3, r0, r1 + ldrb r1, [r3] + lsls r0, r1, 29 + mov r8, r2 + cmp r0, 0 + bge _0803E1BC + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r3] + ldr r2, =gCurrentMove + ldr r1, =gUnknown_020241EC + movs r0, 0xA5 + strh r0, [r1] + strh r0, [r2] + ldr r2, =gHitMarker + ldr r0, [r2] + movs r1, 0x80 + lsls r1, 4 + orrs r0, r1 + str r0, [r2] + movs r0, 0xA5 + movs r1, 0 + bl GetMoveTarget + ldrb r1, [r6] + ldr r3, =gBattleStruct + ldr r2, [r3] + b _0803E316 + .pool +_0803E1BC: + ldr r5, =gBattleMons + mov r10, r5 + movs r0, 0x58 + adds r5, r4, 0 + muls r5, r0 + mov r0, r10 + adds r0, 0x50 + adds r0, r5, r0 + ldr r1, [r0] + movs r0, 0x80 + lsls r0, 5 + ands r0, r1 + cmp r0, 0 + bne _0803E1E2 + movs r7, 0x80 + lsls r7, 15 + ands r7, r1 + cmp r7, 0 + beq _0803E204 +_0803E1E2: + ldr r3, =gCurrentMove + ldr r2, =gUnknown_020241EC + ldr r1, =gUnknown_02024268 + lsls r0, r4, 1 + adds r0, r1 + ldrh r0, [r0] + strh r0, [r2] + strh r0, [r3] + b _0803E33C + .pool +_0803E204: + ldr r1, =gDisableStructs + mov r12, r1 + lsls r0, r4, 3 + subs r0, r4 + lsls r0, 2 + add r0, r12 + ldrh r3, [r0, 0x6] + adds r1, r3, 0 + cmp r1, 0 + beq _0803E2DC + ldrb r2, [r0, 0xC] + lsls r0, r2, 1 + adds r0, r5 + mov r4, r10 + adds r4, 0xC + adds r0, r4 + ldrh r0, [r0] + cmp r1, r0 + bne _0803E268 + ldr r2, =gCurrentMove + ldr r0, =gUnknown_020241EC + strh r3, [r0] + strh r3, [r2] + ldrb r1, [r6] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + add r0, r12 + ldrb r0, [r0, 0xC] + mov r3, r9 + strb r0, [r3] + mov r5, r8 + strb r0, [r5] + ldrh r0, [r2] + movs r1, 0 + bl GetMoveTarget + ldrb r1, [r6] + ldr r3, =gBattleStruct + ldr r2, [r3] + b _0803E316 + .pool +_0803E268: + cmp r1, 0 + beq _0803E2DC + cmp r1, r0 + beq _0803E2DC + mov r5, r9 + strb r2, [r5] + mov r0, r8 + strb r2, [r0] + ldr r3, =gCurrentMove + ldr r2, =gUnknown_020241EC + ldrb r0, [r0] + lsls r0, 1 + ldrb r1, [r6] + movs r5, 0x58 + muls r1, r5 + adds r0, r1 + adds r0, r4 + ldrh r0, [r0] + strh r0, [r2] + strh r0, [r3] + ldrb r1, [r6] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + add r0, r12 + movs r2, 0 + strh r7, [r0, 0x6] + ldrb r1, [r6] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + add r0, r12 + strb r2, [r0, 0xC] + ldrb r0, [r6] + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + add r1, r12 + ldrb r2, [r1, 0xE] + movs r0, 0x10 + negs r0, r0 + ands r0, r2 + strb r0, [r1, 0xE] + ldrh r0, [r3] + movs r1, 0 + bl GetMoveTarget + ldrb r1, [r6] + ldr r3, =gBattleStruct + ldr r2, [r3] + b _0803E316 + .pool +_0803E2DC: + ldr r3, =gBattleMons + mov r5, r8 + ldrb r0, [r5] + lsls r0, 1 + ldr r4, =gBankAttacker + ldrb r2, [r4] + movs r1, 0x58 + muls r1, r2 + adds r0, r1 + adds r3, 0xC + adds r0, r3 + ldr r1, =gUnknown_02024274 + lsls r2, 1 + adds r2, r1 + ldrh r3, [r0] + ldrh r2, [r2] + cmp r3, r2 + beq _0803E334 + ldr r1, =gCurrentMove + ldr r0, =gUnknown_020241EC + strh r3, [r0] + strh r3, [r1] + ldrh r0, [r1] + movs r1, 0 + bl GetMoveTarget + ldrb r1, [r4] + ldr r2, =gBattleStruct + ldr r2, [r2] +_0803E316: + adds r1, r2 + strb r0, [r1, 0xC] + b _0803E33C + .pool +_0803E334: + ldr r1, =gCurrentMove + ldr r0, =gUnknown_020241EC + strh r3, [r0] + strh r3, [r1] +_0803E33C: + ldr r2, =gBattleMons + ldr r1, =gBankAttacker + ldrb r3, [r1] + movs r0, 0x58 + muls r0, r3 + adds r0, r2 + ldrh r0, [r0, 0x28] + mov r8, r1 + cmp r0, 0 + beq _0803E384 + adds r0, r3, 0 + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + bne _0803E37C + ldr r0, =gBattleResults + ldr r1, =gCurrentMove + ldrh r1, [r1] + strh r1, [r0, 0x22] + b _0803E384 + .pool +_0803E37C: + ldr r0, =gBattleResults + ldr r1, =gCurrentMove + ldrh r1, [r1] + strh r1, [r0, 0x24] +_0803E384: + mov r1, r8 + ldrb r0, [r1] + bl GetBankSide + movs r1, 0x1 + eors r0, r1 + lsls r0, 24 + lsrs r6, r0, 24 + ldr r1, =gSideTimers + lsls r0, r6, 1 + adds r0, r6 + lsls r0, 2 + adds r5, r0, r1 + ldrb r0, [r5, 0x8] + cmp r0, 0 + beq _0803E400 + ldr r2, =gBattleMoves + ldr r0, =gCurrentMove + ldrh r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x6] + cmp r0, 0 + bne _0803E400 + mov r3, r8 + ldrb r0, [r3] + bl GetBankSide + adds r4, r0, 0 + ldrb r0, [r5, 0x9] + bl GetBankSide + lsls r4, 24 + lsls r0, 24 + cmp r4, r0 + beq _0803E400 + ldr r1, =gBattleMons + ldrb r2, [r5, 0x9] + movs r0, 0x58 + muls r0, r2 + adds r0, r1 + ldrh r0, [r0, 0x28] + cmp r0, 0 + beq _0803E400 + ldr r0, =gBankTarget + strb r2, [r0] + b _0803E76A + .pool +_0803E400: + ldr r0, =gBattleTypeFlags + ldr r0, [r0] + movs r1, 0x1 + ands r0, r1 + ldr r5, =gBankAttacker + mov r8, r5 + cmp r0, 0 + bne _0803E412 + b _0803E6E0 +_0803E412: + ldr r1, =gSideTimers + lsls r0, r6, 1 + adds r0, r6 + lsls r0, 2 + adds r0, r1 + ldrb r5, [r0, 0x8] + cmp r5, 0 + beq _0803E424 + b _0803E630 +_0803E424: + ldr r2, =gBattleMoves + ldr r0, =gCurrentMove + ldrh r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r4, r0, r2 + ldrb r0, [r4, 0x1] + cmp r0, 0 + bne _0803E440 + ldrb r0, [r4, 0x6] + cmp r0, 0x10 + bne _0803E440 + b _0803E630 +_0803E440: + ldr r3, =gBattleMons + ldr r2, =gBankAttacker + ldrb r6, [r2] + ldr r0, =gBattleStruct + ldr r0, [r0] + adds r0, r6, r0 + ldrb r1, [r0, 0xC] + movs r0, 0x58 + muls r0, r1 + adds r0, r3 + adds r0, 0x20 + ldrb r0, [r0] + mov r8, r2 + cmp r0, 0x1F + bne _0803E460 + b _0803E630 +_0803E460: + ldrb r0, [r4, 0x2] + cmp r0, 0xD + beq _0803E468 + b _0803E630 +_0803E468: + adds r0, r6, 0 + bl GetBankSide + lsls r0, 24 + lsrs r6, r0, 24 + ldr r1, =gActiveBank + strb r5, [r1] + ldr r0, =gNoOfAllBanks + ldrb r0, [r0] + cmp r5, r0 + bcs _0803E4E0 + adds r4, r1, 0 +_0803E480: + ldrb r0, [r4] + bl GetBankSide + lsls r0, 24 + lsrs r0, 24 + cmp r6, r0 + beq _0803E4CE + ldr r0, =gBankAttacker + ldrb r1, [r0] + ldr r0, =gBattleStruct + ldr r0, [r0] + adds r1, r0 + ldrb r0, [r1, 0xC] + ldrb r1, [r4] + cmp r0, r1 + beq _0803E4CE + ldr r1, =gBattleMons + ldrb r2, [r4] + movs r0, 0x58 + muls r0, r2 + adds r0, r1 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0x1F + bne _0803E4CE + adds r0, r2, 0 + bl sub_8048728 + lsls r0, 24 + lsrs r0, 24 + ldr r3, [sp] + cmp r0, r3 + bcs _0803E4CE + ldrb r0, [r4] + bl sub_8048728 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp] +_0803E4CE: + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + ldr r1, =gNoOfAllBanks + lsls r0, 24 + lsrs r0, 24 + ldrb r1, [r1] + cmp r0, r1 + bcc _0803E480 +_0803E4E0: + ldr r5, [sp] + cmp r5, 0x4 + beq _0803E4E8 + b _0803E5E2 +_0803E4E8: + ldr r2, =gBattleMoves + ldr r0, =gUnknown_020241EC + ldrh r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x6] + ands r5, r0 + cmp r5, 0 + beq _0803E568 + ldr r0, =gBankAttacker + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + bne _0803E548 + bl Random + movs r1, 0x1 + ands r1, r0 + cmp r1, 0 + beq _0803E544 + movs r0, 0x1 + b _0803E55A + .pool +_0803E544: + movs r0, 0x3 + b _0803E55A +_0803E548: + bl Random + movs r1, 0x1 + ands r1, r0 + cmp r1, 0 + beq _0803E558 + movs r0, 0 + b _0803E55A +_0803E558: + movs r0, 0x2 +_0803E55A: + bl GetBankByPlayerAI + ldr r1, =gBankTarget + strb r0, [r1] + b _0803E578 + .pool +_0803E568: + ldr r2, =gBankTarget + ldr r0, =gBankAttacker + ldrb r0, [r0] + ldr r1, =gBattleStruct + ldr r1, [r1] + adds r0, r1 + ldrb r0, [r0, 0xC] + strb r0, [r2] +_0803E578: + ldr r7, =gAbsentBankFlags + ldrb r0, [r7] + ldr r1, =gBitTable + mov r8, r1 + ldr r5, =gBankTarget + ldrb r1, [r5] + lsls r1, 2 + add r1, r8 + ldr r1, [r1] + ands r0, r1 + cmp r0, 0 + bne _0803E592 + b _0803E76A +_0803E592: + ldr r6, =gBankAttacker + ldrb r0, [r6] + bl GetBankSide + adds r4, r0, 0 + ldrb r0, [r5] + bl GetBankSide + lsls r4, 24 + lsls r0, 24 + cmp r4, r0 + beq _0803E5C4 + ldrb r0, [r5] + b _0803E758 + .pool +_0803E5C4: + ldrb r0, [r6] + bl GetBankIdentity + movs r1, 0x1 + eors r0, r1 + lsls r0, 24 + lsrs r0, 24 + bl GetBankByPlayerAI + strb r0, [r5] + ldrb r1, [r7] + ldrb r2, [r5] + lsls r0, r2, 2 + add r0, r8 + b _0803E74E +_0803E5E2: + ldr r4, =gActiveBank + ldr r0, =gTurnOrder + ldr r3, [sp] + adds r0, r3, r0 + ldrb r0, [r0] + strb r0, [r4] + ldrb r0, [r4] + ldr r2, =gBattleMons + movs r1, 0x58 + muls r1, r0 + adds r1, r2 + adds r1, 0x20 + ldrb r1, [r1] + bl RecordAbilityBattle + ldr r2, =gSpecialStatuses + ldrb r1, [r4] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0] + movs r2, 0x2 + orrs r1, r2 + strb r1, [r0] + ldr r1, =gBankTarget + ldrb r0, [r4] + strb r0, [r1] + b _0803E76A + .pool +_0803E630: + ldr r0, =gBattleTypeFlags + ldr r0, [r0] + movs r4, 0x1 + ands r0, r4 + cmp r0, 0 + beq _0803E6E0 + ldr r2, =gBattleMoves + ldr r0, =gUnknown_020241EC + ldrh r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0, 0x6] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _0803E6E0 + mov r5, r8 + ldrb r0, [r5] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + bne _0803E684 + bl Random + adds r1, r4, 0 + ands r1, r0 + cmp r1, 0 + beq _0803E680 + movs r0, 0x1 + b _0803E696 + .pool +_0803E680: + movs r0, 0x3 + b _0803E696 +_0803E684: + bl Random + adds r1, r4, 0 + ands r1, r0 + cmp r1, 0 + beq _0803E694 + movs r0, 0 + b _0803E696 +_0803E694: + movs r0, 0x2 +_0803E696: + bl GetBankByPlayerAI + ldr r1, =gBankTarget + strb r0, [r1] + ldr r0, =gAbsentBankFlags + ldrb r1, [r0] + ldr r2, =gBitTable + ldr r5, =gBankTarget + ldrb r0, [r5] + lsls r0, 2 + adds r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, 0 + beq _0803E76A + ldr r0, =gBankAttacker + ldrb r0, [r0] + bl GetBankSide + adds r4, r0, 0 + ldrb r0, [r5] + bl GetBankSide + lsls r4, 24 + lsls r0, 24 + cmp r4, r0 + beq _0803E76A + ldrb r0, [r5] + b _0803E758 + .pool +_0803E6E0: + ldr r5, =gBankTarget + mov r2, r8 + ldrb r0, [r2] + ldr r1, =gBattleStruct + ldr r1, [r1] + adds r0, r1 + ldrb r0, [r0, 0xC] + strb r0, [r5] + ldr r6, =gAbsentBankFlags + ldrb r1, [r6] + ldr r7, =gBitTable + ldrb r0, [r5] + lsls r0, 2 + adds r0, r7 + ldr r0, [r0] + ands r1, r0 + cmp r1, 0 + beq _0803E76A + ldrb r0, [r2] + bl GetBankSide + adds r4, r0, 0 + ldrb r0, [r5] + bl GetBankSide + lsls r4, 24 + lsls r0, 24 + cmp r4, r0 + beq _0803E730 + ldrb r0, [r5] + b _0803E758 + .pool +_0803E730: + mov r1, r8 + ldrb r0, [r1] + bl GetBankIdentity + movs r1, 0x1 + eors r0, r1 + lsls r0, 24 + lsrs r0, 24 + bl GetBankByPlayerAI + strb r0, [r5] + ldrb r1, [r6] + ldrb r2, [r5] + lsls r0, r2, 2 + adds r0, r7 +_0803E74E: + ldr r0, [r0] + ands r1, r0 + cmp r1, 0 + beq _0803E76A + adds r0, r2, 0 +_0803E758: + bl GetBankIdentity + movs r1, 0x2 + eors r0, r1 + lsls r0, 24 + lsrs r0, 24 + bl GetBankByPlayerAI + strb r0, [r5] +_0803E76A: + ldr r0, =gBattleTypeFlags + ldr r1, [r0] + movs r2, 0x80 + lsls r2, 10 + ands r1, r2 + adds r5, r0, 0 + cmp r1, 0 + beq _0803E808 + ldr r0, =gProtectStructs + ldr r4, =gBankAttacker + ldrb r2, [r4] + lsls r1, r2, 4 + adds r1, r0 + ldrb r0, [r1, 0x2] + lsls r0, 27 + cmp r0, 0 + bge _0803E808 + ldr r1, =gBattleMons + movs r0, 0x58 + muls r0, r2 + adds r0, r1 + ldrh r0, [r0, 0x28] + cmp r0, 0 + bne _0803E7B4 + ldr r1, =gFightStateTracker + movs r0, 0xC + b _0803E83C + .pool +_0803E7B4: + ldr r3, =gUnknown_02024230 + lsls r0, r2, 2 + adds r0, r3 + ldr r0, [r0] + cmp r0, 0 + beq _0803E7EC + ldr r1, =gBattleCommunication + movs r2, 0 + movs r0, 0x4 + strb r0, [r1, 0x5] + ldr r1, =gBattlescriptCurrInstr + ldrb r0, [r4] + lsls r0, 2 + adds r0, r3 + ldr r0, [r0] + str r0, [r1] + ldrb r0, [r4] + lsls r0, 2 + adds r0, r3 + str r2, [r0] + b _0803E824 + .pool +_0803E7EC: + ldr r1, =gBattleCommunication + movs r0, 0x4 + strb r0, [r1, 0x5] + ldr r1, =gBattlescriptCurrInstr + ldr r0, =gUnknown_082DB6AD + str r0, [r1] + b _0803E824 + .pool +_0803E808: + ldr r4, =gBattlescriptCurrInstr + ldr r3, =gUnknown_082D86A8 + ldr r2, =gBattleMoves + ldr r0, =gCurrentMove + ldrh r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r3 + ldr r0, [r0] + str r0, [r4] +_0803E824: + ldr r0, [r5] + movs r1, 0x80 + lsls r1, 11 + ands r0, r1 + cmp r0, 0 + beq _0803E838 + ldr r0, =gBankAttacker + ldrb r0, [r0] + bl sub_81A56E8 +_0803E838: + ldr r1, =gFightStateTracker + movs r0, 0xA +_0803E83C: + strb r0, [r1] + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .pool + thumb_func_end sub_803E0B8 + + thumb_func_start bs2_8016374 +bs2_8016374: @ 803E868 + push {r4,lr} + ldr r3, =gBankAttacker + ldr r1, =gTurnOrder + ldr r0, =gUnknown_02024082 + ldrb r0, [r0] + adds r0, r1 + ldrb r0, [r0] + strb r0, [r3] + ldr r0, =gUnknown_02022E14 + movs r2, 0 + strh r2, [r0] + ldr r0, =gUnknown_02022E16 + strh r2, [r0] + ldr r1, =gUnknown_020244AC + ldrb r0, [r3] + adds r0, r1 + strb r2, [r0] + ldr r1, =gUnknown_020244B0 + ldrb r0, [r3] + adds r0, r1 + strb r2, [r0] + ldr r2, =gBattleTextBuff1 + movs r0, 0xFD + strb r0, [r2] + movs r0, 0x7 + strb r0, [r2, 0x1] + ldrb r4, [r3] + strb r4, [r2, 0x2] + ldrb r0, [r3] + ldr r1, =gBattleStruct + ldr r1, [r1] + adds r0, r1 + adds r0, 0x58 + ldrb r0, [r0] + strb r0, [r2, 0x3] + movs r0, 0xFF + strb r0, [r2, 0x4] + ldr r0, =gBattleScripting + strb r4, [r0, 0x17] + ldr r1, =gBattlescriptCurrInstr + ldr r0, =gUnknown_082DAB15 + str r0, [r1] + ldr r1, =gFightStateTracker + movs r0, 0xA + strb r0, [r1] + ldr r1, =gBattleResults + ldrb r0, [r1, 0x2] + cmp r0, 0xFE + bhi _0803E8CE + adds r0, 0x1 + strb r0, [r1, 0x2] +_0803E8CE: + pop {r4} + pop {r0} + bx r0 + .pool + thumb_func_end bs2_8016374 + + thumb_func_start sub_803E90C +sub_803E90C: @ 803E90C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + ldr r4, =gBankAttacker + ldr r2, =gBankTarget + ldr r1, =gTurnOrder + ldr r0, =gUnknown_02024082 + ldrb r0, [r0] + adds r0, r1 + ldrb r0, [r0] + strb r0, [r2] + strb r0, [r4] + ldr r0, =gUnknown_02022E14 + movs r1, 0 + strh r1, [r0] + ldr r0, =gUnknown_02022E16 + strh r1, [r0] + ldrb r0, [r4] + bl sub_8045868 + ldr r5, =gLastUsedItem + ldr r2, =gBattleBufferB + ldrb r1, [r4] + lsls r1, 9 + adds r0, r2, 0x1 + adds r0, r1, r0 + ldrb r3, [r0] + adds r2, 0x2 + adds r1, r2 + ldrb r0, [r1] + lsls r0, 8 + orrs r3, r0 + strh r3, [r5] + cmp r3, 0xC + bhi _0803E998 + ldr r2, =gBattlescriptCurrInstr + ldr r1, =gUnknown_082DBD08 + ldrh r0, [r5] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + str r0, [r2] + ldr r0, =gFightStateTracker + mov r10, r0 + b _0803EBF6 + .pool +_0803E998: + adds r0, r3, 0 + subs r0, 0x50 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1 + bhi _0803E9C0 + ldr r0, =gBattlescriptCurrInstr + ldr r1, =gUnknown_082DBD54 + ldr r1, [r1] + str r1, [r0] + ldr r1, =gFightStateTracker + mov r10, r1 + b _0803EBF6 + .pool +_0803E9C0: + ldrb r0, [r4] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + bne _0803E9E8 + ldr r0, =gBattlescriptCurrInstr + ldr r1, =gUnknown_082DBD3C + ldr r1, [r1] + str r1, [r0] + ldr r2, =gFightStateTracker + mov r10, r2 + b _0803EBF6 + .pool +_0803E9E8: + ldr r3, =gBattleScripting + ldrb r0, [r4] + strb r0, [r3, 0x17] + lsls r0, 24 + lsrs r0, 25 + ldr r2, =gBattleStruct + ldr r1, [r2] + adds r0, r1 + adds r0, 0xC4 + ldrb r0, [r0] + subs r0, 0x1 + mov r8, r4 + ldr r1, =gBattlescriptCurrInstr + mov r9, r1 + ldr r6, =gUnknown_082DBD3C + mov r12, r3 + adds r7, r2, 0 + ldr r2, =gFightStateTracker + mov r10, r2 + cmp r0, 0x4 + bls _0803EA14 + b _0803EBDE +_0803EA14: + lsls r0, 2 + ldr r1, =_0803EA38 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .pool + .align 2, 0 +_0803EA38: + .4byte _0803EBDE + .4byte _0803EBDE + .4byte _0803EA4C + .4byte _0803EAE0 + .4byte _0803EBB0 +_0803EA4C: + ldr r5, =gBattleCommunication + movs r0, 0 + strb r0, [r5, 0x5] + ldr r2, =gBankAttacker + ldrb r0, [r2] + lsrs r0, 1 + ldr r1, [r7] + adds r0, r1 + adds r0, 0xC6 + ldrb r1, [r0] + movs r0, 0x1 + ands r0, r1 + mov r8, r2 + cmp r0, 0 + beq _0803EA98 + movs r0, 0x3E + ands r0, r1 + ldr r1, =gBattlescriptCurrInstr + mov r9, r1 + ldr r6, =gUnknown_082DBD3C + ldr r2, =gFightStateTracker + mov r10, r2 + cmp r0, 0 + bne _0803EA7E + b _0803EBDE +_0803EA7E: + movs r0, 0x5 + strb r0, [r5, 0x5] + b _0803EBDE + .pool +_0803EA98: + ldr r0, =gBattlescriptCurrInstr + mov r9, r0 + ldr r6, =gUnknown_082DBD3C + ldr r1, =gFightStateTracker + mov r10, r1 + mov r4, r8 + adds r3, r7, 0 + adds r2, r5, 0 +_0803EAA8: + ldrb r1, [r4] + lsrs r1, 1 + ldr r0, [r3] + adds r1, r0 + adds r1, 0xC6 + ldrb r0, [r1] + lsrs r0, 1 + strb r0, [r1] + ldrb r0, [r2, 0x5] + adds r0, 0x1 + strb r0, [r2, 0x5] + ldrb r0, [r4] + lsrs r0, 1 + ldr r1, [r3] + adds r0, r1 + adds r0, 0xC6 + ldrb r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0803EAA8 + b _0803EBDE + .pool +_0803EAE0: + ldr r3, =gBattleCommunication + movs r0, 0x4 + strb r0, [r3, 0x5] + ldr r2, =gBankAttacker + ldrb r0, [r2] + lsrs r0, 1 + ldr r1, [r7] + adds r0, r1 + adds r6, r0, 0 + adds r6, 0xC6 + ldrb r1, [r6] + movs r0, 0x80 + ands r0, r1 + lsls r0, 24 + lsrs r5, r0, 24 + mov r8, r2 + cmp r5, 0 + beq _0803EB28 + movs r0, 0x5 + strb r0, [r3, 0x5] + ldr r2, =gBattlescriptCurrInstr + mov r9, r2 + ldr r6, =gUnknown_082DBD3C + ldr r0, =gFightStateTracker + mov r10, r0 + b _0803EBDE + .pool +_0803EB28: + ldr r3, =gBattleTextBuff1 + movs r4, 0xFD + strb r4, [r3] + movs r0, 0x5 + strb r0, [r3, 0x1] + movs r2, 0x1 + strb r2, [r3, 0x2] + movs r0, 0xFF + strb r0, [r3, 0x3] + ldr r1, =gBattleTextBuff2 + strb r4, [r1] + strb r5, [r1, 0x1] + movs r0, 0xD2 + strb r0, [r1, 0x2] + strb r5, [r1, 0x3] + subs r0, 0xD3 + strb r0, [r1, 0x4] + ldrb r0, [r6] + ands r2, r0 + ldr r1, =gBattlescriptCurrInstr + mov r9, r1 + ldr r6, =gUnknown_082DBD3C + ldr r0, =gFightStateTracker + mov r10, r0 + cmp r2, 0 + bne _0803EB8C + mov r5, r8 + adds r4, r7, 0 + adds r2, r3, 0 +_0803EB62: + ldrb r1, [r5] + lsrs r1, 1 + ldr r0, [r4] + adds r1, r0 + adds r1, 0xC6 + ldrb r0, [r1] + lsrs r0, 1 + strb r0, [r1] + ldrb r0, [r2, 0x2] + adds r0, 0x1 + strb r0, [r2, 0x2] + ldrb r0, [r5] + lsrs r0, 1 + ldr r1, [r4] + adds r0, r1 + adds r0, 0xC6 + ldrb r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0803EB62 +_0803EB8C: + ldrb r0, [r3, 0x2] + adds r0, 0xE + movs r1, 0 + mov r2, r12 + strb r0, [r2, 0x10] + strb r1, [r2, 0x11] + b _0803EBDE + .pool +_0803EBB0: + ldr r0, =gBattleTypeFlags + ldr r1, [r0] + movs r0, 0x1 + ands r1, r0 + cmp r1, 0 + beq _0803EBCC + ldr r1, =gBattleCommunication + movs r0, 0x2 + strb r0, [r1, 0x5] + b _0803EBD0 + .pool +_0803EBCC: + ldr r0, =gBattleCommunication + strb r1, [r0, 0x5] +_0803EBD0: + ldr r0, =gBankAttacker + mov r8, r0 + ldr r1, =gBattlescriptCurrInstr + mov r9, r1 + ldr r6, =gUnknown_082DBD3C + ldr r2, =gFightStateTracker + mov r10, r2 +_0803EBDE: + mov r1, r8 + ldrb r0, [r1] + lsrs r0, 1 + ldr r1, [r7] + adds r0, r1 + adds r0, 0xC4 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r6 + ldr r0, [r0] + mov r2, r9 + str r0, [r2] +_0803EBF6: + movs r0, 0xA + mov r1, r10 + strb r0, [r1] + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .pool + thumb_func_end sub_803E90C + + thumb_func_start sub_803EC20 +sub_803EC20: @ 803EC20 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + lsls r0, 24 + lsrs r5, r0, 24 + movs r7, 0 + ldr r1, =gBattleMons + movs r0, 0x58 + muls r0, r5 + adds r1, r0, r1 + ldrh r0, [r1, 0x2E] + cmp r0, 0xAF + bne _0803EC54 + ldr r1, =gEnigmaBerries + lsls r0, r5, 3 + subs r0, r5 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0, 0x7] + b _0803EC5E + .pool +_0803EC54: + ldrh r0, [r1, 0x2E] + bl ItemId_GetHoldEffect + lsls r0, 24 + lsrs r1, r0, 24 +_0803EC5E: + ldr r0, =gUnknown_0202420F + strb r5, [r0] + cmp r1, 0x25 + bne _0803EC9C + ldr r2, =gLastUsedItem + ldr r1, =gBattleMons + movs r0, 0x58 + muls r0, r5 + adds r0, r1 + ldrh r0, [r0, 0x2E] + strh r0, [r2] + ldr r0, =gProtectStructs + lsls r2, r5, 4 + adds r2, r0 + ldrb r1, [r2, 0x1] + movs r0, 0x19 + negs r0, r0 + ands r0, r1 + movs r1, 0x8 + orrs r0, r1 + strb r0, [r2, 0x1] + b _0803ED70 + .pool +_0803EC9C: + ldr r0, =gBattleMons + mov r10, r0 + movs r2, 0x58 + mov r9, r2 + mov r0, r9 + muls r0, r5 + add r0, r10 + mov r8, r0 + adds r0, 0x20 + ldrb r6, [r0] + cmp r6, 0x32 + bne _0803ED5C + bl InBattlePyramid + lsls r0, 24 + cmp r0, 0 + beq _0803ED38 + ldr r4, =gBattleStruct + ldr r1, [r4] + adds r1, 0x6C + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + bl sub_81A9E28 + lsls r0, 24 + lsrs r1, r0, 24 + mov r2, r8 + ldrh r0, [r2, 0x6] + muls r0, r1 + movs r2, 0x1 + adds r1, r5, 0 + eors r1, r2 + mov r2, r9 + muls r2, r1 + adds r1, r2, 0 + add r1, r10 + ldrh r1, [r1, 0x6] + bl __divsi3 + ldr r1, [r4] + adds r1, 0x6C + ldrb r2, [r1] + lsls r1, r2, 4 + subs r1, r2 + lsls r1, 1 + adds r0, r1 + lsls r0, 24 + lsrs r4, r0, 24 + bl Random + movs r1, 0xFF + ands r1, r0 + cmp r4, r1 + bhi _0803ED0C + b _0803EE12 +_0803ED0C: + ldr r0, =gLastUsedAbility + strb r6, [r0] + ldr r0, =gProtectStructs + lsls r2, r5, 4 + adds r2, r0 + ldrb r1, [r2, 0x1] + movs r0, 0x19 + negs r0, r0 + ands r0, r1 + movs r1, 0x10 + orrs r0, r1 + strb r0, [r2, 0x1] + b _0803ED70 + .pool +_0803ED38: + ldr r0, =gLastUsedAbility + strb r6, [r0] + ldr r0, =gProtectStructs + lsls r2, r5, 4 + adds r2, r0 + ldrb r1, [r2, 0x1] + movs r0, 0x19 + negs r0, r0 + ands r0, r1 + movs r1, 0x10 + orrs r0, r1 + strb r0, [r2, 0x1] + b _0803ED70 + .pool +_0803ED5C: + ldr r1, =gBattleTypeFlags + ldr r2, [r1] + ldr r0, =0x043f0100 + ands r0, r2 + cmp r0, 0 + beq _0803ED80 + movs r0, 0x8 + ands r2, r0 + cmp r2, 0 + beq _0803ED80 +_0803ED70: + adds r0, r7, 0x1 + lsls r0, 24 + lsrs r7, r0, 24 + b _0803EE12 + .pool +_0803ED80: + ldr r0, [r1] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + bne _0803EE06 + bl InBattlePyramid + lsls r0, 24 + cmp r0, 0 + beq _0803EDBC + bl sub_81A9E28 + lsls r0, 24 + lsrs r1, r0, 24 + ldr r4, =gBattleMons + movs r3, 0x58 + adds r0, r5, 0 + muls r0, r3 + adds r0, r4 + ldrh r0, [r0, 0x6] + muls r0, r1 + movs r2, 0x1 + adds r1, r5, 0 + eors r1, r2 + muls r1, r3 + adds r1, r4 + b _0803EDDA + .pool +_0803EDBC: + ldr r3, =gBattleMons + movs r2, 0x58 + adds r0, r5, 0 + muls r0, r2 + adds r4, r0, r3 + movs r1, 0x1 + adds r0, r5, 0 + eors r0, r1 + muls r0, r2 + adds r1, r0, r3 + ldrh r0, [r4, 0x6] + ldrh r2, [r1, 0x6] + cmp r0, r2 + bcs _0803EE00 + lsls r0, 7 +_0803EDDA: + ldrh r1, [r1, 0x6] + bl __divsi3 + ldr r1, =gBattleStruct + ldr r1, [r1] + adds r1, 0x6C + ldrb r2, [r1] + lsls r1, r2, 4 + subs r1, r2 + lsls r1, 1 + adds r0, r1 + lsls r0, 24 + lsrs r4, r0, 24 + bl Random + movs r1, 0xFF + ands r1, r0 + cmp r4, r1 + bls _0803EE06 +_0803EE00: + adds r0, r7, 0x1 + lsls r0, 24 + lsrs r7, r0, 24 +_0803EE06: + ldr r0, =gBattleStruct + ldr r1, [r0] + adds r1, 0x6C + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] +_0803EE12: + cmp r7, 0 + beq _0803EE24 + ldr r1, =gUnknown_02024082 + ldr r0, =gNoOfAllBanks + ldrb r0, [r0] + strb r0, [r1] + ldr r1, =gBattleOutcome + movs r0, 0x4 + strb r0, [r1] +_0803EE24: + adds r0, r7, 0 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .pool + thumb_func_end sub_803EC20 + + thumb_func_start sub_803EE48 +sub_803EE48: @ 803EE48 + push {r4-r6,lr} + ldr r4, =gBankAttacker + ldr r1, =gTurnOrder + ldr r5, =gUnknown_02024082 + ldrb r0, [r5] + adds r0, r1 + ldrb r0, [r0] + strb r0, [r4] + ldr r0, =gBattleTypeFlags + ldr r0, [r0] + ldr r1, =0x02000002 + ands r0, r1 + cmp r0, 0 + beq _0803EF0C + ldr r0, =gNoOfAllBanks + ldrb r1, [r0] + strb r1, [r5] + ldr r2, =gActiveBank + movs r0, 0 + strb r0, [r2] + lsls r1, 24 + cmp r1, 0 + beq _0803EEE0 + adds r4, r2, 0 + ldr r6, =gUnknown_0202421C + ldr r5, =gBattleOutcome +_0803EE7C: + ldrb r0, [r4] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + bne _0803EEBC + ldrb r0, [r4] + adds r0, r6 + ldrb r0, [r0] + cmp r0, 0x3 + bne _0803EECE + ldrb r0, [r5] + movs r1, 0x2 + b _0803EECA + .pool +_0803EEBC: + ldrb r0, [r4] + adds r0, r6 + ldrb r0, [r0] + cmp r0, 0x3 + bne _0803EECE + ldrb r0, [r5] + movs r1, 0x1 +_0803EECA: + orrs r0, r1 + strb r0, [r5] +_0803EECE: + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + ldr r1, =gNoOfAllBanks + lsls r0, 24 + lsrs r0, 24 + ldrb r1, [r1] + cmp r0, r1 + bcc _0803EE7C +_0803EEE0: + ldr r2, =gBattleOutcome + ldrb r0, [r2] + movs r1, 0x80 + orrs r0, r1 + strb r0, [r2] + ldr r0, =gSaveBlock2Ptr + ldr r1, [r0] + ldr r0, =0x00000ca9 + adds r1, r0 + ldrb r0, [r1] + movs r2, 0x8 + orrs r0, r2 + b _0803EF96 + .pool +_0803EF0C: + ldrb r0, [r4] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + bne _0803EF4C + ldrb r0, [r4] + bl sub_803EC20 + lsls r0, 24 + cmp r0, 0 + bne _0803EF98 + ldrb r0, [r4] + bl sub_8045868 + ldr r1, =gBattleCommunication + movs r0, 0x3 + strb r0, [r1, 0x5] + ldr r1, =gBattlescriptCurrInstr + ldr r0, =gUnknown_082DAB02 + str r0, [r1] + ldr r1, =gFightStateTracker + movs r0, 0xA + b _0803EF96 + .pool +_0803EF4C: + ldr r1, =gBattleMons + ldrb r2, [r4] + movs r0, 0x58 + muls r0, r2 + adds r1, 0x50 + adds r0, r1 + ldr r0, [r0] + ldr r1, =0x0400e000 + ands r0, r1 + cmp r0, 0 + beq _0803EF8C + ldr r1, =gBattleCommunication + movs r0, 0x4 + strb r0, [r1, 0x5] + ldr r1, =gBattlescriptCurrInstr + ldr r0, =gUnknown_082DAB02 + str r0, [r1] + ldr r1, =gFightStateTracker + movs r0, 0xA + b _0803EF96 + .pool +_0803EF8C: + ldr r0, =gNoOfAllBanks + ldrb r0, [r0] + strb r0, [r5] + ldr r1, =gBattleOutcome + movs r0, 0x6 +_0803EF96: + strb r0, [r1] +_0803EF98: + pop {r4-r6} + pop {r0} + bx r0 + .pool + thumb_func_end sub_803EE48 + + thumb_func_start sub_803EFA8 +sub_803EFA8: @ 803EFA8 + ldr r2, =gBankAttacker + ldr r1, =gTurnOrder + ldr r0, =gUnknown_02024082 + ldrb r0, [r0] + adds r0, r1 + ldrb r0, [r0] + strb r0, [r2] + ldr r0, =gUnknown_02022E14 + movs r1, 0 + strh r1, [r0] + ldr r0, =gUnknown_02022E16 + strh r1, [r0] + ldr r1, =gBattlescriptCurrInstr + ldr r0, =gUnknown_082DBD58 + ldr r0, [r0] + str r0, [r1] + ldr r1, =gFightStateTracker + movs r0, 0xA + strb r0, [r1] + bx lr + .pool + thumb_func_end sub_803EFA8 + + thumb_func_start bs5_8016AC0 +bs5_8016AC0: @ 803EFF0 + ldr r2, =gBankAttacker + ldr r1, =gTurnOrder + ldr r0, =gUnknown_02024082 + ldrb r0, [r0] + adds r0, r1 + ldrb r0, [r0] + strb r0, [r2] + ldr r0, =gUnknown_02022E14 + movs r1, 0 + strh r1, [r0] + ldr r0, =gUnknown_02022E16 + strh r1, [r0] + ldr r1, =gNumSafariBalls + ldrb r0, [r1] + subs r0, 0x1 + strb r0, [r1] + ldr r1, =gLastUsedItem + movs r0, 0x5 + strh r0, [r1] + ldr r1, =gBattlescriptCurrInstr + ldr r0, =gUnknown_082DBD08 + ldr r0, [r0, 0x14] + str r0, [r1] + ldr r1, =gFightStateTracker + movs r0, 0xA + strb r0, [r1] + bx lr + .pool + thumb_func_end bs5_8016AC0 + + thumb_func_start sub_803F050 +sub_803F050: @ 803F050 + push {r4-r6,lr} + ldr r3, =gBankAttacker + ldr r1, =gTurnOrder + ldr r0, =gUnknown_02024082 + ldrb r0, [r0] + adds r0, r1 + ldrb r0, [r0] + strb r0, [r3] + ldr r0, =gUnknown_02022E14 + movs r1, 0 + strh r1, [r0] + ldr r0, =gUnknown_02022E16 + strh r1, [r0] + ldr r6, =gBattleCommunication + ldr r2, =gBattleBufferB + ldrb r0, [r3] + lsls r0, 9 + adds r1, r2, 0x1 + adds r0, r1 + ldrb r0, [r0] + subs r0, 0x1 + strb r0, [r6, 0x5] + ldr r1, =gLastUsedItem + ldrb r0, [r3] + lsls r0, 9 + adds r2, 0x2 + adds r0, r2 + ldrb r0, [r0] + strh r0, [r1] + ldr r1, =gBattleResults + ldrb r0, [r1, 0x1F] + cmp r0, 0xFE + bhi _0803F096 + adds r0, 0x1 + strb r0, [r1, 0x1F] +_0803F096: + ldr r2, =gBattleStruct + ldr r0, [r2] + adds r1, r0, 0 + adds r1, 0x7A + ldrb r0, [r1] + cmp r0, 0x2 + bhi _0803F0A8 + adds r0, 0x1 + strb r0, [r1] +_0803F0A8: + ldr r0, [r2] + adds r3, r0, 0 + adds r3, 0x7B + ldrb r5, [r3] + adds r4, r5, 0 + cmp r4, 0x1 + bls _0803F100 + ldr r2, =gUnknown_0831BCE0 + adds r0, 0x7A + ldrb r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + ldrb r6, [r6, 0x5] + adds r0, r6 + adds r0, r2 + ldrb r0, [r0] + cmp r4, r0 + bcs _0803F0FC + movs r0, 0x1 + b _0803F0FE + .pool +_0803F0FC: + subs r0, r5, r0 +_0803F0FE: + strb r0, [r3] +_0803F100: + ldr r1, =gBattlescriptCurrInstr + ldr r0, =gUnknown_082DBD58 + ldr r0, [r0, 0x8] + str r0, [r1] + ldr r1, =gFightStateTracker + movs r0, 0xA + strb r0, [r1] + pop {r4-r6} + pop {r0} + bx r0 + .pool + thumb_func_end sub_803F050 + + thumb_func_start sub_803F120 +sub_803F120: @ 803F120 + push {r4,lr} + ldr r2, =gBankAttacker + ldr r1, =gTurnOrder + ldr r0, =gUnknown_02024082 + ldrb r0, [r0] + adds r0, r1 + ldrb r0, [r0] + strb r0, [r2] + ldr r0, =gUnknown_02022E14 + movs r4, 0 + strh r4, [r0] + ldr r0, =gUnknown_02022E16 + strh r4, [r0] + ldr r3, =gBattleStruct + ldr r0, [r3] + adds r2, r0, 0 + adds r2, 0x7C + ldr r1, =gUnknown_0831BCEF + adds r0, 0x79 + ldrb r0, [r0] + adds r0, r1 + ldrb r0, [r0] + ldrb r1, [r2] + adds r0, r1 + strb r0, [r2] + ldr r0, [r3] + adds r1, r0, 0 + adds r1, 0x7C + ldrb r0, [r1] + cmp r0, 0x14 + bls _0803F162 + movs r0, 0x14 + strb r0, [r1] +_0803F162: + ldr r0, [r3] + adds r2, r0, 0 + adds r2, 0x7B + ldr r1, =gUnknown_0831BCF3 + adds r0, 0x79 + ldrb r0, [r0] + adds r0, r1 + ldrb r0, [r0] + ldrb r1, [r2] + adds r0, r1 + strb r0, [r2] + ldr r0, [r3] + adds r1, r0, 0 + adds r1, 0x7B + ldrb r0, [r1] + cmp r0, 0x14 + bls _0803F188 + movs r0, 0x14 + strb r0, [r1] +_0803F188: + ldr r0, [r3] + adds r1, r0, 0 + adds r1, 0x79 + ldrb r0, [r1] + cmp r0, 0x2 + bhi _0803F1C4 + adds r0, 0x1 + strb r0, [r1] + ldr r0, =gBattleCommunication + strb r4, [r0, 0x5] + b _0803F1CA + .pool +_0803F1C4: + ldr r1, =gBattleCommunication + movs r0, 0x1 + strb r0, [r1, 0x5] +_0803F1CA: + ldr r1, =gBattlescriptCurrInstr + ldr r0, =gUnknown_082DBD58 + ldr r0, [r0, 0x4] + str r0, [r1] + ldr r1, =gFightStateTracker + movs r0, 0xA + strb r0, [r1] + pop {r4} + pop {r0} + bx r0 + .pool + thumb_func_end sub_803F120 + + thumb_func_start bs8_exit_by_flight +bs8_exit_by_flight: @ 803F1F0 + push {r4,lr} + ldr r2, =gBankAttacker + ldr r1, =gTurnOrder + ldr r4, =gUnknown_02024082 + ldrb r0, [r4] + adds r0, r1 + ldrb r0, [r0] + strb r0, [r2] + movs r0, 0x11 + bl PlaySE + ldr r0, =gNoOfAllBanks + ldrb r0, [r0] + strb r0, [r4] + ldr r1, =gBattleOutcome + movs r0, 0x4 + strb r0, [r1] + pop {r4} + pop {r0} + bx r0 + .pool + thumb_func_end bs8_exit_by_flight + + thumb_func_start bs9_8016C9C +bs9_8016C9C: @ 803F22C + ldr r3, =gBankAttacker + ldr r1, =gTurnOrder + ldr r0, =gUnknown_02024082 + ldrb r0, [r0] + adds r0, r1 + ldrb r2, [r0] + strb r2, [r3] + ldr r0, =gUnknown_02022E14 + movs r1, 0 + strh r1, [r0] + ldr r0, =gUnknown_02022E16 + strh r1, [r0] + ldr r1, =gBattleTextBuff1 + movs r0, 0xFD + strb r0, [r1] + movs r0, 0x7 + strb r0, [r1, 0x1] + strb r2, [r1, 0x2] + ldr r2, =gBattlePartyID + ldrb r0, [r3] + lsls r0, 1 + adds r0, r2 + ldrh r0, [r0] + strb r0, [r1, 0x3] + movs r0, 0xFF + strb r0, [r1, 0x4] + ldr r1, =gBattlescriptCurrInstr + ldr r0, =gUnknown_082DBD58 + ldr r0, [r0, 0xC] + str r0, [r1] + ldr r1, =gFightStateTracker + movs r0, 0xA + strb r0, [r1] + ldr r1, =gUnknown_0202407A + movs r0, 0xC + strb r0, [r1, 0x1] + bx lr + .pool + thumb_func_end bs9_8016C9C + + thumb_func_start bsB_exit_by_move +bsB_exit_by_move: @ 803F2A4 + push {lr} + bl sub_8041728 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + bne _0803F2C0 + ldr r0, =gBattleStruct + ldr r0, [r0] + adds r0, 0x4D + strb r1, [r0] + ldr r1, =gFightStateTracker + movs r0, 0xC + strb r0, [r1] +_0803F2C0: + pop {r0} + bx r0 + .pool + thumb_func_end bsB_exit_by_move + + thumb_func_start bsD_proceed +bsD_proceed: @ 803F2CC + ldr r1, =gUnknown_02024082 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + ldr r3, =gFightStateTracker + ldr r2, =gUnknown_0202407A + ldrb r0, [r1] + adds r0, r2 + ldrb r0, [r0] + strb r0, [r3] + ldr r2, =gHitMarker + ldr r0, [r2] + ldr r1, =0xf1e892af + ands r0, r1 + str r0, [r2] + bx lr + .pool + thumb_func_end bsD_proceed + + thumb_func_start bsC_8016D70 +bsC_8016D70: @ 803F300 + push {r4-r6,lr} + ldr r1, =gTurnOrder + ldr r2, =gUnknown_02024082 + ldrb r0, [r2] + adds r0, r1 + ldrb r0, [r0] + ldr r6, =gBattleStruct + ldr r1, [r6] + adds r0, r1 + adds r0, 0x5C + movs r1, 0x6 + strb r1, [r0] + ldrb r0, [r2] + adds r0, 0x1 + strb r0, [r2] + ldr r3, =gFightStateTracker + ldr r1, =gUnknown_0202407A + ldrb r0, [r2] + adds r0, r1 + ldrb r0, [r0] + strb r0, [r3] + bl sub_803D6A0 + ldr r2, =gHitMarker + ldr r0, [r2] + ldr r1, =0xf1e892af + ands r0, r1 + str r0, [r2] + ldr r0, =gCurrentMove + movs r1, 0 + strh r1, [r0] + ldr r0, =gBattleMoveDamage + movs r4, 0 + str r4, [r0] + ldr r0, =gBattleMoveFlags + strb r1, [r0] + ldr r5, =gBattleScripting + strb r1, [r5, 0x18] + strb r1, [r5, 0x19] + ldr r2, =gUnknown_02024250 + ldr r3, =gBankAttacker + ldrb r0, [r3] + lsls r0, 1 + adds r0, r2 + strh r4, [r0] + ldr r2, =gUnknown_02024258 + ldrb r0, [r3] + lsls r0, 1 + adds r0, r2 + strh r4, [r0] + ldr r0, [r6] + strb r1, [r0, 0x13] + ldr r0, =gDynamicBasePower + strh r4, [r0] + strb r1, [r5, 0x14] + ldr r0, =gBattleCommunication + strb r1, [r0, 0x3] + strb r1, [r0, 0x4] + strb r1, [r5, 0x16] + ldr r0, =gBattleResources + ldr r0, [r0] + ldr r0, [r0, 0x8] + adds r0, 0x20 + strb r1, [r0] + pop {r4-r6} + pop {r0} + bx r0 + .pool + thumb_func_end bsC_8016D70 + + thumb_func_start get_battle_side_of_something +get_battle_side_of_something: @ 803F3CC + push {lr} + lsls r0, 24 + lsrs r1, r0, 24 + movs r0, 0 + cmp r1, 0xE + bhi _0803F47A + lsls r0, r1, 2 + ldr r1, =_0803F3E8 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .pool + .align 2, 0 +_0803F3E8: + .4byte _0803F424 + .4byte _0803F430 + .4byte _0803F43C + .4byte _0803F458 + .4byte _0803F464 + .4byte _0803F458 + .4byte _0803F464 + .4byte _0803F448 + .4byte _0803F464 + .4byte _0803F464 + .4byte _0803F44C + .4byte _0803F464 + .4byte _0803F468 + .4byte _0803F46C + .4byte _0803F470 +_0803F424: + ldr r0, =gBankTarget + ldrb r0, [r0] + b _0803F47A + .pool +_0803F430: + ldr r0, =gBankAttacker + ldrb r0, [r0] + b _0803F47A + .pool +_0803F43C: + ldr r0, =gUnknown_0202420E + ldrb r0, [r0] + b _0803F47A + .pool +_0803F448: + movs r0, 0 + b _0803F47A +_0803F44C: + ldr r0, =gBattleScripting + ldrb r0, [r0, 0x17] + b _0803F47A + .pool +_0803F458: + ldr r0, =gUnknown_0202420D + ldrb r0, [r0] + b _0803F47A + .pool +_0803F464: + movs r0, 0 + b _0803F472 +_0803F468: + movs r0, 0x1 + b _0803F472 +_0803F46C: + movs r0, 0x2 + b _0803F472 +_0803F470: + movs r0, 0x3 +_0803F472: + bl GetBankByPlayerAI + lsls r0, 24 + lsrs r0, 24 +_0803F47A: + pop {r1} + bx r1 + thumb_func_end get_battle_side_of_something + + thumb_func_start sub_803F480 +sub_803F480: @ 803F480 + push {r4-r7,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r5, r1, 24 + lsls r2, 16 + lsrs r2, 16 + ldr r1, =gBattleMons + movs r4, 0x58 + muls r0, r4 + adds r0, r1 + adds r0, 0x20 + ldrb r0, [r0] + mov r12, r1 + cmp r0, 0x2E + bne _0803F532 + movs r3, 0 + adds r0, r5, 0 + muls r0, r4 + adds r1, 0xC + adds r1, r0, r1 + b _0803F4BC + .pool +_0803F4B4: + adds r1, 0x2 + adds r3, 0x1 + cmp r3, 0x3 + bgt _0803F4C2 +_0803F4BC: + ldrh r0, [r1] + cmp r0, r2 + bne _0803F4B4 +_0803F4C2: + cmp r3, 0x4 + beq _0803F532 + movs r7, 0x58 + adds r2, r5, 0 + muls r2, r7 + adds r0, r3, r2 + mov r6, r12 + adds r6, 0x24 + adds r1, r0, r6 + ldrb r0, [r1] + cmp r0, 0 + beq _0803F4DE + subs r0, 0x1 + strb r0, [r1] +_0803F4DE: + mov r0, r12 + adds r0, 0x50 + adds r0, r2, r0 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 14 + ands r0, r1 + cmp r0, 0 + bne _0803F532 + ldr r1, =gDisableStructs + lsls r0, r5, 3 + subs r0, r5 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0, 0x18] + lsrs r1, 4 + ldr r2, =gBitTable + lsls r0, r3, 2 + adds r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, 0 + bne _0803F532 + ldr r4, =gActiveBank + strb r5, [r4] + adds r1, r3, 0 + adds r1, 0x9 + lsls r1, 24 + lsrs r1, 24 + ldrb r0, [r4] + muls r0, r7 + adds r0, r6 + adds r0, r3 + str r0, [sp] + movs r0, 0 + movs r2, 0 + movs r3, 0x1 + bl dp01_build_cmdbuf_x02_a_b_varargs + ldrb r0, [r4] + bl dp01_battle_side_mark_buffer_for_execution +_0803F532: + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + .pool + thumb_func_end sub_803F480 + + thumb_func_start sub_803F548 +sub_803F548: @ 803F548 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + lsls r0, 24 + lsrs r5, r0, 24 + movs r0, 0x4 + mov r8, r0 + adds r0, r5, 0 + bl GetBankSide + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + movs r4, 0 + ldr r0, =gNoOfAllBanks + ldrb r0, [r0] + cmp r4, r0 + bge _0803F5F0 + ldr r1, =gBattleMons + movs r0, 0x58 + adds r7, r5, 0 + muls r7, r0 + adds r1, 0xC + mov r10, r1 +_0803F57E: + lsls r0, r4, 24 + lsrs r0, 24 + bl GetBankSide + lsls r0, 24 + lsrs r0, 24 + adds r6, r4, 0x1 + cmp r9, r0 + beq _0803F5E6 + ldr r0, =gBattleMons + movs r3, 0x58 + adds r1, r4, 0 + muls r1, r3 + adds r1, r0 + adds r1, 0x20 + ldrb r1, [r1] + adds r4, r0, 0 + cmp r1, 0x2E + bne _0803F5E6 + movs r2, 0 + adds r0, r5, 0 + muls r0, r3 + adds r1, r4, 0 + adds r1, 0xC + adds r0, r1 + ldrh r0, [r0] + movs r1, 0x8F + lsls r1, 1 + cmp r0, r1 + beq _0803F5CE + adds r3, r1, 0 + mov r0, r10 + adds r1, r7, r0 +_0803F5C0: + adds r1, 0x2 + adds r2, 0x1 + cmp r2, 0x3 + bgt _0803F5CE + ldrh r0, [r1] + cmp r0, r3 + bne _0803F5C0 +_0803F5CE: + cmp r2, 0x4 + beq _0803F5E6 + mov r8, r2 + adds r1, r2, r7 + adds r0, r4, 0 + adds r0, 0x24 + adds r1, r0 + ldrb r0, [r1] + cmp r0, 0 + beq _0803F5E6 + subs r0, 0x1 + strb r0, [r1] +_0803F5E6: + adds r4, r6, 0 + ldr r0, =gNoOfAllBanks + ldrb r0, [r0] + cmp r4, r0 + blt _0803F57E +_0803F5F0: + mov r1, r8 + cmp r1, 0x4 + beq _0803F658 + ldr r6, =gBattleMons + movs r3, 0x58 + adds r0, r5, 0 + muls r0, r3 + adds r1, r6, 0 + adds r1, 0x50 + adds r0, r1 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 14 + ands r0, r1 + cmp r0, 0 + bne _0803F658 + ldr r1, =gDisableStructs + lsls r0, r5, 3 + subs r0, r5 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0, 0x18] + lsrs r1, 4 + ldr r2, =gBitTable + mov r4, r8 + lsls r0, r4, 2 + adds r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, 0 + bne _0803F658 + ldr r4, =gActiveBank + strb r5, [r4] + mov r1, r8 + adds r1, 0x9 + lsls r1, 24 + lsrs r1, 24 + ldrb r0, [r4] + muls r0, r3 + adds r2, r6, 0 + adds r2, 0x24 + adds r0, r2 + add r0, r8 + str r0, [sp] + movs r0, 0 + movs r2, 0 + movs r3, 0x1 + bl dp01_build_cmdbuf_x02_a_b_varargs + ldrb r0, [r4] + bl dp01_battle_side_mark_buffer_for_execution +_0803F658: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .pool + thumb_func_end sub_803F548 + + thumb_func_start sub_803F67C +sub_803F67C: @ 803F67C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + lsls r0, 24 + lsrs r3, r0, 24 + movs r6, 0x4 + movs r1, 0 + ldr r0, =gNoOfAllBanks + mov r8, r0 + ldrb r0, [r0] + cmp r1, r0 + bge _0803F6FE + ldr r7, =gBattleMons + movs r2, 0x58 + mov r12, r2 + mov r5, r12 + muls r5, r3 + adds r0, r7, 0 + adds r0, 0xC + adds r2, r5, r0 + mov r10, r2 + mov r9, r5 +_0803F6AE: + mov r0, r12 + muls r0, r1 + adds r0, r7 + adds r0, 0x20 + ldrb r0, [r0] + adds r4, r1, 0x1 + cmp r0, 0x2E + bne _0803F6F4 + cmp r1, r3 + beq _0803F6F4 + movs r2, 0 + mov r1, r10 + ldrh r0, [r1] + cmp r0, 0xC3 + beq _0803F6DE + ldr r1, =gBattleMons + 0xC + add r1, r9 +_0803F6D0: + adds r1, 0x2 + adds r2, 0x1 + cmp r2, 0x3 + bgt _0803F6DE + ldrh r0, [r1] + cmp r0, 0xC3 + bne _0803F6D0 +_0803F6DE: + cmp r2, 0x4 + beq _0803F6F4 + adds r6, r2, 0 + adds r0, r6, r5 + ldr r2, =gBattleMons + 0x24 + adds r1, r0, r2 + ldrb r0, [r1] + cmp r0, 0 + beq _0803F6F4 + subs r0, 0x1 + strb r0, [r1] +_0803F6F4: + adds r1, r4, 0 + mov r0, r8 + ldrb r0, [r0] + cmp r1, r0 + blt _0803F6AE +_0803F6FE: + cmp r6, 0x4 + beq _0803F762 + ldr r7, =gBattleMons + movs r5, 0x58 + adds r0, r3, 0 + muls r0, r5 + adds r1, r7, 0 + adds r1, 0x50 + adds r0, r1 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 14 + ands r0, r1 + cmp r0, 0 + bne _0803F762 + ldr r1, =gDisableStructs + lsls r0, r3, 3 + subs r0, r3 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0, 0x18] + lsrs r1, 4 + ldr r2, =gBitTable + lsls r0, r6, 2 + adds r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, 0 + bne _0803F762 + ldr r4, =gActiveBank + strb r3, [r4] + adds r1, r6, 0 + adds r1, 0x9 + lsls r1, 24 + lsrs r1, 24 + ldrb r0, [r4] + muls r0, r5 + adds r2, r7, 0 + adds r2, 0x24 + adds r0, r2 + adds r0, r6 + str r0, [sp] + movs r0, 0 + movs r2, 0 + movs r3, 0x1 + bl dp01_build_cmdbuf_x02_a_b_varargs + ldrb r0, [r4] + bl dp01_battle_side_mark_buffer_for_execution +_0803F762: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .pool + thumb_func_end sub_803F67C + + thumb_func_start sub_803F790 +sub_803F790: @ 803F790 + push {r4,r5,lr} + ldr r0, =gBattleTypeFlags + ldr r0, [r0] + movs r1, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0803F7D0 + movs r2, 0 + ldr r4, =gNoOfAllBanks + ldrb r0, [r4] + cmp r2, r0 + bge _0803F7EE + ldr r3, =gBattleExecBuffer + ldr r5, =gBitTable +_0803F7AC: + ldm r5!, {r1} + lsls r1, 28 + ldr r0, [r3] + orrs r0, r1 + str r0, [r3] + adds r2, 0x1 + ldrb r0, [r4] + cmp r2, r0 + blt _0803F7AC + b _0803F7EE + .pool +_0803F7D0: + movs r2, 0 + ldr r4, =gNoOfAllBanks + ldrb r0, [r4] + cmp r2, r0 + bge _0803F7EE + ldr r3, =gBattleExecBuffer + ldr r5, =gBitTable +_0803F7DE: + ldr r0, [r3] + ldm r5!, {r1} + orrs r0, r1 + str r0, [r3] + adds r2, 0x1 + ldrb r0, [r4] + cmp r2, r0 + blt _0803F7DE +_0803F7EE: + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end sub_803F790 + + thumb_func_start dp01_battle_side_mark_buffer_for_execution +dp01_battle_side_mark_buffer_for_execution: @ 803F800 + push {lr} + lsls r0, 24 + lsrs r3, r0, 24 + ldr r0, =gBattleTypeFlags + ldr r0, [r0] + movs r1, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0803F834 + ldr r2, =gBattleExecBuffer + ldr r1, =gBitTable + lsls r0, r3, 2 + adds r0, r1 + ldr r1, [r0] + lsls r1, 28 + ldr r0, [r2] + orrs r0, r1 + str r0, [r2] + b _0803F844 + .pool +_0803F834: + ldr r2, =gBattleExecBuffer + ldr r1, =gBitTable + lsls r0, r3, 2 + adds r0, r1 + ldr r1, [r2] + ldr r0, [r0] + orrs r1, r0 + str r1, [r2] +_0803F844: + pop {r0} + bx r0 + .pool + thumb_func_end dp01_battle_side_mark_buffer_for_execution + + thumb_func_start sub_803F850 +sub_803F850: @ 803F850 + push {r4-r7,lr} + lsls r0, 24 + lsrs r7, r0, 24 + movs r4, 0 + ldr r5, =gBattleExecBuffer + ldr r1, =gBitTable + lsls r0, r7, 2 + adds r6, r0, r1 + b _0803F87A + .pool +_0803F86C: + lsls r0, r4, 2 + ldr r1, [r6] + lsls r1, r0 + ldr r0, [r5] + orrs r0, r1 + str r0, [r5] + adds r4, 0x1 +_0803F87A: + bl sub_8009FCC + lsls r0, 24 + lsrs r0, 24 + cmp r4, r0 + blt _0803F86C + ldr r2, =gBattleExecBuffer + movs r1, 0x80 + lsls r1, 21 + lsls r1, r7 + ldr r0, [r2] + bics r0, r1 + str r0, [r2] + pop {r4-r7} + pop {r0} + bx r0 + .pool + thumb_func_end sub_803F850 + + thumb_func_start CancelMultiTurnMoves +CancelMultiTurnMoves: @ 803F8A0 + lsls r0, 24 + lsrs r0, 24 + ldr r1, =gBattleMons + movs r2, 0x58 + adds r3, r0, 0 + muls r3, r2 + adds r1, 0x50 + adds r3, r1 + ldr r1, [r3] + ldr r2, =0xffffefff + ands r1, r2 + ldr r2, =0xfffff3ff + ands r1, r2 + movs r2, 0x71 + negs r2, r2 + ands r1, r2 + ldr r2, =0xfffffcff + ands r1, r2 + str r1, [r3] + ldr r1, =gStatuses3 + lsls r2, r0, 2 + adds r2, r1 + ldr r1, [r2] + ldr r3, =0xfffbff3f + ands r1, r3 + str r1, [r2] + ldr r2, =gDisableStructs + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + adds r1, r2 + ldrb r2, [r1, 0x11] + movs r0, 0x10 + negs r0, r0 + ands r0, r2 + strb r0, [r1, 0x11] + movs r0, 0 + strb r0, [r1, 0x10] + bx lr + .pool + thumb_func_end CancelMultiTurnMoves + + thumb_func_start sub_803F90C +sub_803F90C: @ 803F90C + push {lr} + lsls r0, 24 + ldr r1, =gProtectStructs + lsrs r0, 20 + adds r1, r0, r1 + ldrb r0, [r1] + lsrs r0, 7 + cmp r0, 0 + bne _0803F952 + ldrb r2, [r1, 0x1] + lsls r0, r2, 30 + cmp r0, 0 + blt _0803F952 + lsls r0, r2, 26 + cmp r0, 0 + blt _0803F952 + lsls r0, r2, 25 + cmp r0, 0 + blt _0803F952 + lsrs r0, r2, 7 + cmp r0, 0 + bne _0803F952 + ldrb r1, [r1, 0x2] + lsls r0, r1, 31 + cmp r0, 0 + bne _0803F952 + lsls r0, r1, 30 + cmp r0, 0 + blt _0803F952 + lsls r0, r1, 29 + cmp r0, 0 + blt _0803F952 + lsls r0, r2, 31 + cmp r0, 0 + beq _0803F95C +_0803F952: + movs r0, 0x1 + b _0803F95E + .pool +_0803F95C: + movs r0, 0 +_0803F95E: + pop {r1} + bx r1 + thumb_func_end sub_803F90C + + thumb_func_start b_std_message +b_std_message: @ 803F964 + push {r4,lr} + adds r2, r0, 0 + lsls r2, 16 + lsrs r2, 16 + ldr r4, =gActiveBank + strb r1, [r4] + movs r0, 0 + adds r1, r2, 0 + bl dp01_build_cmdbuf_x10_TODO + ldrb r0, [r4] + bl dp01_battle_side_mark_buffer_for_execution + pop {r4} + pop {r0} + bx r0 + .pool + thumb_func_end b_std_message + + thumb_func_start sub_803F988 +sub_803F988: @ 803F988 + push {r4-r6,lr} + movs r3, 0 + ldr r0, =gUnknown_020243FE + strb r3, [r0] + strb r3, [r0, 0x1] + movs r1, 0 + ldr r0, =gNoOfAllBanks + ldrb r2, [r0] + adds r6, r0, 0 + cmp r1, r2 + bge _0803F9B6 + ldr r5, =gBitTable + adds r4, r2, 0 + ldr r2, =gBattlePartyID +_0803F9A4: + ldrh r0, [r2] + lsls r0, 2 + adds r0, r5 + ldr r0, [r0] + orrs r3, r0 + adds r2, 0x4 + adds r1, 0x2 + cmp r1, r4 + blt _0803F9A4 +_0803F9B6: + movs r1, 0x1 + adds r2, r6, 0 + ldrb r0, [r2] + cmp r1, r0 + bge _0803F9D6 + ldr r5, =gUnknown_020243FE + movs r4, 0x2 +_0803F9C4: + adds r0, r1, 0 + ands r0, r4 + asrs r0, 1 + adds r0, r5 + strb r3, [r0] + adds r1, 0x2 + ldrb r0, [r2] + cmp r1, r0 + blt _0803F9C4 +_0803F9D6: + pop {r4-r6} + pop {r0} + bx r0 + .pool + thumb_func_end sub_803F988 + + thumb_func_start sub_803F9EC +sub_803F9EC: @ 803F9EC + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r5, r0, 24 + movs r4, 0 + adds r0, r5, 0 + bl GetBankSide + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0803FA50 + movs r0, 0x2 + ands r0, r5 + lsls r0, 24 + lsrs r0, 25 + mov r12, r0 + ldr r1, =gUnknown_020243FE + adds r0, r1 + strb r4, [r0] + adds r5, r4, 0 + ldr r0, =gNoOfAllBanks + ldrb r2, [r0] + mov r8, r1 + cmp r4, r2 + bge _0803FA4A + ldr r0, =gAbsentBankFlags + ldrb r7, [r0] + ldr r1, =gBitTable + adds r6, r2, 0 + ldr r3, =gBattlePartyID + adds r2, r1, 0 +_0803FA2E: + ldr r0, [r2] + ands r0, r7 + cmp r0, 0 + bne _0803FA40 + ldrh r0, [r3] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + orrs r4, r0 +_0803FA40: + adds r3, 0x4 + adds r2, 0x8 + adds r5, 0x2 + cmp r5, r6 + blt _0803FA2E +_0803FA4A: + mov r0, r12 + add r0, r8 + strb r4, [r0] +_0803FA50: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .pool + thumb_func_end sub_803F9EC + + thumb_func_start sub_803FA70 +sub_803FA70: @ 803FA70 + push {r4-r7,lr} + lsls r0, 24 + lsrs r4, r0, 24 + adds r0, r4, 0 + bl GetBankSide + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0803FA8C + adds r0, r4, 0 + bl sub_803F9EC + b _0803FAC2 +_0803FA8C: + movs r3, 0x1 + ldr r5, =gNoOfAllBanks + ldrb r0, [r5] + cmp r3, r0 + bge _0803FAC2 + ldr r0, =gUnknown_020243FE + mov r12, r0 + movs r7, 0x2 + ldr r6, =gBitTable + ldr r1, =gBattlePartyID + lsls r0, r4, 1 + adds r4, r0, r1 +_0803FAA4: + adds r2, r3, 0 + ands r2, r7 + asrs r2, 1 + add r2, r12 + ldrh r0, [r4] + lsls r0, 2 + adds r0, r6 + ldr r0, [r0] + ldrb r1, [r2] + orrs r0, r1 + strb r0, [r2] + adds r3, 0x1 + ldrb r0, [r5] + cmp r3, r0 + blt _0803FAA4 +_0803FAC2: + pop {r4-r7} + pop {r0} + bx r0 + .pool + thumb_func_end sub_803FA70 + + .align 2, 0 @ Don't pad with nop. + \ No newline at end of file diff --git a/asm/battle_4.s b/asm/battle_4.s index cb9c944fc..f7e9fe499 100644 --- a/asm/battle_4.s +++ b/asm/battle_4.s @@ -17922,8 +17922,8 @@ _0804FC38: lsls r0, 2 adds r0, r1 ldr r0, [r0] - bl get_battle_strings_ - ldr r0, =gUnknown_02022E2C + bl StrCpyDecodeToDisplayedStringBattle + ldr r0, =gDisplayedStringBattle movs r1, 0x16 bl battle_show_message_maybe b _0804FD70 diff --git a/asm/battle_controller_linkopponent.s b/asm/battle_controller_linkopponent.s index 1e5e0fce5..e9ce01f0a 100644 --- a/asm/battle_controller_linkopponent.s +++ b/asm/battle_controller_linkopponent.s @@ -5043,7 +5043,7 @@ sub_8066FF4: @ 8066FF4 adds r4, r0 ldrh r0, [r4] bl BufferStringBattle - ldr r0, =gUnknown_02022E2C + ldr r0, =gDisplayedStringBattle movs r1, 0 bl battle_show_message_maybe ldr r1, =gBattleBankFunc diff --git a/asm/battle_controller_linkpartner.s b/asm/battle_controller_linkpartner.s index 979f99ac1..d5c6fd8e6 100644 --- a/asm/battle_controller_linkpartner.s +++ b/asm/battle_controller_linkpartner.s @@ -4352,7 +4352,7 @@ sub_814D590: @ 814D590 adds r4, r0 ldrh r0, [r4] bl BufferStringBattle - ldr r0, =gUnknown_02022E2C + ldr r0, =gDisplayedStringBattle movs r1, 0 bl battle_show_message_maybe ldr r1, =gBattleBankFunc diff --git a/asm/battle_controller_opponent.s b/asm/battle_controller_opponent.s index c35c3badf..5f06b1f8f 100644 --- a/asm/battle_controller_opponent.s +++ b/asm/battle_controller_opponent.s @@ -5183,7 +5183,7 @@ sub_8061F34: @ 8061F34 adds r4, r0 ldrh r0, [r4] bl BufferStringBattle - ldr r0, =gUnknown_02022E2C + ldr r0, =gDisplayedStringBattle movs r1, 0 bl battle_show_message_maybe ldr r1, =gBattleBankFunc diff --git a/asm/battle_controller_player.s b/asm/battle_controller_player.s index 86381bf35..956df3799 100644 --- a/asm/battle_controller_player.s +++ b/asm/battle_controller_player.s @@ -4337,7 +4337,7 @@ sub_8059AAC: @ 8059AAC movs r0, 0 strb r0, [r2] movs r5, 0 - ldr r7, =gUnknown_02022E2C + ldr r7, =gDisplayedStringBattle adds r4, r1, r3 adds r6, r2, 0 _08059AC4: @@ -4376,7 +4376,7 @@ _08059AF4: thumb_func_start sub_8059B18 sub_8059B18: @ 8059B18 push {r4,lr} - ldr r4, =gUnknown_02022E2C + ldr r4, =gDisplayedStringBattle ldr r1, =gUnknown_085CCA6F adds r0, r4, 0 bl StringCopy @@ -4406,7 +4406,7 @@ sub_8059B3C: @ 8059B3C lsls r4, r1, 9 adds r0, r5, 0x4 adds r4, r0 - ldr r6, =gUnknown_02022E2C + ldr r6, =gDisplayedStringBattle ldr r5, =gUnknown_020244B0 adds r1, r5 adds r0, r4, 0 @@ -4448,7 +4448,7 @@ sub_8059BB0: @ 8059BB0 lsls r4, 9 ldr r0, =gBattleBufferA + 4 adds r4, r0 - ldr r6, =gUnknown_02022E2C + ldr r6, =gDisplayedStringBattle ldr r1, =gUnknown_085CCA73 adds r0, r6, 0 bl StringCopy @@ -8456,7 +8456,7 @@ sub_805BF80: @ 805BF80 adds r4, r0 ldrh r0, [r4] bl BufferStringBattle - ldr r0, =gUnknown_02022E2C + ldr r0, =gDisplayedStringBattle movs r1, 0 bl battle_show_message_maybe ldr r1, =gBattleBankFunc @@ -8551,8 +8551,8 @@ _0805C062: movs r1, 0 bl sub_8059CB4 ldr r0, =gUnknown_085CC9F3 - bl get_battle_strings_ - ldr r0, =gUnknown_02022E2C + bl StrCpyDecodeToDisplayedStringBattle + ldr r0, =gDisplayedStringBattle movs r1, 0x1 bl battle_show_message_maybe pop {r4} diff --git a/asm/battle_controller_player_partner.s b/asm/battle_controller_player_partner.s index 0b4ef0973..95e1c57f8 100644 --- a/asm/battle_controller_player_partner.s +++ b/asm/battle_controller_player_partner.s @@ -4964,7 +4964,7 @@ sub_81BDA4C: @ 81BDA4C adds r0, r1 ldrh r0, [r0] bl BufferStringBattle - ldr r0, =gUnknown_02022E2C + ldr r0, =gDisplayedStringBattle movs r1, 0 bl battle_show_message_maybe ldr r1, =gBattleBankFunc diff --git a/asm/battle_controller_recorded_opponent.s b/asm/battle_controller_recorded_opponent.s index 7eebf563b..bc1f425ce 100644 --- a/asm/battle_controller_recorded_opponent.s +++ b/asm/battle_controller_recorded_opponent.s @@ -4720,7 +4720,7 @@ sub_8188E90: @ 8188E90 adds r0, r1 ldrh r0, [r0] bl BufferStringBattle - ldr r0, =gUnknown_02022E2C + ldr r0, =gDisplayedStringBattle movs r1, 0 bl battle_show_message_maybe ldr r1, =gBattleBankFunc diff --git a/asm/battle_controller_recorded_player.s b/asm/battle_controller_recorded_player.s index 141dfca11..4bbb03f6a 100644 --- a/asm/battle_controller_recorded_player.s +++ b/asm/battle_controller_recorded_player.s @@ -4820,7 +4820,7 @@ sub_818C43C: @ 818C43C adds r0, r1 ldrh r0, [r0] bl BufferStringBattle - ldr r0, =gUnknown_02022E2C + ldr r0, =gDisplayedStringBattle movs r1, 0 bl battle_show_message_maybe ldr r1, =gBattleBankFunc diff --git a/asm/battle_controller_safari.s b/asm/battle_controller_safari.s index be274e81b..d7fd0b505 100644 --- a/asm/battle_controller_safari.s +++ b/asm/battle_controller_safari.s @@ -790,7 +790,7 @@ dp01t_10_6_message: @ 81599DC adds r0, r1 ldrh r0, [r0] bl BufferStringBattle - ldr r0, =gUnknown_02022E2C + ldr r0, =gDisplayedStringBattle movs r1, 0 bl battle_show_message_maybe ldr r1, =gBattleBankFunc @@ -879,8 +879,8 @@ _08159AAE: movs r1, 0 bl sub_8059CB4 ldr r0, =gUnknown_085CCA04 - bl get_battle_strings_ - ldr r0, =gUnknown_02022E2C + bl StrCpyDecodeToDisplayedStringBattle + ldr r0, =gDisplayedStringBattle movs r1, 0x1 bl battle_show_message_maybe pop {r4} diff --git a/asm/battle_controller_wally.s b/asm/battle_controller_wally.s index 978e2da2d..620bf3e95 100644 --- a/asm/battle_controller_wally.s +++ b/asm/battle_controller_wally.s @@ -3604,7 +3604,7 @@ sub_816A3B8: @ 816A3B8 adds r0, r1 ldrh r0, [r0] bl BufferStringBattle - ldr r0, =gUnknown_02022E2C + ldr r0, =gDisplayedStringBattle movs r1, 0 bl battle_show_message_maybe ldr r1, =gBattleBankFunc @@ -3693,8 +3693,8 @@ _0816A48A: movs r1, 0 bl sub_8059CB4 ldr r0, =gUnknown_085CCA15 - bl get_battle_strings_ - ldr r0, =gUnknown_02022E2C + bl StrCpyDecodeToDisplayedStringBattle + ldr r0, =gDisplayedStringBattle movs r1, 0x1 bl battle_show_message_maybe pop {r4} diff --git a/asm/battle_message.s b/asm/battle_message.s index 1e46ef557..c224df9f9 100644 --- a/asm/battle_message.s +++ b/asm/battle_message.s @@ -673,7 +673,7 @@ _0814E6B8: lsls r0, 1 cmp r6, r0 bls _0814E6CC - ldr r1, =gUnknown_02022E2C + ldr r1, =gDisplayedStringBattle movs r0, 0xFF strb r0, [r1] b _0814E6DE @@ -687,7 +687,7 @@ _0814E6CC: ldr r7, [r0] _0814E6D8: adds r0, r7, 0 - bl get_battle_strings_ + bl StrCpyDecodeToDisplayedStringBattle _0814E6DE: pop {r3-r5} mov r8, r3 @@ -699,18 +699,18 @@ _0814E6DE: .pool thumb_func_end BufferStringBattle - thumb_func_start get_battle_strings_ -get_battle_strings_: @ 814E6F0 + thumb_func_start StrCpyDecodeToDisplayedStringBattle +StrCpyDecodeToDisplayedStringBattle: @ 814E6F0 push {lr} - ldr r1, =gUnknown_02022E2C - bl get_battle_strings + ldr r1, =gDisplayedStringBattle + bl StrCpyDecodeBattle pop {r1} bx r1 .pool - thumb_func_end get_battle_strings_ + thumb_func_end StrCpyDecodeToDisplayedStringBattle - thumb_func_start sub_814E700 -sub_814E700: @ 814E700 + thumb_func_start AppendStatusString +AppendStatusString: @ 814E700 push {r4,r5,lr} sub sp, 0x8 adds r4, r0, 0 @@ -761,10 +761,10 @@ _0814E75A: pop {r4,r5} pop {r1} bx r1 - thumb_func_end sub_814E700 + thumb_func_end AppendStatusString - thumb_func_start get_battle_strings -get_battle_strings: @ 814E764 + thumb_func_start StrCpyDecodeBattle +StrCpyDecodeBattle: @ 814E764 push {r4-r7,lr} mov r7, r9 mov r6, r8 @@ -878,7 +878,7 @@ _0814E8A0: .pool _0814E8B8: adds r0, r5, 0 - bl sub_814E700 + bl AppendStatusString adds r4, r0, 0 cmp r4, 0 beq _0814E8C8 @@ -904,7 +904,7 @@ _0814E8EE: adds r0, r1, 0 _0814E8F0: adds r1, r4, 0 - bl sub_814F648 + bl StrCpyDecodeBattleTextBuff bl _0814F5C0 .pool _0814E904: @@ -2335,10 +2335,10 @@ _0814F62A: pop {r4-r7} pop {r1} bx r1 - thumb_func_end get_battle_strings + thumb_func_end StrCpyDecodeBattle - thumb_func_start sub_814F648 -sub_814F648: @ 814F648 + thumb_func_start StrCpyDecodeBattleTextBuff +StrCpyDecodeBattleTextBuff: @ 814F648 push {r4-r7,lr} mov r7, r8 push {r7} @@ -2652,7 +2652,7 @@ _0814F8EA: pop {r4-r7} pop {r0} bx r0 - thumb_func_end sub_814F648 + thumb_func_end StrCpyDecodeBattleTextBuff thumb_func_start sub_814F8F8 sub_814F8F8: @ 814F8F8 diff --git a/asm/contest.s b/asm/contest.s index e5a728c3c..e0ea14adb 100644 --- a/asm/contest.s +++ b/asm/contest.s @@ -1415,19 +1415,19 @@ sub_80D833C: @ 80D833C lsls r0, 24 cmp r0, 0 bne _080D83CC - ldr r0, =gUnknown_02022E2C + ldr r0, =gDisplayedStringBattle ldr r1, =gUnknown_0827D507 bl StringCopy b _080D83D4 .pool _080D83CC: - ldr r0, =gUnknown_02022E2C + ldr r0, =gDisplayedStringBattle ldr r1, =gUnknown_0827D531 bl StringCopy _080D83D4: bl sub_80DB89C ldr r4, =gStringVar4 - ldr r1, =gUnknown_02022E2C + ldr r1, =gDisplayedStringBattle adds r0, r4, 0 bl StringExpandPlaceholders adds r0, r4, 0 @@ -1752,19 +1752,19 @@ _080D868E: lsls r0, 24 cmp r0, 0 bne _080D86DC - ldr r0, =gUnknown_02022E2C + ldr r0, =gDisplayedStringBattle ldr r1, =gUnknown_0827D507 bl StringCopy b _080D86E4 .pool _080D86DC: - ldr r0, =gUnknown_02022E2C + ldr r0, =gDisplayedStringBattle ldr r1, =gUnknown_0827D531 bl StringCopy _080D86E4: bl sub_80DB89C ldr r4, =gStringVar4 - ldr r1, =gUnknown_02022E2C + ldr r1, =gDisplayedStringBattle adds r0, r4, 0 bl StringExpandPlaceholders adds r0, r4, 0 @@ -6406,7 +6406,7 @@ sub_80DAED4: @ 80DAED4 adds r5, r0, 0 lsls r4, r1, 24 lsrs r4, 24 - ldr r0, =gUnknown_02022E2C + ldr r0, =gDisplayedStringBattle ldr r1, =gUnknown_085ED1AB bl StringCopy adds r1, r0, 0 @@ -6458,7 +6458,7 @@ sub_80DAF1C: @ 80DAF1C add r0, sp, 0x4 adds r1, r4, 0 bl sub_80DAED4 - ldr r4, =gUnknown_02022E2C + ldr r4, =gDisplayedStringBattle movs r0, 0x7 adds r1, r4, 0 movs r2, 0x60 @@ -6514,7 +6514,7 @@ sub_80DAFA0: @ 80DAFA0 ldr r0, =gUnknown_02039F26 adds r4, r0 ldrb r0, [r4] - ldr r1, =gUnknown_02022E2C + ldr r1, =gDisplayedStringBattle movs r2, 0x7 str r2, [sp] movs r2, 0x5 diff --git a/asm/contest_link_80F57C4.s b/asm/contest_link_80F57C4.s index 851ec8709..39a8f5209 100644 --- a/asm/contest_link_80F57C4.s +++ b/asm/contest_link_80F57C4.s @@ -278,7 +278,7 @@ sub_80F5A74: @ 80F5A74 lsls r1, r5, 6 ldr r0, =gUnknown_02039E00 adds r7, r1, r0 - ldr r6, =gUnknown_02022E2C + ldr r6, =gDisplayedStringBattle ldr r0, =gUnknown_02039F25 ldrb r0, [r0] cmp r5, r0 @@ -291,7 +291,7 @@ _080F5A96: adds r1, r7, 0x2 adds r0, r6, 0 bl StringCopy - ldr r4, =gUnknown_02022E2C + ldr r4, =gDisplayedStringBattle adds r0, r5, 0 adds r1, r4, 0 movs r2, 0 diff --git a/asm/evolution_scene.s b/asm/evolution_scene.s index 2ccbe8167..01b495c09 100644 --- a/asm/evolution_scene.s +++ b/asm/evolution_scene.s @@ -1897,8 +1897,8 @@ _0813EC2A: bl PlayFanfare ldr r0, =gUnknown_085CC270 ldr r0, [r0, 0xC] - bl get_battle_strings_ - ldr r0, =gUnknown_02022E2C + bl StrCpyDecodeToDisplayedStringBattle + ldr r0, =gDisplayedStringBattle movs r1, 0 bl battle_show_message_maybe ldr r0, =gTasks @@ -1994,8 +1994,8 @@ _0813ED16: bl sub_804F574 ldr r0, =gUnknown_085CC270 ldr r0, [r0, 0x10] - bl get_battle_strings_ - ldr r0, =gUnknown_02022E2C + bl StrCpyDecodeToDisplayedStringBattle + ldr r0, =gDisplayedStringBattle movs r1, 0 bl battle_show_message_maybe ldr r0, =gTasks @@ -2023,8 +2023,8 @@ _0813ED56: _0813ED62: ldr r0, =gUnknown_085CC270 ldr r0, [r0, 0x14] - bl get_battle_strings_ - ldr r0, =gUnknown_02022E2C + bl StrCpyDecodeToDisplayedStringBattle + ldr r0, =gDisplayedStringBattle movs r1, 0 bl battle_show_message_maybe ldr r0, =gTasks @@ -2048,8 +2048,8 @@ _0813ED90: bne _0813EDCE ldr r0, =gUnknown_085CC270 ldr r0, [r0, 0x18] - bl get_battle_strings_ - ldr r0, =gUnknown_02022E2C + bl StrCpyDecodeToDisplayedStringBattle + ldr r0, =gDisplayedStringBattle movs r1, 0 bl battle_show_message_maybe ldr r0, =gTasks @@ -2289,8 +2289,8 @@ _0813EFC8: ldr r3, =0x000004cc adds r0, r3 ldr r0, [r0] - bl get_battle_strings_ - ldr r0, =gUnknown_02022E2C + bl StrCpyDecodeToDisplayedStringBattle + ldr r0, =gDisplayedStringBattle movs r1, 0 bl battle_show_message_maybe ldr r1, =gTasks @@ -2338,8 +2338,8 @@ _0813F05C: lsls r1, 2 adds r0, r1 ldr r0, [r0] - bl get_battle_strings_ - ldr r0, =gUnknown_02022E2C + bl StrCpyDecodeToDisplayedStringBattle + ldr r0, =gDisplayedStringBattle movs r1, 0 bl battle_show_message_maybe ldr r0, =gTasks @@ -2367,8 +2367,8 @@ _0813F09E: _0813F0AA: ldr r0, =gUnknown_085CC270 ldr r0, [r0, 0x1C] - bl get_battle_strings_ - ldr r0, =gUnknown_02022E2C + bl StrCpyDecodeToDisplayedStringBattle + ldr r0, =gDisplayedStringBattle movs r1, 0 bl battle_show_message_maybe ldr r0, =gTasks @@ -2395,8 +2395,8 @@ _0813F0D8: lsls r1, 2 adds r0, r1 ldr r0, [r0] - bl get_battle_strings_ - ldr r0, =gUnknown_02022E2C + bl StrCpyDecodeToDisplayedStringBattle + ldr r0, =gDisplayedStringBattle movs r1, 0 bl battle_show_message_maybe ldr r1, =gTasks @@ -2411,8 +2411,8 @@ _0813F0D8: _0813F120: ldr r0, =gUnknown_085CC270 ldr r0, [r0, 0x20] - bl get_battle_strings_ - ldr r0, =gUnknown_02022E2C + bl StrCpyDecodeToDisplayedStringBattle + ldr r0, =gDisplayedStringBattle movs r1, 0 bl battle_show_message_maybe ldr r1, =gTasks @@ -2431,8 +2431,8 @@ _0813F120: _0813F154: ldr r0, =gUnknown_085CC270 ldr r0, [r0, 0x24] - bl get_battle_strings_ - ldr r0, =gUnknown_02022E2C + bl StrCpyDecodeToDisplayedStringBattle + ldr r0, =gDisplayedStringBattle movs r1, 0 bl battle_show_message_maybe ldr r1, =gTasks @@ -3064,8 +3064,8 @@ _0813F762: bl PlayFanfare ldr r0, =gUnknown_085CC270 ldr r0, [r0, 0xC] - bl get_battle_strings_ - ldr r1, =gUnknown_02022E2C + bl StrCpyDecodeToDisplayedStringBattle + ldr r1, =gDisplayedStringBattle movs r0, 0 movs r2, 0x1 bl sub_807F1A8 @@ -3163,8 +3163,8 @@ _0813F852: bl sub_804F574 ldr r0, =gUnknown_085CC270 ldr r0, [r0, 0x10] - bl get_battle_strings_ - ldr r1, =gUnknown_02022E2C + bl StrCpyDecodeToDisplayedStringBattle + ldr r1, =gDisplayedStringBattle movs r0, 0 movs r2, 0x1 bl sub_807F1A8 @@ -3193,8 +3193,8 @@ _0813F892: _0813F89E: ldr r0, =gUnknown_085CC270 ldr r0, [r0, 0x14] - bl get_battle_strings_ - ldr r1, =gUnknown_02022E2C + bl StrCpyDecodeToDisplayedStringBattle + ldr r1, =gDisplayedStringBattle movs r0, 0 movs r2, 0x1 bl sub_807F1A8 @@ -3219,8 +3219,8 @@ _0813F8CC: bne _0813F90C ldr r0, =gUnknown_085CC270 ldr r0, [r0, 0x18] - bl get_battle_strings_ - ldr r1, =gUnknown_02022E2C + bl StrCpyDecodeToDisplayedStringBattle + ldr r1, =gDisplayedStringBattle movs r0, 0 movs r2, 0x1 bl sub_807F1A8 @@ -3299,8 +3299,8 @@ _0813F98C: lsls r1, 3 adds r0, r1 ldr r0, [r0] - bl get_battle_strings_ - ldr r1, =gUnknown_02022E2C + bl StrCpyDecodeToDisplayedStringBattle + ldr r1, =gDisplayedStringBattle movs r0, 0 movs r2, 0x1 bl sub_807F1A8 @@ -3336,8 +3336,8 @@ _0813F9E4: lsls r1, 3 adds r0, r1 ldr r0, [r0] - bl get_battle_strings_ - ldr r1, =gUnknown_02022E2C + bl StrCpyDecodeToDisplayedStringBattle + ldr r1, =gDisplayedStringBattle movs r0, 0 movs r2, 0x1 bl sub_807F1A8 @@ -3441,8 +3441,8 @@ _0813FAEC: ldr r1, =0x000004cc adds r0, r1 ldr r0, [r0] - bl get_battle_strings_ - ldr r1, =gUnknown_02022E2C + bl StrCpyDecodeToDisplayedStringBattle + ldr r1, =gDisplayedStringBattle movs r0, 0 movs r2, 0x1 bl sub_807F1A8 @@ -3481,8 +3481,8 @@ _0813FB3C: lsls r1, 2 adds r0, r1 ldr r0, [r0] - bl get_battle_strings_ - ldr r1, =gUnknown_02022E2C + bl StrCpyDecodeToDisplayedStringBattle + ldr r1, =gDisplayedStringBattle movs r0, 0 movs r2, 0x1 bl sub_807F1A8 @@ -3511,8 +3511,8 @@ _0813FBB2: _0813FBBE: ldr r0, =gUnknown_085CC270 ldr r0, [r0, 0x1C] - bl get_battle_strings_ - ldr r1, =gUnknown_02022E2C + bl StrCpyDecodeToDisplayedStringBattle + ldr r1, =gDisplayedStringBattle movs r0, 0 movs r2, 0x1 bl sub_807F1A8 @@ -3540,8 +3540,8 @@ _0813FBEC: lsls r1, 2 adds r0, r1 ldr r0, [r0] - bl get_battle_strings_ - ldr r1, =gUnknown_02022E2C + bl StrCpyDecodeToDisplayedStringBattle + ldr r1, =gDisplayedStringBattle movs r0, 0 movs r2, 0x1 bl sub_807F1A8 @@ -3557,8 +3557,8 @@ _0813FBEC: _0813FC38: ldr r0, =gUnknown_085CC270 ldr r0, [r0, 0x20] - bl get_battle_strings_ - ldr r1, =gUnknown_02022E2C + bl StrCpyDecodeToDisplayedStringBattle + ldr r1, =gDisplayedStringBattle movs r0, 0 movs r2, 0x1 bl sub_807F1A8 @@ -3578,8 +3578,8 @@ _0813FC38: _0813FC70: ldr r0, =gUnknown_085CC270 ldr r0, [r0, 0x24] - bl get_battle_strings_ - ldr r1, =gUnknown_02022E2C + bl StrCpyDecodeToDisplayedStringBattle + ldr r1, =gDisplayedStringBattle movs r0, 0 movs r2, 0x1 bl sub_807F1A8 diff --git a/asm/pokemon_3.s b/asm/pokemon_3.s index 38d0bfab0..5a2fcfdeb 100644 --- a/asm/pokemon_3.s +++ b/asm/pokemon_3.s @@ -260,7 +260,7 @@ sub_806CF24: @ 806CF24 ldr r1, =gUnknown_085CB38A bl StringCopy ldr r0, =gUnknown_085CB3AA - bl get_battle_strings_ + bl StrCpyDecodeToDisplayedStringBattle pop {r0} bx r0 .pool @@ -342,7 +342,7 @@ _0806D020: mov r1, r8 strb r0, [r1] ldr r0, =gUnknown_085CA459 - bl get_battle_strings_ + bl StrCpyDecodeToDisplayedStringBattle _0806D02E: adds r6, 0x2 adds r5, 0x1 @@ -358,9 +358,9 @@ _0806D02E: ldrb r0, [r0] strb r0, [r1] ldr r0, =gUnknown_085CA424 - bl get_battle_strings_ + bl StrCpyDecodeToDisplayedStringBattle _0806D04E: - ldr r0, =gUnknown_02022E2C + ldr r0, =gDisplayedStringBattle pop {r3} mov r8, r3 pop {r4-r7} @@ -3698,7 +3698,7 @@ _0806E9F6: strb r0, [r4, 0x4] ldr r0, =gUnknown_085CB2A1 ldr r1, =gStringVar4 - bl get_battle_strings + bl StrCpyDecodeBattle pop {r4,r5} pop {r0} bx r0 diff --git a/asm/rom_8034C54.s b/asm/rom_8034C54.s index d79ada7c7..2690b0f98 100644 --- a/asm/rom_8034C54.s +++ b/asm/rom_8034C54.s @@ -3062,16481 +3062,4 @@ _08036758: bx r1 thumb_func_end sub_80363C4 - thumb_func_start sub_8036760 -sub_8036760: @ 8036760 - push {lr} - bl MoveSaveBlocks_ResetHeap - bl sub_8056F28 - bl dp11_init - bl init_uns_table_pokemon_copy - bl sub_8185F84 - ldr r0, =gBattleTypeFlags - ldr r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _080367CC - movs r0, 0x80 - lsls r0, 17 - ands r0, r1 - cmp r0, 0 - beq _08036798 - bl sub_80367D4 - b _080367BA - .pool -_08036798: - movs r0, 0x80 - lsls r0, 15 - ands r1, r0 - cmp r1, 0 - bne _080367B4 - bl battle_wireless_setup_if_required_maybe - ldr r0, =sub_8037ADC - bl SetMainCallback2 - b _080367BA - .pool -_080367B4: - ldr r0, =intro_end - bl SetMainCallback2 -_080367BA: - ldr r1, =gBattleCommunication - movs r0, 0 - strb r0, [r1] - b _080367D0 - .pool -_080367CC: - bl sub_80367D4 -_080367D0: - pop {r0} - bx r0 - thumb_func_end sub_8036760 - - thumb_func_start sub_80367D4 -sub_80367D4: @ 80367D4 - push {r4,r5,lr} - sub sp, 0x4 - movs r0, 0 - bl SetHBlankCallback - movs r0, 0 - bl SetVBlankCallback - movs r0, 0 - str r0, [sp] - movs r1, 0xC0 - lsls r1, 19 - ldr r2, =0x05006000 - mov r0, sp - bl CpuSet - movs r0, 0x4C - movs r1, 0 - bl SetGpuReg - movs r0, 0x40 - movs r1, 0xF0 - bl SetGpuReg - ldr r1, =0x00005051 - movs r0, 0x44 - bl SetGpuReg - movs r0, 0x48 - movs r1, 0 - bl SetGpuReg - movs r0, 0x4A - movs r1, 0 - bl SetGpuReg - ldr r0, =gUnknown_02022E24 - movs r2, 0xF0 - strh r2, [r0] - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 15 - ands r0, r1 - cmp r0, 0 - beq _08036870 - ldr r0, =gUnknown_02038BCE - ldrh r1, [r0] - ldr r0, =0x00000c03 - cmp r1, r0 - beq _08036870 - ldr r1, =gUnknown_02022E26 - movs r0, 0x9F - strh r0, [r1] - ldr r0, =gUnknown_02022E28 - strh r2, [r0] - ldr r1, =gUnknown_02022E2A - movs r0, 0x20 - strh r0, [r1] - b _080368BE - .pool -_08036870: - ldr r0, =gUnknown_02022E26 - ldr r2, =0x00005051 - adds r1, r2, 0 - strh r1, [r0] - bl dp12_8087EA4 - ldr r0, =gUnknown_02038C28 - movs r3, 0xF0 - movs r5, 0xF0 - lsls r5, 3 - adds r2, r0, r5 - movs r1, 0x4F -_08036888: - strh r3, [r0] - strh r3, [r2] - adds r2, 0x2 - adds r0, 0x2 - subs r1, 0x1 - cmp r1, 0 - bge _08036888 - movs r1, 0x50 - ldr r4, =gUnknown_0831AC70 - ldr r0, =gUnknown_02038C28 - ldr r3, =0x0000ff10 - movs r5, 0x82 - lsls r5, 4 - adds r2, r0, r5 - adds r0, 0xA0 -_080368A6: - strh r3, [r0] - strh r3, [r2] - adds r2, 0x2 - adds r0, 0x2 - adds r1, 0x1 - cmp r1, 0x9F - ble _080368A6 - ldr r0, [r4] - ldr r1, [r4, 0x4] - ldr r2, [r4, 0x8] - bl sub_80BA038 -_080368BE: - bl ResetPaletteFade - ldr r0, =gUnknown_02022E14 - movs r1, 0 - strh r1, [r0] - ldr r0, =gUnknown_02022E16 - strh r1, [r0] - ldr r0, =gUnknown_02022E18 - strh r1, [r0] - ldr r0, =gUnknown_02022E1A - strh r1, [r0] - ldr r0, =gUnknown_02022E1C - strh r1, [r0] - ldr r0, =gUnknown_02022E1E - strh r1, [r0] - ldr r0, =gUnknown_02022E20 - strh r1, [r0] - ldr r0, =gUnknown_02022E22 - strh r1, [r0] - bl sub_80B0BD0 - ldr r2, =gUnknown_02022FF0 - strb r0, [r2] - ldr r4, =gBattleTypeFlags - ldr r0, [r4] - movs r1, 0x80 - lsls r1, 17 - ands r0, r1 - cmp r0, 0 - beq _080368FE - movs r0, 0x8 - strb r0, [r2] -_080368FE: - bl c2_berry_program_update_menu - bl sub_8035AA4 - bl ResetSpriteData - bl ResetTasks - bl sub_8036154 - bl FreeAllSpritePalettes - ldr r1, =gReservedSpritePaletteCount - movs r0, 0x4 - strb r0, [r1] - ldr r0, =vblank_cb_08078BB4 - bl SetVBlankCallback - bl sub_803269C - ldr r2, [r4] - movs r1, 0xA0 - lsls r1, 1 - adds r0, r2, 0 - ands r0, r1 - cmp r0, r1 - beq _0803693E - ldr r1, =0x00400040 - adds r0, r2, 0 - ands r0, r1 - cmp r0, r1 - bne _08036994 -_0803693E: - ldr r0, =sub_8037458 - bl SetMainCallback2 - b _080369AE - .pool -_08036994: - movs r0, 0x40 - ands r2, r0 - cmp r2, 0 - beq _080369A8 - ldr r0, =sub_8037DF4 - bl SetMainCallback2 - b _080369AE - .pool -_080369A8: - ldr r0, =sub_8036FAC - bl SetMainCallback2 -_080369AE: - ldr r5, =gBattleTypeFlags - ldr r0, [r5] - ldr r1, =0x01000002 - ands r0, r1 - cmp r0, 0 - bne _080369E8 - ldr r4, =gEnemyParty - ldr r0, =gTrainerBattleOpponent_A - ldrh r1, [r0] - adds r0, r4, 0 - movs r2, 0x1 - bl LoadTrainerParty - ldr r0, [r5] - movs r1, 0x80 - lsls r1, 8 - ands r0, r1 - cmp r0, 0 - beq _080369E4 - movs r1, 0x96 - lsls r1, 1 - adds r0, r4, r1 - ldr r1, =gTrainerBattleOpponent_B - ldrh r1, [r1] - movs r2, 0 - bl LoadTrainerParty -_080369E4: - bl SetWildMonHeldItem -_080369E8: - ldr r1, =gMain - ldr r2, =0x00000439 - adds r1, r2 - ldrb r0, [r1] - movs r2, 0x2 - orrs r0, r2 - strb r0, [r1] - ldr r0, =gSaveBlock2Ptr - ldr r1, [r0] - ldr r5, =0x00000ca9 - adds r1, r5 - ldrb r2, [r1] - movs r0, 0x9 - negs r0, r0 - ands r0, r2 - strb r0, [r1] - ldr r4, =gPlayerParty - movs r0, 0xFA - lsls r0, 1 - adds r5, r4, r0 -_08036A10: - adds r0, r4, 0 - movs r1, 0x3 - bl AdjustFriendship - adds r4, 0x64 - cmp r4, r5 - ble _08036A10 - movs r1, 0 - ldr r0, =gBattleCommunication - strb r1, [r0] - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80367D4 - - thumb_func_start sub_8036A5C -sub_8036A5C: @ 8036A5C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - movs r6, 0 - mov r9, r6 - movs r0, 0xCE - lsls r0, 1 - mov r10, r0 - mov r8, r6 -_08036A72: - movs r0, 0x64 - mov r4, r9 - muls r4, r0 - ldr r0, =gPlayerParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - lsls r0, 16 - lsrs r5, r0, 16 - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - lsls r0, 16 - lsrs r7, r0, 16 - adds r0, r4, 0 - movs r1, 0x37 - bl GetMonData - adds r1, r0, 0 - cmp r5, 0 - beq _08036AEE - cmp r5, r10 - beq _08036ABA - cmp r7, 0 - beq _08036ABA - cmp r1, 0 - bne _08036ABA - movs r0, 0x1 - mov r2, r8 - lsls r0, r2 - orrs r6, r0 - lsls r0, r6, 16 - lsrs r6, r0, 16 -_08036ABA: - cmp r5, 0 - beq _08036AEE - cmp r7, 0 - beq _08036AD6 - cmp r5, r10 - beq _08036ACA - cmp r1, 0 - beq _08036AD6 -_08036ACA: - movs r0, 0x2 - mov r1, r8 - lsls r0, r1 - orrs r6, r0 - lsls r0, r6, 16 - lsrs r6, r0, 16 -_08036AD6: - cmp r5, 0 - beq _08036AEE - cmp r5, r10 - beq _08036AEE - cmp r7, 0 - bne _08036AEE - movs r0, 0x3 - mov r2, r8 - lsls r0, r2 - orrs r6, r0 - lsls r0, r6, 16 - lsrs r6, r0, 16 -_08036AEE: - movs r0, 0x2 - add r8, r0 - movs r1, 0x1 - add r9, r1 - mov r2, r9 - cmp r2, 0x5 - ble _08036A72 - ldr r4, =gBattleStruct - ldr r0, [r4] - movs r1, 0xC1 - lsls r1, 1 - adds r0, r1 - strb r6, [r0] - ldr r0, [r4] - ldr r5, =0x00000183 - adds r0, r5 - lsrs r1, r6, 8 - strb r1, [r0] - ldr r0, =0x000008d2 - bl FlagGet - ldr r1, [r4] - adds r1, r5 - lsls r0, 7 - ldrb r2, [r1] - orrs r0, r2 - strb r0, [r1] - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8036A5C - - thumb_func_start sub_8036B44 -sub_8036B44: @ 8036B44 - push {r4-r7,lr} - ldr r0, =gBattleStruct - ldr r5, [r0] - movs r0, 0xC2 - lsls r0, 1 - adds r4, r5, r0 - bl sub_80E162C - cmp r0, 0x1 - bne _08036BC0 - movs r2, 0 - ldr r7, =gSaveBlock1Ptr - movs r1, 0xC6 - lsls r1, 1 - adds r5, r1 - adds r6, r7, 0 - ldr r3, =0x000031f8 -_08036B66: - adds r0, r4, r2 - ldr r1, [r6] - adds r1, r3 - adds r1, r2 - ldrb r1, [r1] - strb r1, [r0] - adds r2, 0x1 - cmp r2, 0x5 - ble _08036B66 - adds r1, r4, r2 - movs r0, 0xFF - strb r0, [r1] - movs r2, 0 - adds r3, r5, 0 - ldr r6, =gSaveBlock1Ptr - ldr r5, =0x00003214 -_08036B86: - adds r0, r3, r2 - ldr r1, [r6] - adds r1, r5 - adds r1, r2 - ldrb r1, [r1] - strb r1, [r0] - adds r2, 0x1 - cmp r2, 0x11 - ble _08036B86 - ldr r0, [r7] - ldr r1, =0x00003226 - adds r0, r1 - ldrb r0, [r0] - strb r0, [r4, 0x7] - ldr r0, [r7] - adds r1, 0x1 - adds r0, r1 - ldrb r0, [r0] - b _08036C00 - .pool -_08036BC0: - movs r0, 0xAF - bl ItemIdToBerryType - lsls r0, 24 - lsrs r0, 24 - bl GetBerryInfo - adds r3, r0, 0 - movs r2, 0 - movs r0, 0xC6 - lsls r0, 1 - adds r5, r0 -_08036BD8: - adds r0, r4, r2 - adds r1, r3, r2 - ldrb r1, [r1] - strb r1, [r0] - adds r2, 0x1 - cmp r2, 0x5 - ble _08036BD8 - adds r1, r4, r2 - movs r0, 0xFF - strb r0, [r1] - adds r0, r5, 0 - movs r2, 0 - adds r1, r0, 0 - adds r1, 0x11 -_08036BF4: - strb r2, [r1] - subs r1, 0x1 - cmp r1, r0 - bge _08036BF4 - movs r0, 0 - strb r0, [r4, 0x7] -_08036C00: - strb r0, [r4, 0x1A] - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8036B44 - - thumb_func_start berry_801017C -berry_801017C: @ 8036C08 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r0, =gBattleTypeFlags - ldr r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08036C20 - b _08036D4C -_08036C20: - bl sub_80E162C - cmp r0, 0x1 - bne _08036CDC - movs r5, 0 - ldr r3, =gEnigmaBerries - ldr r0, =gSaveBlock1Ptr - mov r8, r0 - adds r6, r3, 0 - mov r4, r8 - ldr r2, =0x000031f8 - adds r7, r3, 0 - adds r7, 0x38 -_08036C3A: - adds r1, r5, r6 - ldr r0, [r4] - adds r0, r2 - adds r0, r5 - ldrb r0, [r0] - strb r0, [r1] - adds r1, r5, r7 - ldr r0, [r4] - adds r0, r2 - adds r0, r5 - ldrb r0, [r0] - strb r0, [r1] - adds r5, 0x1 - cmp r5, 0x5 - ble _08036C3A - adds r1, r5, r3 - movs r0, 0xFF - strb r0, [r1] - adds r0, r3, 0 - adds r0, 0x38 - adds r0, r5, r0 - movs r1, 0x1 - negs r1, r1 - strb r1, [r0] - movs r5, 0 - adds r7, r3, 0 - adds r7, 0x8 - ldr r4, =gSaveBlock1Ptr - ldr r2, =0x00003214 - adds r6, r3, 0 - adds r6, 0x40 -_08036C78: - adds r1, r5, r7 - ldr r0, [r4] - adds r0, r2 - adds r0, r5 - ldrb r0, [r0] - strb r0, [r1] - adds r1, r5, r6 - ldr r0, [r4] - adds r0, r2 - adds r0, r5 - ldrb r0, [r0] - strb r0, [r1] - adds r5, 0x1 - cmp r5, 0x11 - ble _08036C78 - mov r1, r8 - ldr r0, [r1] - ldr r2, =0x00003226 - adds r0, r2 - ldrb r1, [r0] - strb r1, [r3, 0x7] - ldrb r0, [r0] - adds r1, r3, 0 - adds r1, 0x3F - strb r0, [r1] - mov r4, r8 - ldr r0, [r4] - ldr r1, =0x00003227 - adds r0, r1 - ldrb r1, [r0] - strb r1, [r3, 0x1A] - ldrb r1, [r0] - adds r0, r3, 0 - adds r0, 0x52 - strb r1, [r0] - b _08036EA0 - .pool -_08036CDC: - movs r0, 0xAF - bl ItemIdToBerryType - lsls r0, 24 - lsrs r0, 24 - bl GetBerryInfo - adds r6, r0, 0 - movs r5, 0 - ldr r4, =gEnigmaBerries - adds r7, r4, 0 - adds r7, 0x38 - adds r3, r4, 0 -_08036CF6: - adds r1, r5, r4 - adds r2, r6, r5 - ldrb r0, [r2] - strb r0, [r1] - adds r1, r5, r7 - ldrb r0, [r2] - strb r0, [r1] - adds r5, 0x1 - cmp r5, 0x5 - ble _08036CF6 - adds r1, r5, r3 - movs r0, 0xFF - strb r0, [r1] - adds r0, r3, 0 - adds r0, 0x38 - adds r0, r5, r0 - movs r1, 0x1 - negs r1, r1 - strb r1, [r0] - movs r5, 0 - adds r4, r3, 0 - adds r4, 0x8 - movs r1, 0 - adds r2, r3, 0 - adds r2, 0x40 -_08036D28: - adds r0, r5, r4 - strb r1, [r0] - adds r0, r5, r2 - strb r1, [r0] - adds r5, 0x1 - cmp r5, 0x11 - ble _08036D28 - movs r1, 0 - strb r1, [r3, 0x7] - adds r0, r3, 0 - adds r0, 0x3F - strb r1, [r0] - strb r1, [r3, 0x1A] - adds r0, 0x13 - strb r1, [r0] - b _08036EA0 - .pool -_08036D4C: - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08036DF0 - movs r0, 0x80 - lsls r0, 1 - ands r1, r0 - movs r2, 0x4 - mov r8, r2 - cmp r1, 0 - beq _08036D66 - movs r4, 0x2 - mov r8, r4 -_08036D66: - movs r5, 0 - cmp r5, r8 - blt _08036D6E - b _08036EA0 -_08036D6E: - ldr r0, =gLinkPlayers - mov r12, r0 - ldr r3, =gEnigmaBerries - adds r6, r3, 0 - movs r1, 0x8 - adds r1, r6 - mov r9, r1 -_08036D7C: - lsls r1, r5, 8 - ldr r0, =gUnknown_020223C8 - adds r7, r1, r0 - lsls r0, r5, 3 - subs r0, r5 - lsls r0, 2 - add r0, r12 - ldrb r3, [r0, 0x18] - movs r4, 0 - adds r5, 0x1 - mov r10, r5 - lsls r1, r3, 3 - subs r0, r1, r3 - adds r5, r1, 0 - lsls r0, 2 - adds r1, r0, r6 -_08036D9C: - adds r0, r7, r4 - ldrb r0, [r0] - strb r0, [r1] - adds r1, 0x1 - adds r4, 0x1 - cmp r4, 0x5 - ble _08036D9C - subs r0, r5, r3 - lsls r0, 2 - adds r1, r4, r0 - adds r1, r6 - movs r2, 0xFF - strb r2, [r1] - movs r4, 0 - mov r2, r9 - adds r1, r0, r2 - adds r2, r7, 0 - adds r2, 0x8 -_08036DC0: - adds r0, r2, r4 - ldrb r0, [r0] - strb r0, [r1] - adds r1, 0x1 - adds r4, 0x1 - cmp r4, 0x11 - ble _08036DC0 - subs r0, r5, r3 - lsls r0, 2 - adds r0, r6 - ldrb r1, [r7, 0x7] - strb r1, [r0, 0x7] - ldrb r1, [r7, 0x1A] - strb r1, [r0, 0x1A] - mov r5, r10 - cmp r5, r8 - blt _08036D7C - b _08036EA0 - .pool -_08036DF0: - movs r5, 0 - ldr r4, =gEnigmaBerries - mov r9, r4 -_08036DF6: - lsls r0, r5, 8 - ldr r1, =gUnknown_020223C8 - adds r7, r0, r1 - movs r4, 0 - adds r2, r5, 0x1 - mov r10, r2 - lsls r0, r5, 3 - mov r8, r0 - adds r1, r5, 0x2 - mov r12, r1 - subs r1, r0, r5 - mov r2, r12 - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - mov r2, r9 - adds r3, r0, r2 - lsls r1, 2 - adds r2, r1, r2 -_08036E1C: - adds r0, r7, r4 - ldrb r1, [r0] - strb r1, [r2] - ldrb r0, [r0] - strb r0, [r3] - adds r3, 0x1 - adds r2, 0x1 - adds r4, 0x1 - cmp r4, 0x5 - ble _08036E1C - mov r0, r8 - subs r3, r0, r5 - lsls r3, 2 - adds r1, r4, r3 - add r1, r9 - ldrb r0, [r1] - movs r2, 0xFF - orrs r0, r2 - strb r0, [r1] - mov r0, r12 - lsls r2, r0, 3 - subs r2, r0 - lsls r2, 2 - adds r1, r4, r2 - add r1, r9 - ldrb r0, [r1] - movs r4, 0xFF - orrs r0, r4 - strb r0, [r1] - movs r4, 0 - ldr r0, =gEnigmaBerries - adds r0, 0x8 - adds r2, r0 - adds r3, r0 - adds r6, r7, 0 - adds r6, 0x8 -_08036E64: - adds r0, r6, r4 - ldrb r1, [r0] - strb r1, [r3] - ldrb r0, [r0] - strb r0, [r2] - adds r2, 0x1 - adds r3, 0x1 - adds r4, 0x1 - cmp r4, 0x11 - ble _08036E64 - mov r0, r8 - subs r2, r0, r5 - lsls r2, 2 - add r2, r9 - ldrb r0, [r7, 0x7] - strb r0, [r2, 0x7] - mov r1, r12 - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r9 - ldrb r1, [r7, 0x7] - strb r1, [r0, 0x7] - ldrb r1, [r7, 0x1A] - strb r1, [r2, 0x1A] - ldrb r1, [r7, 0x1A] - strb r1, [r0, 0x1A] - mov r5, r10 - cmp r5, 0x1 - ble _08036DF6 -_08036EA0: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end berry_801017C - - thumb_func_start sub_8036EB8 -sub_8036EB8: @ 8036EB8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r1, 24 - lsrs r3, r1, 24 - movs r6, 0 - ldr r0, =gUnknown_020223C4 - ldrh r2, [r0] - movs r1, 0x80 - lsls r1, 1 - mov r12, r0 - cmp r2, r1 - bne _08036EFC - cmp r3, 0 - bne _08036EEC - ldr r0, =gBattleTypeFlags - ldr r1, [r0] - movs r2, 0xC - b _08036EF2 - .pool -_08036EEC: - ldr r0, =gBattleTypeFlags - ldr r1, [r0] - movs r2, 0x8 -_08036EF2: - orrs r1, r2 - str r1, [r0] - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 -_08036EFC: - cmp r6, 0 - bne _08036FA0 - movs r2, 0 - cmp r2, r4 - bge _08036F20 - ldr r1, =gUnknown_020223C4 - mov r8, r1 - movs r5, 0x80 - lsls r5, 1 -_08036F0E: - adds r1, r5 - adds r2, 0x1 - cmp r2, r4 - bge _08036F20 - mov r7, r8 - ldrh r0, [r7] - ldrh r7, [r1] - cmp r0, r7 - beq _08036F0E -_08036F20: - cmp r2, r4 - bne _08036F48 - cmp r3, 0 - bne _08036F38 - ldr r0, =gBattleTypeFlags - ldr r1, [r0] - movs r2, 0xC - b _08036F3E - .pool -_08036F38: - ldr r0, =gBattleTypeFlags - ldr r1, [r0] - movs r2, 0x8 -_08036F3E: - orrs r1, r2 - str r1, [r0] - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 -_08036F48: - cmp r6, 0 - bne _08036FA0 - movs r2, 0 - ldr r5, =gBattleTypeFlags - cmp r2, r4 - bge _08036F8A - mov r0, r12 - ldrh r1, [r0] - movs r0, 0xC0 - lsls r0, 2 - cmp r1, r0 - beq _08036F82 -_08036F60: - lsls r0, r2, 8 - add r0, r12 - ldrh r0, [r0] - movs r1, 0xC0 - lsls r1, 2 - cmp r0, r1 - bls _08036F72 - cmp r2, r3 - bne _08036F8A -_08036F72: - adds r2, 0x1 - cmp r2, r4 - bge _08036F8A - lsls r0, r2, 8 - add r0, r12 - ldrh r0, [r0] - cmp r0, r1 - bne _08036F60 -_08036F82: - cmp r2, r3 - beq _08036F60 - cmp r2, r3 - bge _08036F60 -_08036F8A: - cmp r2, r4 - bne _08036F98 - ldr r0, [r5] - movs r1, 0xC - b _08036F9C - .pool -_08036F98: - ldr r0, [r5] - movs r1, 0x8 -_08036F9C: - orrs r0, r1 - str r0, [r5] -_08036FA0: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8036EB8 - - thumb_func_start sub_8036FAC -sub_8036FAC: @ 8036FAC - push {r4-r6,lr} - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl GetMultiplayerId - lsls r0, 24 - lsrs r6, r0, 24 - ldr r0, =gBattleScripting - adds r0, 0x25 - strb r6, [r0] - movs r0, 0x1 - adds r5, r6, 0 - eors r5, r0 - ldr r0, =gBattleCommunication - ldrb r0, [r0] - cmp r0, 0x12 - bls _08036FD8 - b _0803744C -_08036FD8: - lsls r0, 2 - ldr r1, =_08036FF0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_08036FF0: - .4byte _0803703C - .4byte _08037080 - .4byte _08037144 - .4byte _080371D8 - .4byte _08037200 - .4byte _0803742C - .4byte _08037438 - .4byte _08037230 - .4byte _08037258 - .4byte _0803742C - .4byte _08037438 - .4byte _08037288 - .4byte _080372B0 - .4byte _0803742C - .4byte _08037438 - .4byte _08037318 - .4byte _08037378 - .4byte _080373A0 - .4byte _080373E0 -_0803703C: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - bne _08037068 - movs r0, 0 - bl ShowBg - movs r0, 0x1 - bl ShowBg - movs r0, 0x2 - bl ShowBg - movs r0, 0x3 - bl ShowBg - bl sub_805EF14 - ldr r1, =gBattleCommunication - movs r0, 0x1 - strb r0, [r1] -_08037068: - ldr r0, =gLinkVSyncDisabled - ldrb r0, [r0] - cmp r0, 0 - bne _08037072 - b _0803744C -_08037072: - bl sub_800E0E8 - b _0803744C - .pool -_08037080: - ldr r2, =gBattleTypeFlags - ldr r1, [r2] - movs r6, 0x2 - adds r0, r1, 0 - ands r0, r6 - cmp r0, 0 - beq _08037124 - ldr r0, =gUnknown_03003124 - ldrb r0, [r0] - cmp r0, 0 - bne _08037098 - b _0803744C -_08037098: - bl sub_800A520 - lsls r0, 24 - cmp r0, 0 - beq _080370EE - ldr r4, =gBattleStruct - ldr r0, [r4] - movs r5, 0xC0 - lsls r5, 1 - adds r0, r5 - movs r1, 0 - strb r1, [r0] - ldr r0, [r4] - ldr r2, =0x00000181 - adds r1, r0, r2 - movs r0, 0x3 - strb r0, [r1] - bl sub_8036A5C - bl sub_8036B44 - ldr r0, =gTrainerBattleOpponent_A - ldrh r1, [r0] - movs r0, 0xC0 - lsls r0, 4 - cmp r1, r0 - bne _080370D8 - ldr r0, =gLinkPlayers - movs r1, 0 - strh r1, [r0, 0x18] - movs r1, 0x1 - strh r1, [r0, 0x34] -_080370D8: - bl bitmask_all_link_players_but_self - lsls r0, 24 - lsrs r0, 24 - ldr r1, [r4] - adds r1, r5 - movs r2, 0x20 - bl link_0800A448 - ldr r0, =gBattleCommunication - strb r6, [r0] -_080370EE: - ldr r0, =gLinkVSyncDisabled - ldrb r0, [r0] - cmp r0, 0 - bne _080370F8 - b _0803744C -_080370F8: - movs r0, 0 - movs r1, 0 - bl sub_800DFB4 - b _0803744C - .pool -_08037124: - movs r0, 0x80 - lsls r0, 17 - ands r0, r1 - cmp r0, 0 - bne _08037134 - movs r0, 0x4 - orrs r1, r0 - str r1, [r2] -_08037134: - ldr r1, =gBattleCommunication - movs r0, 0xF - strb r0, [r1] - bl berry_801017C - b _0803744C - .pool -_08037144: - bl sub_800A550 - movs r1, 0x3 - ands r1, r0 - cmp r1, 0x3 - beq _08037152 - b _0803744C -_08037152: - bl sub_800A5B4 - movs r0, 0x2 - adds r1, r6, 0 - bl sub_8036EB8 - bl berry_801017C - ldr r0, =task00_0800F6FC - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gTasks - lsls r2, r0, 2 - adds r2, r0 - lsls r2, 3 - adds r2, r1 - movs r1, 0 - movs r0, 0x87 - lsls r0, 1 - strh r0, [r2, 0xA] - movs r0, 0x5A - strh r0, [r2, 0xC] - strh r1, [r2, 0x12] - ldr r0, =gBattleStruct - ldr r3, [r0] - movs r4, 0xC1 - lsls r4, 1 - adds r0, r3, r4 - ldrb r1, [r0] - adds r4, 0x1 - adds r0, r3, r4 - ldrb r0, [r0] - lsls r0, 8 - orrs r1, r0 - strh r1, [r2, 0xE] - ldr r1, =gUnknown_020223C4 - lsls r4, r5, 8 - adds r1, 0x2 - adds r4, r1 - ldrh r0, [r4] - strh r0, [r2, 0x10] - lsls r0, r6, 8 - adds r0, r1 - ldrh r0, [r0] - bl sub_8185F90 - ldrh r0, [r4] - bl sub_8185F90 - bl sub_8068AA4 - ldr r1, =gBattleCommunication - b _08037446 - .pool -_080371D8: - bl sub_800A520 - lsls r0, 24 - cmp r0, 0 - bne _080371E4 - b _0803744C -_080371E4: - bl bitmask_all_link_players_but_self - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gPlayerParty - movs r2, 0xC8 - bl link_0800A448 - ldr r1, =gBattleCommunication - b _08037446 - .pool -_08037200: - bl sub_800A550 - movs r1, 0x3 - ands r1, r0 - cmp r1, 0x3 - beq _0803720E - b _0803744C -_0803720E: - bl sub_800A5B4 - ldr r0, =gEnemyParty - lsls r1, r5, 8 - ldr r2, =gUnknown_020223C4 - adds r1, r2 - movs r2, 0xC8 - bl memcpy - ldr r1, =gBattleCommunication - b _08037446 - .pool -_08037230: - bl sub_800A520 - lsls r0, 24 - cmp r0, 0 - bne _0803723C - b _0803744C -_0803723C: - bl bitmask_all_link_players_but_self - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gPlayerParty + 200 - movs r2, 0xC8 - bl link_0800A448 - ldr r1, =gBattleCommunication - b _08037446 - .pool -_08037258: - bl sub_800A550 - movs r1, 0x3 - ands r1, r0 - cmp r1, 0x3 - beq _08037266 - b _0803744C -_08037266: - bl sub_800A5B4 - ldr r0, =gEnemyParty + 200 - lsls r1, r5, 8 - ldr r2, =gUnknown_020223C4 - adds r1, r2 - movs r2, 0xC8 - bl memcpy - ldr r1, =gBattleCommunication - b _08037446 - .pool -_08037288: - bl sub_800A520 - lsls r0, 24 - cmp r0, 0 - bne _08037294 - b _0803744C -_08037294: - bl bitmask_all_link_players_but_self - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gPlayerParty + 400 - movs r2, 0xC8 - bl link_0800A448 - ldr r1, =gBattleCommunication - b _08037446 - .pool -_080372B0: - bl sub_800A550 - movs r1, 0x3 - ands r1, r0 - cmp r1, 0x3 - beq _080372BE - b _0803744C -_080372BE: - bl sub_800A5B4 - ldr r4, =gEnemyParty + 400 - lsls r1, r5, 8 - ldr r0, =gUnknown_020223C4 - adds r1, r0 - adds r0, r4, 0 - movs r2, 0xC8 - bl memcpy - ldr r1, =0xfffffe70 - adds r0, r4, r1 - bl shedinja_something - ldr r2, =0xfffffed4 - adds r0, r4, r2 - bl shedinja_something - adds r0, r4, 0 - subs r0, 0xC8 - bl shedinja_something - adds r0, r4, 0 - subs r0, 0x64 - bl shedinja_something - adds r0, r4, 0 - bl shedinja_something - adds r0, r4, 0 - adds r0, 0x64 - bl shedinja_something - ldr r1, =gBattleCommunication - b _08037446 - .pool -_08037318: - bl sub_8032768 - bl sub_8184E58 - ldr r2, =gBattleCommunication - movs r0, 0 - strb r0, [r2, 0x1] - strb r0, [r2, 0x2] - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08037372 - movs r3, 0 - ldr r1, =gLinkPlayers - ldrb r0, [r1] - adds r5, r2, 0 - cmp r0, 0x3 - bne _08037356 - movs r4, 0xFF - adds r2, r1, 0 -_08037344: - adds r2, 0x1C - adds r3, 0x1 - cmp r3, 0x1 - bgt _08037356 - ldrh r1, [r2] - adds r0, r4, 0 - ands r0, r1 - cmp r0, 0x3 - beq _08037344 -_08037356: - cmp r3, 0x2 - bne _0803736C - movs r0, 0x10 - strb r0, [r5] - b _0803744C - .pool -_0803736C: - movs r0, 0x12 - strb r0, [r5] - b _0803744C -_08037372: - movs r0, 0x12 - strb r0, [r2] - b _0803744C -_08037378: - bl sub_800A520 - lsls r0, 24 - cmp r0, 0 - beq _0803744C - bl bitmask_all_link_players_but_self - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gUnknown_0203BD2C - movs r2, 0x4 - bl link_0800A448 - ldr r1, =gBattleCommunication - b _08037446 - .pool -_080373A0: - bl sub_800A550 - movs r1, 0x3 - ands r1, r0 - cmp r1, 0x3 - bne _0803744C - bl sub_800A5B4 - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x4 - ands r0, r1 - cmp r0, 0 - bne _080373CA - ldr r0, =gUnknown_0203BD2C - lsls r1, r5, 8 - ldr r2, =gUnknown_020223C4 - adds r1, r2 - movs r2, 0x4 - bl memcpy -_080373CA: - ldr r1, =gBattleCommunication - b _08037446 - .pool -_080373E0: - ldr r0, =gUnknown_02024333 - adds r1, r0, 0x1 - bl battle_load_something - lsls r0, 24 - cmp r0, 0 - beq _0803744C - ldr r2, =gUnknown_03005D00 - ldr r1, =gMain - ldr r0, [r1] - str r0, [r2] - ldr r0, =sub_8039EF0 - str r0, [r1] - ldr r0, =sub_8038420 - bl SetMainCallback2 - ldr r2, =gBattleTypeFlags - ldr r1, [r2] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0803744C - movs r0, 0x20 - orrs r1, r0 - str r1, [r2] - b _0803744C - .pool -_0803742C: - ldr r0, =gBattleCommunication - ldrb r1, [r0] - adds r1, 0x1 - strb r1, [r0] - movs r1, 0x1 - strb r1, [r0, 0x1] -_08037438: - ldr r1, =gBattleCommunication - ldrb r0, [r1, 0x1] - subs r0, 0x1 - strb r0, [r1, 0x1] - lsls r0, 24 - cmp r0, 0 - bne _0803744C -_08037446: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_0803744C: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8036FAC - - thumb_func_start sub_8037458 -sub_8037458: @ 8037458 - push {r4-r7,lr} - sub sp, 0x4 - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl GetMultiplayerId - lsls r0, 24 - lsrs r6, r0, 24 - ldr r0, =gBattleScripting - adds r0, 0x25 - strb r6, [r0] - movs r0, 0x1 - adds r7, r6, 0 - eors r7, r0 - ldr r0, =gBattleCommunication - ldrb r0, [r0] - cmp r0, 0x10 - bls _08037486 - b _080379D6 -_08037486: - lsls r0, 2 - ldr r1, =_0803749C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_0803749C: - .4byte _080374E0 - .4byte _08037518 - .4byte _0803761C - .4byte _08037670 - .4byte _08037694 - .4byte _08037710 - .4byte _08037734 - .4byte _080377B0 - .4byte _080377CC - .4byte _080377FC - .4byte _08037818 - .4byte _08037848 - .4byte _08037864 - .4byte _08037908 - .4byte _0803793A - .4byte _0803795C - .4byte _080379A0 -_080374E0: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - bne _0803750C - movs r0, 0 - bl ShowBg - movs r0, 0x1 - bl ShowBg - movs r0, 0x2 - bl ShowBg - movs r0, 0x3 - bl ShowBg - bl sub_805EF14 - ldr r1, =gBattleCommunication - movs r0, 0x1 - strb r0, [r1] -_0803750C: - ldr r0, =gLinkVSyncDisabled - ldrb r0, [r0] - cmp r0, 0 - beq _08037518 - bl sub_800E0E8 -_08037518: - ldr r2, =gBattleTypeFlags - ldr r1, [r2] - movs r3, 0x2 - adds r0, r1, 0 - ands r0, r3 - cmp r0, 0 - beq _080375FC - ldr r0, =gUnknown_03003124 - ldrb r0, [r0] - cmp r0, 0 - bne _08037530 - b _080379D6 -_08037530: - ldr r6, =gLinkPlayers - movs r0, 0 - strh r0, [r6, 0x18] - strh r3, [r6, 0x34] - adds r1, r6, 0 - adds r1, 0x50 - movs r0, 0x1 - strh r0, [r1] - adds r1, 0x1C - movs r0, 0x3 - strh r0, [r1] - adds r0, r6, 0 - adds r0, 0x40 - ldr r4, =gTrainerBattleOpponent_A - ldrh r1, [r4] - bl sub_8162E20 - adds r0, r6, 0 - adds r0, 0x5C - ldr r5, =gTrainerBattleOpponent_B - ldrh r1, [r5] - bl sub_8162E20 - ldrh r1, [r4] - mov r0, sp - bl sub_8165B88 - mov r0, sp - ldrb r0, [r0] - adds r1, r6, 0 - adds r1, 0x52 - strh r0, [r1] - ldrh r1, [r5] - mov r0, sp - bl sub_8165B88 - mov r0, sp - ldrb r1, [r0] - adds r0, r6, 0 - adds r0, 0x6E - strh r1, [r0] - bl sub_800A520 - lsls r0, 24 - cmp r0, 0 - beq _080375C4 - ldr r4, =gBattleStruct - ldr r0, [r4] - movs r5, 0xC0 - lsls r5, 1 - adds r0, r5 - movs r1, 0 - strb r1, [r0] - ldr r0, [r4] - ldr r2, =0x00000181 - adds r1, r0, r2 - movs r0, 0x3 - strb r0, [r1] - bl sub_8036A5C - bl sub_8036B44 - bl bitmask_all_link_players_but_self - lsls r0, 24 - lsrs r0, 24 - ldr r1, [r4] - adds r1, r5 - movs r2, 0x20 - bl link_0800A448 - ldr r1, =gBattleCommunication - movs r0, 0x2 - strb r0, [r1] -_080375C4: - ldr r0, =gLinkVSyncDisabled - ldrb r0, [r0] - cmp r0, 0 - bne _080375CE - b _080379D6 -_080375CE: - movs r0, 0 - movs r1, 0 - bl sub_800DFB4 - b _080379D6 - .pool -_080375FC: - movs r0, 0x80 - lsls r0, 17 - ands r0, r1 - cmp r0, 0 - bne _0803760C - movs r0, 0x4 - orrs r1, r0 - str r1, [r2] -_0803760C: - ldr r1, =gBattleCommunication - movs r0, 0xD - strb r0, [r1] - bl berry_801017C - b _080379D6 - .pool -_0803761C: - bl sub_800A550 - movs r1, 0x3 - ands r1, r0 - cmp r1, 0x3 - beq _0803762A - b _080379D6 -_0803762A: - bl sub_800A5B4 - movs r0, 0x2 - adds r1, r6, 0 - bl sub_8036EB8 - bl berry_801017C - ldr r0, =task00_0800F6FC - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - movs r2, 0 - movs r0, 0x87 - lsls r0, 1 - strh r0, [r1, 0xA] - movs r0, 0x5A - strh r0, [r1, 0xC] - strh r2, [r1, 0x12] - adds r0, 0xEB - strh r0, [r1, 0xE] - strh r0, [r1, 0x10] - b _08037986 - .pool -_08037670: - bl sub_800A520 - lsls r0, 24 - cmp r0, 0 - bne _0803767C - b _080379D6 -_0803767C: - bl bitmask_all_link_players_but_self - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gPlayerParty -_08037686: - movs r2, 0xC8 - bl link_0800A448 - b _08037986 - .pool -_08037694: - bl sub_800A550 - movs r1, 0x3 - ands r1, r0 - cmp r1, 0x3 - beq _080376A2 - b _080379D6 -_080376A2: - bl sub_800A5B4 - ldr r0, =gLinkPlayers - lsls r1, r6, 3 - subs r1, r6 - lsls r1, 2 - adds r1, r0 - ldrh r0, [r1, 0x18] - cmp r0, 0 - beq _080376E8 - ldr r4, =gPlayerParty - lsls r1, r7, 8 - ldr r5, =gUnknown_020223C4 - adds r1, r5 - adds r0, r4, 0 - movs r2, 0xC8 - bl memcpy - movs r0, 0x96 - lsls r0, 1 - adds r4, r0 - lsls r1, r6, 8 - adds r1, r5 - adds r0, r4, 0 - movs r2, 0xC8 - bl memcpy - b _08037986 - .pool -_080376E8: - ldr r4, =gPlayerParty - lsls r1, r6, 8 - ldr r5, =gUnknown_020223C4 - adds r1, r5 - adds r0, r4, 0 - movs r2, 0xC8 - bl memcpy - movs r1, 0x96 - lsls r1, 1 - adds r4, r1 - lsls r1, r7, 8 - adds r1, r5 - adds r0, r4, 0 - movs r2, 0xC8 - b _08037982 - .pool -_08037710: - bl sub_800A520 - lsls r0, 24 - cmp r0, 0 - bne _0803771C - b _080379D6 -_0803771C: - bl bitmask_all_link_players_but_self - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gPlayerParty + 200 - movs r2, 0x64 - bl link_0800A448 - b _08037986 - .pool -_08037734: - bl sub_800A550 - movs r1, 0x3 - ands r1, r0 - cmp r1, 0x3 - beq _08037742 - b _080379D6 -_08037742: - bl sub_800A5B4 - ldr r0, =gLinkPlayers - lsls r1, r6, 3 - subs r1, r6 - lsls r1, 2 - adds r1, r0 - ldrh r0, [r1, 0x18] - cmp r0, 0 - beq _08037788 - ldr r4, =gPlayerParty + 200 - lsls r1, r7, 8 - ldr r5, =gUnknown_020223C4 - adds r1, r5 - adds r0, r4, 0 - movs r2, 0x64 - bl memcpy - movs r2, 0x96 - lsls r2, 1 - adds r4, r2 - lsls r1, r6, 8 - adds r1, r5 - adds r0, r4, 0 - movs r2, 0x64 - bl memcpy - b _08037986 - .pool -_08037788: - ldr r4, =gPlayerParty + 200 - lsls r1, r6, 8 - ldr r5, =gUnknown_020223C4 - adds r1, r5 - adds r0, r4, 0 - movs r2, 0x64 - bl memcpy - movs r0, 0x96 - lsls r0, 1 - adds r4, r0 - lsls r1, r7, 8 - adds r1, r5 - adds r0, r4, 0 - movs r2, 0x64 - b _08037982 - .pool -_080377B0: - bl sub_800A520 - lsls r0, 24 - cmp r0, 0 - bne _080377BC - b _080379D6 -_080377BC: - bl bitmask_all_link_players_but_self - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gEnemyParty - b _08037686 - .pool -_080377CC: - bl sub_800A550 - movs r1, 0x3 - ands r1, r0 - cmp r1, 0x3 - beq _080377DA - b _080379D6 -_080377DA: - bl sub_800A5B4 - bl GetMultiplayerId - lsls r0, 24 - cmp r0, 0 - bne _080377EA - b _08037986 -_080377EA: - ldr r0, =gEnemyParty - ldr r1, =gUnknown_020223C4 - movs r2, 0xC8 - b _08037982 - .pool -_080377FC: - bl sub_800A520 - lsls r0, 24 - cmp r0, 0 - bne _08037808 - b _080379D6 -_08037808: - bl bitmask_all_link_players_but_self - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gEnemyParty + 200 - b _08037686 - .pool -_08037818: - bl sub_800A550 - movs r1, 0x3 - ands r1, r0 - cmp r1, 0x3 - beq _08037826 - b _080379D6 -_08037826: - bl sub_800A5B4 - bl GetMultiplayerId - lsls r0, 24 - cmp r0, 0 - bne _08037836 - b _08037986 -_08037836: - ldr r0, =gEnemyParty + 200 - ldr r1, =gUnknown_020223C4 - movs r2, 0xC8 - b _08037982 - .pool -_08037848: - bl sub_800A520 - lsls r0, 24 - cmp r0, 0 - bne _08037854 - b _080379D6 -_08037854: - bl bitmask_all_link_players_but_self - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gEnemyParty + 400 - b _08037686 - .pool -_08037864: - bl sub_800A550 - movs r1, 0x3 - ands r1, r0 - cmp r1, 0x3 - beq _08037872 - b _080379D6 -_08037872: - bl sub_800A5B4 - bl GetMultiplayerId - lsls r0, 24 - cmp r0, 0 - beq _0803788A - ldr r0, =gEnemyParty + 400 - ldr r1, =gUnknown_020223C4 - movs r2, 0xC8 - bl memcpy -_0803788A: - ldr r4, =gPlayerParty - adds r0, r4, 0 - bl shedinja_something - adds r0, r4, 0 - adds r0, 0x64 - bl shedinja_something - adds r0, r4, 0 - adds r0, 0xC8 - bl shedinja_something - movs r1, 0x96 - lsls r1, 1 - adds r0, r4, r1 - bl shedinja_something - movs r2, 0xC8 - lsls r2, 1 - adds r0, r4, r2 - bl shedinja_something - movs r1, 0xFA - lsls r1, 1 - adds r0, r4, r1 - bl shedinja_something - ldr r4, =gEnemyParty - adds r0, r4, 0 - bl shedinja_something - adds r0, r4, 0 - adds r0, 0x64 - bl shedinja_something - adds r0, r4, 0 - adds r0, 0xC8 - bl shedinja_something - movs r2, 0x96 - lsls r2, 1 - adds r0, r4, r2 - bl shedinja_something - movs r1, 0xC8 - lsls r1, 1 - adds r0, r4, r1 - bl shedinja_something - movs r2, 0xFA - lsls r2, 1 - adds r0, r4, r2 - bl shedinja_something - b _08037986 - .pool -_08037908: - bl sub_8032768 - bl sub_8184E58 - ldr r2, =gBattleCommunication - movs r0, 0 - strb r0, [r2, 0x1] - strb r0, [r2, 0x2] - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08037934 - movs r0, 0xE - strb r0, [r2] - b _080379D6 - .pool -_08037934: - movs r0, 0x10 - strb r0, [r2] - b _080379D6 -_0803793A: - bl sub_800A520 - lsls r0, 24 - cmp r0, 0 - beq _080379D6 - bl bitmask_all_link_players_but_self - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gUnknown_0203BD2C - movs r2, 0x4 - bl link_0800A448 - b _08037986 - .pool -_0803795C: - bl sub_800A550 - movs r1, 0x3 - ands r1, r0 - cmp r1, 0x3 - bne _080379D6 - bl sub_800A5B4 - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x4 - ands r0, r1 - cmp r0, 0 - bne _08037986 - ldr r0, =gUnknown_0203BD2C - lsls r1, r7, 8 - ldr r2, =gUnknown_020223C4 - adds r1, r2 - movs r2, 0x4 -_08037982: - bl memcpy -_08037986: - ldr r1, =gBattleCommunication - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _080379D6 - .pool -_080379A0: - ldr r0, =gUnknown_02024333 - adds r1, r0, 0x1 - bl battle_load_something - lsls r0, 24 - cmp r0, 0 - beq _080379D6 - bl sub_8166188 - ldr r2, =gUnknown_03005D00 - ldr r1, =gMain - ldr r0, [r1] - str r0, [r2] - ldr r0, =sub_8039EF0 - str r0, [r1] - ldr r0, =sub_8038420 - bl SetMainCallback2 - ldr r2, =gBattleTypeFlags - ldr r1, [r2] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080379D6 - movs r0, 0x20 - orrs r1, r0 - str r1, [r2] -_080379D6: - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8037458 - - thumb_func_start sub_80379F8 -sub_80379F8: @ 80379F8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp] - movs r0, 0 - mov r8, r0 - ldr r6, =gUnknown_02022FF8 - mov r10, r6 -_08037A12: - ldr r1, [sp] - add r1, r8 - movs r0, 0x64 - adds r4, r1, 0 - muls r4, r0 - ldr r0, =gPlayerParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - mov r1, r8 - lsls r5, r1, 5 - strh r0, [r6] - adds r0, r4, 0 - movs r1, 0xC - bl GetMonData - strh r0, [r6, 0x2] - movs r0, 0x4 - add r0, r10 - mov r9, r0 - adds r7, r5, r0 - adds r0, r4, 0 - movs r1, 0x2 - adds r2, r7, 0 - bl GetMonData - adds r0, r4, 0 - movs r1, 0x38 - bl GetMonData - strb r0, [r6, 0xF] - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - strh r0, [r6, 0x10] - adds r0, r4, 0 - movs r1, 0x3A - bl GetMonData - strh r0, [r6, 0x12] - adds r0, r4, 0 - movs r1, 0x37 - bl GetMonData - mov r1, r10 - adds r1, 0x14 - adds r5, r1 - str r0, [r5] - adds r0, r4, 0 - movs r1, 0 - bl GetMonData - str r0, [r6, 0x18] - adds r0, r4, 0 - bl GetMonGender - strb r0, [r6, 0x1C] - adds r0, r7, 0 - bl StripExtCtrlCodes - adds r0, r4, 0 - movs r1, 0x3 - bl GetMonData - cmp r0, 0x1 - beq _08037AA4 - adds r0, r7, 0 - movs r1, 0 - bl sub_81DB4DC -_08037AA4: - adds r6, 0x20 - movs r1, 0x1 - add r8, r1 - mov r0, r8 - cmp r0, 0x2 - ble _08037A12 - ldr r0, =gUnknown_02023058 - ldr r0, [r0] - mov r1, r9 - subs r1, 0x4 - movs r2, 0x60 - bl memcpy - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80379F8 - - thumb_func_start sub_8037ADC -sub_8037ADC: @ 8037ADC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - movs r0, 0x4 - mov r9, r0 - movs r4, 0xF - ldr r6, =gBattleTypeFlags - ldr r0, [r6] - movs r1, 0x80 - lsls r1, 1 - ands r0, r1 - cmp r0, 0 - beq _08037B02 - movs r1, 0x2 - mov r9, r1 - movs r4, 0x3 -_08037B02: - bl GetMultiplayerId - lsls r0, 24 - lsrs r7, r0, 24 - ldr r0, =gBattleScripting - adds r0, 0x25 - movs r2, 0 - mov r8, r2 - strb r7, [r0] - ldr r0, =gBattleStruct - ldr r0, [r0] - adds r1, r0, 0 - adds r1, 0xB4 - str r1, [sp] - adds r0, 0xAC - mov r10, r0 - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - ldr r5, =gBattleCommunication - ldrb r0, [r5] - cmp r0, 0x1 - beq _08037BA4 - cmp r0, 0x1 - bgt _08037B50 - cmp r0, 0 - beq _08037B5E - b _08037D0A - .pool -_08037B50: - cmp r0, 0x2 - bne _08037B56 - b _08037C64 -_08037B56: - cmp r0, 0x3 - bne _08037B5C - b _08037C9E -_08037B5C: - b _08037D0A -_08037B5E: - ldr r0, =gUnknown_03003124 - ldrb r0, [r0] - cmp r0, 0 - bne _08037B68 - b _08037D0A -_08037B68: - bl sub_800A520 - lsls r0, 24 - cmp r0, 0 - bne _08037B74 - b _08037D0A -_08037B74: - ldr r4, =gUnknown_02023058 - movs r0, 0x60 - bl Alloc - str r0, [r4] - movs r0, 0 - bl sub_80379F8 - bl bitmask_all_link_players_but_self - lsls r0, 24 - lsrs r0, 24 - ldr r1, [r4] - movs r2, 0x60 - bl link_0800A448 - ldrb r0, [r5] - adds r0, 0x1 - strb r0, [r5] - b _08037D0A - .pool -_08037BA4: - bl sub_800A550 - adds r1, r4, 0 - ands r1, r0 - cmp r1, r4 - beq _08037BB2 - b _08037D0A -_08037BB2: - bl sub_800A5B4 - movs r5, 0 - cmp r8, r9 - bge _08037C2E - lsls r0, r7, 3 - subs r0, r7 - lsls r6, r0, 2 - mov r8, r5 - ldr r4, =gUnknown_020223C4 -_08037BC6: - cmp r5, r7 - beq _08037C1E - mov r2, r9 - cmp r2, 0x4 - bne _08037C14 - ldr r2, =gLinkPlayers - mov r1, r8 - adds r0, r1, r2 - ldrh r1, [r0, 0x18] - movs r3, 0x1 - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - bne _08037BF8 - adds r0, r6, r2 - ldrh r1, [r0, 0x18] - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _08037C04 - b _08037C1E - .pool -_08037BF8: - adds r0, r6, r2 - ldrh r1, [r0, 0x18] - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _08037C1E -_08037C04: - ldr r0, =gUnknown_02022FF8 - adds r1, r4, 0 - movs r2, 0x60 - bl memcpy - b _08037C1E - .pool -_08037C14: - ldr r0, =gUnknown_02022FF8 - adds r1, r4, 0 - movs r2, 0x60 - bl memcpy -_08037C1E: - movs r2, 0x80 - lsls r2, 1 - adds r4, r2 - movs r0, 0x1C - add r8, r0 - adds r5, 0x1 - cmp r5, r9 - blt _08037BC6 -_08037C2E: - ldr r1, =gBattleCommunication - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r1, =gMain - ldr r0, [r1, 0x8] - ldr r2, [sp] - str r0, [r2] - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - mov r2, r10 - str r0, [r2] - ldr r0, =sub_8037ADC - str r0, [r1, 0x8] - bl sub_81B9150 - b _08037D0A - .pool -_08037C64: - bl sub_800A520 - lsls r0, 24 - cmp r0, 0 - beq _08037D0A - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08037D0A - ldrb r0, [r5] - adds r0, 0x1 - strb r0, [r5] - ldr r0, =gLinkVSyncDisabled - ldrb r0, [r0] - cmp r0, 0 - beq _08037C98 - bl sub_800ADF8 - b _08037D0A - .pool -_08037C98: - bl sub_800AC34 - b _08037D0A -_08037C9E: - ldr r0, =gLinkVSyncDisabled - ldrb r0, [r0] - cmp r0, 0 - beq _08037CE4 - bl sub_8010500 - lsls r0, 24 - cmp r0, 0 - beq _08037D0A - mov r1, r10 - ldr r0, [r1] - str r0, [r6] - ldr r1, =gMain - ldr r2, [sp] - ldr r0, [r2] - str r0, [r1, 0x8] - ldr r0, =sub_80367D4 - bl SetMainCallback2 - ldr r4, =gUnknown_02023058 - ldr r0, [r4] - bl Free - mov r0, r8 - str r0, [r4] - b _08037D0A - .pool -_08037CE4: - ldr r0, =gUnknown_03003124 - ldrb r5, [r0] - cmp r5, 0 - bne _08037D0A - mov r1, r10 - ldr r0, [r1] - str r0, [r6] - ldr r1, =gMain - ldr r2, [sp] - ldr r0, [r2] - str r0, [r1, 0x8] - ldr r0, =sub_80367D4 - bl SetMainCallback2 - ldr r4, =gUnknown_02023058 - ldr r0, [r4] - bl Free - str r5, [r4] -_08037D0A: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8037ADC - - thumb_func_start intro_end -intro_end: @ 8037D2C - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r0, =gBattleStruct - ldr r0, [r0] - movs r1, 0xB4 - adds r1, r0 - mov r8, r1 - adds r7, r0, 0 - adds r7, 0xAC - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - ldr r5, =gBattleCommunication - ldrb r0, [r5] - cmp r0, 0 - beq _08037D64 - cmp r0, 0x1 - beq _08037DA4 - b _08037DD6 - .pool -_08037D64: - ldr r4, =gUnknown_02023058 - movs r0, 0x60 - bl Alloc - str r0, [r4] - movs r0, 0x3 - bl sub_80379F8 - ldrb r0, [r5] - adds r0, 0x1 - strb r0, [r5] - ldr r1, =gMain - ldr r0, [r1, 0x8] - mov r2, r8 - str r0, [r2] - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - str r0, [r7] - ldr r0, =intro_end - str r0, [r1, 0x8] - bl sub_81B9150 - b _08037DD6 - .pool -_08037DA4: - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0 - bne _08037DD6 - movs r0, 0x2 - strb r0, [r5] - ldr r1, =gBattleTypeFlags - ldr r0, [r7] - str r0, [r1] - ldr r1, =gMain - mov r2, r8 - ldr r0, [r2] - str r0, [r1, 0x8] - ldr r0, =sub_80367D4 - bl SetMainCallback2 - ldr r4, =gUnknown_02023058 - ldr r0, [r4] - bl Free - str r6, [r4] -_08037DD6: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end intro_end - - thumb_func_start sub_8037DF4 -sub_8037DF4: @ 8037DF4 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - bl GetMultiplayerId - lsls r0, 24 - lsrs r7, r0, 24 - ldr r0, =gBattleScripting - adds r0, 0x25 - strb r7, [r0] - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - ldr r0, =gBattleCommunication - ldrb r0, [r0] - cmp r0, 0xA - bls _08037E20 - b _080383F8 -_08037E20: - lsls r0, 2 - ldr r1, =_08037E38 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_08037E38: - .4byte _08037E64 - .4byte _08037EA8 - .4byte _08037F50 - .4byte _08038026 - .4byte _0803804C - .4byte _08038140 - .4byte _08038164 - .4byte _080382CC - .4byte _0803832C - .4byte _0803836C - .4byte _080383BC -_08037E64: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - bne _08037E90 - movs r0, 0 - bl ShowBg - movs r0, 0x1 - bl ShowBg - movs r0, 0x2 - bl ShowBg - movs r0, 0x3 - bl ShowBg - bl sub_805EF14 - ldr r1, =gBattleCommunication - movs r0, 0x1 - strb r0, [r1] -_08037E90: - ldr r0, =gLinkVSyncDisabled - ldrb r0, [r0] - cmp r0, 0 - bne _08037E9A - b _080383F8 -_08037E9A: - bl sub_800E0E8 - b _080383F8 - .pool -_08037EA8: - ldr r2, =gBattleTypeFlags - ldr r1, [r2] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08037F30 - ldr r0, =gUnknown_03003124 - ldrb r0, [r0] - cmp r0, 0 - bne _08037EBE - b _080383F8 -_08037EBE: - bl sub_800A520 - lsls r0, 24 - cmp r0, 0 - beq _08037F02 - ldr r4, =gBattleStruct - ldr r0, [r4] - movs r5, 0xC0 - lsls r5, 1 - adds r0, r5 - movs r1, 0 - strb r1, [r0] - ldr r0, [r4] - ldr r2, =0x00000181 - adds r1, r0, r2 - movs r0, 0x3 - strb r0, [r1] - bl sub_8036A5C - bl sub_8036B44 - bl bitmask_all_link_players_but_self - lsls r0, 24 - lsrs r0, 24 - ldr r1, [r4] - adds r1, r5 - movs r2, 0x20 - bl link_0800A448 - ldr r1, =gBattleCommunication - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_08037F02: - ldr r0, =gLinkVSyncDisabled - ldrb r0, [r0] - cmp r0, 0 - bne _08037F0C - b _080383F8 -_08037F0C: - movs r0, 0 - movs r1, 0 - bl sub_800DFB4 - b _080383F8 - .pool -_08037F30: - movs r0, 0x80 - lsls r0, 17 - ands r0, r1 - cmp r0, 0 - bne _08037F40 - movs r0, 0x4 - orrs r1, r0 - str r1, [r2] -_08037F40: - ldr r1, =gBattleCommunication - movs r0, 0x7 - strb r0, [r1] - bl berry_801017C - b _080383F8 - .pool -_08037F50: - bl sub_800A550 - movs r1, 0xF - ands r1, r0 - cmp r1, 0xF - beq _08037F5E - b _080383F8 -_08037F5E: - bl sub_800A5B4 - movs r0, 0x4 - adds r1, r7, 0 - bl sub_8036EB8 - bl berry_801017C - bl sub_8068AA4 - ldr r0, =task00_0800F6FC - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r2, r0, 24 - ldr r1, =gTasks - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r0, r1 - movs r2, 0 - movs r1, 0x87 - lsls r1, 1 - strh r1, [r0, 0xA] - movs r1, 0x5A - strh r1, [r0, 0xC] - strh r2, [r0, 0x12] - strh r2, [r0, 0xE] - strh r2, [r0, 0x10] - ldr r1, =gUnknown_020223C4 - adds r4, r0, 0 - adds r5, r1, 0x2 - movs r7, 0x3F - movs r6, 0x3 -_08037FA4: - ldrh r0, [r5] - str r2, [sp] - bl sub_8185F90 - ldr r0, =gLinkPlayers - ldr r2, [sp] - adds r0, r2, r0 - ldrh r0, [r0, 0x18] - cmp r0, 0x1 - beq _08037FE6 - cmp r0, 0x1 - bgt _08037FD4 - cmp r0, 0 - beq _08037FDE - b _0803800C - .pool -_08037FD4: - cmp r0, 0x2 - beq _08037FEE - cmp r0, 0x3 - beq _08037FFE - b _0803800C -_08037FDE: - ldrh r0, [r5] - adds r1, r7, 0 - ands r1, r0 - b _08037FF6 -_08037FE6: - ldrh r0, [r5] - adds r1, r7, 0 - ands r1, r0 - b _08038006 -_08037FEE: - ldrh r0, [r5] - adds r1, r7, 0 - ands r1, r0 - lsls r1, 6 -_08037FF6: - ldrh r0, [r4, 0xE] - orrs r1, r0 - strh r1, [r4, 0xE] - b _0803800C -_08037FFE: - ldrh r0, [r5] - adds r1, r7, 0 - ands r1, r0 - lsls r1, 6 -_08038006: - ldrh r0, [r4, 0x10] - orrs r1, r0 - strh r1, [r4, 0x10] -_0803800C: - movs r0, 0x80 - lsls r0, 1 - adds r5, r0 - adds r2, 0x1C - subs r6, 0x1 - cmp r6, 0 - bge _08037FA4 - bl ZeroEnemyPartyMons - ldr r1, =gBattleCommunication - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_08038026: - bl sub_800A520 - lsls r0, 24 - cmp r0, 0 - bne _08038032 - b _080383F8 -_08038032: - bl bitmask_all_link_players_but_self - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gPlayerParty - movs r2, 0xC8 - bl link_0800A448 - b _080383A6 - .pool -_0803804C: - bl sub_800A550 - movs r1, 0xF - ands r1, r0 - cmp r1, 0xF - beq _0803805A - b _080383F8 -_0803805A: - bl sub_800A5B4 - movs r6, 0 - lsls r0, r7, 3 - subs r0, r7 - lsls r0, 2 - mov r8, r0 - ldr r4, =gUnknown_020223C4 - movs r5, 0 -_0803806C: - cmp r6, r7 - bne _080380A0 - ldr r0, =gLinkPlayers - adds r0, r5, r0 - ldrh r0, [r0, 0x18] - cmp r0, 0x2 - bgt _0803808C - cmp r0, 0x1 - bge _08038098 - cmp r0, 0 - beq _08038090 - b _0803812A - .pool -_0803808C: - cmp r0, 0x3 - bne _0803812A -_08038090: - ldr r0, =gPlayerParty - b _08038110 - .pool -_08038098: - ldr r0, =gPlayerParty + 300 - b _08038110 - .pool -_080380A0: - ldr r2, =gLinkPlayers - adds r0, r5, r2 - ldrh r1, [r0, 0x18] - movs r3, 0x1 - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - bne _080380C4 - mov r1, r8 - adds r0, r1, r2 - ldrh r1, [r0, 0x18] - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _080380D2 - b _080380F8 - .pool -_080380C4: - mov r1, r8 - adds r0, r1, r2 - ldrh r1, [r0, 0x18] - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _080380F8 -_080380D2: - adds r0, r5, r2 - ldrh r0, [r0, 0x18] - cmp r0, 0x2 - bgt _080380E4 - cmp r0, 0x1 - bge _080380F0 - cmp r0, 0 - beq _080380E8 - b _0803812A -_080380E4: - cmp r0, 0x3 - bne _0803812A -_080380E8: - ldr r0, =gPlayerParty - b _08038110 - .pool -_080380F0: - ldr r0, =gPlayerParty + 300 - b _08038110 - .pool -_080380F8: - adds r0, r5, r2 - ldrh r0, [r0, 0x18] - cmp r0, 0x2 - bgt _0803810A - cmp r0, 0x1 - bge _08038120 - cmp r0, 0 - beq _0803810E - b _0803812A -_0803810A: - cmp r0, 0x3 - bne _0803812A -_0803810E: - ldr r0, =gEnemyParty -_08038110: - adds r1, r4, 0 - movs r2, 0xC8 - bl memcpy - b _0803812A - .pool -_08038120: - ldr r0, =gEnemyParty + 300 - adds r1, r4, 0 - movs r2, 0xC8 - bl memcpy -_0803812A: - movs r2, 0x80 - lsls r2, 1 - adds r4, r2 - adds r5, 0x1C - adds r6, 0x1 - cmp r6, 0x3 - ble _0803806C - b _080383A6 - .pool -_08038140: - bl sub_800A520 - lsls r0, 24 - cmp r0, 0 - bne _0803814C - b _080383F8 -_0803814C: - bl bitmask_all_link_players_but_self - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gPlayerParty + 200 - movs r2, 0x64 - bl link_0800A448 - b _080383A6 - .pool -_08038164: - bl sub_800A550 - movs r1, 0xF - ands r1, r0 - cmp r1, 0xF - beq _08038172 - b _080383F8 -_08038172: - bl sub_800A5B4 - movs r6, 0 - lsls r0, r7, 3 - subs r0, r7 - lsls r0, 2 - mov r8, r0 - ldr r4, =gUnknown_020223C4 - movs r5, 0 -_08038184: - cmp r6, r7 - bne _080381B8 - ldr r0, =gLinkPlayers - adds r0, r5, r0 - ldrh r0, [r0, 0x18] - cmp r0, 0x2 - bgt _080381A4 - cmp r0, 0x1 - bge _080381B0 - cmp r0, 0 - beq _080381A8 - b _08038242 - .pool -_080381A4: - cmp r0, 0x3 - bne _08038242 -_080381A8: - ldr r0, =gPlayerParty + 200 - b _08038228 - .pool -_080381B0: - ldr r0, =gPlayerParty + 500 - b _08038228 - .pool -_080381B8: - ldr r2, =gLinkPlayers - adds r0, r5, r2 - ldrh r1, [r0, 0x18] - movs r3, 0x1 - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - bne _080381DC - mov r1, r8 - adds r0, r1, r2 - ldrh r1, [r0, 0x18] - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _080381EA - b _08038210 - .pool -_080381DC: - mov r1, r8 - adds r0, r1, r2 - ldrh r1, [r0, 0x18] - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _08038210 -_080381EA: - adds r0, r5, r2 - ldrh r0, [r0, 0x18] - cmp r0, 0x2 - bgt _080381FC - cmp r0, 0x1 - bge _08038208 - cmp r0, 0 - beq _08038200 - b _08038242 -_080381FC: - cmp r0, 0x3 - bne _08038242 -_08038200: - ldr r0, =gPlayerParty + 200 - b _08038228 - .pool -_08038208: - ldr r0, =gPlayerParty + 500 - b _08038228 - .pool -_08038210: - adds r0, r5, r2 - ldrh r0, [r0, 0x18] - cmp r0, 0x2 - bgt _08038222 - cmp r0, 0x1 - bge _08038238 - cmp r0, 0 - beq _08038226 - b _08038242 -_08038222: - cmp r0, 0x3 - bne _08038242 -_08038226: - ldr r0, =gEnemyParty + 200 -_08038228: - adds r1, r4, 0 - movs r2, 0x64 - bl memcpy - b _08038242 - .pool -_08038238: - ldr r0, =gEnemyParty + 500 - adds r1, r4, 0 - movs r2, 0x64 - bl memcpy -_08038242: - movs r2, 0x80 - lsls r2, 1 - adds r4, r2 - adds r5, 0x1C - adds r6, 0x1 - cmp r6, 0x3 - ble _08038184 - ldr r4, =gPlayerParty - adds r0, r4, 0 - bl shedinja_something - adds r0, r4, 0 - adds r0, 0x64 - bl shedinja_something - adds r0, r4, 0 - adds r0, 0xC8 - bl shedinja_something - movs r1, 0x96 - lsls r1, 1 - adds r0, r4, r1 - bl shedinja_something - movs r2, 0xC8 - lsls r2, 1 - adds r0, r4, r2 - bl shedinja_something - movs r1, 0xFA - lsls r1, 1 - adds r0, r4, r1 - bl shedinja_something - ldr r4, =gEnemyParty - adds r0, r4, 0 - bl shedinja_something - adds r0, r4, 0 - adds r0, 0x64 - bl shedinja_something - adds r0, r4, 0 - adds r0, 0xC8 - bl shedinja_something - movs r2, 0x96 - lsls r2, 1 - adds r0, r4, r2 - bl shedinja_something - movs r1, 0xC8 - lsls r1, 1 - adds r0, r4, r1 - bl shedinja_something - movs r2, 0xFA - lsls r2, 1 - adds r0, r4, r2 - bl shedinja_something - b _080383A6 - .pool -_080382CC: - bl sub_8032768 - bl sub_8184E58 - ldr r3, =gBattleCommunication - movs r0, 0 - strb r0, [r3, 0x1] - strb r0, [r3, 0x2] - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08038326 - movs r6, 0 - ldr r0, =gLinkPlayers - ldrb r1, [r0] - adds r4, r3, 0 - adds r2, r0, 0 - cmp r1, 0x3 - bne _0803830A - movs r3, 0xFF -_080382F8: - adds r2, 0x1C - adds r6, 0x1 - cmp r6, 0x3 - bgt _0803830A - ldrh r1, [r2] - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0x3 - beq _080382F8 -_0803830A: - cmp r6, 0x4 - bne _08038320 - movs r0, 0x8 - strb r0, [r4] - b _080383F8 - .pool -_08038320: - movs r0, 0xA - strb r0, [r4] - b _080383F8 -_08038326: - movs r0, 0xA - strb r0, [r3] - b _080383F8 -_0803832C: - bl sub_800A520 - lsls r0, 24 - cmp r0, 0 - beq _080383F8 - ldr r0, =gBattleStruct - ldr r4, [r0] - movs r0, 0xC0 - lsls r0, 1 - adds r4, r0 - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - str r0, [r4] - ldr r0, =gUnknown_0203BD2C - ldr r0, [r0] - str r0, [r4, 0x4] - bl bitmask_all_link_players_but_self - lsls r0, 24 - lsrs r0, 24 - adds r1, r4, 0 - movs r2, 0x8 - bl link_0800A448 - b _080383A6 - .pool -_0803836C: - bl sub_800A550 - movs r1, 0xF - ands r1, r0 - cmp r1, 0xF - bne _080383F8 - bl sub_800A5B4 - movs r2, 0 - b _08038386 -_08038380: - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 -_08038386: - cmp r2, 0x3 - bhi _080383A6 - ldr r4, =gUnknown_020223C4 - lsls r3, r2, 8 - adds r0, r3, r4 - ldrh r0, [r0] - movs r1, 0x4 - ands r0, r1 - cmp r0, 0 - beq _08038380 - adds r1, r4, 0x4 - adds r1, r3, r1 - ldr r0, =gUnknown_0203BD2C - movs r2, 0x4 - bl memcpy -_080383A6: - ldr r1, =gBattleCommunication - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _080383F8 - .pool -_080383BC: - ldr r0, =gUnknown_02024333 - adds r1, r0, 0x1 - bl battle_load_something - lsls r0, 24 - cmp r0, 0 - beq _080383F8 - ldr r2, =gUnknown_03005D00 - ldr r1, =gMain - ldr r0, [r1] - str r0, [r2] - ldr r0, =sub_8039EF0 - str r0, [r1] - ldr r0, =sub_8038420 - bl SetMainCallback2 - ldr r3, =gBattleTypeFlags - ldr r2, [r3] - movs r0, 0x2 - ands r0, r2 - cmp r0, 0 - beq _080383F8 - ldr r0, =gTrainerBattleOpponent_A - movs r4, 0x80 - lsls r4, 4 - adds r1, r4, 0 - strh r1, [r0] - movs r0, 0x20 - orrs r2, r0 - str r2, [r3] -_080383F8: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8037DF4 - - thumb_func_start sub_8038420 -sub_8038420: @ 8038420 - push {lr} - sub sp, 0x4 - bl AnimateSprites - bl BuildOamBuffer - bl RunTextPrinters - bl UpdatePaletteFade - bl RunTasks - ldr r0, =gMain - ldrh r1, [r0, 0x2C] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08038482 - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 17 - ands r0, r1 - cmp r0, 0 - beq _08038482 - bl rfu_lacks_rfufunc - lsls r0, 24 - cmp r0, 0 - beq _08038482 - ldr r2, =gScriptResult - ldr r1, =gBattleOutcome - movs r0, 0x5 - strb r0, [r1] - movs r0, 0x5 - strh r0, [r2] - bl ResetPaletteFadeControl - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, =sub_80384E4 - bl SetMainCallback2 -_08038482: - add sp, 0x4 - pop {r0} - bx r0 - .pool - thumb_func_end sub_8038420 - - thumb_func_start sub_803849C -sub_803849C: @ 803849C - push {lr} - ldr r1, =gMain - ldr r0, =gUnknown_03005D00 - ldr r0, [r0] - str r0, [r1] - ldr r2, =gUnknown_02039B28 - movs r0, 0x3 - strb r0, [r2, 0x15] - ldr r0, =0x00000439 - adds r1, r0 - ldrb r2, [r1] - movs r0, 0x3 - negs r0, r0 - ands r0, r2 - strb r0, [r1] - bl ZeroEnemyPartyMons - movs r0, 0x5A - bl m4aSongNumStop - bl sub_805F094 - bl dp11_free - bl sub_8057028 - pop {r0} - bx r0 - .pool - thumb_func_end sub_803849C - - thumb_func_start sub_80384E4 -sub_80384E4: @ 80384E4 - push {lr} - bl UpdatePaletteFade - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08038512 - ldr r0, =gMPlay_SE1 - bl m4aMPlayStop - ldr r0, =gMPlay_SE2 - bl m4aMPlayStop - bl sub_803849C - bl FreeAllWindowBuffers - ldr r0, =gMain - ldr r0, [r0, 0x8] - bl SetMainCallback2 -_08038512: - pop {r0} - bx r0 - .pool - thumb_func_end sub_80384E4 - - thumb_func_start sub_8038528 -sub_8038528: @ 8038528 - movs r1, 0 - strh r1, [r0, 0x2E] - ldr r1, =sub_8038538 - str r1, [r0, 0x1C] - bx lr - .pool - thumb_func_end sub_8038528 - - thumb_func_start sub_8038538 -sub_8038538: @ 8038538 - push {r4,r5,lr} - adds r3, r0, 0 - ldr r5, =0x0201c000 - movs r0, 0x2E - ldrsh r1, [r3, r0] - cmp r1, 0x1 - beq _0803856C - cmp r1, 0x1 - bgt _08038554 - cmp r1, 0 - beq _0803855A - b _080385DC - .pool -_08038554: - cmp r1, 0x2 - beq _080385C8 - b _080385DC -_0803855A: - ldrh r0, [r3, 0x2E] - adds r0, 0x1 - strh r0, [r3, 0x2E] - strh r1, [r3, 0x30] - ldr r0, =0x00000281 - strh r0, [r3, 0x32] - strh r1, [r3, 0x34] - movs r0, 0x1 - strh r0, [r3, 0x36] -_0803856C: - ldrh r0, [r3, 0x36] - subs r0, 0x1 - strh r0, [r3, 0x36] - lsls r0, 16 - cmp r0, 0 - bne _080385DC - movs r0, 0x2 - strh r0, [r3, 0x36] - movs r4, 0x30 - ldrsh r2, [r3, r4] - movs r0, 0x34 - ldrsh r1, [r3, r0] - lsls r1, 5 - adds r2, r1 - movs r4, 0x32 - ldrsh r0, [r3, r4] - subs r0, r1 - movs r4, 0x3D - lsls r0, 1 - adds r0, r5 - lsls r2, 1 - adds r2, r5 - movs r1, 0x1C -_0803859A: - strh r4, [r2] - strh r4, [r0] - adds r0, 0x4 - adds r2, 0x4 - subs r1, 0x2 - cmp r1, 0 - bge _0803859A - ldrh r0, [r3, 0x34] - adds r0, 0x1 - strh r0, [r3, 0x34] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x15 - bne _080385DC - ldrh r0, [r3, 0x2E] - adds r0, 0x1 - strh r0, [r3, 0x2E] - movs r0, 0x20 - strh r0, [r3, 0x30] - b _080385DC - .pool -_080385C8: - ldrh r0, [r3, 0x30] - subs r0, 0x1 - strh r0, [r3, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x14 - bne _080385DC - ldr r0, =sub_8036760 - bl SetMainCallback2 -_080385DC: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8038538 - - thumb_func_start LoadTrainerParty -LoadTrainerParty: @ 80385E8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x28 - str r0, [sp, 0x10] - lsls r1, 16 - lsrs r1, 16 - str r1, [sp, 0x14] - lsls r2, 24 - lsrs r2, 24 - movs r0, 0 - mov r9, r0 - movs r0, 0x80 - lsls r0, 3 - cmp r1, r0 - bne _08038610 - movs r0, 0 - b _080389E2 -_08038610: - ldr r4, =gBattleTypeFlags - ldr r0, [r4] - ldr r1, =0x043f0908 - ands r0, r1 - ldr r1, [sp, 0x14] - lsls r1, 2 - str r1, [sp, 0x20] - cmp r0, 0x8 - beq _08038624 - b _080389D2 -_08038624: - cmp r2, 0x1 - bne _0803862C - bl ZeroEnemyPartyMons -_0803862C: - ldr r0, [r4] - movs r1, 0x80 - lsls r1, 8 - ands r0, r1 - cmp r0, 0 - beq _08038668 - ldr r0, =gTrainers - ldr r2, [sp, 0x20] - ldr r3, [sp, 0x14] - adds r1, r2, r3 - lsls r1, 3 - adds r1, r0 - adds r2, r1, 0 - adds r2, 0x20 - ldrb r1, [r2] - movs r4, 0x3 - str r4, [sp, 0x1C] - adds r4, r0, 0 - cmp r1, 0x3 - bhi _0803867C - adds r2, r1, 0 - str r2, [sp, 0x1C] - b _0803867C - .pool -_08038668: - ldr r1, =gTrainers - ldr r2, [sp, 0x20] - ldr r3, [sp, 0x14] - adds r0, r2, r3 - lsls r0, 3 - adds r0, r1 - adds r0, 0x20 - ldrb r0, [r0] - str r0, [sp, 0x1C] - adds r4, r1, 0 -_0803867C: - movs r0, 0 - str r0, [sp, 0x18] - b _080389B4 - .pool -_08038688: - ldr r2, [sp, 0x20] - ldr r3, [sp, 0x14] - adds r0, r2, r3 - lsls r0, 3 - adds r1, r0, r4 - ldrb r0, [r1, 0x18] - cmp r0, 0x1 - bne _0803869E - movs r0, 0x80 - mov r10, r0 - b _080386B0 -_0803869E: - ldrb r1, [r1, 0x2] - movs r0, 0x80 - ands r0, r1 - movs r1, 0x88 - mov r10, r1 - cmp r0, 0 - beq _080386B0 - movs r2, 0x78 - mov r10, r2 -_080386B0: - movs r6, 0 - ldr r2, [sp, 0x20] - ldr r3, [sp, 0x14] - adds r0, r2, r3 - lsls r0, 3 - adds r1, r4, 0x4 - adds r0, r1 - ldrb r0, [r0] - ldr r3, [sp, 0x18] - adds r3, 0x1 - str r3, [sp, 0x24] - cmp r0, 0xFF - beq _080386E6 - adds r3, r1, 0 -_080386CC: - ldr r0, [sp, 0x14] - adds r1, r2, r0 - lsls r1, 3 - adds r0, r6, r1 - adds r0, r3 - ldrb r0, [r0] - add r9, r0 - adds r6, 0x1 - adds r1, r6, r1 - adds r1, r3 - ldrb r0, [r1] - cmp r0, 0xFF - bne _080386CC -_080386E6: - ldr r1, [sp, 0x20] - ldr r2, [sp, 0x14] - adds r0, r1, r2 - lsls r1, r0, 3 - adds r0, r1, r4 - ldrb r0, [r0] - cmp r0, 0x1 - beq _08038794 - cmp r0, 0x1 - bgt _08038700 - cmp r0, 0 - beq _0803870E - b _080389AC -_08038700: - cmp r0, 0x2 - bne _08038706 - b _08038854 -_08038706: - cmp r0, 0x3 - bne _0803870C - b _080388E8 -_0803870C: - b _080389AC -_0803870E: - adds r0, r4, 0 - adds r0, 0x24 - adds r0, r1, r0 - ldr r4, [r0] - movs r6, 0 - ldr r3, [sp, 0x18] - lsls r2, r3, 3 - adds r0, r2, r4 - ldrh r1, [r0, 0x4] - movs r0, 0xB - muls r0, r1 - ldr r1, =gSpeciesNames - adds r0, r1 - ldrb r0, [r0] - adds r5, r2, 0 - cmp r0, 0xFF - beq _08038750 - adds r3, r1, 0 - movs r7, 0xB -_08038734: - adds r0, r2, r4 - ldrh r0, [r0, 0x4] - adds r1, r0, 0 - muls r1, r7 - adds r0, r6, r1 - adds r0, r3 - ldrb r0, [r0] - add r9, r0 - adds r6, 0x1 - adds r1, r6, r1 - adds r1, r3 - ldrb r0, [r1] - cmp r0, 0xFF - bne _08038734 -_08038750: - mov r2, r9 - lsls r0, r2, 8 - add r10, r0 - adds r4, r5, r4 - ldrh r1, [r4] - lsls r0, r1, 5 - subs r0, r1 - movs r1, 0xFF - bl __divsi3 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r3, [sp, 0x18] - movs r1, 0x64 - adds r0, r3, 0 - muls r0, r1 - ldr r2, [sp, 0x10] - adds r0, r2, r0 - ldrh r1, [r4, 0x4] - ldrb r2, [r4, 0x2] - movs r3, 0x1 - str r3, [sp] - mov r3, r10 - str r3, [sp, 0x4] - movs r3, 0x2 - str r3, [sp, 0x8] - movs r3, 0 - str r3, [sp, 0xC] - adds r3, r6, 0 - bl CreateMon - b _080389AC - .pool -_08038794: - adds r0, r4, 0 - adds r0, 0x24 - adds r0, r1, r0 - ldr r7, [r0] - movs r6, 0 - ldr r4, [sp, 0x18] - lsls r2, r4, 4 - adds r0, r2, r7 - ldrh r1, [r0, 0x4] - movs r0, 0xB - muls r0, r1 - ldr r1, =gSpeciesNames - adds r0, r1 - ldrb r0, [r0] - mov r8, r2 - cmp r0, 0xFF - beq _080387D6 - adds r3, r1, 0 - movs r4, 0xB -_080387BA: - adds r0, r2, r7 - ldrh r0, [r0, 0x4] - adds r1, r0, 0 - muls r1, r4 - adds r0, r6, r1 - adds r0, r3 - ldrb r0, [r0] - add r9, r0 - adds r6, 0x1 - adds r1, r6, r1 - adds r1, r3 - ldrb r0, [r1] - cmp r0, 0xFF - bne _080387BA -_080387D6: - mov r2, r9 - lsls r0, r2, 8 - add r10, r0 - mov r3, r8 - adds r4, r3, r7 - ldrh r1, [r4] - lsls r0, r1, 5 - subs r0, r1 - movs r1, 0xFF - bl __divsi3 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r0, [sp, 0x18] - movs r1, 0x64 - adds r5, r0, 0 - muls r5, r1 - ldr r2, [sp, 0x10] - adds r5, r2, r5 - ldrh r1, [r4, 0x4] - ldrb r2, [r4, 0x2] - movs r0, 0x1 - str r0, [sp] - mov r3, r10 - str r3, [sp, 0x4] - movs r0, 0x2 - str r0, [sp, 0x8] - movs r0, 0 - str r0, [sp, 0xC] - adds r0, r5, 0 - adds r3, r6, 0 - bl CreateMon - movs r6, 0 - mov r0, r8 - adds r0, 0x6 - adds r4, r7, r0 -_08038820: - adds r1, r6, 0 - adds r1, 0xD - adds r0, r5, 0 - adds r2, r4, 0 - bl SetMonData - adds r1, r6, 0 - adds r1, 0x11 - ldrh r0, [r4] - lsls r2, r0, 1 - adds r2, r0 - lsls r2, 2 - ldr r0, =gBattleMoves + 0x4 @ PP offset - adds r2, r0 - adds r0, r5, 0 - bl SetMonData - adds r4, 0x2 - adds r6, 0x1 - cmp r6, 0x3 - ble _08038820 - b _080389AC - .pool -_08038854: - adds r0, r4, 0 - adds r0, 0x24 - adds r0, r1, r0 - ldr r4, [r0] - movs r6, 0 - ldr r0, [sp, 0x18] - lsls r2, r0, 3 - adds r0, r2, r4 - ldrh r1, [r0, 0x4] - movs r0, 0xB - muls r0, r1 - ldr r1, =gSpeciesNames - adds r0, r1 - ldrb r0, [r0] - adds r5, r2, 0 - cmp r0, 0xFF - beq _08038896 - adds r3, r1, 0 - movs r7, 0xB -_0803887A: - adds r0, r2, r4 - ldrh r0, [r0, 0x4] - adds r1, r0, 0 - muls r1, r7 - adds r0, r6, r1 - adds r0, r3 - ldrb r0, [r0] - add r9, r0 - adds r6, 0x1 - adds r1, r6, r1 - adds r1, r3 - ldrb r0, [r1] - cmp r0, 0xFF - bne _0803887A -_08038896: - mov r2, r9 - lsls r0, r2, 8 - add r10, r0 - adds r5, r4 - ldrh r1, [r5] - lsls r0, r1, 5 - subs r0, r1 - movs r1, 0xFF - bl __divsi3 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r3, [sp, 0x18] - movs r0, 0x64 - adds r4, r3, 0 - muls r4, r0 - ldr r1, [sp, 0x10] - adds r4, r1, r4 - ldrh r1, [r5, 0x4] - ldrb r2, [r5, 0x2] - movs r0, 0x1 - str r0, [sp] - mov r3, r10 - str r3, [sp, 0x4] - movs r0, 0x2 - str r0, [sp, 0x8] - movs r0, 0 - str r0, [sp, 0xC] - adds r0, r4, 0 - adds r3, r6, 0 - bl CreateMon - adds r5, 0x6 - adds r0, r4, 0 - movs r1, 0xC - adds r2, r5, 0 - bl SetMonData - b _080389AC - .pool -_080388E8: - adds r0, r4, 0 - adds r0, 0x24 - adds r0, r1, r0 - ldr r7, [r0] - movs r6, 0 - ldr r4, [sp, 0x18] - lsls r2, r4, 4 - adds r0, r2, r7 - ldrh r1, [r0, 0x4] - movs r0, 0xB - muls r0, r1 - ldr r1, =gSpeciesNames - adds r0, r1 - ldrb r0, [r0] - mov r8, r2 - cmp r0, 0xFF - beq _0803892A - adds r3, r1, 0 - movs r4, 0xB -_0803890E: - adds r0, r2, r7 - ldrh r0, [r0, 0x4] - adds r1, r0, 0 - muls r1, r4 - adds r0, r6, r1 - adds r0, r3 - ldrb r0, [r0] - add r9, r0 - adds r6, 0x1 - adds r1, r6, r1 - adds r1, r3 - ldrb r0, [r1] - cmp r0, 0xFF - bne _0803890E -_0803892A: - mov r2, r9 - lsls r0, r2, 8 - add r10, r0 - mov r3, r8 - adds r5, r3, r7 - ldrh r1, [r5] - lsls r0, r1, 5 - subs r0, r1 - movs r1, 0xFF - bl __divsi3 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r0, [sp, 0x18] - movs r1, 0x64 - adds r4, r0, 0 - muls r4, r1 - ldr r2, [sp, 0x10] - adds r4, r2, r4 - ldrh r1, [r5, 0x4] - ldrb r2, [r5, 0x2] - movs r0, 0x1 - str r0, [sp] - mov r3, r10 - str r3, [sp, 0x4] - movs r0, 0x2 - str r0, [sp, 0x8] - movs r0, 0 - str r0, [sp, 0xC] - adds r0, r4, 0 - adds r3, r6, 0 - bl CreateMon - adds r5, 0x6 - adds r0, r4, 0 - movs r1, 0xC - adds r2, r5, 0 - bl SetMonData - movs r6, 0 - adds r5, r4, 0 - mov r0, r8 - adds r0, 0x8 - adds r4, r7, r0 -_08038982: - adds r1, r6, 0 - adds r1, 0xD - adds r0, r5, 0 - adds r2, r4, 0 - bl SetMonData - adds r1, r6, 0 - adds r1, 0x11 - ldrh r0, [r4] - lsls r2, r0, 1 - adds r2, r0 - lsls r2, 2 - ldr r0, =gBattleMoves + 0x4 @ PP offset - adds r2, r0 - adds r0, r5, 0 - bl SetMonData - adds r4, 0x2 - adds r6, 0x1 - cmp r6, 0x3 - ble _08038982 -_080389AC: - ldr r4, [sp, 0x24] - str r4, [sp, 0x18] - ldr r4, =gTrainers - ldr r0, [sp, 0x18] -_080389B4: - ldr r1, [sp, 0x1C] - cmp r0, r1 - bge _080389BC - b _08038688 -_080389BC: - ldr r2, =gBattleTypeFlags - ldr r1, =gTrainers - ldr r3, [sp, 0x20] - ldr r4, [sp, 0x14] - adds r0, r3, r4 - lsls r0, 3 - adds r0, r1 - ldrb r1, [r0, 0x18] - ldr r0, [r2] - orrs r0, r1 - str r0, [r2] -_080389D2: - ldr r0, =gTrainers - ldr r2, [sp, 0x20] - ldr r3, [sp, 0x14] - adds r1, r2, r3 - lsls r1, 3 - adds r1, r0 - adds r1, 0x20 - ldrb r0, [r1] -_080389E2: - add sp, 0x28 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .pool - thumb_func_end LoadTrainerParty - - thumb_func_start sub_8038A04 -sub_8038A04: @ 8038A04 - push {lr} - ldr r0, =0x04000006 - ldrh r0, [r0] - subs r0, 0x6F - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x30 - bhi _08038A1E - movs r1, 0x98 - lsls r1, 8 - movs r0, 0x8 - bl SetGpuReg -_08038A1E: - pop {r0} - bx r0 - .pool - thumb_func_end sub_8038A04 - - thumb_func_start vblank_cb_08078BB4 -vblank_cb_08078BB4: @ 8038A28 - push {lr} - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - ldr r1, =0x013f0102 - ands r0, r1 - cmp r0, 0 - bne _08038A3A - bl Random -_08038A3A: - ldr r0, =gUnknown_02022E14 - ldrh r1, [r0] - movs r0, 0x10 - bl SetGpuReg - ldr r0, =gUnknown_02022E16 - ldrh r1, [r0] - movs r0, 0x12 - bl SetGpuReg - ldr r0, =gUnknown_02022E18 - ldrh r1, [r0] - movs r0, 0x14 - bl SetGpuReg - ldr r0, =gUnknown_02022E1A - ldrh r1, [r0] - movs r0, 0x16 - bl SetGpuReg - ldr r0, =gUnknown_02022E1C - ldrh r1, [r0] - movs r0, 0x18 - bl SetGpuReg - ldr r0, =gUnknown_02022E1E - ldrh r1, [r0] - movs r0, 0x1A - bl SetGpuReg - ldr r0, =gUnknown_02022E20 - ldrh r1, [r0] - movs r0, 0x1C - bl SetGpuReg - ldr r0, =gUnknown_02022E22 - ldrh r1, [r0] - movs r0, 0x1E - bl SetGpuReg - ldr r0, =gUnknown_02022E24 - ldrh r1, [r0] - movs r0, 0x40 - bl SetGpuReg - ldr r0, =gUnknown_02022E26 - ldrh r1, [r0] - movs r0, 0x44 - bl SetGpuReg - ldr r0, =gUnknown_02022E28 - ldrh r1, [r0] - movs r0, 0x42 - bl SetGpuReg - ldr r0, =gUnknown_02022E2A - ldrh r1, [r0] - movs r0, 0x46 - bl SetGpuReg - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - bl sub_80BA0A8 - pop {r0} - bx r0 - .pool - thumb_func_end vblank_cb_08078BB4 - - thumb_func_start nullsub_17 -nullsub_17: @ 8038B00 - bx lr - thumb_func_end nullsub_17 - - thumb_func_start sub_8038B04 -sub_8038B04: @ 8038B04 - push {r4,r5,lr} - adds r5, r0, 0 - movs r1, 0x2E - ldrsh r0, [r5, r1] - cmp r0, 0 - beq _08038B24 - movs r1, 0x32 - ldrsh r0, [r5, r1] - movs r1, 0xFF - lsls r1, 8 - ands r0, r1 - lsrs r0, 8 - ldrh r1, [r5, 0x30] - adds r0, r1 - strh r0, [r5, 0x20] - b _08038B36 -_08038B24: - movs r1, 0x32 - ldrsh r0, [r5, r1] - movs r1, 0xFF - lsls r1, 8 - ands r0, r1 - asrs r0, 8 - ldrh r1, [r5, 0x30] - subs r1, r0 - strh r1, [r5, 0x20] -_08038B36: - movs r1, 0xC0 - lsls r1, 1 - adds r0, r1, 0 - ldrh r1, [r5, 0x32] - adds r0, r1 - strh r0, [r5, 0x32] - adds r0, r5, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _08038B6A - ldr r4, =0x00002710 - adds r0, r4, 0 - bl FreeSpriteTilesByTag - adds r0, r4, 0 - bl FreeSpritePaletteByTag - adds r0, r5, 0 - bl FreeSpriteOamMatrix - adds r0, r5, 0 - bl DestroySprite -_08038B6A: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8038B04 - - thumb_func_start sub_8038B74 -sub_8038B74: @ 8038B74 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim - ldr r0, =sub_8038B04 - str r0, [r4, 0x1C] - movs r0, 0x68 - bl PlaySE - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8038B74 - - thumb_func_start sub_8038B94 -sub_8038B94: @ 8038B94 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x10 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp] - movs r0, 0 - str r0, [sp, 0x4] - movs r1, 0 - str r1, [sp, 0x8] - ldr r0, =gBattleScripting - adds r0, 0x25 - ldrb r2, [r0] - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08038C04 - ldr r1, =gLinkPlayers - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r0, r1 - ldrh r0, [r0, 0x18] - cmp r0, 0x1 - beq _08038BF0 - cmp r0, 0x1 - bgt _08038BE8 - cmp r0, 0 - beq _08038C04 - b _08038C0C - .pool -_08038BE8: - cmp r0, 0x2 - beq _08038C04 - cmp r0, 0x3 - bne _08038C0C -_08038BF0: - ldr r0, =gEnemyParty - str r0, [sp, 0x4] - ldr r1, =gPlayerParty - str r1, [sp, 0x8] - b _08038C0C - .pool -_08038C04: - ldr r2, =gPlayerParty - str r2, [sp, 0x4] - ldr r3, =gEnemyParty - str r3, [sp, 0x8] -_08038C0C: - movs r7, 0 - movs r0, 0 - mov r8, r0 - ldr r1, [sp] - lsls r1, 2 - str r1, [sp, 0xC] - movs r2, 0xCE - lsls r2, 1 - mov r10, r2 - mov r9, r0 -_08038C20: - movs r0, 0x64 - mov r4, r8 - muls r4, r0 - ldr r3, [sp, 0x4] - adds r4, r3, r4 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - lsls r0, 16 - lsrs r5, r0, 16 - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - lsls r0, 16 - lsrs r6, r0, 16 - adds r0, r4, 0 - movs r1, 0x37 - bl GetMonData - adds r1, r0, 0 - cmp r5, 0 - beq _08038C90 - cmp r5, r10 - beq _08038C64 - cmp r6, 0 - beq _08038C64 - cmp r1, 0 - bne _08038C64 - movs r0, 0x1 - mov r2, r9 - lsls r0, r2 - orrs r7, r0 -_08038C64: - cmp r5, 0 - beq _08038C90 - cmp r6, 0 - beq _08038C7C - cmp r5, r10 - beq _08038C74 - cmp r1, 0 - beq _08038C7C -_08038C74: - movs r0, 0x2 - mov r3, r9 - lsls r0, r3 - orrs r7, r0 -_08038C7C: - cmp r5, 0 - beq _08038C90 - cmp r5, r10 - beq _08038C90 - cmp r6, 0 - bne _08038C90 - movs r0, 0x3 - mov r1, r9 - lsls r0, r1 - orrs r7, r0 -_08038C90: - movs r2, 0x2 - add r9, r2 - movs r3, 0x1 - add r8, r3 - mov r0, r8 - cmp r0, 0x5 - ble _08038C20 - ldr r1, =gTasks - ldr r2, [sp, 0xC] - ldr r3, [sp] - adds r0, r2, r3 - lsls r0, 3 - adds r0, r1 - strh r7, [r0, 0xE] - movs r7, 0 - movs r0, 0 - mov r8, r0 - movs r1, 0xCE - lsls r1, 1 - mov r10, r1 - mov r9, r0 -_08038CBA: - movs r0, 0x64 - mov r4, r8 - muls r4, r0 - ldr r2, [sp, 0x8] - adds r4, r2, r4 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - lsls r0, 16 - lsrs r5, r0, 16 - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - lsls r0, 16 - lsrs r6, r0, 16 - adds r0, r4, 0 - movs r1, 0x37 - bl GetMonData - adds r1, r0, 0 - cmp r5, 0 - beq _08038D2A - cmp r5, r10 - beq _08038CFE - cmp r6, 0 - beq _08038CFE - cmp r1, 0 - bne _08038CFE - movs r0, 0x1 - mov r3, r9 - lsls r0, r3 - orrs r7, r0 -_08038CFE: - cmp r5, 0 - beq _08038D2A - cmp r6, 0 - beq _08038D16 - cmp r5, r10 - beq _08038D0E - cmp r1, 0 - beq _08038D16 -_08038D0E: - movs r0, 0x2 - mov r1, r9 - lsls r0, r1 - orrs r7, r0 -_08038D16: - cmp r5, 0 - beq _08038D2A - cmp r5, r10 - beq _08038D2A - cmp r6, 0 - bne _08038D2A - movs r0, 0x3 - mov r2, r9 - lsls r0, r2 - orrs r7, r0 -_08038D2A: - movs r3, 0x2 - add r9, r3 - movs r0, 0x1 - add r8, r0 - mov r1, r8 - cmp r1, 0x5 - ble _08038CBA - ldr r1, =gTasks - ldr r2, [sp, 0xC] - ldr r3, [sp] - adds r0, r2, r3 - lsls r0, 3 - adds r0, r1 - strh r7, [r0, 0x10] - add sp, 0x10 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8038B94 - - thumb_func_start sub_8038D64 -sub_8038D64: @ 8038D64 - push {r4,lr} - sub sp, 0x4 - movs r0, 0 - bl SetHBlankCallback - movs r0, 0 - bl SetVBlankCallback - ldr r0, =gBattleTypeFlags - ldr r1, [r0] - movs r2, 0x21 - negs r2, r2 - ands r1, r2 - str r1, [r0] - ldr r0, =0x003f0100 - ands r0, r1 - cmp r0, 0 - beq _08038DAC - ldr r0, =gMain - ldr r0, [r0, 0x8] - bl SetMainCallback2 - bl sub_8057028 - bl dp11_free - bl sub_805F094 - b _08038EB6 - .pool -_08038DAC: - str r0, [sp] - movs r1, 0xC0 - lsls r1, 19 - ldr r2, =0x05006000 - mov r0, sp - bl CpuSet - movs r0, 0x4C - movs r1, 0 - bl SetGpuReg - movs r0, 0x40 - movs r1, 0xF0 - bl SetGpuReg - ldr r4, =0x00005051 - movs r0, 0x44 - adds r1, r4, 0 - bl SetGpuReg - movs r0, 0x48 - movs r1, 0 - bl SetGpuReg - movs r0, 0x4A - movs r1, 0 - bl SetGpuReg - ldr r1, =gUnknown_02022E24 - movs r0, 0xF0 - strh r0, [r1] - ldr r0, =gUnknown_02022E26 - strh r4, [r0] - bl dp12_8087EA4 - ldr r0, =gUnknown_02038C28 - movs r3, 0xF0 - movs r1, 0xF0 - lsls r1, 3 - adds r2, r0, r1 - movs r1, 0x4F -_08038DFE: - strh r3, [r0] - strh r3, [r2] - adds r2, 0x2 - adds r0, 0x2 - subs r1, 0x1 - cmp r1, 0 - bge _08038DFE - movs r1, 0x50 - ldr r0, =gUnknown_02038C28 - ldr r3, =0x0000ff10 - movs r4, 0x82 - lsls r4, 4 - adds r2, r0, r4 - adds r0, 0xA0 -_08038E1A: - strh r3, [r0] - strh r3, [r2] - adds r2, 0x2 - adds r0, 0x2 - adds r1, 0x1 - cmp r1, 0x9F - ble _08038E1A - bl ResetPaletteFade - ldr r0, =gUnknown_02022E14 - movs r4, 0 - strh r4, [r0] - ldr r0, =gUnknown_02022E16 - strh r4, [r0] - ldr r0, =gUnknown_02022E18 - strh r4, [r0] - ldr r0, =gUnknown_02022E1A - strh r4, [r0] - ldr r0, =gUnknown_02022E1C - strh r4, [r0] - ldr r0, =gUnknown_02022E1E - strh r4, [r0] - ldr r0, =gUnknown_02022E20 - strh r4, [r0] - ldr r0, =gUnknown_02022E22 - strh r4, [r0] - bl c2_berry_program_update_menu - ldr r0, =gUnknown_08C004E0 - movs r1, 0 - movs r2, 0x40 - bl LoadCompressedPalette - bl sub_803570C - bl ResetSpriteData - bl ResetTasks - bl sub_8036154 - movs r0, 0x4A - movs r1, 0x37 - bl SetGpuReg - bl FreeAllSpritePalettes - ldr r1, =gReservedSpritePaletteCount - movs r0, 0x4 - strb r0, [r1] - ldr r0, =vblank_cb_08078BB4 - bl SetVBlankCallback - ldr r0, =task00_0800F6FC - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - movs r2, 0x87 - lsls r2, 1 - strh r2, [r1, 0xA] - movs r2, 0x5A - strh r2, [r1, 0xC] - movs r2, 0x1 - strh r2, [r1, 0x12] - bl sub_8038B94 - ldr r0, =sub_8038F14 - bl SetMainCallback2 - ldr r0, =gBattleCommunication - strb r4, [r0] -_08038EB6: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8038D64 - - thumb_func_start sub_8038F14 -sub_8038F14: @ 8038F14 - push {lr} - bl sub_8038F34 - bl AnimateSprites - bl BuildOamBuffer - bl RunTextPrinters - bl UpdatePaletteFade - bl RunTasks - pop {r0} - bx r0 - thumb_func_end sub_8038F14 - - thumb_func_start sub_8038F34 -sub_8038F34: @ 8038F34 - push {r4-r6,lr} - sub sp, 0x8 - ldr r0, =gBattleCommunication - ldrb r1, [r0] - adds r4, r0, 0 - cmp r1, 0x9 - bls _08038F44 - b _080391C6 -_08038F44: - lsls r0, r1, 2 - ldr r1, =_08038F58 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_08038F58: - .4byte _08038F80 - .4byte _08038FA0 - .4byte _08038FC2 - .4byte _080390C8 - .4byte _08039100 - .4byte _08039118 - .4byte _0803912C - .4byte _0803914C - .4byte _08039166 - .4byte _08039184 -_08038F80: - movs r0, 0 - bl ShowBg - movs r0, 0x1 - bl ShowBg - movs r0, 0x2 - bl ShowBg - ldr r1, =gBattleCommunication - movs r0, 0xFF - strb r0, [r1, 0x1] - b _08039174 - .pool -_08038FA0: - ldrb r0, [r4, 0x1] - subs r0, 0x1 - strb r0, [r4, 0x1] - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - beq _08038FB0 - b _080391C6 -_08038FB0: - movs r0, 0x1 - negs r0, r0 - str r1, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - b _0803910C -_08038FC2: - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08038FD0 - b _080391C6 -_08038FD0: - bl sub_8185FAC - ldr r2, =gMain - ldr r1, =0x00000439 - adds r2, r1 - movs r1, 0x1 - ands r1, r0 - lsls r1, 2 - ldrb r3, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2] - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x40 - ands r0, r1 - movs r3, 0x2 - cmp r0, 0 - beq _08038FFC - movs r3, 0x4 -_08038FFC: - movs r4, 0 - ldr r6, =gSaveBlock2Ptr - cmp r4, r3 - bge _08039022 - ldr r1, =gLinkPlayers - ldrb r0, [r1] - cmp r0, 0x3 - bne _08039022 - movs r5, 0xFF - adds r2, r1, 0 -_08039010: - adds r2, 0x1C - adds r4, 0x1 - cmp r4, r3 - bge _08039022 - ldrh r1, [r2] - adds r0, r5, 0 - ands r0, r1 - cmp r0, 0x3 - beq _08039010 -_08039022: - ldr r0, [r6] - ldr r1, =0x00000ca9 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - bne _080390AC - cmp r4, r3 - bne _080390AC - ldr r0, =0x000008d2 - bl FlagGet - lsls r0, 24 - cmp r0, 0 - beq _08039074 - bl FreeAllWindowBuffers - ldr r0, =sub_80392A8 - bl SetMainCallback2 - b _080391C6 - .pool -_08039074: - ldr r2, =gMain - ldr r1, =0x00000439 - adds r0, r2, r1 - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - bne _08039090 - ldr r0, [r2, 0x8] - b _080390B0 - .pool -_08039090: - ldr r0, =gUnknown_03003124 - ldrb r0, [r0] - cmp r0, 0 - bne _08039172 - ldr r0, =sub_80B3AF8 - movs r1, 0x5 - bl CreateTask - b _08039172 - .pool -_080390AC: - ldr r0, =gMain - ldr r0, [r0, 0x8] -_080390B0: - bl SetMainCallback2 - bl sub_8057028 - bl dp11_free - bl sub_805F094 - b _080391C6 - .pool -_080390C8: - movs r0, 0 - str r0, [sp, 0x4] - movs r1, 0xC0 - lsls r1, 19 - ldr r2, =0x05006000 - add r0, sp, 0x4 - bl CpuSet - movs r4, 0 -_080390DA: - lsls r0, r4, 24 - lsrs r0, 24 - bl sub_80363C4 - adds r4, 0x1 - cmp r4, 0x1 - ble _080390DA - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - b _08039172 - .pool -_08039100: - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080391C6 -_0803910C: - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - b _080391C6 - .pool -_08039118: - ldr r0, =sub_80B3AF8 - bl FuncIsActiveTask - lsls r0, 24 - cmp r0, 0 - bne _080391C6 - b _08039172 - .pool -_0803912C: - bl sub_800A520 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080391C6 - bl sub_800ADF8 - ldr r0, =gUnknown_0824978D - movs r1, 0 - bl battle_show_message_maybe - b _08039172 - .pool -_0803914C: - movs r0, 0 - bl IsTextPrinterActive - lsls r0, 16 - cmp r0, 0 - bne _080391C6 - bl sub_800A520 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080391C6 - b _08039172 -_08039166: - ldr r0, =gLinkVSyncDisabled - ldrb r0, [r0] - cmp r0, 0 - bne _08039172 - bl sub_800AC34 -_08039172: - ldr r1, =gBattleCommunication -_08039174: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _080391C6 - .pool -_08039184: - ldr r2, =gMain - ldr r1, =0x00000439 - adds r0, r2, r1 - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - adds r3, r2, 0 - cmp r0, 0 - beq _080391A6 - ldr r0, =gLinkVSyncDisabled - ldrb r0, [r0] - cmp r0, 0 - bne _080391A6 - ldr r0, =gUnknown_03003124 - ldrb r0, [r0] - cmp r0, 0x1 - beq _080391C6 -_080391A6: - ldr r0, =0x00000439 - adds r2, r3, r0 - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - ldr r0, [r3, 0x8] - bl SetMainCallback2 - bl sub_8057028 - bl dp11_free - bl sub_805F094 -_080391C6: - add sp, 0x8 - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8038F34 - - thumb_func_start sub_80391E0 -sub_80391E0: @ 80391E0 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r1, 24 - lsrs r1, 24 - movs r0, 0 - cmp r1, 0x6 - bhi _080392A0 - lsls r0, r1, 2 - ldr r1, =_08039200 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_08039200: - .4byte _0803921C - .4byte _08039230 - .4byte _08039244 - .4byte _08039258 - .4byte _0803926C - .4byte _08039280 - .4byte _08039294 -_0803921C: - ldr r0, =gUnknown_0831AA08 - lsls r1, r2, 2 - adds r1, r0 - ldrb r0, [r1] - lsls r0, 30 - lsrs r0, 30 - b _080392A0 - .pool -_08039230: - ldr r0, =gUnknown_0831AA08 - lsls r1, r2, 2 - adds r1, r0 - ldrb r0, [r1] - lsls r0, 28 - lsrs r0, 30 - b _080392A0 - .pool -_08039244: - ldr r0, =gUnknown_0831AA08 - lsls r1, r2, 2 - adds r1, r0 - ldrh r0, [r1] - lsls r0, 23 - lsrs r0, 27 - b _080392A0 - .pool -_08039258: - ldr r0, =gUnknown_0831AA08 - lsls r1, r2, 2 - adds r1, r0 - ldrb r0, [r1, 0x1] - lsls r0, 29 - lsrs r0, 30 - b _080392A0 - .pool -_0803926C: - ldr r0, =gUnknown_0831AA08 - lsls r1, r2, 2 - adds r1, r0 - ldrb r0, [r1, 0x1] - lsls r0, 28 - lsrs r0, 31 - b _080392A0 - .pool -_08039280: - ldr r0, =gUnknown_0831AA08 - lsls r1, r2, 2 - adds r1, r0 - ldrb r0, [r1, 0x1] - lsls r0, 26 - lsrs r0, 30 - b _080392A0 - .pool -_08039294: - ldr r0, =gUnknown_0831AA08 - lsls r1, r2, 2 - adds r1, r0 - ldr r0, [r1] - lsls r0, 8 - lsrs r0, 22 -_080392A0: - pop {r1} - bx r1 - .pool - thumb_func_end sub_80391E0 - - thumb_func_start sub_80392A8 -sub_80392A8: @ 80392A8 - push {r4,lr} - sub sp, 0x8 - movs r0, 0 - bl SetHBlankCallback - movs r0, 0 - bl SetVBlankCallback - movs r4, 0 - str r4, [sp, 0x4] - movs r1, 0xC0 - lsls r1, 19 - ldr r2, =0x05006000 - add r0, sp, 0x4 - bl CpuSet - bl ResetPaletteFade - ldr r0, =gUnknown_02022E14 - strh r4, [r0] - ldr r0, =gUnknown_02022E16 - strh r4, [r0] - ldr r0, =gUnknown_02022E18 - strh r4, [r0] - ldr r0, =gUnknown_02022E1A - strh r4, [r0] - ldr r0, =gUnknown_02022E1C - strh r4, [r0] - ldr r0, =gUnknown_02022E1E - strh r4, [r0] - ldr r0, =gUnknown_02022E20 - strh r4, [r0] - ldr r0, =gUnknown_02022E22 - strh r4, [r0] - bl c2_berry_program_update_menu - movs r1, 0x82 - lsls r1, 5 - movs r0, 0 - bl SetGpuReg - bl sub_803570C -_080392FE: - lsls r0, r4, 24 - lsrs r0, 24 - bl sub_80363C4 - adds r4, 0x1 - cmp r4, 0x1 - ble _080392FE - bl ResetSpriteData - bl ResetTasks - bl FreeAllSpritePalettes - ldr r1, =gReservedSpritePaletteCount - movs r0, 0x4 - strb r0, [r1] - ldr r0, =vblank_cb_08078BB4 - bl SetVBlankCallback - ldr r0, =sub_803937C - bl SetMainCallback2 - movs r0, 0x1 - negs r0, r0 - movs r4, 0 - str r4, [sp] - movs r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r0, =gBattleCommunication - strb r4, [r0] - add sp, 0x8 - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80392A8 - - thumb_func_start sub_803937C -sub_803937C: @ 803937C - push {lr} - bl sub_803939C - bl AnimateSprites - bl BuildOamBuffer - bl RunTextPrinters - bl UpdatePaletteFade - bl RunTasks - pop {r0} - bx r0 - thumb_func_end sub_803937C - - thumb_func_start sub_803939C -sub_803939C: @ 803939C - push {r4,r5,lr} - sub sp, 0x4 - ldr r0, =gBattleCommunication - ldrb r1, [r0] - adds r4, r0, 0 - cmp r1, 0xC - bls _080393AC - b _0803975E -_080393AC: - lsls r0, r1, 2 - ldr r1, =_080393C0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_080393C0: - .4byte _080393F4 - .4byte _08039414 - .4byte _08039450 - .4byte _08039470 - .4byte _0803949C - .4byte _080394D8 - .4byte _0803957C - .4byte _08039704 - .4byte _080395CC - .4byte _08039610 - .4byte _08039678 - .4byte _080396A8 - .4byte _08039704 -_080393F4: - movs r0, 0 - bl ShowBg - movs r0, 0x1 - bl ShowBg - movs r0, 0x2 - bl ShowBg - ldr r1, =gBattleCommunication - ldrb r0, [r1] - adds r0, 0x1 - b _0803975C - .pool -_08039414: - ldr r0, =gMain - ldr r1, =0x00000439 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _08039434 - ldr r0, =gUnknown_03003124 - ldrb r0, [r0] - cmp r0, 0 - bne _08039434 - ldr r0, =sub_80B3AF8 - movs r1, 0x5 - bl CreateTask -_08039434: - ldr r1, =gBattleCommunication - ldrb r0, [r1] - adds r0, 0x1 - b _0803975C - .pool -_08039450: - ldr r0, =sub_80B3AF8 - bl FuncIsActiveTask - lsls r0, 24 - cmp r0, 0 - beq _0803945E - b _0803975E -_0803945E: - ldr r1, =gBattleCommunication - ldrb r0, [r1] - adds r0, 0x1 - b _0803975C - .pool -_08039470: - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0803947E - b _0803975E -_0803947E: - ldr r0, =gUnknown_085CD28F - movs r1, 0 - bl battle_show_message_maybe - ldr r1, =gBattleCommunication - ldrb r0, [r1] - adds r0, 0x1 - b _0803975C - .pool -_0803949C: - movs r0, 0 - bl IsTextPrinterActive - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0 - beq _080394AC - b _0803975E -_080394AC: - str r0, [sp] - movs r0, 0x18 - movs r1, 0x8 - movs r2, 0x1D - movs r3, 0xD - bl sub_8056A3C - ldr r0, =gUnknown_085CCABB - movs r1, 0xC - bl battle_show_message_maybe - ldr r4, =gBattleCommunication - movs r0, 0x1 - strb r0, [r4, 0x1] - bl sub_8056B74 - b _080396EA - .pool -_080394D8: - ldr r0, =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08039500 - ldrb r0, [r4, 0x1] - cmp r0, 0 - bne _080394EC - b _0803975E -_080394EC: - movs r0, 0x5 - bl PlaySE - ldrb r0, [r4, 0x1] - bl sub_8056BAC - movs r0, 0 - b _0803951E - .pool -_08039500: - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08039526 - ldrb r0, [r4, 0x1] - cmp r0, 0 - beq _08039510 - b _0803975E -_08039510: - movs r0, 0x5 - bl PlaySE - ldrb r0, [r4, 0x1] - bl sub_8056BAC - movs r0, 0x1 -_0803951E: - strb r0, [r4, 0x1] - bl sub_8056B74 - b _0803975E -_08039526: - movs r5, 0x1 - adds r0, r5, 0 - ands r0, r1 - cmp r0, 0 - beq _08039560 - movs r0, 0x5 - bl PlaySE - ldr r4, =gBattleCommunication - ldrb r0, [r4, 0x1] - cmp r0, 0 - beq _08039540 - b _080396EA -_08039540: - str r5, [sp] - movs r0, 0x18 - movs r1, 0x8 - movs r2, 0x1D - movs r3, 0xD - bl sub_8056A3C - bl sub_8185338 - strb r0, [r4, 0x1] - movs r0, 0xA - strb r0, [r4] - b _0803975E - .pool -_08039560: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _0803956A - b _0803975E -_0803956A: - movs r0, 0x5 - bl PlaySE - ldr r1, =gBattleCommunication - ldrb r0, [r1] - adds r0, 0x1 - b _0803975C - .pool -_0803957C: - bl sub_800A520 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0803958A - b _0803975E -_0803958A: - str r0, [sp] - movs r0, 0x18 - movs r1, 0x8 - movs r2, 0x1D - movs r3, 0xD - bl sub_8056A3C - ldr r0, =gMain - ldr r1, =0x00000439 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _080395B4 - bl sub_800ADF8 - ldr r0, =gUnknown_0824978D - movs r1, 0 - bl battle_show_message_maybe -_080395B4: - ldr r1, =gBattleCommunication - ldrb r0, [r1] - adds r0, 0x1 - b _0803975C - .pool -_080395CC: - ldrb r0, [r4, 0x1] - subs r0, 0x1 - strb r0, [r4, 0x1] - lsls r0, 24 - cmp r0, 0 - beq _080395DA - b _0803975E -_080395DA: - ldr r0, =gMain - ldr r1, =0x00000439 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _080395F6 - ldr r0, =gLinkVSyncDisabled - ldrb r0, [r0] - cmp r0, 0 - bne _080395F6 - bl sub_800AC34 -_080395F6: - ldr r1, =gBattleCommunication - ldrb r0, [r1] - adds r0, 0x1 - b _0803975C - .pool -_08039610: - ldr r2, =gMain - ldr r1, =0x00000439 - adds r0, r2, r1 - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - adds r3, r2, 0 - cmp r0, 0 - beq _08039634 - ldr r0, =gLinkVSyncDisabled - ldrb r0, [r0] - cmp r0, 0 - bne _08039634 - ldr r0, =gUnknown_03003124 - ldrb r0, [r0] - cmp r0, 0x1 - bne _08039634 - b _0803975E -_08039634: - ldr r0, =0x00000439 - adds r2, r3, r0 - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08039650 - b _0803975E -_08039650: - ldr r0, [r3, 0x8] - bl SetMainCallback2 - bl sub_8057028 - bl dp11_free - bl sub_805F094 - b _0803975E - .pool -_08039678: - ldrb r0, [r4, 0x1] - cmp r0, 0x1 - bne _080396A0 - movs r0, 0x37 - bl PlaySE - ldr r0, =gUnknown_085CD2CB -_08039686: - bl get_battle_strings_ - ldr r0, =gUnknown_02022E2C - movs r1, 0 - bl battle_show_message_maybe - movs r0, 0x80 - strb r0, [r4, 0x1] - b _080396EA - .pool -_080396A0: - ldr r0, =gUnknown_08242481 - b _08039686 - .pool -_080396A8: - bl sub_800A520 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0803975E - movs r0, 0 - bl IsTextPrinterActive - lsls r0, 16 - cmp r0, 0 - bne _0803975E - ldr r4, =gBattleCommunication - ldrb r0, [r4, 0x1] - subs r0, 0x1 - strb r0, [r4, 0x1] - lsls r0, 24 - cmp r0, 0 - bne _0803975E - ldr r0, =gMain - ldr r1, =0x00000439 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _080396EA - bl sub_800ADF8 - ldr r0, =gUnknown_0824978D - movs r1, 0 - bl battle_show_message_maybe -_080396EA: - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - b _0803975E - .pool -_08039704: - movs r0, 0 - bl IsTextPrinterActive - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0 - bne _0803975E - ldr r0, =gMain - ldr r1, =0x00000439 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - beq _08039744 - bl sub_800A520 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0803975E - movs r0, 0x1 - negs r0, r0 - str r4, [sp] - b _0803974A - .pool -_08039744: - movs r0, 0x1 - negs r0, r0 - str r1, [sp] -_0803974A: - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, =gBattleCommunication - movs r0, 0x20 - strb r0, [r1, 0x1] - movs r0, 0x8 -_0803975C: - strb r0, [r1] -_0803975E: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_803939C - - thumb_func_start shedinja_something -shedinja_something: @ 803976C - push {r4,r5,lr} - sub sp, 0x10 - adds r4, r0, 0 - add r5, sp, 0xC - movs r0, 0x1 - strb r0, [r5] - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - ldr r1, =0x0000012f - cmp r0, r1 - bne _080397B4 - adds r0, r4, 0 - movs r1, 0x3 - bl GetMonData - ldrb r1, [r5] - cmp r0, r1 - beq _080397B4 - adds r0, r4, 0 - movs r1, 0x2 - mov r2, sp - bl GetMonData - ldr r1, =gUnknown_0831ACA0 - mov r0, sp - bl StringCompareWithoutExtCtrlCodes - cmp r0, 0 - bne _080397B4 - adds r0, r4, 0 - movs r1, 0x3 - adds r2, r5, 0 - bl SetMonData -_080397B4: - add sp, 0x10 - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end shedinja_something - - thumb_func_start sub_80397C4 -sub_80397C4: @ 80397C4 - ldr r2, =gUnknown_0831ABA0 - lsls r0, 2 - adds r0, r2 - ldr r0, [r0] - lsls r1, 3 - adds r1, r0 - ldrb r0, [r1, 0x3] - lsls r0, 3 - bx lr - .pool - thumb_func_end sub_80397C4 - - thumb_func_start oac_poke_opponent -oac_poke_opponent: @ 80397DC - push {lr} - sub sp, 0x4 - ldr r1, =sub_803980C - str r1, [r0, 0x1C] - movs r1, 0 - bl StartSpriteAnimIfDifferent - movs r0, 0x80 - lsls r0, 10 - ldr r1, =0x00002108 - str r1, [sp] - movs r1, 0 - movs r2, 0xA - movs r3, 0xA - bl BeginNormalPaletteFade - add sp, 0x4 - pop {r0} - bx r0 - .pool - thumb_func_end oac_poke_opponent - - thumb_func_start sub_803980C -sub_803980C: @ 803980C - push {lr} - adds r2, r0, 0 - ldr r0, =gUnknown_020243FC - ldrh r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _0803982C - ldrh r0, [r2, 0x24] - adds r0, 0x2 - strh r0, [r2, 0x24] - lsls r0, 16 - cmp r0, 0 - bne _0803982C - ldr r0, =sub_8039838 - str r0, [r2, 0x1C] -_0803982C: - pop {r0} - bx r0 - .pool - thumb_func_end sub_803980C - - thumb_func_start sub_8039838 -sub_8039838: @ 8039838 - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _08039880 - ldrh r0, [r4, 0x2E] - lsls r0, 24 - lsrs r0, 24 - bl sub_8076918 - ldr r1, =gUnknown_03005D70 - movs r2, 0x2E - ldrsh r0, [r4, r2] - adds r0, r1 - ldrb r0, [r0] - bl sub_80729D0 - ldr r0, =sub_8039894 - str r0, [r4, 0x1C] - adds r0, r4, 0 - movs r1, 0 - bl StartSpriteAnimIfDifferent - movs r0, 0x80 - lsls r0, 10 - ldr r1, =0x00002108 - str r1, [sp] - movs r1, 0 - movs r2, 0xA - movs r3, 0 - bl BeginNormalPaletteFade -_08039880: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8039838 - - thumb_func_start sub_8039894 -sub_8039894: @ 8039894 - push {lr} - adds r2, r0, 0 - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080398B0 - ldrh r1, [r2, 0x32] - adds r0, r2, 0 - movs r2, 0 - movs r3, 0x1 - bl sub_806ECEC -_080398B0: - pop {r0} - bx r0 - .pool - thumb_func_end sub_8039894 - - thumb_func_start nullsub_18 -nullsub_18: @ 80398B8 - bx lr - thumb_func_end nullsub_18 - - thumb_func_start sub_80398BC -sub_80398BC: @ 80398BC - movs r1, 0x6 - strh r1, [r0, 0x34] - movs r1, 0x1 - strh r1, [r0, 0x36] - ldr r1, =sub_80398D0 - str r1, [r0, 0x1C] - bx lr - .pool - thumb_func_end sub_80398BC - - thumb_func_start sub_80398D0 -sub_80398D0: @ 80398D0 - push {r4,lr} - adds r3, r0, 0 - ldrh r0, [r3, 0x36] - subs r0, 0x1 - strh r0, [r3, 0x36] - lsls r0, 16 - cmp r0, 0 - bne _08039924 - movs r0, 0x8 - strh r0, [r3, 0x36] - 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 r4, 0x5 - negs r4, r4 - adds r0, r4, 0 - ands r0, r2 - orrs r0, r1 - mov r1, r12 - strb r0, [r1] - ldrh r0, [r3, 0x34] - subs r0, 0x1 - strh r0, [r3, 0x34] - lsls r0, 16 - asrs r2, r0, 16 - cmp r2, 0 - bne _08039924 - ldrb r1, [r1] - adds r0, r4, 0 - ands r0, r1 - mov r1, r12 - strb r0, [r1] - ldr r0, =nullsub_18 - str r0, [r3, 0x1C] - ldr r0, =gUnknown_02022F88 - str r2, [r0] -_08039924: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80398D0 - - thumb_func_start sub_8039934 -sub_8039934: @ 8039934 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - mov r9, r0 - ldrh r0, [r0, 0x2E] - lsls r0, 24 - lsrs r6, r0, 24 - ldr r0, =gUnknown_020244D0 - ldr r0, [r0] - ldr r1, [r0] - lsls r0, r6, 2 - adds r1, r0, r1 - ldrh r0, [r1, 0x2] - cmp r0, 0 - beq _0803995C - adds r4, r0, 0 - b _08039960 - .pool -_0803995C: - mov r0, r9 - ldrh r4, [r0, 0x32] -_08039960: - ldr r1, =gBattlePartyID - lsls r0, r6, 1 - adds r5, r0, r1 - ldrh r0, [r5] - movs r1, 0x64 - mov r8, r1 - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - ldr r7, =gEnemyParty - adds r0, r7 - movs r1, 0 - bl GetMonData - cmp r4, 0xC9 - bne _080399E4 - ldrh r0, [r5] - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - adds r0, r7 - movs r1, 0 - bl GetMonData - adds r2, r0, 0 - movs r0, 0xC0 - lsls r0, 18 - ands r0, r2 - lsrs r0, 18 - movs r1, 0xC0 - lsls r1, 10 - ands r1, r2 - lsrs r1, 12 - orrs r0, r1 - movs r1, 0xC0 - lsls r1, 2 - ands r1, r2 - lsrs r1, 6 - orrs r0, r1 - movs r1, 0x3 - ands r1, r2 - orrs r0, r1 - movs r1, 0x1C - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0 - bne _080399D0 - movs r0, 0xC9 - b _080399DA - .pool -_080399D0: - movs r1, 0xCE - lsls r1, 1 - adds r0, r1 - lsls r0, 16 - lsrs r0, 16 -_080399DA: - ldr r1, =gUnknown_08300D38 - lsls r0, 2 - b _08039A1C - .pool -_080399E4: - ldr r0, =0x00000181 - cmp r4, r0 - bne _08039A08 - ldr r0, =gUnknown_08525F78 - ldr r1, =gUnknown_020244E4 - adds r1, r6, r1 - ldrb r1, [r1] - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1, 0x1] - b _08039A20 - .pool -_08039A08: - movs r0, 0xCE - lsls r0, 1 - cmp r4, r0 - bls _08039A18 - ldr r0, =gUnknown_08300D38 - b _08039A1E - .pool -_08039A18: - ldr r1, =gUnknown_08300D38 - lsls r0, r4, 2 -_08039A1C: - adds r0, r1 -_08039A1E: - ldrb r0, [r0, 0x1] -_08039A20: - lsrs r1, r0, 3 - movs r0, 0x8 - subs r0, r1 - mov r1, r9 - strh r0, [r1, 0x34] - movs r0, 0x1 - strh r0, [r1, 0x36] - ldr r0, =sub_8039A48 - str r0, [r1, 0x1C] - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8039934 - - thumb_func_start sub_8039A48 -sub_8039A48: @ 8039A48 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x36] - subs r0, 0x1 - strh r0, [r4, 0x36] - lsls r0, 16 - cmp r0, 0 - bne _08039AC8 - movs r0, 0x2 - strh r0, [r4, 0x36] - ldrh r0, [r4, 0x26] - adds r0, 0x8 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x34] - subs r0, 0x1 - strh r0, [r4, 0x34] - lsls r0, 16 - cmp r0, 0 - bge _08039A7C - adds r0, r4, 0 - bl FreeSpriteOamMatrix - adds r0, r4, 0 - bl DestroySprite - b _08039AC8 -_08039A7C: - ldrh r0, [r4, 0x2E] - lsls r0, 24 - lsrs r0, 24 - bl GetBankIdentity - ldr r1, =gUnknown_020244D4 - ldr r1, [r1] - lsls r0, 24 - lsrs r0, 22 - adds r1, 0x4 - adds r1, r0 - ldr r2, =gUnknown_020244E4 - movs r3, 0x2E - ldrsh r0, [r4, r3] - adds r0, r2 - ldrb r0, [r0] - lsls r0, 11 - ldr r1, [r1] - adds r1, r0 - movs r2, 0x34 - ldrsh r0, [r4, r2] - lsls r0, 8 - adds r1, r0 - movs r2, 0 - movs r0, 0xFF -_08039AAE: - strb r2, [r1] - adds r1, 0x1 - subs r0, 0x1 - cmp r0, 0 - bge _08039AAE - ldr r0, =gUnknown_020244E4 - movs r3, 0x2E - ldrsh r1, [r4, r3] - adds r1, r0 - ldrb r1, [r1] - adds r0, r4, 0 - bl StartSpriteAnim -_08039AC8: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8039A48 - - thumb_func_start sub_8039AD8 -sub_8039AD8: @ 8039AD8 - movs r1, 0x8 - strh r1, [r0, 0x34] - adds r1, r0, 0 - adds r1, 0x3E - ldrb r1, [r1] - lsls r1, 29 - lsrs r1, 31 - strh r1, [r0, 0x36] - ldr r1, =sub_8039AF4 - str r1, [r0, 0x1C] - bx lr - .pool - thumb_func_end sub_8039AD8 - - thumb_func_start sub_8039AF4 -sub_8039AF4: @ 8039AF4 - push {lr} - adds r3, r0, 0 - ldrh r0, [r3, 0x34] - subs r0, 0x1 - strh r0, [r3, 0x34] - lsls r0, 16 - cmp r0, 0 - bne _08039B26 - 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] - movs r0, 0x8 - strh r0, [r3, 0x34] -_08039B26: - pop {r0} - bx r0 - thumb_func_end sub_8039AF4 - - thumb_func_start sub_8039B2C -sub_8039B2C: @ 8039B2C - movs r1, 0x3E - adds r1, r0 - mov r12, r1 - movs r1, 0x1 - ldrh r2, [r0, 0x36] - ands r2, r1 - lsls r2, 2 - mov r1, r12 - ldrb r3, [r1] - movs r1, 0x5 - negs r1, r1 - ands r1, r3 - orrs r1, r2 - mov r2, r12 - strb r1, [r2] - movs r1, 0 - strh r1, [r0, 0x36] - ldr r1, =nullsub_18 - str r1, [r0, 0x1C] - bx lr - .pool - thumb_func_end sub_8039B2C - - thumb_func_start sub_8039B58 -sub_8039B58: @ 8039B58 - push {r4,lr} - adds r4, r0, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _08039BA0 - ldr r0, =gHitMarker - ldr r0, [r0] - movs r1, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08039B80 - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - ldr r1, =0x02000002 - ands r0, r1 - cmp r0, 0 - beq _08039B94 -_08039B80: - ldrh r0, [r4, 0x32] - bl sub_806F0D4 - lsls r0, 24 - cmp r0, 0 - beq _08039B94 - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAnim -_08039B94: - ldrh r1, [r4, 0x32] - adds r0, r4, 0 - movs r2, 0x1 - movs r3, 0x1 - bl sub_806ECEC -_08039BA0: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8039B58 - - thumb_func_start sub_8039BB4 -sub_8039BB4: @ 8039BB4 - ldr r1, =oac_poke_ally_ - str r1, [r0, 0x1C] - bx lr - .pool - thumb_func_end sub_8039BB4 - - thumb_func_start oac_poke_ally_ -oac_poke_ally_: @ 8039BC0 - push {lr} - adds r2, r0, 0 - ldr r0, =gUnknown_020243FC - ldrh r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _08039BE4 - ldrh r0, [r2, 0x24] - subs r0, 0x2 - strh r0, [r2, 0x24] - lsls r0, 16 - asrs r1, r0, 16 - cmp r1, 0 - bne _08039BE4 - ldr r0, =nullsub_19 - str r0, [r2, 0x1C] - strh r1, [r2, 0x30] -_08039BE4: - pop {r0} - bx r0 - .pool - thumb_func_end oac_poke_ally_ - - thumb_func_start sub_8039BF0 -sub_8039BF0: @ 8039BF0 - ldr r1, =nullsub_19 - str r1, [r0, 0x1C] - bx lr - .pool - thumb_func_end sub_8039BF0 - - thumb_func_start nullsub_19 -nullsub_19: @ 8039BFC - bx lr - thumb_func_end nullsub_19 - - thumb_func_start sub_8039C00 -sub_8039C00: @ 8039C00 - push {lr} - adds r2, r0, 0 - ldr r0, =gUnknown_020243FC - ldrh r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _08039C20 - ldrh r0, [r2, 0x30] - ldrh r1, [r2, 0x24] - adds r0, r1 - strh r0, [r2, 0x24] - ldrh r0, [r2, 0x32] - ldrh r1, [r2, 0x26] - adds r0, r1 - strh r0, [r2, 0x26] -_08039C20: - pop {r0} - bx r0 - .pool - thumb_func_end sub_8039C00 - - thumb_func_start dp11b_obj_instanciate -dp11b_obj_instanciate: @ 8039C28 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r1, 24 - lsrs r1, 24 - mov r8, r1 - lsls r2, 24 - lsrs r2, 24 - mov r9, r2 - lsls r3, 24 - lsrs r3, 24 - mov r10, r3 - cmp r1, 0 - beq _08039C64 - ldr r0, =gUnknown_020244D0 - ldr r0, [r0] - ldr r1, [r0, 0x4] - lsls r2, r4, 1 - adds r0, r2, r4 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x2 - b _08039C76 - .pool -_08039C64: - ldr r0, =gUnknown_020244D0 - ldr r0, [r0] - ldr r1, [r0, 0x4] - lsls r2, r4, 1 - adds r0, r2, r4 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x4 -_08039C76: - ands r0, r1 - adds r6, r2, 0 - cmp r0, 0 - bne _08039D2C - ldr r0, =objc_dp11b_pingpong - bl CreateInvisibleSpriteWithCallback - lsls r0, 24 - lsrs r5, r0, 24 - mov r0, r8 - cmp r0, 0x1 - bne _08039CD0 - ldr r0, =gUnknown_03005D70 - adds r0, r4, r0 - ldrb r7, [r0] - ldr r2, =gUnknown_020244D0 - ldr r0, [r2] - ldr r0, [r0, 0x4] - adds r1, r6, r4 - lsls r1, 2 - adds r0, r1, r0 - strb r5, [r0, 0x2] - ldr r0, [r2] - ldr r0, [r0, 0x4] - adds r1, r0 - ldrb r0, [r1] - movs r2, 0x2 - orrs r0, r2 - strb r0, [r1] - ldr r2, =gSprites - lsls r3, r5, 4 - adds r0, r3, r5 - lsls r0, 2 - adds r0, r2 - movs r1, 0x80 - b _08039CFE - .pool -_08039CD0: - ldr r0, =gBankSpriteIds - adds r0, r4, r0 - ldrb r7, [r0] - ldr r2, =gUnknown_020244D0 - ldr r0, [r2] - ldr r0, [r0, 0x4] - adds r1, r6, r4 - lsls r1, 2 - adds r0, r1, r0 - strb r5, [r0, 0x3] - ldr r0, [r2] - ldr r0, [r0, 0x4] - adds r1, r0 - ldrb r0, [r1] - movs r2, 0x4 - orrs r0, r2 - strb r0, [r1] - ldr r2, =gSprites - lsls r3, r5, 4 - adds r0, r3, r5 - lsls r0, 2 - adds r0, r2 - movs r1, 0xC0 -_08039CFE: - strh r1, [r0, 0x2E] - adds r4, r2, 0 - adds r1, r3, r5 - lsls r1, 2 - adds r1, r4 - mov r2, r9 - lsls r0, r2, 24 - asrs r0, 24 - movs r2, 0 - strh r0, [r1, 0x30] - mov r3, r10 - lsls r0, r3, 24 - asrs r0, 24 - strh r0, [r1, 0x32] - strh r7, [r1, 0x34] - mov r0, r8 - strh r0, [r1, 0x36] - lsls r0, r7, 4 - adds r0, r7 - lsls r0, 2 - adds r0, r4 - strh r2, [r0, 0x24] - strh r2, [r0, 0x26] -_08039D2C: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end dp11b_obj_instanciate - - thumb_func_start dp11b_obj_free -dp11b_obj_free: @ 8039D48 - push {r4-r6,lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r1, 24 - lsrs r1, 24 - cmp r1, 0x1 - bne _08039D9C - ldr r6, =gUnknown_020244D0 - ldr r0, [r6] - ldr r1, [r0, 0x4] - lsls r0, r2, 1 - adds r0, r2 - lsls r5, r0, 2 - adds r3, r5, r1 - ldrb r1, [r3] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08039DEA - ldr r2, =gSprites - ldrb r1, [r3, 0x2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x34] - lsls r1, 24 - lsrs r4, r1, 24 - bl DestroySprite - ldr r0, [r6] - ldr r1, [r0, 0x4] - adds r1, r5, r1 - ldrb r2, [r1] - movs r0, 0x3 - negs r0, r0 - b _08039DD6 - .pool -_08039D9C: - ldr r6, =gUnknown_020244D0 - ldr r0, [r6] - ldr r1, [r0, 0x4] - lsls r0, r2, 1 - adds r0, r2 - lsls r5, r0, 2 - adds r3, r5, r1 - ldrb r1, [r3] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _08039DEA - ldr r2, =gSprites - ldrb r1, [r3, 0x3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x34] - lsls r1, 24 - lsrs r4, r1, 24 - bl DestroySprite - ldr r0, [r6] - ldr r1, [r0, 0x4] - adds r1, r5, r1 - ldrb r2, [r1] - movs r0, 0x5 - negs r0, r0 -_08039DD6: - ands r0, r2 - strb r0, [r1] - ldr r0, =gSprites - lsls r1, r4, 4 - adds r1, r4 - lsls r1, 2 - adds r1, r0 - movs r0, 0 - strh r0, [r1, 0x24] - strh r0, [r1, 0x26] -_08039DEA: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end dp11b_obj_free - - thumb_func_start objc_dp11b_pingpong -objc_dp11b_pingpong: @ 8039DF8 - push {r4,r5,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x34] - lsls r0, 24 - lsrs r5, r0, 24 - movs r1, 0x36 - ldrsh r0, [r4, r1] - cmp r0, 0x1 - bne _08039E10 - movs r2, 0x2E - ldrsh r0, [r4, r2] - b _08039E14 -_08039E10: - movs r1, 0x2E - ldrsh r0, [r4, r1] -_08039E14: - movs r2, 0x32 - ldrsh r1, [r4, r2] - bl Sin - ldr r2, =gSprites - lsls r1, r5, 4 - adds r1, r5 - lsls r1, 2 - adds r1, r2 - ldrh r2, [r4, 0x32] - adds r0, r2 - strh r0, [r1, 0x26] - ldrh r0, [r4, 0x30] - ldrh r1, [r4, 0x2E] - adds r0, r1 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x2E] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end objc_dp11b_pingpong - - thumb_func_start sub_8039E44 -sub_8039E44: @ 8039E44 - push {lr} - adds r2, r0, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _08039E5C - ldrh r1, [r2, 0x32] - adds r0, r2, 0 - bl sub_806EEB4 -_08039E5C: - pop {r0} - bx r0 - thumb_func_end sub_8039E44 - - thumb_func_start sub_8039E60 -sub_8039E60: @ 8039E60 - push {r4,lr} - adds r4, r0, 0 - bl sub_8039E9C - adds r0, r4, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _08039E7A - ldr r0, =nullsub_19 - str r0, [r4, 0x1C] -_08039E7A: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8039E60 - - thumb_func_start sub_8039E84 -sub_8039E84: @ 8039E84 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x1 - bl StartSpriteAnim - ldr r0, =sub_8039E60 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8039E84 - - thumb_func_start sub_8039E9C -sub_8039E9C: @ 8039E9C - push {lr} - adds r2, r0, 0 - adds r0, 0x2C - ldrb r1, [r0] - movs r0, 0x3F - ands r0, r1 - cmp r0, 0 - bne _08039EBE - ldr r1, =gUnknown_0831ACE0 - adds r0, r2, 0 - adds r0, 0x2B - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - adds r0, r2, 0 - adds r0, 0x28 - strb r1, [r0] -_08039EBE: - pop {r0} - bx r0 - .pool - thumb_func_end sub_8039E9C - - thumb_func_start nullsub_20 -nullsub_20: @ 8039EC8 - bx lr - thumb_func_end nullsub_20 - - thumb_func_start sub_8039ECC -sub_8039ECC: @ 8039ECC - push {lr} - bl sub_8039F40 - ldr r1, =gBattleCommunication - movs r0, 0 - strb r0, [r1, 0x1] - ldr r1, =gBattleMainFunc - ldr r0, =bc_8012FAC - str r0, [r1] - pop {r0} - bx r0 - .pool - thumb_func_end sub_8039ECC - - thumb_func_start sub_8039EF0 -sub_8039EF0: @ 8039EF0 - push {r4,r5,lr} - ldr r0, =gBattleMainFunc - ldr r0, [r0] - bl _call_via_r0 - ldr r1, =gActiveBank - movs r0, 0 - strb r0, [r1] - ldr r0, =gNoOfAllBanks - ldrb r0, [r0] - cmp r0, 0 - beq _08039F2A - ldr r5, =gBattleBankFunc - adds r4, r1, 0 -_08039F0C: - ldrb r0, [r4] - lsls r0, 2 - adds r0, r5 - ldr r0, [r0] - bl _call_via_r0 - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - ldr r1, =gNoOfAllBanks - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r1] - cmp r0, r1 - bcc _08039F0C -_08039F2A: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8039EF0 - - thumb_func_start sub_8039F40 -sub_8039F40: @ 8039F40 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - movs r0, 0 - bl sub_803D580 - bl sub_803D6A0 - movs r2, 0 - movs r3, 0 - ldr r0, =gUnknown_02024260 - mov r10, r0 - ldr r1, =gUnknown_02024258 - mov r9, r1 - ldr r0, =gUnknown_02024250 - mov r8, r0 - ldr r1, =gLastUsedMovesByBanks - mov r12, r1 - ldr r5, =gDisableStructs - movs r4, 0 - ldr r7, =gUnknown_02024240 - ldr r6, =gUnknown_02024268 -_08039F70: - ldr r0, =gStatuses3 - adds r0, r4, r0 - str r3, [r0] - movs r1, 0 -_08039F78: - adds r0, r5, r1 - strb r3, [r0] - adds r1, 0x1 - cmp r1, 0x1B - bls _08039F78 - movs r0, 0x2 - strb r0, [r5, 0x16] - ldr r1, =gUnknown_02024284 - adds r0, r2, r1 - strb r3, [r0] - mov r0, r12 - strh r3, [r0] - mov r1, r8 - strh r3, [r1] - mov r0, r9 - strh r3, [r0] - mov r1, r10 - strh r3, [r1] - ldr r0, =gUnknown_02024270 - adds r1, r2, r0 - movs r0, 0xFF - strb r0, [r1] - strh r3, [r6] - strh r3, [r7] - ldr r1, =gBattleResources - ldr r0, [r1] - ldr r0, [r0, 0x4] - adds r0, r4 - str r3, [r0] - ldr r1, =gUnknown_02024230 - adds r0, r4, r1 - str r3, [r0] - movs r0, 0x2 - add r10, r0 - add r9, r0 - add r8, r0 - add r12, r0 - adds r5, 0x1C - adds r4, 0x4 - adds r7, 0x2 - adds r6, 0x2 - adds r2, 0x1 - cmp r2, 0x3 - ble _08039F70 - movs r5, 0 - ldr r3, =gSideTimers - ldr r4, =gSideAffecting - movs r2, 0x1 -_08039FD8: - strh r5, [r4] - movs r1, 0 -_08039FDC: - adds r0, r3, r1 - strb r5, [r0] - adds r1, 0x1 - cmp r1, 0xB - bls _08039FDC - adds r3, 0xC - adds r4, 0x2 - subs r2, 0x1 - cmp r2, 0 - bge _08039FD8 - movs r1, 0 - ldr r2, =gBankAttacker - strb r1, [r2] - ldr r0, =gBankTarget - strb r1, [r0] - ldr r2, =gBattleWeather - strh r1, [r2] - ldr r1, =gUnknown_020243D0 - movs r2, 0 - movs r3, 0 -_0803A004: - adds r0, r1, r2 - strb r3, [r0] - adds r2, 0x1 - cmp r2, 0x2B - bls _0803A004 - ldr r2, =gHitMarker - movs r0, 0 - str r0, [r2] - ldr r0, =gBattleTypeFlags - ldr r1, [r0] - movs r0, 0x80 - lsls r0, 17 - ands r0, r1 - cmp r0, 0 - bne _0803A090 - movs r0, 0x2 - ands r1, r0 - cmp r1, 0 - bne _0803A0AE - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - ldrb r1, [r0, 0x15] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _0803A0AE - movs r0, 0x80 - b _0803A0AC - .pool -_0803A090: - ldr r0, =0x02000002 - ands r1, r0 - cmp r1, 0 - bne _0803A0AE - bl sub_8185FB8 - lsls r0, 24 - cmp r0, 0 - beq _0803A0AE - ldr r1, =gHitMarker - ldr r0, [r1] - movs r1, 0x80 - orrs r0, r1 - ldr r2, =gHitMarker -_0803A0AC: - str r0, [r2] -_0803A0AE: - ldr r3, =gBattleScripting - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - ldrb r0, [r0, 0x15] - lsls r0, 30 - lsrs r0, 31 - movs r1, 0 - strb r0, [r3, 0x1D] - ldr r0, =gUnknown_02024212 - strb r1, [r0] - ldr r0, =gBattleOutcome - strb r1, [r0] - ldr r0, =gBattleExecBuffer - str r1, [r0] - ldr r0, =gUnknown_0202432E - movs r2, 0 - strh r1, [r0] - ldr r1, =gBattleResources - ldr r0, [r1] - ldr r0, [r0, 0x8] - adds r0, 0x20 - strb r2, [r0] - ldr r0, [r1] - ldr r0, [r0, 0xC] - adds r0, 0x20 - strb r2, [r0] - ldr r5, =gUnknown_0202432C - ldr r6, =gBattleMoveDamage - ldr r7, =gUnknown_020243FC - ldr r0, =gUnknown_03005D54 - mov r8, r0 - ldr r1, =gAbsentBankFlags - mov r9, r1 - ldr r2, =gEnemyParty - mov r10, r2 - ldr r1, =gBattleCommunication - movs r2, 0 - adds r0, r1, 0x7 -_0803A0FA: - strb r2, [r0] - subs r0, 0x1 - cmp r0, r1 - bge _0803A0FA - movs r4, 0 - strh r4, [r5] - movs r0, 0 - str r0, [r6] - strh r0, [r7] - strb r4, [r3, 0x18] - strb r4, [r3, 0x19] - mov r0, r8 - strb r4, [r0] - mov r1, r9 - strb r4, [r1] - ldr r5, =gBattleStruct - ldr r0, [r5] - adds r0, 0x6C - strb r4, [r0] - ldr r0, [r5] - adds r0, 0x79 - strb r4, [r0] - ldr r0, [r5] - adds r0, 0x7A - strb r4, [r0] - mov r0, r10 - movs r1, 0xB - bl GetMonData - ldr r6, [r5] - adds r6, 0x7C - ldr r2, =gBaseStats - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r1, r2 - ldrb r1, [r1, 0x8] - movs r0, 0x64 - muls r0, r1 - ldr r1, =0x000004fb - bl __divsi3 - strb r0, [r6] - ldr r0, [r5] - adds r0, 0x7B - movs r1, 0x3 - strb r1, [r0] - ldr r0, [r5] - strb r4, [r0, 0x12] - ldr r0, [r5] - adds r0, 0x4A - movs r1, 0x1 - strb r1, [r0] - movs r2, 0 - movs r1, 0 - adds r6, r5, 0 -_0803A16A: - ldr r0, [r5] - adds r0, r2, r0 - adds r0, 0x98 - strb r1, [r0] - ldr r0, [r5] - adds r0, r2, r0 - adds r0, 0xB8 - strb r1, [r0] - ldr r0, [r5] - adds r0, r2, r0 - adds r0, 0xC8 - strb r1, [r0] - ldr r0, [r5] - adds r0, r2, r0 - adds r0, 0xD0 - strb r1, [r0] - ldr r0, [r5] - adds r0, r2, r0 - adds r0, 0xE0 - strb r1, [r0] - ldr r0, [r5] - adds r0, r2, r0 - adds r0, 0xE8 - strb r1, [r0] - ldr r0, [r5] - adds r0, r2, r0 - adds r0, 0xF0 - strb r1, [r0] - ldr r0, [r5] - adds r0, r2, r0 - adds r0, 0xF8 - strb r1, [r0] - adds r2, 0x1 - cmp r2, 0x7 - ble _0803A16A - movs r2, 0 - ldr r4, =gBattleStruct - movs r3, 0xA5 - lsls r3, 2 - movs r1, 0x6 -_0803A1BA: - ldr r0, [r4] - adds r0, r2, r0 - adds r0, r3 - strb r1, [r0] - adds r2, 0x1 - cmp r2, 0x3 - ble _0803A1BA - ldr r0, [r6] - adds r0, 0xDF - movs r1, 0 - strb r1, [r0] - ldr r0, [r6] - adds r0, 0x92 - strb r1, [r0] - bl Random - ldr r1, =gUnknown_02024330 - strh r0, [r1] - ldr r1, =gBattleResults - movs r2, 0 - movs r3, 0 -_0803A1E4: - adds r0, r1, r2 - strb r3, [r0] - adds r2, 0x1 - cmp r2, 0x43 - bls _0803A1E4 - ldr r0, =gEnemyParty - bl IsMonShiny - ldr r3, =gBattleResults - movs r1, 0x1 - ands r1, r0 - lsls r1, 6 - ldrb r2, [r3, 0x5] - movs r0, 0x41 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3, 0x5] - ldr r2, =gBattleStruct - ldr r0, [r2] - movs r1, 0xA8 - lsls r1, 2 - adds r0, r1 - movs r1, 0 - strb r1, [r0] - ldr r0, [r2] - ldr r2, =0x000002a1 - adds r0, r2 - strb r1, [r0] - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8039F40 - - thumb_func_start sub_803A284 -sub_803A284: @ 803A284 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x20 - ldr r4, =gDisableStructs - ldr r5, =gActiveBank - ldrb r1, [r5] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - mov r1, sp - adds r0, r4 - ldm r0!, {r2,r3,r6} - stm r1!, {r2,r3,r6} - ldm r0!, {r2,r3,r7} - stm r1!, {r2,r3,r7} - ldr r0, [r0] - str r0, [r1] - ldr r2, =gBattleMoves - ldr r3, =gCurrentMove - ldrh r1, [r3] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0] - mov r12, r4 - mov r9, r5 - ldr r6, =gStatuses3 - mov r10, r6 - cmp r0, 0x7F - beq _0803A35C - movs r5, 0 - mov r6, r9 - movs r4, 0x58 - ldr r2, =gBattleMons - adds r2, 0x18 - movs r1, 0x6 -_0803A2D4: - ldrb r0, [r6] - muls r0, r4 - adds r0, r5, r0 - adds r0, r2 - strb r1, [r0] - adds r5, 0x1 - cmp r5, 0x7 - ble _0803A2D4 - movs r5, 0 - ldr r7, =gNoOfAllBanks - ldrb r7, [r7] - cmp r5, r7 - bge _0803A348 - ldr r0, =gBattleMons + 0x50 - mov r8, r0 - ldr r4, =gDisableStructs - ldr r3, =gStatuses3 -_0803A2F6: - movs r0, 0x58 - muls r0, r5 - mov r1, r8 - adds r2, r0, r1 - ldr r1, [r2] - movs r0, 0x80 - lsls r0, 19 - ands r0, r1 - cmp r0, 0 - beq _0803A31A - ldrb r0, [r4, 0x14] - ldr r6, =gActiveBank - ldrb r6, [r6] - cmp r0, r6 - bne _0803A31A - ldr r0, =0xfbffffff - ands r1, r0 - str r1, [r2] -_0803A31A: - ldr r1, [r3] - movs r0, 0x18 - ands r0, r1 - cmp r0, 0 - beq _0803A33A - ldrb r0, [r4, 0x15] - ldr r7, =gActiveBank - ldrb r7, [r7] - cmp r0, r7 - bne _0803A33A - movs r0, 0x19 - negs r0, r0 - ands r1, r0 - str r1, [r3] - movs r0, 0 - strb r0, [r4, 0x15] -_0803A33A: - adds r4, 0x1C - adds r3, 0x4 - adds r5, 0x1 - ldr r0, =gNoOfAllBanks - ldrb r0, [r0] - cmp r5, r0 - blt _0803A2F6 -_0803A348: - ldr r1, =gCurrentMove - ldrh r0, [r1] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - ldr r2, =gBattleMoves - adds r1, r2 - ldrb r0, [r1] - cmp r0, 0x7F - bne _0803A414 -_0803A35C: - mov r3, r9 - ldrb r1, [r3] - movs r0, 0x58 - adds r2, r1, 0 - muls r2, r0 - ldr r0, =gBattleMons - adds r0, 0x50 - adds r2, r0 - ldr r0, [r2] - ldr r1, =0x15100007 - ands r0, r1 - str r0, [r2] - ldrb r1, [r3] - lsls r1, 2 - add r1, r10 - ldr r0, [r1] - ldr r2, =0x0003043f - ands r0, r2 - str r0, [r1] - movs r5, 0 - ldr r6, =gNoOfAllBanks - ldrb r6, [r6] - cmp r5, r6 - bge _0803A430 - mov r7, r9 - movs r6, 0 -_0803A390: - ldrb r0, [r7] - bl GetBankSide - adds r4, r0, 0 - lsls r0, r5, 24 - lsrs r0, 24 - bl GetBankSide - lsls r4, 24 - lsls r0, 24 - cmp r4, r0 - beq _0803A3D0 - ldr r1, =gStatuses3 - lsls r0, r5, 2 - adds r2, r0, r1 - ldr r1, [r2] - movs r0, 0x18 - ands r0, r1 - cmp r0, 0 - beq _0803A3D0 - ldr r0, =gDisableStructs - adds r0, r6, r0 - ldrb r0, [r0, 0x15] - ldrb r3, [r7] - cmp r0, r3 - bne _0803A3D0 - movs r0, 0x19 - negs r0, r0 - ands r1, r0 - movs r0, 0x10 - orrs r1, r0 - str r1, [r2] -_0803A3D0: - adds r6, 0x1C - adds r5, 0x1 - ldr r0, =gNoOfAllBanks - ldrb r0, [r0] - cmp r5, r0 - blt _0803A390 - ldr r6, =gDisableStructs - mov r12, r6 - ldr r7, =gActiveBank - mov r9, r7 - b _0803A430 - .pool -_0803A414: - mov r0, r9 - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - ldr r1, =gBattleMons - adds r1, 0x50 - adds r0, r1 - movs r1, 0 - str r1, [r0] - mov r2, r9 - ldrb r0, [r2] - lsls r0, 2 - add r0, r10 - str r1, [r0] -_0803A430: - movs r5, 0 - ldr r3, =gBattleStruct - mov r8, r3 - ldr r6, =gUnknown_020244AC - mov r10, r6 - ldr r7, =gNoOfAllBanks - ldrb r7, [r7] - cmp r5, r7 - bge _0803A490 - ldr r3, =gBattleMons + 0x50 - ldr r7, =gBitTable - ldr r6, =gActiveBank -_0803A448: - movs r0, 0x58 - muls r0, r5 - adds r4, r0, r3 - ldrb r0, [r6] - lsls r0, 2 - adds r0, r7 - ldr r0, [r0] - lsls r2, r0, 16 - ldr r1, [r4] - adds r0, r1, 0 - ands r0, r2 - cmp r0, 0 - beq _0803A466 - bics r1, r2 - str r1, [r4] -_0803A466: - ldr r1, [r4] - movs r0, 0xE0 - lsls r0, 8 - ands r0, r1 - cmp r0, 0 - beq _0803A486 - mov r2, r8 - ldr r0, [r2] - adds r0, r5, r0 - ldrb r0, [r0, 0x14] - ldrb r2, [r6] - cmp r0, r2 - bne _0803A486 - ldr r0, =0xffff1fff - ands r1, r0 - str r1, [r4] -_0803A486: - adds r5, 0x1 - ldr r0, =gNoOfAllBanks - ldrb r0, [r0] - cmp r5, r0 - blt _0803A448 -_0803A490: - mov r1, r9 - ldrb r0, [r1] - add r0, r10 - movs r1, 0 - strb r1, [r0] - mov r2, r9 - ldrb r0, [r2] - ldr r3, =gUnknown_020244B0 - adds r0, r3 - strb r1, [r0] - ldrb r1, [r2] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - mov r6, r12 - adds r1, r0, r6 - movs r5, 0 - movs r2, 0 -_0803A4B4: - adds r0, r1, r5 - strb r2, [r0] - adds r5, 0x1 - cmp r5, 0x1B - bls _0803A4B4 - ldr r7, =gCurrentMove - ldrh r0, [r7] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - ldr r0, =gBattleMoves - adds r1, r0 - ldrb r0, [r1] - cmp r0, 0x7F - bne _0803A540 - mov r2, r9 - ldrb r1, [r2] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r12 - mov r1, sp - ldrb r1, [r1, 0xA] - strb r1, [r0, 0xA] - ldrb r1, [r2] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r12 - mov r1, sp - ldrb r1, [r1, 0x15] - strb r1, [r0, 0x15] - ldrb r0, [r2] - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - add r1, r12 - mov r0, sp - ldrb r2, [r0, 0xF] - lsls r2, 28 - movs r4, 0xF - lsrs r2, 28 - ldrb r3, [r1, 0xF] - movs r0, 0x10 - negs r0, r0 - ands r0, r3 - orrs r0, r2 - strb r0, [r1, 0xF] - mov r3, r9 - ldrb r1, [r3] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r12 - mov r1, sp - ldrb r1, [r1, 0xF] - lsrs r1, 4 - lsls r1, 4 - ldrb r2, [r0, 0xF] - ands r4, r2 - orrs r4, r1 - strb r4, [r0, 0xF] - ldrb r1, [r3] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r12 - mov r1, sp - ldrb r1, [r1, 0x14] - strb r1, [r0, 0x14] -_0803A540: - movs r0, 0 - ldr r6, =gBattleMoveFlags - strb r0, [r6] - mov r7, r9 - ldrb r1, [r7] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r12 - movs r4, 0 - movs r1, 0x2 - strb r1, [r0, 0x16] - ldrb r0, [r7] - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - add r1, r12 - mov r0, sp - ldrb r0, [r0, 0x18] - movs r2, 0x2 - ands r2, r0 - ldrb r3, [r1, 0x18] - movs r0, 0x3 - negs r0, r0 - ands r0, r3 - orrs r0, r2 - strb r0, [r1, 0x18] - ldrb r0, [r7] - lsls r0, 1 - ldr r1, =gLastUsedMovesByBanks - adds r0, r1 - movs r2, 0 - strh r4, [r0] - ldrb r0, [r7] - lsls r0, 1 - ldr r3, =gUnknown_02024250 - adds r0, r3 - strh r4, [r0] - ldrb r0, [r7] - lsls r0, 1 - ldr r6, =gUnknown_02024258 - adds r0, r6 - strh r4, [r0] - ldrb r0, [r7] - lsls r0, 1 - ldr r7, =gUnknown_02024260 - adds r0, r7 - strh r4, [r0] - mov r1, r9 - ldrb r0, [r1] - lsls r0, 1 - ldr r3, =gUnknown_02024240 - adds r0, r3 - strh r4, [r0] - ldrb r0, [r1] - ldr r6, =gUnknown_02024270 - adds r0, r6 - movs r1, 0xFF - strb r1, [r0] - mov r7, r9 - ldrb r0, [r7] - mov r3, r8 - ldr r1, [r3] - lsls r0, 1 - adds r0, r1 - adds r0, 0x98 - strb r2, [r0] - ldrb r0, [r7] - ldr r1, [r3] - lsls r0, 1 - adds r0, r1 - adds r0, 0x99 - strb r2, [r0] - ldrb r0, [r7] - ldr r1, [r3] - lsls r0, 3 - adds r0, r1 - adds r0, 0xE0 - strb r2, [r0] - ldrb r0, [r7] - ldr r1, [r3] - lsls r0, 3 - adds r0, r1 - adds r0, 0xE1 - strb r2, [r0] - ldrb r0, [r7] - ldr r1, [r3] - lsls r0, 3 - adds r0, r1 - adds r0, 0xE2 - strb r2, [r0] - ldrb r0, [r7] - ldr r1, [r3] - lsls r0, 3 - adds r0, r1 - adds r0, 0xE3 - strb r2, [r0] - ldrb r0, [r7] - ldr r1, [r3] - lsls r0, 3 - adds r0, r1 - adds r0, 0xE4 - strb r2, [r0] - ldrb r0, [r7] - ldr r1, [r3] - lsls r0, 3 - adds r0, r1 - adds r0, 0xE5 - strb r2, [r0] - ldrb r0, [r7] - ldr r1, [r3] - lsls r0, 3 - adds r0, r1 - adds r0, 0xE6 - strb r2, [r0] - ldrb r0, [r7] - ldr r1, [r3] - lsls r0, 3 - adds r0, r1 - adds r0, 0xE7 - strb r2, [r0] - ldr r1, [r3] - adds r1, 0x92 - ldrb r0, [r7] - lsls r0, 2 - ldr r6, =gBitTable - adds r0, r6 - ldr r2, [r0] - ldrb r0, [r1] - bics r0, r2 - strb r0, [r1] - movs r5, 0 - ldr r7, =gNoOfAllBanks - ldrb r7, [r7] - cmp r5, r7 - bge _0803A6B4 - mov r3, r9 - mov r7, r8 - movs r6, 0 -_0803A656: - ldrb r0, [r3] - cmp r5, r0 - beq _0803A68C - lsls r0, r5, 24 - lsrs r0, 24 - str r3, [sp, 0x1C] - bl GetBankSide - adds r4, r0, 0 - ldr r3, [sp, 0x1C] - ldrb r0, [r3] - bl GetBankSide - lsls r4, 24 - lsls r0, 24 - ldr r3, [sp, 0x1C] - cmp r4, r0 - beq _0803A68C - ldr r0, [r7] - lsls r1, r5, 1 - adds r0, r1, r0 - adds r0, 0x98 - strb r6, [r0] - ldr r0, [r7] - adds r1, r0 - adds r1, 0x99 - strb r6, [r1] -_0803A68C: - ldrb r0, [r3] - ldr r1, [r7] - lsls r0, 1 - lsls r2, r5, 3 - adds r0, r2 - adds r0, r1 - adds r0, 0xE0 - strb r6, [r0] - ldrb r0, [r3] - ldr r1, [r7] - lsls r0, 1 - adds r0, r2 - adds r0, r1 - adds r0, 0xE1 - strb r6, [r0] - adds r5, 0x1 - ldr r0, =gNoOfAllBanks - ldrb r0, [r0] - cmp r5, r0 - blt _0803A656 -_0803A6B4: - mov r1, r9 - ldrb r0, [r1] - mov r2, r8 - ldr r1, [r2] - lsls r0, 1 - adds r0, r1 - adds r0, 0xC8 - movs r2, 0 - strb r2, [r0] - mov r3, r9 - ldrb r0, [r3] - mov r6, r8 - ldr r1, [r6] - lsls r0, 1 - adds r0, r1 - adds r0, 0xC9 - strb r2, [r0] - ldr r0, =gBattleResources - ldr r0, [r0] - ldr r1, [r0, 0x4] - ldrb r0, [r3] - lsls r0, 2 - adds r1, r0 - movs r2, 0 - str r2, [r1] - ldr r0, =gCurrentMove - strh r2, [r0] - ldr r0, [r6] - adds r0, 0xDA - movs r1, 0xFF - strb r1, [r0] - ldrb r0, [r3] - bl ClearBankMoveHistory - mov r7, r9 - ldrb r0, [r7] - bl ClearBankAbilityHistory - add sp, 0x20 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_803A284 - - thumb_func_start sub_803A75C -sub_803A75C: @ 803A75C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - movs r5, 0 - ldr r6, =gBattleMons - ldr r0, =gStatuses3 - mov r8, r0 - ldr r1, =gBattleStruct - mov r12, r1 - ldr r2, =gUnknown_020244AC - mov r9, r2 - ldr r3, =gUnknown_020244B0 - mov r10, r3 - ldr r7, =gProtectStructs - ldr r4, =gActiveBank - movs r3, 0x58 - adds r2, r6, 0 - adds r2, 0x18 - movs r1, 0x6 -_0803A788: - ldrb r0, [r4] - muls r0, r3 - adds r0, r5, r0 - adds r0, r2 - strb r1, [r0] - adds r5, 0x1 - cmp r5, 0x7 - ble _0803A788 - ldr r0, =gActiveBank - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r2, r6, 0 - adds r2, 0x50 - adds r0, r2 - movs r1, 0 - str r1, [r0] - ldr r3, =gActiveBank - ldrb r0, [r3] - lsls r0, 2 - add r0, r8 - str r1, [r0] - movs r5, 0 - ldr r6, =gNoOfAllBanks - ldrb r6, [r6] - cmp r5, r6 - bge _0803A830 - adds r3, r2, 0 - movs r4, 0 - ldr r0, =gBitTable - mov r8, r0 -_0803A7C6: - ldr r1, [r3] - movs r0, 0x80 - lsls r0, 19 - ands r0, r1 - cmp r0, 0 - beq _0803A7E6 - ldr r2, =gDisableStructs - adds r0, r4, r2 - ldrb r0, [r0, 0x14] - ldr r6, =gActiveBank - ldrb r6, [r6] - cmp r0, r6 - bne _0803A7E6 - ldr r0, =0xfbffffff - ands r1, r0 - str r1, [r3] -_0803A7E6: - ldr r1, =gActiveBank - ldrb r0, [r1] - lsls r0, 2 - add r0, r8 - ldr r0, [r0] - lsls r2, r0, 16 - ldr r1, [r3] - adds r0, r1, 0 - ands r0, r2 - cmp r0, 0 - beq _0803A800 - bics r1, r2 - str r1, [r3] -_0803A800: - ldr r1, [r3] - movs r0, 0xE0 - lsls r0, 8 - ands r0, r1 - cmp r0, 0 - beq _0803A822 - mov r2, r12 - ldr r0, [r2] - adds r0, r5, r0 - ldrb r0, [r0, 0x14] - ldr r6, =gActiveBank - ldrb r6, [r6] - cmp r0, r6 - bne _0803A822 - ldr r0, =0xffff1fff - ands r1, r0 - str r1, [r3] -_0803A822: - adds r3, 0x58 - adds r4, 0x1C - adds r5, 0x1 - ldr r0, =gNoOfAllBanks - ldrb r0, [r0] - cmp r5, r0 - blt _0803A7C6 -_0803A830: - ldr r1, =gActiveBank - ldrb r0, [r1] - add r0, r9 - movs r1, 0 - strb r1, [r0] - ldr r2, =gActiveBank - ldrb r0, [r2] - add r0, r10 - strb r1, [r0] - ldrb r1, [r2] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - ldr r3, =gDisableStructs - adds r1, r0, r3 - movs r5, 0 - movs r2, 0 -_0803A852: - adds r0, r1, r5 - strb r2, [r0] - adds r5, 0x1 - cmp r5, 0x1B - bls _0803A852 - ldr r6, =gActiveBank - ldrb r1, [r6] - lsls r1, 4 - adds r1, r7 - ldrb r2, [r1] - movs r0, 0x2 - negs r0, r0 - mov r9, r0 - ands r0, r2 - strb r0, [r1] - ldrb r1, [r6] - lsls r1, 4 - adds r1, r7 - ldrb r2, [r1] - movs r3, 0x3 - negs r3, r3 - mov r8, r3 - mov r0, r8 - ands r0, r2 - strb r0, [r1] - ldrb r1, [r6] - lsls r1, 4 - adds r1, r7 - ldrb r2, [r1] - movs r6, 0x5 - negs r6, r6 - adds r0, r6, 0 - ands r0, r2 - strb r0, [r1] - ldr r0, =gActiveBank - ldrb r1, [r0] - lsls r1, 4 - adds r1, r7 - ldrb r2, [r1] - subs r3, 0x6 - mov r10, r3 - mov r0, r10 - ands r0, r2 - strb r0, [r1] - ldr r0, =gActiveBank - ldrb r1, [r0] - lsls r1, 4 - adds r1, r7 - ldrb r2, [r1] - movs r0, 0x11 - negs r0, r0 - ands r0, r2 - strb r0, [r1] - ldr r2, =gActiveBank - ldrb r1, [r2] - lsls r1, 4 - adds r1, r7 - ldrb r2, [r1] - movs r5, 0x21 - negs r5, r5 - adds r0, r5, 0 - ands r0, r2 - strb r0, [r1] - ldr r3, =gActiveBank - ldrb r1, [r3] - lsls r1, 4 - adds r1, r7 - ldrb r2, [r1] - movs r4, 0x41 - negs r4, r4 - adds r0, r4, 0 - ands r0, r2 - strb r0, [r1] - ldrb r1, [r3] - lsls r1, 4 - adds r1, r7 - ldrb r2, [r1] - movs r3, 0x7F - adds r0, r3, 0 - ands r0, r2 - strb r0, [r1] - ldr r0, =gActiveBank - ldrb r1, [r0] - lsls r1, 4 - adds r1, r7 - ldrb r2, [r1, 0x1] - mov r0, r9 - ands r0, r2 - strb r0, [r1, 0x1] - ldr r2, =gActiveBank - ldrb r1, [r2] - lsls r1, 4 - adds r1, r7 - ldrb r2, [r1, 0x1] - mov r0, r8 - ands r0, r2 - strb r0, [r1, 0x1] - ldr r0, =gActiveBank - ldrb r1, [r0] - lsls r1, 4 - adds r1, r7 - ldrb r2, [r1, 0x1] - adds r0, r6, 0 - ands r0, r2 - strb r0, [r1, 0x1] - ldr r2, =gActiveBank - ldrb r1, [r2] - lsls r1, 4 - adds r1, r7 - ldrb r2, [r1, 0x1] - movs r0, 0x19 - negs r0, r0 - ands r0, r2 - strb r0, [r1, 0x1] - ldr r1, =gActiveBank - ldrb r0, [r1] - lsls r0, 4 - adds r0, r7 - ldrb r1, [r0, 0x1] - ands r5, r1 - strb r5, [r0, 0x1] - ldr r2, =gActiveBank - ldrb r0, [r2] - lsls r0, 4 - adds r0, r7 - ldrb r1, [r0, 0x1] - ands r4, r1 - strb r4, [r0, 0x1] - ldrb r0, [r2] - lsls r0, 4 - adds r0, r7 - ldrb r1, [r0, 0x1] - ands r3, r1 - strb r3, [r0, 0x1] - ldrb r0, [r2] - lsls r0, 4 - adds r0, r7 - ldrb r1, [r0, 0x2] - mov r3, r9 - ands r3, r1 - strb r3, [r0, 0x2] - ldrb r0, [r2] - lsls r0, 4 - adds r0, r7 - ldrb r1, [r0, 0x2] - mov r2, r8 - ands r2, r1 - strb r2, [r0, 0x2] - ldr r3, =gActiveBank - ldrb r0, [r3] - lsls r0, 4 - adds r0, r7 - ldrb r1, [r0, 0x2] - ands r6, r1 - strb r6, [r0, 0x2] - ldrb r0, [r3] - lsls r0, 4 - adds r0, r7 - ldrb r1, [r0, 0x2] - mov r6, r10 - ands r6, r1 - strb r6, [r0, 0x2] - ldrb r1, [r3] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - ldr r1, =gDisableStructs - adds r0, r1 - movs r2, 0 - movs r1, 0x2 - strb r1, [r0, 0x16] - ldrb r0, [r3] - lsls r0, 1 - ldr r3, =gLastUsedMovesByBanks - adds r0, r3 - movs r3, 0 - strh r2, [r0] - ldr r6, =gActiveBank - ldrb r0, [r6] - lsls r0, 1 - ldr r1, =gUnknown_02024250 - adds r0, r1 - strh r2, [r0] - ldrb r0, [r6] - lsls r0, 1 - ldr r6, =gUnknown_02024258 - adds r0, r6 - strh r2, [r0] - ldr r1, =gActiveBank - ldrb r0, [r1] - lsls r0, 1 - ldr r6, =gUnknown_02024260 - adds r0, r6 - strh r2, [r0] - ldrb r0, [r1] - lsls r0, 1 - ldr r1, =gUnknown_02024240 - adds r0, r1 - strh r2, [r0] - ldr r2, =gActiveBank - ldrb r0, [r2] - ldr r6, =gUnknown_02024270 - adds r0, r6 - movs r1, 0xFF - strb r1, [r0] - ldrb r0, [r2] - mov r2, r12 - ldr r1, [r2] - lsls r0, 1 - adds r0, r1 - adds r0, 0xC8 - strb r3, [r0] - ldr r6, =gActiveBank - ldrb r0, [r6] - ldr r1, [r2] - lsls r0, 1 - adds r0, r1 - adds r0, 0xC9 - strb r3, [r0] - ldrb r0, [r6] - ldr r1, [r2] - lsls r0, 1 - adds r0, r1 - adds r0, 0x98 - strb r3, [r0] - ldrb r0, [r6] - ldr r1, [r2] - lsls r0, 1 - adds r0, r1 - adds r0, 0x99 - strb r3, [r0] - ldrb r0, [r6] - ldr r1, [r2] - lsls r0, 3 - adds r0, r1 - adds r0, 0xE0 - strb r3, [r0] - ldrb r0, [r6] - ldr r1, [r2] - lsls r0, 3 - adds r0, r1 - adds r0, 0xE1 - strb r3, [r0] - ldrb r0, [r6] - ldr r1, [r2] - lsls r0, 3 - adds r0, r1 - adds r0, 0xE2 - strb r3, [r0] - ldrb r0, [r6] - ldr r1, [r2] - lsls r0, 3 - adds r0, r1 - adds r0, 0xE3 - strb r3, [r0] - ldrb r0, [r6] - ldr r1, [r2] - lsls r0, 3 - adds r0, r1 - adds r0, 0xE4 - strb r3, [r0] - ldrb r0, [r6] - ldr r1, [r2] - lsls r0, 3 - adds r0, r1 - adds r0, 0xE5 - strb r3, [r0] - ldrb r0, [r6] - ldr r1, [r2] - lsls r0, 3 - adds r0, r1 - adds r0, 0xE6 - strb r3, [r0] - ldrb r0, [r6] - ldr r1, [r2] - lsls r0, 3 - adds r0, r1 - adds r0, 0xE7 - strb r3, [r0] - ldr r1, [r2] - adds r1, 0x92 - ldrb r0, [r6] - lsls r0, 2 - ldr r2, =gBitTable - adds r0, r2 - ldr r2, [r0] - ldrb r0, [r1] - bics r0, r2 - strb r0, [r1] - movs r5, 0 - ldr r3, =gNoOfAllBanks - ldrb r3, [r3] - cmp r5, r3 - bge _0803AB02 - adds r3, r6, 0 - mov r7, r12 - movs r6, 0 -_0803AAA4: - ldrb r0, [r3] - cmp r5, r0 - beq _0803AADA - lsls r0, r5, 24 - lsrs r0, 24 - str r3, [sp] - bl GetBankSide - adds r4, r0, 0 - ldr r3, [sp] - ldrb r0, [r3] - bl GetBankSide - lsls r4, 24 - lsls r0, 24 - ldr r3, [sp] - cmp r4, r0 - beq _0803AADA - ldr r0, [r7] - lsls r1, r5, 1 - adds r0, r1, r0 - adds r0, 0x98 - strb r6, [r0] - ldr r0, [r7] - adds r1, r0 - adds r1, 0x99 - strb r6, [r1] -_0803AADA: - ldrb r0, [r3] - ldr r1, [r7] - lsls r0, 1 - lsls r2, r5, 3 - adds r0, r2 - adds r0, r1 - adds r0, 0xE0 - strb r6, [r0] - ldrb r0, [r3] - ldr r1, [r7] - lsls r0, 1 - adds r0, r2 - adds r0, r1 - adds r0, 0xE1 - strb r6, [r0] - adds r5, 0x1 - ldr r0, =gNoOfAllBanks - ldrb r0, [r0] - cmp r5, r0 - blt _0803AAA4 -_0803AB02: - ldr r0, =gBattleResources - ldr r0, [r0] - ldr r1, [r0, 0x4] - ldr r2, =gActiveBank - ldrb r0, [r2] - lsls r0, 2 - adds r1, r0 - movs r0, 0 - str r0, [r1] - ldr r4, =gBattleMons - ldrb r0, [r2] - movs r3, 0x58 - adds r2, r0, 0 - muls r2, r3 - b _0803AB6C - .pool -_0803AB6C: - adds r2, r4 - ldr r5, =gBaseStats - ldrh r1, [r2] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r5 - ldrb r0, [r0, 0x6] - adds r2, 0x21 - strb r0, [r2] - ldr r6, =gActiveBank - ldrb r0, [r6] - adds r1, r0, 0 - muls r1, r3 - adds r1, r4 - ldrh r2, [r1] - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r0, r5 - ldrb r0, [r0, 0x7] - adds r1, 0x22 - strb r0, [r1] - ldrb r0, [r6] - bl ClearBankMoveHistory - ldrb r0, [r6] - bl ClearBankAbilityHistory - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_803A75C - - thumb_func_start bc_8012FAC -bc_8012FAC: @ 803ABC0 - push {r4,r5,lr} - ldr r5, =gBattleCommunication - ldrb r0, [r5] - cmp r0, 0 - beq _0803ABD4 - cmp r0, 0x1 - beq _0803ABF8 - b _0803AC2E - .pool -_0803ABD4: - ldr r4, =gActiveBank - ldrb r0, [r5, 0x1] - strb r0, [r4] - movs r0, 0 - movs r1, 0 - movs r2, 0 - bl dp01_build_cmdbuf_x00_a_b_0 - ldrb r0, [r4] - bl dp01_battle_side_mark_buffer_for_execution - ldrb r0, [r5] - adds r0, 0x1 - strb r0, [r5] - b _0803AC2E - .pool -_0803ABF8: - ldr r0, =gBattleExecBuffer - ldr r2, [r0] - cmp r2, 0 - bne _0803AC2E - ldrb r0, [r5, 0x1] - adds r0, 0x1 - strb r0, [r5, 0x1] - ldr r1, =gNoOfAllBanks - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r1] - cmp r0, r1 - bne _0803AC2C - ldr r1, =gBattleMainFunc - ldr r0, =bc_load_battlefield - str r0, [r1] - b _0803AC2E - .pool -_0803AC2C: - strb r2, [r5] -_0803AC2E: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end bc_8012FAC - - thumb_func_start bc_load_battlefield -bc_load_battlefield: @ 803AC34 - push {r4,r5,lr} - ldr r0, =gBattleExecBuffer - ldr r5, [r0] - cmp r5, 0 - bne _0803AC64 - movs r0, 0 - bl GetBankByPlayerAI - ldr r4, =gActiveBank - strb r0, [r4] - ldr r0, =gUnknown_02022FF0 - ldrb r1, [r0] - movs r0, 0 - bl dp01_build_cmdbuf_x2E_a - ldrb r0, [r4] - bl dp01_battle_side_mark_buffer_for_execution - ldr r1, =gBattleMainFunc - ldr r0, =sub_803AC84 - str r0, [r1] - ldr r0, =gBattleCommunication - strb r5, [r0] - strb r5, [r0, 0x1] -_0803AC64: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end bc_load_battlefield - - thumb_func_start sub_803AC84 -sub_803AC84: @ 803AC84 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r0, =gBattleExecBuffer - ldr r1, [r0] - cmp r1, 0 - beq _0803AC98 - b _0803AF4E -_0803AC98: - ldr r2, =gActiveBank - strb r1, [r2] - ldr r0, =gNoOfAllBanks - ldrb r0, [r0] - cmp r1, r0 - bcc _0803ACA6 - b _0803AF48 -_0803ACA6: - movs r7, 0x58 - ldr r0, =gBattleMons - mov r8, r0 - mov r9, r2 - movs r1, 0x48 - add r1, r8 - mov r10, r1 -_0803ACB4: - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0803ACFC - ldr r4, =gActiveBank - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _0803ACFC - ldrb r0, [r4] - muls r0, r7 - mov r2, r8 - adds r3, r0, r2 - movs r2, 0 - movs r1, 0 -_0803ACDA: - adds r0, r3, r2 - strb r1, [r0] - adds r2, 0x1 - cmp r2, 0x57 - bls _0803ACDA - b _0803ADCA - .pool -_0803ACFC: - mov r1, r9 - ldrb r0, [r1] - muls r0, r7 - mov r2, r8 - adds r3, r0, r2 - movs r2, 0 - ldr r6, =gBaseStats - ldr r5, =gBattleBufferB - ldr r4, =gActiveBank -_0803AD0E: - adds r0, r3, r2 - ldrb r1, [r4] - lsls r1, 9 - adds r1, 0x4 - adds r1, r2, r1 - adds r1, r5 - ldrb r1, [r1] - strb r1, [r0] - adds r2, 0x1 - cmp r2, 0x57 - bls _0803AD0E - mov r1, r9 - ldrb r0, [r1] - adds r2, r0, 0 - muls r2, r7 - add r2, r8 - ldrh r1, [r2] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r6 - ldrb r0, [r0, 0x6] - adds r2, 0x21 - strb r0, [r2] - mov r2, r9 - ldrb r0, [r2] - adds r2, r0, 0 - muls r2, r7 - add r2, r8 - ldrh r1, [r2] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r6 - ldrb r0, [r0, 0x7] - adds r2, 0x22 - strb r0, [r2] - mov r1, r9 - ldrb r0, [r1] - adds r1, r0, 0 - muls r1, r7 - add r1, r8 - ldrh r0, [r1] - ldrb r1, [r1, 0x17] - lsrs r1, 7 - bl GetAbilityBySpecies - mov r2, r9 - ldrb r1, [r2] - muls r1, r7 - add r1, r8 - adds r1, 0x20 - strb r0, [r1] - ldrb r0, [r2] - bl GetBankSide - ldr r1, =gBattleStruct - lsls r0, 24 - lsrs r0, 23 - adds r0, 0xA8 - ldr r1, [r1] - adds r1, r0 - mov r2, r9 - ldrb r0, [r2] - muls r0, r7 - add r0, r8 - ldrh r0, [r0, 0x28] - strh r0, [r1] - movs r2, 0 - ldr r4, =gActiveBank - movs r5, 0x58 - ldr r1, =gBattleMons + 0x18 - adds r6, r4, 0 - movs r0, 0x18 - negs r0, r0 - adds r0, r1 - mov r12, r0 - movs r3, 0x6 -_0803ADAA: - ldrb r0, [r4] - muls r0, r5 - adds r0, r2, r0 - adds r0, r1 - strb r3, [r0] - adds r2, 0x1 - cmp r2, 0x7 - ble _0803ADAA - ldrb r0, [r6] - adds r1, r0, 0 - muls r1, r7 - mov r0, r12 - adds r0, 0x50 - adds r1, r0 - movs r0, 0 - str r0, [r1] -_0803ADCA: - ldr r4, =gActiveBank - ldrb r0, [r4] - bl GetBankIdentity - lsls r0, 24 - cmp r0, 0 - bne _0803ADE4 - movs r0, 0 - bl dp01_build_cmdbuf_x07_7_7_7 - ldrb r0, [r4] - bl dp01_battle_side_mark_buffer_for_execution -_0803ADE4: - ldr r5, =gBattleTypeFlags - ldr r0, [r5] - movs r1, 0x8 - ands r0, r1 - cmp r0, 0 - beq _0803AE60 - ldrb r0, [r4] - bl GetBankIdentity - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0803AE0A - movs r0, 0 - bl dp01_build_cmdbuf_x07_7_7_7 - ldrb r0, [r4] - bl dp01_battle_side_mark_buffer_for_execution -_0803AE0A: - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0803AEC0 - ldr r0, [r5] - ldr r1, =0x063f0902 - ands r0, r1 - cmp r0, 0 - bne _0803AEC0 - ldrb r0, [r4] - muls r0, r7 - add r0, r8 - ldrh r0, [r0] - bl SpeciesToNationalPokedexNum - lsls r0, 16 - lsrs r0, 16 - ldrb r1, [r4] - muls r1, r7 - add r1, r10 - ldr r2, [r1] - movs r1, 0x2 - bl SetPokedexFlag - b _0803AEC0 - .pool -_0803AE60: - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0803AEC0 - ldr r0, [r5] - ldr r1, =0x063f0902 - ands r0, r1 - cmp r0, 0 - bne _0803AE96 - ldrb r0, [r4] - muls r0, r7 - add r0, r8 - ldrh r0, [r0] - bl SpeciesToNationalPokedexNum - lsls r0, 16 - lsrs r0, 16 - ldrb r1, [r4] - muls r1, r7 - add r1, r10 - ldr r2, [r1] - movs r1, 0x2 - bl SetPokedexFlag -_0803AE96: - movs r0, 0 - bl dp01_build_cmdbuf_x04_4_4_4 - ldrb r0, [r4] - bl dp01_battle_side_mark_buffer_for_execution - ldr r1, =gBattlePartyID - ldrb r0, [r4] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, =gEnemyParty - adds r0, r1 - movs r1, 0xB - movs r2, 0 - bl GetMonData - ldr r1, =gBattleResults - strh r0, [r1, 0x20] -_0803AEC0: - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0803AEF6 - ldr r4, =gActiveBank - ldrb r0, [r4] - bl GetBankIdentity - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - beq _0803AEEA - ldrb r0, [r4] - bl GetBankIdentity - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - bne _0803AEF6 -_0803AEEA: - movs r0, 0 - bl dp01_build_cmdbuf_x07_7_7_7 - ldrb r0, [r4] - bl dp01_battle_side_mark_buffer_for_execution -_0803AEF6: - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 8 - ands r0, r1 - cmp r0, 0 - beq _0803AF20 - ldr r4, =gActiveBank - ldrb r0, [r4] - bl GetBankIdentity - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - bne _0803AF20 - movs r0, 0 - bl dp01_build_cmdbuf_x07_7_7_7 - ldrb r0, [r4] - bl dp01_battle_side_mark_buffer_for_execution -_0803AF20: - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 11 - ands r0, r1 - cmp r0, 0 - beq _0803AF32 - bl sub_81A56B4 -_0803AF32: - mov r1, r9 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r1, =gNoOfAllBanks - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r1] - cmp r0, r1 - bcs _0803AF48 - b _0803ACB4 -_0803AF48: - ldr r1, =gBattleMainFunc - ldr r0, =bc_801333C - str r0, [r1] -_0803AF4E: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_803AC84 - - thumb_func_start bc_801333C -bc_801333C: @ 803AF80 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x30 - ldr r0, =gBattleExecBuffer - ldr r0, [r0] - cmp r0, 0 - beq _0803AF92 - b _0803B10C -_0803AF92: - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x8 - ands r0, r1 - cmp r0, 0 - bne _0803AFA0 - b _0803B0AC -_0803AFA0: - movs r7, 0 - add r0, sp, 0x4 - mov r8, r0 - mov r6, r8 - mov r5, sp -_0803AFAA: - movs r0, 0x64 - adds r1, r7, 0 - muls r1, r0 - ldr r0, =gEnemyParty - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - cmp r0, 0 - beq _0803AFD0 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - movs r1, 0xCE - lsls r1, 1 - cmp r0, r1 - bne _0803AFE8 -_0803AFD0: - ldr r0, =0x0000ffff - strh r0, [r5] - movs r0, 0 - b _0803AFFA - .pool -_0803AFE8: - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - strh r0, [r5] - adds r0, r4, 0 - movs r1, 0x37 - bl GetMonData -_0803AFFA: - str r0, [r6] - adds r6, 0x8 - adds r5, 0x8 - adds r7, 0x1 - cmp r7, 0x5 - ble _0803AFAA - movs r0, 0x1 - bl GetBankByPlayerAI - ldr r4, =gActiveBank - strb r0, [r4] - movs r0, 0 - mov r1, sp - movs r2, 0x80 - bl dp01_build_cmdbuf_x30_TODO - ldrb r0, [r4] - bl dp01_battle_side_mark_buffer_for_execution - movs r7, 0 - mov r6, r8 - mov r5, sp -_0803B026: - movs r0, 0x64 - adds r1, r7, 0 - muls r1, r0 - ldr r0, =gPlayerParty - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - cmp r0, 0 - beq _0803B04C - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - movs r1, 0xCE - lsls r1, 1 - cmp r0, r1 - bne _0803B060 -_0803B04C: - ldr r0, =0x0000ffff - strh r0, [r5] - movs r0, 0 - b _0803B072 - .pool -_0803B060: - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - strh r0, [r5] - adds r0, r4, 0 - movs r1, 0x37 - bl GetMonData -_0803B072: - str r0, [r6] - adds r6, 0x8 - adds r5, 0x8 - adds r7, 0x1 - cmp r7, 0x5 - ble _0803B026 - movs r0, 0 - bl GetBankByPlayerAI - ldr r4, =gActiveBank - strb r0, [r4] - movs r0, 0 - mov r1, sp - movs r2, 0x80 - bl dp01_build_cmdbuf_x30_TODO - ldrb r0, [r4] - bl dp01_battle_side_mark_buffer_for_execution - ldr r1, =gBattleMainFunc - ldr r0, =bc_battle_begin_message - b _0803B10A - .pool -_0803B0AC: - movs r7, 0 - add r6, sp, 0x4 - mov r5, sp -_0803B0B2: - movs r0, 0x64 - adds r1, r7, 0 - muls r1, r0 - ldr r0, =gPlayerParty - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - cmp r0, 0 - beq _0803B0D8 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - movs r1, 0xCE - lsls r1, 1 - cmp r0, r1 - bne _0803B0E8 -_0803B0D8: - ldr r0, =0x0000ffff - strh r0, [r5] - movs r0, 0 - b _0803B0FA - .pool -_0803B0E8: - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - strh r0, [r5] - adds r0, r4, 0 - movs r1, 0x37 - bl GetMonData -_0803B0FA: - str r0, [r6] - adds r6, 0x8 - adds r5, 0x8 - adds r7, 0x1 - cmp r7, 0x5 - ble _0803B0B2 - ldr r1, =gBattleMainFunc - ldr r0, =bc_8013568 -_0803B10A: - str r0, [r1] -_0803B10C: - add sp, 0x30 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end bc_801333C - - thumb_func_start bc_battle_begin_message -bc_battle_begin_message: @ 803B120 - push {lr} - ldr r0, =gBattleExecBuffer - ldr r0, [r0] - cmp r0, 0 - bne _0803B142 - movs r0, 0x1 - bl GetBankByPlayerAI - ldr r1, =gActiveBank - strb r0, [r1] - ldrb r1, [r1] - movs r0, 0 - bl b_std_message - ldr r1, =gBattleMainFunc - ldr r0, =sub_803B180 - str r0, [r1] -_0803B142: - pop {r0} - bx r0 - .pool - thumb_func_end bc_battle_begin_message - - thumb_func_start bc_8013568 -bc_8013568: @ 803B158 - push {lr} - ldr r0, =gBattleExecBuffer - ldr r0, [r0] - cmp r0, 0 - bne _0803B170 - ldr r1, =gBattleMainFunc - ldr r0, =sub_803B3CC - str r0, [r1] - movs r0, 0 - movs r1, 0 - bl b_std_message -_0803B170: - pop {r0} - bx r0 - .pool - thumb_func_end bc_8013568 - - thumb_func_start sub_803B180 -sub_803B180: @ 803B180 - push {lr} - ldr r0, =gBattleExecBuffer - ldr r0, [r0] - cmp r0, 0 - bne _0803B1D0 - ldr r0, =gBattleTypeFlags - ldr r2, [r0] - movs r0, 0x80 - lsls r0, 17 - ands r0, r2 - cmp r0, 0 - beq _0803B1B8 - movs r0, 0x80 - lsls r0, 18 - ands r0, r2 - cmp r0, 0 - beq _0803B1B8 - movs r1, 0x80 - lsls r1, 24 - ands r1, r2 - negs r0, r1 - orrs r0, r1 - lsrs r0, 31 - b _0803B1BA - .pool -_0803B1B8: - movs r0, 0x1 -_0803B1BA: - bl GetBankByPlayerAI - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - movs r0, 0x1 - bl b_std_message - ldr r1, =gBattleMainFunc - ldr r0, =sub_803B25C - str r0, [r1] -_0803B1D0: - pop {r0} - bx r0 - .pool - thumb_func_end sub_803B180 - - thumb_func_start sub_803B1DC -sub_803B1DC: @ 803B1DC - push {r4,r5,lr} - ldr r0, =gBattleTypeFlags - ldr r1, [r0] - movs r0, 0x80 - lsls r0, 17 - ands r0, r1 - cmp r0, 0 - beq _0803B1FC - movs r0, 0x80 - lsls r0, 18 - ands r0, r1 - cmp r0, 0 - beq _0803B1FC - movs r5, 0x2 - cmp r1, 0 - bge _0803B1FE -_0803B1FC: - movs r5, 0x3 -_0803B1FE: - ldr r1, =gActiveBank - movs r0, 0 - strb r0, [r1] - ldr r0, =gNoOfAllBanks - ldrb r0, [r0] - cmp r0, 0 - beq _0803B23A - adds r4, r1, 0 -_0803B20E: - ldrb r0, [r4] - bl GetBankIdentity - lsls r0, 24 - lsrs r0, 24 - cmp r0, r5 - bne _0803B228 - movs r0, 0 - bl dp01_build_cmdbuf_x2F_2F_2F_2F - ldrb r0, [r4] - bl dp01_battle_side_mark_buffer_for_execution -_0803B228: - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - ldr r1, =gNoOfAllBanks - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r1] - cmp r0, r1 - bcc _0803B20E -_0803B23A: - ldr r1, =gBattleMainFunc - ldr r0, =bc_801362C - str r0, [r1] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_803B1DC - - thumb_func_start sub_803B25C -sub_803B25C: @ 803B25C - push {r4-r6,lr} - ldr r0, =gBattleTypeFlags - ldr r2, [r0] - movs r0, 0x80 - lsls r0, 17 - ands r0, r2 - cmp r0, 0 - beq _0803B298 - movs r0, 0x80 - lsls r0, 18 - ands r0, r2 - cmp r0, 0 - beq _0803B298 - movs r1, 0x80 - lsls r1, 24 - ands r1, r2 - negs r0, r1 - orrs r0, r1 - lsrs r5, r0, 31 - b _0803B29A - .pool -_0803B288: - ldr r1, =gBattleMainFunc - ldr r0, =sub_803B1DC - b _0803B2F0 - .pool -_0803B298: - movs r5, 0x1 -_0803B29A: - ldr r0, =gBattleExecBuffer - ldr r2, [r0] - cmp r2, 0 - bne _0803B2F2 - ldr r0, =gActiveBank - strb r2, [r0] - ldr r1, =gNoOfAllBanks - adds r4, r0, 0 - ldrb r1, [r1] - cmp r2, r1 - bcs _0803B2EC - adds r6, r4, 0 -_0803B2B2: - ldrb r0, [r4] - bl GetBankIdentity - lsls r0, 24 - lsrs r0, 24 - cmp r0, r5 - bne _0803B2D8 - movs r0, 0 - bl dp01_build_cmdbuf_x2F_2F_2F_2F - ldrb r0, [r4] - bl dp01_battle_side_mark_buffer_for_execution - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - ldr r1, =0x00008040 - ands r0, r1 - cmp r0, 0 - bne _0803B288 -_0803B2D8: - ldrb r0, [r6] - adds r0, 0x1 - strb r0, [r6] - ldr r1, =gNoOfAllBanks - lsls r0, 24 - lsrs r0, 24 - ldr r4, =gActiveBank - ldrb r1, [r1] - cmp r0, r1 - bcc _0803B2B2 -_0803B2EC: - ldr r1, =gBattleMainFunc - ldr r0, =bc_801362C -_0803B2F0: - str r0, [r1] -_0803B2F2: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_803B25C - - thumb_func_start bc_801362C -bc_801362C: @ 803B314 - push {r4-r7,lr} - ldr r0, =gBattleExecBuffer - ldr r1, [r0] - cmp r1, 0 - bne _0803B384 - ldr r2, =gActiveBank - strb r1, [r2] - ldr r0, =gNoOfAllBanks - ldrb r0, [r0] - cmp r1, r0 - bcs _0803B37E - adds r4, r2, 0 - ldr r6, =gBattleMons - movs r5, 0x58 - adds r7, r6, 0 - adds r7, 0x48 -_0803B334: - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0803B36C - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - ldr r1, =0x063f0902 - ands r0, r1 - cmp r0, 0 - bne _0803B36C - ldrb r0, [r4] - muls r0, r5 - adds r0, r6 - ldrh r0, [r0] - bl SpeciesToNationalPokedexNum - lsls r0, 16 - lsrs r0, 16 - ldrb r1, [r4] - muls r1, r5 - adds r1, r7 - ldr r2, [r1] - movs r1, 0x2 - bl SetPokedexFlag -_0803B36C: - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - ldr r1, =gNoOfAllBanks - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r1] - cmp r0, r1 - bcc _0803B334 -_0803B37E: - ldr r1, =gBattleMainFunc - ldr r0, =sub_803B3CC - str r0, [r1] -_0803B384: - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end bc_801362C - - thumb_func_start sub_803B3AC -sub_803B3AC: @ 803B3AC - push {lr} - ldr r0, =gBattleExecBuffer - ldr r0, [r0] - cmp r0, 0 - bne _0803B3BC - ldr r1, =gBattleMainFunc - ldr r0, =sub_803B3CC - str r0, [r1] -_0803B3BC: - pop {r0} - bx r0 - .pool - thumb_func_end sub_803B3AC - - thumb_func_start sub_803B3CC -sub_803B3CC: @ 803B3CC - push {lr} - ldr r0, =gBattleExecBuffer - ldr r0, [r0] - cmp r0, 0 - bne _0803B418 - ldr r1, =gBattleTypeFlags - ldr r2, [r1] - movs r0, 0x80 - lsls r0, 17 - ands r0, r2 - cmp r0, 0 - beq _0803B3F4 - movs r0, 0x80 - lsls r0, 18 - ands r0, r2 - cmp r0, 0 - beq _0803B3F4 - movs r3, 0x1 - cmp r2, 0 - bge _0803B3F6 -_0803B3F4: - movs r3, 0 -_0803B3F6: - ldr r0, [r1] - movs r1, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0803B412 - adds r0, r3, 0 - bl GetBankByPlayerAI - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - movs r0, 0x1 - bl b_std_message -_0803B412: - ldr r1, =gBattleMainFunc - ldr r0, =sub_803B4C8 - str r0, [r1] -_0803B418: - pop {r0} - bx r0 - .pool - thumb_func_end sub_803B3CC - - thumb_func_start sub_803B42C -sub_803B42C: @ 803B42C - push {r4,r5,lr} - ldr r0, =gBattleTypeFlags - ldr r1, [r0] - movs r0, 0x80 - lsls r0, 17 - ands r0, r1 - cmp r0, 0 - beq _0803B44C - movs r0, 0x80 - lsls r0, 18 - ands r0, r1 - cmp r0, 0 - beq _0803B44C - movs r5, 0x3 - cmp r1, 0 - bge _0803B44E -_0803B44C: - movs r5, 0x2 -_0803B44E: - ldr r1, =gActiveBank - movs r0, 0 - strb r0, [r1] - ldr r0, =gNoOfAllBanks - ldrb r0, [r0] - cmp r0, 0 - beq _0803B48A - adds r4, r1, 0 -_0803B45E: - ldrb r0, [r4] - bl GetBankIdentity - lsls r0, 24 - lsrs r0, 24 - cmp r0, r5 - bne _0803B478 - movs r0, 0 - bl dp01_build_cmdbuf_x2F_2F_2F_2F - ldrb r0, [r4] - bl dp01_battle_side_mark_buffer_for_execution -_0803B478: - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - ldr r1, =gNoOfAllBanks - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r1] - cmp r0, r1 - bcc _0803B45E -_0803B48A: - ldr r2, =gBattleStruct - ldr r0, [r2] - adds r0, 0x4C - movs r1, 0 - strb r1, [r0] - ldr r0, [r2] - adds r0, 0xD9 - strb r1, [r0] - ldr r0, [r2] - movs r2, 0xD1 - lsls r2, 1 - adds r0, r2 - strb r1, [r0] - ldr r1, =gBattleMainFunc - ldr r0, =sub_803B628 - str r0, [r1] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_803B42C - - thumb_func_start sub_803B4C8 -sub_803B4C8: @ 803B4C8 - push {r4-r6,lr} - ldr r0, =gBattleTypeFlags - ldr r1, [r0] - movs r0, 0x80 - lsls r0, 17 - ands r0, r1 - cmp r0, 0 - beq _0803B500 - movs r0, 0x80 - lsls r0, 18 - ands r0, r1 - cmp r0, 0 - beq _0803B500 - movs r6, 0x1 - cmp r1, 0 - bge _0803B502 - b _0803B500 - .pool -_0803B4F0: - ldr r1, =gBattleMainFunc - ldr r0, =sub_803B42C - b _0803B572 - .pool -_0803B500: - movs r6, 0 -_0803B502: - ldr r0, =gBattleExecBuffer - ldr r2, [r0] - cmp r2, 0 - bne _0803B574 - ldr r0, =gActiveBank - strb r2, [r0] - ldr r1, =gNoOfAllBanks - adds r4, r0, 0 - ldrb r1, [r1] - cmp r2, r1 - bcs _0803B554 - adds r5, r4, 0 -_0803B51A: - ldrb r0, [r4] - bl GetBankIdentity - lsls r0, 24 - lsrs r0, 24 - cmp r0, r6 - bne _0803B540 - movs r0, 0 - bl dp01_build_cmdbuf_x2F_2F_2F_2F - ldrb r0, [r4] - bl dp01_battle_side_mark_buffer_for_execution - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x40 - ands r0, r1 - cmp r0, 0 - bne _0803B4F0 -_0803B540: - ldrb r0, [r5] - adds r0, 0x1 - strb r0, [r5] - ldr r1, =gNoOfAllBanks - lsls r0, 24 - lsrs r0, 24 - ldr r4, =gActiveBank - ldrb r1, [r1] - cmp r0, r1 - bcc _0803B51A -_0803B554: - ldr r2, =gBattleStruct - ldr r0, [r2] - adds r0, 0x4C - movs r1, 0 - strb r1, [r0] - ldr r0, [r2] - adds r0, 0xD9 - strb r1, [r0] - ldr r0, [r2] - movs r2, 0xD1 - lsls r2, 1 - adds r0, r2 - strb r1, [r0] - ldr r1, =gBattleMainFunc - ldr r0, =sub_803B628 -_0803B572: - str r0, [r1] -_0803B574: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_803B4C8 - - thumb_func_start sub_803B598 -sub_803B598: @ 803B598 - push {r4,r5,lr} - ldr r0, =gBattleExecBuffer - ldr r1, [r0] - cmp r1, 0 - bne _0803B606 - ldr r2, =gActiveBank - strb r1, [r2] - ldr r0, =gNoOfAllBanks - ldrb r0, [r0] - cmp r1, r0 - bcs _0803B5E6 - adds r4, r2, 0 - ldr r5, =gBattlePartyID -_0803B5B2: - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _0803B5D4 - ldrb r0, [r4] - lsls r0, 1 - adds r0, r5 - ldrb r1, [r0] - movs r0, 0 - movs r2, 0 - bl dp01_build_cmdbuf_x05_a_b_c - ldrb r0, [r4] - bl dp01_battle_side_mark_buffer_for_execution -_0803B5D4: - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - ldr r1, =gNoOfAllBanks - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r1] - cmp r0, r1 - bcc _0803B5B2 -_0803B5E6: - ldr r2, =gBattleStruct - ldr r0, [r2] - adds r0, 0x4C - movs r1, 0 - strb r1, [r0] - ldr r0, [r2] - adds r0, 0xD9 - strb r1, [r0] - ldr r0, [r2] - movs r2, 0xD1 - lsls r2, 1 - adds r0, r2 - strb r1, [r0] - ldr r1, =gBattleMainFunc - ldr r0, =sub_803B628 - str r0, [r1] -_0803B606: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_803B598 - - thumb_func_start sub_803B628 -sub_803B628: @ 803B628 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - movs r0, 0 - mov r9, r0 - ldr r0, =gBattleExecBuffer - ldr r0, [r0] - cmp r0, 0 - beq _0803B642 - b _0803B8B2 -_0803B642: - ldr r0, =gBattleStruct - ldr r0, [r0] - adds r0, 0x4C - ldrb r0, [r0] - cmp r0, 0 - bne _0803B6C2 - movs r5, 0 - ldr r1, =gNoOfAllBanks - mov r10, r1 - ldrb r3, [r1] - cmp r5, r3 - bge _0803B668 - ldr r2, =gTurnOrder -_0803B65C: - adds r0, r5, r2 - strb r5, [r0] - adds r5, 0x1 - ldrb r0, [r1] - cmp r5, r0 - blt _0803B65C -_0803B668: - movs r5, 0 - b _0803B6B8 - .pool -_0803B67C: - adds r4, r5, 0x1 - mov r8, r4 - ldrb r1, [r1] - cmp r8, r1 - bge _0803B6B6 - ldr r6, =gTurnOrder - ldr r1, =gNoOfAllBanks - mov r10, r1 - lsls r7, r5, 24 -_0803B68E: - adds r0, r5, r6 - ldrb r0, [r0] - adds r1, r4, r6 - ldrb r1, [r1] - movs r2, 0x1 - bl b_first_side - lsls r0, 24 - cmp r0, 0 - beq _0803B6AC - lsls r1, r4, 24 - lsrs r1, 24 - lsrs r0, r7, 24 - bl sub_803CEDC -_0803B6AC: - adds r4, 0x1 - ldr r0, =gNoOfAllBanks - ldrb r0, [r0] - cmp r4, r0 - blt _0803B68E -_0803B6B6: - mov r5, r8 -_0803B6B8: - mov r1, r10 - ldrb r0, [r1] - subs r0, 0x1 - cmp r5, r0 - blt _0803B67C -_0803B6C2: - ldr r5, =gBattleStruct - ldr r0, [r5] - movs r4, 0xD1 - lsls r4, 1 - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0 - bne _0803B6FC - str r0, [sp] - movs r0, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0xFF - bl AbilityBattleEffects - lsls r0, 24 - cmp r0, 0 - beq _0803B6FC - ldr r0, [r5] - adds r0, r4 - movs r1, 0x1 - strb r1, [r0] - b _0803B8B2 - .pool -_0803B6FC: - ldr r2, =gBattleStruct - ldr r0, [r2] - adds r0, 0x4C - ldr r1, =gNoOfAllBanks - ldrb r0, [r0] - ldrb r1, [r1] - cmp r0, r1 - bcs _0803B756 - ldr r5, =gTurnOrder - adds r4, r2, 0 -_0803B710: - ldr r0, [r4] - adds r0, 0x4C - ldrb r0, [r0] - adds r0, r5 - ldrb r1, [r0] - movs r0, 0 - str r0, [sp] - movs r2, 0 - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - cmp r0, 0 - beq _0803B736 - mov r0, r9 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 -_0803B736: - ldr r1, [r4] - adds r1, 0x4C - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - mov r3, r9 - cmp r3, 0 - beq _0803B748 - b _0803B8B2 -_0803B748: - ldr r0, [r4] - adds r0, 0x4C - ldr r1, =gNoOfAllBanks - ldrb r0, [r0] - ldrb r1, [r1] - cmp r0, r1 - bcc _0803B710 -_0803B756: - movs r0, 0 - str r0, [sp] - movs r0, 0x9 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _0803B770 - b _0803B8B2 -_0803B770: - str r0, [sp] - movs r0, 0xB - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - cmp r0, 0 - beq _0803B786 - b _0803B8B2 -_0803B786: - ldr r2, =gBattleStruct - ldr r0, [r2] - adds r0, 0xD9 - ldr r1, =gNoOfAllBanks - ldrb r0, [r0] - ldrb r1, [r1] - cmp r0, r1 - bcs _0803B7DA - ldr r5, =gTurnOrder - adds r4, r2, 0 -_0803B79A: - ldr r0, [r4] - adds r0, 0xD9 - ldrb r0, [r0] - adds r0, r5 - ldrb r1, [r0] - movs r0, 0 - movs r2, 0 - bl berry_effects_maybe - lsls r0, 24 - cmp r0, 0 - beq _0803B7BC - mov r0, r9 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 -_0803B7BC: - ldr r1, [r4] - adds r1, 0xD9 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - mov r0, r9 - cmp r0, 0 - bne _0803B8B2 - ldr r0, [r4] - adds r0, 0xD9 - ldr r1, =gNoOfAllBanks - ldrb r0, [r0] - ldrb r1, [r1] - cmp r0, r1 - bcc _0803B79A -_0803B7DA: - movs r5, 0 - ldr r1, =gBattleStruct - mov r8, r1 - movs r7, 0x6 - ldr r6, =gUnknown_0202421C - ldr r2, =gUnknown_02024274 - movs r4, 0xFF - movs r3, 0 -_0803B7EA: - mov r1, r8 - ldr r0, [r1] - adds r0, r5, r0 - adds r0, 0x5C - strb r7, [r0] - adds r1, r5, r6 - ldrb r0, [r1] - orrs r0, r4 - strb r0, [r1] - strh r3, [r2] - adds r2, 0x2 - adds r5, 0x1 - cmp r5, 0x3 - ble _0803B7EA - movs r0, 0 - bl sub_803D580 - bl sub_803D6A0 - ldr r0, =gBattleStruct - ldr r0, [r0] - adds r0, 0x91 - ldr r1, =gAbsentBankFlags - ldrb r1, [r1] - strb r1, [r0] - ldr r0, =gUnknown_085CC23E - movs r1, 0 - bl battle_show_message_maybe - ldr r1, =gBattleMainFunc - ldr r0, =sub_803BE74 - str r0, [r1] - bl sub_803F988 - ldr r1, =gBattleCommunication - movs r2, 0 - adds r0, r1, 0x7 -_0803B834: - strb r2, [r0] - subs r0, 0x1 - cmp r0, r1 - bge _0803B834 - movs r5, 0 - ldr r3, =gNoOfAllBanks - ldr r2, =gBattleStruct - ldr r6, =gBattleScripting - ldr r7, =gBattleMoveFlags - ldrb r0, [r3] - cmp r5, r0 - bge _0803B866 - ldr r0, =gBattleMons - movs r4, 0x9 - negs r4, r4 - adds r1, r0, 0 - adds r1, 0x50 -_0803B856: - ldr r0, [r1] - ands r0, r4 - str r0, [r1] - adds r1, 0x58 - adds r5, 0x1 - ldrb r0, [r3] - cmp r5, r0 - blt _0803B856 -_0803B866: - ldr r0, [r2] - movs r1, 0 - strb r1, [r0] - ldr r0, [r2] - strb r1, [r0, 0x1] - ldr r0, [r2] - movs r3, 0xD0 - lsls r3, 1 - adds r0, r3 - strb r1, [r0] - ldr r0, [r2] - adds r3, 0x1 - adds r0, r3 - strb r1, [r0] - movs r1, 0 - strb r1, [r6, 0x14] - ldr r0, [r2] - adds r0, 0x4D - strb r1, [r0] - ldr r0, [r2] - strb r1, [r0, 0x3] - strb r1, [r7] - bl Random - ldr r1, =gUnknown_02024330 - strh r0, [r1] - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 11 - ands r0, r1 - cmp r0, 0 - beq _0803B8B2 - bl StopCryAndClearCrySongs - ldr r0, =gUnknown_082DB8BE - bl b_call_bc_move_exec -_0803B8B2: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_803B628 - - thumb_func_start bc_8013B1C -bc_8013B1C: @ 803B904 - push {r4-r6,lr} - ldr r0, =gBattleExecBuffer - ldr r0, [r0] - cmp r0, 0 - bne _0803B994 - ldr r1, =gBattleMainFunc - ldr r0, =sub_803B9BC - str r0, [r1] - ldr r3, =gNoOfAllBanks - ldr r1, =gBattleCommunication - movs r2, 0 - adds r0, r1, 0x7 -_0803B91C: - strb r2, [r0] - subs r0, 0x1 - cmp r0, r1 - bge _0803B91C - movs r4, 0 - ldrb r3, [r3] - cmp r4, r3 - bge _0803B96E - ldr r5, =gBattleMons - adds r6, r5, 0 - adds r6, 0x4C -_0803B932: - movs r0, 0x58 - adds r2, r4, 0 - muls r2, r0 - adds r1, r5, 0 - adds r1, 0x50 - adds r1, r2, r1 - ldr r3, [r1] - subs r0, 0x61 - ands r3, r0 - str r3, [r1] - adds r2, r6 - ldr r0, [r2] - movs r1, 0x7 - ands r0, r1 - cmp r0, 0 - beq _0803B964 - movs r0, 0x80 - lsls r0, 5 - ands r3, r0 - cmp r3, 0 - beq _0803B964 - lsls r0, r4, 24 - lsrs r0, 24 - bl CancelMultiTurnMoves -_0803B964: - adds r4, 0x1 - ldr r0, =gNoOfAllBanks - ldrb r0, [r0] - cmp r4, r0 - blt _0803B932 -_0803B96E: - ldr r2, =gBattleStruct - ldr r0, [r2] - movs r1, 0 - strb r1, [r0] - ldr r0, [r2] - strb r1, [r0, 0x1] - ldr r0, [r2] - movs r3, 0xD0 - lsls r3, 1 - adds r0, r3 - strb r1, [r0] - ldr r0, [r2] - adds r3, 0x1 - adds r0, r3 - strb r1, [r0] - ldr r0, [r2] - strb r1, [r0, 0x3] - ldr r0, =gBattleMoveFlags - strb r1, [r0] -_0803B994: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end bc_8013B1C - - thumb_func_start sub_803B9BC -sub_803B9BC: @ 803B9BC - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - movs r0, 0x1 - bl sub_803D580 - ldr r0, =gBattleOutcome - ldrb r0, [r0] - cmp r0, 0 - bne _0803B9EA - bl sub_80401D0 - lsls r0, 24 - cmp r0, 0 - beq _0803B9DE - b _0803BB78 -_0803B9DE: - bl sub_8040924 - lsls r0, 24 - cmp r0, 0 - beq _0803B9EA - b _0803BB78 -_0803B9EA: - bl sub_8041728 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - beq _0803B9F8 - b _0803BB78 -_0803B9F8: - ldr r0, =gBattleStruct - ldr r0, [r0] - adds r0, 0x4D - strb r1, [r0] - bl sub_8041364 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - beq _0803BA0E - b _0803BB78 -_0803BA0E: - movs r0, 0 - bl sub_803D580 - ldr r2, =gHitMarker - ldr r0, [r2] - ldr r1, =0xfffffdff - ands r0, r1 - ldr r1, =0xfff7ffff - ands r0, r1 - ldr r1, =0xffbfffff - ands r0, r1 - ldr r1, =0xffefffff - ands r0, r1 - str r0, [r2] - ldr r0, =gBattleScripting - strb r4, [r0, 0x18] - strb r4, [r0, 0x19] - strb r4, [r0, 0x14] - ldr r0, =gBattleMoveDamage - str r4, [r0] - ldr r0, =gBattleMoveFlags - strb r4, [r0] - ldr r1, =gBattleCommunication - movs r2, 0 - adds r0, r1, 0x4 -_0803BA40: - strb r2, [r0] - subs r0, 0x1 - cmp r0, r1 - bge _0803BA40 - ldr r0, =gBattleOutcome - ldrb r0, [r0] - cmp r0, 0 - beq _0803BA98 - ldr r1, =gFightStateTracker - movs r0, 0xC - strb r0, [r1] - ldr r1, =gBattleMainFunc - ldr r0, =bc_bs_exec - str r0, [r1] - b _0803BB78 - .pool -_0803BA98: - ldr r1, =gBattleResults - ldrb r0, [r1, 0x13] - ldr r2, =gBattleStruct - mov r8, r2 - cmp r0, 0xFE - bhi _0803BAB2 - adds r0, 0x1 - strb r0, [r1, 0x13] - ldr r1, [r2] - adds r1, 0xDA - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_0803BAB2: - movs r2, 0 - ldr r4, =gNoOfAllBanks - ldr r0, =gAbsentBankFlags - mov r12, r0 - ldr r1, =gUnknown_085CC23E - mov r9, r1 - ldrb r0, [r4] - cmp r2, r0 - bge _0803BAE0 - ldr r7, =gUnknown_0202421C - movs r6, 0xFF - movs r5, 0 - ldr r3, =gUnknown_02024274 -_0803BACC: - adds r1, r2, r7 - ldrb r0, [r1] - orrs r0, r6 - strb r0, [r1] - strh r5, [r3] - adds r3, 0x2 - adds r2, 0x1 - ldrb r1, [r4] - cmp r2, r1 - blt _0803BACC -_0803BAE0: - movs r2, 0 - ldr r3, =gBattleStruct - movs r1, 0x6 -_0803BAE6: - ldr r0, [r3] - adds r0, r2, r0 - adds r0, 0x5C - strb r1, [r0] - adds r2, 0x1 - cmp r2, 0x3 - ble _0803BAE6 - mov r2, r8 - ldr r0, [r2] - adds r0, 0x91 - mov r2, r12 - ldrb r1, [r2] - strb r1, [r0] - mov r0, r9 - movs r1, 0 - bl battle_show_message_maybe - ldr r1, =gBattleMainFunc - ldr r0, =sub_803BE74 - str r0, [r1] - bl Random - ldr r1, =gUnknown_02024330 - strh r0, [r1] - ldr r0, =gBattleTypeFlags - ldr r1, [r0] - movs r0, 0x80 - lsls r0, 10 - ands r0, r1 - cmp r0, 0 - beq _0803BB5C - ldr r0, =gUnknown_082DB881 - bl b_call_bc_move_exec - b _0803BB78 - .pool -_0803BB5C: - movs r0, 0x80 - lsls r0, 11 - ands r1, r0 - cmp r1, 0 - beq _0803BB78 - mov r1, r8 - ldr r0, [r1] - adds r0, 0xDA - ldrb r0, [r0] - cmp r0, 0 - bne _0803BB78 - ldr r0, =gUnknown_082DB8BE - bl b_call_bc_move_exec -_0803BB78: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_803B9BC - - thumb_func_start sub_803BB88 -sub_803BB88: @ 803BB88 - push {r4-r7,lr} - sub sp, 0x4 - ldr r1, =gBattleMons - ldr r0, =gActiveBank - ldrb r2, [r0] - movs r0, 0x58 - muls r0, r2 - adds r1, r0, r1 - ldrh r0, [r1, 0x2E] - cmp r0, 0xAF - bne _0803BBB8 - ldr r1, =gEnigmaBerries - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r2, [r0, 0x7] - b _0803BBC2 - .pool -_0803BBB8: - ldrh r0, [r1, 0x2E] - bl ItemId_GetHoldEffect - lsls r0, 24 - lsrs r2, r0, 24 -_0803BBC2: - ldr r1, =gUnknown_0202420F - ldr r3, =gActiveBank - ldrb r0, [r3] - strb r0, [r1] - cmp r2, 0x25 - bne _0803BBD0 - b _0803BD4C -_0803BBD0: - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0803BBDE - b _0803BD4C -_0803BBDE: - ldr r1, =gBattleMons - ldrb r2, [r3] - movs r0, 0x58 - muls r0, r2 - adds r0, r1 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x32 - bne _0803BBF2 - b _0803BD4C -_0803BBF2: - adds r0, r2, 0 - bl GetBankSide - lsls r0, 24 - lsrs r6, r0, 24 - movs r5, 0 - ldr r0, =gNoOfAllBanks - ldrb r0, [r0] - cmp r5, r0 - bge _0803BC86 - movs r7, 0 -_0803BC08: - lsrs r4, r7, 24 - adds r0, r4, 0 - bl GetBankSide - lsls r0, 24 - lsrs r0, 24 - cmp r6, r0 - beq _0803BC2C - ldr r1, =gBattleMons - movs r0, 0x58 - muls r0, r5 - adds r0, r1 - adds r2, r0, 0 - adds r2, 0x20 - ldrb r0, [r2] - cmp r0, 0x17 - bne _0803BC2C - b _0803BD54 -_0803BC2C: - adds r0, r4, 0 - bl GetBankSide - lsls r0, 24 - lsrs r0, 24 - cmp r6, r0 - beq _0803BC76 - ldr r3, =gBattleMons - ldr r0, =gActiveBank - ldrb r0, [r0] - movs r2, 0x58 - muls r0, r2 - adds r1, r0, r3 - adds r0, r1, 0 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x1A - beq _0803BC76 - adds r0, r1, 0 - adds r0, 0x21 - ldrb r0, [r0] - cmp r0, 0x2 - beq _0803BC76 - adds r0, r1, 0 - adds r0, 0x22 - ldrb r0, [r0] - cmp r0, 0x2 - beq _0803BC76 - adds r0, r5, 0 - muls r0, r2 - adds r0, r3 - adds r2, r0, 0 - adds r2, 0x20 - ldrb r0, [r2] - cmp r0, 0x47 - bne _0803BC76 - b _0803BD70 -_0803BC76: - movs r0, 0x80 - lsls r0, 17 - adds r7, r0 - adds r5, 0x1 - ldr r0, =gNoOfAllBanks - ldrb r0, [r0] - cmp r5, r0 - blt _0803BC08 -_0803BC86: - ldr r4, =gActiveBank - ldrb r1, [r4] - movs r0, 0 - str r0, [sp] - movs r0, 0xF - movs r2, 0x2A - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0 - beq _0803BCF8 - ldr r6, =gBattleMons - ldrb r0, [r4] - movs r3, 0x58 - muls r0, r3 - adds r1, r0, r6 - adds r0, r1, 0 - adds r0, 0x21 - ldrb r0, [r0] - cmp r0, 0x8 - beq _0803BCBE - adds r0, r1, 0 - adds r0, 0x22 - ldrb r0, [r0] - cmp r0, 0x8 - bne _0803BCF8 -_0803BCBE: - ldr r0, =gBattleScripting - subs r1, r5, 0x1 - strb r1, [r0, 0x17] - ldr r2, =gLastUsedAbility - adds r0, r1, 0 - muls r0, r3 - adds r0, r6 - adds r0, 0x20 - ldrb r0, [r0] - strb r0, [r2] - ldr r1, =gBattleCommunication - movs r0, 0x2 - b _0803BD90 - .pool -_0803BCF8: - ldr r1, =gBattleMons - ldr r0, =gActiveBank - ldrb r2, [r0] - movs r0, 0x58 - muls r0, r2 - adds r1, 0x50 - adds r0, r1 - ldr r0, [r0] - ldr r1, =0x0400e000 - ands r0, r1 - cmp r0, 0 - bne _0803BD22 - ldr r1, =gStatuses3 - lsls r0, r2, 2 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 3 - ands r0, r1 - cmp r0, 0 - beq _0803BD40 -_0803BD22: - ldr r1, =gBattleCommunication - movs r0, 0 - strb r0, [r1, 0x5] - movs r0, 0x1 - b _0803BD92 - .pool -_0803BD40: - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x10 - ands r0, r1 - cmp r0, 0 - bne _0803BD8C -_0803BD4C: - movs r0, 0 - b _0803BD92 - .pool -_0803BD54: - ldr r0, =gBattleScripting - strb r5, [r0, 0x17] - ldr r1, =gLastUsedAbility - ldrb r0, [r2] - strb r0, [r1] - ldr r1, =gBattleCommunication - movs r0, 0x2 - b _0803BD90 - .pool -_0803BD70: - ldr r0, =gBattleScripting - strb r5, [r0, 0x17] - ldr r1, =gLastUsedAbility - ldrb r0, [r2] - strb r0, [r1] - ldr r1, =gBattleCommunication - movs r0, 0x2 - b _0803BD90 - .pool -_0803BD8C: - ldr r1, =gBattleCommunication - movs r0, 0x1 -_0803BD90: - strb r0, [r1, 0x5] -_0803BD92: - add sp, 0x4 - pop {r4-r7} - pop {r1} - bx r1 - .pool - thumb_func_end sub_803BB88 - - thumb_func_start sub_803BDA0 -sub_803BDA0: @ 803BDA0 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r5, r0, 24 - movs r3, 0 - ldr r0, =gBattlePartyID - mov r8, r0 - ldr r1, =gUnknown_0203CF00 - mov r12, r1 - ldr r7, =gBattleStruct - lsls r0, r5, 1 - adds r4, r0, r5 - adds r6, r0, 0 -_0803BDBC: - mov r0, r12 - adds r2, r3, r0 - ldr r1, [r7] - adds r0, r4, r3 - adds r0, r1 - adds r0, 0x60 - ldrb r0, [r0] - strb r0, [r2] - adds r3, 0x1 - cmp r3, 0x2 - ble _0803BDBC - mov r1, r8 - adds r0, r6, r1 - ldrb r0, [r0] - bl pokemon_order_func - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r7, =gBattleStruct - ldr r0, [r7] - adds r0, r5, r0 - adds r0, 0x5C - ldrb r0, [r0] - bl pokemon_order_func - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl sub_81B8FB0 - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0803BE4C - movs r3, 0 - adds r4, r7, 0 - adds r6, r5 - movs r0, 0x2 - adds r1, r5, 0 - eors r1, r0 - ldr r7, =gUnknown_0203CF00 - lsls r0, r1, 1 - adds r5, r0, r1 -_0803BE1A: - ldr r0, [r4] - adds r1, r6, r3 - adds r1, r0 - adds r1, 0x60 - adds r2, r3, r7 - ldrb r0, [r2] - strb r0, [r1] - ldr r1, [r4] - adds r0, r5, r3 - adds r0, r1 - adds r0, 0x60 - ldrb r1, [r2] - strb r1, [r0] - adds r3, 0x1 - cmp r3, 0x2 - ble _0803BE1A - b _0803BE66 - .pool -_0803BE4C: - movs r3, 0 - adds r2, r6, r5 - ldr r4, =gUnknown_0203CF00 -_0803BE52: - ldr r0, [r7] - adds r1, r2, r3 - adds r1, r0 - adds r1, 0x60 - adds r0, r3, r4 - ldrb r0, [r0] - strb r0, [r1] - adds r3, 0x1 - cmp r3, 0x2 - ble _0803BE52 -_0803BE66: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_803BDA0 - - thumb_func_start sub_803BE74 -sub_803BE74: @ 803BE74 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x1C - ldr r0, =gBattleCommunication - movs r1, 0 - strb r1, [r0, 0x4] - ldr r0, =gActiveBank - strb r1, [r0] - ldr r0, =gNoOfAllBanks - bl _0803CD12 - .pool -_0803BE9C: - ldr r4, =gActiveBank - ldrb r0, [r4] - bl GetBankIdentity - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, =gBattleCommunication - ldrb r0, [r4] - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x8 - bls _0803BEB8 - bl _0803CD04 -_0803BEB8: - lsls r0, 2 - ldr r1, =_0803BED0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_0803BED0: - .4byte _0803BEF4 - .4byte _0803BF0C - .4byte _0803C02C - .4byte _0803C7D8 - .4byte _0803CAD0 - .4byte _0803CB84 - .4byte _0803CBC8 - .4byte _0803CBF4 - .4byte _0803CC38 -_0803BEF4: - bl sub_8185FD0 - ldr r1, =gBattleCommunication - ldr r0, =gActiveBank - ldrb r0, [r0] - adds r0, r1 - bl _0803CC20 - .pool -_0803BF0C: - ldr r0, =gActiveBank - ldrb r1, [r0] - ldr r4, =gBattleStruct - ldr r0, [r4] - adds r1, r0 - adds r1, 0x5C - movs r0, 0x6 - strb r0, [r1] - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x40 - ands r0, r1 - cmp r0, 0 - bne _0803BF68 - movs r1, 0x2 - movs r0, 0x2 - ands r0, r5 - cmp r0, 0 - beq _0803BF68 - eors r5, r1 - adds r0, r5, 0 - bl GetBankByPlayerAI - ldr r1, [r4] - adds r1, 0x91 - ldrb r1, [r1] - ldr r2, =gBitTable - lsls r0, 24 - lsrs r0, 22 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - bne _0803BF68 - ldr r4, =gBattleCommunication - adds r0, r5, 0 - bl GetBankByPlayerAI - lsls r0, 24 - lsrs r0, 24 - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0x5 - beq _0803BF68 - bl _0803CD04 -_0803BF68: - ldr r0, =gBattleStruct - ldr r0, [r0] - adds r0, 0x91 - ldrb r3, [r0] - ldr r1, =gBitTable - ldr r4, =gActiveBank - ldrb r2, [r4] - lsls r0, r2, 2 - adds r0, r1 - ldr r0, [r0] - ands r3, r0 - cmp r3, 0 - beq _0803BFD0 - ldr r0, =gUnknown_0202421C - adds r0, r2, r0 - movs r1, 0xD - strb r1, [r0] - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x40 - ands r0, r1 - cmp r0, 0 - bne _0803BFBC - ldr r0, =gBattleCommunication - ldrb r1, [r4] - adds r1, r0 - movs r0, 0x5 - strb r0, [r1] - bl _0803CD04 - .pool -_0803BFBC: - ldr r0, =gBattleCommunication - ldrb r1, [r4] - adds r1, r0 - movs r0, 0x4 - strb r0, [r1] - bl _0803CD04 - .pool -_0803BFD0: - ldr r1, =gBattleMons - movs r0, 0x58 - muls r0, r2 - adds r1, 0x50 - adds r0, r1 - ldr r1, [r0] - movs r0, 0x80 - lsls r0, 5 - ands r0, r1 - cmp r0, 0 - bne _0803BFF0 - movs r0, 0x80 - lsls r0, 15 - ands r1, r0 - cmp r1, 0 - beq _0803C00C -_0803BFF0: - ldr r0, =gUnknown_0202421C - adds r0, r2, r0 - strb r3, [r0] - ldr r1, =gBattleCommunication - ldrb r0, [r4] - bl _0803CC72 - .pool -_0803C00C: - ldr r0, =gUnknown_0202421C - ldrb r1, [r0] - ldr r0, =gBattleBufferB - ldrb r2, [r0, 0x1] - ldrb r0, [r0, 0x2] - lsls r0, 8 - orrs r2, r0 - movs r0, 0 - bl dp01_build_cmdbuf_x12_a_bb - bl _0803CB68 - .pool -_0803C02C: - ldr r3, =gBattleExecBuffer - ldr r1, =gBitTable - ldr r6, =gActiveBank - ldrb r5, [r6] - lsls r0, r5, 2 - adds r0, r1 - ldr r2, [r0] - lsls r1, r2, 4 - movs r0, 0xF0 - lsls r0, 24 - orrs r1, r0 - orrs r1, r2 - lsls r0, r2, 8 - orrs r1, r0 - lsls r2, 12 - orrs r1, r2 - ldr r0, [r3] - ands r0, r1 - cmp r0, 0 - beq _0803C058 - bl _0803CD04 -_0803C058: - ldr r4, =gBattleBufferB - lsls r0, r5, 9 - adds r4, 0x1 - adds r0, r4 - ldrb r1, [r0] - adds r0, r5, 0 - bl sub_8184FBC - ldr r1, =gUnknown_0202421C - ldrb r0, [r6] - adds r1, r0, r1 - lsls r0, 9 - adds r0, r4 - ldrb r0, [r0] - strb r0, [r1] - ldrb r0, [r6] - lsls r0, 9 - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0xC - bls _0803C084 - b _0803C6C4 -_0803C084: - lsls r0, 2 - ldr r1, =_0803C0A8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_0803C0A8: - .4byte _0803C0DC - .4byte _0803C230 - .4byte _0803C268 - .4byte _0803C6C4 - .4byte _0803C6C4 - .4byte _0803C440 - .4byte _0803C48C - .4byte _0803C6C4 - .4byte _0803C6C4 - .4byte _0803C6C4 - .4byte _0803C6C4 - .4byte _0803C6C4 - .4byte _0803C4B4 -_0803C0DC: - bl sub_80400C8 - lsls r0, 24 - cmp r0, 0 - beq _0803C134 - ldr r0, =gBattleCommunication - ldr r3, =gActiveBank - ldrb r1, [r3] - adds r1, r0 - movs r4, 0 - movs r0, 0x6 - strb r0, [r1] - ldrb r1, [r3] - ldr r2, =gBattleStruct - ldr r0, [r2] - adds r1, r0 - adds r1, 0x54 - strb r4, [r1] - ldrb r1, [r3] - ldr r0, [r2] - adds r1, r0 - adds r1, 0x84 - movs r0, 0x4 - strb r0, [r1] - ldrb r1, [r3] - ldr r2, [r2] - adds r2, r1, r2 - ldr r0, =gBattleBufferB - lsls r1, 9 - adds r0, 0x3 - adds r1, r0 - ldrb r0, [r1] - strb r0, [r2, 0xC] - bl _0803CD70 - .pool -_0803C134: - ldr r3, =gDisableStructs - ldr r5, =gActiveBank - ldrb r4, [r5] - lsls r0, r4, 3 - subs r0, r4 - lsls r0, 2 - adds r0, r3 - ldrh r2, [r0, 0x6] - cmp r2, 0 - beq _0803C188 - ldr r1, =gUnknown_02024274 - lsls r0, r4, 1 - adds r0, r1 - strh r2, [r0] - ldrb r2, [r5] - ldr r0, =gBattleStruct - ldr r1, [r0] - adds r1, r2, r1 - adds r1, 0x80 - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r0, r3 - ldrb r0, [r0, 0xC] - strb r0, [r1] - ldr r1, =gBattleCommunication - ldrb r0, [r5] - adds r0, r1 - movs r1, 0x4 - strb r1, [r0] - bl _0803CD70 - .pool -_0803C188: - add r2, sp, 0x4 - ldr r3, =gBattleMons - movs r1, 0x58 - adds r0, r4, 0 - muls r0, r1 - adds r0, r3 - ldrh r0, [r0] - strh r0, [r2, 0x10] - ldrb r0, [r5] - muls r0, r1 - adds r0, r3 - adds r0, 0x21 - ldrb r0, [r0] - strb r0, [r2, 0x12] - ldrb r0, [r5] - muls r0, r1 - adds r0, r3 - adds r0, 0x22 - ldrb r0, [r0] - strb r0, [r2, 0x13] - movs r4, 0 - mov r1, sp - adds r1, 0xC - str r1, [sp, 0x18] - add r2, sp, 0x10 - mov r10, r2 - mov r8, r3 - adds r7, r5, 0 - movs r6, 0x58 - movs r0, 0xC - add r0, r8 - mov r9, r0 - add r5, sp, 0x4 -_0803C1CA: - lsls r2, r4, 1 - ldrb r0, [r7] - muls r0, r6 - adds r0, r2, r0 - add r0, r9 - ldrh r0, [r0] - strh r0, [r5] - ldr r1, [sp, 0x18] - adds r3, r1, r4 - ldrb r0, [r7] - muls r0, r6 - adds r0, r4, r0 - mov r1, r8 - adds r1, 0x24 - adds r0, r1 - ldrb r0, [r0] - strb r0, [r3] - ldrb r0, [r7] - adds r1, r0, 0 - muls r1, r6 - adds r2, r1 - add r2, r9 - ldrh r0, [r2] - add r1, r8 - adds r1, 0x3B - ldrb r1, [r1] - lsls r2, r4, 24 - lsrs r2, 24 - bl CalculatePPWithBonus - mov r2, r10 - adds r1, r2, r4 - strb r0, [r1] - adds r5, 0x2 - adds r4, 0x1 - cmp r4, 0x3 - ble _0803C1CA - ldr r0, =gBattleTypeFlags - ldr r1, [r0] - movs r0, 0x1 - ands r1, r0 - movs r0, 0 - movs r2, 0 - add r3, sp, 0x4 - bl sub_8033E30 - b _0803C42E - .pool -_0803C230: - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - ldr r1, =0x021f0902 - ands r0, r1 - cmp r0, 0 - bne _0803C23E - b _0803C48C -_0803C23E: - ldr r4, =gActiveBank - ldrb r0, [r4] - movs r1, 0x1 - bl sub_8185008 - ldr r1, =gUnknown_02024220 - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, =gUnknown_082DB879 - b _0803C784 - .pool -_0803C268: - ldr r5, =gActiveBank - ldrb r0, [r5] - ldr r3, =gBattleStruct - ldr r1, [r3] - adds r1, r0, r1 - adds r1, 0x58 - ldr r2, =gBattlePartyID - lsls r0, 1 - adds r0, r2 - ldrh r0, [r0] - strb r0, [r1] - ldr r7, =gBattleMons - ldrb r2, [r5] - movs r6, 0x58 - adds r0, r2, 0 - muls r0, r6 - adds r1, r7, 0 - adds r1, 0x50 - adds r0, r1 - ldr r1, [r0] - ldr r0, =0x0400e000 - ands r1, r0 - cmp r1, 0 - bne _0803C2B8 - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 11 - ands r0, r1 - cmp r0, 0 - bne _0803C2B8 - ldr r0, =gStatuses3 - lsls r1, r2, 2 - adds r1, r0 - ldr r1, [r1] - movs r0, 0x80 - lsls r0, 3 - ands r1, r0 - cmp r1, 0 - beq _0803C2EC -_0803C2B8: - ldr r0, =gActiveBank - ldrb r0, [r0] - lsls r1, r0, 1 - adds r1, r0 - adds r1, 0x60 - ldr r0, [r3] - adds r0, r1 - str r0, [sp] - movs r0, 0 - movs r1, 0x2 - movs r2, 0x6 - b _0803C400 - .pool -_0803C2EC: - str r1, [sp] - movs r0, 0xC - adds r1, r2, 0 - movs r2, 0x17 - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _0803C374 - ldrb r1, [r5] - str r4, [sp] - movs r0, 0xC - movs r2, 0x47 - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - beq _0803C33C - ldrb r0, [r5] - muls r0, r6 - adds r1, r0, r7 - adds r0, r1, 0 - adds r0, 0x21 - ldrb r0, [r0] - cmp r0, 0x2 - beq _0803C33C - adds r0, r1, 0 - adds r0, 0x22 - ldrb r0, [r0] - cmp r0, 0x2 - beq _0803C33C - adds r0, r1, 0 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x1A - bne _0803C374 -_0803C33C: - ldr r5, =gActiveBank - ldrb r1, [r5] - movs r0, 0 - str r0, [sp] - movs r0, 0xF - movs r2, 0x2A - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - beq _0803C3B0 - ldr r2, =gBattleMons - ldrb r1, [r5] - movs r0, 0x58 - muls r0, r1 - adds r1, r0, r2 - adds r0, r1, 0 - adds r0, 0x21 - ldrb r0, [r0] - cmp r0, 0x8 - beq _0803C374 - adds r0, r1, 0 - adds r0, 0x22 - ldrb r0, [r0] - cmp r0, 0x8 - bne _0803C3B0 -_0803C374: - subs r1, r4, 0x1 - lsls r1, 4 - movs r0, 0x4 - orrs r1, r0 - lsls r1, 24 - lsrs r1, 24 - ldr r0, =gLastUsedAbility - ldrb r3, [r0] - ldr r4, =gBattleStruct - ldr r0, =gActiveBank - ldrb r0, [r0] - lsls r2, r0, 1 - adds r2, r0 - adds r2, 0x60 - ldr r0, [r4] - adds r0, r2 - str r0, [sp] - movs r0, 0 - movs r2, 0x6 - bl dp01_build_cmdbuf_x16_a_b_c_ptr_d_e_f - b _0803C42E - .pool -_0803C3B0: - ldr r0, =gActiveBank - ldrb r1, [r0] - adds r4, r0, 0 - cmp r1, 0x2 - bne _0803C3D8 - ldr r0, =gUnknown_0202421C - ldrb r0, [r0] - cmp r0, 0x2 - bne _0803C3D8 - ldr r0, =gBattleStruct - ldr r3, [r0] - adds r0, r3, 0 - adds r0, 0x5C - b _0803C3EE - .pool -_0803C3D8: - ldrb r0, [r4] - cmp r0, 0x3 - bne _0803C410 - ldr r0, =gUnknown_0202421C - ldrb r0, [r0, 0x1] - cmp r0, 0x2 - bne _0803C410 - ldr r0, =gBattleStruct - ldr r3, [r0] - adds r0, r3, 0 - adds r0, 0x5D -_0803C3EE: - ldrb r2, [r0] - ldrb r1, [r4] - lsls r0, r1, 1 - adds r0, r1 - adds r0, 0x60 - adds r3, r0 - str r3, [sp] - movs r0, 0 - movs r1, 0 -_0803C400: - movs r3, 0 - bl dp01_build_cmdbuf_x16_a_b_c_ptr_d_e_f - b _0803C42E - .pool -_0803C410: - ldr r2, =gBattleStruct - ldr r0, =gActiveBank - ldrb r0, [r0] - lsls r1, r0, 1 - adds r1, r0 - adds r1, 0x60 - ldr r0, [r2] - adds r0, r1 - str r0, [sp] - movs r0, 0 - movs r1, 0 - movs r2, 0x6 - movs r3, 0 - bl dp01_build_cmdbuf_x16_a_b_c_ptr_d_e_f -_0803C42E: - ldr r0, =gActiveBank - ldrb r0, [r0] - bl dp01_battle_side_mark_buffer_for_execution - b _0803C6C4 - .pool -_0803C440: - bl PlayerPartyAndPokemonStorageFull - lsls r0, 24 - cmp r0, 0 - bne _0803C44C - b _0803C6C4 -_0803C44C: - ldr r1, =gUnknown_02024220 - ldr r3, =gActiveBank - ldrb r0, [r3] - lsls r0, 2 - adds r0, r1 - ldr r1, =gUnknown_082DAB11 - str r1, [r0] - ldr r0, =gBattleCommunication - ldrb r1, [r3] - adds r1, r0 - movs r4, 0 - movs r0, 0x6 - strb r0, [r1] - ldrb r1, [r3] - ldr r2, =gBattleStruct - ldr r0, [r2] - adds r1, r0 - adds r1, 0x54 - strb r4, [r1] - ldrb r1, [r3] - b _0803C7A0 - .pool -_0803C48C: - ldr r2, =gBattleStruct - ldr r4, =gActiveBank - ldrb r1, [r4] - lsls r0, r1, 1 - adds r0, r1 - adds r0, 0x60 - ldr r1, [r2] - adds r1, r0 - movs r0, 0 - bl sub_8033E6C - ldrb r0, [r4] - bl dp01_battle_side_mark_buffer_for_execution - b _0803C6C4 - .pool -_0803C4B4: - ldr r4, =gBattleCommunication - ldr r5, =gActiveBank - ldrb r0, [r5] - adds r0, r4 - movs r1, 0x7 - strb r1, [r0] - ldrb r0, [r5] - bl GetBankIdentity - movs r6, 0x2 - eors r0, r6 - lsls r0, 24 - lsrs r0, 24 - bl GetBankByPlayerAI - lsls r0, 24 - lsrs r0, 24 - adds r0, r4 - movs r1, 0x1 - strb r1, [r0] - ldrb r0, [r5] - bl sub_8185008 - ldrb r0, [r5] - bl GetBankIdentity - eors r0, r6 - lsls r0, 24 - lsrs r0, 24 - bl GetBankByPlayerAI - ldr r1, =gBattleMons - lsls r0, 24 - lsrs r0, 24 - movs r7, 0x58 - muls r0, r7 - adds r4, r1, 0 - adds r4, 0x50 - adds r0, r4 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 5 - ands r0, r1 - cmp r0, 0 - bne _0803C532 - ldrb r0, [r5] - bl GetBankIdentity - eors r0, r6 - lsls r0, 24 - lsrs r0, 24 - bl GetBankByPlayerAI - lsls r0, 24 - lsrs r0, 24 - muls r0, r7 - adds r0, r4 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 15 - ands r0, r1 - cmp r0, 0 - beq _0803C550 -_0803C532: - movs r0, 0 - bl dp01_build_cmdbuf_x32_32_32_32 - ldrb r0, [r5] - bl dp01_battle_side_mark_buffer_for_execution - bl _0803CD70 - .pool -_0803C550: - ldr r4, =gUnknown_0202421C - ldrb r0, [r5] - bl GetBankIdentity - eors r0, r6 - lsls r0, 24 - lsrs r0, 24 - bl GetBankByPlayerAI - lsls r0, 24 - lsrs r0, 24 - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0x2 - bne _0803C590 - ldrb r0, [r5] - bl GetBankIdentity - eors r0, r6 - lsls r0, 24 - lsrs r0, 24 - bl GetBankByPlayerAI - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x2 - bl sub_8185008 - b _0803C6AE - .pool -_0803C590: - ldrb r0, [r5] - bl GetBankIdentity - eors r0, r6 - lsls r0, 24 - lsrs r0, 24 - bl GetBankByPlayerAI - lsls r0, 24 - lsrs r0, 24 - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0x3 - bne _0803C5B6 - ldrb r0, [r5] - bl GetBankIdentity - eors r0, r6 - b _0803C668 -_0803C5B6: - ldrb r0, [r5] - bl GetBankIdentity - eors r0, r6 - lsls r0, 24 - lsrs r0, 24 - bl GetBankByPlayerAI - lsls r0, 24 - lsrs r0, 24 - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0 - bne _0803C628 - ldr r4, =gProtectStructs - ldrb r0, [r5] - bl GetBankIdentity - eors r0, r6 - lsls r0, 24 - lsrs r0, 24 - bl GetBankByPlayerAI - lsls r0, 24 - lsrs r0, 20 - adds r0, r4 - ldrb r0, [r0] - lsls r0, 29 - cmp r0, 0 - blt _0803C616 - ldr r4, =gDisableStructs - ldrb r0, [r5] - bl GetBankIdentity - eors r0, r6 - lsls r0, 24 - lsrs r0, 24 - bl GetBankByPlayerAI - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r1, r4 - ldrh r0, [r1, 0x6] - cmp r0, 0 - beq _0803C628 -_0803C616: - ldrb r0, [r5] - bl GetBankIdentity - eors r0, r6 - b _0803C668 - .pool -_0803C628: - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 10 - ands r0, r1 - cmp r0, 0 - beq _0803C690 - ldr r4, =gUnknown_0202421C - ldr r6, =gActiveBank - ldrb r0, [r6] - bl GetBankIdentity - movs r5, 0x2 - eors r0, r5 - lsls r0, 24 - lsrs r0, 24 - bl GetBankByPlayerAI - lsls r0, 24 - lsrs r0, 24 - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0 - bne _0803C690 - ldr r1, =gRngValue - ldr r0, =gUnknown_0203BD30 - ldr r0, [r0] - str r0, [r1] - ldrb r0, [r6] - bl GetBankIdentity - eors r0, r5 -_0803C668: - lsls r0, 24 - lsrs r0, 24 - bl GetBankByPlayerAI - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x1 - bl sub_8185008 - b _0803C6AE - .pool -_0803C690: - ldr r0, =gActiveBank - ldrb r0, [r0] - bl GetBankIdentity - movs r1, 0x2 - eors r0, r1 - lsls r0, 24 - lsrs r0, 24 - bl GetBankByPlayerAI - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x3 - bl sub_8185008 -_0803C6AE: - movs r0, 0 - bl dp01_build_cmdbuf_x32_32_32_32 - ldr r0, =gActiveBank - ldrb r0, [r0] - bl dp01_battle_side_mark_buffer_for_execution - b _0803CD70 - .pool -_0803C6C4: - ldr r1, =gBattleTypeFlags - ldr r2, [r1] - movs r5, 0x8 - adds r0, r2, 0 - ands r0, r5 - adds r3, r1, 0 - cmp r0, 0 - beq _0803C720 - ldr r0, =0x043f0100 - ands r2, r0 - cmp r2, 0 - beq _0803C720 - ldr r0, =gBattleBufferB - ldr r4, =gActiveBank - ldrb r2, [r4] - lsls r1, r2, 9 - adds r0, 0x1 - adds r1, r0 - ldrb r0, [r1] - cmp r0, 0x3 - bne _0803C720 - ldr r1, =gUnknown_02024220 - lsls r0, r2, 2 - adds r0, r1 - ldr r1, =gUnknown_082DB9BA - str r1, [r0] - ldr r1, =gBattleCommunication - ldrb r0, [r4] - adds r0, r1 - movs r3, 0 - strb r5, [r0] - b _0803C792 - .pool -_0803C720: - ldr r0, [r3] - ldr r1, =0x0200000a - ands r0, r1 - cmp r0, 0x8 - bne _0803C760 - ldr r0, =gBattleBufferB - ldr r4, =gActiveBank - ldrb r1, [r4] - lsls r1, 9 - adds r0, 0x1 - adds r1, r0 - ldrb r0, [r1] - cmp r0, 0x3 - bne _0803C760 - ldr r0, =gUnknown_082DAAFE - bl b_call_bc_move_exec - ldr r1, =gBattleCommunication - ldrb r0, [r4] - adds r0, r1 - b _0803CC20 - .pool -_0803C760: - bl sub_803BB88 - lsls r0, 24 - cmp r0, 0 - beq _0803C7C4 - ldr r0, =gBattleBufferB - ldr r4, =gActiveBank - ldrb r2, [r4] - lsls r1, r2, 9 - adds r0, 0x1 - adds r1, r0 - ldrb r0, [r1] - cmp r0, 0x3 - bne _0803C7C4 - ldr r1, =gUnknown_02024220 - lsls r0, r2, 2 - adds r0, r1 - ldr r1, =gUnknown_082DAB0B -_0803C784: - str r1, [r0] - ldr r0, =gBattleCommunication - ldrb r1, [r4] - adds r1, r0 - movs r3, 0 - movs r0, 0x6 - strb r0, [r1] -_0803C792: - ldrb r1, [r4] - ldr r2, =gBattleStruct - ldr r0, [r2] - adds r1, r0 - adds r1, 0x54 - strb r3, [r1] - ldrb r1, [r4] -_0803C7A0: - ldr r0, [r2] - adds r1, r0 - adds r1, 0x84 - movs r0, 0x1 - strb r0, [r1] - b _0803CD70 - .pool -_0803C7C4: - ldr r2, =gBattleCommunication - ldr r0, =gActiveBank - ldrb r1, [r0] - adds r1, r2 - b _0803CB74 - .pool -_0803C7D8: - ldr r4, =gBattleExecBuffer - ldr r1, =gBitTable - ldr r3, =gActiveBank - ldrb r5, [r3] - lsls r0, r5, 2 - adds r0, r1 - ldr r2, [r0] - lsls r0, r2, 4 - movs r1, 0xF0 - lsls r1, 24 - orrs r0, r1 - orrs r0, r2 - lsls r1, r2, 8 - orrs r0, r1 - lsls r2, 12 - orrs r0, r2 - ldr r1, [r4] - ands r1, r0 - adds r4, r3, 0 - cmp r1, 0 - beq _0803C804 - b _0803CD04 -_0803C804: - ldr r1, =gUnknown_0202421C - adds r0, r5, r1 - ldrb r0, [r0] - adds r2, r1, 0 - cmp r0, 0x9 - bls _0803C812 - b _0803CD04 -_0803C812: - lsls r0, 2 - ldr r1, =_0803C830 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_0803C830: - .4byte _0803C858 - .4byte _0803C99C - .4byte _0803C9D4 - .4byte _0803CA0A - .4byte _0803CA2C - .4byte _0803CA40 - .4byte _0803CA54 - .4byte _0803CA84 - .4byte _0803CA98 - .4byte _0803CABC -_0803C858: - ldr r1, =gBattleBufferB - ldrb r3, [r4] - lsls r0, r3, 9 - adds r1, 0x1 - adds r0, r1 - ldrb r1, [r0] - cmp r1, 0x3 - blt _0803C88A - cmp r1, 0x9 - ble _0803C878 - cmp r1, 0xF - beq _0803C87E - b _0803C88A - .pool -_0803C878: - adds r0, r3, r2 - strb r1, [r0] - b _0803CD70 -_0803C87E: - adds r1, r3, r2 - movs r0, 0x2 - strb r0, [r1] - bl sub_803CDF8 - b _0803CD70 -_0803C88A: - movs r0, 0x2 - bl sub_818603C - ldr r4, =gBattleBufferB - ldr r6, =gActiveBank - ldrb r3, [r6] - lsls r1, r3, 9 - adds r5, r4, 0x2 - adds r0, r1, r5 - ldrb r2, [r0] - adds r7, r4, 0x3 - adds r1, r7 - ldrb r0, [r1] - lsls r0, 8 - orrs r2, r0 - ldr r0, =0x0000ffff - cmp r2, r0 - bne _0803C8D0 - ldr r0, =gBattleCommunication - adds r0, r3, r0 - movs r1, 0x1 - strb r1, [r0] - ldrb r0, [r6] - bl sub_8185008 - b _0803CD04 - .pool -_0803C8D0: - bl sub_803FB4C - lsls r0, 24 - cmp r0, 0 - beq _0803C91C - ldrb r0, [r6] - movs r1, 0x1 - bl sub_8185008 - ldr r0, =gBattleCommunication - ldrb r1, [r6] - adds r1, r0 - movs r3, 0 - movs r0, 0x6 - strb r0, [r1] - ldrb r1, [r6] - ldr r2, =gBattleStruct - ldr r0, [r2] - adds r1, r0 - adds r1, 0x54 - strb r3, [r1] - ldrb r0, [r6] - lsls r0, 9 - adds r1, r4, 0x1 - adds r0, r1 - strb r3, [r0] - ldrb r1, [r6] - ldr r0, [r2] - adds r1, r0 - adds r1, 0x84 - movs r0, 0x2 - strb r0, [r1] - b _0803CD70 - .pool -_0803C91C: - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 10 - ands r0, r1 - cmp r0, 0 - bne _0803C942 - ldrb r0, [r6] - lsls r1, r0, 9 - adds r1, r5 - ldrb r1, [r1] - bl sub_8184FBC - ldrb r0, [r6] - lsls r1, r0, 9 - adds r1, r7 - ldrb r1, [r1] - bl sub_8184FBC -_0803C942: - ldrb r0, [r6] - ldr r4, =gBattleStruct - ldr r1, [r4] - adds r1, r0, r1 - adds r1, 0x80 - lsls r0, 9 - adds r0, r5 - ldrb r0, [r0] - strb r0, [r1] - ldr r0, =gUnknown_02024274 - ldrb r2, [r6] - lsls r5, r2, 1 - adds r5, r0 - ldr r3, =gBattleMons - ldr r4, [r4] - adds r0, r2, r4 - adds r0, 0x80 - ldrb r0, [r0] - lsls r0, 1 - movs r1, 0x58 - muls r1, r2 - adds r0, r1 - adds r3, 0xC - adds r0, r3 - ldrh r0, [r0] - strh r0, [r5] - ldrb r0, [r6] - adds r4, r0, r4 - lsls r0, 9 - adds r0, r7 - ldrb r0, [r0] - strb r0, [r4, 0xC] - ldr r0, =gBattleCommunication - ldrb r1, [r6] - b _0803CB72 - .pool -_0803C99C: - ldr r2, =gBattleBufferB - ldr r5, =gActiveBank - ldrb r4, [r5] - lsls r1, r4, 9 - adds r0, r2, 0x1 - adds r0, r1, r0 - ldrb r3, [r0] - adds r2, 0x2 - adds r1, r2 - ldrb r0, [r1] - lsls r0, 8 - orrs r3, r0 - cmp r3, 0 - bne _0803C9BA - b _0803CC1C -_0803C9BA: - ldr r0, =gLastUsedItem - strh r3, [r0] - ldr r0, =gBattleCommunication - ldrb r1, [r5] - b _0803CB72 - .pool -_0803C9D4: - ldr r0, =gBattleBufferB - ldr r4, =gActiveBank - ldrb r2, [r4] - lsls r1, r2, 9 - adds r0, 0x1 - adds r1, r0 - ldrb r0, [r1] - cmp r0, 0x6 - bne _0803CA04 - ldr r0, =gBattleCommunication - adds r0, r2, r0 - movs r1, 0x1 - strb r1, [r0] - ldrb r0, [r4] - bl sub_8185008 - b _0803CD04 - .pool -_0803CA04: - bl sub_803CDF8 - b _0803CB6E -_0803CA0A: - ldr r2, =gHitMarker - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 8 - orrs r0, r1 - str r0, [r2] - ldr r2, =gBattleCommunication - ldr r0, =gActiveBank - ldrb r1, [r0] - adds r1, r2 - b _0803CB74 - .pool -_0803CA2C: - ldr r2, =gBattleCommunication - ldr r0, =gActiveBank - ldrb r1, [r0] - adds r1, r2 - b _0803CB74 - .pool -_0803CA40: - ldr r2, =gBattleCommunication - ldr r0, =gActiveBank - ldrb r1, [r0] - adds r1, r2 - b _0803CB74 - .pool -_0803CA54: - ldr r3, =gBattleBufferB - ldr r0, =gActiveBank - ldrb r4, [r0] - lsls r1, r4, 9 - adds r0, r3, 0x1 - adds r0, r1, r0 - ldrb r2, [r0] - adds r3, 0x2 - adds r1, r3 - ldrb r0, [r1] - lsls r0, 8 - orrs r2, r0 - cmp r2, 0 - bne _0803CA72 - b _0803CC1C -_0803CA72: - ldr r1, =gBattleCommunication - adds r1, r4, r1 - b _0803CB74 - .pool -_0803CA84: - ldr r2, =gBattleCommunication - ldr r0, =gActiveBank - ldrb r1, [r0] - adds r1, r2 - b _0803CB74 - .pool -_0803CA98: - ldr r2, =gHitMarker - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 8 - orrs r0, r1 - str r0, [r2] - ldr r2, =gBattleCommunication - ldr r0, =gActiveBank - ldrb r1, [r0] - adds r1, r2 - b _0803CB74 - .pool -_0803CABC: - ldr r2, =gBattleCommunication - ldr r0, =gActiveBank - ldrb r1, [r0] - adds r1, r2 - b _0803CB74 - .pool -_0803CAD0: - ldr r3, =gBattleExecBuffer - ldr r6, =gBitTable - ldr r0, =gActiveBank - ldrb r0, [r0] - lsls r0, 2 - adds r0, r6 - ldr r2, [r0] - lsls r1, r2, 4 - movs r0, 0xF0 - lsls r0, 24 - orrs r1, r0 - orrs r1, r2 - lsls r0, r2, 8 - orrs r1, r0 - lsls r2, 12 - orrs r1, r2 - ldr r0, [r3] - ands r0, r1 - cmp r0, 0 - beq _0803CAFA - b _0803CD04 -_0803CAFA: - bl sub_803CDB8 - lsls r0, 24 - lsrs r0, 24 - negs r1, r0 - orrs r1, r0 - lsrs r4, r1, 31 - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x41 - ands r0, r1 - cmp r0, 0x1 - bne _0803CB3C - movs r1, 0x2 - movs r0, 0x2 - ands r0, r5 - cmp r0, 0 - bne _0803CB3C - adds r0, r5, 0 - eors r0, r1 - bl GetBankByPlayerAI - ldr r1, =gBattleStruct - ldr r1, [r1] - adds r1, 0x91 - ldrb r1, [r1] - lsls r0, 24 - lsrs r0, 22 - adds r0, r6 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - beq _0803CB5C -_0803CB3C: - movs r0, 0 - movs r1, 0 - adds r2, r4, 0 - bl sub_8034464 - b _0803CB66 - .pool -_0803CB5C: - movs r0, 0 - movs r1, 0x1 - adds r2, r4, 0 - bl sub_8034464 -_0803CB66: - ldr r4, =gActiveBank -_0803CB68: - ldrb r0, [r4] - bl dp01_battle_side_mark_buffer_for_execution -_0803CB6E: - ldr r0, =gBattleCommunication - ldrb r1, [r4] -_0803CB72: - adds r1, r0 -_0803CB74: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0803CD04 - .pool -_0803CB84: - ldr r3, =gBattleExecBuffer - ldr r1, =gBitTable - ldr r0, =gActiveBank - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r2, [r0] - lsls r1, r2, 4 - movs r0, 0xF0 - lsls r0, 24 - orrs r1, r0 - orrs r1, r2 - lsls r0, r2, 8 - orrs r1, r0 - lsls r2, 12 - orrs r1, r2 - ldr r0, [r3] - ands r0, r1 - cmp r0, 0 - beq _0803CBAE - b _0803CD04 -_0803CBAE: - ldr r1, =gBattleCommunication - ldrb r0, [r1, 0x4] - adds r0, 0x1 - strb r0, [r1, 0x4] - b _0803CD04 - .pool -_0803CBC8: - ldr r5, =gActiveBank - ldrb r2, [r5] - ldr r0, =gBattleStruct - ldr r0, [r0] - adds r1, r2, r0 - adds r0, r1, 0 - adds r0, 0x54 - ldrb r0, [r0] - cmp r0, 0 - beq _0803CCB4 - ldr r0, =gBattleCommunication - adds r0, r2, r0 - adds r1, 0x84 - ldrb r1, [r1] - strb r1, [r0] - b _0803CD04 - .pool -_0803CBF4: - ldr r3, =gBattleExecBuffer - ldr r1, =gBitTable - ldr r0, =gActiveBank - ldrb r4, [r0] - lsls r0, r4, 2 - adds r0, r1 - ldr r2, [r0] - lsls r1, r2, 4 - movs r0, 0xF0 - lsls r0, 24 - orrs r1, r0 - orrs r1, r2 - lsls r0, r2, 8 - orrs r1, r0 - lsls r2, 12 - orrs r1, r2 - ldr r0, [r3] - ands r0, r1 - cmp r0, 0 - bne _0803CD04 -_0803CC1C: - ldr r0, =gBattleCommunication - adds r0, r4, r0 -_0803CC20: - movs r1, 0x1 - strb r1, [r0] - b _0803CD04 - .pool -_0803CC38: - ldr r5, =gActiveBank - ldrb r2, [r5] - ldr r4, =gBattleStruct - ldr r0, [r4] - adds r0, r2, r0 - adds r0, 0x54 - ldrb r0, [r0] - cmp r0, 0 - beq _0803CCB4 - ldr r0, =gBattleBufferB - lsls r1, r2, 9 - adds r0, 0x1 - adds r1, r0 - ldrb r0, [r1] - cmp r0, 0xD - bne _0803CC94 - ldr r2, =gHitMarker - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 8 - orrs r0, r1 - str r0, [r2] - ldr r1, =gUnknown_0202421C - ldrb r0, [r5] - adds r0, r1 - movs r1, 0x3 - strb r1, [r0] - ldr r1, =gBattleCommunication - ldrb r0, [r5] -_0803CC72: - adds r0, r1 - movs r1, 0x4 - strb r1, [r0] - b _0803CD04 - .pool -_0803CC94: - adds r0, r2, 0 - movs r1, 0x1 - bl sub_8185008 - ldr r2, =gBattleCommunication - ldrb r0, [r5] - adds r2, r0, r2 - ldr r1, [r4] - adds r0, r1 - adds r0, 0x84 - ldrb r0, [r0] - strb r0, [r2] - b _0803CD04 - .pool -_0803CCB4: - ldr r0, =gBankAttacker - strb r2, [r0] - ldr r7, =gBattlescriptCurrInstr - ldr r6, =gUnknown_02024220 - ldrb r0, [r5] - lsls r0, 2 - adds r0, r6 - ldr r4, [r0] - str r4, [r7] - ldr r3, =gBattleExecBuffer - ldr r1, =gBitTable - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r2, [r0] - lsls r1, r2, 4 - movs r0, 0xF0 - lsls r0, 24 - orrs r1, r0 - orrs r1, r2 - lsls r0, r2, 8 - orrs r1, r0 - lsls r2, 12 - orrs r1, r2 - ldr r0, [r3] - ands r0, r1 - cmp r0, 0 - bne _0803CCFA - ldr r0, =gBattleScriptingCommandsTable - ldrb r1, [r4] - lsls r1, 2 - adds r1, r0 - ldr r0, [r1] - bl _call_via_r0 -_0803CCFA: - ldrb r0, [r5] - lsls r0, 2 - adds r0, r6 - ldr r1, [r7] - str r1, [r0] -_0803CD04: - ldr r0, =gActiveBank - ldrb r1, [r0] - adds r1, 0x1 - strb r1, [r0] - ldr r0, =gNoOfAllBanks - lsls r1, 24 - lsrs r1, 24 -_0803CD12: - adds r5, r0, 0 - ldrb r0, [r5] - cmp r1, r0 - bcs _0803CD1E - bl _0803BE9C -_0803CD1E: - ldr r0, =gBattleCommunication - ldrb r0, [r0, 0x4] - ldrb r1, [r5] - cmp r0, r1 - bne _0803CD70 - movs r0, 0x1 - bl sub_818603C - ldr r1, =gBattleMainFunc - ldr r0, =sub_803D2E8 - str r0, [r1] - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 15 - ands r0, r1 - cmp r0, 0 - beq _0803CD70 - movs r4, 0 - ldrb r5, [r5] - cmp r4, r5 - bge _0803CD70 -_0803CD4A: - ldr r0, =gUnknown_0202421C - adds r0, r4, r0 - ldrb r0, [r0] - cmp r0, 0x2 - bne _0803CD66 - lsls r0, r4, 24 - lsrs r0, 24 - ldr r1, =gBattleStruct - ldr r1, [r1] - adds r1, r4, r1 - adds r1, 0x5C - ldrb r1, [r1] - bl sub_80571DC -_0803CD66: - adds r4, 0x1 - ldr r0, =gNoOfAllBanks - ldrb r0, [r0] - cmp r4, r0 - blt _0803CD4A -_0803CD70: - add sp, 0x1C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_803BE74 - - thumb_func_start sub_803CDB8 -sub_803CDB8: @ 803CDB8 - push {r4,r5,lr} - movs r3, 0 - movs r1, 0 - ldr r0, =gNoOfAllBanks - ldrb r2, [r0] - adds r5, r0, 0 - cmp r3, r2 - bge _0803CDDA - ldr r4, =gBattleCommunication -_0803CDCA: - adds r0, r1, r4 - ldrb r0, [r0] - cmp r0, 0x5 - bne _0803CDD4 - adds r3, 0x1 -_0803CDD4: - adds r1, 0x1 - cmp r1, r2 - blt _0803CDCA -_0803CDDA: - adds r0, r3, 0x1 - ldrb r5, [r5] - cmp r0, r5 - beq _0803CDF0 - movs r0, 0 - b _0803CDF2 - .pool -_0803CDF0: - movs r0, 0x1 -_0803CDF2: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_803CDB8 - - thumb_func_start sub_803CDF8 -sub_803CDF8: @ 803CDF8 - push {r4-r7,lr} - ldr r7, =gActiveBank - ldrb r0, [r7] - ldr r6, =gBattleStruct - ldr r1, [r6] - adds r1, r0, r1 - adds r1, 0x5C - ldr r4, =gBattleBufferB - lsls r0, 9 - adds r2, r4, 0x1 - adds r0, r2 - ldrb r0, [r0] - strb r0, [r1] - ldrb r0, [r7] - lsls r1, r0, 9 - adds r1, r2 - ldrb r1, [r1] - bl sub_8184FBC - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x42 - ands r0, r1 - cmp r0, 0x42 - bne _0803CEC6 - ldrb r0, [r7] - ldr r2, [r6] - lsls r1, r0, 1 - adds r1, r0 - adds r1, r2 - adds r1, 0x60 - ldrb r2, [r1] - movs r0, 0xF - ands r0, r2 - strb r0, [r1] - ldrb r0, [r7] - ldr r2, [r6] - lsls r1, r0, 1 - adds r1, r0 - adds r1, r2 - adds r1, 0x60 - lsls r0, 9 - adds r5, r4, 0x2 - adds r0, r5 - ldrb r2, [r0] - movs r3, 0xF0 - adds r0, r3, 0 - ands r0, r2 - ldrb r2, [r1] - orrs r0, r2 - strb r0, [r1] - ldrb r1, [r7] - ldr r2, [r6] - lsls r0, r1, 1 - adds r0, r1 - adds r0, r2 - adds r0, 0x61 - lsls r1, 9 - adds r4, 0x3 - mov r12, r4 - add r1, r12 - ldrb r1, [r1] - strb r1, [r0] - ldrb r0, [r7] - movs r4, 0x2 - eors r0, r4 - ldr r2, [r6] - lsls r1, r0, 1 - adds r1, r0 - adds r1, r2 - adds r1, 0x60 - ldrb r2, [r1] - adds r0, r3, 0 - ands r0, r2 - strb r0, [r1] - ldrb r0, [r7] - eors r0, r4 - ldr r2, [r6] - lsls r1, r0, 1 - adds r1, r0 - adds r1, r2 - adds r1, 0x60 - ldrb r0, [r7] - lsls r0, 9 - adds r0, r5 - ldrb r0, [r0] - ands r3, r0 - lsrs r3, 4 - ldrb r0, [r1] - orrs r3, r0 - strb r3, [r1] - ldrb r0, [r7] - eors r4, r0 - ldr r0, [r6] - lsls r1, r4, 1 - adds r1, r4 - adds r1, r0 - adds r1, 0x62 - ldrb r0, [r7] - lsls r0, 9 - add r0, r12 - ldrb r0, [r0] - strb r0, [r1] -_0803CEC6: - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_803CDF8 - - thumb_func_start sub_803CEDC -sub_803CEDC: @ 803CEDC - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r1, 24 - ldr r2, =gUnknown_0202407A - adds r4, r0, r2 - ldrb r5, [r4] - adds r2, r1, r2 - ldrb r3, [r2] - strb r3, [r4] - strb r5, [r2] - ldr r2, =gTurnOrder - adds r0, r2 - ldrb r5, [r0] - adds r1, r2 - ldrb r2, [r1] - strb r2, [r0] - strb r5, [r1] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_803CEDC - - thumb_func_start b_first_side -b_first_side: @ 803CF10 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xC - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - lsls r1, 24 - lsrs r1, 24 - mov r10, r1 - lsls r2, 24 - lsrs r2, 24 - str r2, [sp, 0x4] - movs r0, 0 - str r0, [sp, 0x8] - str r0, [sp] - movs r0, 0x13 - movs r1, 0 - movs r2, 0xD - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - cmp r0, 0 - bne _0803CFD8 - ldr r1, [sp, 0x8] - str r1, [sp] - movs r0, 0x13 - movs r1, 0 - movs r2, 0x4D - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - cmp r0, 0 - bne _0803CFD8 - ldr r1, =gBattleMons - movs r0, 0x58 - mov r2, r9 - muls r2, r0 - adds r0, r2, 0 - adds r0, r1 - adds r0, 0x20 - ldrb r3, [r0] - cmp r3, 0x21 - bne _0803CF7C - ldr r0, =gBattleWeather - ldrh r1, [r0] - movs r0, 0x7 - ands r0, r1 - cmp r0, 0 - bne _0803CF8C -_0803CF7C: - cmp r3, 0x22 - bne _0803CF98 - ldr r0, =gBattleWeather - ldrh r1, [r0] - movs r0, 0x60 - ands r0, r1 - cmp r0, 0 - beq _0803CF98 -_0803CF8C: - movs r3, 0x2 - b _0803CF9A - .pool -_0803CF98: - movs r3, 0x1 -_0803CF9A: - movs r0, 0x58 - mov r1, r10 - muls r1, r0 - adds r0, r1, 0 - ldr r2, =gBattleMons - adds r0, r2 - adds r0, 0x20 - ldrb r2, [r0] - cmp r2, 0x21 - bne _0803CFBA - ldr r0, =gBattleWeather - ldrh r1, [r0] - movs r0, 0x7 - ands r0, r1 - cmp r0, 0 - bne _0803CFCA -_0803CFBA: - cmp r2, 0x22 - bne _0803CFDA - ldr r0, =gBattleWeather - ldrh r1, [r0] - movs r0, 0x60 - ands r0, r1 - cmp r0, 0 - beq _0803CFDA -_0803CFCA: - movs r7, 0x2 - b _0803CFDC - .pool -_0803CFD8: - movs r3, 0x1 -_0803CFDA: - movs r7, 0x1 -_0803CFDC: - ldr r1, =gBattleMons - movs r0, 0x58 - mov r2, r9 - muls r2, r0 - adds r0, r2, 0 - adds r4, r0, r1 - ldrh r0, [r4, 0x6] - muls r3, r0 - ldr r2, =gStatStageRatios - movs r1, 0x1B - ldrsb r1, [r4, r1] - lsls r1, 1 - adds r0, r1, r2 - ldrb r0, [r0] - muls r0, r3 - adds r2, 0x1 - adds r1, r2 - ldrb r1, [r1] - bl __divsi3 - mov r8, r0 - ldrh r0, [r4, 0x2E] - cmp r0, 0xAF - bne _0803D02C - ldr r1, =gEnigmaBerries - mov r3, r9 - lsls r0, r3, 3 - subs r0, r3 - lsls r0, 2 - adds r0, r1 - ldrb r6, [r0, 0x7] - ldrb r5, [r0, 0x1A] - b _0803D040 - .pool -_0803D02C: - ldrh r0, [r4, 0x2E] - bl ItemId_GetHoldEffect - lsls r0, 24 - lsrs r6, r0, 24 - ldrh r0, [r4, 0x2E] - bl ItemId_GetHoldEffectParam - lsls r0, 24 - lsrs r5, r0, 24 -_0803D040: - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - ldr r1, =0x023f0102 - ands r0, r1 - cmp r0, 0 - bne _0803D074 - ldr r0, =0x00000869 - bl FlagGet - lsls r0, 24 - cmp r0, 0 - beq _0803D074 - mov r0, r9 - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _0803D074 - movs r0, 0x6E - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - movs r1, 0x64 - bl __udivsi3 - mov r8, r0 -_0803D074: - cmp r6, 0x18 - bne _0803D07E - mov r2, r8 - lsrs r2, 1 - mov r8, r2 -_0803D07E: - ldr r1, =gBattleMons - movs r0, 0x58 - mov r3, r9 - muls r3, r0 - adds r0, r3, 0 - adds r1, 0x4C - adds r0, r1 - ldr r0, [r0] - movs r1, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0803D09C - mov r0, r8 - lsrs r0, 2 - mov r8, r0 -_0803D09C: - cmp r6, 0x1A - bne _0803D0B8 - ldr r0, =gUnknown_02024330 - ldrh r4, [r0] - lsls r0, r5, 16 - subs r0, r5 - movs r1, 0x64 - bl __divsi3 - cmp r4, r0 - bge _0803D0B8 - movs r1, 0x1 - negs r1, r1 - mov r8, r1 -_0803D0B8: - ldr r1, =gBattleMons - movs r0, 0x58 - mov r2, r10 - muls r2, r0 - adds r0, r2, 0 - adds r4, r0, r1 - ldrh r0, [r4, 0x6] - adds r3, r0, 0 - muls r3, r7 - ldr r2, =gStatStageRatios - movs r1, 0x1B - ldrsb r1, [r4, r1] - lsls r1, 1 - adds r0, r1, r2 - ldrb r0, [r0] - muls r0, r3 - adds r2, 0x1 - adds r1, r2 - ldrb r1, [r1] - bl __divsi3 - adds r7, r0, 0 - ldrh r0, [r4, 0x2E] - cmp r0, 0xAF - bne _0803D118 - ldr r1, =gEnigmaBerries - mov r3, r10 - lsls r0, r3, 3 - subs r0, r3 - lsls r0, 2 - adds r0, r1 - ldrb r6, [r0, 0x7] - ldrb r5, [r0, 0x1A] - b _0803D12C - .pool -_0803D118: - ldrh r0, [r4, 0x2E] - bl ItemId_GetHoldEffect - lsls r0, 24 - lsrs r6, r0, 24 - ldrh r0, [r4, 0x2E] - bl ItemId_GetHoldEffectParam - lsls r0, 24 - lsrs r5, r0, 24 -_0803D12C: - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - ldr r1, =0x023f0102 - ands r0, r1 - cmp r0, 0 - bne _0803D15C - ldr r0, =0x00000869 - bl FlagGet - lsls r0, 24 - cmp r0, 0 - beq _0803D15C - mov r0, r10 - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _0803D15C - movs r0, 0x6E - muls r0, r7 - movs r1, 0x64 - bl __udivsi3 - adds r7, r0, 0 -_0803D15C: - cmp r6, 0x18 - bne _0803D162 - lsrs r7, 1 -_0803D162: - ldr r2, =gBattleMons - movs r0, 0x58 - mov r1, r10 - muls r1, r0 - adds r0, r1, 0 - adds r1, r2, 0 - adds r1, 0x4C - adds r0, r1 - ldr r0, [r0] - movs r1, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0803D17E - lsrs r7, 2 -_0803D17E: - cmp r6, 0x1A - bne _0803D198 - ldr r0, =gUnknown_02024330 - ldrh r4, [r0] - lsls r0, r5, 16 - subs r0, r5 - movs r1, 0x64 - bl __divsi3 - cmp r4, r0 - bge _0803D198 - movs r7, 0x1 - negs r7, r7 -_0803D198: - ldr r2, [sp, 0x4] - cmp r2, 0 - beq _0803D1B8 - movs r3, 0 - b _0803D254 - .pool -_0803D1B8: - ldr r0, =gUnknown_0202421C - mov r3, r9 - adds r1, r3, r0 - ldrb r1, [r1] - adds r2, r0, 0 - cmp r1, 0 - bne _0803D208 - ldr r0, =gProtectStructs - lsls r1, r3, 4 - adds r1, r0 - ldrb r0, [r1] - lsls r0, 29 - cmp r0, 0 - bge _0803D1E0 - movs r3, 0xA5 - b _0803D20A - .pool -_0803D1E0: - ldr r0, =gBattleStruct - ldr r0, [r0] - add r0, r9 - adds r0, 0x80 - ldrb r0, [r0] - lsls r0, 1 - movs r1, 0x58 - mov r3, r9 - muls r3, r1 - adds r1, r3, 0 - adds r0, r1 - ldr r1, =gBattleMons - adds r1, 0xC - adds r0, r1 - ldrh r3, [r0] - b _0803D20A - .pool -_0803D208: - movs r3, 0 -_0803D20A: - mov r1, r10 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0 - bne _0803D254 - ldr r0, =gProtectStructs - lsls r1, 4 - adds r1, r0 - ldrb r0, [r1] - lsls r0, 29 - cmp r0, 0 - bge _0803D22C - movs r2, 0xA5 - b _0803D256 - .pool -_0803D22C: - ldr r0, =gBattleStruct - ldr r0, [r0] - add r0, r10 - adds r0, 0x80 - ldrb r0, [r0] - lsls r0, 1 - movs r1, 0x58 - mov r2, r10 - muls r2, r1 - adds r1, r2, 0 - adds r0, r1 - ldr r1, =gBattleMons - adds r1, 0xC - adds r0, r1 - ldrh r2, [r0] - b _0803D256 - .pool -_0803D254: - movs r2, 0 -_0803D256: - ldr r4, =gBattleMoves - lsls r0, r3, 1 - adds r0, r3 - lsls r0, 2 - adds r0, r4 - movs r1, 0x7 - ldrsb r1, [r0, r1] - lsls r3, r2, 1 - cmp r1, 0 - bne _0803D27A - adds r0, r3, r2 - lsls r0, 2 - adds r0, r4 - ldrb r0, [r0, 0x7] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0 - beq _0803D2B8 -_0803D27A: - adds r0, r3, r2 - lsls r0, 2 - adds r0, r4 - ldrb r0, [r0, 0x7] - lsls r0, 24 - asrs r0, 24 - cmp r1, r0 - bne _0803D2AE - cmp r8, r7 - bne _0803D2A4 - bl Random - movs r1, 0x1 - ands r1, r0 - cmp r1, 0 - beq _0803D2A4 - movs r3, 0x2 - b _0803D2D4 - .pool -_0803D2A4: - cmp r8, r7 - bcs _0803D2D6 - movs r0, 0x1 - str r0, [sp, 0x8] - b _0803D2D6 -_0803D2AE: - cmp r1, r0 - bge _0803D2D6 - movs r1, 0x1 - str r1, [sp, 0x8] - b _0803D2D6 -_0803D2B8: - cmp r8, r7 - bne _0803D2CE - bl Random - movs r1, 0x1 - ands r1, r0 - cmp r1, 0 - beq _0803D2CE - movs r2, 0x2 - str r2, [sp, 0x8] - b _0803D2D6 -_0803D2CE: - cmp r8, r7 - bcs _0803D2D6 - movs r3, 0x1 -_0803D2D4: - str r3, [sp, 0x8] -_0803D2D6: - ldr r0, [sp, 0x8] - add sp, 0xC - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end b_first_side - - thumb_func_start sub_803D2E8 -sub_803D2E8: @ 803D2E8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - movs r3, 0 - ldr r0, =gBattleTypeFlags - ldr r1, [r0] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0803D354 - ldr r0, =gActiveBank - strb r3, [r0] - ldr r4, =gNoOfAllBanks - mov r8, r0 - ldrb r0, [r4] - cmp r3, r0 - bcc _0803D310 - b _0803D54A -_0803D310: - ldr r7, =gUnknown_0202407A - ldr r6, =gUnknown_0202421C - mov r2, r8 - ldr r5, =gTurnOrder -_0803D318: - adds r1, r3, r7 - ldrb r0, [r2] - adds r0, r6 - ldrb r0, [r0] - strb r0, [r1] - adds r1, r3, r5 - ldrb r0, [r2] - strb r0, [r1] - adds r3, 0x1 - ldrb r0, [r2] - adds r0, 0x1 - strb r0, [r2] - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r4] - cmp r0, r1 - bcc _0803D318 - b _0803D54A - .pool -_0803D354: - movs r2, 0x2 - ands r1, r2 - cmp r1, 0 - beq _0803D3A4 - ldr r0, =gActiveBank - strb r3, [r0] - ldr r1, =gNoOfAllBanks - mov r8, r0 - adds r2, r1, 0 - ldrb r2, [r2] - cmp r3, r2 - bcs _0803D3C0 - ldr r0, =gUnknown_0202421C - ldrb r1, [r0] - adds r4, r0, 0 - cmp r1, 0x3 - beq _0803D3BE -_0803D376: - mov r7, r8 - ldrb r0, [r7] - adds r0, 0x1 - strb r0, [r7] - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gNoOfAllBanks - ldrb r1, [r1] - cmp r0, r1 - bcs _0803D3C0 - ldrb r0, [r7] - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0x3 - bne _0803D376 - b _0803D3BE - .pool -_0803D3A4: - ldr r1, =gUnknown_0202421C - ldrb r0, [r1] - ldr r4, =gActiveBank - mov r8, r4 - cmp r0, 0x3 - bne _0803D3B4 - strb r3, [r4] - movs r3, 0x5 -_0803D3B4: - ldrb r0, [r1, 0x2] - cmp r0, 0x3 - bne _0803D3C0 - mov r7, r8 - strb r2, [r7] -_0803D3BE: - movs r3, 0x5 -_0803D3C0: - cmp r3, 0x5 - bne _0803D448 - ldr r6, =gUnknown_0202407A - ldr r1, =gUnknown_0202421C - mov r2, r8 - ldrb r0, [r2] - adds r0, r1 - ldrb r0, [r0] - strb r0, [r6] - ldr r2, =gTurnOrder - mov r3, r8 - ldrb r0, [r3] - strb r0, [r2] - movs r3, 0x1 - movs r5, 0 - adds r4, r1, 0 - ldr r7, =gBattleMainFunc - mov r10, r7 - ldr r0, =bc_80154A0 - mov r12, r0 - ldr r1, =gBattleStruct - mov r9, r1 - ldr r7, =gNoOfAllBanks - ldrb r7, [r7] - cmp r5, r7 - bge _0803D41A - adds r7, r6, 0 - adds r6, r4, 0 - adds r4, r2, 0 - ldr r2, =gNoOfAllBanks -_0803D3FC: - mov r0, r8 - ldrb r0, [r0] - cmp r5, r0 - beq _0803D412 - adds r1, r3, r7 - adds r0, r5, r6 - ldrb r0, [r0] - strb r0, [r1] - adds r0, r3, r4 - strb r5, [r0] - adds r3, 0x1 -_0803D412: - adds r5, 0x1 - ldrb r1, [r2] - cmp r5, r1 - blt _0803D3FC -_0803D41A: - mov r2, r12 - mov r3, r10 - str r2, [r3] - mov r4, r9 - ldr r0, [r4] - b _0803D554 - .pool -_0803D448: - movs r0, 0 - mov r7, r8 - strb r0, [r7] - ldr r1, =gNoOfAllBanks - ldrb r0, [r1] - cmp r0, 0 - beq _0803D48E - ldr r6, =gUnknown_0202421C - mov r2, r8 - ldr r5, =gUnknown_0202407A - ldr r4, =gTurnOrder -_0803D45E: - ldrb r0, [r2] - adds r0, r6 - ldrb r1, [r0] - subs r0, r1, 0x1 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bhi _0803D47C - adds r0, r3, r5 - strb r1, [r0] - adds r1, r3, r4 - mov r7, r8 - ldrb r0, [r7] - strb r0, [r1] - adds r3, 0x1 -_0803D47C: - ldrb r0, [r2] - adds r0, 0x1 - strb r0, [r2] - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gNoOfAllBanks - ldrb r1, [r1] - cmp r0, r1 - bcc _0803D45E -_0803D48E: - movs r0, 0 - mov r2, r8 - strb r0, [r2] - ldr r4, =gNoOfAllBanks - ldrb r0, [r4] - cmp r0, 0 - beq _0803D4D2 - ldr r6, =gUnknown_0202421C - ldr r5, =gUnknown_0202407A - ldr r4, =gTurnOrder -_0803D4A2: - ldrb r0, [r2] - adds r0, r6 - ldrb r1, [r0] - subs r0, r1, 0x1 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bls _0803D4C0 - adds r0, r3, r5 - strb r1, [r0] - adds r1, r3, r4 - mov r7, r8 - ldrb r0, [r7] - strb r0, [r1] - adds r3, 0x1 -_0803D4C0: - ldrb r0, [r2] - adds r0, 0x1 - strb r0, [r2] - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gNoOfAllBanks - ldrb r1, [r1] - cmp r0, r1 - bcc _0803D4A2 -_0803D4D2: - movs r5, 0 - b _0803D540 - .pool -_0803D4E8: - adds r4, r5, 0x1 - adds r7, r4, 0 - ldrb r1, [r1] - cmp r7, r1 - bge _0803D53E - ldr r6, =gUnknown_0202407A - lsls r2, r5, 24 - mov r8, r2 -_0803D4F8: - ldr r0, =gTurnOrder - adds r1, r5, r0 - ldrb r3, [r1] - adds r0, r4, r0 - ldrb r1, [r0] - adds r0, r5, r6 - ldrb r2, [r0] - cmp r2, 0x1 - beq _0803D534 - adds r0, r4, r6 - ldrb r0, [r0] - cmp r0, 0x1 - beq _0803D534 - cmp r2, 0x2 - beq _0803D534 - cmp r0, 0x2 - beq _0803D534 - adds r0, r3, 0 - movs r2, 0 - bl b_first_side - lsls r0, 24 - cmp r0, 0 - beq _0803D534 - lsls r1, r4, 24 - lsrs r1, 24 - mov r3, r8 - lsrs r0, r3, 24 - bl sub_803CEDC -_0803D534: - adds r4, 0x1 - ldr r0, =gNoOfAllBanks - ldrb r0, [r0] - cmp r4, r0 - blt _0803D4F8 -_0803D53E: - adds r5, r7, 0 -_0803D540: - ldr r1, =gNoOfAllBanks - ldrb r0, [r1] - subs r0, 0x1 - cmp r5, r0 - blt _0803D4E8 -_0803D54A: - ldr r1, =gBattleMainFunc - ldr r0, =bc_80154A0 - str r0, [r1] - ldr r0, =gBattleStruct - ldr r0, [r0] -_0803D554: - adds r0, 0x48 - movs r1, 0 - strb r1, [r0] - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_803D2E8 - - thumb_func_start sub_803D580 -sub_803D580: @ 803D580 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - ldr r1, =gActiveBank - movs r0, 0 - strb r0, [r1] - ldr r0, =gNoOfAllBanks - ldrb r2, [r0] - adds r5, r1, 0 - cmp r2, 0 - beq _0803D678 - ldr r7, =gProtectStructs - adds r6, r5, 0 - ldr r0, =gBattleMons + 0x50 - mov r12, r0 - ldr r1, =gDisableStructs - mov r8, r1 - mov r10, r8 -_0803D5AE: - mov r2, r9 - cmp r2, 0 - beq _0803D5EC - ldrb r1, [r6] - lsls r1, 4 - adds r1, r7 - ldrb r2, [r1] - movs r0, 0x2 - negs r0, r0 - ands r0, r2 - strb r0, [r1] - ldrb r1, [r6] - lsls r1, 4 - adds r1, r7 - ldrb r2, [r1] - movs r0, 0x3 - negs r0, r0 - ands r0, r2 - strb r0, [r1] - b _0803D648 - .pool -_0803D5EC: - ldrb r0, [r6] - lsls r0, 4 - adds r2, r0, r7 - movs r1, 0 - mov r4, r10 - movs r3, 0 -_0803D5F8: - adds r0, r2, r1 - strb r3, [r0] - adds r1, 0x1 - cmp r1, 0xF - bls _0803D5F8 - ldrb r1, [r5] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r1, r0, r4 - ldrb r0, [r1, 0x16] - cmp r0, 0 - beq _0803D616 - subs r0, 0x1 - strb r0, [r1, 0x16] -_0803D616: - ldrb r1, [r5] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r1, r0, r4 - ldrb r0, [r1, 0x19] - cmp r0, 0 - beq _0803D648 - subs r0, 0x1 - strb r0, [r1, 0x19] - ldrb r2, [r5] - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r0, r4 - ldrb r0, [r0, 0x19] - cmp r0, 0 - bne _0803D648 - movs r0, 0x58 - muls r2, r0 - add r2, r12 - ldr r0, [r2] - ldr r1, =0xffbfffff - ands r0, r1 - str r0, [r2] -_0803D648: - ldrb r2, [r5] - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - add r0, r8 - ldrb r0, [r0, 0xA] - cmp r0, 0 - bne _0803D666 - movs r0, 0x58 - muls r2, r0 - add r2, r12 - ldr r0, [r2] - ldr r1, =0xfeffffff - ands r0, r1 - str r0, [r2] -_0803D666: - ldrb r0, [r5] - adds r0, 0x1 - strb r0, [r5] - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gNoOfAllBanks - ldrb r1, [r1] - cmp r0, r1 - bcc _0803D5AE -_0803D678: - movs r0, 0 - ldr r2, =gSideTimers - strb r0, [r2, 0x8] - strb r0, [r2, 0x14] - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_803D580 - - thumb_func_start sub_803D6A0 -sub_803D6A0: @ 803D6A0 - push {r4-r6,lr} - ldr r2, =gActiveBank - movs r0, 0 - strb r0, [r2] - ldr r0, =gNoOfAllBanks - ldrb r1, [r0] - adds r6, r0, 0 - cmp r1, 0 - beq _0803D6DE - adds r3, r2, 0 - movs r4, 0 - ldr r5, =gSpecialStatuses -_0803D6B8: - ldrb r1, [r3] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r2, r0, r5 - movs r1, 0 -_0803D6C4: - adds r0, r2, r1 - strb r4, [r0] - adds r1, 0x1 - cmp r1, 0x13 - bls _0803D6C4 - ldrb r0, [r3] - adds r0, 0x1 - strb r0, [r3] - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r6] - cmp r0, r1 - bcc _0803D6B8 -_0803D6DE: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_803D6A0 - - thumb_func_start bc_80154A0 -bc_80154A0: @ 803D6F0 - push {r4-r7,lr} - ldr r0, =gHitMarker - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 8 - ands r0, r1 - cmp r0, 0 - bne _0803D7AE - ldr r2, =gBattleStruct - ldr r0, [r2] - adds r0, 0x48 - ldr r1, =gNoOfAllBanks - ldrb r0, [r0] - mov r12, r2 - adds r6, r1, 0 - ldrb r1, [r6] - cmp r0, r1 - bcs _0803D7AE - ldr r5, =gActiveBank - ldr r4, =gBankAttacker - movs r7, 0x84 - lsls r7, 1 -_0803D71C: - ldr r1, [r2] - adds r1, 0x48 - ldrb r0, [r1] - strb r0, [r4] - strb r0, [r5] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r1, =gUnknown_02024274 - ldrb r3, [r5] - lsls r0, r3, 1 - adds r0, r1 - ldrh r0, [r0] - cmp r0, r7 - bne _0803D7A0 - ldr r1, =gBattleMons - movs r0, 0x58 - muls r0, r3 - adds r1, 0x4C - adds r0, r1 - ldr r0, [r0] - movs r1, 0x7 - ands r0, r1 - cmp r0, 0 - bne _0803D7A0 - ldr r2, =gDisableStructs - ldrb r1, [r4] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x18] - lsls r0, 31 - cmp r0, 0 - bne _0803D7A0 - ldr r0, =gProtectStructs - lsls r1, r3, 4 - adds r1, r0 - ldrb r0, [r1] - lsls r0, 29 - cmp r0, 0 - blt _0803D7A0 - ldr r0, =gUnknown_082DB1FF - bl b_call_bc_move_exec - b _0803D7E8 - .pool -_0803D7A0: - mov r2, r12 - ldr r0, [r2] - adds r0, 0x48 - ldrb r0, [r0] - ldrb r1, [r6] - cmp r0, r1 - bcc _0803D71C -_0803D7AE: - bl b_clear_atk_up_if_hit_flag_unless_enraged - ldr r1, =gUnknown_02024082 - movs r0, 0 - strb r0, [r1] - ldr r1, =gFightStateTracker - ldr r0, =gUnknown_0202407A - movs r3, 0 - ldrb r0, [r0] - strb r0, [r1] - ldr r0, =gDynamicBasePower - movs r2, 0 - strh r3, [r0] - ldr r0, =gBattleStruct - ldr r0, [r0] - strb r2, [r0, 0x13] - ldr r1, =gBattleMainFunc - ldr r0, =bc_bs_exec - str r0, [r1] - ldr r0, =gBattleCommunication - strb r2, [r0, 0x3] - strb r2, [r0, 0x4] - ldr r0, =gBattleScripting - strb r2, [r0, 0x16] - ldr r0, =gBattleResources - ldr r0, [r0] - ldr r0, [r0, 0x8] - adds r0, 0x20 - strb r2, [r0] -_0803D7E8: - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end bc_80154A0 - - thumb_func_start bc_bs_exec -bc_bs_exec: @ 803D818 - push {r4-r6,lr} - ldr r6, =gBattleOutcome - ldrb r0, [r6] - ldr r2, =gFightStateTracker - cmp r0, 0 - beq _0803D828 - movs r0, 0xC - strb r0, [r2] -_0803D828: - ldr r5, =gBattleStruct - ldr r0, [r5] - adds r0, 0x4B - ldr r4, =gUnknown_02024082 - ldrb r1, [r4] - strb r1, [r0] - ldr r1, =gUnknown_0831BC0C - ldrb r0, [r2] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - bl _call_via_r0 - ldr r0, =gNoOfAllBanks - ldrb r1, [r4] - ldrb r0, [r0] - cmp r1, r0 - bcc _0803D894 - ldr r2, =gHitMarker - ldr r0, [r2] - ldr r1, =0xffefffff - ands r0, r1 - str r0, [r2] - ldr r3, =gBattleMainFunc - ldr r2, =gUnknown_0831BC44 - ldrb r1, [r6] - movs r0, 0x7F - ands r0, r1 - lsls r0, 2 - adds r0, r2 - ldr r0, [r0] - str r0, [r3] - b _0803D8AC - .pool -_0803D894: - ldr r0, [r5] - adds r0, 0x4B - ldrb r0, [r0] - cmp r0, r1 - beq _0803D8AC - ldr r2, =gHitMarker - ldr r0, [r2] - ldr r1, =0xfffffdff - ands r0, r1 - ldr r1, =0xfff7ffff - ands r0, r1 - str r0, [r2] -_0803D8AC: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end bc_bs_exec - - thumb_func_start sub_803D8C0 -sub_803D8C0: @ 803D8C0 - push {r4,lr} - ldr r1, =gFightStateTracker - movs r0, 0 - strb r0, [r1] - ldr r1, =gBattleTypeFlags - ldr r2, [r1] - ldr r0, =0x02000002 - ands r0, r2 - cmp r0, 0 - beq _0803D920 - ldr r1, =gScriptResult - ldr r4, =gBattleOutcome - ldrb r0, [r4] - strh r0, [r1] - ldr r1, =gBattleTextBuff1 - ldrb r0, [r4] - strb r0, [r1] - movs r0, 0 - bl GetBankByPlayerAI - ldr r1, =gBankAttacker - strb r0, [r1] - ldr r1, =gBattlescriptCurrInstr - ldr r0, =gUnknown_082DAA35 - str r0, [r1] - ldrb r1, [r4] - movs r0, 0x7F - ands r0, r1 - strb r0, [r4] - b _0803DAA4 - .pool -_0803D920: - movs r0, 0x8 - ands r0, r2 - cmp r0, 0 - beq _0803D95C - ldr r0, =0x043f0900 - ands r2, r0 - cmp r2, 0 - beq _0803D95C - bl sub_805EA60 - ldr r1, =gBattlescriptCurrInstr - ldr r0, =gUnknown_082DAA87 - str r0, [r1] - ldr r0, =gTrainerBattleOpponent_A - ldrh r1, [r0] - ldr r0, =0x000003fe - cmp r1, r0 - bne _0803D946 - b _0803DA8A -_0803D946: - b _0803DA94 - .pool -_0803D95C: - ldr r0, [r1] - movs r1, 0xA - ands r0, r1 - cmp r0, 0x8 - beq _0803D968 - b _0803DA9E -_0803D968: - bl sub_805EA60 - ldr r1, =gBattlescriptCurrInstr - ldr r0, =gUnknown_082DA92D - str r0, [r1] - ldr r2, =gTrainers - ldr r0, =gTrainerBattleOpponent_A - ldrh r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - ldrb r0, [r0, 0x1] - subs r0, 0x3 - cmp r0, 0x32 - bls _0803D98A - b _0803DA94 -_0803D98A: - lsls r0, 2 - ldr r1, =_0803D9A8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_0803D9A8: - .4byte _0803DA80 - .4byte _0803DA94 - .4byte _0803DA94 - .4byte _0803DA94 - .4byte _0803DA94 - .4byte _0803DA94 - .4byte _0803DA80 - .4byte _0803DA94 - .4byte _0803DA80 - .4byte _0803DA94 - .4byte _0803DA80 - .4byte _0803DA94 - .4byte _0803DA94 - .4byte _0803DA94 - .4byte _0803DA94 - .4byte _0803DA94 - .4byte _0803DA94 - .4byte _0803DA94 - .4byte _0803DA94 - .4byte _0803DA94 - .4byte _0803DA94 - .4byte _0803DA94 - .4byte _0803DA94 - .4byte _0803DA94 - .4byte _0803DA94 - .4byte _0803DA94 - .4byte _0803DA94 - .4byte _0803DA94 - .4byte _0803DA74 - .4byte _0803DA8A - .4byte _0803DA94 - .4byte _0803DA94 - .4byte _0803DA94 - .4byte _0803DA94 - .4byte _0803DA94 - .4byte _0803DA74 - .4byte _0803DA94 - .4byte _0803DA94 - .4byte _0803DA94 - .4byte _0803DA94 - .4byte _0803DA94 - .4byte _0803DA94 - .4byte _0803DA94 - .4byte _0803DA94 - .4byte _0803DA94 - .4byte _0803DA94 - .4byte _0803DA80 - .4byte _0803DA94 - .4byte _0803DA94 - .4byte _0803DA94 - .4byte _0803DA80 -_0803DA74: - ldr r0, =0x00000163 - bl PlayBGM - b _0803DAA4 - .pool -_0803DA80: - movs r0, 0xD4 - lsls r0, 1 - bl PlayBGM - b _0803DAA4 -_0803DA8A: - movs r0, 0xB1 - lsls r0, 1 - bl PlayBGM - b _0803DAA4 -_0803DA94: - movs r0, 0xCE - lsls r0, 1 - bl PlayBGM - b _0803DAA4 -_0803DA9E: - ldr r1, =gBattlescriptCurrInstr - ldr r0, =gUnknown_082DA96A - str r0, [r1] -_0803DAA4: - ldr r1, =gBattleMainFunc - ldr r0, =sub_803DCD8 - str r0, [r1] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_803D8C0 - - thumb_func_start sub_803DAC0 -sub_803DAC0: @ 803DAC0 - push {r4,lr} - ldr r1, =gFightStateTracker - movs r0, 0 - strb r0, [r1] - ldr r0, =gBattleTypeFlags - ldr r1, [r0] - ldr r0, =0x02000002 - ands r0, r1 - cmp r0, 0 - beq _0803DB7C - ldr r0, =0x003f0100 - ands r1, r0 - cmp r1, 0 - beq _0803DB44 - ldr r3, =gBattleOutcome - ldrb r2, [r3] - movs r0, 0x80 - ands r0, r2 - cmp r0, 0 - beq _0803DB2C - ldr r1, =gBattlescriptCurrInstr - ldr r0, =gUnknown_082DB9C8 - str r0, [r1] - movs r0, 0x7F - ands r0, r2 - strb r0, [r3] - ldr r0, =gSaveBlock2Ptr - ldr r1, [r0] - ldr r0, =0x00000ca9 - adds r1, r0 - ldrb r0, [r1] - movs r2, 0x8 - orrs r0, r2 - strb r0, [r1] - b _0803DB82 - .pool -_0803DB2C: - ldr r1, =gBattlescriptCurrInstr - ldr r0, =gUnknown_082DAA0B - str r0, [r1] - movs r0, 0x7F - ands r0, r2 - strb r0, [r3] - b _0803DB82 - .pool -_0803DB44: - ldr r1, =gBattleTextBuff1 - ldr r4, =gBattleOutcome - ldrb r0, [r4] - strb r0, [r1] - movs r0, 0 - bl GetBankByPlayerAI - ldr r1, =gBankAttacker - strb r0, [r1] - ldr r1, =gBattlescriptCurrInstr - ldr r0, =gUnknown_082DAA35 - str r0, [r1] - ldrb r1, [r4] - movs r0, 0x7F - ands r0, r1 - strb r0, [r4] - b _0803DB82 - .pool -_0803DB7C: - ldr r1, =gBattlescriptCurrInstr - ldr r0, =gUnknown_082DA96D - str r0, [r1] -_0803DB82: - ldr r1, =gBattleMainFunc - ldr r0, =sub_803DCD8 - str r0, [r1] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_803DAC0 - - thumb_func_start sub_803DBA0 -sub_803DBA0: @ 803DBA0 - push {lr} - ldr r1, =gFightStateTracker - movs r0, 0 - strb r0, [r1] - ldr r1, =gBattleTypeFlags - ldr r2, [r1] - ldr r0, =0x003f0100 - ands r0, r2 - cmp r0, 0 - beq _0803DBFC - movs r0, 0x8 - ands r2, r0 - cmp r2, 0 - beq _0803DBFC - ldr r1, =gBattlescriptCurrInstr - ldr r0, =gUnknown_082DB9C1 - str r0, [r1] - ldr r1, =gBattleOutcome - movs r0, 0x9 - strb r0, [r1] - ldr r0, =gSaveBlock2Ptr - ldr r1, [r0] - ldr r0, =0x00000ca9 - adds r1, r0 - ldrb r0, [r1] - movs r2, 0x8 - orrs r0, r2 - strb r0, [r1] - b _0803DC6A - .pool -_0803DBFC: - ldr r0, [r1] - movs r1, 0x80 - lsls r1, 19 - ands r0, r1 - cmp r0, 0 - beq _0803DC24 - ldr r1, =gBattlescriptCurrInstr - ldr r0, =gUnknown_082DB9C1 - str r0, [r1] - ldr r1, =gBattleOutcome - movs r0, 0x9 - strb r0, [r1] - b _0803DC6A - .pool -_0803DC24: - ldr r1, =gProtectStructs - ldr r0, =gBankAttacker - ldrb r0, [r0] - lsls r0, 4 - adds r0, r1 - ldrb r0, [r0, 0x1] - lsls r0, 27 - lsrs r0, 30 - cmp r0, 0x1 - beq _0803DC54 - cmp r0, 0x2 - beq _0803DC64 - ldr r1, =gBattlescriptCurrInstr - ldr r0, =gUnknown_082DAAF0 - b _0803DC68 - .pool -_0803DC54: - ldr r1, =gBattlescriptCurrInstr - ldr r0, =gUnknown_082DAADB - b _0803DC68 - .pool -_0803DC64: - ldr r1, =gBattlescriptCurrInstr - ldr r0, =gUnknown_082DAAE9 -_0803DC68: - str r0, [r1] -_0803DC6A: - ldr r1, =gBattleMainFunc - ldr r0, =sub_803DCD8 - str r0, [r1] - pop {r0} - bx r0 - .pool - thumb_func_end sub_803DBA0 - - thumb_func_start bc_80158BC -bc_80158BC: @ 803DC84 - ldr r1, =gFightStateTracker - movs r0, 0 - strb r0, [r1] - ldr r1, =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x7 - strb r0, [r1, 0x1] - ldr r2, =gBankAttacker - ldrb r0, [r2] - strb r0, [r1, 0x2] - ldr r3, =gBattlePartyID - ldrb r0, [r2] - lsls r0, 1 - adds r0, r3 - ldrh r0, [r0] - strb r0, [r1, 0x3] - movs r0, 0xFF - strb r0, [r1, 0x4] - ldr r1, =gBattlescriptCurrInstr - ldr r0, =gUnknown_082DAAF7 - str r0, [r1] - ldr r1, =gBattleMainFunc - ldr r0, =sub_803DCD8 - str r0, [r1] - bx lr - .pool - thumb_func_end bc_80158BC - - thumb_func_start sub_803DCD8 -sub_803DCD8: @ 803DCD8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r0, =gFightStateTracker - ldrb r0, [r0] - subs r0, 0xB - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bls _0803DCEE - b _0803DE10 -_0803DCEE: - ldr r0, =gBattleTypeFlags - ldr r1, [r0] - ldr r0, =0x023f0b92 - ands r1, r0 - cmp r1, 0 - bne _0803DDB6 - ldr r2, =gActiveBank - strb r1, [r2] - ldr r0, =gNoOfAllBanks - ldrb r0, [r0] - cmp r1, r0 - bcs _0803DDB2 - adds r5, r2, 0 - ldr r0, =gBattlePartyID - mov r8, r0 - movs r7, 0x64 - ldr r6, =gPlayerParty -_0803DD10: - ldrb r0, [r5] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _0803DDA0 - ldr r4, =gBattleResults - ldrh r0, [r4, 0x6] - cmp r0, 0 - bne _0803DD74 - ldrb r0, [r5] - lsls r0, 1 - add r0, r8 - ldrh r0, [r0] - muls r0, r7 - adds r0, r6 - movs r1, 0xB - movs r2, 0 - bl GetMonData - strh r0, [r4, 0x6] - ldrb r0, [r5] - lsls r0, 1 - add r0, r8 - ldrh r0, [r0] - muls r0, r7 - adds r0, r6 - movs r1, 0x2 - adds r2, r4, 0 - adds r2, 0x8 - bl GetMonData - b _0803DDA0 - .pool -_0803DD74: - ldrb r0, [r5] - lsls r0, 1 - add r0, r8 - ldrh r0, [r0] - muls r0, r7 - adds r0, r6 - movs r1, 0xB - movs r2, 0 - bl GetMonData - strh r0, [r4, 0x26] - ldrb r0, [r5] - lsls r0, 1 - add r0, r8 - ldrh r0, [r0] - muls r0, r7 - adds r0, r6 - movs r1, 0x2 - adds r2, r4, 0 - adds r2, 0x14 - bl GetMonData -_0803DDA0: - ldrb r0, [r5] - adds r0, 0x1 - strb r0, [r5] - ldr r1, =gNoOfAllBanks - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r1] - cmp r0, r1 - bcc _0803DD10 -_0803DDB2: - bl sub_80EC728 -_0803DDB6: - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - ldr r1, =0x023f0b9a - ands r0, r1 - cmp r0, 0 - bne _0803DDD2 - ldr r0, =gBattleResults - ldrb r1, [r0, 0x5] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0803DDD2 - bl sub_80EE184 -_0803DDD2: - bl sub_8186444 - movs r0, 0x3 - bl BeginFastPaletteFade - movs r0, 0x5 - bl FadeOutMapMusic - ldr r1, =gBattleMainFunc - ldr r0, =sub_803DE40 - str r0, [r1] - ldr r1, =gUnknown_030061E8 - ldr r0, =sub_8038420 - str r0, [r1] - b _0803DE2A - .pool -_0803DE10: - ldr r0, =gBattleExecBuffer - ldr r0, [r0] - cmp r0, 0 - bne _0803DE2A - ldr r1, =gBattleScriptingCommandsTable - ldr r0, =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - bl _call_via_r0 -_0803DE2A: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_803DCD8 - - thumb_func_start sub_803DE40 -sub_803DE40: @ 803DE40 - push {lr} - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0803DE86 - bl ResetSpriteData - ldr r0, =gUnknown_03005D54 - ldrb r0, [r0] - cmp r0, 0 - beq _0803DE62 - ldr r0, =gBattleOutcome - ldrb r0, [r0] - cmp r0, 0x1 - beq _0803DE80 -_0803DE62: - ldr r1, =gBattleMainFunc - ldr r0, =c4_overworld - str r0, [r1] - b _0803DEA2 - .pool -_0803DE80: - ldr r1, =gBattleMainFunc - ldr r0, =bc_evolution_cutscene - str r0, [r1] -_0803DE86: - bl FreeAllWindowBuffers - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x2 - ands r0, r1 - cmp r0, 0 - bne _0803DEA2 - bl sub_805F094 - bl sub_8057028 - bl dp11_free -_0803DEA2: - pop {r0} - bx r0 - .pool - thumb_func_end sub_803DE40 - - thumb_func_start bc_evolution_cutscene -bc_evolution_cutscene: @ 803DEB4 - push {r4-r6,lr} - ldr r0, =gUnknown_03005D54 - ldrb r1, [r0] - adds r3, r0, 0 - cmp r1, 0 - beq _0803DF2E -_0803DEC0: - movs r6, 0 -_0803DEC2: - ldrb r2, [r3] - ldr r0, =gBitTable - lsls r1, r6, 2 - adds r1, r0 - ldr r1, [r1] - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - beq _0803DF20 - bics r2, r1 - strb r2, [r3] - movs r0, 0x64 - adds r1, r6, 0 - muls r1, r0 - ldr r0, =gPlayerParty - adds r5, r1, r0 - adds r0, r5, 0 - movs r1, 0 - bl GetEvolutionTargetSpecies - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0 - beq _0803DF20 - bl FreeAllWindowBuffers - ldr r0, =gBattleMainFunc - ldr r1, =sub_803DF48 - str r1, [r0] - lsls r3, r6, 24 - lsrs r3, 24 - adds r0, r5, 0 - adds r1, r4, 0 - movs r2, 0x1 - bl evolution_cutscene - b _0803DF34 - .pool -_0803DF20: - adds r6, 0x1 - ldr r3, =gUnknown_03005D54 - cmp r6, 0x5 - ble _0803DEC2 - ldrb r0, [r3] - cmp r0, 0 - bne _0803DEC0 -_0803DF2E: - ldr r1, =gBattleMainFunc - ldr r0, =c4_overworld - str r0, [r1] -_0803DF34: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end bc_evolution_cutscene - - thumb_func_start sub_803DF48 -sub_803DF48: @ 803DF48 - push {lr} - ldr r0, =gMain - ldr r1, [r0, 0x4] - ldr r0, =sub_8038420 - cmp r1, r0 - bne _0803DF5A - ldr r1, =gBattleMainFunc - ldr r0, =bc_evolution_cutscene - str r0, [r1] -_0803DF5A: - pop {r0} - bx r0 - .pool - thumb_func_end sub_803DF48 - - thumb_func_start c4_overworld -c4_overworld: @ 803DF70 - push {r4-r6,lr} - ldr r6, =gBattleTypeFlags - ldr r0, [r6] - movs r5, 0x2 - ands r0, r5 - cmp r0, 0 - bne _0803DF8C - ldr r4, =gPlayerParty - adds r0, r4, 0 - bl RandomlyGivePartyPokerus - adds r0, r4, 0 - bl PartySpreadPokerus -_0803DF8C: - ldr r4, [r6] - adds r0, r4, 0 - ands r0, r5 - cmp r0, 0 - beq _0803DF9E - ldr r0, =gUnknown_03003124 - ldrb r0, [r0] - cmp r0, 0 - bne _0803DFEC -_0803DF9E: - ldr r1, =gScriptResult - ldr r5, =gBattleOutcome - ldrb r0, [r5] - strh r0, [r1] - ldr r3, =gMain - ldr r0, =0x00000439 - adds r2, r3, r0 - ldrb r1, [r2] - movs r0, 0x3 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - ldr r0, =gUnknown_03005D00 - ldr r0, [r0] - str r0, [r3] - movs r0, 0x80 - lsls r0, 3 - ands r4, r0 - cmp r4, 0 - beq _0803DFDE - ldr r0, =gEnemyParty - bl UpdateRoamerHPStatus - ldrb r1, [r5] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _0803DFDA - cmp r1, 0x7 - bne _0803DFDE -_0803DFDA: - bl SetRoamerInactive -_0803DFDE: - movs r0, 0x5A - bl m4aSongNumStop - ldr r0, =gMain - ldr r0, [r0, 0x8] - bl SetMainCallback2 -_0803DFEC: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end c4_overworld - - thumb_func_start bc_move_exec_returning -bc_move_exec_returning: @ 803E018 - push {lr} - ldr r0, =gFightStateTracker - ldrb r0, [r0] - subs r0, 0xB - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bhi _0803E060 - ldr r3, =gBattleResources - ldr r0, [r3] - ldr r0, [r0, 0xC] - adds r1, r0, 0 - adds r1, 0x20 - ldrb r0, [r1] - cmp r0, 0 - beq _0803E03C - subs r0, 0x1 - strb r0, [r1] -_0803E03C: - ldr r2, =gBattleMainFunc - ldr r0, [r3] - ldr r1, [r0, 0xC] - adds r0, r1, 0 - adds r0, 0x20 - ldrb r0, [r0] - lsls r0, 2 - adds r1, r0 - ldr r0, [r1] - str r0, [r2] - b _0803E07A - .pool -_0803E060: - ldr r0, =gBattleExecBuffer - ldr r0, [r0] - cmp r0, 0 - bne _0803E07A - ldr r1, =gBattleScriptingCommandsTable - ldr r0, =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - bl _call_via_r0 -_0803E07A: - pop {r0} - bx r0 - .pool - thumb_func_end bc_move_exec_returning - - thumb_func_start sub_803E08C -sub_803E08C: @ 803E08C - push {lr} - ldr r0, =gBattleExecBuffer - ldr r0, [r0] - cmp r0, 0 - bne _0803E0A8 - ldr r1, =gBattleScriptingCommandsTable - ldr r0, =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - bl _call_via_r0 -_0803E0A8: - pop {r0} - bx r0 - .pool - thumb_func_end sub_803E08C - - thumb_func_start sub_803E0B8 -sub_803E0B8: @ 803E0B8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - movs r0, 0x4 - str r0, [sp] - ldr r6, =gBankAttacker - ldr r1, =gTurnOrder - ldr r0, =gUnknown_02024082 - ldrb r0, [r0] - adds r0, r1 - ldrb r0, [r0] - strb r0, [r6] - ldr r1, =gBattleStruct - ldr r3, [r1] - adds r0, r3, 0 - adds r0, 0x91 - ldrb r2, [r0] - ldr r1, =gBitTable - ldrb r0, [r6] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - ands r2, r0 - cmp r2, 0 - beq _0803E110 - ldr r1, =gFightStateTracker - movs r0, 0xC - b _0803E83C - .pool -_0803E110: - ldr r1, =gCritMultiplier - movs r0, 0x1 - strb r0, [r1] - ldr r1, =gBattleScripting - movs r0, 0x1 - strb r0, [r1, 0xE] - ldr r5, =0x000001a3 - adds r0, r3, r5 - strb r2, [r0] - ldr r0, =gBattleMoveFlags - strb r2, [r0] - ldr r0, =gUnknown_02024212 - strb r2, [r0] - ldr r0, =gBattleCommunication - strb r2, [r0, 0x6] - ldr r2, =gCurrMovePos - ldr r0, =gUnknown_020241E9 - mov r9, r0 - ldrb r0, [r6] - ldr r3, =gBattleStruct - ldr r1, [r3] - adds r0, r1 - adds r0, 0x80 - ldrb r0, [r0] - mov r5, r9 - strb r0, [r5] - strb r0, [r2] - ldr r1, =gProtectStructs - ldrb r4, [r6] - lsls r0, r4, 4 - adds r3, r0, r1 - ldrb r1, [r3] - lsls r0, r1, 29 - mov r8, r2 - cmp r0, 0 - bge _0803E1BC - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r3] - ldr r2, =gCurrentMove - ldr r1, =gUnknown_020241EC - movs r0, 0xA5 - strh r0, [r1] - strh r0, [r2] - ldr r2, =gHitMarker - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 4 - orrs r0, r1 - str r0, [r2] - movs r0, 0xA5 - movs r1, 0 - bl GetMoveTarget - ldrb r1, [r6] - ldr r3, =gBattleStruct - ldr r2, [r3] - b _0803E316 - .pool -_0803E1BC: - ldr r5, =gBattleMons - mov r10, r5 - movs r0, 0x58 - adds r5, r4, 0 - muls r5, r0 - mov r0, r10 - adds r0, 0x50 - adds r0, r5, r0 - ldr r1, [r0] - movs r0, 0x80 - lsls r0, 5 - ands r0, r1 - cmp r0, 0 - bne _0803E1E2 - movs r7, 0x80 - lsls r7, 15 - ands r7, r1 - cmp r7, 0 - beq _0803E204 -_0803E1E2: - ldr r3, =gCurrentMove - ldr r2, =gUnknown_020241EC - ldr r1, =gUnknown_02024268 - lsls r0, r4, 1 - adds r0, r1 - ldrh r0, [r0] - strh r0, [r2] - strh r0, [r3] - b _0803E33C - .pool -_0803E204: - ldr r1, =gDisableStructs - mov r12, r1 - lsls r0, r4, 3 - subs r0, r4 - lsls r0, 2 - add r0, r12 - ldrh r3, [r0, 0x6] - adds r1, r3, 0 - cmp r1, 0 - beq _0803E2DC - ldrb r2, [r0, 0xC] - lsls r0, r2, 1 - adds r0, r5 - mov r4, r10 - adds r4, 0xC - adds r0, r4 - ldrh r0, [r0] - cmp r1, r0 - bne _0803E268 - ldr r2, =gCurrentMove - ldr r0, =gUnknown_020241EC - strh r3, [r0] - strh r3, [r2] - ldrb r1, [r6] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r12 - ldrb r0, [r0, 0xC] - mov r3, r9 - strb r0, [r3] - mov r5, r8 - strb r0, [r5] - ldrh r0, [r2] - movs r1, 0 - bl GetMoveTarget - ldrb r1, [r6] - ldr r3, =gBattleStruct - ldr r2, [r3] - b _0803E316 - .pool -_0803E268: - cmp r1, 0 - beq _0803E2DC - cmp r1, r0 - beq _0803E2DC - mov r5, r9 - strb r2, [r5] - mov r0, r8 - strb r2, [r0] - ldr r3, =gCurrentMove - ldr r2, =gUnknown_020241EC - ldrb r0, [r0] - lsls r0, 1 - ldrb r1, [r6] - movs r5, 0x58 - muls r1, r5 - adds r0, r1 - adds r0, r4 - ldrh r0, [r0] - strh r0, [r2] - strh r0, [r3] - ldrb r1, [r6] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r12 - movs r2, 0 - strh r7, [r0, 0x6] - ldrb r1, [r6] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r12 - strb r2, [r0, 0xC] - ldrb r0, [r6] - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - add r1, r12 - ldrb r2, [r1, 0xE] - movs r0, 0x10 - negs r0, r0 - ands r0, r2 - strb r0, [r1, 0xE] - ldrh r0, [r3] - movs r1, 0 - bl GetMoveTarget - ldrb r1, [r6] - ldr r3, =gBattleStruct - ldr r2, [r3] - b _0803E316 - .pool -_0803E2DC: - ldr r3, =gBattleMons - mov r5, r8 - ldrb r0, [r5] - lsls r0, 1 - ldr r4, =gBankAttacker - ldrb r2, [r4] - movs r1, 0x58 - muls r1, r2 - adds r0, r1 - adds r3, 0xC - adds r0, r3 - ldr r1, =gUnknown_02024274 - lsls r2, 1 - adds r2, r1 - ldrh r3, [r0] - ldrh r2, [r2] - cmp r3, r2 - beq _0803E334 - ldr r1, =gCurrentMove - ldr r0, =gUnknown_020241EC - strh r3, [r0] - strh r3, [r1] - ldrh r0, [r1] - movs r1, 0 - bl GetMoveTarget - ldrb r1, [r4] - ldr r2, =gBattleStruct - ldr r2, [r2] -_0803E316: - adds r1, r2 - strb r0, [r1, 0xC] - b _0803E33C - .pool -_0803E334: - ldr r1, =gCurrentMove - ldr r0, =gUnknown_020241EC - strh r3, [r0] - strh r3, [r1] -_0803E33C: - ldr r2, =gBattleMons - ldr r1, =gBankAttacker - ldrb r3, [r1] - movs r0, 0x58 - muls r0, r3 - adds r0, r2 - ldrh r0, [r0, 0x28] - mov r8, r1 - cmp r0, 0 - beq _0803E384 - adds r0, r3, 0 - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _0803E37C - ldr r0, =gBattleResults - ldr r1, =gCurrentMove - ldrh r1, [r1] - strh r1, [r0, 0x22] - b _0803E384 - .pool -_0803E37C: - ldr r0, =gBattleResults - ldr r1, =gCurrentMove - ldrh r1, [r1] - strh r1, [r0, 0x24] -_0803E384: - mov r1, r8 - ldrb r0, [r1] - bl GetBankSide - movs r1, 0x1 - eors r0, r1 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r1, =gSideTimers - lsls r0, r6, 1 - adds r0, r6 - lsls r0, 2 - adds r5, r0, r1 - ldrb r0, [r5, 0x8] - cmp r0, 0 - beq _0803E400 - ldr r2, =gBattleMoves - ldr r0, =gCurrentMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x6] - cmp r0, 0 - bne _0803E400 - mov r3, r8 - ldrb r0, [r3] - bl GetBankSide - adds r4, r0, 0 - ldrb r0, [r5, 0x9] - bl GetBankSide - lsls r4, 24 - lsls r0, 24 - cmp r4, r0 - beq _0803E400 - ldr r1, =gBattleMons - ldrb r2, [r5, 0x9] - movs r0, 0x58 - muls r0, r2 - adds r0, r1 - ldrh r0, [r0, 0x28] - cmp r0, 0 - beq _0803E400 - ldr r0, =gBankTarget - strb r2, [r0] - b _0803E76A - .pool -_0803E400: - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x1 - ands r0, r1 - ldr r5, =gBankAttacker - mov r8, r5 - cmp r0, 0 - bne _0803E412 - b _0803E6E0 -_0803E412: - ldr r1, =gSideTimers - lsls r0, r6, 1 - adds r0, r6 - lsls r0, 2 - adds r0, r1 - ldrb r5, [r0, 0x8] - cmp r5, 0 - beq _0803E424 - b _0803E630 -_0803E424: - ldr r2, =gBattleMoves - ldr r0, =gCurrentMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r4, r0, r2 - ldrb r0, [r4, 0x1] - cmp r0, 0 - bne _0803E440 - ldrb r0, [r4, 0x6] - cmp r0, 0x10 - bne _0803E440 - b _0803E630 -_0803E440: - ldr r3, =gBattleMons - ldr r2, =gBankAttacker - ldrb r6, [r2] - ldr r0, =gBattleStruct - ldr r0, [r0] - adds r0, r6, r0 - ldrb r1, [r0, 0xC] - movs r0, 0x58 - muls r0, r1 - adds r0, r3 - adds r0, 0x20 - ldrb r0, [r0] - mov r8, r2 - cmp r0, 0x1F - bne _0803E460 - b _0803E630 -_0803E460: - ldrb r0, [r4, 0x2] - cmp r0, 0xD - beq _0803E468 - b _0803E630 -_0803E468: - adds r0, r6, 0 - bl GetBankSide - lsls r0, 24 - lsrs r6, r0, 24 - ldr r1, =gActiveBank - strb r5, [r1] - ldr r0, =gNoOfAllBanks - ldrb r0, [r0] - cmp r5, r0 - bcs _0803E4E0 - adds r4, r1, 0 -_0803E480: - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - lsrs r0, 24 - cmp r6, r0 - beq _0803E4CE - ldr r0, =gBankAttacker - ldrb r1, [r0] - ldr r0, =gBattleStruct - ldr r0, [r0] - adds r1, r0 - ldrb r0, [r1, 0xC] - ldrb r1, [r4] - cmp r0, r1 - beq _0803E4CE - ldr r1, =gBattleMons - ldrb r2, [r4] - movs r0, 0x58 - muls r0, r2 - adds r0, r1 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x1F - bne _0803E4CE - adds r0, r2, 0 - bl sub_8048728 - lsls r0, 24 - lsrs r0, 24 - ldr r3, [sp] - cmp r0, r3 - bcs _0803E4CE - ldrb r0, [r4] - bl sub_8048728 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp] -_0803E4CE: - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - ldr r1, =gNoOfAllBanks - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r1] - cmp r0, r1 - bcc _0803E480 -_0803E4E0: - ldr r5, [sp] - cmp r5, 0x4 - beq _0803E4E8 - b _0803E5E2 -_0803E4E8: - ldr r2, =gBattleMoves - ldr r0, =gUnknown_020241EC - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x6] - ands r5, r0 - cmp r5, 0 - beq _0803E568 - ldr r0, =gBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _0803E548 - bl Random - movs r1, 0x1 - ands r1, r0 - cmp r1, 0 - beq _0803E544 - movs r0, 0x1 - b _0803E55A - .pool -_0803E544: - movs r0, 0x3 - b _0803E55A -_0803E548: - bl Random - movs r1, 0x1 - ands r1, r0 - cmp r1, 0 - beq _0803E558 - movs r0, 0 - b _0803E55A -_0803E558: - movs r0, 0x2 -_0803E55A: - bl GetBankByPlayerAI - ldr r1, =gBankTarget - strb r0, [r1] - b _0803E578 - .pool -_0803E568: - ldr r2, =gBankTarget - ldr r0, =gBankAttacker - ldrb r0, [r0] - ldr r1, =gBattleStruct - ldr r1, [r1] - adds r0, r1 - ldrb r0, [r0, 0xC] - strb r0, [r2] -_0803E578: - ldr r7, =gAbsentBankFlags - ldrb r0, [r7] - ldr r1, =gBitTable - mov r8, r1 - ldr r5, =gBankTarget - ldrb r1, [r5] - lsls r1, 2 - add r1, r8 - ldr r1, [r1] - ands r0, r1 - cmp r0, 0 - bne _0803E592 - b _0803E76A -_0803E592: - ldr r6, =gBankAttacker - ldrb r0, [r6] - bl GetBankSide - adds r4, r0, 0 - ldrb r0, [r5] - bl GetBankSide - lsls r4, 24 - lsls r0, 24 - cmp r4, r0 - beq _0803E5C4 - ldrb r0, [r5] - b _0803E758 - .pool -_0803E5C4: - ldrb r0, [r6] - bl GetBankIdentity - movs r1, 0x1 - eors r0, r1 - lsls r0, 24 - lsrs r0, 24 - bl GetBankByPlayerAI - strb r0, [r5] - ldrb r1, [r7] - ldrb r2, [r5] - lsls r0, r2, 2 - add r0, r8 - b _0803E74E -_0803E5E2: - ldr r4, =gActiveBank - ldr r0, =gTurnOrder - ldr r3, [sp] - adds r0, r3, r0 - ldrb r0, [r0] - strb r0, [r4] - ldrb r0, [r4] - ldr r2, =gBattleMons - movs r1, 0x58 - muls r1, r0 - adds r1, r2 - adds r1, 0x20 - ldrb r1, [r1] - bl RecordAbilityBattle - ldr r2, =gSpecialStatuses - ldrb r1, [r4] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - movs r2, 0x2 - orrs r1, r2 - strb r1, [r0] - ldr r1, =gBankTarget - ldrb r0, [r4] - strb r0, [r1] - b _0803E76A - .pool -_0803E630: - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r4, 0x1 - ands r0, r4 - cmp r0, 0 - beq _0803E6E0 - ldr r2, =gBattleMoves - ldr r0, =gUnknown_020241EC - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0, 0x6] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _0803E6E0 - mov r5, r8 - ldrb r0, [r5] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _0803E684 - bl Random - adds r1, r4, 0 - ands r1, r0 - cmp r1, 0 - beq _0803E680 - movs r0, 0x1 - b _0803E696 - .pool -_0803E680: - movs r0, 0x3 - b _0803E696 -_0803E684: - bl Random - adds r1, r4, 0 - ands r1, r0 - cmp r1, 0 - beq _0803E694 - movs r0, 0 - b _0803E696 -_0803E694: - movs r0, 0x2 -_0803E696: - bl GetBankByPlayerAI - ldr r1, =gBankTarget - strb r0, [r1] - ldr r0, =gAbsentBankFlags - ldrb r1, [r0] - ldr r2, =gBitTable - ldr r5, =gBankTarget - ldrb r0, [r5] - lsls r0, 2 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - beq _0803E76A - ldr r0, =gBankAttacker - ldrb r0, [r0] - bl GetBankSide - adds r4, r0, 0 - ldrb r0, [r5] - bl GetBankSide - lsls r4, 24 - lsls r0, 24 - cmp r4, r0 - beq _0803E76A - ldrb r0, [r5] - b _0803E758 - .pool -_0803E6E0: - ldr r5, =gBankTarget - mov r2, r8 - ldrb r0, [r2] - ldr r1, =gBattleStruct - ldr r1, [r1] - adds r0, r1 - ldrb r0, [r0, 0xC] - strb r0, [r5] - ldr r6, =gAbsentBankFlags - ldrb r1, [r6] - ldr r7, =gBitTable - ldrb r0, [r5] - lsls r0, 2 - adds r0, r7 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - beq _0803E76A - ldrb r0, [r2] - bl GetBankSide - adds r4, r0, 0 - ldrb r0, [r5] - bl GetBankSide - lsls r4, 24 - lsls r0, 24 - cmp r4, r0 - beq _0803E730 - ldrb r0, [r5] - b _0803E758 - .pool -_0803E730: - mov r1, r8 - ldrb r0, [r1] - bl GetBankIdentity - movs r1, 0x1 - eors r0, r1 - lsls r0, 24 - lsrs r0, 24 - bl GetBankByPlayerAI - strb r0, [r5] - ldrb r1, [r6] - ldrb r2, [r5] - lsls r0, r2, 2 - adds r0, r7 -_0803E74E: - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - beq _0803E76A - adds r0, r2, 0 -_0803E758: - bl GetBankIdentity - movs r1, 0x2 - eors r0, r1 - lsls r0, 24 - lsrs r0, 24 - bl GetBankByPlayerAI - strb r0, [r5] -_0803E76A: - ldr r0, =gBattleTypeFlags - ldr r1, [r0] - movs r2, 0x80 - lsls r2, 10 - ands r1, r2 - adds r5, r0, 0 - cmp r1, 0 - beq _0803E808 - ldr r0, =gProtectStructs - ldr r4, =gBankAttacker - ldrb r2, [r4] - lsls r1, r2, 4 - adds r1, r0 - ldrb r0, [r1, 0x2] - lsls r0, 27 - cmp r0, 0 - bge _0803E808 - ldr r1, =gBattleMons - movs r0, 0x58 - muls r0, r2 - adds r0, r1 - ldrh r0, [r0, 0x28] - cmp r0, 0 - bne _0803E7B4 - ldr r1, =gFightStateTracker - movs r0, 0xC - b _0803E83C - .pool -_0803E7B4: - ldr r3, =gUnknown_02024230 - lsls r0, r2, 2 - adds r0, r3 - ldr r0, [r0] - cmp r0, 0 - beq _0803E7EC - ldr r1, =gBattleCommunication - movs r2, 0 - movs r0, 0x4 - strb r0, [r1, 0x5] - ldr r1, =gBattlescriptCurrInstr - ldrb r0, [r4] - lsls r0, 2 - adds r0, r3 - ldr r0, [r0] - str r0, [r1] - ldrb r0, [r4] - lsls r0, 2 - adds r0, r3 - str r2, [r0] - b _0803E824 - .pool -_0803E7EC: - ldr r1, =gBattleCommunication - movs r0, 0x4 - strb r0, [r1, 0x5] - ldr r1, =gBattlescriptCurrInstr - ldr r0, =gUnknown_082DB6AD - str r0, [r1] - b _0803E824 - .pool -_0803E808: - ldr r4, =gBattlescriptCurrInstr - ldr r3, =gUnknown_082D86A8 - ldr r2, =gBattleMoves - ldr r0, =gCurrentMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r3 - ldr r0, [r0] - str r0, [r4] -_0803E824: - ldr r0, [r5] - movs r1, 0x80 - lsls r1, 11 - ands r0, r1 - cmp r0, 0 - beq _0803E838 - ldr r0, =gBankAttacker - ldrb r0, [r0] - bl sub_81A56E8 -_0803E838: - ldr r1, =gFightStateTracker - movs r0, 0xA -_0803E83C: - strb r0, [r1] - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_803E0B8 - - thumb_func_start bs2_8016374 -bs2_8016374: @ 803E868 - push {r4,lr} - ldr r3, =gBankAttacker - ldr r1, =gTurnOrder - ldr r0, =gUnknown_02024082 - ldrb r0, [r0] - adds r0, r1 - ldrb r0, [r0] - strb r0, [r3] - ldr r0, =gUnknown_02022E14 - movs r2, 0 - strh r2, [r0] - ldr r0, =gUnknown_02022E16 - strh r2, [r0] - ldr r1, =gUnknown_020244AC - ldrb r0, [r3] - adds r0, r1 - strb r2, [r0] - ldr r1, =gUnknown_020244B0 - ldrb r0, [r3] - adds r0, r1 - strb r2, [r0] - ldr r2, =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r2] - movs r0, 0x7 - strb r0, [r2, 0x1] - ldrb r4, [r3] - strb r4, [r2, 0x2] - ldrb r0, [r3] - ldr r1, =gBattleStruct - ldr r1, [r1] - adds r0, r1 - adds r0, 0x58 - ldrb r0, [r0] - strb r0, [r2, 0x3] - movs r0, 0xFF - strb r0, [r2, 0x4] - ldr r0, =gBattleScripting - strb r4, [r0, 0x17] - ldr r1, =gBattlescriptCurrInstr - ldr r0, =gUnknown_082DAB15 - str r0, [r1] - ldr r1, =gFightStateTracker - movs r0, 0xA - strb r0, [r1] - ldr r1, =gBattleResults - ldrb r0, [r1, 0x2] - cmp r0, 0xFE - bhi _0803E8CE - adds r0, 0x1 - strb r0, [r1, 0x2] -_0803E8CE: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end bs2_8016374 - - thumb_func_start sub_803E90C -sub_803E90C: @ 803E90C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r4, =gBankAttacker - ldr r2, =gBankTarget - ldr r1, =gTurnOrder - ldr r0, =gUnknown_02024082 - ldrb r0, [r0] - adds r0, r1 - ldrb r0, [r0] - strb r0, [r2] - strb r0, [r4] - ldr r0, =gUnknown_02022E14 - movs r1, 0 - strh r1, [r0] - ldr r0, =gUnknown_02022E16 - strh r1, [r0] - ldrb r0, [r4] - bl sub_8045868 - ldr r5, =gLastUsedItem - ldr r2, =gBattleBufferB - ldrb r1, [r4] - lsls r1, 9 - adds r0, r2, 0x1 - adds r0, r1, r0 - ldrb r3, [r0] - adds r2, 0x2 - adds r1, r2 - ldrb r0, [r1] - lsls r0, 8 - orrs r3, r0 - strh r3, [r5] - cmp r3, 0xC - bhi _0803E998 - ldr r2, =gBattlescriptCurrInstr - ldr r1, =gUnknown_082DBD08 - ldrh r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - str r0, [r2] - ldr r0, =gFightStateTracker - mov r10, r0 - b _0803EBF6 - .pool -_0803E998: - adds r0, r3, 0 - subs r0, 0x50 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - bhi _0803E9C0 - ldr r0, =gBattlescriptCurrInstr - ldr r1, =gUnknown_082DBD54 - ldr r1, [r1] - str r1, [r0] - ldr r1, =gFightStateTracker - mov r10, r1 - b _0803EBF6 - .pool -_0803E9C0: - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _0803E9E8 - ldr r0, =gBattlescriptCurrInstr - ldr r1, =gUnknown_082DBD3C - ldr r1, [r1] - str r1, [r0] - ldr r2, =gFightStateTracker - mov r10, r2 - b _0803EBF6 - .pool -_0803E9E8: - ldr r3, =gBattleScripting - ldrb r0, [r4] - strb r0, [r3, 0x17] - lsls r0, 24 - lsrs r0, 25 - ldr r2, =gBattleStruct - ldr r1, [r2] - adds r0, r1 - adds r0, 0xC4 - ldrb r0, [r0] - subs r0, 0x1 - mov r8, r4 - ldr r1, =gBattlescriptCurrInstr - mov r9, r1 - ldr r6, =gUnknown_082DBD3C - mov r12, r3 - adds r7, r2, 0 - ldr r2, =gFightStateTracker - mov r10, r2 - cmp r0, 0x4 - bls _0803EA14 - b _0803EBDE -_0803EA14: - lsls r0, 2 - ldr r1, =_0803EA38 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_0803EA38: - .4byte _0803EBDE - .4byte _0803EBDE - .4byte _0803EA4C - .4byte _0803EAE0 - .4byte _0803EBB0 -_0803EA4C: - ldr r5, =gBattleCommunication - movs r0, 0 - strb r0, [r5, 0x5] - ldr r2, =gBankAttacker - ldrb r0, [r2] - lsrs r0, 1 - ldr r1, [r7] - adds r0, r1 - adds r0, 0xC6 - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - mov r8, r2 - cmp r0, 0 - beq _0803EA98 - movs r0, 0x3E - ands r0, r1 - ldr r1, =gBattlescriptCurrInstr - mov r9, r1 - ldr r6, =gUnknown_082DBD3C - ldr r2, =gFightStateTracker - mov r10, r2 - cmp r0, 0 - bne _0803EA7E - b _0803EBDE -_0803EA7E: - movs r0, 0x5 - strb r0, [r5, 0x5] - b _0803EBDE - .pool -_0803EA98: - ldr r0, =gBattlescriptCurrInstr - mov r9, r0 - ldr r6, =gUnknown_082DBD3C - ldr r1, =gFightStateTracker - mov r10, r1 - mov r4, r8 - adds r3, r7, 0 - adds r2, r5, 0 -_0803EAA8: - ldrb r1, [r4] - lsrs r1, 1 - ldr r0, [r3] - adds r1, r0 - adds r1, 0xC6 - ldrb r0, [r1] - lsrs r0, 1 - strb r0, [r1] - ldrb r0, [r2, 0x5] - adds r0, 0x1 - strb r0, [r2, 0x5] - ldrb r0, [r4] - lsrs r0, 1 - ldr r1, [r3] - adds r0, r1 - adds r0, 0xC6 - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0803EAA8 - b _0803EBDE - .pool -_0803EAE0: - ldr r3, =gBattleCommunication - movs r0, 0x4 - strb r0, [r3, 0x5] - ldr r2, =gBankAttacker - ldrb r0, [r2] - lsrs r0, 1 - ldr r1, [r7] - adds r0, r1 - adds r6, r0, 0 - adds r6, 0xC6 - ldrb r1, [r6] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r5, r0, 24 - mov r8, r2 - cmp r5, 0 - beq _0803EB28 - movs r0, 0x5 - strb r0, [r3, 0x5] - ldr r2, =gBattlescriptCurrInstr - mov r9, r2 - ldr r6, =gUnknown_082DBD3C - ldr r0, =gFightStateTracker - mov r10, r0 - b _0803EBDE - .pool -_0803EB28: - ldr r3, =gBattleTextBuff1 - movs r4, 0xFD - strb r4, [r3] - movs r0, 0x5 - strb r0, [r3, 0x1] - movs r2, 0x1 - strb r2, [r3, 0x2] - movs r0, 0xFF - strb r0, [r3, 0x3] - ldr r1, =gBattleTextBuff2 - strb r4, [r1] - strb r5, [r1, 0x1] - movs r0, 0xD2 - strb r0, [r1, 0x2] - strb r5, [r1, 0x3] - subs r0, 0xD3 - strb r0, [r1, 0x4] - ldrb r0, [r6] - ands r2, r0 - ldr r1, =gBattlescriptCurrInstr - mov r9, r1 - ldr r6, =gUnknown_082DBD3C - ldr r0, =gFightStateTracker - mov r10, r0 - cmp r2, 0 - bne _0803EB8C - mov r5, r8 - adds r4, r7, 0 - adds r2, r3, 0 -_0803EB62: - ldrb r1, [r5] - lsrs r1, 1 - ldr r0, [r4] - adds r1, r0 - adds r1, 0xC6 - ldrb r0, [r1] - lsrs r0, 1 - strb r0, [r1] - ldrb r0, [r2, 0x2] - adds r0, 0x1 - strb r0, [r2, 0x2] - ldrb r0, [r5] - lsrs r0, 1 - ldr r1, [r4] - adds r0, r1 - adds r0, 0xC6 - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0803EB62 -_0803EB8C: - ldrb r0, [r3, 0x2] - adds r0, 0xE - movs r1, 0 - mov r2, r12 - strb r0, [r2, 0x10] - strb r1, [r2, 0x11] - b _0803EBDE - .pool -_0803EBB0: - ldr r0, =gBattleTypeFlags - ldr r1, [r0] - movs r0, 0x1 - ands r1, r0 - cmp r1, 0 - beq _0803EBCC - ldr r1, =gBattleCommunication - movs r0, 0x2 - strb r0, [r1, 0x5] - b _0803EBD0 - .pool -_0803EBCC: - ldr r0, =gBattleCommunication - strb r1, [r0, 0x5] -_0803EBD0: - ldr r0, =gBankAttacker - mov r8, r0 - ldr r1, =gBattlescriptCurrInstr - mov r9, r1 - ldr r6, =gUnknown_082DBD3C - ldr r2, =gFightStateTracker - mov r10, r2 -_0803EBDE: - mov r1, r8 - ldrb r0, [r1] - lsrs r0, 1 - ldr r1, [r7] - adds r0, r1 - adds r0, 0xC4 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r6 - ldr r0, [r0] - mov r2, r9 - str r0, [r2] -_0803EBF6: - movs r0, 0xA - mov r1, r10 - strb r0, [r1] - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_803E90C - - thumb_func_start sub_803EC20 -sub_803EC20: @ 803EC20 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 24 - lsrs r5, r0, 24 - movs r7, 0 - ldr r1, =gBattleMons - movs r0, 0x58 - muls r0, r5 - adds r1, r0, r1 - ldrh r0, [r1, 0x2E] - cmp r0, 0xAF - bne _0803EC54 - ldr r1, =gEnigmaBerries - lsls r0, r5, 3 - subs r0, r5 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0, 0x7] - b _0803EC5E - .pool -_0803EC54: - ldrh r0, [r1, 0x2E] - bl ItemId_GetHoldEffect - lsls r0, 24 - lsrs r1, r0, 24 -_0803EC5E: - ldr r0, =gUnknown_0202420F - strb r5, [r0] - cmp r1, 0x25 - bne _0803EC9C - ldr r2, =gLastUsedItem - ldr r1, =gBattleMons - movs r0, 0x58 - muls r0, r5 - adds r0, r1 - ldrh r0, [r0, 0x2E] - strh r0, [r2] - ldr r0, =gProtectStructs - lsls r2, r5, 4 - adds r2, r0 - ldrb r1, [r2, 0x1] - movs r0, 0x19 - negs r0, r0 - ands r0, r1 - movs r1, 0x8 - orrs r0, r1 - strb r0, [r2, 0x1] - b _0803ED70 - .pool -_0803EC9C: - ldr r0, =gBattleMons - mov r10, r0 - movs r2, 0x58 - mov r9, r2 - mov r0, r9 - muls r0, r5 - add r0, r10 - mov r8, r0 - adds r0, 0x20 - ldrb r6, [r0] - cmp r6, 0x32 - bne _0803ED5C - bl InBattlePyramid - lsls r0, 24 - cmp r0, 0 - beq _0803ED38 - ldr r4, =gBattleStruct - ldr r1, [r4] - adds r1, 0x6C - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - bl sub_81A9E28 - lsls r0, 24 - lsrs r1, r0, 24 - mov r2, r8 - ldrh r0, [r2, 0x6] - muls r0, r1 - movs r2, 0x1 - adds r1, r5, 0 - eors r1, r2 - mov r2, r9 - muls r2, r1 - adds r1, r2, 0 - add r1, r10 - ldrh r1, [r1, 0x6] - bl __divsi3 - ldr r1, [r4] - adds r1, 0x6C - ldrb r2, [r1] - lsls r1, r2, 4 - subs r1, r2 - lsls r1, 1 - adds r0, r1 - lsls r0, 24 - lsrs r4, r0, 24 - bl Random - movs r1, 0xFF - ands r1, r0 - cmp r4, r1 - bhi _0803ED0C - b _0803EE12 -_0803ED0C: - ldr r0, =gLastUsedAbility - strb r6, [r0] - ldr r0, =gProtectStructs - lsls r2, r5, 4 - adds r2, r0 - ldrb r1, [r2, 0x1] - movs r0, 0x19 - negs r0, r0 - ands r0, r1 - movs r1, 0x10 - orrs r0, r1 - strb r0, [r2, 0x1] - b _0803ED70 - .pool -_0803ED38: - ldr r0, =gLastUsedAbility - strb r6, [r0] - ldr r0, =gProtectStructs - lsls r2, r5, 4 - adds r2, r0 - ldrb r1, [r2, 0x1] - movs r0, 0x19 - negs r0, r0 - ands r0, r1 - movs r1, 0x10 - orrs r0, r1 - strb r0, [r2, 0x1] - b _0803ED70 - .pool -_0803ED5C: - ldr r1, =gBattleTypeFlags - ldr r2, [r1] - ldr r0, =0x043f0100 - ands r0, r2 - cmp r0, 0 - beq _0803ED80 - movs r0, 0x8 - ands r2, r0 - cmp r2, 0 - beq _0803ED80 -_0803ED70: - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - b _0803EE12 - .pool -_0803ED80: - ldr r0, [r1] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - bne _0803EE06 - bl InBattlePyramid - lsls r0, 24 - cmp r0, 0 - beq _0803EDBC - bl sub_81A9E28 - lsls r0, 24 - lsrs r1, r0, 24 - ldr r4, =gBattleMons - movs r3, 0x58 - adds r0, r5, 0 - muls r0, r3 - adds r0, r4 - ldrh r0, [r0, 0x6] - muls r0, r1 - movs r2, 0x1 - adds r1, r5, 0 - eors r1, r2 - muls r1, r3 - adds r1, r4 - b _0803EDDA - .pool -_0803EDBC: - ldr r3, =gBattleMons - movs r2, 0x58 - adds r0, r5, 0 - muls r0, r2 - adds r4, r0, r3 - movs r1, 0x1 - adds r0, r5, 0 - eors r0, r1 - muls r0, r2 - adds r1, r0, r3 - ldrh r0, [r4, 0x6] - ldrh r2, [r1, 0x6] - cmp r0, r2 - bcs _0803EE00 - lsls r0, 7 -_0803EDDA: - ldrh r1, [r1, 0x6] - bl __divsi3 - ldr r1, =gBattleStruct - ldr r1, [r1] - adds r1, 0x6C - ldrb r2, [r1] - lsls r1, r2, 4 - subs r1, r2 - lsls r1, 1 - adds r0, r1 - lsls r0, 24 - lsrs r4, r0, 24 - bl Random - movs r1, 0xFF - ands r1, r0 - cmp r4, r1 - bls _0803EE06 -_0803EE00: - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 -_0803EE06: - ldr r0, =gBattleStruct - ldr r1, [r0] - adds r1, 0x6C - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_0803EE12: - cmp r7, 0 - beq _0803EE24 - ldr r1, =gUnknown_02024082 - ldr r0, =gNoOfAllBanks - ldrb r0, [r0] - strb r0, [r1] - ldr r1, =gBattleOutcome - movs r0, 0x4 - strb r0, [r1] -_0803EE24: - adds r0, r7, 0 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .pool - thumb_func_end sub_803EC20 - - thumb_func_start sub_803EE48 -sub_803EE48: @ 803EE48 - push {r4-r6,lr} - ldr r4, =gBankAttacker - ldr r1, =gTurnOrder - ldr r5, =gUnknown_02024082 - ldrb r0, [r5] - adds r0, r1 - ldrb r0, [r0] - strb r0, [r4] - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - ldr r1, =0x02000002 - ands r0, r1 - cmp r0, 0 - beq _0803EF0C - ldr r0, =gNoOfAllBanks - ldrb r1, [r0] - strb r1, [r5] - ldr r2, =gActiveBank - movs r0, 0 - strb r0, [r2] - lsls r1, 24 - cmp r1, 0 - beq _0803EEE0 - adds r4, r2, 0 - ldr r6, =gUnknown_0202421C - ldr r5, =gBattleOutcome -_0803EE7C: - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _0803EEBC - ldrb r0, [r4] - adds r0, r6 - ldrb r0, [r0] - cmp r0, 0x3 - bne _0803EECE - ldrb r0, [r5] - movs r1, 0x2 - b _0803EECA - .pool -_0803EEBC: - ldrb r0, [r4] - adds r0, r6 - ldrb r0, [r0] - cmp r0, 0x3 - bne _0803EECE - ldrb r0, [r5] - movs r1, 0x1 -_0803EECA: - orrs r0, r1 - strb r0, [r5] -_0803EECE: - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - ldr r1, =gNoOfAllBanks - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r1] - cmp r0, r1 - bcc _0803EE7C -_0803EEE0: - ldr r2, =gBattleOutcome - ldrb r0, [r2] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2] - ldr r0, =gSaveBlock2Ptr - ldr r1, [r0] - ldr r0, =0x00000ca9 - adds r1, r0 - ldrb r0, [r1] - movs r2, 0x8 - orrs r0, r2 - b _0803EF96 - .pool -_0803EF0C: - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _0803EF4C - ldrb r0, [r4] - bl sub_803EC20 - lsls r0, 24 - cmp r0, 0 - bne _0803EF98 - ldrb r0, [r4] - bl sub_8045868 - ldr r1, =gBattleCommunication - movs r0, 0x3 - strb r0, [r1, 0x5] - ldr r1, =gBattlescriptCurrInstr - ldr r0, =gUnknown_082DAB02 - str r0, [r1] - ldr r1, =gFightStateTracker - movs r0, 0xA - b _0803EF96 - .pool -_0803EF4C: - ldr r1, =gBattleMons - ldrb r2, [r4] - movs r0, 0x58 - muls r0, r2 - adds r1, 0x50 - adds r0, r1 - ldr r0, [r0] - ldr r1, =0x0400e000 - ands r0, r1 - cmp r0, 0 - beq _0803EF8C - ldr r1, =gBattleCommunication - movs r0, 0x4 - strb r0, [r1, 0x5] - ldr r1, =gBattlescriptCurrInstr - ldr r0, =gUnknown_082DAB02 - str r0, [r1] - ldr r1, =gFightStateTracker - movs r0, 0xA - b _0803EF96 - .pool -_0803EF8C: - ldr r0, =gNoOfAllBanks - ldrb r0, [r0] - strb r0, [r5] - ldr r1, =gBattleOutcome - movs r0, 0x6 -_0803EF96: - strb r0, [r1] -_0803EF98: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_803EE48 - - thumb_func_start sub_803EFA8 -sub_803EFA8: @ 803EFA8 - ldr r2, =gBankAttacker - ldr r1, =gTurnOrder - ldr r0, =gUnknown_02024082 - ldrb r0, [r0] - adds r0, r1 - ldrb r0, [r0] - strb r0, [r2] - ldr r0, =gUnknown_02022E14 - movs r1, 0 - strh r1, [r0] - ldr r0, =gUnknown_02022E16 - strh r1, [r0] - ldr r1, =gBattlescriptCurrInstr - ldr r0, =gUnknown_082DBD58 - ldr r0, [r0] - str r0, [r1] - ldr r1, =gFightStateTracker - movs r0, 0xA - strb r0, [r1] - bx lr - .pool - thumb_func_end sub_803EFA8 - - thumb_func_start bs5_8016AC0 -bs5_8016AC0: @ 803EFF0 - ldr r2, =gBankAttacker - ldr r1, =gTurnOrder - ldr r0, =gUnknown_02024082 - ldrb r0, [r0] - adds r0, r1 - ldrb r0, [r0] - strb r0, [r2] - ldr r0, =gUnknown_02022E14 - movs r1, 0 - strh r1, [r0] - ldr r0, =gUnknown_02022E16 - strh r1, [r0] - ldr r1, =gNumSafariBalls - ldrb r0, [r1] - subs r0, 0x1 - strb r0, [r1] - ldr r1, =gLastUsedItem - movs r0, 0x5 - strh r0, [r1] - ldr r1, =gBattlescriptCurrInstr - ldr r0, =gUnknown_082DBD08 - ldr r0, [r0, 0x14] - str r0, [r1] - ldr r1, =gFightStateTracker - movs r0, 0xA - strb r0, [r1] - bx lr - .pool - thumb_func_end bs5_8016AC0 - - thumb_func_start sub_803F050 -sub_803F050: @ 803F050 - push {r4-r6,lr} - ldr r3, =gBankAttacker - ldr r1, =gTurnOrder - ldr r0, =gUnknown_02024082 - ldrb r0, [r0] - adds r0, r1 - ldrb r0, [r0] - strb r0, [r3] - ldr r0, =gUnknown_02022E14 - movs r1, 0 - strh r1, [r0] - ldr r0, =gUnknown_02022E16 - strh r1, [r0] - ldr r6, =gBattleCommunication - ldr r2, =gBattleBufferB - ldrb r0, [r3] - lsls r0, 9 - adds r1, r2, 0x1 - adds r0, r1 - ldrb r0, [r0] - subs r0, 0x1 - strb r0, [r6, 0x5] - ldr r1, =gLastUsedItem - ldrb r0, [r3] - lsls r0, 9 - adds r2, 0x2 - adds r0, r2 - ldrb r0, [r0] - strh r0, [r1] - ldr r1, =gBattleResults - ldrb r0, [r1, 0x1F] - cmp r0, 0xFE - bhi _0803F096 - adds r0, 0x1 - strb r0, [r1, 0x1F] -_0803F096: - ldr r2, =gBattleStruct - ldr r0, [r2] - adds r1, r0, 0 - adds r1, 0x7A - ldrb r0, [r1] - cmp r0, 0x2 - bhi _0803F0A8 - adds r0, 0x1 - strb r0, [r1] -_0803F0A8: - ldr r0, [r2] - adds r3, r0, 0 - adds r3, 0x7B - ldrb r5, [r3] - adds r4, r5, 0 - cmp r4, 0x1 - bls _0803F100 - ldr r2, =gUnknown_0831BCE0 - adds r0, 0x7A - ldrb r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - ldrb r6, [r6, 0x5] - adds r0, r6 - adds r0, r2 - ldrb r0, [r0] - cmp r4, r0 - bcs _0803F0FC - movs r0, 0x1 - b _0803F0FE - .pool -_0803F0FC: - subs r0, r5, r0 -_0803F0FE: - strb r0, [r3] -_0803F100: - ldr r1, =gBattlescriptCurrInstr - ldr r0, =gUnknown_082DBD58 - ldr r0, [r0, 0x8] - str r0, [r1] - ldr r1, =gFightStateTracker - movs r0, 0xA - strb r0, [r1] - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_803F050 - - thumb_func_start sub_803F120 -sub_803F120: @ 803F120 - push {r4,lr} - ldr r2, =gBankAttacker - ldr r1, =gTurnOrder - ldr r0, =gUnknown_02024082 - ldrb r0, [r0] - adds r0, r1 - ldrb r0, [r0] - strb r0, [r2] - ldr r0, =gUnknown_02022E14 - movs r4, 0 - strh r4, [r0] - ldr r0, =gUnknown_02022E16 - strh r4, [r0] - ldr r3, =gBattleStruct - ldr r0, [r3] - adds r2, r0, 0 - adds r2, 0x7C - ldr r1, =gUnknown_0831BCEF - adds r0, 0x79 - ldrb r0, [r0] - adds r0, r1 - ldrb r0, [r0] - ldrb r1, [r2] - adds r0, r1 - strb r0, [r2] - ldr r0, [r3] - adds r1, r0, 0 - adds r1, 0x7C - ldrb r0, [r1] - cmp r0, 0x14 - bls _0803F162 - movs r0, 0x14 - strb r0, [r1] -_0803F162: - ldr r0, [r3] - adds r2, r0, 0 - adds r2, 0x7B - ldr r1, =gUnknown_0831BCF3 - adds r0, 0x79 - ldrb r0, [r0] - adds r0, r1 - ldrb r0, [r0] - ldrb r1, [r2] - adds r0, r1 - strb r0, [r2] - ldr r0, [r3] - adds r1, r0, 0 - adds r1, 0x7B - ldrb r0, [r1] - cmp r0, 0x14 - bls _0803F188 - movs r0, 0x14 - strb r0, [r1] -_0803F188: - ldr r0, [r3] - adds r1, r0, 0 - adds r1, 0x79 - ldrb r0, [r1] - cmp r0, 0x2 - bhi _0803F1C4 - adds r0, 0x1 - strb r0, [r1] - ldr r0, =gBattleCommunication - strb r4, [r0, 0x5] - b _0803F1CA - .pool -_0803F1C4: - ldr r1, =gBattleCommunication - movs r0, 0x1 - strb r0, [r1, 0x5] -_0803F1CA: - ldr r1, =gBattlescriptCurrInstr - ldr r0, =gUnknown_082DBD58 - ldr r0, [r0, 0x4] - str r0, [r1] - ldr r1, =gFightStateTracker - movs r0, 0xA - strb r0, [r1] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_803F120 - - thumb_func_start bs8_exit_by_flight -bs8_exit_by_flight: @ 803F1F0 - push {r4,lr} - ldr r2, =gBankAttacker - ldr r1, =gTurnOrder - ldr r4, =gUnknown_02024082 - ldrb r0, [r4] - adds r0, r1 - ldrb r0, [r0] - strb r0, [r2] - movs r0, 0x11 - bl PlaySE - ldr r0, =gNoOfAllBanks - ldrb r0, [r0] - strb r0, [r4] - ldr r1, =gBattleOutcome - movs r0, 0x4 - strb r0, [r1] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end bs8_exit_by_flight - - thumb_func_start bs9_8016C9C -bs9_8016C9C: @ 803F22C - ldr r3, =gBankAttacker - ldr r1, =gTurnOrder - ldr r0, =gUnknown_02024082 - ldrb r0, [r0] - adds r0, r1 - ldrb r2, [r0] - strb r2, [r3] - ldr r0, =gUnknown_02022E14 - movs r1, 0 - strh r1, [r0] - ldr r0, =gUnknown_02022E16 - strh r1, [r0] - ldr r1, =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x7 - strb r0, [r1, 0x1] - strb r2, [r1, 0x2] - ldr r2, =gBattlePartyID - ldrb r0, [r3] - lsls r0, 1 - adds r0, r2 - ldrh r0, [r0] - strb r0, [r1, 0x3] - movs r0, 0xFF - strb r0, [r1, 0x4] - ldr r1, =gBattlescriptCurrInstr - ldr r0, =gUnknown_082DBD58 - ldr r0, [r0, 0xC] - str r0, [r1] - ldr r1, =gFightStateTracker - movs r0, 0xA - strb r0, [r1] - ldr r1, =gUnknown_0202407A - movs r0, 0xC - strb r0, [r1, 0x1] - bx lr - .pool - thumb_func_end bs9_8016C9C - - thumb_func_start bsB_exit_by_move -bsB_exit_by_move: @ 803F2A4 - push {lr} - bl sub_8041728 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _0803F2C0 - ldr r0, =gBattleStruct - ldr r0, [r0] - adds r0, 0x4D - strb r1, [r0] - ldr r1, =gFightStateTracker - movs r0, 0xC - strb r0, [r1] -_0803F2C0: - pop {r0} - bx r0 - .pool - thumb_func_end bsB_exit_by_move - - thumb_func_start bsD_proceed -bsD_proceed: @ 803F2CC - ldr r1, =gUnknown_02024082 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r3, =gFightStateTracker - ldr r2, =gUnknown_0202407A - ldrb r0, [r1] - adds r0, r2 - ldrb r0, [r0] - strb r0, [r3] - ldr r2, =gHitMarker - ldr r0, [r2] - ldr r1, =0xf1e892af - ands r0, r1 - str r0, [r2] - bx lr - .pool - thumb_func_end bsD_proceed - - thumb_func_start bsC_8016D70 -bsC_8016D70: @ 803F300 - push {r4-r6,lr} - ldr r1, =gTurnOrder - ldr r2, =gUnknown_02024082 - ldrb r0, [r2] - adds r0, r1 - ldrb r0, [r0] - ldr r6, =gBattleStruct - ldr r1, [r6] - adds r0, r1 - adds r0, 0x5C - movs r1, 0x6 - strb r1, [r0] - ldrb r0, [r2] - adds r0, 0x1 - strb r0, [r2] - ldr r3, =gFightStateTracker - ldr r1, =gUnknown_0202407A - ldrb r0, [r2] - adds r0, r1 - ldrb r0, [r0] - strb r0, [r3] - bl sub_803D6A0 - ldr r2, =gHitMarker - ldr r0, [r2] - ldr r1, =0xf1e892af - ands r0, r1 - str r0, [r2] - ldr r0, =gCurrentMove - movs r1, 0 - strh r1, [r0] - ldr r0, =gBattleMoveDamage - movs r4, 0 - str r4, [r0] - ldr r0, =gBattleMoveFlags - strb r1, [r0] - ldr r5, =gBattleScripting - strb r1, [r5, 0x18] - strb r1, [r5, 0x19] - ldr r2, =gUnknown_02024250 - ldr r3, =gBankAttacker - ldrb r0, [r3] - lsls r0, 1 - adds r0, r2 - strh r4, [r0] - ldr r2, =gUnknown_02024258 - ldrb r0, [r3] - lsls r0, 1 - adds r0, r2 - strh r4, [r0] - ldr r0, [r6] - strb r1, [r0, 0x13] - ldr r0, =gDynamicBasePower - strh r4, [r0] - strb r1, [r5, 0x14] - ldr r0, =gBattleCommunication - strb r1, [r0, 0x3] - strb r1, [r0, 0x4] - strb r1, [r5, 0x16] - ldr r0, =gBattleResources - ldr r0, [r0] - ldr r0, [r0, 0x8] - adds r0, 0x20 - strb r1, [r0] - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end bsC_8016D70 - - thumb_func_start get_battle_side_of_something -get_battle_side_of_something: @ 803F3CC - push {lr} - lsls r0, 24 - lsrs r1, r0, 24 - movs r0, 0 - cmp r1, 0xE - bhi _0803F47A - lsls r0, r1, 2 - ldr r1, =_0803F3E8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_0803F3E8: - .4byte _0803F424 - .4byte _0803F430 - .4byte _0803F43C - .4byte _0803F458 - .4byte _0803F464 - .4byte _0803F458 - .4byte _0803F464 - .4byte _0803F448 - .4byte _0803F464 - .4byte _0803F464 - .4byte _0803F44C - .4byte _0803F464 - .4byte _0803F468 - .4byte _0803F46C - .4byte _0803F470 -_0803F424: - ldr r0, =gBankTarget - ldrb r0, [r0] - b _0803F47A - .pool -_0803F430: - ldr r0, =gBankAttacker - ldrb r0, [r0] - b _0803F47A - .pool -_0803F43C: - ldr r0, =gUnknown_0202420E - ldrb r0, [r0] - b _0803F47A - .pool -_0803F448: - movs r0, 0 - b _0803F47A -_0803F44C: - ldr r0, =gBattleScripting - ldrb r0, [r0, 0x17] - b _0803F47A - .pool -_0803F458: - ldr r0, =gUnknown_0202420D - ldrb r0, [r0] - b _0803F47A - .pool -_0803F464: - movs r0, 0 - b _0803F472 -_0803F468: - movs r0, 0x1 - b _0803F472 -_0803F46C: - movs r0, 0x2 - b _0803F472 -_0803F470: - movs r0, 0x3 -_0803F472: - bl GetBankByPlayerAI - lsls r0, 24 - lsrs r0, 24 -_0803F47A: - pop {r1} - bx r1 - thumb_func_end get_battle_side_of_something - - thumb_func_start sub_803F480 -sub_803F480: @ 803F480 - push {r4-r7,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r5, r1, 24 - lsls r2, 16 - lsrs r2, 16 - ldr r1, =gBattleMons - movs r4, 0x58 - muls r0, r4 - adds r0, r1 - adds r0, 0x20 - ldrb r0, [r0] - mov r12, r1 - cmp r0, 0x2E - bne _0803F532 - movs r3, 0 - adds r0, r5, 0 - muls r0, r4 - adds r1, 0xC - adds r1, r0, r1 - b _0803F4BC - .pool -_0803F4B4: - adds r1, 0x2 - adds r3, 0x1 - cmp r3, 0x3 - bgt _0803F4C2 -_0803F4BC: - ldrh r0, [r1] - cmp r0, r2 - bne _0803F4B4 -_0803F4C2: - cmp r3, 0x4 - beq _0803F532 - movs r7, 0x58 - adds r2, r5, 0 - muls r2, r7 - adds r0, r3, r2 - mov r6, r12 - adds r6, 0x24 - adds r1, r0, r6 - ldrb r0, [r1] - cmp r0, 0 - beq _0803F4DE - subs r0, 0x1 - strb r0, [r1] -_0803F4DE: - mov r0, r12 - adds r0, 0x50 - adds r0, r2, r0 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 14 - ands r0, r1 - cmp r0, 0 - bne _0803F532 - ldr r1, =gDisableStructs - lsls r0, r5, 3 - subs r0, r5 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0, 0x18] - lsrs r1, 4 - ldr r2, =gBitTable - lsls r0, r3, 2 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - bne _0803F532 - ldr r4, =gActiveBank - strb r5, [r4] - adds r1, r3, 0 - adds r1, 0x9 - lsls r1, 24 - lsrs r1, 24 - ldrb r0, [r4] - muls r0, r7 - adds r0, r6 - adds r0, r3 - str r0, [sp] - movs r0, 0 - movs r2, 0 - movs r3, 0x1 - bl dp01_build_cmdbuf_x02_a_b_varargs - ldrb r0, [r4] - bl dp01_battle_side_mark_buffer_for_execution -_0803F532: - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_803F480 - - thumb_func_start sub_803F548 -sub_803F548: @ 803F548 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - lsls r0, 24 - lsrs r5, r0, 24 - movs r0, 0x4 - mov r8, r0 - adds r0, r5, 0 - bl GetBankSide - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - movs r4, 0 - ldr r0, =gNoOfAllBanks - ldrb r0, [r0] - cmp r4, r0 - bge _0803F5F0 - ldr r1, =gBattleMons - movs r0, 0x58 - adds r7, r5, 0 - muls r7, r0 - adds r1, 0xC - mov r10, r1 -_0803F57E: - lsls r0, r4, 24 - lsrs r0, 24 - bl GetBankSide - lsls r0, 24 - lsrs r0, 24 - adds r6, r4, 0x1 - cmp r9, r0 - beq _0803F5E6 - ldr r0, =gBattleMons - movs r3, 0x58 - adds r1, r4, 0 - muls r1, r3 - adds r1, r0 - adds r1, 0x20 - ldrb r1, [r1] - adds r4, r0, 0 - cmp r1, 0x2E - bne _0803F5E6 - movs r2, 0 - adds r0, r5, 0 - muls r0, r3 - adds r1, r4, 0 - adds r1, 0xC - adds r0, r1 - ldrh r0, [r0] - movs r1, 0x8F - lsls r1, 1 - cmp r0, r1 - beq _0803F5CE - adds r3, r1, 0 - mov r0, r10 - adds r1, r7, r0 -_0803F5C0: - adds r1, 0x2 - adds r2, 0x1 - cmp r2, 0x3 - bgt _0803F5CE - ldrh r0, [r1] - cmp r0, r3 - bne _0803F5C0 -_0803F5CE: - cmp r2, 0x4 - beq _0803F5E6 - mov r8, r2 - adds r1, r2, r7 - adds r0, r4, 0 - adds r0, 0x24 - adds r1, r0 - ldrb r0, [r1] - cmp r0, 0 - beq _0803F5E6 - subs r0, 0x1 - strb r0, [r1] -_0803F5E6: - adds r4, r6, 0 - ldr r0, =gNoOfAllBanks - ldrb r0, [r0] - cmp r4, r0 - blt _0803F57E -_0803F5F0: - mov r1, r8 - cmp r1, 0x4 - beq _0803F658 - ldr r6, =gBattleMons - movs r3, 0x58 - adds r0, r5, 0 - muls r0, r3 - adds r1, r6, 0 - adds r1, 0x50 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 14 - ands r0, r1 - cmp r0, 0 - bne _0803F658 - ldr r1, =gDisableStructs - lsls r0, r5, 3 - subs r0, r5 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0, 0x18] - lsrs r1, 4 - ldr r2, =gBitTable - mov r4, r8 - lsls r0, r4, 2 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - bne _0803F658 - ldr r4, =gActiveBank - strb r5, [r4] - mov r1, r8 - adds r1, 0x9 - lsls r1, 24 - lsrs r1, 24 - ldrb r0, [r4] - muls r0, r3 - adds r2, r6, 0 - adds r2, 0x24 - adds r0, r2 - add r0, r8 - str r0, [sp] - movs r0, 0 - movs r2, 0 - movs r3, 0x1 - bl dp01_build_cmdbuf_x02_a_b_varargs - ldrb r0, [r4] - bl dp01_battle_side_mark_buffer_for_execution -_0803F658: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_803F548 - - thumb_func_start sub_803F67C -sub_803F67C: @ 803F67C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - lsls r0, 24 - lsrs r3, r0, 24 - movs r6, 0x4 - movs r1, 0 - ldr r0, =gNoOfAllBanks - mov r8, r0 - ldrb r0, [r0] - cmp r1, r0 - bge _0803F6FE - ldr r7, =gBattleMons - movs r2, 0x58 - mov r12, r2 - mov r5, r12 - muls r5, r3 - adds r0, r7, 0 - adds r0, 0xC - adds r2, r5, r0 - mov r10, r2 - mov r9, r5 -_0803F6AE: - mov r0, r12 - muls r0, r1 - adds r0, r7 - adds r0, 0x20 - ldrb r0, [r0] - adds r4, r1, 0x1 - cmp r0, 0x2E - bne _0803F6F4 - cmp r1, r3 - beq _0803F6F4 - movs r2, 0 - mov r1, r10 - ldrh r0, [r1] - cmp r0, 0xC3 - beq _0803F6DE - ldr r1, =gBattleMons + 0xC - add r1, r9 -_0803F6D0: - adds r1, 0x2 - adds r2, 0x1 - cmp r2, 0x3 - bgt _0803F6DE - ldrh r0, [r1] - cmp r0, 0xC3 - bne _0803F6D0 -_0803F6DE: - cmp r2, 0x4 - beq _0803F6F4 - adds r6, r2, 0 - adds r0, r6, r5 - ldr r2, =gBattleMons + 0x24 - adds r1, r0, r2 - ldrb r0, [r1] - cmp r0, 0 - beq _0803F6F4 - subs r0, 0x1 - strb r0, [r1] -_0803F6F4: - adds r1, r4, 0 - mov r0, r8 - ldrb r0, [r0] - cmp r1, r0 - blt _0803F6AE -_0803F6FE: - cmp r6, 0x4 - beq _0803F762 - ldr r7, =gBattleMons - movs r5, 0x58 - adds r0, r3, 0 - muls r0, r5 - adds r1, r7, 0 - adds r1, 0x50 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 14 - ands r0, r1 - cmp r0, 0 - bne _0803F762 - ldr r1, =gDisableStructs - lsls r0, r3, 3 - subs r0, r3 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0, 0x18] - lsrs r1, 4 - ldr r2, =gBitTable - lsls r0, r6, 2 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - bne _0803F762 - ldr r4, =gActiveBank - strb r3, [r4] - adds r1, r6, 0 - adds r1, 0x9 - lsls r1, 24 - lsrs r1, 24 - ldrb r0, [r4] - muls r0, r5 - adds r2, r7, 0 - adds r2, 0x24 - adds r0, r2 - adds r0, r6 - str r0, [sp] - movs r0, 0 - movs r2, 0 - movs r3, 0x1 - bl dp01_build_cmdbuf_x02_a_b_varargs - ldrb r0, [r4] - bl dp01_battle_side_mark_buffer_for_execution -_0803F762: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_803F67C - - thumb_func_start sub_803F790 -sub_803F790: @ 803F790 - push {r4,r5,lr} - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0803F7D0 - movs r2, 0 - ldr r4, =gNoOfAllBanks - ldrb r0, [r4] - cmp r2, r0 - bge _0803F7EE - ldr r3, =gBattleExecBuffer - ldr r5, =gBitTable -_0803F7AC: - ldm r5!, {r1} - lsls r1, 28 - ldr r0, [r3] - orrs r0, r1 - str r0, [r3] - adds r2, 0x1 - ldrb r0, [r4] - cmp r2, r0 - blt _0803F7AC - b _0803F7EE - .pool -_0803F7D0: - movs r2, 0 - ldr r4, =gNoOfAllBanks - ldrb r0, [r4] - cmp r2, r0 - bge _0803F7EE - ldr r3, =gBattleExecBuffer - ldr r5, =gBitTable -_0803F7DE: - ldr r0, [r3] - ldm r5!, {r1} - orrs r0, r1 - str r0, [r3] - adds r2, 0x1 - ldrb r0, [r4] - cmp r2, r0 - blt _0803F7DE -_0803F7EE: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_803F790 - - thumb_func_start dp01_battle_side_mark_buffer_for_execution -dp01_battle_side_mark_buffer_for_execution: @ 803F800 - push {lr} - lsls r0, 24 - lsrs r3, r0, 24 - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0803F834 - ldr r2, =gBattleExecBuffer - ldr r1, =gBitTable - lsls r0, r3, 2 - adds r0, r1 - ldr r1, [r0] - lsls r1, 28 - ldr r0, [r2] - orrs r0, r1 - str r0, [r2] - b _0803F844 - .pool -_0803F834: - ldr r2, =gBattleExecBuffer - ldr r1, =gBitTable - lsls r0, r3, 2 - adds r0, r1 - ldr r1, [r2] - ldr r0, [r0] - orrs r1, r0 - str r1, [r2] -_0803F844: - pop {r0} - bx r0 - .pool - thumb_func_end dp01_battle_side_mark_buffer_for_execution - - thumb_func_start sub_803F850 -sub_803F850: @ 803F850 - push {r4-r7,lr} - lsls r0, 24 - lsrs r7, r0, 24 - movs r4, 0 - ldr r5, =gBattleExecBuffer - ldr r1, =gBitTable - lsls r0, r7, 2 - adds r6, r0, r1 - b _0803F87A - .pool -_0803F86C: - lsls r0, r4, 2 - ldr r1, [r6] - lsls r1, r0 - ldr r0, [r5] - orrs r0, r1 - str r0, [r5] - adds r4, 0x1 -_0803F87A: - bl sub_8009FCC - lsls r0, 24 - lsrs r0, 24 - cmp r4, r0 - blt _0803F86C - ldr r2, =gBattleExecBuffer - movs r1, 0x80 - lsls r1, 21 - lsls r1, r7 - ldr r0, [r2] - bics r0, r1 - str r0, [r2] - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_803F850 - - thumb_func_start CancelMultiTurnMoves -CancelMultiTurnMoves: @ 803F8A0 - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gBattleMons - movs r2, 0x58 - adds r3, r0, 0 - muls r3, r2 - adds r1, 0x50 - adds r3, r1 - ldr r1, [r3] - ldr r2, =0xffffefff - ands r1, r2 - ldr r2, =0xfffff3ff - ands r1, r2 - movs r2, 0x71 - negs r2, r2 - ands r1, r2 - ldr r2, =0xfffffcff - ands r1, r2 - str r1, [r3] - ldr r1, =gStatuses3 - lsls r2, r0, 2 - adds r2, r1 - ldr r1, [r2] - ldr r3, =0xfffbff3f - ands r1, r3 - str r1, [r2] - ldr r2, =gDisableStructs - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r1, r2 - ldrb r2, [r1, 0x11] - movs r0, 0x10 - negs r0, r0 - ands r0, r2 - strb r0, [r1, 0x11] - movs r0, 0 - strb r0, [r1, 0x10] - bx lr - .pool - thumb_func_end CancelMultiTurnMoves - - thumb_func_start sub_803F90C -sub_803F90C: @ 803F90C - push {lr} - lsls r0, 24 - ldr r1, =gProtectStructs - lsrs r0, 20 - adds r1, r0, r1 - ldrb r0, [r1] - lsrs r0, 7 - cmp r0, 0 - bne _0803F952 - ldrb r2, [r1, 0x1] - lsls r0, r2, 30 - cmp r0, 0 - blt _0803F952 - lsls r0, r2, 26 - cmp r0, 0 - blt _0803F952 - lsls r0, r2, 25 - cmp r0, 0 - blt _0803F952 - lsrs r0, r2, 7 - cmp r0, 0 - bne _0803F952 - ldrb r1, [r1, 0x2] - lsls r0, r1, 31 - cmp r0, 0 - bne _0803F952 - lsls r0, r1, 30 - cmp r0, 0 - blt _0803F952 - lsls r0, r1, 29 - cmp r0, 0 - blt _0803F952 - lsls r0, r2, 31 - cmp r0, 0 - beq _0803F95C -_0803F952: - movs r0, 0x1 - b _0803F95E - .pool -_0803F95C: - movs r0, 0 -_0803F95E: - pop {r1} - bx r1 - thumb_func_end sub_803F90C - - thumb_func_start b_std_message -b_std_message: @ 803F964 - push {r4,lr} - adds r2, r0, 0 - lsls r2, 16 - lsrs r2, 16 - ldr r4, =gActiveBank - strb r1, [r4] - movs r0, 0 - adds r1, r2, 0 - bl dp01_build_cmdbuf_x10_TODO - ldrb r0, [r4] - bl dp01_battle_side_mark_buffer_for_execution - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end b_std_message - - thumb_func_start sub_803F988 -sub_803F988: @ 803F988 - push {r4-r6,lr} - movs r3, 0 - ldr r0, =gUnknown_020243FE - strb r3, [r0] - strb r3, [r0, 0x1] - movs r1, 0 - ldr r0, =gNoOfAllBanks - ldrb r2, [r0] - adds r6, r0, 0 - cmp r1, r2 - bge _0803F9B6 - ldr r5, =gBitTable - adds r4, r2, 0 - ldr r2, =gBattlePartyID -_0803F9A4: - ldrh r0, [r2] - lsls r0, 2 - adds r0, r5 - ldr r0, [r0] - orrs r3, r0 - adds r2, 0x4 - adds r1, 0x2 - cmp r1, r4 - blt _0803F9A4 -_0803F9B6: - movs r1, 0x1 - adds r2, r6, 0 - ldrb r0, [r2] - cmp r1, r0 - bge _0803F9D6 - ldr r5, =gUnknown_020243FE - movs r4, 0x2 -_0803F9C4: - adds r0, r1, 0 - ands r0, r4 - asrs r0, 1 - adds r0, r5 - strb r3, [r0] - adds r1, 0x2 - ldrb r0, [r2] - cmp r1, r0 - blt _0803F9C4 -_0803F9D6: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_803F988 - - thumb_func_start sub_803F9EC -sub_803F9EC: @ 803F9EC - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r5, r0, 24 - movs r4, 0 - adds r0, r5, 0 - bl GetBankSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0803FA50 - movs r0, 0x2 - ands r0, r5 - lsls r0, 24 - lsrs r0, 25 - mov r12, r0 - ldr r1, =gUnknown_020243FE - adds r0, r1 - strb r4, [r0] - adds r5, r4, 0 - ldr r0, =gNoOfAllBanks - ldrb r2, [r0] - mov r8, r1 - cmp r4, r2 - bge _0803FA4A - ldr r0, =gAbsentBankFlags - ldrb r7, [r0] - ldr r1, =gBitTable - adds r6, r2, 0 - ldr r3, =gBattlePartyID - adds r2, r1, 0 -_0803FA2E: - ldr r0, [r2] - ands r0, r7 - cmp r0, 0 - bne _0803FA40 - ldrh r0, [r3] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - orrs r4, r0 -_0803FA40: - adds r3, 0x4 - adds r2, 0x8 - adds r5, 0x2 - cmp r5, r6 - blt _0803FA2E -_0803FA4A: - mov r0, r12 - add r0, r8 - strb r4, [r0] -_0803FA50: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_803F9EC - - thumb_func_start sub_803FA70 -sub_803FA70: @ 803FA70 - push {r4-r7,lr} - lsls r0, 24 - lsrs r4, r0, 24 - adds r0, r4, 0 - bl GetBankSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0803FA8C - adds r0, r4, 0 - bl sub_803F9EC - b _0803FAC2 -_0803FA8C: - movs r3, 0x1 - ldr r5, =gNoOfAllBanks - ldrb r0, [r5] - cmp r3, r0 - bge _0803FAC2 - ldr r0, =gUnknown_020243FE - mov r12, r0 - movs r7, 0x2 - ldr r6, =gBitTable - ldr r1, =gBattlePartyID - lsls r0, r4, 1 - adds r4, r0, r1 -_0803FAA4: - adds r2, r3, 0 - ands r2, r7 - asrs r2, 1 - add r2, r12 - ldrh r0, [r4] - lsls r0, 2 - adds r0, r6 - ldr r0, [r0] - ldrb r1, [r2] - orrs r0, r1 - strb r0, [r2] - adds r3, 0x1 - ldrb r0, [r5] - cmp r3, r0 - blt _0803FAA4 -_0803FAC2: - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_803FA70 - .align 2, 0 @ Don't pad with nop. diff --git a/asm/rom_8072304.s b/asm/rom_8072304.s index 39a6cbade..0c0ddc102 100644 --- a/asm/rom_8072304.s +++ b/asm/rom_8072304.s @@ -3759,7 +3759,7 @@ sub_80741E8: @ 80741E8 adds r4, r1, 0 lsls r0, 24 lsrs r7, r0, 24 - ldr r5, =gUnknown_02022E2C + ldr r5, =gDisplayedStringBattle ldr r1, =gUnknown_085ED228 adds r0, r5, 0 bl StringCopy @@ -3814,7 +3814,7 @@ _08074270: _08074272: adds r0, r5, 0 bl StringCopy - ldr r0, =gUnknown_02022E2C + ldr r0, =gDisplayedStringBattle add r1, sp, 0x10 str r1, [sp] movs r1, 0 diff --git a/asm/rom_818E9AC.s b/asm/rom_818E9AC.s index 18e0dcc18..28dc75584 100644 --- a/asm/rom_818E9AC.s +++ b/asm/rom_818E9AC.s @@ -10664,7 +10664,7 @@ _0819456C: ldrh r1, [r0] lsls r1, 22 lsrs r1, 22 - ldr r0, =gUnknown_02022E2C + ldr r0, =gDisplayedStringBattle bl sub_8195898 mov r2, r10 cmp r2, 0x1 @@ -10879,7 +10879,7 @@ _08194740: bne _08194768 ldrb r0, [r4, 0x5] ldrb r3, [r4, 0xA] - ldr r1, =gUnknown_02022E2C + ldr r1, =gDisplayedStringBattle movs r2, 0x3D bl GetStringWidthDifference b _0819476A @@ -10888,7 +10888,7 @@ _08194768: movs r0, 0x3 _0819476A: strb r0, [r4, 0x8] - ldr r0, =gUnknown_02022E2C + ldr r0, =gDisplayedStringBattle str r0, [sp, 0x4] ldr r0, =gUnknown_0860D3F1 ldr r1, [sp, 0x20] @@ -11190,7 +11190,7 @@ _081949CE: movs r0, 0xD0 strb r0, [r1, 0xD] movs r7, 0 - ldr r0, =gUnknown_02022E2C + ldr r0, =gDisplayedStringBattle mov r9, r0 ldr r1, =gSaveBlock2Ptr mov r8, r1 @@ -43251,8 +43251,8 @@ _081A5328: negs r0, r0 strb r0, [r1, 0x1] ldr r0, =gUnknown_085CCDB2 - bl get_battle_strings_ - ldr r4, =gUnknown_02022E2C + bl StrCpyDecodeToDisplayedStringBattle + ldr r4, =gDisplayedStringBattle adds r0, r4, 0 movs r1, 0xF bl battle_show_message_maybe @@ -43260,7 +43260,7 @@ _081A5328: movs r1, 0x10 bl battle_show_message_maybe ldr r0, =gUnknown_085CCDB8 - bl get_battle_strings_ + bl StrCpyDecodeToDisplayedStringBattle adds r0, r4, 0 movs r1, 0x11 bl battle_show_message_maybe @@ -43274,7 +43274,7 @@ _081A5328: movs r1, 0x14 bl battle_show_message_maybe ldr r0, =gUnknown_085CCDCB - bl get_battle_strings_ + bl StrCpyDecodeToDisplayedStringBattle adds r0, r4, 0 movs r1, 0x15 bl battle_show_message_maybe @@ -43358,8 +43358,8 @@ _081A5464: movs r3, 0x1 bl sub_81A5558 ldr r0, =gUnknown_085CCDCB - bl get_battle_strings_ - ldr r0, =gUnknown_02022E2C + bl StrCpyDecodeToDisplayedStringBattle + ldr r0, =gDisplayedStringBattle movs r1, 0x15 bl battle_show_message_maybe ldrb r0, [r5] diff --git a/ld_script.txt b/ld_script.txt index d94b7440c..19a79c9ed 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -57,6 +57,7 @@ SECTIONS { asm/rom3.o(.text); src/decompress.o(.text); asm/rom_8034C54.o(.text); + asm/battle_2.o(.text); asm/battle_3.o(.text); src/battle_4.o(.text); asm/battle_4.o(.text); diff --git a/sym_ewram.txt b/sym_ewram.txt index b5aaaea48..754b050ef 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -241,7 +241,7 @@ gUnknown_02022E28: @ 2022E28 gUnknown_02022E2A: @ 2022E2A .space 0x2 -gUnknown_02022E2C: @ 2022E2C +gDisplayedStringBattle: @ 2022E2C .space 0x12C gBattleTextBuff1: @ 2022F58