.include "constants/gba_constants.inc" .include "constants/species_constants.inc" .include "asm/macros.inc" .syntax unified .text thumb_func_start sub_806AEDC sub_806AEDC: @ 806AEDC push {r4-r6,lr} sub sp, 0x4 bl AnimateSprites bl BuildOamBuffer ldr r0, _0806AF2C @ =gUnknown_0202E8FA ldrb r1, [r0] lsls r0, r1, 1 adds r0, r1 lsls r0, 4 ldr r1, _0806AF30 @ =gUnknown_08376BB4 adds r5, r0, r1 movs r6, 0 _0806AEF8: ldrb r0, [r5] lsls r0, 3 ldrb r1, [r5, 0x1] lsls r1, 3 ldr r2, [r5, 0x4] lsls r3, r6, 5 movs r4, 0x80 lsls r4, 2 orrs r3, r4 str r3, [sp] movs r3, 0 bl sub_800142C adds r5, 0x8 adds r6, 0x1 cmp r6, 0x5 ble _0806AEF8 bl RunTasks bl UpdatePaletteFade add sp, 0x4 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0806AF2C: .4byte gUnknown_0202E8FA _0806AF30: .4byte gUnknown_08376BB4 thumb_func_end sub_806AEDC thumb_func_start sub_806AF34 sub_806AF34: @ 806AF34 push {lr} bl LoadOam bl ProcessSpriteCopyRequests bl TransferPlttBuffer bl sub_806B548 pop {r0} bx r0 thumb_func_end sub_806AF34 thumb_func_start sub_806AF4C sub_806AF4C: @ 806AF4C push {r4,r5,lr} adds r4, r2, 0 lsls r0, 24 lsrs r2, r0, 24 lsls r1, 24 lsrs r1, 24 lsls r3, 24 lsrs r3, 24 cmp r1, 0xFF beq _0806AF64 ldr r0, _0806AF84 @ =gBattleTypeFlags strh r1, [r0] _0806AF64: ldr r0, _0806AF88 @ =0x0201b000 movs r5, 0x96 lsls r5, 2 adds r1, r0, r5 strb r2, [r1] movs r2, 0x97 lsls r2, 2 adds r1, r0, r2 str r4, [r1] adds r5, 0x1 adds r0, r5 strb r3, [r0] pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0806AF84: .4byte gBattleTypeFlags _0806AF88: .4byte 0x0201b000 thumb_func_end sub_806AF4C thumb_func_start sub_806AF8C sub_806AF8C: @ 806AF8C push {lr} lsls r0, 24 lsrs r0, 24 lsls r1, 24 lsrs r1, 24 lsls r3, 24 lsrs r3, 24 bl sub_806AF4C ldr r0, _0806AFA8 @ =sub_806B460 bl SetMainCallback2 pop {r0} bx r0 .align 2, 0 _0806AFA8: .4byte sub_806B460 thumb_func_end sub_806AF8C thumb_func_start OpenPartyMenu OpenPartyMenu: @ 806AFAC push {lr} lsls r0, 24 lsrs r0, 24 lsls r1, 24 lsrs r1, 24 ldr r2, _0806AFCC @ =gUnknown_08376C74 lsls r3, r0, 1 adds r3, r0 lsls r3, 2 adds r3, r2 ldr r2, [r3] ldrb r3, [r3, 0x8] bl sub_806AF8C pop {r0} bx r0 .align 2, 0 _0806AFCC: .4byte gUnknown_08376C74 thumb_func_end OpenPartyMenu thumb_func_start sub_806AFD0 sub_806AFD0: @ 806AFD0 push {r4,r5,lr} ldr r1, _0806AFF0 @ =0x0201b000 movs r2, 0x99 lsls r2, 2 adds r0, r1, r2 movs r2, 0 ldrsh r0, [r0, r2] adds r4, r1, 0 cmp r0, 0x9 bls _0806AFE6 b _0806B11A _0806AFE6: lsls r0, 2 ldr r1, _0806AFF4 @ =_0806AFF8 adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _0806AFF0: .4byte 0x0201b000 _0806AFF4: .4byte _0806AFF8 .align 2, 0 _0806AFF8: .4byte _0806B020 .4byte _0806B060 .4byte _0806B066 .4byte _0806B07A .4byte _0806B0A4 .4byte _0806B0AA .4byte _0806B0BC .4byte _0806B0C2 .4byte _0806B0D4 .4byte _0806B0EC _0806B020: ldr r0, _0806B048 @ =0x00000266 adds r5, r4, r0 movs r1, 0 ldrsh r3, [r5, r1] ldr r0, _0806B04C @ =gPlayerPartyCount ldrb r0, [r0] cmp r3, r0 bge _0806B054 movs r2, 0x98 lsls r2, 2 adds r0, r4, r2 ldrb r0, [r0] ldrb r1, [r5] movs r2, 0x64 muls r2, r3 ldr r3, _0806B050 @ =gPlayerParty adds r2, r3 bl TryCreatePartyMenuMonIcon b _0806B114 .align 2, 0 _0806B048: .4byte 0x00000266 _0806B04C: .4byte gPlayerPartyCount _0806B050: .4byte gPlayerParty _0806B054: movs r0, 0 strh r0, [r5] movs r0, 0x99 lsls r0, 2 adds r1, r4, r0 b _0806B0E0 _0806B060: bl LoadHeldItemIconGraphics b _0806B0D8 _0806B066: movs r1, 0x98 lsls r1, 2 adds r0, r4, r1 ldrb r0, [r0] bl CreateHeldItemIcons_806DC34 movs r2, 0x99 lsls r2, 2 adds r1, r4, r2 b _0806B0E0 _0806B07A: movs r1, 0x98 lsls r1, 2 adds r0, r4, r1 ldrb r0, [r0] ldr r2, _0806B0A0 @ =0x00000266 adds r5, r4, r2 ldrb r1, [r5] bl sub_806BD58 lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _0806B114 movs r0, 0 strh r0, [r5] movs r0, 0x99 lsls r0, 2 adds r1, r4, r0 b _0806B0E0 .align 2, 0 _0806B0A0: .4byte 0x00000266 _0806B0A4: bl PartyMenuPrintMonsLevelOrStatus b _0806B0D8 _0806B0AA: bl PrintPartyMenuMonNicknames ldr r1, _0806B0B8 @ =0x0201b000 movs r0, 0x99 lsls r0, 2 adds r1, r0 b _0806B0E0 .align 2, 0 _0806B0B8: .4byte 0x0201b000 _0806B0BC: bl PartyMenuTryPrintMonsHP b _0806B0D8 _0806B0C2: bl nullsub_13 ldr r1, _0806B0D0 @ =0x0201b000 movs r0, 0x99 lsls r0, 2 adds r1, r0 b _0806B0E0 .align 2, 0 _0806B0D0: .4byte 0x0201b000 _0806B0D4: bl PartyMenuDrawHPBars _0806B0D8: ldr r1, _0806B0E8 @ =0x0201b000 movs r2, 0x99 lsls r2, 2 adds r1, r2 _0806B0E0: ldrh r0, [r1] adds r0, 0x1 strh r0, [r1] b _0806B11A .align 2, 0 _0806B0E8: .4byte 0x0201b000 _0806B0EC: ldr r0, _0806B110 @ =0x00000266 adds r5, r4, r0 ldrb r0, [r5] bl sub_806B58C lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _0806B114 movs r1, 0 strh r1, [r5] movs r2, 0x99 lsls r2, 2 adds r0, r4, r2 strh r1, [r0] movs r0, 0x1 b _0806B11C .align 2, 0 _0806B110: .4byte 0x00000266 _0806B114: ldrh r0, [r5] adds r0, 0x1 strh r0, [r5] _0806B11A: movs r0, 0 _0806B11C: pop {r4,r5} pop {r1} bx r1 thumb_func_end sub_806AFD0 thumb_func_start sub_806B124 sub_806B124: @ 806B124 push {r4-r7,lr} mov r7, r8 push {r7} sub sp, 0xC ldr r0, _0806B144 @ =gMain ldr r1, _0806B148 @ =0x0000043c adds r0, r1 ldrb r0, [r0] cmp r0, 0x11 bls _0806B13A b _0806B450 _0806B13A: lsls r0, 2 ldr r1, _0806B14C @ =_0806B150 adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _0806B144: .4byte gMain _0806B148: .4byte 0x0000043c _0806B14C: .4byte _0806B150 .align 2, 0 _0806B150: .4byte _0806B198 .4byte _0806B240 .4byte _0806B246 .4byte _0806B27C .4byte _0806B282 .4byte _0806B2AC .4byte _0806B2B2 .4byte _0806B2D0 .4byte _0806B2EC .4byte _0806B318 .4byte _0806B344 .4byte _0806B37C .4byte _0806B382 .4byte _0806B3C0 .4byte _0806B3CC .4byte _0806B3E4 .4byte _0806B40C .4byte _0806B440 _0806B198: movs r0, 0 bl SetVBlankCallback movs r3, 0xC0 lsls r3, 19 movs r4, 0xC0 lsls r4, 9 add r2, sp, 0x8 mov r8, r2 add r2, sp, 0x4 movs r6, 0 ldr r1, _0806B22C @ =0x040000d4 movs r5, 0x80 lsls r5, 5 ldr r7, _0806B230 @ =0x81000800 movs r0, 0x81 lsls r0, 24 mov r12, r0 _0806B1BC: strh r6, [r2] add r0, sp, 0x4 str r0, [r1] str r3, [r1, 0x4] str r7, [r1, 0x8] ldr r0, [r1, 0x8] adds r3, r5 subs r4, r5 cmp r4, r5 bhi _0806B1BC strh r6, [r2] add r2, sp, 0x4 str r2, [r1] str r3, [r1, 0x4] lsrs r0, r4, 1 mov r3, r12 orrs r0, r3 str r0, [r1, 0x8] ldr r0, [r1, 0x8] movs r0, 0xE0 lsls r0, 19 movs r3, 0x80 lsls r3, 3 movs r4, 0 str r4, [sp, 0x8] ldr r2, _0806B22C @ =0x040000d4 mov r1, r8 str r1, [r2] str r0, [r2, 0x4] lsrs r0, r3, 2 movs r1, 0x85 lsls r1, 24 orrs r0, r1 str r0, [r2, 0x8] ldr r0, [r2, 0x8] movs r1, 0xA0 lsls r1, 19 add r0, sp, 0x4 strh r4, [r0] str r0, [r2] str r1, [r2, 0x4] lsrs r3, 1 movs r0, 0x81 lsls r0, 24 orrs r3, r0 str r3, [r2, 0x8] ldr r0, [r2, 0x8] ldr r2, _0806B234 @ =gPaletteFade ldrb r0, [r2, 0x8] movs r1, 0x80 orrs r0, r1 strb r0, [r2, 0x8] ldr r1, _0806B238 @ =gMain ldr r2, _0806B23C @ =0x0000043c adds r1, r2 b _0806B42C .align 2, 0 _0806B22C: .4byte 0x040000d4 _0806B230: .4byte 0x81000800 _0806B234: .4byte gPaletteFade _0806B238: .4byte gMain _0806B23C: .4byte 0x0000043c _0806B240: bl remove_some_task b _0806B426 _0806B246: bl sub_806B4A8 ldr r1, _0806B26C @ =0x0201b000 movs r2, 0x99 lsls r2, 2 adds r0, r1, r2 movs r2, 0 strh r2, [r0] ldr r3, _0806B270 @ =0x00000266 adds r0, r1, r3 strh r2, [r0] movs r0, 0x9A lsls r0, 2 adds r1, r0 strh r2, [r1] ldr r1, _0806B274 @ =gMain ldr r2, _0806B278 @ =0x0000043c adds r1, r2 b _0806B42C .align 2, 0 _0806B26C: .4byte 0x0201b000 _0806B270: .4byte 0x00000266 _0806B274: .4byte gMain _0806B278: .4byte 0x0000043c _0806B27C: bl ResetSpriteData b _0806B426 _0806B282: ldr r0, _0806B2A0 @ =0x0201b000 movs r1, 0x96 lsls r1, 2 adds r0, r1 ldrb r0, [r0] cmp r0, 0x1 beq _0806B298 cmp r0, 0x5 beq _0806B298 bl ResetTasks _0806B298: ldr r1, _0806B2A4 @ =gMain ldr r2, _0806B2A8 @ =0x0000043c adds r1, r2 b _0806B42C .align 2, 0 _0806B2A0: .4byte 0x0201b000 _0806B2A4: .4byte gMain _0806B2A8: .4byte 0x0000043c _0806B2AC: bl FreeAllSpritePalettes b _0806B426 _0806B2B2: ldr r4, _0806B2CC @ =0x0201b000 movs r1, 0x97 lsls r1, 2 adds r0, r4, r1 ldr r0, [r0] movs r1, 0 bl CreateTask movs r2, 0x98 lsls r2, 2 adds r1, r4, r2 strb r0, [r1] b _0806B426 .align 2, 0 _0806B2CC: .4byte 0x0201b000 _0806B2D0: ldr r0, _0806B2E0 @ =gWindowConfig_81E6C90 bl SetUpWindowConfig ldr r1, _0806B2E4 @ =gMain ldr r0, _0806B2E8 @ =0x0000043c adds r1, r0 b _0806B42C .align 2, 0 _0806B2E0: .4byte gWindowConfig_81E6C90 _0806B2E4: .4byte gMain _0806B2E8: .4byte 0x0000043c _0806B2EC: ldr r4, _0806B308 @ =gUnknown_03004210 ldr r1, _0806B30C @ =gWindowConfig_81E6C90 adds r0, r4, 0 bl InitWindowFromConfig adds r0, r4, 0 movs r1, 0x1 bl MultistepInitWindowTileData ldr r1, _0806B310 @ =gMain ldr r2, _0806B314 @ =0x0000043c adds r1, r2 b _0806B42C .align 2, 0 _0806B308: .4byte gUnknown_03004210 _0806B30C: .4byte gWindowConfig_81E6C90 _0806B310: .4byte gMain _0806B314: .4byte 0x0000043c _0806B318: bl MultistepLoadFont cmp r0, 0 bne _0806B322 b _0806B450 _0806B322: ldr r0, _0806B338 @ =0x0201b000 movs r3, 0x99 lsls r3, 2 adds r0, r3 movs r1, 0x1 strh r1, [r0] ldr r1, _0806B33C @ =gMain ldr r0, _0806B340 @ =0x0000043c adds r1, r0 b _0806B42C .align 2, 0 _0806B338: .4byte 0x0201b000 _0806B33C: .4byte gMain _0806B340: .4byte 0x0000043c _0806B344: ldr r0, _0806B368 @ =0x0201b000 movs r1, 0x99 lsls r1, 2 adds r4, r0, r1 ldrb r0, [r4] bl sub_806D718 lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _0806B374 movs r0, 0 strh r0, [r4] ldr r1, _0806B36C @ =gMain ldr r2, _0806B370 @ =0x0000043c adds r1, r2 b _0806B42C .align 2, 0 _0806B368: .4byte 0x0201b000 _0806B36C: .4byte gMain _0806B370: .4byte 0x0000043c _0806B374: ldrh r0, [r4] adds r0, 0x1 strh r0, [r4] b _0806B450 _0806B37C: bl sub_809D51C b _0806B426 _0806B382: ldr r2, _0806B3B0 @ =gUnknown_08376C74 ldr r0, _0806B3B4 @ =0x0201b000 movs r1, 0x96 lsls r1, 2 adds r0, r1 ldrb r1, [r0] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r2, 0x4 adds r0, r2 ldr r0, [r0] bl _call_via_r0 lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _0806B450 ldr r1, _0806B3B8 @ =gMain ldr r2, _0806B3BC @ =0x0000043c adds r1, r2 b _0806B42C .align 2, 0 _0806B3B0: .4byte gUnknown_08376C74 _0806B3B4: .4byte 0x0201b000 _0806B3B8: .4byte gMain _0806B3BC: .4byte 0x0000043c _0806B3C0: ldr r0, _0806B3C8 @ =gWindowConfig_81E6CC8 bl MultistepInitMenuWindowBegin b _0806B426 .align 2, 0 _0806B3C8: .4byte gWindowConfig_81E6CC8 _0806B3CC: bl MultistepInitMenuWindowContinue cmp r0, 0 beq _0806B450 ldr r1, _0806B3DC @ =gMain ldr r0, _0806B3E0 @ =0x0000043c adds r1, r0 b _0806B42C .align 2, 0 _0806B3DC: .4byte gMain _0806B3E0: .4byte 0x0000043c _0806B3E4: ldr r0, _0806B3FC @ =0x0201b000 ldr r1, _0806B400 @ =0x00000259 adds r0, r1 ldrb r0, [r0] movs r1, 0 bl sub_806D538 ldr r1, _0806B404 @ =gMain ldr r2, _0806B408 @ =0x0000043c adds r1, r2 b _0806B42C .align 2, 0 _0806B3FC: .4byte 0x0201b000 _0806B400: .4byte 0x00000259 _0806B404: .4byte gMain _0806B408: .4byte 0x0000043c _0806B40C: movs r0, 0x1 negs r0, r0 movs r1, 0 str r1, [sp] movs r2, 0x10 movs r3, 0 bl BeginNormalPaletteFade ldr r2, _0806B434 @ =gPaletteFade ldrb r1, [r2, 0x8] movs r0, 0x7F ands r0, r1 strb r0, [r2, 0x8] _0806B426: ldr r1, _0806B438 @ =gMain ldr r3, _0806B43C @ =0x0000043c adds r1, r3 _0806B42C: ldrb r0, [r1] adds r0, 0x1 strb r0, [r1] b _0806B450 .align 2, 0 _0806B434: .4byte gPaletteFade _0806B438: .4byte gMain _0806B43C: .4byte 0x0000043c _0806B440: ldr r0, _0806B44C @ =sub_806AF34 bl SetVBlankCallback movs r0, 0x1 b _0806B452 .align 2, 0 _0806B44C: .4byte sub_806AF34 _0806B450: movs r0, 0 _0806B452: add sp, 0xC pop {r3} mov r8, r3 pop {r4-r7} pop {r1} bx r1 thumb_func_end sub_806B124 thumb_func_start sub_806B460 sub_806B460: @ 806B460 push {lr} b _0806B470 _0806B464: bl sub_80F9344 lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 beq _0806B49C _0806B470: bl sub_806B124 lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _0806B464 ldr r1, _0806B4A0 @ =0x0201b000 movs r2, 0x96 lsls r2, 2 adds r0, r1, r2 ldrb r0, [r0] cmp r0, 0x5 beq _0806B496 adds r2, 0x8 adds r0, r1, r2 ldrb r0, [r0] movs r1, 0 bl sub_806BF74 _0806B496: ldr r0, _0806B4A4 @ =sub_806AEDC bl SetMainCallback2 _0806B49C: pop {r0} bx r0 .align 2, 0 _0806B4A0: .4byte 0x0201b000 _0806B4A4: .4byte sub_806AEDC thumb_func_end sub_806B460 thumb_func_start sub_806B4A8 sub_806B4A8: @ 806B4A8 push {lr} movs r0, 0 bl SetHBlankCallback movs r1, 0x80 lsls r1, 19 movs r2, 0xFA lsls r2, 5 adds r0, r2, 0 strh r0, [r1] adds r1, 0x8 ldr r2, _0806B50C @ =0x00001e05 adds r0, r2, 0 strh r0, [r1] adds r1, 0x2 ldr r2, _0806B510 @ =0x00000703 adds r0, r2, 0 strh r0, [r1] adds r1, 0x2 ldr r2, _0806B514 @ =0x00000f08 adds r0, r2, 0 strh r0, [r1] adds r1, 0x2 ldr r2, _0806B518 @ =0x00000602 adds r0, r2, 0 strh r0, [r1] ldr r0, _0806B51C @ =REG_BLDCNT movs r1, 0 strh r1, [r0] subs r0, 0x40 strh r1, [r0] adds r0, 0x2 strh r1, [r0] adds r0, 0x2 strh r1, [r0] adds r0, 0x2 strh r1, [r0] adds r0, 0x2 strh r1, [r0] adds r0, 0x2 strh r1, [r0] adds r0, 0x2 strh r1, [r0] ldr r2, _0806B520 @ =REG_BG3VOFS strh r1, [r2] ldr r1, _0806B524 @ =0x0000ffff adds r0, r1, 0 strh r0, [r2] pop {r0} bx r0 .align 2, 0 _0806B50C: .4byte 0x00001e05 _0806B510: .4byte 0x00000703 _0806B514: .4byte 0x00000f08 _0806B518: .4byte 0x00000602 _0806B51C: .4byte REG_BLDCNT _0806B520: .4byte REG_BG3VOFS _0806B524: .4byte 0x0000ffff thumb_func_end sub_806B4A8 thumb_func_start IsLinkDoubleBattle IsLinkDoubleBattle: @ 806B528 push {lr} ldr r0, _0806B53C @ =gBattleTypeFlags ldrh r1, [r0] movs r0, 0x4B ands r0, r1 cmp r0, 0x4B beq _0806B540 movs r0, 0 b _0806B542 .align 2, 0 _0806B53C: .4byte gBattleTypeFlags _0806B540: movs r0, 0x1 _0806B542: pop {r1} bx r1 thumb_func_end IsLinkDoubleBattle thumb_func_start sub_806B548 sub_806B548: @ 806B548 push {r4,lr} ldr r0, _0806B574 @ =0x0201b000 ldr r1, _0806B578 @ =0x00000261 adds r4, r0, r1 ldrb r3, [r4] cmp r3, 0 beq _0806B56E ldr r1, _0806B57C @ =gBGTilemapBuffers + 0x1000 ldr r2, _0806B580 @ =0x06003000 ldr r0, _0806B584 @ =0x040000d4 str r1, [r0] str r2, [r0, 0x4] ldr r1, _0806B588 @ =0x80000400 str r1, [r0, 0x8] ldr r0, [r0, 0x8] cmp r3, 0x2 bne _0806B56E movs r0, 0 strb r0, [r4] _0806B56E: pop {r4} pop {r0} bx r0 .align 2, 0 _0806B574: .4byte 0x0201b000 _0806B578: .4byte 0x00000261 _0806B57C: .4byte gBGTilemapBuffers + 0x1000 _0806B580: .4byte 0x06003000 _0806B584: .4byte 0x040000d4 _0806B588: .4byte 0x80000400 thumb_func_end sub_806B548 thumb_func_start sub_806B58C sub_806B58C: @ 806B58C push {r4,r5,lr} lsls r0, 24 lsrs r5, r0, 24 bl IsDoubleBattle lsls r0, 24 lsrs r2, r0, 24 cmp r2, 0 bne _0806B5A8 ldr r0, _0806B5A4 @ =gUnknown_0202E8FA strb r2, [r0] b _0806B5C8 .align 2, 0 _0806B5A4: .4byte gUnknown_0202E8FA _0806B5A8: bl IsLinkDoubleBattle lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _0806B5C0 ldr r1, _0806B5BC @ =gUnknown_0202E8FA movs r0, 0x2 b _0806B5C4 .align 2, 0 _0806B5BC: .4byte gUnknown_0202E8FA _0806B5C0: ldr r1, _0806B5E4 @ =gUnknown_0202E8FA movs r0, 0x1 _0806B5C4: strb r0, [r1] adds r0, r1, 0 _0806B5C8: ldrb r0, [r0] lsls r1, r0, 1 adds r1, r0 lsls r1, 2 ldr r0, _0806B5E8 @ =gUnknown_083769A8 adds r4, r1, r0 cmp r5, 0x8 bls _0806B5DA b _0806B900 _0806B5DA: lsls r0, r5, 2 ldr r1, _0806B5EC @ =_0806B5F0 adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _0806B5E4: .4byte gUnknown_0202E8FA _0806B5E8: .4byte gUnknown_083769A8 _0806B5EC: .4byte _0806B5F0 .align 2, 0 _0806B5F0: .4byte _0806B614 .4byte _0806B628 .4byte _0806B638 .4byte _0806B694 .4byte _0806B71A .4byte _0806B7A2 .4byte _0806B832 .4byte _0806B8C6 .4byte _0806B8E8 _0806B614: ldr r0, _0806B624 @ =gBGTilemapBuffers + 0x1000 movs r2, 0x80 lsls r2, 4 movs r1, 0 bl memset b _0806B900 .align 2, 0 _0806B624: .4byte gBGTilemapBuffers + 0x1000 _0806B628: ldrb r0, [r4] ldrb r1, [r4, 0x1] movs r2, 0x3 bl sub_806B9A4 adds r0, r4, 0 movs r1, 0 b _0806B8A8 _0806B638: bl IsDoubleBattle lsls r0, 24 cmp r0, 0 bne _0806B666 ldr r0, _0806B65C @ =gPlayerPartyCount ldrb r0, [r0] cmp r0, 0x1 bls _0806B660 ldrb r0, [r4, 0x2] ldrb r1, [r4, 0x3] movs r2, 0 movs r3, 0x3 bl sub_806BA94 adds r0, r4, 0x2 movs r1, 0x1 b _0806B8A8 .align 2, 0 _0806B65C: .4byte gPlayerPartyCount _0806B660: ldrb r0, [r4, 0x2] ldrb r1, [r4, 0x3] b _0806B8BC _0806B666: bl IsLinkDoubleBattle lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _0806B684 ldrb r0, [r4, 0x2] ldrb r1, [r4, 0x3] movs r2, 0x4 bl sub_806B9A4 adds r0, r4, 0x2 movs r1, 0x1 movs r2, 0x4 b _0806B8AA _0806B684: ldrb r0, [r4, 0x2] ldrb r1, [r4, 0x3] movs r2, 0x3 bl sub_806B9A4 adds r0, r4, 0x2 movs r1, 0x1 b _0806B8A8 _0806B694: bl IsDoubleBattle lsls r0, 24 cmp r0, 0 bne _0806B6C2 ldr r0, _0806B6B8 @ =gPlayerPartyCount ldrb r0, [r0] cmp r0, 0x2 bls _0806B6BC ldrb r0, [r4, 0x4] ldrb r1, [r4, 0x5] movs r2, 0 movs r3, 0x3 bl sub_806BA94 adds r0, r4, 0x4 movs r1, 0x2 b _0806B8A8 .align 2, 0 _0806B6B8: .4byte gPlayerPartyCount _0806B6BC: ldrb r0, [r4, 0x4] ldrb r1, [r4, 0x5] b _0806B8BC _0806B6C2: bl IsLinkDoubleBattle lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _0806B6F6 ldr r0, _0806B6EC @ =gPlayerParty + 2 * 0x64 movs r1, 0xB bl GetMonData cmp r0, 0 beq _0806B6F0 ldrb r0, [r4, 0x4] ldrb r1, [r4, 0x5] movs r2, 0 movs r3, 0x3 bl sub_806BA94 adds r0, r4, 0x4 movs r1, 0x2 b _0806B8A8 .align 2, 0 _0806B6EC: .4byte gPlayerParty + 2 * 0x64 _0806B6F0: ldrb r0, [r4, 0x4] ldrb r1, [r4, 0x5] b _0806B8BC _0806B6F6: ldr r0, _0806B710 @ =gPlayerPartyCount ldrb r0, [r0] cmp r0, 0x2 bls _0806B714 ldrb r0, [r4, 0x4] ldrb r1, [r4, 0x5] movs r2, 0 movs r3, 0x3 bl sub_806BA94 adds r0, r4, 0x4 movs r1, 0x2 b _0806B8A8 .align 2, 0 _0806B710: .4byte gPlayerPartyCount _0806B714: ldrb r0, [r4, 0x4] ldrb r1, [r4, 0x5] b _0806B8BC _0806B71A: bl IsDoubleBattle lsls r0, 24 cmp r0, 0 bne _0806B74A ldr r0, _0806B740 @ =gPlayerPartyCount ldrb r0, [r0] cmp r0, 0x3 bls _0806B744 ldrb r0, [r4, 0x6] ldrb r1, [r4, 0x7] movs r2, 0 movs r3, 0x3 bl sub_806BA94 adds r0, r4, 0x6 movs r1, 0x3 b _0806B8A8 .align 2, 0 _0806B740: .4byte gPlayerPartyCount _0806B744: ldrb r0, [r4, 0x6] ldrb r1, [r4, 0x7] b _0806B8BC _0806B74A: bl IsLinkDoubleBattle lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _0806B77E ldr r0, _0806B774 @ =gPlayerParty + 3 * 0x64 movs r1, 0xB bl GetMonData cmp r0, 0 beq _0806B778 ldrb r0, [r4, 0x6] ldrb r1, [r4, 0x7] movs r2, 0 movs r3, 0x3 bl sub_806BA94 adds r0, r4, 0x6 movs r1, 0x3 b _0806B8A8 .align 2, 0 _0806B774: .4byte gPlayerParty + 3 * 0x64 _0806B778: ldrb r0, [r4, 0x6] ldrb r1, [r4, 0x7] b _0806B8BC _0806B77E: ldr r0, _0806B798 @ =gPlayerPartyCount ldrb r0, [r0] cmp r0, 0x3 bls _0806B79C ldrb r0, [r4, 0x6] ldrb r1, [r4, 0x7] movs r2, 0 movs r3, 0x3 bl sub_806BA94 adds r0, r4, 0x6 movs r1, 0x3 b _0806B8A8 .align 2, 0 _0806B798: .4byte gPlayerPartyCount _0806B79C: ldrb r0, [r4, 0x6] ldrb r1, [r4, 0x7] b _0806B8BC _0806B7A2: bl IsDoubleBattle lsls r0, 24 cmp r0, 0 bne _0806B7D2 ldr r0, _0806B7C8 @ =gPlayerPartyCount ldrb r0, [r0] cmp r0, 0x4 bls _0806B7CC ldrb r0, [r4, 0x8] ldrb r1, [r4, 0x9] movs r2, 0 movs r3, 0x3 bl sub_806BA94 adds r0, r4, 0 adds r0, 0x8 movs r1, 0x4 b _0806B8A8 .align 2, 0 _0806B7C8: .4byte gPlayerPartyCount _0806B7CC: ldrb r0, [r4, 0x8] ldrb r1, [r4, 0x9] b _0806B8BC _0806B7D2: bl IsLinkDoubleBattle lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _0806B80A ldr r0, _0806B800 @ =gPlayerParty + 4 * 0x64 movs r1, 0xB bl GetMonData cmp r0, 0 beq _0806B804 ldrb r0, [r4, 0x8] ldrb r1, [r4, 0x9] movs r2, 0 movs r3, 0x4 bl sub_806BA94 adds r0, r4, 0 adds r0, 0x8 movs r1, 0x4 movs r2, 0x4 b _0806B8AA .align 2, 0 _0806B800: .4byte gPlayerParty + 4 * 0x64 _0806B804: ldrb r0, [r4, 0x8] ldrb r1, [r4, 0x9] b _0806B884 _0806B80A: ldr r0, _0806B828 @ =gPlayerPartyCount ldrb r0, [r0] cmp r0, 0x4 bls _0806B82C ldrb r0, [r4, 0x8] ldrb r1, [r4, 0x9] movs r2, 0 movs r3, 0x3 bl sub_806BA94 adds r0, r4, 0 adds r0, 0x8 movs r1, 0x4 b _0806B8A8 .align 2, 0 _0806B828: .4byte gPlayerPartyCount _0806B82C: ldrb r0, [r4, 0x8] ldrb r1, [r4, 0x9] b _0806B8BC _0806B832: bl IsDoubleBattle lsls r0, 24 cmp r0, 0 bne _0806B84C ldr r0, _0806B848 @ =gPlayerPartyCount ldrb r0, [r0] cmp r0, 0x5 bhi _0806B896 b _0806B8B8 .align 2, 0 _0806B848: .4byte gPlayerPartyCount _0806B84C: bl IsLinkDoubleBattle lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _0806B88E ldr r0, _0806B87C @ =gPlayerParty + 5 * 0x64 movs r1, 0xB bl GetMonData cmp r0, 0 beq _0806B880 ldrb r0, [r4, 0xA] ldrb r1, [r4, 0xB] movs r2, 0 movs r3, 0x4 bl sub_806BA94 adds r0, r4, 0 adds r0, 0xA movs r1, 0x5 movs r2, 0x4 b _0806B8AA .align 2, 0 _0806B87C: .4byte gPlayerParty + 5 * 0x64 _0806B880: ldrb r0, [r4, 0xA] ldrb r1, [r4, 0xB] _0806B884: movs r2, 0x1 movs r3, 0x4 bl sub_806BA94 b _0806B900 _0806B88E: ldr r0, _0806B8B4 @ =gPlayerPartyCount ldrb r0, [r0] cmp r0, 0x5 bls _0806B8B8 _0806B896: ldrb r0, [r4, 0xA] ldrb r1, [r4, 0xB] movs r2, 0 movs r3, 0x3 bl sub_806BA94 adds r0, r4, 0 adds r0, 0xA movs r1, 0x5 _0806B8A8: movs r2, 0x3 _0806B8AA: movs r3, 0 bl sub_806BF24 b _0806B900 .align 2, 0 _0806B8B4: .4byte gPlayerPartyCount _0806B8B8: ldrb r0, [r4, 0xA] ldrb r1, [r4, 0xB] _0806B8BC: movs r2, 0x1 movs r3, 0x3 bl sub_806BA94 b _0806B900 _0806B8C6: ldr r0, _0806B8E4 @ =0x0201b000 movs r1, 0x96 lsls r1, 2 adds r0, r1 ldrb r0, [r0] cmp r0, 0x4 bne _0806B8DA movs r0, 0x1 bl sub_806BB9C _0806B8DA: movs r0, 0x1 bl sub_806BBEC b _0806B900 .align 2, 0 _0806B8E4: .4byte 0x0201b000 _0806B8E8: ldr r0, _0806B8F8 @ =0x0201b000 ldr r1, _0806B8FC @ =0x00000261 adds r0, r1 movs r1, 0x2 strb r1, [r0] movs r0, 0x1 b _0806B902 .align 2, 0 _0806B8F8: .4byte 0x0201b000 _0806B8FC: .4byte 0x00000261 _0806B900: movs r0, 0 _0806B902: pop {r4,r5} pop {r1} bx r1 thumb_func_end sub_806B58C thumb_func_start sub_806B908 sub_806B908: @ 806B908 push {r4,r5,lr} ldr r0, _0806B948 @ =gBGTilemapBuffers + 0x1000 movs r2, 0x80 lsls r2, 4 movs r1, 0 bl memset ldr r1, _0806B94C @ =gUnknown_0202E8FA movs r0, 0x3 strb r0, [r1] ldr r0, _0806B950 @ =gUnknown_083769A8 adds r4, r0, 0 adds r4, 0x24 ldr r5, _0806B954 @ =gPlayerParty + 1 * 0x64 ldrb r0, [r4] ldrb r1, [r4, 0x1] movs r2, 0x3 bl sub_806B9A4 adds r0, r5, 0 movs r1, 0xB bl GetMonData cmp r0, 0 beq _0806B958 ldrb r0, [r4, 0x4] ldrb r1, [r4, 0x5] movs r2, 0 movs r3, 0x3 bl sub_806BA94 b _0806B964 .align 2, 0 _0806B948: .4byte gBGTilemapBuffers + 0x1000 _0806B94C: .4byte gUnknown_0202E8FA _0806B950: .4byte gUnknown_083769A8 _0806B954: .4byte gPlayerParty + 1 * 0x64 _0806B958: ldrb r0, [r4, 0x4] ldrb r1, [r4, 0x5] movs r2, 0x1 movs r3, 0x3 bl sub_806BA94 _0806B964: adds r0, r5, 0 adds r0, 0x64 movs r1, 0xB bl GetMonData cmp r0, 0 beq _0806B980 ldrb r0, [r4, 0x6] ldrb r1, [r4, 0x7] movs r2, 0 movs r3, 0x3 bl sub_806BA94 b _0806B98C _0806B980: ldrb r0, [r4, 0x6] ldrb r1, [r4, 0x7] movs r2, 0x1 movs r3, 0x3 bl sub_806BA94 _0806B98C: ldr r0, _0806B99C @ =0x0201b000 ldr r1, _0806B9A0 @ =0x00000261 adds r0, r1 movs r1, 0x2 strb r1, [r0] pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0806B99C: .4byte 0x0201b000 _0806B9A0: .4byte 0x00000261 thumb_func_end sub_806B908 thumb_func_start sub_806B9A4 sub_806B9A4: @ 806B9A4 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x8 lsls r2, 24 lsrs r2, 24 str r2, [sp] lsls r1, 21 lsrs r1, 16 str r1, [sp, 0x4] movs r1, 0 lsls r0, 16 mov r8, r0 asrs r0, 16 mov r10, r0 ldr r4, _0806BA2C @ =gUnknown_083769D8 mov r9, r4 _0806B9CA: movs r3, 0 adds r7, r1, 0x1 mov r0, r10 cmp r0, 0x1F bgt _0806BA12 mov r4, r8 asrs r2, r4, 16 lsls r0, r1, 5 ldr r4, [sp, 0x4] adds r6, r4, r0 ldr r0, _0806BA30 @ =gBGTilemapBuffers + 0x1000 mov r12, r0 ldr r4, [sp] lsls r5, r4, 12 movs r0, 0xB adds r4, r1, 0 muls r4, r0 _0806B9EC: adds r0, r2, r3 cmp r0, 0 blt _0806BA02 adds r0, r6, r0 lsls r0, 1 add r0, r12 adds r1, r4, r3 add r1, r9 ldrb r1, [r1] orrs r1, r5 strh r1, [r0] _0806BA02: adds r0, r3, 0x1 lsls r0, 24 lsrs r3, r0, 24 cmp r3, 0xA bhi _0806BA12 adds r0, r2, r3 cmp r0, 0x1F ble _0806B9EC _0806BA12: lsls r0, r7, 24 lsrs r1, r0, 24 cmp r1, 0x6 bls _0806B9CA add sp, 0x8 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0806BA2C: .4byte gUnknown_083769D8 _0806BA30: .4byte gBGTilemapBuffers + 0x1000 thumb_func_end sub_806B9A4 thumb_func_start sub_806BA34 sub_806BA34: @ 806BA34 push {r4-r7,lr} mov r7, r8 push {r7} lsls r1, 21 lsrs r1, 16 mov r8, r1 movs r1, 0 lsls r7, r0, 16 asrs r0, r7, 16 mov r12, r0 _0806BA48: movs r2, 0 adds r4, r1, 0x1 mov r5, r12 cmp r5, 0x1F bgt _0806BA7C asrs r3, r7, 16 lsls r0, r1, 5 mov r5, r8 adds r1, r5, r0 ldr r6, _0806BA90 @ =gBGTilemapBuffers + 0x1000 movs r5, 0 _0806BA5E: adds r0, r3, r2 cmp r0, 0 blt _0806BA6C adds r0, r1, r0 lsls r0, 1 adds r0, r6 strh r5, [r0] _0806BA6C: adds r0, r2, 0x1 lsls r0, 24 lsrs r2, r0, 24 cmp r2, 0xA bhi _0806BA7C adds r0, r3, r2 cmp r0, 0x1F ble _0806BA5E _0806BA7C: lsls r0, r4, 24 lsrs r1, r0, 24 cmp r1, 0x6 bls _0806BA48 pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0806BA90: .4byte gBGTilemapBuffers + 0x1000 thumb_func_end sub_806BA34 thumb_func_start sub_806BA94 sub_806BA94: @ 806BA94 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x8 lsls r0, 16 lsrs r4, r0, 16 lsls r1, 16 lsrs r0, r1, 16 lsls r2, 24 lsls r3, 24 lsrs r3, 24 str r3, [sp] ldr r1, _0806BB30 @ =gUnknown_08376A5E mov r9, r1 cmp r2, 0 bne _0806BABC ldr r1, _0806BB34 @ =gUnknown_08376A25 mov r9, r1 _0806BABC: lsls r0, 21 lsrs r0, 16 str r0, [sp, 0x4] movs r1, 0 lsls r4, 16 mov r12, r4 asrs r4, 16 mov r10, r4 _0806BACC: movs r2, 0 adds r7, r1, 0x1 mov r0, r10 cmp r0, 0x1F bgt _0806BB16 mov r4, r12 asrs r3, r4, 16 lsls r0, r1, 5 ldr r4, [sp, 0x4] adds r6, r4, r0 ldr r0, _0806BB38 @ =gBGTilemapBuffers + 0x1000 mov r8, r0 ldr r4, [sp] lsls r5, r4, 12 lsls r0, r1, 2 adds r0, r1 lsls r0, 2 subs r4, r0, r1 _0806BAF0: adds r0, r3, r2 cmp r0, 0 blt _0806BB06 adds r0, r6, r0 lsls r0, 1 add r0, r8 adds r1, r4, r2 add r1, r9 ldrb r1, [r1] orrs r1, r5 strh r1, [r0] _0806BB06: adds r0, r2, 0x1 lsls r0, 24 lsrs r2, r0, 24 cmp r2, 0x12 bhi _0806BB16 adds r0, r3, r2 cmp r0, 0x1F ble _0806BAF0 _0806BB16: lsls r0, r7, 24 lsrs r1, r0, 24 cmp r1, 0x2 bls _0806BACC add sp, 0x8 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0806BB30: .4byte gUnknown_08376A5E _0806BB34: .4byte gUnknown_08376A25 _0806BB38: .4byte gBGTilemapBuffers + 0x1000 thumb_func_end sub_806BA94 thumb_func_start sub_806BB3C sub_806BB3C: @ 806BB3C push {r4-r7,lr} mov r7, r8 push {r7} lsls r1, 21 lsrs r1, 16 mov r8, r1 movs r1, 0 lsls r7, r0, 16 asrs r0, r7, 16 mov r12, r0 _0806BB50: movs r2, 0 adds r4, r1, 0x1 mov r5, r12 cmp r5, 0x1F bgt _0806BB84 asrs r3, r7, 16 lsls r0, r1, 5 mov r5, r8 adds r1, r5, r0 ldr r6, _0806BB98 @ =gBGTilemapBuffers + 0x1000 movs r5, 0 _0806BB66: adds r0, r3, r2 cmp r0, 0 blt _0806BB74 adds r0, r1, r0 lsls r0, 1 adds r0, r6 strh r5, [r0] _0806BB74: adds r0, r2, 0x1 lsls r0, 24 lsrs r2, r0, 24 cmp r2, 0x12 bhi _0806BB84 adds r0, r3, r2 cmp r0, 0x1F ble _0806BB66 _0806BB84: lsls r0, r4, 24 lsrs r1, r0, 24 cmp r1, 0x2 bls _0806BB50 pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0806BB98: .4byte gBGTilemapBuffers + 0x1000 thumb_func_end sub_806BB3C thumb_func_start sub_806BB9C sub_806BB9C: @ 806BB9C push {r4,lr} sub sp, 0x18 adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 ldr r1, _0806BBE4 @ =gUnknown_08376CD4 mov r0, sp movs r2, 0x18 bl memcpy ldr r3, _0806BBE8 @ =0x06003c30 movs r2, 0 lsls r4, 12 _0806BBB6: lsls r0, r2, 1 adds r1, r0, r3 add r0, sp ldrh r0, [r0] adds r0, r4 strh r0, [r1] adds r1, 0x40 adds r0, r2, 0x6 lsls r0, 1 add r0, sp ldrh r0, [r0] adds r0, r4 strh r0, [r1] adds r0, r2, 0x1 lsls r0, 24 lsrs r2, r0, 24 cmp r2, 0x5 bls _0806BBB6 add sp, 0x18 pop {r4} pop {r0} bx r0 .align 2, 0 _0806BBE4: .4byte gUnknown_08376CD4 _0806BBE8: .4byte 0x06003c30 thumb_func_end sub_806BB9C thumb_func_start sub_806BBEC sub_806BBEC: @ 806BBEC push {r4,lr} sub sp, 0x18 adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 ldr r1, _0806BC34 @ =gUnknown_08376CEC mov r0, sp movs r2, 0x18 bl memcpy ldr r3, _0806BC38 @ =0x06003cb0 movs r2, 0 lsls r4, 12 _0806BC06: lsls r0, r2, 1 adds r1, r0, r3 add r0, sp ldrh r0, [r0] adds r0, r4 strh r0, [r1] adds r1, 0x40 adds r0, r2, 0x6 lsls r0, 1 add r0, sp ldrh r0, [r0] adds r0, r4 strh r0, [r1] adds r0, r2, 0x1 lsls r0, 24 lsrs r2, r0, 24 cmp r2, 0x5 bls _0806BC06 add sp, 0x18 pop {r4} pop {r0} bx r0 .align 2, 0 _0806BC34: .4byte gUnknown_08376CEC _0806BC38: .4byte 0x06003cb0 thumb_func_end sub_806BBEC thumb_func_start sub_806BC3C sub_806BC3C: @ 806BC3C push {r4-r7,lr} mov r7, r8 push {r7} adds r4, r0, 0 adds r5, r1, 0 lsls r4, 24 lsrs r4, 24 lsls r5, 24 lsrs r5, 24 ldr r6, _0806BCB0 @ =gUnknown_08376918 bl IsDoubleBattle lsls r4, 2 lsls r0, 24 lsrs r0, 24 lsls r1, r0, 1 adds r1, r0 lsls r1, 3 adds r4, r1 adds r4, r6 ldr r7, [r4] movs r6, 0 adds r0, r5, 0 movs r1, 0x7 bl __udivsi3 lsls r0, 24 lsrs r4, r0, 19 ldr r5, _0806BCB4 @ =gUnknown_08E9A300 movs r0, 0x86 lsls r0, 1 adds r3, r0, 0 _0806BC7C: adds r1, r6, r4 lsls r2, r6, 1 adds r2, r7 lsls r0, r1, 1 adds r0, r5 ldrh r0, [r0] adds r0, r3, r0 strh r0, [r2] adds r2, 0x40 adds r1, 0x20 lsls r1, 1 adds r1, r5 ldrh r1, [r1] adds r0, r3, r1 strh r0, [r2] adds r0, r6, 0x1 lsls r0, 24 lsrs r6, r0, 24 cmp r6, 0x6 bls _0806BC7C pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0806BCB0: .4byte gUnknown_08376918 _0806BCB4: .4byte gUnknown_08E9A300 thumb_func_end sub_806BC3C thumb_func_start unref_sub_806BCB8 unref_sub_806BCB8: @ 806BCB8 push {r4-r6,lr} lsls r0, 24 lsrs r5, r0, 24 movs r4, 0 ldr r0, _0806BCE4 @ =gPlayerPartyCount ldrb r1, [r0] cmp r4, r1 bcs _0806BCDE adds r6, r0, 0 _0806BCCA: adds r0, r4, 0 adds r1, r5, 0 bl sub_806BC3C adds r0, r4, 0x1 lsls r0, 24 lsrs r4, r0, 24 ldrb r0, [r6] cmp r4, r0 bcc _0806BCCA _0806BCDE: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0806BCE4: .4byte gPlayerPartyCount thumb_func_end unref_sub_806BCB8 thumb_func_start sub_806BCE8 sub_806BCE8: @ 806BCE8 push {r4,r5,lr} movs r5, 0 b _0806BD46 _0806BCEE: movs r0, 0x64 adds r1, r5, 0 muls r1, r0 ldr r0, _0806BD20 @ =gPlayerParty adds r4, r1, r0 adds r0, r4, 0 movs r1, 0x2D bl GetMonData cmp r0, 0 bne _0806BD38 adds r0, r4, 0 bl GetMonGender lsls r0, 24 lsrs r0, 24 cmp r0, 0 beq _0806BD24 cmp r0, 0xFE beq _0806BD2E adds r0, r5, 0 movs r1, 0x46 bl sub_806BC3C b _0806BD40 .align 2, 0 _0806BD20: .4byte gPlayerParty _0806BD24: adds r0, r5, 0 movs r1, 0x54 bl sub_806BC3C b _0806BD40 _0806BD2E: adds r0, r5, 0 movs r1, 0x62 bl sub_806BC3C b _0806BD40 _0806BD38: adds r0, r5, 0 movs r1, 0x46 bl sub_806BC3C _0806BD40: adds r0, r5, 0x1 lsls r0, 24 lsrs r5, r0, 24 _0806BD46: ldr r0, _0806BD54 @ =gPlayerPartyCount ldrb r0, [r0] cmp r5, r0 bcc _0806BCEE pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0806BD54: .4byte gPlayerPartyCount thumb_func_end sub_806BCE8 thumb_func_start sub_806BD58 sub_806BD58: @ 806BD58 push {r4,lr} adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 ldr r0, _0806BD7C @ =SpriteCallbackDummy bl CreateInvisibleSpriteWithCallback adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 adds r0, r4, 0 bl sub_806CA18 movs r0, 0x1 pop {r4} pop {r1} bx r1 .align 2, 0 _0806BD7C: .4byte SpriteCallbackDummy thumb_func_end sub_806BD58 thumb_func_start sub_806BD80 sub_806BD80: @ 806BD80 push {r4,r5,lr} lsls r0, 24 lsrs r5, r0, 24 movs r4, 0 ldr r0, _0806BD9C @ =gMain ldrh r0, [r0, 0x30] cmp r0, 0x20 beq _0806BDB2 cmp r0, 0x20 bgt _0806BDA0 cmp r0, 0x10 beq _0806BDB6 b _0806BDB8 .align 2, 0 _0806BD9C: .4byte gMain _0806BDA0: cmp r0, 0x40 beq _0806BDAA cmp r0, 0x80 beq _0806BDAE b _0806BDB8 _0806BDAA: movs r4, 0xFF b _0806BDB8 _0806BDAE: movs r4, 0x1 b _0806BDB8 _0806BDB2: movs r4, 0xFE b _0806BDB8 _0806BDB6: movs r4, 0x2 _0806BDB8: lsls r0, r4, 24 cmp r0, 0 bne _0806BDDC bl sub_80F92BC lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 beq _0806BDD0 cmp r0, 0x2 beq _0806BDD4 b _0806BDD6 _0806BDD0: movs r4, 0xFF b _0806BDD6 _0806BDD4: movs r4, 0x1 _0806BDD6: lsls r0, r4, 24 cmp r0, 0 beq _0806BDF0 _0806BDDC: asrs r1, r0, 24 adds r0, r5, 0 bl sub_806BF74 ldr r0, _0806BDEC @ =gMain ldrh r0, [r0, 0x30] b _0806BE2C .align 2, 0 _0806BDEC: .4byte gMain _0806BDF0: ldr r0, _0806BE1C @ =gMain ldrh r1, [r0, 0x2E] movs r0, 0x1 ands r0, r1 cmp r0, 0 beq _0806BE24 ldr r4, _0806BE20 @ =gSprites adds r0, r5, 0 bl sub_806CA00 lsls r0, 24 lsrs r0, 24 lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r1, r4 movs r2, 0x2E ldrsh r0, [r1, r2] cmp r0, 0x7 bne _0806BE24 movs r0, 0x2 b _0806BE2C .align 2, 0 _0806BE1C: .4byte gMain _0806BE20: .4byte gSprites _0806BE24: ldr r0, _0806BE34 @ =gMain ldrh r1, [r0, 0x2E] movs r0, 0x3 ands r0, r1 _0806BE2C: pop {r4,r5} pop {r1} bx r1 .align 2, 0 _0806BE34: .4byte gMain thumb_func_end sub_806BD80 thumb_func_start sub_806BE38 sub_806BE38: @ 806BE38 push {r4-r6,lr} lsls r0, 24 lsrs r5, r0, 24 movs r4, 0 ldr r0, _0806BE54 @ =gMain ldrh r1, [r0, 0x30] adds r6, r0, 0 cmp r1, 0x20 beq _0806BE6A cmp r1, 0x20 bgt _0806BE58 cmp r1, 0x10 beq _0806BE6E b _0806BE70 .align 2, 0 _0806BE54: .4byte gMain _0806BE58: cmp r1, 0x40 beq _0806BE62 cmp r1, 0x80 beq _0806BE66 b _0806BE70 _0806BE62: movs r4, 0xFF b _0806BE8E _0806BE66: movs r4, 0x1 b _0806BE8E _0806BE6A: movs r4, 0xFE b _0806BE8E _0806BE6E: movs r4, 0x2 _0806BE70: cmp r4, 0 bne _0806BE8E bl sub_80F92BC lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 beq _0806BE86 cmp r0, 0x2 beq _0806BE8A b _0806BE8C _0806BE86: movs r4, 0xFF b _0806BE8C _0806BE8A: movs r4, 0x1 _0806BE8C: ldr r6, _0806BEA4 @ =gMain _0806BE8E: ldrh r2, [r6, 0x2E] movs r0, 0x8 ands r0, r2 cmp r0, 0 beq _0806BEA8 adds r0, r5, 0 bl sub_806C890 movs r0, 0x8 b _0806BEF0 .align 2, 0 _0806BEA4: .4byte gMain _0806BEA8: lsls r0, r4, 24 asrs r1, r0, 24 cmp r1, 0 beq _0806BEBA adds r0, r5, 0 bl sub_806C658 ldrh r0, [r6, 0x30] b _0806BEF0 _0806BEBA: movs r0, 0x1 ands r0, r2 cmp r0, 0 beq _0806BEE8 ldr r4, _0806BEE4 @ =gSprites adds r0, r5, 0 bl sub_806CA00 lsls r0, 24 lsrs r0, 24 lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r1, r4 movs r2, 0x2E ldrsh r0, [r1, r2] cmp r0, 0x7 bne _0806BEE8 movs r0, 0x2 b _0806BEF0 .align 2, 0 _0806BEE4: .4byte gSprites _0806BEE8: ldr r0, _0806BEF8 @ =gMain ldrh r1, [r0, 0x2E] movs r0, 0x3 ands r0, r1 _0806BEF0: pop {r4-r6} pop {r1} bx r1 .align 2, 0 _0806BEF8: .4byte gMain thumb_func_end sub_806BE38 thumb_func_start task_pc_turn_off task_pc_turn_off: @ 806BEFC push {lr} adds r2, r0, 0 lsls r1, 24 lsrs r3, r1, 24 ldrb r0, [r2] cmp r0, 0 beq _0806BF14 ldrb r1, [r2, 0x1] movs r2, 0 bl sub_806BA94 b _0806BF1E _0806BF14: ldrb r0, [r2] ldrb r1, [r2, 0x1] adds r2, r3, 0 bl sub_806B9A4 _0806BF1E: pop {r0} bx r0 thumb_func_end task_pc_turn_off thumb_func_start sub_806BF24 sub_806BF24: @ 806BF24 push {r4-r7,lr} adds r7, r0, 0 lsls r1, 24 lsrs r1, 24 lsls r2, 24 lsrs r4, r2, 24 lsls r3, 24 lsrs r6, r3, 24 movs r0, 0x64 muls r1, r0 ldr r0, _0806BF70 @ =gPlayerParty adds r5, r1, r0 adds r0, r5, 0 movs r1, 0xB bl GetMonData cmp r0, 0 beq _0806BF56 adds r0, r5, 0 movs r1, 0x39 bl GetMonData cmp r0, 0 bne _0806BF56 movs r4, 0x5 _0806BF56: cmp r6, 0x1 bne _0806BF60 adds r0, r4, 0x4 lsls r0, 24 lsrs r4, r0, 24 _0806BF60: adds r0, r7, 0 adds r1, r4, 0 bl task_pc_turn_off pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0806BF70: .4byte gPlayerParty thumb_func_end sub_806BF24 thumb_func_start sub_806BF74 sub_806BF74: @ 806BF74 push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} lsls r0, 24 lsrs r0, 24 mov r9, r0 lsls r1, 24 lsrs r4, r1, 24 bl sub_806CA00 lsls r0, 24 lsrs r6, r0, 24 ldr r1, _0806C0C4 @ =gSprites lsls r0, r6, 4 adds r0, r6 lsls r0, 2 adds r0, r1 ldrh r0, [r0, 0x2E] lsls r0, 24 lsrs r5, r0, 24 mov r0, r9 adds r1, r5, 0 movs r2, 0 bl UpdateMonIconFrame_806DA44 bl IsLinkDoubleBattle lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 beq _0806BFB6 b _0806C0D8 _0806BFB6: cmp r5, 0 beq _0806BFC2 cmp r5, 0x2 beq _0806BFC2 cmp r5, 0x3 bne _0806BFD2 _0806BFC2: lsls r0, r5, 1 ldr r1, _0806C0C8 @ =gUnknown_083769C0 adds r0, r1 adds r1, r5, 0 movs r2, 0x3 movs r3, 0 bl sub_806BF24 _0806BFD2: cmp r5, 0x1 beq _0806BFDE cmp r5, 0x4 beq _0806BFDE cmp r5, 0x5 bne _0806BFEE _0806BFDE: lsls r0, r5, 1 ldr r1, _0806C0C8 @ =gUnknown_083769C0 adds r0, r1 adds r1, r5, 0 movs r2, 0x4 movs r3, 0 bl sub_806BF24 _0806BFEE: cmp r5, 0x7 bne _0806BFF8 movs r0, 0x1 bl sub_806BBEC _0806BFF8: lsls r2, r4, 24 asrs r2, 24 adds r0, r6, 0 adds r1, r5, 0 bl sub_806C490 ldr r2, _0806C0C4 @ =gSprites lsls r1, r6, 4 adds r0, r1, r6 lsls r0, 2 adds r0, r2 movs r2, 0x2E ldrsh r0, [r0, r2] mov r8, r1 cmp r0, 0 beq _0806C020 cmp r0, 0x2 beq _0806C020 cmp r0, 0x3 bne _0806C042 _0806C020: ldr r0, _0806C0C4 @ =gSprites mov r4, r8 adds r1, r4, r6 lsls r1, 2 adds r1, r0 movs r7, 0x2E ldrsh r0, [r1, r7] lsls r0, 1 ldr r2, _0806C0C8 @ =gUnknown_083769C0 adds r0, r2 ldrh r1, [r1, 0x2E] lsls r1, 24 lsrs r1, 24 movs r2, 0x3 movs r3, 0x1 bl sub_806BF24 _0806C042: ldr r1, _0806C0C4 @ =gSprites mov r2, r8 adds r0, r2, r6 lsls r0, 2 adds r0, r1 movs r4, 0x2E ldrsh r0, [r0, r4] cmp r0, 0x1 beq _0806C05C cmp r0, 0x4 beq _0806C05C cmp r0, 0x5 bne _0806C07E _0806C05C: ldr r0, _0806C0C4 @ =gSprites mov r7, r8 adds r1, r7, r6 lsls r1, 2 adds r1, r0 movs r2, 0x2E ldrsh r0, [r1, r2] lsls r0, 1 ldr r2, _0806C0C8 @ =gUnknown_083769C0 adds r0, r2 ldrh r1, [r1, 0x2E] lsls r1, 24 lsrs r1, 24 movs r2, 0x4 movs r3, 0x1 bl sub_806BF24 _0806C07E: ldr r7, _0806C0C4 @ =gSprites mov r4, r8 adds r0, r4, r6 lsls r0, 2 adds r4, r0, r7 movs r1, 0x2E ldrsh r0, [r4, r1] cmp r0, 0x7 bne _0806C096 movs r0, 0x2 bl sub_806BBEC _0806C096: ldr r0, _0806C0CC @ =0x0201b000 ldr r2, _0806C0D0 @ =0x00000261 adds r0, r2 movs r1, 0x2 strb r1, [r0] ldr r1, _0806C0D4 @ =gUnknown_083768B8 movs r2, 0x2E ldrsh r0, [r4, r2] lsls r0, 2 adds r0, r1 adds r0, 0x40 ldrb r0, [r0] strh r0, [r4, 0x20] movs r2, 0x2E ldrsh r0, [r4, r2] lsls r0, 2 adds r0, r1 adds r0, 0x41 ldrb r0, [r0] strh r0, [r4, 0x22] adds r0, r7, 0 b _0806C1A4 .align 2, 0 _0806C0C4: .4byte gSprites _0806C0C8: .4byte gUnknown_083769C0 _0806C0CC: .4byte 0x0201b000 _0806C0D0: .4byte 0x00000261 _0806C0D4: .4byte gUnknown_083768B8 _0806C0D8: bl IsDoubleBattle lsls r0, 24 lsrs r7, r0, 24 cmp r5, 0x5 bhi _0806C104 lsls r0, r7, 1 adds r0, r7 lsls r0, 2 lsls r1, r5, 1 adds r0, r1 ldr r1, _0806C100 @ =gUnknown_083769A8 adds r0, r1 adds r1, r5, 0 movs r2, 0x3 movs r3, 0 bl sub_806BF24 b _0806C10A .align 2, 0 _0806C100: .4byte gUnknown_083769A8 _0806C104: movs r0, 0x1 bl sub_806BBEC _0806C10A: cmp r7, 0 bne _0806C11C lsls r2, r4, 24 asrs r2, 24 adds r0, r6, 0 adds r1, r5, 0 bl sub_806C1E4 b _0806C128 _0806C11C: lsls r2, r4, 24 asrs r2, 24 adds r0, r6, 0 adds r1, r5, 0 bl sub_806C310 _0806C128: ldr r1, _0806C160 @ =gSprites lsls r2, r6, 4 adds r0, r2, r6 lsls r0, 2 adds r1, r0, r1 ldrh r3, [r1, 0x2E] movs r4, 0x2E ldrsh r0, [r1, r4] mov r8, r2 cmp r0, 0x5 bgt _0806C168 lsls r0, r7, 1 adds r0, r7 lsls r0, 2 movs r2, 0x2E ldrsh r1, [r1, r2] lsls r1, 1 adds r0, r1 ldr r1, _0806C164 @ =gUnknown_083769A8 adds r0, r1 lsls r1, r3, 24 lsrs r1, 24 movs r2, 0x3 movs r3, 0x1 bl sub_806BF24 b _0806C16E .align 2, 0 _0806C160: .4byte gSprites _0806C164: .4byte gUnknown_083769A8 _0806C168: movs r0, 0x2 bl sub_806BBEC _0806C16E: ldr r0, _0806C1D4 @ =0x0201b000 ldr r4, _0806C1D8 @ =0x00000261 adds r0, r4 movs r1, 0x2 strb r1, [r0] ldr r4, _0806C1DC @ =gSprites mov r0, r8 adds r1, r0, r6 lsls r1, 2 adds r1, r4 ldr r3, _0806C1E0 @ =gUnknown_083768B8 movs r2, 0x2E ldrsh r0, [r1, r2] lsls r0, 2 lsls r2, r7, 5 adds r0, r2 adds r0, r3 ldrb r0, [r0] strh r0, [r1, 0x20] movs r7, 0x2E ldrsh r0, [r1, r7] lsls r0, 2 adds r0, r2 adds r0, r3 ldrb r0, [r0, 0x1] strh r0, [r1, 0x22] adds r0, r4, 0 _0806C1A4: mov r1, r8 adds r4, r1, r6 lsls r4, 2 adds r4, r0 ldrh r1, [r4, 0x2E] lsls r1, 24 lsrs r1, 24 mov r0, r9 movs r2, 0x1 bl UpdateMonIconFrame_806DA44 movs r2, 0x2E ldrsh r0, [r4, r2] cmp r5, r0 beq _0806C1C8 movs r0, 0x5 bl PlaySE _0806C1C8: pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0806C1D4: .4byte 0x0201b000 _0806C1D8: .4byte 0x00000261 _0806C1DC: .4byte gSprites _0806C1E0: .4byte gUnknown_083768B8 thumb_func_end sub_806BF74 thumb_func_start sub_806C1E4 sub_806C1E4: @ 806C1E4 push {r4,r5,lr} lsls r0, 24 lsrs r4, r0, 24 lsls r1, 24 lsrs r3, r1, 24 lsls r2, 24 lsrs r5, r2, 24 movs r0, 0x80 lsls r0, 18 adds r2, r0 asrs r0, r2, 24 cmp r0, 0x4 bls _0806C200 b _0806C306 _0806C200: lsls r0, 2 ldr r1, _0806C20C @ =_0806C210 adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _0806C20C: .4byte _0806C210 .align 2, 0 _0806C210: .4byte _0806C2EC .4byte _0806C238 .4byte _0806C224 .4byte _0806C25C .4byte _0806C2BC _0806C224: ldr r0, _0806C234 @ =gSprites lsls r1, r4, 4 adds r1, r4 lsls r1, 2 adds r1, r0 movs r0, 0 strh r0, [r1, 0x30] b _0806C306 .align 2, 0 _0806C234: .4byte gSprites _0806C238: cmp r3, 0 beq _0806C266 cmp r3, 0x7 bne _0806C298 ldr r2, _0806C254 @ =gSprites lsls r3, r4, 4 adds r1, r3, r4 lsls r1, 2 adds r1, r2 ldr r0, _0806C258 @ =gPlayerPartyCount ldrb r0, [r0] subs r0, 0x1 b _0806C2AA .align 2, 0 _0806C254: .4byte gSprites _0806C258: .4byte gPlayerPartyCount _0806C25C: ldr r0, _0806C278 @ =gPlayerPartyCount ldrb r0, [r0] subs r0, 0x1 cmp r3, r0 bne _0806C280 _0806C266: ldr r2, _0806C27C @ =gSprites lsls r3, r4, 4 adds r0, r3, r4 lsls r0, 2 adds r0, r2 movs r1, 0x7 strh r1, [r0, 0x2E] b _0806C2AC .align 2, 0 _0806C278: .4byte gPlayerPartyCount _0806C27C: .4byte gSprites _0806C280: cmp r3, 0x7 bne _0806C298 ldr r2, _0806C294 @ =gSprites lsls r3, r4, 4 adds r0, r3, r4 lsls r0, 2 adds r0, r2 movs r1, 0 strh r1, [r0, 0x2E] b _0806C2AC .align 2, 0 _0806C294: .4byte gSprites _0806C298: ldr r2, _0806C2B8 @ =gSprites lsls r3, r4, 4 adds r1, r3, r4 lsls r1, 2 adds r1, r2 lsls r0, r5, 24 asrs r0, 24 ldrh r5, [r1, 0x2E] adds r0, r5 _0806C2AA: strh r0, [r1, 0x2E] _0806C2AC: adds r0, r3, r4 lsls r0, 2 adds r0, r2 movs r1, 0 strh r1, [r0, 0x30] b _0806C306 .align 2, 0 _0806C2B8: .4byte gSprites _0806C2BC: ldr r0, _0806C2E4 @ =gPlayerPartyCount ldrb r0, [r0] cmp r0, 0x1 bls _0806C306 cmp r3, 0 bne _0806C306 ldr r0, _0806C2E8 @ =gSprites lsls r1, r4, 4 adds r1, r4 lsls r1, 2 adds r1, r0 movs r2, 0x30 ldrsh r0, [r1, r2] cmp r0, 0 bne _0806C2DE movs r0, 0x1 strh r0, [r1, 0x30] _0806C2DE: ldrh r0, [r1, 0x30] strh r0, [r1, 0x2E] b _0806C306 .align 2, 0 _0806C2E4: .4byte gPlayerPartyCount _0806C2E8: .4byte gSprites _0806C2EC: subs r0, r3, 0x1 lsls r0, 24 lsrs r0, 24 cmp r0, 0x4 bhi _0806C306 ldr r0, _0806C30C @ =gSprites lsls r1, r4, 4 adds r1, r4 lsls r1, 2 adds r1, r0 movs r0, 0 strh r0, [r1, 0x2E] strh r3, [r1, 0x30] _0806C306: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0806C30C: .4byte gSprites thumb_func_end sub_806C1E4 thumb_func_start sub_806C310 sub_806C310: @ 806C310 push {r4,r5,lr} lsls r0, 24 lsrs r4, r0, 24 lsls r1, 24 lsrs r3, r1, 24 lsls r2, 24 lsrs r5, r2, 24 movs r0, 0x80 lsls r0, 18 adds r2, r0 asrs r0, r2, 24 cmp r0, 0x4 bls _0806C32C b _0806C486 _0806C32C: lsls r0, 2 ldr r1, _0806C338 @ =_0806C33C adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _0806C338: .4byte _0806C33C .align 2, 0 _0806C33C: .4byte _0806C44E .4byte _0806C38C .4byte _0806C350 .4byte _0806C364 .4byte _0806C3E8 _0806C350: ldr r0, _0806C360 @ =gSprites lsls r1, r4, 4 adds r1, r4 lsls r1, 2 adds r1, r0 movs r0, 0 strh r0, [r1, 0x30] b _0806C486 .align 2, 0 _0806C360: .4byte gSprites _0806C364: cmp r3, 0x7 bne _0806C37C ldr r2, _0806C378 @ =gSprites lsls r3, r4, 4 adds r0, r3, r4 lsls r0, 2 adds r0, r2 movs r1, 0 strh r1, [r0, 0x2E] b _0806C3D8 .align 2, 0 _0806C378: .4byte gSprites _0806C37C: ldr r0, _0806C388 @ =gPlayerPartyCount ldrb r0, [r0] subs r0, 0x1 cmp r3, r0 beq _0806C390 b _0806C3C4 .align 2, 0 _0806C388: .4byte gPlayerPartyCount _0806C38C: cmp r3, 0 bne _0806C3A4 _0806C390: ldr r2, _0806C3A0 @ =gSprites lsls r3, r4, 4 adds r0, r3, r4 lsls r0, 2 adds r0, r2 movs r1, 0x7 strh r1, [r0, 0x2E] b _0806C3D8 .align 2, 0 _0806C3A0: .4byte gSprites _0806C3A4: cmp r3, 0x7 bne _0806C3C4 ldr r2, _0806C3BC @ =gSprites lsls r3, r4, 4 adds r1, r3, r4 lsls r1, 2 adds r1, r2 ldr r0, _0806C3C0 @ =gPlayerPartyCount ldrb r0, [r0] subs r0, 0x1 b _0806C3D6 .align 2, 0 _0806C3BC: .4byte gSprites _0806C3C0: .4byte gPlayerPartyCount _0806C3C4: ldr r2, _0806C3E4 @ =gSprites lsls r3, r4, 4 adds r1, r3, r4 lsls r1, 2 adds r1, r2 lsls r0, r5, 24 asrs r0, 24 ldrh r5, [r1, 0x2E] adds r0, r5 _0806C3D6: strh r0, [r1, 0x2E] _0806C3D8: adds r0, r3, r4 lsls r0, 2 adds r0, r2 movs r1, 0 strh r1, [r0, 0x30] b _0806C486 .align 2, 0 _0806C3E4: .4byte gSprites _0806C3E8: cmp r3, 0 bne _0806C418 ldr r0, _0806C410 @ =gPlayerPartyCount ldrb r0, [r0] cmp r0, 0x2 bls _0806C486 ldr r0, _0806C414 @ =gSprites lsls r1, r4, 4 adds r1, r4 lsls r1, 2 adds r1, r0 ldrh r2, [r1, 0x30] subs r0, r2, 0x2 lsls r0, 16 lsrs r0, 16 cmp r0, 0x1 bls _0806C43A movs r0, 0x2 strh r0, [r1, 0x2E] b _0806C486 .align 2, 0 _0806C410: .4byte gPlayerPartyCount _0806C414: .4byte gSprites _0806C418: cmp r3, 0x1 bne _0806C486 ldr r0, _0806C440 @ =gPlayerPartyCount ldrb r0, [r0] cmp r0, 0x4 bls _0806C486 ldr r0, _0806C444 @ =gSprites lsls r1, r4, 4 adds r1, r4 lsls r1, 2 adds r1, r0 ldrh r2, [r1, 0x30] subs r0, r2, 0x4 lsls r0, 16 lsrs r0, 16 cmp r0, 0x1 bhi _0806C448 _0806C43A: strh r2, [r1, 0x2E] b _0806C486 .align 2, 0 _0806C440: .4byte gPlayerPartyCount _0806C444: .4byte gSprites _0806C448: movs r0, 0x4 strh r0, [r1, 0x2E] b _0806C486 _0806C44E: subs r0, r3, 0x2 lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bhi _0806C46C ldr r0, _0806C468 @ =gSprites lsls r1, r4, 4 adds r1, r4 lsls r1, 2 adds r1, r0 movs r0, 0 b _0806C482 .align 2, 0 _0806C468: .4byte gSprites _0806C46C: subs r0, r3, 0x4 lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bhi _0806C486 ldr r0, _0806C48C @ =gSprites lsls r1, r4, 4 adds r1, r4 lsls r1, 2 adds r1, r0 movs r0, 0x1 _0806C482: strh r0, [r1, 0x2E] strh r3, [r1, 0x30] _0806C486: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0806C48C: .4byte gSprites thumb_func_end sub_806C310 thumb_func_start sub_806C490 sub_806C490: @ 806C490 push {r4-r6,lr} lsls r0, 24 lsrs r5, r0, 24 lsls r1, 24 lsrs r4, r1, 24 lsls r2, 24 movs r0, 0x80 lsls r0, 18 adds r2, r0 asrs r0, r2, 24 cmp r0, 0x4 bls _0806C4AA b _0806C64E _0806C4AA: lsls r0, 2 ldr r1, _0806C4B4 @ =_0806C4B8 adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _0806C4B4: .4byte _0806C4B8 .align 2, 0 _0806C4B8: .4byte _0806C618 .4byte _0806C524 .4byte _0806C4CC .4byte _0806C4E0 .4byte _0806C57C _0806C4CC: ldr r0, _0806C4DC @ =gSprites lsls r1, r5, 4 adds r1, r5 lsls r1, 2 adds r1, r0 movs r0, 0 strh r0, [r1, 0x30] b _0806C64E .align 2, 0 _0806C4DC: .4byte gSprites _0806C4E0: cmp r4, 0x7 bne _0806C4FC ldr r2, _0806C4F8 @ =gSprites lsls r3, r5, 4 adds r0, r3, r5 lsls r0, 2 adds r0, r2 movs r1, 0 strh r1, [r0, 0x2E] adds r1, r2, 0 adds r6, r3, 0 b _0806C566 .align 2, 0 _0806C4F8: .4byte gSprites _0806C4FC: lsls r6, r5, 4 b _0806C518 _0806C500: adds r0, r4, 0x1 lsls r0, 24 lsrs r4, r0, 24 movs r0, 0x64 muls r0, r4 ldr r1, _0806C520 @ =gPlayerParty adds r0, r1 movs r1, 0xB bl GetMonData cmp r0, 0 bne _0806C528 _0806C518: cmp r4, 0x5 bne _0806C500 b _0806C558 .align 2, 0 _0806C520: .4byte gPlayerParty _0806C524: lsls r6, r5, 4 b _0806C554 _0806C528: ldr r1, _0806C534 @ =gSprites adds r0, r6, r5 lsls r0, 2 adds r0, r1 strh r4, [r0, 0x2E] b _0806C566 .align 2, 0 _0806C534: .4byte gSprites _0806C538: subs r0, r4, 0x1 lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0x6 beq _0806C554 movs r0, 0x64 muls r0, r4 ldr r1, _0806C574 @ =gPlayerParty adds r0, r1 movs r1, 0xB bl GetMonData cmp r0, 0 bne _0806C528 _0806C554: cmp r4, 0 bne _0806C538 _0806C558: ldr r0, _0806C578 @ =gSprites adds r1, r6, r5 lsls r1, 2 adds r1, r0 movs r2, 0x7 strh r2, [r1, 0x2E] adds r1, r0, 0 _0806C566: adds r0, r6, r5 lsls r0, 2 adds r0, r1 movs r1, 0 strh r1, [r0, 0x30] b _0806C64E .align 2, 0 _0806C574: .4byte gPlayerParty _0806C578: .4byte gSprites _0806C57C: cmp r4, 0 bne _0806C5C8 ldr r0, _0806C5AC @ =gSprites lsls r1, r5, 4 adds r1, r5 lsls r1, 2 adds r4, r1, r0 ldrh r1, [r4, 0x30] subs r0, r1, 0x2 lsls r0, 16 lsrs r0, 16 cmp r0, 0x1 bls _0806C5E2 ldr r5, _0806C5B0 @ =gPlayerParty + 2 * 0x64 adds r0, r5, 0 movs r1, 0xB bl GetMonData cmp r0, 0 beq _0806C5B4 movs r0, 0x2 strh r0, [r4, 0x2E] b _0806C64E .align 2, 0 _0806C5AC: .4byte gSprites _0806C5B0: .4byte gPlayerParty + 2 * 0x64 _0806C5B4: adds r0, r5, 0 adds r0, 0x64 movs r1, 0xB bl GetMonData cmp r0, 0 beq _0806C64E movs r0, 0x3 strh r0, [r4, 0x2E] b _0806C64E _0806C5C8: cmp r4, 0x1 bne _0806C64E ldr r0, _0806C5E8 @ =gSprites lsls r1, r5, 4 adds r1, r5 lsls r1, 2 adds r4, r1, r0 ldrh r1, [r4, 0x30] subs r0, r1, 0x4 lsls r0, 16 lsrs r0, 16 cmp r0, 0x1 bhi _0806C5EC _0806C5E2: strh r1, [r4, 0x2E] b _0806C64E .align 2, 0 _0806C5E8: .4byte gSprites _0806C5EC: ldr r5, _0806C600 @ =gPlayerParty + 4 * 0x64 adds r0, r5, 0 movs r1, 0xB bl GetMonData cmp r0, 0 beq _0806C604 movs r0, 0x4 strh r0, [r4, 0x2E] b _0806C64E .align 2, 0 _0806C600: .4byte gPlayerParty + 4 * 0x64 _0806C604: adds r0, r5, 0 adds r0, 0x64 movs r1, 0xB bl GetMonData cmp r0, 0 beq _0806C64E movs r0, 0x5 strh r0, [r4, 0x2E] b _0806C64E _0806C618: subs r0, r4, 0x2 lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bhi _0806C634 ldr r0, _0806C630 @ =gSprites lsls r1, r5, 4 adds r1, r5 lsls r1, 2 adds r1, r0 movs r0, 0 b _0806C64A .align 2, 0 _0806C630: .4byte gSprites _0806C634: subs r0, r4, 0x4 lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bhi _0806C64E ldr r0, _0806C654 @ =gSprites lsls r1, r5, 4 adds r1, r5 lsls r1, 2 adds r1, r0 movs r0, 0x1 _0806C64A: strh r0, [r1, 0x2E] strh r4, [r1, 0x30] _0806C64E: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0806C654: .4byte gSprites thumb_func_end sub_806C490 thumb_func_start sub_806C658 sub_806C658: @ 806C658 push {r4-r7,lr} mov r7, r8 push {r7} lsls r0, 24 lsrs r0, 24 mov r8, r0 lsls r1, 24 lsrs r4, r1, 24 bl sub_806CA00 lsls r0, 24 lsrs r5, r0, 24 ldr r1, _0806C6A0 @ =gSprites lsls r0, r5, 4 adds r0, r5 lsls r0, 2 adds r0, r1 ldrh r0, [r0, 0x2E] lsls r0, 24 lsrs r6, r0, 24 mov r0, r8 adds r1, r6, 0 movs r2, 0 bl UpdateMonIconFrame_806DA44 cmp r6, 0x5 bhi _0806C6A8 lsls r0, r6, 1 ldr r1, _0806C6A4 @ =gUnknown_083769A8 adds r0, r1 adds r1, r6, 0 movs r2, 0x3 movs r3, 0 bl sub_806BF24 b _0806C6BA .align 2, 0 _0806C6A0: .4byte gSprites _0806C6A4: .4byte gUnknown_083769A8 _0806C6A8: cmp r6, 0x6 bne _0806C6B4 movs r0, 0x1 bl sub_806BB9C b _0806C6BA _0806C6B4: movs r0, 0x1 bl sub_806BBEC _0806C6BA: lsls r1, r4, 24 movs r2, 0x80 lsls r2, 18 adds r0, r1, r2 asrs r0, 24 lsls r4, r5, 4 adds r7, r1, 0 cmp r0, 0x4 bls _0806C6CE b _0806C7EA _0806C6CE: lsls r0, 2 ldr r1, _0806C6D8 @ =_0806C6DC adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _0806C6D8: .4byte _0806C6DC .align 2, 0 _0806C6DC: .4byte _0806C7D0 .4byte _0806C708 .4byte _0806C6F0 .4byte _0806C740 .4byte _0806C7A0 _0806C6F0: ldr r1, _0806C704 @ =gSprites lsls r2, r5, 4 adds r0, r2, r5 lsls r0, 2 adds r0, r1 movs r1, 0 strh r1, [r0, 0x30] adds r4, r2, 0 b _0806C7EA .align 2, 0 _0806C704: .4byte gSprites _0806C708: cmp r6, 0 bne _0806C720 ldr r2, _0806C71C @ =gSprites lsls r3, r5, 4 adds r0, r3, r5 lsls r0, 2 adds r0, r2 movs r1, 0x7 strh r1, [r0, 0x2E] b _0806C78E .align 2, 0 _0806C71C: .4byte gSprites _0806C720: cmp r6, 0x6 bne _0806C77C ldr r2, _0806C738 @ =gSprites lsls r3, r5, 4 adds r1, r3, r5 lsls r1, 2 adds r1, r2 ldr r0, _0806C73C @ =gPlayerPartyCount ldrb r0, [r0] subs r0, 0x1 b _0806C78C .align 2, 0 _0806C738: .4byte gSprites _0806C73C: .4byte gPlayerPartyCount _0806C740: ldr r0, _0806C75C @ =gPlayerPartyCount ldrb r0, [r0] subs r0, 0x1 cmp r6, r0 bne _0806C764 ldr r2, _0806C760 @ =gSprites lsls r3, r5, 4 adds r0, r3, r5 lsls r0, 2 adds r0, r2 movs r1, 0x6 strh r1, [r0, 0x2E] b _0806C78E .align 2, 0 _0806C75C: .4byte gPlayerPartyCount _0806C760: .4byte gSprites _0806C764: cmp r6, 0x7 bne _0806C77C ldr r2, _0806C778 @ =gSprites lsls r3, r5, 4 adds r0, r3, r5 lsls r0, 2 adds r0, r2 movs r1, 0 strh r1, [r0, 0x2E] b _0806C78E .align 2, 0 _0806C778: .4byte gSprites _0806C77C: ldr r2, _0806C79C @ =gSprites lsls r3, r5, 4 adds r1, r3, r5 lsls r1, 2 adds r1, r2 asrs r0, r7, 24 ldrh r4, [r1, 0x2E] adds r0, r4 _0806C78C: strh r0, [r1, 0x2E] _0806C78E: adds r4, r3, 0 adds r0, r4, r5 lsls r0, 2 adds r0, r2 movs r1, 0 strh r1, [r0, 0x30] b _0806C7EA .align 2, 0 _0806C79C: .4byte gSprites _0806C7A0: ldr r0, _0806C7C8 @ =gPlayerPartyCount ldrb r0, [r0] lsls r4, r5, 4 cmp r0, 0x1 bls _0806C7EA cmp r6, 0 bne _0806C7EA ldr r0, _0806C7CC @ =gSprites adds r1, r4, r5 lsls r1, 2 adds r1, r0 movs r2, 0x30 ldrsh r0, [r1, r2] cmp r0, 0 bne _0806C7C2 movs r0, 0x1 strh r0, [r1, 0x30] _0806C7C2: ldrh r0, [r1, 0x30] strh r0, [r1, 0x2E] b _0806C7EA .align 2, 0 _0806C7C8: .4byte gPlayerPartyCount _0806C7CC: .4byte gSprites _0806C7D0: subs r0, r6, 0x1 lsls r0, 24 lsrs r0, 24 lsls r4, r5, 4 cmp r0, 0x4 bhi _0806C7EA ldr r0, _0806C82C @ =gSprites adds r1, r4, r5 lsls r1, 2 adds r1, r0 movs r0, 0 strh r0, [r1, 0x2E] strh r6, [r1, 0x30] _0806C7EA: ldr r1, _0806C82C @ =gSprites adds r0, r4, r5 lsls r0, 2 adds r2, r0, r1 ldr r1, _0806C830 @ =gUnknown_083768B8 movs r3, 0x2E ldrsh r0, [r2, r3] lsls r0, 2 adds r0, r1 ldrb r0, [r0] strh r0, [r2, 0x20] movs r3, 0x2E ldrsh r0, [r2, r3] lsls r0, 2 adds r0, r1 ldrb r0, [r0, 0x1] strh r0, [r2, 0x22] ldrh r3, [r2, 0x2E] movs r1, 0x2E ldrsh r0, [r2, r1] cmp r0, 0x5 bgt _0806C838 lsls r0, 1 ldr r1, _0806C834 @ =gUnknown_083769A8 adds r0, r1 lsls r1, r3, 24 lsrs r1, 24 movs r2, 0x3 movs r3, 0x1 bl sub_806BF24 b _0806C84A .align 2, 0 _0806C82C: .4byte gSprites _0806C830: .4byte gUnknown_083768B8 _0806C834: .4byte gUnknown_083769A8 _0806C838: cmp r0, 0x6 bne _0806C844 movs r0, 0x2 bl sub_806BB9C b _0806C84A _0806C844: movs r0, 0x2 bl sub_806BBEC _0806C84A: ldr r0, _0806C884 @ =0x0201b000 ldr r2, _0806C888 @ =0x00000261 adds r0, r2 movs r1, 0x2 strb r1, [r0] ldr r0, _0806C88C @ =gSprites adds r4, r5 lsls r4, 2 adds r4, r0 ldrh r1, [r4, 0x2E] lsls r1, 24 lsrs r1, 24 mov r0, r8 movs r2, 0x1 bl UpdateMonIconFrame_806DA44 movs r3, 0x2E ldrsh r0, [r4, r3] cmp r6, r0 beq _0806C878 movs r0, 0x5 bl PlaySE _0806C878: pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0806C884: .4byte 0x0201b000 _0806C888: .4byte 0x00000261 _0806C88C: .4byte gSprites thumb_func_end sub_806C658 thumb_func_start sub_806C890 sub_806C890: @ 806C890 push {r4-r6,lr} lsls r0, 24 lsrs r6, r0, 24 adds r0, r6, 0 bl sub_806CA00 lsls r0, 24 lsrs r5, r0, 24 ldr r1, _0806C8D4 @ =gSprites lsls r0, r5, 4 adds r0, r5 lsls r0, 2 adds r0, r1 ldrh r0, [r0, 0x2E] lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0x6 beq _0806C914 adds r0, r6, 0 adds r1, r4, 0 movs r2, 0 bl UpdateMonIconFrame_806DA44 cmp r4, 0x5 bhi _0806C8DC lsls r0, r4, 1 ldr r1, _0806C8D8 @ =gUnknown_083769A8 adds r0, r1 adds r1, r4, 0 movs r2, 0x3 movs r3, 0 bl sub_806BF24 b _0806C8E2 .align 2, 0 _0806C8D4: .4byte gSprites _0806C8D8: .4byte gUnknown_083769A8 _0806C8DC: movs r0, 0x1 bl sub_806BBEC _0806C8E2: ldr r1, _0806C91C @ =gSprites lsls r0, r5, 4 adds r0, r5 lsls r0, 2 adds r0, r1 movs r1, 0 strh r1, [r0, 0x30] movs r1, 0x6 strh r1, [r0, 0x2E] ldr r2, _0806C920 @ =gUnknown_083768B8 ldrb r1, [r2, 0x18] strh r1, [r0, 0x20] ldrb r1, [r2, 0x19] strh r1, [r0, 0x22] movs r0, 0x2 bl sub_806BB9C ldr r0, _0806C924 @ =0x0201b000 ldr r1, _0806C928 @ =0x00000261 adds r0, r1 movs r1, 0x2 strb r1, [r0] movs r0, 0x5 bl PlaySE _0806C914: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0806C91C: .4byte gSprites _0806C920: .4byte gUnknown_083768B8 _0806C924: .4byte 0x0201b000 _0806C928: .4byte 0x00000261 thumb_func_end sub_806C890 thumb_func_start sub_806C92C sub_806C92C: @ 806C92C push {r4-r6,lr} lsls r0, 24 lsrs r5, r0, 24 ldr r0, _0806C960 @ =gSprites lsls r1, r5, 4 adds r1, r5 lsls r1, 2 adds r1, r0 ldrh r0, [r1, 0x2E] lsls r0, 24 lsrs r6, r0, 24 ldrh r0, [r1, 0x30] lsls r0, 24 lsrs r4, r0, 24 bl IsDoubleBattle lsls r0, 24 cmp r0, 0 bne _0806C96A cmp r6, 0 bne _0806C964 cmp r4, 0 bne _0806C97C movs r4, 0x1 b _0806C97C .align 2, 0 _0806C960: .4byte gSprites _0806C964: cmp r4, 0 beq _0806C97C b _0806C97A _0806C96A: cmp r6, 0x1 bhi _0806C976 cmp r4, 0x1 bhi _0806C97C movs r4, 0x2 b _0806C97C _0806C976: cmp r4, 0x1 bls _0806C97C _0806C97A: movs r4, 0 _0806C97C: ldr r1, _0806C990 @ =gSprites lsls r0, r5, 4 adds r0, r5 lsls r0, 2 adds r0, r1 strh r4, [r0, 0x30] pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0806C990: .4byte gSprites thumb_func_end sub_806C92C thumb_func_start sub_806C994 sub_806C994: @ 806C994 push {r4,lr} adds r4, r1, 0 lsls r0, 24 lsrs r0, 24 lsls r4, 24 lsrs r4, 24 bl sub_806CA00 lsls r0, 24 lsrs r0, 24 ldr r2, _0806C9C0 @ =gSprites lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r1, r2 strh r4, [r1, 0x2E] bl sub_806C92C pop {r4} pop {r0} bx r0 .align 2, 0 _0806C9C0: .4byte gSprites thumb_func_end sub_806C994 thumb_func_start sub_806C9C4 sub_806C9C4: @ 806C9C4 push {r4,lr} adds r4, r1, 0 lsls r0, 24 lsrs r0, 24 lsls r4, 24 lsrs r4, 24 bl sub_806CA00 lsls r0, 24 lsrs r0, 24 ldr r3, _0806C9FC @ =gSprites lsls r2, r4, 4 adds r2, r4 lsls r2, 2 adds r2, r3 lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r1, r3 ldrh r0, [r1, 0x20] strh r0, [r2, 0x20] ldrh r0, [r1, 0x22] strh r0, [r2, 0x22] ldrh r0, [r1, 0x2E] strh r0, [r2, 0x2E] pop {r4} pop {r0} bx r0 .align 2, 0 _0806C9FC: .4byte gSprites thumb_func_end sub_806C9C4 thumb_func_start sub_806CA00 sub_806CA00: @ 806CA00 lsls r0, 24 lsrs r0, 24 ldr r2, _0806CA14 @ =gTasks lsls r1, r0, 2 adds r1, r0 lsls r1, 3 adds r1, r2 ldrh r0, [r1, 0xE] lsrs r0, 8 bx lr .align 2, 0 _0806CA14: .4byte gTasks thumb_func_end sub_806CA00 thumb_func_start sub_806CA18 sub_806CA18: @ 806CA18 lsls r0, 24 lsrs r0, 24 lsls r1, 24 ldr r3, _0806CA34 @ =gTasks lsls r2, r0, 2 adds r2, r0 lsls r2, 3 adds r2, r3 ldrb r0, [r2, 0xE] lsrs r1, 16 orrs r0, r1 strh r0, [r2, 0xE] bx lr .align 2, 0 _0806CA34: .4byte gTasks thumb_func_end sub_806CA18 thumb_func_start sub_806CA38 sub_806CA38: @ 806CA38 push {lr} lsls r0, 24 lsrs r0, 24 bl sub_806CA00 lsls r0, 24 lsrs r0, 24 ldr r2, _0806CA5C @ =gSprites lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r1, r2 ldrh r0, [r1, 0x2E] lsls r0, 24 lsrs r0, 24 pop {r1} bx r1 .align 2, 0 _0806CA5C: .4byte gSprites thumb_func_end sub_806CA38 thumb_func_start sub_806CA60 sub_806CA60: @ 806CA60 push {r4,r5,lr} adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 ldr r1, _0806CAD8 @ =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 ldr r1, _0806CADC @ =TaskDummy str r1, [r0] ldr r5, _0806CAE0 @ =0x02001000 strb r4, [r5] ldr r0, _0806CAE4 @ =sub_806CB74 movs r1, 0 bl CreateTask ldr r0, _0806CAE8 @ =SpriteCallbackDummy bl CreateInvisibleSpriteWithCallback strb r0, [r5, 0x1] ldrb r1, [r5, 0x1] adds r0, r4, 0 bl sub_806C9C4 adds r0, r4, 0 bl sub_806CA00 strb r0, [r5, 0x2] ldr r1, _0806CAEC @ =0x0001a272 adds r0, r5, r1 ldrb r0, [r0] movs r1, 0 bl sub_806D538 ldr r2, _0806CAF0 @ =gSprites ldrb r0, [r5, 0x1] lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r1, r2 movs r2, 0x2E ldrsh r0, [r1, r2] lsls r0, 1 ldr r2, _0806CAF4 @ =gUnknown_083769A8 adds r0, r2 ldrh r1, [r1, 0x2E] lsls r1, 24 lsrs r1, 24 movs r2, 0x6 movs r3, 0 bl sub_806BF24 ldr r0, _0806CAF8 @ =0x0001a261 adds r5, r0 movs r0, 0x2 strb r0, [r5] pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0806CAD8: .4byte gTasks _0806CADC: .4byte TaskDummy _0806CAE0: .4byte 0x02001000 _0806CAE4: .4byte sub_806CB74 _0806CAE8: .4byte SpriteCallbackDummy _0806CAEC: .4byte 0x0001a272 _0806CAF0: .4byte gSprites _0806CAF4: .4byte gUnknown_083769A8 _0806CAF8: .4byte 0x0001a261 thumb_func_end sub_806CA60 thumb_func_start sub_806CAFC sub_806CAFC: @ 806CAFC push {r4,r5,lr} lsls r0, 24 lsrs r0, 24 ldr r4, _0806CB48 @ =0x02001000 ldrb r3, [r4, 0x1] lsls r2, r3, 4 adds r2, r3 lsls r2, 2 ldr r3, _0806CB4C @ =gSprites adds r5, r2, r3 ldrb r2, [r4, 0x2] lsls r4, r2, 4 adds r4, r2 lsls r4, 2 adds r4, r3 lsls r1, 24 asrs r1, 24 bl sub_806BF74 ldrh r2, [r5, 0x2E] movs r0, 0x2E ldrsh r1, [r5, r0] movs r3, 0x2E ldrsh r0, [r4, r3] cmp r1, r0 beq _0806CB54 adds r0, r1, 0 lsls r0, 1 ldr r1, _0806CB50 @ =gUnknown_083769A8 adds r0, r1 lsls r1, r2, 24 lsrs r1, 24 movs r2, 0x6 movs r3, 0x1 bl sub_806BF24 b _0806CB6A .align 2, 0 _0806CB48: .4byte 0x02001000 _0806CB4C: .4byte gSprites _0806CB50: .4byte gUnknown_083769A8 _0806CB54: movs r3, 0x2E ldrsh r0, [r5, r3] lsls r0, 1 ldr r1, _0806CB70 @ =gUnknown_083769A8 adds r0, r1 lsls r1, r2, 24 lsrs r1, 24 movs r2, 0x6 movs r3, 0 bl sub_806BF24 _0806CB6A: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0806CB70: .4byte gUnknown_083769A8 thumb_func_end sub_806CAFC thumb_func_start sub_806CB74 sub_806CB74: @ 806CB74 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 ldr r0, _0806CB8C @ =gMain ldrh r0, [r0, 0x30] cmp r0, 0x20 beq _0806CBBC cmp r0, 0x20 bgt _0806CB90 cmp r0, 0x10 beq _0806CBD0 b _0806CBDA .align 2, 0 _0806CB8C: .4byte gMain _0806CB90: cmp r0, 0x40 beq _0806CB9A cmp r0, 0x80 beq _0806CBAC b _0806CBDA _0806CB9A: ldr r0, _0806CBA8 @ =0x02001000 ldrb r0, [r0] movs r1, 0x1 negs r1, r1 bl sub_806CAFC b _0806CBDA .align 2, 0 _0806CBA8: .4byte 0x02001000 _0806CBAC: ldr r0, _0806CBB8 @ =0x02001000 ldrb r0, [r0] movs r1, 0x1 bl sub_806CAFC b _0806CBDA .align 2, 0 _0806CBB8: .4byte 0x02001000 _0806CBBC: ldr r0, _0806CBCC @ =0x02001000 ldrb r0, [r0] movs r1, 0x2 negs r1, r1 bl sub_806CAFC b _0806CBDA .align 2, 0 _0806CBCC: .4byte 0x02001000 _0806CBD0: ldr r0, _0806CC04 @ =0x02001000 ldrb r0, [r0] movs r1, 0x2 bl sub_806CAFC _0806CBDA: ldr r0, _0806CC08 @ =gMain ldrh r1, [r0, 0x2E] movs r0, 0x1 ands r0, r1 cmp r0, 0 beq _0806CC10 movs r0, 0x5 bl PlaySE ldr r1, _0806CC0C @ =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 ldr r1, _0806CC04 @ =0x02001000 ldr r1, [r1, 0xC] str r1, [r0] adds r0, r4, 0 bl _call_via_r1 b _0806CC24 .align 2, 0 _0806CC04: .4byte 0x02001000 _0806CC08: .4byte gMain _0806CC0C: .4byte gTasks _0806CC10: lsls r0, r1, 16 lsrs r0, 16 cmp r0, 0x2 bne _0806CC24 movs r0, 0x5 bl PlaySE adds r0, r4, 0 bl sub_806CD44 _0806CC24: pop {r4} pop {r0} bx r0 thumb_func_end sub_806CB74 thumb_func_start sub_806CC2C sub_806CC2C: @ 806CC2C push {r4,r5,lr} adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 ldr r5, _0806CC68 @ =0x02001000 ldrb r1, [r5, 0x1] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 ldr r1, _0806CC6C @ =gSprites adds r0, r1 bl DestroySprite movs r0, 0 movs r1, 0 bl sub_806D538 ldr r0, _0806CC70 @ =0x0001a261 adds r1, r5, r0 movs r0, 0x2 strb r0, [r1] ldrb r0, [r5] bl SwitchTaskToFollowupFunc adds r0, r4, 0 bl DestroyTask pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0806CC68: .4byte 0x02001000 _0806CC6C: .4byte gSprites _0806CC70: .4byte 0x0001a261 thumb_func_end sub_806CC2C thumb_func_start sub_806CC74 sub_806CC74: @ 806CC74 push {r4-r6,lr} mov r6, r8 push {r6} adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 ldr r0, _0806CCD8 @ =gSprites mov r8, r0 ldr r6, _0806CCDC @ =0x02001000 ldrb r0, [r6, 0x2] lsls r1, r0, 4 adds r1, r0 lsls r1, 2 add r1, r8 movs r2, 0x2E ldrsh r0, [r1, r2] lsls r0, 1 ldr r5, _0806CCE0 @ =gUnknown_083769A8 adds r0, r5 ldrh r1, [r1, 0x2E] lsls r1, 24 lsrs r1, 24 movs r2, 0x3 movs r3, 0x1 bl sub_806BF24 ldrb r0, [r6, 0x1] lsls r1, r0, 4 adds r1, r0 lsls r1, 2 add r1, r8 movs r2, 0x2E ldrsh r0, [r1, r2] lsls r0, 1 adds r0, r5 ldrh r1, [r1, 0x2E] lsls r1, 24 lsrs r1, 24 movs r2, 0x3 movs r3, 0 bl sub_806BF24 adds r0, r4, 0 bl sub_806CC2C pop {r3} mov r8, r3 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0806CCD8: .4byte gSprites _0806CCDC: .4byte 0x02001000 _0806CCE0: .4byte gUnknown_083769A8 thumb_func_end sub_806CC74 thumb_func_start sub_806CCE4 sub_806CCE4: @ 806CCE4 push {r4,r5,lr} ldr r3, _0806CD38 @ =gSprites ldr r2, _0806CD3C @ =0x02001000 ldrb r1, [r2, 0x1] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r3 ldrh r0, [r0, 0x2E] lsls r0, 24 lsrs r4, r0, 24 ldrb r1, [r2, 0x2] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r3 ldrh r0, [r0, 0x2E] lsls r0, 24 lsrs r5, r0, 24 cmp r4, 0x5 bhi _0806CD1E lsls r0, r4, 1 ldr r1, _0806CD40 @ =gUnknown_083769A8 adds r0, r1 adds r1, r4, 0 movs r2, 0x3 movs r3, 0 bl sub_806BF24 _0806CD1E: cmp r5, 0x5 bhi _0806CD32 lsls r0, r5, 1 ldr r1, _0806CD40 @ =gUnknown_083769A8 adds r0, r1 adds r1, r5, 0 movs r2, 0x3 movs r3, 0x1 bl sub_806BF24 _0806CD32: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0806CD38: .4byte gSprites _0806CD3C: .4byte 0x02001000 _0806CD40: .4byte gUnknown_083769A8 thumb_func_end sub_806CCE4 thumb_func_start sub_806CD44 sub_806CD44: @ 806CD44 push {r4,lr} adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 bl sub_806CCE4 adds r0, r4, 0 bl sub_806CC2C pop {r4} pop {r0} bx r0 thumb_func_end sub_806CD44 thumb_func_start sub_806CD5C sub_806CD5C: @ 806CD5C push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} lsls r0, 24 lsrs r0, 24 mov r8, r0 ldr r2, _0806CDA8 @ =gSprites ldr r6, _0806CDAC @ =0x02001000 ldrb r1, [r6, 0x1] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 ldrh r0, [r0, 0x2E] lsls r0, 24 lsrs r5, r0, 24 mov r9, r5 ldrb r1, [r6, 0x2] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 ldrh r0, [r0, 0x2E] lsls r0, 24 lsrs r4, r0, 24 adds r7, r4, 0 cmp r5, r4 beq _0806CD9E cmp r5, 0x7 beq _0806CD9E cmp r4, 0x7 bne _0806CDB0 _0806CD9E: mov r0, r8 bl sub_806CD44 b _0806CED2 .align 2, 0 _0806CDA8: .4byte gSprites _0806CDAC: .4byte 0x02001000 _0806CDB0: adds r0, r5, 0 bl sub_806D5B8 adds r0, r4, 0 bl sub_806D5B8 cmp r5, r4 bls _0806CDC6 strb r4, [r6, 0x5] strb r5, [r6, 0x6] b _0806CDCC _0806CDC6: mov r0, r9 strb r0, [r6, 0x5] strb r7, [r6, 0x6] _0806CDCC: ldr r4, _0806CE1C @ =0x02001000 ldrb r0, [r4] ldrb r1, [r4, 0x5] bl GetMonIconSpriteId_maybe strb r0, [r4, 0x3] ldrb r0, [r4] ldrb r1, [r4, 0x6] bl GetMonIconSpriteId_maybe strb r0, [r4, 0x4] ldrb r3, [r4, 0x5] cmp r3, 0 bne _0806CE34 ldr r2, _0806CE20 @ =gSprites ldrb r1, [r4, 0x3] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 ldr r1, _0806CE24 @ =0x0000fff8 strh r1, [r0, 0x2E] ldrb r1, [r4, 0x3] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 ldr r1, _0806CE28 @ =0x0000ff58 strh r1, [r0, 0x32] strh r3, [r4, 0x8] movs r0, 0xB strh r0, [r4, 0xA] ldr r1, _0806CE2C @ =gTasks mov r3, r8 lsls r0, r3, 2 add r0, r8 lsls r0, 3 adds r0, r1 ldr r1, _0806CE30 @ =sub_806D014 b _0806CE66 .align 2, 0 _0806CE1C: .4byte 0x02001000 _0806CE20: .4byte gSprites _0806CE24: .4byte 0x0000fff8 _0806CE28: .4byte 0x0000ff58 _0806CE2C: .4byte gTasks _0806CE30: .4byte sub_806D014 _0806CE34: ldr r2, _0806CEE0 @ =gSprites ldrb r1, [r4, 0x3] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 movs r1, 0x8 strh r1, [r0, 0x2E] ldrb r1, [r4, 0x3] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 movs r1, 0xA8 strh r1, [r0, 0x32] movs r0, 0xB strh r0, [r4, 0x8] strh r0, [r4, 0xA] ldr r1, _0806CEE4 @ =gTasks mov r3, r8 lsls r0, r3, 2 add r0, r8 lsls r0, 3 adds r0, r1 ldr r1, _0806CEE8 @ =sub_806D118 _0806CE66: str r1, [r0] ldr r0, _0806CEEC @ =0x0001a261 adds r1, r4, r0 movs r0, 0x1 strb r0, [r1] adds r6, r2, 0 ldr r4, _0806CEF0 @ =0x02001000 ldrb r1, [r4, 0x3] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r5, r6, 0 adds r5, 0x1C adds r0, r5 ldr r2, _0806CEF4 @ =sub_806D37C str r2, [r0] ldrb r1, [r4, 0x4] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r6 movs r1, 0x8 strh r1, [r0, 0x2E] ldrb r1, [r4, 0x4] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r6 movs r1, 0xA8 strh r1, [r0, 0x32] ldrb r1, [r4, 0x4] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r5 str r2, [r0] ldrb r1, [r4, 0x3] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r1, r0, r5 adds r0, r6 ldr r1, [r1] bl _call_via_r1 ldrb r1, [r4, 0x4] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r5, r0, r5 adds r0, r6 ldr r1, [r5] bl _call_via_r1 _0806CED2: pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0806CEE0: .4byte gSprites _0806CEE4: .4byte gTasks _0806CEE8: .4byte sub_806D118 _0806CEEC: .4byte 0x0001a261 _0806CEF0: .4byte 0x02001000 _0806CEF4: .4byte sub_806D37C thumb_func_end sub_806CD5C thumb_func_start sub_806CEF8 sub_806CEF8: @ 806CEF8 ldrh r3, [r0] ldrh r2, [r1] strh r2, [r0] strh r3, [r1] bx lr thumb_func_end sub_806CEF8 thumb_func_start sub_806CF04 sub_806CF04: @ 806CF04 push {r4,r5,lr} ldr r4, _0806CF94 @ =0x02001000 ldrb r1, [r4, 0x3] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 ldr r5, _0806CF98 @ =gSprites + 0x20 adds r0, r5 ldrb r2, [r4, 0x4] lsls r1, r2, 4 adds r1, r2 lsls r1, 2 adds r1, r5 bl sub_806CEF8 ldrb r1, [r4, 0x3] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r3, r5, 0x2 adds r0, r3 ldrb r2, [r4, 0x4] lsls r1, r2, 4 adds r1, r2 lsls r1, 2 adds r1, r3 bl sub_806CEF8 ldrb r1, [r4, 0x3] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r3, r5, 0x4 adds r0, r3 ldrb r2, [r4, 0x4] lsls r1, r2, 4 adds r1, r2 lsls r1, 2 adds r1, r3 bl sub_806CEF8 ldrb r1, [r4, 0x3] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r3, r5, 0 adds r3, 0xE adds r0, r3 ldrb r2, [r4, 0x4] lsls r1, r2, 4 adds r1, r2 lsls r1, 2 adds r1, r3 bl sub_806CEF8 ldrb r1, [r4, 0x3] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 subs r5, 0x4 adds r0, r5 ldr r2, _0806CF9C @ =sub_806D37C str r2, [r0] ldrb r1, [r4, 0x4] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r5 str r2, [r0] pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0806CF94: .4byte 0x02001000 _0806CF98: .4byte gSprites + 0x20 _0806CF9C: .4byte sub_806D37C thumb_func_end sub_806CF04 thumb_func_start sub_806CFA0 sub_806CFA0: @ 806CFA0 push {r4-r6,lr} lsls r4, r1, 24 lsrs r4, 24 ldr r5, _0806CFDC @ =0x02001000 ldrb r1, [r5, 0x6] subs r1, 0x1 lsls r0, r1, 1 adds r0, r1 adds r0, 0x1 lsls r0, 24 lsrs r6, r0, 24 movs r1, 0x8 ldrsh r0, [r5, r1] movs r1, 0x3 bl sub_806BA34 movs r1, 0xA ldrsh r0, [r5, r1] adds r1, r6, 0 bl sub_806BB3C cmp r4, 0 bne _0806CFE0 ldrh r0, [r5, 0x8] subs r0, 0x1 strh r0, [r5, 0x8] ldrh r0, [r5, 0xA] adds r0, 0x1 b _0806CFEA .align 2, 0 _0806CFDC: .4byte 0x02001000 _0806CFE0: ldrh r0, [r5, 0x8] adds r0, 0x1 strh r0, [r5, 0x8] ldrh r0, [r5, 0xA] subs r0, 0x1 _0806CFEA: strh r0, [r5, 0xA] ldr r4, _0806D010 @ =0x02001000 movs r1, 0x8 ldrsh r0, [r4, r1] movs r1, 0x3 movs r2, 0xA bl sub_806B9A4 movs r1, 0xA ldrsh r0, [r4, r1] adds r1, r6, 0 movs r2, 0 movs r3, 0xA bl sub_806BA94 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0806D010: .4byte 0x02001000 thumb_func_end sub_806CFA0 thumb_func_start sub_806D014 sub_806D014: @ 806D014 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 adds r0, r4, 0 movs r1, 0 bl sub_806CFA0 ldr r2, _0806D050 @ =0x02001000 movs r0, 0x8 ldrsh r1, [r2, r0] movs r0, 0xD negs r0, r0 cmp r1, r0 bge _0806D04A movs r1, 0xA ldrsh r0, [r2, r1] cmp r0, 0x20 ble _0806D04A bl sub_806CF04 ldr r0, _0806D054 @ =gTasks lsls r1, r4, 2 adds r1, r4 lsls r1, 3 adds r1, r0 ldr r0, _0806D058 @ =sub_806D05C str r0, [r1] _0806D04A: pop {r4} pop {r0} bx r0 .align 2, 0 _0806D050: .4byte 0x02001000 _0806D054: .4byte gTasks _0806D058: .4byte sub_806D05C thumb_func_end sub_806D014 thumb_func_start sub_806D05C sub_806D05C: @ 806D05C push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 adds r0, r4, 0 movs r1, 0x1 bl sub_806CFA0 ldr r0, _0806D08C @ =0x02001000 ldr r1, [r0, 0x8] movs r0, 0xB0 lsls r0, 12 cmp r1, r0 bne _0806D084 ldr r0, _0806D090 @ =gTasks lsls r1, r4, 2 adds r1, r4 lsls r1, 3 adds r1, r0 ldr r0, _0806D094 @ =sub_806D198 str r0, [r1] _0806D084: pop {r4} pop {r0} bx r0 .align 2, 0 _0806D08C: .4byte 0x02001000 _0806D090: .4byte gTasks _0806D094: .4byte sub_806D198 thumb_func_end sub_806D05C thumb_func_start sub_806D098 sub_806D098: @ 806D098 push {r4-r7,lr} lsls r4, r1, 24 lsrs r4, 24 ldr r5, _0806D0E0 @ =0x02001000 ldrb r1, [r5, 0x5] subs r1, 0x1 lsls r0, r1, 1 adds r0, r1 adds r0, 0x1 lsls r0, 24 lsrs r7, r0, 24 ldrb r1, [r5, 0x6] subs r1, 0x1 lsls r0, r1, 1 adds r0, r1 adds r0, 0x1 lsls r0, 24 lsrs r6, r0, 24 movs r1, 0x8 ldrsh r0, [r5, r1] adds r1, r7, 0 bl sub_806BB3C movs r1, 0xA ldrsh r0, [r5, r1] adds r1, r6, 0 bl sub_806BB3C cmp r4, 0 bne _0806D0E4 ldrh r0, [r5, 0x8] adds r0, 0x1 strh r0, [r5, 0x8] ldrh r0, [r5, 0xA] adds r0, 0x1 b _0806D0EE .align 2, 0 _0806D0E0: .4byte 0x02001000 _0806D0E4: ldrh r0, [r5, 0x8] subs r0, 0x1 strh r0, [r5, 0x8] ldrh r0, [r5, 0xA] subs r0, 0x1 _0806D0EE: strh r0, [r5, 0xA] ldr r4, _0806D114 @ =0x02001000 movs r1, 0x8 ldrsh r0, [r4, r1] adds r1, r7, 0 movs r2, 0 movs r3, 0xA bl sub_806BA94 movs r1, 0xA ldrsh r0, [r4, r1] adds r1, r6, 0 movs r2, 0 movs r3, 0xA bl sub_806BA94 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0806D114: .4byte 0x02001000 thumb_func_end sub_806D098 thumb_func_start sub_806D118 sub_806D118: @ 806D118 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 adds r0, r4, 0 movs r1, 0 bl sub_806D098 ldr r1, _0806D150 @ =0x02001000 movs r2, 0x8 ldrsh r0, [r1, r2] cmp r0, 0x20 ble _0806D14A movs r2, 0xA ldrsh r0, [r1, r2] cmp r0, 0x20 ble _0806D14A bl sub_806CF04 ldr r0, _0806D154 @ =gTasks lsls r1, r4, 2 adds r1, r4 lsls r1, 3 adds r1, r0 ldr r0, _0806D158 @ =sub_806D15C str r0, [r1] _0806D14A: pop {r4} pop {r0} bx r0 .align 2, 0 _0806D150: .4byte 0x02001000 _0806D154: .4byte gTasks _0806D158: .4byte sub_806D15C thumb_func_end sub_806D118 thumb_func_start sub_806D15C sub_806D15C: @ 806D15C push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 adds r0, r4, 0 movs r1, 0x1 bl sub_806D098 ldr r0, _0806D188 @ =0x02001000 ldr r1, [r0, 0x8] ldr r0, _0806D18C @ =0x000b000b cmp r1, r0 bne _0806D182 ldr r0, _0806D190 @ =gTasks lsls r1, r4, 2 adds r1, r4 lsls r1, 3 adds r1, r0 ldr r0, _0806D194 @ =sub_806D198 str r0, [r1] _0806D182: pop {r4} pop {r0} bx r0 .align 2, 0 _0806D188: .4byte 0x02001000 _0806D18C: .4byte 0x000b000b _0806D190: .4byte gTasks _0806D194: .4byte sub_806D198 thumb_func_end sub_806D15C thumb_func_start sub_806D198 sub_806D198: @ 806D198 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} mov r10, r0 lsls r0, 24 lsrs r0, 24 mov r10, r0 ldr r4, _0806D364 @ =0x02001000 ldrb r0, [r4] ldrb r1, [r4, 0x5] ldrb r2, [r4, 0x4] bl SetMonIconSpriteId_maybe ldrb r0, [r4] ldrb r1, [r4, 0x6] ldrb r2, [r4, 0x3] bl SetMonIconSpriteId_maybe bl IsDoubleBattle ldr r5, _0806D368 @ =gSprites ldrb r1, [r4, 0x3] lsls r3, r1, 4 adds r3, r1 lsls r3, 2 adds r3, r5 ldr r6, _0806D36C @ =gUnknown_08376678 ldrb r2, [r4, 0x6] lsls r2, 2 lsls r0, 24 lsrs r0, 24 lsls r1, r0, 1 adds r1, r0 lsls r1, 3 adds r2, r1 adds r2, r6 ldrb r0, [r2] movs r1, 0 mov r8, r1 strh r0, [r3, 0x20] bl IsDoubleBattle ldrb r1, [r4, 0x3] lsls r3, r1, 4 adds r3, r1 lsls r3, 2 adds r3, r5 ldrb r2, [r4, 0x6] lsls r2, 2 lsls r0, 24 lsrs r0, 24 lsls r1, r0, 1 adds r1, r0 lsls r1, 3 adds r2, r1 adds r2, r6 ldrb r0, [r2, 0x1] strh r0, [r3, 0x22] ldrb r1, [r4, 0x3] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r5 mov r1, r8 strh r1, [r0, 0x24] ldrb r1, [r4, 0x3] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r5 mov r1, r8 strh r1, [r0, 0x26] ldrb r1, [r4, 0x3] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 movs r1, 0x1C adds r1, r5 mov r9, r1 add r0, r9 ldr r7, _0806D370 @ =UpdateMonIconFrame_806DA38 str r7, [r0] bl IsDoubleBattle ldrb r1, [r4, 0x4] lsls r3, r1, 4 adds r3, r1 lsls r3, 2 adds r3, r5 ldrb r2, [r4, 0x5] lsls r2, 2 lsls r0, 24 lsrs r0, 24 lsls r1, r0, 1 adds r1, r0 lsls r1, 3 adds r2, r1 adds r2, r6 ldrb r0, [r2] strh r0, [r3, 0x20] bl IsDoubleBattle ldrb r1, [r4, 0x4] lsls r3, r1, 4 adds r3, r1 lsls r3, 2 adds r3, r5 ldrb r2, [r4, 0x5] lsls r2, 2 lsls r0, 24 lsrs r0, 24 lsls r1, r0, 1 adds r1, r0 lsls r1, 3 adds r2, r1 adds r2, r6 ldrb r0, [r2, 0x1] strh r0, [r3, 0x22] ldrb r1, [r4, 0x4] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r5 mov r1, r8 strh r1, [r0, 0x24] ldrb r1, [r4, 0x4] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r5 mov r1, r8 strh r1, [r0, 0x26] ldrb r1, [r4, 0x4] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 add r0, r9 str r7, [r0] ldrb r0, [r4] ldrb r2, [r4, 0x2] lsls r1, r2, 4 adds r1, r2 lsls r1, 2 adds r1, r5 ldrh r1, [r1, 0x2E] lsls r1, 24 lsrs r1, 24 bl GetMonIconSpriteId_maybe lsls r0, 24 lsrs r0, 24 lsls r1, r0, 4 adds r1, r0 lsls r1, 2 add r1, r9 ldr r0, _0806D374 @ =UpdateMonIconFrame_806DA0C str r0, [r1] ldrb r0, [r4, 0x5] movs r6, 0x64 muls r0, r6 ldr r5, _0806D378 @ =gPlayerParty adds r0, r5 ldrb r1, [r4, 0x6] muls r1, r6 adds r1, r5 bl sub_806E6F0 ldrb r0, [r4, 0x5] adds r1, r0, 0 muls r1, r6 adds r1, r5 bl PartyMenuPrintMonLevelOrStatus ldrb r0, [r4, 0x5] adds r1, r0, 0 muls r1, r6 adds r1, r5 bl TryPrintPartyMenuMonNickname ldrb r0, [r4, 0x5] adds r1, r0, 0 muls r1, r6 adds r1, r5 bl PartyMenuTryPrintHP ldrb r0, [r4, 0x5] adds r1, r0, 0 muls r1, r6 adds r1, r5 bl nullsub_12 ldrb r0, [r4, 0x6] adds r1, r0, 0 muls r1, r6 adds r1, r5 bl PartyMenuPrintMonLevelOrStatus ldrb r0, [r4, 0x6] adds r1, r0, 0 muls r1, r6 adds r1, r5 bl TryPrintPartyMenuMonNickname ldrb r0, [r4, 0x6] adds r1, r0, 0 muls r1, r6 adds r1, r5 bl PartyMenuTryPrintHP ldrb r0, [r4, 0x6] adds r1, r0, 0 muls r1, r6 adds r1, r5 bl nullsub_12 bl PartyMenuDrawHPBars mov r0, r10 bl sub_806CC74 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0806D364: .4byte 0x02001000 _0806D368: .4byte gSprites _0806D36C: .4byte gUnknown_08376678 _0806D370: .4byte UpdateMonIconFrame_806DA38 _0806D374: .4byte UpdateMonIconFrame_806DA0C _0806D378: .4byte gPlayerParty thumb_func_end sub_806D198 thumb_func_start sub_806D37C sub_806D37C: @ 806D37C push {r4,lr} adds r4, r0, 0 bl UpdateMonIconFrame ldrh r2, [r4, 0x24] movs r0, 0x24 ldrsh r1, [r4, r0] movs r3, 0x32 ldrsh r0, [r4, r3] cmp r1, r0 bne _0806D3A8 movs r1, 0x2E ldrsh r0, [r4, r1] negs r0, r0 movs r1, 0 strh r0, [r4, 0x2E] strh r1, [r4, 0x32] ldr r0, _0806D3A4 @ =UpdateMonIconFrame_806DA38 str r0, [r4, 0x1C] b _0806D3AE .align 2, 0 _0806D3A4: .4byte UpdateMonIconFrame_806DA38 _0806D3A8: ldrh r0, [r4, 0x2E] adds r0, r2, r0 strh r0, [r4, 0x24] _0806D3AE: pop {r4} pop {r0} bx r0 thumb_func_end sub_806D37C thumb_func_start sub_806D3B4 sub_806D3B4: @ 806D3B4 push {r4-r7,lr} mov r7, r8 push {r7} adds r4, r1, 0 lsls r0, 24 lsrs r7, r0, 24 lsls r4, 16 lsrs r4, 16 lsls r2, 16 lsrs r2, 16 mov r8, r2 ldr r6, _0806D438 @ =gUnknown_083769C0 ldr r1, _0806D43C @ =gTasks lsls r0, r7, 2 adds r0, r7 lsls r0, 3 adds r5, r0, r1 ldrh r0, [r5, 0x8] ldrb r1, [r6, 0x2] adds r0, r1 lsls r0, 16 asrs r0, 16 ldrb r1, [r6, 0x3] bl sub_806BA34 ldrh r0, [r5, 0x8] ldrb r1, [r6, 0x8] adds r0, r1 lsls r0, 16 asrs r0, 16 ldrb r1, [r6, 0x9] bl sub_806BB3C ldrh r0, [r5, 0x8] ldrb r1, [r6, 0xA] adds r0, r1 lsls r0, 16 asrs r0, 16 ldrb r1, [r6, 0xB] bl sub_806BB3C ldrh r1, [r5, 0x8] subs r1, 0x1 strh r1, [r5, 0x8] ldrb r0, [r6, 0x2] adds r0, r1 lsls r0, 16 asrs r0, 16 ldrb r1, [r6, 0x3] movs r2, 0x4 bl sub_806B9A4 cmp r4, 0 beq _0806D440 ldrh r0, [r5, 0x8] ldrb r1, [r6, 0x8] adds r0, r1 lsls r0, 16 asrs r0, 16 ldrb r1, [r6, 0x9] movs r2, 0 movs r3, 0x4 bl sub_806BA94 b _0806D454 .align 2, 0 _0806D438: .4byte gUnknown_083769C0 _0806D43C: .4byte gTasks _0806D440: ldrh r0, [r5, 0x8] ldrb r1, [r6, 0x8] adds r0, r1 lsls r0, 16 asrs r0, 16 ldrb r1, [r6, 0x9] movs r2, 0x1 movs r3, 0x4 bl sub_806BA94 _0806D454: mov r0, r8 cmp r0, 0 beq _0806D480 ldr r1, _0806D47C @ =gTasks lsls r0, r7, 2 adds r0, r7 lsls r0, 3 adds r0, r1 ldrh r0, [r0, 0x8] ldrb r1, [r6, 0xA] adds r0, r1 lsls r0, 16 asrs r0, 16 ldrb r1, [r6, 0xB] movs r2, 0 movs r3, 0x4 bl sub_806BA94 b _0806D49E .align 2, 0 _0806D47C: .4byte gTasks _0806D480: ldr r1, _0806D4A8 @ =gTasks lsls r0, r7, 2 adds r0, r7 lsls r0, 3 adds r0, r1 ldrh r0, [r0, 0x8] ldrb r1, [r6, 0xA] adds r0, r1 lsls r0, 16 asrs r0, 16 ldrb r1, [r6, 0xB] movs r2, 0x1 movs r3, 0x4 bl sub_806BA94 _0806D49E: pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0806D4A8: .4byte gTasks thumb_func_end sub_806D3B4 thumb_func_start sub_806D4AC sub_806D4AC: @ 806D4AC push {r4,r5,lr} lsls r0, 24 lsrs r5, r0, 24 lsls r1, 16 lsls r2, 24 lsrs r2, 24 cmp r1, 0 beq _0806D4F6 adds r1, r2, 0x3 lsls r1, 24 lsrs r1, 24 adds r0, r5, 0 bl GetMonIconSpriteId_maybe lsls r0, 24 lsrs r0, 24 ldr r2, _0806D4FC @ =gSprites lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r4, r1, r2 ldr r0, _0806D500 @ =0x0000fff8 strh r0, [r4, 0x2E] ldr r3, _0806D504 @ =gTasks lsls r0, r5, 2 adds r0, r5 lsls r0, 3 adds r0, r3 movs r3, 0x8 ldrsh r0, [r0, r3] lsls r0, 3 negs r0, r0 strh r0, [r4, 0x32] adds r2, 0x1C adds r1, r2 ldr r0, _0806D508 @ =sub_806D37C str r0, [r1] _0806D4F6: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0806D4FC: .4byte gSprites _0806D500: .4byte 0x0000fff8 _0806D504: .4byte gTasks _0806D508: .4byte sub_806D37C thumb_func_end sub_806D4AC thumb_func_start sub_806D50C sub_806D50C: @ 806D50C push {lr} lsls r0, 24 lsrs r0, 24 lsls r1, 24 lsrs r1, 24 bl GetMonIconSpriteId_maybe ldr r2, _0806D534 @ =gSprites lsls r0, 24 lsrs r0, 24 lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r1, r2 ldrh r0, [r1, 0x20] adds r0, 0xF0 strh r0, [r1, 0x20] pop {r0} bx r0 .align 2, 0 _0806D534: .4byte gSprites thumb_func_end sub_806D50C thumb_func_start sub_806D538 sub_806D538: @ 806D538 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 lsls r1, 24 lsrs r1, 24 adds r0, r1, 0 cmp r4, 0xFF beq _0806D59A cmp r1, 0x1 beq _0806D568 cmp r1, 0x1 bgt _0806D556 cmp r1, 0 beq _0806D560 b _0806D58A _0806D556: cmp r0, 0x2 beq _0806D570 cmp r0, 0x3 beq _0806D57E b _0806D58A _0806D560: movs r0, 0 movs r1, 0x10 movs r2, 0x17 b _0806D576 _0806D568: movs r0, 0 movs r1, 0x10 movs r2, 0x13 b _0806D576 _0806D570: movs r0, 0 movs r1, 0x10 movs r2, 0x16 _0806D576: movs r3, 0x13 bl MenuDrawTextWindow b _0806D58A _0806D57E: movs r0, 0 movs r1, 0x10 movs r2, 0x12 movs r3, 0x13 bl MenuDrawTextWindow _0806D58A: ldr r0, _0806D5A0 @ =gUnknown_08376624 lsls r1, r4, 2 adds r1, r0 ldr r0, [r1] movs r1, 0x1 movs r2, 0x11 bl MenuPrint _0806D59A: pop {r4} pop {r0} bx r0 .align 2, 0 _0806D5A0: .4byte gUnknown_08376624 thumb_func_end sub_806D538 thumb_func_start sub_806D5A4 sub_806D5A4: @ 806D5A4 push {lr} movs r0, 0 movs r1, 0x10 movs r2, 0x1D movs r3, 0x13 bl MenuZeroFillWindowRect pop {r0} bx r0 thumb_func_end sub_806D5A4 thumb_func_start sub_806D5B8 sub_806D5B8: @ 806D5B8 push {r4-r6,lr} mov r6, r10 mov r5, r9 mov r4, r8 push {r4-r6} sub sp, 0x8 adds r5, r0, 0 lsls r5, 24 lsrs r5, 24 ldr r6, _0806D658 @ =gUnknown_08376948 bl IsDoubleBattle lsls r4, r5, 2 lsls r0, 24 lsrs r0, 24 lsls r1, r0, 1 adds r1, r0 lsls r1, 3 adds r1, r4, r1 adds r1, r6 ldrb r1, [r1] mov r10, r1 bl IsDoubleBattle lsls r0, 24 lsrs r0, 24 lsls r1, r0, 1 adds r1, r0 lsls r1, 3 adds r1, r4, r1 adds r1, r6 ldrb r1, [r1, 0x1] mov r9, r1 bl IsDoubleBattle lsls r0, 24 lsrs r0, 24 lsls r1, r0, 1 adds r1, r0 lsls r1, 3 adds r1, r4, r1 adds r1, r6 ldrb r1, [r1, 0x2] mov r8, r1 bl IsDoubleBattle lsls r0, 24 lsrs r0, 24 lsls r1, r0, 1 adds r1, r0 lsls r1, 3 adds r4, r1 adds r4, r6 ldrb r1, [r4, 0x3] ldr r0, _0806D65C @ =gUnknown_03004210 str r1, [sp] mov r1, r10 mov r2, r9 mov r3, r8 bl ZeroFillWindowRect movs r0, 0 str r0, [sp, 0x4] lsls r5, 10 ldr r0, _0806D660 @ =0x06014000 adds r5, r0 ldr r2, _0806D664 @ =0x01000100 add r0, sp, 0x4 adds r1, r5, 0 bl CpuFastSet add sp, 0x8 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0806D658: .4byte gUnknown_08376948 _0806D65C: .4byte gUnknown_03004210 _0806D660: .4byte 0x06014000 _0806D664: .4byte 0x01000100 thumb_func_end sub_806D5B8 thumb_func_start sub_806D668 sub_806D668: @ 806D668 push {r4-r6,lr} mov r6, r10 mov r5, r9 mov r4, r8 push {r4-r6} sub sp, 0x8 adds r5, r0, 0 lsls r5, 24 lsrs r5, 24 ldr r6, _0806D708 @ =gUnknown_08376978 bl IsDoubleBattle lsls r4, r5, 2 lsls r0, 24 lsrs r0, 24 lsls r1, r0, 1 adds r1, r0 lsls r1, 3 adds r1, r4, r1 adds r1, r6 ldrb r1, [r1] mov r10, r1 bl IsDoubleBattle lsls r0, 24 lsrs r0, 24 lsls r1, r0, 1 adds r1, r0 lsls r1, 3 adds r1, r4, r1 adds r1, r6 ldrb r1, [r1, 0x1] mov r9, r1 bl IsDoubleBattle lsls r0, 24 lsrs r0, 24 lsls r1, r0, 1 adds r1, r0 lsls r1, 3 adds r1, r4, r1 adds r1, r6 ldrb r1, [r1, 0x2] mov r8, r1 bl IsDoubleBattle lsls r0, 24 lsrs r0, 24 lsls r1, r0, 1 adds r1, r0 lsls r1, 3 adds r4, r1 adds r4, r6 ldrb r1, [r4, 0x3] ldr r0, _0806D70C @ =gUnknown_03004210 str r1, [sp] mov r1, r10 mov r2, r9 mov r3, r8 bl ZeroFillWindowRect movs r0, 0 str r0, [sp, 0x4] lsls r5, 10 ldr r0, _0806D710 @ =0x06014300 adds r5, r0 ldr r2, _0806D714 @ =0x01000040 add r0, sp, 0x4 adds r1, r5, 0 bl CpuFastSet add sp, 0x8 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0806D708: .4byte gUnknown_08376978 _0806D70C: .4byte gUnknown_03004210 _0806D710: .4byte 0x06014300 _0806D714: .4byte 0x01000040 thumb_func_end sub_806D668 thumb_func_start sub_806D718 sub_806D718: @ 806D718 push {r4,r5,lr} sub sp, 0x4 lsls r0, 24 lsrs r4, r0, 24 ldr r1, _0806D7C4 @ =0x00007fff mov r0, sp strh r1, [r0] movs r5, 0 cmp r4, 0x1 bhi _0806D736 ldr r0, _0806D7C8 @ =gPartyMenuMisc_Gfx movs r1, 0xC0 lsls r1, 19 bl LZDecompressVram _0806D736: cmp r4, 0x2 beq _0806D73E cmp r4, 0 bne _0806D746 _0806D73E: ldr r0, _0806D7CC @ =gPartyMenuMisc_Tilemap ldr r1, _0806D7D0 @ =0x06003800 bl LZDecompressVram _0806D746: cmp r4, 0x3 beq _0806D74E cmp r4, 0 bne _0806D75A _0806D74E: ldr r0, _0806D7D4 @ =gPartyMenuMisc_Pal movs r2, 0xB0 lsls r2, 1 movs r1, 0 bl LoadCompressedPalette _0806D75A: cmp r4, 0x4 beq _0806D762 cmp r4, 0 bne _0806D776 _0806D762: mov r0, sp movs r1, 0 movs r2, 0x2 bl LoadPalette ldr r0, _0806D7D8 @ =gFontDefaultPalette movs r1, 0xF0 movs r2, 0x20 bl LoadPalette _0806D776: cmp r4, 0x5 beq _0806D77E cmp r4, 0 bne _0806D786 _0806D77E: ldr r0, _0806D7DC @ =gPartyMenuHpBar_Gfx ldr r1, _0806D7E0 @ =0x06006000 bl LZDecompressVram _0806D786: cmp r4, 0x6 beq _0806D78E cmp r4, 0 bne _0806D796 _0806D78E: ldr r0, _0806D7E4 @ =gPartyMenuOrderText_Gfx ldr r1, _0806D7E8 @ =0x06006180 bl LZDecompressVram _0806D796: cmp r4, 0x7 beq _0806D79E cmp r4, 0 bne _0806D7A6 _0806D79E: ldr r0, _0806D7EC @ =gStatusGfx_Icons ldr r1, _0806D7F0 @ =0x06007180 bl LZDecompressVram _0806D7A6: cmp r4, 0x8 beq _0806D7AE cmp r4, 0 bne _0806D7BA _0806D7AE: ldr r0, _0806D7F4 @ =gStatusPal_Icons movs r1, 0xB0 movs r2, 0x20 bl LoadCompressedPalette movs r5, 0x1 _0806D7BA: adds r0, r5, 0 add sp, 0x4 pop {r4,r5} pop {r1} bx r1 .align 2, 0 _0806D7C4: .4byte 0x00007fff _0806D7C8: .4byte gPartyMenuMisc_Gfx _0806D7CC: .4byte gPartyMenuMisc_Tilemap _0806D7D0: .4byte 0x06003800 _0806D7D4: .4byte gPartyMenuMisc_Pal _0806D7D8: .4byte gFontDefaultPalette _0806D7DC: .4byte gPartyMenuHpBar_Gfx _0806D7E0: .4byte 0x06006000 _0806D7E4: .4byte gPartyMenuOrderText_Gfx _0806D7E8: .4byte 0x06006180 _0806D7EC: .4byte gStatusGfx_Icons _0806D7F0: .4byte 0x06007180 _0806D7F4: .4byte gStatusPal_Icons thumb_func_end sub_806D718 thumb_func_start SetMonIconAnimByHP SetMonIconAnimByHP: @ 806D7F8 push {r4-r6,lr} lsls r0, 24 lsrs r6, r0, 24 lsls r1, 16 lsls r2, 16 lsrs r5, r1, 16 asrs r1, 16 lsrs r4, r2, 16 asrs r2, 16 adds r0, r1, 0 adds r1, r2, 0 bl GetHPBarLevel lsls r0, 24 lsrs r0, 24 movs r2, 0 cmp r5, r4 beq _0806D830 movs r2, 0x1 cmp r0, 0x3 beq _0806D830 movs r2, 0x2 cmp r0, 0x2 beq _0806D830 movs r2, 0x4 cmp r0, 0x1 bne _0806D830 movs r2, 0x3 _0806D830: lsls r0, r6, 4 adds r0, r6 lsls r0, 2 ldr r1, _0806D848 @ =gSprites adds r0, r1 adds r1, r2, 0 bl sub_809D824 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0806D848: .4byte gSprites thumb_func_end SetMonIconAnimByHP thumb_func_start SetMonIconAnim SetMonIconAnim: @ 806D84C push {r4-r6,lr} adds r5, r0, 0 adds r6, r1, 0 lsls r5, 24 lsrs r5, 24 adds r0, r6, 0 movs r1, 0x39 bl GetMonData adds r4, r0, 0 lsls r4, 16 lsrs r4, 16 adds r0, r6, 0 movs r1, 0x3A bl GetMonData adds r2, r0, 0 lsls r2, 16 lsrs r2, 16 adds r0, r5, 0 adds r1, r4, 0 bl SetMonIconAnimByHP pop {r4-r6} pop {r0} bx r0 thumb_func_end SetMonIconAnim thumb_func_start CreatePartyMenuMonIcon CreatePartyMenuMonIcon: @ 806D880 push {r4-r6,lr} mov r6, r10 mov r5, r9 mov r4, r8 push {r4-r6} sub sp, 0x8 adds r6, r0, 0 adds r5, r1, 0 mov r8, r3 lsls r6, 24 lsrs r6, 24 lsls r5, 24 lsrs r5, 24 lsls r2, 24 lsrs r2, 24 ldr r3, _0806D904 @ =gUnknown_08376678 lsls r1, r5, 2 lsls r0, r2, 1 adds r0, r2 lsls r0, 3 adds r1, r0 adds r1, r3 ldrb r0, [r1] mov r9, r0 ldrb r1, [r1, 0x1] mov r10, r1 mov r0, r8 movs r1, 0x41 bl GetMonData adds r4, r0, 0 lsls r4, 16 lsrs r4, 16 mov r0, r8 movs r1, 0 bl GetMonData ldr r1, _0806D908 @ =sub_809D62C movs r2, 0x5 str r2, [sp] str r0, [sp, 0x4] adds r0, r4, 0 mov r2, r9 mov r3, r10 bl CreateMonIcon adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 adds r0, r6, 0 adds r1, r5, 0 adds r2, r4, 0 bl SetMonIconSpriteId_maybe adds r0, r4, 0 mov r1, r8 bl SetMonIconAnim add sp, 0x8 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0806D904: .4byte gUnknown_08376678 _0806D908: .4byte sub_809D62C thumb_func_end CreatePartyMenuMonIcon thumb_func_start TryCreatePartyMenuMonIcon TryCreatePartyMenuMonIcon: @ 806D90C push {r4-r7,lr} mov r7, r8 push {r7} adds r4, r2, 0 lsls r0, 24 lsrs r6, r0, 24 mov r8, r6 lsls r1, 24 lsrs r5, r1, 24 adds r7, r5, 0 adds r0, r4, 0 movs r1, 0xB bl GetMonData cmp r0, 0 beq _0806D95A bl IsLinkDoubleBattle lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _0806D946 adds r0, r6, 0 adds r1, r5, 0 movs r2, 0x2 adds r3, r4, 0 bl CreatePartyMenuMonIcon b _0806D95A _0806D946: bl IsDoubleBattle adds r2, r0, 0 lsls r2, 24 lsrs r2, 24 mov r0, r8 adds r1, r7, 0 adds r3, r4, 0 bl CreatePartyMenuMonIcon _0806D95A: pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 thumb_func_end TryCreatePartyMenuMonIcon thumb_func_start unref_sub_806D964 unref_sub_806D964: @ 806D964 push {r4,r5,lr} lsls r0, 24 lsrs r5, r0, 24 movs r4, 0 b _0806D986 _0806D96E: movs r0, 0x64 adds r2, r4, 0 muls r2, r0 ldr r0, _0806D994 @ =gPlayerParty adds r2, r0 adds r0, r5, 0 adds r1, r4, 0 bl TryCreatePartyMenuMonIcon adds r0, r4, 0x1 lsls r0, 24 lsrs r4, r0, 24 _0806D986: ldr r0, _0806D998 @ =gPlayerPartyCount ldrb r0, [r0] cmp r4, r0 bcc _0806D96E pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0806D994: .4byte gPlayerParty _0806D998: .4byte gPlayerPartyCount thumb_func_end unref_sub_806D964 thumb_func_start CreateMonIcon_806D99C CreateMonIcon_806D99C: @ 806D99C push {r4-r7,lr} mov r7, r8 push {r7} sub sp, 0x8 adds r6, r0, 0 adds r5, r1, 0 mov r8, r3 lsls r6, 24 lsrs r6, 24 lsls r5, 24 lsrs r5, 24 lsls r2, 24 lsrs r2, 24 ldr r3, _0806DA04 @ =gUnknown_08376678 lsls r1, r5, 2 lsls r0, r2, 1 adds r0, r2 lsls r0, 3 adds r1, r0 adds r1, r3 ldrb r2, [r1] ldrb r3, [r1, 0x1] mov r1, r8 ldrh r0, [r1] ldr r1, _0806DA08 @ =sub_809D62C movs r4, 0x5 str r4, [sp] mov r7, r8 ldr r4, [r7, 0x18] str r4, [sp, 0x4] bl CreateMonIcon adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 adds r0, r6, 0 adds r1, r5, 0 adds r2, r4, 0 bl SetMonIconSpriteId_maybe ldrh r1, [r7, 0x10] ldrh r2, [r7, 0x12] adds r0, r4, 0 bl SetMonIconAnimByHP add sp, 0x8 pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0806DA04: .4byte gUnknown_08376678 _0806DA08: .4byte sub_809D62C thumb_func_end CreateMonIcon_806D99C thumb_func_start UpdateMonIconFrame_806DA0C UpdateMonIconFrame_806DA0C: @ 806DA0C push {r4,lr} adds r4, r0, 0 bl UpdateMonIconFrame lsls r0, 24 lsrs r0, 24 cmp r0, 0 beq _0806DA32 movs r1, 0x1 ands r0, r1 cmp r0, 0 beq _0806DA30 ldr r0, _0806DA2C @ =0x0000fffd strh r0, [r4, 0x26] b _0806DA32 .align 2, 0 _0806DA2C: .4byte 0x0000fffd _0806DA30: strh r1, [r4, 0x26] _0806DA32: pop {r4} pop {r0} bx r0 thumb_func_end UpdateMonIconFrame_806DA0C thumb_func_start UpdateMonIconFrame_806DA38 UpdateMonIconFrame_806DA38: @ 806DA38 push {lr} bl UpdateMonIconFrame pop {r0} bx r0 thumb_func_end UpdateMonIconFrame_806DA38 thumb_func_start UpdateMonIconFrame_806DA44 UpdateMonIconFrame_806DA44: @ 806DA44 push {r4,lr} lsls r0, 24 lsrs r0, 24 lsls r1, 24 lsrs r1, 24 lsls r2, 24 lsrs r4, r2, 24 cmp r1, 0x5 bhi _0806DA8E bl GetMonIconSpriteId_maybe lsls r0, 24 lsrs r0, 24 ldr r3, _0806DA7C @ =gSprites lsls r1, r0, 4 adds r1, r0 lsls r2, r1, 2 adds r1, r2, r3 movs r0, 0 strh r0, [r1, 0x26] strh r0, [r1, 0x2E] cmp r4, 0 bne _0806DA84 adds r0, r3, 0 adds r0, 0x1C adds r0, r2, r0 ldr r1, _0806DA80 @ =UpdateMonIconFrame_806DA38 b _0806DA8C .align 2, 0 _0806DA7C: .4byte gSprites _0806DA80: .4byte UpdateMonIconFrame_806DA38 _0806DA84: adds r0, r3, 0 adds r0, 0x1C adds r0, r2, r0 ldr r1, _0806DA94 @ =UpdateMonIconFrame_806DA0C _0806DA8C: str r1, [r0] _0806DA8E: pop {r4} pop {r0} bx r0 .align 2, 0 _0806DA94: .4byte UpdateMonIconFrame_806DA0C thumb_func_end UpdateMonIconFrame_806DA44 thumb_func_start LoadHeldItemIconGraphics LoadHeldItemIconGraphics: @ 806DA98 push {lr} ldr r0, _0806DAAC @ =gUnknown_083765DC bl LoadSpriteSheet ldr r0, _0806DAB0 @ =gUnknown_083765E4 bl LoadSpritePalette pop {r0} bx r0 .align 2, 0 _0806DAAC: .4byte gUnknown_083765DC _0806DAB0: .4byte gUnknown_083765E4 thumb_func_end LoadHeldItemIconGraphics thumb_func_start SpriteCB_HeldItemIcon SpriteCB_HeldItemIcon: @ 806DAB4 push {r4,lr} adds r4, r0, 0 ldrh r1, [r4, 0x3C] lsls r1, 24 lsrs r1, 24 ldr r2, _0806DAE4 @ =gSprites lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r2, r0, r2 adds r0, r2, 0 adds r0, 0x3E ldrb r0, [r0] lsls r0, 29 cmp r0, 0 bge _0806DAE8 adds r0, r4, 0 adds r0, 0x3E ldrb r1, [r0] movs r2, 0x4 orrs r1, r2 strb r1, [r0] b _0806DB06 .align 2, 0 _0806DAE4: .4byte gSprites _0806DAE8: adds r3, r4, 0 adds r3, 0x3E ldrb r1, [r3] movs r0, 0x5 negs r0, r0 ands r0, r1 strb r0, [r3] ldrh r0, [r2, 0x24] ldrh r1, [r2, 0x20] adds r0, r1 strh r0, [r4, 0x20] ldrh r0, [r2, 0x26] ldrh r2, [r2, 0x22] adds r0, r2 strh r0, [r4, 0x22] _0806DB06: pop {r4} pop {r0} bx r0 thumb_func_end SpriteCB_HeldItemIcon thumb_func_start CreateHeldItemIcon CreateHeldItemIcon: @ 806DB0C push {r4-r6,lr} mov r6, r9 mov r5, r8 push {r5,r6} adds r6, r0, 0 mov r9, r1 lsls r6, 24 lsrs r6, 24 mov r0, r9 lsls r0, 24 lsrs r0, 24 mov r9, r0 ldr r0, _0806DB84 @ =gSprites mov r8, r0 lsls r0, r6, 4 adds r0, r6 lsls r0, 2 add r0, r8 adds r0, 0x43 ldrb r3, [r0] ldr r0, _0806DB88 @ =gSpriteTemplate_837660C subs r3, 0x1 lsls r3, 24 lsrs r3, 24 movs r1, 0xFA movs r2, 0xAA bl CreateSprite lsls r0, 24 lsrs r0, 24 lsls r4, r0, 4 adds r4, r0 lsls r4, 2 mov r0, r8 adds r5, r4, r0 movs r0, 0x4 strh r0, [r5, 0x24] movs r0, 0xA strh r0, [r5, 0x26] movs r0, 0x1C add r8, r0 add r4, r8 ldr r0, _0806DB8C @ =SpriteCB_HeldItemIcon str r0, [r4] strh r6, [r5, 0x3C] adds r0, r5, 0 mov r1, r9 bl StartSpriteAnim ldr r1, [r4] adds r0, r5, 0 bl _call_via_r1 pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0806DB84: .4byte gSprites _0806DB88: .4byte gSpriteTemplate_837660C _0806DB8C: .4byte SpriteCB_HeldItemIcon thumb_func_end CreateHeldItemIcon thumb_func_start CreateHeldItemIcons CreateHeldItemIcons: @ 806DB90 push {r4-r7,lr} adds r6, r0, 0 adds r7, r1, 0 lsls r2, 24 lsrs r2, 24 cmp r2, 0 beq _0806DBA4 cmp r2, 0x1 beq _0806DBEC b _0806DC28 _0806DBA4: movs r5, 0 ldrb r0, [r6] cmp r5, r0 bcs _0806DC28 _0806DBAC: movs r0, 0x64 muls r0, r5 ldr r1, _0806DBE8 @ =gPlayerParty adds r0, r1 movs r1, 0xC bl GetMonData lsls r0, 16 lsrs r1, r0, 16 cmp r1, 0 beq _0806DBD8 adds r0, r7, r5 ldrb r4, [r0] adds r0, r1, 0 bl ItemIsMail adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 adds r0, r4, 0 bl CreateHeldItemIcon _0806DBD8: adds r0, r5, 0x1 lsls r0, 16 lsrs r5, r0, 16 ldrb r0, [r6] cmp r5, r0 bcc _0806DBAC b _0806DC28 .align 2, 0 _0806DBE8: .4byte gPlayerParty _0806DBEC: movs r5, 0 b _0806DC22 _0806DBF0: movs r0, 0x64 muls r0, r5 ldr r1, _0806DC30 @ =gEnemyParty adds r0, r1 movs r1, 0xC bl GetMonData lsls r0, 16 lsrs r1, r0, 16 cmp r1, 0 beq _0806DC1C adds r0, r5, r7 ldrb r4, [r0, 0x6] adds r0, r1, 0 bl ItemIsMail adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 adds r0, r4, 0 bl CreateHeldItemIcon _0806DC1C: adds r0, r5, 0x1 lsls r0, 16 lsrs r5, r0, 16 _0806DC22: ldrb r0, [r6, 0x1] cmp r5, r0 bcc _0806DBF0 _0806DC28: pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0806DC30: .4byte gEnemyParty thumb_func_end CreateHeldItemIcons thumb_func_start CreateHeldItemIcons_806DC34 CreateHeldItemIcons_806DC34: @ 806DC34 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} lsls r0, 24 lsrs r0, 24 mov r8, r0 movs r7, 0 ldr r0, _0806DCC8 @ =gSprites mov r9, r0 movs r1, 0x1C add r1, r9 mov r10, r1 _0806DC50: movs r0, 0x64 muls r0, r7 ldr r1, _0806DCCC @ =gPlayerParty adds r0, r1 movs r1, 0xB bl GetMonData cmp r0, 0 beq _0806DCB0 mov r0, r8 adds r1, r7, 0 bl GetMonIconSpriteId_maybe adds r5, r0, 0 lsls r5, 24 lsrs r5, 24 ldr r0, _0806DCD0 @ =gSpriteTemplate_837660C movs r1, 0xFA movs r2, 0xAA movs r3, 0x4 bl CreateSprite lsls r0, 24 lsrs r0, 24 lsls r4, r0, 4 adds r4, r0 lsls r4, 2 mov r1, r9 adds r6, r4, r1 movs r1, 0x4 strh r1, [r6, 0x24] movs r1, 0xA strh r1, [r6, 0x26] strh r5, [r6, 0x3C] lsls r1, r5, 4 adds r1, r5 lsls r1, 2 add r1, r9 strh r0, [r1, 0x3C] mov r0, r8 adds r1, r7, 0 bl SetHeldItemIconVisibility add r4, r10 ldr r1, [r4] adds r0, r6, 0 bl _call_via_r1 _0806DCB0: adds r0, r7, 0x1 lsls r0, 24 lsrs r7, r0, 24 cmp r7, 0x5 bls _0806DC50 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0806DCC8: .4byte gSprites _0806DCCC: .4byte gPlayerParty _0806DCD0: .4byte gSpriteTemplate_837660C thumb_func_end CreateHeldItemIcons_806DC34 thumb_func_start CreateHeldItemIcon_806DCD4 CreateHeldItemIcon_806DCD4: @ 806DCD4 push {r4-r7,lr} lsls r0, 24 lsrs r0, 24 lsls r1, 24 lsrs r1, 24 lsls r2, 16 lsrs r7, r2, 16 bl GetMonIconSpriteId_maybe adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 ldr r0, _0806DD2C @ =gSpriteTemplate_837660C movs r1, 0xFA movs r2, 0xAA movs r3, 0x4 bl CreateSprite lsls r0, 24 lsrs r6, r0, 24 ldr r1, _0806DD30 @ =gSprites lsls r0, r6, 4 adds r0, r6 lsls r0, 2 adds r5, r0, r1 movs r0, 0x4 strh r0, [r5, 0x24] movs r0, 0xA strh r0, [r5, 0x26] strh r4, [r5, 0x3C] lsls r0, r4, 4 adds r0, r4 lsls r0, 2 adds r0, r1 strh r6, [r0, 0x3C] cmp r7, 0 bne _0806DD34 adds r0, r5, 0 adds r0, 0x3E ldrb r1, [r0] movs r2, 0x4 orrs r1, r2 strb r1, [r0] b _0806DD5C .align 2, 0 _0806DD2C: .4byte gSpriteTemplate_837660C _0806DD30: .4byte gSprites _0806DD34: adds r0, r7, 0 bl ItemIsMail lsls r0, 24 cmp r0, 0 beq _0806DD46 adds r0, r5, 0 movs r1, 0x1 b _0806DD4A _0806DD46: adds r0, r5, 0 movs r1, 0 _0806DD4A: bl StartSpriteAnim adds r2, r5, 0 adds r2, 0x3E ldrb r1, [r2] movs r0, 0x5 negs r0, r0 ands r0, r1 strb r0, [r2] _0806DD5C: ldr r2, _0806DD78 @ =gSprites lsls r0, r6, 4 adds r0, r6 lsls r0, 2 adds r1, r2, 0 adds r1, 0x1C adds r1, r0, r1 adds r0, r2 ldr r1, [r1] bl _call_via_r1 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0806DD78: .4byte gSprites thumb_func_end CreateHeldItemIcon_806DCD4 thumb_func_start SpriteCB_HeldItemIcon_806DD7C SpriteCB_HeldItemIcon_806DD7C: @ 806DD7C ldrh r2, [r0, 0x3C] lsls r2, 24 lsrs r2, 24 ldr r3, _0806DD9C @ =gSprites lsls r1, r2, 4 adds r1, r2 lsls r1, 2 adds r1, r3 ldrh r2, [r1, 0x24] ldrh r3, [r1, 0x20] adds r2, r3 strh r2, [r0, 0x20] ldrh r1, [r1, 0x22] strh r1, [r0, 0x22] bx lr .align 2, 0 _0806DD9C: .4byte gSprites thumb_func_end SpriteCB_HeldItemIcon_806DD7C thumb_func_start GetMonIconSpriteId_maybe GetMonIconSpriteId_maybe: @ 806DDA0 push {lr} lsls r0, 24 lsrs r2, r0, 24 lsls r1, 24 lsrs r0, r1, 24 cmp r0, 0x5 bhi _0806DE38 lsls r0, 2 ldr r1, _0806DDB8 @ =_0806DDBC adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _0806DDB8: .4byte _0806DDBC .align 2, 0 _0806DDBC: .4byte _0806DE38 .4byte _0806DDD4 .4byte _0806DDE8 .4byte _0806DDFC .4byte _0806DE10 .4byte _0806DE24 _0806DDD4: ldr r0, _0806DDE4 @ =gTasks lsls r1, r2, 2 adds r1, r2 lsls r1, 3 adds r1, r0 ldrb r0, [r1, 0x8] b _0806DE46 .align 2, 0 _0806DDE4: .4byte gTasks _0806DDE8: ldr r0, _0806DDF8 @ =gTasks lsls r1, r2, 2 adds r1, r2 lsls r1, 3 adds r1, r0 ldrh r0, [r1, 0xA] b _0806DE44 .align 2, 0 _0806DDF8: .4byte gTasks _0806DDFC: ldr r0, _0806DE0C @ =gTasks lsls r1, r2, 2 adds r1, r2 lsls r1, 3 adds r1, r0 ldrb r0, [r1, 0xA] b _0806DE46 .align 2, 0 _0806DE0C: .4byte gTasks _0806DE10: ldr r0, _0806DE20 @ =gTasks lsls r1, r2, 2 adds r1, r2 lsls r1, 3 adds r1, r0 ldrh r0, [r1, 0xC] b _0806DE44 .align 2, 0 _0806DE20: .4byte gTasks _0806DE24: ldr r0, _0806DE34 @ =gTasks lsls r1, r2, 2 adds r1, r2 lsls r1, 3 adds r1, r0 ldrb r0, [r1, 0xC] b _0806DE46 .align 2, 0 _0806DE34: .4byte gTasks _0806DE38: ldr r0, _0806DE4C @ =gTasks lsls r1, r2, 2 adds r1, r2 lsls r1, 3 adds r1, r0 ldrh r0, [r1, 0x8] _0806DE44: lsrs r0, 8 _0806DE46: pop {r1} bx r1 .align 2, 0 _0806DE4C: .4byte gTasks thumb_func_end GetMonIconSpriteId_maybe thumb_func_start SetMonIconSpriteId_maybe SetMonIconSpriteId_maybe: @ 806DE50 push {r4,lr} lsls r0, 24 lsrs r3, r0, 24 lsls r1, 24 lsrs r0, r1, 24 lsls r2, 24 lsrs r4, r2, 24 cmp r0, 0x5 bhi _0806DF24 lsls r0, 2 ldr r1, _0806DE6C @ =_0806DE70 adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _0806DE6C: .4byte _0806DE70 .align 2, 0 _0806DE70: .4byte _0806DE88 .4byte _0806DEA0 .4byte _0806DEC0 .4byte _0806DED8 .4byte _0806DEF8 .4byte _0806DF10 _0806DE88: ldr r1, _0806DE9C @ =gTasks lsls r0, r3, 2 adds r0, r3 lsls r0, 3 adds r0, r1 ldrb r1, [r0, 0x8] lsls r2, r4, 8 orrs r1, r2 strh r1, [r0, 0x8] b _0806DF24 .align 2, 0 _0806DE9C: .4byte gTasks _0806DEA0: ldr r0, _0806DEB8 @ =gTasks lsls r1, r3, 2 adds r1, r3 lsls r1, 3 adds r1, r0 ldrh r2, [r1, 0x8] ldr r0, _0806DEBC @ =0xffffff00 ands r0, r2 orrs r0, r4 strh r0, [r1, 0x8] b _0806DF24 .align 2, 0 _0806DEB8: .4byte gTasks _0806DEBC: .4byte 0xffffff00 _0806DEC0: ldr r1, _0806DED4 @ =gTasks lsls r0, r3, 2 adds r0, r3 lsls r0, 3 adds r0, r1 ldrb r1, [r0, 0xA] lsls r2, r4, 8 orrs r1, r2 strh r1, [r0, 0xA] b _0806DF24 .align 2, 0 _0806DED4: .4byte gTasks _0806DED8: ldr r0, _0806DEF0 @ =gTasks lsls r1, r3, 2 adds r1, r3 lsls r1, 3 adds r1, r0 ldrh r2, [r1, 0xA] ldr r0, _0806DEF4 @ =0xffffff00 ands r0, r2 orrs r0, r4 strh r0, [r1, 0xA] b _0806DF24 .align 2, 0 _0806DEF0: .4byte gTasks _0806DEF4: .4byte 0xffffff00 _0806DEF8: ldr r1, _0806DF0C @ =gTasks lsls r0, r3, 2 adds r0, r3 lsls r0, 3 adds r0, r1 ldrb r1, [r0, 0xC] lsls r2, r4, 8 orrs r1, r2 strh r1, [r0, 0xC] b _0806DF24 .align 2, 0 _0806DF0C: .4byte gTasks _0806DF10: ldr r0, _0806DF2C @ =gTasks lsls r1, r3, 2 adds r1, r3 lsls r1, 3 adds r1, r0 ldrh r2, [r1, 0xC] ldr r0, _0806DF30 @ =0xffffff00 ands r0, r2 orrs r0, r4 strh r0, [r1, 0xC] _0806DF24: pop {r4} pop {r0} bx r0 .align 2, 0 _0806DF2C: .4byte gTasks _0806DF30: .4byte 0xffffff00 thumb_func_end SetMonIconSpriteId_maybe thumb_func_start GetHeldItemIconSpriteIdByMon_maybe GetHeldItemIconSpriteIdByMon_maybe: @ 806DF34 push {lr} lsls r0, 24 lsrs r0, 24 lsls r1, 24 lsrs r1, 24 bl GetMonIconSpriteId_maybe lsls r0, 24 lsrs r0, 24 ldr r2, _0806DF5C @ =gSprites lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r1, r2 ldrh r0, [r1, 0x3C] lsls r0, 24 lsrs r0, 24 pop {r1} bx r1 .align 2, 0 _0806DF5C: .4byte gSprites thumb_func_end GetHeldItemIconSpriteIdByMon_maybe thumb_func_start SetHeldItemIconVisibility SetHeldItemIconVisibility: @ 806DF60 push {r4-r6,lr} adds r4, r1, 0 lsls r0, 24 lsrs r0, 24 lsls r4, 24 lsrs r4, 24 adds r1, r4, 0 bl GetHeldItemIconSpriteIdByMon_maybe lsls r0, 24 lsrs r5, r0, 24 adds r6, r5, 0 movs r0, 0x64 adds r1, r4, 0 muls r1, r0 ldr r0, _0806DFA4 @ =gPlayerParty adds r4, r1, r0 adds r0, r4, 0 movs r1, 0xC bl GetMonData cmp r0, 0 bne _0806DFAC ldr r1, _0806DFA8 @ =gSprites lsls r0, r5, 4 adds r0, r5 lsls r0, 2 adds r0, r1 adds r0, 0x3E ldrb r1, [r0] movs r2, 0x4 orrs r1, r2 strb r1, [r0] b _0806DFF6 .align 2, 0 _0806DFA4: .4byte gPlayerParty _0806DFA8: .4byte gSprites _0806DFAC: adds r0, r4, 0 movs r1, 0xC bl GetMonData lsls r0, 16 lsrs r0, 16 bl ItemIsMail lsls r0, 24 cmp r0, 0 beq _0806DFD8 lsls r4, r5, 4 adds r4, r5 lsls r4, 2 ldr r0, _0806DFD4 @ =gSprites adds r4, r0 adds r0, r4, 0 movs r1, 0x1 b _0806DFE6 .align 2, 0 _0806DFD4: .4byte gSprites _0806DFD8: lsls r4, r6, 4 adds r4, r6 lsls r4, 2 ldr r0, _0806DFFC @ =gSprites adds r4, r0 adds r0, r4, 0 movs r1, 0 _0806DFE6: bl StartSpriteAnim adds r4, 0x3E ldrb r1, [r4] movs r0, 0x5 negs r0, r0 ands r0, r1 strb r0, [r4] _0806DFF6: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0806DFFC: .4byte gSprites thumb_func_end SetHeldItemIconVisibility thumb_func_start box_print box_print: @ 806E000 push {r4-r6,lr} sub sp, 0x4 adds r4, r0, 0 adds r6, r2, 0 lsls r4, 24 lsrs r4, 24 movs r0, 0 str r0, [sp] ldr r5, _0806E040 @ =gTileBuffer ldr r2, _0806E044 @ =0x01000100 mov r0, sp adds r1, r5, 0 bl CpuFastSet ldr r0, _0806E048 @ =gWindowConfig_81E6CAC adds r1, r5, 0 adds r2, r6, 0 bl sub_8004E3C lsls r4, 10 ldr r0, _0806E04C @ =0x06014000 adds r4, r0 adds r0, r5, 0 adds r1, r4, 0 movs r2, 0x80 bl CpuFastSet add sp, 0x4 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0806E040: .4byte gTileBuffer _0806E044: .4byte 0x01000100 _0806E048: .4byte gWindowConfig_81E6CAC _0806E04C: .4byte 0x06014000 thumb_func_end box_print thumb_func_start PrintPartyMenuMonNickname PrintPartyMenuMonNickname: @ 806E050 push {r4,r5,lr} sub sp, 0xC adds r4, r0, 0 adds r5, r1, 0 adds r0, r2, 0 lsls r4, 24 lsrs r4, 24 lsls r5, 24 lsrs r5, 24 mov r1, sp bl GetMonNickname adds r0, r4, 0 adds r1, r5, 0 mov r2, sp bl box_print add sp, 0xC pop {r4,r5} pop {r0} bx r0 thumb_func_end PrintPartyMenuMonNickname thumb_func_start TryPrintPartyMenuMonNickname TryPrintPartyMenuMonNickname: @ 806E07C push {r4-r6,lr} adds r4, r1, 0 lsls r0, 24 lsrs r5, r0, 24 adds r6, r5, 0 adds r0, r4, 0 movs r1, 0xB bl GetMonData cmp r0, 0 beq _0806E0BC bl IsLinkDoubleBattle lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _0806E0AA adds r0, r5, 0 movs r1, 0x2 adds r2, r4, 0 bl PrintPartyMenuMonNickname b _0806E0BC _0806E0AA: bl IsDoubleBattle adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 adds r0, r6, 0 adds r2, r4, 0 bl PrintPartyMenuMonNickname _0806E0BC: pop {r4-r6} pop {r0} bx r0 thumb_func_end TryPrintPartyMenuMonNickname thumb_func_start PrintPartyMenuMonNicknames PrintPartyMenuMonNicknames: @ 806E0C4 push {r4-r6,lr} movs r4, 0 movs r6, 0x64 ldr r5, _0806E0E8 @ =gPlayerParty _0806E0CC: adds r1, r4, 0 muls r1, r6 adds r1, r5 adds r0, r4, 0 bl TryPrintPartyMenuMonNickname adds r0, r4, 0x1 lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0x5 bls _0806E0CC pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0806E0E8: .4byte gPlayerParty thumb_func_end PrintPartyMenuMonNicknames thumb_func_start GetMonNickname GetMonNickname: @ 806E0EC push {r4,lr} adds r4, r1, 0 movs r1, 0x2 adds r2, r4, 0 bl GetMonData adds r0, r4, 0 bl StringGetEnd10 pop {r4} pop {r1} bx r1 thumb_func_end GetMonNickname thumb_func_start PartyMenuPutStatusTilemap PartyMenuPutStatusTilemap: @ 806E104 push {r4,r5,lr} lsls r0, 24 lsls r1, 24 lsrs r1, 24 ldr r4, _0806E15C @ =gUnknown_08376738 lsrs r0, 22 lsls r3, r1, 1 adds r3, r1 lsls r3, 3 adds r0, r3 adds r0, r4 ldrb r1, [r0] subs r1, 0x1 lsls r1, 24 lsrs r1, 24 ldrb r0, [r0, 0x1] adds r0, 0x1 lsls r0, 24 lsrs r0, 19 adds r1, r0 lsls r1, 1 ldr r0, _0806E160 @ =0x0600f000 adds r4, r1, r0 lsls r2, 26 lsrs r2, 24 movs r3, 0 movs r0, 0xC6 lsls r0, 1 adds r2, r0 ldr r0, _0806E164 @ =0xffffb000 adds r5, r0, 0 _0806E142: lsls r0, r3, 1 adds r0, r4 adds r1, r2, r3 orrs r1, r5 strh r1, [r0] adds r0, r3, 0x1 lsls r0, 24 lsrs r3, r0, 24 cmp r3, 0x3 bls _0806E142 pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0806E15C: .4byte gUnknown_08376738 _0806E160: .4byte 0x0600f000 _0806E164: .4byte 0xffffb000 thumb_func_end PartyMenuPutStatusTilemap thumb_func_start PartyMenuClearLevelStatusTilemap PartyMenuClearLevelStatusTilemap: @ 806E168 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 bl IsLinkDoubleBattle lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _0806E17E movs r3, 0x2 b _0806E186 _0806E17E: bl IsDoubleBattle lsls r0, 24 lsrs r3, r0, 24 _0806E186: ldr r1, _0806E1C8 @ =gUnknown_08376738 lsls r2, r4, 2 lsls r0, r3, 1 adds r0, r3 lsls r0, 3 adds r2, r0 adds r2, r1 ldrb r1, [r2] subs r1, 0x1 lsls r1, 24 lsrs r1, 24 ldrb r0, [r2, 0x1] adds r0, 0x1 lsls r0, 24 lsrs r0, 19 adds r1, r0 lsls r1, 1 ldr r0, _0806E1CC @ =0x0600f000 adds r1, r0 movs r3, 0 movs r2, 0 _0806E1B0: lsls r0, r3, 1 adds r0, r1 strh r2, [r0] adds r0, r3, 0x1 lsls r0, 24 lsrs r3, r0, 24 cmp r3, 0x3 bls _0806E1B0 pop {r4} pop {r0} bx r0 .align 2, 0 _0806E1C8: .4byte gUnknown_08376738 _0806E1CC: .4byte 0x0600f000 thumb_func_end PartyMenuClearLevelStatusTilemap thumb_func_start PartyMenuWriteTilemap PartyMenuWriteTilemap: @ 806E1D0 lsls r0, 24 lsrs r0, 24 lsls r1, 24 lsrs r1, 24 lsls r2, 24 lsrs r2, 19 adds r1, r2 lsls r1, 1 ldr r2, _0806E1F0 @ =0x0600f000 adds r1, r2 movs r2, 0x86 lsls r2, 1 adds r0, r2 strh r0, [r1] bx lr .align 2, 0 _0806E1F0: .4byte 0x0600f000 thumb_func_end PartyMenuWriteTilemap thumb_func_start PartyMenuDoPrintLevel PartyMenuDoPrintLevel: @ 806E1F4 push {r4-r6,lr} sub sp, 0x4 adds r4, r0, 0 adds r5, r2, 0 lsls r4, 24 lsrs r4, 24 lsls r1, 24 lsrs r1, 24 lsls r5, 24 lsrs r5, 24 ldr r3, _0806E278 @ =gUnknown_08376738 lsls r2, r4, 2 lsls r0, r1, 1 adds r0, r1 lsls r0, 3 adds r2, r0 adds r2, r3 ldrb r1, [r2] ldrb r2, [r2, 0x1] subs r1, 0x1 lsls r1, 24 lsrs r1, 24 adds r2, 0x1 lsls r2, 24 lsrs r2, 24 movs r0, 0x40 bl PartyMenuWriteTilemap ldr r6, _0806E27C @ =gStringVar1 movs r0, 0xFC strb r0, [r6] movs r0, 0x12 strb r0, [r6, 0x1] movs r0, 0x8 strb r0, [r6, 0x2] adds r0, r6, 0x3 adds r1, r5, 0 bl ConvertIntToDecimalString movs r0, 0 str r0, [sp] ldr r5, _0806E280 @ =gUnknown_02039460 ldr r2, _0806E284 @ =0x01000020 mov r0, sp adds r1, r5, 0 bl CpuFastSet ldr r0, _0806E288 @ =gWindowConfig_81E6CAC ldr r2, _0806E28C @ =0xffffff00 adds r1, r5, r2 adds r2, r6, 0 bl sub_8004E3C lsls r4, 10 ldr r0, _0806E290 @ =0x06014200 adds r4, r0 adds r0, r5, 0 adds r1, r4, 0 movs r2, 0x20 bl CpuFastSet add sp, 0x4 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0806E278: .4byte gUnknown_08376738 _0806E27C: .4byte gStringVar1 _0806E280: .4byte gUnknown_02039460 _0806E284: .4byte 0x01000020 _0806E288: .4byte gWindowConfig_81E6CAC _0806E28C: .4byte 0xffffff00 _0806E290: .4byte 0x06014200 thumb_func_end PartyMenuDoPrintLevel thumb_func_start PartyMenuPrintLevel PartyMenuPrintLevel: @ 806E294 push {r4,r5,lr} adds r4, r0, 0 adds r5, r1, 0 adds r0, r2, 0 lsls r4, 24 lsrs r4, 24 lsls r5, 24 lsrs r5, 24 movs r1, 0x38 bl GetMonData adds r2, r0, 0 lsls r2, 24 lsrs r2, 24 adds r0, r4, 0 adds r1, r5, 0 bl PartyMenuDoPrintLevel pop {r4,r5} pop {r0} bx r0 thumb_func_end PartyMenuPrintLevel thumb_func_start PartyMenuPrintMonLevelOrStatus PartyMenuPrintMonLevelOrStatus: @ 806E2C0 push {r4-r7,lr} adds r5, r1, 0 lsls r0, 24 lsrs r7, r0, 24 adds r0, r5, 0 movs r1, 0xB bl GetMonData cmp r0, 0 beq _0806E32E adds r0, r5, 0 movs r1, 0x2D bl GetMonData cmp r0, 0 bne _0806E32E adds r0, r5, 0 bl GetMonStatusAndPokerus lsls r0, 24 lsrs r4, r0, 24 bl IsLinkDoubleBattle lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _0806E2FA movs r6, 0x2 b _0806E302 _0806E2FA: bl IsDoubleBattle lsls r0, 24 lsrs r6, r0, 24 _0806E302: cmp r4, 0 beq _0806E31A cmp r4, 0x6 beq _0806E31A subs r2, r4, 0x1 lsls r2, 24 lsrs r2, 24 adds r0, r7, 0 adds r1, r6, 0 bl PartyMenuPutStatusTilemap b _0806E324 _0806E31A: adds r0, r7, 0 adds r1, r6, 0 adds r2, r5, 0 bl PartyMenuPrintLevel _0806E324: adds r0, r7, 0 adds r1, r6, 0 adds r2, r5, 0 bl PartyMenuPutNicknameTilemap _0806E32E: pop {r4-r7} pop {r0} bx r0 thumb_func_end PartyMenuPrintMonLevelOrStatus thumb_func_start PartyMenuPrintMonsLevelOrStatus PartyMenuPrintMonsLevelOrStatus: @ 806E334 push {r4-r6,lr} movs r4, 0 movs r6, 0x64 ldr r5, _0806E358 @ =gPlayerParty _0806E33C: adds r1, r4, 0 muls r1, r6 adds r1, r5 adds r0, r4, 0 bl PartyMenuPrintMonLevelOrStatus adds r0, r4, 0x1 lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0x5 bls _0806E33C pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0806E358: .4byte gPlayerParty thumb_func_end PartyMenuPrintMonsLevelOrStatus thumb_func_start PartyMenuDoPutNicknameTilemap PartyMenuDoPutNicknameTilemap: @ 806E35C push {r4-r7,lr} ldr r4, [sp, 0x14] lsls r0, 16 lsrs r0, 16 lsls r1, 24 lsrs r7, r1, 24 lsls r2, 24 lsrs r5, r2, 24 lsls r3, 24 lsrs r6, r3, 24 adds r1, r4, 0 bl sub_8040D8C cmp r0, 0 bne _0806E3BA ldr r2, _0806E3A4 @ =gUnknown_08376738 lsls r1, r6, 2 lsls r0, r5, 1 adds r0, r5 lsls r0, 3 adds r1, r0 adds r1, r2 ldrb r0, [r1] adds r0, 0x3 lsls r0, 24 lsrs r3, r0, 24 ldrb r0, [r1, 0x1] adds r0, 0x1 lsls r0, 24 lsrs r2, r0, 24 cmp r7, 0 beq _0806E3A8 cmp r7, 0xFE beq _0806E3B2 b _0806E3BA .align 2, 0 _0806E3A4: .4byte gUnknown_08376738 _0806E3A8: movs r0, 0x42 adds r1, r3, 0 bl PartyMenuWriteTilemap b _0806E3BA _0806E3B2: movs r0, 0x44 adds r1, r3, 0 bl PartyMenuWriteTilemap _0806E3BA: pop {r4-r7} pop {r0} bx r0 thumb_func_end PartyMenuDoPutNicknameTilemap thumb_func_start PartyMenuPutNicknameTilemap PartyMenuPutNicknameTilemap: @ 806E3C0 push {r4-r6,lr} mov r6, r9 mov r5, r8 push {r5,r6} sub sp, 0x4 mov r8, r0 adds r6, r1, 0 adds r5, r2, 0 lsls r0, 24 lsrs r0, 24 mov r8, r0 lsls r6, 24 lsrs r6, 24 ldr r0, _0806E41C @ =gStringVar1 mov r9, r0 adds r0, r5, 0 mov r1, r9 bl GetMonNickname adds r0, r5, 0 movs r1, 0x41 bl GetMonData adds r4, r0, 0 lsls r4, 16 lsrs r4, 16 adds r0, r5, 0 bl GetMonGender adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 mov r0, r9 str r0, [sp] adds r0, r4, 0 adds r2, r6, 0 mov r3, r8 bl PartyMenuDoPutNicknameTilemap add sp, 0x4 pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0806E41C: .4byte gStringVar1 thumb_func_end PartyMenuPutNicknameTilemap thumb_func_start PartyMenuDoPrintHP PartyMenuDoPrintHP: @ 806E420 push {r4,r5,lr} sub sp, 0x4 adds r4, r0, 0 adds r1, r2, 0 adds r5, r3, 0 lsls r4, 24 lsrs r4, 24 lsls r1, 16 lsrs r1, 16 lsls r5, 16 lsrs r5, 16 ldr r2, _0806E48C @ =gStringVar1 adds r0, r2, 0 movs r2, 0xF movs r3, 0x1 bl sub_8072C14 adds r2, r0, 0 movs r0, 0xBA strb r0, [r2] adds r2, 0x1 adds r0, r2, 0 adds r1, r5, 0 movs r2, 0x23 movs r3, 0x1 bl sub_8072C14 movs r0, 0 str r0, [sp] ldr r5, _0806E490 @ =gUnknown_02039460 ldr r2, _0806E494 @ =0x01000040 mov r0, sp adds r1, r5, 0 bl CpuFastSet ldr r0, _0806E498 @ =gWindowConfig_81E6CAC ldr r2, _0806E49C @ =0xffffff00 adds r1, r5, r2 ldr r2, _0806E48C @ =gStringVar1 bl sub_8004E3C lsls r4, 10 ldr r0, _0806E4A0 @ =0x06014300 adds r4, r0 adds r0, r5, 0 adds r1, r4, 0 movs r2, 0x40 bl CpuFastSet add sp, 0x4 pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0806E48C: .4byte gStringVar1 _0806E490: .4byte gUnknown_02039460 _0806E494: .4byte 0x01000040 _0806E498: .4byte gWindowConfig_81E6CAC _0806E49C: .4byte 0xffffff00 _0806E4A0: .4byte 0x06014300 thumb_func_end PartyMenuDoPrintHP thumb_func_start PartyMenuPrintHP PartyMenuPrintHP: @ 806E4A4 push {r4-r6,lr} mov r6, r8 push {r6} adds r5, r0, 0 adds r6, r1, 0 mov r8, r2 lsls r5, 24 lsrs r5, 24 lsls r6, 24 lsrs r6, 24 mov r0, r8 movs r1, 0x39 bl GetMonData adds r4, r0, 0 lsls r4, 16 lsrs r4, 16 mov r0, r8 movs r1, 0x3A bl GetMonData adds r3, r0, 0 lsls r3, 16 lsrs r3, 16 adds r0, r5, 0 adds r1, r6, 0 adds r2, r4, 0 bl PartyMenuDoPrintHP pop {r3} mov r8, r3 pop {r4-r6} pop {r0} bx r0 thumb_func_end PartyMenuPrintHP thumb_func_start PartyMenuTryPrintHP PartyMenuTryPrintHP: @ 806E4E8 push {r4-r6,lr} adds r4, r1, 0 lsls r0, 24 lsrs r5, r0, 24 adds r6, r5, 0 adds r0, r4, 0 movs r1, 0xB bl GetMonData cmp r0, 0 beq _0806E534 adds r0, r4, 0 movs r1, 0x2D bl GetMonData cmp r0, 0 bne _0806E534 bl IsLinkDoubleBattle lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _0806E522 adds r0, r5, 0 movs r1, 0x2 adds r2, r4, 0 bl PartyMenuPrintHP b _0806E534 _0806E522: bl IsDoubleBattle adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 adds r0, r6, 0 adds r2, r4, 0 bl PartyMenuPrintHP _0806E534: pop {r4-r6} pop {r0} bx r0 thumb_func_end PartyMenuTryPrintHP thumb_func_start PartyMenuTryPrintMonsHP PartyMenuTryPrintMonsHP: @ 806E53C push {r4-r6,lr} movs r4, 0 movs r6, 0x64 ldr r5, _0806E560 @ =gPlayerParty _0806E544: adds r1, r4, 0 muls r1, r6 adds r1, r5 adds r0, r4, 0 bl PartyMenuTryPrintHP adds r0, r4, 0x1 lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0x5 bls _0806E544 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0806E560: .4byte gPlayerParty thumb_func_end PartyMenuTryPrintMonsHP thumb_func_start unref_sub_806E564 unref_sub_806E564: @ 806E564 bx lr thumb_func_end unref_sub_806E564 thumb_func_start unref_sub_806E568 unref_sub_806E568: @ 806E568 bx lr thumb_func_end unref_sub_806E568 thumb_func_start nullsub_12 nullsub_12: @ 806E56C bx lr thumb_func_end nullsub_12 thumb_func_start nullsub_13 nullsub_13: @ 806E570 bx lr thumb_func_end nullsub_13 thumb_func_start PartyMenuDoDrawHPBar PartyMenuDoDrawHPBar: @ 806E574 push {r4-r6,lr} sub sp, 0x18 lsls r0, 24 lsrs r6, r0, 24 lsls r1, 24 lsrs r5, r1, 24 lsls r2, 16 lsrs r2, 16 lsls r3, 16 lsrs r3, 16 ldr r0, _0806E624 @ =0xffff8000 str r0, [sp, 0x14] str r3, [sp] str r2, [sp, 0x4] movs r0, 0 str r0, [sp, 0x8] lsls r2, 16 asrs r2, 16 lsls r3, 16 asrs r3, 16 adds r0, r2, 0 adds r1, r3, 0 bl GetHPBarLevel lsls r0, 24 lsrs r3, r0, 24 adds r4, r3, 0 cmp r3, 0x2 bls _0806E5BE mov r2, sp ldrb r1, [r2, 0xC] movs r0, 0x20 negs r0, r0 ands r0, r1 movs r1, 0x4 orrs r0, r1 strb r0, [r2, 0xC] _0806E5BE: cmp r3, 0x2 bne _0806E5D2 mov r2, sp ldrb r1, [r2, 0xC] movs r0, 0x20 negs r0, r0 ands r0, r1 movs r1, 0x5 orrs r0, r1 strb r0, [r2, 0xC] _0806E5D2: cmp r4, 0x1 bhi _0806E5E6 mov r2, sp ldrb r1, [r2, 0xC] movs r0, 0x20 negs r0, r0 ands r0, r1 movs r1, 0x6 orrs r0, r1 strb r0, [r2, 0xC] _0806E5E6: movs r0, 0x80 lsls r0, 1 str r0, [sp, 0x10] ldr r2, _0806E628 @ =gUnknown_08376858 lsls r1, r6, 2 lsls r0, r5, 1 adds r0, r5 lsls r0, 3 adds r1, r0 adds r1, r2 ldr r4, [r1] add r1, sp, 0x14 mov r0, sp adds r2, r4, 0 movs r3, 0 bl sub_80460C8 subs r4, 0x4 ldr r1, _0806E62C @ =0x00003109 adds r0, r1, 0 strh r0, [r4] adds r1, 0x1 adds r0, r1, 0 strh r0, [r4, 0x2] adds r1, 0x1 adds r0, r1, 0 strh r0, [r4, 0x10] add sp, 0x18 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0806E624: .4byte 0xffff8000 _0806E628: .4byte gUnknown_08376858 _0806E62C: .4byte 0x00003109 thumb_func_end PartyMenuDoDrawHPBar thumb_func_start PartyMenuDrawHPBar PartyMenuDrawHPBar: @ 806E630 push {r4-r6,lr} mov r6, r8 push {r6} adds r5, r0, 0 adds r6, r1, 0 mov r8, r2 lsls r5, 24 lsrs r5, 24 lsls r6, 24 lsrs r6, 24 mov r0, r8 movs r1, 0x39 bl GetMonData adds r4, r0, 0 lsls r4, 16 lsrs r4, 16 mov r0, r8 movs r1, 0x3A bl GetMonData adds r3, r0, 0 lsls r3, 16 lsrs r3, 16 adds r0, r5, 0 adds r1, r6, 0 adds r2, r4, 0 bl PartyMenuDoDrawHPBar pop {r3} mov r8, r3 pop {r4-r6} pop {r0} bx r0 thumb_func_end PartyMenuDrawHPBar thumb_func_start PartyMenuTryDrawHPBar PartyMenuTryDrawHPBar: @ 806E674 push {r4-r6,lr} adds r4, r1, 0 lsls r0, 24 lsrs r5, r0, 24 adds r6, r5, 0 adds r0, r4, 0 movs r1, 0xB bl GetMonData cmp r0, 0 beq _0806E6C0 adds r0, r4, 0 movs r1, 0x2D bl GetMonData cmp r0, 0 bne _0806E6C0 bl IsLinkDoubleBattle lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _0806E6AE adds r0, r5, 0 movs r1, 0x2 adds r2, r4, 0 bl PartyMenuDrawHPBar b _0806E6C0 _0806E6AE: bl IsDoubleBattle adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 adds r0, r6, 0 adds r2, r4, 0 bl PartyMenuDrawHPBar _0806E6C0: pop {r4-r6} pop {r0} bx r0 thumb_func_end PartyMenuTryDrawHPBar thumb_func_start PartyMenuDrawHPBars PartyMenuDrawHPBars: @ 806E6C8 push {r4-r6,lr} movs r4, 0 movs r6, 0x64 ldr r5, _0806E6EC @ =gPlayerParty _0806E6D0: adds r1, r4, 0 muls r1, r6 adds r1, r5 adds r0, r4, 0 bl PartyMenuTryDrawHPBar adds r0, r4, 0x1 lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0x5 bls _0806E6D0 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0806E6EC: .4byte gPlayerParty thumb_func_end PartyMenuDrawHPBars thumb_func_start sub_806E6F0 sub_806E6F0: @ 806E6F0 push {r4,r5,lr} sub sp, 0x64 adds r4, r0, 0 adds r5, r1, 0 mov r0, sp adds r1, r4, 0 movs r2, 0x64 bl memcpy adds r0, r4, 0 adds r1, r5, 0 movs r2, 0x64 bl memcpy adds r0, r5, 0 mov r1, sp movs r2, 0x64 bl memcpy add sp, 0x64 pop {r4,r5} pop {r0} bx r0 thumb_func_end sub_806E6F0 thumb_func_start sub_806E720 sub_806E720: @ 806E720 push {r4,lr} lsls r0, 24 lsrs r0, 21 adds r0, r3 ldrb r4, [r0] lsls r4, 25 movs r3, 0x80 lsls r3, 18 adds r4, r3 lsrs r4, 24 ldrb r0, [r0, 0x1] adds r0, 0x1 lsls r0, 24 lsrs r0, 24 movs r3, 0x1E subs r3, r0 strb r3, [r1] movs r0, 0x14 subs r0, r4 strb r0, [r2] pop {r4} pop {r0} bx r0 thumb_func_end sub_806E720 thumb_func_start sub_806E750 sub_806E750: @ 806E750 push {r4-r6,lr} mov r6, r9 mov r5, r8 push {r5,r6} sub sp, 0xC adds r5, r0, 0 adds r4, r1, 0 mov r9, r2 adds r6, r3, 0 lsls r5, 24 lsrs r5, 24 lsls r6, 24 lsrs r6, 24 movs r0, 0x9 add r0, sp mov r8, r0 adds r0, r5, 0 add r1, sp, 0x8 mov r2, r8 adds r3, r4, 0 bl sub_806E720 add r0, sp, 0x8 ldrb r0, [r0] mov r2, r8 ldrb r1, [r2] lsls r5, 3 adds r5, r4 ldrb r2, [r5, 0x1] ldrb r3, [r5] mov r4, r9 str r4, [sp] ldr r4, [r5, 0x4] str r4, [sp, 0x4] bl sub_8089C50 add r0, sp, 0x8 ldrb r1, [r0] adds r1, 0x1 lsls r1, 24 lsrs r1, 24 mov r0, r8 ldrb r2, [r0] adds r2, 0x1 lsls r2, 24 lsrs r2, 24 ldrb r3, [r5] str r6, [sp] ldrb r0, [r5, 0x1] subs r0, 0x1 lsls r0, 24 lsrs r0, 24 str r0, [sp, 0x4] movs r0, 0 bl InitMenu add sp, 0xC pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r6} pop {r0} bx r0 thumb_func_end sub_806E750 thumb_func_start sub_806E7D0 sub_806E7D0: @ 806E7D0 push {r4-r6,lr} sub sp, 0x4 adds r4, r0, 0 adds r6, r1, 0 lsls r4, 24 lsrs r4, 24 mov r5, sp adds r5, 0x1 adds r0, r4, 0 mov r1, sp adds r2, r5, 0 adds r3, r6, 0 bl sub_806E720 mov r0, sp ldrb r0, [r0] ldrb r1, [r5] lsls r4, 3 adds r4, r6 ldrb r2, [r4, 0x1] adds r2, r0, r2 lsls r2, 24 lsrs r2, 24 ldrb r3, [r4] lsls r3, 1 adds r3, r1, r3 adds r3, 0x1 lsls r3, 24 lsrs r3, 24 bl MenuZeroFillWindowRect bl HandleDestroyMenuCursors add sp, 0x4 pop {r4-r6} pop {r0} bx r0 thumb_func_end sub_806E7D0 thumb_func_start PartyMenuGetPopupMenuFunc PartyMenuGetPopupMenuFunc: @ 806E81C lsls r0, 24 lsls r3, 24 lsrs r3, 24 lsrs r0, 21 adds r0, r1 ldr r0, [r0, 0x4] adds r0, r3 ldrb r0, [r0] lsls r0, 3 adds r0, r2 ldr r0, [r0, 0x4] bx lr thumb_func_end PartyMenuGetPopupMenuFunc .section .text_8070968 thumb_func_start sub_8070968 sub_8070968: @ 8070968 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} movs r7, 0 ldr r0, _08070A10 @ =0x0201c000 mov r9, r0 ldr r1, _08070A14 @ =0xfffff264 add r1, r9 mov r10, r1 ldr r0, _08070A18 @ =gStringVar1 mov r8, r0 _08070982: mov r1, r9 ldr r0, [r1] ldr r1, _08070A1C @ =gUnknown_08376D1C adds r1, r7, r1 ldrb r1, [r1] bl GetMonData adds r6, r7, 0x6 lsls r6, 1 add r6, r10 strh r0, [r6] adds r0, r7, 0 movs r1, 0x3 bl __udivsi3 lsls r0, 24 lsrs r0, 24 lsls r4, r0, 3 adds r4, r0 adds r4, 0xB lsls r4, 24 lsrs r4, 24 adds r0, r7, 0 movs r1, 0x3 bl __umodsi3 adds r5, r0, 0 lsls r5, 1 adds r5, 0x1 lsls r5, 24 lsrs r5, 24 movs r0, 0xFC mov r1, r8 strb r0, [r1] movs r0, 0x14 strb r0, [r1, 0x1] movs r0, 0x6 strb r0, [r1, 0x2] movs r0, 0 ldrsh r1, [r6, r0] mov r0, r8 adds r0, 0x3 movs r2, 0x1 movs r3, 0x3 bl ConvertIntToDecimalStringN adds r4, 0x6 lsls r4, 3 adds r4, 0x6 lsls r4, 24 lsrs r4, 24 lsls r5, 3 mov r0, r8 adds r1, r4, 0 adds r2, r5, 0 movs r3, 0 bl MenuPrint_PixelCoords adds r0, r7, 0x1 lsls r0, 24 lsrs r7, r0, 24 cmp r7, 0x5 bls _08070982 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08070A10: .4byte 0x0201c000 _08070A14: .4byte 0xfffff264 _08070A18: .4byte gStringVar1 _08070A1C: .4byte gUnknown_08376D1C thumb_func_end sub_8070968 thumb_func_start sub_8070A20 sub_8070A20: @ 8070A20 push {r4-r7,lr} adds r6, r1, 0 lsls r0, 24 lsrs r7, r0, 24 adds r0, r6, 0 bl GetMonStatusAndPokerus lsls r0, 24 lsrs r0, 24 cmp r0, 0 beq _08070A3A cmp r0, 0x6 bne _08070A42 _08070A3A: adds r0, r6, 0 adds r1, r7, 0 bl PartyMenuUpdateLevelOrStatus _08070A42: bl IsDoubleBattle adds r5, r0, 0 lsls r5, 24 lsrs r5, 24 adds r0, r6, 0 movs r1, 0x39 bl GetMonData adds r4, r0, 0 lsls r4, 16 lsrs r4, 16 adds r0, r6, 0 movs r1, 0x3A bl GetMonData adds r3, r0, 0 lsls r3, 16 lsrs r3, 16 adds r0, r7, 0 adds r1, r5, 0 adds r2, r4, 0 bl PartyMenuDoPrintHP adds r0, r7, 0 adds r1, r6, 0 bl PartyMenuTryDrawHPBar ldr r4, _08070ABC @ =0x0201c000 ldrb r0, [r4, 0x4] adds r1, r7, 0 bl GetMonIconSpriteId_maybe lsls r0, 24 lsrs r0, 24 adds r1, r6, 0 bl SetMonIconAnim bl IsDoubleBattle adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 lsls r0, r1, 1 adds r0, r1 lsls r0, 2 lsls r1, r7, 1 adds r0, r1 ldr r1, _08070AC0 @ =gUnknown_083769A8 adds r0, r1 movs r1, 0x7 bl task_pc_turn_off ldr r0, _08070AC4 @ =0xfffff261 adds r4, r0 movs r0, 0x2 strb r0, [r4] pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08070ABC: .4byte 0x0201c000 _08070AC0: .4byte gUnknown_083769A8 _08070AC4: .4byte 0xfffff261 thumb_func_end sub_8070A20 thumb_func_start Task_RareCandy3 Task_RareCandy3: @ 8070AC8 push {r4-r7,lr} lsls r0, 24 lsrs r6, r0, 24 movs r0, 0 bl WaitFanfare lsls r0, 24 cmp r0, 0 bne _08070ADC b _08070C2C _08070ADC: ldr r0, _08070B24 @ =gMain ldrh r1, [r0, 0x2E] movs r5, 0x1 adds r0, r5, 0 ands r0, r1 cmp r0, 0 bne _08070AF4 movs r0, 0x2 ands r0, r1 cmp r0, 0 bne _08070AF4 b _08070C2C _08070AF4: movs r0, 0xB movs r1, 0 movs r2, 0x1D movs r3, 0x7 bl MenuZeroFillWindowRect ldr r7, _08070B28 @ =0x0201c000 ldr r0, [r7] movs r1, 0x1 bl MonTryLearningNewMove lsls r0, 16 lsrs r4, r0, 16 ldr r1, _08070B2C @ =0xfffff282 adds r0, r7, r1 strh r5, [r0] ldr r0, _08070B30 @ =0x0000fffe cmp r4, r0 beq _08070BDC cmp r4, r0 bgt _08070B34 cmp r4, 0 beq _08070B40 b _08070BF4 .align 2, 0 _08070B24: .4byte gMain _08070B28: .4byte 0x0201c000 _08070B2C: .4byte 0xfffff282 _08070B30: .4byte 0x0000fffe _08070B34: ldr r0, _08070B3C @ =0x0000ffff cmp r4, r0 beq _08070B7C b _08070BF4 .align 2, 0 _08070B3C: .4byte 0x0000ffff _08070B40: ldr r0, [r7] movs r1, 0 movs r2, 0 bl GetEvolutionTargetSpecies lsls r0, 16 lsrs r2, r0, 16 cmp r2, 0 beq _08070B74 ldr r1, _08070B6C @ =gCB2_AfterEvolution ldr r0, _08070B70 @ =sub_80A53F8 str r0, [r1] ldr r0, [r7] ldrb r3, [r7, 0x5] adds r1, r2, 0 movs r2, 0x1 bl BeginEvolutionScene adds r0, r6, 0 bl DestroyTask b _08070C2C .align 2, 0 _08070B6C: .4byte gCB2_AfterEvolution _08070B70: .4byte sub_80A53F8 _08070B74: adds r0, r6, 0 bl sub_8070D90 b _08070C2C _08070B7C: ldr r0, [r7] ldr r1, _08070BBC @ =gStringVar1 bl GetMonNickname ldr r0, _08070BC0 @ =gStringVar2 ldr r5, _08070BC4 @ =gMoveToLearn ldrh r2, [r5] movs r1, 0xD muls r1, r2 ldr r2, _08070BC8 @ =gMoveNames adds r1, r2 bl StringCopy ldr r4, _08070BCC @ =gStringVar4 ldr r1, _08070BD0 @ =gOtherText_WantsToLearn adds r0, r4, 0 bl StringExpandPlaceholders adds r0, r4, 0 movs r1, 0x1 bl sub_806E834 ldrh r0, [r5] strh r0, [r7, 0x8] ldr r1, _08070BD4 @ =gTasks lsls r0, r6, 2 adds r0, r6 lsls r0, 3 adds r0, r1 ldr r1, _08070BD8 @ =sub_806F358 b _08070C2A .align 2, 0 _08070BBC: .4byte gStringVar1 _08070BC0: .4byte gStringVar2 _08070BC4: .4byte gMoveToLearn _08070BC8: .4byte gMoveNames _08070BCC: .4byte gStringVar4 _08070BD0: .4byte gOtherText_WantsToLearn _08070BD4: .4byte gTasks _08070BD8: .4byte sub_806F358 _08070BDC: ldr r0, _08070BEC @ =gTasks lsls r1, r6, 2 adds r1, r6 lsls r1, 3 adds r1, r0 ldr r0, _08070BF0 @ =sub_8070C54 str r0, [r1] b _08070C2C .align 2, 0 _08070BEC: .4byte gTasks _08070BF0: .4byte sub_8070C54 _08070BF4: ldr r0, _08070C34 @ =0x0201c000 ldr r0, [r0] ldr r1, _08070C38 @ =gStringVar1 bl GetMonNickname ldr r0, _08070C3C @ =gStringVar2 movs r1, 0xD muls r1, r4 ldr r2, _08070C40 @ =gMoveNames adds r1, r2 bl StringCopy ldr r4, _08070C44 @ =gStringVar4 ldr r1, _08070C48 @ =gOtherText_LearnedMove adds r0, r4, 0 bl StringExpandPlaceholders adds r0, r4, 0 movs r1, 0x1 bl sub_806E834 ldr r1, _08070C4C @ =gTasks lsls r0, r6, 2 adds r0, r6 lsls r0, 3 adds r0, r1 ldr r1, _08070C50 @ =Task_TeamMonTMMove3 _08070C2A: str r1, [r0] _08070C2C: pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08070C34: .4byte 0x0201c000 _08070C38: .4byte gStringVar1 _08070C3C: .4byte gStringVar2 _08070C40: .4byte gMoveNames _08070C44: .4byte gStringVar4 _08070C48: .4byte gOtherText_LearnedMove _08070C4C: .4byte gTasks _08070C50: .4byte Task_TeamMonTMMove3 thumb_func_end Task_RareCandy3 thumb_func_start sub_8070C54 sub_8070C54: @ 8070C54 push {r4-r7,lr} lsls r0, 24 lsrs r6, r0, 24 ldr r7, _08070C78 @ =0x0201c000 ldr r0, [r7] movs r1, 0 bl MonTryLearningNewMove lsls r0, 16 lsrs r4, r0, 16 ldr r0, _08070C7C @ =0x0000fffe cmp r4, r0 beq _08070D28 cmp r4, r0 bgt _08070C80 cmp r4, 0 beq _08070C8C b _08070D30 .align 2, 0 _08070C78: .4byte 0x0201c000 _08070C7C: .4byte 0x0000fffe _08070C80: ldr r0, _08070C88 @ =0x0000ffff cmp r4, r0 beq _08070CC8 b _08070D30 .align 2, 0 _08070C88: .4byte 0x0000ffff _08070C8C: ldr r0, [r7] movs r1, 0 movs r2, 0 bl GetEvolutionTargetSpecies lsls r0, 16 lsrs r2, r0, 16 cmp r2, 0 beq _08070CC0 ldr r1, _08070CB8 @ =gCB2_AfterEvolution ldr r0, _08070CBC @ =sub_80A53F8 str r0, [r1] ldr r0, [r7] ldrb r3, [r7, 0x5] adds r1, r2, 0 movs r2, 0x1 bl BeginEvolutionScene adds r0, r6, 0 bl DestroyTask b _08070D68 .align 2, 0 _08070CB8: .4byte gCB2_AfterEvolution _08070CBC: .4byte sub_80A53F8 _08070CC0: adds r0, r6, 0 bl sub_8070D90 b _08070D68 _08070CC8: ldr r0, [r7] ldr r1, _08070D08 @ =gStringVar1 bl GetMonNickname ldr r0, _08070D0C @ =gStringVar2 ldr r5, _08070D10 @ =gMoveToLearn ldrh r2, [r5] movs r1, 0xD muls r1, r2 ldr r2, _08070D14 @ =gMoveNames adds r1, r2 bl StringCopy ldr r4, _08070D18 @ =gStringVar4 ldr r1, _08070D1C @ =gOtherText_WantsToLearn adds r0, r4, 0 bl StringExpandPlaceholders adds r0, r4, 0 movs r1, 0x1 bl sub_806E834 ldrh r0, [r5] strh r0, [r7, 0x8] ldr r1, _08070D20 @ =gTasks lsls r0, r6, 2 adds r0, r6 lsls r0, 3 adds r0, r1 ldr r1, _08070D24 @ =sub_806F358 b _08070D66 .align 2, 0 _08070D08: .4byte gStringVar1 _08070D0C: .4byte gStringVar2 _08070D10: .4byte gMoveToLearn _08070D14: .4byte gMoveNames _08070D18: .4byte gStringVar4 _08070D1C: .4byte gOtherText_WantsToLearn _08070D20: .4byte gTasks _08070D24: .4byte sub_806F358 _08070D28: adds r0, r6, 0 bl sub_8070C54 b _08070D68 _08070D30: ldr r0, _08070D70 @ =0x0201c000 ldr r0, [r0] ldr r1, _08070D74 @ =gStringVar1 bl GetMonNickname ldr r0, _08070D78 @ =gStringVar2 movs r1, 0xD muls r1, r4 ldr r2, _08070D7C @ =gMoveNames adds r1, r2 bl StringCopy ldr r4, _08070D80 @ =gStringVar4 ldr r1, _08070D84 @ =gOtherText_LearnedMove adds r0, r4, 0 bl StringExpandPlaceholders adds r0, r4, 0 movs r1, 0x1 bl sub_806E834 ldr r1, _08070D88 @ =gTasks lsls r0, r6, 2 adds r0, r6 lsls r0, 3 adds r0, r1 ldr r1, _08070D8C @ =Task_TeamMonTMMove3 _08070D66: str r1, [r0] _08070D68: pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08070D70: .4byte 0x0201c000 _08070D74: .4byte gStringVar1 _08070D78: .4byte gStringVar2 _08070D7C: .4byte gMoveNames _08070D80: .4byte gStringVar4 _08070D84: .4byte gOtherText_LearnedMove _08070D88: .4byte gTasks _08070D8C: .4byte Task_TeamMonTMMove3 thumb_func_end sub_8070C54 thumb_func_start sub_8070D90 sub_8070D90: @ 8070D90 push {r4,lr} lsls r0, 24 lsrs r0, 24 ldr r4, _08070DB4 @ =gTasks ldr r3, _08070DB8 @ =0x0201c000 ldrb r2, [r3, 0x4] lsls r1, r2, 2 adds r1, r2 lsls r1, 3 adds r1, r4 ldr r2, [r3, 0x10] str r2, [r1] bl DestroyTask pop {r4} pop {r0} bx r0 .align 2, 0 _08070DB4: .4byte gTasks _08070DB8: .4byte 0x0201c000 thumb_func_end sub_8070D90 thumb_func_start DoEvolutionStoneItemEffect DoEvolutionStoneItemEffect: @ 8070DBC push {r4-r6,lr} adds r4, r0, 0 adds r5, r2, 0 lsls r4, 24 lsrs r4, 24 lsls r1, 16 lsrs r6, r1, 16 movs r0, 0x5 bl PlaySE ldr r1, _08070E18 @ =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 ldr r1, _08070E1C @ =TaskDummy str r1, [r0] adds r0, r4, 0 adds r1, r6, 0 adds r2, r5, 0 bl sub_806E8D0 ldr r1, _08070E20 @ =gCB2_AfterEvolution ldr r0, _08070E24 @ =sub_80A53F8 str r0, [r1] ldr r0, _08070E28 @ =0x0201c000 ldrb r0, [r0, 0x5] adds r1, r6, 0 movs r2, 0 bl ExecuteTableBasedItemEffect__ lsls r0, 24 cmp r0, 0 beq _08070E38 ldr r1, _08070E2C @ =gUnknown_0202E8F4 movs r0, 0 strb r0, [r1] ldr r0, _08070E30 @ =gOtherText_WontHaveAnyEffect movs r1, 0x1 bl sub_806E834 ldr r0, _08070E34 @ =sub_806FB0C movs r1, 0x5 bl CreateTask b _08070E40 .align 2, 0 _08070E18: .4byte gTasks _08070E1C: .4byte TaskDummy _08070E20: .4byte gCB2_AfterEvolution _08070E24: .4byte sub_80A53F8 _08070E28: .4byte 0x0201c000 _08070E2C: .4byte gUnknown_0202E8F4 _08070E30: .4byte gOtherText_WontHaveAnyEffect _08070E34: .4byte sub_806FB0C _08070E38: adds r0, r6, 0 movs r1, 0x1 bl RemoveBagItem _08070E40: pop {r4-r6} pop {r0} bx r0 thumb_func_end DoEvolutionStoneItemEffect thumb_func_start GetItemEffectType GetItemEffectType: @ 8070E48 push {r4,r5,lr} lsls r0, 16 lsrs r0, 16 cmp r0, 0xAF bne _08070E5C ldr r4, _08070E58 @ =gSaveBlock1 + 0x3676 b _08070E66 .align 2, 0 _08070E58: .4byte gSaveBlock1 + 0x3676 _08070E5C: ldr r1, _08070E8C @ =gItemEffectTable subs r0, 0xD lsls r0, 2 adds r0, r1 ldr r4, [r0] _08070E66: ldrb r1, [r4] movs r5, 0x3F adds r0, r5, 0 ands r0, r1 cmp r0, 0 bne _08070E88 ldrb r0, [r4, 0x1] cmp r0, 0 bne _08070E88 ldrb r0, [r4, 0x2] cmp r0, 0 bne _08070E88 ldrb r3, [r4, 0x3] movs r0, 0x80 ands r0, r3 cmp r0, 0 beq _08070E90 _08070E88: movs r0, 0 b _08070F8A .align 2, 0 _08070E8C: .4byte gItemEffectTable _08070E90: movs r2, 0x40 adds r0, r2, 0 ands r0, r1 cmp r0, 0 beq _08070E9E movs r0, 0xA b _08070F8A _08070E9E: adds r0, r2, 0 ands r0, r3 cmp r0, 0 beq _08070EAA movs r0, 0x1 b _08070F8A _08070EAA: adds r2, r5, 0 ands r2, r3 cmp r2, 0 bne _08070EB8 lsrs r0, r1, 7 cmp r0, 0 beq _08070EFA _08070EB8: cmp r2, 0x20 bne _08070EC0 movs r0, 0x4 b _08070F8A _08070EC0: cmp r2, 0x10 bne _08070EC8 movs r0, 0x3 b _08070F8A _08070EC8: cmp r2, 0x8 bne _08070ED0 movs r0, 0x5 b _08070F8A _08070ED0: cmp r2, 0x4 bne _08070ED8 movs r0, 0x6 b _08070F8A _08070ED8: cmp r2, 0x2 bne _08070EE0 movs r0, 0x7 b _08070F8A _08070EE0: cmp r2, 0x1 bne _08070EE8 movs r0, 0x8 b _08070F8A _08070EE8: lsrs r0, r1, 7 cmp r0, 0 beq _08070EF6 cmp r2, 0 bne _08070EF6 movs r0, 0x9 b _08070F8A _08070EF6: movs r0, 0xB b _08070F8A _08070EFA: ldrb r1, [r4, 0x4] movs r0, 0x44 ands r0, r1 adds r2, r1, 0 cmp r0, 0 beq _08070F0A movs r0, 0x2 b _08070F8A _08070F0A: movs r5, 0x2 adds r0, r5, 0 ands r0, r2 cmp r0, 0 beq _08070F18 movs r0, 0xC b _08070F8A _08070F18: movs r3, 0x1 adds r0, r3, 0 ands r0, r2 cmp r0, 0 beq _08070F26 movs r0, 0xD b _08070F8A _08070F26: ldrb r1, [r4, 0x5] movs r0, 0x8 ands r0, r1 cmp r0, 0 beq _08070F34 movs r0, 0xE b _08070F8A _08070F34: movs r0, 0x4 ands r0, r1 cmp r0, 0 beq _08070F40 movs r0, 0xF b _08070F8A _08070F40: adds r0, r5, 0 ands r0, r1 cmp r0, 0 beq _08070F4C movs r0, 0x10 b _08070F8A _08070F4C: adds r0, r3, 0 ands r0, r1 cmp r0, 0 beq _08070F58 movs r0, 0x11 b _08070F8A _08070F58: movs r0, 0x80 ands r0, r2 cmp r0, 0 beq _08070F64 movs r0, 0x12 b _08070F8A _08070F64: movs r0, 0x20 ands r0, r2 cmp r0, 0 beq _08070F70 movs r0, 0x13 b _08070F8A _08070F70: movs r0, 0x10 ands r0, r1 cmp r0, 0 beq _08070F7C movs r0, 0x14 b _08070F8A _08070F7C: movs r0, 0x18 ands r0, r2 cmp r0, 0 bne _08070F88 movs r0, 0x16 b _08070F8A _08070F88: movs r0, 0x15 _08070F8A: pop {r4,r5} pop {r1} bx r1 thumb_func_end GetItemEffectType thumb_func_start unref_sub_8070F90 unref_sub_8070F90: @ 8070F90 push {lr} ldr r0, _08070FAC @ =0x00000801 bl FlagSet movs r0, 0x80 lsls r0, 4 bl FlagSet ldr r0, _08070FB0 @ =0x00000802 bl FlagSet pop {r0} bx r0 .align 2, 0 _08070FAC: .4byte 0x00000801 _08070FB0: .4byte 0x00000802 thumb_func_end unref_sub_8070F90 .align 2, 0 @ Don't pad with nop.