.include "asm/macros.inc" .include "constants/constants.inc" .syntax unified .text thumb_func_start ExecuteTableBasedItemEffect_ ExecuteTableBasedItemEffect_: @ 80413C0 push {r4,lr} sub sp, 0x4 lsls r1, 16 lsrs r1, 16 lsls r2, 24 lsrs r2, 24 lsls r3, 24 lsrs r3, 24 movs r4, 0 str r4, [sp] bl sub_80413E4 lsls r0, 24 lsrs r0, 24 add sp, 0x4 pop {r4} pop {r1} bx r1 thumb_func_end ExecuteTableBasedItemEffect_ thumb_func_start sub_80413E4 sub_80413E4: @ 80413E4 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x3C mov r8, r0 ldr r0, [sp, 0x5C] lsls r1, 16 lsrs r1, 16 str r1, [sp, 0x8] lsls r2, 24 lsrs r2, 24 str r2, [sp, 0xC] lsls r3, 24 lsrs r3, 24 str r3, [sp, 0x10] lsls r0, 24 lsrs r0, 24 str r0, [sp, 0x14] movs r0, 0x1 str r0, [sp, 0x1C] movs r1, 0x6 str r1, [sp, 0x24] movs r2, 0 str r2, [sp, 0x2C] movs r3, 0x4 str r3, [sp, 0x34] mov r0, r8 movs r1, 0xC bl GetMonData lsls r0, 16 lsrs r0, 16 cmp r0, 0xAF bne _08041474 ldr r0, _08041450 @ =gMain ldr r4, _08041454 @ =0x00000439 adds r0, r4 ldrb r1, [r0] movs r0, 0x2 ands r0, r1 cmp r0, 0 beq _08041460 ldr r2, _08041458 @ =gUnknown_2023F54 ldr r0, _0804145C @ =gUnknown_2024004 ldrb r1, [r0] lsls r0, r1, 3 subs r0, r1 lsls r0, 2 adds r0, r2 ldrb r0, [r0, 0x7] b _0804147C .align 2, 0 _08041450: .4byte gMain _08041454: .4byte 0x00000439 _08041458: .4byte gUnknown_2023F54 _0804145C: .4byte gUnknown_2024004 _08041460: ldr r0, _0804146C @ =gSaveBlock1Ptr ldr r0, [r0] ldr r5, _08041470 @ =0x0000311a adds r0, r5 ldrb r0, [r0] b _0804147C .align 2, 0 _0804146C: .4byte gSaveBlock1Ptr _08041470: .4byte 0x0000311a _08041474: bl ItemId_GetHoldEffect lsls r0, 24 lsrs r0, 24 _0804147C: str r0, [sp, 0x30] ldr r1, _080414D8 @ =gUnknown_2023D6F ldr r0, _080414DC @ =gUnknown_2024004 ldrb r2, [r0] strb r2, [r1] ldr r0, _080414E0 @ =gMain ldr r1, _080414E4 @ =0x00000439 adds r0, r1 ldrb r1, [r0] movs r0, 0x2 ands r0, r1 lsls r0, 24 lsrs r1, r0, 24 cmp r1, 0 beq _0804151C ldr r0, _080414E8 @ =gActiveBattler strb r2, [r0] ldrb r0, [r0] bl GetBankSide lsls r0, 24 lsrs r0, 24 negs r1, r0 orrs r1, r0 lsrs r1, 31 str r1, [sp, 0x18] ldr r0, _080414EC @ =gUnknown_2023BCC ldr r4, [sp, 0x8] subs r4, 0xD ldrb r0, [r0] cmp r1, r0 bge _08041528 ldr r2, _080414F0 @ =gBattlerPartyIndexes lsls r0, r1, 1 adds r0, r2 ldrh r3, [r0] ldr r5, [sp, 0xC] lsls r0, r5, 16 lsrs r1, r0, 16 adds r5, r0, 0 cmp r3, r1 bne _080414F4 ldr r0, [sp, 0x18] str r0, [sp, 0x34] b _08041528 .align 2, 0 _080414D8: .4byte gUnknown_2023D6F _080414DC: .4byte gUnknown_2024004 _080414E0: .4byte gMain _080414E4: .4byte 0x00000439 _080414E8: .4byte gActiveBattler _080414EC: .4byte gUnknown_2023BCC _080414F0: .4byte gBattlerPartyIndexes _080414F4: ldr r1, [sp, 0x18] adds r1, 0x2 str r1, [sp, 0x18] ldr r0, _08041518 @ =gUnknown_2023BCC ldrb r0, [r0] cmp r1, r0 bge _08041528 lsls r0, r1, 1 adds r0, r2 ldrh r1, [r0] lsrs r0, r5, 16 cmp r1, r0 bne _080414F4 ldr r2, [sp, 0x18] lsls r0, r2, 24 lsrs r0, 24 str r0, [sp, 0x34] b _08041528 .align 2, 0 _08041518: .4byte gUnknown_2023BCC _0804151C: ldr r0, _08041544 @ =gActiveBattler strb r1, [r0] movs r3, 0x4 str r3, [sp, 0x34] ldr r4, [sp, 0x8] subs r4, 0xD _08041528: lsls r0, r4, 16 lsrs r0, 16 cmp r0, 0xA5 bhi _080415A8 ldr r1, _08041548 @ =gUnknown_82528BC lsls r0, r4, 2 adds r0, r1 ldr r0, [r0] cmp r0, 0 bne _0804154C ldr r4, [sp, 0x8] cmp r4, 0xAF beq _08041552 b _080415A8 .align 2, 0 _08041544: .4byte gActiveBattler _08041548: .4byte gUnknown_82528BC _0804154C: ldr r5, [sp, 0x8] cmp r5, 0xAF bne _080415AE _08041552: ldr r0, _08041574 @ =gMain ldr r1, _08041578 @ =0x00000439 adds r0, r1 ldrb r1, [r0] movs r0, 0x2 ands r0, r1 cmp r0, 0 beq _08041584 ldr r0, _0804157C @ =gActiveBattler ldrb r1, [r0] lsls r0, r1, 3 subs r0, r1 lsls r0, 2 ldr r1, _08041580 @ =gUnknown_2023F5C adds r0, r1 b _080415AE .align 2, 0 _08041574: .4byte gMain _08041578: .4byte 0x00000439 _0804157C: .4byte gActiveBattler _08041580: .4byte gUnknown_2023F5C _08041584: ldr r0, _08041590 @ =gSaveBlock1Ptr ldr r0, [r0] ldr r2, _08041594 @ =0x00003108 adds r2, r0, r2 str r2, [sp, 0x20] b _080415B0 .align 2, 0 _08041590: .4byte gSaveBlock1Ptr _08041594: .4byte 0x00003108 _08041598: mov r0, r8 movs r2, 0 ldr r3, [sp, 0xC] bl BeginEvolutionScene movs r0, 0 bl _08042394 _080415A8: movs r0, 0x1 bl _08042394 _080415AE: str r0, [sp, 0x20] _080415B0: movs r3, 0 str r3, [sp, 0x18] _080415B4: ldr r4, [sp, 0x18] cmp r4, 0x5 bls _080415BE bl _08042384 _080415BE: lsls r0, r4, 2 ldr r1, _080415C8 @ =_080415CC adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _080415C8: .4byte _080415CC .align 2, 0 _080415CC: .4byte _080415E4 .4byte _080416B0 .4byte _08041744 .4byte _080417D8 .4byte _080419B8 .4byte _08042056 _080415E4: ldr r5, [sp, 0x20] ldr r0, [sp, 0x18] adds r2, r5, r0 ldrb r1, [r2] movs r0, 0x80 ands r0, r1 adds r6, r2, 0 cmp r0, 0 beq _0804162C ldr r0, _0804169C @ =gMain ldr r1, _080416A0 @ =0x00000439 adds r0, r1 ldrb r1, [r0] movs r0, 0x2 ands r0, r1 cmp r0, 0 beq _0804162C ldr r2, [sp, 0x34] cmp r2, 0x4 beq _0804162C ldr r1, _080416A4 @ =gBattleMons movs r0, 0x58 muls r0, r2 adds r1, 0x50 adds r2, r0, r1 ldr r1, [r2] movs r0, 0xF0 lsls r0, 12 ands r0, r1 cmp r0, 0 beq _0804162C ldr r0, _080416A8 @ =0xfff0ffff ands r1, r0 str r1, [r2] movs r3, 0 str r3, [sp, 0x1C] _0804162C: ldrb r1, [r6] movs r0, 0x30 ands r0, r1 cmp r0, 0 beq _0804165A ldr r1, _080416A4 @ =gBattleMons ldr r0, _080416AC @ =gActiveBattler ldrb r2, [r0] movs r0, 0x58 muls r0, r2 adds r1, 0x50 adds r2, r0, r1 ldr r1, [r2] movs r3, 0x80 lsls r3, 13 adds r0, r1, 0 ands r0, r3 cmp r0, 0 bne _0804165A orrs r1, r3 str r1, [r2] movs r4, 0 str r4, [sp, 0x1C] _0804165A: ldrb r0, [r6] movs r3, 0xF ands r3, r0 cmp r3, 0 bne _08041668 bl _08042384 _08041668: ldr r6, _080416A4 @ =gBattleMons ldr r5, _080416AC @ =gActiveBattler ldrb r0, [r5] movs r4, 0x58 muls r0, r4 adds r1, r0, r6 ldrb r2, [r1, 0x19] movs r0, 0x19 ldrsb r0, [r1, r0] cmp r0, 0xB ble _08041682 bl _08042384 _08041682: adds r0, r2, r3 strb r0, [r1, 0x19] ldrb r0, [r5] muls r0, r4 adds r1, r0, r6 movs r0, 0x19 ldrsb r0, [r1, r0] cmp r0, 0xC bgt _08041696 b _0804198A _08041696: movs r0, 0xC strb r0, [r1, 0x19] b _0804198A .align 2, 0 _0804169C: .4byte gMain _080416A0: .4byte 0x00000439 _080416A4: .4byte gBattleMons _080416A8: .4byte 0xfff0ffff _080416AC: .4byte gActiveBattler _080416B0: ldr r0, [sp, 0x20] ldr r1, [sp, 0x18] adds r2, r0, r1 ldrb r1, [r2] movs r0, 0xF0 ands r0, r1 lsls r3, r0, 24 adds r6, r2, 0 cmp r3, 0 beq _080416F6 ldr r7, _0804173C @ =gBattleMons ldr r5, _08041740 @ =gActiveBattler ldrb r0, [r5] movs r4, 0x58 muls r0, r4 adds r1, r0, r7 ldrb r2, [r1, 0x1A] movs r0, 0x1A ldrsb r0, [r1, r0] cmp r0, 0xB bgt _080416F6 lsrs r0, r3, 28 adds r0, r2, r0 strb r0, [r1, 0x1A] ldrb r0, [r5] muls r0, r4 adds r1, r0, r7 movs r0, 0x1A ldrsb r0, [r1, r0] cmp r0, 0xC ble _080416F2 movs r0, 0xC strb r0, [r1, 0x1A] _080416F2: movs r2, 0 str r2, [sp, 0x1C] _080416F6: ldrb r0, [r6] movs r3, 0xF ands r3, r0 cmp r3, 0 bne _08041704 bl _08042384 _08041704: ldr r6, _0804173C @ =gBattleMons ldr r5, _08041740 @ =gActiveBattler ldrb r0, [r5] movs r4, 0x58 muls r0, r4 adds r1, r0, r6 ldrb r2, [r1, 0x1B] movs r0, 0x1B ldrsb r0, [r1, r0] cmp r0, 0xB ble _0804171E bl _08042384 _0804171E: adds r0, r2, r3 strb r0, [r1, 0x1B] ldrb r0, [r5] muls r0, r4 adds r1, r0, r6 movs r0, 0x1B ldrsb r0, [r1, r0] cmp r0, 0xC ble _08041734 movs r0, 0xC strb r0, [r1, 0x1B] _08041734: movs r3, 0 str r3, [sp, 0x1C] bl _08042384 .align 2, 0 _0804173C: .4byte gBattleMons _08041740: .4byte gActiveBattler _08041744: ldr r4, [sp, 0x20] ldr r5, [sp, 0x18] adds r2, r4, r5 ldrb r1, [r2] movs r0, 0xF0 ands r0, r1 lsls r3, r0, 24 adds r6, r2, 0 cmp r3, 0 beq _0804178A ldr r7, _080417D0 @ =gBattleMons ldr r5, _080417D4 @ =gActiveBattler ldrb r0, [r5] movs r4, 0x58 muls r0, r4 adds r1, r0, r7 ldrb r2, [r1, 0x1E] movs r0, 0x1E ldrsb r0, [r1, r0] cmp r0, 0xB bgt _0804178A lsrs r0, r3, 28 adds r0, r2, r0 strb r0, [r1, 0x1E] ldrb r0, [r5] muls r0, r4 adds r1, r0, r7 movs r0, 0x1E ldrsb r0, [r1, r0] cmp r0, 0xC ble _08041786 movs r0, 0xC strb r0, [r1, 0x1E] _08041786: movs r0, 0 str r0, [sp, 0x1C] _0804178A: ldrb r0, [r6] movs r3, 0xF ands r3, r0 cmp r3, 0 bne _08041798 bl _08042384 _08041798: ldr r6, _080417D0 @ =gBattleMons ldr r5, _080417D4 @ =gActiveBattler ldrb r0, [r5] movs r4, 0x58 muls r0, r4 adds r1, r0, r6 ldrb r2, [r1, 0x1C] movs r0, 0x1C ldrsb r0, [r1, r0] cmp r0, 0xB ble _080417B2 bl _08042384 _080417B2: adds r0, r2, r3 strb r0, [r1, 0x1C] ldrb r0, [r5] muls r0, r4 adds r1, r0, r6 movs r0, 0x1C ldrsb r0, [r1, r0] cmp r0, 0xC ble _080417C8 movs r0, 0xC strb r0, [r1, 0x1C] _080417C8: movs r1, 0 str r1, [sp, 0x1C] bl _08042384 .align 2, 0 _080417D0: .4byte gBattleMons _080417D4: .4byte gActiveBattler _080417D8: ldr r3, [sp, 0x20] ldr r4, [sp, 0x18] adds r2, r3, r4 ldrb r1, [r2] movs r0, 0x80 ands r0, r1 adds r6, r2, 0 cmp r0, 0 beq _08041820 ldr r5, _08041994 @ =gUnknown_2023DE4 ldr r4, _08041998 @ =gActiveBattler ldrb r0, [r4] bl GetBankSide lsls r0, 24 lsrs r0, 24 lsls r1, r0, 1 adds r1, r0 lsls r1, 2 adds r1, r5 ldrb r0, [r1, 0x4] cmp r0, 0 bne _08041820 ldrb r0, [r4] bl GetBankSide lsls r0, 24 lsrs r0, 24 lsls r1, r0, 1 adds r1, r0 lsls r1, 2 adds r1, r5 movs r0, 0x5 strb r0, [r1, 0x4] movs r5, 0 str r5, [sp, 0x1C] _08041820: ldrb r1, [r6] movs r0, 0x40 ands r0, r1 cmp r0, 0 beq _08041882 mov r0, r8 movs r1, 0x38 movs r2, 0 bl GetMonData cmp r0, 0x64 beq _08041882 ldr r5, _0804199C @ =gUnknown_8253AE4 mov r0, r8 movs r1, 0x38 movs r2, 0 bl GetMonData adds r4, r0, 0 mov r0, r8 movs r1, 0xB movs r2, 0 bl GetMonData adds r4, 0x1 lsls r4, 2 ldr r2, _080419A0 @ =gBaseStats lsls r1, r0, 3 subs r1, r0 lsls r1, 2 adds r1, r2 ldrb r1, [r1, 0x13] movs r0, 0xCA lsls r0, 1 muls r0, r1 adds r4, r0 adds r4, r5 ldr r0, [r4] str r0, [sp] mov r0, r8 movs r1, 0x19 mov r2, sp bl sub_804037C mov r0, r8 bl CalculateMonStats movs r0, 0 str r0, [sp, 0x1C] _08041882: ldrb r1, [r6] movs r0, 0x20 ands r0, r1 cmp r0, 0 beq _080418BE mov r0, r8 ldr r1, [sp, 0xC] movs r2, 0x7 ldr r3, [sp, 0x34] bl sub_80423A4 lsls r0, 24 cmp r0, 0 bne _080418BE ldr r1, [sp, 0x34] cmp r1, 0x4 beq _080418BA ldr r1, _080419A4 @ =gBattleMons movs r0, 0x58 ldr r3, [sp, 0x34] adds r2, r3, 0 muls r2, r0 adds r1, 0x50 adds r2, r1 ldr r0, [r2] ldr r1, _080419A8 @ =0xf7ffffff ands r0, r1 str r0, [r2] _080418BA: movs r4, 0 str r4, [sp, 0x1C] _080418BE: ldrb r1, [r6] movs r0, 0x10 ands r0, r1 cmp r0, 0 beq _080418DE ldr r2, _080419AC @ =0x00000f88 mov r0, r8 ldr r1, [sp, 0xC] ldr r3, [sp, 0x34] bl sub_80423A4 lsls r0, 24 cmp r0, 0 bne _080418DE movs r5, 0 str r5, [sp, 0x1C] _080418DE: ldrb r1, [r6] movs r0, 0x8 ands r0, r1 cmp r0, 0 beq _080418FE mov r0, r8 ldr r1, [sp, 0xC] movs r2, 0x10 ldr r3, [sp, 0x34] bl sub_80423A4 lsls r0, 24 cmp r0, 0 bne _080418FE movs r0, 0 str r0, [sp, 0x1C] _080418FE: ldrb r1, [r6] movs r0, 0x4 ands r0, r1 cmp r0, 0 beq _0804191E mov r0, r8 ldr r1, [sp, 0xC] movs r2, 0x20 ldr r3, [sp, 0x34] bl sub_80423A4 lsls r0, 24 cmp r0, 0 bne _0804191E movs r1, 0 str r1, [sp, 0x1C] _0804191E: ldrb r1, [r6] movs r0, 0x2 ands r0, r1 cmp r0, 0 beq _0804193E mov r0, r8 ldr r1, [sp, 0xC] movs r2, 0x40 ldr r3, [sp, 0x34] bl sub_80423A4 lsls r0, 24 cmp r0, 0 bne _0804193E movs r2, 0 str r2, [sp, 0x1C] _0804193E: ldrb r1, [r6] movs r0, 0x1 ands r0, r1 cmp r0, 0 bne _0804194C bl _08042384 _0804194C: ldr r0, _080419B0 @ =gMain ldr r3, _080419B4 @ =0x00000439 adds r0, r3 ldrb r1, [r0] movs r0, 0x2 ands r0, r1 cmp r0, 0 bne _08041960 bl _08042384 _08041960: ldr r4, [sp, 0x34] cmp r4, 0x4 bne _0804196A bl _08042384 _0804196A: ldr r1, _080419A4 @ =gBattleMons movs r0, 0x58 muls r0, r4 adds r1, 0x50 adds r2, r0, r1 ldr r1, [r2] movs r0, 0x7 ands r0, r1 cmp r0, 0 bne _08041982 bl _08042384 _08041982: movs r0, 0x8 negs r0, r0 ands r1, r0 str r1, [r2] _0804198A: movs r5, 0 str r5, [sp, 0x1C] bl _08042384 .align 2, 0 _08041994: .4byte gUnknown_2023DE4 _08041998: .4byte gActiveBattler _0804199C: .4byte gUnknown_8253AE4 _080419A0: .4byte gBaseStats _080419A4: .4byte gBattleMons _080419A8: .4byte 0xf7ffffff _080419AC: .4byte 0x00000f88 _080419B0: .4byte gMain _080419B4: .4byte 0x00000439 _080419B8: ldr r1, [sp, 0x20] ldr r2, [sp, 0x18] adds r0, r1, r2 ldrb r0, [r0] mov r10, r0 movs r0, 0x20 mov r3, r10 ands r0, r3 cmp r0, 0 beq _08041A90 movs r0, 0xDF ands r3, r0 mov r10, r3 mov r0, r8 movs r1, 0x15 movs r2, 0 bl GetMonData ldr r1, _08041ABC @ =gUnknown_825DEA1 ldr r4, [sp, 0x10] adds r1, r4, r1 ldrb r1, [r1] ands r0, r1 lsls r1, r4, 1 lsrs r0, r1 str r0, [sp] adds r5, r4, 0 adds r5, 0xD mov r0, r8 adds r1, r5, 0 movs r2, 0 bl GetMonData adds r4, r0, 0 lsls r4, 16 lsrs r4, 16 mov r0, r8 movs r1, 0x15 movs r2, 0 bl GetMonData adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 adds r0, r4, 0 ldr r2, [sp, 0x10] bl CalculatePPWithBonus lsls r0, 24 lsrs r0, 24 str r0, [sp, 0x28] ldr r0, [sp] cmp r0, 0x2 bhi _08041A90 ldr r0, [sp, 0x28] cmp r0, 0x4 bls _08041A90 mov r0, r8 movs r1, 0x15 movs r2, 0 bl GetMonData ldr r1, _08041AC0 @ =gUnknown_825DEA9 ldr r2, [sp, 0x10] adds r1, r2, r1 ldrb r1, [r1] adds r0, r1 str r0, [sp] mov r0, r8 movs r1, 0x15 mov r2, sp bl sub_804037C mov r0, r8 adds r1, r5, 0 movs r2, 0 bl GetMonData lsls r0, 16 lsrs r0, 16 ldr r1, [sp] lsls r1, 24 lsrs r1, 24 ldr r2, [sp, 0x10] bl CalculatePPWithBonus lsls r0, 24 lsrs r0, 24 ldr r3, [sp, 0x28] subs r0, r3 str r0, [sp] ldr r4, [sp, 0x10] adds r4, 0x11 mov r0, r8 adds r1, r4, 0 movs r2, 0 bl GetMonData ldr r1, [sp] adds r0, r1 str r0, [sp] mov r0, r8 adds r1, r4, 0 mov r2, sp bl sub_804037C movs r4, 0 str r4, [sp, 0x1C] _08041A90: movs r5, 0 str r5, [sp, 0x28] mov r0, r10 cmp r0, 0 bne _08041A9E bl _08042384 _08041A9E: movs r0, 0x1 mov r1, r10 ands r0, r1 cmp r0, 0 bne _08041AAA b _08042042 _08041AAA: ldr r2, [sp, 0x28] cmp r2, 0x7 bls _08041AB2 b _08042042 _08041AB2: lsls r0, r2, 2 ldr r1, _08041AC4 @ =_08041AC8 adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _08041ABC: .4byte gUnknown_825DEA1 _08041AC0: .4byte gUnknown_825DEA9 _08041AC4: .4byte _08041AC8 .align 2, 0 _08041AC8: .4byte _08041AE8 .4byte _08041AE8 .4byte _08041B70 .4byte _08041D94 .4byte _08042042 .4byte _08042042 .4byte _08042042 .4byte _0804202C _08041AE8: mov r0, r8 bl GetMonEVCount lsls r0, 16 lsrs r5, r0, 16 ldr r0, _08041B28 @ =0x000001fd cmp r5, r0 bls _08041AFA b _080415A8 _08041AFA: ldr r0, _08041B2C @ =gUnknown_825DFEA ldr r3, [sp, 0x28] adds r0, r3, r0 ldrb r1, [r0] mov r0, r8 movs r2, 0 bl GetMonData adds r1, r0, 0 str r1, [sp] cmp r1, 0x63 bls _08041B14 b _08042042 _08041B14: ldr r4, [sp, 0x20] ldr r2, [sp, 0x24] adds r0, r4, r2 ldrb r0, [r0] adds r1, r0 cmp r1, 0x64 bls _08041B30 adds r0, 0x64 subs r4, r0, r1 b _08041B32 .align 2, 0 _08041B28: .4byte 0x000001fd _08041B2C: .4byte gUnknown_825DFEA _08041B30: adds r4, r0, 0 _08041B32: adds r1, r5, r4 movs r0, 0xFF lsls r0, 1 cmp r1, r0 bls _08041B40 adds r0, r4, r0 subs r4, r0, r1 _08041B40: ldr r0, [sp] adds r0, r4 str r0, [sp] ldr r0, _08041B6C @ =gUnknown_825DFEA ldr r3, [sp, 0x28] adds r0, r3, r0 ldrb r1, [r0] mov r0, r8 mov r2, sp bl sub_804037C mov r0, r8 bl CalculateMonStats ldr r0, [sp, 0x24] adds r0, 0x1 lsls r0, 24 lsrs r0, 24 str r0, [sp, 0x24] movs r4, 0 str r4, [sp, 0x1C] b _08042042 .align 2, 0 _08041B6C: .4byte gUnknown_825DFEA _08041B70: movs r0, 0x10 mov r5, r10 ands r0, r5 cmp r0, 0 beq _08041C30 mov r0, r8 movs r1, 0x39 movs r2, 0 bl GetMonData cmp r0, 0 beq _08041B90 ldr r0, [sp, 0x24] adds r0, 0x1 lsls r0, 24 b _08041ED6 _08041B90: ldr r0, _08041BD8 @ =gMain ldr r1, _08041BDC @ =0x00000439 adds r0, r1 ldrb r1, [r0] movs r4, 0x2 movs r0, 0x2 ands r0, r1 cmp r0, 0 beq _08041C46 ldr r2, [sp, 0x34] cmp r2, 0x4 beq _08041BF0 ldr r2, _08041BE0 @ =gAbsentBattlerFlags ldr r1, _08041BE4 @ =gBitTable ldr r3, [sp, 0x34] lsls r0, r3, 2 adds r0, r1 ldr r1, [r0] ldrb r0, [r2] bics r0, r1 strb r0, [r2] ldr r1, _08041BE8 @ =gBattlerPartyIndexes lsls r0, r3, 1 adds r0, r1 ldrb r0, [r0] bl pokemon_order_func adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 ldr r0, [sp, 0x34] bl CopyPlayerPartyMonToBattleData ldr r0, _08041BEC @ =gActiveBattler ldrb r0, [r0] b _08041C08 .align 2, 0 _08041BD8: .4byte gMain _08041BDC: .4byte 0x00000439 _08041BE0: .4byte gAbsentBattlerFlags _08041BE4: .4byte gBitTable _08041BE8: .4byte gBattlerPartyIndexes _08041BEC: .4byte gActiveBattler _08041BF0: ldr r3, _08041C20 @ =gAbsentBattlerFlags ldr r1, _08041C24 @ =gBitTable ldr r2, _08041C28 @ =gActiveBattler ldrb r0, [r2] eors r0, r4 lsls r0, 2 adds r0, r1 ldr r1, [r0] ldrb r0, [r3] bics r0, r1 strb r0, [r3] ldrb r0, [r2] _08041C08: bl GetBankSide lsls r0, 24 cmp r0, 0 bne _08041C46 ldr r1, _08041C2C @ =gBattleResults ldrb r0, [r1, 0x4] cmp r0, 0xFE bhi _08041C46 adds r0, 0x1 strb r0, [r1, 0x4] b _08041C46 .align 2, 0 _08041C20: .4byte gAbsentBattlerFlags _08041C24: .4byte gBitTable _08041C28: .4byte gActiveBattler _08041C2C: .4byte gBattleResults _08041C30: mov r0, r8 movs r1, 0x39 movs r2, 0 bl GetMonData cmp r0, 0 bne _08041C46 ldr r0, [sp, 0x24] adds r0, 0x1 lsls r0, 24 b _08041ED6 _08041C46: ldr r1, [sp, 0x24] adds r0, r1, 0x1 lsls r0, 24 lsrs r0, 24 str r0, [sp, 0x24] ldr r4, [sp, 0x20] adds r1, r4, r1 ldrb r1, [r1] str r1, [sp] adds r0, r1, 0 cmp r0, 0xFE beq _08041C88 cmp r0, 0xFE bhi _08041C68 cmp r0, 0xFD beq _08041C9E b _08041CA6 _08041C68: cmp r1, 0xFF bne _08041CA6 mov r0, r8 movs r1, 0x3A movs r2, 0 bl GetMonData adds r4, r0, 0 mov r0, r8 movs r1, 0x39 movs r2, 0 bl GetMonData subs r4, r0 str r4, [sp] b _08041CA6 _08041C88: mov r0, r8 movs r1, 0x3A movs r2, 0 bl GetMonData lsrs r0, 1 str r0, [sp] cmp r0, 0 bne _08041CA6 movs r0, 0x1 b _08041CA4 _08041C9E: ldr r0, _08041D60 @ =gBattleScripting adds r0, 0x23 ldrb r0, [r0] _08041CA4: str r0, [sp] _08041CA6: mov r0, r8 movs r1, 0x3A movs r2, 0 bl GetMonData adds r4, r0, 0 mov r0, r8 movs r1, 0x39 movs r2, 0 bl GetMonData cmp r4, r0 beq _08041D84 ldr r5, [sp, 0x14] cmp r5, 0 bne _08041D78 mov r0, r8 movs r1, 0x39 movs r2, 0 bl GetMonData ldr r1, [sp] adds r0, r1 str r0, [sp] mov r0, r8 movs r1, 0x3A movs r2, 0 bl GetMonData ldr r1, [sp] cmp r1, r0 bls _08041CF2 mov r0, r8 movs r1, 0x3A movs r2, 0 bl GetMonData str r0, [sp] _08041CF2: mov r0, r8 movs r1, 0x39 mov r2, sp bl sub_804037C ldr r0, _08041D64 @ =gMain ldr r1, _08041D68 @ =0x00000439 adds r0, r1 ldrb r1, [r0] movs r0, 0x2 ands r0, r1 cmp r0, 0 beq _08041D80 ldr r2, [sp, 0x34] cmp r2, 0x4 beq _08041D80 ldr r1, _08041D6C @ =gBattleMons movs r0, 0x58 muls r0, r2 adds r0, r1 ldr r1, [sp] strh r1, [r0, 0x28] movs r0, 0x10 mov r3, r10 ands r0, r3 cmp r0, 0 bne _08041D80 ldr r4, _08041D70 @ =gActiveBattler ldrb r0, [r4] bl GetBankSide lsls r0, 24 cmp r0, 0 bne _08041D80 ldr r1, _08041D74 @ =gBattleResults ldrb r0, [r1, 0x3] cmp r0, 0xFE bhi _08041D42 adds r0, 0x1 strb r0, [r1, 0x3] _08041D42: ldrb r5, [r4] add r0, sp, 0x34 ldrb r0, [r0] strb r0, [r4] movs r0, 0 movs r1, 0 movs r2, 0 bl EmitGetMonData ldrb r0, [r4] bl MarkBufferBankForExecution strb r5, [r4] b _08041D80 .align 2, 0 _08041D60: .4byte gBattleScripting _08041D64: .4byte gMain _08041D68: .4byte 0x00000439 _08041D6C: .4byte gBattleMons _08041D70: .4byte gActiveBattler _08041D74: .4byte gBattleResults _08041D78: ldr r1, _08041D90 @ =gBattleMoveDamage ldr r0, [sp] negs r0, r0 str r0, [r1] _08041D80: movs r1, 0 str r1, [sp, 0x1C] _08041D84: movs r0, 0xEF mov r2, r10 ands r2, r0 mov r10, r2 b _08042042 .align 2, 0 _08041D90: .4byte gBattleMoveDamage _08041D94: movs r7, 0x2 mov r0, r10 ands r0, r7 cmp r0, 0 beq _08041DA0 b _08041EF0 _08041DA0: movs r5, 0 ldr r3, [sp, 0x24] adds r3, 0x1 str r3, [sp, 0x38] _08041DA8: movs r4, 0x11 adds r4, r5 mov r9, r4 mov r0, r8 mov r1, r9 movs r2, 0 bl GetMonData str r0, [sp] adds r7, r5, 0 adds r7, 0xD mov r0, r8 adds r1, r7, 0 movs r2, 0 bl GetMonData adds r4, r0, 0 lsls r4, 16 lsrs r4, 16 mov r0, r8 movs r1, 0x15 movs r2, 0 bl GetMonData adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 lsls r0, r5, 24 lsrs r6, r0, 24 adds r0, r4, 0 adds r2, r6, 0 bl CalculatePPWithBonus lsls r0, 24 lsrs r0, 24 ldr r1, [sp] cmp r1, r0 beq _08041ECA ldr r2, [sp, 0x20] ldr r3, [sp, 0x24] adds r0, r2, r3 ldrb r0, [r0] adds r0, r1, r0 str r0, [sp] mov r0, r8 adds r1, r7, 0 movs r2, 0 bl GetMonData adds r4, r0, 0 lsls r4, 16 lsrs r4, 16 mov r0, r8 movs r1, 0x15 movs r2, 0 bl GetMonData adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 adds r0, r4, 0 adds r2, r6, 0 bl CalculatePPWithBonus lsls r0, 24 lsrs r0, 24 ldr r1, [sp] cmp r1, r0 bls _08041E60 mov r0, r8 adds r1, r7, 0 movs r2, 0 bl GetMonData adds r4, r0, 0 lsls r4, 16 lsrs r4, 16 mov r0, r8 movs r1, 0x15 movs r2, 0 bl GetMonData adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 adds r0, r4, 0 adds r2, r6, 0 bl CalculatePPWithBonus lsls r0, 24 lsrs r0, 24 str r0, [sp] _08041E60: mov r0, r8 mov r1, r9 mov r2, sp bl sub_804037C ldr r0, _08041EDC @ =gMain ldr r4, _08041EE0 @ =0x00000439 adds r0, r4 ldrb r1, [r0] movs r0, 0x2 ands r0, r1 cmp r0, 0 beq _08041EC6 ldr r0, [sp, 0x34] cmp r0, 0x4 beq _08041EC6 ldr r4, _08041EE4 @ =gBattleMons movs r0, 0x58 ldr r1, [sp, 0x34] adds r3, r1, 0 muls r3, r0 adds r0, r4, 0 adds r0, 0x50 adds r0, r3, r0 ldr r1, [r0] movs r0, 0x80 lsls r0, 14 ands r1, r0 cmp r1, 0 bne _08041EC6 ldr r1, _08041EE8 @ =gDisableStructs ldr r2, [sp, 0x34] lsls r0, r2, 3 subs r0, r2 lsls r0, 2 adds r0, r1 ldrb r1, [r0, 0x18] lsrs r1, 4 ldr r2, _08041EEC @ =gBitTable lsls r0, r5, 2 adds r0, r2 ldr r0, [r0] ands r1, r0 cmp r1, 0 bne _08041EC6 adds r0, r5, r3 adds r1, r4, 0 adds r1, 0x24 adds r0, r1 ldr r1, [sp] strb r1, [r0] _08041EC6: movs r3, 0 str r3, [sp, 0x1C] _08041ECA: adds r5, 0x1 cmp r5, 0x3 bgt _08041ED2 b _08041DA8 _08041ED2: ldr r4, [sp, 0x38] lsls r0, r4, 24 _08041ED6: lsrs r0, 24 str r0, [sp, 0x24] b _08042042 .align 2, 0 _08041EDC: .4byte gMain _08041EE0: .4byte 0x00000439 _08041EE4: .4byte gBattleMons _08041EE8: .4byte gDisableStructs _08041EEC: .4byte gBitTable _08041EF0: ldr r6, [sp, 0x10] adds r6, 0x11 mov r0, r8 adds r1, r6, 0 movs r2, 0 bl GetMonData str r0, [sp] ldr r5, [sp, 0x10] adds r5, 0xD mov r0, r8 adds r1, r5, 0 movs r2, 0 bl GetMonData adds r4, r0, 0 lsls r4, 16 lsrs r4, 16 mov r0, r8 movs r1, 0x15 movs r2, 0 bl GetMonData adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 adds r0, r4, 0 ldr r2, [sp, 0x10] bl CalculatePPWithBonus lsls r0, 24 lsrs r0, 24 ldr r2, [sp] cmp r2, r0 bne _08041F38 b _08042042 _08041F38: ldr r1, [sp, 0x24] adds r0, r1, 0x1 lsls r0, 24 lsrs r0, 24 str r0, [sp, 0x24] ldr r0, [sp, 0x20] adds r1, r0, r1 ldrb r0, [r1] adds r0, r2, r0 str r0, [sp] mov r0, r8 adds r1, r5, 0 movs r2, 0 bl GetMonData adds r4, r0, 0 lsls r4, 16 lsrs r4, 16 mov r0, r8 movs r1, 0x15 movs r2, 0 bl GetMonData adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 adds r0, r4, 0 ldr r2, [sp, 0x10] bl CalculatePPWithBonus lsls r0, 24 lsrs r0, 24 ldr r1, [sp] cmp r1, r0 bls _08041FAC mov r0, r8 adds r1, r5, 0 movs r2, 0 bl GetMonData adds r4, r0, 0 lsls r4, 16 lsrs r4, 16 mov r0, r8 movs r1, 0x15 movs r2, 0 bl GetMonData adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 adds r0, r4, 0 ldr r2, [sp, 0x10] bl CalculatePPWithBonus lsls r0, 24 lsrs r0, 24 str r0, [sp] _08041FAC: mov r0, r8 adds r1, r6, 0 mov r2, sp bl sub_804037C ldr r0, _08042018 @ =gMain ldr r1, _0804201C @ =0x00000439 adds r0, r1 ldrb r1, [r0] adds r0, r7, 0 ands r0, r1 cmp r0, 0 beq _08042010 ldr r2, [sp, 0x34] cmp r2, 0x4 beq _08042010 ldr r4, _08042020 @ =gBattleMons movs r0, 0x58 adds r3, r2, 0 muls r3, r0 adds r0, r4, 0 adds r0, 0x50 adds r0, r3, r0 ldr r0, [r0] movs r1, 0x80 lsls r1, 14 ands r0, r1 cmp r0, 0 bne _08042010 ldr r1, _08042024 @ =gDisableStructs lsls r0, r2, 3 subs r0, r2 lsls r0, 2 adds r0, r1 ldrb r1, [r0, 0x18] lsrs r1, 4 ldr r2, _08042028 @ =gBitTable ldr r5, [sp, 0x10] lsls r0, r5, 2 adds r0, r2 ldr r0, [r0] ands r1, r0 cmp r1, 0 bne _08042010 adds r0, r5, r3 adds r1, r4, 0 adds r1, 0x24 adds r0, r1 ldr r1, [sp] strb r1, [r0] _08042010: movs r0, 0 str r0, [sp, 0x1C] b _08042042 .align 2, 0 _08042018: .4byte gMain _0804201C: .4byte 0x00000439 _08042020: .4byte gBattleMons _08042024: .4byte gDisableStructs _08042028: .4byte gBitTable _0804202C: mov r0, r8 movs r1, 0x2 ldr r2, [sp, 0x8] bl sub_8042EC4 lsls r0, 16 lsrs r1, r0, 16 cmp r1, 0 beq _08042042 bl _08041598 _08042042: ldr r1, [sp, 0x28] adds r1, 0x1 str r1, [sp, 0x28] mov r2, r10 lsrs r2, 1 mov r10, r2 cmp r2, 0 beq _08042054 b _08041A9E _08042054: b _08042384 _08042056: ldr r3, [sp, 0x20] ldr r4, [sp, 0x18] adds r0, r3, r4 ldrb r0, [r0] mov r10, r0 movs r5, 0 str r5, [sp, 0x28] cmp r0, 0 bne _0804206A b _08042384 _0804206A: movs r0, 0x1 mov r1, r10 ands r0, r1 cmp r0, 0 bne _08042076 b _08042372 _08042076: ldr r2, [sp, 0x28] cmp r2, 0x7 bls _0804207E b _08042372 _0804207E: lsls r0, r2, 2 ldr r1, _08042088 @ =_0804208C adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _08042088: .4byte _0804208C .align 2, 0 _0804208C: .4byte _080420AC .4byte _080420AC .4byte _080420AC .4byte _080420AC .4byte _08042130 .4byte _08042204 .4byte _0804225E .4byte _080422B4 _080420AC: mov r0, r8 bl GetMonEVCount lsls r0, 16 lsrs r5, r0, 16 ldr r0, _080420F4 @ =0x000001fd cmp r5, r0 bls _080420C0 bl _080415A8 _080420C0: ldr r0, _080420F8 @ =gUnknown_825DFEA ldr r4, [sp, 0x28] adds r4, 0x2 adds r0, r4, r0 ldrb r1, [r0] mov r0, r8 movs r2, 0 bl GetMonData adds r1, r0, 0 str r1, [sp] adds r2, r4, 0 cmp r1, 0x63 bls _080420DE b _08042372 _080420DE: ldr r3, [sp, 0x20] ldr r4, [sp, 0x24] adds r0, r3, r4 ldrb r0, [r0] adds r1, r0 cmp r1, 0x64 bls _080420FC adds r0, 0x64 subs r4, r0, r1 b _080420FE .align 2, 0 _080420F4: .4byte 0x000001fd _080420F8: .4byte gUnknown_825DFEA _080420FC: adds r4, r0, 0 _080420FE: adds r1, r5, r4 movs r0, 0xFF lsls r0, 1 cmp r1, r0 bls _0804210C adds r0, r4, r0 subs r4, r0, r1 _0804210C: ldr r0, [sp] adds r0, r4 str r0, [sp] ldr r0, _0804212C @ =gUnknown_825DFEA adds r0, r2, r0 ldrb r1, [r0] mov r0, r8 mov r2, sp bl sub_804037C mov r0, r8 bl CalculateMonStats movs r5, 0 str r5, [sp, 0x1C] b _08042368 .align 2, 0 _0804212C: .4byte gUnknown_825DFEA _08042130: mov r0, r8 movs r1, 0x15 movs r2, 0 bl GetMonData ldr r1, _080421F8 @ =gUnknown_825DEA1 ldr r2, [sp, 0x10] adds r1, r2, r1 ldrb r1, [r1] ands r0, r1 lsls r1, r2, 1 lsrs r0, r1 str r0, [sp] cmp r0, 0x2 bls _08042150 b _08042372 _08042150: adds r5, r2, 0 adds r5, 0xD mov r0, r8 adds r1, r5, 0 movs r2, 0 bl GetMonData adds r4, r0, 0 lsls r4, 16 lsrs r4, 16 mov r0, r8 movs r1, 0x15 movs r2, 0 bl GetMonData adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 adds r0, r4, 0 ldr r2, [sp, 0x10] bl CalculatePPWithBonus lsls r0, 24 lsrs r4, r0, 24 mov r0, r8 movs r1, 0x15 movs r2, 0 bl GetMonData str r0, [sp] ldr r1, _080421FC @ =gUnknown_825DEA5 ldr r3, [sp, 0x10] adds r1, r3, r1 ldrb r2, [r1] ands r2, r0 str r2, [sp] ldr r0, _08042200 @ =gUnknown_825DEA9 adds r0, r3, r0 ldrb r1, [r0] lsls r0, r1, 1 adds r0, r1 adds r2, r0 str r2, [sp] mov r0, r8 movs r1, 0x15 mov r2, sp bl sub_804037C mov r0, r8 adds r1, r5, 0 movs r2, 0 bl GetMonData lsls r0, 16 lsrs r0, 16 ldr r1, [sp] lsls r1, 24 lsrs r1, 24 ldr r2, [sp, 0x10] bl CalculatePPWithBonus lsls r0, 24 lsrs r0, 24 subs r0, r4 str r0, [sp] ldr r4, [sp, 0x10] adds r4, 0x11 mov r0, r8 adds r1, r4, 0 movs r2, 0 bl GetMonData ldr r1, [sp] adds r0, r1 str r0, [sp] mov r0, r8 adds r1, r4, 0 mov r2, sp bl sub_804037C movs r4, 0 str r4, [sp, 0x1C] b _08042372 .align 2, 0 _080421F8: .4byte gUnknown_825DEA1 _080421FC: .4byte gUnknown_825DEA5 _08042200: .4byte gUnknown_825DEA9 _08042204: mov r0, r8 movs r1, 0x20 movs r2, 0 bl GetMonData cmp r0, 0x63 bls _08042214 b _08042368 _08042214: ldr r5, [sp, 0x1C] cmp r5, 0 beq _0804221C b _08042368 _0804221C: ldr r0, [sp, 0x2C] cmp r0, 0 beq _08042224 b _08042368 _08042224: ldr r1, [sp, 0x20] ldr r2, [sp, 0x24] adds r0, r1, r2 ldrb r0, [r0] str r0, [sp, 0x2C] mov r0, r8 movs r1, 0x20 movs r2, 0 bl GetMonData adds r5, r0, 0 str r5, [sp, 0x4] ldr r3, [sp, 0x2C] lsls r4, r3, 24 asrs r1, r4, 24 cmp r1, 0 ble _08042308 ldr r0, [sp, 0x30] cmp r0, 0x1B bne _08042308 movs r0, 0x96 muls r0, r1 movs r1, 0x64 bl __divsi3 adds r0, r5, r0 str r0, [sp, 0x4] adds r2, r4, 0 b _08042314 _0804225E: mov r0, r8 movs r1, 0x20 movs r2, 0 bl GetMonData cmp r0, 0x63 bls _08042368 mov r0, r8 movs r1, 0x20 movs r2, 0 bl GetMonData cmp r0, 0xC7 bhi _08042368 ldr r2, [sp, 0x1C] cmp r2, 0 bne _08042368 ldr r3, [sp, 0x2C] cmp r3, 0 bne _08042368 ldr r4, [sp, 0x20] ldr r5, [sp, 0x24] adds r0, r4, r5 ldrb r0, [r0] str r0, [sp, 0x2C] mov r0, r8 movs r1, 0x20 movs r2, 0 bl GetMonData adds r4, r0, 0 str r4, [sp, 0x4] ldr r0, [sp, 0x2C] lsls r5, r0, 24 asrs r1, r5, 24 cmp r1, 0 ble _080422AE ldr r2, [sp, 0x30] cmp r2, 0x1B beq _080422F6 _080422AE: ldr r3, [sp, 0x2C] lsls r2, r3, 24 b _0804230C _080422B4: mov r0, r8 movs r1, 0x20 movs r2, 0 bl GetMonData cmp r0, 0xC7 bls _08042368 ldr r4, [sp, 0x1C] cmp r4, 0 bne _08042368 ldr r5, [sp, 0x2C] cmp r5, 0 bne _08042368 ldr r1, [sp, 0x20] ldr r2, [sp, 0x24] adds r0, r1, r2 ldrb r0, [r0] str r0, [sp, 0x2C] mov r0, r8 movs r1, 0x20 movs r2, 0 bl GetMonData adds r4, r0, 0 str r4, [sp, 0x4] ldr r3, [sp, 0x2C] lsls r5, r3, 24 asrs r1, r5, 24 cmp r1, 0 ble _08042308 ldr r0, [sp, 0x30] cmp r0, 0x1B bne _08042308 _080422F6: movs r0, 0x96 muls r0, r1 movs r1, 0x64 bl __divsi3 adds r0, r4, r0 str r0, [sp, 0x4] adds r2, r5, 0 b _08042314 _08042308: ldr r1, [sp, 0x2C] lsls r2, r1, 24 _0804230C: asrs r1, r2, 24 ldr r0, [sp, 0x4] adds r0, r1 str r0, [sp, 0x4] _08042314: cmp r2, 0 ble _0804234A mov r0, r8 movs r1, 0x26 movs r2, 0 bl GetMonData cmp r0, 0xB bne _0804232C ldr r0, [sp, 0x4] adds r0, 0x1 str r0, [sp, 0x4] _0804232C: mov r0, r8 movs r1, 0x23 movs r2, 0 bl GetMonData adds r4, r0, 0 bl sav1_map_get_name lsls r0, 24 lsrs r0, 24 cmp r4, r0 bne _0804234A ldr r0, [sp, 0x4] adds r0, 0x1 str r0, [sp, 0x4] _0804234A: ldr r0, [sp, 0x4] cmp r0, 0 bge _08042354 movs r0, 0 str r0, [sp, 0x4] _08042354: ldr r0, [sp, 0x4] cmp r0, 0xFF ble _0804235E movs r0, 0xFF str r0, [sp, 0x4] _0804235E: add r2, sp, 0x4 mov r0, r8 movs r1, 0x20 bl sub_804037C _08042368: ldr r0, [sp, 0x24] adds r0, 0x1 lsls r0, 24 lsrs r0, 24 str r0, [sp, 0x24] _08042372: ldr r2, [sp, 0x28] adds r2, 0x1 str r2, [sp, 0x28] mov r3, r10 lsrs r3, 1 mov r10, r3 cmp r3, 0 beq _08042384 b _0804206A _08042384: ldr r4, [sp, 0x18] adds r4, 0x1 str r4, [sp, 0x18] cmp r4, 0x5 bgt _08042392 bl _080415B4 _08042392: ldr r0, [sp, 0x1C] _08042394: add sp, 0x3C pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r1} bx r1 thumb_func_end sub_80413E4 .align 2, 0 @ Don't pad with nop.