diff options
Diffstat (limited to 'asm/party_menu.s')
-rw-r--r-- | asm/party_menu.s | 5301 |
1 files changed, 5301 insertions, 0 deletions
diff --git a/asm/party_menu.s b/asm/party_menu.s new file mode 100644 index 000000000..61d109a7b --- /dev/null +++ b/asm/party_menu.s @@ -0,0 +1,5301 @@ + .include "constants/gba_constants.s" + .include "constants/species_constants.s" + .include "asm/macros.s" + + .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 + ldrb r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 4 + ldr r1, _0806AF30 + 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 + strh r1, [r0] +_0806AF64: + ldr r0, _0806AF88 + 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 gUnknown_020239F8 +_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 + bl SetMainCallback2 + pop {r0} + bx r0 + .align 2, 0 +_0806AFA8: .4byte sub_806B460 + thumb_func_end sub_806AF8C + + thumb_func_start sub_806AFAC +sub_806AFAC: @ 806AFAC + push {lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + ldr r2, _0806AFCC + 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 sub_806AFAC + + thumb_func_start sub_806AFD0 +sub_806AFD0: @ 806AFD0 + push {r4,r5,lr} + ldr r1, _0806AFF0 + 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 + 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 + adds r5, r4, r0 + movs r1, 0 + ldrsh r3, [r5, r1] + ldr r0, _0806B04C + 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 + adds r2, r3 + bl sub_806D90C + 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 sub_806DA98 + b _0806B0D8 +_0806B066: + movs r1, 0x98 + lsls r1, 2 + adds r0, r4, r1 + ldrb r0, [r0] + bl sub_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 + 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 sub_806E334 + b _0806B0D8 +_0806B0AA: + bl sub_806E0C4 + ldr r1, _0806B0B8 + movs r0, 0x99 + lsls r0, 2 + adds r1, r0 + b _0806B0E0 + .align 2, 0 +_0806B0B8: .4byte 0x0201b000 +_0806B0BC: + bl sub_806E53C + b _0806B0D8 +_0806B0C2: + bl nullsub_13 + ldr r1, _0806B0D0 + movs r0, 0x99 + lsls r0, 2 + adds r1, r0 + b _0806B0E0 + .align 2, 0 +_0806B0D0: .4byte 0x0201b000 +_0806B0D4: + bl sub_806E6C8 +_0806B0D8: + ldr r1, _0806B0E8 + 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 + 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 + ldr r1, _0806B148 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x11 + bls _0806B13A + b _0806B450 +_0806B13A: + lsls r0, 2 + ldr r1, _0806B14C + 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 + movs r5, 0x80 + lsls r5, 5 + ldr r7, _0806B230 + 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 + 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 + ldrb r0, [r2, 0x8] + movs r1, 0x80 + orrs r0, r1 + strb r0, [r2, 0x8] + ldr r1, _0806B238 + ldr r2, _0806B23C + 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 + movs r2, 0x99 + lsls r2, 2 + adds r0, r1, r2 + movs r2, 0 + strh r2, [r0] + ldr r3, _0806B270 + adds r0, r1, r3 + strh r2, [r0] + movs r0, 0x9A + lsls r0, 2 + adds r1, r0 + strh r2, [r1] + ldr r1, _0806B274 + ldr r2, _0806B278 + 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 + 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 + ldr r2, _0806B2A8 + 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 + 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 + bl SetUpWindowConfig + ldr r1, _0806B2E4 + ldr r0, _0806B2E8 + adds r1, r0 + b _0806B42C + .align 2, 0 +_0806B2E0: .4byte gWindowConfig_81E6C90 +_0806B2E4: .4byte gMain +_0806B2E8: .4byte 0x0000043c +_0806B2EC: + ldr r4, _0806B308 + ldr r1, _0806B30C + adds r0, r4, 0 + bl InitWindowFromConfig + adds r0, r4, 0 + movs r1, 0x1 + bl MultistepInitWindowTileData + ldr r1, _0806B310 + ldr r2, _0806B314 + 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 + movs r3, 0x99 + lsls r3, 2 + adds r0, r3 + movs r1, 0x1 + strh r1, [r0] + ldr r1, _0806B33C + ldr r0, _0806B340 + adds r1, r0 + b _0806B42C + .align 2, 0 +_0806B338: .4byte 0x0201b000 +_0806B33C: .4byte gMain +_0806B340: .4byte 0x0000043c +_0806B344: + ldr r0, _0806B368 + 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 + ldr r2, _0806B370 + 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 + ldr r0, _0806B3B4 + 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 + ldr r2, _0806B3BC + 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 + bl MultistepInitMenuWindowBegin + b _0806B426 + .align 2, 0 +_0806B3C8: .4byte gWindowConfig_81E6CC8 +_0806B3CC: + bl MultistepInitMenuWindowContinue + cmp r0, 0 + beq _0806B450 + ldr r1, _0806B3DC + ldr r0, _0806B3E0 + adds r1, r0 + b _0806B42C + .align 2, 0 +_0806B3DC: .4byte gMain +_0806B3E0: .4byte 0x0000043c +_0806B3E4: + ldr r0, _0806B3FC + ldr r1, _0806B400 + adds r0, r1 + ldrb r0, [r0] + movs r1, 0 + bl sub_806D538 + ldr r1, _0806B404 + ldr r2, _0806B408 + 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 + ldrb r1, [r2, 0x8] + movs r0, 0x7F + ands r0, r1 + strb r0, [r2, 0x8] +_0806B426: + ldr r1, _0806B438 + ldr r3, _0806B43C + 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 + 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 + 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 + 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 + adds r0, r2, 0 + strh r0, [r1] + adds r1, 0x2 + ldr r2, _0806B510 + adds r0, r2, 0 + strh r0, [r1] + adds r1, 0x2 + ldr r2, _0806B514 + adds r0, r2, 0 + strh r0, [r1] + adds r1, 0x2 + ldr r2, _0806B518 + adds r0, r2, 0 + strh r0, [r1] + ldr r0, _0806B51C + 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 + strh r1, [r2] + ldr r1, _0806B524 + 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 sub_806B528 +sub_806B528: @ 806B528 + push {lr} + ldr r0, _0806B53C + ldrh r1, [r0] + movs r0, 0x4B + ands r0, r1 + cmp r0, 0x4B + beq _0806B540 + movs r0, 0 + b _0806B542 + .align 2, 0 +_0806B53C: .4byte gUnknown_020239F8 +_0806B540: + movs r0, 0x1 +_0806B542: + pop {r1} + bx r1 + thumb_func_end sub_806B528 + + thumb_func_start sub_806B548 +sub_806B548: @ 806B548 + push {r4,lr} + ldr r0, _0806B574 + ldr r1, _0806B578 + adds r4, r0, r1 + ldrb r3, [r4] + cmp r3, 0 + beq _0806B56E + ldr r1, _0806B57C + ldr r2, _0806B580 + ldr r0, _0806B584 + str r1, [r0] + str r2, [r0, 0x4] + ldr r1, _0806B588 + 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 gBG2TilemapBuffer +_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 battle_type_is_double + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0 + bne _0806B5A8 + ldr r0, _0806B5A4 + strb r2, [r0] + b _0806B5C8 + .align 2, 0 +_0806B5A4: .4byte gUnknown_0202E8FA +_0806B5A8: + bl sub_806B528 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806B5C0 + ldr r1, _0806B5BC + movs r0, 0x2 + b _0806B5C4 + .align 2, 0 +_0806B5BC: .4byte gUnknown_0202E8FA +_0806B5C0: + ldr r1, _0806B5E4 + 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 + adds r4, r1, r0 + cmp r5, 0x8 + bls _0806B5DA + b _0806B900 +_0806B5DA: + lsls r0, r5, 2 + ldr r1, _0806B5EC + 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 + movs r2, 0x80 + lsls r2, 4 + movs r1, 0 + bl memset + b _0806B900 + .align 2, 0 +_0806B624: .4byte gBG2TilemapBuffer +_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 battle_type_is_double + lsls r0, 24 + cmp r0, 0 + bne _0806B666 + ldr r0, _0806B65C + 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 sub_806B528 + 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 battle_type_is_double + lsls r0, 24 + cmp r0, 0 + bne _0806B6C2 + ldr r0, _0806B6B8 + 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 sub_806B528 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806B6F6 + ldr r0, _0806B6EC + 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 gUnknown_03004428 +_0806B6F0: + ldrb r0, [r4, 0x4] + ldrb r1, [r4, 0x5] + b _0806B8BC +_0806B6F6: + ldr r0, _0806B710 + 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 battle_type_is_double + lsls r0, 24 + cmp r0, 0 + bne _0806B74A + ldr r0, _0806B740 + 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 sub_806B528 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806B77E + ldr r0, _0806B774 + 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 gUnknown_0300448C +_0806B778: + ldrb r0, [r4, 0x6] + ldrb r1, [r4, 0x7] + b _0806B8BC +_0806B77E: + ldr r0, _0806B798 + 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 battle_type_is_double + lsls r0, 24 + cmp r0, 0 + bne _0806B7D2 + ldr r0, _0806B7C8 + 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 sub_806B528 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806B80A + ldr r0, _0806B800 + 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 gUnknown_030044F0 +_0806B804: + ldrb r0, [r4, 0x8] + ldrb r1, [r4, 0x9] + b _0806B884 +_0806B80A: + ldr r0, _0806B828 + 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 battle_type_is_double + lsls r0, 24 + cmp r0, 0 + bne _0806B84C + ldr r0, _0806B848 + ldrb r0, [r0] + cmp r0, 0x5 + bhi _0806B896 + b _0806B8B8 + .align 2, 0 +_0806B848: .4byte gPlayerPartyCount +_0806B84C: + bl sub_806B528 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806B88E + ldr r0, _0806B87C + 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 gUnknown_03004554 +_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 + 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 + 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 + ldr r1, _0806B8FC + 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 + movs r2, 0x80 + lsls r2, 4 + movs r1, 0 + bl memset + ldr r1, _0806B94C + movs r0, 0x3 + strb r0, [r1] + ldr r0, _0806B950 + adds r4, r0, 0 + adds r4, 0x24 + ldr r5, _0806B954 + 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 gBG2TilemapBuffer +_0806B94C: .4byte gUnknown_0202E8FA +_0806B950: .4byte gUnknown_083769A8 +_0806B954: .4byte gUnknown_030043C4 +_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 + ldr r1, _0806B9A0 + 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 + 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 + 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 gBG2TilemapBuffer + 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 + 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 gBG2TilemapBuffer + 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 + mov r9, r1 + cmp r2, 0 + bne _0806BABC + ldr r1, _0806BB34 + 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 + 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 gBG2TilemapBuffer + 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 + 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 gBG2TilemapBuffer + 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 + mov r0, sp + movs r2, 0x18 + bl memcpy + ldr r3, _0806BBE8 + 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 + mov r0, sp + movs r2, 0x18 + bl memcpy + ldr r3, _0806BC38 + 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 + bl battle_type_is_double + 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 + 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 + 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 + 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 + 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 + bl object_new_hidden_with_callback + 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 + 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 + ldrh r0, [r0, 0x30] + b _0806BE2C + .align 2, 0 +_0806BDEC: .4byte gMain +_0806BDF0: + ldr r0, _0806BE1C + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0806BE24 + ldr r4, _0806BE20 + 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 + 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 + 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 +_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 + 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 + 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 + 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 + 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 sub_806DA44 + bl sub_806B528 + 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 + 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 + 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 + 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 + 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 + 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 + 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 + 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 + 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 + 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 + ldr r2, _0806C0D0 + adds r0, r2 + movs r1, 0x2 + strb r1, [r0] + ldr r1, _0806C0D4 + 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 battle_type_is_double + 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 + 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 + 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 + 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 + ldr r4, _0806C1D8 + adds r0, r4 + movs r1, 0x2 + strb r1, [r0] + ldr r4, _0806C1DC + mov r0, r8 + adds r1, r0, r6 + lsls r1, 2 + adds r1, r4 + ldr r3, _0806C1E0 + 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 sub_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 + 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 + 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 + lsls r3, r4, 4 + adds r1, r3, r4 + lsls r1, 2 + adds r1, r2 + ldr r0, _0806C258 + ldrb r0, [r0] + subs r0, 0x1 + b _0806C2AA + .align 2, 0 +_0806C254: .4byte gSprites +_0806C258: .4byte gPlayerPartyCount +_0806C25C: + ldr r0, _0806C278 + ldrb r0, [r0] + subs r0, 0x1 + cmp r3, r0 + bne _0806C280 +_0806C266: + ldr r2, _0806C27C + 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 + 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 + 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 + ldrb r0, [r0] + cmp r0, 0x1 + bls _0806C306 + cmp r3, 0 + bne _0806C306 + ldr r0, _0806C2E8 + 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 + 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 + 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 + 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 + 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 + 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 + 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 + lsls r3, r4, 4 + adds r1, r3, r4 + lsls r1, 2 + adds r1, r2 + ldr r0, _0806C3C0 + ldrb r0, [r0] + subs r0, 0x1 + b _0806C3D6 + .align 2, 0 +_0806C3BC: .4byte gSprites +_0806C3C0: .4byte gPlayerPartyCount +_0806C3C4: + ldr r2, _0806C3E4 + 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 + ldrb r0, [r0] + cmp r0, 0x2 + bls _0806C486 + ldr r0, _0806C414 + 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 + ldrb r0, [r0] + cmp r0, 0x4 + bls _0806C486 + ldr r0, _0806C444 + 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 + 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 + 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 + 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 + 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 + 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 + 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 + 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 + adds r0, r1 + movs r1, 0xB + bl GetMonData + cmp r0, 0 + bne _0806C528 +_0806C554: + cmp r4, 0 + bne _0806C538 +_0806C558: + ldr r0, _0806C578 + 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 + 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 + 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 gUnknown_03004428 +_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 + 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 + 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 gUnknown_030044F0 +_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 + 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 + 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 + 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 sub_806DA44 + cmp r6, 0x5 + bhi _0806C6A8 + lsls r0, r6, 1 + ldr r1, _0806C6A4 + 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 + 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 + 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 + 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 + lsls r3, r5, 4 + adds r1, r3, r5 + lsls r1, 2 + adds r1, r2 + ldr r0, _0806C73C + ldrb r0, [r0] + subs r0, 0x1 + b _0806C78C + .align 2, 0 +_0806C738: .4byte gSprites +_0806C73C: .4byte gPlayerPartyCount +_0806C740: + ldr r0, _0806C75C + ldrb r0, [r0] + subs r0, 0x1 + cmp r6, r0 + bne _0806C764 + ldr r2, _0806C760 + 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 + 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 + 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 + ldrb r0, [r0] + lsls r4, r5, 4 + cmp r0, 0x1 + bls _0806C7EA + cmp r6, 0 + bne _0806C7EA + ldr r0, _0806C7CC + 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 + 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 + adds r0, r4, r5 + lsls r0, 2 + adds r2, r0, r1 + ldr r1, _0806C830 + 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 + 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 + ldr r2, _0806C888 + adds r0, r2 + movs r1, 0x2 + strb r1, [r0] + ldr r0, _0806C88C + 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 sub_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 + 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 sub_806DA44 + cmp r4, 0x5 + bhi _0806C8DC + lsls r0, r4, 1 + ldr r1, _0806C8D8 + 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 + 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 + 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 + ldr r1, _0806C928 + 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 + 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 battle_type_is_double + 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 + 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 + 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 + 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 + 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 + 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 + 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 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _0806CADC + str r1, [r0] + ldr r5, _0806CAE0 + strb r4, [r5] + ldr r0, _0806CAE4 + movs r1, 0 + bl CreateTask + ldr r0, _0806CAE8 + bl object_new_hidden_with_callback + 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 + adds r0, r5, r1 + ldrb r0, [r0] + movs r1, 0 + bl sub_806D538 + ldr r2, _0806CAF0 + 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 + 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 + 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 + ldrb r3, [r4, 0x1] + lsls r2, r3, 4 + adds r2, r3 + lsls r2, 2 + ldr r3, _0806CB4C + 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 + 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 + 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 + 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 + ldrb r0, [r0] + movs r1, 0x1 + negs r1, r1 + bl sub_806CAFC + b _0806CBDA + .align 2, 0 +_0806CBA8: .4byte 0x02001000 +_0806CBAC: + ldr r0, _0806CBB8 + ldrb r0, [r0] + movs r1, 0x1 + bl sub_806CAFC + b _0806CBDA + .align 2, 0 +_0806CBB8: .4byte 0x02001000 +_0806CBBC: + ldr r0, _0806CBCC + ldrb r0, [r0] + movs r1, 0x2 + negs r1, r1 + bl sub_806CAFC + b _0806CBDA + .align 2, 0 +_0806CBCC: .4byte 0x02001000 +_0806CBD0: + ldr r0, _0806CC04 + ldrb r0, [r0] + movs r1, 0x2 + bl sub_806CAFC +_0806CBDA: + ldr r0, _0806CC08 + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0806CC10 + movs r0, 0x5 + bl PlaySE + ldr r1, _0806CC0C + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _0806CC04 + 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 + ldrb r1, [r5, 0x1] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _0806CC6C + adds r0, r1 + bl DestroySprite + movs r0, 0 + movs r1, 0 + bl sub_806D538 + ldr r0, _0806CC70 + 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 + mov r8, r0 + ldr r6, _0806CCDC + 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 + 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 + ldr r2, _0806CD3C + 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 + 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 + 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 + ldr r6, _0806CDAC + 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 + ldrb r0, [r4] + ldrb r1, [r4, 0x5] + bl sub_806DDA0 + strb r0, [r4, 0x3] + ldrb r0, [r4] + ldrb r1, [r4, 0x6] + bl sub_806DDA0 + strb r0, [r4, 0x4] + ldrb r3, [r4, 0x5] + cmp r3, 0 + bne _0806CE34 + ldr r2, _0806CE20 + ldrb r1, [r4, 0x3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldr r1, _0806CE24 + strh r1, [r0, 0x2E] + ldrb r1, [r4, 0x3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldr r1, _0806CE28 + strh r1, [r0, 0x32] + strh r3, [r4, 0x8] + movs r0, 0xB + strh r0, [r4, 0xA] + ldr r1, _0806CE2C + mov r3, r8 + lsls r0, r3, 2 + add r0, r8 + lsls r0, 3 + adds r0, r1 + ldr r1, _0806CE30 + 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 + 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 + mov r3, r8 + lsls r0, r3, 2 + add r0, r8 + lsls r0, 3 + adds r0, r1 + ldr r1, _0806CEE8 +_0806CE66: + str r1, [r0] + ldr r0, _0806CEEC + adds r1, r4, r0 + movs r0, 0x1 + strb r0, [r1] + adds r6, r2, 0 + ldr r4, _0806CEF0 + 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 + 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 + ldrb r1, [r4, 0x3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r5, _0806CF98 + 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 + 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 + 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 + 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 + 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 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + ldr r0, _0806D058 + 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 + ldr r1, [r0, 0x8] + movs r0, 0xB0 + lsls r0, 12 + cmp r1, r0 + bne _0806D084 + ldr r0, _0806D090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + ldr r0, _0806D094 + 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 + 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 + 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 + 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 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + ldr r0, _0806D158 + 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 + ldr r1, [r0, 0x8] + ldr r0, _0806D18C + cmp r1, r0 + bne _0806D182 + ldr r0, _0806D190 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + ldr r0, _0806D194 + 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 + ldrb r0, [r4] + ldrb r1, [r4, 0x5] + ldrb r2, [r4, 0x4] + bl sub_806DE50 + ldrb r0, [r4] + ldrb r1, [r4, 0x6] + ldrb r2, [r4, 0x3] + bl sub_806DE50 + bl battle_type_is_double + ldr r5, _0806D368 + ldrb r1, [r4, 0x3] + lsls r3, r1, 4 + adds r3, r1 + lsls r3, 2 + adds r3, r5 + ldr r6, _0806D36C + 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 battle_type_is_double + 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 + str r7, [r0] + bl battle_type_is_double + 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 battle_type_is_double + 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 sub_806DDA0 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + add r1, r9 + ldr r0, _0806D374 + str r0, [r1] + ldrb r0, [r4, 0x5] + movs r6, 0x64 + muls r0, r6 + ldr r5, _0806D378 + 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 sub_806E2C0 + ldrb r0, [r4, 0x5] + adds r1, r0, 0 + muls r1, r6 + adds r1, r5 + bl sub_806E07C + ldrb r0, [r4, 0x5] + adds r1, r0, 0 + muls r1, r6 + adds r1, r5 + bl sub_806E4E8 + 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 sub_806E2C0 + ldrb r0, [r4, 0x6] + adds r1, r0, 0 + muls r1, r6 + adds r1, r5 + bl sub_806E07C + ldrb r0, [r4, 0x6] + adds r1, r0, 0 + muls r1, r6 + adds r1, r5 + bl sub_806E4E8 + ldrb r0, [r4, 0x6] + adds r1, r0, 0 + muls r1, r6 + adds r1, r5 + bl nullsub_12 + bl sub_806E6C8 + 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 sub_806DA38 +_0806D374: .4byte sub_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 sub_809D638 + 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 + str r0, [r4, 0x1C] + b _0806D3AE + .align 2, 0 +_0806D3A4: .4byte sub_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 + ldr r1, _0806D43C + 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 + 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 + 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 sub_806DDA0 + lsls r0, 24 + lsrs r0, 24 + ldr r2, _0806D4FC + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r4, r1, r2 + ldr r0, _0806D500 + strh r0, [r4, 0x2E] + ldr r3, _0806D504 + 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 + 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 sub_806DDA0 + ldr r2, _0806D534 + 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 + 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 + bl battle_type_is_double + 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 battle_type_is_double + 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 battle_type_is_double + 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 battle_type_is_double + 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 + 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 + adds r5, r0 + ldr r2, _0806D664 + 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 + bl battle_type_is_double + 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 battle_type_is_double + 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 battle_type_is_double + 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 battle_type_is_double + 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 + 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 + adds r5, r0 + ldr r2, _0806D714 + 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 + mov r0, sp + strh r1, [r0] + movs r5, 0 + cmp r4, 0x1 + bhi _0806D736 + ldr r0, _0806D7C8 + movs r1, 0xC0 + lsls r1, 19 + bl LZDecompressVram +_0806D736: + cmp r4, 0x2 + beq _0806D73E + cmp r4, 0 + bne _0806D746 +_0806D73E: + ldr r0, _0806D7CC + ldr r1, _0806D7D0 + bl LZDecompressVram +_0806D746: + cmp r4, 0x3 + beq _0806D74E + cmp r4, 0 + bne _0806D75A +_0806D74E: + ldr r0, _0806D7D4 + 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 + movs r1, 0xF0 + movs r2, 0x20 + bl LoadPalette +_0806D776: + cmp r4, 0x5 + beq _0806D77E + cmp r4, 0 + bne _0806D786 +_0806D77E: + ldr r0, _0806D7DC + ldr r1, _0806D7E0 + bl LZDecompressVram +_0806D786: + cmp r4, 0x6 + beq _0806D78E + cmp r4, 0 + bne _0806D796 +_0806D78E: + ldr r0, _0806D7E4 + ldr r1, _0806D7E8 + bl LZDecompressVram +_0806D796: + cmp r4, 0x7 + beq _0806D79E + cmp r4, 0 + bne _0806D7A6 +_0806D79E: + ldr r0, _0806D7EC + ldr r1, _0806D7F0 + bl LZDecompressVram +_0806D7A6: + cmp r4, 0x8 + beq _0806D7AE + cmp r4, 0 + bne _0806D7BA +_0806D7AE: + ldr r0, _0806D7F4 + 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 + + .align 2, 0 @ Don't pad with nop. |