.include "asm/macros.inc" .include "constants/constants.inc" .syntax unified .text thumb_func_start sub_802DA44 sub_802DA44: @ 802DA44 push {r4,lr} ldr r4, =gUnknown_02022D00 ldr r1, [r4] ldrh r0, [r1, 0x12] cmp r0, 0xFF bne _0802DA58 _0802DA50: movs r0, 0 b _0802DA84 .pool _0802DA58: ldrb r0, [r1, 0xD] cmp r0, 0 bne _0802DA7E bl IsDma3ManagerBusyWithBgCopy lsls r0, 24 cmp r0, 0 bne _0802DA82 ldr r0, [r4] ldrb r0, [r0, 0x12] bl RemoveWindow ldr r1, [r4] movs r0, 0xFF strh r0, [r1, 0x12] ldrb r0, [r1, 0xD] adds r0, 0x1 strb r0, [r1, 0xD] b _0802DA50 _0802DA7E: cmp r0, 0x1 beq _0802DA50 _0802DA82: movs r0, 0x1 _0802DA84: pop {r4} pop {r1} bx r1 thumb_func_end sub_802DA44 thumb_func_start sub_802DA8C sub_802DA8C: @ 802DA8C push {lr} bl Menu_ProcessInputNoWrapClearOnChoose lsls r0, 24 asrs r0, 24 pop {r1} bx r1 thumb_func_end sub_802DA8C thumb_func_start sub_802DA9C sub_802DA9C: @ 802DA9C push {r4-r6,lr} sub sp, 0x8 ldr r6, =0xffffff00 ldr r4, [sp] ands r4, r6 lsls r0, 24 lsrs r0, 16 ldr r5, =0xffff00ff ands r4, r5 orrs r4, r0 lsls r1, 24 lsrs r1, 8 ldr r0, =0xff00ffff ands r4, r0 orrs r4, r1 lsls r2, 24 ldr r0, =0x00ffffff ands r4, r0 orrs r4, r2 str r4, [sp] lsls r3, 24 lsrs r3, 24 ldr r0, [sp, 0x4] ands r0, r6 orrs r0, r3 ands r0, r5 movs r1, 0xF0 lsls r1, 4 orrs r0, r1 ldr r1, =0x0000ffff ands r0, r1 movs r1, 0x86 lsls r1, 15 orrs r0, r1 str r0, [sp, 0x4] mov r0, sp bl AddWindow adds r4, r0, 0 lsls r4, 16 lsrs r4, 16 lsls r0, r4, 24 lsrs r0, 24 movs r1, 0x11 bl FillWindowPixelBuffer adds r0, r4, 0 add sp, 0x8 pop {r4-r6} pop {r1} bx r1 .pool thumb_func_end sub_802DA9C thumb_func_start sub_802DB18 sub_802DB18: @ 802DB18 push {r4,r5,lr} sub sp, 0x8 adds r3, r2, 0 lsls r3, 24 lsrs r3, 24 ldr r5, =0xffffff00 ldr r2, [sp] ands r2, r5 lsls r0, 24 lsrs r0, 16 ldr r4, =0xffff00ff ands r2, r4 orrs r2, r0 lsls r1, 24 lsrs r1, 8 ldr r0, =0xff00ffff ands r2, r0 orrs r2, r1 ldr r0, =0x00ffffff ands r2, r0 movs r0, 0xC0 lsls r0, 19 orrs r2, r0 str r2, [sp] ldr r0, [sp, 0x4] ands r0, r5 movs r1, 0x4 orrs r0, r1 ands r0, r4 movs r1, 0x80 lsls r1, 2 orrs r0, r1 ldr r1, =0x0000ffff ands r0, r1 movs r1, 0xAC lsls r1, 14 orrs r0, r1 str r0, [sp, 0x4] mov r0, sp movs r1, 0x1 movs r2, 0xD bl CreateYesNoMenu add sp, 0x8 pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end sub_802DB18 thumb_func_start sub_802DB8C sub_802DB8C: @ 802DB8C push {r4,lr} sub sp, 0x10 ldr r1, =gUnknown_082FE1DC add r0, sp, 0xC movs r2, 0x3 bl memcpy movs r0, 0 bl PutWindowTilemap movs r0, 0x1 bl PutWindowTilemap movs r0, 0 movs r1, 0 bl FillWindowPixelBuffer movs r0, 0x1 movs r1, 0 bl FillWindowPixelBuffer add r0, sp, 0xC str r0, [sp] movs r4, 0 str r4, [sp, 0x4] ldr r0, =gText_SpacePoints2 str r0, [sp, 0x8] movs r0, 0 movs r1, 0 movs r2, 0 movs r3, 0x1 bl AddTextPrinterParameterized3 add r0, sp, 0xC str r0, [sp] str r4, [sp, 0x4] ldr r0, =gText_SpaceTimes3 str r0, [sp, 0x8] movs r0, 0x1 movs r1, 0 movs r2, 0 movs r3, 0x1 bl AddTextPrinterParameterized3 add sp, 0x10 pop {r4} pop {r0} bx r0 .pool thumb_func_end sub_802DB8C thumb_func_start sub_802DBF8 sub_802DBF8: @ 802DBF8 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x4 bl sub_802C8AC lsls r0, 16 lsrs r0, 16 mov r10, r0 ldr r1, =gUnknown_082FE260 subs r0, 0x2 lsls r0, 2 adds r0, r1 ldr r5, [r0] movs r6, 0 cmp r6, r10 bge _0802DC62 ldr r0, =gMonFrontPicCoords mov r9, r0 ldr r1, =gUnknown_02022D00 mov r8, r1 _0802DC26: lsls r4, r6, 24 lsrs r4, 24 adds r0, r4, 0 bl sub_802C8C8 adds r1, r0, 0 ldrh r0, [r1] lsls r0, 2 add r0, r9 ldrb r3, [r0, 0x1] mov r2, r8 ldr r0, [r2] movs r7, 0 ldrsh r2, [r5, r7] adds r3, 0x70 str r4, [sp] bl sub_802C9D4 mov r1, r8 ldr r0, [r1] movs r2, 0 ldrsh r1, [r5, r2] movs r2, 0x70 adds r3, r4, 0 bl sub_802CE48 adds r5, 0x2 adds r6, 0x1 cmp r6, r10 blt _0802DC26 _0802DC62: add sp, 0x4 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end sub_802DBF8 thumb_func_start sub_802DC80 sub_802DC80: @ 802DC80 ldr r2, =gUnknown_02022D00 ldr r2, [r2] lsls r0, 2 ldr r3, =0x000081a8 adds r2, r3 adds r2, r0 ldr r0, [r2] strh r1, [r0, 0x26] bx lr .pool thumb_func_end sub_802DC80 thumb_func_start sub_802DC9C sub_802DC9C: @ 802DC9C push {r4,lr} adds r4, r0, 0 ldr r0, =gUnknown_02022D00 ldr r0, [r0] adds r1, r4, 0 bl sub_802CF50 ldr r0, =gUnknown_082FE1DF adds r4, r0 ldrb r0, [r4] lsls r1, r0, 2 adds r1, r0 lsls r1, 13 movs r0, 0x2 movs r2, 0 bl ChangeBgY pop {r4} pop {r0} bx r0 .pool thumb_func_end sub_802DC9C thumb_func_start sub_802DCCC sub_802DCCC: @ 802DCCC push {r4-r6,lr} lsls r0, 24 lsrs r4, r0, 24 movs r5, 0 movs r6, 0 _0802DCD6: movs r0, 0x1 ands r0, r4 cmp r0, 0 beq _0802DCEA ldr r0, =gUnknown_02022D00 ldr r0, [r0] adds r1, r5, 0 bl sub_802CB14 adds r6, 0x1 _0802DCEA: lsrs r4, 1 adds r5, 0x1 cmp r5, 0x4 ble _0802DCD6 subs r0, r6, 0x2 lsls r0, 24 lsrs r0, 24 bl sub_802E00C adds r0, r6, 0 pop {r4-r6} pop {r1} bx r1 .pool thumb_func_end sub_802DCCC thumb_func_start sub_802DD08 sub_802DD08: @ 802DD08 push {r4,lr} sub sp, 0x10 mov r1, sp movs r0, 0x40 strb r0, [r1] movs r0, 0x5 strb r0, [r1, 0x1] movs r0, 0x8 strb r0, [r1, 0x2] movs r0, 0x6C strh r0, [r1, 0x4] movs r4, 0x6 strh r4, [r1, 0x6] ldr r0, =gUnknown_082FE1EC str r0, [sp, 0x8] ldr r0, =gUnknown_082FE1F4 str r0, [sp, 0xC] movs r0, 0x2 bl sub_8034C54 movs r0, 0 movs r1, 0 mov r2, sp bl sub_8034D14 mov r1, sp movs r0, 0x4 strb r0, [r1, 0x1] movs r0, 0x1E strh r0, [r1, 0x4] mov r0, sp strh r4, [r0, 0x6] movs r0, 0x1 movs r1, 0 mov r2, sp bl sub_8034D14 add sp, 0x10 pop {r4} pop {r0} bx r0 .pool thumb_func_end sub_802DD08 thumb_func_start sub_802DD64 sub_802DD64: @ 802DD64 push {lr} adds r1, r0, 0 movs r0, 0 bl sub_8035044 pop {r0} bx r0 thumb_func_end sub_802DD64 thumb_func_start sub_802DD74 sub_802DD74: @ 802DD74 push {lr} adds r1, r0, 0 lsls r1, 16 lsrs r1, 16 movs r0, 0x1 bl sub_8035044 pop {r0} bx r0 thumb_func_end sub_802DD74 thumb_func_start sub_802DD88 sub_802DD88: @ 802DD88 push {lr} adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 ldr r0, =gUnknown_02022D00 ldr r0, [r0] bl sub_802CBF0 pop {r0} bx r0 .pool thumb_func_end sub_802DD88 thumb_func_start sub_802DDA0 sub_802DDA0: @ 802DDA0 push {lr} adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 ldr r0, =gUnknown_02022D00 ldr r0, [r0] bl sub_802CC88 pop {r0} bx r0 .pool thumb_func_end sub_802DDA0 thumb_func_start sub_802DDB8 sub_802DDB8: @ 802DDB8 push {lr} adds r1, r0, 0 ldr r0, =gUnknown_02022D00 ldr r0, [r0] bl sub_802CC18 pop {r1} bx r1 .pool thumb_func_end sub_802DDB8 thumb_func_start sub_802DDCC sub_802DDCC: @ 802DDCC push {lr} ldr r0, =gUnknown_02022D00 ldr r0, [r0] bl sub_802CCB0 pop {r0} bx r0 .pool thumb_func_end sub_802DDCC thumb_func_start sub_802DDE0 sub_802DDE0: @ 802DDE0 push {lr} ldr r0, =gUnknown_02022D00 ldr r0, [r0] bl sub_802CD3C pop {r0} bx r0 .pool thumb_func_end sub_802DDE0 thumb_func_start sub_802DDF4 sub_802DDF4: @ 802DDF4 push {lr} adds r1, r0, 0 ldr r0, =gUnknown_02022D00 ldr r0, [r0] bl sub_802CD70 pop {r0} bx r0 .pool thumb_func_end sub_802DDF4 thumb_func_start sub_802DE08 sub_802DE08: @ 802DE08 push {lr} ldr r0, =gUnknown_02022D00 ldr r0, [r0] bl sub_802CD98 pop {r1} bx r1 .pool thumb_func_end sub_802DE08 thumb_func_start sub_802DE1C sub_802DE1C: @ 802DE1C push {r4-r7,lr} sub sp, 0x8 bl sub_802C8AC lsls r0, 16 lsrs r7, r0, 16 ldr r1, =gUnknown_082FE234 subs r0, r7, 0x2 lsls r0, 2 adds r0, r1 ldr r4, [r0] ldr r2, =0xffffff00 ldr r0, [sp] ands r0, r2 ldr r1, =0x00ffffff ands r0, r1 movs r1, 0x80 lsls r1, 20 orrs r0, r1 str r0, [sp] ldr r0, [sp, 0x4] ands r0, r2 movs r1, 0x2 orrs r0, r1 ldr r1, =0xffff00ff ands r0, r1 movs r1, 0x80 lsls r1, 2 orrs r0, r1 ldr r1, =0x0000ffff ands r0, r1 movs r1, 0xAC lsls r1, 14 orrs r0, r1 str r0, [sp, 0x4] movs r5, 0 cmp r5, r7 bge _0802DEAC mov r6, sp _0802DE6A: ldrb r0, [r4] lsls r0, 8 ldr r2, =0xffff00ff ldr r1, [sp] ands r1, r2 orrs r1, r0 str r1, [sp] ldrb r2, [r4, 0x2] lsls r2, 16 ldr r0, =0xff00ffff ands r0, r1 orrs r0, r2 str r0, [sp] mov r0, sp bl AddWindow ldr r1, =gUnknown_02022D00 ldr r1, [r1] lsls r2, r5, 1 adds r1, 0x1C adds r1, r2 strh r0, [r1] lsls r0, 24 lsrs r0, 24 bl ClearWindowTilemap ldrh r0, [r6, 0x6] adds r0, 0x10 strh r0, [r6, 0x6] adds r4, 0x4 adds r5, 0x1 cmp r5, r7 blt _0802DE6A _0802DEAC: movs r0, 0 bl CopyBgTilemapBufferToVram add sp, 0x8 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end sub_802DE1C thumb_func_start sub_802DED8 sub_802DED8: @ 802DED8 push {r4-r6,lr} mov r6, r9 mov r5, r8 push {r5,r6} sub sp, 0x10 adds r5, r0, 0 lsls r2, 24 lsrs r2, 24 lsls r3, 24 lsrs r3, 24 add r0, sp, 0xC strb r1, [r0] strb r2, [r0, 0x1] strb r3, [r0, 0x2] ldr r6, =gUnknown_02022D00 ldr r0, [r6] lsls r1, r5, 1 mov r8, r1 adds r0, 0x1C add r0, r8 ldrb r0, [r0] movs r1, 0 bl FillWindowPixelBuffer lsls r5, 24 lsrs r5, 24 adds r0, r5, 0 bl sub_802C8E8 adds r1, r0, 0 movs r2, 0x1 negs r2, r2 mov r9, r2 movs r0, 0x1 bl GetStringWidth movs r4, 0x40 subs r4, r0 lsrs r4, 1 adds r0, r5, 0 bl sub_802C8E8 adds r1, r0, 0 ldr r0, [r6] adds r0, 0x1C add r0, r8 ldrb r0, [r0] lsls r4, 24 lsrs r4, 24 add r2, sp, 0xC str r2, [sp] mov r2, r9 str r2, [sp, 0x4] str r1, [sp, 0x8] movs r1, 0x1 adds r2, r4, 0 movs r3, 0x1 bl AddTextPrinterParameterized3 ldr r0, [r6] adds r0, 0x1C add r0, r8 ldrb r0, [r0] movs r1, 0x2 bl CopyWindowToVram add sp, 0x10 pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r6} pop {r0} bx r0 .pool thumb_func_end sub_802DED8 thumb_func_start sub_802DF70 sub_802DF70: @ 802DF70 push {r4-r6,lr} adds r4, r0, 0 bl sub_802C8AC lsls r0, 16 lsrs r5, r0, 16 cmp r4, 0 bne _0802DF9A movs r4, 0 cmp r4, r5 bge _0802DFCC _0802DF86: adds r0, r4, 0 movs r1, 0 movs r2, 0x2 movs r3, 0x3 bl sub_802DED8 adds r4, 0x1 cmp r4, r5 blt _0802DF86 b _0802DFCC _0802DF9A: bl sub_802C8BC lsls r0, 16 lsrs r6, r0, 16 movs r4, 0 cmp r4, r5 bge _0802DFCC _0802DFA8: cmp r6, r4 beq _0802DFBA adds r0, r4, 0 movs r1, 0 movs r2, 0x2 movs r3, 0x3 bl sub_802DED8 b _0802DFC6 _0802DFBA: adds r0, r4, 0 movs r1, 0 movs r2, 0x4 movs r3, 0x5 bl sub_802DED8 _0802DFC6: adds r4, 0x1 cmp r4, r5 blt _0802DFA8 _0802DFCC: pop {r4-r6} pop {r0} bx r0 thumb_func_end sub_802DF70 thumb_func_start sub_802DFD4 sub_802DFD4: @ 802DFD4 push {r4,r5,lr} bl sub_802C8AC lsls r0, 16 lsrs r5, r0, 16 movs r4, 0 cmp r4, r5 bge _0802DFFA _0802DFE4: ldr r0, =gUnknown_02022D00 ldr r0, [r0] lsls r1, r4, 1 adds r0, 0x1C adds r0, r1 ldrb r0, [r0] bl PutWindowTilemap adds r4, 0x1 cmp r4, r5 blt _0802DFE4 _0802DFFA: movs r0, 0 bl CopyBgTilemapBufferToVram pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end sub_802DFD4 thumb_func_start sub_802E00C sub_802E00C: @ 802E00C push {r4,lr} adds r1, r0, 0 lsls r1, 24 lsrs r4, r1, 24 ldr r0, =gUnknown_02022D00 ldr r2, [r0] movs r0, 0 str r0, [r2, 0x18] lsrs r1, 25 lsls r1, 16 movs r0, 0x1 movs r2, 0 bl ChangeBgX movs r0, 0x1 ands r4, r0 lsls r4, 8 subs r4, 0x28 lsls r4, 8 adds r1, r4, 0 movs r2, 0 bl ChangeBgY movs r0, 0x1 bl ShowBg ldr r0, =sub_802E090 movs r1, 0x4 bl CreateTask pop {r4} pop {r0} bx r0 .pool thumb_func_end sub_802E00C thumb_func_start sub_802E058 sub_802E058: @ 802E058 push {r4,lr} ldr r4, =gUnknown_02022D00 ldr r0, [r4] ldr r0, [r0, 0x18] cmp r0, 0x1F bls _0802E06C movs r0, 0 b _0802E08A .pool _0802E06C: movs r0, 0x1 movs r1, 0x80 movs r2, 0x1 bl ChangeBgY ldr r1, [r4] ldr r0, [r1, 0x18] adds r0, 0x1 str r0, [r1, 0x18] cmp r0, 0x1F bls _0802E088 movs r0, 0x1 bl HideBg _0802E088: movs r0, 0x1 _0802E08A: pop {r4} pop {r1} bx r1 thumb_func_end sub_802E058 thumb_func_start sub_802E090 sub_802E090: @ 802E090 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 bl sub_802E058 cmp r0, 0 bne _0802E0A4 adds r0, r4, 0 bl DestroyTask _0802E0A4: pop {r4} pop {r0} bx r0 thumb_func_end sub_802E090 thumb_func_start sub_802E0AC sub_802E0AC: @ 802E0AC push {lr} sub sp, 0xC mov r2, sp movs r1, 0x1 strb r1, [r2] ldrh r1, [r0] strh r1, [r2, 0x2] ldr r1, [r0, 0x4] str r1, [sp, 0x8] ldr r0, [r0, 0x8] str r0, [sp, 0x4] mov r0, sp bl sub_800FE50 add sp, 0xC pop {r0} bx r0 thumb_func_end sub_802E0AC thumb_func_start sub_802E0D0 sub_802E0D0: @ 802E0D0 push {r4,lr} sub sp, 0xC adds r4, r1, 0 ldr r3, =gRecvCmds lsls r2, r0, 4 adds r0, r2, r3 ldrh r1, [r0] movs r0, 0xFF lsls r0, 8 ands r0, r1 movs r1, 0xBC lsls r1, 6 cmp r0, r1 bne _0802E100 adds r1, r3, 0x2 adds r1, r2, r1 mov r0, sp movs r2, 0xC bl memcpy mov r0, sp ldrb r0, [r0] cmp r0, 0x1 beq _0802E108 _0802E100: movs r0, 0 b _0802E118 .pool _0802E108: mov r0, sp ldrh r0, [r0, 0x2] strh r0, [r4] ldr r0, [sp, 0x8] str r0, [r4, 0x4] ldr r0, [sp, 0x4] str r0, [r4, 0x8] movs r0, 0x1 _0802E118: add sp, 0xC pop {r4} pop {r1} bx r1 thumb_func_end sub_802E0D0 thumb_func_start sub_802E120 sub_802E120: @ 802E120 push {lr} sub sp, 0xC mov r2, sp movs r1, 0x2 strb r1, [r2] str r0, [sp, 0x4] mov r0, sp bl sub_800FE50 add sp, 0xC pop {r0} bx r0 thumb_func_end sub_802E120 thumb_func_start sub_802E138 sub_802E138: @ 802E138 push {r4-r6,lr} mov r6, r8 push {r6} sub sp, 0xC mov r3, sp movs r2, 0x3 strb r2, [r3] ldr r3, [r1, 0x8] lsls r3, 15 ldr r2, [sp, 0x8] ldr r4, =0x00007fff mov r8, r4 ands r2, r4 orrs r2, r3 str r2, [sp, 0x8] mov r6, sp ldrb r2, [r1, 0x1] movs r5, 0x1F adds r3, r5, 0 ands r3, r2 ldrb r4, [r6, 0x3] movs r2, 0x20 negs r2, r2 ands r2, r4 orrs r2, r3 strb r2, [r6, 0x3] mov r3, sp ldrb r2, [r1] strb r2, [r3, 0x1] ldrh r2, [r1, 0x2] strh r2, [r3, 0x6] mov r4, sp ldrh r2, [r1, 0x4] mov r1, r8 ands r2, r1 ldrh r3, [r4, 0x8] ldr r1, =0xffff8000 ands r1, r3 orrs r1, r2 strh r1, [r4, 0x8] mov r2, sp ldrh r1, [r0, 0x10] strb r1, [r2, 0x2] mov r3, sp ldr r1, [r0, 0x14] lsls r1, 5 ldrb r2, [r3, 0x3] ands r5, r2 orrs r5, r1 strb r5, [r3, 0x3] mov r1, sp ldrh r0, [r0, 0xE] strh r0, [r1, 0x4] mov r0, sp bl sub_800FE50 add sp, 0xC pop {r3} mov r8, r3 pop {r4-r6} pop {r0} bx r0 .pool thumb_func_end sub_802E138 thumb_func_start sub_802E1BC sub_802E1BC: @ 802E1BC push {r4,r5,lr} sub sp, 0xC adds r5, r0, 0 adds r4, r1, 0 ldr r2, =gRecvCmds ldrh r0, [r2] movs r1, 0xFF lsls r1, 8 ands r1, r0 movs r0, 0xBC lsls r0, 6 cmp r1, r0 bne _0802E228 adds r1, r2, 0x2 mov r0, sp movs r2, 0xC bl memcpy mov r0, sp ldrb r0, [r0] cmp r0, 0x3 bne _0802E228 ldr r0, [sp, 0x8] lsrs r0, 15 str r0, [r4, 0x8] mov r0, sp ldrb r1, [r0, 0x3] lsls r0, r1, 27 lsrs r0, 27 strb r0, [r4, 0x1] mov r0, sp ldrb r0, [r0, 0x1] strb r0, [r4] mov r0, sp ldrh r0, [r0, 0x6] strh r0, [r4, 0x2] mov r0, sp ldrh r0, [r0, 0x8] lsls r0, 17 lsrs r0, 17 strh r0, [r4, 0x4] mov r0, sp ldrb r0, [r0, 0x2] strh r0, [r5, 0x10] lsls r1, 24 lsrs r1, 29 str r1, [r5, 0x14] mov r0, sp ldrh r0, [r0, 0x4] strh r0, [r5, 0xE] movs r0, 0x1 b _0802E22A .pool _0802E228: movs r0, 0 _0802E22A: add sp, 0xC pop {r4,r5} pop {r1} bx r1 thumb_func_end sub_802E1BC thumb_func_start sub_802E234 sub_802E234: @ 802E234 push {r4,lr} sub sp, 0xC mov r4, sp movs r3, 0x4 strb r3, [r4] ldrh r3, [r0, 0x10] strb r3, [r4, 0x1] ldr r3, [r0, 0x14] strb r3, [r4, 0x2] ldr r3, [r0, 0x18] strb r3, [r4, 0x3] mov r3, sp ldrh r0, [r0, 0xE] strh r0, [r3, 0x4] mov r0, sp strb r1, [r0, 0x6] strh r2, [r0, 0x8] bl sub_800FE50 add sp, 0xC pop {r4} pop {r0} bx r0 thumb_func_end sub_802E234 thumb_func_start sub_802E264 sub_802E264: @ 802E264 push {r4-r6,lr} sub sp, 0xC adds r4, r0, 0 adds r5, r2, 0 adds r6, r3, 0 ldr r3, =gRecvCmds lsls r2, r1, 4 adds r0, r2, r3 ldrh r1, [r0] movs r0, 0xFF lsls r0, 8 ands r0, r1 movs r1, 0xBC lsls r1, 6 cmp r0, r1 bne _0802E2C4 adds r1, r3, 0x2 adds r1, r2, r1 mov r0, sp movs r2, 0xC bl memcpy mov r0, sp ldrb r0, [r0] cmp r0, 0x4 bne _0802E2C4 mov r0, sp ldrb r0, [r0, 0x1] strh r0, [r4, 0x10] mov r0, sp ldrb r0, [r0, 0x2] str r0, [r4, 0x14] mov r0, sp ldrb r0, [r0, 0x3] str r0, [r4, 0x18] mov r0, sp ldrh r0, [r0, 0x4] strh r0, [r4, 0xE] mov r0, sp ldrb r0, [r0, 0x6] strb r0, [r5] mov r0, sp ldrh r0, [r0, 0x8] strh r0, [r6] movs r0, 0x1 b _0802E2C6 .pool _0802E2C4: movs r0, 0 _0802E2C6: add sp, 0xC pop {r4-r6} pop {r1} bx r1 thumb_func_end sub_802E264 thumb_func_start sub_802E2D0 sub_802E2D0: @ 802E2D0 push {r4,lr} sub sp, 0xC adds r4, r0, 0 ldr r3, =gRecvCmds lsls r2, r1, 4 adds r0, r2, r3 ldrh r1, [r0] movs r0, 0xFF lsls r0, 8 ands r0, r1 movs r1, 0xBC lsls r1, 6 cmp r0, r1 bne _0802E320 adds r1, r3, 0x2 adds r1, r2, r1 mov r0, sp movs r2, 0xC bl memcpy mov r0, sp ldrb r0, [r0] cmp r0, 0x4 bne _0802E320 mov r0, sp ldrb r0, [r0, 0x1] strh r0, [r4, 0x10] mov r0, sp ldrb r0, [r0, 0x2] str r0, [r4, 0x14] mov r0, sp ldrb r0, [r0, 0x3] str r0, [r4, 0x18] mov r0, sp ldrh r0, [r0, 0x4] strh r0, [r4, 0xE] movs r0, 0x1 b _0802E322 .pool _0802E320: movs r0, 0 _0802E322: add sp, 0xC pop {r4} pop {r1} bx r1 thumb_func_end sub_802E2D0 thumb_func_start sub_802E32C sub_802E32C: @ 802E32C ldr r0, =gSaveBlock2Ptr ldr r0, [r0] movs r1, 0xFE lsls r1, 1 adds r0, r1 bx lr .pool thumb_func_end sub_802E32C thumb_func_start ResetPokeJumpResults ResetPokeJumpResults: @ 802E33C push {lr} bl sub_802E32C movs r1, 0 strh r1, [r0] str r1, [r0, 0xC] strh r1, [r0, 0x4] strh r1, [r0, 0x6] str r1, [r0, 0x8] strh r1, [r0, 0x2] pop {r0} bx r0 thumb_func_end ResetPokeJumpResults thumb_func_start sub_802E354 sub_802E354: @ 802E354 push {r4-r6,lr} adds r4, r0, 0 lsls r1, 16 lsrs r5, r1, 16 lsls r2, 16 lsrs r6, r2, 16 bl sub_802E32C adds r1, r0, 0 movs r2, 0 ldr r0, [r1, 0xC] cmp r0, r4 bcs _0802E378 ldr r0, =0x00018696 cmp r4, r0 bhi _0802E378 str r4, [r1, 0xC] movs r2, 0x1 _0802E378: ldrh r0, [r1] cmp r0, r5 bcs _0802E388 ldr r0, =0x0000270f cmp r5, r0 bhi _0802E388 strh r5, [r1] movs r2, 0x1 _0802E388: ldrh r0, [r1, 0x4] cmp r0, r6 bcs _0802E398 ldr r0, =0x0000270f cmp r6, r0 bhi _0802E398 strh r6, [r1, 0x4] movs r2, 0x1 _0802E398: adds r0, r2, 0 pop {r4-r6} pop {r1} bx r1 .pool thumb_func_end sub_802E354 thumb_func_start sub_802E3A8 sub_802E3A8: @ 802E3A8 push {lr} bl sub_802E32C adds r2, r0, 0 ldrh r1, [r2, 0x6] ldr r0, =0x0000270e cmp r1, r0 bhi _0802E3BC adds r0, r1, 0x1 strh r0, [r2, 0x6] _0802E3BC: pop {r0} bx r0 .pool thumb_func_end sub_802E3A8 thumb_func_start sub_802E3C4 sub_802E3C4: @ 802E3C4 push {r4,lr} ldr r4, =sub_802E3E4 adds r0, r4, 0 movs r1, 0 bl CreateTask lsls r0, 24 lsrs r0, 24 bl _call_via_r4 pop {r4} pop {r0} bx r0 .pool thumb_func_end sub_802E3C4 thumb_func_start sub_802E3E4 sub_802E3E4: @ 802E3E4 push {r4-r7,lr} sub sp, 0x8 lsls r0, 24 lsrs r4, r0, 24 lsls r0, r4, 2 adds r0, r4 lsls r0, 3 ldr r1, =gTasks + 0x8 adds r7, r0, r1 movs r1, 0 ldrsh r0, [r7, r1] cmp r0, 0x1 beq _0802E4A8 cmp r0, 0x1 bgt _0802E40C cmp r0, 0 beq _0802E416 b _0802E4F6 .pool _0802E40C: cmp r0, 0x2 beq _0802E4B4 cmp r0, 0x3 beq _0802E4DC b _0802E4F6 _0802E416: ldr r0, =gUnknown_082FE270 ldr r1, [r0, 0x4] ldr r0, [r0] str r0, [sp] str r1, [sp, 0x4] ldr r1, =gText_PkmnJumpRecords movs r0, 0x1 movs r2, 0 bl GetStringWidth adds r4, r0, 0 movs r6, 0 ldr r5, =gUnknown_082FE278 _0802E430: ldr r1, [r5] movs r0, 0x1 movs r2, 0 bl GetStringWidth adds r0, 0x26 cmp r0, r4 ble _0802E442 adds r4, r0, 0 _0802E442: adds r5, 0x4 adds r6, 0x1 cmp r6, 0x2 bls _0802E430 adds r0, r4, 0x7 cmp r0, 0 bge _0802E452 adds r0, 0x7 _0802E452: asrs r4, r0, 3 movs r0, 0x1 ands r0, r4 cmp r0, 0 beq _0802E45E adds r4, 0x1 _0802E45E: movs r1, 0x1E subs r1, r4 lsrs r0, r1, 31 adds r1, r0 asrs r1, 1 lsls r1, 24 lsrs r1, 16 ldr r2, =0xffff00ff ldr r0, [sp] ands r0, r2 orrs r0, r1 lsls r2, r4, 24 ldr r1, =0x00ffffff ands r0, r1 orrs r0, r2 str r0, [sp] mov r0, sp bl AddWindow strh r0, [r7, 0x2] ldrh r0, [r7, 0x2] adds r1, r4, 0 bl sub_802E500 ldrb r0, [r7, 0x2] movs r1, 0x3 b _0802E4CA .pool _0802E4A8: bl IsDma3ManagerBusyWithBgCopy lsls r0, 24 cmp r0, 0 bne _0802E4F6 b _0802E4CE _0802E4B4: ldr r0, =gMain ldrh r1, [r0, 0x2E] movs r0, 0x3 ands r0, r1 cmp r0, 0 beq _0802E4F6 ldrb r0, [r7, 0x2] bl rbox_fill_rectangle ldrb r0, [r7, 0x2] movs r1, 0x1 _0802E4CA: bl CopyWindowToVram _0802E4CE: ldrh r0, [r7] adds r0, 0x1 strh r0, [r7] b _0802E4F6 .pool _0802E4DC: bl IsDma3ManagerBusyWithBgCopy lsls r0, 24 cmp r0, 0 bne _0802E4F6 ldrb r0, [r7, 0x2] bl RemoveWindow adds r0, r4, 0 bl DestroyTask bl EnableBothScriptContexts _0802E4F6: add sp, 0x8 pop {r4-r7} pop {r0} bx r0 thumb_func_end sub_802E3E4 thumb_func_start sub_802E500 sub_802E500: @ 802E500 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x24 str r1, [sp, 0x1C] lsls r0, 16 lsrs r0, 16 str r0, [sp, 0x18] bl sub_802E32C ldrh r1, [r0] str r1, [sp, 0xC] ldr r1, [r0, 0xC] str r1, [sp, 0x10] ldrh r0, [r0, 0x4] str r0, [sp, 0x14] ldr r0, [sp, 0x18] lsls r4, r0, 24 lsrs r4, 24 ldr r5, =0x0000021d adds r0, r4, 0 adds r1, r5, 0 movs r2, 0xD0 bl LoadUserWindowBorderGfx_ adds r0, r4, 0 adds r1, r5, 0 movs r2, 0xD bl DrawTextBorderOuter adds r0, r4, 0 movs r1, 0x11 bl FillWindowPixelBuffer ldr r5, =gText_PkmnJumpRecords ldr r1, [sp, 0x1C] lsls r2, r1, 3 movs r0, 0x1 adds r1, r5, 0 bl GetStringCenterAlignXOffset adds r3, r0, 0 lsls r3, 24 lsrs r3, 24 movs r0, 0x1 str r0, [sp] movs r0, 0xFF str r0, [sp, 0x4] movs r0, 0 str r0, [sp, 0x8] adds r0, r4, 0 movs r1, 0x1 adds r2, r5, 0 bl AddTextPrinterParameterized movs r6, 0 adds r7, r4, 0 movs r0, 0xFF mov r10, r0 mov r9, r6 mov r1, sp adds r1, 0xC str r1, [sp, 0x20] movs r0, 0xC8 lsls r0, 21 mov r8, r0 ldr r5, =gStringVar1 _0802E58A: ldr r1, =gUnknown_082FE278 lsls r0, r6, 2 adds r0, r1 ldr r2, [r0] mov r1, r8 lsrs r4, r1, 24 str r4, [sp] mov r0, r10 str r0, [sp, 0x4] mov r1, r9 str r1, [sp, 0x8] adds r0, r7, 0 movs r1, 0x1 movs r3, 0 bl AddTextPrinterParameterized ldr r0, [sp, 0x20] ldm r0!, {r1} str r0, [sp, 0x20] adds r0, r5, 0 movs r2, 0 movs r3, 0x5 bl ConvertIntToDecimalStringN adds r0, r5, 0 bl sub_802E620 movs r0, 0x1 adds r1, r5, 0 movs r2, 0 bl GetStringWidth ldr r1, [sp, 0x1C] lsls r3, r1, 3 subs r3, r0 lsls r3, 24 lsrs r3, 24 str r4, [sp] mov r0, r10 str r0, [sp, 0x4] mov r1, r9 str r1, [sp, 0x8] adds r0, r7, 0 movs r1, 0x1 adds r2, r5, 0 bl AddTextPrinterParameterized movs r0, 0x80 lsls r0, 21 add r8, r0 adds r6, 0x1 ldr r1, [sp, 0x18] lsls r0, r1, 24 cmp r6, 0x2 bls _0802E58A lsrs r0, 24 bl PutWindowTilemap add sp, 0x24 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end sub_802E500 thumb_func_start sub_802E620 sub_802E620: @ 802E620 push {lr} adds r1, r0, 0 b _0802E628 _0802E626: adds r1, 0x1 _0802E628: ldrb r0, [r1] cmp r0, 0xFF beq _0802E636 cmp r0, 0 bne _0802E626 movs r0, 0xFF strb r0, [r1] _0802E636: pop {r0} bx r0 thumb_func_end sub_802E620 thumb_func_start sub_802E63C sub_802E63C: @ 802E63C push {r4,r5,lr} adds r5, r0, 0 lsls r5, 24 lsrs r5, 24 lsls r1, 24 lsrs r1, 24 ldr r0, =sub_802E6D0 bl CreateTask adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 lsls r0, r4, 2 adds r0, r4 lsls r0, 3 ldr r1, =gTasks adds r0, r1 movs r1, 0x1 strh r1, [r0, 0x8] strh r5, [r0, 0xA] ldr r0, =gUnknown_082FE748 lsls r5, 4 adds r5, r0 ldr r1, [r5] adds r0, r4, 0 bl _call_via_r1 adds r0, r4, 0 pop {r4,r5} pop {r1} bx r1 .pool thumb_func_end sub_802E63C thumb_func_start sub_802E688 sub_802E688: @ 802E688 push {lr} ldr r0, =sub_802E6D0 bl FindTaskIdByFunc lsls r0, 24 lsrs r2, r0, 24 cmp r2, 0xFF beq _0802E6B4 ldr r0, =gTasks lsls r1, r2, 2 adds r1, r2 lsls r1, 3 adds r1, r0 movs r0, 0x2 strh r0, [r1, 0x8] movs r0, 0x1 b _0802E6B6 .pool _0802E6B4: movs r0, 0 _0802E6B6: pop {r1} bx r1 thumb_func_end sub_802E688 thumb_func_start sub_802E6BC sub_802E6BC: @ 802E6BC push {lr} ldr r0, =sub_802E6D0 bl FuncIsActiveTask lsls r0, 24 lsrs r0, 24 pop {r1} bx r1 .pool thumb_func_end sub_802E6BC thumb_func_start sub_802E6D0 sub_802E6D0: @ 802E6D0 push {r4,r5,lr} lsls r0, 24 lsrs r5, r0, 24 lsls r0, r5, 2 adds r0, r5 lsls r0, 3 ldr r1, =gTasks + 0x8 adds r4, r0, r1 movs r1, 0 ldrsh r0, [r4, r1] cmp r0, 0x3 beq _0802E71C cmp r0, 0x3 bgt _0802E6F8 cmp r0, 0x2 beq _0802E6FE b _0802E752 .pool _0802E6F8: cmp r0, 0x4 beq _0802E738 b _0802E752 _0802E6FE: ldr r1, =gUnknown_082FE748 movs r2, 0x2 ldrsh r0, [r4, r2] lsls r0, 4 adds r1, 0x8 adds r0, r1 ldr r1, [r0] adds r0, r5, 0 bl _call_via_r1 movs r0, 0x3 strh r0, [r4] b _0802E752 .pool _0802E71C: ldr r0, =gUnknown_082FE748 movs r2, 0x2 ldrsh r1, [r4, r2] lsls r1, 4 adds r0, 0xC adds r1, r0 ldr r1, [r1] adds r0, r5, 0 bl _call_via_r1 b _0802E752 .pool _0802E738: ldr r0, =gUnknown_082FE748 movs r2, 0x2 ldrsh r1, [r4, r2] lsls r1, 4 adds r0, 0x4 adds r1, r0 ldr r1, [r1] adds r0, r5, 0 bl _call_via_r1 adds r0, r5, 0 bl DestroyTask _0802E752: pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end sub_802E6D0 thumb_func_start sub_802E75C sub_802E75C: @ 802E75C push {r4-r7,lr} mov r7, r8 push {r7} adds r4, r1, 0 lsls r0, 24 lsrs r0, 24 mov r8, r0 movs r1, 0x6 ldrsh r0, [r4, r1] lsls r0, 3 ldr r1, =gUnknown_082FE6C8 adds r0, r1 bl LoadCompressedSpriteSheet movs r2, 0x8 ldrsh r0, [r4, r2] lsls r0, 3 ldr r1, =gUnknown_082FE6D8 adds r0, r1 bl LoadSpritePalette movs r5, 0 movs r3, 0x10 ldrsh r0, [r4, r3] cmp r5, r0 bge _0802E7C4 _0802E790: movs r0, 0x4 ldrsh r1, [r4, r0] lsls r0, r1, 1 adds r0, r1 lsls r0, 3 ldr r1, =gUnknown_082FE730 adds r0, r1 movs r2, 0x12 ldrsh r1, [r4, r2] movs r3, 0x14 ldrsh r2, [r4, r3] ldrb r3, [r4, 0xE] bl CreateSprite lsls r1, r5, 1 adds r1, r4 lsls r0, 24 lsrs r0, 24 strh r0, [r1, 0x1A] adds r0, r5, 0x1 lsls r0, 24 lsrs r5, r0, 24 movs r1, 0x10 ldrsh r0, [r4, r1] cmp r5, r0 blt _0802E790 _0802E7C4: movs r5, 0 movs r2, 0x10 ldrsh r0, [r4, r2] cmp r5, r0 bge _0802E820 movs r7, 0x3 movs r3, 0xD negs r3, r3 mov r12, r3 ldr r6, =gSprites _0802E7D8: lsls r0, r5, 1 adds r0, r4 movs r1, 0x1A ldrsh r0, [r0, r1] lsls r2, r0, 4 adds r2, r0 lsls r2, 2 adds r2, r6 ldrb r1, [r4, 0xC] ands r1, r7 lsls r1, 2 ldrb r3, [r2, 0x5] mov r0, r12 ands r0, r3 orrs r0, r1 strb r0, [r2, 0x5] adds r3, r2, 0 adds r3, 0x3E ldrb r0, [r3] movs r1, 0x4 orrs r0, r1 strb r0, [r3] ldrh r0, [r4, 0xA] strh r0, [r2, 0x30] mov r3, r8 strh r3, [r2, 0x34] strh r5, [r2, 0x36] ldrh r0, [r4, 0x1A] strh r0, [r2, 0x38] adds r0, r5, 0x1 lsls r0, 24 lsrs r5, r0, 24 movs r1, 0x10 ldrsh r0, [r4, r1] cmp r5, r0 blt _0802E7D8 _0802E820: pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end sub_802E75C thumb_func_start sub_802E83C sub_802E83C: @ 802E83C push {r4,r5,lr} lsls r0, 24 lsrs r0, 24 lsls r4, r0, 2 adds r4, r0 lsls r4, 3 ldr r1, =gTasks + 0x8 adds r4, r1 movs r5, 0 strh r5, [r4, 0x4] strh r5, [r4, 0x6] strh r5, [r4, 0x8] movs r1, 0x3C strh r1, [r4, 0xA] strh r5, [r4, 0xC] strh r5, [r4, 0xE] movs r1, 0x3 strh r1, [r4, 0x10] movs r1, 0x78 strh r1, [r4, 0x12] movs r1, 0x58 strh r1, [r4, 0x14] adds r1, r4, 0 bl sub_802E75C movs r0, 0x1C ldrsh r1, [r4, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 ldr r5, =gSprites adds r0, r5 movs r1, 0x4 bl StartSpriteAnim movs r0, 0x1C ldrsh r1, [r4, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r5 ldr r1, =0x0000ffe0 strh r1, [r0, 0x24] movs r0, 0x1E ldrsh r1, [r4, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r5 movs r1, 0x5 bl StartSpriteAnim movs r0, 0x1E ldrsh r1, [r4, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r5 movs r1, 0x20 strh r1, [r0, 0x24] pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end sub_802E83C thumb_func_start sub_802E8C8 sub_802E8C8: @ 802E8C8 push {r4,r5,lr} lsls r0, 24 lsrs r0, 24 movs r5, 0 lsls r1, r0, 2 adds r1, r0 lsls r1, 3 ldr r0, =gTasks + 0x8 adds r4, r1, r0 b _0802E8FC .pool _0802E8E0: lsls r0, r5, 1 adds r0, r4 movs r2, 0x1A ldrsh r1, [r0, r2] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 ldr r1, =gSprites adds r0, r1 bl DestroySprite adds r0, r5, 0x1 lsls r0, 24 lsrs r5, r0, 24 _0802E8FC: movs r1, 0x10 ldrsh r0, [r4, r1] cmp r5, r0 blt _0802E8E0 ldr r1, =gUnknown_082FE6C8 movs r2, 0x6 ldrsh r0, [r4, r2] lsls r0, 3 adds r0, r1 ldrh r0, [r0, 0x6] bl FreeSpriteTilesByTag ldr r1, =gUnknown_082FE6D8 movs r2, 0x8 ldrsh r0, [r4, r2] lsls r0, 3 adds r0, r1 ldrh r0, [r0, 0x4] bl FreeSpritePaletteByTag pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end sub_802E8C8 thumb_func_start sub_802E938 sub_802E938: @ 802E938 push {r4-r6,lr} adds r6, r0, 0 movs r0, 0x34 ldrsh r1, [r6, r0] lsls r0, r1, 2 adds r0, r1 lsls r0, 3 ldr r1, =gTasks + 0x8 adds r5, r0, r1 movs r1, 0x16 ldrsh r0, [r5, r1] movs r2, 0xA ldrsh r1, [r5, r2] bl __modsi3 cmp r0, 0 bne _0802EA4A ldrh r2, [r5, 0x16] movs r3, 0x16 ldrsh r1, [r5, r3] movs r3, 0x14 ldrsh r0, [r5, r3] cmp r1, r0 beq _0802EA4A strh r2, [r5, 0x14] movs r1, 0x32 ldrsh r0, [r6, r1] cmp r0, 0x4 bhi _0802EA44 lsls r0, 2 ldr r1, =_0802E984 adds r0, r1 ldr r0, [r0] mov pc, r0 .pool .align 2, 0 _0802E984: .4byte _0802E998 .4byte _0802E9A6 .4byte _0802E9A6 .4byte _0802E9BA .4byte _0802EA04 _0802E998: adds r2, r6, 0 adds r2, 0x3E ldrb r1, [r2] movs r0, 0x5 negs r0, r0 ands r0, r1 strb r0, [r2] _0802E9A6: movs r0, 0x38 bl PlaySE ldrh r1, [r6, 0x32] lsls r1, 24 lsrs r1, 24 adds r0, r6, 0 bl StartSpriteAnim b _0802EA44 _0802E9BA: movs r0, 0x15 bl PlaySE ldrh r1, [r6, 0x32] lsls r1, 24 lsrs r1, 24 adds r0, r6, 0 bl StartSpriteAnim ldr r4, =gSprites movs r2, 0x1C ldrsh r0, [r5, r2] lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r1, r4 adds r1, 0x3E ldrb r3, [r1] movs r2, 0x5 negs r2, r2 adds r0, r2, 0 ands r0, r3 strb r0, [r1] movs r3, 0x1E ldrsh r1, [r5, r3] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 adds r0, 0x3E ldrb r1, [r0] ands r2, r1 strb r2, [r0] b _0802EA44 .pool _0802EA04: adds r1, r6, 0 adds r1, 0x3E ldrb r0, [r1] movs r2, 0x4 orrs r0, r2 strb r0, [r1] ldr r3, =gSprites movs r0, 0x1C ldrsh r1, [r5, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r3 adds r0, 0x3E ldrb r1, [r0] orrs r1, r2 strb r1, [r0] movs r0, 0x1E ldrsh r1, [r5, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r3 adds r0, 0x3E ldrb r1, [r0] orrs r1, r2 strb r1, [r0] movs r0, 0x4 strh r0, [r5] b _0802EA4A .pool _0802EA44: ldrh r0, [r6, 0x32] adds r0, 0x1 strh r0, [r6, 0x32] _0802EA4A: pop {r4-r6} pop {r0} bx r0 thumb_func_end sub_802E938 thumb_func_start sub_802EA50 sub_802EA50: @ 802EA50 push {r4-r6,lr} lsls r0, 24 lsrs r0, 24 lsls r4, r0, 2 adds r4, r0 lsls r4, 3 ldr r5, =gTasks + 0x8 adds r6, r4, r5 movs r0, 0x38 bl PlaySE ldr r2, =gSprites movs r0, 0x1A ldrsh r1, [r6, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r1, r2, 0 adds r1, 0x1C adds r0, r1 ldr r1, =sub_802E938 str r1, [r0] movs r0, 0x1A ldrsh r1, [r6, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 adds r0, 0x3E ldrb r2, [r0] movs r1, 0x5 negs r1, r1 ands r1, r2 strb r1, [r0] subs r5, 0x8 adds r4, r5 movs r0, 0x3 strh r0, [r4, 0x8] pop {r4-r6} pop {r0} bx r0 .pool thumb_func_end sub_802EA50 thumb_func_start sub_802EAB0 sub_802EAB0: @ 802EAB0 push {r4,r5,lr} sub sp, 0xC lsls r0, 24 lsrs r0, 24 lsls r1, r0, 2 adds r1, r0 lsls r1, 3 ldr r0, =gTasks + 0x8 adds r4, r1, r0 ldr r0, =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 beq _0802EB14 ldr r1, =gRecvCmds ldrh r0, [r1, 0x2] ldr r5, =0x00007fff cmp r0, r5 bne _0802EAD8 ldrh r0, [r1, 0x4] strh r0, [r4, 0x16] _0802EAD8: bl GetMultiplayerId lsls r0, 24 cmp r0, 0 bne _0802EB1A ldrh r0, [r4, 0x18] adds r0, 0x1 strh r0, [r4, 0x18] mov r0, sp movs r1, 0 movs r2, 0xC bl memset mov r0, sp strh r5, [r0] mov r1, sp ldrh r0, [r4, 0x18] strh r0, [r1, 0x2] mov r0, sp bl sub_800FE50 b _0802EB1A .pool _0802EB14: ldrh r0, [r4, 0x16] adds r0, 0x1 strh r0, [r4, 0x16] _0802EB1A: add sp, 0xC pop {r4,r5} pop {r0} bx r0 thumb_func_end sub_802EAB0 thumb_func_start sub_802EB24 sub_802EB24: @ 802EB24 push {r4-r6,lr} mov r6, r8 push {r6} sub sp, 0x4 adds r4, r0, 0 adds r5, r1, 0 adds r6, r2, 0 ldr r0, [sp, 0x18] lsls r4, 16 lsrs r4, 16 lsls r5, 16 lsrs r5, 16 lsls r6, 16 lsrs r6, 16 lsls r3, 16 lsrs r3, 16 lsls r0, 24 lsrs r0, 24 mov r8, r0 ldr r0, =sub_802EB98 movs r1, 0x50 str r3, [sp] bl CreateTask lsls r0, 24 lsrs r0, 24 ldr r2, =gTasks lsls r1, r0, 2 adds r1, r0 lsls r1, 3 adds r1, r2 strh r4, [r1, 0xC] strh r5, [r1, 0xE] strh r6, [r1, 0x10] ldr r3, [sp] strh r3, [r1, 0x12] mov r0, r8 strh r0, [r1, 0x14] add sp, 0x4 pop {r3} mov r8, r3 pop {r4-r6} pop {r0} bx r0 .pool thumb_func_end sub_802EB24 thumb_func_start sub_802EB84 sub_802EB84: @ 802EB84 push {lr} ldr r0, =sub_802EB98 bl FuncIsActiveTask lsls r0, 24 lsrs r0, 24 pop {r1} bx r1 .pool thumb_func_end sub_802EB84 thumb_func_start sub_802EB98 sub_802EB98: @ 802EB98 push {r4-r6,lr} sub sp, 0xC lsls r0, 24 lsrs r6, r0, 24 lsls r0, r6, 2 adds r0, r6 lsls r0, 3 ldr r1, =gTasks + 0x8 adds r5, r0, r1 movs r1, 0 ldrsh r0, [r5, r1] cmp r0, 0x1 beq _0802EC08 cmp r0, 0x1 bgt _0802EBC0 cmp r0, 0 beq _0802EBC6 b _0802EC8A .pool _0802EBC0: cmp r0, 0x2 beq _0802EC4C b _0802EC8A _0802EBC6: ldrh r0, [r5, 0x4] ldrh r1, [r5, 0x6] bl sub_802EF50 ldrh r0, [r5, 0x4] ldrh r1, [r5, 0x6] movs r3, 0x8 ldrsh r2, [r5, r3] movs r4, 0xA ldrsh r3, [r5, r4] ldrb r4, [r5, 0xC] str r4, [sp] bl sub_802EFA8 lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0xE] ldrh r0, [r5, 0x4] ldrh r1, [r5, 0x6] movs r3, 0x8 ldrsh r2, [r5, r3] movs r4, 0xA ldrsh r3, [r5, r4] ldrb r4, [r5, 0xC] str r4, [sp] adds r4, r5, 0 adds r4, 0x10 str r4, [sp, 0x4] adds r4, 0x2 str r4, [sp, 0x8] bl sub_802EFFC b _0802EC3E _0802EC08: ldrb r0, [r5, 0xE] bl sub_802EC98 cmp r0, 0 bne _0802EC8A ldrb r0, [r5, 0xE] ldrb r1, [r5, 0x10] ldrb r2, [r5, 0x12] bl sub_802EDCC movs r0, 0xE ldrsh r1, [r5, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 ldr r4, =gSprites adds r0, r4 bl FreeSpriteOamMatrix movs r3, 0xE ldrsh r1, [r5, r3] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 bl DestroySprite _0802EC3E: ldrh r0, [r5] adds r0, 0x1 strh r0, [r5] b _0802EC8A .pool _0802EC4C: ldrb r0, [r5, 0x10] bl sub_802EE30 cmp r0, 0 bne _0802EC8A movs r4, 0x10 ldrsh r1, [r5, r4] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 ldr r4, =gSprites adds r0, r4 bl DestroySprite movs r0, 0x12 ldrsh r1, [r5, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 bl DestroySprite ldrh r0, [r5, 0x4] bl FreeSpriteTilesByTag ldrh r0, [r5, 0x6] bl FreeSpritePaletteByTag adds r0, r6, 0 bl DestroyTask _0802EC8A: add sp, 0xC pop {r4-r6} pop {r0} bx r0 .pool thumb_func_end sub_802EB98 thumb_func_start sub_802EC98 sub_802EC98: @ 802EC98 push {r4,lr} lsls r0, 24 lsrs r0, 24 lsls r1, r0, 4 adds r1, r0 lsls r1, 2 ldr r0, =gSprites adds r4, r1, r0 movs r1, 0x2E ldrsh r0, [r4, r1] cmp r0, 0x7 bls _0802ECB2 b _0802EDC4 _0802ECB2: lsls r0, 2 ldr r1, =_0802ECC4 adds r0, r1 ldr r0, [r0] mov pc, r0 .pool .align 2, 0 _0802ECC4: .4byte _0802ECE4 .4byte _0802ECF6 .4byte _0802ED1C .4byte _0802ED2C .4byte _0802ED4E .4byte _0802ED86 .4byte _0802EDAC .4byte _0802ED82 _0802ECE4: movs r1, 0x80 lsls r1, 4 adds r0, r4, 0 movs r2, 0x1A bl sub_8007E18 ldrh r0, [r4, 0x2E] adds r0, 0x1 strh r0, [r4, 0x2E] _0802ECF6: movs r2, 0x32 ldrsh r0, [r4, r2] cmp r0, 0 bne _0802ED04 movs r0, 0x39 bl PlaySE _0802ED04: ldrh r0, [r4, 0x32] adds r0, 0x1 strh r0, [r4, 0x32] lsls r0, 16 asrs r0, 16 cmp r0, 0x13 ble _0802EDC4 movs r0, 0 strh r0, [r4, 0x32] adds r0, r4, 0 movs r1, 0x1 b _0802EDA2 _0802ED1C: adds r0, r4, 0 adds r0, 0x3F ldrb r1, [r0] movs r0, 0x20 ands r0, r1 cmp r0, 0 beq _0802EDC4 b _0802EDA6 _0802ED2C: ldrh r0, [r4, 0x32] adds r0, 0x1 strh r0, [r4, 0x32] lsls r0, 16 asrs r0, 16 cmp r0, 0x3 ble _0802EDC4 movs r0, 0 strh r0, [r4, 0x32] ldrh r0, [r4, 0x2E] adds r0, 0x1 strh r0, [r4, 0x2E] adds r0, r4, 0 movs r1, 0x2 bl StartSpriteAffineAnim b _0802EDC4 _0802ED4E: ldrh r0, [r4, 0x22] subs r0, 0x4 strh r0, [r4, 0x22] ldrh r0, [r4, 0x32] adds r0, 0x1 strh r0, [r4, 0x32] lsls r0, 16 asrs r0, 16 cmp r0, 0x7 ble _0802EDC4 ldrh r1, [r4, 0x36] movs r2, 0x36 ldrsh r0, [r4, r2] cmp r0, 0x1 bgt _0802ED7E adds r1, 0x1 lsls r1, 24 lsrs r1, 24 adds r0, r4, 0 bl StartSpriteAnim movs r0, 0 strh r0, [r4, 0x32] b _0802EDA6 _0802ED7E: movs r0, 0x7 strh r0, [r4, 0x2E] _0802ED82: movs r0, 0 b _0802EDC6 _0802ED86: ldrh r0, [r4, 0x22] adds r0, 0x4 strh r0, [r4, 0x22] ldrh r0, [r4, 0x32] adds r0, 0x1 strh r0, [r4, 0x32] lsls r0, 16 asrs r0, 16 cmp r0, 0x7 ble _0802EDC4 movs r0, 0 strh r0, [r4, 0x32] adds r0, r4, 0 movs r1, 0x3 _0802EDA2: bl StartSpriteAffineAnim _0802EDA6: ldrh r0, [r4, 0x2E] adds r0, 0x1 b _0802EDC2 _0802EDAC: adds r0, r4, 0 adds r0, 0x3F ldrb r1, [r0] movs r0, 0x20 ands r0, r1 cmp r0, 0 beq _0802EDC4 ldrh r0, [r4, 0x36] adds r0, 0x1 strh r0, [r4, 0x36] movs r0, 0x1 _0802EDC2: strh r0, [r4, 0x2E] _0802EDC4: movs r0, 0x1 _0802EDC6: pop {r4} pop {r1} bx r1 thumb_func_end sub_802EC98 thumb_func_start sub_802EDCC sub_802EDCC: @ 802EDCC push {r4-r6,lr} mov r6, r8 push {r6} lsls r1, 24 lsrs r1, 24 lsls r2, 24 lsrs r2, 24 ldr r0, =gSprites mov r8, r0 lsls r4, r1, 4 adds r4, r1 lsls r4, 2 adds r5, r4, r0 ldr r0, =0x0000ffd8 strh r0, [r5, 0x26] lsls r3, r2, 4 adds r3, r2 lsls r3, 2 mov r1, r8 adds r2, r3, r1 strh r0, [r2, 0x26] adds r5, 0x3E ldrb r6, [r5] movs r1, 0x5 negs r1, r1 adds r0, r1, 0 ands r0, r6 strb r0, [r5] adds r2, 0x3E ldrb r0, [r2] ands r1, r0 strb r1, [r2] movs r0, 0x1C add r8, r0 add r4, r8 ldr r0, =sub_802EE5C str r0, [r4] add r3, r8 str r0, [r3] pop {r3} mov r8, r3 pop {r4-r6} pop {r0} bx r0 .pool thumb_func_end sub_802EDCC thumb_func_start sub_802EE30 sub_802EE30: @ 802EE30 push {lr} lsls r0, 24 lsrs r0, 24 movs r3, 0 ldr r2, =gSprites lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r2, 0x1C adds r1, r2 ldr r1, [r1] ldr r0, =sub_802EE5C cmp r1, r0 bne _0802EE4E movs r3, 0x1 _0802EE4E: adds r0, r3, 0 pop {r1} bx r1 .pool thumb_func_end sub_802EE30 thumb_func_start sub_802EE5C sub_802EE5C: @ 802EE5C push {r4,r5,lr} adds r5, r0, 0 adds r4, r5, 0 adds r4, 0x2E movs r1, 0x2E ldrsh r0, [r5, r1] cmp r0, 0x4 bhi _0802EF46 lsls r0, 2 ldr r1, =_0802EE7C adds r0, r1 ldr r0, [r0] mov pc, r0 .pool .align 2, 0 _0802EE7C: .4byte _0802EE90 .4byte _0802EEA0 .4byte _0802EEC8 .4byte _0802EEFC .4byte _0802EF34 _0802EE90: movs r0, 0x40 strh r0, [r4, 0x8] ldrh r0, [r5, 0x26] lsls r0, 4 strh r0, [r4, 0xA] ldrh r0, [r4] adds r0, 0x1 strh r0, [r4] _0802EEA0: ldrh r1, [r4, 0x8] ldrh r2, [r4, 0xA] adds r0, r1, r2 strh r0, [r4, 0xA] adds r1, 0x1 strh r1, [r4, 0x8] lsls r0, 16 asrs r0, 20 strh r0, [r5, 0x26] cmp r0, 0 blt _0802EF46 movs r0, 0x39 bl PlaySE movs r0, 0 strh r0, [r5, 0x26] ldrh r0, [r4] adds r0, 0x1 strh r0, [r4] b _0802EF46 _0802EEC8: ldrh r0, [r4, 0x2] adds r0, 0xC strh r0, [r4, 0x2] lsls r0, 16 asrs r0, 16 cmp r0, 0x7F ble _0802EEE6 movs r0, 0x39 bl PlaySE movs r0, 0 strh r0, [r4, 0x2] ldrh r0, [r4] adds r0, 0x1 strh r0, [r4] _0802EEE6: ldr r0, =gSineTable movs r2, 0x2 ldrsh r1, [r4, r2] lsls r1, 1 adds r1, r0 movs r2, 0 ldrsh r0, [r1, r2] asrs r0, 4 b _0802EF2A .pool _0802EEFC: ldrh r0, [r4, 0x2] adds r0, 0x10 strh r0, [r4, 0x2] lsls r0, 16 asrs r0, 16 cmp r0, 0x7F ble _0802EF1A movs r0, 0x39 bl PlaySE movs r0, 0 strh r0, [r4, 0x2] ldrh r0, [r4] adds r0, 0x1 strh r0, [r4] _0802EF1A: ldr r1, =gSineTable movs r2, 0x2 ldrsh r0, [r4, r2] lsls r0, 1 adds r0, r1 ldrh r0, [r0] lsls r0, 16 asrs r0, 21 _0802EF2A: negs r0, r0 strh r0, [r5, 0x26] b _0802EF46 .pool _0802EF34: ldrh r0, [r4, 0x2] adds r0, 0x1 strh r0, [r4, 0x2] lsls r0, 16 asrs r0, 16 cmp r0, 0x28 ble _0802EF46 ldr r0, =SpriteCallbackDummy str r0, [r5, 0x1C] _0802EF46: pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end sub_802EE5C thumb_func_start sub_802EF50 sub_802EF50: @ 802EF50 push {r4,lr} sub sp, 0x10 lsls r1, 16 lsrs r1, 16 ldr r2, =gUnknown_082FEBCC ldr r3, [r2, 0x4] ldr r2, [r2] str r2, [sp] str r3, [sp, 0x4] ldr r2, =gUnknown_082FEBD4 ldr r3, [r2, 0x4] ldr r2, [r2] str r2, [sp, 0x8] str r3, [sp, 0xC] lsls r0, 16 ldr r3, =0x0000ffff ldr r2, [sp, 0x4] ands r2, r3 orrs r2, r0 str r2, [sp, 0x4] ldr r2, =0xffff0000 add r4, sp, 0x8 ldr r0, [r4, 0x4] ands r0, r2 orrs r0, r1 str r0, [r4, 0x4] mov r0, sp bl LoadCompressedSpriteSheet adds r0, r4, 0 bl LoadSpritePalette add sp, 0x10 pop {r4} pop {r0} bx r0 .pool thumb_func_end sub_802EF50 thumb_func_start sub_802EFA8 sub_802EFA8: @ 802EFA8 push {r4-r7,lr} mov r7, r8 push {r7} sub sp, 0x18 mov r12, r3 ldr r3, [sp, 0x30] lsls r1, 16 lsrs r1, 16 lsls r3, 24 lsrs r3, 24 mov r8, r3 mov r5, sp ldr r4, =gUnknown_082FEC90 ldm r4!, {r3,r6,r7} stm r5!, {r3,r6,r7} ldm r4!, {r3,r6,r7} stm r5!, {r3,r6,r7} mov r4, sp strh r0, [r4] mov r0, sp strh r1, [r0, 0x2] lsls r2, 16 asrs r2, 16 mov r0, r12 lsls r6, r0, 16 asrs r6, 16 mov r0, sp adds r1, r2, 0 adds r2, r6, 0 mov r3, r8 bl CreateSprite lsls r0, 24 lsrs r0, 24 add sp, 0x18 pop {r3} mov r8, r3 pop {r4-r7} pop {r1} bx r1 .pool thumb_func_end sub_802EFA8 thumb_func_start sub_802EFFC sub_802EFFC: @ 802EFFC push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x18 mov r12, r3 ldr r6, [sp, 0x38] ldr r3, [sp, 0x3C] mov r9, r3 ldr r4, [sp, 0x40] mov r8, r4 lsls r1, 16 lsrs r1, 16 lsls r6, 24 lsrs r6, 24 mov r10, r6 mov r4, sp ldr r3, =gUnknown_082FECA8 ldm r3!, {r5-r7} stm r4!, {r5-r7} ldm r3!, {r5-r7} stm r4!, {r5-r7} mov r3, sp strh r0, [r3] mov r0, sp strh r1, [r0, 0x2] lsls r2, 16 asrs r4, r2, 16 ldr r0, =0xffe00000 adds r2, r0 asrs r2, 16 mov r1, r12 lsls r5, r1, 16 asrs r5, 16 mov r0, sp adds r1, r2, 0 adds r2, r5, 0 mov r3, r10 bl CreateSprite lsls r0, 24 lsrs r0, 24 mov r3, r9 strh r0, [r3] adds r4, 0x20 lsls r4, 16 asrs r4, 16 mov r0, sp adds r1, r4, 0 adds r2, r5, 0 mov r3, r10 bl CreateSprite lsls r0, 24 lsrs r0, 24 mov r4, r8 strh r0, [r4] ldr r2, =gSprites mov r5, r9 movs r6, 0 ldrsh r1, [r5, r6] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 adds r0, 0x3E ldrb r1, [r0] movs r3, 0x4 orrs r1, r3 strb r1, [r0] movs r7, 0 ldrsh r1, [r4, r7] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 adds r0, 0x3E ldrb r1, [r0] orrs r1, r3 strb r1, [r0] movs r0, 0 ldrsh r1, [r4, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 movs r1, 0x1 bl StartSpriteAnim add sp, 0x18 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end sub_802EFFC .align 2, 0 @ don't pad with nop