diff options
author | JaceCearK1 <JaceCearK1@users.noreply.github.com> | 2017-07-01 21:04:18 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-07-01 21:04:18 +0200 |
commit | 0dd804a99e5455a0eac8ff6ed87d9de16c7380b7 (patch) | |
tree | 7b3567978b63ee6548a7b945e075ea8ba37bef51 /asm/battle_10.s | |
parent | f1344efd2aff92292f58f7323bd9297a38fe9b02 (diff) | |
parent | 8d82578d3a101b06f9d2ced31738021007c4e533 (diff) |
Merge pull request #1 from pret/master
Update fork to match main fork.
Diffstat (limited to 'asm/battle_10.s')
-rw-r--r-- | asm/battle_10.s | 4675 |
1 files changed, 4675 insertions, 0 deletions
diff --git a/asm/battle_10.s b/asm/battle_10.s new file mode 100644 index 000000000..548c77bce --- /dev/null +++ b/asm/battle_10.s @@ -0,0 +1,4675 @@ + .include "constants/gba_constants.inc" + .include "constants/species_constants.inc" + .include "asm/macros.inc" + + .syntax unified + + .text + + thumb_func_start LinkOpponentHandleGetAttributes +LinkOpponentHandleGetAttributes: @ 803807C + push {r4-r6,lr} + sub sp, 0x100 + movs r6, 0 + ldr r1, _080380A8 @ =gBattleBufferA + ldr r0, _080380AC @ =gActiveBank + ldrb r2, [r0] + lsls r0, r2, 9 + adds r1, 0x2 + adds r1, r0, r1 + ldrb r0, [r1] + cmp r0, 0 + bne _080380B4 + ldr r0, _080380B0 @ =gBattlePartyID + lsls r1, r2, 1 + adds r1, r0 + ldrb r0, [r1] + mov r1, sp + bl dp01_getattr_by_ch1_for_player_pokemon__ + adds r6, r0, 0 + b _080380D6 + .align 2, 0 +_080380A8: .4byte gBattleBufferA +_080380AC: .4byte gActiveBank +_080380B0: .4byte gBattlePartyID +_080380B4: + ldrb r4, [r1] + movs r5, 0 +_080380B8: + movs r0, 0x1 + ands r0, r4 + cmp r0, 0 + beq _080380CE + lsls r0, r5, 24 + lsrs r0, 24 + mov r2, sp + adds r1, r2, r6 + bl dp01_getattr_by_ch1_for_player_pokemon__ + adds r6, r0 +_080380CE: + lsrs r4, 1 + adds r5, 0x1 + cmp r5, 0x5 + ble _080380B8 +_080380D6: + lsls r1, r6, 16 + lsrs r1, 16 + movs r0, 0x1 + mov r2, sp + bl dp01_build_cmdbuf_x1D_1D_numargs_varargs + bl dp01_tbl4_exec_completed + add sp, 0x100 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end LinkOpponentHandleGetAttributes + + thumb_func_start dp01_getattr_by_ch1_for_player_pokemon__ +dp01_getattr_by_ch1_for_player_pokemon__: @ 80380F0 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x90 + adds r7, r1, 0 + lsls r0, 24 + lsrs r5, r0, 24 + movs r6, 0 + ldr r2, _08038124 @ =gBattleBufferA + ldr r3, _08038128 @ =gActiveBank + ldrb r0, [r3] + lsls r0, 9 + adds r1, r2, 0x1 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x3B + bls _0803811A + bl _08038886 +_0803811A: + lsls r0, 2 + ldr r1, _0803812C @ =_08038130 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08038124: .4byte gBattleBufferA +_08038128: .4byte gActiveBank +_0803812C: .4byte _08038130 + .align 2, 0 +_08038130: + .4byte _08038220 + .4byte _08038444 + .4byte _08038454 + .4byte _08038464 + .4byte _080384CC + .4byte _080384CC + .4byte _080384CC + .4byte _080384CC + .4byte _080384E8 + .4byte _08038524 + .4byte _08038524 + .4byte _08038524 + .4byte _08038524 + .4byte _08038886 + .4byte _08038886 + .4byte _08038886 + .4byte _08038886 + .4byte _08038540 + .4byte _08038550 + .4byte _08038580 + .4byte _08038590 + .4byte _080385A0 + .4byte _080385B0 + .4byte _080385C0 + .4byte _080385D0 + .4byte _080385E0 + .4byte _080385F0 + .4byte _08038600 + .4byte _08038610 + .4byte _08038620 + .4byte _08038630 + .4byte _08038640 + .4byte _08038690 + .4byte _080386A0 + .4byte _080386B0 + .4byte _080386C0 + .4byte _080386D0 + .4byte _080386E0 + .4byte _080386F0 + .4byte _08038700 + .4byte _08038710 + .4byte _08038744 + .4byte _08038754 + .4byte _08038764 + .4byte _08038774 + .4byte _08038784 + .4byte _08038794 + .4byte _080387A4 + .4byte _080387B4 + .4byte _080387D4 + .4byte _080387E4 + .4byte _080387F4 + .4byte _08038804 + .4byte _08038814 + .4byte _08038824 + .4byte _08038834 + .4byte _08038844 + .4byte _08038854 + .4byte _08038864 + .4byte _08038874 +_08038220: + movs r0, 0x64 + adds r4, r5, 0 + muls r4, r0 + ldr r0, _08038434 @ =gEnemyParty + adds r4, r0 + adds r0, r4, 0 + movs r1, 0xB + bl GetMonData + mov r1, sp + strh r0, [r1] + adds r0, r4, 0 + movs r1, 0xC + bl GetMonData + mov r1, sp + strh r0, [r1, 0x2E] + movs r6, 0 + add r0, sp, 0x24 + mov r9, r0 + movs r1, 0x3B + add r1, sp + mov r10, r1 + mov r2, sp + adds r2, 0x2B + str r2, [sp, 0x80] + mov r0, sp + adds r0, 0x2A + str r0, [sp, 0x7C] + mov r1, sp + adds r1, 0x68 + str r1, [sp, 0x8C] + adds r2, 0x5 + str r2, [sp, 0x84] + adds r0, 0x12 + str r0, [sp, 0x88] + mov r8, r4 + add r4, sp, 0xC +_0803826C: + adds r1, r6, 0 + adds r1, 0xD + mov r0, r8 + bl GetMonData + strh r0, [r4] + adds r1, r6, 0 + adds r1, 0x11 + mov r0, r8 + bl GetMonData + mov r2, r9 + adds r1, r2, r6 + strb r0, [r1] + adds r4, 0x2 + adds r6, 0x1 + cmp r6, 0x3 + ble _0803826C + movs r0, 0x64 + adds r4, r5, 0 + muls r4, r0 + ldr r0, _08038434 @ =gEnemyParty + adds r4, r0 + adds r0, r4, 0 + movs r1, 0x15 + bl GetMonData + mov r1, r10 + strb r0, [r1] + adds r0, r4, 0 + movs r1, 0x20 + bl GetMonData + ldr r2, [sp, 0x80] + strb r0, [r2] + adds r0, r4, 0 + movs r1, 0x19 + bl GetMonData + str r0, [sp, 0x44] + adds r0, r4, 0 + movs r1, 0x27 + bl GetMonData + mov r3, sp + movs r5, 0x1F + ands r0, r5 + ldrb r2, [r3, 0x14] + movs r1, 0x20 + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, 0x14] + adds r0, r4, 0 + movs r1, 0x28 + bl GetMonData + mov r3, sp + movs r6, 0x1F + ands r0, r6 + lsls r0, 5 + ldrh r2, [r3, 0x14] + ldr r1, _08038438 @ =0xfffffc1f + ands r1, r2 + orrs r1, r0 + strh r1, [r3, 0x14] + adds r0, r4, 0 + movs r1, 0x29 + bl GetMonData + mov r3, sp + ands r0, r5 + lsls r0, 2 + ldrb r2, [r3, 0x15] + movs r1, 0x7D + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, 0x15] + adds r0, r4, 0 + movs r1, 0x2A + bl GetMonData + movs r1, 0x1F + ands r1, r0 + lsls r1, 15 + ldr r0, [sp, 0x14] + ldr r2, _0803843C @ =0xfff07fff + ands r0, r2 + orrs r0, r1 + str r0, [sp, 0x14] + adds r0, r4, 0 + movs r1, 0x2B + bl GetMonData + mov r3, sp + ands r0, r6 + lsls r0, 4 + ldrh r2, [r3, 0x16] + ldr r1, _08038440 @ =0xfffffe0f + ands r1, r2 + orrs r1, r0 + strh r1, [r3, 0x16] + adds r0, r4, 0 + movs r1, 0x2C + bl GetMonData + mov r3, sp + ands r0, r5 + lsls r0, 1 + ldrb r2, [r3, 0x17] + movs r1, 0x3F + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, 0x17] + adds r0, r4, 0 + movs r1, 0 + bl GetMonData + str r0, [sp, 0x48] + adds r0, r4, 0 + movs r1, 0x37 + bl GetMonData + str r0, [sp, 0x4C] + adds r0, r4, 0 + movs r1, 0x38 + bl GetMonData + ldr r1, [sp, 0x7C] + strb r0, [r1] + adds r0, r4, 0 + movs r1, 0x39 + bl GetMonData + mov r1, sp + strh r0, [r1, 0x28] + adds r0, r4, 0 + movs r1, 0x3A + bl GetMonData + mov r1, sp + strh r0, [r1, 0x2C] + adds r0, r4, 0 + movs r1, 0x3B + bl GetMonData + mov r1, sp + strh r0, [r1, 0x2] + adds r0, r4, 0 + movs r1, 0x3C + bl GetMonData + mov r1, sp + strh r0, [r1, 0x4] + adds r0, r4, 0 + movs r1, 0x3D + bl GetMonData + mov r1, sp + strh r0, [r1, 0x6] + adds r0, r4, 0 + movs r1, 0x3E + bl GetMonData + mov r1, sp + strh r0, [r1, 0x8] + adds r0, r4, 0 + movs r1, 0x3F + bl GetMonData + mov r1, sp + strh r0, [r1, 0xA] + adds r0, r4, 0 + movs r1, 0x2D + bl GetMonData + mov r3, sp + movs r1, 0x1 + ands r0, r1 + lsls r0, 6 + ldrb r2, [r3, 0x17] + movs r1, 0x41 + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, 0x17] + adds r0, r4, 0 + movs r1, 0x2E + bl GetMonData + mov r3, sp + lsls r0, 7 + ldrb r2, [r3, 0x17] + movs r1, 0x7F + ands r1, r2 + orrs r1, r0 + strb r1, [r3, 0x17] + adds r0, r4, 0 + movs r1, 0x1 + bl GetMonData + str r0, [sp, 0x54] + adds r0, r4, 0 + movs r1, 0x2 + ldr r2, [sp, 0x8C] + bl GetMonData + ldr r0, [sp, 0x84] + ldr r1, [sp, 0x8C] + bl StringCopy10 + adds r0, r4, 0 + movs r1, 0x7 + ldr r2, [sp, 0x88] + bl GetMonData + mov r2, sp + movs r6, 0 +_08038424: + adds r0, r7, r6 + adds r1, r2, r6 + ldrb r1, [r1] + strb r1, [r0] + adds r6, 0x1 + cmp r6, 0x57 + bls _08038424 + b _08038886 + .align 2, 0 +_08038434: .4byte gEnemyParty +_08038438: .4byte 0xfffffc1f +_0803843C: .4byte 0xfff07fff +_08038440: .4byte 0xfffffe0f +_08038444: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08038450 @ =gEnemyParty + adds r0, r1 + movs r1, 0xB + b _080387BE + .align 2, 0 +_08038450: .4byte gEnemyParty +_08038454: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08038460 @ =gEnemyParty + adds r0, r1 + movs r1, 0xC + b _080387BE + .align 2, 0 +_08038460: .4byte gEnemyParty +_08038464: + movs r6, 0 + add r2, sp, 0x58 + mov r9, r2 + add r0, sp, 0x60 + mov r10, r0 + movs r0, 0x64 + adds r1, r5, 0 + muls r1, r0 + ldr r0, _080384C8 @ =gEnemyParty + adds r4, r1, r0 + mov r8, r9 +_0803847A: + adds r1, r6, 0 + adds r1, 0xD + adds r0, r4, 0 + bl GetMonData + mov r1, r8 + strh r0, [r1] + adds r1, r6, 0 + adds r1, 0x11 + adds r0, r4, 0 + bl GetMonData + mov r2, r10 + adds r1, r2, r6 + strb r0, [r1] + movs r0, 0x2 + add r8, r0 + adds r6, 0x1 + cmp r6, 0x3 + ble _0803847A + movs r0, 0x64 + muls r0, r5 + ldr r1, _080384C8 @ =gEnemyParty + adds r0, r1 + movs r1, 0x15 + bl GetMonData + mov r1, r9 + strb r0, [r1, 0xC] + mov r2, r9 + movs r6, 0 +_080384B8: + adds r0, r7, r6 + adds r1, r2, r6 + ldrb r1, [r1] + strb r1, [r0] + adds r6, 0x1 + cmp r6, 0xF + bls _080384B8 + b _08038886 + .align 2, 0 +_080384C8: .4byte gEnemyParty +_080384CC: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080384E4 @ =gEnemyParty + adds r0, r1 + ldrb r1, [r3] + lsls r1, 9 + adds r2, 0x1 + adds r1, r2 + ldrb r1, [r1] + adds r1, 0x9 + b _080387BE + .align 2, 0 +_080384E4: .4byte gEnemyParty +_080384E8: + movs r6, 0 + movs r0, 0x64 + adds r4, r5, 0 + muls r4, r0 + ldr r2, _08038520 @ =gEnemyParty + mov r8, r2 +_080384F4: + adds r1, r6, 0 + adds r1, 0x11 + mov r2, r8 + adds r0, r4, r2 + bl GetMonData + adds r1, r7, r6 + strb r0, [r1] + adds r6, 0x1 + cmp r6, 0x3 + ble _080384F4 + movs r0, 0x64 + muls r0, r5 + ldr r1, _08038520 @ =gEnemyParty + adds r0, r1 + movs r1, 0x15 + bl GetMonData + adds r1, r7, r6 + strb r0, [r1] + adds r6, 0x1 + b _08038886 + .align 2, 0 +_08038520: .4byte gEnemyParty +_08038524: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803853C @ =gEnemyParty + adds r0, r1 + ldrb r1, [r3] + lsls r1, 9 + adds r2, 0x1 + adds r1, r2 + ldrb r1, [r1] + adds r1, 0x8 + b _0803887E + .align 2, 0 +_0803853C: .4byte gEnemyParty +_08038540: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803854C @ =gEnemyParty + adds r0, r1 + movs r1, 0x1 + b _0803855A + .align 2, 0 +_0803854C: .4byte gEnemyParty +_08038550: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803857C @ =gEnemyParty + adds r0, r1 + movs r1, 0x19 +_0803855A: + bl GetMonData + adds r1, r0, 0 + strb r1, [r7] + movs r0, 0xFF + lsls r0, 8 + ands r0, r1 + lsrs r0, 8 + strb r0, [r7, 0x1] + movs r0, 0xFF + lsls r0, 16 + ands r0, r1 + lsrs r0, 16 + strb r0, [r7, 0x2] + movs r6, 0x3 + b _08038886 + .align 2, 0 +_0803857C: .4byte gEnemyParty +_08038580: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803858C @ =gEnemyParty + adds r0, r1 + movs r1, 0x1A + b _0803887E + .align 2, 0 +_0803858C: .4byte gEnemyParty +_08038590: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803859C @ =gEnemyParty + adds r0, r1 + movs r1, 0x1B + b _0803887E + .align 2, 0 +_0803859C: .4byte gEnemyParty +_080385A0: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080385AC @ =gEnemyParty + adds r0, r1 + movs r1, 0x1C + b _0803887E + .align 2, 0 +_080385AC: .4byte gEnemyParty +_080385B0: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080385BC @ =gEnemyParty + adds r0, r1 + movs r1, 0x1D + b _0803887E + .align 2, 0 +_080385BC: .4byte gEnemyParty +_080385C0: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080385CC @ =gEnemyParty + adds r0, r1 + movs r1, 0x1E + b _0803887E + .align 2, 0 +_080385CC: .4byte gEnemyParty +_080385D0: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080385DC @ =gEnemyParty + adds r0, r1 + movs r1, 0x1F + b _0803887E + .align 2, 0 +_080385DC: .4byte gEnemyParty +_080385E0: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080385EC @ =gEnemyParty + adds r0, r1 + movs r1, 0x20 + b _0803887E + .align 2, 0 +_080385EC: .4byte gEnemyParty +_080385F0: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080385FC @ =gEnemyParty + adds r0, r1 + movs r1, 0x22 + b _0803887E + .align 2, 0 +_080385FC: .4byte gEnemyParty +_08038600: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803860C @ =gEnemyParty + adds r0, r1 + movs r1, 0x23 + b _0803887E + .align 2, 0 +_0803860C: .4byte gEnemyParty +_08038610: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803861C @ =gEnemyParty + adds r0, r1 + movs r1, 0x24 + b _0803887E + .align 2, 0 +_0803861C: .4byte gEnemyParty +_08038620: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803862C @ =gEnemyParty + adds r0, r1 + movs r1, 0x25 + b _0803887E + .align 2, 0 +_0803862C: .4byte gEnemyParty +_08038630: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803863C @ =gEnemyParty + adds r0, r1 + movs r1, 0x26 + b _0803887E + .align 2, 0 +_0803863C: .4byte gEnemyParty +_08038640: + movs r0, 0x64 + adds r4, r5, 0 + muls r4, r0 + ldr r0, _0803868C @ =gEnemyParty + adds r4, r0 + adds r0, r4, 0 + movs r1, 0x27 + bl GetMonData + strb r0, [r7] + adds r0, r4, 0 + movs r1, 0x28 + bl GetMonData + strb r0, [r7, 0x1] + adds r0, r4, 0 + movs r1, 0x29 + bl GetMonData + strb r0, [r7, 0x2] + adds r0, r4, 0 + movs r1, 0x2A + bl GetMonData + strb r0, [r7, 0x3] + adds r0, r4, 0 + movs r1, 0x2B + bl GetMonData + strb r0, [r7, 0x4] + adds r0, r4, 0 + movs r1, 0x2C + bl GetMonData + strb r0, [r7, 0x5] + movs r6, 0x6 + b _08038886 + .align 2, 0 +_0803868C: .4byte gEnemyParty +_08038690: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803869C @ =gEnemyParty + adds r0, r1 + movs r1, 0x27 + b _0803887E + .align 2, 0 +_0803869C: .4byte gEnemyParty +_080386A0: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080386AC @ =gEnemyParty + adds r0, r1 + movs r1, 0x28 + b _0803887E + .align 2, 0 +_080386AC: .4byte gEnemyParty +_080386B0: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080386BC @ =gEnemyParty + adds r0, r1 + movs r1, 0x29 + b _0803887E + .align 2, 0 +_080386BC: .4byte gEnemyParty +_080386C0: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080386CC @ =gEnemyParty + adds r0, r1 + movs r1, 0x2A + b _0803887E + .align 2, 0 +_080386CC: .4byte gEnemyParty +_080386D0: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080386DC @ =gEnemyParty + adds r0, r1 + movs r1, 0x2B + b _0803887E + .align 2, 0 +_080386DC: .4byte gEnemyParty +_080386E0: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080386EC @ =gEnemyParty + adds r0, r1 + movs r1, 0x2C + b _0803887E + .align 2, 0 +_080386EC: .4byte gEnemyParty +_080386F0: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080386FC @ =gEnemyParty + adds r0, r1 + movs r1, 0 + b _0803871A + .align 2, 0 +_080386FC: .4byte gEnemyParty +_08038700: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803870C @ =gEnemyParty + adds r0, r1 + movs r1, 0x9 + b _080387BE + .align 2, 0 +_0803870C: .4byte gEnemyParty +_08038710: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08038740 @ =gEnemyParty + adds r0, r1 + movs r1, 0x37 +_0803871A: + bl GetMonData + adds r1, r0, 0 + strb r1, [r7] + movs r0, 0xFF + lsls r0, 8 + ands r0, r1 + lsrs r0, 8 + strb r0, [r7, 0x1] + movs r0, 0xFF + lsls r0, 16 + ands r0, r1 + lsrs r0, 16 + strb r0, [r7, 0x2] + lsrs r0, r1, 24 + strb r0, [r7, 0x3] + movs r6, 0x4 + b _08038886 + .align 2, 0 +_08038740: .4byte gEnemyParty +_08038744: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08038750 @ =gEnemyParty + adds r0, r1 + movs r1, 0x38 + b _0803887E + .align 2, 0 +_08038750: .4byte gEnemyParty +_08038754: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08038760 @ =gEnemyParty + adds r0, r1 + movs r1, 0x39 + b _080387BE + .align 2, 0 +_08038760: .4byte gEnemyParty +_08038764: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08038770 @ =gEnemyParty + adds r0, r1 + movs r1, 0x3A + b _080387BE + .align 2, 0 +_08038770: .4byte gEnemyParty +_08038774: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08038780 @ =gEnemyParty + adds r0, r1 + movs r1, 0x3B + b _080387BE + .align 2, 0 +_08038780: .4byte gEnemyParty +_08038784: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08038790 @ =gEnemyParty + adds r0, r1 + movs r1, 0x3C + b _080387BE + .align 2, 0 +_08038790: .4byte gEnemyParty +_08038794: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080387A0 @ =gEnemyParty + adds r0, r1 + movs r1, 0x3D + b _080387BE + .align 2, 0 +_080387A0: .4byte gEnemyParty +_080387A4: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080387B0 @ =gEnemyParty + adds r0, r1 + movs r1, 0x3E + b _080387BE + .align 2, 0 +_080387B0: .4byte gEnemyParty +_080387B4: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080387D0 @ =gEnemyParty + adds r0, r1 + movs r1, 0x3F +_080387BE: + bl GetMonData + lsls r0, 16 + lsrs r0, 16 + strb r0, [r7] + lsrs r0, 8 + strb r0, [r7, 0x1] + movs r6, 0x2 + b _08038886 + .align 2, 0 +_080387D0: .4byte gEnemyParty +_080387D4: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080387E0 @ =gEnemyParty + adds r0, r1 + movs r1, 0x16 + b _0803887E + .align 2, 0 +_080387E0: .4byte gEnemyParty +_080387E4: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080387F0 @ =gEnemyParty + adds r0, r1 + movs r1, 0x17 + b _0803887E + .align 2, 0 +_080387F0: .4byte gEnemyParty +_080387F4: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08038800 @ =gEnemyParty + adds r0, r1 + movs r1, 0x18 + b _0803887E + .align 2, 0 +_08038800: .4byte gEnemyParty +_08038804: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08038810 @ =gEnemyParty + adds r0, r1 + movs r1, 0x21 + b _0803887E + .align 2, 0 +_08038810: .4byte gEnemyParty +_08038814: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08038820 @ =gEnemyParty + adds r0, r1 + movs r1, 0x2F + b _0803887E + .align 2, 0 +_08038820: .4byte gEnemyParty +_08038824: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08038830 @ =gEnemyParty + adds r0, r1 + movs r1, 0x30 + b _0803887E + .align 2, 0 +_08038830: .4byte gEnemyParty +_08038834: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08038840 @ =gEnemyParty + adds r0, r1 + movs r1, 0x32 + b _0803887E + .align 2, 0 +_08038840: .4byte gEnemyParty +_08038844: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08038850 @ =gEnemyParty + adds r0, r1 + movs r1, 0x33 + b _0803887E + .align 2, 0 +_08038850: .4byte gEnemyParty +_08038854: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08038860 @ =gEnemyParty + adds r0, r1 + movs r1, 0x34 + b _0803887E + .align 2, 0 +_08038860: .4byte gEnemyParty +_08038864: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08038870 @ =gEnemyParty + adds r0, r1 + movs r1, 0x35 + b _0803887E + .align 2, 0 +_08038870: .4byte gEnemyParty +_08038874: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08038898 @ =gEnemyParty + adds r0, r1 + movs r1, 0x36 +_0803887E: + bl GetMonData + strb r0, [r7] + movs r6, 0x1 +_08038886: + adds r0, r6, 0 + add sp, 0x90 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08038898: .4byte gEnemyParty + thumb_func_end dp01_getattr_by_ch1_for_player_pokemon__ + + thumb_func_start sub_803889C +sub_803889C: @ 803889C + push {lr} + bl dp01_tbl4_exec_completed + pop {r0} + bx r0 + thumb_func_end sub_803889C + + thumb_func_start sub_80388A8 +sub_80388A8: @ 80388A8 + push {r4,r5,lr} + ldr r1, _080388CC @ =gBattleBufferA + ldr r0, _080388D0 @ =gActiveBank + ldrb r2, [r0] + lsls r0, r2, 9 + adds r1, 0x2 + adds r1, r0, r1 + ldrb r0, [r1] + cmp r0, 0 + bne _080388D8 + ldr r0, _080388D4 @ =gBattlePartyID + lsls r1, r2, 1 + adds r1, r0 + ldrb r0, [r1] + bl sub_8038900 + b _080388F6 + .align 2, 0 +_080388CC: .4byte gBattleBufferA +_080388D0: .4byte gActiveBank +_080388D4: .4byte gBattlePartyID +_080388D8: + ldrb r4, [r1] + movs r5, 0 +_080388DC: + movs r0, 0x1 + ands r0, r4 + cmp r0, 0 + beq _080388EA + adds r0, r5, 0 + bl sub_8038900 +_080388EA: + lsrs r4, 1 + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x5 + bls _080388DC +_080388F6: + bl dp01_tbl4_exec_completed + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80388A8 + + thumb_func_start sub_8038900 +sub_8038900: @ 8038900 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x38 + lsls r0, 24 + lsrs r5, r0, 24 + ldr r3, _08038938 @ =gActiveBank + ldrb r0, [r3] + lsls r0, 9 + ldr r2, _0803893C @ =gUnknown_02023A63 + adds r4, r0, r2 + adds r7, r4, 0 + subs r1, r2, 0x2 + adds r0, r1 + ldrb r0, [r0] + adds r6, r3, 0 + adds r3, r2, 0 + cmp r0, 0x3B + bls _0803892E + bl _0803920C +_0803892E: + lsls r0, 2 + ldr r1, _08038940 @ =_08038944 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08038938: .4byte gActiveBank +_0803893C: .4byte gUnknown_02023A63 +_08038940: .4byte _08038944 + .align 2, 0 +_08038944: + .4byte _08038A34 + .4byte _08038BCC + .4byte _08038BE8 + .4byte _08038C04 + .4byte _08038C58 + .4byte _08038C58 + .4byte _08038C58 + .4byte _08038C58 + .4byte _08038C78 + .4byte _08038CE0 + .4byte _08038CE0 + .4byte _08038CE0 + .4byte _08038CE0 + .4byte _0803920C + .4byte _0803920C + .4byte _0803920C + .4byte _0803920C + .4byte _08038D08 + .4byte _08038D24 + .4byte _08038D40 + .4byte _08038D5C + .4byte _08038D78 + .4byte _08038D94 + .4byte _08038DB0 + .4byte _08038DCC + .4byte _08038DE8 + .4byte _08038E04 + .4byte _08038E20 + .4byte _08038E3C + .4byte _08038E58 + .4byte _08038E74 + .4byte _08038E90 + .4byte _08038F04 + .4byte _08038F20 + .4byte _08038F3C + .4byte _08038F58 + .4byte _08038F74 + .4byte _08038F90 + .4byte _08038FAC + .4byte _08038FC8 + .4byte _08038FE4 + .4byte _08039000 + .4byte _0803901C + .4byte _08039038 + .4byte _08039054 + .4byte _08039070 + .4byte _0803908C + .4byte _080390A8 + .4byte _080390C4 + .4byte _080390E0 + .4byte _080390FC + .4byte _08039118 + .4byte _08039134 + .4byte _08039150 + .4byte _0803916C + .4byte _08039188 + .4byte _080391A4 + .4byte _080391C0 + .4byte _080391DC + .4byte _080391F8 +_08038A34: + movs r0, 0x64 + adds r4, r5, 0 + muls r4, r0 + ldr r0, _08038BC8 @ =gEnemyParty + adds r4, r0 + adds r0, r4, 0 + movs r1, 0xB + adds r2, r7, 0 + bl SetMonData + adds r2, r7, 0 + adds r2, 0x2E + adds r0, r4, 0 + movs r1, 0xC + bl SetMonData + movs r0, 0 + mov r8, r0 + movs r0, 0x3B + adds r0, r7 + mov r10, r0 + adds r0, r7, 0 + adds r0, 0x2B + str r0, [sp, 0x20] + adds r0, 0x19 + str r0, [sp, 0x28] + adds r0, 0x4 + str r0, [sp, 0x2C] + adds r0, 0x4 + str r0, [sp, 0x30] + subs r0, 0x22 + str r0, [sp, 0x1C] + subs r0, 0x2 + str r0, [sp, 0x18] + adds r0, 0x4 + str r0, [sp, 0x24] + adds r0, r7, 0x2 + str r0, [sp, 0x4] + adds r0, r7, 0x4 + str r0, [sp, 0x8] + adds r0, r7, 0x6 + str r0, [sp, 0xC] + adds r0, 0x2 + str r0, [sp, 0x10] + adds r0, 0x2 + str r0, [sp, 0x14] + mov r9, r4 + adds r6, r7, 0 + adds r6, 0x24 + adds r4, r7, 0 + adds r4, 0xC +_08038A9A: + mov r1, r8 + adds r1, 0xD + mov r0, r9 + adds r2, r4, 0 + bl SetMonData + mov r1, r8 + adds r1, 0x11 + mov r0, r9 + adds r2, r6, 0 + bl SetMonData + adds r6, 0x1 + adds r4, 0x2 + movs r0, 0x1 + add r8, r0 + mov r0, r8 + cmp r0, 0x3 + ble _08038A9A + movs r0, 0x64 + adds r4, r5, 0 + muls r4, r0 + ldr r0, _08038BC8 @ =gEnemyParty + adds r4, r0 + adds r0, r4, 0 + movs r1, 0x15 + mov r2, r10 + bl SetMonData + adds r0, r4, 0 + movs r1, 0x20 + ldr r2, [sp, 0x20] + bl SetMonData + adds r0, r4, 0 + movs r1, 0x19 + ldr r2, [sp, 0x28] + bl SetMonData + ldrb r0, [r7, 0x14] + lsls r0, 27 + lsrs r0, 27 + mov r1, sp + strb r0, [r1] + adds r0, r4, 0 + movs r1, 0x27 + mov r2, sp + bl SetMonData + mov r1, sp + ldrh r0, [r7, 0x14] + lsls r0, 22 + lsrs r0, 27 + strb r0, [r1] + adds r0, r4, 0 + movs r1, 0x28 + mov r2, sp + bl SetMonData + mov r1, sp + ldrb r0, [r7, 0x15] + lsls r0, 25 + lsrs r0, 27 + strb r0, [r1] + adds r0, r4, 0 + movs r1, 0x29 + mov r2, sp + bl SetMonData + mov r1, sp + ldr r0, [r7, 0x14] + lsls r0, 12 + lsrs r0, 27 + strb r0, [r1] + adds r0, r4, 0 + movs r1, 0x2A + mov r2, sp + bl SetMonData + mov r1, sp + ldrh r0, [r7, 0x16] + lsls r0, 23 + lsrs r0, 27 + strb r0, [r1] + adds r0, r4, 0 + movs r1, 0x2B + mov r2, sp + bl SetMonData + mov r1, sp + ldrb r0, [r7, 0x17] + lsls r0, 26 + lsrs r0, 27 + strb r0, [r1] + adds r0, r4, 0 + movs r1, 0x2C + mov r2, sp + bl SetMonData + adds r0, r4, 0 + movs r1, 0 + ldr r2, [sp, 0x2C] + bl SetMonData + adds r0, r4, 0 + movs r1, 0x37 + ldr r2, [sp, 0x30] + bl SetMonData + adds r0, r4, 0 + movs r1, 0x38 + ldr r2, [sp, 0x1C] + bl SetMonData + adds r0, r4, 0 + movs r1, 0x39 + ldr r2, [sp, 0x18] + bl SetMonData + adds r0, r4, 0 + movs r1, 0x3A + ldr r2, [sp, 0x24] + bl SetMonData + adds r0, r4, 0 + movs r1, 0x3B + ldr r2, [sp, 0x4] + bl SetMonData + adds r0, r4, 0 + movs r1, 0x3C + ldr r2, [sp, 0x8] + bl SetMonData + adds r0, r4, 0 + movs r1, 0x3D + ldr r2, [sp, 0xC] + bl SetMonData + adds r0, r4, 0 + movs r1, 0x3E + ldr r2, [sp, 0x10] + bl SetMonData + adds r0, r4, 0 + movs r1, 0x3F + ldr r2, [sp, 0x14] + bl SetMonData + b _0803920C + .align 2, 0 +_08038BC8: .4byte gEnemyParty +_08038BCC: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08038BE4 @ =gEnemyParty + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0xB + bl SetMonData + b _0803920C + .align 2, 0 +_08038BE4: .4byte gEnemyParty +_08038BE8: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08038C00 @ =gEnemyParty + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0xC + bl SetMonData + b _0803920C + .align 2, 0 +_08038C00: .4byte gEnemyParty +_08038C04: + movs r0, 0 + mov r8, r0 + movs r0, 0xC + adds r0, r4 + mov r9, r0 + movs r0, 0x64 + adds r1, r5, 0 + muls r1, r0 + ldr r0, _08038C54 @ =gEnemyParty + adds r7, r1, r0 + adds r6, r4, 0 + adds r6, 0x8 +_08038C1C: + mov r1, r8 + adds r1, 0xD + adds r0, r7, 0 + adds r2, r4, 0 + bl SetMonData + mov r1, r8 + adds r1, 0x11 + adds r0, r7, 0 + adds r2, r6, 0 + bl SetMonData + adds r6, 0x1 + adds r4, 0x2 + movs r0, 0x1 + add r8, r0 + mov r0, r8 + cmp r0, 0x3 + ble _08038C1C + movs r0, 0x64 + muls r0, r5 + ldr r1, _08038C54 @ =gEnemyParty + adds r0, r1 + movs r1, 0x15 + mov r2, r9 + bl SetMonData + b _0803920C + .align 2, 0 +_08038C54: .4byte gEnemyParty +_08038C58: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08038C70 @ =gEnemyParty + adds r0, r1 + ldr r3, _08038C74 @ =gBattleBufferA + ldrb r2, [r6] + lsls r2, 9 + adds r1, r3, 0x1 + adds r1, r2, r1 + ldrb r1, [r1] + adds r1, 0x9 + b _08038CF6 + .align 2, 0 +_08038C70: .4byte gEnemyParty +_08038C74: .4byte gBattleBufferA +_08038C78: + movs r0, 0x64 + adds r4, r5, 0 + muls r4, r0 + ldr r0, _08038CDC @ =gEnemyParty + adds r4, r0 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + adds r0, r4, 0 + movs r1, 0x11 + str r3, [sp, 0x34] + bl SetMonData + ldrb r2, [r6] + lsls r2, 9 + ldr r3, [sp, 0x34] + adds r0, r3, 0x1 + adds r2, r0 + adds r0, r4, 0 + movs r1, 0x12 + bl SetMonData + ldrb r2, [r6] + lsls r2, 9 + ldr r3, [sp, 0x34] + adds r0, r3, 0x2 + adds r2, r0 + adds r0, r4, 0 + movs r1, 0x13 + bl SetMonData + ldrb r2, [r6] + lsls r2, 9 + ldr r3, [sp, 0x34] + adds r0, r3, 0x3 + adds r2, r0 + adds r0, r4, 0 + movs r1, 0x14 + bl SetMonData + ldrb r2, [r6] + lsls r2, 9 + ldr r3, [sp, 0x34] + adds r0, r3, 0x4 + adds r2, r0 + adds r0, r4, 0 + movs r1, 0x15 + bl SetMonData + b _0803920C + .align 2, 0 +_08038CDC: .4byte gEnemyParty +_08038CE0: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08038D00 @ =gEnemyParty + adds r0, r1 + ldr r3, _08038D04 @ =gBattleBufferA + ldrb r2, [r6] + lsls r2, 9 + adds r1, r3, 0x1 + adds r1, r2, r1 + ldrb r1, [r1] + adds r1, 0x8 +_08038CF6: + adds r3, 0x3 + adds r2, r3 + bl SetMonData + b _0803920C + .align 2, 0 +_08038D00: .4byte gEnemyParty +_08038D04: .4byte gBattleBufferA +_08038D08: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08038D20 @ =gEnemyParty + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x1 + bl SetMonData + b _0803920C + .align 2, 0 +_08038D20: .4byte gEnemyParty +_08038D24: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08038D3C @ =gEnemyParty + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x19 + bl SetMonData + b _0803920C + .align 2, 0 +_08038D3C: .4byte gEnemyParty +_08038D40: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08038D58 @ =gEnemyParty + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x1A + bl SetMonData + b _0803920C + .align 2, 0 +_08038D58: .4byte gEnemyParty +_08038D5C: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08038D74 @ =gEnemyParty + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x1B + bl SetMonData + b _0803920C + .align 2, 0 +_08038D74: .4byte gEnemyParty +_08038D78: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08038D90 @ =gEnemyParty + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x1C + bl SetMonData + b _0803920C + .align 2, 0 +_08038D90: .4byte gEnemyParty +_08038D94: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08038DAC @ =gEnemyParty + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x1D + bl SetMonData + b _0803920C + .align 2, 0 +_08038DAC: .4byte gEnemyParty +_08038DB0: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08038DC8 @ =gEnemyParty + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x1E + bl SetMonData + b _0803920C + .align 2, 0 +_08038DC8: .4byte gEnemyParty +_08038DCC: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08038DE4 @ =gEnemyParty + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x1F + bl SetMonData + b _0803920C + .align 2, 0 +_08038DE4: .4byte gEnemyParty +_08038DE8: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08038E00 @ =gEnemyParty + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x20 + bl SetMonData + b _0803920C + .align 2, 0 +_08038E00: .4byte gEnemyParty +_08038E04: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08038E1C @ =gEnemyParty + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x22 + bl SetMonData + b _0803920C + .align 2, 0 +_08038E1C: .4byte gEnemyParty +_08038E20: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08038E38 @ =gEnemyParty + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x23 + bl SetMonData + b _0803920C + .align 2, 0 +_08038E38: .4byte gEnemyParty +_08038E3C: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08038E54 @ =gEnemyParty + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x24 + bl SetMonData + b _0803920C + .align 2, 0 +_08038E54: .4byte gEnemyParty +_08038E58: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08038E70 @ =gEnemyParty + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x25 + bl SetMonData + b _0803920C + .align 2, 0 +_08038E70: .4byte gEnemyParty +_08038E74: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08038E8C @ =gEnemyParty + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x26 + bl SetMonData + b _0803920C + .align 2, 0 +_08038E8C: .4byte gEnemyParty +_08038E90: + movs r0, 0x64 + adds r4, r5, 0 + muls r4, r0 + ldr r0, _08038F00 @ =gEnemyParty + adds r4, r0 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + adds r0, r4, 0 + movs r1, 0x27 + str r3, [sp, 0x34] + bl SetMonData + ldrb r2, [r6] + lsls r2, 9 + ldr r3, [sp, 0x34] + adds r0, r3, 0x1 + adds r2, r0 + adds r0, r4, 0 + movs r1, 0x28 + bl SetMonData + ldrb r2, [r6] + lsls r2, 9 + ldr r3, [sp, 0x34] + adds r0, r3, 0x2 + adds r2, r0 + adds r0, r4, 0 + movs r1, 0x29 + bl SetMonData + ldrb r2, [r6] + lsls r2, 9 + ldr r3, [sp, 0x34] + adds r0, r3, 0x3 + adds r2, r0 + adds r0, r4, 0 + movs r1, 0x2A + bl SetMonData + ldrb r2, [r6] + lsls r2, 9 + ldr r3, [sp, 0x34] + adds r0, r3, 0x4 + adds r2, r0 + adds r0, r4, 0 + movs r1, 0x2B + bl SetMonData + ldrb r2, [r6] + lsls r2, 9 + ldr r3, [sp, 0x34] + adds r0, r3, 0x5 + adds r2, r0 + adds r0, r4, 0 + b _08038F9E + .align 2, 0 +_08038F00: .4byte gEnemyParty +_08038F04: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08038F1C @ =gEnemyParty + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x27 + bl SetMonData + b _0803920C + .align 2, 0 +_08038F1C: .4byte gEnemyParty +_08038F20: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08038F38 @ =gEnemyParty + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x28 + bl SetMonData + b _0803920C + .align 2, 0 +_08038F38: .4byte gEnemyParty +_08038F3C: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08038F54 @ =gEnemyParty + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x29 + bl SetMonData + b _0803920C + .align 2, 0 +_08038F54: .4byte gEnemyParty +_08038F58: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08038F70 @ =gEnemyParty + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x2A + bl SetMonData + b _0803920C + .align 2, 0 +_08038F70: .4byte gEnemyParty +_08038F74: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08038F8C @ =gEnemyParty + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x2B + bl SetMonData + b _0803920C + .align 2, 0 +_08038F8C: .4byte gEnemyParty +_08038F90: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08038FA8 @ =gEnemyParty + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 +_08038F9E: + movs r1, 0x2C + bl SetMonData + b _0803920C + .align 2, 0 +_08038FA8: .4byte gEnemyParty +_08038FAC: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08038FC4 @ =gEnemyParty + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0 + bl SetMonData + b _0803920C + .align 2, 0 +_08038FC4: .4byte gEnemyParty +_08038FC8: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08038FE0 @ =gEnemyParty + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x9 + bl SetMonData + b _0803920C + .align 2, 0 +_08038FE0: .4byte gEnemyParty +_08038FE4: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08038FFC @ =gEnemyParty + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x37 + bl SetMonData + b _0803920C + .align 2, 0 +_08038FFC: .4byte gEnemyParty +_08039000: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08039018 @ =gEnemyParty + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x38 + bl SetMonData + b _0803920C + .align 2, 0 +_08039018: .4byte gEnemyParty +_0803901C: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08039034 @ =gEnemyParty + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x39 + bl SetMonData + b _0803920C + .align 2, 0 +_08039034: .4byte gEnemyParty +_08039038: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08039050 @ =gEnemyParty + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x3A + bl SetMonData + b _0803920C + .align 2, 0 +_08039050: .4byte gEnemyParty +_08039054: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803906C @ =gEnemyParty + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x3B + bl SetMonData + b _0803920C + .align 2, 0 +_0803906C: .4byte gEnemyParty +_08039070: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08039088 @ =gEnemyParty + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x3C + bl SetMonData + b _0803920C + .align 2, 0 +_08039088: .4byte gEnemyParty +_0803908C: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080390A4 @ =gEnemyParty + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x3D + bl SetMonData + b _0803920C + .align 2, 0 +_080390A4: .4byte gEnemyParty +_080390A8: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080390C0 @ =gEnemyParty + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x3E + bl SetMonData + b _0803920C + .align 2, 0 +_080390C0: .4byte gEnemyParty +_080390C4: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080390DC @ =gEnemyParty + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x3F + bl SetMonData + b _0803920C + .align 2, 0 +_080390DC: .4byte gEnemyParty +_080390E0: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080390F8 @ =gEnemyParty + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x16 + bl SetMonData + b _0803920C + .align 2, 0 +_080390F8: .4byte gEnemyParty +_080390FC: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08039114 @ =gEnemyParty + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x17 + bl SetMonData + b _0803920C + .align 2, 0 +_08039114: .4byte gEnemyParty +_08039118: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08039130 @ =gEnemyParty + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x18 + bl SetMonData + b _0803920C + .align 2, 0 +_08039130: .4byte gEnemyParty +_08039134: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803914C @ =gEnemyParty + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x21 + bl SetMonData + b _0803920C + .align 2, 0 +_0803914C: .4byte gEnemyParty +_08039150: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08039168 @ =gEnemyParty + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x2F + bl SetMonData + b _0803920C + .align 2, 0 +_08039168: .4byte gEnemyParty +_0803916C: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08039184 @ =gEnemyParty + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x30 + bl SetMonData + b _0803920C + .align 2, 0 +_08039184: .4byte gEnemyParty +_08039188: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080391A0 @ =gEnemyParty + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x32 + bl SetMonData + b _0803920C + .align 2, 0 +_080391A0: .4byte gEnemyParty +_080391A4: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080391BC @ =gEnemyParty + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x33 + bl SetMonData + b _0803920C + .align 2, 0 +_080391BC: .4byte gEnemyParty +_080391C0: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080391D8 @ =gEnemyParty + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x34 + bl SetMonData + b _0803920C + .align 2, 0 +_080391D8: .4byte gEnemyParty +_080391DC: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080391F4 @ =gEnemyParty + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x35 + bl SetMonData + b _0803920C + .align 2, 0 +_080391F4: .4byte gEnemyParty +_080391F8: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803921C @ =gEnemyParty + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x36 + bl SetMonData +_0803920C: + add sp, 0x38 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0803921C: .4byte gEnemyParty + thumb_func_end sub_8038900 + + thumb_func_start sub_8039220 +sub_8039220: @ 8039220 + push {r4-r7,lr} + ldr r1, _08039284 @ =gBattlePartyID + ldr r7, _08039288 @ =gActiveBank + ldrb r2, [r7] + lsls r0, r2, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + adds r3, r1, 0 + muls r3, r0 + ldr r4, _0803928C @ =gBattleBufferA + lsls r2, 9 + adds r0, r4, 0x1 + adds r0, r2, r0 + ldrb r0, [r0] + ldr r1, _08039290 @ =gEnemyParty + adds r0, r1 + adds r5, r3, r0 + movs r3, 0 + adds r0, r4, 0x2 + adds r2, r0 + ldrb r2, [r2] + cmp r3, r2 + bcs _08039278 + adds r6, r4, 0 + adds r2, r7, 0 + adds r4, r0, 0 +_08039256: + adds r1, r5, r3 + ldrb r0, [r2] + lsls r0, 9 + adds r0, 0x3 + adds r0, r3, r0 + adds r0, r6 + ldrb r0, [r0] + strb r0, [r1] + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + ldrb r0, [r2] + lsls r0, 9 + adds r0, r4 + ldrb r0, [r0] + cmp r3, r0 + bcc _08039256 +_08039278: + bl dp01_tbl4_exec_completed + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08039284: .4byte gBattlePartyID +_08039288: .4byte gActiveBank +_0803928C: .4byte gBattleBufferA +_08039290: .4byte gEnemyParty + thumb_func_end sub_8039220 + + thumb_func_start sub_8039294 +sub_8039294: @ 8039294 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + ldr r7, _080393BC @ =gBattlePartyID + ldr r6, _080393C0 @ =gActiveBank + ldrb r0, [r6] + lsls r0, 1 + adds r0, r7 + ldrh r0, [r0] + movs r1, 0x64 + mov r10, r1 + mov r2, r10 + muls r2, r0 + adds r0, r2, 0 + ldr r1, _080393C4 @ =gEnemyParty + mov r9, r1 + add r0, r9 + movs r1, 0xB + bl GetMonData + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + ldrb r1, [r6] + lsls r0, r1, 1 + adds r0, r7 + ldrh r0, [r0] + mov r2, r10 + muls r2, r0 + adds r0, r2, 0 + add r0, r9 + bl sub_8031794 + ldrb r0, [r6] + bl GetBankIdentity + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl GetMonSpriteTemplate_803C56C + ldr r0, _080393C8 @ =gUnknown_02024E8C + mov r8, r0 + ldrb r0, [r6] + movs r1, 0x2 + bl sub_8077ABC + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + ldrb r0, [r6] + bl sub_8077F68 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldrb r0, [r6] + bl sub_8079E90 + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + mov r0, r8 + adds r1, r5, 0 + adds r2, r4, 0 + bl CreateSprite + ldr r4, _080393CC @ =gObjectBankIDs + ldrb r1, [r6] + adds r1, r4 + strb r0, [r1] + ldr r5, _080393D0 @ =gSprites + ldrb r0, [r6] + adds r0, r4 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + ldr r1, _080393D4 @ =0x0000ff10 + strh r1, [r0, 0x24] + ldrb r2, [r6] + adds r0, r2, r4 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + strh r2, [r0, 0x2E] + ldrb r3, [r6] + adds r0, r3, r4 + ldrb r0, [r0] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r5 + lsls r3, 4 + ldrb r2, [r1, 0x5] + movs r0, 0xF + ands r0, r2 + orrs r0, r3 + strb r0, [r1, 0x5] + ldrb r2, [r6] + adds r4, r2, r4 + ldrb r1, [r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + ldr r1, _080393D8 @ =gBattleMonForms + adds r2, r1 + ldrb r1, [r2] + bl StartSpriteAnim + ldrb r4, [r6] + lsls r0, r4, 1 + adds r0, r7 + ldrh r0, [r0] + mov r1, r10 + muls r1, r0 + adds r0, r1, 0 + add r0, r9 + movs r1, 0xB + bl GetMonData + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + adds r0, r4, 0 + bl sub_8032984 + ldr r1, _080393DC @ =gBattleBankFunc + ldrb r0, [r6] + lsls r0, 2 + adds r0, r1 + ldr r1, _080393E0 @ =sub_8037A74 + str r1, [r0] + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080393BC: .4byte gBattlePartyID +_080393C0: .4byte gActiveBank +_080393C4: .4byte gEnemyParty +_080393C8: .4byte gUnknown_02024E8C +_080393CC: .4byte gObjectBankIDs +_080393D0: .4byte gSprites +_080393D4: .4byte 0x0000ff10 +_080393D8: .4byte gBattleMonForms +_080393DC: .4byte gBattleBankFunc +_080393E0: .4byte sub_8037A74 + thumb_func_end sub_8039294 + + thumb_func_start sub_80393E4 +sub_80393E4: @ 80393E4 + push {r4,lr} + ldr r1, _0803941C @ =gBattlePartyID + ldr r4, _08039420 @ =gActiveBank + ldrb r0, [r4] + lsls r2, r0, 1 + adds r2, r1 + ldr r3, _08039424 @ =gBattleBufferA + lsls r0, 9 + adds r1, r3, 0x1 + adds r0, r1 + ldrb r0, [r0] + strh r0, [r2] + ldrb r0, [r4] + lsls r1, r0, 9 + adds r3, 0x2 + adds r1, r3 + ldrb r1, [r1] + bl sub_8039430 + ldr r1, _08039428 @ =gBattleBankFunc + ldrb r0, [r4] + lsls r0, 2 + adds r0, r1 + ldr r1, _0803942C @ =sub_8037E30 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0803941C: .4byte gBattlePartyID +_08039420: .4byte gActiveBank +_08039424: .4byte gBattleBufferA +_08039428: .4byte gBattleBankFunc +_0803942C: .4byte sub_8037E30 + thumb_func_end sub_80393E4 + + thumb_func_start sub_8039430 +sub_8039430: @ 8039430 + push {r4-r6,lr} + mov r6, r10 + mov r5, r9 + mov r4, r8 + push {r4-r6} + adds r6, r0, 0 + lsls r6, 24 + lsrs r6, 24 + lsls r1, 24 + lsrs r1, 24 + adds r0, r6, 0 + bl sub_8032AA8 + ldr r0, _0803958C @ =gBattlePartyID + lsls r4, r6, 1 + adds r4, r0 + ldr r0, _08039590 @ =gBattleBufferA + lsls r1, r6, 9 + adds r0, 0x1 + adds r1, r0 + ldrb r0, [r1] + strh r0, [r4] + ldrh r0, [r4] + movs r1, 0x64 + mov r9, r1 + mov r1, r9 + muls r1, r0 + adds r0, r1, 0 + ldr r5, _08039594 @ =gEnemyParty + adds r0, r5 + movs r1, 0xB + bl GetMonData + mov r8, r0 + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + ldr r0, _08039598 @ =sub_80312F0 + bl CreateInvisibleSpriteWithCallback + ldr r1, _0803959C @ =gUnknown_0300434C + mov r10, r1 + add r10, r6 + mov r1, r10 + strb r0, [r1] + ldrh r0, [r4] + mov r1, r9 + muls r1, r0 + adds r0, r1, 0 + adds r0, r5 + adds r1, r6, 0 + bl sub_8031794 + adds r0, r6, 0 + bl GetBankIdentity + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + mov r0, r8 + bl GetMonSpriteTemplate_803C56C + ldr r0, _080395A0 @ =gUnknown_02024E8C + mov r9, r0 + adds r0, r6, 0 + movs r1, 0x2 + bl sub_8077ABC + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + adds r0, r6, 0 + bl sub_8077F68 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r6, 0 + bl sub_8079E90 + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + mov r0, r9 + adds r1, r5, 0 + adds r2, r4, 0 + bl CreateSprite + ldr r4, _080395A4 @ =gObjectBankIDs + adds r4, r6, r4 + strb r0, [r4] + ldr r5, _080395A8 @ =gSprites + mov r0, r10 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + ldrb r1, [r4] + strh r1, [r0, 0x30] + ldrb r1, [r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + strh r6, [r0, 0x2E] + ldrb r1, [r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + mov r1, r8 + strh r1, [r0, 0x32] + ldrb r0, [r4] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r5 + lsls r3, r6, 4 + ldrb r2, [r1, 0x5] + movs r0, 0xF + ands r0, r2 + orrs r0, r3 + strb r0, [r1, 0x5] + ldrb r1, [r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + ldr r1, _080395AC @ =gBattleMonForms + adds r6, r1 + ldrb r1, [r6] + bl StartSpriteAnim + ldrb r1, [r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + adds r0, 0x3E + ldrb r1, [r0] + movs r2, 0x4 + orrs r1, r2 + strb r1, [r0] + ldrb r1, [r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r1, r5, 0 + adds r1, 0x1C + adds r0, r1 + ldr r1, _080395B0 @ =SpriteCallbackDummy + str r1, [r0] + movs r0, 0 + movs r1, 0xFE + bl sub_8046400 + mov r1, r10 + ldrb r2, [r1] + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + adds r1, r5 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r1, 0x2E] + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0803958C: .4byte gBattlePartyID +_08039590: .4byte gBattleBufferA +_08039594: .4byte gEnemyParty +_08039598: .4byte sub_80312F0 +_0803959C: .4byte gUnknown_0300434C +_080395A0: .4byte gUnknown_02024E8C +_080395A4: .4byte gObjectBankIDs +_080395A8: .4byte gSprites +_080395AC: .4byte gBattleMonForms +_080395B0: .4byte SpriteCallbackDummy + thumb_func_end sub_8039430 + + thumb_func_start sub_80395B4 +sub_80395B4: @ 80395B4 + push {r4-r6,lr} + ldr r1, _080395E4 @ =gBattleBufferA + ldr r6, _080395E8 @ =gActiveBank + ldrb r2, [r6] + lsls r0, r2, 9 + adds r1, 0x1 + adds r0, r1 + ldrb r3, [r0] + cmp r3, 0 + bne _080395F8 + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + ldr r1, _080395EC @ =0x02017810 + adds r0, r1 + strb r3, [r0, 0x4] + ldr r1, _080395F0 @ =gBattleBankFunc + ldrb r0, [r6] + lsls r0, 2 + adds r0, r1 + ldr r1, _080395F4 @ =sub_8039648 + str r1, [r0] + b _08039634 + .align 2, 0 +_080395E4: .4byte gBattleBufferA +_080395E8: .4byte gActiveBank +_080395EC: .4byte 0x02017810 +_080395F0: .4byte gBattleBankFunc +_080395F4: .4byte sub_8039648 +_080395F8: + ldr r5, _0803963C @ =gObjectBankIDs + adds r0, r2, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r4, _08039640 @ =gSprites + adds r0, r4 + bl FreeSpriteOamMatrix + ldrb r0, [r6] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + bl DestroySprite + ldrb r0, [r6] + bl sub_8032A08 + ldr r1, _08039644 @ =gHealthboxIDs + ldrb r0, [r6] + adds r0, r1 + ldrb r0, [r0] + bl sub_8043DB0 + bl dp01_tbl4_exec_completed +_08039634: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0803963C: .4byte gObjectBankIDs +_08039640: .4byte gSprites +_08039644: .4byte gHealthboxIDs + thumb_func_end sub_80395B4 + + thumb_func_start sub_8039648 +sub_8039648: @ 8039648 + push {r4,r5,lr} + ldr r5, _08039664 @ =gActiveBank + ldrb r2, [r5] + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + ldr r4, _08039668 @ =0x02017810 + adds r3, r0, r4 + ldrb r0, [r3, 0x4] + cmp r0, 0 + beq _0803966C + cmp r0, 0x1 + beq _08039698 + b _080396C0 + .align 2, 0 +_08039664: .4byte gActiveBank +_08039668: .4byte 0x02017810 +_0803966C: + lsls r0, r2, 2 + adds r1, r4, 0 + subs r1, 0x10 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _08039688 + adds r0, r2, 0 + adds r1, r2, 0 + movs r3, 0x5 + bl move_anim_start_t4 +_08039688: + ldrb r0, [r5] + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + adds r1, r4 + movs r0, 0x1 + strb r0, [r1, 0x4] + b _080396C0 +_08039698: + ldrb r1, [r3] + movs r0, 0x40 + ands r0, r1 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + bne _080396C0 + strb r0, [r3, 0x4] + ldrb r2, [r5] + adds r0, r2, 0 + adds r1, r2, 0 + movs r3, 0x2 + bl move_anim_start_t4 + ldr r1, _080396C8 @ =gBattleBankFunc + ldrb r0, [r5] + lsls r0, 2 + adds r0, r1 + ldr r1, _080396CC @ =sub_8037BBC + str r1, [r0] +_080396C0: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080396C8: .4byte gBattleBankFunc +_080396CC: .4byte sub_8037BBC + thumb_func_end sub_8039648 + + thumb_func_start sub_80396D0 +sub_80396D0: @ 80396D0 + push {r4-r6,lr} + mov r6, r9 + mov r5, r8 + push {r5,r6} + ldr r0, _08039704 @ =gBattleTypeFlags + ldrh r1, [r0] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _08039714 + ldr r6, _08039708 @ =gActiveBank + ldrb r0, [r6] + bl GetBankIdentity + movs r1, 0x2 + ands r1, r0 + movs r5, 0x10 + cmp r1, 0 + beq _080396F8 + ldr r5, _0803970C @ =0x0000fff0 +_080396F8: + ldr r4, _08039710 @ =gLinkPlayers + ldrb r0, [r6] + bl sub_803FC34 + b _08039724 + .align 2, 0 +_08039704: .4byte gBattleTypeFlags +_08039708: .4byte gActiveBank +_0803970C: .4byte 0x0000fff0 +_08039710: .4byte gLinkPlayers +_08039714: + movs r5, 0 + ldr r4, _0803986C @ =gLinkPlayers + bl GetMultiplayerId + movs r1, 0x1 + eors r0, r1 + lsls r0, 24 + lsrs r0, 24 +_08039724: + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + adds r1, r4 + ldrb r0, [r1, 0x13] + mov r9, r0 + ldr r0, _08039870 @ =gActiveBank + mov r8, r0 + ldrb r1, [r0] + mov r0, r9 + bl sub_8031A6C + mov r1, r8 + ldrb r0, [r1] + bl GetBankIdentity + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + mov r0, r9 + bl GetMonSpriteTemplate_803C5A0 + ldr r6, _08039874 @ =gUnknown_02024E8C + lsls r5, 16 + movs r2, 0xB0 + lsls r2, 16 + adds r5, r2 + asrs r5, 16 + ldr r1, _08039878 @ =gTrainerFrontPicCoords + mov r2, r9 + lsls r0, r2, 2 + adds r0, r1 + ldrb r0, [r0] + movs r4, 0x8 + subs r4, r0 + lsls r4, 18 + movs r0, 0xA0 + lsls r0, 14 + adds r4, r0 + asrs r4, 16 + mov r1, r8 + ldrb r0, [r1] + bl sub_8079E90 + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + adds r0, r6, 0 + adds r1, r5, 0 + adds r2, r4, 0 + bl CreateSprite + ldr r5, _0803987C @ =gObjectBankIDs + mov r2, r8 + ldrb r1, [r2] + adds r1, r5 + strb r0, [r1] + ldr r4, _08039880 @ =gSprites + ldrb r0, [r2] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldr r1, _08039884 @ =0x0000ff10 + strh r1, [r0, 0x24] + ldrb r0, [r2] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + movs r1, 0x2 + strh r1, [r0, 0x2E] + ldr r0, _08039888 @ =gTrainerFrontPicPaletteTable + mov r1, r9 + lsls r6, r1, 3 + adds r0, r6, r0 + ldrh r0, [r0, 0x4] + bl IndexOfSpritePaletteTag + mov r2, r8 + ldrb r1, [r2] + adds r1, r5 + ldrb r1, [r1] + lsls r2, r1, 4 + adds r2, r1 + lsls r2, 2 + adds r2, r4 + lsls r0, 4 + ldrb r3, [r2, 0x5] + movs r1, 0xF + ands r1, r3 + orrs r1, r0 + strb r1, [r2, 0x5] + mov r1, r8 + ldrb r0, [r1] + adds r0, r5 + ldrb r0, [r0] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r4 + ldrh r0, [r1, 0x4] + lsls r0, 22 + lsrs r0, 22 + strh r0, [r1, 0x38] + ldr r0, _0803988C @ =gTrainerFrontPicTable + adds r6, r0 + ldrh r0, [r6, 0x6] + bl GetSpriteTileStartByTag + mov r2, r8 + ldrb r1, [r2] + adds r1, r5 + ldrb r2, [r1] + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + adds r1, r4 + ldr r2, _08039890 @ =0x000003ff + ands r2, r0 + ldrh r3, [r1, 0x4] + ldr r0, _08039894 @ =0xfffffc00 + ands r0, r3 + orrs r0, r2 + strh r0, [r1, 0x4] + mov r1, r8 + ldrb r0, [r1] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + mov r2, r9 + strh r2, [r0, 0x6] + mov r1, r8 + ldrb r0, [r1] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r4, 0x1C + adds r0, r4 + ldr r1, _08039898 @ =sub_80313A0 + str r1, [r0] + ldr r1, _0803989C @ =gBattleBankFunc + mov r2, r8 + ldrb r0, [r2] + lsls r0, 2 + adds r0, r1 + ldr r1, _080398A0 @ =sub_803757C + str r1, [r0] + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0803986C: .4byte gLinkPlayers +_08039870: .4byte gActiveBank +_08039874: .4byte gUnknown_02024E8C +_08039878: .4byte gTrainerFrontPicCoords +_0803987C: .4byte gObjectBankIDs +_08039880: .4byte gSprites +_08039884: .4byte 0x0000ff10 +_08039888: .4byte gTrainerFrontPicPaletteTable +_0803988C: .4byte gTrainerFrontPicTable +_08039890: .4byte 0x000003ff +_08039894: .4byte 0xfffffc00 +_08039898: .4byte sub_80313A0 +_0803989C: .4byte gBattleBankFunc +_080398A0: .4byte sub_803757C + thumb_func_end sub_80396D0 + + thumb_func_start sub_80398A4 +sub_80398A4: @ 80398A4 + push {lr} + bl dp01_tbl4_exec_completed + pop {r0} + bx r0 + thumb_func_end sub_80398A4 + + thumb_func_start sub_80398B0 +sub_80398B0: @ 80398B0 + push {r4-r6,lr} + ldr r6, _08039940 @ =gObjectBankIDs + ldr r4, _08039944 @ =gActiveBank + ldrb r0, [r4] + adds r0, r6 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r5, _08039948 @ =gSprites + adds r0, r5 + bl oamt_add_pos2_onto_pos1 + ldrb r0, [r4] + adds r0, r6 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + movs r1, 0x23 + strh r1, [r0, 0x2E] + ldrb r0, [r4] + adds r0, r6 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + movs r1, 0x8C + lsls r1, 1 + strh r1, [r0, 0x32] + ldrb r0, [r4] + adds r0, r6 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + ldrh r1, [r0, 0x22] + strh r1, [r0, 0x36] + ldrb r0, [r4] + adds r0, r6 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r1, r5, 0 + adds r1, 0x1C + adds r0, r1 + ldr r1, _0803994C @ =sub_8078B34 + str r1, [r0] + ldrb r0, [r4] + adds r0, r6 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + ldr r1, _08039950 @ =SpriteCallbackDummy + bl oamt_set_x3A_32 + ldr r1, _08039954 @ =gBattleBankFunc + ldrb r0, [r4] + lsls r0, 2 + adds r0, r1 + ldr r1, _08039958 @ =sub_80375B4 + str r1, [r0] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08039940: .4byte gObjectBankIDs +_08039944: .4byte gActiveBank +_08039948: .4byte gSprites +_0803994C: .4byte sub_8078B34 +_08039950: .4byte SpriteCallbackDummy +_08039954: .4byte gBattleBankFunc +_08039958: .4byte sub_80375B4 + thumb_func_end sub_80398B0 + + thumb_func_start sub_803995C +sub_803995C: @ 803995C + push {r4,r5,lr} + ldr r5, _080399A0 @ =gActiveBank + ldrb r2, [r5] + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + ldr r4, _080399A4 @ =0x02017810 + adds r3, r0, r4 + ldrb r0, [r3, 0x4] + cmp r0, 0 + bne _080399A8 + lsls r0, r2, 2 + adds r1, r4, 0 + subs r1, 0x10 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _0803998E + adds r0, r2, 0 + adds r1, r2, 0 + movs r3, 0x5 + bl move_anim_start_t4 +_0803998E: + ldrb r0, [r5] + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + adds r1, r4 + ldrb r0, [r1, 0x4] + adds r0, 0x1 + strb r0, [r1, 0x4] + b _080399E4 + .align 2, 0 +_080399A0: .4byte gActiveBank +_080399A4: .4byte 0x02017810 +_080399A8: + ldrb r1, [r3] + movs r0, 0x40 + ands r0, r1 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + bne _080399E4 + strb r0, [r3, 0x4] + movs r0, 0x10 + movs r1, 0x3F + bl PlaySE12WithPanning + ldr r2, _080399EC @ =gSprites + ldr r1, _080399F0 @ =gObjectBankIDs + ldrb r0, [r5] + adds r0, r1 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r2, 0x1C + adds r0, r2 + ldr r1, _080399F4 @ =sub_8010384 + str r1, [r0] + ldr r1, _080399F8 @ =gBattleBankFunc + ldrb r0, [r5] + lsls r0, 2 + adds r0, r1 + ldr r1, _080399FC @ =sub_8037B78 + str r1, [r0] +_080399E4: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080399EC: .4byte gSprites +_080399F0: .4byte gObjectBankIDs +_080399F4: .4byte sub_8010384 +_080399F8: .4byte gBattleBankFunc +_080399FC: .4byte sub_8037B78 + thumb_func_end sub_803995C + + thumb_func_start sub_8039A00 +sub_8039A00: @ 8039A00 + push {lr} + bl dp01_tbl4_exec_completed + pop {r0} + bx r0 + thumb_func_end sub_8039A00 + + thumb_func_start sub_8039A0C +sub_8039A0C: @ 8039A0C + push {lr} + bl dp01_tbl4_exec_completed + pop {r0} + bx r0 + thumb_func_end sub_8039A0C + + thumb_func_start sub_8039A18 +sub_8039A18: @ 8039A18 + push {lr} + bl dp01_tbl4_exec_completed + pop {r0} + bx r0 + thumb_func_end sub_8039A18 + + thumb_func_start sub_8039A24 +sub_8039A24: @ 8039A24 + push {lr} + bl dp01_tbl4_exec_completed + pop {r0} + bx r0 + thumb_func_end sub_8039A24 + + thumb_func_start sub_8039A30 +sub_8039A30: @ 8039A30 + push {r4-r6,lr} + ldr r6, _08039B14 @ =gActiveBank + ldrb r0, [r6] + bl mplay_80342A4 + lsls r0, 24 + cmp r0, 0 + beq _08039A42 + b _08039B52 +_08039A42: + ldr r0, _08039B18 @ =gBattleBufferA + mov r12, r0 + ldrb r2, [r6] + lsls r2, 9 + adds r0, 0x1 + adds r0, r2, r0 + ldrb r0, [r0] + mov r1, r12 + adds r1, 0x2 + adds r1, r2, r1 + ldrb r1, [r1] + lsls r1, 8 + orrs r0, r1 + ldr r5, _08039B1C @ =gUnknown_0202F7C4 + mov r1, r12 + adds r1, 0x3 + adds r2, r1 + ldrb r1, [r2] + strb r1, [r5] + ldr r4, _08039B20 @ =gMovePowerMoveAnim + ldrb r2, [r6] + lsls r2, 9 + mov r1, r12 + adds r1, 0x4 + adds r1, r2, r1 + ldrb r3, [r1] + mov r1, r12 + adds r1, 0x5 + adds r2, r1 + ldrb r1, [r2] + lsls r1, 8 + orrs r3, r1 + strh r3, [r4] + ldr r4, _08039B24 @ =gMoveDmgMoveAnim + ldrb r2, [r6] + lsls r2, 9 + mov r1, r12 + adds r1, 0x6 + adds r1, r2, r1 + ldrb r3, [r1] + mov r1, r12 + adds r1, 0x7 + adds r1, r2, r1 + ldrb r1, [r1] + lsls r1, 8 + orrs r3, r1 + mov r1, r12 + adds r1, 0x8 + adds r1, r2, r1 + ldrb r1, [r1] + lsls r1, 16 + orrs r3, r1 + mov r1, r12 + adds r1, 0x9 + adds r2, r1 + ldrb r1, [r2] + lsls r1, 24 + orrs r3, r1 + str r3, [r4] + ldr r3, _08039B28 @ =gHappinessMoveAnim + ldrb r1, [r6] + lsls r1, 9 + mov r2, r12 + adds r2, 0xA + adds r1, r2 + ldrb r1, [r1] + strb r1, [r3] + ldr r4, _08039B2C @ =gWeatherMoveAnim + ldrb r2, [r6] + lsls r2, 9 + mov r1, r12 + adds r1, 0xC + adds r1, r2, r1 + ldrb r3, [r1] + mov r1, r12 + adds r1, 0xD + adds r2, r1 + ldrb r1, [r2] + lsls r1, 8 + orrs r3, r1 + strh r3, [r4] + ldr r3, _08039B30 @ =gDisableStructMoveAnim + ldrb r2, [r6] + lsls r2, 9 + mov r1, r12 + adds r1, 0x10 + adds r2, r1 + str r2, [r3] + ldr r3, _08039B34 @ =gPID_perBank + ldrb r1, [r6] + lsls r1, 2 + adds r1, r3 + ldr r2, [r2] + str r2, [r1] + ldrb r1, [r5] + bl sub_8031720 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0 + beq _08039B38 + bl dp01_tbl4_exec_completed + b _08039B52 + .align 2, 0 +_08039B14: .4byte gActiveBank +_08039B18: .4byte gBattleBufferA +_08039B1C: .4byte gUnknown_0202F7C4 +_08039B20: .4byte gMovePowerMoveAnim +_08039B24: .4byte gMoveDmgMoveAnim +_08039B28: .4byte gHappinessMoveAnim +_08039B2C: .4byte gWeatherMoveAnim +_08039B30: .4byte gDisableStructMoveAnim +_08039B34: .4byte gPID_perBank +_08039B38: + ldrb r1, [r6] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + ldr r1, _08039B58 @ =0x02017810 + adds r0, r1 + strb r2, [r0, 0x4] + ldr r1, _08039B5C @ =gBattleBankFunc + ldrb r0, [r6] + lsls r0, 2 + adds r0, r1 + ldr r1, _08039B60 @ =sub_8039B64 + str r1, [r0] +_08039B52: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08039B58: .4byte 0x02017810 +_08039B5C: .4byte gBattleBankFunc +_08039B60: .4byte sub_8039B64 + thumb_func_end sub_8039A30 + + thumb_func_start sub_8039B64 +sub_8039B64: @ 8039B64 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + ldr r2, _08039BA8 @ =gBattleBufferA + ldr r5, _08039BAC @ =gActiveBank + ldrb r3, [r5] + lsls r1, r3, 9 + adds r0, r2, 0x1 + mov r9, r0 + adds r0, r1, r0 + ldrb r4, [r0] + adds r6, r2, 0x2 + mov r8, r6 + adds r0, r1, r6 + ldrb r0, [r0] + lsls r0, 8 + orrs r4, r0 + adds r2, 0xB + adds r1, r2 + ldrb r7, [r1] + lsls r0, r3, 1 + adds r0, r3 + lsls r0, 2 + ldr r6, _08039BB0 @ =0x02017810 + adds r0, r6 + ldrb r2, [r0, 0x4] + cmp r2, 0x1 + beq _08039BF2 + cmp r2, 0x1 + bgt _08039BB4 + cmp r2, 0 + beq _08039BBE + b _08039CBC + .align 2, 0 +_08039BA8: .4byte gBattleBufferA +_08039BAC: .4byte gActiveBank +_08039BB0: .4byte 0x02017810 +_08039BB4: + cmp r2, 0x2 + beq _08039C18 + cmp r2, 0x3 + beq _08039C84 + b _08039CBC +_08039BBE: + lsls r1, r3, 2 + adds r0, r6, 0 + subs r0, 0x10 + adds r1, r0 + ldrb r2, [r1] + movs r0, 0xC + ands r0, r2 + cmp r0, 0x4 + bne _08039BE2 + movs r0, 0x8 + orrs r0, r2 + strb r0, [r1] + ldrb r2, [r5] + adds r0, r2, 0 + adds r1, r2, 0 + movs r3, 0x5 + bl move_anim_start_t4 +_08039BE2: + ldrb r0, [r5] + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + adds r1, r6 + movs r0, 0x1 + strb r0, [r1, 0x4] + b _08039CBC +_08039BF2: + ldrb r1, [r0] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + bne _08039CBC + movs r0, 0 + bl sub_80326EC + adds r0, r4, 0 + bl ExecuteMoveAnim + ldrb r0, [r5] + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + adds r1, r6 + movs r0, 0x2 + strb r0, [r1, 0x4] + b _08039CBC +_08039C18: + ldr r0, _08039C74 @ =gAnimScriptCallback + ldr r0, [r0] + bl _call_via_r0 + ldr r0, _08039C78 @ =gAnimScriptActive + ldrb r0, [r0] + cmp r0, 0 + bne _08039CBC + movs r0, 0x1 + bl sub_80326EC + ldrb r2, [r5] + lsls r0, r2, 2 + adds r4, r6, 0 + subs r4, 0x10 + adds r0, r4 + ldrb r1, [r0] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _08039C60 + cmp r7, 0x1 + bhi _08039C60 + adds r0, r2, 0 + adds r1, r2, 0 + movs r3, 0x6 + bl move_anim_start_t4 + ldrb r0, [r5] + lsls r0, 2 + adds r0, r4 + ldrb r2, [r0] + movs r1, 0x9 + negs r1, r1 + ands r1, r2 + strb r1, [r0] +_08039C60: + ldr r0, _08039C7C @ =gActiveBank + ldrb r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + ldr r1, _08039C80 @ =0x02017810 + adds r0, r1 + movs r1, 0x3 + strb r1, [r0, 0x4] + b _08039CBC + .align 2, 0 +_08039C74: .4byte gAnimScriptCallback +_08039C78: .4byte gAnimScriptActive +_08039C7C: .4byte gActiveBank +_08039C80: .4byte 0x02017810 +_08039C84: + ldrb r1, [r0] + movs r0, 0x40 + ands r0, r1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + bne _08039CBC + bl sub_8031F24 + ldrb r0, [r5] + lsls r2, r0, 9 + mov r3, r9 + adds r1, r2, r3 + ldrb r1, [r1] + add r2, r8 + ldrb r2, [r2] + lsls r2, 8 + orrs r1, r2 + bl sub_80324BC + ldrb r1, [r5] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + strb r4, [r0, 0x4] + bl dp01_tbl4_exec_completed +_08039CBC: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8039B64 + + thumb_func_start sub_8039CC8 +sub_8039CC8: @ 8039CC8 + push {r4,lr} + sub sp, 0x4 + ldr r0, _08039D0C @ =gUnknown_030042A4 + movs r1, 0 + strh r1, [r0] + ldr r0, _08039D10 @ =gUnknown_030042A0 + strh r1, [r0] + ldr r4, _08039D14 @ =gActiveBank + ldrb r0, [r4] + lsls r0, 9 + ldr r1, _08039D18 @ =gUnknown_02023A62 + adds r0, r1 + ldrh r0, [r0] + bl BufferStringBattle + ldr r0, _08039D1C @ =gUnknown_03004210 + ldr r1, _08039D20 @ =gDisplayedStringBattle + movs r2, 0xF + str r2, [sp] + movs r2, 0x90 + movs r3, 0x2 + bl sub_8002EB0 + ldr r1, _08039D24 @ =gBattleBankFunc + ldrb r0, [r4] + lsls r0, 2 + adds r0, r1 + ldr r1, _08039D28 @ =sub_8037C2C + str r1, [r0] + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08039D0C: .4byte gUnknown_030042A4 +_08039D10: .4byte gUnknown_030042A0 +_08039D14: .4byte gActiveBank +_08039D18: .4byte gUnknown_02023A62 +_08039D1C: .4byte gUnknown_03004210 +_08039D20: .4byte gDisplayedStringBattle +_08039D24: .4byte gBattleBankFunc +_08039D28: .4byte sub_8037C2C + thumb_func_end sub_8039CC8 + + thumb_func_start sub_8039D2C +sub_8039D2C: @ 8039D2C + push {lr} + bl dp01_tbl4_exec_completed + pop {r0} + bx r0 + thumb_func_end sub_8039D2C + + thumb_func_start sub_8039D38 +sub_8039D38: @ 8039D38 + push {lr} + bl dp01_tbl4_exec_completed + pop {r0} + bx r0 + thumb_func_end sub_8039D38 + + thumb_func_start sub_8039D44 +sub_8039D44: @ 8039D44 + push {lr} + bl dp01_tbl4_exec_completed + pop {r0} + bx r0 + thumb_func_end sub_8039D44 + + thumb_func_start sub_8039D50 +sub_8039D50: @ 8039D50 + push {lr} + bl dp01_tbl4_exec_completed + pop {r0} + bx r0 + thumb_func_end sub_8039D50 + + thumb_func_start sub_8039D5C +sub_8039D5C: @ 8039D5C + push {lr} + bl dp01_tbl4_exec_completed + pop {r0} + bx r0 + thumb_func_end sub_8039D5C + + thumb_func_start sub_8039D68 +sub_8039D68: @ 8039D68 + push {lr} + bl dp01_tbl4_exec_completed + pop {r0} + bx r0 + thumb_func_end sub_8039D68 + + thumb_func_start sub_8039D74 +sub_8039D74: @ 8039D74 + push {lr} + bl dp01_tbl4_exec_completed + pop {r0} + bx r0 + thumb_func_end sub_8039D74 + + thumb_func_start sub_8039D80 +sub_8039D80: @ 8039D80 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x4 + movs r0, 0 + bl load_gfxc_health_bar + ldr r3, _08039DF8 @ =gBattleBufferA + ldr r0, _08039DFC @ =gActiveBank + mov r9, r0 + ldrb r4, [r0] + lsls r2, r4, 9 + adds r0, r3, 0x2 + adds r0, r2, r0 + ldrb r1, [r0] + adds r3, 0x3 + adds r2, r3 + ldrb r0, [r2] + lsls r0, 8 + orrs r1, r0 + lsls r1, 16 + asrs r7, r1, 16 + ldr r0, _08039E00 @ =0x00007fff + cmp r7, r0 + beq _08039E10 + ldr r6, _08039E04 @ =gBattlePartyID + lsls r0, r4, 1 + adds r0, r6 + ldrh r0, [r0] + movs r5, 0x64 + muls r0, r5 + ldr r4, _08039E08 @ =gEnemyParty + adds r0, r4 + movs r1, 0x3A + bl GetMonData + mov r8, r0 + mov r1, r9 + ldrb r0, [r1] + lsls r0, 1 + adds r0, r6 + ldrh r0, [r0] + muls r0, r5 + adds r0, r4 + movs r1, 0x39 + bl GetMonData + adds r3, r0, 0 + mov r1, r9 + ldrb r0, [r1] + ldr r1, _08039E0C @ =gHealthboxIDs + adds r1, r0, r1 + ldrb r1, [r1] + str r7, [sp] + mov r2, r8 + bl sub_8043D84 + b _08039E3A + .align 2, 0 +_08039DF8: .4byte gBattleBufferA +_08039DFC: .4byte gActiveBank +_08039E00: .4byte 0x00007fff +_08039E04: .4byte gBattlePartyID +_08039E08: .4byte gEnemyParty +_08039E0C: .4byte gHealthboxIDs +_08039E10: + ldr r1, _08039E58 @ =gBattlePartyID + lsls r0, r4, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _08039E5C @ =gEnemyParty + adds r0, r1 + movs r1, 0x3A + bl GetMonData + adds r2, r0, 0 + mov r1, r9 + ldrb r0, [r1] + ldr r1, _08039E60 @ =gHealthboxIDs + adds r1, r0, r1 + ldrb r1, [r1] + str r7, [sp] + movs r3, 0 + bl sub_8043D84 +_08039E3A: + ldr r1, _08039E64 @ =gBattleBankFunc + ldr r0, _08039E68 @ =gActiveBank + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r1, _08039E6C @ =sub_8037B24 + str r1, [r0] + add sp, 0x4 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08039E58: .4byte gBattlePartyID +_08039E5C: .4byte gEnemyParty +_08039E60: .4byte gHealthboxIDs +_08039E64: .4byte gBattleBankFunc +_08039E68: .4byte gActiveBank +_08039E6C: .4byte sub_8037B24 + thumb_func_end sub_8039D80 + + thumb_func_start sub_8039E70 +sub_8039E70: @ 8039E70 + push {lr} + bl dp01_tbl4_exec_completed + pop {r0} + bx r0 + thumb_func_end sub_8039E70 + + thumb_func_start sub_8039E7C +sub_8039E7C: @ 8039E7C + push {r4,lr} + ldr r4, _08039ED4 @ =gActiveBank + ldrb r0, [r4] + bl mplay_80342A4 + lsls r0, 24 + cmp r0, 0 + bne _08039ECC + ldr r0, _08039ED8 @ =gHealthboxIDs + ldrb r1, [r4] + adds r0, r1, r0 + ldrb r0, [r0] + ldr r2, _08039EDC @ =gBattlePartyID + lsls r1, 1 + adds r1, r2 + ldrh r2, [r1] + movs r1, 0x64 + muls r1, r2 + ldr r2, _08039EE0 @ =gEnemyParty + adds r1, r2 + movs r2, 0x9 + bl sub_8045A5C + ldrb r0, [r4] + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + ldr r0, _08039EE4 @ =0x02017810 + adds r1, r0 + ldrb r2, [r1] + movs r0, 0x11 + negs r0, r0 + ands r0, r2 + strb r0, [r1] + ldr r1, _08039EE8 @ =gBattleBankFunc + ldrb r0, [r4] + lsls r0, 2 + adds r0, r1 + ldr r1, _08039EEC @ =sub_8037FAC + str r1, [r0] +_08039ECC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08039ED4: .4byte gActiveBank +_08039ED8: .4byte gHealthboxIDs +_08039EDC: .4byte gBattlePartyID +_08039EE0: .4byte gEnemyParty +_08039EE4: .4byte 0x02017810 +_08039EE8: .4byte gBattleBankFunc +_08039EEC: .4byte sub_8037FAC + thumb_func_end sub_8039E7C + + thumb_func_start sub_8039EF0 +sub_8039EF0: @ 8039EF0 + push {r4,r5,lr} + ldr r5, _08039F48 @ =gActiveBank + ldrb r0, [r5] + bl mplay_80342A4 + lsls r0, 24 + cmp r0, 0 + bne _08039F40 + ldr r4, _08039F4C @ =gBattleBufferA + ldrb r3, [r5] + lsls r3, 9 + adds r0, r4, 0x1 + adds r0, r3, r0 + ldrb r0, [r0] + adds r1, r4, 0x2 + adds r1, r3, r1 + ldrb r1, [r1] + adds r2, r4, 0x3 + adds r2, r3, r2 + ldrb r2, [r2] + lsls r2, 8 + orrs r1, r2 + adds r2, r4, 0x4 + adds r2, r3, r2 + ldrb r2, [r2] + lsls r2, 16 + orrs r1, r2 + adds r4, 0x5 + adds r3, r4 + ldrb r2, [r3] + lsls r2, 24 + orrs r1, r2 + bl move_anim_start_t2_for_situation + ldr r1, _08039F50 @ =gBattleBankFunc + ldrb r0, [r5] + lsls r0, 2 + adds r0, r1 + ldr r1, _08039F54 @ =sub_8037FAC + str r1, [r0] +_08039F40: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08039F48: .4byte gActiveBank +_08039F4C: .4byte gBattleBufferA +_08039F50: .4byte gBattleBankFunc +_08039F54: .4byte sub_8037FAC + thumb_func_end sub_8039EF0 + + thumb_func_start sub_8039F58 +sub_8039F58: @ 8039F58 + push {lr} + bl dp01_tbl4_exec_completed + pop {r0} + bx r0 + thumb_func_end sub_8039F58 + + thumb_func_start sub_8039F64 +sub_8039F64: @ 8039F64 + push {lr} + bl dp01_tbl4_exec_completed + pop {r0} + bx r0 + thumb_func_end sub_8039F64 + + thumb_func_start sub_8039F70 +sub_8039F70: @ 8039F70 + push {lr} + bl dp01_tbl4_exec_completed + pop {r0} + bx r0 + thumb_func_end sub_8039F70 + + thumb_func_start sub_8039F7C +sub_8039F7C: @ 8039F7C + push {lr} + bl dp01_tbl4_exec_completed + pop {r0} + bx r0 + thumb_func_end sub_8039F7C + + thumb_func_start sub_8039F88 +sub_8039F88: @ 8039F88 + push {lr} + bl dp01_tbl4_exec_completed + pop {r0} + bx r0 + thumb_func_end sub_8039F88 + + thumb_func_start sub_8039F94 +sub_8039F94: @ 8039F94 + push {lr} + bl dp01_tbl4_exec_completed + pop {r0} + bx r0 + thumb_func_end sub_8039F94 + + thumb_func_start sub_8039FA0 +sub_8039FA0: @ 8039FA0 + push {lr} + bl dp01_tbl4_exec_completed + pop {r0} + bx r0 + thumb_func_end sub_8039FA0 + + thumb_func_start sub_8039FAC +sub_8039FAC: @ 8039FAC + push {lr} + bl dp01_tbl4_exec_completed + pop {r0} + bx r0 + thumb_func_end sub_8039FAC + + thumb_func_start sub_8039FB8 +sub_8039FB8: @ 8039FB8 + push {lr} + bl dp01_tbl4_exec_completed + pop {r0} + bx r0 + thumb_func_end sub_8039FB8 + + thumb_func_start sub_8039FC4 +sub_8039FC4: @ 8039FC4 + push {lr} + ldr r2, _08039FDC @ =gUnknown_020238C8 + ldrb r1, [r2] + movs r0, 0x80 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + bl dp01_tbl4_exec_completed + pop {r0} + bx r0 + .align 2, 0 +_08039FDC: .4byte gUnknown_020238C8 + thumb_func_end sub_8039FC4 + + thumb_func_start sub_8039FE0 +sub_8039FE0: @ 8039FE0 + push {lr} + ldr r3, _0803A00C @ =gUnknown_020238C8 + ldr r1, _0803A010 @ =gBattleBufferA + ldr r0, _0803A014 @ =gActiveBank + ldrb r0, [r0] + lsls r0, 9 + adds r1, 0x1 + adds r0, r1 + ldrb r0, [r0] + movs r1, 0x7F + ands r1, r0 + ldrb r2, [r3] + movs r0, 0x80 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + bl dp01_tbl4_exec_completed + pop {r0} + bx r0 + .align 2, 0 +_0803A00C: .4byte gUnknown_020238C8 +_0803A010: .4byte gBattleBufferA +_0803A014: .4byte gActiveBank + thumb_func_end sub_8039FE0 + + thumb_func_start sub_803A018 +sub_803A018: @ 803A018 + push {lr} + ldr r2, _0803A02C @ =gUnknown_020238C8 + ldrb r1, [r2] + movs r0, 0x7F + ands r0, r1 + strb r0, [r2] + bl dp01_tbl4_exec_completed + pop {r0} + bx r0 + .align 2, 0 +_0803A02C: .4byte gUnknown_020238C8 + thumb_func_end sub_803A018 + + thumb_func_start sub_803A030 +sub_803A030: @ 803A030 + push {lr} + ldr r3, _0803A054 @ =gUnknown_020238C8 + ldr r1, [r3] + lsls r1, 24 + lsrs r1, 31 + movs r0, 0x1 + eors r1, r0 + lsls r1, 7 + ldrb r2, [r3] + movs r0, 0x7F + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + bl dp01_tbl4_exec_completed + pop {r0} + bx r0 + .align 2, 0 +_0803A054: .4byte gUnknown_020238C8 + thumb_func_end sub_803A030 + + thumb_func_start dp01t_29_4_blink +dp01t_29_4_blink: @ 803A058 + push {r4,lr} + ldr r3, _0803A080 @ =gSprites + ldr r2, _0803A084 @ =gObjectBankIDs + ldr r4, _0803A088 @ =gActiveBank + ldrb r0, [r4] + adds r0, r2 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + adds r0, 0x3E + ldrb r0, [r0] + lsls r0, 29 + cmp r0, 0 + bge _0803A08C + bl dp01_tbl4_exec_completed + b _0803A0B6 + .align 2, 0 +_0803A080: .4byte gSprites +_0803A084: .4byte gObjectBankIDs +_0803A088: .4byte gActiveBank +_0803A08C: + ldr r1, _0803A0BC @ =gDoingBattleAnim + movs r0, 0x1 + strb r0, [r1] + ldrb r0, [r4] + adds r0, r2 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + movs r1, 0 + strh r1, [r0, 0x30] + ldrb r0, [r4] + bl sub_8047858 + ldr r1, _0803A0C0 @ =gBattleBankFunc + ldrb r0, [r4] + lsls r0, 2 + adds r0, r1 + ldr r1, _0803A0C4 @ =dp01t_0F_4_move_anim + str r1, [r0] +_0803A0B6: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0803A0BC: .4byte gDoingBattleAnim +_0803A0C0: .4byte gBattleBankFunc +_0803A0C4: .4byte dp01t_0F_4_move_anim + thumb_func_end dp01t_29_4_blink + + thumb_func_start sub_803A0C8 +sub_803A0C8: @ 803A0C8 + push {lr} + bl dp01_tbl4_exec_completed + pop {r0} + bx r0 + thumb_func_end sub_803A0C8 + + thumb_func_start sub_803A0D4 +sub_803A0D4: @ 803A0D4 + push {r4,lr} + ldr r4, _0803A110 @ =gActiveBank + ldrb r0, [r4] + bl GetBankSide + lsls r0, 24 + movs r3, 0x3F + cmp r0, 0 + bne _0803A0E8 + movs r3, 0xC0 +_0803A0E8: + ldr r2, _0803A114 @ =gBattleBufferA + ldrb r1, [r4] + lsls r1, 9 + adds r0, r2, 0x1 + adds r0, r1, r0 + ldrb r0, [r0] + adds r2, 0x2 + adds r1, r2 + ldrb r1, [r1] + lsls r1, 8 + orrs r0, r1 + lsls r1, r3, 24 + asrs r1, 24 + bl PlaySE12WithPanning + bl dp01_tbl4_exec_completed + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0803A110: .4byte gActiveBank +_0803A114: .4byte gBattleBufferA + thumb_func_end sub_803A0D4 + + thumb_func_start sub_803A118 +sub_803A118: @ 803A118 + push {lr} + ldr r2, _0803A140 @ =gBattleBufferA + ldr r0, _0803A144 @ =gActiveBank + ldrb r1, [r0] + lsls r1, 9 + adds r0, r2, 0x1 + adds r0, r1, r0 + ldrb r0, [r0] + adds r2, 0x2 + adds r1, r2 + ldrb r1, [r1] + lsls r1, 8 + orrs r0, r1 + bl PlayFanfare + bl dp01_tbl4_exec_completed + pop {r0} + bx r0 + .align 2, 0 +_0803A140: .4byte gBattleBufferA +_0803A144: .4byte gActiveBank + thumb_func_end sub_803A118 + + thumb_func_start sub_803A148 +sub_803A148: @ 803A148 + push {lr} + ldr r1, _0803A178 @ =gBattlePartyID + ldr r0, _0803A17C @ =gActiveBank + ldrb r0, [r0] + lsls r0, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _0803A180 @ =gEnemyParty + adds r0, r1 + movs r1, 0xB + bl GetMonData + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x19 + movs r2, 0x5 + bl PlayCry3 + bl dp01_tbl4_exec_completed + pop {r0} + bx r0 + .align 2, 0 +_0803A178: .4byte gBattlePartyID +_0803A17C: .4byte gActiveBank +_0803A180: .4byte gEnemyParty + thumb_func_end sub_803A148 + + thumb_func_start dp01t_2E_4_battle_intro +dp01t_2E_4_battle_intro: @ 803A184 + push {lr} + ldr r1, _0803A1AC @ =gBattleBufferA + ldr r0, _0803A1B0 @ =gActiveBank + ldrb r0, [r0] + lsls r0, 9 + adds r1, 0x1 + adds r0, r1 + ldrb r0, [r0] + bl sub_80E43C0 + ldr r2, _0803A1B4 @ =gUnknown_02024DE8 + ldrh r0, [r2] + movs r1, 0x1 + orrs r0, r1 + strh r0, [r2] + bl dp01_tbl4_exec_completed + pop {r0} + bx r0 + .align 2, 0 +_0803A1AC: .4byte gBattleBufferA +_0803A1B0: .4byte gActiveBank +_0803A1B4: .4byte gUnknown_02024DE8 + thumb_func_end dp01t_2E_4_battle_intro + + thumb_func_start sub_803A1B8 +sub_803A1B8: @ 803A1B8 + push {r4-r6,lr} + ldr r5, _0803A294 @ =gObjectBankIDs + ldr r6, _0803A298 @ =gActiveBank + ldrb r0, [r6] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r4, _0803A29C @ =gSprites + adds r0, r4 + bl oamt_add_pos2_onto_pos1 + ldrb r0, [r6] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + movs r1, 0x23 + strh r1, [r0, 0x2E] + ldrb r0, [r6] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + movs r1, 0x8C + lsls r1, 1 + strh r1, [r0, 0x32] + ldrb r0, [r6] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrh r1, [r0, 0x22] + strh r1, [r0, 0x36] + ldrb r0, [r6] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r1, r4, 0 + adds r1, 0x1C + adds r0, r1 + ldr r1, _0803A2A0 @ =sub_8078B34 + str r1, [r0] + ldrb r0, [r6] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldr r1, _0803A2A4 @ =sub_803A3A8 + bl oamt_set_x3A_32 + ldr r0, _0803A2A8 @ =sub_803A2C4 + movs r1, 0x5 + bl CreateTask + lsls r0, 24 + lsrs r0, 24 + ldr r4, _0803A2AC @ =gTasks + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r4 + ldrb r0, [r6] + strh r0, [r1, 0x8] + ldrb r3, [r6] + lsls r0, r3, 1 + adds r0, r3 + lsls r0, 2 + ldr r2, _0803A2B0 @ =0x02017810 + adds r0, r2 + ldrb r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0803A276 + ldr r0, _0803A2B4 @ =gUnknown_02024E68 + adds r0, r3, r0 + ldrb r1, [r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r4 + ldr r1, _0803A2B8 @ =sub_8044CA0 + str r1, [r0] +_0803A276: + adds r2, 0x30 + ldrb r0, [r2, 0x9] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2, 0x9] + ldr r1, _0803A2BC @ =gBattleBankFunc + ldrb r0, [r6] + lsls r0, 2 + adds r0, r1 + ldr r1, _0803A2C0 @ =nullsub_47 + str r1, [r0] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0803A294: .4byte gObjectBankIDs +_0803A298: .4byte gActiveBank +_0803A29C: .4byte gSprites +_0803A2A0: .4byte sub_8078B34 +_0803A2A4: .4byte sub_803A3A8 +_0803A2A8: .4byte sub_803A2C4 +_0803A2AC: .4byte gTasks +_0803A2B0: .4byte 0x02017810 +_0803A2B4: .4byte gUnknown_02024E68 +_0803A2B8: .4byte sub_8044CA0 +_0803A2BC: .4byte gBattleBankFunc +_0803A2C0: .4byte nullsub_47 + thumb_func_end sub_803A1B8 + + thumb_func_start sub_803A2C4 +sub_803A2C4: @ 803A2C4 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + ldr r7, _0803A31C @ =gActiveBank + ldrb r0, [r7] + mov r9, r0 + ldr r1, _0803A320 @ =gTasks + mov r2, r8 + lsls r0, r2, 2 + add r0, r8 + lsls r0, 3 + adds r0, r1 + ldrh r0, [r0, 0x8] + strb r0, [r7] + bl IsDoubleBattle + lsls r0, 24 + cmp r0, 0 + beq _0803A2FE + ldr r0, _0803A324 @ =gBattleTypeFlags + ldrh r1, [r0] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _0803A330 +_0803A2FE: + ldr r0, _0803A328 @ =gBattleBufferA + ldrb r1, [r7] + lsls r2, r1, 9 + adds r0, 0x1 + adds r2, r0 + ldr r0, _0803A32C @ =gBattlePartyID + lsls r1, 1 + adds r1, r0 + ldrh r0, [r1] + strb r0, [r2] + ldrb r0, [r7] + movs r1, 0 + bl sub_8039430 + b _0803A370 + .align 2, 0 +_0803A31C: .4byte gActiveBank +_0803A320: .4byte gTasks +_0803A324: .4byte gBattleTypeFlags +_0803A328: .4byte gBattleBufferA +_0803A32C: .4byte gBattlePartyID +_0803A330: + ldr r4, _0803A394 @ =gBattleBufferA + ldrb r0, [r7] + lsls r1, r0, 9 + adds r4, 0x1 + adds r1, r4 + ldr r6, _0803A398 @ =gBattlePartyID + lsls r0, 1 + adds r0, r6 + ldrh r0, [r0] + strb r0, [r1] + ldrb r0, [r7] + movs r1, 0 + bl sub_8039430 + ldrb r0, [r7] + movs r5, 0x2 + eors r0, r5 + strb r0, [r7] + ldrb r0, [r7] + lsls r1, r0, 9 + adds r1, r4 + lsls r0, 1 + adds r0, r6 + ldrh r0, [r0] + strb r0, [r1] + ldrb r0, [r7] + movs r1, 0 + bl sub_8039430 + ldrb r0, [r7] + eors r0, r5 + strb r0, [r7] +_0803A370: + ldr r1, _0803A39C @ =gBattleBankFunc + ldr r2, _0803A3A0 @ =gActiveBank + ldrb r0, [r2] + lsls r0, 2 + adds r0, r1 + ldr r1, _0803A3A4 @ =sub_8037840 + str r1, [r0] + mov r0, r9 + strb r0, [r2] + mov r0, r8 + bl DestroyTask + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0803A394: .4byte gBattleBufferA +_0803A398: .4byte gBattlePartyID +_0803A39C: .4byte gBattleBankFunc +_0803A3A0: .4byte gActiveBank +_0803A3A4: .4byte sub_8037840 + thumb_func_end sub_803A2C4 + + thumb_func_start sub_803A3A8 +sub_803A3A8: @ 803A3A8 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x6] + bl sub_8031B74 + ldrh r0, [r4, 0x38] + ldr r1, _0803A3D4 @ =0x000003ff + ands r1, r0 + ldrh r2, [r4, 0x4] + ldr r0, _0803A3D8 @ =0xfffffc00 + ands r0, r2 + orrs r0, r1 + strh r0, [r4, 0x4] + adds r0, r4, 0 + bl FreeSpriteOamMatrix + adds r0, r4, 0 + bl DestroySprite + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0803A3D4: .4byte 0x000003ff +_0803A3D8: .4byte 0xfffffc00 + thumb_func_end sub_803A3A8 + + thumb_func_start sub_803A3DC +sub_803A3DC: @ 803A3DC + push {r4-r6,lr} + ldr r1, _0803A404 @ =gBattleBufferA + ldr r0, _0803A408 @ =gActiveBank + ldrb r2, [r0] + lsls r0, r2, 9 + adds r1, 0x1 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + beq _0803A40C + adds r0, r2, 0 + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + bne _0803A40C + bl dp01_tbl4_exec_completed + b _0803A4C6 + .align 2, 0 +_0803A404: .4byte gBattleBufferA +_0803A408: .4byte gActiveBank +_0803A40C: + ldr r3, _0803A45C @ =gActiveBank + ldrb r1, [r3] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + ldr r4, _0803A460 @ =0x02017810 + adds r0, r4 + ldrb r1, [r0] + movs r2, 0x1 + orrs r1, r2 + strb r1, [r0] + ldr r1, _0803A464 @ =gBattleBufferA + ldrb r2, [r3] + lsls r0, r2, 9 + adds r1, 0x2 + adds r0, r1 + ldrb r0, [r0] + adds r6, r3, 0 + cmp r0, 0 + beq _0803A470 + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + adds r3, r0, r4 + ldrb r2, [r3, 0x1] + lsls r1, r2, 26 + lsrs r0, r1, 27 + cmp r0, 0x1 + bhi _0803A468 + adds r0, 0x1 + movs r1, 0x1F + ands r0, r1 + lsls r0, 1 + movs r1, 0x3F + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, 0x1] + b _0803A4C6 + .align 2, 0 +_0803A45C: .4byte gActiveBank +_0803A460: .4byte 0x02017810 +_0803A464: .4byte gBattleBufferA +_0803A468: + movs r0, 0x3F + negs r0, r0 + ands r0, r2 + strb r0, [r3, 0x1] +_0803A470: + adds r5, r6, 0 + ldrb r0, [r5] + lsls r3, r0, 9 + ldr r4, _0803A4CC @ =gUnknown_02023A64 + adds r1, r3, r4 + subs r2, r4, 0x3 + adds r2, r3, r2 + ldrb r2, [r2] + subs r4, 0x2 + adds r3, r4 + ldrb r3, [r3] + bl sub_8044804 + ldr r2, _0803A4D0 @ =gUnknown_02024E68 + ldrb r1, [r5] + adds r1, r2 + movs r2, 0 + strb r0, [r1] + ldrb r1, [r5] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + ldr r3, _0803A4D4 @ =0x02017810 + adds r0, r3 + strb r2, [r0, 0x5] + ldrb r1, [r5] + lsls r0, r1, 9 + adds r0, r4 + ldrb r0, [r0] + cmp r0, 0 + beq _0803A4BA + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + movs r1, 0x5D + strb r1, [r0, 0x5] +_0803A4BA: + ldr r0, _0803A4D8 @ =gBattleBankFunc + ldrb r1, [r6] + lsls r1, 2 + adds r1, r0 + ldr r0, _0803A4DC @ =sub_803A4E0 + str r0, [r1] +_0803A4C6: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0803A4CC: .4byte gUnknown_02023A64 +_0803A4D0: .4byte gUnknown_02024E68 +_0803A4D4: .4byte 0x02017810 +_0803A4D8: .4byte gBattleBankFunc +_0803A4DC: .4byte sub_803A4E0 + thumb_func_end sub_803A3DC + + thumb_func_start sub_803A4E0 +sub_803A4E0: @ 803A4E0 + push {r4,lr} + ldr r4, _0803A518 @ =gActiveBank + ldrb r1, [r4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + ldr r3, _0803A51C @ =0x02017810 + adds r0, r3 + ldrb r1, [r0, 0x5] + adds r2, r1, 0x1 + strb r2, [r0, 0x5] + lsls r1, 24 + lsrs r1, 24 + cmp r1, 0x5C + bls _0803A510 + ldrb r0, [r4] + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + adds r1, r3 + movs r0, 0 + strb r0, [r1, 0x5] + bl dp01_tbl4_exec_completed +_0803A510: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0803A518: .4byte gActiveBank +_0803A51C: .4byte 0x02017810 + thumb_func_end sub_803A4E0 + + thumb_func_start sub_803A520 +sub_803A520: @ 803A520 + push {lr} + ldr r0, _0803A558 @ =gActiveBank + ldrb r3, [r0] + lsls r0, r3, 1 + adds r0, r3 + lsls r0, 2 + ldr r1, _0803A55C @ =0x02017810 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0803A54E + ldr r2, _0803A560 @ =gTasks + ldr r0, _0803A564 @ =gUnknown_02024E68 + adds r0, r3, r0 + ldrb r1, [r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r2 + ldr r1, _0803A568 @ =sub_8044CA0 + str r1, [r0] +_0803A54E: + bl dp01_tbl4_exec_completed + pop {r0} + bx r0 + .align 2, 0 +_0803A558: .4byte gActiveBank +_0803A55C: .4byte 0x02017810 +_0803A560: .4byte gTasks +_0803A564: .4byte gUnknown_02024E68 +_0803A568: .4byte sub_8044CA0 + thumb_func_end sub_803A520 + + thumb_func_start sub_803A56C +sub_803A56C: @ 803A56C + push {lr} + bl dp01_tbl4_exec_completed + pop {r0} + bx r0 + thumb_func_end sub_803A56C + + thumb_func_start sub_803A578 +sub_803A578: @ 803A578 + push {r4,lr} + ldr r4, _0803A5C8 @ =gActiveBank + ldrb r0, [r4] + bl sub_8078874 + lsls r0, 24 + cmp r0, 0 + beq _0803A5BE + ldr r3, _0803A5CC @ =gSprites + ldr r0, _0803A5D0 @ =gObjectBankIDs + ldrb r1, [r4] + adds r0, r1, r0 + ldrb r0, [r0] + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r2, r3 + ldr r0, _0803A5D4 @ =gBattleBufferA + lsls r1, 9 + adds r0, 0x1 + adds r1, r0 + adds r2, 0x3E + movs r0, 0x1 + ldrb r1, [r1] + ands r1, r0 + lsls r1, 2 + ldrb r3, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2] + ldrb r0, [r4] + bl sub_8031F88 +_0803A5BE: + bl dp01_tbl4_exec_completed + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0803A5C8: .4byte gActiveBank +_0803A5CC: .4byte gSprites +_0803A5D0: .4byte gObjectBankIDs +_0803A5D4: .4byte gBattleBufferA + thumb_func_end sub_803A578 + + thumb_func_start bx_exec_buffer_A_ch0_tbl4 +bx_exec_buffer_A_ch0_tbl4: @ 803A5D8 + push {r4-r6,lr} + sub sp, 0x4 + ldr r6, _0803A61C @ =gActiveBank + ldrb r0, [r6] + bl mplay_80342A4 + lsls r0, 24 + cmp r0, 0 + bne _0803A630 + ldr r5, _0803A620 @ =gBattleBufferA + ldrb r2, [r6] + lsls r1, r2, 9 + adds r0, r5, 0x1 + adds r0, r1, r0 + ldrb r3, [r0] + adds r0, r5, 0x2 + adds r0, r1, r0 + ldrb r4, [r0] + adds r5, 0x3 + adds r1, r5 + ldrb r0, [r1] + lsls r0, 8 + orrs r4, r0 + str r4, [sp] + adds r0, r2, 0 + adds r1, r2, 0 + bl move_anim_start_t3 + lsls r0, 24 + cmp r0, 0 + beq _0803A624 + bl dp01_tbl4_exec_completed + b _0803A630 + .align 2, 0 +_0803A61C: .4byte gActiveBank +_0803A620: .4byte gBattleBufferA +_0803A624: + ldr r0, _0803A638 @ =gBattleBankFunc + ldrb r1, [r6] + lsls r1, 2 + adds r1, r0 + ldr r0, _0803A63C @ =sub_8037FD8 + str r0, [r1] +_0803A630: + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0803A638: .4byte gBattleBankFunc +_0803A63C: .4byte sub_8037FD8 + thumb_func_end bx_exec_buffer_A_ch0_tbl4 + + thumb_func_start sub_803A640 +sub_803A640: @ 803A640 + push {lr} + bl dp01_tbl4_exec_completed + pop {r0} + bx r0 + thumb_func_end sub_803A640 + + thumb_func_start sub_803A64C +sub_803A64C: @ 803A64C + push {lr} + bl dp01_tbl4_exec_completed + pop {r0} + bx r0 + thumb_func_end sub_803A64C + + thumb_func_start sub_803A658 +sub_803A658: @ 803A658 + push {lr} + ldr r1, _0803A674 @ =gBattleBufferA + ldr r0, _0803A678 @ =gActiveBank + ldrb r0, [r0] + lsls r0, 9 + adds r1, 0x1 + adds r0, r1 + ldrb r2, [r0] + cmp r2, 0x3 + bne _0803A680 + ldr r0, _0803A67C @ =gBattleOutcome + strb r2, [r0] + b _0803A688 + .align 2, 0 +_0803A674: .4byte gBattleBufferA +_0803A678: .4byte gActiveBank +_0803A67C: .4byte gBattleOutcome +_0803A680: + ldr r0, _0803A6AC @ =gBattleOutcome + movs r1, 0x3 + eors r1, r2 + strb r1, [r0] +_0803A688: + movs r0, 0x5 + bl FadeOutMapMusic + movs r0, 0x3 + bl BeginFastPaletteFade + bl dp01_tbl4_exec_completed + ldr r1, _0803A6B0 @ =gBattleBankFunc + ldr r0, _0803A6B4 @ =gActiveBank + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r1, _0803A6B8 @ =sub_8037F34 + str r1, [r0] + pop {r0} + bx r0 + .align 2, 0 +_0803A6AC: .4byte gBattleOutcome +_0803A6B0: .4byte gBattleBankFunc +_0803A6B4: .4byte gActiveBank +_0803A6B8: .4byte sub_8037F34 + thumb_func_end sub_803A658 + + thumb_func_start nullsub_48 +nullsub_48: @ 803A6BC + bx lr + thumb_func_end nullsub_48 + + .align 2, 0 @ Don't pad with nop. |