.include "constants/gba_constants.inc" .include "constants/species_constants.inc" .include "asm/macros.inc" .syntax unified .text thumb_func_start ai_switch_perish_song ai_switch_perish_song: @ 8035FEC push {lr} ldr r1, _08036038 @ =gUnknown_02024C98 ldr r0, _0803603C @ =gUnknown_02024A60 ldrb r2, [r0] lsls r0, r2, 2 adds r0, r1 ldr r0, [r0] movs r1, 0x20 ands r0, r1 cmp r0, 0 beq _0803604C ldr r0, _08036040 @ =gUnknown_02024CA8 lsls r1, r2, 3 subs r1, r2 lsls r1, 2 adds r1, r0 ldrb r0, [r1, 0xF] lsls r0, 28 cmp r0, 0 bne _0803604C adds r0, r2, 0 bl battle_get_per_side_status ldr r1, _08036044 @ =0x02000000 lsls r0, 24 lsrs r0, 25 ldr r2, _08036048 @ =0x000160c8 adds r0, r2 adds r0, r1 movs r1, 0x6 strb r1, [r0] movs r0, 0x1 movs r1, 0x2 movs r2, 0 bl dp01_build_cmdbuf_x21_a_bb movs r0, 0x1 b _0803604E .align 2, 0 _08036038: .4byte gUnknown_02024C98 _0803603C: .4byte gUnknown_02024A60 _08036040: .4byte gUnknown_02024CA8 _08036044: .4byte 0x02000000 _08036048: .4byte 0x000160c8 _0803604C: movs r0, 0 _0803604E: pop {r1} bx r1 thumb_func_end ai_switch_perish_song thumb_func_start sub_8036054 sub_8036054: @ 8036054 push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} ldr r0, _0803606C @ =gBattleTypeFlags ldrh r1, [r0] movs r0, 0x1 ands r0, r1 cmp r0, 0 beq _080360A0 b _080361C8 .align 2, 0 _0803606C: .4byte gBattleTypeFlags _08036070: ldr r0, _08036094 @ =gUnknown_02024A60 ldrb r0, [r0] bl battle_get_per_side_status ldr r1, _08036098 @ =0x02000000 lsls r0, 24 lsrs r0, 25 ldr r2, _0803609C @ =0x000160c8 adds r0, r2 adds r0, r1 strb r6, [r0] movs r0, 0x1 movs r1, 0x2 movs r2, 0 bl dp01_build_cmdbuf_x21_a_bb movs r0, 0x1 b _080361CA .align 2, 0 _08036094: .4byte gUnknown_02024A60 _08036098: .4byte 0x02000000 _0803609C: .4byte 0x000160c8 _080360A0: ldr r4, _080361D8 @ =gBattleMons movs r0, 0 bl battle_get_side_with_given_state lsls r0, 24 lsrs r0, 24 movs r1, 0x58 muls r0, r1 adds r0, r4 adds r0, 0x20 ldrb r0, [r0] cmp r0, 0x19 beq _080360BC b _080361C8 _080360BC: movs r0, 0 bl battle_get_side_with_given_state lsls r0, 24 lsrs r2, r0, 24 movs r6, 0 adds r7, r4, 0 movs r5, 0x58 adds r0, r2, 0 muls r0, r5 adds r4, r0, r7 movs r3, 0x20 adds r3, r4 mov r8, r3 _080360D8: lsls r1, r6, 1 ldr r0, _080361DC @ =gUnknown_02024A60 ldrb r0, [r0] muls r0, r5 adds r1, r0 adds r0, r7, 0 adds r0, 0xC adds r1, r0 ldrh r0, [r1] cmp r0, 0 beq _08036104 ldrh r1, [r4] mov r3, r8 ldrb r2, [r3] bl ai_rate_move lsls r0, 24 lsrs r1, r0, 24 movs r0, 0x2 ands r1, r0 cmp r1, 0 bne _080361C8 _08036104: adds r6, 0x1 cmp r6, 0x3 ble _080360D8 movs r6, 0 ldr r0, _080361E0 @ =gEnemyParty mov r9, r0 _08036110: movs r0, 0x64 adds r5, r6, 0 muls r5, r0 mov r2, r9 adds r4, r5, r2 adds r0, r4, 0 movs r1, 0x39 bl GetMonData cmp r0, 0 beq _080361C2 adds r0, r4, 0 movs r1, 0x41 bl GetMonData cmp r0, 0 beq _080361C2 adds r0, r4, 0 movs r1, 0x41 bl GetMonData movs r1, 0xCE lsls r1, 1 cmp r0, r1 beq _080361C2 ldr r1, _080361E4 @ =gUnknown_02024A6A ldr r0, _080361DC @ =gUnknown_02024A60 ldrb r0, [r0] lsls r0, 1 adds r0, r1 ldrh r0, [r0] cmp r6, r0 beq _080361C2 adds r0, r4, 0 movs r1, 0xB bl GetMonData adds r0, r4, 0 movs r1, 0x2E bl GetMonData movs r0, 0 bl battle_get_side_with_given_state lsls r0, 24 lsrs r2, r0, 24 movs r4, 0 mov r8, r5 ldr r1, _080361D8 @ =gBattleMons movs r0, 0x58 muls r0, r2 adds r5, r0, r1 adds r7, r5, 0 adds r7, 0x20 _0803617C: adds r1, r4, 0 adds r1, 0xD mov r0, r8 add r0, r9 bl GetMonData lsls r0, 16 lsrs r0, 16 cmp r0, 0 beq _080361BC ldrh r1, [r5] ldrb r2, [r7] bl ai_rate_move lsls r0, 24 lsrs r1, r0, 24 movs r0, 0x2 ands r1, r0 cmp r1, 0 beq _080361BC bl Random lsls r0, 16 lsrs r0, 16 movs r1, 0x3 bl __umodsi3 lsls r0, 16 lsrs r0, 16 cmp r0, 0x1 bhi _080361BC b _08036070 _080361BC: adds r4, 0x1 cmp r4, 0x3 ble _0803617C _080361C2: adds r6, 0x1 cmp r6, 0x5 ble _08036110 _080361C8: movs r0, 0 _080361CA: pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r1} bx r1 .align 2, 0 _080361D8: .4byte gBattleMons _080361DC: .4byte gUnknown_02024A60 _080361E0: .4byte gEnemyParty _080361E4: .4byte gUnknown_02024A6A thumb_func_end sub_8036054 thumb_func_start sub_80361E8 sub_80361E8: @ 80361E8 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} movs r0, 0x1 bl ai_has_super_effective_move_on_field lsls r0, 24 cmp r0, 0 beq _08036214 bl Random lsls r0, 16 lsrs r0, 16 movs r1, 0x3 bl __umodsi3 lsls r0, 16 cmp r0, 0 beq _08036214 b _08036400 _08036214: ldr r1, _0803627C @ =gUnknown_02024C3C ldr r5, _08036280 @ =gUnknown_02024A60 ldrb r3, [r5] lsls r0, r3, 1 adds r4, r0, r1 ldrh r1, [r4] cmp r1, 0 bne _08036226 b _08036400 _08036226: ldr r0, _08036284 @ =0x0000ffff cmp r1, r0 bne _0803622E b _08036400 _0803622E: ldr r2, _08036288 @ =gBattleMoves ldrh r1, [r4] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r0, [r0, 0x1] cmp r0, 0 bne _08036242 b _08036400 _08036242: ldr r0, _0803628C @ =gBattleTypeFlags ldrh r1, [r0] movs r0, 0x1 ands r0, r1 cmp r0, 0 beq _080362AE mov r8, r3 mov r0, r8 bl battle_get_per_side_status movs r4, 0x2 eors r0, r4 lsls r0, 24 lsrs r0, 24 bl battle_get_side_with_given_state ldr r1, _08036290 @ =gUnknown_02024C0C ldrb r1, [r1] ldr r2, _08036294 @ =gBitTable lsls r0, 24 lsrs r0, 22 adds r0, r2 ldr r0, [r0] ands r1, r0 cmp r1, 0 beq _08036298 ldrb r7, [r5] b _080362B2 .align 2, 0 _0803627C: .4byte gUnknown_02024C3C _08036280: .4byte gUnknown_02024A60 _08036284: .4byte 0x0000ffff _08036288: .4byte gBattleMoves _0803628C: .4byte gBattleTypeFlags _08036290: .4byte gUnknown_02024C0C _08036294: .4byte gBitTable _08036298: ldrb r0, [r5] bl battle_get_per_side_status eors r0, r4 lsls r0, 24 lsrs r0, 24 bl battle_get_side_with_given_state lsls r0, 24 lsrs r7, r0, 24 b _080362B2 _080362AE: adds r7, r3, 0 mov r8, r7 _080362B2: ldr r3, _080362D4 @ =gBattleMoves ldr r1, _080362D8 @ =gUnknown_02024C3C ldr r2, _080362DC @ =gUnknown_02024A60 ldrb r0, [r2] lsls r0, 1 adds r0, r1 ldrh r1, [r0] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r3 ldrb r0, [r0, 0x2] adds r1, r2, 0 cmp r0, 0xA bne _080362E0 movs r0, 0x12 b _080362F2 .align 2, 0 _080362D4: .4byte gBattleMoves _080362D8: .4byte gUnknown_02024C3C _080362DC: .4byte gUnknown_02024A60 _080362E0: cmp r0, 0xB bne _080362EA movs r2, 0xB mov r10, r2 b _080362F4 _080362EA: cmp r0, 0xD beq _080362F0 b _08036400 _080362F0: movs r0, 0xA _080362F2: mov r10, r0 _080362F4: ldr r2, _08036308 @ =gBattleMons ldrb r1, [r1] movs r0, 0x58 muls r0, r1 adds r0, r2 adds r0, 0x20 ldrb r0, [r0] cmp r0, r10 bne _0803633C b _08036400 .align 2, 0 _08036308: .4byte gBattleMons _0803630C: ldr r0, _08036330 @ =gUnknown_02024A60 ldrb r0, [r0] bl battle_get_per_side_status ldr r1, _08036334 @ =0x02000000 lsls r0, 24 lsrs r0, 25 ldr r2, _08036338 @ =0x000160c8 adds r0, r2 adds r0, r1 strb r6, [r0] movs r0, 0x1 movs r1, 0x2 movs r2, 0 bl dp01_build_cmdbuf_x21_a_bb movs r0, 0x1 b _08036402 .align 2, 0 _08036330: .4byte gUnknown_02024A60 _08036334: .4byte 0x02000000 _08036338: .4byte 0x000160c8 _0803633C: movs r6, 0 ldr r0, _080363CC @ =gBaseStats mov r9, r0 _08036342: movs r0, 0x64 adds r1, r6, 0 muls r1, r0 ldr r0, _080363D0 @ =gEnemyParty adds r5, r1, r0 adds r0, r5, 0 movs r1, 0x39 bl GetMonData cmp r0, 0 beq _080363FA adds r0, r5, 0 movs r1, 0x41 bl GetMonData cmp r0, 0 beq _080363FA adds r0, r5, 0 movs r1, 0x41 bl GetMonData movs r1, 0xCE lsls r1, 1 cmp r0, r1 beq _080363FA ldr r1, _080363D4 @ =gUnknown_02024A6A mov r2, r8 lsls r0, r2, 1 adds r0, r1 ldrh r0, [r0] cmp r6, r0 beq _080363FA lsls r0, r7, 1 adds r0, r1 ldrh r0, [r0] cmp r6, r0 beq _080363FA ldr r1, _080363D8 @ =0x02000000 ldr r0, _080363DC @ =0x00016068 add r0, r8 adds r0, r1 ldrb r0, [r0] cmp r6, r0 beq _080363FA ldr r2, _080363DC @ =0x00016068 adds r0, r7, r2 adds r0, r1 ldrb r0, [r0] cmp r6, r0 beq _080363FA adds r0, r5, 0 movs r1, 0xB bl GetMonData lsls r0, 16 lsrs r4, r0, 16 adds r0, r5, 0 movs r1, 0x2E bl GetMonData cmp r0, 0 beq _080363E0 lsls r0, r4, 3 subs r0, r4 lsls r0, 2 add r0, r9 ldrb r0, [r0, 0x17] b _080363EA .align 2, 0 _080363CC: .4byte gBaseStats _080363D0: .4byte gEnemyParty _080363D4: .4byte gUnknown_02024A6A _080363D8: .4byte 0x02000000 _080363DC: .4byte 0x00016068 _080363E0: lsls r0, r4, 3 subs r0, r4 lsls r0, 2 add r0, r9 ldrb r0, [r0, 0x16] _080363EA: cmp r10, r0 bne _080363FA bl Random movs r1, 0x1 ands r1, r0 cmp r1, 0 bne _0803630C _080363FA: adds r6, 0x1 cmp r6, 0x5 ble _08036342 _08036400: movs r0, 0 _08036402: pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r1} bx r1 thumb_func_end sub_80361E8 thumb_func_start ai_switchout_natural_cure ai_switchout_natural_cure: @ 8036410 push {r4,r5,lr} ldr r3, _08036468 @ =gBattleMons ldr r5, _0803646C @ =gUnknown_02024A60 ldrb r4, [r5] movs r0, 0x58 adds r2, r4, 0 muls r2, r0 adds r0, r3, 0 adds r0, 0x4C adds r0, r2, r0 ldr r0, [r0] movs r1, 0x7 ands r0, r1 cmp r0, 0 beq _080364D8 adds r1, r2, r3 adds r0, r1, 0 adds r0, 0x20 ldrb r0, [r0] cmp r0, 0x1E bne _080364D8 ldrh r0, [r1, 0x2C] ldrh r1, [r1, 0x28] lsrs r0, 1 cmp r1, r0 bcc _080364D8 ldr r1, _08036470 @ =gUnknown_02024C3C lsls r0, r4, 1 adds r0, r1 ldrh r1, [r0] cmp r1, 0 beq _08036456 ldr r0, _08036474 @ =0x0000ffff cmp r1, r0 bne _08036478 _08036456: bl Random movs r1, 0x1 ands r1, r0 cmp r1, 0 beq _08036478 ldrb r0, [r5] b _080364E0 .align 2, 0 _08036468: .4byte gBattleMons _0803646C: .4byte gUnknown_02024A60 _08036470: .4byte gUnknown_02024C3C _08036474: .4byte 0x0000ffff _08036478: ldr r2, _080364A4 @ =gBattleMoves ldr r1, _080364A8 @ =gUnknown_02024C3C ldr r4, _080364AC @ =gUnknown_02024A60 ldrb r0, [r4] lsls r0, 1 adds r0, r1 ldrh r1, [r0] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r0, [r0, 0x1] cmp r0, 0 bne _080364B0 bl Random movs r1, 0x1 ands r1, r0 cmp r1, 0 beq _080364B0 ldrb r0, [r4] b _080364E0 .align 2, 0 _080364A4: .4byte gBattleMoves _080364A8: .4byte gUnknown_02024C3C _080364AC: .4byte gUnknown_02024A60 _080364B0: movs r0, 0x8 movs r1, 0x1 bl sub_80366A4 lsls r0, 24 cmp r0, 0 bne _080364FE movs r0, 0x4 movs r1, 0x1 bl sub_80366A4 lsls r0, 24 cmp r0, 0 bne _080364FE bl Random movs r1, 0x1 ands r1, r0 cmp r1, 0 bne _080364DC _080364D8: movs r0, 0 b _08036500 _080364DC: ldr r0, _08036508 @ =gUnknown_02024A60 ldrb r0, [r0] _080364E0: bl battle_get_per_side_status ldr r1, _0803650C @ =0x02000000 lsls r0, 24 lsrs r0, 25 ldr r2, _08036510 @ =0x000160c8 adds r0, r2 adds r0, r1 movs r1, 0x6 strb r1, [r0] movs r0, 0x1 movs r1, 0x2 movs r2, 0 bl dp01_build_cmdbuf_x21_a_bb _080364FE: movs r0, 0x1 _08036500: pop {r4,r5} pop {r1} bx r1 .align 2, 0 _08036508: .4byte gUnknown_02024A60 _0803650C: .4byte 0x02000000 _08036510: .4byte 0x000160c8 thumb_func_end ai_switchout_natural_cure thumb_func_start ai_has_super_effective_move_on_field ai_has_super_effective_move_on_field: @ 8036514 push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} lsls r0, 24 lsrs r0, 24 mov r8, r0 movs r0, 0 bl battle_get_side_with_given_state lsls r0, 24 lsrs r3, r0, 24 ldr r0, _080365AC @ =gUnknown_02024C0C ldrb r1, [r0] ldr r2, _080365B0 @ =gBitTable lsls r0, r3, 2 adds r0, r2 ldr r0, [r0] ands r1, r0 cmp r1, 0 bne _0803659C movs r4, 0 ldr r6, _080365B4 @ =gBattleMons movs r7, 0x58 adds r0, r3, 0 muls r0, r7 adds r5, r0, r6 movs r0, 0x20 adds r0, r5 mov r9, r0 _08036550: lsls r1, r4, 1 ldr r0, _080365B8 @ =gUnknown_02024A60 ldrb r0, [r0] muls r0, r7 adds r1, r0 adds r0, r6, 0 adds r0, 0xC adds r1, r0 ldrh r0, [r1] cmp r0, 0 beq _08036596 ldrh r1, [r5] mov r3, r9 ldrb r2, [r3] bl ai_rate_move lsls r0, 24 lsrs r1, r0, 24 movs r0, 0x2 ands r1, r0 cmp r1, 0 beq _08036596 mov r0, r8 cmp r0, 0 bne _080365C0 bl Random lsls r0, 16 lsrs r0, 16 movs r1, 0xA bl __umodsi3 lsls r0, 16 cmp r0, 0 bne _080365C0 _08036596: adds r4, 0x1 cmp r4, 0x3 ble _08036550 _0803659C: ldr r0, _080365BC @ =gBattleTypeFlags ldrh r1, [r0] movs r0, 0x1 ands r0, r1 cmp r0, 0 bne _080365C4 b _0803663E .align 2, 0 _080365AC: .4byte gUnknown_02024C0C _080365B0: .4byte gBitTable _080365B4: .4byte gBattleMons _080365B8: .4byte gUnknown_02024A60 _080365BC: .4byte gBattleTypeFlags _080365C0: movs r0, 0x1 b _08036640 _080365C4: movs r0, 0x2 bl battle_get_side_with_given_state lsls r0, 24 lsrs r3, r0, 24 ldr r0, _0803664C @ =gUnknown_02024C0C ldrb r1, [r0] ldr r2, _08036650 @ =gBitTable lsls r0, r3, 2 adds r0, r2 ldr r0, [r0] ands r1, r0 cmp r1, 0 bne _0803663E movs r4, 0 ldr r6, _08036654 @ =gBattleMons movs r7, 0x58 adds r0, r3, 0 muls r0, r7 adds r5, r0, r6 movs r3, 0x20 adds r3, r5 mov r9, r3 _080365F2: lsls r1, r4, 1 ldr r0, _08036658 @ =gUnknown_02024A60 ldrb r0, [r0] muls r0, r7 adds r1, r0 adds r0, r6, 0 adds r0, 0xC adds r1, r0 ldrh r0, [r1] cmp r0, 0 beq _08036638 ldrh r1, [r5] mov r3, r9 ldrb r2, [r3] bl ai_rate_move lsls r0, 24 lsrs r1, r0, 24 movs r0, 0x2 ands r1, r0 cmp r1, 0 beq _08036638 mov r0, r8 cmp r0, 0 bne _080365C0 bl Random lsls r0, 16 lsrs r0, 16 movs r1, 0xA bl __umodsi3 lsls r0, 16 cmp r0, 0 bne _080365C0 _08036638: adds r4, 0x1 cmp r4, 0x3 ble _080365F2 _0803663E: movs r0, 0 _08036640: pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r1} bx r1 .align 2, 0 _0803664C: .4byte gUnknown_02024C0C _08036650: .4byte gBitTable _08036654: .4byte gBattleMons _08036658: .4byte gUnknown_02024A60 thumb_func_end ai_has_super_effective_move_on_field thumb_func_start ai_is_too_invested_in_stat_buffs ai_is_too_invested_in_stat_buffs: @ 803665C push {r4,lr} movs r4, 0 ldr r1, _0803669C @ =gBattleMons ldr r0, _080366A0 @ =gUnknown_02024A60 ldrb r2, [r0] movs r0, 0x58 muls r0, r2 adds r1, 0x18 adds r2, r0, r1 movs r3, 0x7 _08036670: ldrb r1, [r2] movs r0, 0 ldrsb r0, [r2, r0] cmp r0, 0x6 ble _08036686 subs r1, 0x6 lsls r0, r4, 24 asrs r0, 24 adds r0, r1 lsls r0, 24 lsrs r4, r0, 24 _08036686: adds r2, 0x1 subs r3, 0x1 cmp r3, 0 bge _08036670 movs r0, 0 cmp r4, 0x3 bls _08036696 movs r0, 0x1 _08036696: pop {r4} pop {r1} bx r1 .align 2, 0 _0803669C: .4byte gBattleMons _080366A0: .4byte gUnknown_02024A60 thumb_func_end ai_is_too_invested_in_stat_buffs thumb_func_start sub_80366A4 sub_80366A4: @ 80366A4 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x8 lsls r0, 24 lsrs r0, 24 str r0, [sp] lsls r1, 24 lsrs r1, 24 str r1, [sp, 0x4] ldr r1, _08036730 @ =gUnknown_02024C3C ldr r5, _08036734 @ =gUnknown_02024A60 ldrb r3, [r5] lsls r0, r3, 1 adds r4, r0, r1 ldrh r1, [r4] cmp r1, 0 bne _080366CE b _080368D8 _080366CE: ldr r0, _08036738 @ =0x0000ffff cmp r1, r0 bne _080366D6 b _080368D8 _080366D6: ldr r0, _0803673C @ =gUnknown_02024C5C adds r0, r3, r0 ldrb r0, [r0] cmp r0, 0xFF bne _080366E2 b _080368D8 _080366E2: ldr r2, _08036740 @ =gBattleMoves ldrh r1, [r4] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r0, [r0, 0x1] cmp r0, 0 bne _080366F6 b _080368D8 _080366F6: ldr r0, _08036744 @ =gBattleTypeFlags ldrh r1, [r0] movs r0, 0x1 ands r0, r1 cmp r0, 0 beq _08036798 mov r9, r3 mov r0, r9 bl battle_get_per_side_status movs r4, 0x2 eors r0, r4 lsls r0, 24 lsrs r0, 24 bl battle_get_side_with_given_state ldr r1, _08036748 @ =gUnknown_02024C0C ldrb r1, [r1] ldr r2, _0803674C @ =gBitTable lsls r0, 24 lsrs r0, 22 adds r0, r2 ldr r0, [r0] ands r1, r0 cmp r1, 0 beq _08036750 ldrb r5, [r5] mov r10, r5 b _0803679C .align 2, 0 _08036730: .4byte gUnknown_02024C3C _08036734: .4byte gUnknown_02024A60 _08036738: .4byte 0x0000ffff _0803673C: .4byte gUnknown_02024C5C _08036740: .4byte gBattleMoves _08036744: .4byte gBattleTypeFlags _08036748: .4byte gUnknown_02024C0C _0803674C: .4byte gBitTable _08036750: ldrb r0, [r5] bl battle_get_per_side_status eors r0, r4 lsls r0, 24 lsrs r0, 24 bl battle_get_side_with_given_state lsls r0, 24 lsrs r0, 24 mov r10, r0 b _0803679C _08036768: ldr r0, _0803678C @ =gUnknown_02024A60 ldrb r0, [r0] bl battle_get_per_side_status ldr r1, _08036790 @ =0x02000000 lsls r0, 24 lsrs r0, 25 ldr r2, _08036794 @ =0x000160c8 adds r0, r2 adds r0, r1 strb r6, [r0] movs r0, 0x1 movs r1, 0x2 movs r2, 0 bl dp01_build_cmdbuf_x21_a_bb movs r0, 0x1 b _080368DA .align 2, 0 _0803678C: .4byte gUnknown_02024A60 _08036790: .4byte 0x02000000 _08036794: .4byte 0x000160c8 _08036798: mov r9, r3 mov r10, r9 _0803679C: movs r6, 0 _0803679E: movs r0, 0x64 adds r1, r6, 0 muls r1, r0 ldr r0, _08036830 @ =gEnemyParty adds r5, r1, r0 adds r0, r5, 0 movs r1, 0x39 bl GetMonData cmp r0, 0 bne _080367B6 b _080368D0 _080367B6: adds r0, r5, 0 movs r1, 0x41 bl GetMonData cmp r0, 0 bne _080367C4 b _080368D0 _080367C4: adds r0, r5, 0 movs r1, 0x41 bl GetMonData movs r1, 0xCE lsls r1, 1 cmp r0, r1 beq _080368D0 ldr r1, _08036834 @ =gUnknown_02024A6A mov r2, r9 lsls r0, r2, 1 adds r0, r1 ldrh r0, [r0] cmp r6, r0 beq _080368D0 mov r2, r10 lsls r0, r2, 1 adds r0, r1 ldrh r0, [r0] cmp r6, r0 beq _080368D0 ldr r1, _08036838 @ =0x02000000 ldr r0, _0803683C @ =0x00016068 add r0, r9 adds r0, r1 ldrb r0, [r0] cmp r6, r0 beq _080368D0 ldr r0, _0803683C @ =0x00016068 add r0, r10 adds r0, r1 ldrb r0, [r0] cmp r6, r0 beq _080368D0 adds r0, r5, 0 movs r1, 0xB bl GetMonData lsls r0, 16 lsrs r4, r0, 16 adds r0, r5, 0 movs r1, 0x2E bl GetMonData cmp r0, 0 beq _08036844 lsls r0, r4, 3 subs r0, r4 lsls r0, 2 ldr r1, _08036840 @ =gBaseStats adds r0, r1 ldrb r2, [r0, 0x17] b _08036850 .align 2, 0 _08036830: .4byte gEnemyParty _08036834: .4byte gUnknown_02024A6A _08036838: .4byte 0x02000000 _0803683C: .4byte 0x00016068 _08036840: .4byte gBaseStats _08036844: lsls r0, r4, 3 subs r0, r4 lsls r0, 2 ldr r2, _080368EC @ =gBaseStats adds r0, r2 ldrb r2, [r0, 0x16] _08036850: ldr r1, _080368F0 @ =gUnknown_02024C3C ldr r5, _080368F4 @ =gUnknown_02024A60 ldrb r0, [r5] lsls r0, 1 adds r0, r1 ldrh r0, [r0] adds r1, r4, 0 bl ai_rate_move ldr r1, [sp] ands r1, r0 cmp r1, 0 beq _080368D0 ldr r1, _080368F8 @ =gUnknown_02024C5C ldrb r0, [r5] adds r0, r1 ldrb r0, [r0] mov r9, r0 movs r4, 0 movs r0, 0x64 adds r1, r6, 0 muls r1, r0 mov r8, r1 ldr r1, _080368FC @ =gBattleMons movs r0, 0x58 mov r2, r9 muls r2, r0 adds r0, r2, 0 adds r5, r0, r1 adds r7, r5, 0 adds r7, 0x20 _0803688E: ldr r0, _08036900 @ =gEnemyParty adds r1, r4, 0 adds r1, 0xD add r0, r8 bl GetMonData lsls r0, 16 lsrs r0, 16 cmp r0, 0 beq _080368CA ldrh r1, [r5] ldrb r2, [r7] bl ai_rate_move lsls r0, 24 lsrs r1, r0, 24 movs r0, 0x2 ands r1, r0 cmp r1, 0 beq _080368CA bl Random lsls r0, 16 lsrs r0, 16 ldr r1, [sp, 0x4] bl __modsi3 cmp r0, 0 bne _080368CA b _08036768 _080368CA: adds r4, 0x1 cmp r4, 0x3 ble _0803688E _080368D0: adds r6, 0x1 cmp r6, 0x5 bgt _080368D8 b _0803679E _080368D8: movs r0, 0 _080368DA: add sp, 0x8 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r1} bx r1 .align 2, 0 _080368EC: .4byte gBaseStats _080368F0: .4byte gUnknown_02024C3C _080368F4: .4byte gUnknown_02024A60 _080368F8: .4byte gUnknown_02024C5C _080368FC: .4byte gBattleMons _08036900: .4byte gEnemyParty thumb_func_end sub_80366A4 thumb_func_start sub_8036904 sub_8036904: @ 8036904 push {r4-r7,lr} mov r7, r8 push {r7} sub sp, 0x4 ldr r6, _080369E0 @ =gBattleMons ldr r4, _080369E4 @ =gUnknown_02024A60 ldrb r2, [r4] movs r5, 0x58 adds r0, r2, 0 muls r0, r5 adds r1, r6, 0 adds r1, 0x50 adds r0, r1 ldr r0, [r0] ldr r1, _080369E8 @ =0x0400e000 ands r0, r1 cmp r0, 0 beq _0803692A b _08036AFC _0803692A: ldr r0, _080369EC @ =gUnknown_02024C98 lsls r1, r2, 2 adds r1, r0 ldr r1, [r1] movs r0, 0x80 lsls r0, 3 ands r1, r0 cmp r1, 0 beq _0803693E b _08036AFC _0803693E: str r1, [sp] movs r0, 0xC adds r1, r2, 0 movs r2, 0x17 movs r3, 0 bl sub_8018324 lsls r0, 24 lsrs r0, 24 cmp r0, 0 beq _08036956 b _08036AFC _08036956: ldrb r1, [r4] str r0, [sp] movs r0, 0xC movs r2, 0x47 movs r3, 0 bl sub_8018324 lsls r0, 24 lsrs r0, 24 cmp r0, 0 beq _0803696E b _08036AFC _0803696E: str r0, [sp] movs r0, 0xE movs r1, 0 movs r2, 0x2A movs r3, 0 bl sub_8018324 lsls r0, 24 cmp r0, 0 beq _080369A0 ldrb r0, [r4] muls r0, r5 adds r1, r0, r6 adds r0, r1, 0 adds r0, 0x21 ldrb r0, [r0] cmp r0, 0x8 bne _08036994 b _08036AFC _08036994: adds r0, r1, 0 adds r0, 0x22 ldrb r0, [r0] cmp r0, 0x8 bne _080369A0 b _08036AFC _080369A0: movs r0, 0 mov r8, r0 ldr r0, _080369F0 @ =gBattleTypeFlags ldrh r1, [r0] movs r0, 0x1 ands r0, r1 cmp r0, 0 beq _08036A12 ldr r4, _080369E4 @ =gUnknown_02024A60 ldrb r7, [r4] adds r0, r7, 0 bl battle_get_per_side_status movs r5, 0x2 eors r0, r5 lsls r0, 24 lsrs r0, 24 bl battle_get_side_with_given_state ldr r1, _080369F4 @ =gUnknown_02024C0C ldrb r1, [r1] ldr r2, _080369F8 @ =gBitTable lsls r0, 24 lsrs r0, 22 adds r0, r2 ldr r0, [r0] ands r1, r0 cmp r1, 0 beq _080369FC ldrb r6, [r4] b _08036A18 .align 2, 0 _080369E0: .4byte gBattleMons _080369E4: .4byte gUnknown_02024A60 _080369E8: .4byte 0x0400e000 _080369EC: .4byte gUnknown_02024C98 _080369F0: .4byte gBattleTypeFlags _080369F4: .4byte gUnknown_02024C0C _080369F8: .4byte gBitTable _080369FC: ldrb r0, [r4] bl battle_get_per_side_status eors r0, r5 lsls r0, 24 lsrs r0, 24 bl battle_get_side_with_given_state lsls r0, 24 lsrs r6, r0, 24 b _08036A18 _08036A12: ldr r0, _08036AE8 @ =gUnknown_02024A60 ldrb r6, [r0] adds r7, r6, 0 _08036A18: movs r5, 0 _08036A1A: movs r0, 0x64 adds r1, r5, 0 muls r1, r0 ldr r0, _08036AEC @ =gEnemyParty adds r4, r1, r0 adds r0, r4, 0 movs r1, 0x39 bl GetMonData cmp r0, 0 beq _08036A7E adds r0, r4, 0 movs r1, 0x41 bl GetMonData cmp r0, 0 beq _08036A7E adds r0, r4, 0 movs r1, 0x41 bl GetMonData movs r1, 0xCE lsls r1, 1 cmp r0, r1 beq _08036A7E ldr r1, _08036AF0 @ =gUnknown_02024A6A lsls r0, r7, 1 adds r0, r1 ldrh r0, [r0] cmp r5, r0 beq _08036A7E lsls r0, r6, 1 adds r0, r1 ldrh r0, [r0] cmp r5, r0 beq _08036A7E ldr r1, _08036AF4 @ =0x02000000 ldr r2, _08036AF8 @ =0x00016068 adds r0, r7, r2 adds r0, r1 ldrb r0, [r0] cmp r5, r0 beq _08036A7E adds r0, r6, r2 adds r0, r1 ldrb r0, [r0] cmp r5, r0 beq _08036A7E movs r0, 0x1 add r8, r0 _08036A7E: adds r5, 0x1 cmp r5, 0x5 ble _08036A1A mov r2, r8 cmp r2, 0 beq _08036AFC bl ai_switch_perish_song lsls r0, 24 cmp r0, 0 bne _08036AE4 bl sub_8036054 lsls r0, 24 cmp r0, 0 bne _08036AE4 bl sub_80361E8 lsls r0, 24 cmp r0, 0 bne _08036AE4 bl ai_switchout_natural_cure lsls r0, 24 cmp r0, 0 bne _08036AE4 movs r0, 0 bl ai_has_super_effective_move_on_field lsls r0, 24 cmp r0, 0 bne _08036AFC bl ai_is_too_invested_in_stat_buffs lsls r0, 24 cmp r0, 0 bne _08036AFC movs r0, 0x8 movs r1, 0x2 bl sub_80366A4 lsls r0, 24 cmp r0, 0 bne _08036AE4 movs r0, 0x4 movs r1, 0x3 bl sub_80366A4 lsls r0, 24 cmp r0, 0 beq _08036AFC _08036AE4: movs r0, 0x1 b _08036AFE .align 2, 0 _08036AE8: .4byte gUnknown_02024A60 _08036AEC: .4byte gEnemyParty _08036AF0: .4byte gUnknown_02024A6A _08036AF4: .4byte 0x02000000 _08036AF8: .4byte 0x00016068 _08036AFC: movs r0, 0 _08036AFE: add sp, 0x4 pop {r3} mov r8, r3 pop {r4-r7} pop {r1} bx r1 thumb_func_end sub_8036904 thumb_func_start sub_8036B0C sub_8036B0C: @ 8036B0C push {r4-r6,lr} ldr r5, _08036B68 @ =gBattleTypeFlags ldrh r1, [r5] movs r0, 0x8 ands r0, r1 cmp r0, 0 bne _08036B1C b _08036C2E _08036B1C: bl sub_8036904 lsls r0, 24 cmp r0, 0 bne _08036B28 b _08036C24 _08036B28: ldr r4, _08036B6C @ =0x02000000 ldr r0, _08036B70 @ =gUnknown_02024A60 ldrb r0, [r0] bl battle_get_per_side_status lsls r0, 24 lsrs r0, 25 ldr r1, _08036B74 @ =0x000160c8 adds r0, r1 adds r0, r4 ldrb r0, [r0] cmp r0, 0x6 bne _08036BEA bl sub_8036CD4 lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0x6 bne _08036BD4 ldrh r1, [r5] movs r0, 0x1 ands r0, r1 cmp r0, 0 bne _08036B78 movs r0, 0x1 bl battle_get_side_with_given_state lsls r0, 24 lsrs r5, r0, 24 adds r6, r5, 0 b _08036B8C .align 2, 0 _08036B68: .4byte gBattleTypeFlags _08036B6C: .4byte 0x02000000 _08036B70: .4byte gUnknown_02024A60 _08036B74: .4byte 0x000160c8 _08036B78: movs r0, 0x1 bl battle_get_side_with_given_state lsls r0, 24 lsrs r6, r0, 24 movs r0, 0x3 bl battle_get_side_with_given_state lsls r0, 24 lsrs r5, r0, 24 _08036B8C: movs r4, 0 _08036B8E: movs r0, 0x64 muls r0, r4 ldr r1, _08036C0C @ =gEnemyParty adds r0, r1 movs r1, 0x39 bl GetMonData cmp r0, 0 beq _08036BCE ldr r1, _08036C10 @ =gUnknown_02024A6A lsls r0, r6, 1 adds r0, r1 ldrh r0, [r0] cmp r4, r0 beq _08036BCE lsls r0, r5, 1 adds r0, r1 ldrh r0, [r0] cmp r4, r0 beq _08036BCE ldr r1, _08036C14 @ =0x02000000 ldr r2, _08036C18 @ =0x00016068 adds r0, r6, r2 adds r0, r1 ldrb r0, [r0] cmp r4, r0 beq _08036BCE adds r0, r5, r2 adds r0, r1 ldrb r0, [r0] cmp r4, r0 bne _08036BD4 _08036BCE: adds r4, 0x1 cmp r4, 0x5 ble _08036B8E _08036BD4: ldr r0, _08036C1C @ =gUnknown_02024A60 ldrb r0, [r0] bl battle_get_per_side_status ldr r1, _08036C14 @ =0x02000000 lsls r0, 24 lsrs r0, 25 ldr r3, _08036C20 @ =0x000160c8 adds r0, r3 adds r0, r1 strb r4, [r0] _08036BEA: ldr r4, _08036C1C @ =gUnknown_02024A60 ldrb r0, [r4] bl battle_get_per_side_status ldr r2, _08036C14 @ =0x02000000 ldrb r1, [r4] ldr r3, _08036C18 @ =0x00016068 adds r1, r3 adds r1, r2 lsls r0, 24 lsrs r0, 25 adds r3, 0x60 adds r0, r3 adds r0, r2 ldrb r0, [r0] strb r0, [r1] b _08036C40 .align 2, 0 _08036C0C: .4byte gEnemyParty _08036C10: .4byte gUnknown_02024A6A _08036C14: .4byte 0x02000000 _08036C18: .4byte 0x00016068 _08036C1C: .4byte gUnknown_02024A60 _08036C20: .4byte 0x000160c8 _08036C24: bl sub_803708C lsls r0, 24 cmp r0, 0 bne _08036C40 _08036C2E: ldr r0, _08036C48 @ =gUnknown_02024A60 ldrb r0, [r0] movs r2, 0x1 eors r2, r0 lsls r2, 8 movs r0, 0x1 movs r1, 0 bl dp01_build_cmdbuf_x21_a_bb _08036C40: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _08036C48: .4byte gUnknown_02024A60 thumb_func_end sub_8036B0C thumb_func_start sub_8036C4C sub_8036C4C: @ 8036C4C push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x4 adds r6, r3, 0 lsls r0, 24 lsrs r0, 24 str r0, [sp] lsls r1, 24 lsrs r1, 24 mov r9, r1 lsls r2, 24 lsrs r2, 24 mov r8, r2 movs r7, 0 ldr r0, _08036CD0 @ =gTypeEffectiveness mov r10, r0 ldrb r0, [r0] cmp r0, 0xFF beq _08036CBE mov r5, r10 _08036C7A: ldrb r0, [r5] cmp r0, 0xFE beq _08036CB0 ldr r1, [sp] cmp r0, r1 bne _08036CB0 ldrb r4, [r5, 0x1] cmp r4, r9 bne _08036C9A ldrb r1, [r6] ldrb r0, [r5, 0x2] muls r0, r1 movs r1, 0xA bl __divsi3 strb r0, [r6] _08036C9A: cmp r4, r8 bne _08036CB0 cmp r9, r8 beq _08036CB0 ldrb r1, [r6] ldrb r0, [r5, 0x2] muls r0, r1 movs r1, 0xA bl __divsi3 strb r0, [r6] _08036CB0: adds r5, 0x3 adds r7, 0x3 mov r1, r10 adds r0, r7, r1 ldrb r0, [r0] cmp r0, 0xFF bne _08036C7A _08036CBE: add sp, 0x4 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08036CD0: .4byte gTypeEffectiveness thumb_func_end sub_8036C4C thumb_func_start sub_8036CD4 sub_8036CD4: @ 8036CD4 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x1C ldr r0, _08036D1C @ =gBattleTypeFlags ldrh r1, [r0] movs r0, 0x1 ands r0, r1 cmp r0, 0 beq _08036D78 ldr r4, _08036D20 @ =gUnknown_02024A60 ldrb r0, [r4] str r0, [sp, 0xC] bl battle_get_per_side_status movs r5, 0x2 eors r0, r5 lsls r0, 24 lsrs r0, 24 bl battle_get_side_with_given_state ldr r1, _08036D24 @ =gUnknown_02024C0C ldrb r1, [r1] ldr r2, _08036D28 @ =gBitTable lsls r0, 24 lsrs r0, 22 adds r0, r2 ldr r0, [r0] ands r1, r0 cmp r1, 0 beq _08036D2C ldrb r4, [r4] str r4, [sp, 0x10] b _08036D42 .align 2, 0 _08036D1C: .4byte gBattleTypeFlags _08036D20: .4byte gUnknown_02024A60 _08036D24: .4byte gUnknown_02024C0C _08036D28: .4byte gBitTable _08036D2C: ldrb r0, [r4] bl battle_get_per_side_status eors r0, r5 lsls r0, 24 lsrs r0, 24 bl battle_get_side_with_given_state lsls r0, 24 lsrs r0, 24 str r0, [sp, 0x10] _08036D42: bl Random movs r3, 0x2 ands r0, r3 lsls r0, 24 lsrs r0, 24 mov r10, r0 ldr r0, _08036D70 @ =gUnknown_02024C0C ldrb r1, [r0] ldr r2, _08036D74 @ =gBitTable mov r4, r10 lsls r0, r4, 2 adds r0, r2 ldr r0, [r0] ands r1, r0 cmp r1, 0 beq _08036D8C eors r4, r3 lsls r0, r4, 24 lsrs r0, 24 mov r10, r0 b _08036D8C .align 2, 0 _08036D70: .4byte gUnknown_02024C0C _08036D74: .4byte gBitTable _08036D78: movs r0, 0 bl battle_get_side_with_given_state lsls r0, 24 lsrs r0, 24 mov r10, r0 ldr r0, _08036E5C @ =gUnknown_02024A60 ldrb r0, [r0] str r0, [sp, 0x10] str r0, [sp, 0xC] _08036D8C: movs r0, 0 mov r9, r0 mov r1, sp str r1, [sp, 0x14] _08036D94: movs r2, 0 str r2, [sp, 0x4] movs r3, 0x6 str r3, [sp, 0x8] movs r7, 0 ldr r4, _08036E60 @ =gBitTable mov r8, r4 _08036DA2: movs r0, 0x64 adds r1, r7, 0 muls r1, r0 ldr r0, _08036E64 @ =gEnemyParty adds r4, r1, r0 adds r0, r4, 0 movs r1, 0xB bl GetMonData lsls r0, 16 lsrs r5, r0, 16 cmp r5, 0 beq _08036E7C adds r0, r4, 0 movs r1, 0x39 bl GetMonData cmp r0, 0 beq _08036E7C mov r1, r8 ldr r0, [r1] mov r2, r9 ands r0, r2 cmp r0, 0 bne _08036E7C ldr r1, _08036E68 @ =gUnknown_02024A6A ldr r3, [sp, 0xC] lsls r0, r3, 1 adds r0, r1 ldrh r0, [r0] cmp r0, r7 beq _08036E7C ldr r4, [sp, 0x10] lsls r0, r4, 1 adds r0, r1 ldrh r0, [r0] cmp r0, r7 beq _08036E7C ldr r1, _08036E6C @ =0x02000000 ldr r2, _08036E70 @ =0x00016068 adds r0, r3, r2 adds r0, r1 ldrb r0, [r0] cmp r7, r0 beq _08036E7C adds r0, r4, r2 adds r0, r1 ldrb r0, [r0] cmp r7, r0 beq _08036E7C ldr r1, _08036E74 @ =gBaseStats lsls r0, r5, 3 subs r0, r5 lsls r0, 2 adds r0, r1 ldrb r5, [r0, 0x6] ldrb r6, [r0, 0x7] movs r0, 0xA ldr r3, [sp, 0x14] strb r0, [r3] movs r0, 0x58 mov r4, r10 muls r4, r0 ldr r0, _08036E78 @ =gBattleMons adds r4, r0 adds r0, r4, 0 adds r0, 0x21 ldrb r0, [r0] adds r1, r5, 0 adds r2, r6, 0 mov r3, sp bl sub_8036C4C adds r4, 0x22 ldrb r0, [r4] adds r1, r5, 0 adds r2, r6, 0 mov r3, sp bl sub_8036C4C ldr r2, [sp, 0x4] ldr r1, [sp, 0x14] ldrb r1, [r1] cmp r2, r1 bcs _08036E8A ldr r2, [sp, 0x14] ldrb r2, [r2] str r2, [sp, 0x4] lsls r0, r7, 24 lsrs r0, 24 str r0, [sp, 0x8] b _08036E8A .align 2, 0 _08036E5C: .4byte gUnknown_02024A60 _08036E60: .4byte gBitTable _08036E64: .4byte gEnemyParty _08036E68: .4byte gUnknown_02024A6A _08036E6C: .4byte 0x02000000 _08036E70: .4byte 0x00016068 _08036E74: .4byte gBaseStats _08036E78: .4byte gBattleMons _08036E7C: mov r3, r8 ldr r0, [r3] mov r4, r9 orrs r4, r0 lsls r0, r4, 24 lsrs r0, 24 mov r9, r0 _08036E8A: movs r0, 0x4 add r8, r0 adds r7, 0x1 cmp r7, 0x5 ble _08036DA2 ldr r1, [sp, 0x8] cmp r1, 0x6 beq _08036EF8 movs r7, 0 movs r0, 0x64 adds r5, r1, 0 muls r5, r0 ldr r6, _08036EEC @ =gEnemyParty _08036EA4: adds r1, r7, 0 adds r1, 0xD adds r0, r5, r6 bl GetMonData lsls r0, 16 lsrs r4, r0, 16 cmp r4, 0 beq _08036ECA ldr r0, _08036EF0 @ =gUnknown_02024A60 ldrb r1, [r0] adds r0, r4, 0 mov r2, r10 bl move_effectiveness_something movs r1, 0x2 ands r1, r0 cmp r1, 0 bne _08036ED0 _08036ECA: adds r7, 0x1 cmp r7, 0x3 ble _08036EA4 _08036ED0: cmp r7, 0x4 beq _08036ED6 b _08036FEE _08036ED6: ldr r2, [sp, 0x8] lsls r0, r2, 2 ldr r3, _08036EF4 @ =gBitTable adds r0, r3 ldr r0, [r0] mov r4, r9 orrs r4, r0 lsls r0, r4, 24 lsrs r0, 24 b _08036EFA .align 2, 0 _08036EEC: .4byte gEnemyParty _08036EF0: .4byte gUnknown_02024A60 _08036EF4: .4byte gBitTable _08036EF8: movs r0, 0x3F _08036EFA: mov r9, r0 mov r1, r9 cmp r1, 0x3F beq _08036F04 b _08036D94 _08036F04: ldr r0, _08037000 @ =gUnknown_02024DEC movs r2, 0 strh r2, [r0] ldr r0, _08037004 @ =0x02000000 ldr r3, _08037008 @ =0x0001601c adds r1, r0, r3 strb r2, [r1] ldr r4, _0803700C @ =0x0001601f adds r0, r4 movs r1, 0x1 strb r1, [r0] ldr r0, _08037010 @ =gBattleMoveFlags strb r2, [r0] ldr r0, _08037014 @ =gCritMultiplier strb r1, [r0] movs r0, 0 str r0, [sp, 0x4] movs r1, 0x6 str r1, [sp, 0x8] movs r7, 0 _08036F2C: movs r0, 0x64 adds r6, r7, 0 muls r6, r0 ldr r2, _08037018 @ =gEnemyParty adds r4, r6, r2 adds r0, r4, 0 movs r1, 0xB bl GetMonData lsls r0, 16 adds r3, r7, 0x1 str r3, [sp, 0x18] cmp r0, 0 beq _08036FE8 adds r0, r4, 0 movs r1, 0x39 bl GetMonData cmp r0, 0 beq _08036FE8 ldr r1, _0803701C @ =gUnknown_02024A6A ldr r4, [sp, 0xC] lsls r0, r4, 1 adds r0, r1 ldrh r0, [r0] cmp r0, r7 beq _08036FE8 ldr r2, [sp, 0x10] lsls r0, r2, 1 adds r0, r1 ldrh r0, [r0] cmp r0, r7 beq _08036FE8 ldr r1, _08037004 @ =0x02000000 ldr r3, _08037020 @ =0x00016068 adds r0, r4, r3 adds r0, r1 ldrb r0, [r0] cmp r7, r0 beq _08036FE8 adds r0, r2, r3 adds r0, r1 ldrb r0, [r0] cmp r7, r0 beq _08036FE8 movs r5, 0 mov r9, r6 ldr r4, _08037024 @ =gBattleMoveDamage mov r8, r4 ldr r6, _08037028 @ =gUnknown_02024A60 _08036F90: adds r1, r5, 0 adds r1, 0xD ldr r0, _08037018 @ =gEnemyParty add r0, r9 bl GetMonData lsls r0, 16 lsrs r4, r0, 16 movs r0, 0 mov r1, r8 str r0, [r1] cmp r4, 0 beq _08036FCC ldr r0, _0803702C @ =gBattleMoves lsls r1, r4, 1 adds r1, r4 lsls r1, 2 adds r1, r0 ldrb r0, [r1, 0x1] cmp r0, 0x1 beq _08036FCC ldrb r0, [r6] mov r1, r10 bl sub_801CAF8 ldrb r1, [r6] adds r0, r4, 0 mov r2, r10 bl move_effectiveness_something _08036FCC: mov r2, r8 ldr r0, [r2] ldr r3, [sp, 0x4] cmp r3, r0 bge _08036FE2 lsls r0, 24 lsrs r0, 24 str r0, [sp, 0x4] lsls r0, r7, 24 lsrs r0, 24 str r0, [sp, 0x8] _08036FE2: adds r5, 0x1 cmp r5, 0x3 ble _08036F90 _08036FE8: ldr r7, [sp, 0x18] cmp r7, 0x5 ble _08036F2C _08036FEE: ldr r0, [sp, 0x8] add sp, 0x1C pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r1} bx r1 .align 2, 0 _08037000: .4byte gUnknown_02024DEC _08037004: .4byte 0x02000000 _08037008: .4byte 0x0001601c _0803700C: .4byte 0x0001601f _08037010: .4byte gBattleMoveFlags _08037014: .4byte gCritMultiplier _08037018: .4byte gEnemyParty _0803701C: .4byte gUnknown_02024A6A _08037020: .4byte 0x00016068 _08037024: .4byte gBattleMoveDamage _08037028: .4byte gUnknown_02024A60 _0803702C: .4byte gBattleMoves thumb_func_end sub_8036CD4 thumb_func_start ai_identify_item_effect ai_identify_item_effect: @ 8037030 push {r4,lr} adds r2, r1, 0 lsls r0, 24 lsrs r0, 24 cmp r0, 0x13 bne _08037040 movs r0, 0x1 b _08037086 _08037040: ldrb r1, [r2, 0x4] movs r0, 0x4 ands r0, r1 cmp r0, 0 beq _0803704E movs r0, 0x2 b _08037086 _0803704E: ldrb r4, [r2, 0x3] movs r3, 0x3F adds r0, r3, 0 ands r0, r4 cmp r0, 0 beq _0803705E movs r0, 0x3 b _08037086 _0803705E: ldrb r1, [r2] adds r0, r3, 0 ands r0, r1 cmp r0, 0 bne _08037074 ldrb r0, [r2, 0x1] cmp r0, 0 bne _08037074 ldrb r0, [r2, 0x2] cmp r0, 0 beq _08037078 _08037074: movs r0, 0x4 b _08037086 _08037078: movs r0, 0x80 ands r0, r4 cmp r0, 0 bne _08037084 movs r0, 0x6 b _08037086 _08037084: movs r0, 0x5 _08037086: pop {r4} pop {r1} bx r1 thumb_func_end ai_identify_item_effect thumb_func_start sub_803708C sub_803708C: @ 803708C push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x8 movs r0, 0 str r0, [sp] mov r8, r0 mov r9, r0 _080370A0: movs r0, 0x64 mov r1, r9 muls r1, r0 ldr r0, _08037170 @ =gEnemyParty adds r4, r1, r0 adds r0, r4, 0 movs r1, 0x39 bl GetMonData cmp r0, 0 beq _080370DC adds r0, r4, 0 movs r1, 0x41 bl GetMonData cmp r0, 0 beq _080370DC adds r0, r4, 0 movs r1, 0x41 bl GetMonData movs r1, 0xCE lsls r1, 1 cmp r0, r1 beq _080370DC ldr r0, [sp] adds r0, 0x1 lsls r0, 24 lsrs r0, 24 str r0, [sp] _080370DC: movs r1, 0x1 add r9, r1 mov r2, r9 cmp r2, 0x5 ble _080370A0 movs r3, 0 mov r9, r3 _080370EA: ldr r4, _08037174 @ =0x02016a00 mov r0, r9 cmp r0, 0 beq _08037106 adds r0, r4, 0 adds r0, 0x2C ldrb r0, [r0] mov r1, r9 subs r0, r1 adds r0, 0x1 ldr r2, [sp] cmp r2, r0 ble _08037106 b _080374EC _08037106: mov r3, r9 lsls r1, r3, 1 adds r0, r4, 0 adds r0, 0x24 adds r0, r1, r0 ldrh r0, [r0] mov r10, r0 str r1, [sp, 0x4] cmp r0, 0 bne _0803711C b _080374EC _0803711C: ldr r1, _08037178 @ =gItemEffectTable subs r0, 0xD lsls r0, 2 adds r0, r1 ldr r1, [r0] cmp r1, 0 bne _0803712C b _080374EC _0803712C: adds r5, r1, 0 mov r0, r10 cmp r0, 0xAF bne _08037136 ldr r5, _0803717C @ =gSaveBlock1 + 0x3676 _08037136: mov r1, r10 lsls r0, r1, 24 lsrs r0, 24 adds r1, r5, 0 bl ai_identify_item_effect ldr r2, _08037180 @ =0xfffe9600 adds r4, r2 ldr r3, _08037184 @ =gUnknown_02024A60 ldrb r1, [r3] lsrs r1, 1 ldr r2, _08037188 @ =0x000160d8 adds r1, r2 adds r1, r4 strb r0, [r1] ldrb r0, [r3] lsrs r0, 1 adds r0, r2 adds r0, r4 ldrb r0, [r0] subs r0, 0x1 cmp r0, 0x5 bls _08037166 b _080374A8 _08037166: lsls r0, 2 ldr r1, _0803718C @ =_08037190 adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _08037170: .4byte gEnemyParty _08037174: .4byte 0x02016a00 _08037178: .4byte gItemEffectTable _0803717C: .4byte gSaveBlock1 + 0x3676 _08037180: .4byte 0xfffe9600 _08037184: .4byte gUnknown_02024A60 _08037188: .4byte 0x000160d8 _0803718C: .4byte _08037190 .align 2, 0 _08037190: .4byte _080371A8 .4byte _080371D0 .4byte _0803721C .4byte _08037388 .4byte _08037468 .4byte _080374F8 _080371A8: ldr r2, _080371C8 @ =gBattleMons ldr r0, _080371CC @ =gUnknown_02024A60 ldrb r1, [r0] movs r0, 0x58 muls r0, r1 adds r0, r2 ldrh r1, [r0, 0x2C] ldrh r0, [r0, 0x28] lsrs r1, 2 cmp r0, r1 bcc _080371C0 b _080374A8 _080371C0: cmp r0, 0 bne _080371C6 b _080374A8 _080371C6: b _08037450 .align 2, 0 _080371C8: .4byte gBattleMons _080371CC: .4byte gUnknown_02024A60 _080371D0: mov r0, r10 movs r1, 0x4 movs r2, 0x4 bl GetItemEffectParamOffset lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0 bne _080371E4 b _080374A8 _080371E4: ldr r2, _08037214 @ =gBattleMons ldr r0, _08037218 @ =gUnknown_02024A60 ldrb r1, [r0] movs r0, 0x58 muls r0, r1 adds r1, r0, r2 ldrh r2, [r1, 0x28] cmp r2, 0 bne _080371F8 b _080374A8 _080371F8: ldrh r3, [r1, 0x2C] lsrs r0, r3, 2 cmp r2, r0 bcs _08037202 b _08037496 _08037202: adds r0, r2, 0 subs r0, r3, r0 adds r1, r5, r4 ldrb r1, [r1] cmp r0, r1 bgt _08037210 b _080374A8 _08037210: b _08037496 .align 2, 0 _08037214: .4byte gBattleMons _08037218: .4byte gUnknown_02024A60 _0803721C: ldr r2, _08037378 @ =0x02000000 ldr r3, _0803737C @ =gUnknown_02024A60 ldrb r0, [r3] lsrs r0, 1 ldr r6, _08037380 @ =0x000160da adds r0, r6 adds r0, r2 movs r1, 0 mov r12, r1 movs r1, 0 strb r1, [r0] ldrb r1, [r5, 0x3] movs r7, 0x20 movs r0, 0x20 ands r0, r1 cmp r0, 0 beq _08037264 ldr r1, _08037384 @ =gBattleMons ldrb r4, [r3] movs r0, 0x58 muls r0, r4 adds r1, 0x4C adds r0, r1 ldr r0, [r0] movs r1, 0x7 ands r0, r1 cmp r0, 0 beq _08037264 lsrs r1, r4, 1 adds r1, r6 adds r1, r2 ldrb r0, [r1] orrs r0, r7 strb r0, [r1] movs r0, 0x1 mov r8, r0 _08037264: ldrb r1, [r5, 0x3] movs r6, 0x10 movs r0, 0x10 ands r0, r1 cmp r0, 0 beq _080372A0 ldr r1, _08037384 @ =gBattleMons ldrb r4, [r3] movs r0, 0x58 muls r0, r4 adds r1, 0x4C adds r0, r1 ldr r1, [r0] movs r0, 0x8 ands r0, r1 cmp r0, 0 bne _0803728E movs r0, 0x80 ands r1, r0 cmp r1, 0 beq _080372A0 _0803728E: lsrs r1, r4, 1 ldr r0, _08037380 @ =0x000160da adds r1, r0 adds r1, r2 ldrb r0, [r1] orrs r0, r6 strb r0, [r1] movs r1, 0x1 mov r8, r1 _080372A0: ldrb r1, [r5, 0x3] movs r6, 0x8 movs r0, 0x8 ands r0, r1 cmp r0, 0 beq _080372D4 ldr r1, _08037384 @ =gBattleMons ldrb r4, [r3] movs r0, 0x58 muls r0, r4 adds r1, 0x4C adds r0, r1 ldr r0, [r0] movs r1, 0x10 ands r0, r1 cmp r0, 0 beq _080372D4 lsrs r0, r4, 1 ldr r1, _08037380 @ =0x000160da adds r0, r1 adds r0, r2 ldrb r1, [r0] orrs r1, r6 strb r1, [r0] movs r0, 0x1 mov r8, r0 _080372D4: ldrb r1, [r5, 0x3] movs r6, 0x4 movs r0, 0x4 ands r0, r1 cmp r0, 0 beq _08037308 ldr r1, _08037384 @ =gBattleMons ldrb r4, [r3] movs r0, 0x58 muls r0, r4 adds r1, 0x4C adds r0, r1 ldr r0, [r0] movs r1, 0x20 ands r0, r1 cmp r0, 0 beq _08037308 lsrs r0, r4, 1 ldr r1, _08037380 @ =0x000160da adds r0, r1 adds r0, r2 ldrb r1, [r0] orrs r1, r6 strb r1, [r0] movs r0, 0x1 mov r8, r0 _08037308: ldrb r1, [r5, 0x3] movs r6, 0x2 movs r0, 0x2 ands r0, r1 cmp r0, 0 beq _0803733C ldr r1, _08037384 @ =gBattleMons ldrb r4, [r3] movs r0, 0x58 muls r0, r4 adds r1, 0x4C adds r0, r1 ldr r0, [r0] movs r1, 0x40 ands r0, r1 cmp r0, 0 beq _0803733C lsrs r0, r4, 1 ldr r1, _08037380 @ =0x000160da adds r0, r1 adds r0, r2 ldrb r1, [r0] orrs r1, r6 strb r1, [r0] movs r0, 0x1 mov r8, r0 _0803733C: ldrb r1, [r5, 0x3] movs r4, 0x1 movs r0, 0x1 ands r0, r1 cmp r0, 0 bne _0803734A b _080374A8 _0803734A: ldr r1, _08037384 @ =gBattleMons ldrb r3, [r3] movs r0, 0x58 muls r0, r3 adds r1, 0x50 adds r0, r1 ldr r0, [r0] movs r1, 0x7 ands r0, r1 cmp r0, 0 bne _08037362 b _080374A8 _08037362: lsrs r0, r3, 1 ldr r1, _08037380 @ =0x000160da adds r0, r1 adds r0, r2 ldrb r1, [r0] orrs r1, r4 strb r1, [r0] movs r2, 0x1 mov r8, r2 b _080374AE .align 2, 0 _08037378: .4byte 0x02000000 _0803737C: .4byte gUnknown_02024A60 _08037380: .4byte 0x000160da _08037384: .4byte gBattleMons _08037388: ldr r6, _08037458 @ =0x02000000 ldr r4, _0803745C @ =gUnknown_02024A60 ldrb r0, [r4] lsrs r0, 1 ldr r3, _08037460 @ =0x000160da adds r0, r3 adds r0, r6 movs r1, 0 mov r12, r1 movs r1, 0 strb r1, [r0] ldr r1, _08037464 @ =gUnknown_02024CA8 ldrb r2, [r4] lsls r0, r2, 3 subs r0, r2 lsls r0, 2 adds r0, r1 ldrb r0, [r0, 0x16] cmp r0, 0 beq _080374A8 ldrb r1, [r5] movs r7, 0xF adds r0, r7, 0 ands r0, r1 cmp r0, 0 beq _080373CA lsrs r0, r2, 1 adds r0, r3 adds r0, r6 ldrb r1, [r0] movs r2, 0x1 orrs r1, r2 strb r1, [r0] _080373CA: ldrb r1, [r5, 0x1] movs r2, 0xF0 mov r8, r2 mov r0, r8 ands r0, r1 cmp r0, 0 beq _080373E8 ldrb r0, [r4] lsrs r0, 1 adds r0, r3 adds r0, r6 ldrb r1, [r0] movs r2, 0x2 orrs r1, r2 strb r1, [r0] _080373E8: ldrb r1, [r5, 0x1] adds r0, r7, 0 ands r0, r1 cmp r0, 0 beq _08037402 ldrb r0, [r4] lsrs r0, 1 adds r0, r3 adds r0, r6 ldrb r1, [r0] movs r2, 0x4 orrs r1, r2 strb r1, [r0] _08037402: ldrb r1, [r5, 0x2] adds r0, r7, 0 ands r0, r1 cmp r0, 0 beq _0803741C ldrb r0, [r4] lsrs r0, 1 adds r0, r3 adds r0, r6 ldrb r1, [r0] movs r2, 0x8 orrs r1, r2 strb r1, [r0] _0803741C: ldrb r1, [r5, 0x2] mov r0, r8 ands r0, r1 cmp r0, 0 beq _08037436 ldrb r0, [r4] lsrs r0, 1 adds r0, r3 adds r0, r6 ldrb r1, [r0] movs r2, 0x20 orrs r1, r2 strb r1, [r0] _08037436: ldrb r1, [r5] movs r0, 0x30 ands r0, r1 cmp r0, 0 beq _08037450 ldrb r0, [r4] lsrs r0, 1 adds r0, r3 adds r0, r6 ldrb r1, [r0] movs r2, 0x80 orrs r1, r2 strb r1, [r0] _08037450: movs r3, 0x1 mov r8, r3 b _080374AE .align 2, 0 _08037458: .4byte 0x02000000 _0803745C: .4byte gUnknown_02024A60 _08037460: .4byte 0x000160da _08037464: .4byte gUnknown_02024CA8 _08037468: ldr r4, _0803749C @ =gUnknown_02024A60 ldrb r0, [r4] bl battle_side_get_owner lsls r0, 24 lsrs r3, r0, 24 ldr r2, _080374A0 @ =gUnknown_02024CA8 ldrb r1, [r4] lsls r0, r1, 3 subs r0, r1 lsls r0, 2 adds r0, r2 ldrb r0, [r0, 0x16] cmp r0, 0 beq _080374A8 ldr r0, _080374A4 @ =gUnknown_02024C80 lsls r1, r3, 1 adds r1, r3 lsls r1, 2 adds r1, r0 ldrb r0, [r1, 0x2] cmp r0, 0 bne _080374A8 _08037496: movs r0, 0x1 mov r8, r0 b _080374AE .align 2, 0 _0803749C: .4byte gUnknown_02024A60 _080374A0: .4byte gUnknown_02024CA8 _080374A4: .4byte gUnknown_02024C80 _080374A8: mov r1, r8 cmp r1, 0 beq _080374EC _080374AE: movs r0, 0x1 movs r1, 0x1 movs r2, 0 bl dp01_build_cmdbuf_x21_a_bb ldr r1, _080374DC @ =0x02000000 ldr r0, _080374E0 @ =gUnknown_02024A60 ldrb r0, [r0] lsrs r0, 1 lsls r0, 1 ldr r2, _080374E4 @ =0x000160d4 adds r0, r2 adds r0, r1 movs r2, 0 mov r3, r10 strb r3, [r0] ldr r0, _080374E8 @ =0x00016a24 adds r1, r0 ldr r3, [sp, 0x4] adds r1, r3, r1 strh r2, [r1] mov r0, r8 b _080374FA .align 2, 0 _080374DC: .4byte 0x02000000 _080374E0: .4byte gUnknown_02024A60 _080374E4: .4byte 0x000160d4 _080374E8: .4byte 0x00016a24 _080374EC: movs r0, 0x1 add r9, r0 mov r1, r9 cmp r1, 0x3 bgt _080374F8 b _080370EA _080374F8: movs r0, 0 _080374FA: add sp, 0x8 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r1} bx r1 thumb_func_end sub_803708C thumb_func_start nullsub_47 nullsub_47: @ 803750C bx lr thumb_func_end nullsub_47 thumb_func_start sub_8037510 sub_8037510: @ 8037510 ldr r1, _08037520 @ =gUnknown_03004330 ldr r0, _08037524 @ =gUnknown_02024A60 ldrb r0, [r0] lsls r0, 2 adds r0, r1 ldr r1, _08037528 @ =sub_803752C str r1, [r0] bx lr .align 2, 0 _08037520: .4byte gUnknown_03004330 _08037524: .4byte gUnknown_02024A60 _08037528: .4byte sub_803752C thumb_func_end sub_8037510 thumb_func_start sub_803752C sub_803752C: @ 803752C push {lr} ldr r2, _08037560 @ =gUnknown_02024A64 ldr r1, _08037564 @ =gBitTable ldr r0, _08037568 @ =gUnknown_02024A60 ldrb r3, [r0] lsls r0, r3, 2 adds r0, r1 ldr r1, [r2] ldr r0, [r0] ands r1, r0 cmp r1, 0 beq _08037578 ldr r0, _0803756C @ =gUnknown_02023A60 lsls r1, r3, 9 adds r1, r0 ldrb r0, [r1] cmp r0, 0x38 bhi _08037574 ldr r0, _08037570 @ =gUnknown_081FB048 ldrb r1, [r1] lsls r1, 2 adds r1, r0 ldr r0, [r1] bl _call_via_r0 b _08037578 .align 2, 0 _08037560: .4byte gUnknown_02024A64 _08037564: .4byte gBitTable _08037568: .4byte gUnknown_02024A60 _0803756C: .4byte gUnknown_02023A60 _08037570: .4byte gUnknown_081FB048 _08037574: bl dp01_tbl4_exec_completed _08037578: pop {r0} bx r0 thumb_func_end sub_803752C thumb_func_start sub_803757C sub_803757C: @ 803757C push {lr} ldr r2, _080375A4 @ =gSprites ldr r1, _080375A8 @ =gUnknown_02024BE0 ldr r0, _080375AC @ =gUnknown_02024A60 ldrb r0, [r0] adds r0, r1 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r2, 0x1C adds r0, r2 ldr r1, [r0] ldr r0, _080375B0 @ =SpriteCallbackDummy cmp r1, r0 bne _080375A0 bl dp01_tbl4_exec_completed _080375A0: pop {r0} bx r0 .align 2, 0 _080375A4: .4byte gSprites _080375A8: .4byte gUnknown_02024BE0 _080375AC: .4byte gUnknown_02024A60 _080375B0: .4byte SpriteCallbackDummy thumb_func_end sub_803757C thumb_func_start sub_80375B4 sub_80375B4: @ 80375B4 push {r4-r6,lr} ldr r4, _0803762C @ =gSprites ldr r6, _08037630 @ =gUnknown_02024BE0 ldr r5, _08037634 @ =gUnknown_02024A60 ldrb r0, [r5] adds r0, r6 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r2, r0, 2 adds r0, r4, 0 adds r0, 0x1C adds r0, r2, r0 ldr r1, [r0] ldr r0, _08037638 @ =SpriteCallbackDummy cmp r1, r0 bne _08037624 adds r0, r2, r4 ldrh r0, [r0, 0x6] bl sub_8031B74 ldrb r0, [r5] adds r0, r6 ldrb r0, [r0] lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r1, r4 ldrh r0, [r1, 0x38] ldr r2, _0803763C @ =0x000003ff ands r2, r0 ldrh r3, [r1, 0x4] ldr r0, _08037640 @ =0xfffffc00 ands r0, r3 orrs r0, r2 strh r0, [r1, 0x4] ldrb r0, [r5] adds r0, r6 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 bl FreeSpriteOamMatrix ldrb r0, [r5] adds r0, r6 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 bl DestroySprite bl dp01_tbl4_exec_completed _08037624: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0803762C: .4byte gSprites _08037630: .4byte gUnknown_02024BE0 _08037634: .4byte gUnknown_02024A60 _08037638: .4byte SpriteCallbackDummy _0803763C: .4byte 0x000003ff _08037640: .4byte 0xfffffc00 thumb_func_end sub_80375B4 thumb_func_start sub_8037644 sub_8037644: @ 8037644 push {lr} ldr r3, _08037678 @ =gUnknown_02024A60 ldrb r0, [r3] lsls r1, r0, 1 adds r1, r0 lsls r1, 2 ldr r2, _0803767C @ =0x02017810 adds r1, r2 ldrb r0, [r1, 0x9] subs r0, 0x1 strb r0, [r1, 0x9] lsls r0, 24 lsrs r0, 24 cmp r0, 0xFF bne _08037674 ldrb r0, [r3] lsls r1, r0, 1 adds r1, r0 lsls r1, 2 adds r1, r2 movs r0, 0 strb r0, [r1, 0x9] bl dp01_tbl4_exec_completed _08037674: pop {r0} bx r0 .align 2, 0 _08037678: .4byte gUnknown_02024A60 _0803767C: .4byte 0x02017810 thumb_func_end sub_8037644 thumb_func_start sub_8037680 sub_8037680: @ 8037680 push {r4-r7,lr} movs r6, 0 bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _080376A4 bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _080376D8 ldr r0, _080376C4 @ =gBattleTypeFlags ldrh r1, [r0] movs r0, 0x40 ands r0, r1 cmp r0, 0 beq _080376D8 _080376A4: ldr r2, _080376C8 @ =gSprites ldr r1, _080376CC @ =gUnknown_03004340 ldr r0, _080376D0 @ =gUnknown_02024A60 ldrb r0, [r0] adds r0, r1 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r2, 0x1C adds r0, r2 ldr r1, [r0] ldr r0, _080376D4 @ =SpriteCallbackDummy cmp r1, r0 bne _0803770E b _0803770C .align 2, 0 _080376C4: .4byte gBattleTypeFlags _080376C8: .4byte gSprites _080376CC: .4byte gUnknown_03004340 _080376D0: .4byte gUnknown_02024A60 _080376D4: .4byte SpriteCallbackDummy _080376D8: ldr r2, _080377D8 @ =gSprites ldr r5, _080377DC @ =gUnknown_03004340 ldr r0, _080377E0 @ =gUnknown_02024A60 ldrb r3, [r0] adds r0, r3, r5 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r2, 0x1C adds r0, r2 ldr r4, [r0] ldr r0, _080377E4 @ =SpriteCallbackDummy cmp r4, r0 bne _0803770E movs r0, 0x2 eors r3, r0 adds r0, r3, r5 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 ldr r0, [r0] cmp r0, r4 bne _0803770E _0803770C: movs r6, 0x1 _0803770E: bl IsCryPlayingOrClearCrySongs lsls r0, 24 cmp r0, 0 beq _0803771A movs r6, 0 _0803771A: cmp r6, 0 bne _08037720 b _08037822 _08037720: ldr r7, _080377E0 @ =gUnknown_02024A60 ldrb r0, [r7] bl battle_get_per_side_status lsls r0, 24 lsrs r3, r0, 24 cmp r3, 0x1 bne _080377B4 ldrb r2, [r7] lsls r0, r2, 1 adds r0, r2 lsls r0, 2 ldr r5, _080377E8 @ =0x02017810 adds r4, r0, r5 ldrb r1, [r4, 0x1] adds r0, r3, 0 ands r0, r1 cmp r0, 0 beq _08037822 movs r6, 0x2 adds r1, r6, 0 eors r1, r2 lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r5 ldrb r1, [r0, 0x1] adds r0, r3, 0 ands r0, r1 cmp r0, 0 beq _08037822 ldrb r1, [r4] movs r3, 0x7F adds r0, r3, 0 ands r0, r1 strb r0, [r4] ldrb r0, [r7] lsls r1, r0, 1 adds r1, r0 lsls r1, 2 adds r1, r5 ldrb r2, [r1, 0x1] movs r4, 0x2 negs r4, r4 adds r0, r4, 0 ands r0, r2 strb r0, [r1, 0x1] ldrb r0, [r7] adds r1, r6, 0 eors r1, r0 lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r5 ldrb r1, [r0] ands r3, r1 strb r3, [r0] ldrb r0, [r7] adds r1, r6, 0 eors r1, r0 lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r5 ldrb r1, [r0, 0x1] ands r4, r1 strb r4, [r0, 0x1] ldr r4, _080377EC @ =0x000027f9 adds r0, r4, 0 bl FreeSpriteTilesByTag adds r0, r4, 0 bl FreeSpritePaletteByTag _080377B4: ldr r0, _080377F0 @ =gBattleTypeFlags ldrh r1, [r0] movs r0, 0x40 ands r0, r1 cmp r0, 0 beq _080377F8 ldrb r0, [r7] bl battle_get_per_side_status lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _08037804 ldr r0, _080377F4 @ =gMPlay_BGM bl m4aMPlayContinue b _08037804 .align 2, 0 _080377D8: .4byte gSprites _080377DC: .4byte gUnknown_03004340 _080377E0: .4byte gUnknown_02024A60 _080377E4: .4byte SpriteCallbackDummy _080377E8: .4byte 0x02017810 _080377EC: .4byte 0x000027f9 _080377F0: .4byte gBattleTypeFlags _080377F4: .4byte gMPlay_BGM _080377F8: ldr r0, _08037828 @ =gMPlay_BGM ldr r1, _0803782C @ =0x0000ffff movs r2, 0x80 lsls r2, 1 bl m4aMPlayVolumeControl _08037804: ldr r2, _08037830 @ =gUnknown_02024A60 ldrb r1, [r2] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 ldr r1, _08037834 @ =0x02017810 adds r0, r1 movs r1, 0x3 strb r1, [r0, 0x9] ldr r1, _08037838 @ =gUnknown_03004330 ldrb r0, [r2] lsls r0, 2 adds r0, r1 ldr r1, _0803783C @ =sub_8037644 str r1, [r0] _08037822: pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08037828: .4byte gMPlay_BGM _0803782C: .4byte 0x0000ffff _08037830: .4byte gUnknown_02024A60 _08037834: .4byte 0x02017810 _08037838: .4byte gUnknown_03004330 _0803783C: .4byte sub_8037644 thumb_func_end sub_8037680 thumb_func_start sub_8037840 sub_8037840: @ 8037840 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} ldr r6, _08037A48 @ =gUnknown_02024A60 ldrb r2, [r6] lsls r3, r2, 1 adds r0, r3, r2 lsls r0, 2 ldr r5, _08037A4C @ =0x02017810 adds r0, r5 ldrb r1, [r0] movs r4, 0x88 adds r0, r4, 0 ands r0, r1 cmp r0, 0 bne _08037878 ldr r0, _08037A50 @ =gUnknown_02024A6A adds r0, r3, r0 ldrh r1, [r0] movs r0, 0x64 muls r1, r0 ldr r0, _08037A54 @ =gEnemyParty adds r1, r0 adds r0, r2, 0 bl sub_8141828 _08037878: ldrb r0, [r6] movs r7, 0x2 adds r2, r7, 0 eors r2, r0 lsls r3, r2, 1 adds r0, r3, r2 lsls r0, 2 adds r0, r5 ldrb r1, [r0] adds r0, r4, 0 ands r0, r1 cmp r0, 0 bne _080378A6 ldr r0, _08037A50 @ =gUnknown_02024A6A adds r0, r3, r0 ldrh r1, [r0] movs r0, 0x64 muls r1, r0 ldr r0, _08037A54 @ =gEnemyParty adds r1, r0 adds r0, r2, 0 bl sub_8141828 _080378A6: ldrb r2, [r6] lsls r0, r2, 1 adds r0, r2 lsls r0, 2 adds r0, r5 ldrb r1, [r0] movs r3, 0x8 adds r0, r3, 0 ands r0, r1 cmp r0, 0 beq _080378BE b _08037A3A _080378BE: adds r1, r2, 0 eors r1, r7 lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r5 ldrb r1, [r0] adds r0, r3, 0 ands r0, r1 lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0 beq _080378DA b _08037A3A _080378DA: ldr r0, _08037A58 @ =gBattleTypeFlags ldrh r1, [r0] movs r0, 0x40 ands r0, r1 cmp r0, 0 beq _0803791A adds r0, r2, 0 bl battle_get_per_side_status lsls r0, 24 lsrs r0, 24 cmp r0, 0x3 bne _0803791A ldrb r0, [r6] lsls r1, r0, 1 adds r1, r0 lsls r1, 2 adds r1, r5 ldrb r0, [r1, 0x9] adds r0, 0x1 strb r0, [r1, 0x9] lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _0803790E b _08037A3A _0803790E: ldrb r1, [r6] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r5 strb r4, [r0, 0x9] _0803791A: bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _080379B2 ldr r0, _08037A58 @ =gBattleTypeFlags ldrh r1, [r0] movs r0, 0x40 ands r0, r1 cmp r0, 0 bne _080379B2 ldr r1, _08037A5C @ =gUnknown_0300434C ldr r5, _08037A48 @ =gUnknown_02024A60 ldrb r0, [r5] movs r4, 0x2 eors r0, r4 adds r0, r1 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 ldr r1, _08037A60 @ =gSprites adds r0, r1 bl DestroySprite ldr r0, _08037A64 @ =gUnknown_03004340 mov r8, r0 ldrb r0, [r5] adds r1, r4, 0 eors r1, r0 mov r2, r8 adds r0, r1, r2 ldrb r0, [r0] ldr r2, _08037A50 @ =gUnknown_02024A6A mov r10, r2 lsls r1, 1 add r1, r10 ldrh r1, [r1] movs r2, 0x64 mov r9, r2 mov r2, r9 muls r2, r1 adds r1, r2, 0 ldr r6, _08037A54 @ =gEnemyParty adds r1, r6 movs r2, 0 bl sub_8045A5C ldrb r0, [r5] eors r0, r4 bl sub_804777C ldrb r0, [r5] eors r0, r4 add r0, r8 ldrb r0, [r0] bl sub_8043DFC ldrb r0, [r5] eors r4, r0 lsls r0, r4, 1 add r0, r10 ldrh r0, [r0] mov r1, r9 muls r1, r0 adds r0, r1, 0 adds r0, r6 movs r1, 0xB bl GetMonData adds r1, r0, 0 lsls r1, 16 lsrs r1, 16 adds r0, r4, 0 bl sub_8032984 _080379B2: ldr r1, _08037A5C @ =gUnknown_0300434C ldr r4, _08037A48 @ =gUnknown_02024A60 ldrb r0, [r4] adds r0, r1 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 ldr r1, _08037A60 @ =gSprites adds r0, r1 bl DestroySprite ldr r5, _08037A64 @ =gUnknown_03004340 ldrb r1, [r4] adds r0, r1, r5 ldrb r0, [r0] ldr r2, _08037A50 @ =gUnknown_02024A6A mov r9, r2 lsls r1, 1 add r1, r9 ldrh r1, [r1] movs r2, 0x64 mov r8, r2 mov r2, r8 muls r2, r1 adds r1, r2, 0 ldr r6, _08037A54 @ =gEnemyParty adds r1, r6 movs r2, 0 bl sub_8045A5C ldrb r0, [r4] bl sub_804777C ldrb r0, [r4] adds r0, r5 ldrb r0, [r0] bl sub_8043DFC ldrb r5, [r4] lsls r0, r5, 1 add r0, r9 ldrh r0, [r0] mov r1, r8 muls r1, r0 adds r0, r1, 0 adds r0, r6 movs r1, 0xB bl GetMonData adds r1, r0, 0 lsls r1, 16 lsrs r1, 16 adds r0, r5, 0 bl sub_8032984 ldr r2, _08037A68 @ =0x02017840 ldrb r1, [r2, 0x9] movs r0, 0x2 negs r0, r0 ands r0, r1 strb r0, [r2, 0x9] ldr r1, _08037A6C @ =gUnknown_03004330 ldrb r0, [r4] lsls r0, 2 adds r0, r1 ldr r1, _08037A70 @ =sub_8037680 str r1, [r0] _08037A3A: pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08037A48: .4byte gUnknown_02024A60 _08037A4C: .4byte 0x02017810 _08037A50: .4byte gUnknown_02024A6A _08037A54: .4byte gEnemyParty _08037A58: .4byte gBattleTypeFlags _08037A5C: .4byte gUnknown_0300434C _08037A60: .4byte gSprites _08037A64: .4byte gUnknown_03004340 _08037A68: .4byte 0x02017840 _08037A6C: .4byte gUnknown_03004330 _08037A70: .4byte sub_8037680 thumb_func_end sub_8037840 thumb_func_start sub_8037A74 sub_8037A74: @ 8037A74 push {r4-r7,lr} ldr r2, _08037ACC @ =gSprites ldr r0, _08037AD0 @ =gUnknown_02024BE0 ldr r7, _08037AD4 @ =gUnknown_02024A60 ldrb r3, [r7] adds r0, r3, r0 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r1, r0, r2 adds r0, r1, 0 adds r0, 0x3F ldrb r0, [r0] lsls r0, 27 lsrs r2, r0, 31 cmp r2, 0x1 bne _08037B18 movs r4, 0x24 ldrsh r0, [r1, r4] cmp r0, 0 bne _08037B18 lsls r4, r3, 1 adds r0, r4, r3 lsls r0, 2 ldr r6, _08037AD8 @ =0x02017810 adds r1, r0, r6 ldrb r5, [r1] movs r0, 0x80 ands r0, r5 cmp r0, 0 bne _08037AE4 ldr r0, _08037ADC @ =gUnknown_02024A6A adds r0, r4, r0 ldrh r1, [r0] movs r0, 0x64 muls r1, r0 ldr r0, _08037AE0 @ =gEnemyParty adds r1, r0 adds r0, r3, 0 bl sub_8141828 b _08037B18 .align 2, 0 _08037ACC: .4byte gSprites _08037AD0: .4byte gUnknown_02024BE0 _08037AD4: .4byte gUnknown_02024A60 _08037AD8: .4byte 0x02017810 _08037ADC: .4byte gUnknown_02024A6A _08037AE0: .4byte gEnemyParty _08037AE4: ldrb r0, [r1, 0x1] ands r2, r0 cmp r2, 0 beq _08037B18 movs r0, 0x7F ands r0, r5 strb r0, [r1] ldrb r0, [r7] lsls r1, r0, 1 adds r1, r0 lsls r1, 2 adds r1, r6 ldrb r2, [r1, 0x1] movs r0, 0x2 negs r0, r0 ands r0, r2 strb r0, [r1, 0x1] ldr r4, _08037B20 @ =0x000027f9 adds r0, r4, 0 bl FreeSpriteTilesByTag adds r0, r4, 0 bl FreeSpritePaletteByTag bl dp01_tbl4_exec_completed _08037B18: pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08037B20: .4byte 0x000027f9 thumb_func_end sub_8037A74 thumb_func_start sub_8037B24 sub_8037B24: @ 8037B24 push {r4-r6,lr} ldr r6, _08037B64 @ =gUnknown_02024A60 ldrb r0, [r6] ldr r5, _08037B68 @ =gUnknown_03004340 adds r1, r0, r5 ldrb r1, [r1] movs r2, 0 movs r3, 0 bl sub_8045C78 adds r4, r0, 0 lsls r4, 16 lsrs r4, 16 ldrb r0, [r6] adds r0, r5 ldrb r0, [r0] bl sub_8043DFC lsls r4, 16 asrs r1, r4, 16 movs r0, 0x1 negs r0, r0 cmp r1, r0 beq _08037B6C ldrb r0, [r6] adds r0, r5 ldrb r0, [r0] movs r2, 0 bl sub_80440EC b _08037B70 .align 2, 0 _08037B64: .4byte gUnknown_02024A60 _08037B68: .4byte gUnknown_03004340 _08037B6C: bl dp01_tbl4_exec_completed _08037B70: pop {r4-r6} pop {r0} bx r0 thumb_func_end sub_8037B24 thumb_func_start sub_8037B78 sub_8037B78: @ 8037B78 push {lr} ldr r2, _08037BAC @ =gSprites ldr r0, _08037BB0 @ =gUnknown_02024BE0 ldr r1, _08037BB4 @ =gUnknown_02024A60 ldrb r3, [r1] adds r0, r3, r0 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 adds r0, 0x3E ldrb r0, [r0] lsls r0, 31 cmp r0, 0 bne _08037BA6 ldr r0, _08037BB8 @ =gUnknown_03004340 adds r0, r3, r0 ldrb r0, [r0] bl sub_8043DB0 bl dp01_tbl4_exec_completed _08037BA6: pop {r0} bx r0 .align 2, 0 _08037BAC: .4byte gSprites _08037BB0: .4byte gUnknown_02024BE0 _08037BB4: .4byte gUnknown_02024A60 _08037BB8: .4byte gUnknown_03004340 thumb_func_end sub_8037B78 thumb_func_start sub_8037BBC sub_8037BBC: @ 8037BBC push {r4-r6,lr} ldr r6, _08037C18 @ =gUnknown_02024A60 ldrb r2, [r6] lsls r0, r2, 1 adds r0, r2 lsls r0, 2 ldr r1, _08037C1C @ =0x02017810 adds r0, r1 ldrb r1, [r0] movs r0, 0x40 ands r0, r1 cmp r0, 0 bne _08037C12 ldr r5, _08037C20 @ =gUnknown_02024BE0 adds r0, r2, r5 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 ldr r4, _08037C24 @ =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, _08037C28 @ =gUnknown_03004340 ldrb r0, [r6] adds r0, r1 ldrb r0, [r0] bl sub_8043DB0 bl dp01_tbl4_exec_completed _08037C12: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _08037C18: .4byte gUnknown_02024A60 _08037C1C: .4byte 0x02017810 _08037C20: .4byte gUnknown_02024BE0 _08037C24: .4byte gSprites _08037C28: .4byte gUnknown_03004340 thumb_func_end sub_8037BBC thumb_func_start sub_8037C2C sub_8037C2C: @ 8037C2C push {lr} ldr r0, _08037C40 @ =gUnknown_03004210 ldrh r0, [r0, 0x16] cmp r0, 0 bne _08037C3A bl dp01_tbl4_exec_completed _08037C3A: pop {r0} bx r0 .align 2, 0 _08037C40: .4byte gUnknown_03004210 thumb_func_end sub_8037C2C thumb_func_start dp01t_0F_4_move_anim dp01t_0F_4_move_anim: @ 8037C44 push {r4,lr} ldr r1, _08037C80 @ =gUnknown_02024BE0 ldr r0, _08037C84 @ =gUnknown_02024A60 ldrb r0, [r0] adds r0, r1 ldrb r1, [r0] ldr r2, _08037C88 @ =gSprites lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r4, r0, r2 movs r1, 0x30 ldrsh r0, [r4, r1] cmp r0, 0x20 bne _08037C90 movs r3, 0 movs r0, 0 strh r0, [r4, 0x30] adds r2, r4, 0 adds r2, 0x3E ldrb r1, [r2] subs r0, 0x5 ands r0, r1 strb r0, [r2] ldr r0, _08037C8C @ =gUnknown_02024E6D strb r3, [r0] bl dp01_tbl4_exec_completed b _08037CBA .align 2, 0 _08037C80: .4byte gUnknown_02024BE0 _08037C84: .4byte gUnknown_02024A60 _08037C88: .4byte gSprites _08037C8C: .4byte gUnknown_02024E6D _08037C90: ldrh r0, [r4, 0x30] movs r1, 0x3 ands r0, r1 cmp r0, 0 bne _08037CB4 adds r3, r4, 0 adds r3, 0x3E ldrb r2, [r3] lsls r0, r2, 29 lsrs r0, 31 movs r1, 0x1 eors r1, r0 lsls r1, 2 movs r0, 0x5 negs r0, r0 ands r0, r2 orrs r0, r1 strb r0, [r3] _08037CB4: ldrh r0, [r4, 0x30] adds r0, 0x1 strh r0, [r4, 0x30] _08037CBA: pop {r4} pop {r0} bx r0 thumb_func_end dp01t_0F_4_move_anim thumb_func_start sub_8037CC0 sub_8037CC0: @ 8037CC0 push {r4,lr} ldr r2, _08037D10 @ =gSprites ldr r0, _08037D14 @ =gUnknown_03004340 ldr r4, _08037D18 @ =gUnknown_02024A60 ldrb r3, [r4] adds r0, r3, r0 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r2, 0x1C adds r0, r2 ldr r1, [r0] ldr r0, _08037D1C @ =SpriteCallbackDummy cmp r1, r0 bne _08037D08 lsls r0, r3, 2 ldr r1, _08037D20 @ =0x02017800 adds r0, r1 ldrb r1, [r0] movs r0, 0x4 ands r0, r1 cmp r0, 0 beq _08037CFC adds r0, r3, 0 adds r1, r3, 0 adds r2, r3, 0 movs r3, 0x6 bl move_anim_start_t4 _08037CFC: ldr r0, _08037D24 @ =gUnknown_03004330 ldrb r1, [r4] lsls r1, 2 adds r1, r0 ldr r0, _08037D28 @ =sub_8037D2C str r0, [r1] _08037D08: pop {r4} pop {r0} bx r0 .align 2, 0 _08037D10: .4byte gSprites _08037D14: .4byte gUnknown_03004340 _08037D18: .4byte gUnknown_02024A60 _08037D1C: .4byte SpriteCallbackDummy _08037D20: .4byte 0x02017800 _08037D24: .4byte gUnknown_03004330 _08037D28: .4byte sub_8037D2C thumb_func_end sub_8037CC0 thumb_func_start sub_8037D2C sub_8037D2C: @ 8037D2C push {lr} ldr r0, _08037D58 @ =gUnknown_02024A60 ldrb r1, [r0] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 ldr r1, _08037D5C @ =0x02017810 adds r0, r1 ldrb r1, [r0] movs r0, 0x40 ands r0, r1 cmp r0, 0 bne _08037D52 ldr r0, _08037D60 @ =c3_0802FDF4 movs r1, 0xA bl CreateTask bl dp01_tbl4_exec_completed _08037D52: pop {r0} bx r0 .align 2, 0 _08037D58: .4byte gUnknown_02024A60 _08037D5C: .4byte 0x02017810 _08037D60: .4byte c3_0802FDF4 thumb_func_end sub_8037D2C thumb_func_start sub_8037D64 sub_8037D64: @ 8037D64 push {r4,r5,lr} ldr r5, _08037E08 @ =gUnknown_02024A60 ldrb r1, [r5] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 ldr r3, _08037E0C @ =0x02017810 adds r2, r0, r3 ldrb r1, [r2, 0x1] movs r0, 0x1 ands r0, r1 cmp r0, 0 beq _08037E00 ldrb r1, [r2] movs r0, 0x7F ands r0, r1 strb r0, [r2] ldrb r0, [r5] lsls r1, r0, 1 adds r1, r0 lsls r1, 2 adds r1, r3 ldrb r2, [r1, 0x1] movs r0, 0x2 negs r0, r0 ands r0, r2 strb r0, [r1, 0x1] ldr r4, _08037E10 @ =0x000027f9 adds r0, r4, 0 bl FreeSpriteTilesByTag adds r0, r4, 0 bl FreeSpritePaletteByTag ldr r1, _08037E14 @ =gUnknown_02024BE0 ldrb r0, [r5] adds r0, r1 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 ldr r1, _08037E18 @ =gSprites adds r0, r1 movs r1, 0 bl StartSpriteAnim ldr r4, _08037E1C @ =gUnknown_03004340 ldrb r1, [r5] adds r0, r1, r4 ldrb r0, [r0] ldr r2, _08037E20 @ =gUnknown_02024A6A lsls r1, 1 adds r1, r2 ldrh r2, [r1] movs r1, 0x64 muls r1, r2 ldr r2, _08037E24 @ =gEnemyParty adds r1, r2 movs r2, 0 bl sub_8045A5C ldrb r0, [r5] bl sub_804777C ldrb r0, [r5] adds r0, r4 ldrb r0, [r0] bl sub_8043DFC ldrb r0, [r5] bl sub_8031F88 ldr r1, _08037E28 @ =gUnknown_03004330 ldrb r0, [r5] lsls r0, 2 adds r0, r1 ldr r1, _08037E2C @ =sub_8037CC0 str r1, [r0] _08037E00: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08037E08: .4byte gUnknown_02024A60 _08037E0C: .4byte 0x02017810 _08037E10: .4byte 0x000027f9 _08037E14: .4byte gUnknown_02024BE0 _08037E18: .4byte gSprites _08037E1C: .4byte gUnknown_03004340 _08037E20: .4byte gUnknown_02024A6A _08037E24: .4byte gEnemyParty _08037E28: .4byte gUnknown_03004330 _08037E2C: .4byte sub_8037CC0 thumb_func_end sub_8037D64 thumb_func_start sub_8037E30 sub_8037E30: @ 8037E30 push {r4-r6,lr} ldr r5, _08037ECC @ =gUnknown_02024A60 ldrb r2, [r5] lsls r3, r2, 1 adds r0, r3, r2 lsls r0, 2 ldr r6, _08037ED0 @ =0x02017810 adds r0, r6 ldrb r1, [r0] movs r0, 0x88 ands r0, r1 cmp r0, 0 bne _08037E5E ldr r0, _08037ED4 @ =gUnknown_02024A6A adds r0, r3, r0 ldrh r1, [r0] movs r0, 0x64 muls r1, r0 ldr r0, _08037ED8 @ =gEnemyParty adds r1, r0 adds r0, r2, 0 bl sub_8141828 _08037E5E: ldr r4, _08037EDC @ =gSprites ldr r0, _08037EE0 @ =gUnknown_0300434C ldrb r2, [r5] adds r0, r2, r0 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r3, r0, 2 adds r0, r4, 0 adds r0, 0x1C adds r0, r3, r0 ldr r1, [r0] ldr r0, _08037EE4 @ =SpriteCallbackDummy cmp r1, r0 bne _08037EC4 lsls r0, r2, 1 adds r0, r2 lsls r0, 2 adds r0, r6 ldrb r1, [r0] movs r0, 0x8 ands r0, r1 cmp r0, 0 bne _08037EC4 adds r0, r3, r4 bl DestroySprite ldrb r4, [r5] ldr r1, _08037ED4 @ =gUnknown_02024A6A lsls r0, r4, 1 adds r0, r1 ldrh r1, [r0] movs r0, 0x64 muls r0, r1 ldr r1, _08037ED8 @ =gEnemyParty adds r0, r1 movs r1, 0xB bl GetMonData adds r1, r0, 0 lsls r1, 16 lsrs r1, 16 adds r0, r4, 0 bl sub_8032984 ldr r1, _08037EE8 @ =gUnknown_03004330 ldrb r0, [r5] lsls r0, 2 adds r0, r1 ldr r1, _08037EEC @ =sub_8037D64 str r1, [r0] _08037EC4: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _08037ECC: .4byte gUnknown_02024A60 _08037ED0: .4byte 0x02017810 _08037ED4: .4byte gUnknown_02024A6A _08037ED8: .4byte gEnemyParty _08037EDC: .4byte gSprites _08037EE0: .4byte gUnknown_0300434C _08037EE4: .4byte SpriteCallbackDummy _08037EE8: .4byte gUnknown_03004330 _08037EEC: .4byte sub_8037D64 thumb_func_end sub_8037E30 thumb_func_start sub_8037EF0 sub_8037EF0: @ 8037EF0 push {lr} ldr r0, _08037F20 @ =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 bne _08037F1C movs r0, 0x5A bl m4aSongNumStop ldr r3, _08037F24 @ =gMain ldr r0, _08037F28 @ =0x0000043d adds r2, r3, r0 ldrb r1, [r2] movs r0, 0x3 negs r0, r0 ands r0, r1 strb r0, [r2] ldr r0, _08037F2C @ =gUnknown_030042D0 ldr r0, [r0] str r0, [r3] ldr r0, _08037F30 @ =c2_8011A1C bl SetMainCallback2 _08037F1C: pop {r0} bx r0 .align 2, 0 _08037F20: .4byte gReceivedRemoteLinkPlayers _08037F24: .4byte gMain _08037F28: .4byte 0x0000043d _08037F2C: .4byte gUnknown_030042D0 _08037F30: .4byte c2_8011A1C thumb_func_end sub_8037EF0 thumb_func_start sub_8037F34 sub_8037F34: @ 8037F34 push {lr} ldr r0, _08037F64 @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 bne _08037F9A ldr r0, _08037F68 @ =gBattleTypeFlags ldrh r1, [r0] movs r0, 0x2 ands r0, r1 cmp r0, 0 beq _08037F78 bl sub_800832C ldr r1, _08037F6C @ =gUnknown_03004330 ldr r0, _08037F70 @ =gUnknown_02024A60 ldrb r0, [r0] lsls r0, 2 adds r0, r1 ldr r1, _08037F74 @ =sub_8037EF0 str r1, [r0] b _08037F9A .align 2, 0 _08037F64: .4byte gPaletteFade _08037F68: .4byte gBattleTypeFlags _08037F6C: .4byte gUnknown_03004330 _08037F70: .4byte gUnknown_02024A60 _08037F74: .4byte sub_8037EF0 _08037F78: movs r0, 0x5A bl m4aSongNumStop ldr r2, _08037FA0 @ =gMain ldr r0, _08037FA4 @ =0x0000043d adds r3, r2, r0 ldrb r1, [r3] movs r0, 0x3 negs r0, r0 ands r0, r1 strb r0, [r3] ldr r0, _08037FA8 @ =gUnknown_030042D0 ldr r0, [r0] str r0, [r2] ldr r0, [r2, 0x8] bl SetMainCallback2 _08037F9A: pop {r0} bx r0 .align 2, 0 _08037FA0: .4byte gMain _08037FA4: .4byte 0x0000043d _08037FA8: .4byte gUnknown_030042D0 thumb_func_end sub_8037F34 thumb_func_start sub_8037FAC sub_8037FAC: @ 8037FAC push {lr} ldr r0, _08037FD0 @ =gUnknown_02024A60 ldrb r1, [r0] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 ldr r1, _08037FD4 @ =0x02017810 adds r0, r1 ldrb r1, [r0] movs r0, 0x10 ands r0, r1 cmp r0, 0 bne _08037FCA bl dp01_tbl4_exec_completed _08037FCA: pop {r0} bx r0 .align 2, 0 _08037FD0: .4byte gUnknown_02024A60 _08037FD4: .4byte 0x02017810 thumb_func_end sub_8037FAC thumb_func_start sub_8037FD8 sub_8037FD8: @ 8037FD8 push {lr} ldr r0, _08037FFC @ =gUnknown_02024A60 ldrb r1, [r0] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 ldr r1, _08038000 @ =0x02017810 adds r0, r1 ldrb r1, [r0] movs r0, 0x20 ands r0, r1 cmp r0, 0 bne _08037FF6 bl dp01_tbl4_exec_completed _08037FF6: pop {r0} bx r0 .align 2, 0 _08037FFC: .4byte gUnknown_02024A60 _08038000: .4byte 0x02017810 thumb_func_end sub_8037FD8 thumb_func_start dp01_tbl4_exec_completed dp01_tbl4_exec_completed: @ 8038004 push {r4,lr} sub sp, 0x4 ldr r1, _08038044 @ =gUnknown_03004330 ldr r4, _08038048 @ =gUnknown_02024A60 ldrb r0, [r4] lsls r0, 2 adds r0, r1 ldr r1, _0803804C @ =sub_803752C str r1, [r0] ldr r0, _08038050 @ =gBattleTypeFlags ldrh r1, [r0] movs r0, 0x2 ands r0, r1 cmp r0, 0 beq _08038058 bl GetMultiplayerId mov r1, sp strb r0, [r1] movs r0, 0x2 movs r1, 0x4 mov r2, sp bl dp01_prepare_buffer_wireless_probably ldr r1, _08038054 @ =gUnknown_02023A60 ldrb r0, [r4] lsls r0, 9 adds r0, r1 movs r1, 0x38 strb r1, [r0] b _0803806A .align 2, 0 _08038044: .4byte gUnknown_03004330 _08038048: .4byte gUnknown_02024A60 _0803804C: .4byte sub_803752C _08038050: .4byte gBattleTypeFlags _08038054: .4byte gUnknown_02023A60 _08038058: ldr r2, _08038074 @ =gUnknown_02024A64 ldr r1, _08038078 @ =gBitTable ldrb r0, [r4] lsls r0, 2 adds r0, r1 ldr r1, [r0] ldr r0, [r2] bics r0, r1 str r0, [r2] _0803806A: add sp, 0x4 pop {r4} pop {r0} bx r0 .align 2, 0 _08038074: .4byte gUnknown_02024A64 _08038078: .4byte gBitTable thumb_func_end dp01_tbl4_exec_completed .align 2, 0 @ Don't pad with nop.