.include "asm/macros.inc" .include "constants/constants.inc" .syntax unified .text thumb_func_start nullsub_17 nullsub_17: @ 8035A78 bx lr thumb_func_end nullsub_17 thumb_func_start sub_8035A7C sub_8035A7C: @ 8035A7C ldr r1, _08035A8C @ =gUnknown_3004FE0 ldr r0, _08035A90 @ =gActiveBattler ldrb r0, [r0] lsls r0, 2 adds r0, r1 ldr r1, _08035A94 @ =sub_8035A98 str r1, [r0] bx lr .align 2, 0 _08035A8C: .4byte gUnknown_3004FE0 _08035A90: .4byte gActiveBattler _08035A94: .4byte sub_8035A98 thumb_func_end sub_8035A7C thumb_func_start sub_8035A98 sub_8035A98: @ 8035A98 push {lr} ldr r2, _08035ACC @ =gUnknown_2023BC8 ldr r1, _08035AD0 @ =gBitTable ldr r0, _08035AD4 @ =gActiveBattler ldrb r3, [r0] lsls r0, r3, 2 adds r0, r1 ldr r1, [r2] ldr r0, [r0] ands r1, r0 cmp r1, 0 beq _08035AE4 ldr r0, _08035AD8 @ =gUnknown_2022BC4 lsls r1, r3, 9 adds r1, r0 ldrb r0, [r1] cmp r0, 0x38 bhi _08035AE0 ldr r0, _08035ADC @ =gUnknown_8250A34 ldrb r1, [r1] lsls r1, 2 adds r1, r0 ldr r0, [r1] bl _call_via_r0 b _08035AE4 .align 2, 0 _08035ACC: .4byte gUnknown_2023BC8 _08035AD0: .4byte gBitTable _08035AD4: .4byte gActiveBattler _08035AD8: .4byte gUnknown_2022BC4 _08035ADC: .4byte gUnknown_8250A34 _08035AE0: bl OpponentBufferExecCompleted _08035AE4: pop {r0} bx r0 thumb_func_end sub_8035A98 thumb_func_start sub_8035AE8 sub_8035AE8: @ 8035AE8 push {lr} ldr r2, _08035B10 @ =gSprites ldr r1, _08035B14 @ =gBattlerSpriteIds ldr r0, _08035B18 @ =gActiveBattler 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, _08035B1C @ =SpriteCallbackDummy cmp r1, r0 bne _08035B0C bl OpponentBufferExecCompleted _08035B0C: pop {r0} bx r0 .align 2, 0 _08035B10: .4byte gSprites _08035B14: .4byte gBattlerSpriteIds _08035B18: .4byte gActiveBattler _08035B1C: .4byte SpriteCallbackDummy thumb_func_end sub_8035AE8 thumb_func_start sub_8035B20 sub_8035B20: @ 8035B20 push {lr} ldr r2, _08035B48 @ =gSprites ldr r1, _08035B4C @ =gBattlerSpriteIds ldr r0, _08035B50 @ =gActiveBattler 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, _08035B54 @ =SpriteCallbackDummy cmp r1, r0 bne _08035B44 bl OpponentBufferExecCompleted _08035B44: pop {r0} bx r0 .align 2, 0 _08035B48: .4byte gSprites _08035B4C: .4byte gBattlerSpriteIds _08035B50: .4byte gActiveBattler _08035B54: .4byte SpriteCallbackDummy thumb_func_end sub_8035B20 thumb_func_start sub_8035B58 sub_8035B58: @ 8035B58 push {r4-r6,lr} ldr r4, _08035BD0 @ =gSprites ldr r6, _08035BD4 @ =gBattlerSpriteIds ldr r5, _08035BD8 @ =gActiveBattler 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, _08035BDC @ =SpriteCallbackDummy cmp r1, r0 bne _08035BC8 adds r0, r2, r4 ldrh r0, [r0, 0x6] bl sub_803477C 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, _08035BE0 @ =0x000003ff ands r2, r0 ldrh r3, [r1, 0x4] ldr r0, _08035BE4 @ =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 OpponentBufferExecCompleted _08035BC8: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _08035BD0: .4byte gSprites _08035BD4: .4byte gBattlerSpriteIds _08035BD8: .4byte gActiveBattler _08035BDC: .4byte SpriteCallbackDummy _08035BE0: .4byte 0x000003ff _08035BE4: .4byte 0xfffffc00 thumb_func_end sub_8035B58 thumb_func_start sub_8035BE8 sub_8035BE8: @ 8035BE8 push {r4,lr} ldr r4, _08035C28 @ =gUnknown_2024018 ldr r1, [r4] ldr r3, _08035C2C @ =gActiveBattler ldrb r0, [r3] ldr r2, [r1, 0x4] lsls r1, r0, 1 adds r1, r0 lsls r1, 2 adds r1, r2 ldrb r0, [r1, 0x9] subs r0, 0x1 strb r0, [r1, 0x9] lsls r0, 24 lsrs r0, 24 cmp r0, 0xFF bne _08035C20 ldr r0, [r4] ldrb r1, [r3] ldr r2, [r0, 0x4] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 movs r1, 0 strb r1, [r0, 0x9] bl OpponentBufferExecCompleted _08035C20: pop {r4} pop {r0} bx r0 .align 2, 0 _08035C28: .4byte gUnknown_2024018 _08035C2C: .4byte gActiveBattler thumb_func_end sub_8035BE8 thumb_func_start sub_8035C30 sub_8035C30: @ 8035C30 push {r4-r7,lr} movs r6, 0 bl sub_8075290 lsls r0, 24 cmp r0, 0 beq _08035C54 bl sub_8075290 lsls r0, 24 cmp r0, 0 beq _08035C88 ldr r0, _08035C74 @ =gBattleTypeFlags ldr r0, [r0] movs r1, 0x40 ands r0, r1 cmp r0, 0 beq _08035C88 _08035C54: ldr r2, _08035C78 @ =gSprites ldr r1, _08035C7C @ =gUnknown_3004FF0 ldr r0, _08035C80 @ =gActiveBattler 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, _08035C84 @ =SpriteCallbackDummy cmp r1, r0 bne _08035CBE b _08035CBC .align 2, 0 _08035C74: .4byte gBattleTypeFlags _08035C78: .4byte gSprites _08035C7C: .4byte gUnknown_3004FF0 _08035C80: .4byte gActiveBattler _08035C84: .4byte SpriteCallbackDummy _08035C88: ldr r2, _08035D84 @ =gSprites ldr r5, _08035D88 @ =gUnknown_3004FF0 ldr r0, _08035D8C @ =gActiveBattler 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, _08035D90 @ =SpriteCallbackDummy cmp r4, r0 bne _08035CBE 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 _08035CBE _08035CBC: movs r6, 0x1 _08035CBE: bl IsCryPlayingOrClearCrySongs lsls r0, 24 cmp r0, 0 beq _08035CCA movs r6, 0 _08035CCA: cmp r6, 0 bne _08035CD0 b _08035DD2 _08035CD0: ldr r0, _08035D94 @ =gUnknown_2024018 mov r12, r0 ldr r0, [r0] ldr r7, _08035D8C @ =gActiveBattler ldrb r2, [r7] ldr r3, [r0, 0x4] lsls r0, r2, 1 adds r0, r2 lsls r0, 2 adds r4, r0, r3 ldrb r1, [r4, 0x1] movs r5, 0x1 adds r0, r5, 0 ands r0, r1 cmp r0, 0 beq _08035DD2 movs r6, 0x2 adds r1, r6, 0 eors r1, r2 lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r3 ldrb r1, [r0, 0x1] adds r0, r5, 0 ands r0, r1 cmp r0, 0 beq _08035DD2 ldrb r1, [r4] movs r3, 0x7F adds r0, r3, 0 ands r0, r1 strb r0, [r4] mov r1, r12 ldr r0, [r1] ldrb r2, [r7] ldr r0, [r0, 0x4] lsls r1, r2, 1 adds r1, r2 lsls r1, 2 adds r1, r0 ldrb r2, [r1, 0x1] movs r4, 0x2 negs r4, r4 adds r0, r4, 0 ands r0, r2 strb r0, [r1, 0x1] mov r0, r12 ldr r2, [r0] ldrb r0, [r7] adds r1, r6, 0 eors r1, r0 ldr r2, [r2, 0x4] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r1, [r0] ands r3, r1 strb r3, [r0] mov r1, r12 ldr r2, [r1] ldrb r0, [r7] adds r1, r6, 0 eors r1, r0 ldr r2, [r2, 0x4] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r1, [r0, 0x1] ands r4, r1 strb r4, [r0, 0x1] ldr r4, _08035D98 @ =0x000027f9 adds r0, r4, 0 bl FreeSpriteTilesByTag adds r0, r4, 0 bl FreeSpritePaletteByTag ldr r0, _08035D9C @ =gBattleTypeFlags ldr r0, [r0] movs r1, 0x40 ands r0, r1 cmp r0, 0 beq _08035DA4 ldr r0, _08035DA0 @ =gMPlayInfo_BGM bl m4aMPlayContinue b _08035DB0 .align 2, 0 _08035D84: .4byte gSprites _08035D88: .4byte gUnknown_3004FF0 _08035D8C: .4byte gActiveBattler _08035D90: .4byte SpriteCallbackDummy _08035D94: .4byte gUnknown_2024018 _08035D98: .4byte 0x000027f9 _08035D9C: .4byte gBattleTypeFlags _08035DA0: .4byte gMPlayInfo_BGM _08035DA4: ldr r0, _08035DD8 @ =gMPlayInfo_BGM ldr r1, _08035DDC @ =0x0000ffff movs r2, 0x80 lsls r2, 1 bl m4aMPlayVolumeControl _08035DB0: ldr r0, _08035DE0 @ =gUnknown_2024018 ldr r0, [r0] ldr r3, _08035DE4 @ =gActiveBattler ldrb r1, [r3] ldr r2, [r0, 0x4] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 movs r1, 0x3 strb r1, [r0, 0x9] ldr r1, _08035DE8 @ =gUnknown_3004FE0 ldrb r0, [r3] lsls r0, 2 adds r0, r1 ldr r1, _08035DEC @ =sub_8035BE8 str r1, [r0] _08035DD2: pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08035DD8: .4byte gMPlayInfo_BGM _08035DDC: .4byte 0x0000ffff _08035DE0: .4byte gUnknown_2024018 _08035DE4: .4byte gActiveBattler _08035DE8: .4byte gUnknown_3004FE0 _08035DEC: .4byte sub_8035BE8 thumb_func_end sub_8035C30 thumb_func_start sub_8035DF0 sub_8035DF0: @ 8035DF0 push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} ldr r4, _08035FC0 @ =gUnknown_2024018 ldr r0, [r4] ldr r1, _08035FC4 @ =gActiveBattler mov r9, r1 ldrb r2, [r1] ldr r1, [r0, 0x4] lsls r3, r2, 1 adds r0, r3, r2 lsls r0, 2 adds r0, r1 ldrb r1, [r0] movs r5, 0x88 adds r0, r5, 0 ands r0, r1 cmp r0, 0 bne _08035E2C ldr r0, _08035FC8 @ =gBattlerPartyIndexes adds r0, r3, r0 ldrh r1, [r0] movs r0, 0x64 muls r1, r0 ldr r0, _08035FCC @ =gEnemyParty adds r1, r0 adds r0, r2, 0 bl sub_80F1720 _08035E2C: ldr r1, [r4] mov r2, r9 ldrb r0, [r2] movs r7, 0x2 adds r2, r7, 0 eors r2, r0 ldr r1, [r1, 0x4] lsls r3, r2, 1 adds r0, r3, r2 lsls r0, 2 adds r0, r1 ldrb r1, [r0] adds r0, r5, 0 ands r0, r1 cmp r0, 0 bne _08035E60 ldr r0, _08035FC8 @ =gBattlerPartyIndexes adds r0, r3, r0 ldrh r1, [r0] movs r0, 0x64 muls r1, r0 ldr r0, _08035FCC @ =gEnemyParty adds r1, r0 adds r0, r2, 0 bl sub_80F1720 _08035E60: ldr r0, [r4] mov r1, r9 ldrb r2, [r1] ldr r3, [r0, 0x4] lsls r0, r2, 1 adds r0, r2 lsls r0, 2 adds r0, r3 ldrb r1, [r0] movs r4, 0x8 adds r0, r4, 0 ands r0, r1 cmp r0, 0 beq _08035E7E b _08035FB4 _08035E7E: adds r1, r7, 0 eors r1, r2 lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r3 ldrb r1, [r0] adds r0, r4, 0 ands r0, r1 cmp r0, 0 beq _08035E96 b _08035FB4 _08035E96: bl sub_8075290 lsls r0, 24 cmp r0, 0 beq _08035F28 ldr r0, _08035FD0 @ =gBattleTypeFlags ldr r0, [r0] movs r1, 0x40 ands r0, r1 cmp r0, 0 bne _08035F28 ldr r1, _08035FD4 @ =gUnknown_3004FFC mov r2, r9 ldrb r0, [r2] eors r0, r7 adds r0, r1 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 ldr r1, _08035FD8 @ =gSprites adds r0, r1 bl DestroySprite ldr r4, _08035FDC @ =gUnknown_3004FF0 mov r1, r9 ldrb r0, [r1] adds r1, r7, 0 eors r1, r0 adds r0, r1, r4 ldrb r0, [r0] ldr r2, _08035FC8 @ =gBattlerPartyIndexes mov r8, r2 lsls r1, 1 add r1, r8 ldrh r1, [r1] movs r6, 0x64 muls r1, r6 ldr r5, _08035FCC @ =gEnemyParty adds r1, r5 movs r2, 0 bl UpdateHealthboxAttribute mov r1, r9 ldrb r0, [r1] eors r0, r7 bl sub_804BD94 mov r2, r9 ldrb r0, [r2] eors r0, r7 adds r0, r4 ldrb r0, [r0] bl SetHealthboxSpriteVisible mov r1, r9 ldrb r0, [r1] adds r4, r7, 0 eors r4, r0 lsls r0, r4, 1 add r0, r8 ldrh r0, [r0] muls r0, r6 adds r0, r5 movs r1, 0xB bl GetMonData adds r1, r0, 0 lsls r1, 16 lsrs r1, 16 adds r0, r4, 0 bl SetBankEnemyShadowSpriteCallback _08035F28: ldr r1, _08035FD4 @ =gUnknown_3004FFC ldr r5, _08035FC4 @ =gActiveBattler ldrb r0, [r5] adds r0, r1 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 ldr r1, _08035FD8 @ =gSprites adds r0, r1 bl DestroySprite ldr r4, _08035FDC @ =gUnknown_3004FF0 ldrb r1, [r5] adds r0, r1, r4 ldrb r0, [r0] ldr r2, _08035FC8 @ =gBattlerPartyIndexes 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, _08035FCC @ =gEnemyParty adds r1, r6 movs r2, 0 bl UpdateHealthboxAttribute ldrb r0, [r5] bl sub_804BD94 ldrb r0, [r5] adds r0, r4 ldrb r0, [r0] bl SetHealthboxSpriteVisible ldrb r4, [r5] lsls r0, r4, 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, r4, 0 bl SetBankEnemyShadowSpriteCallback ldr r0, _08035FC0 @ =gUnknown_2024018 ldr r0, [r0] ldr r2, [r0, 0x8] ldrb r1, [r2, 0x9] movs r0, 0x2 negs r0, r0 ands r0, r1 strb r0, [r2, 0x9] ldr r1, _08035FE0 @ =gUnknown_3004FE0 ldrb r0, [r5] lsls r0, 2 adds r0, r1 ldr r1, _08035FE4 @ =sub_8035C30 str r1, [r0] _08035FB4: pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08035FC0: .4byte gUnknown_2024018 _08035FC4: .4byte gActiveBattler _08035FC8: .4byte gBattlerPartyIndexes _08035FCC: .4byte gEnemyParty _08035FD0: .4byte gBattleTypeFlags _08035FD4: .4byte gUnknown_3004FFC _08035FD8: .4byte gSprites _08035FDC: .4byte gUnknown_3004FF0 _08035FE0: .4byte gUnknown_3004FE0 _08035FE4: .4byte sub_8035C30 thumb_func_end sub_8035DF0 thumb_func_start sub_8035FE8 sub_8035FE8: @ 8035FE8 push {r4-r7,lr} ldr r2, _08036044 @ =gSprites ldr r0, _08036048 @ =gBattlerSpriteIds ldr r7, _0803604C @ =gActiveBattler 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 _08036094 movs r4, 0x24 ldrsh r0, [r1, r4] cmp r0, 0 bne _08036094 ldr r6, _08036050 @ =gUnknown_2024018 ldr r0, [r6] ldr r1, [r0, 0x4] lsls r4, r3, 1 adds r0, r4, r3 lsls r0, 2 adds r1, r0, r1 ldrb r5, [r1] movs r0, 0x80 ands r0, r5 cmp r0, 0 bne _0803605C ldr r0, _08036054 @ =gBattlerPartyIndexes adds r0, r4, r0 ldrh r1, [r0] movs r0, 0x64 muls r1, r0 ldr r0, _08036058 @ =gEnemyParty adds r1, r0 adds r0, r3, 0 bl sub_80F1720 b _08036094 .align 2, 0 _08036044: .4byte gSprites _08036048: .4byte gBattlerSpriteIds _0803604C: .4byte gActiveBattler _08036050: .4byte gUnknown_2024018 _08036054: .4byte gBattlerPartyIndexes _08036058: .4byte gEnemyParty _0803605C: ldrb r0, [r1, 0x1] ands r2, r0 cmp r2, 0 beq _08036094 movs r0, 0x7F ands r0, r5 strb r0, [r1] ldr r0, [r6] ldrb r2, [r7] ldr r0, [r0, 0x4] lsls r1, r2, 1 adds r1, r2 lsls r1, 2 adds r1, r0 ldrb r2, [r1, 0x1] movs r0, 0x2 negs r0, r0 ands r0, r2 strb r0, [r1, 0x1] ldr r4, _0803609C @ =0x000027f9 adds r0, r4, 0 bl FreeSpriteTilesByTag adds r0, r4, 0 bl FreeSpritePaletteByTag bl OpponentBufferExecCompleted _08036094: pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0803609C: .4byte 0x000027f9 thumb_func_end sub_8035FE8 thumb_func_start sub_80360A0 sub_80360A0: @ 80360A0 push {r4-r6,lr} ldr r6, _080360E0 @ =gActiveBattler ldrb r0, [r6] ldr r5, _080360E4 @ =gUnknown_3004FF0 adds r1, r0, r5 ldrb r1, [r1] movs r2, 0 movs r3, 0 bl sub_8049FD8 adds r4, r0, 0 lsls r4, 16 lsrs r4, 16 ldrb r0, [r6] adds r0, r5 ldrb r0, [r0] bl SetHealthboxSpriteVisible lsls r4, 16 asrs r1, r4, 16 movs r0, 0x1 negs r0, r0 cmp r1, r0 beq _080360E8 ldrb r0, [r6] adds r0, r5 ldrb r0, [r0] movs r2, 0 bl sub_8048440 b _08036124 .align 2, 0 _080360E0: .4byte gActiveBattler _080360E4: .4byte gUnknown_3004FF0 _080360E8: movs r0, 0x1 bl sub_80EB2E0 lsls r0, 24 cmp r0, 0 bne _08036120 ldr r0, _08036114 @ =gBattleTypeFlags ldr r0, [r0] movs r1, 0x10 ands r0, r1 cmp r0, 0 beq _08036120 movs r0, 0x1 bl sub_80EB2F4 ldr r0, _08036118 @ =gUnknown_3004FE0 ldrb r1, [r6] lsls r1, 2 adds r1, r0 ldr r0, _0803611C @ =sub_80E8570 str r0, [r1] b _08036124 .align 2, 0 _08036114: .4byte gBattleTypeFlags _08036118: .4byte gUnknown_3004FE0 _0803611C: .4byte sub_80E8570 _08036120: bl OpponentBufferExecCompleted _08036124: pop {r4-r6} pop {r0} bx r0 thumb_func_end sub_80360A0 thumb_func_start sub_803612C sub_803612C: @ 803612C push {lr} ldr r2, _08036160 @ =gSprites ldr r0, _08036164 @ =gBattlerSpriteIds ldr r1, _08036168 @ =gActiveBattler 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 _0803615A ldr r0, _0803616C @ =gUnknown_3004FF0 adds r0, r3, r0 ldrb r0, [r0] bl SetHealthboxSpriteInvisible bl OpponentBufferExecCompleted _0803615A: pop {r0} bx r0 .align 2, 0 _08036160: .4byte gSprites _08036164: .4byte gBattlerSpriteIds _08036168: .4byte gActiveBattler _0803616C: .4byte gUnknown_3004FF0 thumb_func_end sub_803612C thumb_func_start sub_8036170 sub_8036170: @ 8036170 push {r4-r6,lr} ldr r0, _080361D0 @ =gUnknown_2024018 ldr r0, [r0] ldr r6, _080361D4 @ =gActiveBattler ldrb r2, [r6] ldr r1, [r0, 0x4] lsls r0, r2, 1 adds r0, r2 lsls r0, 2 adds r0, r1 ldrb r1, [r0] movs r0, 0x40 ands r0, r1 cmp r0, 0 bne _080361CA ldr r5, _080361D8 @ =gBattlerSpriteIds adds r0, r2, r5 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 ldr r4, _080361DC @ =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 EnemyShadowCallbackToSetInvisible ldr r1, _080361E0 @ =gUnknown_3004FF0 ldrb r0, [r6] adds r0, r1 ldrb r0, [r0] bl SetHealthboxSpriteInvisible bl OpponentBufferExecCompleted _080361CA: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080361D0: .4byte gUnknown_2024018 _080361D4: .4byte gActiveBattler _080361D8: .4byte gBattlerSpriteIds _080361DC: .4byte gSprites _080361E0: .4byte gUnknown_3004FF0 thumb_func_end sub_8036170 thumb_func_start sub_80361E4 sub_80361E4: @ 80361E4 push {lr} movs r0, 0 bl IsTextPrinterActive lsls r0, 16 cmp r0, 0 bne _080361F6 bl OpponentBufferExecCompleted _080361F6: pop {r0} bx r0 thumb_func_end sub_80361E4 thumb_func_start sub_80361FC sub_80361FC: @ 80361FC push {r4,lr} ldr r1, _08036238 @ =gBattlerSpriteIds ldr r0, _0803623C @ =gActiveBattler ldrb r0, [r0] adds r0, r1 ldrb r1, [r0] ldr r2, _08036240 @ =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 _08036248 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, _08036244 @ =gUnknown_2024005 strb r3, [r0] bl OpponentBufferExecCompleted b _08036272 .align 2, 0 _08036238: .4byte gBattlerSpriteIds _0803623C: .4byte gActiveBattler _08036240: .4byte gSprites _08036244: .4byte gUnknown_2024005 _08036248: ldrh r0, [r4, 0x30] movs r1, 0x3 ands r0, r1 cmp r0, 0 bne _0803626C 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] _0803626C: ldrh r0, [r4, 0x30] adds r0, 0x1 strh r0, [r4, 0x30] _08036272: pop {r4} pop {r0} bx r0 thumb_func_end sub_80361FC thumb_func_start sub_8036278 sub_8036278: @ 8036278 push {r4,lr} ldr r2, _080362CC @ =gSprites ldr r0, _080362D0 @ =gUnknown_3004FF0 ldr r4, _080362D4 @ =gActiveBattler 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, _080362D8 @ =SpriteCallbackDummy cmp r1, r0 bne _080362C4 ldr r0, _080362DC @ =gUnknown_2024018 ldr r0, [r0] ldr r1, [r0] lsls r0, r3, 2 adds r0, r1 ldrb r1, [r0] movs r0, 0x4 ands r0, r1 cmp r0, 0 beq _080362B8 adds r0, r3, 0 adds r1, r3, 0 adds r2, r3, 0 movs r3, 0x6 bl InitAndLaunchSpecialAnimation _080362B8: ldr r0, _080362E0 @ =gUnknown_3004FE0 ldrb r1, [r4] lsls r1, 2 adds r1, r0 ldr r0, _080362E4 @ =sub_80362E8 str r0, [r1] _080362C4: pop {r4} pop {r0} bx r0 .align 2, 0 _080362CC: .4byte gSprites _080362D0: .4byte gUnknown_3004FF0 _080362D4: .4byte gActiveBattler _080362D8: .4byte SpriteCallbackDummy _080362DC: .4byte gUnknown_2024018 _080362E0: .4byte gUnknown_3004FE0 _080362E4: .4byte sub_80362E8 thumb_func_end sub_8036278 thumb_func_start sub_80362E8 sub_80362E8: @ 80362E8 push {lr} ldr r0, _08036324 @ =gUnknown_2024018 ldr r2, [r0] ldr r0, _08036328 @ =gActiveBattler ldrb r1, [r0] ldr r2, [r2, 0x4] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r1, [r0] movs r0, 0x40 ands r0, r1 cmp r0, 0 bne _08036320 bl IsCryPlayingOrClearCrySongs lsls r0, 24 cmp r0, 0 bne _08036320 ldr r0, _0803632C @ =gMPlayInfo_BGM ldr r1, _08036330 @ =0x0000ffff movs r2, 0x80 lsls r2, 1 bl m4aMPlayVolumeControl bl OpponentBufferExecCompleted _08036320: pop {r0} bx r0 .align 2, 0 _08036324: .4byte gUnknown_2024018 _08036328: .4byte gActiveBattler _0803632C: .4byte gMPlayInfo_BGM _08036330: .4byte 0x0000ffff thumb_func_end sub_80362E8 thumb_func_start sub_8036334 sub_8036334: @ 8036334 push {r4,r5,lr} ldr r3, _080363E0 @ =gUnknown_2024018 ldr r0, [r3] ldr r5, _080363E4 @ =gActiveBattler ldrb r1, [r5] ldr r2, [r0, 0x4] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r2, r0, r2 ldrb r1, [r2, 0x1] movs r0, 0x1 ands r0, r1 cmp r0, 0 beq _080363D8 ldrb r1, [r2] movs r0, 0x7F ands r0, r1 strb r0, [r2] ldr r0, [r3] ldrb r2, [r5] ldr r0, [r0, 0x4] lsls r1, r2, 1 adds r1, r2 lsls r1, 2 adds r1, r0 ldrb r2, [r1, 0x1] movs r0, 0x2 negs r0, r0 ands r0, r2 strb r0, [r1, 0x1] ldr r4, _080363E8 @ =0x000027f9 adds r0, r4, 0 bl FreeSpriteTilesByTag adds r0, r4, 0 bl FreeSpritePaletteByTag ldr r1, _080363EC @ =gBattlerSpriteIds ldrb r0, [r5] adds r0, r1 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 ldr r1, _080363F0 @ =gSprites adds r0, r1 movs r1, 0 bl StartSpriteAnim ldr r4, _080363F4 @ =gUnknown_3004FF0 ldrb r1, [r5] adds r0, r1, r4 ldrb r0, [r0] ldr r2, _080363F8 @ =gBattlerPartyIndexes lsls r1, 1 adds r1, r2 ldrh r2, [r1] movs r1, 0x64 muls r1, r2 ldr r2, _080363FC @ =gEnemyParty adds r1, r2 movs r2, 0 bl UpdateHealthboxAttribute ldrb r0, [r5] bl sub_804BD94 ldrb r0, [r5] adds r0, r4 ldrb r0, [r0] bl SetHealthboxSpriteVisible ldrb r0, [r5] bl CopyBattleSpriteInvisibility ldr r1, _08036400 @ =gUnknown_3004FE0 ldrb r0, [r5] lsls r0, 2 adds r0, r1 ldr r1, _08036404 @ =sub_8036278 str r1, [r0] _080363D8: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080363E0: .4byte gUnknown_2024018 _080363E4: .4byte gActiveBattler _080363E8: .4byte 0x000027f9 _080363EC: .4byte gBattlerSpriteIds _080363F0: .4byte gSprites _080363F4: .4byte gUnknown_3004FF0 _080363F8: .4byte gBattlerPartyIndexes _080363FC: .4byte gEnemyParty _08036400: .4byte gUnknown_3004FE0 _08036404: .4byte sub_8036278 thumb_func_end sub_8036334 thumb_func_start sub_8036408 sub_8036408: @ 8036408 push {r4-r6,lr} ldr r6, _080364AC @ =gUnknown_2024018 ldr r0, [r6] ldr r5, _080364B0 @ =gActiveBattler ldrb r2, [r5] ldr r1, [r0, 0x4] lsls r3, r2, 1 adds r0, r3, r2 lsls r0, 2 adds r0, r1 ldrb r1, [r0] movs r0, 0x88 ands r0, r1 cmp r0, 0 bne _0803643A ldr r0, _080364B4 @ =gBattlerPartyIndexes adds r0, r3, r0 ldrh r1, [r0] movs r0, 0x64 muls r1, r0 ldr r0, _080364B8 @ =gEnemyParty adds r1, r0 adds r0, r2, 0 bl sub_80F1720 _0803643A: ldr r4, _080364BC @ =gSprites ldr r0, _080364C0 @ =gUnknown_3004FFC 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, _080364C4 @ =SpriteCallbackDummy cmp r1, r0 bne _080364A4 ldr r0, [r6] ldr r1, [r0, 0x4] lsls r0, r2, 1 adds r0, r2 lsls r0, 2 adds r0, r1 ldrb r1, [r0] movs r0, 0x8 ands r0, r1 cmp r0, 0 bne _080364A4 adds r0, r3, r4 bl DestroySprite ldrb r4, [r5] ldr r1, _080364B4 @ =gBattlerPartyIndexes lsls r0, r4, 1 adds r0, r1 ldrh r1, [r0] movs r0, 0x64 muls r0, r1 ldr r1, _080364B8 @ =gEnemyParty adds r0, r1 movs r1, 0xB bl GetMonData adds r1, r0, 0 lsls r1, 16 lsrs r1, 16 adds r0, r4, 0 bl SetBankEnemyShadowSpriteCallback ldr r1, _080364C8 @ =gUnknown_3004FE0 ldrb r0, [r5] lsls r0, 2 adds r0, r1 ldr r1, _080364CC @ =sub_8036334 str r1, [r0] _080364A4: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080364AC: .4byte gUnknown_2024018 _080364B0: .4byte gActiveBattler _080364B4: .4byte gBattlerPartyIndexes _080364B8: .4byte gEnemyParty _080364BC: .4byte gSprites _080364C0: .4byte gUnknown_3004FFC _080364C4: .4byte SpriteCallbackDummy _080364C8: .4byte gUnknown_3004FE0 _080364CC: .4byte sub_8036334 thumb_func_end sub_8036408 thumb_func_start sub_80364D0 sub_80364D0: @ 80364D0 push {lr} ldr r0, _080364F8 @ =gUnknown_2024018 ldr r2, [r0] ldr r0, _080364FC @ =gActiveBattler ldrb r1, [r0] ldr r2, [r2, 0x4] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r1, [r0] movs r0, 0x10 ands r0, r1 cmp r0, 0 bne _080364F2 bl OpponentBufferExecCompleted _080364F2: pop {r0} bx r0 .align 2, 0 _080364F8: .4byte gUnknown_2024018 _080364FC: .4byte gActiveBattler thumb_func_end sub_80364D0 thumb_func_start sub_8036500 sub_8036500: @ 8036500 push {lr} ldr r0, _08036528 @ =gUnknown_2024018 ldr r2, [r0] ldr r0, _0803652C @ =gActiveBattler ldrb r1, [r0] ldr r2, [r2, 0x4] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r1, [r0] movs r0, 0x20 ands r0, r1 cmp r0, 0 bne _08036522 bl OpponentBufferExecCompleted _08036522: pop {r0} bx r0 .align 2, 0 _08036528: .4byte gUnknown_2024018 _0803652C: .4byte gActiveBattler thumb_func_end sub_8036500 thumb_func_start OpponentBufferExecCompleted OpponentBufferExecCompleted: @ 8036530 ldr r1, _08036554 @ =gUnknown_3004FE0 ldr r2, _08036558 @ =gActiveBattler ldrb r0, [r2] lsls r0, 2 adds r0, r1 ldr r1, _0803655C @ =sub_8035A98 str r1, [r0] ldr r3, _08036560 @ =gUnknown_2023BC8 ldr r1, _08036564 @ =gBitTable ldrb r0, [r2] lsls r0, 2 adds r0, r1 ldr r1, [r0] ldr r0, [r3] bics r0, r1 str r0, [r3] bx lr .align 2, 0 _08036554: .4byte gUnknown_3004FE0 _08036558: .4byte gActiveBattler _0803655C: .4byte sub_8035A98 _08036560: .4byte gUnknown_2023BC8 _08036564: .4byte gBitTable thumb_func_end OpponentBufferExecCompleted thumb_func_start OpponentHandleGetAttributes OpponentHandleGetAttributes: @ 8036568 push {r4-r6,lr} sub sp, 0x100 movs r6, 0 ldr r1, _08036594 @ =gUnknown_2022BC4 ldr r0, _08036598 @ =gActiveBattler ldrb r2, [r0] lsls r0, r2, 9 adds r1, 0x2 adds r1, r0, r1 ldrb r0, [r1] cmp r0, 0 bne _080365A0 ldr r0, _0803659C @ =gBattlerPartyIndexes lsls r1, r2, 1 adds r1, r0 ldrb r0, [r1] mov r1, sp bl sub_80365DC adds r6, r0, 0 b _080365C2 .align 2, 0 _08036594: .4byte gUnknown_2022BC4 _08036598: .4byte gActiveBattler _0803659C: .4byte gBattlerPartyIndexes _080365A0: ldrb r4, [r1] movs r5, 0 _080365A4: movs r0, 0x1 ands r0, r4 cmp r0, 0 beq _080365BA lsls r0, r5, 24 lsrs r0, 24 mov r2, sp adds r1, r2, r6 bl sub_80365DC adds r6, r0 _080365BA: lsrs r4, 1 adds r5, 0x1 cmp r5, 0x5 ble _080365A4 _080365C2: lsls r1, r6, 16 lsrs r1, 16 movs r0, 0x1 mov r2, sp bl EmitDataTransfer bl OpponentBufferExecCompleted add sp, 0x100 pop {r4-r6} pop {r0} bx r0 thumb_func_end OpponentHandleGetAttributes thumb_func_start sub_80365DC sub_80365DC: @ 80365DC push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x90 adds r7, r1, 0 lsls r0, 24 lsrs r5, r0, 24 movs r6, 0 ldr r2, _08036610 @ =gUnknown_2022BC4 ldr r3, _08036614 @ =gActiveBattler ldrb r0, [r3] lsls r0, 9 adds r1, r2, 0x1 adds r0, r1 ldrb r0, [r0] cmp r0, 0x3B bls _08036606 bl _08036D72 _08036606: lsls r0, 2 ldr r1, _08036618 @ =_0803661C adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _08036610: .4byte gUnknown_2022BC4 _08036614: .4byte gActiveBattler _08036618: .4byte _0803661C .align 2, 0 _0803661C: .4byte _0803670C .4byte _08036930 .4byte _08036940 .4byte _08036950 .4byte _080369B8 .4byte _080369B8 .4byte _080369B8 .4byte _080369B8 .4byte _080369D4 .4byte _08036A10 .4byte _08036A10 .4byte _08036A10 .4byte _08036A10 .4byte _08036D72 .4byte _08036D72 .4byte _08036D72 .4byte _08036D72 .4byte _08036A2C .4byte _08036A3C .4byte _08036A6C .4byte _08036A7C .4byte _08036A8C .4byte _08036A9C .4byte _08036AAC .4byte _08036ABC .4byte _08036ACC .4byte _08036ADC .4byte _08036AEC .4byte _08036AFC .4byte _08036B0C .4byte _08036B1C .4byte _08036B2C .4byte _08036B7C .4byte _08036B8C .4byte _08036B9C .4byte _08036BAC .4byte _08036BBC .4byte _08036BCC .4byte _08036BDC .4byte _08036BEC .4byte _08036BFC .4byte _08036C30 .4byte _08036C40 .4byte _08036C50 .4byte _08036C60 .4byte _08036C70 .4byte _08036C80 .4byte _08036C90 .4byte _08036CA0 .4byte _08036CC0 .4byte _08036CD0 .4byte _08036CE0 .4byte _08036CF0 .4byte _08036D00 .4byte _08036D10 .4byte _08036D20 .4byte _08036D30 .4byte _08036D40 .4byte _08036D50 .4byte _08036D60 _0803670C: movs r0, 0x64 adds r4, r5, 0 muls r4, r0 ldr r0, _08036920 @ =gEnemyParty adds r4, r0 adds r0, r4, 0 movs r1, 0xB bl GetMonData mov r1, sp strh r0, [r1] adds r0, r4, 0 movs r1, 0xC bl GetMonData mov r1, sp strh r0, [r1, 0x2E] movs r6, 0 add r0, sp, 0x24 mov r9, r0 movs r1, 0x3B add r1, sp mov r10, r1 mov r2, sp adds r2, 0x2B str r2, [sp, 0x80] mov r0, sp adds r0, 0x2A str r0, [sp, 0x7C] mov r1, sp adds r1, 0x68 str r1, [sp, 0x8C] adds r2, 0x5 str r2, [sp, 0x84] adds r0, 0x12 str r0, [sp, 0x88] mov r8, r4 add r4, sp, 0xC _08036758: adds r1, r6, 0 adds r1, 0xD mov r0, r8 bl GetMonData strh r0, [r4] adds r1, r6, 0 adds r1, 0x11 mov r0, r8 bl GetMonData mov r2, r9 adds r1, r2, r6 strb r0, [r1] adds r4, 0x2 adds r6, 0x1 cmp r6, 0x3 ble _08036758 movs r0, 0x64 adds r4, r5, 0 muls r4, r0 ldr r0, _08036920 @ =gEnemyParty adds r4, r0 adds r0, r4, 0 movs r1, 0x15 bl GetMonData mov r1, r10 strb r0, [r1] adds r0, r4, 0 movs r1, 0x20 bl GetMonData ldr r2, [sp, 0x80] strb r0, [r2] adds r0, r4, 0 movs r1, 0x19 bl GetMonData str r0, [sp, 0x44] adds r0, r4, 0 movs r1, 0x27 bl GetMonData mov r3, sp movs r5, 0x1F ands r0, r5 ldrb r2, [r3, 0x14] movs r1, 0x20 negs r1, r1 ands r1, r2 orrs r1, r0 strb r1, [r3, 0x14] adds r0, r4, 0 movs r1, 0x28 bl GetMonData mov r3, sp movs r6, 0x1F ands r0, r6 lsls r0, 5 ldrh r2, [r3, 0x14] ldr r1, _08036924 @ =0xfffffc1f ands r1, r2 orrs r1, r0 strh r1, [r3, 0x14] adds r0, r4, 0 movs r1, 0x29 bl GetMonData mov r3, sp ands r0, r5 lsls r0, 2 ldrb r2, [r3, 0x15] movs r1, 0x7D negs r1, r1 ands r1, r2 orrs r1, r0 strb r1, [r3, 0x15] adds r0, r4, 0 movs r1, 0x2A bl GetMonData movs r1, 0x1F ands r1, r0 lsls r1, 15 ldr r0, [sp, 0x14] ldr r2, _08036928 @ =0xfff07fff ands r0, r2 orrs r0, r1 str r0, [sp, 0x14] adds r0, r4, 0 movs r1, 0x2B bl GetMonData mov r3, sp ands r0, r6 lsls r0, 4 ldrh r2, [r3, 0x16] ldr r1, _0803692C @ =0xfffffe0f ands r1, r2 orrs r1, r0 strh r1, [r3, 0x16] adds r0, r4, 0 movs r1, 0x2C bl GetMonData mov r3, sp ands r0, r5 lsls r0, 1 ldrb r2, [r3, 0x17] movs r1, 0x3F negs r1, r1 ands r1, r2 orrs r1, r0 strb r1, [r3, 0x17] adds r0, r4, 0 movs r1, 0 bl GetMonData str r0, [sp, 0x48] adds r0, r4, 0 movs r1, 0x37 bl GetMonData str r0, [sp, 0x4C] adds r0, r4, 0 movs r1, 0x38 bl GetMonData ldr r1, [sp, 0x7C] strb r0, [r1] adds r0, r4, 0 movs r1, 0x39 bl GetMonData mov r1, sp strh r0, [r1, 0x28] adds r0, r4, 0 movs r1, 0x3A bl GetMonData mov r1, sp strh r0, [r1, 0x2C] adds r0, r4, 0 movs r1, 0x3B bl GetMonData mov r1, sp strh r0, [r1, 0x2] adds r0, r4, 0 movs r1, 0x3C bl GetMonData mov r1, sp strh r0, [r1, 0x4] adds r0, r4, 0 movs r1, 0x3D bl GetMonData mov r1, sp strh r0, [r1, 0x6] adds r0, r4, 0 movs r1, 0x3E bl GetMonData mov r1, sp strh r0, [r1, 0x8] adds r0, r4, 0 movs r1, 0x3F bl GetMonData mov r1, sp strh r0, [r1, 0xA] adds r0, r4, 0 movs r1, 0x2D bl GetMonData mov r3, sp movs r1, 0x1 ands r0, r1 lsls r0, 6 ldrb r2, [r3, 0x17] movs r1, 0x41 negs r1, r1 ands r1, r2 orrs r1, r0 strb r1, [r3, 0x17] adds r0, r4, 0 movs r1, 0x2E bl GetMonData mov r3, sp lsls r0, 7 ldrb r2, [r3, 0x17] movs r1, 0x7F ands r1, r2 orrs r1, r0 strb r1, [r3, 0x17] adds r0, r4, 0 movs r1, 0x1 bl GetMonData str r0, [sp, 0x54] adds r0, r4, 0 movs r1, 0x2 ldr r2, [sp, 0x8C] bl GetMonData ldr r0, [sp, 0x84] ldr r1, [sp, 0x8C] bl StringCopy10 adds r0, r4, 0 movs r1, 0x7 ldr r2, [sp, 0x88] bl GetMonData mov r2, sp movs r6, 0 _08036910: adds r0, r7, r6 adds r1, r2, r6 ldrb r1, [r1] strb r1, [r0] adds r6, 0x1 cmp r6, 0x57 bls _08036910 b _08036D72 .align 2, 0 _08036920: .4byte gEnemyParty _08036924: .4byte 0xfffffc1f _08036928: .4byte 0xfff07fff _0803692C: .4byte 0xfffffe0f _08036930: movs r0, 0x64 muls r0, r5 ldr r1, _0803693C @ =gEnemyParty adds r0, r1 movs r1, 0xB b _08036CAA .align 2, 0 _0803693C: .4byte gEnemyParty _08036940: movs r0, 0x64 muls r0, r5 ldr r1, _0803694C @ =gEnemyParty adds r0, r1 movs r1, 0xC b _08036CAA .align 2, 0 _0803694C: .4byte gEnemyParty _08036950: movs r6, 0 add r2, sp, 0x58 mov r9, r2 add r0, sp, 0x60 mov r10, r0 movs r0, 0x64 adds r1, r5, 0 muls r1, r0 ldr r0, _080369B4 @ =gEnemyParty adds r4, r1, r0 mov r8, r9 _08036966: adds r1, r6, 0 adds r1, 0xD adds r0, r4, 0 bl GetMonData mov r1, r8 strh r0, [r1] adds r1, r6, 0 adds r1, 0x11 adds r0, r4, 0 bl GetMonData mov r2, r10 adds r1, r2, r6 strb r0, [r1] movs r0, 0x2 add r8, r0 adds r6, 0x1 cmp r6, 0x3 ble _08036966 movs r0, 0x64 muls r0, r5 ldr r1, _080369B4 @ =gEnemyParty adds r0, r1 movs r1, 0x15 bl GetMonData mov r1, r9 strb r0, [r1, 0xC] mov r2, r9 movs r6, 0 _080369A4: adds r0, r7, r6 adds r1, r2, r6 ldrb r1, [r1] strb r1, [r0] adds r6, 0x1 cmp r6, 0xF bls _080369A4 b _08036D72 .align 2, 0 _080369B4: .4byte gEnemyParty _080369B8: movs r0, 0x64 muls r0, r5 ldr r1, _080369D0 @ =gEnemyParty adds r0, r1 ldrb r1, [r3] lsls r1, 9 adds r2, 0x1 adds r1, r2 ldrb r1, [r1] adds r1, 0x9 b _08036CAA .align 2, 0 _080369D0: .4byte gEnemyParty _080369D4: movs r6, 0 movs r0, 0x64 adds r4, r5, 0 muls r4, r0 ldr r2, _08036A0C @ =gEnemyParty mov r8, r2 _080369E0: adds r1, r6, 0 adds r1, 0x11 mov r2, r8 adds r0, r4, r2 bl GetMonData adds r1, r7, r6 strb r0, [r1] adds r6, 0x1 cmp r6, 0x3 ble _080369E0 movs r0, 0x64 muls r0, r5 ldr r1, _08036A0C @ =gEnemyParty adds r0, r1 movs r1, 0x15 bl GetMonData adds r1, r7, r6 strb r0, [r1] adds r6, 0x1 b _08036D72 .align 2, 0 _08036A0C: .4byte gEnemyParty _08036A10: movs r0, 0x64 muls r0, r5 ldr r1, _08036A28 @ =gEnemyParty adds r0, r1 ldrb r1, [r3] lsls r1, 9 adds r2, 0x1 adds r1, r2 ldrb r1, [r1] adds r1, 0x8 b _08036D6A .align 2, 0 _08036A28: .4byte gEnemyParty _08036A2C: movs r0, 0x64 muls r0, r5 ldr r1, _08036A38 @ =gEnemyParty adds r0, r1 movs r1, 0x1 b _08036A46 .align 2, 0 _08036A38: .4byte gEnemyParty _08036A3C: movs r0, 0x64 muls r0, r5 ldr r1, _08036A68 @ =gEnemyParty adds r0, r1 movs r1, 0x19 _08036A46: bl GetMonData adds r1, r0, 0 strb r1, [r7] movs r0, 0xFF lsls r0, 8 ands r0, r1 lsrs r0, 8 strb r0, [r7, 0x1] movs r0, 0xFF lsls r0, 16 ands r0, r1 lsrs r0, 16 strb r0, [r7, 0x2] movs r6, 0x3 b _08036D72 .align 2, 0 _08036A68: .4byte gEnemyParty _08036A6C: movs r0, 0x64 muls r0, r5 ldr r1, _08036A78 @ =gEnemyParty adds r0, r1 movs r1, 0x1A b _08036D6A .align 2, 0 _08036A78: .4byte gEnemyParty _08036A7C: movs r0, 0x64 muls r0, r5 ldr r1, _08036A88 @ =gEnemyParty adds r0, r1 movs r1, 0x1B b _08036D6A .align 2, 0 _08036A88: .4byte gEnemyParty _08036A8C: movs r0, 0x64 muls r0, r5 ldr r1, _08036A98 @ =gEnemyParty adds r0, r1 movs r1, 0x1C b _08036D6A .align 2, 0 _08036A98: .4byte gEnemyParty _08036A9C: movs r0, 0x64 muls r0, r5 ldr r1, _08036AA8 @ =gEnemyParty adds r0, r1 movs r1, 0x1D b _08036D6A .align 2, 0 _08036AA8: .4byte gEnemyParty _08036AAC: movs r0, 0x64 muls r0, r5 ldr r1, _08036AB8 @ =gEnemyParty adds r0, r1 movs r1, 0x1E b _08036D6A .align 2, 0 _08036AB8: .4byte gEnemyParty _08036ABC: movs r0, 0x64 muls r0, r5 ldr r1, _08036AC8 @ =gEnemyParty adds r0, r1 movs r1, 0x1F b _08036D6A .align 2, 0 _08036AC8: .4byte gEnemyParty _08036ACC: movs r0, 0x64 muls r0, r5 ldr r1, _08036AD8 @ =gEnemyParty adds r0, r1 movs r1, 0x20 b _08036D6A .align 2, 0 _08036AD8: .4byte gEnemyParty _08036ADC: movs r0, 0x64 muls r0, r5 ldr r1, _08036AE8 @ =gEnemyParty adds r0, r1 movs r1, 0x22 b _08036D6A .align 2, 0 _08036AE8: .4byte gEnemyParty _08036AEC: movs r0, 0x64 muls r0, r5 ldr r1, _08036AF8 @ =gEnemyParty adds r0, r1 movs r1, 0x23 b _08036D6A .align 2, 0 _08036AF8: .4byte gEnemyParty _08036AFC: movs r0, 0x64 muls r0, r5 ldr r1, _08036B08 @ =gEnemyParty adds r0, r1 movs r1, 0x24 b _08036D6A .align 2, 0 _08036B08: .4byte gEnemyParty _08036B0C: movs r0, 0x64 muls r0, r5 ldr r1, _08036B18 @ =gEnemyParty adds r0, r1 movs r1, 0x25 b _08036D6A .align 2, 0 _08036B18: .4byte gEnemyParty _08036B1C: movs r0, 0x64 muls r0, r5 ldr r1, _08036B28 @ =gEnemyParty adds r0, r1 movs r1, 0x26 b _08036D6A .align 2, 0 _08036B28: .4byte gEnemyParty _08036B2C: movs r0, 0x64 adds r4, r5, 0 muls r4, r0 ldr r0, _08036B78 @ =gEnemyParty adds r4, r0 adds r0, r4, 0 movs r1, 0x27 bl GetMonData strb r0, [r7] adds r0, r4, 0 movs r1, 0x28 bl GetMonData strb r0, [r7, 0x1] adds r0, r4, 0 movs r1, 0x29 bl GetMonData strb r0, [r7, 0x2] adds r0, r4, 0 movs r1, 0x2A bl GetMonData strb r0, [r7, 0x3] adds r0, r4, 0 movs r1, 0x2B bl GetMonData strb r0, [r7, 0x4] adds r0, r4, 0 movs r1, 0x2C bl GetMonData strb r0, [r7, 0x5] movs r6, 0x6 b _08036D72 .align 2, 0 _08036B78: .4byte gEnemyParty _08036B7C: movs r0, 0x64 muls r0, r5 ldr r1, _08036B88 @ =gEnemyParty adds r0, r1 movs r1, 0x27 b _08036D6A .align 2, 0 _08036B88: .4byte gEnemyParty _08036B8C: movs r0, 0x64 muls r0, r5 ldr r1, _08036B98 @ =gEnemyParty adds r0, r1 movs r1, 0x28 b _08036D6A .align 2, 0 _08036B98: .4byte gEnemyParty _08036B9C: movs r0, 0x64 muls r0, r5 ldr r1, _08036BA8 @ =gEnemyParty adds r0, r1 movs r1, 0x29 b _08036D6A .align 2, 0 _08036BA8: .4byte gEnemyParty _08036BAC: movs r0, 0x64 muls r0, r5 ldr r1, _08036BB8 @ =gEnemyParty adds r0, r1 movs r1, 0x2A b _08036D6A .align 2, 0 _08036BB8: .4byte gEnemyParty _08036BBC: movs r0, 0x64 muls r0, r5 ldr r1, _08036BC8 @ =gEnemyParty adds r0, r1 movs r1, 0x2B b _08036D6A .align 2, 0 _08036BC8: .4byte gEnemyParty _08036BCC: movs r0, 0x64 muls r0, r5 ldr r1, _08036BD8 @ =gEnemyParty adds r0, r1 movs r1, 0x2C b _08036D6A .align 2, 0 _08036BD8: .4byte gEnemyParty _08036BDC: movs r0, 0x64 muls r0, r5 ldr r1, _08036BE8 @ =gEnemyParty adds r0, r1 movs r1, 0 b _08036C06 .align 2, 0 _08036BE8: .4byte gEnemyParty _08036BEC: movs r0, 0x64 muls r0, r5 ldr r1, _08036BF8 @ =gEnemyParty adds r0, r1 movs r1, 0x9 b _08036CAA .align 2, 0 _08036BF8: .4byte gEnemyParty _08036BFC: movs r0, 0x64 muls r0, r5 ldr r1, _08036C2C @ =gEnemyParty adds r0, r1 movs r1, 0x37 _08036C06: bl GetMonData adds r1, r0, 0 strb r1, [r7] movs r0, 0xFF lsls r0, 8 ands r0, r1 lsrs r0, 8 strb r0, [r7, 0x1] movs r0, 0xFF lsls r0, 16 ands r0, r1 lsrs r0, 16 strb r0, [r7, 0x2] lsrs r0, r1, 24 strb r0, [r7, 0x3] movs r6, 0x4 b _08036D72 .align 2, 0 _08036C2C: .4byte gEnemyParty _08036C30: movs r0, 0x64 muls r0, r5 ldr r1, _08036C3C @ =gEnemyParty adds r0, r1 movs r1, 0x38 b _08036D6A .align 2, 0 _08036C3C: .4byte gEnemyParty _08036C40: movs r0, 0x64 muls r0, r5 ldr r1, _08036C4C @ =gEnemyParty adds r0, r1 movs r1, 0x39 b _08036CAA .align 2, 0 _08036C4C: .4byte gEnemyParty _08036C50: movs r0, 0x64 muls r0, r5 ldr r1, _08036C5C @ =gEnemyParty adds r0, r1 movs r1, 0x3A b _08036CAA .align 2, 0 _08036C5C: .4byte gEnemyParty _08036C60: movs r0, 0x64 muls r0, r5 ldr r1, _08036C6C @ =gEnemyParty adds r0, r1 movs r1, 0x3B b _08036CAA .align 2, 0 _08036C6C: .4byte gEnemyParty _08036C70: movs r0, 0x64 muls r0, r5 ldr r1, _08036C7C @ =gEnemyParty adds r0, r1 movs r1, 0x3C b _08036CAA .align 2, 0 _08036C7C: .4byte gEnemyParty _08036C80: movs r0, 0x64 muls r0, r5 ldr r1, _08036C8C @ =gEnemyParty adds r0, r1 movs r1, 0x3D b _08036CAA .align 2, 0 _08036C8C: .4byte gEnemyParty _08036C90: movs r0, 0x64 muls r0, r5 ldr r1, _08036C9C @ =gEnemyParty adds r0, r1 movs r1, 0x3E b _08036CAA .align 2, 0 _08036C9C: .4byte gEnemyParty _08036CA0: movs r0, 0x64 muls r0, r5 ldr r1, _08036CBC @ =gEnemyParty adds r0, r1 movs r1, 0x3F _08036CAA: bl GetMonData lsls r0, 16 lsrs r0, 16 strb r0, [r7] lsrs r0, 8 strb r0, [r7, 0x1] movs r6, 0x2 b _08036D72 .align 2, 0 _08036CBC: .4byte gEnemyParty _08036CC0: movs r0, 0x64 muls r0, r5 ldr r1, _08036CCC @ =gEnemyParty adds r0, r1 movs r1, 0x16 b _08036D6A .align 2, 0 _08036CCC: .4byte gEnemyParty _08036CD0: movs r0, 0x64 muls r0, r5 ldr r1, _08036CDC @ =gEnemyParty adds r0, r1 movs r1, 0x17 b _08036D6A .align 2, 0 _08036CDC: .4byte gEnemyParty _08036CE0: movs r0, 0x64 muls r0, r5 ldr r1, _08036CEC @ =gEnemyParty adds r0, r1 movs r1, 0x18 b _08036D6A .align 2, 0 _08036CEC: .4byte gEnemyParty _08036CF0: movs r0, 0x64 muls r0, r5 ldr r1, _08036CFC @ =gEnemyParty adds r0, r1 movs r1, 0x21 b _08036D6A .align 2, 0 _08036CFC: .4byte gEnemyParty _08036D00: movs r0, 0x64 muls r0, r5 ldr r1, _08036D0C @ =gEnemyParty adds r0, r1 movs r1, 0x2F b _08036D6A .align 2, 0 _08036D0C: .4byte gEnemyParty _08036D10: movs r0, 0x64 muls r0, r5 ldr r1, _08036D1C @ =gEnemyParty adds r0, r1 movs r1, 0x30 b _08036D6A .align 2, 0 _08036D1C: .4byte gEnemyParty _08036D20: movs r0, 0x64 muls r0, r5 ldr r1, _08036D2C @ =gEnemyParty adds r0, r1 movs r1, 0x32 b _08036D6A .align 2, 0 _08036D2C: .4byte gEnemyParty _08036D30: movs r0, 0x64 muls r0, r5 ldr r1, _08036D3C @ =gEnemyParty adds r0, r1 movs r1, 0x33 b _08036D6A .align 2, 0 _08036D3C: .4byte gEnemyParty _08036D40: movs r0, 0x64 muls r0, r5 ldr r1, _08036D4C @ =gEnemyParty adds r0, r1 movs r1, 0x34 b _08036D6A .align 2, 0 _08036D4C: .4byte gEnemyParty _08036D50: movs r0, 0x64 muls r0, r5 ldr r1, _08036D5C @ =gEnemyParty adds r0, r1 movs r1, 0x35 b _08036D6A .align 2, 0 _08036D5C: .4byte gEnemyParty _08036D60: movs r0, 0x64 muls r0, r5 ldr r1, _08036D84 @ =gEnemyParty adds r0, r1 movs r1, 0x36 _08036D6A: bl GetMonData strb r0, [r7] movs r6, 0x1 _08036D72: adds r0, r6, 0 add sp, 0x90 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r1} bx r1 .align 2, 0 _08036D84: .4byte gEnemyParty thumb_func_end sub_80365DC thumb_func_start OpponentHandlecmd1 OpponentHandlecmd1: @ 8036D88 push {r4-r7,lr} sub sp, 0x58 ldr r2, _08036E00 @ =gBattlerPartyIndexes ldr r5, _08036E04 @ =gActiveBattler ldrb r1, [r5] lsls r0, r1, 1 adds r0, r2 ldrh r2, [r0] movs r0, 0x64 adds r4, r2, 0 muls r4, r0 ldr r3, _08036E08 @ =gUnknown_2022BC4 lsls r1, 9 adds r0, r3, 0x1 adds r0, r1, r0 ldrb r2, [r0] ldr r0, _08036E0C @ =gEnemyParty adds r0, r2, r0 adds r6, r4, r0 mov r0, sp adds r4, r0, r2 movs r2, 0 adds r0, r3, 0x2 adds r1, r0 adds r7, r5, 0 mov r12, r3 ldrb r1, [r1] cmp r2, r1 bcs _08036DDE adds r3, r0, 0 _08036DC4: adds r1, r4, r2 adds r0, r6, r2 ldrb r0, [r0] strb r0, [r1] adds r0, r2, 0x1 lsls r0, 24 lsrs r2, r0, 24 ldrb r0, [r5] lsls r0, 9 adds r0, r3 ldrb r0, [r0] cmp r2, r0 bcc _08036DC4 _08036DDE: ldrb r0, [r7] lsls r0, 9 mov r1, r12 adds r1, 0x2 adds r0, r1 ldrb r1, [r0] movs r0, 0x1 adds r2, r4, 0 bl EmitDataTransfer bl OpponentBufferExecCompleted add sp, 0x58 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08036E00: .4byte gBattlerPartyIndexes _08036E04: .4byte gActiveBattler _08036E08: .4byte gUnknown_2022BC4 _08036E0C: .4byte gEnemyParty thumb_func_end OpponentHandlecmd1 thumb_func_start OpponentHandleSetAttributes OpponentHandleSetAttributes: @ 8036E10 push {r4,r5,lr} ldr r1, _08036E34 @ =gUnknown_2022BC4 ldr r0, _08036E38 @ =gActiveBattler ldrb r2, [r0] lsls r0, r2, 9 adds r1, 0x2 adds r1, r0, r1 ldrb r0, [r1] cmp r0, 0 bne _08036E40 ldr r0, _08036E3C @ =gBattlerPartyIndexes lsls r1, r2, 1 adds r1, r0 ldrb r0, [r1] bl sub_8036E68 b _08036E5E .align 2, 0 _08036E34: .4byte gUnknown_2022BC4 _08036E38: .4byte gActiveBattler _08036E3C: .4byte gBattlerPartyIndexes _08036E40: ldrb r4, [r1] movs r5, 0 _08036E44: movs r0, 0x1 ands r0, r4 cmp r0, 0 beq _08036E52 adds r0, r5, 0 bl sub_8036E68 _08036E52: lsrs r4, 1 adds r0, r5, 0x1 lsls r0, 24 lsrs r5, r0, 24 cmp r5, 0x5 bls _08036E44 _08036E5E: bl OpponentBufferExecCompleted pop {r4,r5} pop {r0} bx r0 thumb_func_end OpponentHandleSetAttributes thumb_func_start sub_8036E68 sub_8036E68: @ 8036E68 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x38 lsls r0, 24 lsrs r5, r0, 24 ldr r3, _08036EA0 @ =gActiveBattler ldrb r0, [r3] lsls r0, 9 ldr r2, _08036EA4 @ =gUnknown_2022BC7 adds r4, r0, r2 adds r7, r4, 0 subs r1, r2, 0x2 adds r0, r1 ldrb r0, [r0] adds r6, r3, 0 adds r3, r2, 0 cmp r0, 0x3B bls _08036E96 bl _08037774 _08036E96: lsls r0, 2 ldr r1, _08036EA8 @ =_08036EAC adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _08036EA0: .4byte gActiveBattler _08036EA4: .4byte gUnknown_2022BC7 _08036EA8: .4byte _08036EAC .align 2, 0 _08036EAC: .4byte _08036F9C .4byte _08037134 .4byte _08037150 .4byte _0803716C .4byte _080371C0 .4byte _080371C0 .4byte _080371C0 .4byte _080371C0 .4byte _080371E0 .4byte _08037248 .4byte _08037248 .4byte _08037248 .4byte _08037248 .4byte _08037774 .4byte _08037774 .4byte _08037774 .4byte _08037774 .4byte _08037270 .4byte _0803728C .4byte _080372A8 .4byte _080372C4 .4byte _080372E0 .4byte _080372FC .4byte _08037318 .4byte _08037334 .4byte _08037350 .4byte _0803736C .4byte _08037388 .4byte _080373A4 .4byte _080373C0 .4byte _080373DC .4byte _080373F8 .4byte _0803746C .4byte _08037488 .4byte _080374A4 .4byte _080374C0 .4byte _080374DC .4byte _080374F8 .4byte _08037514 .4byte _08037530 .4byte _0803754C .4byte _08037568 .4byte _08037584 .4byte _080375A0 .4byte _080375BC .4byte _080375D8 .4byte _080375F4 .4byte _08037610 .4byte _0803762C .4byte _08037648 .4byte _08037664 .4byte _08037680 .4byte _0803769C .4byte _080376B8 .4byte _080376D4 .4byte _080376F0 .4byte _0803770C .4byte _08037728 .4byte _08037744 .4byte _08037760 _08036F9C: movs r0, 0x64 adds r4, r5, 0 muls r4, r0 ldr r0, _08037130 @ =gEnemyParty adds r4, r0 adds r0, r4, 0 movs r1, 0xB adds r2, r7, 0 bl SetMonData adds r2, r7, 0 adds r2, 0x2E adds r0, r4, 0 movs r1, 0xC bl SetMonData movs r0, 0 mov r8, r0 movs r0, 0x3B adds r0, r7 mov r10, r0 adds r0, r7, 0 adds r0, 0x2B str r0, [sp, 0x20] adds r0, 0x19 str r0, [sp, 0x28] adds r0, 0x4 str r0, [sp, 0x2C] adds r0, 0x4 str r0, [sp, 0x30] subs r0, 0x22 str r0, [sp, 0x1C] subs r0, 0x2 str r0, [sp, 0x18] adds r0, 0x4 str r0, [sp, 0x24] adds r0, r7, 0x2 str r0, [sp, 0x4] adds r0, r7, 0x4 str r0, [sp, 0x8] adds r0, r7, 0x6 str r0, [sp, 0xC] adds r0, 0x2 str r0, [sp, 0x10] adds r0, 0x2 str r0, [sp, 0x14] mov r9, r4 adds r6, r7, 0 adds r6, 0x24 adds r4, r7, 0 adds r4, 0xC _08037002: mov r1, r8 adds r1, 0xD mov r0, r9 adds r2, r4, 0 bl SetMonData mov r1, r8 adds r1, 0x11 mov r0, r9 adds r2, r6, 0 bl SetMonData adds r6, 0x1 adds r4, 0x2 movs r0, 0x1 add r8, r0 mov r0, r8 cmp r0, 0x3 ble _08037002 movs r0, 0x64 adds r4, r5, 0 muls r4, r0 ldr r0, _08037130 @ =gEnemyParty adds r4, r0 adds r0, r4, 0 movs r1, 0x15 mov r2, r10 bl SetMonData adds r0, r4, 0 movs r1, 0x20 ldr r2, [sp, 0x20] bl SetMonData adds r0, r4, 0 movs r1, 0x19 ldr r2, [sp, 0x28] bl SetMonData ldrb r0, [r7, 0x14] lsls r0, 27 lsrs r0, 27 mov r1, sp strb r0, [r1] adds r0, r4, 0 movs r1, 0x27 mov r2, sp bl SetMonData mov r1, sp ldrh r0, [r7, 0x14] lsls r0, 22 lsrs r0, 27 strb r0, [r1] adds r0, r4, 0 movs r1, 0x28 mov r2, sp bl SetMonData mov r1, sp ldrb r0, [r7, 0x15] lsls r0, 25 lsrs r0, 27 strb r0, [r1] adds r0, r4, 0 movs r1, 0x29 mov r2, sp bl SetMonData mov r1, sp ldr r0, [r7, 0x14] lsls r0, 12 lsrs r0, 27 strb r0, [r1] adds r0, r4, 0 movs r1, 0x2A mov r2, sp bl SetMonData mov r1, sp ldrh r0, [r7, 0x16] lsls r0, 23 lsrs r0, 27 strb r0, [r1] adds r0, r4, 0 movs r1, 0x2B mov r2, sp bl SetMonData mov r1, sp ldrb r0, [r7, 0x17] lsls r0, 26 lsrs r0, 27 strb r0, [r1] adds r0, r4, 0 movs r1, 0x2C mov r2, sp bl SetMonData adds r0, r4, 0 movs r1, 0 ldr r2, [sp, 0x2C] bl SetMonData adds r0, r4, 0 movs r1, 0x37 ldr r2, [sp, 0x30] bl SetMonData adds r0, r4, 0 movs r1, 0x38 ldr r2, [sp, 0x1C] bl SetMonData adds r0, r4, 0 movs r1, 0x39 ldr r2, [sp, 0x18] bl SetMonData adds r0, r4, 0 movs r1, 0x3A ldr r2, [sp, 0x24] bl SetMonData adds r0, r4, 0 movs r1, 0x3B ldr r2, [sp, 0x4] bl SetMonData adds r0, r4, 0 movs r1, 0x3C ldr r2, [sp, 0x8] bl SetMonData adds r0, r4, 0 movs r1, 0x3D ldr r2, [sp, 0xC] bl SetMonData adds r0, r4, 0 movs r1, 0x3E ldr r2, [sp, 0x10] bl SetMonData adds r0, r4, 0 movs r1, 0x3F ldr r2, [sp, 0x14] bl SetMonData b _08037774 .align 2, 0 _08037130: .4byte gEnemyParty _08037134: movs r0, 0x64 muls r0, r5 ldr r1, _0803714C @ =gEnemyParty adds r0, r1 ldrb r2, [r6] lsls r2, 9 adds r2, r3 movs r1, 0xB bl SetMonData b _08037774 .align 2, 0 _0803714C: .4byte gEnemyParty _08037150: movs r0, 0x64 muls r0, r5 ldr r1, _08037168 @ =gEnemyParty adds r0, r1 ldrb r2, [r6] lsls r2, 9 adds r2, r3 movs r1, 0xC bl SetMonData b _08037774 .align 2, 0 _08037168: .4byte gEnemyParty _0803716C: movs r0, 0 mov r8, r0 movs r0, 0xC adds r0, r4 mov r9, r0 movs r0, 0x64 adds r1, r5, 0 muls r1, r0 ldr r0, _080371BC @ =gEnemyParty adds r7, r1, r0 adds r6, r4, 0 adds r6, 0x8 _08037184: mov r1, r8 adds r1, 0xD adds r0, r7, 0 adds r2, r4, 0 bl SetMonData mov r1, r8 adds r1, 0x11 adds r0, r7, 0 adds r2, r6, 0 bl SetMonData adds r6, 0x1 adds r4, 0x2 movs r0, 0x1 add r8, r0 mov r0, r8 cmp r0, 0x3 ble _08037184 movs r0, 0x64 muls r0, r5 ldr r1, _080371BC @ =gEnemyParty adds r0, r1 movs r1, 0x15 mov r2, r9 bl SetMonData b _08037774 .align 2, 0 _080371BC: .4byte gEnemyParty _080371C0: movs r0, 0x64 muls r0, r5 ldr r1, _080371D8 @ =gEnemyParty adds r0, r1 ldr r3, _080371DC @ =gUnknown_2022BC4 ldrb r2, [r6] lsls r2, 9 adds r1, r3, 0x1 adds r1, r2, r1 ldrb r1, [r1] adds r1, 0x9 b _0803725E .align 2, 0 _080371D8: .4byte gEnemyParty _080371DC: .4byte gUnknown_2022BC4 _080371E0: movs r0, 0x64 adds r4, r5, 0 muls r4, r0 ldr r0, _08037244 @ =gEnemyParty adds r4, r0 ldrb r2, [r6] lsls r2, 9 adds r2, r3 adds r0, r4, 0 movs r1, 0x11 str r3, [sp, 0x34] bl SetMonData ldrb r2, [r6] lsls r2, 9 ldr r3, [sp, 0x34] adds r0, r3, 0x1 adds r2, r0 adds r0, r4, 0 movs r1, 0x12 bl SetMonData ldrb r2, [r6] lsls r2, 9 ldr r3, [sp, 0x34] adds r0, r3, 0x2 adds r2, r0 adds r0, r4, 0 movs r1, 0x13 bl SetMonData ldrb r2, [r6] lsls r2, 9 ldr r3, [sp, 0x34] adds r0, r3, 0x3 adds r2, r0 adds r0, r4, 0 movs r1, 0x14 bl SetMonData ldrb r2, [r6] lsls r2, 9 ldr r3, [sp, 0x34] adds r0, r3, 0x4 adds r2, r0 adds r0, r4, 0 movs r1, 0x15 bl SetMonData b _08037774 .align 2, 0 _08037244: .4byte gEnemyParty _08037248: movs r0, 0x64 muls r0, r5 ldr r1, _08037268 @ =gEnemyParty adds r0, r1 ldr r3, _0803726C @ =gUnknown_2022BC4 ldrb r2, [r6] lsls r2, 9 adds r1, r3, 0x1 adds r1, r2, r1 ldrb r1, [r1] adds r1, 0x8 _0803725E: adds r3, 0x3 adds r2, r3 bl SetMonData b _08037774 .align 2, 0 _08037268: .4byte gEnemyParty _0803726C: .4byte gUnknown_2022BC4 _08037270: movs r0, 0x64 muls r0, r5 ldr r1, _08037288 @ =gEnemyParty adds r0, r1 ldrb r2, [r6] lsls r2, 9 adds r2, r3 movs r1, 0x1 bl SetMonData b _08037774 .align 2, 0 _08037288: .4byte gEnemyParty _0803728C: movs r0, 0x64 muls r0, r5 ldr r1, _080372A4 @ =gEnemyParty adds r0, r1 ldrb r2, [r6] lsls r2, 9 adds r2, r3 movs r1, 0x19 bl SetMonData b _08037774 .align 2, 0 _080372A4: .4byte gEnemyParty _080372A8: movs r0, 0x64 muls r0, r5 ldr r1, _080372C0 @ =gEnemyParty adds r0, r1 ldrb r2, [r6] lsls r2, 9 adds r2, r3 movs r1, 0x1A bl SetMonData b _08037774 .align 2, 0 _080372C0: .4byte gEnemyParty _080372C4: movs r0, 0x64 muls r0, r5 ldr r1, _080372DC @ =gEnemyParty adds r0, r1 ldrb r2, [r6] lsls r2, 9 adds r2, r3 movs r1, 0x1B bl SetMonData b _08037774 .align 2, 0 _080372DC: .4byte gEnemyParty _080372E0: movs r0, 0x64 muls r0, r5 ldr r1, _080372F8 @ =gEnemyParty adds r0, r1 ldrb r2, [r6] lsls r2, 9 adds r2, r3 movs r1, 0x1C bl SetMonData b _08037774 .align 2, 0 _080372F8: .4byte gEnemyParty _080372FC: movs r0, 0x64 muls r0, r5 ldr r1, _08037314 @ =gEnemyParty adds r0, r1 ldrb r2, [r6] lsls r2, 9 adds r2, r3 movs r1, 0x1D bl SetMonData b _08037774 .align 2, 0 _08037314: .4byte gEnemyParty _08037318: movs r0, 0x64 muls r0, r5 ldr r1, _08037330 @ =gEnemyParty adds r0, r1 ldrb r2, [r6] lsls r2, 9 adds r2, r3 movs r1, 0x1E bl SetMonData b _08037774 .align 2, 0 _08037330: .4byte gEnemyParty _08037334: movs r0, 0x64 muls r0, r5 ldr r1, _0803734C @ =gEnemyParty adds r0, r1 ldrb r2, [r6] lsls r2, 9 adds r2, r3 movs r1, 0x1F bl SetMonData b _08037774 .align 2, 0 _0803734C: .4byte gEnemyParty _08037350: movs r0, 0x64 muls r0, r5 ldr r1, _08037368 @ =gEnemyParty adds r0, r1 ldrb r2, [r6] lsls r2, 9 adds r2, r3 movs r1, 0x20 bl SetMonData b _08037774 .align 2, 0 _08037368: .4byte gEnemyParty _0803736C: movs r0, 0x64 muls r0, r5 ldr r1, _08037384 @ =gEnemyParty adds r0, r1 ldrb r2, [r6] lsls r2, 9 adds r2, r3 movs r1, 0x22 bl SetMonData b _08037774 .align 2, 0 _08037384: .4byte gEnemyParty _08037388: movs r0, 0x64 muls r0, r5 ldr r1, _080373A0 @ =gEnemyParty adds r0, r1 ldrb r2, [r6] lsls r2, 9 adds r2, r3 movs r1, 0x23 bl SetMonData b _08037774 .align 2, 0 _080373A0: .4byte gEnemyParty _080373A4: movs r0, 0x64 muls r0, r5 ldr r1, _080373BC @ =gEnemyParty adds r0, r1 ldrb r2, [r6] lsls r2, 9 adds r2, r3 movs r1, 0x24 bl SetMonData b _08037774 .align 2, 0 _080373BC: .4byte gEnemyParty _080373C0: movs r0, 0x64 muls r0, r5 ldr r1, _080373D8 @ =gEnemyParty adds r0, r1 ldrb r2, [r6] lsls r2, 9 adds r2, r3 movs r1, 0x25 bl SetMonData b _08037774 .align 2, 0 _080373D8: .4byte gEnemyParty _080373DC: movs r0, 0x64 muls r0, r5 ldr r1, _080373F4 @ =gEnemyParty adds r0, r1 ldrb r2, [r6] lsls r2, 9 adds r2, r3 movs r1, 0x26 bl SetMonData b _08037774 .align 2, 0 _080373F4: .4byte gEnemyParty _080373F8: movs r0, 0x64 adds r4, r5, 0 muls r4, r0 ldr r0, _08037468 @ =gEnemyParty adds r4, r0 ldrb r2, [r6] lsls r2, 9 adds r2, r3 adds r0, r4, 0 movs r1, 0x27 str r3, [sp, 0x34] bl SetMonData ldrb r2, [r6] lsls r2, 9 ldr r3, [sp, 0x34] adds r0, r3, 0x1 adds r2, r0 adds r0, r4, 0 movs r1, 0x28 bl SetMonData ldrb r2, [r6] lsls r2, 9 ldr r3, [sp, 0x34] adds r0, r3, 0x2 adds r2, r0 adds r0, r4, 0 movs r1, 0x29 bl SetMonData ldrb r2, [r6] lsls r2, 9 ldr r3, [sp, 0x34] adds r0, r3, 0x3 adds r2, r0 adds r0, r4, 0 movs r1, 0x2A bl SetMonData ldrb r2, [r6] lsls r2, 9 ldr r3, [sp, 0x34] adds r0, r3, 0x4 adds r2, r0 adds r0, r4, 0 movs r1, 0x2B bl SetMonData ldrb r2, [r6] lsls r2, 9 ldr r3, [sp, 0x34] adds r0, r3, 0x5 adds r2, r0 adds r0, r4, 0 b _08037506 .align 2, 0 _08037468: .4byte gEnemyParty _0803746C: movs r0, 0x64 muls r0, r5 ldr r1, _08037484 @ =gEnemyParty adds r0, r1 ldrb r2, [r6] lsls r2, 9 adds r2, r3 movs r1, 0x27 bl SetMonData b _08037774 .align 2, 0 _08037484: .4byte gEnemyParty _08037488: movs r0, 0x64 muls r0, r5 ldr r1, _080374A0 @ =gEnemyParty adds r0, r1 ldrb r2, [r6] lsls r2, 9 adds r2, r3 movs r1, 0x28 bl SetMonData b _08037774 .align 2, 0 _080374A0: .4byte gEnemyParty _080374A4: movs r0, 0x64 muls r0, r5 ldr r1, _080374BC @ =gEnemyParty adds r0, r1 ldrb r2, [r6] lsls r2, 9 adds r2, r3 movs r1, 0x29 bl SetMonData b _08037774 .align 2, 0 _080374BC: .4byte gEnemyParty _080374C0: movs r0, 0x64 muls r0, r5 ldr r1, _080374D8 @ =gEnemyParty adds r0, r1 ldrb r2, [r6] lsls r2, 9 adds r2, r3 movs r1, 0x2A bl SetMonData b _08037774 .align 2, 0 _080374D8: .4byte gEnemyParty _080374DC: movs r0, 0x64 muls r0, r5 ldr r1, _080374F4 @ =gEnemyParty adds r0, r1 ldrb r2, [r6] lsls r2, 9 adds r2, r3 movs r1, 0x2B bl SetMonData b _08037774 .align 2, 0 _080374F4: .4byte gEnemyParty _080374F8: movs r0, 0x64 muls r0, r5 ldr r1, _08037510 @ =gEnemyParty adds r0, r1 ldrb r2, [r6] lsls r2, 9 adds r2, r3 _08037506: movs r1, 0x2C bl SetMonData b _08037774 .align 2, 0 _08037510: .4byte gEnemyParty _08037514: movs r0, 0x64 muls r0, r5 ldr r1, _0803752C @ =gEnemyParty adds r0, r1 ldrb r2, [r6] lsls r2, 9 adds r2, r3 movs r1, 0 bl SetMonData b _08037774 .align 2, 0 _0803752C: .4byte gEnemyParty _08037530: movs r0, 0x64 muls r0, r5 ldr r1, _08037548 @ =gEnemyParty adds r0, r1 ldrb r2, [r6] lsls r2, 9 adds r2, r3 movs r1, 0x9 bl SetMonData b _08037774 .align 2, 0 _08037548: .4byte gEnemyParty _0803754C: movs r0, 0x64 muls r0, r5 ldr r1, _08037564 @ =gEnemyParty adds r0, r1 ldrb r2, [r6] lsls r2, 9 adds r2, r3 movs r1, 0x37 bl SetMonData b _08037774 .align 2, 0 _08037564: .4byte gEnemyParty _08037568: movs r0, 0x64 muls r0, r5 ldr r1, _08037580 @ =gEnemyParty adds r0, r1 ldrb r2, [r6] lsls r2, 9 adds r2, r3 movs r1, 0x38 bl SetMonData b _08037774 .align 2, 0 _08037580: .4byte gEnemyParty _08037584: movs r0, 0x64 muls r0, r5 ldr r1, _0803759C @ =gEnemyParty adds r0, r1 ldrb r2, [r6] lsls r2, 9 adds r2, r3 movs r1, 0x39 bl SetMonData b _08037774 .align 2, 0 _0803759C: .4byte gEnemyParty _080375A0: movs r0, 0x64 muls r0, r5 ldr r1, _080375B8 @ =gEnemyParty adds r0, r1 ldrb r2, [r6] lsls r2, 9 adds r2, r3 movs r1, 0x3A bl SetMonData b _08037774 .align 2, 0 _080375B8: .4byte gEnemyParty _080375BC: movs r0, 0x64 muls r0, r5 ldr r1, _080375D4 @ =gEnemyParty adds r0, r1 ldrb r2, [r6] lsls r2, 9 adds r2, r3 movs r1, 0x3B bl SetMonData b _08037774 .align 2, 0 _080375D4: .4byte gEnemyParty _080375D8: movs r0, 0x64 muls r0, r5 ldr r1, _080375F0 @ =gEnemyParty adds r0, r1 ldrb r2, [r6] lsls r2, 9 adds r2, r3 movs r1, 0x3C bl SetMonData b _08037774 .align 2, 0 _080375F0: .4byte gEnemyParty _080375F4: movs r0, 0x64 muls r0, r5 ldr r1, _0803760C @ =gEnemyParty adds r0, r1 ldrb r2, [r6] lsls r2, 9 adds r2, r3 movs r1, 0x3D bl SetMonData b _08037774 .align 2, 0 _0803760C: .4byte gEnemyParty _08037610: movs r0, 0x64 muls r0, r5 ldr r1, _08037628 @ =gEnemyParty adds r0, r1 ldrb r2, [r6] lsls r2, 9 adds r2, r3 movs r1, 0x3E bl SetMonData b _08037774 .align 2, 0 _08037628: .4byte gEnemyParty _0803762C: movs r0, 0x64 muls r0, r5 ldr r1, _08037644 @ =gEnemyParty adds r0, r1 ldrb r2, [r6] lsls r2, 9 adds r2, r3 movs r1, 0x3F bl SetMonData b _08037774 .align 2, 0 _08037644: .4byte gEnemyParty _08037648: movs r0, 0x64 muls r0, r5 ldr r1, _08037660 @ =gEnemyParty adds r0, r1 ldrb r2, [r6] lsls r2, 9 adds r2, r3 movs r1, 0x16 bl SetMonData b _08037774 .align 2, 0 _08037660: .4byte gEnemyParty _08037664: movs r0, 0x64 muls r0, r5 ldr r1, _0803767C @ =gEnemyParty adds r0, r1 ldrb r2, [r6] lsls r2, 9 adds r2, r3 movs r1, 0x17 bl SetMonData b _08037774 .align 2, 0 _0803767C: .4byte gEnemyParty _08037680: movs r0, 0x64 muls r0, r5 ldr r1, _08037698 @ =gEnemyParty adds r0, r1 ldrb r2, [r6] lsls r2, 9 adds r2, r3 movs r1, 0x18 bl SetMonData b _08037774 .align 2, 0 _08037698: .4byte gEnemyParty _0803769C: movs r0, 0x64 muls r0, r5 ldr r1, _080376B4 @ =gEnemyParty adds r0, r1 ldrb r2, [r6] lsls r2, 9 adds r2, r3 movs r1, 0x21 bl SetMonData b _08037774 .align 2, 0 _080376B4: .4byte gEnemyParty _080376B8: movs r0, 0x64 muls r0, r5 ldr r1, _080376D0 @ =gEnemyParty adds r0, r1 ldrb r2, [r6] lsls r2, 9 adds r2, r3 movs r1, 0x2F bl SetMonData b _08037774 .align 2, 0 _080376D0: .4byte gEnemyParty _080376D4: movs r0, 0x64 muls r0, r5 ldr r1, _080376EC @ =gEnemyParty adds r0, r1 ldrb r2, [r6] lsls r2, 9 adds r2, r3 movs r1, 0x30 bl SetMonData b _08037774 .align 2, 0 _080376EC: .4byte gEnemyParty _080376F0: movs r0, 0x64 muls r0, r5 ldr r1, _08037708 @ =gEnemyParty adds r0, r1 ldrb r2, [r6] lsls r2, 9 adds r2, r3 movs r1, 0x32 bl SetMonData b _08037774 .align 2, 0 _08037708: .4byte gEnemyParty _0803770C: movs r0, 0x64 muls r0, r5 ldr r1, _08037724 @ =gEnemyParty adds r0, r1 ldrb r2, [r6] lsls r2, 9 adds r2, r3 movs r1, 0x33 bl SetMonData b _08037774 .align 2, 0 _08037724: .4byte gEnemyParty _08037728: movs r0, 0x64 muls r0, r5 ldr r1, _08037740 @ =gEnemyParty adds r0, r1 ldrb r2, [r6] lsls r2, 9 adds r2, r3 movs r1, 0x34 bl SetMonData b _08037774 .align 2, 0 _08037740: .4byte gEnemyParty _08037744: movs r0, 0x64 muls r0, r5 ldr r1, _0803775C @ =gEnemyParty adds r0, r1 ldrb r2, [r6] lsls r2, 9 adds r2, r3 movs r1, 0x35 bl SetMonData b _08037774 .align 2, 0 _0803775C: .4byte gEnemyParty _08037760: movs r0, 0x64 muls r0, r5 ldr r1, _08037784 @ =gEnemyParty adds r0, r1 ldrb r2, [r6] lsls r2, 9 adds r2, r3 movs r1, 0x36 bl SetMonData _08037774: add sp, 0x38 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08037784: .4byte gEnemyParty thumb_func_end sub_8036E68 thumb_func_start OpponentHandlecmd3 OpponentHandlecmd3: @ 8037788 push {r4-r7,lr} ldr r1, _080377EC @ =gBattlerPartyIndexes ldr r7, _080377F0 @ =gActiveBattler ldrb r2, [r7] lsls r0, r2, 1 adds r0, r1 ldrh r1, [r0] movs r0, 0x64 adds r3, r1, 0 muls r3, r0 ldr r4, _080377F4 @ =gUnknown_2022BC4 lsls r2, 9 adds r0, r4, 0x1 adds r0, r2, r0 ldrb r0, [r0] ldr r1, _080377F8 @ =gEnemyParty adds r0, r1 adds r5, r3, r0 movs r3, 0 adds r0, r4, 0x2 adds r2, r0 ldrb r2, [r2] cmp r3, r2 bcs _080377E0 adds r6, r4, 0 adds r2, r7, 0 adds r4, r0, 0 _080377BE: adds r1, r5, r3 ldrb r0, [r2] lsls r0, 9 adds r0, 0x3 adds r0, r3, r0 adds r0, r6 ldrb r0, [r0] strb r0, [r1] adds r0, r3, 0x1 lsls r0, 24 lsrs r3, r0, 24 ldrb r0, [r2] lsls r0, 9 adds r0, r4 ldrb r0, [r0] cmp r3, r0 bcc _080377BE _080377E0: bl OpponentBufferExecCompleted pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080377EC: .4byte gBattlerPartyIndexes _080377F0: .4byte gActiveBattler _080377F4: .4byte gUnknown_2022BC4 _080377F8: .4byte gEnemyParty thumb_func_end OpponentHandlecmd3 thumb_func_start sub_80377FC sub_80377FC: @ 80377FC push {r4-r7,lr} mov r7, r8 push {r7} ldr r7, _0803787C @ =gBattlerPartyIndexes ldr r4, _08037880 @ =gActiveBattler ldrb r0, [r4] lsls r0, 1 adds r0, r7 ldrh r0, [r0] movs r5, 0x64 muls r0, r5 ldr r6, _08037884 @ =gEnemyParty adds r0, r6 movs r1, 0xB bl GetMonData lsls r0, 16 lsrs r0, 16 mov r8, r0 ldr r0, _08037888 @ =gBattleTypeFlags ldr r0, [r0] movs r1, 0x80 lsls r1, 8 ands r0, r1 cmp r0, 0 beq _08037890 ldrb r1, [r4] lsls r0, r1, 1 adds r0, r7 ldrh r0, [r0] muls r0, r5 adds r0, r6 bl sub_8034658 ldrb r0, [r4] bl sub_8074900 lsls r0, 24 lsrs r5, r0, 24 ldr r3, _0803788C @ =gUnknown_2024018 ldr r0, [r3] ldrb r1, [r4] ldr r2, [r0, 0x4] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r1, [r0] movs r2, 0x80 orrs r1, r2 strb r1, [r0] ldr r0, [r3] ldrb r1, [r4] ldr r2, [r0, 0x4] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r1, [r0, 0x1] movs r2, 0x1 orrs r1, r2 strb r1, [r0, 0x1] b _080378AA .align 2, 0 _0803787C: .4byte gBattlerPartyIndexes _08037880: .4byte gActiveBattler _08037884: .4byte gEnemyParty _08037888: .4byte gBattleTypeFlags _0803788C: .4byte gUnknown_2024018 _08037890: ldrb r1, [r4] lsls r0, r1, 1 adds r0, r7 ldrh r0, [r0] muls r0, r5 adds r0, r6 bl BattleLoadOpponentMonSpriteGfx ldrb r0, [r4] bl GetBankSpriteDefault_Y lsls r0, 24 lsrs r5, r0, 24 _080378AA: ldr r7, _0803799C @ =gActiveBattler ldrb r0, [r7] bl GetBattlerPosition adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 mov r0, r8 bl SetMultiuseSpriteTemplateToPokemon ldr r6, _080379A0 @ =gMultiuseSpriteTemplate ldrb r0, [r7] movs r1, 0x2 bl sub_8074480 adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 ldrb r0, [r7] bl sub_807685C adds r3, r0, 0 lsls r3, 24 lsrs r3, 24 adds r0, r6, 0 adds r1, r4, 0 adds r2, r5, 0 bl CreateSprite ldr r4, _080379A4 @ =gBattlerSpriteIds ldrb r1, [r7] adds r1, r4 strb r0, [r1] ldr r5, _080379A8 @ =gSprites ldrb r0, [r7] adds r0, r4 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r5 ldr r1, _080379AC @ =0x0000ff10 strh r1, [r0, 0x24] ldrb r2, [r7] adds r0, r2, r4 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r5 strh r2, [r0, 0x2E] ldrb r0, [r7] adds r0, r4 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r5 mov r1, r8 strh r1, [r0, 0x32] ldrb r3, [r7] adds r0, r3, r4 ldrb r0, [r0] lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r1, r5 lsls r3, 4 ldrb r2, [r1, 0x5] movs r0, 0xF ands r0, r2 orrs r0, r3 strb r0, [r1, 0x5] ldrb r2, [r7] adds r4, r2, r4 ldrb r1, [r4] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r5 ldr r1, _080379B0 @ =gBattleMonForms adds r2, r1 ldrb r1, [r2] bl StartSpriteAnim ldr r0, _080379B4 @ =gBattleTypeFlags ldr r0, [r0] movs r1, 0x80 lsls r1, 8 ands r0, r1 cmp r0, 0 bne _08037986 ldrb r4, [r7] ldr r1, _080379B8 @ =gBattlerPartyIndexes lsls r0, r4, 1 adds r0, r1 ldrh r1, [r0] movs r0, 0x64 muls r0, r1 ldr r1, _080379BC @ =gEnemyParty adds r0, r1 movs r1, 0xB bl GetMonData adds r1, r0, 0 lsls r1, 16 lsrs r1, 16 adds r0, r4, 0 bl SetBankEnemyShadowSpriteCallback _08037986: ldr r0, _080379C0 @ =gUnknown_3004FE0 ldrb r1, [r7] lsls r1, 2 adds r1, r0 ldr r0, _080379C4 @ =sub_8035FE8 str r0, [r1] pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0803799C: .4byte gActiveBattler _080379A0: .4byte gMultiuseSpriteTemplate _080379A4: .4byte gBattlerSpriteIds _080379A8: .4byte gSprites _080379AC: .4byte 0x0000ff10 _080379B0: .4byte gBattleMonForms _080379B4: .4byte gBattleTypeFlags _080379B8: .4byte gBattlerPartyIndexes _080379BC: .4byte gEnemyParty _080379C0: .4byte gUnknown_3004FE0 _080379C4: .4byte sub_8035FE8 thumb_func_end sub_80377FC thumb_func_start OpponentHandleSwitchInAnim OpponentHandleSwitchInAnim: @ 80379C8 push {r4,lr} ldr r4, _08037A10 @ =gActiveBattler ldrb r0, [r4] ldr r1, _08037A14 @ =gBattleStruct ldr r1, [r1] adds r0, r1 adds r0, 0x5C movs r1, 0x6 strb r1, [r0] ldr r1, _08037A18 @ =gBattlerPartyIndexes ldrb r0, [r4] lsls r2, r0, 1 adds r2, r1 ldr r3, _08037A1C @ =gUnknown_2022BC4 lsls r0, 9 adds r1, r3, 0x1 adds r0, r1 ldrb r0, [r0] strh r0, [r2] ldrb r0, [r4] lsls r1, r0, 9 adds r3, 0x2 adds r1, r3 ldrb r1, [r1] bl sub_8037A28 ldr r1, _08037A20 @ =gUnknown_3004FE0 ldrb r0, [r4] lsls r0, 2 adds r0, r1 ldr r1, _08037A24 @ =sub_8036408 str r1, [r0] pop {r4} pop {r0} bx r0 .align 2, 0 _08037A10: .4byte gActiveBattler _08037A14: .4byte gBattleStruct _08037A18: .4byte gBattlerPartyIndexes _08037A1C: .4byte gUnknown_2022BC4 _08037A20: .4byte gUnknown_3004FE0 _08037A24: .4byte sub_8036408 thumb_func_end OpponentHandleSwitchInAnim thumb_func_start sub_8037A28 sub_8037A28: @ 8037A28 push {r4-r6,lr} mov r6, r10 mov r5, r9 mov r4, r8 push {r4-r6} adds r6, r0, 0 lsls r6, 24 lsrs r6, 24 lsls r1, 24 lsrs r1, 24 adds r0, r6, 0 bl ClearTemporarySpeciesSpriteData ldr r0, _08037B84 @ =gBattlerPartyIndexes lsls r4, r6, 1 adds r4, r0 ldr r0, _08037B88 @ =gUnknown_2022BC4 lsls r1, r6, 9 adds r0, 0x1 adds r1, r0 ldrb r0, [r1] strh r0, [r4] ldrh r0, [r4] movs r1, 0x64 mov r9, r1 mov r1, r9 muls r1, r0 adds r0, r1, 0 ldr r5, _08037B8C @ =gEnemyParty adds r0, r5 movs r1, 0xB bl GetMonData mov r8, r0 lsls r0, 16 lsrs r0, 16 mov r8, r0 ldr r0, _08037B90 @ =sub_8033E3C bl CreateInvisibleSpriteWithCallback ldr r1, _08037B94 @ =gUnknown_3004FFC mov r10, r1 add r10, r6 mov r1, r10 strb r0, [r1] ldrh r0, [r4] mov r1, r9 muls r1, r0 adds r0, r1, 0 adds r0, r5 adds r1, r6, 0 bl BattleLoadOpponentMonSpriteGfx adds r0, r6, 0 bl GetBattlerPosition adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 mov r0, r8 bl SetMultiuseSpriteTemplateToPokemon ldr r0, _08037B98 @ =gMultiuseSpriteTemplate mov r9, r0 adds r0, r6, 0 movs r1, 0x2 bl sub_8074480 adds r5, r0, 0 lsls r5, 24 lsrs r5, 24 adds r0, r6, 0 bl GetBankSpriteDefault_Y adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 adds r0, r6, 0 bl sub_807685C adds r3, r0, 0 lsls r3, 24 lsrs r3, 24 mov r0, r9 adds r1, r5, 0 adds r2, r4, 0 bl CreateSprite ldr r4, _08037B9C @ =gBattlerSpriteIds adds r4, r6, r4 strb r0, [r4] ldr r5, _08037BA0 @ =gSprites ldrb r1, [r4] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r5 strh r6, [r0, 0x2E] ldrb r1, [r4] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r5 mov r1, r8 strh r1, [r0, 0x32] mov r0, r10 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r5 ldrb r1, [r4] strh r1, [r0, 0x30] ldrb r0, [r4] lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r1, r5 lsls r3, r6, 4 ldrb r2, [r1, 0x5] movs r0, 0xF ands r0, r2 orrs r0, r3 strb r0, [r1, 0x5] ldrb r1, [r4] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r5 ldr r1, _08037BA4 @ =gBattleMonForms adds r6, r1 ldrb r1, [r6] bl StartSpriteAnim ldrb r1, [r4] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r5 adds r0, 0x3E ldrb r1, [r0] movs r2, 0x4 orrs r1, r2 strb r1, [r0] ldrb r1, [r4] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r1, r5, 0 adds r1, 0x1C adds r0, r1 ldr r1, _08037BA8 @ =SpriteCallbackDummy str r1, [r0] movs r0, 0 movs r1, 0xFE bl DoPokeballSendOutAnimation mov r1, r10 ldrb r2, [r1] lsls r1, r2, 4 adds r1, r2 lsls r1, 2 adds r1, r5 lsls r0, 24 lsrs r0, 24 strh r0, [r1, 0x2E] pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _08037B84: .4byte gBattlerPartyIndexes _08037B88: .4byte gUnknown_2022BC4 _08037B8C: .4byte gEnemyParty _08037B90: .4byte sub_8033E3C _08037B94: .4byte gUnknown_3004FFC _08037B98: .4byte gMultiuseSpriteTemplate _08037B9C: .4byte gBattlerSpriteIds _08037BA0: .4byte gSprites _08037BA4: .4byte gBattleMonForms _08037BA8: .4byte SpriteCallbackDummy thumb_func_end sub_8037A28 thumb_func_start sub_8037BAC sub_8037BAC: @ 8037BAC push {r4-r6,lr} ldr r1, _08037BE0 @ =gUnknown_2022BC4 ldr r6, _08037BE4 @ =gActiveBattler ldrb r2, [r6] lsls r0, r2, 9 adds r1, 0x1 adds r0, r1 ldrb r3, [r0] cmp r3, 0 bne _08037BF4 ldr r0, _08037BE8 @ =gUnknown_2024018 ldr r0, [r0] ldr r1, [r0, 0x4] lsls r0, r2, 1 adds r0, r2 lsls r0, 2 adds r0, r1 strb r3, [r0, 0x4] ldr r1, _08037BEC @ =gUnknown_3004FE0 ldrb r0, [r6] lsls r0, 2 adds r0, r1 ldr r1, _08037BF0 @ =sub_8037C44 str r1, [r0] b _08037C30 .align 2, 0 _08037BE0: .4byte gUnknown_2022BC4 _08037BE4: .4byte gActiveBattler _08037BE8: .4byte gUnknown_2024018 _08037BEC: .4byte gUnknown_3004FE0 _08037BF0: .4byte sub_8037C44 _08037BF4: ldr r5, _08037C38 @ =gBattlerSpriteIds adds r0, r2, r5 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 ldr r4, _08037C3C @ =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 EnemyShadowCallbackToSetInvisible ldr r1, _08037C40 @ =gUnknown_3004FF0 ldrb r0, [r6] adds r0, r1 ldrb r0, [r0] bl SetHealthboxSpriteInvisible bl OpponentBufferExecCompleted _08037C30: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _08037C38: .4byte gBattlerSpriteIds _08037C3C: .4byte gSprites _08037C40: .4byte gUnknown_3004FF0 thumb_func_end sub_8037BAC thumb_func_start sub_8037C44 sub_8037C44: @ 8037C44 push {r4-r6,lr} ldr r6, _08037C64 @ =gUnknown_2024018 ldr r4, [r6] ldr r5, _08037C68 @ =gActiveBattler ldrb r2, [r5] ldr r1, [r4, 0x4] lsls r0, r2, 1 adds r0, r2 lsls r0, 2 adds r3, r0, r1 ldrb r0, [r3, 0x4] cmp r0, 0 beq _08037C6C cmp r0, 0x1 beq _08037C9A b _08037CC2 .align 2, 0 _08037C64: .4byte gUnknown_2024018 _08037C68: .4byte gActiveBattler _08037C6C: ldr r1, [r4] lsls r0, r2, 2 adds r0, r1 ldrb r1, [r0] movs r0, 0x4 ands r0, r1 cmp r0, 0 beq _08037C86 adds r0, r2, 0 adds r1, r2, 0 movs r3, 0x5 bl InitAndLaunchSpecialAnimation _08037C86: ldr r0, [r6] ldrb r1, [r5] ldr r2, [r0, 0x4] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 movs r1, 0x1 strb r1, [r0, 0x4] b _08037CC2 _08037C9A: ldrb r1, [r3] movs r0, 0x40 ands r0, r1 lsls r0, 24 lsrs r0, 24 cmp r0, 0 bne _08037CC2 strb r0, [r3, 0x4] ldrb r2, [r5] adds r0, r2, 0 adds r1, r2, 0 movs r3, 0x2 bl InitAndLaunchSpecialAnimation ldr r1, _08037CC8 @ =gUnknown_3004FE0 ldrb r0, [r5] lsls r0, 2 adds r0, r1 ldr r1, _08037CCC @ =sub_8036170 str r1, [r0] _08037CC2: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _08037CC8: .4byte gUnknown_3004FE0 _08037CCC: .4byte sub_8036170 thumb_func_end sub_8037C44 thumb_func_start sub_8037CD0 sub_8037CD0: @ 8037CD0 push {r4-r6,lr} mov r6, r9 mov r5, r8 push {r5,r6} ldr r3, _08037CEC @ =gTrainerBattleOpponent_A ldrh r1, [r3] movs r0, 0x80 lsls r0, 3 cmp r1, r0 bne _08037CF0 bl GetSecretBaseTrainerPicIndex b _08037D26 .align 2, 0 _08037CEC: .4byte gTrainerBattleOpponent_A _08037CF0: ldr r0, _08037D04 @ =gBattleTypeFlags ldr r1, [r0] movs r0, 0x80 lsls r0, 1 ands r0, r1 cmp r0, 0 beq _08037D08 bl sub_80E6078 b _08037D26 .align 2, 0 _08037D04: .4byte gBattleTypeFlags _08037D08: movs r0, 0x80 lsls r0, 12 ands r0, r1 cmp r0, 0 beq _08037D18 bl sub_815DA3C b _08037D26 _08037D18: movs r0, 0x80 lsls r0, 4 ands r1, r0 cmp r1, 0 beq _08037D2C bl GetEreaderTrainerFrontSpriteId _08037D26: lsls r0, 24 lsrs r0, 24 b _08037D3A _08037D2C: ldr r2, _08037E6C @ =gTrainers ldrh r1, [r3] lsls r0, r1, 2 adds r0, r1 lsls r0, 3 adds r0, r2 ldrb r0, [r0, 0x3] _08037D3A: mov r9, r0 ldr r0, _08037E70 @ =gActiveBattler mov r8, r0 ldrb r1, [r0] mov r0, r9 bl sub_80346C4 mov r1, r8 ldrb r0, [r1] bl GetBattlerPosition adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 mov r0, r9 bl SetMultiuseSpriteTemplateToTrainerBack ldr r5, _08037E74 @ =gMultiuseSpriteTemplate ldr r1, _08037E78 @ =gUnknown_823932C mov r2, r9 lsls r0, r2, 2 adds r0, r1 ldrb r0, [r0] movs r4, 0x8 subs r4, r0 lsls r4, 18 movs r0, 0xA0 lsls r0, 14 adds r4, r0 asrs r4, 16 mov r1, r8 ldrb r0, [r1] bl sub_807685C adds r3, r0, 0 lsls r3, 24 lsrs r3, 24 adds r0, r5, 0 movs r1, 0xB0 adds r2, r4, 0 bl CreateSprite ldr r5, _08037E7C @ =gBattlerSpriteIds mov r2, r8 ldrb r1, [r2] adds r1, r5 strb r0, [r1] ldr r4, _08037E80 @ =gSprites ldrb r0, [r2] adds r0, r5 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 ldr r1, _08037E84 @ =0x0000ff10 strh r1, [r0, 0x24] ldrb r0, [r2] adds r0, r5 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 movs r1, 0x2 strh r1, [r0, 0x2E] ldr r0, _08037E88 @ =gTrainerFrontPicPaletteTable mov r1, r9 lsls r6, r1, 3 adds r0, r6, r0 ldrh r0, [r0, 0x4] bl IndexOfSpritePaletteTag mov r2, r8 ldrb r1, [r2] adds r1, r5 ldrb r1, [r1] lsls r2, r1, 4 adds r2, r1 lsls r2, 2 adds r2, r4 lsls r0, 4 ldrb r3, [r2, 0x5] movs r1, 0xF ands r1, r3 orrs r1, r0 strb r1, [r2, 0x5] mov r1, r8 ldrb r0, [r1] adds r0, r5 ldrb r0, [r0] lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r1, r4 ldrh r0, [r1, 0x4] lsls r0, 22 lsrs r0, 22 strh r0, [r1, 0x38] ldr r0, _08037E8C @ =gTrainerFrontPicTable adds r6, r0 ldrh r0, [r6, 0x6] bl GetSpriteTileStartByTag mov r2, r8 ldrb r1, [r2] adds r1, r5 ldrb r2, [r1] lsls r1, r2, 4 adds r1, r2 lsls r1, 2 adds r1, r4 ldr r2, _08037E90 @ =0x000003ff ands r2, r0 ldrh r3, [r1, 0x4] ldr r0, _08037E94 @ =0xfffffc00 ands r0, r3 orrs r0, r2 strh r0, [r1, 0x4] mov r1, r8 ldrb r0, [r1] adds r0, r5 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 mov r2, r9 strh r2, [r0, 0x6] mov r1, r8 ldrb r0, [r1] adds r0, r5 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r4, 0x1C adds r0, r4 ldr r1, _08037E98 @ =sub_8033EEC str r1, [r0] ldr r1, _08037E9C @ =gUnknown_3004FE0 mov r2, r8 ldrb r0, [r2] lsls r0, 2 adds r0, r1 ldr r1, _08037EA0 @ =sub_8035AE8 str r1, [r0] pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _08037E6C: .4byte gTrainers _08037E70: .4byte gActiveBattler _08037E74: .4byte gMultiuseSpriteTemplate _08037E78: .4byte gUnknown_823932C _08037E7C: .4byte gBattlerSpriteIds _08037E80: .4byte gSprites _08037E84: .4byte 0x0000ff10 _08037E88: .4byte gTrainerFrontPicPaletteTable _08037E8C: .4byte gTrainerFrontPicTable _08037E90: .4byte 0x000003ff _08037E94: .4byte 0xfffffc00 _08037E98: .4byte sub_8033EEC _08037E9C: .4byte gUnknown_3004FE0 _08037EA0: .4byte sub_8035AE8 thumb_func_end sub_8037CD0 thumb_func_start sub_8037EA4 sub_8037EA4: @ 8037EA4 push {r4-r6,lr} mov r6, r9 mov r5, r8 push {r5,r6} ldr r3, _08037EC0 @ =gTrainerBattleOpponent_A ldrh r1, [r3] movs r0, 0x80 lsls r0, 3 cmp r1, r0 bne _08037EC4 bl GetSecretBaseTrainerPicIndex b _08037EFA .align 2, 0 _08037EC0: .4byte gTrainerBattleOpponent_A _08037EC4: ldr r0, _08037ED8 @ =gBattleTypeFlags ldr r1, [r0] movs r0, 0x80 lsls r0, 1 ands r0, r1 cmp r0, 0 beq _08037EDC bl sub_80E6078 b _08037EFA .align 2, 0 _08037ED8: .4byte gBattleTypeFlags _08037EDC: movs r0, 0x80 lsls r0, 12 ands r0, r1 cmp r0, 0 beq _08037EEC bl sub_815DA3C b _08037EFA _08037EEC: movs r0, 0x80 lsls r0, 4 ands r1, r0 cmp r1, 0 beq _08037F00 bl GetEreaderTrainerFrontSpriteId _08037EFA: lsls r0, 24 lsrs r0, 24 b _08037F0E _08037F00: ldr r2, _08038040 @ =gTrainers ldrh r1, [r3] lsls r0, r1, 2 adds r0, r1 lsls r0, 3 adds r0, r2 ldrb r0, [r0, 0x3] _08037F0E: mov r9, r0 ldr r0, _08038044 @ =gActiveBattler mov r8, r0 ldrb r1, [r0] mov r0, r9 bl sub_80346C4 mov r1, r8 ldrb r0, [r1] bl GetBattlerPosition adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 mov r0, r9 bl SetMultiuseSpriteTemplateToTrainerBack ldr r0, _08038048 @ =gMultiuseSpriteTemplate ldr r2, _0803804C @ =gUnknown_823932C mov r3, r9 lsls r1, r3, 2 adds r1, r2 ldrb r1, [r1] movs r2, 0x8 subs r2, r1 lsls r2, 18 movs r1, 0xA0 lsls r1, 14 adds r2, r1 asrs r2, 16 movs r1, 0xB0 movs r3, 0x1E bl CreateSprite ldr r5, _08038050 @ =gBattlerSpriteIds mov r2, r8 ldrb r1, [r2] adds r1, r5 strb r0, [r1] ldr r4, _08038054 @ =gSprites ldrb r0, [r2] adds r0, r5 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 movs r1, 0x60 strh r1, [r0, 0x24] ldrb r0, [r2] adds r0, r5 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 ldrh r1, [r0, 0x20] adds r1, 0x20 strh r1, [r0, 0x20] ldrb r0, [r2] adds r0, r5 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 ldr r1, _08038058 @ =0x0000fffe strh r1, [r0, 0x2E] ldr r0, _0803805C @ =gTrainerFrontPicPaletteTable mov r3, r9 lsls r6, r3, 3 adds r0, r6, r0 ldrh r0, [r0, 0x4] bl IndexOfSpritePaletteTag mov r2, r8 ldrb r1, [r2] adds r1, r5 ldrb r1, [r1] lsls r2, r1, 4 adds r2, r1 lsls r2, 2 adds r2, r4 lsls r0, 4 ldrb r3, [r2, 0x5] movs r1, 0xF ands r1, r3 orrs r1, r0 strb r1, [r2, 0x5] mov r3, r8 ldrb r0, [r3] adds r0, r5 ldrb r0, [r0] lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r1, r4 ldrh r0, [r1, 0x4] lsls r0, 22 lsrs r0, 22 strh r0, [r1, 0x38] ldr r0, _08038060 @ =gTrainerFrontPicTable adds r6, r0 ldrh r0, [r6, 0x6] bl GetSpriteTileStartByTag mov r2, r8 ldrb r1, [r2] adds r1, r5 ldrb r2, [r1] lsls r1, r2, 4 adds r1, r2 lsls r1, 2 adds r1, r4 ldr r2, _08038064 @ =0x000003ff ands r2, r0 ldrh r3, [r1, 0x4] ldr r0, _08038068 @ =0xfffffc00 ands r0, r3 orrs r0, r2 strh r0, [r1, 0x4] mov r3, r8 ldrb r0, [r3] adds r0, r5 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 mov r1, r9 strh r1, [r0, 0x6] ldrb r0, [r3] adds r0, r5 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r4, 0x1C adds r0, r4 ldr r1, _0803806C @ =sub_8033EEC str r1, [r0] ldr r1, _08038070 @ =gUnknown_3004FE0 ldrb r0, [r3] lsls r0, 2 adds r0, r1 ldr r1, _08038074 @ =sub_8035B20 str r1, [r0] pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _08038040: .4byte gTrainers _08038044: .4byte gActiveBattler _08038048: .4byte gMultiuseSpriteTemplate _0803804C: .4byte gUnknown_823932C _08038050: .4byte gBattlerSpriteIds _08038054: .4byte gSprites _08038058: .4byte 0x0000fffe _0803805C: .4byte gTrainerFrontPicPaletteTable _08038060: .4byte gTrainerFrontPicTable _08038064: .4byte 0x000003ff _08038068: .4byte 0xfffffc00 _0803806C: .4byte sub_8033EEC _08038070: .4byte gUnknown_3004FE0 _08038074: .4byte sub_8035B20 thumb_func_end sub_8037EA4 thumb_func_start sub_8038078 sub_8038078: @ 8038078 push {r4-r6,lr} ldr r6, _08038108 @ =gBattlerSpriteIds ldr r4, _0803810C @ =gActiveBattler ldrb r0, [r4] adds r0, r6 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 ldr r5, _08038110 @ =gSprites adds r0, r5 bl oamt_add_pos2_onto_pos1 ldrb r0, [r4] adds r0, r6 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r5 movs r1, 0x23 strh r1, [r0, 0x2E] ldrb r0, [r4] adds r0, r6 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r5 movs r1, 0x8C lsls r1, 1 strh r1, [r0, 0x32] ldrb r0, [r4] adds r0, r6 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r5 ldrh r1, [r0, 0x22] strh r1, [r0, 0x36] ldrb r0, [r4] adds r0, r6 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r1, r5, 0 adds r1, 0x1C adds r0, r1 ldr r1, _08038114 @ =sub_8075590 str r1, [r0] ldrb r0, [r4] adds r0, r6 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r5 ldr r1, _08038118 @ =SpriteCallbackDummy bl StoreSpriteCallbackInData6 ldr r1, _0803811C @ =gUnknown_3004FE0 ldrb r0, [r4] lsls r0, 2 adds r0, r1 ldr r1, _08038120 @ =sub_8035B58 str r1, [r0] pop {r4-r6} pop {r0} bx r0 .align 2, 0 _08038108: .4byte gBattlerSpriteIds _0803810C: .4byte gActiveBattler _08038110: .4byte gSprites _08038114: .4byte sub_8075590 _08038118: .4byte SpriteCallbackDummy _0803811C: .4byte gUnknown_3004FE0 _08038120: .4byte sub_8035B58 thumb_func_end sub_8038078 thumb_func_start sub_8038124 sub_8038124: @ 8038124 push {r4-r6,lr} ldr r6, _08038170 @ =gUnknown_2024018 ldr r4, [r6] ldr r5, _08038174 @ =gActiveBattler ldrb r2, [r5] ldr r0, [r4, 0x4] lsls r1, r2, 1 adds r1, r2 lsls r1, 2 adds r3, r1, r0 ldrb r0, [r3, 0x4] cmp r0, 0 bne _08038178 ldr r1, [r4] lsls r0, r2, 2 adds r0, r1 ldrb r1, [r0] movs r0, 0x4 ands r0, r1 cmp r0, 0 beq _08038158 adds r0, r2, 0 adds r1, r2, 0 movs r3, 0x5 bl InitAndLaunchSpecialAnimation _08038158: ldr r0, [r6] ldrb r1, [r5] ldr r2, [r0, 0x4] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r1, [r0, 0x4] adds r1, 0x1 strb r1, [r0, 0x4] b _080381B4 .align 2, 0 _08038170: .4byte gUnknown_2024018 _08038174: .4byte gActiveBattler _08038178: ldrb r1, [r3] movs r0, 0x40 ands r0, r1 lsls r0, 24 lsrs r0, 24 cmp r0, 0 bne _080381B4 strb r0, [r3, 0x4] movs r0, 0x10 movs r1, 0x3F bl PlaySE12WithPanning ldr r2, _080381BC @ =gSprites ldr r1, _080381C0 @ =gBattlerSpriteIds ldrb r0, [r5] adds r0, r1 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r2, 0x1C adds r0, r2 ldr r1, _080381C4 @ =sub_8011EA0 str r1, [r0] ldr r1, _080381C8 @ =gUnknown_3004FE0 ldrb r0, [r5] lsls r0, 2 adds r0, r1 ldr r1, _080381CC @ =sub_803612C str r1, [r0] _080381B4: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080381BC: .4byte gSprites _080381C0: .4byte gBattlerSpriteIds _080381C4: .4byte sub_8011EA0 _080381C8: .4byte gUnknown_3004FE0 _080381CC: .4byte sub_803612C thumb_func_end sub_8038124 thumb_func_start sub_80381D0 sub_80381D0: @ 80381D0 push {lr} bl OpponentBufferExecCompleted pop {r0} bx r0 thumb_func_end sub_80381D0 thumb_func_start sub_80381DC sub_80381DC: @ 80381DC push {lr} bl OpponentBufferExecCompleted pop {r0} bx r0 thumb_func_end sub_80381DC thumb_func_start sub_80381E8 sub_80381E8: @ 80381E8 push {lr} bl OpponentBufferExecCompleted pop {r0} bx r0 thumb_func_end sub_80381E8 thumb_func_start sub_80381F4 sub_80381F4: @ 80381F4 push {lr} bl OpponentBufferExecCompleted pop {r0} bx r0 thumb_func_end sub_80381F4 thumb_func_start sub_8038200 sub_8038200: @ 8038200 push {r4-r6,lr} ldr r6, _080382E4 @ =gActiveBattler ldrb r0, [r6] bl mplay_80342A4 lsls r0, 24 cmp r0, 0 beq _08038212 b _08038326 _08038212: ldr r0, _080382E8 @ =gUnknown_2022BC4 mov r12, r0 ldrb r2, [r6] lsls r2, 9 adds r0, 0x1 adds r0, r2, r0 ldrb r0, [r0] mov r1, r12 adds r1, 0x2 adds r1, r2, r1 ldrb r1, [r1] lsls r1, 8 orrs r0, r1 ldr r5, _080382EC @ =gAnimMoveTurn mov r1, r12 adds r1, 0x3 adds r2, r1 ldrb r1, [r2] strb r1, [r5] ldr r4, _080382F0 @ =gUnknown_2037EEC ldrb r2, [r6] lsls r2, 9 mov r1, r12 adds r1, 0x4 adds r1, r2, r1 ldrb r3, [r1] mov r1, r12 adds r1, 0x5 adds r2, r1 ldrb r1, [r2] lsls r1, 8 orrs r3, r1 strh r3, [r4] ldr r4, _080382F4 @ =gUnknown_2037EE8 ldrb r2, [r6] lsls r2, 9 mov r1, r12 adds r1, 0x6 adds r1, r2, r1 ldrb r3, [r1] mov r1, r12 adds r1, 0x7 adds r1, r2, r1 ldrb r1, [r1] lsls r1, 8 orrs r3, r1 mov r1, r12 adds r1, 0x8 adds r1, r2, r1 ldrb r1, [r1] lsls r1, 16 orrs r3, r1 mov r1, r12 adds r1, 0x9 adds r2, r1 ldrb r1, [r2] lsls r1, 24 orrs r3, r1 str r3, [r4] ldr r3, _080382F8 @ =gUnknown_2037EFE ldrb r1, [r6] lsls r1, 9 mov r2, r12 adds r2, 0xA adds r1, r2 ldrb r1, [r1] strb r1, [r3] ldr r4, _080382FC @ =gUnknown_2037F00 ldrb r2, [r6] lsls r2, 9 mov r1, r12 adds r1, 0xC adds r1, r2, r1 ldrb r3, [r1] mov r1, r12 adds r1, 0xD adds r2, r1 ldrb r1, [r2] lsls r1, 8 orrs r3, r1 strh r3, [r4] ldr r3, _08038300 @ =gAnimDisableStructPtr ldrb r2, [r6] lsls r2, 9 mov r1, r12 adds r1, 0x10 adds r2, r1 str r2, [r3] ldr r3, _08038304 @ =gUnknown_2024008 ldrb r1, [r6] lsls r1, 2 adds r1, r3 ldr r2, [r2] str r2, [r1] ldrb r1, [r5] bl IsMoveWithoutAnimation lsls r0, 24 lsrs r3, r0, 24 cmp r3, 0 beq _08038308 bl OpponentBufferExecCompleted b _08038326 .align 2, 0 _080382E4: .4byte gActiveBattler _080382E8: .4byte gUnknown_2022BC4 _080382EC: .4byte gAnimMoveTurn _080382F0: .4byte gUnknown_2037EEC _080382F4: .4byte gUnknown_2037EE8 _080382F8: .4byte gUnknown_2037EFE _080382FC: .4byte gUnknown_2037F00 _08038300: .4byte gAnimDisableStructPtr _08038304: .4byte gUnknown_2024008 _08038308: ldr r0, _0803832C @ =gUnknown_2024018 ldr r0, [r0] ldrb r1, [r6] ldr r2, [r0, 0x4] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 strb r3, [r0, 0x4] ldr r1, _08038330 @ =gUnknown_3004FE0 ldrb r0, [r6] lsls r0, 2 adds r0, r1 ldr r1, _08038334 @ =sub_8038338 str r1, [r0] _08038326: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0803832C: .4byte gUnknown_2024018 _08038330: .4byte gUnknown_3004FE0 _08038334: .4byte sub_8038338 thumb_func_end sub_8038200 thumb_func_start sub_8038338 sub_8038338: @ 8038338 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} ldr r2, _08038384 @ =gUnknown_2022BC4 ldr r6, _08038388 @ =gActiveBattler ldrb r3, [r6] lsls r1, r3, 9 adds r0, r2, 0x1 mov r10, r0 adds r0, r1, r0 ldrb r4, [r0] adds r5, r2, 0x2 mov r9, r5 adds r0, r1, r5 ldrb r0, [r0] lsls r0, 8 orrs r4, r0 adds r2, 0xB adds r1, r2 ldrb r1, [r1] mov r8, r1 ldr r7, _0803838C @ =gUnknown_2024018 ldr r5, [r7] ldr r1, [r5, 0x4] lsls r0, r3, 1 adds r0, r3 lsls r0, 2 adds r0, r1 ldrb r2, [r0, 0x4] cmp r2, 0x1 beq _080383D0 cmp r2, 0x1 bgt _08038390 cmp r2, 0 beq _0803839A b _080384AC .align 2, 0 _08038384: .4byte gUnknown_2022BC4 _08038388: .4byte gActiveBattler _0803838C: .4byte gUnknown_2024018 _08038390: cmp r2, 0x2 beq _080383FA cmp r2, 0x3 beq _08038470 b _080384AC _0803839A: ldr r1, [r5] lsls r0, r3, 2 adds r1, r0, r1 ldrb r2, [r1] movs r0, 0xC ands r0, r2 cmp r0, 0x4 bne _080383BC movs r0, 0x8 orrs r0, r2 strb r0, [r1] ldrb r2, [r6] adds r0, r2, 0 adds r1, r2, 0 movs r3, 0x5 bl InitAndLaunchSpecialAnimation _080383BC: ldr r0, [r7] ldrb r1, [r6] ldr r2, [r0, 0x4] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 movs r1, 0x1 strb r1, [r0, 0x4] b _080384AC _080383D0: ldrb r1, [r0] movs r0, 0x40 ands r0, r1 cmp r0, 0 bne _080384AC movs r0, 0 bl sub_8035450 adds r0, r4, 0 bl DoMoveAnim ldr r0, [r7] ldrb r1, [r6] ldr r2, [r0, 0x4] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 movs r1, 0x2 strb r1, [r0, 0x4] b _080384AC _080383FA: ldr r0, _08038460 @ =gUnknown_2037EDC ldr r0, [r0] bl _call_via_r0 ldr r0, _08038464 @ =gUnknown_2037EE1 ldrb r0, [r0] cmp r0, 0 bne _080384AC movs r0, 0x1 bl sub_8035450 ldr r0, [r7] ldrb r2, [r6] ldr r1, [r0] lsls r0, r2, 2 adds r0, r1 ldrb r1, [r0] movs r0, 0x4 ands r0, r1 cmp r0, 0 beq _08038448 mov r0, r8 cmp r0, 0x1 bhi _08038448 adds r0, r2, 0 adds r1, r2, 0 movs r3, 0x6 bl InitAndLaunchSpecialAnimation ldr r0, [r7] ldrb r1, [r6] ldr r0, [r0] lsls r1, 2 adds r1, r0 ldrb r2, [r1] movs r0, 0x9 negs r0, r0 ands r0, r2 strb r0, [r1] _08038448: ldr r0, _08038468 @ =gUnknown_2024018 ldr r2, [r0] ldr r0, _0803846C @ =gActiveBattler ldrb r1, [r0] ldr r2, [r2, 0x4] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 movs r1, 0x3 strb r1, [r0, 0x4] b _080384AC .align 2, 0 _08038460: .4byte gUnknown_2037EDC _08038464: .4byte gUnknown_2037EE1 _08038468: .4byte gUnknown_2024018 _0803846C: .4byte gActiveBattler _08038470: ldrb r1, [r0] movs r0, 0x40 ands r0, r1 lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0 bne _080384AC bl CopyAllBattleSpritesInvisibilities ldrb r0, [r6] lsls r2, r0, 9 mov r3, r10 adds r1, r2, r3 ldrb r1, [r1] add r2, r9 ldrb r2, [r2] lsls r2, 8 orrs r1, r2 bl TrySetBehindSubstituteSpriteBit ldr r0, [r7] ldrb r1, [r6] ldr r2, [r0, 0x4] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 strb r4, [r0, 0x4] bl OpponentBufferExecCompleted _080384AC: pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 thumb_func_end sub_8038338 thumb_func_start sub_80384BC sub_80384BC: @ 80384BC push {r4,lr} ldr r0, _080384F0 @ =gBattle_BG0_X movs r1, 0 strh r1, [r0] ldr r0, _080384F4 @ =gBattle_BG0_Y strh r1, [r0] ldr r0, _080384F8 @ =gActiveBattler ldrb r0, [r0] lsls r0, 9 ldr r1, _080384FC @ =gUnknown_2022BC6 adds r4, r0, r1 ldrh r0, [r4] bl sub_80D7274 ldrh r0, [r4] bl sub_80D89B0 lsls r0, 24 cmp r0, 0 beq _08038504 ldr r0, _08038500 @ =gDisplayedStringBattle movs r1, 0x40 bl sub_80D87BC b _0803850C .align 2, 0 _080384F0: .4byte gBattle_BG0_X _080384F4: .4byte gBattle_BG0_Y _080384F8: .4byte gActiveBattler _080384FC: .4byte gUnknown_2022BC6 _08038500: .4byte gDisplayedStringBattle _08038504: ldr r0, _08038534 @ =gDisplayedStringBattle movs r1, 0 bl sub_80D87BC _0803850C: ldr r0, _08038538 @ =gBattleTypeFlags ldr r0, [r0] movs r1, 0x10 ands r0, r1 cmp r0, 0 beq _08038568 ldrh r1, [r4] cmp r1, 0xE3 beq _0803854C ldr r0, _0803853C @ =0x0000017f cmp r1, r0 bne _08038568 ldr r1, _08038540 @ =gUnknown_3004FE0 ldr r0, _08038544 @ =gActiveBattler ldrb r0, [r0] lsls r0, 2 adds r0, r1 ldr r1, _08038548 @ =sub_80E85C0 b _08038574 .align 2, 0 _08038534: .4byte gDisplayedStringBattle _08038538: .4byte gBattleTypeFlags _0803853C: .4byte 0x0000017f _08038540: .4byte gUnknown_3004FE0 _08038544: .4byte gActiveBattler _08038548: .4byte sub_80E85C0 _0803854C: ldr r1, _0803855C @ =gUnknown_3004FE0 ldr r0, _08038560 @ =gActiveBattler ldrb r0, [r0] lsls r0, 2 adds r0, r1 ldr r1, _08038564 @ =sub_80E8598 b _08038574 .align 2, 0 _0803855C: .4byte gUnknown_3004FE0 _08038560: .4byte gActiveBattler _08038564: .4byte sub_80E8598 _08038568: ldr r1, _0803857C @ =gUnknown_3004FE0 ldr r0, _08038580 @ =gActiveBattler ldrb r0, [r0] lsls r0, 2 adds r0, r1 ldr r1, _08038584 @ =sub_80361E4 _08038574: str r1, [r0] pop {r4} pop {r0} bx r0 .align 2, 0 _0803857C: .4byte gUnknown_3004FE0 _08038580: .4byte gActiveBattler _08038584: .4byte sub_80361E4 thumb_func_end sub_80384BC thumb_func_start sub_8038588 sub_8038588: @ 8038588 push {lr} bl OpponentBufferExecCompleted pop {r0} bx r0 thumb_func_end sub_8038588 thumb_func_start sub_8038594 sub_8038594: @ 8038594 push {lr} bl sub_8039C84 bl OpponentBufferExecCompleted pop {r0} bx r0 thumb_func_end sub_8038594 thumb_func_start sub_80385A4 sub_80385A4: @ 80385A4 push {lr} bl OpponentBufferExecCompleted pop {r0} bx r0 thumb_func_end sub_80385A4 thumb_func_start sub_80385B0 sub_80385B0: @ 80385B0 push {r4-r6,lr} ldr r6, _080385E4 @ =gActiveBattler ldrb r0, [r6] lsls r0, 9 ldr r1, _080385E8 @ =gUnknown_2022BC8 adds r5, r0, r1 ldr r0, _080385EC @ =gBattleTypeFlags ldr r0, [r0] movs r1, 0x93 lsls r1, 3 ands r0, r1 cmp r0, 0 beq _08038680 bl BattleAI_SetupAIData bl BattleAI_GetAIActionToUse lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0x4 beq _080385F0 cmp r4, 0x5 bne _080385FC movs r0, 0x1 movs r1, 0x4 b _080385F4 .align 2, 0 _080385E4: .4byte gActiveBattler _080385E8: .4byte gUnknown_2022BC8 _080385EC: .4byte gBattleTypeFlags _080385F0: movs r0, 0x1 movs r1, 0x3 _080385F4: movs r2, 0 bl EmitTwoReturnValues b _08038668 _080385FC: ldr r3, _08038670 @ =gBattleMoves lsls r0, r4, 1 adds r2, r5, r0 ldrh r1, [r2] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r3 ldrb r1, [r0, 0x6] movs r0, 0x12 ands r0, r1 cmp r0, 0 beq _0803861C ldr r1, _08038674 @ =gBattlerTarget ldrb r0, [r6] strb r0, [r1] _0803861C: ldrh r1, [r2] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r3 ldrb r1, [r0, 0x6] movs r0, 0x8 ands r0, r1 cmp r0, 0 beq _08038656 movs r0, 0 bl GetBattlerAtPosition ldr r5, _08038674 @ =gBattlerTarget strb r0, [r5] ldr r0, _08038678 @ =gAbsentBattlerFlags ldrb r1, [r0] ldr r2, _0803867C @ =gBitTable ldrb r0, [r5] lsls r0, 2 adds r0, r2 ldr r0, [r0] ands r1, r0 cmp r1, 0 beq _08038656 movs r0, 0x2 bl GetBattlerAtPosition strb r0, [r5] _08038656: ldr r0, _08038674 @ =gBattlerTarget ldrb r0, [r0] lsls r0, 8 orrs r4, r0 movs r0, 0x1 movs r1, 0xA adds r2, r4, 0 bl EmitTwoReturnValues _08038668: bl OpponentBufferExecCompleted b _08038712 .align 2, 0 _08038670: .4byte gBattleMoves _08038674: .4byte gBattlerTarget _08038678: .4byte gAbsentBattlerFlags _0803867C: .4byte gBitTable _08038680: movs r6, 0x3 _08038682: bl Random adds r4, r0, 0 ands r4, r6 lsls r0, r4, 1 adds r0, r5, r0 ldrh r2, [r0] cmp r2, 0 beq _08038682 ldr r1, _080386BC @ =gBattleMoves lsls r0, r2, 1 adds r0, r2 lsls r0, 2 adds r0, r1 ldrb r1, [r0, 0x6] movs r0, 0x12 ands r0, r1 cmp r0, 0 beq _080386C4 ldr r0, _080386C0 @ =gActiveBattler ldrb r0, [r0] lsls r0, 8 orrs r4, r0 movs r0, 0x1 movs r1, 0xA adds r2, r4, 0 bl EmitTwoReturnValues b _0803870E .align 2, 0 _080386BC: .4byte gBattleMoves _080386C0: .4byte gActiveBattler _080386C4: ldr r0, _080386F4 @ =gBattleTypeFlags ldr r0, [r0] movs r1, 0x1 ands r0, r1 cmp r0, 0 beq _080386F8 bl Random movs r1, 0x2 ands r1, r0 lsls r1, 24 lsrs r1, 24 adds r0, r1, 0 bl GetBattlerAtPosition adds r2, r0, 0 lsls r2, 24 lsrs r2, 16 orrs r2, r4 movs r0, 0x1 movs r1, 0xA bl EmitTwoReturnValues b _0803870E .align 2, 0 _080386F4: .4byte gBattleTypeFlags _080386F8: movs r0, 0 bl GetBattlerAtPosition adds r2, r0, 0 lsls r2, 24 lsrs r2, 16 orrs r2, r4 movs r0, 0x1 movs r1, 0xA bl EmitTwoReturnValues _0803870E: bl OpponentBufferExecCompleted _08038712: pop {r4-r6} pop {r0} bx r0 thumb_func_end sub_80385B0 thumb_func_start sub_8038718 sub_8038718: @ 8038718 push {lr} ldr r0, _0803873C @ =gActiveBattler ldrb r0, [r0] lsrs r0, 1 ldr r1, _08038740 @ =gBattleStruct ldr r1, [r1] lsls r0, 1 adds r0, r1 adds r0, 0xC0 ldrb r1, [r0] movs r0, 0x1 bl EmitOneReturnValue bl OpponentBufferExecCompleted pop {r0} bx r0 .align 2, 0 _0803873C: .4byte gActiveBattler _08038740: .4byte gBattleStruct thumb_func_end sub_8038718 thumb_func_start sub_8038744 sub_8038744: @ 8038744 push {r4-r6,lr} ldr r6, _08038788 @ =gActiveBattler ldrb r0, [r6] bl GetBattlerPosition lsls r0, 24 lsrs r0, 25 ldr r5, _0803878C @ =gBattleStruct ldr r1, [r5] adds r0, r1 adds r0, 0x92 ldrb r0, [r0] cmp r0, 0x6 bne _080387E4 bl sub_8039E3C lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0x6 bne _0803880A ldr r0, _08038790 @ =gBattleTypeFlags ldr r0, [r0] movs r1, 0x1 ands r0, r1 cmp r0, 0 bne _08038794 movs r0, 0x1 bl GetBattlerAtPosition lsls r0, 24 lsrs r5, r0, 24 adds r6, r5, 0 b _080387A8 .align 2, 0 _08038788: .4byte gActiveBattler _0803878C: .4byte gBattleStruct _08038790: .4byte gBattleTypeFlags _08038794: movs r0, 0x1 bl GetBattlerAtPosition lsls r0, 24 lsrs r6, r0, 24 movs r0, 0x3 bl GetBattlerAtPosition lsls r0, 24 lsrs r5, r0, 24 _080387A8: movs r4, 0 b _080387AE _080387AC: adds r4, 0x1 _080387AE: cmp r4, 0x5 bgt _0803880A movs r0, 0x64 muls r0, r4 ldr r1, _080387DC @ =gEnemyParty adds r0, r1 movs r1, 0x39 bl GetMonData cmp r0, 0 beq _080387AC ldr r1, _080387E0 @ =gBattlerPartyIndexes lsls r0, r6, 1 adds r0, r1 ldrh r0, [r0] cmp r4, r0 beq _080387AC lsls r0, r5, 1 adds r0, r1 ldrh r0, [r0] cmp r4, r0 beq _080387AC b _0803880A .align 2, 0 _080387DC: .4byte gEnemyParty _080387E0: .4byte gBattlerPartyIndexes _080387E4: ldrb r0, [r6] bl GetBattlerPosition lsls r0, 24 lsrs r0, 25 ldr r1, [r5] adds r0, r1 adds r0, 0x92 ldrb r4, [r0] ldrb r0, [r6] bl GetBattlerPosition lsls r0, 24 lsrs r0, 25 ldr r1, [r5] adds r0, r1 adds r0, 0x92 movs r1, 0x6 strb r1, [r0] _0803880A: ldr r0, _08038830 @ =gActiveBattler ldrb r0, [r0] ldr r1, _08038834 @ =gBattleStruct ldr r1, [r1] adds r0, r1 adds r0, 0x5C strb r4, [r0] lsls r1, r4, 24 lsrs r1, 24 movs r0, 0x1 movs r2, 0 bl EmitChosenMonReturnValue bl OpponentBufferExecCompleted pop {r4-r6} pop {r0} bx r0 .align 2, 0 _08038830: .4byte gActiveBattler _08038834: .4byte gBattleStruct thumb_func_end sub_8038744 thumb_func_start sub_8038838 sub_8038838: @ 8038838 push {lr} bl OpponentBufferExecCompleted pop {r0} bx r0 thumb_func_end sub_8038838 thumb_func_start sub_8038844 sub_8038844: @ 8038844 push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} sub sp, 0x4 movs r0, 0 bl LoadBattleBarGfx ldr r3, _080388BC @ =gUnknown_2022BC4 ldr r0, _080388C0 @ =gActiveBattler mov r9, r0 ldrb r4, [r0] lsls r2, r4, 9 adds r0, r3, 0x3 adds r0, r2, r0 ldrb r1, [r0] lsls r1, 8 adds r3, 0x2 adds r2, r3 ldrb r0, [r2] orrs r0, r1 lsls r0, 16 asrs r7, r0, 16 ldr r0, _080388C4 @ =0x00007fff cmp r7, r0 beq _080388D4 ldr r6, _080388C8 @ =gBattlerPartyIndexes lsls r0, r4, 1 adds r0, r6 ldrh r0, [r0] movs r5, 0x64 muls r0, r5 ldr r4, _080388CC @ =gEnemyParty adds r0, r4 movs r1, 0x3A bl GetMonData mov r8, r0 mov r1, r9 ldrb r0, [r1] lsls r0, 1 adds r0, r6 ldrh r0, [r0] muls r0, r5 adds r0, r4 movs r1, 0x39 bl GetMonData adds r3, r0, 0 mov r1, r9 ldrb r0, [r1] ldr r1, _080388D0 @ =gUnknown_3004FF0 adds r1, r0, r1 ldrb r1, [r1] str r7, [sp] mov r2, r8 bl SetBattleBarStruct b _080388FE .align 2, 0 _080388BC: .4byte gUnknown_2022BC4 _080388C0: .4byte gActiveBattler _080388C4: .4byte 0x00007fff _080388C8: .4byte gBattlerPartyIndexes _080388CC: .4byte gEnemyParty _080388D0: .4byte gUnknown_3004FF0 _080388D4: ldr r1, _0803891C @ =gBattlerPartyIndexes lsls r0, r4, 1 adds r0, r1 ldrh r1, [r0] movs r0, 0x64 muls r0, r1 ldr r1, _08038920 @ =gEnemyParty adds r0, r1 movs r1, 0x3A bl GetMonData adds r2, r0, 0 mov r1, r9 ldrb r0, [r1] ldr r1, _08038924 @ =gUnknown_3004FF0 adds r1, r0, r1 ldrb r1, [r1] str r7, [sp] movs r3, 0 bl SetBattleBarStruct _080388FE: ldr r1, _08038928 @ =gUnknown_3004FE0 ldr r0, _0803892C @ =gActiveBattler ldrb r0, [r0] lsls r0, 2 adds r0, r1 ldr r1, _08038930 @ =sub_80360A0 str r1, [r0] add sp, 0x4 pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0803891C: .4byte gBattlerPartyIndexes _08038920: .4byte gEnemyParty _08038924: .4byte gUnknown_3004FF0 _08038928: .4byte gUnknown_3004FE0 _0803892C: .4byte gActiveBattler _08038930: .4byte sub_80360A0 thumb_func_end sub_8038844 thumb_func_start sub_8038934 sub_8038934: @ 8038934 push {lr} bl OpponentBufferExecCompleted pop {r0} bx r0 thumb_func_end sub_8038934 thumb_func_start sub_8038940 sub_8038940: @ 8038940 push {r4,lr} ldr r4, _0803899C @ =gActiveBattler ldrb r0, [r4] bl mplay_80342A4 lsls r0, 24 cmp r0, 0 bne _08038994 ldr r0, _080389A0 @ =gUnknown_3004FF0 ldrb r1, [r4] adds r0, r1, r0 ldrb r0, [r0] ldr r2, _080389A4 @ =gBattlerPartyIndexes lsls r1, 1 adds r1, r2 ldrh r2, [r1] movs r1, 0x64 muls r1, r2 ldr r2, _080389A8 @ =gEnemyParty adds r1, r2 movs r2, 0x9 bl UpdateHealthboxAttribute ldrb r2, [r4] ldr r0, _080389AC @ =gUnknown_2024018 ldr r0, [r0] ldr r0, [r0, 0x4] lsls r1, r2, 1 adds r1, r2 lsls r1, 2 adds r1, r0 ldrb r2, [r1] movs r0, 0x11 negs r0, r0 ands r0, r2 strb r0, [r1] ldr r1, _080389B0 @ =gUnknown_3004FE0 ldrb r0, [r4] lsls r0, 2 adds r0, r1 ldr r1, _080389B4 @ =sub_80364D0 str r1, [r0] _08038994: pop {r4} pop {r0} bx r0 .align 2, 0 _0803899C: .4byte gActiveBattler _080389A0: .4byte gUnknown_3004FF0 _080389A4: .4byte gBattlerPartyIndexes _080389A8: .4byte gEnemyParty _080389AC: .4byte gUnknown_2024018 _080389B0: .4byte gUnknown_3004FE0 _080389B4: .4byte sub_80364D0 thumb_func_end sub_8038940 thumb_func_start sub_80389B8 sub_80389B8: @ 80389B8 push {r4,r5,lr} ldr r5, _08038A10 @ =gActiveBattler ldrb r0, [r5] bl mplay_80342A4 lsls r0, 24 cmp r0, 0 bne _08038A08 ldr r4, _08038A14 @ =gUnknown_2022BC4 ldrb r3, [r5] lsls r3, 9 adds r0, r4, 0x1 adds r0, r3, r0 ldrb r0, [r0] adds r1, r4, 0x2 adds r1, r3, r1 ldrb r1, [r1] adds r2, r4, 0x3 adds r2, r3, r2 ldrb r2, [r2] lsls r2, 8 orrs r1, r2 adds r2, r4, 0x4 adds r2, r3, r2 ldrb r2, [r2] lsls r2, 16 orrs r1, r2 adds r4, 0x5 adds r3, r4 ldrb r2, [r3] lsls r2, 24 orrs r1, r2 bl InitAndLaunchChosenStatusAnimation ldr r1, _08038A18 @ =gUnknown_3004FE0 ldrb r0, [r5] lsls r0, 2 adds r0, r1 ldr r1, _08038A1C @ =sub_80364D0 str r1, [r0] _08038A08: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08038A10: .4byte gActiveBattler _08038A14: .4byte gUnknown_2022BC4 _08038A18: .4byte gUnknown_3004FE0 _08038A1C: .4byte sub_80364D0 thumb_func_end sub_80389B8 thumb_func_start sub_8038A20 sub_8038A20: @ 8038A20 push {lr} bl OpponentBufferExecCompleted pop {r0} bx r0 thumb_func_end sub_8038A20 thumb_func_start sub_8038A2C sub_8038A2C: @ 8038A2C push {lr} bl OpponentBufferExecCompleted pop {r0} bx r0 thumb_func_end sub_8038A2C thumb_func_start sub_8038A38 sub_8038A38: @ 8038A38 push {lr} bl OpponentBufferExecCompleted pop {r0} bx r0 thumb_func_end sub_8038A38 thumb_func_start sub_8038A44 sub_8038A44: @ 8038A44 push {lr} bl OpponentBufferExecCompleted pop {r0} bx r0 thumb_func_end sub_8038A44 thumb_func_start sub_8038A50 sub_8038A50: @ 8038A50 push {lr} bl OpponentBufferExecCompleted pop {r0} bx r0 thumb_func_end sub_8038A50 thumb_func_start sub_8038A5C sub_8038A5C: @ 8038A5C push {lr} bl OpponentBufferExecCompleted pop {r0} bx r0 thumb_func_end sub_8038A5C thumb_func_start sub_8038A68 sub_8038A68: @ 8038A68 push {lr} bl OpponentBufferExecCompleted pop {r0} bx r0 thumb_func_end sub_8038A68 thumb_func_start sub_8038A74 sub_8038A74: @ 8038A74 push {lr} bl OpponentBufferExecCompleted pop {r0} bx r0 thumb_func_end sub_8038A74 thumb_func_start sub_8038A80 sub_8038A80: @ 8038A80 push {lr} bl OpponentBufferExecCompleted pop {r0} bx r0 thumb_func_end sub_8038A80 thumb_func_start OpponentHandlecmd37 OpponentHandlecmd37: @ 8038A8C push {lr} ldr r2, _08038AA4 @ =gUnknown_2022870 ldrb r1, [r2] movs r0, 0x80 negs r0, r0 ands r0, r1 strb r0, [r2] bl OpponentBufferExecCompleted pop {r0} bx r0 .align 2, 0 _08038AA4: .4byte gUnknown_2022870 thumb_func_end OpponentHandlecmd37 thumb_func_start OpponentHandlecmd38 OpponentHandlecmd38: @ 8038AA8 push {lr} ldr r3, _08038AD4 @ =gUnknown_2022870 ldr r1, _08038AD8 @ =gUnknown_2022BC4 ldr r0, _08038ADC @ =gActiveBattler ldrb r0, [r0] lsls r0, 9 adds r1, 0x1 adds r0, r1 ldrb r0, [r0] movs r1, 0x7F ands r1, r0 ldrb r2, [r3] movs r0, 0x80 negs r0, r0 ands r0, r2 orrs r0, r1 strb r0, [r3] bl OpponentBufferExecCompleted pop {r0} bx r0 .align 2, 0 _08038AD4: .4byte gUnknown_2022870 _08038AD8: .4byte gUnknown_2022BC4 _08038ADC: .4byte gActiveBattler thumb_func_end OpponentHandlecmd38 thumb_func_start OpponentHandlecmd39 OpponentHandlecmd39: @ 8038AE0 push {lr} ldr r2, _08038AF4 @ =gUnknown_2022870 ldrb r1, [r2] movs r0, 0x7F ands r0, r1 strb r0, [r2] bl OpponentBufferExecCompleted pop {r0} bx r0 .align 2, 0 _08038AF4: .4byte gUnknown_2022870 thumb_func_end OpponentHandlecmd39 thumb_func_start OpponentHandlecmd40 OpponentHandlecmd40: @ 8038AF8 push {lr} ldr r3, _08038B1C @ =gUnknown_2022870 ldr r1, [r3] lsls r1, 24 lsrs r1, 31 movs r0, 0x1 eors r1, r0 lsls r1, 7 ldrb r2, [r3] movs r0, 0x7F ands r0, r2 orrs r0, r1 strb r0, [r3] bl OpponentBufferExecCompleted pop {r0} bx r0 .align 2, 0 _08038B1C: .4byte gUnknown_2022870 thumb_func_end OpponentHandlecmd40 thumb_func_start OpponentHandleHitAnimation OpponentHandleHitAnimation: @ 8038B20 push {r4,lr} ldr r3, _08038B48 @ =gSprites ldr r2, _08038B4C @ =gBattlerSpriteIds ldr r4, _08038B50 @ =gActiveBattler ldrb r0, [r4] adds r0, r2 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r3 adds r0, 0x3E ldrb r0, [r0] lsls r0, 29 cmp r0, 0 bge _08038B54 bl OpponentBufferExecCompleted b _08038B7E .align 2, 0 _08038B48: .4byte gSprites _08038B4C: .4byte gBattlerSpriteIds _08038B50: .4byte gActiveBattler _08038B54: ldr r1, _08038B84 @ =gUnknown_2024005 movs r0, 0x1 strb r0, [r1] ldrb r0, [r4] adds r0, r2 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r3 movs r1, 0 strh r1, [r0, 0x30] ldrb r0, [r4] bl DoHitAnimHealthboxEffect ldr r1, _08038B88 @ =gUnknown_3004FE0 ldrb r0, [r4] lsls r0, 2 adds r0, r1 ldr r1, _08038B8C @ =sub_80361FC str r1, [r0] _08038B7E: pop {r4} pop {r0} bx r0 .align 2, 0 _08038B84: .4byte gUnknown_2024005 _08038B88: .4byte gUnknown_3004FE0 _08038B8C: .4byte sub_80361FC thumb_func_end OpponentHandleHitAnimation thumb_func_start sub_8038B90 sub_8038B90: @ 8038B90 push {lr} bl OpponentBufferExecCompleted pop {r0} bx r0 thumb_func_end sub_8038B90 thumb_func_start OpponentHandleEffectivenessSound OpponentHandleEffectivenessSound: @ 8038B9C push {r4,lr} ldr r4, _08038BD8 @ =gActiveBattler ldrb r0, [r4] bl GetBattlerSide lsls r0, 24 movs r3, 0x3F cmp r0, 0 bne _08038BB0 movs r3, 0xC0 _08038BB0: ldr r2, _08038BDC @ =gUnknown_2022BC4 ldrb r1, [r4] lsls r1, 9 adds r0, r2, 0x1 adds r0, r1, r0 ldrb r0, [r0] adds r2, 0x2 adds r1, r2 ldrb r1, [r1] lsls r1, 8 orrs r0, r1 lsls r1, r3, 24 asrs r1, 24 bl PlaySE12WithPanning bl OpponentBufferExecCompleted pop {r4} pop {r0} bx r0 .align 2, 0 _08038BD8: .4byte gActiveBattler _08038BDC: .4byte gUnknown_2022BC4 thumb_func_end OpponentHandleEffectivenessSound thumb_func_start OpponentHandlecmd44 OpponentHandlecmd44: @ 8038BE0 push {lr} ldr r2, _08038C08 @ =gUnknown_2022BC4 ldr r0, _08038C0C @ =gActiveBattler ldrb r1, [r0] lsls r1, 9 adds r0, r2, 0x1 adds r0, r1, r0 ldrb r0, [r0] adds r2, 0x2 adds r1, r2 ldrb r1, [r1] lsls r1, 8 orrs r0, r1 bl PlayFanfare bl OpponentBufferExecCompleted pop {r0} bx r0 .align 2, 0 _08038C08: .4byte gUnknown_2022BC4 _08038C0C: .4byte gActiveBattler thumb_func_end OpponentHandlecmd44 thumb_func_start OpponentHandleFaintingCry OpponentHandleFaintingCry: @ 8038C10 push {lr} ldr r1, _08038C40 @ =gBattlerPartyIndexes ldr r0, _08038C44 @ =gActiveBattler ldrb r0, [r0] lsls r0, 1 adds r0, r1 ldrh r1, [r0] movs r0, 0x64 muls r0, r1 ldr r1, _08038C48 @ =gEnemyParty adds r0, r1 movs r1, 0xB bl GetMonData lsls r0, 16 lsrs r0, 16 movs r1, 0x19 movs r2, 0x5 bl PlayCry3 bl OpponentBufferExecCompleted pop {r0} bx r0 .align 2, 0 _08038C40: .4byte gBattlerPartyIndexes _08038C44: .4byte gActiveBattler _08038C48: .4byte gEnemyParty thumb_func_end OpponentHandleFaintingCry thumb_func_start OpponentHandleIntroSlide OpponentHandleIntroSlide: @ 8038C4C push {lr} ldr r1, _08038C74 @ =gUnknown_2022BC4 ldr r0, _08038C78 @ =gActiveBattler ldrb r0, [r0] lsls r0, 9 adds r1, 0x1 adds r0, r1 ldrb r0, [r0] bl sub_80BC3A0 ldr r2, _08038C7C @ =gUnknown_2023F4C ldrh r0, [r2] movs r1, 0x1 orrs r0, r1 strh r0, [r2] bl OpponentBufferExecCompleted pop {r0} bx r0 .align 2, 0 _08038C74: .4byte gUnknown_2022BC4 _08038C78: .4byte gActiveBattler _08038C7C: .4byte gUnknown_2023F4C thumb_func_end OpponentHandleIntroSlide thumb_func_start sub_8038C80 sub_8038C80: @ 8038C80 push {r4-r6,lr} ldr r5, _08038D60 @ =gBattlerSpriteIds ldr r6, _08038D64 @ =gActiveBattler ldrb r0, [r6] adds r0, r5 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 ldr r4, _08038D68 @ =gSprites adds r0, r4 bl oamt_add_pos2_onto_pos1 ldrb r0, [r6] adds r0, r5 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 movs r1, 0x23 strh r1, [r0, 0x2E] ldrb r0, [r6] adds r0, r5 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 movs r1, 0x8C lsls r1, 1 strh r1, [r0, 0x32] ldrb r0, [r6] adds r0, r5 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 ldrh r1, [r0, 0x22] strh r1, [r0, 0x36] ldrb r0, [r6] adds r0, r5 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r1, r4, 0 adds r1, 0x1C adds r0, r1 ldr r1, _08038D6C @ =sub_8075590 str r1, [r0] ldrb r0, [r6] adds r0, r5 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 ldr r1, _08038D70 @ =sub_8038D90 bl StoreSpriteCallbackInData6 ldr r0, _08038D74 @ =sub_8038DC4 movs r1, 0x5 bl CreateTask lsls r0, 24 lsrs r0, 24 ldr r4, _08038D78 @ =gTasks lsls r1, r0, 2 adds r1, r0 lsls r1, 3 adds r1, r4 ldrb r0, [r6] strh r0, [r1, 0x8] ldr r3, _08038D7C @ =gUnknown_2024018 ldr r0, [r3] ldrb r2, [r6] ldr r1, [r0, 0x4] lsls r0, r2, 1 adds r0, r2 lsls r0, 2 adds r0, r1 ldrb r1, [r0] movs r0, 0x1 ands r0, r1 cmp r0, 0 beq _08038D42 ldr r0, _08038D80 @ =gUnknown_2024000 adds r0, r2, r0 ldrb r1, [r0] lsls r0, r1, 2 adds r0, r1 lsls r0, 3 adds r0, r4 ldr r1, _08038D84 @ =sub_80491B0 str r1, [r0] _08038D42: ldr r0, [r3] ldr r2, [r0, 0x8] ldrb r0, [r2, 0x9] movs r1, 0x1 orrs r0, r1 strb r0, [r2, 0x9] ldr r1, _08038D88 @ =gUnknown_3004FE0 ldrb r0, [r6] lsls r0, 2 adds r0, r1 ldr r1, _08038D8C @ =nullsub_17 str r1, [r0] pop {r4-r6} pop {r0} bx r0 .align 2, 0 _08038D60: .4byte gBattlerSpriteIds _08038D64: .4byte gActiveBattler _08038D68: .4byte gSprites _08038D6C: .4byte sub_8075590 _08038D70: .4byte sub_8038D90 _08038D74: .4byte sub_8038DC4 _08038D78: .4byte gTasks _08038D7C: .4byte gUnknown_2024018 _08038D80: .4byte gUnknown_2024000 _08038D84: .4byte sub_80491B0 _08038D88: .4byte gUnknown_3004FE0 _08038D8C: .4byte nullsub_17 thumb_func_end sub_8038C80 thumb_func_start sub_8038D90 sub_8038D90: @ 8038D90 push {r4,lr} adds r4, r0, 0 ldrh r0, [r4, 0x6] bl sub_803477C ldrh r0, [r4, 0x38] ldr r1, _08038DBC @ =0x000003ff ands r1, r0 ldrh r2, [r4, 0x4] ldr r0, _08038DC0 @ =0xfffffc00 ands r0, r2 orrs r0, r1 strh r0, [r4, 0x4] adds r0, r4, 0 bl FreeSpriteOamMatrix adds r0, r4, 0 bl DestroySprite pop {r4} pop {r0} bx r0 .align 2, 0 _08038DBC: .4byte 0x000003ff _08038DC0: .4byte 0xfffffc00 thumb_func_end sub_8038D90 thumb_func_start sub_8038DC4 sub_8038DC4: @ 8038DC4 push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} lsls r0, 24 lsrs r0, 24 mov r8, r0 ldr r7, _08038E1C @ =gActiveBattler ldrb r0, [r7] mov r9, r0 ldr r1, _08038E20 @ =gTasks mov r2, r8 lsls r0, r2, 2 add r0, r8 lsls r0, 3 adds r0, r1 ldrh r0, [r0, 0x8] strb r0, [r7] bl sub_8075290 lsls r0, 24 cmp r0, 0 beq _08038DFE ldr r0, _08038E24 @ =gBattleTypeFlags ldr r0, [r0] movs r1, 0x40 ands r0, r1 cmp r0, 0 beq _08038E30 _08038DFE: ldr r0, _08038E28 @ =gUnknown_2022BC4 ldrb r1, [r7] lsls r2, r1, 9 adds r0, 0x1 adds r2, r0 ldr r0, _08038E2C @ =gBattlerPartyIndexes lsls r1, 1 adds r1, r0 ldrh r0, [r1] strb r0, [r2] ldrb r0, [r7] movs r1, 0 bl sub_8037A28 b _08038E70 .align 2, 0 _08038E1C: .4byte gActiveBattler _08038E20: .4byte gTasks _08038E24: .4byte gBattleTypeFlags _08038E28: .4byte gUnknown_2022BC4 _08038E2C: .4byte gBattlerPartyIndexes _08038E30: ldr r4, _08038E94 @ =gUnknown_2022BC4 ldrb r0, [r7] lsls r1, r0, 9 adds r4, 0x1 adds r1, r4 ldr r6, _08038E98 @ =gBattlerPartyIndexes lsls r0, 1 adds r0, r6 ldrh r0, [r0] strb r0, [r1] ldrb r0, [r7] movs r1, 0 bl sub_8037A28 ldrb r0, [r7] movs r5, 0x2 eors r0, r5 strb r0, [r7] ldrb r0, [r7] lsls r1, r0, 9 adds r1, r4 lsls r0, 1 adds r0, r6 ldrh r0, [r0] strb r0, [r1] ldrb r0, [r7] movs r1, 0 bl sub_8037A28 ldrb r0, [r7] eors r0, r5 strb r0, [r7] _08038E70: ldr r1, _08038E9C @ =gUnknown_3004FE0 ldr r2, _08038EA0 @ =gActiveBattler ldrb r0, [r2] lsls r0, 2 adds r0, r1 ldr r1, _08038EA4 @ =sub_8035DF0 str r1, [r0] mov r0, r9 strb r0, [r2] mov r0, r8 bl DestroyTask pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08038E94: .4byte gUnknown_2022BC4 _08038E98: .4byte gBattlerPartyIndexes _08038E9C: .4byte gUnknown_3004FE0 _08038EA0: .4byte gActiveBattler _08038EA4: .4byte sub_8035DF0 thumb_func_end sub_8038DC4 thumb_func_start sub_8038EA8 sub_8038EA8: @ 8038EA8 push {r4-r7,lr} ldr r1, _08038ED0 @ =gUnknown_2022BC4 ldr r0, _08038ED4 @ =gActiveBattler ldrb r2, [r0] lsls r0, r2, 9 adds r1, 0x1 adds r0, r1 ldrb r0, [r0] cmp r0, 0 beq _08038ED8 adds r0, r2, 0 bl GetBattlerSide lsls r0, 24 cmp r0, 0 bne _08038ED8 bl OpponentBufferExecCompleted b _08038FA2 .align 2, 0 _08038ED0: .4byte gUnknown_2022BC4 _08038ED4: .4byte gActiveBattler _08038ED8: ldr r4, _08038F30 @ =gUnknown_2024018 ldr r0, [r4] ldr r3, _08038F34 @ =gActiveBattler ldrb r1, [r3] ldr r2, [r0, 0x4] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r1, [r0] movs r2, 0x1 orrs r1, r2 strb r1, [r0] ldr r1, _08038F38 @ =gUnknown_2022BC4 ldrb r2, [r3] lsls r0, r2, 9 adds r1, 0x2 adds r0, r1 ldrb r0, [r0] adds r7, r3, 0 cmp r0, 0 beq _08038F44 ldr r0, [r4] ldr r1, [r0, 0x4] lsls r0, r2, 1 adds r0, r2 lsls r0, 2 adds r3, r0, r1 ldrb r2, [r3, 0x1] lsls r1, r2, 26 lsrs r0, r1, 27 cmp r0, 0x1 bhi _08038F3C adds r0, 0x1 movs r1, 0x1F ands r0, r1 lsls r0, 1 movs r1, 0x3F negs r1, r1 ands r1, r2 orrs r1, r0 strb r1, [r3, 0x1] b _08038FA2 .align 2, 0 _08038F30: .4byte gUnknown_2024018 _08038F34: .4byte gActiveBattler _08038F38: .4byte gUnknown_2022BC4 _08038F3C: movs r0, 0x3F negs r0, r0 ands r0, r2 strb r0, [r3, 0x1] _08038F44: adds r5, r7, 0 ldrb r0, [r5] lsls r3, r0, 9 ldr r4, _08038FA8 @ =gUnknown_2022BC8 adds r1, r3, r4 subs r2, r4, 0x3 adds r2, r3, r2 ldrb r2, [r2] subs r4, 0x2 adds r3, r4 ldrb r3, [r3] bl sub_8048D14 ldr r2, _08038FAC @ =gUnknown_2024000 ldrb r1, [r5] adds r1, r2 movs r3, 0 strb r0, [r1] ldr r6, _08038FB0 @ =gUnknown_2024018 ldr r0, [r6] ldrb r1, [r5] ldr r2, [r0, 0x4] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 strb r3, [r0, 0x5] ldrb r2, [r5] lsls r0, r2, 9 adds r0, r4 ldrb r0, [r0] cmp r0, 0 beq _08038F96 ldr r0, [r6] ldr r1, [r0, 0x4] lsls r0, r2, 1 adds r0, r2 lsls r0, 2 adds r0, r1 movs r1, 0x5D strb r1, [r0, 0x5] _08038F96: ldr r0, _08038FB4 @ =gUnknown_3004FE0 ldrb r1, [r7] lsls r1, 2 adds r1, r0 ldr r0, _08038FB8 @ =sub_8038FBC str r0, [r1] _08038FA2: pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08038FA8: .4byte gUnknown_2022BC8 _08038FAC: .4byte gUnknown_2024000 _08038FB0: .4byte gUnknown_2024018 _08038FB4: .4byte gUnknown_3004FE0 _08038FB8: .4byte sub_8038FBC thumb_func_end sub_8038EA8 thumb_func_start sub_8038FBC sub_8038FBC: @ 8038FBC push {r4,lr} ldr r4, _08038FFC @ =gUnknown_2024018 ldr r0, [r4] ldr r3, _08039000 @ =gActiveBattler ldrb r1, [r3] ldr r2, [r0, 0x4] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r1, [r0, 0x5] adds r2, r1, 0x1 strb r2, [r0, 0x5] lsls r1, 24 lsrs r1, 24 cmp r1, 0x5C bls _08038FF4 ldr r0, [r4] ldrb r1, [r3] ldr r2, [r0, 0x4] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 movs r1, 0 strb r1, [r0, 0x5] bl OpponentBufferExecCompleted _08038FF4: pop {r4} pop {r0} bx r0 .align 2, 0 _08038FFC: .4byte gUnknown_2024018 _08039000: .4byte gActiveBattler thumb_func_end sub_8038FBC thumb_func_start sub_8039004 sub_8039004: @ 8039004 push {lr} ldr r0, _08039040 @ =gUnknown_2024018 ldr r1, [r0] ldr r0, _08039044 @ =gActiveBattler ldrb r3, [r0] ldr r1, [r1, 0x4] lsls r0, r3, 1 adds r0, r3 lsls r0, 2 adds r0, r1 ldrb r1, [r0] movs r0, 0x1 ands r0, r1 cmp r0, 0 beq _08039036 ldr r2, _08039048 @ =gTasks ldr r0, _0803904C @ =gUnknown_2024000 adds r0, r3, r0 ldrb r1, [r0] lsls r0, r1, 2 adds r0, r1 lsls r0, 3 adds r0, r2 ldr r1, _08039050 @ =sub_80491B0 str r1, [r0] _08039036: bl OpponentBufferExecCompleted pop {r0} bx r0 .align 2, 0 _08039040: .4byte gUnknown_2024018 _08039044: .4byte gActiveBattler _08039048: .4byte gTasks _0803904C: .4byte gUnknown_2024000 _08039050: .4byte sub_80491B0 thumb_func_end sub_8039004 thumb_func_start sub_8039054 sub_8039054: @ 8039054 push {lr} bl OpponentBufferExecCompleted pop {r0} bx r0 thumb_func_end sub_8039054 thumb_func_start sub_8039060 sub_8039060: @ 8039060 push {r4,lr} ldr r4, _080390B0 @ =gActiveBattler ldrb r0, [r4] bl sub_8075224 lsls r0, 24 cmp r0, 0 beq _080390A6 ldr r3, _080390B4 @ =gSprites ldr r0, _080390B8 @ =gBattlerSpriteIds ldrb r1, [r4] adds r0, r1, r0 ldrb r0, [r0] lsls r2, r0, 4 adds r2, r0 lsls r2, 2 adds r2, r3 ldr r0, _080390BC @ =gUnknown_2022BC4 lsls r1, 9 adds r0, 0x1 adds r1, r0 adds r2, 0x3E movs r0, 0x1 ldrb r1, [r1] ands r1, r0 lsls r1, 2 ldrb r3, [r2] movs r0, 0x5 negs r0, r0 ands r0, r3 orrs r0, r1 strb r0, [r2] ldrb r0, [r4] bl CopyBattleSpriteInvisibility _080390A6: bl OpponentBufferExecCompleted pop {r4} pop {r0} bx r0 .align 2, 0 _080390B0: .4byte gActiveBattler _080390B4: .4byte gSprites _080390B8: .4byte gBattlerSpriteIds _080390BC: .4byte gUnknown_2022BC4 thumb_func_end sub_8039060 thumb_func_start sub_80390C0 sub_80390C0: @ 80390C0 push {r4-r6,lr} sub sp, 0x4 ldr r6, _08039104 @ =gActiveBattler ldrb r0, [r6] bl mplay_80342A4 lsls r0, 24 cmp r0, 0 bne _08039118 ldr r5, _08039108 @ =gUnknown_2022BC4 ldrb r2, [r6] lsls r1, r2, 9 adds r0, r5, 0x1 adds r0, r1, r0 ldrb r3, [r0] adds r0, r5, 0x2 adds r0, r1, r0 ldrb r4, [r0] adds r5, 0x3 adds r1, r5 ldrb r0, [r1] lsls r0, 8 orrs r4, r0 str r4, [sp] adds r0, r2, 0 adds r1, r2, 0 bl TryHandleLaunchBattleTableAnimation lsls r0, 24 cmp r0, 0 beq _0803910C bl OpponentBufferExecCompleted b _08039118 .align 2, 0 _08039104: .4byte gActiveBattler _08039108: .4byte gUnknown_2022BC4 _0803910C: ldr r0, _08039120 @ =gUnknown_3004FE0 ldrb r1, [r6] lsls r1, 2 adds r1, r0 ldr r0, _08039124 @ =sub_8036500 str r0, [r1] _08039118: add sp, 0x4 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _08039120: .4byte gUnknown_3004FE0 _08039124: .4byte sub_8036500 thumb_func_end sub_80390C0 thumb_func_start sub_8039128 sub_8039128: @ 8039128 push {lr} bl OpponentBufferExecCompleted pop {r0} bx r0 thumb_func_end sub_8039128 thumb_func_start sub_8039134 sub_8039134: @ 8039134 push {lr} bl OpponentBufferExecCompleted pop {r0} bx r0 thumb_func_end sub_8039134 thumb_func_start OpponentHandleCmd55 OpponentHandleCmd55: @ 8039140 push {lr} ldr r0, _08039174 @ =gBattleTypeFlags ldr r0, [r0] movs r1, 0x6 ands r0, r1 cmp r0, 0x2 bne _0803916A ldr r2, _08039178 @ =gMain ldr r0, _0803917C @ =0x00000439 adds r3, r2, r0 ldrb r1, [r3] movs r0, 0x3 negs r0, r0 ands r0, r1 strb r0, [r3] ldr r0, _08039180 @ =gUnknown_3004F80 ldr r0, [r0] str r0, [r2] ldr r0, [r2, 0x8] bl SetMainCallback2 _0803916A: bl OpponentBufferExecCompleted pop {r0} bx r0 .align 2, 0 _08039174: .4byte gBattleTypeFlags _08039178: .4byte gMain _0803917C: .4byte 0x00000439 _08039180: .4byte gUnknown_3004F80 thumb_func_end OpponentHandleCmd55 thumb_func_start nullsub_18 nullsub_18: @ 8039184 bx lr thumb_func_end nullsub_18 .align 2, 0 @ Don't pad with nop.