.include "constants/gba_constants.inc" .include "asm/macros.inc" .syntax unified .text thumb_func_start sub_81150FC sub_81150FC: @ 81150FC push {lr} bl RunTasks bl AnimateSprites bl BuildOamBuffer ldr r0, _08115120 @ =gSharedMem + 0x19000 adds r1, r0, 0 adds r1, 0xB8 ldrb r0, [r1] cmp r0, 0 beq _0811511C adds r0, r1, 0 bl task_tutorial_controls_fadein _0811511C: pop {r0} bx r0 .align 2, 0 _08115120: .4byte gSharedMem + 0x19000 thumb_func_end sub_81150FC thumb_func_start sub_8115124 sub_8115124: @ 8115124 push {r4,lr} sub sp, 0x4 bl LoadOam bl ProcessSpriteCopyRequests bl TransferPlttBuffer bl sub_8117434 ldr r2, _08115188 @ =REG_BG1HOFS ldr r3, _0811518C @ =gSharedMem + 0x19000 ldrh r1, [r3, 0x26] movs r4, 0x80 lsls r4, 2 adds r0, r4, 0 subs r0, r1 strh r0, [r2] ldrb r0, [r3, 0x1] cmp r0, 0 beq _08115154 ldr r1, _08115190 @ =REG_BLDALPHA ldrh r0, [r3, 0x34] strh r0, [r1] _08115154: movs r1, 0x2A ldrsh r0, [r3, r1] cmp r0, 0 beq _08115170 ldr r1, _08115194 @ =0x040000d4 ldr r0, _08115198 @ =gBGTilemapBuffers + 0x800 + 0x1C0 str r0, [r1] ldr r0, _0811519C @ =0x060021c0 str r0, [r1, 0x4] ldr r0, _081151A0 @ =0x800001a0 str r0, [r1, 0x8] ldr r0, [r1, 0x8] movs r0, 0 strh r0, [r3, 0x2A] _08115170: movs r2, 0x28 ldrsh r0, [r3, r2] cmp r0, 0x1 beq _081151A4 cmp r0, 0x1 ble _0811521A cmp r0, 0x2 beq _081151D4 cmp r0, 0xFF beq _081151F8 b _0811521A .align 2, 0 _08115188: .4byte REG_BG1HOFS _0811518C: .4byte gSharedMem + 0x19000 _08115190: .4byte REG_BLDALPHA _08115194: .4byte 0x040000d4 _08115198: .4byte gBGTilemapBuffers + 0x800 + 0x1C0 _0811519C: .4byte 0x060021c0 _081151A0: .4byte 0x800001a0 _081151A4: ldr r1, _081151C4 @ =REG_BG0CNT movs r4, 0xF8 lsls r4, 5 adds r0, r4, 0 strh r0, [r1] adds r1, 0xCC ldr r0, _081151C8 @ =gBGTilemapBuffers + 0x1000 + 0x1C0 str r0, [r1] ldr r0, _081151CC @ =0x0600f9c0 str r0, [r1, 0x4] ldr r0, _081151D0 @ =0x800001a0 str r0, [r1, 0x8] ldr r0, [r1, 0x8] movs r0, 0x2 b _08115218 .align 2, 0 _081151C4: .4byte REG_BG0CNT _081151C8: .4byte gBGTilemapBuffers + 0x1000 + 0x1C0 _081151CC: .4byte 0x0600f9c0 _081151D0: .4byte 0x800001a0 _081151D4: ldr r1, _081151E8 @ =0x040000d4 ldr r0, _081151EC @ =gBGTilemapBuffers + 0x1000 + 0x1C0 str r0, [r1] ldr r0, _081151F0 @ =0x0600f9c0 str r0, [r1, 0x4] ldr r0, _081151F4 @ =0x800001a0 str r0, [r1, 0x8] ldr r0, [r1, 0x8] b _0811521A .align 2, 0 _081151E8: .4byte 0x040000d4 _081151EC: .4byte gBGTilemapBuffers + 0x1000 + 0x1C0 _081151F0: .4byte 0x0600f9c0 _081151F4: .4byte 0x800001a0 _081151F8: ldr r1, _08115224 @ =REG_BG0CNT ldr r2, _08115228 @ =0x00001f08 adds r0, r2, 0 strh r0, [r1] mov r1, sp movs r0, 0 strh r0, [r1] ldr r1, _0811522C @ =0x040000d4 mov r4, sp str r4, [r1] ldr r0, _08115230 @ =0x0600f9c0 str r0, [r1, 0x4] ldr r0, _08115234 @ =0x810001a0 str r0, [r1, 0x8] ldr r0, [r1, 0x8] movs r0, 0 _08115218: strh r0, [r3, 0x28] _0811521A: add sp, 0x4 pop {r4} pop {r0} bx r0 .align 2, 0 _08115224: .4byte REG_BG0CNT _08115228: .4byte 0x00001f08 _0811522C: .4byte 0x040000d4 _08115230: .4byte 0x0600f9c0 _08115234: .4byte 0x810001a0 thumb_func_end sub_8115124 thumb_func_start sub_8115238 sub_8115238: @ 8115238 push {r4-r6,lr} sub sp, 0x8 ldr r1, _081152C0 @ =gUnknown_083F8EC4 mov r0, sp movs r2, 0x6 bl memcpy ldr r5, _081152C4 @ =gSharedMem + 0x19000 movs r2, 0xBE lsls r2, 1 adds r0, r5, 0 movs r1, 0 bl memset ldr r0, _081152C8 @ =gSpecialVar_0x8004 ldrh r2, [r0] movs r0, 0x1 ands r0, r2 ldrb r1, [r5, 0x4] movs r3, 0x4 negs r3, r3 ands r3, r1 orrs r3, r0 strb r3, [r5, 0x4] movs r0, 0x80 ands r0, r2 cmp r0, 0 beq _08115276 movs r0, 0x80 orrs r3, r0 strb r3, [r5, 0x4] _08115276: ldr r3, _081152CC @ =gUnknown_083F8DF4 ldrb r2, [r5, 0x4] lsls r1, r2, 30 lsrs r0, r1, 25 adds r0, r3 ldrb r0, [r0, 0x3] adds r4, r5, 0 adds r4, 0x22 strb r0, [r4] lsrs r0, r1, 25 adds r0, r3 ldrb r0, [r0, 0x4] adds r3, r5, 0 adds r3, 0x23 strb r0, [r3] ldr r0, _081152D0 @ =gUnknown_083F8DF0 lsrs r1, 30 lsls r2, 24 lsrs r2, 31 lsls r2, 1 adds r1, r2 adds r1, r0 ldrb r2, [r1] strb r2, [r5, 0x19] ldrb r1, [r5, 0x1A] movs r0, 0xF ands r0, r1 movs r1, 0x10 orrs r0, r1 strb r0, [r5, 0x1A] cmp r2, 0x1 bne _081152DC ldr r4, _081152D4 @ =gPlttBufferUnfaded ldr r3, _081152D8 @ =gPlttBufferFaded mov r0, sp ldrh r2, [r0] b _081152E4 .align 2, 0 _081152C0: .4byte gUnknown_083F8EC4 _081152C4: .4byte gSharedMem + 0x19000 _081152C8: .4byte gSpecialVar_0x8004 _081152CC: .4byte gUnknown_083F8DF4 _081152D0: .4byte gUnknown_083F8DF0 _081152D4: .4byte gPlttBufferUnfaded _081152D8: .4byte gPlttBufferFaded _081152DC: ldr r4, _08115348 @ =gPlttBufferUnfaded ldr r3, _0811534C @ =gPlttBufferFaded mov r0, sp ldrh r2, [r0, 0x2] _081152E4: adds r0, r3, 0 adds r0, 0xA2 strh r2, [r0] ldr r1, _08115350 @ =0x0000ffff adds r0, r1, 0 ands r0, r2 strh r0, [r3] ands r0, r1 adds r2, r4, 0 adds r2, 0xA2 strh r0, [r2] ands r0, r1 strh r0, [r4] ldr r0, _08115354 @ =gSharedMem + 0x190B8 bl sub_8124918 movs r4, 0 ldr r5, _08115358 @ =gUnknown_083F8E34 _08115308: lsls r2, r4, 3 adds r2, r5 ldr r0, _08115354 @ =gSharedMem + 0x190B8 adds r1, r4, 0 bl sub_812492C adds r0, r4, 0x1 lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0xC bls _08115308 movs r4, 0 ldr r5, _0811535C @ =gSharedMem + 0x19000 _08115322: movs r0, 0x64 muls r0, r4 ldr r1, _08115360 @ =gPlayerParty adds r0, r1 movs r1, 0x41 bl GetMonData adds r1, r0, 0 movs r0, 0x98 lsls r0, 1 cmp r1, r0 beq _08115364 adds r0, 0x2 cmp r1, r0 bne _0811536C ldrb r0, [r5, 0x2] movs r1, 0x1 b _08115368 .align 2, 0 _08115348: .4byte gPlttBufferUnfaded _0811534C: .4byte gPlttBufferFaded _08115350: .4byte 0x0000ffff _08115354: .4byte gSharedMem + 0x190B8 _08115358: .4byte gUnknown_083F8E34 _0811535C: .4byte gSharedMem + 0x19000 _08115360: .4byte gPlayerParty _08115364: ldrb r0, [r5, 0x2] movs r1, 0x2 _08115368: orrs r0, r1 strb r0, [r5, 0x2] _0811536C: adds r0, r4, 0x1 lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0x5 bls _08115322 bl RtcCalcLocalTime add sp, 0x8 pop {r4-r6} pop {r0} bx r0 thumb_func_end sub_8115238 thumb_func_start sub_8115384 sub_8115384: @ 8115384 push {r4,lr} sub sp, 0x4 ldr r1, _081153A4 @ =gMain ldr r2, _081153A8 @ =0x0000043c adds r0, r1, r2 ldrb r0, [r0] adds r2, r1, 0 cmp r0, 0x7 bls _08115398 b _081155FE _08115398: lsls r0, 2 ldr r1, _081153AC @ =_081153B0 adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _081153A4: .4byte gMain _081153A8: .4byte 0x0000043c _081153AC: .4byte _081153B0 .align 2, 0 _081153B0: .4byte _081153D0 .4byte _08115444 .4byte _08115460 .4byte _08115494 .4byte _081154CC .4byte _081154FC .4byte _0811556C .4byte _0811558C _081153D0: movs r0, 0 bl SetVBlankCallback bl remove_some_task bl sub_80F9438 bl sub_80F9368 ldr r1, _08115420 @ =REG_BG2CNT ldr r3, _08115424 @ =0x00004686 adds r0, r3, 0 strh r0, [r1] subs r1, 0x2 ldr r2, _08115428 @ =0x00004401 adds r0, r2, 0 strh r0, [r1] adds r1, 0x46 movs r3, 0x90 lsls r3, 6 adds r0, r3, 0 strh r0, [r1] adds r1, 0x2 ldr r2, _0811542C @ =0x0000060a adds r0, r2, 0 strh r0, [r1] ldr r0, _08115430 @ =gUnknown_08E8096C movs r1, 0xC0 lsls r1, 19 bl LZ77UnCompVram ldr r0, _08115434 @ =gRouletteWheelTiles ldr r1, _08115438 @ =0x06004000 bl LZ77UnCompVram ldr r1, _0811543C @ =gMain ldr r3, _08115440 @ =0x0000043c adds r1, r3 b _0811557A .align 2, 0 _08115420: .4byte REG_BG2CNT _08115424: .4byte 0x00004686 _08115428: .4byte 0x00004401 _0811542C: .4byte 0x0000060a _08115430: .4byte gUnknown_08E8096C _08115434: .4byte gRouletteWheelTiles _08115438: .4byte 0x06004000 _0811543C: .4byte gMain _08115440: .4byte 0x0000043c _08115444: bl ResetPaletteFade bl ResetSpriteData bl ResetTasks ldr r1, _08115458 @ =gMain ldr r0, _0811545C @ =0x0000043c adds r1, r0 b _0811557A .align 2, 0 _08115458: .4byte gMain _0811545C: .4byte 0x0000043c _08115460: ldr r0, _08115480 @ =gWindowConfig_81E6C3C bl SetUpWindowConfig ldr r0, _08115484 @ =gWindowConfig_81E6CE4 bl InitMenuWindow ldr r0, _08115488 @ =gUnknown_083F86BC movs r2, 0xE0 lsls r2, 1 movs r1, 0 bl LoadPalette ldr r1, _0811548C @ =gMain ldr r2, _08115490 @ =0x0000043c adds r1, r2 b _0811557A .align 2, 0 _08115480: .4byte gWindowConfig_81E6C3C _08115484: .4byte gWindowConfig_81E6CE4 _08115488: .4byte gUnknown_083F86BC _0811548C: .4byte gMain _08115490: .4byte 0x0000043c _08115494: bl sub_8115238 bl sub_80F9020 ldr r0, _081154B4 @ =gUnknown_083F88BC ldr r1, _081154B8 @ =gSharedMem + 0x18800 bl LZ77UnCompWram ldr r0, _081154BC @ =gUnknown_083F8A60 ldr r1, _081154C0 @ =0x06003000 bl LZ77UnCompVram ldr r1, _081154C4 @ =gMain ldr r3, _081154C8 @ =0x0000043c adds r1, r3 b _0811557A .align 2, 0 _081154B4: .4byte gUnknown_083F88BC _081154B8: .4byte gSharedMem + 0x18800 _081154BC: .4byte gUnknown_083F8A60 _081154C0: .4byte 0x06003000 _081154C4: .4byte gMain _081154C8: .4byte 0x0000043c _081154CC: movs r0, 0 bl sub_8117838 bl sub_811857C bl sub_81184D8 bl sub_8117F2C bl sub_8117900 bl sub_8117BBC bl sub_8117DF4 ldr r1, _081154F4 @ =gMain ldr r0, _081154F8 @ =0x0000043c adds r1, r0 b _0811557A .align 2, 0 _081154F4: .4byte gMain _081154F8: .4byte 0x0000043c _081154FC: bl AnimateSprites bl BuildOamBuffer ldr r0, _08115550 @ =gSaveBlock1 ldr r1, _08115554 @ =0x00000494 adds r0, r1 ldrh r0, [r0] bl sub_81180F4 movs r0, 0x6 bl sub_81182F8 movs r0, 0 bl sub_811829C movs r0, 0 bl sub_8117158 movs r0, 0 movs r1, 0xE movs r2, 0x1D movs r3, 0x13 bl MenuDrawTextWindow ldr r0, _08115558 @ =gUnknown_081C4157 movs r1, 0x1 movs r2, 0xF bl MenuPrint ldr r1, _0811555C @ =gSpriteCoordOffsetX movs r2, 0x3C negs r2, r2 adds r0, r2, 0 strh r0, [r1] ldr r1, _08115560 @ =gSpriteCoordOffsetY movs r0, 0 strh r0, [r1] ldr r1, _08115564 @ =gMain ldr r3, _08115568 @ =0x0000043c adds r1, r3 b _0811557A .align 2, 0 _08115550: .4byte gSaveBlock1 _08115554: .4byte 0x00000494 _08115558: .4byte gUnknown_081C4157 _0811555C: .4byte gSpriteCoordOffsetX _08115560: .4byte gSpriteCoordOffsetY _08115564: .4byte gMain _08115568: .4byte 0x0000043c _0811556C: movs r1, 0x80 lsls r1, 19 ldr r3, _08115584 @ =0x00001741 adds r0, r3, 0 strh r0, [r1] ldr r0, _08115588 @ =0x0000043c adds r1, r2, r0 _0811557A: ldrb r0, [r1] adds r0, 0x1 strb r0, [r1] b _081155FE .align 2, 0 _08115584: .4byte 0x00001741 _08115588: .4byte 0x0000043c _0811558C: ldr r3, _08115608 @ =0x04000208 ldrh r2, [r3] movs r0, 0 strh r0, [r3] ldr r4, _0811560C @ =0x04000200 ldrh r0, [r4] movs r1, 0x1 orrs r0, r1 strh r0, [r4] strh r2, [r3] ldr r2, _08115610 @ =REG_DISPSTAT ldrh r0, [r2] movs r1, 0x8 orrs r0, r1 strh r0, [r2] ldr r0, _08115614 @ =sub_8115124 bl SetVBlankCallback movs r0, 0x1 str r0, [sp] movs r0, 0xFF movs r1, 0 movs r2, 0x10 movs r3, 0 bl BeginHardwarePaletteFade ldr r0, _08115618 @ =sub_81156BC movs r1, 0 bl CreateTask ldr r4, _0811561C @ =gSharedMem + 0x19000 adds r1, r4, 0 adds r1, 0xA4 strb r0, [r1] lsls r0, 24 lsrs r0, 24 ldr r2, _08115620 @ =gTasks lsls r1, r0, 2 adds r1, r0 lsls r1, 3 adds r1, r2 movs r0, 0x6 strh r0, [r1, 0x14] ldr r0, _08115624 @ =gSaveBlock1 ldr r2, _08115628 @ =0x00000494 adds r0, r2 ldrh r0, [r0] strh r0, [r1, 0x22] ldr r0, _0811562C @ =sub_8115634 movs r1, 0x1 bl CreateTask adds r4, 0xA5 strb r0, [r4] ldr r0, _08115630 @ =sub_81150FC bl SetMainCallback2 _081155FE: add sp, 0x4 pop {r4} pop {r0} bx r0 .align 2, 0 _08115608: .4byte 0x04000208 _0811560C: .4byte 0x04000200 _08115610: .4byte REG_DISPSTAT _08115614: .4byte sub_8115124 _08115618: .4byte sub_81156BC _0811561C: .4byte gSharedMem + 0x19000 _08115620: .4byte gTasks _08115624: .4byte gSaveBlock1 _08115628: .4byte 0x00000494 _0811562C: .4byte sub_8115634 _08115630: .4byte sub_81150FC thumb_func_end sub_8115384 thumb_func_start sub_8115634 sub_8115634: @ 8115634 push {r4-r6,lr} ldr r0, _081156B8 @ =gSharedMem + 0x19000 adds r3, r0, 0 adds r3, 0x21 ldrb r1, [r3] adds r2, r1, 0x1 strb r2, [r3] adds r2, r0, 0 adds r2, 0x23 lsls r1, 24 lsrs r1, 24 adds r6, r0, 0 ldrb r2, [r2] cmp r1, r2 bne _08115674 movs r0, 0 strb r0, [r3] adds r2, r6, 0 adds r2, 0x22 ldrb r1, [r2] ldrh r0, [r6, 0x24] subs r0, r1 strh r0, [r6, 0x24] lsls r0, 16 cmp r0, 0 bge _08115674 ldrb r1, [r2] movs r2, 0xB4 lsls r2, 1 adds r0, r2, 0 subs r0, r1 strh r0, [r6, 0x24] _08115674: adds r4, r6, 0 ldrh r0, [r4, 0x24] bl Sin2 lsls r0, 16 lsrs r5, r0, 16 ldrh r0, [r4, 0x24] bl Cos2 lsls r0, 16 lsrs r1, r0, 16 lsls r0, r5, 16 asrs r0, 16 cmp r0, 0 bge _08115694 adds r0, 0xF _08115694: lsls r0, 12 lsrs r5, r0, 16 lsls r0, r1, 16 asrs r0, 16 cmp r0, 0 bge _081156A2 adds r0, 0xF _081156A2: asrs r0, 4 strh r0, [r6, 0x32] strh r0, [r6, 0x2C] strh r5, [r6, 0x2E] lsls r0, r5, 16 asrs r0, 16 negs r0, r0 strh r0, [r6, 0x30] pop {r4-r6} pop {r0} bx r0 .align 2, 0 _081156B8: .4byte gSharedMem + 0x19000 thumb_func_end sub_8115634 thumb_func_start sub_81156BC sub_81156BC: @ 81156BC push {r4,r5,lr} lsls r0, 24 lsrs r4, r0, 24 bl UpdatePaletteFade lsls r0, 24 lsrs r3, r0, 24 cmp r3, 0 bne _08115716 ldr r2, _0811571C @ =REG_BLDCNT ldrh r0, [r2] movs r5, 0x90 lsls r5, 6 adds r1, r5, 0 orrs r0, r1 strh r0, [r2] ldr r1, _08115720 @ =REG_BLDALPHA ldr r2, _08115724 @ =0x00000808 adds r0, r2, 0 strh r0, [r1] ldr r1, _08115728 @ =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 strh r3, [r0, 0x14] adds r0, r4, 0 bl sub_8116CAC bl sub_8116CF8 bl sub_81185E8 movs r0, 0 bl sub_8117158 movs r0, 0x6 bl sub_81182F8 ldr r1, _0811572C @ =sub_81159BC ldr r2, _08115730 @ =0x0000ffff adds r0, r4, 0 movs r3, 0x3 bl sub_8116C34 _08115716: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0811571C: .4byte REG_BLDCNT _08115720: .4byte REG_BLDALPHA _08115724: .4byte 0x00000808 _08115728: .4byte gTasks _0811572C: .4byte sub_81159BC _08115730: .4byte 0x0000ffff thumb_func_end sub_81156BC thumb_func_start sub_8115734 sub_8115734: @ 8115734 push {r4,lr} adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 movs r0, 0x14 movs r1, 0x8 movs r2, 0x1 bl DisplayYesNoMenu ldr r0, _08115770 @ =0x00002d9e bl sub_814AAF8 movs r0, 0 movs r1, 0xE movs r2, 0x1D movs r3, 0x13 bl MenuDrawTextWindow ldr r0, _08115774 @ =gUnknown_081C41E3 movs r1, 0x1 movs r2, 0xF bl MenuPrint ldr r1, _08115778 @ =gUnknown_083F8EBC adds r0, r4, 0 bl DoYesNoFuncWithChoice pop {r4} pop {r0} bx r0 .align 2, 0 _08115770: .4byte 0x00002d9e _08115774: .4byte gUnknown_081C41E3 _08115778: .4byte gUnknown_083F8EBC thumb_func_end sub_8115734 thumb_func_start sub_811577C sub_811577C: @ 811577C push {r4,lr} adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 movs r0, 0x14 movs r1, 0x8 movs r2, 0x1A movs r3, 0xD bl MenuZeroFillWindowRect ldr r1, _081157A4 @ =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 ldr r1, _081157A8 @ =sub_81159BC str r1, [r0] pop {r4} pop {r0} bx r0 .align 2, 0 _081157A4: .4byte gTasks _081157A8: .4byte sub_81159BC thumb_func_end sub_811577C thumb_func_start sub_81157AC sub_81157AC: @ 81157AC push {r4,lr} adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 ldr r0, _081157CC @ =gSharedMem + 0x19000 adds r0, 0xA5 ldrb r0, [r0] bl DestroyTask adds r0, r4, 0 bl sub_8116AB0 pop {r4} pop {r0} bx r0 .align 2, 0 _081157CC: .4byte gSharedMem + 0x19000 thumb_func_end sub_81157AC thumb_func_start sub_81157D0 sub_81157D0: @ 81157D0 push {r4-r7,lr} sub sp, 0x8 lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0xF bhi _081158C8 lsls r0, r4, 2 ldr r1, _081157E8 @ =_081157EC adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _081157E8: .4byte _081157EC .align 2, 0 _081157EC: .4byte _0811582C .4byte _08115848 .4byte _08115848 .4byte _08115848 .4byte _08115848 .4byte _08115884 .4byte _081158C8 .4byte _081158C8 .4byte _081158C8 .4byte _081158C8 .4byte _08115884 .4byte _081158C8 .4byte _081158C8 .4byte _081158C8 .4byte _081158C8 .4byte _08115884 _0811582C: ldr r0, _08115844 @ =gBGTilemapBuffers + 0x1000 movs r1, 0x10 str r1, [sp] movs r1, 0xD str r1, [sp, 0x4] movs r1, 0 movs r2, 0xE movs r3, 0x7 bl sub_8124DDC b _08115918 .align 2, 0 _08115844: .4byte gBGTilemapBuffers + 0x1000 _08115848: lsls r0, r4, 1 adds r0, r4 adds r0, 0xE lsls r0, 24 lsrs r7, r0, 24 ldr r5, _0811587C @ =gBGTilemapBuffers + 0x1000 movs r0, 0x10 str r0, [sp] movs r4, 0xD str r4, [sp, 0x4] adds r0, r5, 0 movs r1, 0 movs r2, 0xE movs r3, 0x7 bl sub_8124DDC ldr r1, _08115880 @ =gSharedMem + 0x18A32 movs r0, 0x3 str r0, [sp] str r4, [sp, 0x4] adds r0, r5, 0 adds r2, r7, 0 movs r3, 0x7 bl sub_8124E2C b _08115918 .align 2, 0 _0811587C: .4byte gBGTilemapBuffers + 0x1000 _08115880: .4byte gSharedMem + 0x18A32 _08115884: subs r0, r4, 0x1 movs r1, 0x5 bl __divsi3 lsls r1, r0, 1 adds r1, r0 adds r1, 0xA lsls r1, 24 lsrs r6, r1, 24 ldr r5, _081158C0 @ =gBGTilemapBuffers + 0x1000 movs r4, 0x10 str r4, [sp] movs r0, 0xD str r0, [sp, 0x4] adds r0, r5, 0 movs r1, 0 movs r2, 0xE movs r3, 0x7 bl sub_8124DDC ldr r1, _081158C4 @ =gSharedMem + 0x18A80 str r4, [sp] movs r0, 0x3 str r0, [sp, 0x4] adds r0, r5, 0 movs r2, 0xE adds r3, r6, 0 bl sub_8124E2C b _08115918 .align 2, 0 _081158C0: .4byte gBGTilemapBuffers + 0x1000 _081158C4: .4byte gSharedMem + 0x18A80 _081158C8: adds r0, r4, 0 movs r1, 0x5 bl __umodsi3 lsls r0, 24 lsrs r0, 24 lsls r1, r0, 1 adds r1, r0 adds r1, 0xE lsls r1, 24 lsrs r7, r1, 24 subs r0, r4, 0x1 movs r1, 0x5 bl __divsi3 lsls r1, r0, 1 adds r1, r0 adds r1, 0x7 lsls r1, 24 lsrs r6, r1, 24 ldr r4, _08115920 @ =gBGTilemapBuffers + 0x1000 movs r0, 0x10 str r0, [sp] movs r0, 0xD str r0, [sp, 0x4] adds r0, r4, 0 movs r1, 0 movs r2, 0xE movs r3, 0x7 bl sub_8124DDC ldr r1, _08115924 @ =gSharedMem + 0x18A20 movs r0, 0x3 str r0, [sp] str r0, [sp, 0x4] adds r0, r4, 0 adds r2, r7, 0 adds r3, r6, 0 bl sub_8124E2C _08115918: add sp, 0x8 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08115920: .4byte gBGTilemapBuffers + 0x1000 _08115924: .4byte gSharedMem + 0x18A20 thumb_func_end sub_81157D0 thumb_func_start sub_8115928 sub_8115928: @ 8115928 push {r4,r5,lr} lsls r0, 24 lsrs r5, r0, 24 lsls r1, 24 cmp r1, 0 bne _0811594C ldr r1, _08115948 @ =gTasks lsls r4, r5, 2 adds r0, r4, r5 lsls r0, 3 adds r0, r1 ldrb r0, [r0, 0x10] bl sub_811829C b _08115960 .align 2, 0 _08115948: .4byte gTasks _0811594C: ldr r0, _08115974 @ =gSharedMem + 0x19000 ldrb r1, [r0, 0x1A] lsls r1, 28 lsrs r1, 28 adds r0, 0x1B adds r1, r0 ldrb r0, [r1] bl sub_811829C lsls r4, r5, 2 _08115960: ldr r0, _08115978 @ =gTasks adds r1, r4, r5 lsls r1, 3 adds r1, r0 ldrb r0, [r1, 0x10] bl sub_81157D0 pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08115974: .4byte gSharedMem + 0x19000 _08115978: .4byte gTasks thumb_func_end sub_8115928 thumb_func_start sub_811597C sub_811597C: @ 811597C push {r4-r6,lr} lsls r0, 24 lsrs r0, 24 ldr r5, _081159B0 @ =gSharedMem + 0x19000 movs r6, 0 movs r1, 0x1 strh r1, [r5, 0x28] ldr r1, _081159B4 @ =gTasks lsls r4, r0, 2 adds r4, r0 lsls r4, 3 adds r4, r1 ldrb r0, [r4, 0x10] bl sub_81157D0 adds r1, r5, 0 adds r1, 0x23 movs r0, 0x2 strb r0, [r1] adds r5, 0x21 strb r6, [r5] ldr r0, _081159B8 @ =sub_8115E14 str r0, [r4] pop {r4-r6} pop {r0} bx r0 .align 2, 0 _081159B0: .4byte gSharedMem + 0x19000 _081159B4: .4byte gTasks _081159B8: .4byte sub_8115E14 thumb_func_end sub_811597C thumb_func_start sub_81159BC sub_81159BC: @ 81159BC push {r4-r7,lr} lsls r0, 24 lsrs r6, r0, 24 ldr r3, _08115A10 @ =gSharedMem + 0x19000 ldr r1, [r3, 0x8] movs r0, 0x20 ands r0, r1 cmp r0, 0 beq _08115A1C movs r2, 0xB ldr r5, _08115A14 @ =gUnknown_083F8C00 adds r0, r5, 0 adds r0, 0xE4 ldr r0, [r0] ands r1, r0 ldr r0, _08115A18 @ =gTasks mov r12, r0 lsls r7, r6, 2 cmp r1, 0 beq _08115A5A adds r4, r3, 0 adds r3, r5, 0 adds r3, 0x8 _081159EA: lsls r0, r2, 16 movs r1, 0x80 lsls r1, 9 adds r0, r1 lsrs r2, r0, 16 asrs r1, r0, 16 cmp r1, 0xD bgt _08115A5A lsls r0, r1, 2 adds r0, r1 lsls r0, 2 adds r0, r3 ldr r1, [r4, 0x8] ldr r0, [r0] ands r1, r0 cmp r1, 0 bne _081159EA b _08115A5A .align 2, 0 _08115A10: .4byte gSharedMem + 0x19000 _08115A14: .4byte gUnknown_083F8C00 _08115A18: .4byte gTasks _08115A1C: movs r2, 0x6 ldr r5, _08115A88 @ =gUnknown_083F8C00 adds r0, r5, 0 adds r0, 0x80 ldr r0, [r0] ands r1, r0 ldr r0, _08115A8C @ =gTasks mov r12, r0 lsls r7, r6, 2 cmp r1, 0 beq _08115A5A adds r4, r3, 0 adds r3, r5, 0 adds r3, 0x8 _08115A38: lsls r0, r2, 16 movs r1, 0x80 lsls r1, 9 adds r0, r1 lsrs r2, r0, 16 asrs r1, r0, 16 cmp r1, 0x9 bgt _08115A5A lsls r0, r1, 2 adds r0, r1 lsls r0, 2 adds r0, r3 ldr r1, [r4, 0x8] ldr r0, [r0] ands r1, r0 cmp r1, 0 bne _08115A38 _08115A5A: adds r4, r7, r6 lsls r4, 3 add r4, r12 movs r5, 0 strh r2, [r4, 0x10] adds r0, r6, 0 bl sub_8116CAC ldrb r0, [r4, 0x10] bl sub_8117158 ldrb r0, [r4, 0x10] bl sub_811829C ldrb r0, [r4, 0x10] bl sub_8116EF8 strh r5, [r4, 0xA] ldr r0, _08115A90 @ =sub_811597C str r0, [r4] pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08115A88: .4byte gUnknown_083F8C00 _08115A8C: .4byte gTasks _08115A90: .4byte sub_811597C thumb_func_end sub_81159BC thumb_func_start sub_8115A94 sub_8115A94: @ 8115A94 push {r4-r7,lr} mov r7, r8 push {r7} sub sp, 0x4 adds r4, r0, 0 lsls r1, 24 lsrs r5, r1, 24 movs r6, 0 movs r7, 0 ldr r1, _08115ADC @ =gUnknown_083F8ECA mov r0, sp movs r2, 0x4 bl memcpy ldrb r0, [r4] mov r8, r0 cmp r5, 0 blt _08115B08 cmp r5, 0x1 bgt _08115AE0 movs r1, 0 ldrsh r0, [r4, r1] movs r1, 0x5 bl __modsi3 lsls r0, 24 lsrs r6, r0, 24 movs r2, 0xF0 lsls r2, 20 adds r1, r0, r2 lsrs r7, r1, 24 cmp r0, 0 bne _08115B08 movs r6, 0x5 b _08115B08 .align 2, 0 _08115ADC: .4byte gUnknown_083F8ECA _08115AE0: cmp r5, 0x3 bgt _08115B08 movs r1, 0 ldrsh r0, [r4, r1] movs r1, 0x5 bl __divsi3 lsls r0, 16 asrs r0, 16 lsls r1, r0, 2 adds r1, r0 lsls r1, 24 lsrs r6, r1, 24 movs r2, 0x80 lsls r2, 19 adds r0, r1, r2 lsrs r7, r0, 24 cmp r1, 0 bne _08115B08 movs r6, 0x1 _08115B08: mov r1, sp adds r0, r1, r5 ldrb r0, [r0] lsls r0, 24 asrs r0, 24 ldrh r2, [r4] adds r0, r2 strh r0, [r4] lsls r1, r6, 24 asrs r3, r1, 24 lsls r0, 16 asrs r0, 16 lsls r2, r7, 24 cmp r0, r3 bge _08115B2A asrs r0, r2, 24 strh r0, [r4] _08115B2A: movs r0, 0 ldrsh r1, [r4, r0] asrs r0, r2, 24 cmp r1, r0 ble _08115B36 strh r3, [r4] _08115B36: mov r1, r8 lsls r0, r1, 24 movs r2, 0 ldrsh r1, [r4, r2] asrs r0, 24 cmp r1, r0 bne _08115B48 movs r0, 0 b _08115B4A _08115B48: movs r0, 0x1 _08115B4A: add sp, 0x4 pop {r3} mov r8, r3 pop {r4-r7} pop {r1} bx r1 thumb_func_end sub_8115A94 thumb_func_start sub_8115B58 sub_8115B58: @ 8115B58 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} lsls r0, 24 lsrs r7, r0, 24 movs r0, 0 mov r8, r0 movs r5, 0 ldr r4, _08115D30 @ =gMain ldrh r1, [r4, 0x2E] movs r0, 0x40 ands r0, r1 cmp r0, 0 beq _08115B94 movs r5, 0x1 lsls r0, r7, 2 adds r0, r7 lsls r0, 3 ldr r1, _08115D34 @ =gTasks + 0x8 adds r0, r1 adds r0, 0x8 movs r1, 0 bl sub_8115A94 lsls r0, 24 cmp r0, 0 bne _08115B94 b _08115D20 _08115B94: ldrh r1, [r4, 0x2E] movs r0, 0x80 ands r0, r1 cmp r0, 0 beq _08115BBA movs r5, 0x1 lsls r0, r7, 2 adds r0, r7 lsls r0, 3 ldr r1, _08115D34 @ =gTasks + 0x8 adds r0, r1 adds r0, 0x8 movs r1, 0x1 bl sub_8115A94 lsls r0, 24 cmp r0, 0 bne _08115BBA b _08115D20 _08115BBA: ldrh r1, [r4, 0x2E] movs r0, 0x20 ands r0, r1 cmp r0, 0 beq _08115BE0 movs r5, 0x1 lsls r0, r7, 2 adds r0, r7 lsls r0, 3 ldr r1, _08115D34 @ =gTasks + 0x8 adds r0, r1 adds r0, 0x8 movs r1, 0x2 bl sub_8115A94 lsls r0, 24 cmp r0, 0 bne _08115BE0 b _08115D20 _08115BE0: ldrh r1, [r4, 0x2E] movs r0, 0x10 ands r0, r1 cmp r0, 0 beq _08115C06 movs r5, 0x1 lsls r0, r7, 2 adds r0, r7 lsls r0, 3 ldr r1, _08115D34 @ =gTasks + 0x8 adds r0, r1 adds r0, 0x8 movs r1, 0x3 bl sub_8115A94 lsls r0, 24 cmp r0, 0 bne _08115C06 b _08115D20 _08115C06: cmp r5, 0 bne _08115C0C b _08115D20 _08115C0C: ldr r0, _08115D38 @ =gTasks lsls r6, r7, 2 adds r4, r6, r7 lsls r4, 3 adds r4, r0 ldrb r0, [r4, 0x10] bl sub_8117158 adds r0, r7, 0 movs r1, 0 bl sub_8115928 mov r1, r8 strh r1, [r4, 0xA] movs r0, 0x5 bl PlaySE ldr r5, _08115D3C @ =gSharedMem + 0x190B8 ldr r1, _08115D40 @ =0x0000ffff adds r0, r5, 0 bl sub_8124D3C adds r3, r5, 0 adds r3, 0xB8 ldrb r2, [r3] movs r1, 0x7F adds r0, r1, 0 ands r0, r2 strb r0, [r3] subs r3, 0xC ldrb r2, [r3] adds r0, r1, 0 ands r0, r2 strb r0, [r3] adds r2, r5, 0 adds r2, 0xA0 ldrb r0, [r2] ands r1, r0 strb r1, [r2] ldrb r0, [r4, 0x10] bl sub_8116EF8 movs r4, 0 mov r12, r6 ldr r6, _08115D44 @ =gSprites movs r2, 0x7C negs r2, r2 adds r2, r5 mov r10, r2 movs r0, 0x8 adds r0, r6 mov r8, r0 ldr r1, _08115D48 @ =0xfffffc00 mov r9, r1 ldr r2, _08115D4C @ =0x000003ff adds r5, r2, 0 _08115C7C: adds r0, r4, 0 adds r0, 0x29 add r0, r10 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r3, r0, r6 adds r2, r3, 0 adds r2, 0x40 add r0, r8 ldr r0, [r0] ldr r0, [r0] ldrh r1, [r0] ldrh r2, [r2] adds r1, r2 ands r1, r5 ldrh r2, [r3, 0x4] mov r0, r9 ands r0, r2 orrs r0, r1 strh r0, [r3, 0x4] adds r0, r4, 0x1 lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0x3 bls _08115C7C ldr r0, _08115D38 @ =gTasks mov r2, r12 adds r1, r2, r7 lsls r1, 3 adds r1, r0 ldrh r3, [r1, 0x10] subs r0, r3, 0x1 lsls r0, 16 lsrs r0, 16 cmp r0, 0x3 bhi _08115D20 ldr r2, _08115D50 @ =gUnknown_083F8C00 movs r0, 0x10 ldrsh r1, [r1, r0] lsls r0, r1, 2 adds r0, r1 lsls r0, 2 adds r2, 0x8 adds r0, r2 ldr r2, _08115D54 @ =gSharedMem + 0x19000 ldr r1, [r2, 0x8] ldr r0, [r0] ands r1, r0 cmp r1, 0 bne _08115D20 subs r0, r3, 0x1 lsls r0, 24 lsrs r0, 24 mov r8, r0 adds r0, r2, 0 add r0, r8 adds r0, 0x65 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 ldr r1, _08115D44 @ =gSprites adds r3, r0, r1 adds r2, r3, 0 adds r2, 0x40 adds r1, 0x8 adds r0, r1 ldr r0, [r0] ldr r0, [r0] ldrh r1, [r0, 0x4] ldrh r2, [r2] adds r1, r2 ldr r2, _08115D4C @ =0x000003ff adds r0, r2, 0 ands r1, r0 ldrh r2, [r3, 0x4] ldr r0, _08115D48 @ =0xfffffc00 ands r0, r2 orrs r0, r1 strh r0, [r3, 0x4] _08115D20: pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08115D30: .4byte gMain _08115D34: .4byte gTasks + 0x8 _08115D38: .4byte gTasks _08115D3C: .4byte gSharedMem + 0x190B8 _08115D40: .4byte 0x0000ffff _08115D44: .4byte gSprites _08115D48: .4byte 0xfffffc00 _08115D4C: .4byte 0x000003ff _08115D50: .4byte gUnknown_083F8C00 _08115D54: .4byte gSharedMem + 0x19000 thumb_func_end sub_8115B58 thumb_func_start sub_8115D58 sub_8115D58: @ 8115D58 push {lr} lsls r0, 24 lsrs r3, r0, 24 ldr r1, _08115D70 @ =gSharedMem + 0x19000 movs r0, 0xFF strh r0, [r1, 0x28] ldrb r0, [r1, 0x19] cmp r0, 0x1 bne _08115D74 adds r2, r1, 0 adds r2, 0x23 b _08115D7A .align 2, 0 _08115D70: .4byte gSharedMem + 0x19000 _08115D74: adds r2, r1, 0 adds r2, 0x23 movs r0, 0 _08115D7A: strb r0, [r2] adds r1, 0x21 movs r0, 0 strb r0, [r1] ldr r1, _08115D98 @ =gTasks lsls r0, r3, 2 adds r0, r3 lsls r0, 3 adds r0, r1 movs r1, 0x20 strh r1, [r0, 0xA] ldr r1, _08115D9C @ =sub_8115ECC str r1, [r0] pop {r0} bx r0 .align 2, 0 _08115D98: .4byte gTasks _08115D9C: .4byte sub_8115ECC thumb_func_end sub_8115D58 thumb_func_start sub_8115DA0 sub_8115DA0: @ 8115DA0 push {r4-r6,lr} lsls r0, 24 lsrs r0, 24 ldr r4, _08115E08 @ =gSharedMem + 0x19000 ldrb r2, [r4, 0x1A] lsls r2, 28 lsrs r2, 28 adds r5, r4, 0 adds r5, 0x1B adds r2, r5 ldr r3, _08115E0C @ =gTasks lsls r1, r0, 2 adds r1, r0 lsls r1, 3 adds r6, r1, r3 ldrh r0, [r6, 0x10] strb r0, [r2] ldrb r0, [r4, 0x1A] lsls r0, 28 lsrs r0, 28 adds r0, r5 ldrb r0, [r0] bl sub_8117380 lsls r0, 24 lsrs r0, 24 strh r0, [r6, 0xC] ldrb r0, [r4, 0x1A] lsls r0, 28 lsrs r0, 28 adds r0, r5 ldrb r0, [r0] bl sub_811829C ldrb r1, [r4, 0x19] ldrh r0, [r6, 0x22] subs r0, r1 strh r0, [r6, 0x22] lsls r0, 16 cmp r0, 0 bge _08115DF6 movs r0, 0 strh r0, [r6, 0x22] _08115DF6: ldrh r0, [r6, 0x22] bl sub_81180F4 ldr r0, _08115E10 @ =sub_8115D58 str r0, [r6] pop {r4-r6} pop {r0} bx r0 .align 2, 0 _08115E08: .4byte gSharedMem + 0x19000 _08115E0C: .4byte gTasks _08115E10: .4byte sub_8115D58 thumb_func_end sub_8115DA0 thumb_func_start sub_8115E14 sub_8115E14: @ 8115E14 push {r4,r5,lr} lsls r0, 24 lsrs r5, r0, 24 adds r0, r5, 0 bl sub_8115B58 ldr r1, _08115E3C @ =gTasks lsls r0, r5, 2 adds r0, r5 lsls r0, 3 adds r4, r0, r1 movs r1, 0xA ldrsh r0, [r4, r1] cmp r0, 0x1E beq _08115E4A cmp r0, 0x1E bgt _08115E40 cmp r0, 0 beq _08115E46 b _08115E5E .align 2, 0 _08115E3C: .4byte gTasks _08115E40: cmp r0, 0x3B beq _08115E58 b _08115E5E _08115E46: ldrb r0, [r4, 0x10] b _08115E4C _08115E4A: movs r0, 0 _08115E4C: bl sub_81157D0 ldrh r0, [r4, 0xA] adds r0, 0x1 strh r0, [r4, 0xA] b _08115E6E _08115E58: movs r0, 0 strh r0, [r4, 0xA] b _08115E6E _08115E5E: ldr r0, _08115EA8 @ =gTasks lsls r1, r5, 2 adds r1, r5 lsls r1, 3 adds r1, r0 ldrh r0, [r1, 0xA] adds r0, 0x1 strh r0, [r1, 0xA] _08115E6E: ldr r0, _08115EAC @ =gMain ldrh r1, [r0, 0x2E] movs r0, 0x1 ands r0, r1 cmp r0, 0 beq _08115EC2 ldr r3, _08115EB0 @ =gSharedMem + 0x19000 ldr r2, _08115EB4 @ =gUnknown_083F8C00 ldr r1, _08115EA8 @ =gTasks lsls r0, r5, 2 adds r0, r5 lsls r0, 3 adds r4, r0, r1 movs r0, 0x10 ldrsh r1, [r4, r0] lsls r0, r1, 2 adds r0, r1 lsls r0, 2 adds r2, 0x8 adds r0, r2 ldr r1, [r3, 0x8] ldr r0, [r0] ands r1, r0 cmp r1, 0 beq _08115EB8 movs r0, 0x16 bl PlaySE b _08115EC2 .align 2, 0 _08115EA8: .4byte gTasks _08115EAC: .4byte gMain _08115EB0: .4byte gSharedMem + 0x19000 _08115EB4: .4byte gUnknown_083F8C00 _08115EB8: movs r0, 0x5F bl m4aSongNumStart ldr r0, _08115EC8 @ =sub_8115DA0 str r0, [r4] _08115EC2: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08115EC8: .4byte sub_8115DA0 thumb_func_end sub_8115E14 thumb_func_start sub_8115ECC sub_8115ECC: @ 8115ECC push {r4,lr} lsls r0, 24 lsrs r0, 24 ldr r2, _08115F20 @ =gTasks lsls r1, r0, 2 adds r1, r0 lsls r1, 3 adds r4, r1, r2 ldrh r0, [r4, 0xA] subs r1, r0, 0x1 strh r1, [r4, 0xA] lsls r0, 16 cmp r0, 0 ble _08115F34 lsls r0, r1, 16 asrs r0, 16 cmp r0, 0x2 ble _08115EF8 ldr r1, _08115F24 @ =gSpriteCoordOffsetX ldrh r0, [r1] adds r0, 0x2 strh r0, [r1] _08115EF8: ldr r1, _08115F28 @ =gSharedMem + 0x19000 ldrh r0, [r1, 0x26] adds r0, 0x4 strh r0, [r1, 0x26] lsls r0, 16 asrs r0, 16 cmp r0, 0x68 bne _08115F4C ldr r2, _08115F2C @ =gSprites adds r0, r1, 0 adds r0, 0x55 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r2, 0x1C adds r0, r2 ldr r1, _08115F30 @ =SpriteCallbackDummy str r1, [r0] b _08115F4C .align 2, 0 _08115F20: .4byte gTasks _08115F24: .4byte gSpriteCoordOffsetX _08115F28: .4byte gSharedMem + 0x19000 _08115F2C: .4byte gSprites _08115F30: .4byte SpriteCallbackDummy _08115F34: movs r0, 0x1 movs r1, 0xFF bl sub_8117AA8 movs r0, 0x1 movs r1, 0xFF bl sub_8117C60 ldr r0, _08115F54 @ =sub_8116100 str r0, [r4] movs r0, 0 strh r0, [r4, 0xA] _08115F4C: pop {r4} pop {r0} bx r0 .align 2, 0 _08115F54: .4byte sub_8116100 thumb_func_end sub_8115ECC thumb_func_start sub_8115F58 sub_8115F58: @ 8115F58 push {r4,lr} lsls r0, 16 lsrs r3, r0, 16 lsls r1, 16 lsrs r1, 16 ldr r0, _08115F74 @ =gSharedMem + 0x19000 ldrb r2, [r0, 0x2] adds r4, r0, 0 cmp r2, 0x2 bgt _08115F78 cmp r2, 0x1 bge _08115F7E b _08116048 .align 2, 0 _08115F74: .4byte gSharedMem + 0x19000 _08115F78: cmp r2, 0x3 beq _08115FE0 b _08116048 _08115F7E: ldr r0, _08115FA8 @ =gLocalTime ldrb r0, [r0, 0x2] subs r0, 0x4 lsls r0, 24 lsrs r0, 24 cmp r0, 0x5 bhi _08115FB0 cmp r3, 0xB bls _08115F98 movs r0, 0x1 ands r0, r1 cmp r0, 0 beq _0811605E _08115F98: ldr r0, _08115FAC @ =gUnknown_083F8DF4 ldrb r1, [r4, 0x4] lsls r1, 30 lsrs r1, 25 adds r1, r0 ldrb r0, [r1, 0x2] lsrs r0, 1 b _081160F4 .align 2, 0 _08115FA8: .4byte gLocalTime _08115FAC: .4byte gUnknown_083F8DF4 _08115FB0: movs r0, 0x3 ands r0, r1 cmp r0, 0 bne _08115FCC ldr r0, _08115FC8 @ =gUnknown_083F8DF4 ldrb r1, [r4, 0x4] lsls r1, 30 lsrs r1, 25 adds r1, r0 ldrb r0, [r1, 0x2] lsrs r0, 1 b _081160F4 .align 2, 0 _08115FC8: .4byte gUnknown_083F8DF4 _08115FCC: ldr r0, _08115FDC @ =gUnknown_083F8DF4 ldrb r1, [r4, 0x4] lsls r1, 30 lsrs r1, 25 adds r1, r0 ldrb r0, [r1, 0x2] b _081160F4 .align 2, 0 _08115FDC: .4byte gUnknown_083F8DF4 _08115FE0: ldr r0, _0811600C @ =gLocalTime ldrb r0, [r0, 0x2] subs r0, 0x4 lsls r0, 24 lsrs r0, 24 cmp r0, 0x6 bhi _08116014 cmp r3, 0x5 bls _08115FFA movs r0, 0x1 ands r0, r1 cmp r0, 0 beq _0811605E _08115FFA: ldr r0, _08116010 @ =gUnknown_083F8DF4 ldrb r1, [r4, 0x4] lsls r1, 30 lsrs r1, 25 adds r1, r0 ldrb r0, [r1, 0x2] lsrs r0, 1 b _081160F4 .align 2, 0 _0811600C: .4byte gLocalTime _08116010: .4byte gUnknown_083F8DF4 _08116014: movs r0, 0x1 ands r0, r1 cmp r0, 0 beq _08116034 cmp r3, 0x6 bls _08116034 ldr r0, _08116030 @ =gUnknown_083F8DF4 ldrb r1, [r4, 0x4] lsls r1, 30 lsrs r1, 25 adds r1, r0 ldrb r0, [r1, 0x2] lsrs r0, 2 b _081160F4 .align 2, 0 _08116030: .4byte gUnknown_083F8DF4 _08116034: ldr r0, _08116044 @ =gUnknown_083F8DF4 ldrb r1, [r4, 0x4] lsls r1, 30 lsrs r1, 25 adds r1, r0 ldrb r0, [r1, 0x2] lsrs r0, 1 b _081160F4 .align 2, 0 _08116044: .4byte gUnknown_083F8DF4 _08116048: ldr r0, _08116064 @ =gLocalTime ldrb r0, [r0, 0x2] subs r0, 0x4 lsls r0, 24 lsrs r0, 24 cmp r0, 0x5 bhi _0811607C movs r0, 0x3 ands r0, r1 cmp r0, 0 bne _08116068 _0811605E: movs r0, 0x1 b _081160F4 .align 2, 0 _08116064: .4byte gLocalTime _08116068: ldr r0, _08116078 @ =gUnknown_083F8DF4 ldrb r1, [r4, 0x4] lsls r1, 30 lsrs r1, 25 adds r1, r0 ldrb r0, [r1, 0x2] lsrs r0, 1 b _081160F4 .align 2, 0 _08116078: .4byte gUnknown_083F8DF4 _0811607C: movs r0, 0x3 ands r0, r1 cmp r0, 0 bne _081160B0 cmp r3, 0xC bls _0811609C ldr r0, _08116098 @ =gUnknown_083F8DF4 ldrb r1, [r4, 0x4] lsls r1, 30 lsrs r1, 25 adds r1, r0 ldrb r0, [r1, 0x2] lsrs r0, 1 b _081160F4 .align 2, 0 _08116098: .4byte gUnknown_083F8DF4 _0811609C: ldr r0, _081160AC @ =gUnknown_083F8DF4 ldrb r1, [r4, 0x4] lsls r1, 30 lsrs r1, 25 adds r1, r0 ldrb r0, [r1, 0x2] b _081160F4 .align 2, 0 _081160AC: .4byte gUnknown_083F8DF4 _081160B0: movs r0, 0x80 lsls r0, 8 ands r0, r1 cmp r0, 0 beq _081160E4 cmp r3, 0xC bls _081160D0 ldr r0, _081160CC @ =gUnknown_083F8DF4 ldrb r1, [r4, 0x4] lsls r1, 30 lsrs r1, 25 adds r1, r0 ldrb r0, [r1, 0x2] b _081160F4 .align 2, 0 _081160CC: .4byte gUnknown_083F8DF4 _081160D0: ldr r0, _081160E0 @ =gUnknown_083F8DF4 ldrb r1, [r4, 0x4] lsls r1, 30 lsrs r1, 25 adds r1, r0 ldrb r0, [r1, 0x1] b _081160F4 .align 2, 0 _081160E0: .4byte gUnknown_083F8DF4 _081160E4: ldr r0, _081160FC @ =gUnknown_083F8DF4 ldrb r1, [r4, 0x4] lsls r1, 30 lsrs r1, 25 adds r1, r0 ldrb r0, [r1, 0x1] lsls r0, 25 lsrs r0, 24 _081160F4: pop {r4} pop {r1} bx r1 .align 2, 0 _081160FC: .4byte gUnknown_083F8DF4 thumb_func_end sub_8115F58 thumb_func_start sub_8116100 sub_8116100: @ 8116100 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x8 lsls r0, 24 lsrs r0, 24 mov r9, r0 movs r4, 0 ldr r1, _08116188 @ =gUnknown_083F8ECE mov r0, sp movs r2, 0x8 bl memcpy bl Random lsls r0, 16 lsrs r7, r0, 16 adds r0, r7, 0 movs r1, 0x64 bl __umodsi3 lsls r0, 16 lsrs r6, r0, 16 ldr r3, _0811618C @ =gSharedMem + 0x19000 ldr r1, _08116190 @ =gTasks mov r2, r9 lsls r0, r2, 2 add r0, r9 lsls r0, 3 adds r0, r1 ldrh r2, [r0, 0x14] adds r1, r3, 0 adds r1, 0x7C strb r2, [r1] adds r1, 0x3 strb r4, [r1] subs r1, 0x1 strb r4, [r1] subs r1, 0x1 strb r4, [r1] ldrh r0, [r0, 0x18] adds r1, r7, 0 bl sub_8115F58 adds r4, r0, 0 lsls r4, 24 lsrs r1, r4, 24 adds r0, r7, 0 bl __modsi3 lsrs r4, 25 subs r0, r4 lsls r0, 24 lsrs r4, r0, 24 ldr r0, _08116194 @ =gLocalTime ldrb r0, [r0, 0x2] lsls r0, 24 asrs r0, 24 movs r5, 0x1 cmp r0, 0xC bgt _08116180 movs r5, 0 _08116180: cmp r6, 0x4F bhi _08116198 lsls r0, r5, 25 b _081161A2 .align 2, 0 _08116188: .4byte gUnknown_083F8ECE _0811618C: .4byte gSharedMem + 0x19000 _08116190: .4byte gTasks _08116194: .4byte gLocalTime _08116198: lsls r1, r5, 24 asrs r1, 24 movs r0, 0x1 subs r0, r1 lsls r0, 25 _081161A2: lsrs r5, r0, 24 ldr r6, _081162D8 @ =gSharedMem + 0x19000 ldrb r0, [r6, 0x4] lsls r0, 30 mov r10, r0 lsrs r0, 25 ldr r1, _081162DC @ =gUnknown_083F8DF4 adds r0, r1 lsls r4, 24 asrs r4, 24 ldrh r0, [r0, 0x1A] adds r4, r0 adds r0, r6, 0 adds r0, 0x80 strh r4, [r0] lsls r4, 16 asrs r4, 16 adds r0, r4, 0 bl __floatsisf cmp r4, 0 bge _081161D4 ldr r1, _081162E0 @ =0x47800000 bl __addsf3 _081161D4: ldr r1, _081162E4 @ =0x40a00000 bl __divsf3 bl __fixunssfsi lsls r0, 16 lsrs r4, r0, 16 lsls r0, r4, 1 adds r0, r4 mov r8, r0 adds r0, r6, 0 adds r0, 0x82 mov r2, r8 strh r2, [r0] adds r0, 0x2 strh r4, [r0] adds r0, 0x2 strh r4, [r0] movs r0, 0x1 ands r0, r7 lsls r1, r5, 24 asrs r1, 24 adds r0, r1 lsls r0, 1 add r0, sp movs r1, 0 ldrsh r4, [r0, r1] adds r0, r4, 0 bl __floatsisf cmp r4, 0 bge _0811621A ldr r1, _081162E0 @ =0x47800000 bl __addsf3 _0811621A: ldr r2, _081162E8 @ =gSharedMem + 0x19088 str r0, [r2] adds r7, r6, 0 adds r7, 0x8C mov r1, r10 lsrs r0, r1, 25 ldr r2, _081162DC @ =gUnknown_083F8DF4 adds r0, r2 movs r1, 0x18 ldrsh r4, [r0, r1] adds r0, r4, 0 bl __floatsisf adds r5, r0, 0 cmp r4, 0 bge _08116242 ldr r1, _081162E0 @ =0x47800000 bl __addsf3 adds r5, r0, 0 _08116242: str r5, [r7] adds r7, r6, 0 adds r7, 0x90 ldr r1, _081162EC @ =0x3f000000 adds r0, r5, 0 bl __mulsf3 adds r1, r5, 0 bl __subsf3 adds r5, r0, 0 mov r2, r8 lsls r0, r2, 16 asrs r4, r0, 16 adds r0, r4, 0 bl __floatsisf adds r2, r0, 0 cmp r4, 0 bge _08116272 ldr r1, _081162E0 @ =0x47800000 bl __addsf3 adds r2, r0, 0 _08116272: adds r0, r5, 0 adds r1, r2, 0 bl __divsf3 str r0, [r7] adds r1, r6, 0 adds r1, 0x94 ldr r0, _081162F0 @ =0x42880000 str r0, [r1] adds r1, 0x8 ldr r0, _081162F4 @ =0x00000000 str r0, [r1] adds r5, r6, 0 adds r5, 0x98 adds r0, r4, 0 bl __floatsisf adds r2, r0, 0 cmp r4, 0 bge _081162A2 ldr r1, _081162E0 @ =0x47800000 bl __addsf3 adds r2, r0, 0 _081162A2: ldr r0, _081162F8 @ =0x41000000 adds r1, r2, 0 bl __divsf3 bl __negsf2 str r0, [r5] adds r1, r6, 0 adds r1, 0xA0 ldr r0, _081162FC @ =0x42100000 str r0, [r1] ldr r1, _08116300 @ =gTasks mov r2, r9 lsls r0, r2, 2 add r0, r9 lsls r0, 3 adds r0, r1 ldr r1, _08116304 @ =sub_8116308 str r1, [r0] 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 _081162D8: .4byte gSharedMem + 0x19000 _081162DC: .4byte gUnknown_083F8DF4 _081162E0: .4byte 0x47800000 _081162E4: .4byte 0x40a00000 _081162E8: .4byte gSharedMem + 0x19088 _081162EC: .4byte 0x3f000000 _081162F0: .4byte 0x42880000 _081162F4: .4byte 0x00000000 _081162F8: .4byte 0x41000000 _081162FC: .4byte 0x42100000 _08116300: .4byte gTasks _08116304: .4byte sub_8116308 thumb_func_end sub_8116100 thumb_func_start sub_8116308 sub_8116308: @ 8116308 push {r4,lr} lsls r0, 24 lsrs r0, 24 ldr r3, _08116368 @ =gSharedMem + 0x19000 ldrb r1, [r3, 0x3] movs r2, 0x80 orrs r1, r2 strb r1, [r3, 0x3] adds r2, r3, 0 adds r2, 0x7C adds r1, r3, 0 adds r1, 0x3C ldrb r2, [r2] adds r1, r2 ldrb r2, [r1] lsls r1, r2, 4 adds r1, r2 lsls r1, 2 ldr r2, _0811636C @ =gSprites adds r1, r2 str r1, [r3, 0x38] ldr r2, _08116370 @ =sub_81191F4 str r2, [r1, 0x1C] ldr r1, _08116374 @ =gTasks lsls r4, r0, 2 adds r4, r0 lsls r4, 3 adds r4, r1 ldrh r1, [r4, 0x14] adds r1, 0x1 strh r1, [r4, 0x14] ldrh r0, [r4, 0x18] adds r0, 0x1 strh r0, [r4, 0x18] movs r0, 0x6 subs r0, r1 lsls r0, 24 lsrs r0, 24 bl sub_81182F8 movs r0, 0x5C bl m4aSongNumStart ldr r0, _08116378 @ =sub_811637C str r0, [r4] pop {r4} pop {r0} bx r0 .align 2, 0 _08116368: .4byte gSharedMem + 0x19000 _0811636C: .4byte gSprites _08116370: .4byte sub_81191F4 _08116374: .4byte gTasks _08116378: .4byte sub_811637C thumb_func_end sub_8116308 thumb_func_start sub_811637C sub_811637C: @ 811637C push {r4-r7,lr} lsls r0, 24 lsrs r5, r0, 24 ldr r4, _081163B0 @ =gSharedMem + 0x19000 adds r0, r4, 0 adds r0, 0x7D ldrb r0, [r0] cmp r0, 0 beq _08116464 ldrb r1, [r4, 0x3] movs r0, 0x20 ands r0, r1 cmp r0, 0 beq _081163B4 movs r0, 0x40 ands r0, r1 cmp r0, 0 beq _08116464 movs r0, 0x41 negs r0, r0 ands r0, r1 movs r1, 0x21 negs r1, r1 ands r0, r1 strb r0, [r4, 0x3] b _08116464 .align 2, 0 _081163B0: .4byte gSharedMem + 0x19000 _081163B4: ldr r2, _08116428 @ =gTasks lsls r1, r5, 2 adds r0, r1, r5 lsls r0, 3 adds r6, r0, r2 movs r2, 0xA ldrsh r0, [r6, r2] adds r7, r1, 0 cmp r0, 0 bne _08116400 adds r0, r4, 0 adds r0, 0x7E ldrb r1, [r0] adds r0, r5, 0 bl sub_8116D54 lsls r0, 24 lsrs r0, 24 ldrb r1, [r4, 0x1A] lsls r1, 28 lsrs r1, 28 adds r2, r4, 0 adds r2, 0x1B adds r1, r2 ldrb r1, [r1] bl sub_8116E5C lsls r0, 24 lsrs r0, 24 strh r0, [r6, 0x12] cmp r0, 0x1 bne _08116400 adds r0, r4, 0 adds r0, 0xB8 movs r1, 0x80 lsls r1, 5 bl sub_8124CE8 _08116400: ldr r0, _08116428 @ =gTasks adds r1, r7, r5 lsls r1, 3 adds r4, r1, r0 movs r1, 0xA ldrsh r0, [r4, r1] cmp r0, 0x3C bgt _08116430 ldr r0, _0811642C @ =gMain ldrh r1, [r0, 0x2E] movs r0, 0x1 ands r0, r1 cmp r0, 0 beq _08116420 movs r0, 0x3C strh r0, [r4, 0xA] _08116420: ldrh r0, [r4, 0xA] adds r0, 0x1 strh r0, [r4, 0xA] b _08116464 .align 2, 0 _08116428: .4byte gTasks _0811642C: .4byte gMain _08116430: ldr r1, _0811646C @ =gSharedMem + 0x19000 ldrb r0, [r1, 0x1A] lsls r0, 28 lsrs r0, 28 adds r1, 0x1B adds r0, r1 ldrb r0, [r0] bl sub_8117158 ldrh r1, [r4, 0x20] lsls r1, 24 lsrs r1, 24 movs r0, 0 bl sub_8117AA8 ldrb r1, [r4, 0x14] subs r1, 0x1 lsls r1, 24 lsrs r1, 24 movs r0, 0 bl sub_8117C60 movs r0, 0x20 strh r0, [r4, 0xA] ldr r0, _08116470 @ =sub_8116474 str r0, [r4] _08116464: pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0811646C: .4byte gSharedMem + 0x19000 _08116470: .4byte sub_8116474 thumb_func_end sub_811637C thumb_func_start sub_8116474 sub_8116474: @ 8116474 push {r4,r5,lr} lsls r0, 24 lsrs r5, r0, 24 ldr r1, _081164C8 @ =gTasks lsls r0, r5, 2 adds r0, r5 lsls r0, 3 adds r4, r0, r1 ldrh r0, [r4, 0xA] subs r1, r0, 0x1 strh r1, [r4, 0xA] lsls r0, 16 cmp r0, 0 ble _081164DC lsls r0, r1, 16 asrs r0, 16 cmp r0, 0x2 ble _081164A0 ldr r1, _081164CC @ =gSpriteCoordOffsetX ldrh r0, [r1] subs r0, 0x2 strh r0, [r1] _081164A0: ldr r1, _081164D0 @ =gSharedMem + 0x19000 ldrh r0, [r1, 0x26] subs r0, 0x4 strh r0, [r1, 0x26] lsls r0, 16 asrs r0, 16 cmp r0, 0x68 bne _08116504 ldr r2, _081164D4 @ =gSprites adds r0, r1, 0 adds r0, 0x55 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r2, 0x1C adds r0, r2 ldr r1, _081164D8 @ =sub_81184CC str r1, [r0] b _08116504 .align 2, 0 _081164C8: .4byte gTasks _081164CC: .4byte gSpriteCoordOffsetX _081164D0: .4byte gSharedMem + 0x19000 _081164D4: .4byte gSprites _081164D8: .4byte sub_81184CC _081164DC: ldrh r0, [r4, 0x20] lsls r0, 24 lsrs r0, 24 bl sub_8117D68 movs r1, 0x12 ldrsh r0, [r4, r1] cmp r0, 0x1 bne _081164F2 movs r0, 0x79 b _081164F4 _081164F2: movs r0, 0x3D _081164F4: strh r0, [r4, 0xA] ldr r0, _0811650C @ =gTasks lsls r1, r5, 2 adds r1, r5 lsls r1, 3 adds r1, r0 ldr r0, _08116510 @ =sub_8116514 str r0, [r1] _08116504: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0811650C: .4byte gTasks _08116510: .4byte sub_8116514 thumb_func_end sub_8116474 thumb_func_start sub_8116514 sub_8116514: @ 8116514 push {r4,lr} lsls r0, 24 lsrs r2, r0, 24 ldr r1, _08116564 @ =gTasks lsls r0, r2, 2 adds r0, r2 lsls r0, 3 adds r4, r0, r1 ldrh r0, [r4, 0xA] subs r1, r0, 0x1 strh r1, [r4, 0xA] lsls r0, 16 asrs r0, 16 cmp r0, 0x1 ble _08116584 movs r0, 0xA ldrsh r1, [r4, r0] adds r0, r1, 0 cmp r1, 0 bge _0811653E adds r0, 0xF _0811653E: asrs r0, 4 lsls r0, 4 subs r0, r1, r0 lsls r0, 16 asrs r0, 16 cmp r0, 0 beq _08116568 cmp r0, 0x8 bne _08116590 movs r0, 0 movs r1, 0xFF bl sub_8117AA8 movs r0, 0 movs r1, 0xFF bl sub_8117C60 b _08116590 .align 2, 0 _08116564: .4byte gTasks _08116568: ldrh r1, [r4, 0x20] lsls r1, 24 lsrs r1, 24 movs r0, 0 bl sub_8117AA8 ldrb r1, [r4, 0x14] subs r1, 0x1 lsls r1, 24 lsrs r1, 24 movs r0, 0 bl sub_8117C60 b _08116590 _08116584: ldr r1, _08116598 @ =sub_8116638 adds r0, r2, 0 movs r2, 0x1E movs r3, 0 bl sub_8116C34 _08116590: pop {r4} pop {r0} bx r0 .align 2, 0 _08116598: .4byte sub_8116638 thumb_func_end sub_8116514 thumb_func_start sub_811659C sub_811659C: @ 811659C push {r4,r5,lr} lsls r0, 24 lsrs r5, r0, 24 ldr r1, _081165F4 @ =gTasks lsls r0, r5, 2 adds r0, r5 lsls r0, 3 adds r4, r0, r1 movs r1, 0x12 ldrsh r0, [r4, r1] cmp r0, 0 beq _08116600 cmp r0, 0 blt _08116600 cmp r0, 0x2 bgt _08116600 bl IsFanfareTaskInactive lsls r0, 24 cmp r0, 0 beq _08116624 movs r0, 0x1D bl GetGameStat ldrh r1, [r4, 0x1E] adds r1, 0x1 strh r1, [r4, 0x1E] lsls r1, 16 asrs r1, 16 cmp r0, r1 bcs _081165E4 movs r0, 0x1E ldrsh r1, [r4, r0] movs r0, 0x1D bl SetGameStat _081165E4: ldr r1, _081165F8 @ =sub_811677C ldr r2, _081165FC @ =0x0000ffff adds r0, r5, 0 movs r3, 0x3 bl sub_8116C34 b _08116624 .align 2, 0 _081165F4: .4byte gTasks _081165F8: .4byte sub_811677C _081165FC: .4byte 0x0000ffff _08116600: bl IsSEPlaying lsls r0, 24 lsrs r2, r0, 24 cmp r2, 0 bne _08116624 ldr r1, _0811662C @ =gTasks lsls r0, r5, 2 adds r0, r5 lsls r0, 3 adds r0, r1 strh r2, [r0, 0x1E] ldr r1, _08116630 @ =sub_81167F4 ldr r2, _08116634 @ =0x0000ffff adds r0, r5, 0 movs r3, 0x3 bl sub_8116C34 _08116624: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0811662C: .4byte gTasks _08116630: .4byte sub_81167F4 _08116634: .4byte 0x0000ffff thumb_func_end sub_811659C thumb_func_start sub_8116638 sub_8116638: @ 8116638 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 ldr r1, _08116678 @ =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 movs r2, 0x12 ldrsh r1, [r0, r2] cmp r1, 0 beq _081166A8 cmp r1, 0 blt _081166A8 cmp r1, 0x2 bgt _081166A8 movs r1, 0xC ldrsh r0, [r0, r1] cmp r0, 0xC bne _08116684 ldr r0, _0811667C @ =0x00000185 bl PlayFanfare movs r0, 0 movs r1, 0xE movs r2, 0x1D movs r3, 0x13 bl MenuDrawTextWindow ldr r0, _08116680 @ =gUnknown_081C41A5 b _0811669A .align 2, 0 _08116678: .4byte gTasks _0811667C: .4byte 0x00000185 _08116680: .4byte gUnknown_081C41A5 _08116684: movs r0, 0xC3 lsls r0, 1 bl PlayFanfare movs r0, 0 movs r1, 0xE movs r2, 0x1D movs r3, 0x13 bl MenuDrawTextWindow ldr r0, _081166A4 @ =gUnknown_081C4199 _0811669A: movs r1, 0x1 movs r2, 0xF bl MenuPrint b _081166C4 .align 2, 0 _081166A4: .4byte gUnknown_081C4199 _081166A8: movs r0, 0x20 bl m4aSongNumStart movs r0, 0 movs r1, 0xE movs r2, 0x1D movs r3, 0x13 bl MenuDrawTextWindow ldr r0, _081166DC @ =gUnknown_081C41AE movs r1, 0x1 movs r2, 0xF bl MenuPrint _081166C4: ldr r1, _081166E0 @ =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 movs r1, 0 strh r1, [r0, 0xA] ldr r1, _081166E4 @ =sub_811659C str r1, [r0] pop {r4} pop {r0} bx r0 .align 2, 0 _081166DC: .4byte gUnknown_081C41AE _081166E0: .4byte gTasks _081166E4: .4byte sub_811659C thumb_func_end sub_8116638 thumb_func_start sub_81166E8 sub_81166E8: @ 81166E8 push {r4-r6,lr} lsls r0, 24 lsrs r6, r0, 24 ldr r1, _0811670C @ =gTasks lsls r0, r6, 2 adds r0, r6 lsls r0, 3 adds r4, r0, r1 movs r0, 0x16 ldrsh r5, [r4, r0] cmp r5, 0 beq _08116710 cmp r5, 0x3 beq _08116740 ldrh r0, [r4, 0x16] adds r0, 0x1 b _08116748 .align 2, 0 _0811670C: .4byte gTasks _08116710: ldrh r0, [r4, 0x22] adds r0, 0x1 strh r0, [r4, 0x22] movs r0, 0x15 bl m4aSongNumStart ldrh r0, [r4, 0x22] bl sub_81180F4 movs r2, 0x22 ldrsh r1, [r4, r2] ldr r0, _08116730 @ =0x0000270e cmp r1, r0 ble _08116734 strh r5, [r4, 0xA] b _0811674A .align 2, 0 _08116730: .4byte 0x0000270e _08116734: ldrh r0, [r4, 0xA] subs r0, 0x1 strh r0, [r4, 0xA] ldrh r0, [r4, 0x16] adds r0, 0x1 b _08116748 _08116740: movs r0, 0x15 bl m4aSongNumStop movs r0, 0 _08116748: strh r0, [r4, 0x16] _0811674A: ldr r0, _08116770 @ =gTasks lsls r1, r6, 2 adds r1, r6 lsls r1, 3 adds r1, r0 movs r2, 0xA ldrsh r0, [r1, r2] cmp r0, 0 bne _08116768 ldr r1, _08116774 @ =sub_81167F4 ldr r2, _08116778 @ =0x0000ffff adds r0, r6, 0 movs r3, 0x3 bl sub_8116C34 _08116768: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _08116770: .4byte gTasks _08116774: .4byte sub_81167F4 _08116778: .4byte 0x0000ffff thumb_func_end sub_81166E8 thumb_func_start sub_811677C sub_811677C: @ 811677C push {r4-r6,lr} lsls r0, 24 lsrs r0, 24 ldr r3, _081167DC @ =gStringVar1 ldr r6, _081167E0 @ =gSharedMem + 0x19000 ldrb r2, [r6, 0x19] ldr r1, _081167E4 @ =gTasks lsls r4, r0, 2 adds r4, r0 lsls r4, 3 adds r4, r1 movs r1, 0xC ldrsh r0, [r4, r1] adds r1, r2, 0 muls r1, r0 adds r0, r3, 0 movs r2, 0 movs r3, 0x2 bl ConvertIntToDecimalStringN ldr r5, _081167E8 @ =gStringVar4 ldr r1, _081167EC @ =gUnknown_081C41BD adds r0, r5, 0 bl StringExpandPlaceholders movs r0, 0 movs r1, 0xE movs r2, 0x1D movs r3, 0x13 bl MenuDrawTextWindow adds r0, r5, 0 movs r1, 0x1 movs r2, 0xF bl MenuPrint ldrb r1, [r6, 0x19] movs r2, 0xC ldrsh r0, [r4, r2] muls r0, r1 movs r1, 0 strh r0, [r4, 0xA] strh r1, [r4, 0x16] ldr r0, _081167F0 @ =sub_81166E8 str r0, [r4] pop {r4-r6} pop {r0} bx r0 .align 2, 0 _081167DC: .4byte gStringVar1 _081167E0: .4byte gSharedMem + 0x19000 _081167E4: .4byte gTasks _081167E8: .4byte gStringVar4 _081167EC: .4byte gUnknown_081C41BD _081167F0: .4byte sub_81166E8 thumb_func_end sub_811677C thumb_func_start sub_81167F4 sub_81167F4: @ 81167F4 push {r4-r6,lr} adds r5, r0, 0 lsls r5, 24 lsrs r5, 24 ldr r4, _08116868 @ =gSharedMem + 0x190B8 ldr r1, _0811686C @ =0x0000ffff adds r0, r4, 0 bl sub_8124D3C adds r3, r4, 0 adds r3, 0xB8 ldrb r2, [r3] movs r1, 0x7F adds r0, r1, 0 ands r0, r2 strb r0, [r3] subs r3, 0xC ldrb r2, [r3] adds r0, r1, 0 ands r0, r2 strb r0, [r3] adds r2, r4, 0 adds r2, 0xA0 ldrb r0, [r2] ands r1, r0 strb r1, [r2] ldr r6, _08116870 @ =gSprites ldr r2, _08116874 @ =gUnknown_083F8C00 ldr r0, _08116878 @ =gTasks lsls r3, r5, 2 adds r3, r5 lsls r3, 3 adds r3, r0 movs r0, 0x20 ldrsh r1, [r3, r0] lsls r0, r1, 2 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r0, [r0] adds r4, r0 subs r4, 0x75 ldrb r1, [r4] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r6 adds r0, 0x3E ldrb r1, [r0] movs r2, 0x4 orrs r1, r2 strb r1, [r0] ldr r0, _0811687C @ =sub_8116880 str r0, [r3] pop {r4-r6} pop {r0} bx r0 .align 2, 0 _08116868: .4byte gSharedMem + 0x190B8 _0811686C: .4byte 0x0000ffff _08116870: .4byte gSprites _08116874: .4byte gUnknown_083F8C00 _08116878: .4byte gTasks _0811687C: .4byte sub_8116880 thumb_func_end sub_81167F4 thumb_func_start sub_8116880 sub_8116880: @ 8116880 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} lsls r0, 24 lsrs r6, r0, 24 movs r5, 0 ldr r1, _08116954 @ =gTasks lsls r0, r6, 2 adds r0, r6 lsls r0, 3 adds r0, r1 movs r2, 0 strh r5, [r0, 0x10] ldr r4, _08116958 @ =gSharedMem + 0x19000 ldrb r0, [r4, 0x1A] lsls r0, 28 lsrs r0, 28 adds r1, r4, 0 adds r1, 0x1B adds r0, r1 strb r2, [r0] movs r0, 0 bl sub_8117158 ldr r3, _0811695C @ =gSprites adds r0, r4, 0 adds r0, 0x6C ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r3 adds r0, 0x3E ldrb r1, [r0] movs r2, 0x4 orrs r1, r2 strb r1, [r0] adds r7, r3, 0 movs r0, 0x3C adds r0, r4 mov r10, r0 movs r1, 0x8 adds r1, r7 mov r8, r1 ldr r0, _08116960 @ =0xfffffc00 mov r9, r0 ldr r1, _08116964 @ =0x000003ff mov r12, r1 _081168E4: adds r0, r5, 0 adds r0, 0x29 add r0, r10 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r3, r0, r7 adds r2, r3, 0 adds r2, 0x40 add r0, r8 ldr r0, [r0] ldr r0, [r0] ldrh r1, [r0] ldrh r2, [r2] adds r1, r2 mov r0, r12 ands r1, r0 ldrh r2, [r3, 0x4] mov r0, r9 ands r0, r2 orrs r0, r1 strh r0, [r3, 0x4] adds r0, r5, 0x1 lsls r0, 24 lsrs r5, r0, 24 cmp r5, 0x3 bls _081168E4 ldr r0, _08116954 @ =gTasks lsls r1, r6, 2 adds r1, r6 lsls r1, 3 adds r2, r1, r0 movs r1, 0x22 ldrsh r0, [r2, r1] ldrb r4, [r4, 0x19] cmp r0, r4 blt _081169BC movs r1, 0x14 ldrsh r0, [r2, r1] cmp r0, 0x6 bne _08116970 movs r0, 0 movs r1, 0xE movs r2, 0x1D movs r3, 0x13 bl MenuDrawTextWindow ldr r0, _08116968 @ =gUnknown_081C41F1 movs r1, 0x1 movs r2, 0xF bl MenuPrint ldr r1, _0811696C @ =dp01t_12_3_battle_menu b _08116992 .align 2, 0 _08116954: .4byte gTasks _08116958: .4byte gSharedMem + 0x19000 _0811695C: .4byte gSprites _08116960: .4byte 0xfffffc00 _08116964: .4byte 0x000003ff _08116968: .4byte gUnknown_081C41F1 _0811696C: .4byte dp01t_12_3_battle_menu _08116970: movs r0, 0x22 ldrsh r1, [r2, r0] ldr r0, _081169A0 @ =0x0000270f cmp r1, r0 bne _081169B0 movs r0, 0 movs r1, 0xE movs r2, 0x1D movs r3, 0x13 bl MenuDrawTextWindow ldr r0, _081169A4 @ =gUnknown_081C4231 movs r1, 0x1 movs r2, 0xF bl MenuPrint ldr r1, _081169A8 @ =sub_8115734 _08116992: ldr r2, _081169AC @ =0x0000ffff adds r0, r6, 0 movs r3, 0x3 bl sub_8116C34 b _081169DE .align 2, 0 _081169A0: .4byte 0x0000270f _081169A4: .4byte gUnknown_081C4231 _081169A8: .4byte sub_8115734 _081169AC: .4byte 0x0000ffff _081169B0: ldr r0, _081169B8 @ =sub_8115734 str r0, [r2] b _081169DE .align 2, 0 _081169B8: .4byte sub_8115734 _081169BC: movs r0, 0 movs r1, 0xE movs r2, 0x1D movs r3, 0x13 bl MenuDrawTextWindow ldr r0, _081169EC @ =gUnknown_081C41D2 movs r1, 0x1 movs r2, 0xF bl MenuPrint ldr r1, _081169F0 @ =sub_81157AC adds r0, r6, 0 movs r2, 0x3C movs r3, 0x3 bl sub_8116C34 _081169DE: pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _081169EC: .4byte gUnknown_081C41D2 _081169F0: .4byte sub_81157AC thumb_func_end sub_8116880 thumb_func_start dp01t_12_3_battle_menu dp01t_12_3_battle_menu: @ 81169F4 push {r4-r7,lr} lsls r0, 24 lsrs r5, r0, 24 movs r4, 0 ldr r1, _08116A84 @ =gTasks lsls r0, r5, 2 adds r0, r5 lsls r0, 3 adds r0, r1 strh r4, [r0, 0x14] adds r0, r5, 0 bl sub_8116CAC bl sub_8116CF8 bl sub_81185E8 movs r0, 0 bl sub_8117158 movs r0, 0x6 bl sub_81182F8 ldr r7, _08116A88 @ =gSprites ldr r3, _08116A8C @ =gSharedMem + 0x1903C movs r6, 0x5 negs r6, r6 _08116A2A: adds r0, r4, 0x7 adds r0, r3 ldrb r0, [r0] lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r1, r7 adds r1, 0x3E ldrb r2, [r1] adds r0, r6, 0 ands r0, r2 strb r0, [r1] adds r0, r4, 0x1 lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0xB bls _08116A2A ldr r1, _08116A84 @ =gTasks lsls r0, r5, 2 adds r0, r5 lsls r0, 3 adds r2, r0, r1 movs r0, 0x22 ldrsh r1, [r2, r0] ldr r0, _08116A90 @ =0x0000270f cmp r1, r0 bne _08116AA0 movs r0, 0 movs r1, 0xE movs r2, 0x1D movs r3, 0x13 bl MenuDrawTextWindow ldr r0, _08116A94 @ =gUnknown_081C4231 movs r1, 0x1 movs r2, 0xF bl MenuPrint ldr r1, _08116A98 @ =sub_8115734 ldr r2, _08116A9C @ =0x0000ffff adds r0, r5, 0 movs r3, 0x3 bl sub_8116C34 b _08116AA4 .align 2, 0 _08116A84: .4byte gTasks _08116A88: .4byte gSprites _08116A8C: .4byte gSharedMem + 0x1903C _08116A90: .4byte 0x0000270f _08116A94: .4byte gUnknown_081C4231 _08116A98: .4byte sub_8115734 _08116A9C: .4byte 0x0000ffff _08116AA0: ldr r0, _08116AAC @ =sub_8115734 str r0, [r2] _08116AA4: pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08116AAC: .4byte sub_8115734 thumb_func_end dp01t_12_3_battle_menu thumb_func_start sub_8116AB0 sub_8116AB0: @ 8116AB0 push {r4,r5,lr} sub sp, 0x4 lsls r0, 24 lsrs r5, r0, 24 ldr r4, _08116AF0 @ =gSharedMem + 0x190B8 ldr r1, _08116AF4 @ =0x0000ffff adds r0, r4, 0 bl sub_8124D3C adds r0, r4, 0 bl sub_8124918 ldr r1, _08116AF8 @ =gSaveBlock1 ldr r2, _08116AFC @ =gTasks lsls r0, r5, 2 adds r0, r5 lsls r0, 3 adds r0, r2 ldrh r0, [r0, 0x22] ldr r2, _08116B00 @ =0x00000494 adds r1, r2 strh r0, [r1] subs r4, 0xB8 lsls r0, 16 lsrs r0, 16 ldrb r4, [r4, 0x19] cmp r0, r4 bcs _08116B08 ldr r1, _08116B04 @ =gSpecialVar_0x8004 movs r0, 0x1 b _08116B0C .align 2, 0 _08116AF0: .4byte gSharedMem + 0x190B8 _08116AF4: .4byte 0x0000ffff _08116AF8: .4byte gSaveBlock1 _08116AFC: .4byte gTasks _08116B00: .4byte 0x00000494 _08116B04: .4byte gSpecialVar_0x8004 _08116B08: ldr r1, _08116B34 @ =gSpecialVar_0x8004 movs r0, 0 _08116B0C: strh r0, [r1] movs r0, 0 str r0, [sp] movs r0, 0xFF movs r1, 0 movs r2, 0 movs r3, 0x10 bl BeginHardwarePaletteFade ldr r1, _08116B38 @ =gTasks lsls r0, r5, 2 adds r0, r5 lsls r0, 3 adds r0, r1 ldr r1, _08116B3C @ =sub_8116B40 str r1, [r0] add sp, 0x4 pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08116B34: .4byte gSpecialVar_0x8004 _08116B38: .4byte gTasks _08116B3C: .4byte sub_8116B40 thumb_func_end sub_8116AB0 thumb_func_start sub_8116B40 sub_8116B40: @ 8116B40 push {r4,r5,lr} lsls r0, 24 lsrs r5, r0, 24 bl UpdatePaletteFade lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0 bne _08116B9E movs r0, 0 bl SetVBlankCallback ldr r0, _08116BA4 @ =gSharedMem + 0x19000 movs r2, 0xBE lsls r2, 1 movs r1, 0 bl memset ldr r1, _08116BA8 @ =gSpriteCoordOffsetX ldr r0, _08116BAC @ =gSpriteCoordOffsetY strh r4, [r0] strh r4, [r1] bl sub_80F9368 bl FreeAllSpritePalettes bl ResetPaletteFade bl ResetSpriteData bl sub_80F9020 ldr r0, _08116BB0 @ =REG_BLDCNT strh r4, [r0] adds r0, 0x2 strh r4, [r0] adds r0, 0x2 strh r4, [r0] ldr r1, _08116BB4 @ =gFieldCallback ldr r0, _08116BB8 @ =sub_8080990 str r0, [r1] ldr r0, _08116BBC @ =c2_exit_to_overworld_2_switch bl SetMainCallback2 adds r0, r5, 0 bl DestroyTask _08116B9E: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08116BA4: .4byte gSharedMem + 0x19000 _08116BA8: .4byte gSpriteCoordOffsetX _08116BAC: .4byte gSpriteCoordOffsetY _08116BB0: .4byte REG_BLDCNT _08116BB4: .4byte gFieldCallback _08116BB8: .4byte sub_8080990 _08116BBC: .4byte c2_exit_to_overworld_2_switch thumb_func_end sub_8116B40 thumb_func_start sub_8116BC0 sub_8116BC0: @ 8116BC0 push {r4-r7,lr} lsls r0, 24 lsrs r3, r0, 24 ldr r0, _08116C24 @ =gSharedMem + 0x19000 adds r7, r0, 0 adds r7, 0xA8 ldrh r1, [r7] adds r6, r0, 0 cmp r1, 0 beq _08116BE4 ldr r0, _08116C28 @ =gMain adds r2, r6, 0 adds r2, 0xAA ldrh r1, [r0, 0x2E] ldrh r0, [r2] ands r0, r1 cmp r0, 0 beq _08116C0E _08116BE4: ldr r1, _08116C2C @ =gTasks lsls r0, r3, 2 adds r0, r3 lsls r0, 3 adds r0, r1 adds r5, r6, 0 adds r5, 0xAC ldr r1, [r5] str r1, [r0] adds r4, r6, 0 adds r4, 0xAA ldrh r0, [r4] cmp r0, 0 beq _08116C06 movs r0, 0x5 bl PlaySE _08116C06: movs r0, 0 str r0, [r5] strh r0, [r4] strh r0, [r7] _08116C0E: adds r2, r6, 0 adds r2, 0xA8 ldrh r1, [r2] ldr r0, _08116C30 @ =0x0000ffff cmp r1, r0 beq _08116C1E subs r0, r1, 0x1 strh r0, [r2] _08116C1E: pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08116C24: .4byte gSharedMem + 0x19000 _08116C28: .4byte gMain _08116C2C: .4byte gTasks _08116C30: .4byte 0x0000ffff thumb_func_end sub_8116BC0 thumb_func_start sub_8116C34 sub_8116C34: @ 8116C34 push {r4-r7,lr} adds r5, r1, 0 lsls r0, 24 lsrs r6, r0, 24 lsls r2, 16 lsrs r4, r2, 16 lsls r3, 16 lsrs r3, 16 ldr r0, _08116C84 @ =gSharedMem + 0x19000 mov r12, r0 mov r2, r12 adds r2, 0xB4 ldr r1, _08116C88 @ =gTasks lsls r0, r6, 2 adds r0, r6 lsls r0, 3 adds r0, r1 ldr r0, [r0] str r0, [r2] mov r2, r12 adds r7, r1, 0 cmp r5, 0 bne _08116C64 adds r5, r0, 0 _08116C64: adds r0, r2, 0 adds r0, 0xAC str r5, [r0] subs r0, 0x4 strh r4, [r0] ldr r0, _08116C8C @ =0x0000ffff cmp r4, r0 bne _08116C90 cmp r3, 0 bne _08116C90 adds r1, r2, 0 adds r1, 0xAA ldrh r0, [r1] orrs r4, r0 strh r4, [r1] b _08116C96 .align 2, 0 _08116C84: .4byte gSharedMem + 0x19000 _08116C88: .4byte gTasks _08116C8C: .4byte 0x0000ffff _08116C90: adds r0, r2, 0 adds r0, 0xAA strh r3, [r0] _08116C96: lsls r0, r6, 2 adds r0, r6 lsls r0, 3 adds r0, r7 ldr r1, _08116CA8 @ =sub_8116BC0 str r1, [r0] pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08116CA8: .4byte sub_8116BC0 thumb_func_end sub_8116C34 thumb_func_start sub_8116CAC sub_8116CAC: @ 8116CAC push {r4-r6,lr} lsls r0, 24 lsrs r5, r0, 24 movs r2, 0 ldr r0, _08116CF0 @ =gSharedMem + 0x19000 strb r2, [r0] movs r1, 0 strb r1, [r0, 0x3] adds r3, r0, 0 ldr r6, _08116CF4 @ =gTasks adds r4, r3, 0 adds r4, 0x1B _08116CC4: adds r0, r2, r4 strb r1, [r0] adds r0, r2, 0x1 lsls r0, 24 lsrs r2, r0, 24 cmp r2, 0x5 bls _08116CC4 ldrb r1, [r3, 0x1A] movs r0, 0x10 negs r0, r0 ands r0, r1 strb r0, [r3, 0x1A] lsls r0, r5, 2 adds r0, r5 lsls r0, 3 adds r0, r6 movs r1, 0 strh r1, [r0, 0xA] pop {r4-r6} pop {r0} bx r0 .align 2, 0 _08116CF0: .4byte gSharedMem + 0x19000 _08116CF4: .4byte gTasks thumb_func_end sub_8116CAC thumb_func_start sub_8116CF8 sub_8116CF8: @ 8116CF8 push {lr} ldr r1, _08116D48 @ =gSharedMem + 0x19000 movs r0, 0 str r0, [r1, 0x8] movs r2, 0 adds r1, 0xC movs r3, 0 _08116D06: adds r0, r2, r1 strb r3, [r0] adds r0, r2, 0x1 lsls r0, 24 lsrs r2, r0, 24 cmp r2, 0x5 bls _08116D06 movs r2, 0 ldr r3, _08116D4C @ =gSharedMem + 0x19012 movs r1, 0 _08116D1A: adds r0, r2, r3 strb r1, [r0] adds r0, r2, 0x1 lsls r0, 24 lsrs r2, r0, 24 cmp r2, 0x3 bls _08116D1A movs r2, 0 ldr r3, _08116D50 @ =gSharedMem + 0x19016 movs r1, 0 _08116D2E: adds r0, r2, r3 strb r1, [r0] adds r0, r2, 0x1 lsls r0, 24 lsrs r2, r0, 24 cmp r2, 0x2 bls _08116D2E movs r0, 0x1 movs r1, 0xFF bl sub_8117C60 pop {r0} bx r0 .align 2, 0 _08116D48: .4byte gSharedMem + 0x19000 _08116D4C: .4byte gSharedMem + 0x19012 _08116D50: .4byte gSharedMem + 0x19016 thumb_func_end sub_8116CF8 thumb_func_start sub_8116D54 sub_8116D54: @ 8116D54 push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} sub sp, 0x1C lsls r0, 24 lsrs r3, r0, 24 lsls r1, 24 lsrs r5, r1, 24 mov r1, sp ldr r0, _08116D88 @ =gUnknown_083F8ED8 ldm r0!, {r2,r4,r6} stm r1!, {r2,r4,r6} ldr r0, [r0] str r0, [r1] add r2, sp, 0x10 adds r1, r2, 0 ldr r0, _08116D8C @ =gUnknown_083F8EE8 ldm r0!, {r4,r6,r7} stm r1!, {r4,r6,r7} mov r9, r2 cmp r5, 0xB bls _08116D90 movs r0, 0 b _08116E38 .align 2, 0 _08116D88: .4byte gUnknown_083F8ED8 _08116D8C: .4byte gUnknown_083F8EE8 _08116D90: ldr r6, _08116E48 @ =gSharedMem + 0x19000 ldr r1, _08116E4C @ =gTasks lsls r0, r3, 2 adds r0, r3 lsls r0, 3 adds r0, r1 movs r7, 0x14 ldrsh r2, [r0, r7] adds r2, r6, r2 ldr r4, _08116E50 @ =gUnknown_083F8D90 lsls r5, 3 adds r3, r5, r4 ldrb r1, [r3, 0x2] strb r1, [r2, 0xB] ldrb r1, [r3, 0x2] strh r1, [r0, 0x20] adds r0, r4, 0x4 adds r0, r5, r0 ldr r1, [r6, 0x8] ldr r0, [r0] orrs r1, r0 str r1, [r6, 0x8] movs r3, 0 mov r8, r4 mov r12, r5 adds r5, r0, 0 adds r4, r6, 0 adds r4, 0x12 _08116DC8: lsls r0, r3, 2 mov r1, sp adds r2, r1, r0 ldr r0, [r2] ands r0, r5 cmp r0, 0 beq _08116DDE adds r1, r3, r4 ldrb r0, [r1] adds r0, 0x1 strb r0, [r1] _08116DDE: adds r0, r3, r4 ldrb r0, [r0] cmp r0, 0x2 bls _08116DEE ldr r0, [r6, 0x8] ldr r1, [r2] orrs r0, r1 str r0, [r6, 0x8] _08116DEE: adds r0, r3, 0x1 lsls r0, 24 lsrs r3, r0, 24 cmp r3, 0x3 bls _08116DC8 movs r2, 0 ldr r0, _08116E54 @ =gUnknown_083F8D90 + 0x4 add r0, r12 ldr r7, [r0] ldr r4, _08116E58 @ =gSharedMem + 0x19016 mov r5, r9 _08116E04: lsls r0, r2, 2 adds r3, r5, r0 ldr r0, [r3] ands r0, r7 cmp r0, 0 beq _08116E18 adds r1, r2, r4 ldrb r0, [r1] adds r0, 0x1 strb r0, [r1] _08116E18: adds r0, r2, r4 ldrb r0, [r0] cmp r0, 0x3 bls _08116E28 ldr r0, [r6, 0x8] ldr r1, [r3] orrs r0, r1 str r0, [r6, 0x8] _08116E28: adds r0, r2, 0x1 lsls r0, 24 lsrs r2, r0, 24 cmp r2, 0x2 bls _08116E04 mov r0, r12 add r0, r8 ldrb r0, [r0, 0x2] _08116E38: add sp, 0x1C pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r1} bx r1 .align 2, 0 _08116E48: .4byte gSharedMem + 0x19000 _08116E4C: .4byte gTasks _08116E50: .4byte gUnknown_083F8D90 _08116E54: .4byte gUnknown_083F8D90 + 0x4 _08116E58: .4byte gSharedMem + 0x19016 thumb_func_end sub_8116D54 thumb_func_start sub_8116E5C sub_8116E5C: @ 8116E5C push {lr} lsls r0, 24 lsls r1, 24 lsrs r2, r1, 24 lsrs r3, r0, 24 movs r1, 0xFF lsls r1, 24 adds r0, r1 lsrs r0, 24 cmp r0, 0x12 bhi _08116EF0 cmp r2, 0xF bhi _08116EEC lsls r0, r2, 2 ldr r1, _08116E80 @ =_08116E84 adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _08116E80: .4byte _08116E84 .align 2, 0 _08116E84: .4byte _08116EC4 .4byte _08116EC8 .4byte _08116EC8 .4byte _08116EC8 .4byte _08116EC8 .4byte _08116EDC .4byte _08116EEC .4byte _08116EEC .4byte _08116EEC .4byte _08116EEC .4byte _08116EDC .4byte _08116EEC .4byte _08116EEC .4byte _08116EEC .4byte _08116EEC .4byte _08116EDC _08116EC4: movs r0, 0x3 b _08116EF2 _08116EC8: adds r0, r2, 0x5 cmp r3, r0 beq _08116EE8 adds r0, 0x5 cmp r3, r0 beq _08116EE8 adds r0, 0x5 cmp r3, r0 bne _08116EF0 b _08116EE8 _08116EDC: adds r0, r2, 0x1 cmp r3, r0 blt _08116EF0 adds r0, r2, 0x4 cmp r3, r0 bgt _08116EF0 _08116EE8: movs r0, 0x1 b _08116EF2 _08116EEC: cmp r3, r2 beq _08116EE8 _08116EF0: movs r0, 0 _08116EF2: pop {r1} bx r1 thumb_func_end sub_8116E5C thumb_func_start sub_8116EF8 sub_8116EF8: @ 8116EF8 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x20 lsls r0, 24 lsrs r6, r0, 24 movs r0, 0 str r0, [sp, 0x18] cmp r6, 0xA beq _08116F1E cmp r6, 0xA bgt _08116F1A cmp r6, 0x5 beq _08116F1E b _08116F7C _08116F1A: cmp r6, 0xF bne _08116F7C _08116F1E: adds r0, r6, 0x1 lsls r0, 24 lsrs r4, r0, 24 adds r0, r6, 0x5 ldr r7, _08116F70 @ =gSharedMem + 0x190B8 cmp r4, r0 bge _08116F5E adds r1, r7, 0 subs r1, 0xB8 ldr r3, _08116F74 @ =gUnknown_083F8C00 ldr r5, [r1, 0x8] adds r6, r3, 0 adds r6, 0x8 adds r2, r0, 0 _08116F3A: lsls r0, r4, 2 adds r0, r4 lsls r1, r0, 2 adds r0, r1, r6 ldr r0, [r0] ands r0, r5 cmp r0, 0 bne _08116F54 adds r0, r1, r3 ldrh r0, [r0, 0x10] ldr r1, [sp, 0x18] orrs r1, r0 str r1, [sp, 0x18] _08116F54: adds r0, r4, 0x1 lsls r0, 24 lsrs r4, r0, 24 cmp r4, r2 blt _08116F3A _08116F5E: ldr r0, _08116F78 @ =0x0000dfff ldr r2, [sp, 0x18] ands r2, r0 str r2, [sp, 0x18] adds r0, r7, 0 adds r1, r2, 0 bl sub_8124CE8 b _0811713C .align 2, 0 _08116F70: .4byte gSharedMem + 0x190B8 _08116F74: .4byte gUnknown_083F8C00 _08116F78: .4byte 0x0000dfff _08116F7C: mov r0, sp ldr r1, _08116FC8 @ =gUnknown_083F8E9C ldm r1!, {r2-r4} stm r0!, {r2-r4} ldm r1!, {r2-r4} stm r0!, {r2-r4} subs r0, r6, 0x1 lsls r0, 24 lsrs r0, 24 movs r3, 0x1 mov r10, r3 cmp r0, 0x3 bhi _08116F9A movs r4, 0x3 mov r10, r4 _08116F9A: adds r0, r6, 0 movs r1, 0x5 bl __udivsi3 lsls r0, 24 lsrs r0, 8 ldr r1, _08116FCC @ =0xffff0000 adds r0, r1 lsrs r7, r0, 16 adds r0, r6, 0 movs r1, 0x5 bl __umodsi3 lsls r0, 24 lsrs r0, 24 cmp r0, 0x2 beq _08116FF8 cmp r0, 0x2 bgt _08116FD4 cmp r0, 0x1 beq _08116FE4 ldr r4, _08116FD0 @ =gSharedMem + 0x19000 b _0811703A .align 2, 0 _08116FC8: .4byte gUnknown_083F8E9C _08116FCC: .4byte 0xffff0000 _08116FD0: .4byte gSharedMem + 0x19000 _08116FD4: cmp r0, 0x3 beq _0811700C cmp r0, 0x4 beq _08117020 ldr r4, _08116FE0 @ =gSharedMem + 0x19000 b _0811703A .align 2, 0 _08116FE0: .4byte gSharedMem + 0x19000 _08116FE4: ldr r3, _08116FF0 @ =gSprites ldr r2, _08116FF4 @ =gSharedMem + 0x19000 adds r0, r2, 0 adds r0, 0x43 b _08117028 .align 2, 0 _08116FF0: .4byte gSprites _08116FF4: .4byte gSharedMem + 0x19000 _08116FF8: ldr r3, _08117004 @ =gSprites ldr r2, _08117008 @ =gSharedMem + 0x19000 adds r0, r2, 0 adds r0, 0x44 b _08117028 .align 2, 0 _08117004: .4byte gSprites _08117008: .4byte gSharedMem + 0x19000 _0811700C: ldr r3, _08117018 @ =gSprites ldr r2, _0811701C @ =gSharedMem + 0x19000 adds r0, r2, 0 adds r0, 0x45 b _08117028 .align 2, 0 _08117018: .4byte gSprites _0811701C: .4byte gSharedMem + 0x19000 _08117020: ldr r3, _08117088 @ =gSprites ldr r2, _0811708C @ =gSharedMem + 0x19000 adds r0, r2, 0 adds r0, 0x46 _08117028: ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r3 ldrb r0, [r0, 0x5] lsrs r0, 4 lsls r7, r0, 4 adds r4, r2, 0 _0811703A: mov r2, r10 cmp r2, 0x1 bne _08117094 ldr r1, _08117090 @ =gUnknown_083F8C00 lsls r2, r6, 2 adds r0, r2, r6 lsls r0, 2 adds r1, 0x8 adds r0, r1 ldr r1, [r4, 0x8] ldr r0, [r0] ands r1, r0 str r2, [sp, 0x1C] cmp r1, 0 bne _0811713C adds r0, r6, 0 movs r1, 0x5 bl __udivsi3 lsls r0, 24 lsrs r0, 24 subs r1, r0, 0x1 lsls r1, 3 mov r3, sp adds r2, r3, r1 ldrh r1, [r2, 0x2] adds r1, r7, r1 strh r1, [r2, 0x2] adds r1, r4, 0 adds r1, 0xB8 lsls r0, 3 subs r0, 0x8 adds r2, r3, r0 adds r0, r1, 0 movs r1, 0xD bl sub_812492C b _08117122 .align 2, 0 _08117088: .4byte gSprites _0811708C: .4byte gSharedMem + 0x19000 _08117090: .4byte gUnknown_083F8C00 _08117094: movs r4, 0 lsls r0, r6, 2 str r0, [sp, 0x1C] ldr r1, _0811714C @ =gSharedMem + 0x19000 mov r8, r1 ldr r2, _08117150 @ =gUnknown_083F8C00 mov r9, r2 _081170A2: lsls r0, r4, 2 adds r0, r4 adds r0, r6, r0 adds r0, 0x5 lsls r0, 24 lsrs r2, r0, 24 lsls r0, r2, 2 adds r0, r2 lsls r5, r0, 2 mov r0, r9 adds r0, 0x8 adds r0, r5, r0 mov r3, r8 ldr r1, [r3, 0x8] ldr r0, [r0] ands r1, r0 cmp r1, 0 bne _0811710E adds r0, r2, 0 movs r1, 0x5 bl __udivsi3 lsls r0, 24 lsrs r0, 24 subs r1, r0, 0x1 lsls r1, 3 mov r3, sp adds r2, r3, r1 ldrh r1, [r2, 0x2] adds r1, r7, r1 strh r1, [r2, 0x2] adds r1, r4, 0 adds r1, 0xD lsls r1, 24 lsrs r1, 24 lsls r0, 3 subs r0, 0x8 adds r2, r3, r0 mov r0, r8 adds r0, 0xB8 bl sub_812492C mov r0, r10 cmp r0, 0x3 bne _08117104 mov r1, r9 adds r0, r5, r1 ldrh r0, [r0, 0x10] str r0, [sp, 0x18] _08117104: mov r0, r10 subs r0, 0x1 lsls r0, 24 lsrs r0, 24 mov r10, r0 _0811710E: adds r0, r4, 0x1 lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0x2 bls _081170A2 mov r2, r10 cmp r2, 0x2 beq _08117122 movs r3, 0 str r3, [sp, 0x18] _08117122: ldr r0, _08117154 @ =gSharedMem + 0x190B8 ldr r2, _08117150 @ =gUnknown_083F8C00 ldr r4, [sp, 0x1C] adds r1, r4, r6 lsls r1, 2 adds r1, r2 ldrh r1, [r1, 0x10] ldr r2, [sp, 0x18] orrs r2, r1 str r2, [sp, 0x18] adds r1, r2, 0 bl sub_8124CE8 _0811713C: add sp, 0x20 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0811714C: .4byte gSharedMem + 0x19000 _08117150: .4byte gUnknown_083F8C00 _08117154: .4byte gSharedMem + 0x190B8 thumb_func_end sub_8116EF8 thumb_func_start sub_8117158 sub_8117158: @ 8117158 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x24 lsls r0, 24 lsrs r5, r0, 24 ldr r4, _0811719C @ =gSharedMem + 0x19000 movs r0, 0x1 strh r0, [r4, 0x2A] movs r0, 0 movs r1, 0 bl sub_8117AA8 ldr r0, _081171A0 @ =gBGTilemapBuffers + 0x800 ldr r1, _081171A4 @ =0xfffff800 adds r4, r1 movs r1, 0x10 str r1, [sp] movs r1, 0xD str r1, [sp, 0x4] adds r1, r4, 0 movs r2, 0xE movs r3, 0x7 bl sub_8124E2C cmp r5, 0xF bhi _08117250 lsls r0, r5, 2 ldr r1, _081171A8 @ =_081171AC adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _0811719C: .4byte gSharedMem + 0x19000 _081171A0: .4byte gBGTilemapBuffers + 0x800 _081171A4: .4byte 0xfffff800 _081171A8: .4byte _081171AC .align 2, 0 _081171AC: .4byte _08117360 .4byte _081171EC .4byte _081171EC .4byte _081171EC .4byte _081171EC .4byte _08117220 .4byte _08117250 .4byte _08117250 .4byte _08117250 .4byte _08117250 .4byte _08117220 .4byte _08117250 .4byte _08117250 .4byte _08117250 .4byte _08117250 .4byte _08117220 _081171EC: movs r0, 0x4 str r0, [sp, 0x18] add r1, sp, 0x8 movs r0, 0 strb r0, [r1] adds r0, r1, 0 ldrb r0, [r0] cmp r0, 0x3 bhi _08117258 add r4, sp, 0x10 adds r3, r1, 0 _08117202: ldrb r2, [r3] adds r2, r4 ldrb r1, [r3] lsls r0, r1, 2 adds r0, r1 adds r0, r5, r0 strb r0, [r2] ldrb r0, [r3] adds r0, 0x1 strb r0, [r3] ldrb r0, [r3] ldr r1, [sp, 0x18] cmp r0, r1 bcc _08117202 b _08117258 _08117220: movs r0, 0x5 str r0, [sp, 0x18] add r1, sp, 0x8 movs r0, 0 strb r0, [r1] adds r0, r1, 0 ldrb r0, [r0] cmp r0, 0x4 bhi _08117258 add r3, sp, 0x10 adds r2, r1, 0 _08117236: ldrb r1, [r2] adds r1, r3 ldrb r0, [r2] adds r0, r5, r0 strb r0, [r1] ldrb r0, [r2] adds r0, 0x1 strb r0, [r2] ldrb r0, [r2] ldr r1, [sp, 0x18] cmp r0, r1 bcc _08117236 b _08117258 _08117250: movs r0, 0x1 str r0, [sp, 0x18] add r0, sp, 0x10 strb r5, [r0] _08117258: add r1, sp, 0x8 movs r0, 0 strb r0, [r1] adds r0, r1, 0 ldrb r0, [r0] ldr r1, [sp, 0x18] cmp r0, r1 bcs _08117360 mov r0, sp adds r0, 0xE str r0, [sp, 0x1C] add r1, sp, 0x10 mov r9, r1 add r0, sp, 0x8 mov r12, r0 mov r1, sp adds r1, 0xA str r1, [sp, 0x20] _0811727C: mov r1, r12 ldrb r0, [r1] add r0, r9 ldrb r1, [r0] lsls r0, r1, 2 adds r0, r1 lsls r0, 2 ldr r1, _08117370 @ =gUnknown_083F8C00 adds r0, r1 ldrb r0, [r0, 0x6] ldr r1, [sp, 0x1C] strb r0, [r1] mov r1, r12 ldrb r0, [r1] add r0, r9 ldrb r1, [r0] lsls r0, r1, 2 adds r0, r1 lsls r0, 2 ldr r1, _08117370 @ =gUnknown_083F8C00 adds r0, r1 ldrb r0, [r0, 0x3] ldr r1, [sp, 0x20] strh r0, [r1] mov r4, sp adds r4, 0x9 movs r0, 0 strb r0, [r4] ldrb r0, [r4] cmp r0, 0x2 bhi _08117350 add r5, sp, 0xC ldr r7, [sp, 0x20] ldr r0, _08117374 @ =gBGTilemapBuffers + 0x800 mov r8, r0 ldr r6, [sp, 0x1C] ldr r1, _08117378 @ =gSharedMem + 0x189A0 mov r10, r1 _081172C8: mov r1, r12 ldrb r0, [r1] add r0, r9 ldrb r0, [r0] lsls r1, r0, 2 adds r1, r0 lsls r1, 2 ldr r0, _08117370 @ =gUnknown_083F8C00 adds r1, r0 adds r3, r4, 0 ldrb r0, [r4] ldrb r1, [r1, 0x4] adds r0, r1 lsls r0, 5 strh r0, [r5] ldrh r0, [r7] ldrh r2, [r5] adds r2, r0 lsls r2, 1 add r2, r8 ldrb r0, [r6] ldrb r1, [r4] adds r1, r0 lsls r0, r1, 1 adds r0, r1 lsls r0, 1 add r0, r10 ldrh r0, [r0] strh r0, [r2] ldrh r0, [r7] ldrh r2, [r5] adds r2, r0 adds r2, 0x1 lsls r2, 1 add r2, r8 ldrb r0, [r6] ldrb r1, [r4] adds r1, r0 lsls r0, r1, 1 adds r0, r1 lsls r0, 1 mov r1, r10 adds r1, 0x2 adds r0, r1 ldrh r0, [r0] strh r0, [r2] ldrh r0, [r7] ldrh r2, [r5] adds r2, r0 adds r2, 0x2 lsls r2, 1 add r2, r8 ldrb r0, [r6] ldrb r1, [r4] adds r1, r0 lsls r0, r1, 1 adds r0, r1 lsls r0, 1 ldr r1, _0811737C @ =gSharedMem + 0x189A4 adds r0, r1 ldrh r0, [r0] strh r0, [r2] ldrb r0, [r4] adds r0, 0x1 strb r0, [r4] ldrb r0, [r3] cmp r0, 0x2 bls _081172C8 _08117350: mov r1, r12 ldrb r0, [r1] adds r0, 0x1 strb r0, [r1] ldrb r0, [r1] ldr r1, [sp, 0x18] cmp r0, r1 bcc _0811727C _08117360: add sp, 0x24 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08117370: .4byte gUnknown_083F8C00 _08117374: .4byte gBGTilemapBuffers + 0x800 _08117378: .4byte gSharedMem + 0x189A0 _0811737C: .4byte gSharedMem + 0x189A4 thumb_func_end sub_8117158 thumb_func_start sub_8117380 sub_8117380: @ 8117380 push {r4,lr} sub sp, 0x8 lsls r0, 24 lsrs r4, r0, 24 ldr r1, _081173B8 @ =gUnknown_083F8EF4 mov r0, sp movs r2, 0x5 bl memcpy cmp r4, 0x13 bls _08117398 movs r4, 0 _08117398: ldr r3, _081173BC @ =gUnknown_083F8C00 lsls r0, r4, 2 adds r0, r4 lsls r2, r0, 2 adds r0, r2, r3 ldrb r0, [r0, 0x1] lsls r0, 28 lsrs r0, 28 cmp r0, 0x4 beq _081173EC cmp r0, 0x4 bgt _081173C0 cmp r0, 0x3 beq _081173C6 b _08117428 .align 2, 0 _081173B8: .4byte gUnknown_083F8EF4 _081173BC: .4byte gUnknown_083F8C00 _081173C0: cmp r0, 0xC beq _0811740C b _08117428 _081173C6: adds r0, r4, 0 movs r1, 0x5 bl __udivsi3 subs r0, 0x1 lsls r0, 24 lsrs r4, r0, 24 ldr r0, _081173E8 @ =gSharedMem + 0x19000 adds r0, 0x16 adds r1, r4, r0 ldrb r0, [r1] cmp r0, 0x3 bhi _08117428 ldrb r0, [r1] adds r0, 0x1 b _08117402 .align 2, 0 _081173E8: .4byte gSharedMem + 0x19000 _081173EC: subs r0, r4, 0x1 lsls r0, 24 lsrs r4, r0, 24 ldr r0, _08117408 @ =gSharedMem + 0x19000 adds r0, 0x12 adds r1, r4, r0 ldrb r0, [r1] cmp r0, 0x2 bhi _08117428 ldrb r0, [r1] adds r0, 0x2 _08117402: add r0, sp ldrb r0, [r0] b _0811742A .align 2, 0 _08117408: .4byte gSharedMem + 0x19000 _0811740C: ldr r1, _08117424 @ =gSharedMem + 0x19000 adds r0, r3, 0 adds r0, 0x8 adds r0, r2, r0 ldr r1, [r1, 0x8] ldr r0, [r0] ands r1, r0 cmp r1, 0 bne _08117428 mov r0, sp ldrb r0, [r0, 0x4] b _0811742A .align 2, 0 _08117424: .4byte gSharedMem + 0x19000 _08117428: movs r0, 0 _0811742A: add sp, 0x8 pop {r4} pop {r1} bx r1 thumb_func_end sub_8117380 thumb_func_start sub_8117434 sub_8117434: @ 8117434 push {r4-r6,lr} ldr r1, _081174AC @ =REG_BG2PA ldr r4, _081174B0 @ =gSharedMem + 0x19000 ldrh r0, [r4, 0x2C] strh r0, [r1] adds r1, 0x2 ldrh r0, [r4, 0x2E] strh r0, [r1] adds r1, 0x2 ldrh r0, [r4, 0x30] strh r0, [r1] adds r1, 0x2 ldrh r0, [r4, 0x32] strh r0, [r1] movs r0, 0x2E ldrsh r2, [r4, r0] ldr r0, _081174B4 @ =gSpriteCoordOffsetY movs r3, 0 ldrsh r1, [r0, r3] adds r1, 0x50 adds r0, r2, 0 muls r0, r1 movs r2, 0xE8 lsls r2, 7 subs r2, r0 movs r6, 0x2C ldrsh r5, [r4, r6] ldr r0, _081174B8 @ =gSpriteCoordOffsetX movs r6, 0 ldrsh r3, [r0, r6] adds r3, 0x74 adds r0, r5, 0 muls r0, r3 subs r2, r0 movs r5, 0x32 ldrsh r0, [r4, r5] muls r0, r1 movs r1, 0xA8 lsls r1, 7 subs r1, r0 movs r6, 0x30 ldrsh r0, [r4, r6] muls r0, r3 subs r1, r0 ldr r0, _081174BC @ =REG_BG2X_L strh r2, [r0] adds r0, 0x2 ldr r3, _081174C0 @ =0x0fff0000 ands r2, r3 asrs r2, 16 strh r2, [r0] adds r0, 0x2 strh r1, [r0] adds r0, 0x2 ands r1, r3 asrs r1, 16 strh r1, [r0] pop {r4-r6} pop {r0} bx r0 .align 2, 0 _081174AC: .4byte REG_BG2PA _081174B0: .4byte gSharedMem + 0x19000 _081174B4: .4byte gSpriteCoordOffsetY _081174B8: .4byte gSpriteCoordOffsetX _081174BC: .4byte REG_BG2X_L _081174C0: .4byte 0x0fff0000 thumb_func_end sub_8117434 thumb_func_start sub_81174C4 sub_81174C4: @ 81174C4 push {lr} lsls r0, 16 asrs r0, 16 lsls r1, 16 asrs r1, 16 muls r0, r1 adds r1, r0, 0 cmp r0, 0 bge _081174D8 adds r1, 0xFF _081174D8: lsls r0, r1, 8 asrs r0, 16 pop {r1} bx r1 thumb_func_end sub_81174C4 thumb_func_start sub_81174E0 sub_81174E0: @ 81174E0 push {lr} adds r1, r0, 0 movs r0, 0x80 lsls r0, 9 lsls r1, 16 asrs r1, 16 bl __divsi3 lsls r0, 16 asrs r0, 16 pop {r1} bx r1 thumb_func_end sub_81174E0 thumb_func_start sub_81174F8 sub_81174F8: @ 81174F8 push {r4,lr} adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 movs r0, 0x14 movs r1, 0x8 movs r2, 0x1 bl DisplayYesNoMenu ldr r0, _08117520 @ =0x00002d9e bl sub_814AAF8 ldr r1, _08117524 @ =gUnknown_083F8EB4 adds r0, r4, 0 bl DoYesNoFuncWithChoice pop {r4} pop {r0} bx r0 .align 2, 0 _08117520: .4byte 0x00002d9e _08117524: .4byte gUnknown_083F8EB4 thumb_func_end sub_81174F8 thumb_func_start sub_8117528 sub_8117528: @ 8117528 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 ldr r0, _08117554 @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 bne _0811754C movs r0, 0 bl SetVBlankCallback ldr r0, _08117558 @ =sub_8115384 bl SetMainCallback2 adds r0, r4, 0 bl DestroyTask _0811754C: pop {r4} pop {r0} bx r0 .align 2, 0 _08117554: .4byte gPaletteFade _08117558: .4byte sub_8115384 thumb_func_end sub_8117528 thumb_func_start sub_811755C sub_811755C: @ 811755C push {r4,lr} sub sp, 0x4 adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 movs r0, 0x14 movs r1, 0x8 movs r2, 0x1A movs r3, 0xD bl MenuZeroFillWindowRect bl MenuZeroFillScreen movs r0, 0x1 negs r0, r0 movs r1, 0 str r1, [sp] movs r2, 0 movs r3, 0x10 bl BeginNormalPaletteFade ldr r2, _081175B4 @ =gPaletteFade ldrb r1, [r2, 0x8] lsls r1, 26 lsrs r1, 26 ldrb r3, [r2, 0x4] movs r0, 0x40 negs r0, r0 ands r0, r3 orrs r0, r1 strb r0, [r2, 0x4] bl UpdatePaletteFade ldr r1, _081175B8 @ =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 ldr r1, _081175BC @ =sub_8117528 str r1, [r0] add sp, 0x4 pop {r4} pop {r0} bx r0 .align 2, 0 _081175B4: .4byte gPaletteFade _081175B8: .4byte gTasks _081175BC: .4byte sub_8117528 thumb_func_end sub_811755C thumb_func_start sub_81175C0 sub_81175C0: @ 81175C0 push {r4,lr} adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 bl MenuZeroFillScreen bl ScriptContext2_Disable adds r0, r4, 0 bl DestroyTask pop {r4} pop {r0} bx r0 thumb_func_end sub_81175C0 thumb_func_start sub_81175DC sub_81175DC: @ 81175DC push {r4,lr} lsls r0, 24 lsrs r0, 24 adds r4, r0, 0 ldr r1, _08117624 @ =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 ldrh r1, [r0, 0x8] adds r2, r1, 0x1 strh r2, [r0, 0x8] ldr r0, _08117628 @ =gMain ldrh r1, [r0, 0x2E] movs r0, 0x3 ands r0, r1 cmp r0, 0 bne _08117608 lsls r0, r2, 16 asrs r0, 16 cmp r0, 0x3C ble _0811761C _08117608: ldr r1, _0811762C @ =gSpecialVar_0x8004 movs r0, 0x1 strh r0, [r1] bl MenuZeroFillScreen bl ScriptContext2_Disable adds r0, r4, 0 bl DestroyTask _0811761C: pop {r4} pop {r0} bx r0 .align 2, 0 _08117624: .4byte gTasks _08117628: .4byte gMain _0811762C: .4byte gSpecialVar_0x8004 thumb_func_end sub_81175DC thumb_func_start sub_8117630 sub_8117630: @ 8117630 push {r4,r5,lr} adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 ldr r2, _0811768C @ =gUnknown_083F8DF0 ldr r0, _08117690 @ =gSpecialVar_0x8004 ldrh r1, [r0] movs r0, 0x1 ands r0, r1 lsrs r1, 7 lsls r1, 1 adds r0, r1 adds r0, r2 ldrb r1, [r0] ldr r0, _08117694 @ =gStringVar1 movs r2, 0x2 movs r3, 0x1 bl ConvertIntToDecimalStringN ldr r5, _08117698 @ =gStringVar4 ldr r1, _0811769C @ =gUnknown_081C40DF adds r0, r5, 0 bl StringExpandPlaceholders movs r0, 0 movs r1, 0xE movs r2, 0x1D movs r3, 0x13 bl MenuDrawTextWindow adds r0, r5, 0 movs r1, 0x1 movs r2, 0xF bl MenuPrint ldr r1, _081176A0 @ =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 ldr r1, _081176A4 @ =sub_81174F8 str r1, [r0] pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0811768C: .4byte gUnknown_083F8DF0 _08117690: .4byte gSpecialVar_0x8004 _08117694: .4byte gStringVar1 _08117698: .4byte gStringVar4 _0811769C: .4byte gUnknown_081C40DF _081176A0: .4byte gTasks _081176A4: .4byte sub_81174F8 thumb_func_end sub_8117630 thumb_func_start Task_Roulette_0 Task_Roulette_0: @ 81176A8 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} lsls r0, 24 lsrs r7, r0, 24 ldr r0, _08117758 @ =gStringVar1 mov r10, r0 ldr r1, _0811775C @ =gTasks lsls r0, r7, 2 adds r0, r7 lsls r0, 3 adds r6, r0, r1 movs r0, 0x22 ldrsh r1, [r6, r0] mov r0, r10 movs r2, 0x1 movs r3, 0x4 bl ConvertIntToDecimalStringN ldr r5, _08117760 @ =gStringVar4 ldr r1, _08117764 @ =gOtherText_Coins adds r0, r5, 0 bl StringExpandPlaceholders movs r0, 0 movs r1, 0 movs r2, 0x9 movs r3, 0x3 bl MenuDrawTextWindow adds r0, r5, 0 movs r1, 0x9 movs r2, 0x1 bl MenuPrint_RightAligned ldr r2, _08117768 @ =gUnknown_083F8DF0 ldr r1, _0811776C @ =gSpecialVar_0x8004 mov r8, r1 ldrh r1, [r1] movs r0, 0x1 mov r9, r0 ands r0, r1 lsrs r1, 7 lsls r1, 1 adds r0, r1 adds r0, r2 ldrb r4, [r0] mov r0, r10 adds r1, r4, 0 movs r2, 0x2 movs r3, 0x1 bl ConvertIntToDecimalStringN movs r1, 0x22 ldrsh r0, [r6, r1] cmp r0, r4 blt _081177BC mov r0, r8 ldrh r1, [r0] movs r0, 0x80 ands r0, r1 cmp r0, 0 beq _0811777C mov r0, r9 ands r0, r1 cmp r0, 0 beq _0811777C movs r0, 0 movs r1, 0xE movs r2, 0x1D movs r3, 0x13 bl MenuDrawTextWindow ldr r0, _08117770 @ =gUnknown_081C4139 movs r1, 0x1 movs r2, 0xF bl MenuPrint ldr r1, _08117774 @ =sub_8117630 ldr r2, _08117778 @ =0x0000ffff adds r0, r7, 0 movs r3, 0x3 bl sub_8116C34 b _081177E4 .align 2, 0 _08117758: .4byte gStringVar1 _0811775C: .4byte gTasks _08117760: .4byte gStringVar4 _08117764: .4byte gOtherText_Coins _08117768: .4byte gUnknown_083F8DF0 _0811776C: .4byte gSpecialVar_0x8004 _08117770: .4byte gUnknown_081C4139 _08117774: .4byte sub_8117630 _08117778: .4byte 0x0000ffff _0811777C: ldr r4, _081177AC @ =gStringVar4 ldr r1, _081177B0 @ =gUnknown_081C40DF adds r0, r4, 0 bl StringExpandPlaceholders movs r0, 0 movs r1, 0xE movs r2, 0x1D movs r3, 0x13 bl MenuDrawTextWindow adds r0, r4, 0 movs r1, 0x1 movs r2, 0xF bl MenuPrint ldr r1, _081177B4 @ =gTasks lsls r0, r7, 2 adds r0, r7 lsls r0, 3 adds r0, r1 ldr r1, _081177B8 @ =sub_81174F8 str r1, [r0] b _081177E4 .align 2, 0 _081177AC: .4byte gStringVar4 _081177B0: .4byte gUnknown_081C40DF _081177B4: .4byte gTasks _081177B8: .4byte sub_81174F8 _081177BC: ldr r1, _081177F4 @ =gUnknown_081C411C adds r0, r5, 0 bl StringExpandPlaceholders movs r0, 0 movs r1, 0xE movs r2, 0x1D movs r3, 0x13 bl MenuDrawTextWindow adds r0, r5, 0 movs r1, 0x1 movs r2, 0xF bl MenuPrint ldr r0, _081177F8 @ =sub_81175DC str r0, [r6] movs r0, 0 strh r0, [r6, 0x22] strh r0, [r6, 0x8] _081177E4: pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _081177F4: .4byte gUnknown_081C411C _081177F8: .4byte sub_81175DC thumb_func_end Task_Roulette_0 thumb_func_start PlayRoulette PlayRoulette: @ 81177FC push {lr} bl ScriptContext2_Enable ldr r0, _08117828 @ =Task_Roulette_0 movs r1, 0 bl CreateTask lsls r0, 24 lsrs r0, 24 ldr r2, _0811782C @ =gTasks lsls r1, r0, 2 adds r1, r0 lsls r1, 3 adds r1, r2 ldr r0, _08117830 @ =gSaveBlock1 ldr r2, _08117834 @ =0x00000494 adds r0, r2 ldrh r0, [r0] strh r0, [r1, 0x22] pop {r0} bx r0 .align 2, 0 _08117828: .4byte Task_Roulette_0 _0811782C: .4byte gTasks _08117830: .4byte gSaveBlock1 _08117834: .4byte 0x00000494 thumb_func_end PlayRoulette thumb_func_start sub_8117838 sub_8117838: @ 8117838 push {r4,lr} lsls r0, 24 cmp r0, 0 bne _08117884 bl FreeAllSpritePalettes ldr r0, _08117870 @ =gUnknown_083F9E30 bl LoadSpritePalettes ldr r0, _08117874 @ =gUnknown_083F92A8 ldr r4, _08117878 @ =gSharedMem + 0x17000 adds r1, r4, 0 bl LZ77UnCompWram ldr r0, _0811787C @ =gUnknown_083F90FC movs r2, 0xE0 lsls r2, 4 adds r1, r4, r2 bl LZ77UnCompWram ldr r0, _08117880 @ =gUnknown_083F9D3C movs r1, 0x80 lsls r1, 5 adds r4, r1 adds r1, r4, 0 bl LZ77UnCompWram b _08117888 .align 2, 0 _08117870: .4byte gUnknown_083F9E30 _08117874: .4byte gUnknown_083F92A8 _08117878: .4byte gSharedMem + 0x17000 _0811787C: .4byte gUnknown_083F90FC _08117880: .4byte gUnknown_083F9D3C _08117884: bl FreeAllSpritePalettes _08117888: pop {r4} pop {r0} bx r0 thumb_func_end sub_8117838 thumb_func_start sub_8117890 sub_8117890: @ 8117890 push {r4-r6,lr} adds r4, r1, 0 adds r6, r2, 0 lsls r4, 24 lsrs r4, 24 ldr r1, [r0, 0x4] ldrb r3, [r1] movs r1, 0x74 movs r2, 0x50 bl CreateSprite lsls r0, 24 lsrs r0, 24 adds r5, r0, 0 ldr r0, _081178F4 @ =gSprites lsls r1, r5, 4 adds r1, r5 lsls r1, 2 adds r1, r0 ldrh r0, [r6] strh r0, [r1, 0x2E] strh r4, [r1, 0x30] adds r3, r1, 0 adds r3, 0x3E ldrb r0, [r3] movs r2, 0x2 orrs r0, r2 strb r0, [r3] adds r1, 0x2C ldrb r0, [r1] movs r2, 0x40 orrs r0, r2 movs r2, 0x80 orrs r0, r2 strb r0, [r1] ldrh r2, [r6] adds r0, r2, 0 adds r0, 0x1E strh r0, [r6] lsls r0, 16 ldr r1, _081178F8 @ =0x01670000 cmp r0, r1 bls _081178EC ldr r1, _081178FC @ =0xfffffeb6 adds r0, r2, r1 strh r0, [r6] _081178EC: adds r0, r5, 0 pop {r4-r6} pop {r1} bx r1 .align 2, 0 _081178F4: .4byte gSprites _081178F8: .4byte 0x01670000 _081178FC: .4byte 0xfffffeb6 thumb_func_end sub_8117890 thumb_func_start sub_8117900 sub_8117900: @ 8117900 push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} sub sp, 0x8 ldr r4, _08117A50 @ =gUnknown_083F9F54 ldr r0, [r4] ldr r5, _08117A54 @ =gSharedMem adds r1, r5, 0 bl LZ77UnCompWram str r5, [sp] mov r6, sp ldrh r1, [r4, 0x6] lsls r1, 16 ldrh r0, [r4, 0x4] orrs r0, r1 str r0, [sp, 0x4] mov r0, sp bl LoadSpriteSheet ldr r4, _08117A58 @ =gUnknown_083F9F5C ldr r0, [r4] adds r1, r5, 0 bl LZ77UnCompWram str r5, [sp] ldrh r0, [r4, 0x4] strh r0, [r6, 0x4] ldrh r0, [r4, 0x6] strh r0, [r6, 0x6] mov r0, sp bl LoadSpriteSheet movs r7, 0 ldr r0, _08117A5C @ =0x0001903c adds r0, r5 mov r9, r0 ldr r0, _08117A60 @ =gSprites mov r8, r0 _08117950: lsls r0, r7, 1 adds r0, r7 lsls r0, 27 lsrs r4, r0, 24 movs r6, 0 lsls r5, r7, 2 _0811795C: lsls r1, r6, 1 adds r1, r6 lsls r1, 3 ldr r0, _08117A64 @ =gSpriteTemplate_83FA07C adds r0, r1, r0 adds r1, 0x94 adds r2, r4, 0 adds r2, 0x5C movs r3, 0x1E bl CreateSprite adds r1, r6, 0 adds r1, 0x1D adds r1, r5, r1 add r1, r9 strb r0, [r1] lsls r0, 24 lsrs r1, r0, 24 lsls r0, r1, 4 adds r0, r1 lsls r0, 2 add r0, r8 adds r0, 0x2C ldrb r1, [r0] movs r2, 0x40 orrs r1, r2 strb r1, [r0] adds r0, r4, 0 adds r0, 0x18 lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0x47 bls _081179A0 movs r4, 0 _081179A0: adds r0, r6, 0x1 lsls r0, 24 lsrs r6, r0, 24 cmp r6, 0x3 bls _0811795C adds r0, r7, 0x1 lsls r0, 24 lsrs r7, r0, 24 cmp r7, 0x2 bls _08117950 movs r7, 0 ldr r5, _08117A68 @ =gSharedMem + 0x1903C ldr r4, _08117A60 @ =gSprites _081179BA: lsls r1, r7, 1 adds r1, r7 lsls r1, 3 ldr r0, _08117A6C @ =gSpriteTemplate_83F9FD4 adds r0, r1, r0 adds r1, 0x94 lsls r1, 16 asrs r1, 16 movs r2, 0x46 movs r3, 0x1E bl CreateSprite adds r1, r7, 0 adds r1, 0x29 adds r1, r5 strb r0, [r1] lsls r0, 24 lsrs r1, r0, 24 lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 adds r0, 0x2C ldrb r1, [r0] movs r2, 0x40 orrs r1, r2 strb r1, [r0] adds r0, r7, 0x1 lsls r0, 24 lsrs r7, r0, 24 cmp r7, 0x3 bls _081179BA movs r7, 0 ldr r5, _08117A68 @ =gSharedMem + 0x1903C ldr r4, _08117A60 @ =gSprites _08117A00: lsls r2, r7, 1 adds r2, r7 lsls r2, 3 ldr r0, _08117A70 @ =gSpriteTemplate_83FA034 adds r0, r2, r0 adds r2, 0x5C lsls r2, 16 asrs r2, 16 movs r1, 0x7E movs r3, 0x1E bl CreateSprite adds r1, r7, 0 adds r1, 0x2D adds r1, r5 strb r0, [r1] lsls r0, 24 lsrs r1, r0, 24 lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 adds r0, 0x2C ldrb r1, [r0] movs r2, 0x40 orrs r1, r2 strb r1, [r0] adds r0, r7, 0x1 lsls r0, 24 lsrs r7, r0, 24 cmp r7, 0x2 bls _08117A00 add sp, 0x8 pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08117A50: .4byte gUnknown_083F9F54 _08117A54: .4byte gSharedMem _08117A58: .4byte gUnknown_083F9F5C _08117A5C: .4byte 0x0001903c _08117A60: .4byte gSprites _08117A64: .4byte gSpriteTemplate_83FA07C _08117A68: .4byte gSharedMem + 0x1903C _08117A6C: .4byte gSpriteTemplate_83F9FD4 _08117A70: .4byte gSpriteTemplate_83FA034 thumb_func_end sub_8117900 thumb_func_start unref_sub_8117A74 unref_sub_8117A74: @ 8117A74 push {r4,r5,lr} movs r4, 0 ldr r5, _08117AA0 @ =gSharedMem + 0x1903C _08117A7A: adds r0, r4, 0 adds r0, 0x1D adds r0, r5 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 ldr r1, _08117AA4 @ =gSprites adds r0, r1 bl DestroySprite adds r0, r4, 0x1 lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0xB bls _08117A7A pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08117AA0: .4byte gSharedMem + 0x1903C _08117AA4: .4byte gSprites thumb_func_end unref_sub_8117A74 thumb_func_start sub_8117AA8 sub_8117AA8: @ 8117AA8 push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} lsls r0, 24 lsrs r0, 24 lsls r1, 24 lsrs r1, 24 mov r8, r1 cmp r0, 0 beq _08117AF8 cmp r0, 0x1 bne _08117BA8 movs r3, 0 ldr r5, _08117AF0 @ =gSprites ldr r4, _08117AF4 @ =gSharedMem + 0x1903C movs r2, 0x4 _08117ACA: adds r0, r3, 0 adds r0, 0x1D adds r0, r4 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r5 adds r0, 0x3E ldrb r1, [r0] orrs r1, r2 strb r1, [r0] adds r0, r3, 0x1 lsls r0, 24 lsrs r3, r0, 24 cmp r3, 0x12 bls _08117ACA b _08117BA8 .align 2, 0 _08117AF0: .4byte gSprites _08117AF4: .4byte gSharedMem + 0x1903C _08117AF8: movs r3, 0 ldr r0, _08117B48 @ =gUnknown_083F8D90 mov r12, r0 ldr r7, _08117B4C @ =gSharedMem + 0x19000 movs r1, 0x4 add r1, r12 mov r9, r1 ldr r5, _08117B50 @ =gSprites adds r4, r7, 0 adds r4, 0x3C movs r6, 0x5 negs r6, r6 _08117B10: lsls r2, r3, 3 mov r1, r9 adds r0, r2, r1 ldr r1, [r7, 0x8] ldr r0, [r0] ands r1, r0 cmp r1, 0 beq _08117B54 mov r1, r12 adds r0, r2, r1 ldrb r0, [r0, 0x2] cmp r0, r8 beq _08117B54 adds r0, r3, 0 adds r0, 0x1D adds r0, r4 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r5 adds r0, 0x3E ldrb r1, [r0] movs r2, 0x4 orrs r1, r2 strb r1, [r0] b _08117B6E .align 2, 0 _08117B48: .4byte gUnknown_083F8D90 _08117B4C: .4byte gSharedMem + 0x19000 _08117B50: .4byte gSprites _08117B54: adds r0, r3, 0 adds r0, 0x1D adds r0, r4 ldrb r0, [r0] lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r1, r5 adds r1, 0x3E ldrb r2, [r1] adds r0, r6, 0 ands r0, r2 strb r0, [r1] _08117B6E: adds r0, r3, 0x1 lsls r0, 24 lsrs r3, r0, 24 cmp r3, 0xB bls _08117B10 cmp r3, 0x12 bhi _08117BA8 ldr r6, _08117BB4 @ =gSprites ldr r4, _08117BB8 @ =gSharedMem + 0x1903C movs r5, 0x5 negs r5, r5 _08117B84: adds r0, r3, 0 adds r0, 0x1D adds r0, r4 ldrb r0, [r0] lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r1, r6 adds r1, 0x3E ldrb r2, [r1] adds r0, r5, 0 ands r0, r2 strb r0, [r1] adds r0, r3, 0x1 lsls r0, 24 lsrs r3, r0, 24 cmp r3, 0x12 bls _08117B84 _08117BA8: pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08117BB4: .4byte gSprites _08117BB8: .4byte gSharedMem + 0x1903C thumb_func_end sub_8117AA8 thumb_func_start sub_8117BBC sub_8117BBC: @ 8117BBC push {r4-r7,lr} mov r7, r8 push {r7} movs r5, 0 ldr r0, _08117C50 @ =gSharedMem + 0x1903C mov r8, r0 ldr r4, _08117C54 @ =gSprites movs r6, 0x4 _08117BCC: ldr r0, _08117C58 @ =gSpriteTemplate_83FA40C movs r1, 0x74 movs r2, 0x14 movs r3, 0xA bl CreateSprite adds r3, r5, 0 adds r3, 0x31 add r3, r8 strb r0, [r3] ldrb r1, [r3] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 adds r0, 0x3E ldrb r1, [r0] orrs r1, r6 strb r1, [r0] ldrb r1, [r3] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 movs r1, 0x1 strh r1, [r0, 0x2E] ldrb r1, [r3] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r1, r4, 0 adds r1, 0x1C adds r0, r1 ldr r1, _08117C5C @ =sub_81184CC str r1, [r0] ldrb r1, [r3] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 ldrb r1, [r0, 0x5] movs r7, 0xD negs r7, r7 adds r2, r7, 0 ands r1, r2 orrs r1, r6 strb r1, [r0, 0x5] ldrb r1, [r3] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 movs r1, 0x8 bl StartSpriteAnim adds r0, r5, 0x1 lsls r0, 24 lsrs r5, r0, 24 cmp r5, 0x5 bls _08117BCC pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08117C50: .4byte gSharedMem + 0x1903C _08117C54: .4byte gSprites _08117C58: .4byte gSpriteTemplate_83FA40C _08117C5C: .4byte sub_81184CC thumb_func_end sub_8117BBC thumb_func_start sub_8117C60 sub_8117C60: @ 8117C60 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} lsls r0, 24 lsls r1, 24 lsrs r1, 24 mov r9, r1 movs r5, 0 cmp r0, 0 beq _08117CAC ldr r4, _08117CA4 @ =gSprites ldr r3, _08117CA8 @ =gSharedMem + 0x1903C movs r2, 0x4 _08117C7E: adds r0, r5, 0 adds r0, 0x31 adds r0, r3 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 adds r0, 0x3E ldrb r1, [r0] orrs r1, r2 strb r1, [r0] adds r0, r5, 0x1 lsls r0, 24 lsrs r5, r0, 24 cmp r5, 0x5 bls _08117C7E b _08117D58 .align 2, 0 _08117CA4: .4byte gSprites _08117CA8: .4byte gSharedMem + 0x1903C _08117CAC: ldr r0, _08117CEC @ =gSharedMem + 0x19000 mov r12, r0 ldr r6, _08117CF0 @ =gSprites movs r0, 0x3C add r0, r12 mov r8, r0 ldr r7, _08117CF4 @ =gUnknown_083F8C00 movs r0, 0x5 negs r0, r0 mov r10, r0 _08117CC0: mov r0, r12 adds r0, 0xC adds r4, r5, r0 ldrb r0, [r4] cmp r0, 0 beq _08117CD0 cmp r5, r9 bne _08117CF8 _08117CD0: adds r0, r5, 0 adds r0, 0x31 add r0, r8 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r6 adds r0, 0x3E ldrb r1, [r0] movs r2, 0x4 orrs r1, r2 strb r1, [r0] b _08117D4E .align 2, 0 _08117CEC: .4byte gSharedMem + 0x19000 _08117CF0: .4byte gSprites _08117CF4: .4byte gUnknown_083F8C00 _08117CF8: adds r3, r5, 0 adds r3, 0x31 add r3, r8 ldrb r0, [r3] lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r1, r6 adds r1, 0x3E ldrb r2, [r1] mov r0, r10 ands r0, r2 strb r0, [r1] ldrb r0, [r3] lsls r2, r0, 4 adds r2, r0 lsls r2, 2 adds r2, r6 ldrb r1, [r4] lsls r0, r1, 2 adds r0, r1 lsls r0, 2 adds r0, r7 ldrb r0, [r0, 0x3] adds r0, 0x1 lsls r0, 3 adds r0, 0x4 strh r0, [r2, 0x20] ldrb r0, [r3] lsls r2, r0, 4 adds r2, r0 lsls r2, 2 adds r2, r6 ldrb r1, [r4] lsls r0, r1, 2 adds r0, r1 lsls r0, 2 adds r0, r7 ldrb r0, [r0, 0x4] adds r0, 0x1 lsls r0, 3 adds r0, 0x3 strh r0, [r2, 0x22] _08117D4E: adds r0, r5, 0x1 lsls r0, 24 lsrs r5, r0, 24 cmp r5, 0x5 bls _08117CC0 _08117D58: pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 thumb_func_end sub_8117C60 thumb_func_start sub_8117D68 sub_8117D68: @ 8117D68 push {r4,r5,lr} lsls r0, 24 lsrs r5, r0, 24 cmp r5, 0 bne _08117D98 ldr r2, _08117D90 @ =gSprites ldr r0, _08117D94 @ =gSharedMem + 0x19000 adds r0, 0x6C ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 adds r0, 0x3E ldrb r1, [r0] movs r2, 0x4 orrs r1, r2 strb r1, [r0] b _08117DE2 .align 2, 0 _08117D90: .4byte gSprites _08117D94: .4byte gSharedMem + 0x19000 _08117D98: ldr r4, _08117DE8 @ =gSprites ldr r3, _08117DEC @ =gSharedMem + 0x19000 adds r3, 0x6C ldrb r1, [r3] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 adds r0, 0x3E ldrb r2, [r0] movs r1, 0x5 negs r1, r1 ands r1, r2 strb r1, [r0] ldrb r0, [r3] lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r1, r4 ldr r0, _08117DF0 @ =gUnknown_083F8C00 lsls r2, r5, 2 adds r2, r5 lsls r2, 2 adds r2, r0 ldrb r0, [r2, 0x3] adds r0, 0x2 lsls r0, 3 strh r0, [r1, 0x20] ldrb r0, [r3] lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r1, r4 ldrb r0, [r2, 0x4] adds r0, 0x2 lsls r0, 3 strh r0, [r1, 0x22] _08117DE2: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08117DE8: .4byte gSprites _08117DEC: .4byte gSharedMem + 0x19000 _08117DF0: .4byte gUnknown_083F8C00 thumb_func_end sub_8117D68 thumb_func_start sub_8117DF4 sub_8117DF4: @ 8117DF4 push {r4-r7,lr} mov r7, r8 push {r7} sub sp, 0xC ldr r4, _08117E84 @ =gUnknown_083F9EE8 ldr r0, [r4] ldr r5, _08117E88 @ =gSharedMem adds r1, r5, 0 bl LZ77UnCompWram str r5, [sp, 0x4] add r0, sp, 0x4 ldrh r2, [r4, 0x6] lsls r2, 16 ldrh r1, [r4, 0x4] orrs r1, r2 str r1, [r0, 0x4] bl LoadSpriteSheet movs r1, 0xF mov r0, sp strh r1, [r0] movs r0, 0 ldr r1, _08117E8C @ =0x0001903c adds r1, r5 mov r8, r1 ldr r7, _08117E90 @ =gSprites _08117E2A: movs r4, 0 adds r6, r0, 0x1 lsls r5, r0, 2 _08117E30: adds r1, r5, r4 lsls r0, r1, 1 adds r0, r1 lsls r0, 3 ldr r1, _08117E94 @ =gSpriteTemplate_83FA0DC adds r0, r1 movs r1, 0x28 mov r2, sp bl sub_8117890 adds r1, r4, 0x7 adds r1, r5, r1 add r1, r8 strb r0, [r1] lsls r0, 24 lsrs r0, 24 lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r1, r7 adds r1, 0x2C ldrb r0, [r1] movs r2, 0x40 orrs r0, r2 movs r2, 0x80 orrs r0, r2 strb r0, [r1] adds r0, r4, 0x1 lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0x3 bls _08117E30 lsls r0, r6, 24 lsrs r0, 24 cmp r0, 0x2 bls _08117E2A add sp, 0xC pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08117E84: .4byte gUnknown_083F9EE8 _08117E88: .4byte gSharedMem _08117E8C: .4byte 0x0001903c _08117E90: .4byte gSprites _08117E94: .4byte gSpriteTemplate_83FA0DC thumb_func_end sub_8117DF4 thumb_func_start sub_8117E98 sub_8117E98: @ 8117E98 push {r4-r6,lr} adds r6, r0, 0 ldr r0, _08117F1C @ =gSharedMem + 0x19000 ldrh r1, [r6, 0x2E] ldrh r0, [r0, 0x24] adds r1, r0 lsls r1, 16 lsrs r4, r1, 16 asrs r1, 16 ldr r0, _08117F20 @ =0x00000167 cmp r1, r0 ble _08117EB8 ldr r2, _08117F24 @ =0xfffffe98 adds r0, r1, r2 lsls r0, 16 lsrs r4, r0, 16 _08117EB8: adds r0, r4, 0 bl Sin2 lsls r0, 16 lsrs r5, r0, 16 adds r0, r4, 0 bl Cos2 lsls r2, r5, 16 asrs r2, 16 movs r3, 0x30 ldrsh r1, [r6, r3] muls r1, r2 asrs r1, 12 strh r1, [r6, 0x24] lsls r0, 16 asrs r4, r0, 16 negs r1, r4 movs r3, 0x30 ldrsh r0, [r6, r3] muls r0, r1 asrs r0, 12 strh r0, [r6, 0x26] ldrb r0, [r6, 0x3] lsls r0, 26 lsrs r3, r0, 27 cmp r2, 0 bge _08117EF2 adds r2, 0xF _08117EF2: lsls r0, r2, 12 lsrs r5, r0, 16 ldr r1, _08117F28 @ =gOamMatrices lsls r0, r3, 3 adds r1, r0, r1 adds r0, r4, 0 cmp r0, 0 bge _08117F04 adds r0, 0xF _08117F04: asrs r0, 4 strh r0, [r1, 0x6] strh r0, [r1] strh r5, [r1, 0x2] lsls r0, r5, 16 asrs r0, 16 negs r0, r0 strh r0, [r1, 0x4] pop {r4-r6} pop {r0} bx r0 .align 2, 0 _08117F1C: .4byte gSharedMem + 0x19000 _08117F20: .4byte 0x00000167 _08117F24: .4byte 0xfffffe98 _08117F28: .4byte gOamMatrices thumb_func_end sub_8117E98 thumb_func_start sub_8117F2C sub_8117F2C: @ 8117F2C push {r4-r7,lr} mov r7, r8 push {r7} sub sp, 0x8 movs r5, 0 ldr r7, _081180C8 @ =gSharedMem mov r6, sp _08117F3A: ldr r0, _081180CC @ =gUnknown_083FA21C lsls r4, r5, 3 adds r4, r0 ldr r0, [r4] adds r1, r7, 0 bl LZ77UnCompWram str r7, [sp] ldrh r2, [r4, 0x4] ldr r0, _081180D0 @ =0xffff0000 ldr r1, [r6, 0x4] ands r1, r0 orrs r1, r2 str r1, [r6, 0x4] ldrh r2, [r4, 0x6] lsls r2, 16 ldr r0, _081180D4 @ =0x0000ffff ands r0, r1 orrs r0, r2 str r0, [r6, 0x4] mov r0, sp bl LoadSpriteSheet adds r0, r5, 0x1 lsls r0, 24 lsrs r5, r0, 24 cmp r5, 0x4 bls _08117F3A ldr r0, _081180D8 @ =gSpriteTemplate_83FA2B0 movs r1, 0xD0 movs r2, 0x10 movs r3, 0x4 bl CreateSprite ldr r4, _081180DC @ =gSharedMem + 0x19000 adds r1, r4, 0 adds r1, 0x50 strb r0, [r1] ldr r3, _081180E0 @ =gSprites ldrb r1, [r1] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r3 adds r0, 0x2C ldrb r1, [r0] movs r2, 0x40 orrs r1, r2 strb r1, [r0] movs r5, 0 adds r4, 0x3C adds r7, r3, 0 _08117FA2: lsls r1, r5, 19 movs r0, 0xC4 lsls r0, 16 adds r1, r0 asrs r1, 16 ldr r0, _081180E4 @ =gSpriteTemplate_83FA2C8 movs r2, 0x18 movs r3, 0 bl CreateSprite adds r3, r5, 0 adds r3, 0x15 adds r3, r4 strb r0, [r3] ldrb r1, [r3] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r7 adds r0, 0x3E ldrb r1, [r0] movs r2, 0x4 orrs r1, r2 strb r1, [r0] ldrb r1, [r3] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r7 adds r0, 0x2C ldrb r1, [r0] movs r6, 0x40 orrs r1, r6 strb r1, [r0] adds r0, r5, 0x1 lsls r0, 24 lsrs r5, r0, 24 cmp r5, 0x3 bls _08117FA2 ldr r0, _081180E8 @ =gSpriteTemplate_83FA2E0 movs r1, 0x78 movs r2, 0x44 movs r3, 0x4 bl CreateSprite ldr r3, _081180DC @ =gSharedMem + 0x19000 adds r1, r3, 0 adds r1, 0x55 strb r0, [r1] ldr r2, _081180E0 @ =gSprites ldrb r1, [r1] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 adds r0, 0x2C ldrb r1, [r0] orrs r1, r6 strb r1, [r0] movs r5, 0 adds r3, 0x3C mov r8, r3 adds r4, r2, 0 _08118020: lsls r1, r5, 20 movs r0, 0xC0 lsls r0, 16 adds r1, r0 asrs r1, 16 ldr r0, _081180EC @ =gSpriteTemplate_83FA2F8 movs r2, 0x24 movs r3, 0x4 bl CreateSprite adds r2, r5, 0 adds r2, 0x1A add r2, r8 strb r0, [r2] ldrb r1, [r2] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 adds r0, 0x3E ldrb r1, [r0] movs r7, 0x4 orrs r1, r7 strb r1, [r0] ldrb r1, [r2] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 adds r0, 0x2C ldrb r1, [r0] movs r6, 0x40 orrs r1, r6 strb r1, [r0] adds r0, r5, 0x1 lsls r0, 24 lsrs r5, r0, 24 cmp r5, 0x2 bls _08118020 ldr r0, _081180F0 @ =gSpriteTemplate_83FA310 movs r1, 0x98 movs r2, 0x60 movs r3, 0x9 bl CreateSprite ldr r3, _081180DC @ =gSharedMem + 0x19000 adds r3, 0x6C strb r0, [r3] ldr r4, _081180E0 @ =gSprites ldrb r0, [r3] lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r1, r4 ldrb r2, [r1, 0x5] movs r0, 0xD negs r0, r0 ands r0, r2 orrs r0, r7 strb r0, [r1, 0x5] ldrb r1, [r3] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 adds r0, 0x2C ldrb r1, [r0] orrs r1, r6 strb r1, [r0] ldrb r1, [r3] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 adds r0, 0x3E ldrb r1, [r0] orrs r1, r7 strb r1, [r0] add sp, 0x8 pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _081180C8: .4byte gSharedMem _081180CC: .4byte gUnknown_083FA21C _081180D0: .4byte 0xffff0000 _081180D4: .4byte 0x0000ffff _081180D8: .4byte gSpriteTemplate_83FA2B0 _081180DC: .4byte gSharedMem + 0x19000 _081180E0: .4byte gSprites _081180E4: .4byte gSpriteTemplate_83FA2C8 _081180E8: .4byte gSpriteTemplate_83FA2E0 _081180EC: .4byte gSpriteTemplate_83FA2F8 _081180F0: .4byte gSpriteTemplate_83FA310 thumb_func_end sub_8117F2C thumb_func_start sub_81180F4 sub_81180F4: @ 81180F4 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} lsls r0, 16 lsrs r7, r0, 16 movs r0, 0xFA lsls r0, 2 mov r8, r0 movs r4, 0 movs r6, 0 ldr r1, _081181D4 @ =gSharedMem + 0x19000 mov r9, r1 ldr r0, _081181D8 @ =gSprites mov r10, r0 _08118114: adds r0, r7, 0 mov r1, r8 bl __udivsi3 lsls r0, 24 lsrs r5, r0, 24 adds r3, r6, 0 adds r3, 0x15 mov r0, r9 adds r0, 0x3C adds r0, r3, r0 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 ldr r1, _081181D8 @ =gSprites adds r0, r1 adds r0, 0x3E ldrb r1, [r0] movs r2, 0x4 orrs r1, r2 strb r1, [r0] adds r0, r3, 0 cmp r5, 0 bne _0811814E cmp r4, 0 bne _0811814E cmp r6, 0x3 bne _081181A2 _0811814E: mov r3, r9 adds r3, 0x3C adds r3, r0, r3 ldrb r1, [r3] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 add r0, r10 adds r0, 0x3E ldrb r1, [r0] movs r4, 0x5 negs r4, r4 adds r2, r4, 0 ands r1, r2 strb r1, [r0] ldrb r1, [r3] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 mov r1, r10 adds r3, r0, r1 adds r4, r3, 0 adds r4, 0x40 ldr r1, _081181DC @ =gSprites + 0x8 adds r0, r1 ldr r0, [r0] ldr r1, [r0] lsls r0, r5, 2 adds r0, r1 ldrh r2, [r0] ldrh r4, [r4] adds r2, r4 ldr r4, _081181E0 @ =0x000003ff adds r0, r4, 0 ands r2, r0 ldrh r0, [r3, 0x4] ldr r4, _081181E4 @ =0xfffffc00 adds r1, r4, 0 ands r0, r1 orrs r0, r2 strh r0, [r3, 0x4] movs r4, 0x1 _081181A2: adds r0, r7, 0 mov r1, r8 bl __umodsi3 lsls r0, 16 lsrs r7, r0, 16 mov r0, r8 movs r1, 0xA bl __udivsi3 lsls r0, 16 lsrs r0, 16 mov r8, r0 adds r0, r6, 0x1 lsls r0, 24 lsrs r6, r0, 24 cmp r6, 0x3 bls _08118114 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _081181D4: .4byte gSharedMem + 0x19000 _081181D8: .4byte gSprites _081181DC: .4byte gSprites + 0x8 _081181E0: .4byte 0x000003ff _081181E4: .4byte 0xfffffc00 thumb_func_end sub_81180F4 thumb_func_start sub_81181E8 sub_81181E8: @ 81181E8 push {r4,lr} sub sp, 0x8 lsls r0, 24 lsrs r4, r0, 24 ldr r1, _08118220 @ =gUnknown_083FA608 mov r0, sp movs r2, 0x5 bl memcpy cmp r4, 0x13 bls _08118200 movs r4, 0 _08118200: ldr r3, _08118224 @ =gUnknown_083F8C00 lsls r0, r4, 2 adds r0, r4 lsls r2, r0, 2 adds r0, r2, r3 ldrb r0, [r0, 0x1] lsls r0, 28 lsrs r0, 28 cmp r0, 0x4 beq _08118254 cmp r0, 0x4 bgt _08118228 cmp r0, 0x3 beq _0811822E b _08118290 .align 2, 0 _08118220: .4byte gUnknown_083FA608 _08118224: .4byte gUnknown_083F8C00 _08118228: cmp r0, 0xC beq _08118274 b _08118290 _0811822E: adds r0, r4, 0 movs r1, 0x5 bl __udivsi3 subs r0, 0x1 lsls r0, 24 lsrs r4, r0, 24 ldr r0, _08118250 @ =gSharedMem + 0x19000 adds r0, 0x16 adds r1, r4, r0 ldrb r0, [r1] cmp r0, 0x3 bhi _08118290 ldrb r0, [r1] adds r0, 0x1 b _0811826A .align 2, 0 _08118250: .4byte gSharedMem + 0x19000 _08118254: subs r0, r4, 0x1 lsls r0, 24 lsrs r4, r0, 24 ldr r0, _08118270 @ =gSharedMem + 0x19000 adds r0, 0x12 adds r1, r4, r0 ldrb r0, [r1] cmp r0, 0x2 bhi _08118290 ldrb r0, [r1] adds r0, 0x2 _0811826A: add r0, sp ldrb r0, [r0] b _08118292 .align 2, 0 _08118270: .4byte gSharedMem + 0x19000 _08118274: ldr r1, _0811828C @ =gSharedMem + 0x19000 adds r0, r3, 0 adds r0, 0x8 adds r0, r2, r0 ldr r1, [r1, 0x8] ldr r0, [r0] ands r1, r0 cmp r1, 0 bne _08118290 mov r0, sp ldrb r0, [r0, 0x4] b _08118292 .align 2, 0 _0811828C: .4byte gSharedMem + 0x19000 _08118290: movs r0, 0 _08118292: add sp, 0x8 pop {r4} pop {r1} bx r1 thumb_func_end sub_81181E8 thumb_func_start sub_811829C sub_811829C: @ 811829C push {r4,lr} lsls r0, 24 lsrs r0, 24 ldr r1, _081182E8 @ =gSharedMem + 0x19000 adds r1, 0x55 ldrb r2, [r1] lsls r1, r2, 4 adds r1, r2 lsls r1, 2 ldr r2, _081182EC @ =gSprites adds r4, r1, r2 bl sub_81181E8 adds r3, r4, 0 adds r3, 0x2B strb r0, [r3] adds r2, r4, 0 adds r2, 0x40 ldr r1, [r4, 0x8] ldrb r0, [r3] ldr r1, [r1] lsls r0, 2 adds r0, r1 ldrh r1, [r0] ldrh r2, [r2] adds r1, r2 ldr r2, _081182F0 @ =0x000003ff adds r0, r2, 0 ands r1, r0 ldrh r2, [r4, 0x4] ldr r0, _081182F4 @ =0xfffffc00 ands r0, r2 orrs r0, r1 strh r0, [r4, 0x4] pop {r4} pop {r0} bx r0 .align 2, 0 _081182E8: .4byte gSharedMem + 0x19000 _081182EC: .4byte gSprites _081182F0: .4byte 0x000003ff _081182F4: .4byte 0xfffffc00 thumb_func_end sub_811829C thumb_func_start sub_81182F8 sub_81182F8: @ 81182F8 push {r4-r7,lr} mov r7, r8 push {r7} lsls r0, 24 lsrs r2, r0, 24 movs r5, 0 ldr r0, _08118320 @ =gSharedMem + 0x19000 ldrb r1, [r0, 0x19] adds r3, r0, 0 cmp r1, 0x1 bne _08118310 movs r5, 0x2 _08118310: cmp r2, 0x6 bls _08118316 b _08118464 _08118316: lsls r0, r2, 2 ldr r1, _08118324 @ =_08118328 adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _08118320: .4byte gSharedMem + 0x19000 _08118324: .4byte _08118328 .align 2, 0 _08118328: .4byte _08118464 .4byte _08118420 .4byte _081183F8 .4byte _081183EC .4byte _081183C4 .4byte _081183B8 .4byte _08118344 _08118344: movs r4, 0 ldr r5, _081183A8 @ =gSprites ldr r0, _081183AC @ =gSharedMem + 0x1903C mov r8, r0 movs r2, 0x5 negs r2, r2 mov r12, r2 adds r6, r5, 0 adds r6, 0x8 ldr r7, _081183B0 @ =0xfffffc00 _08118358: adds r3, r4, 0 adds r3, 0x1A add r3, r8 ldrb r0, [r3] lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r1, r5 adds r1, 0x3E ldrb r2, [r1] mov r0, r12 ands r0, r2 strb r0, [r1] ldrb r1, [r3] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r3, r0, r5 adds r2, r3, 0 adds r2, 0x40 adds r0, r6 ldr r0, [r0] ldr r0, [r0] ldrh r1, [r0] ldrh r2, [r2] adds r1, r2 ldr r2, _081183B4 @ =0x000003ff adds r0, r2, 0 ands r1, r0 ldrh r2, [r3, 0x4] adds r0, r7, 0 ands r0, r2 orrs r0, r1 strh r0, [r3, 0x4] adds r0, r4, 0x1 lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0x2 bls _08118358 b _081184B2 .align 2, 0 _081183A8: .4byte gSprites _081183AC: .4byte gSharedMem + 0x1903C _081183B0: .4byte 0xfffffc00 _081183B4: .4byte 0x000003ff _081183B8: ldr r2, _081183C0 @ =gSprites adds r0, r3, 0 adds r0, 0x58 b _08118426 .align 2, 0 _081183C0: .4byte gSprites _081183C4: ldr r2, _081183E8 @ =gSprites adds r0, r3, 0 adds r0, 0x58 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r3, r0, r2 adds r4, r3, 0 adds r4, 0x40 adds r2, 0x8 adds r0, r2 ldr r0, [r0] ldr r1, [r0] lsls r0, r5, 2 adds r0, r1 ldrh r1, [r0, 0x8] b _08118442 .align 2, 0 _081183E8: .4byte gSprites _081183EC: ldr r2, _081183F4 @ =gSprites adds r0, r3, 0 adds r0, 0x57 b _08118426 .align 2, 0 _081183F4: .4byte gSprites _081183F8: ldr r2, _0811841C @ =gSprites adds r0, r3, 0 adds r0, 0x57 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r3, r0, r2 adds r4, r3, 0 adds r4, 0x40 adds r2, 0x8 adds r0, r2 ldr r0, [r0] ldr r1, [r0] lsls r0, r5, 2 adds r0, r1 ldrh r1, [r0, 0x8] b _08118442 .align 2, 0 _0811841C: .4byte gSprites _08118420: ldr r2, _08118458 @ =gSprites adds r0, r3, 0 adds r0, 0x56 _08118426: ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r3, r0, r2 adds r4, r3, 0 adds r4, 0x40 adds r2, 0x8 adds r0, r2 ldr r0, [r0] ldr r1, [r0] lsls r0, r5, 2 adds r0, r1 ldrh r1, [r0, 0x4] _08118442: ldrh r4, [r4] adds r1, r4 ldr r2, _0811845C @ =0x000003ff adds r0, r2, 0 ands r1, r0 ldrh r2, [r3, 0x4] ldr r0, _08118460 @ =0xfffffc00 ands r0, r2 orrs r0, r1 strh r0, [r3, 0x4] b _081184B2 .align 2, 0 _08118458: .4byte gSprites _0811845C: .4byte 0x000003ff _08118460: .4byte 0xfffffc00 _08118464: movs r4, 0 lsls r6, r5, 2 ldr r5, _081184BC @ =gSprites ldr r0, _081184C0 @ =gSharedMem + 0x1903C mov r8, r0 adds r7, r5, 0 adds r7, 0x8 ldr r2, _081184C4 @ =0xfffffc00 mov r12, r2 _08118476: adds r0, r4, 0 adds r0, 0x1A add r0, r8 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r3, r0, r5 adds r2, r3, 0 adds r2, 0x40 adds r0, r7 ldr r0, [r0] ldr r0, [r0] adds r0, r6, r0 ldrh r1, [r0, 0x8] ldrh r2, [r2] adds r1, r2 ldr r2, _081184C8 @ =0x000003ff adds r0, r2, 0 ands r1, r0 ldrh r2, [r3, 0x4] mov r0, r12 ands r0, r2 orrs r0, r1 strh r0, [r3, 0x4] adds r0, r4, 0x1 lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0x2 bls _08118476 _081184B2: pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _081184BC: .4byte gSprites _081184C0: .4byte gSharedMem + 0x1903C _081184C4: .4byte 0xfffffc00 _081184C8: .4byte 0x000003ff thumb_func_end sub_81182F8 thumb_func_start sub_81184CC sub_81184CC: @ 81184CC ldr r1, _081184D4 @ =gSharedMem + 0x19000 ldrh r1, [r1, 0x26] strh r1, [r0, 0x24] bx lr .align 2, 0 _081184D4: .4byte gSharedMem + 0x19000 thumb_func_end sub_81184CC thumb_func_start sub_81184D8 sub_81184D8: @ 81184D8 push {r4,r5,lr} sub sp, 0x8 ldr r4, _08118544 @ =gUnknown_083FA42C ldr r0, [r4] ldr r5, _08118548 @ =gSharedMem adds r1, r5, 0 bl LZ77UnCompWram str r5, [sp] ldrh r1, [r4, 0x6] lsls r1, 16 ldrh r0, [r4, 0x4] orrs r0, r1 str r0, [sp, 0x4] mov r0, sp bl LoadSpriteSheet ldr r0, _0811854C @ =gSpriteTemplate_83FA434 movs r1, 0x74 movs r2, 0x50 movs r3, 0x51 bl CreateSprite lsls r0, 24 lsrs r0, 24 ldr r2, _08118550 @ =gSprites lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r1, r2 movs r0, 0xC8 lsls r0, 9 adds r5, r0 ldrh r0, [r5, 0x24] movs r2, 0 strh r0, [r1, 0x2E] strh r2, [r1, 0x30] adds r3, r1, 0 adds r3, 0x2C ldrb r0, [r3] movs r2, 0x40 orrs r0, r2 movs r2, 0x80 orrs r0, r2 strb r0, [r3] adds r1, 0x3E ldrb r0, [r1] movs r2, 0x2 orrs r0, r2 strb r0, [r1] add sp, 0x8 pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08118544: .4byte gUnknown_083FA42C _08118548: .4byte gSharedMem _0811854C: .4byte gSpriteTemplate_83FA434 _08118550: .4byte gSprites thumb_func_end sub_81184D8 thumb_func_start sub_8118554 sub_8118554: @ 8118554 ldrb r0, [r0, 0x3] lsls r0, 26 lsrs r0, 27 ldr r1, _08118574 @ =gOamMatrices lsls r0, 3 adds r0, r1 ldr r2, _08118578 @ =gSharedMem + 0x19000 ldrh r1, [r2, 0x2C] strh r1, [r0, 0x6] ldrh r1, [r2, 0x2C] strh r1, [r0] ldrh r1, [r2, 0x2E] strh r1, [r0, 0x2] ldrh r1, [r2, 0x30] strh r1, [r0, 0x4] bx lr .align 2, 0 _08118574: .4byte gOamMatrices _08118578: .4byte gSharedMem + 0x19000 thumb_func_end sub_8118554 thumb_func_start sub_811857C sub_811857C: @ 811857C push {r4-r6,lr} movs r4, 0 ldr r6, _081185DC @ =gSharedMem + 0x1903C ldr r5, _081185E0 @ =gSprites _08118584: movs r3, 0x39 subs r3, r4 lsls r3, 24 lsrs r3, 24 ldr r0, _081185E4 @ =gSpriteTemplate_83FA40C movs r1, 0x74 movs r2, 0x50 bl CreateSprite adds r3, r4, r6 strb r0, [r3] lsls r0, 24 lsrs r0, 24 cmp r0, 0x40 beq _081185CA ldrb r1, [r3] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r5 adds r0, 0x3E ldrb r1, [r0] movs r2, 0x4 orrs r1, r2 strb r1, [r0] ldrb r1, [r3] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r5 adds r0, 0x3E ldrb r1, [r0] movs r2, 0x2 orrs r1, r2 strb r1, [r0] _081185CA: adds r0, r4, 0x1 lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0x5 bls _08118584 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _081185DC: .4byte gSharedMem + 0x1903C _081185E0: .4byte gSprites _081185E4: .4byte gSpriteTemplate_83FA40C thumb_func_end sub_811857C thumb_func_start sub_81185E8 sub_81185E8: @ 81185E8 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} ldr r0, _08118660 @ =gSharedMem + 0x19000 adds r0, 0x3C ldrb r5, [r0] movs r6, 0 ldr r7, _08118664 @ =gSprites movs r0, 0x1C adds r0, r7 mov r10, r0 movs r1, 0x2E adds r1, r7 mov r9, r1 mov r8, r6 _0811860A: lsls r4, r5, 4 adds r4, r5 lsls r4, 2 adds r0, r4, r7 adds r3, r0, 0 adds r3, 0x3E ldrb r1, [r3] movs r2, 0x4 orrs r1, r2 strb r1, [r3] mov r1, r10 adds r2, r4, r1 ldr r1, _08118668 @ =SpriteCallbackDummy str r1, [r2] movs r1, 0 bl StartSpriteAnim movs r1, 0 adds r2, r5, 0x1 adds r3, r6, 0x1 _08118632: lsls r0, r1, 1 adds r0, r4 add r0, r9 mov r5, r8 strh r5, [r0] adds r0, r1, 0x1 lsls r0, 24 lsrs r1, r0, 24 cmp r1, 0x7 bls _08118632 lsls r0, r2, 24 lsrs r5, r0, 24 lsls r0, r3, 24 lsrs r6, r0, 24 cmp r6, 0x5 bls _0811860A pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08118660: .4byte gSharedMem + 0x19000 _08118664: .4byte gSprites _08118668: .4byte SpriteCallbackDummy thumb_func_end sub_81185E8 thumb_func_start sub_811866C sub_811866C: @ 811866C push {r4,r5,lr} adds r3, r0, 0 ldr r0, _0811869C @ =gSharedMem + 0x19000 ldrh r4, [r0, 0x24] movs r2, 0x24 ldrsh r1, [r0, r2] ldrh r2, [r3, 0x34] movs r5, 0x34 ldrsh r0, [r3, r5] cmp r1, r0 ble _081186A8 movs r1, 0xB4 lsls r1, 1 adds r0, r2, r1 subs r2, r0, r4 strh r2, [r3, 0x3A] lsls r1, r2, 16 ldr r0, _081186A0 @ =0x01670000 cmp r1, r0 ble _081186AC ldr r5, _081186A4 @ =0xfffffe98 adds r0, r2, r5 b _081186AA .align 2, 0 _0811869C: .4byte gSharedMem + 0x19000 _081186A0: .4byte 0x01670000 _081186A4: .4byte 0xfffffe98 _081186A8: subs r0, r2, r4 _081186AA: strh r0, [r3, 0x3A] _081186AC: movs r1, 0x3A ldrsh r0, [r3, r1] pop {r4,r5} pop {r1} bx r1 thumb_func_end sub_811866C thumb_func_start sub_81186B8 sub_81186B8: @ 81186B8 push {r4,lr} bl sub_811866C ldr r4, _081186E0 @ =gSharedMem + 0x19000 lsls r0, 16 asrs r0, 16 bl __floatsisf ldr r1, _081186E4 @ =0x41f00000 bl __divsf3 bl __fixunssfsi adds r4, 0x7E strb r0, [r4] ldrb r0, [r4] pop {r4} pop {r1} bx r1 .align 2, 0 _081186E0: .4byte gSharedMem + 0x19000 _081186E4: .4byte 0x41f00000 thumb_func_end sub_81186B8 thumb_func_start sub_81186E8 sub_81186E8: @ 81186E8 push {r4,lr} adds r4, r0, 0 bl sub_811866C lsls r0, 16 asrs r0, 16 movs r1, 0x1E bl __modsi3 lsls r0, 16 asrs r1, r0, 16 cmp r1, 0xE bne _08118708 movs r0, 0 strh r0, [r4, 0x32] b _0811871E _08118708: cmp r1, 0xD bgt _08118710 movs r0, 0xE b _08118712 _08118710: movs r0, 0x2B _08118712: subs r0, r1 lsls r0, 16 lsrs r0, 16 strh r0, [r4, 0x32] lsls r0, 16 asrs r0, 16 _0811871E: pop {r4} pop {r1} bx r1 thumb_func_end sub_81186E8 thumb_func_start sub_8118724 sub_8118724: @ 8118724 push {r4-r7,lr} mov r7, r8 push {r7} adds r6, r0, 0 ldr r5, _08118770 @ =gSharedMem + 0x19000 adds r4, r5, 0 adds r4, 0x8C adds r1, r5, 0 adds r1, 0x90 ldr r0, [r4] ldr r1, [r1] bl __addsf3 adds r1, r0, 0 str r1, [r4] movs r0, 0x88 adds r0, r5 mov r8, r0 ldr r0, [r0] bl __addsf3 adds r4, r0, 0 mov r1, r8 str r4, [r1] ldr r7, _08118774 @ =0x43b40000 adds r1, r7, 0 bl __gesf2 cmp r0, 0 blt _08118778 adds r0, r4, 0 adds r1, r7, 0 bl __subsf3 mov r2, r8 str r0, [r2] b _08118790 .align 2, 0 _08118770: .4byte gSharedMem + 0x19000 _08118774: .4byte 0x43b40000 _08118778: ldr r1, _08118824 @ =0x00000000 adds r0, r4, 0 bl __ltsf2 cmp r0, 0 bge _08118790 adds r0, r4, 0 adds r1, r7, 0 bl __addsf3 mov r1, r8 str r0, [r1] _08118790: adds r0, r5, 0 adds r0, 0x88 ldr r0, [r0] bl __fixsfsi strh r0, [r6, 0x34] adds r4, r5, 0 adds r4, 0x98 adds r1, r5, 0 adds r1, 0x9C ldr r0, [r4] ldr r1, [r1] bl __addsf3 adds r1, r0, 0 str r1, [r4] subs r4, 0x4 ldr r0, [r4] bl __addsf3 str r0, [r4] bl __fixsfsi strh r0, [r6, 0x36] ldrh r0, [r6, 0x34] bl Sin2 adds r4, r0, 0 lsls r4, 16 lsrs r4, 16 ldrh r0, [r6, 0x34] bl Cos2 lsls r4, 16 asrs r4, 16 movs r2, 0x36 ldrsh r1, [r6, r2] muls r1, r4 asrs r1, 12 strh r1, [r6, 0x24] lsls r0, 16 asrs r0, 16 negs r0, r0 movs r2, 0x36 ldrsh r1, [r6, r2] muls r0, r1 asrs r0, 12 strh r0, [r6, 0x26] bl IsSEPlaying lsls r0, 24 cmp r0, 0 beq _08118818 ldr r0, _08118828 @ =gMPlay_SE1 ldr r4, _0811882C @ =0x0000ffff ldrh r2, [r6, 0x24] lsls r2, 24 asrs r2, 24 adds r1, r4, 0 bl m4aMPlayPanpotControl ldr r0, _08118830 @ =gMPlay_SE2 ldrh r2, [r6, 0x24] lsls r2, 24 asrs r2, 24 adds r1, r4, 0 bl m4aMPlayPanpotControl _08118818: pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08118824: .4byte 0x00000000 _08118828: .4byte gMPlay_SE1 _0811882C: .4byte 0x0000ffff _08118830: .4byte gMPlay_SE2 thumb_func_end sub_8118724 thumb_func_start sub_8118834 sub_8118834: @ 8118834 push {r4,r5,lr} adds r5, r0, 0 ldr r1, _0811888C @ =gSharedMem + 0x19000 ldrh r0, [r5, 0x3A] ldrh r1, [r1, 0x24] adds r2, r0, r1 strh r2, [r5, 0x34] lsls r1, r2, 16 ldr r0, _08118890 @ =0x01670000 cmp r1, r0 ble _08118850 ldr r1, _08118894 @ =0xfffffe98 adds r0, r2, r1 strh r0, [r5, 0x34] _08118850: ldrh r0, [r5, 0x34] bl Sin2 adds r4, r0, 0 lsls r4, 16 lsrs r4, 16 ldrh r0, [r5, 0x34] bl Cos2 lsls r4, 16 asrs r4, 16 movs r2, 0x36 ldrsh r1, [r5, r2] muls r1, r4 asrs r1, 12 strh r1, [r5, 0x24] lsls r0, 16 asrs r0, 16 negs r0, r0 movs r2, 0x36 ldrsh r1, [r5, r2] muls r0, r1 ldr r1, _08118898 @ =gSpriteCoordOffsetY asrs r0, 12 ldrh r1, [r1] adds r0, r1 strh r0, [r5, 0x26] pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0811888C: .4byte gSharedMem + 0x19000 _08118890: .4byte 0x01670000 _08118894: .4byte 0xfffffe98 _08118898: .4byte gSpriteCoordOffsetY thumb_func_end sub_8118834 thumb_func_start sub_811889C sub_811889C: @ 811889C push {r4-r6,lr} adds r5, r0, 0 bl sub_8118724 ldrh r0, [r5, 0x32] adds r0, 0x1 strh r0, [r5, 0x32] ldrh r0, [r5, 0x36] adds r0, 0x84 lsls r0, 16 lsrs r0, 16 cmp r0, 0xD4 bls _081188C2 adds r2, r5, 0 adds r2, 0x3E ldrb r0, [r2] movs r1, 0x4 orrs r0, r1 b _081188CE _081188C2: adds r2, r5, 0 adds r2, 0x3E ldrb r1, [r2] movs r0, 0x5 negs r0, r0 ands r0, r1 _081188CE: strb r0, [r2] movs r1, 0x32 ldrsh r0, [r5, r1] cmp r0, 0x1D ble _0811898E movs r1, 0x2E ldrsh r0, [r5, r1] cmp r0, 0 bne _08118908 ldr r6, _08118900 @ =gSharedMem + 0x19000 adds r4, r6, 0 adds r4, 0x94 adds r0, r6, 0 adds r0, 0xA0 ldr r0, [r0] ldr r1, _08118904 @ =0x40000000 bl __subsf3 adds r1, r0, 0 ldr r0, [r4] bl __lesf2 cmp r0, 0 bgt _0811898E b _08118926 .align 2, 0 _08118900: .4byte gSharedMem + 0x19000 _08118904: .4byte 0x40000000 _08118908: ldr r6, _08118994 @ =gSharedMem + 0x19000 adds r4, r6, 0 adds r4, 0x94 adds r0, r6, 0 adds r0, 0xA0 ldr r0, [r0] ldr r1, _08118998 @ =0x40000000 bl __subsf3 adds r1, r0, 0 ldr r0, [r4] bl __gesf2 cmp r0, 0 blt _0811898E _08118926: adds r1, r6, 0 adds r1, 0x7D movs r0, 0xFF strb r0, [r1] ldrb r1, [r6, 0x3] movs r0, 0x7F ands r0, r1 strb r0, [r6, 0x3] adds r0, r5, 0 adds r0, 0x2B ldrb r1, [r0] adds r1, 0x3 lsls r1, 24 lsrs r1, 24 adds r0, r5, 0 bl StartSpriteAnim adds r0, r5, 0 bl sub_81186B8 movs r0, 0x1E strh r0, [r5, 0x36] adds r0, r5, 0 bl sub_811866C movs r1, 0x3A ldrsh r0, [r5, r1] movs r1, 0x1E bl __divsi3 lsls r0, 16 asrs r0, 16 lsls r1, r0, 4 subs r1, r0 lsls r1, 1 adds r1, 0xF strh r1, [r5, 0x3A] ldr r0, _0811899C @ =sub_8118834 str r0, [r5, 0x1C] movs r0, 0x47 bl m4aSongNumStartOrChange adds r2, r6, 0 adds r2, 0x9C adds r1, r6, 0 adds r1, 0x98 ldr r0, _081189A0 @ =0x00000000 str r0, [r1] str r0, [r2] subs r1, 0xC ldr r0, _081189A4 @ =0xbf800000 str r0, [r1] _0811898E: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _08118994: .4byte gSharedMem + 0x19000 _08118998: .4byte 0x40000000 _0811899C: .4byte sub_8118834 _081189A0: .4byte 0x00000000 _081189A4: .4byte 0xbf800000 thumb_func_end sub_811889C thumb_func_start sub_81189A8 sub_81189A8: @ 81189A8 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} adds r7, r0, 0 bl sub_8118724 movs r1, 0x34 ldrsh r0, [r7, r1] cmp r0, 0 beq _081189C6 cmp r0, 0xB4 beq _08118A2C b _08118B0C _081189C6: movs r1, 0x2E ldrsh r0, [r7, r1] cmp r0, 0x1 bne _081189D0 b _08118B0C _081189D0: movs r1, 0x3C ldrsh r0, [r7, r1] bl __floatsisf mov r8, r0 ldr r0, _08118A24 @ =gUnknown_083F8DF4 mov r9, r0 ldr r1, _08118A28 @ =gSharedMem + 0x19000 mov r10, r1 ldrb r4, [r1, 0x4] lsls r4, 30 lsrs r0, r4, 25 add r0, r9 ldrb r0, [r0, 0x1] bl __floatsisf adds r1, r0, 0 mov r0, r8 bl __mulsf3 adds r6, r0, 0 lsrs r0, r4, 25 add r0, r9 ldrb r0, [r0, 0x2] subs r0, 0x1 bl __floatsisf adds r1, r0, 0 adds r0, r6, 0 bl __addsf3 adds r5, r0, 0 lsrs r4, 25 add r4, r9 ldrh r0, [r4, 0xC] bl __floatsisf adds r1, r0, 0 mov r0, r8 bl __divsf3 b _08118A8A .align 2, 0 _08118A24: .4byte gUnknown_083F8DF4 _08118A28: .4byte gSharedMem + 0x19000 _08118A2C: movs r1, 0x2E ldrsh r0, [r7, r1] cmp r0, 0 beq _08118B0C movs r1, 0x3C ldrsh r0, [r7, r1] bl __floatsisf mov r8, r0 ldr r0, _08118B1C @ =gUnknown_083F8DF4 mov r9, r0 ldr r1, _08118B20 @ =gSharedMem + 0x19000 mov r10, r1 ldrb r4, [r1, 0x4] lsls r4, 30 lsrs r0, r4, 25 add r0, r9 ldrb r0, [r0, 0x1] bl __floatsisf adds r1, r0, 0 mov r0, r8 bl __mulsf3 adds r6, r0, 0 lsrs r0, r4, 25 add r0, r9 ldrb r0, [r0, 0x2] subs r0, 0x1 bl __floatsisf adds r1, r0, 0 adds r0, r6, 0 bl __addsf3 adds r5, r0, 0 lsrs r4, 25 add r4, r9 ldrh r0, [r4, 0xC] bl __floatsisf adds r1, r0, 0 mov r0, r8 bl __divsf3 bl __negsf2 _08118A8A: adds r2, r0, 0 mov r6, r10 adds r1, r6, 0 adds r1, 0xA0 adds r0, r6, 0 adds r0, 0x94 ldr r0, [r0] str r0, [r1] adds r0, r6, 0 adds r0, 0x98 str r2, [r0] movs r0, 0x9C adds r0, r6 mov r8, r0 adds r0, r2, 0 adds r1, r2, 0 bl __addsf3 adds r1, r5, 0 bl __divsf3 adds r4, r0, 0 adds r0, r5, 0 adds r1, r5, 0 bl __mulsf3 adds r1, r0, 0 ldr r0, _08118B24 @ =0x40000000 bl __divsf3 adds r1, r0, 0 adds r0, r4, 0 bl __addsf3 bl __negsf2 mov r1, r8 str r0, [r1] adds r1, r6, 0 adds r1, 0x8C ldr r0, _08118B28 @ =0x00000000 str r0, [r1] adds r2, r7, 0 adds r2, 0x2C ldrb r1, [r2] movs r0, 0x41 negs r0, r0 ands r0, r1 strb r0, [r2] adds r0, r7, 0 adds r0, 0x2A movs r2, 0 strb r2, [r0] adds r3, r7, 0 adds r3, 0x3F ldrb r0, [r3] movs r1, 0x4 orrs r0, r1 movs r1, 0x11 negs r1, r1 ands r0, r1 strb r0, [r3] ldr r0, _08118B2C @ =sub_811889C str r0, [r7, 0x1C] strh r2, [r7, 0x32] _08118B0C: pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08118B1C: .4byte gUnknown_083F8DF4 _08118B20: .4byte gSharedMem + 0x19000 _08118B24: .4byte 0x40000000 _08118B28: .4byte 0x00000000 _08118B2C: .4byte sub_811889C thumb_func_end sub_81189A8 thumb_func_start sub_8118B30 sub_8118B30: @ 8118B30 push {r4,r5,lr} adds r5, r0, 0 movs r1, 0x32 ldrsh r0, [r5, r1] bl __floatsisf adds r4, r0, 0 ldr r1, _08118BCC @ =0x3d4ccccd bl __mulsf3 adds r1, r4, 0 bl __mulsf3 bl __fixsfsi adds r1, r0, 0 subs r1, 0x2D strh r1, [r5, 0x26] ldrh r0, [r5, 0x32] adds r0, 0x1 strh r0, [r5, 0x32] lsls r0, 16 asrs r0, 16 cmp r0, 0x1D ble _08118BC6 lsls r0, r1, 16 cmp r0, 0 blt _08118BC6 ldr r4, _08118BD0 @ =gSharedMem + 0x19000 adds r1, r4, 0 adds r1, 0x7D movs r0, 0xFF strb r0, [r1] ldrb r1, [r4, 0x3] movs r0, 0x7F ands r0, r1 strb r0, [r4, 0x3] adds r0, r5, 0 adds r0, 0x2B ldrb r1, [r0] adds r1, 0x3 lsls r1, 24 lsrs r1, 24 adds r0, r5, 0 bl StartSpriteAnim adds r0, r5, 0 bl sub_81186B8 movs r0, 0x1E strh r0, [r5, 0x36] adds r0, r5, 0 bl sub_811866C movs r1, 0x3A ldrsh r0, [r5, r1] movs r1, 0x1E bl __divsi3 lsls r0, 16 asrs r0, 16 lsls r1, r0, 4 subs r1, r0 lsls r1, 1 adds r1, 0xF strh r1, [r5, 0x3A] ldr r0, _08118BD4 @ =sub_8118834 str r0, [r5, 0x1C] movs r0, 0x47 bl m4aSongNumStartOrChange ldrb r0, [r4, 0x3] movs r1, 0x40 orrs r0, r1 strb r0, [r4, 0x3] _08118BC6: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08118BCC: .4byte 0x3d4ccccd _08118BD0: .4byte gSharedMem + 0x19000 _08118BD4: .4byte sub_8118834 thumb_func_end sub_8118B30 thumb_func_start sub_8118BD8 sub_8118BD8: @ 8118BD8 push {r4,lr} adds r3, r0, 0 ldrh r0, [r3, 0x32] adds r1, r0, 0x1 strh r1, [r3, 0x32] lsls r0, 16 asrs r0, 16 cmp r0, 0x2C bgt _08118C1C ldrh r4, [r3, 0x26] subs r0, r4, 0x1 strh r0, [r3, 0x26] lsls r0, r1, 16 asrs r0, 16 cmp r0, 0x2D bne _08118CA2 ldr r2, _08118C14 @ =gSprites ldr r0, _08118C18 @ =gSharedMem + 0x19000 adds r0, 0x73 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 adds r0, 0x2B ldrb r0, [r0] cmp r0, 0x1 bne _08118CA2 strh r4, [r3, 0x26] b _08118CA2 .align 2, 0 _08118C14: .4byte gSprites _08118C18: .4byte gSharedMem + 0x19000 _08118C1C: lsls r0, r1, 16 asrs r0, 16 movs r2, 0x3C ldrsh r1, [r3, r2] cmp r0, r1 bge _08118C68 ldr r2, _08118C58 @ =gSprites ldr r0, _08118C5C @ =gSharedMem + 0x19000 adds r0, 0x73 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r1, r0, r2 adds r0, r1, 0 adds r0, 0x2C ldrb r0, [r0] lsls r0, 26 cmp r0, 0 bne _08118CA2 adds r0, r1, 0 adds r0, 0x2B ldrb r0, [r0] cmp r0, 0x1 bne _08118C60 ldrh r0, [r3, 0x26] adds r0, 0x1 strh r0, [r3, 0x26] b _08118CA2 .align 2, 0 _08118C58: .4byte gSprites _08118C5C: .4byte gSharedMem + 0x19000 _08118C60: ldrh r0, [r3, 0x26] subs r0, 0x1 strh r0, [r3, 0x26] b _08118CA2 _08118C68: adds r2, r3, 0 adds r2, 0x2C ldrb r1, [r2] movs r0, 0x41 negs r0, r0 ands r0, r1 strb r0, [r2] adds r1, r3, 0 adds r1, 0x2A movs r2, 0 movs r0, 0x1 strb r0, [r1] movs r0, 0x3F adds r0, r3 mov r12, r0 ldrb r0, [r0] movs r1, 0x4 orrs r0, r1 movs r1, 0x11 negs r1, r1 ands r0, r1 mov r1, r12 strb r0, [r1] strh r2, [r3, 0x32] ldr r0, _08118CA8 @ =sub_8118B30 str r0, [r3, 0x1C] movs r0, 0x3D bl m4aSongNumStart _08118CA2: pop {r4} pop {r0} bx r0 .align 2, 0 _08118CA8: .4byte sub_8118B30 thumb_func_end sub_8118BD8 thumb_func_start sub_8118CAC sub_8118CAC: @ 8118CAC push {r4,lr} adds r4, r0, 0 bl sub_8118724 movs r0, 0x34 ldrsh r1, [r4, r0] cmp r1, 0x5A beq _08118CC6 movs r0, 0x87 lsls r0, 1 cmp r1, r0 beq _08118CD0 b _08118CE0 _08118CC6: movs r1, 0x2E ldrsh r0, [r4, r1] cmp r0, 0x1 beq _08118CE0 b _08118CD8 _08118CD0: movs r1, 0x2E ldrsh r0, [r4, r1] cmp r0, 0 beq _08118CE0 _08118CD8: ldr r0, _08118CE8 @ =sub_8118BD8 str r0, [r4, 0x1C] movs r0, 0 strh r0, [r4, 0x32] _08118CE0: pop {r4} pop {r0} bx r0 .align 2, 0 _08118CE8: .4byte sub_8118BD8 thumb_func_end sub_8118CAC thumb_func_start sub_8118CEC sub_8118CEC: @ 8118CEC push {r4,lr} adds r4, r0, 0 bl sub_8118724 ldr r0, _08118D10 @ =gSharedMem + 0x19000 ldrb r0, [r0, 0x3] lsls r0, 27 lsrs r0, 27 cmp r0, 0 beq _08118D04 cmp r0, 0x1 beq _08118D18 _08118D04: adds r0, r4, 0 bl sub_8119224 ldr r0, _08118D14 @ =sub_81189A8 b _08118D20 .align 2, 0 _08118D10: .4byte gSharedMem + 0x19000 _08118D14: .4byte sub_81189A8 _08118D18: adds r0, r4, 0 bl sub_81193D4 ldr r0, _08118D28 @ =sub_8118CAC _08118D20: str r0, [r4, 0x1C] pop {r4} pop {r0} bx r0 .align 2, 0 _08118D28: .4byte sub_8118CAC thumb_func_end sub_8118CEC thumb_func_start sub_8118D2C sub_8118D2C: @ 8118D2C push {r4,r5,lr} adds r5, r0, 0 bl sub_8118724 ldrh r0, [r5, 0x32] subs r0, 0x1 strh r0, [r5, 0x32] lsls r0, 16 asrs r0, 16 cmp r0, 0xF bne _08118D50 ldr r4, _08118DB8 @ =gSharedMem + 0x19000 adds r4, 0x98 ldr r0, [r4] ldr r1, _08118DBC @ =0xbf800000 bl __mulsf3 str r0, [r4] _08118D50: movs r1, 0x32 ldrsh r0, [r5, r1] cmp r0, 0 bne _08118DDC movs r1, 0x2E ldrsh r0, [r5, r1] cmp r0, 0 bne _08118DC4 ldr r1, _08118DB8 @ =gSharedMem + 0x19000 adds r2, r1, 0 adds r2, 0x7D movs r0, 0xFF strb r0, [r2] ldrb r2, [r1, 0x3] movs r0, 0x7F ands r0, r2 strb r0, [r1, 0x3] adds r0, r5, 0 adds r0, 0x2B ldrb r1, [r0] adds r1, 0x3 lsls r1, 24 lsrs r1, 24 adds r0, r5, 0 bl StartSpriteAnim adds r0, r5, 0 bl sub_81186B8 movs r0, 0x1E strh r0, [r5, 0x36] adds r0, r5, 0 bl sub_811866C movs r1, 0x3A ldrsh r0, [r5, r1] movs r1, 0x1E bl __divsi3 lsls r0, 16 asrs r0, 16 lsls r1, r0, 4 subs r1, r0 lsls r1, 1 adds r1, 0xF strh r1, [r5, 0x3A] ldr r0, _08118DC0 @ =sub_8118834 str r0, [r5, 0x1C] movs r0, 0x47 bl m4aSongNumStartOrChange b _08118DDC .align 2, 0 _08118DB8: .4byte gSharedMem + 0x19000 _08118DBC: .4byte 0xbf800000 _08118DC0: .4byte sub_8118834 _08118DC4: adds r0, r5, 0 adds r0, 0x2C ldrb r1, [r0] movs r2, 0x40 orrs r1, r2 strb r1, [r0] movs r0, 0x38 bl m4aSongNumStart adds r0, r5, 0 bl sub_811952C _08118DDC: pop {r4,r5} pop {r0} bx r0 thumb_func_end sub_8118D2C thumb_func_start sub_8118DE4 sub_8118DE4: @ 8118DE4 push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} adds r7, r0, 0 bl sub_8118724 movs r0, 0 strh r0, [r7, 0x32] adds r0, r7, 0 bl sub_81186B8 ldr r1, _08118E70 @ =gUnknown_083F8D90 ldr r6, _08118E74 @ =gSharedMem + 0x19000 movs r0, 0x7E adds r0, r6 mov r8, r0 ldrb r0, [r0] lsls r0, 3 adds r1, 0x4 adds r0, r1 ldr r0, [r0] ldr r1, [r6, 0x8] ands r0, r1 cmp r0, 0 bne _08118E7C adds r1, r6, 0 adds r1, 0x7D movs r0, 0xFF strb r0, [r1] ldrb r1, [r6, 0x3] movs r0, 0x7F ands r0, r1 strb r0, [r6, 0x3] adds r0, r7, 0 adds r0, 0x2B ldrb r1, [r0] adds r1, 0x3 lsls r1, 24 lsrs r1, 24 adds r0, r7, 0 bl StartSpriteAnim adds r0, r7, 0 bl sub_81186B8 movs r0, 0x1E strh r0, [r7, 0x36] adds r0, r7, 0 bl sub_811866C movs r1, 0x3A ldrsh r0, [r7, r1] movs r1, 0x1E bl __divsi3 lsls r0, 16 asrs r0, 16 lsls r1, r0, 4 subs r1, r0 lsls r1, 1 adds r1, 0xF strh r1, [r7, 0x3A] ldr r0, _08118E78 @ =sub_8118834 str r0, [r7, 0x1C] movs r0, 0x47 bl m4aSongNumStartOrChange b _08118F74 .align 2, 0 _08118E70: .4byte gUnknown_083F8D90 _08118E74: .4byte gSharedMem + 0x19000 _08118E78: .4byte sub_8118834 _08118E7C: movs r0, 0x38 bl m4aSongNumStart bl Random movs r2, 0x1 mov r9, r2 mov r1, r9 ands r1, r0 mov r9, r1 cmp r1, 0 beq _08118EC0 adds r1, r6, 0 adds r1, 0x8C ldr r0, _08118EB8 @ =0x00000000 str r0, [r1] mov r2, r8 ldrb r0, [r2] adds r0, 0x1 movs r1, 0xC bl __modsi3 lsls r1, r0, 24 lsrs r2, r1, 24 adds r1, r6, 0 adds r1, 0x7F strb r0, [r1] ldr r5, _08118EBC @ =gUnknown_083F8DF4 b _08118EF4 .align 2, 0 _08118EB8: .4byte 0x00000000 _08118EBC: .4byte gUnknown_083F8DF4 _08118EC0: adds r4, r6, 0 adds r4, 0x8C ldr r5, _08118F1C @ =gUnknown_083F8DF4 ldrb r0, [r6, 0x4] lsls r0, 30 lsrs r0, 25 adds r1, r5, 0 adds r1, 0x1C adds r0, r1 ldr r1, [r0] adds r0, r1, 0 bl __addsf3 str r0, [r4] mov r0, r8 ldrb r4, [r0] adds r0, r4, 0 adds r0, 0xB movs r1, 0xC bl __modsi3 lsls r0, 24 lsrs r2, r0, 24 adds r0, r6, 0 adds r0, 0x7F strb r4, [r0] _08118EF4: ldr r0, _08118F20 @ =gUnknown_083F8D90 lsls r1, r2, 3 adds r0, 0x4 adds r1, r0 ldr r2, _08118F24 @ =gSharedMem + 0x19000 ldr r1, [r1] ldr r0, [r2, 0x8] ands r1, r0 cmp r1, 0 beq _08118F28 movs r0, 0x1 strh r0, [r7, 0x2E] ldrb r0, [r2, 0x4] lsls r0, 30 lsrs r0, 25 adds r0, r5 ldrb r0, [r0, 0x2] strh r0, [r7, 0x32] b _08118F64 .align 2, 0 _08118F1C: .4byte gUnknown_083F8DF4 _08118F20: .4byte gUnknown_083F8D90 _08118F24: .4byte gSharedMem + 0x19000 _08118F28: strh r1, [r7, 0x2E] ldrb r1, [r2, 0x4] movs r0, 0x3 ands r0, r1 cmp r0, 0 beq _08118F40 lsls r0, r1, 30 lsrs r0, 25 adds r0, r5 ldrb r0, [r0, 0x1] strh r0, [r7, 0x32] b _08118F64 _08118F40: lsls r0, r1, 30 lsrs r0, 25 adds r0, r5 ldrb r0, [r0, 0x2] strh r0, [r7, 0x32] mov r1, r9 cmp r1, 0 beq _08118F5C adds r1, r2, 0 adds r1, 0x8C ldr r0, _08118F58 @ =0x3f000000 b _08118F62 .align 2, 0 _08118F58: .4byte 0x3f000000 _08118F5C: adds r1, r2, 0 adds r1, 0x8C ldr r0, _08118F80 @ =0xbfc00000 _08118F62: str r0, [r1] _08118F64: adds r1, r2, 0 adds r1, 0x98 ldr r0, _08118F84 @ =0x3dae147b str r0, [r1] ldr r0, _08118F88 @ =sub_8118D2C str r0, [r7, 0x1C] movs r0, 0x5 strh r0, [r7, 0x30] _08118F74: pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08118F80: .4byte 0xbfc00000 _08118F84: .4byte 0x3dae147b _08118F88: .4byte sub_8118D2C thumb_func_end sub_8118DE4 thumb_func_start sub_8118F8C sub_8118F8C: @ 8118F8C push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} adds r6, r0, 0 bl sub_8118724 ldr r5, _08119018 @ =gSharedMem + 0x19000 movs r0, 0x8C adds r0, r5 mov r8, r0 ldr r0, [r0] ldr r1, _0811901C @ =0x3f000000 bl __gtsf2 cmp r0, 0 bgt _0811906E adds r0, r6, 0 bl sub_81186B8 adds r0, r6, 0 bl sub_81186E8 lsls r0, 16 cmp r0, 0 bne _08119030 adds r1, r5, 0 adds r1, 0x90 ldr r0, _08119020 @ =0x00000000 str r0, [r1] ldr r1, _08119024 @ =gUnknown_083F8DF4 mov r9, r1 ldrb r0, [r5, 0x4] lsls r7, r0, 30 lsrs r0, r7, 25 add r0, r9 movs r4, 0x3 ldrsb r4, [r0, r4] adds r0, r4, 0 bl __floatsisf adds r5, r0, 0 cmp r4, 0 bge _08118FEC ldr r1, _08119028 @ =0x43800000 bl __addsf3 adds r5, r0, 0 _08118FEC: lsrs r0, r7, 25 add r0, r9 ldrb r0, [r0, 0x4] adds r0, 0x1 bl __floatsisf adds r1, r0, 0 adds r0, r5, 0 bl __divsf3 adds r1, r0, 0 mov r2, r8 ldr r0, [r2] bl __subsf3 mov r1, r8 str r0, [r1] movs r0, 0x4 strh r0, [r6, 0x30] ldr r0, _0811902C @ =sub_8118DE4 str r0, [r6, 0x1C] b _0811906E .align 2, 0 _08119018: .4byte gSharedMem + 0x19000 _0811901C: .4byte 0x3f000000 _08119020: .4byte 0x00000000 _08119024: .4byte gUnknown_083F8DF4 _08119028: .4byte 0x43800000 _0811902C: .4byte sub_8118DE4 _08119030: adds r6, r5, 0 adds r6, 0x90 ldr r0, [r6] ldr r4, _0811907C @ =0x00000000 adds r1, r4, 0 bl __nesf2 cmp r0, 0 beq _0811906E mov r2, r8 ldr r0, [r2] adds r1, r4, 0 bl __ltsf2 cmp r0, 0 bge _0811906E str r4, [r6] mov r0, r8 str r4, [r0] adds r4, r5, 0 adds r4, 0x98 ldr r0, [r4] bl __extendsfdf2 ldr r2, _08119080 @ =0x3ff33333 ldr r3, _08119084 @ =0x33333333 bl __divdf3 bl __truncdfsf2 str r0, [r4] _0811906E: pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0811907C: .4byte 0x00000000 _08119080: .4byte 0x3ff33333 _08119084: .4byte 0x33333333 thumb_func_end sub_8118F8C thumb_func_start sub_8119088 sub_8119088: @ 8119088 push {r4-r7,lr} adds r6, r0, 0 bl sub_8118724 ldr r5, _08119120 @ =gSharedMem + 0x19000 adds r0, r5, 0 adds r0, 0x94 ldr r0, [r0] ldr r1, _08119124 @ =0x42200000 bl __gtsf2 cmp r0, 0 bgt _0811911A adds r7, r5, 0 adds r7, 0x98 adds r0, r5, 0 adds r0, 0x86 movs r1, 0 ldrsh r4, [r0, r1] adds r0, r4, 0 bl __floatsisf adds r2, r0, 0 cmp r4, 0 bge _081190C2 ldr r1, _08119128 @ =0x47800000 bl __addsf3 adds r2, r0, 0 _081190C2: ldr r0, _0811912C @ =0x40800000 adds r1, r2, 0 bl __divsf3 bl __negsf2 str r0, [r7] adds r7, r5, 0 adds r7, 0x90 adds r5, 0x8C adds r0, r4, 0 bl __floatsisf adds r2, r0, 0 cmp r4, 0 bge _081190EA ldr r1, _08119128 @ =0x47800000 bl __addsf3 adds r2, r0, 0 _081190EA: ldr r0, [r5] adds r1, r2, 0 bl __divsf3 bl __negsf2 str r0, [r7] adds r1, r6, 0 adds r1, 0x2A movs r0, 0x2 strb r0, [r1] adds r2, r6, 0 adds r2, 0x3F ldrb r0, [r2] movs r1, 0x4 orrs r0, r1 movs r1, 0x11 negs r1, r1 ands r0, r1 strb r0, [r2] movs r0, 0x3 strh r0, [r6, 0x30] ldr r0, _08119130 @ =sub_8118F8C str r0, [r6, 0x1C] _0811911A: pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08119120: .4byte gSharedMem + 0x19000 _08119124: .4byte 0x42200000 _08119128: .4byte 0x47800000 _0811912C: .4byte 0x40800000 _08119130: .4byte sub_8118F8C thumb_func_end sub_8119088 thumb_func_start sub_8119134 sub_8119134: @ 8119134 push {r4-r7,lr} adds r6, r0, 0 bl sub_8118724 ldr r4, _081191DC @ =gSharedMem + 0x19000 adds r0, r4, 0 adds r0, 0x94 ldr r0, [r0] ldr r1, _081191E0 @ =0x42700000 bl __gtsf2 cmp r0, 0 bgt _081191D4 movs r0, 0x5D bl m4aSongNumStartOrChange adds r7, r4, 0 adds r7, 0x98 adds r0, r4, 0 adds r0, 0x84 movs r1, 0 ldrsh r5, [r0, r1] adds r0, r5, 0 bl __floatsisf adds r2, r0, 0 cmp r5, 0 bge _08119174 ldr r1, _081191E4 @ =0x47800000 bl __addsf3 adds r2, r0, 0 _08119174: ldr r0, _081191E8 @ =0x41a00000 adds r1, r2, 0 bl __divsf3 bl __negsf2 str r0, [r7] adds r7, r4, 0 adds r7, 0x90 adds r0, r4, 0 adds r0, 0x8C ldr r1, [r0] ldr r0, _081191EC @ =0x3f800000 bl __subsf3 adds r4, r0, 0 adds r0, r5, 0 bl __floatsisf adds r2, r0, 0 cmp r5, 0 bge _081191A8 ldr r1, _081191E4 @ =0x47800000 bl __addsf3 adds r2, r0, 0 _081191A8: adds r0, r4, 0 adds r1, r2, 0 bl __divsf3 str r0, [r7] adds r1, r6, 0 adds r1, 0x2A movs r0, 0x1 strb r0, [r1] adds r2, r6, 0 adds r2, 0x3F ldrb r0, [r2] movs r1, 0x4 orrs r0, r1 movs r1, 0x11 negs r1, r1 ands r0, r1 strb r0, [r2] movs r0, 0x2 strh r0, [r6, 0x30] ldr r0, _081191F0 @ =sub_8119088 str r0, [r6, 0x1C] _081191D4: pop {r4-r7} pop {r0} bx r0 .align 2, 0 _081191DC: .4byte gSharedMem + 0x19000 _081191E0: .4byte 0x42700000 _081191E4: .4byte 0x47800000 _081191E8: .4byte 0x41a00000 _081191EC: .4byte 0x3f800000 _081191F0: .4byte sub_8119088 thumb_func_end sub_8119134 thumb_func_start sub_81191F4 sub_81191F4: @ 81191F4 push {r4,lr} adds r4, r0, 0 movs r1, 0 movs r0, 0x1 strh r0, [r4, 0x30] strh r1, [r4, 0x32] adds r0, r4, 0 bl sub_8118724 adds r2, r4, 0 adds r2, 0x3E ldrb r1, [r2] movs r0, 0x5 negs r0, r0 ands r0, r1 strb r0, [r2] ldr r0, _08119220 @ =sub_8119134 str r0, [r4, 0x1C] pop {r4} pop {r0} bx r0 .align 2, 0 _08119220: .4byte sub_8119134 thumb_func_end sub_81191F4 thumb_func_start sub_8119224 sub_8119224: @ 8119224 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x8 adds r7, r0, 0 ldr r1, _081193B8 @ =gUnknown_083FA60E mov r0, sp movs r2, 0x8 bl memcpy ldrh r0, [r7, 0x3C] subs r0, 0x2 lsls r0, 16 lsrs r0, 16 mov r9, r0 ldr r5, _081193BC @ =gSharedMem + 0x19000 ldr r0, _081193C0 @ =gSpriteTemplate_83FA50C movs r2, 0xC negs r2, r2 movs r1, 0x24 movs r3, 0x32 bl CreateSprite adds r1, r5, 0 adds r1, 0x73 strb r0, [r1] ldr r4, _081193C4 @ =gSpriteTemplate_83FA5C0 movs r0, 0x2E ldrsh r2, [r7, r0] lsls r2, 2 mov r1, sp adds r0, r1, r2 movs r3, 0 ldrsh r1, [r0, r3] mov r0, sp adds r0, 0x2 adds r0, r2 movs r3, 0 ldrsh r2, [r0, r3] adds r0, r4, 0 movs r3, 0x3B bl CreateSprite adds r1, r5, 0 adds r1, 0x74 strb r0, [r1] adds r4, 0x18 adds r0, r4, 0 movs r1, 0x24 movs r2, 0x8C movs r3, 0x33 bl CreateSprite adds r1, r5, 0 adds r1, 0x75 strb r0, [r1] ldr r3, _081193C8 @ =gSprites ldrb r1, [r1] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r3 ldrb r2, [r0, 0x1] movs r1, 0xD negs r1, r1 ands r1, r2 movs r2, 0x4 orrs r1, r2 strb r1, [r0, 0x1] movs r6, 0 adds r4, r3, 0 mov r12, r5 ldr r0, _081193CC @ =gUnknown_083F8DF4 mov r8, r0 mov r10, r12 _081192BE: mov r1, r12 adds r3, r1, r6 adds r3, 0x73 ldrb r0, [r3] lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r1, r4 adds r1, 0x3E ldrb r2, [r1] movs r0, 0x3 negs r0, r0 ands r0, r2 strb r0, [r1] ldrb r1, [r3] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 adds r0, 0x3E ldrb r1, [r0] movs r2, 0x4 orrs r1, r2 strb r1, [r0] ldrb r1, [r3] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 adds r0, 0x2C ldrb r1, [r0] movs r2, 0x40 orrs r1, r2 strb r1, [r0] ldrb r1, [r3] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 adds r0, 0x2C ldrb r1, [r0] movs r2, 0x80 orrs r1, r2 strb r1, [r0] ldrb r1, [r3] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 mov r1, r12 adds r1, 0x73 ldrb r1, [r1] strh r1, [r0, 0x36] ldrb r1, [r3] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 mov r5, r12 adds r5, 0x74 ldrb r1, [r5] strh r1, [r0, 0x38] ldrb r1, [r3] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 mov r1, r12 adds r1, 0x75 ldrb r1, [r1] strh r1, [r0, 0x3A] ldrb r1, [r3] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 mov r1, r9 strh r1, [r0, 0x32] ldrb r0, [r3] lsls r2, r0, 4 adds r2, r0 lsls r2, 2 adds r2, r4 movs r0, 0x3C ldrsh r3, [r7, r0] mov r0, r12 ldrb r1, [r0, 0x4] lsls r1, 30 lsrs r0, r1, 25 add r0, r8 ldrb r0, [r0, 0x1] muls r3, r0 lsrs r1, 25 add r1, r8 ldrb r0, [r1, 0x2] ldr r1, _081193D0 @ =0x0000ffff adds r0, r1 adds r3, r0 strh r3, [r2, 0x34] adds r0, r6, 0x1 lsls r0, 24 lsrs r6, r0, 24 ldr r2, _081193C8 @ =gSprites cmp r6, 0x2 bls _081192BE ldrb r1, [r5] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 adds r0, 0x3E ldrb r1, [r0] movs r2, 0x2 orrs r1, r2 strb r1, [r0] mov r3, r10 str r7, [r3, 0x38] 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 _081193B8: .4byte gUnknown_083FA60E _081193BC: .4byte gSharedMem + 0x19000 _081193C0: .4byte gSpriteTemplate_83FA50C _081193C4: .4byte gSpriteTemplate_83FA5C0 _081193C8: .4byte gSprites _081193CC: .4byte gUnknown_083F8DF4 _081193D0: .4byte 0x0000ffff thumb_func_end sub_8119224 thumb_func_start sub_81193D4 sub_81193D4: @ 81193D4 push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} sub sp, 0x8 adds r7, r0, 0 movs r0, 0 mov r8, r0 ldr r1, _08119514 @ =gUnknown_083FA616 mov r0, sp movs r2, 0x8 bl memcpy ldrh r0, [r7, 0x3C] subs r0, 0x2 lsls r0, 16 lsrs r0, 16 mov r9, r0 ldr r0, _08119518 @ =gSpriteTemplate_83FA524 movs r1, 0x2E ldrsh r2, [r7, r1] lsls r2, 2 mov r3, sp adds r1, r3, r2 movs r3, 0 ldrsh r1, [r1, r3] mov r4, sp adds r4, 0x2 adds r2, r4, r2 movs r3, 0 ldrsh r2, [r2, r3] movs r3, 0x32 bl CreateSprite ldr r6, _0811951C @ =gSharedMem + 0x19000 adds r1, r6, 0 adds r1, 0x73 strb r0, [r1] ldrb r1, [r1] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 ldr r5, _08119520 @ =gSprites adds r0, r5 ldrh r1, [r7, 0x2E] lsls r1, 24 lsrs r1, 24 bl StartSpriteAnim ldr r0, _08119524 @ =gSpriteTemplate_83FA5F0 movs r1, 0x2E ldrsh r2, [r7, r1] lsls r2, 2 mov r3, sp adds r1, r3, r2 movs r3, 0 ldrsh r1, [r1, r3] adds r4, r2 movs r3, 0 ldrsh r2, [r4, r3] movs r3, 0x33 bl CreateSprite adds r4, r6, 0 adds r4, 0x74 strb r0, [r4] ldrb r1, [r4] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r5 adds r0, 0x2C ldrb r1, [r0] movs r2, 0x80 orrs r1, r2 strb r1, [r0] ldrb r1, [r4] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r5 adds r0, 0x2C ldrb r1, [r0] movs r2, 0x40 orrs r1, r2 strb r1, [r0] mov r0, r9 lsls r2, r0, 16 asrs r2, 16 ldr r3, _08119528 @ =gUnknown_083F8DF4 ldrb r1, [r6, 0x4] lsls r1, 30 lsrs r0, r1, 25 adds r0, r3 ldrb r0, [r0, 0x1] muls r2, r0 lsrs r1, 25 adds r1, r3 ldrh r0, [r1, 0x10] adds r0, 0x2D adds r2, r0 strh r2, [r7, 0x3C] adds r3, r6, 0 _081194A2: mov r1, r8 adds r2, r6, r1 adds r2, 0x73 ldrb r1, [r2] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r5 adds r1, r6, 0 adds r1, 0x73 ldrb r1, [r1] strh r1, [r0, 0x36] ldrb r1, [r2] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r5 ldrb r1, [r4] strh r1, [r0, 0x38] ldrb r1, [r2] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r5 ldrb r1, [r4] strh r1, [r0, 0x3A] ldrb r1, [r2] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r5 mov r1, r9 strh r1, [r0, 0x32] ldrb r0, [r2] lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r1, r5 ldrh r0, [r7, 0x3C] subs r0, 0x2D strh r0, [r1, 0x34] mov r0, r8 adds r0, 0x1 lsls r0, 24 lsrs r0, 24 mov r8, r0 cmp r0, 0x1 bls _081194A2 str r7, [r3, 0x38] add sp, 0x8 pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08119514: .4byte gUnknown_083FA616 _08119518: .4byte gSpriteTemplate_83FA524 _0811951C: .4byte gSharedMem + 0x19000 _08119520: .4byte gSprites _08119524: .4byte gSpriteTemplate_83FA5F0 _08119528: .4byte gUnknown_083F8DF4 thumb_func_end sub_81193D4 thumb_func_start sub_811952C sub_811952C: @ 811952C push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x14 mov r8, r0 movs r0, 0 mov r10, r0 movs r1, 0x5 mov r9, r1 movs r2, 0 str r2, [sp, 0xC] mov r0, sp movs r1, 0 movs r2, 0xA bl memset bl Random lsls r0, 16 lsrs r0, 16 str r0, [sp, 0x10] ldr r7, _08119610 @ =gSharedMem + 0x19000 adds r0, r7, 0 adds r0, 0x7D movs r6, 0x1 strb r6, [r0] ldrb r4, [r7, 0x3] movs r0, 0x20 orrs r4, r0 movs r0, 0x41 negs r0, r0 ands r4, r0 strb r4, [r7, 0x3] adds r1, r7, 0 adds r1, 0x7E movs r0, 0xFF strb r0, [r1] adds r5, r7, 0 adds r5, 0x88 mov r3, r8 movs r1, 0x34 ldrsh r0, [r3, r1] bl __floatsisf str r0, [r5] adds r1, r7, 0 adds r1, 0x98 ldr r0, _08119614 @ =0x00000000 str r0, [r1] adds r3, r7, 0 adds r3, 0x8C ldr r2, _08119618 @ =gUnknown_083F8DF4 ldrb r0, [r7, 0x4] lsls r0, 30 lsrs r1, r0, 25 adds r2, 0x1C adds r1, r2 ldr r1, [r1] str r1, [r3] lsrs r0, 30 lsls r1, r0, 4 subs r1, r0 lsls r1, 1 adds r1, 0x21 lsls r4, 27 lsrs r4, 27 subs r6, r4 lsls r0, r6, 4 subs r0, r6 adds r1, r0 lsls r1, 16 lsrs r1, 16 mov r5, r10 mov r3, r8 movs r0, 0x34 ldrsh r2, [r3, r0] _081195C8: cmp r1, r2 bge _081195D4 adds r0, r1, 0 adds r0, 0x5A cmp r2, r0 ble _08119638 _081195D4: cmp r5, 0x3 beq _0811961C adds r0, r1, 0 adds r0, 0x5A lsls r0, 16 lsrs r1, r0, 16 adds r0, r5, 0x1 lsls r0, 24 lsrs r5, r0, 24 cmp r5, 0x3 bls _081195C8 _081195EA: ldr r0, _08119610 @ =gSharedMem + 0x19000 ldrb r1, [r0, 0x3] movs r0, 0x1F ands r0, r1 cmp r0, 0 beq _08119664 mov r1, r8 movs r2, 0x2E ldrsh r0, [r1, r2] cmp r0, 0 beq _08119658 movs r0, 0x98 lsls r0, 1 movs r1, 0x3F negs r1, r1 bl PlayCry1 b _08119670 .align 2, 0 _08119610: .4byte gSharedMem + 0x19000 _08119614: .4byte 0x00000000 _08119618: .4byte gUnknown_083F8DF4 _0811961C: movs r0, 0x1 mov r3, r8 strh r0, [r3, 0x2E] ldr r2, _08119634 @ =gSharedMem + 0x19000 ldrb r1, [r2, 0x3] subs r0, 0x21 ands r0, r1 movs r1, 0x1 orrs r0, r1 strb r0, [r2, 0x3] b _081195EA .align 2, 0 _08119634: .4byte gSharedMem + 0x19000 _08119638: lsrs r0, r5, 1 mov r1, r8 strh r0, [r1, 0x2E] ldr r3, _08119654 @ =gSharedMem + 0x19000 movs r1, 0x1 ands r1, r5 ldrb r2, [r3, 0x3] movs r0, 0x20 negs r0, r0 ands r0, r2 orrs r0, r1 strb r0, [r3, 0x3] b _081195EA .align 2, 0 _08119654: .4byte gSharedMem + 0x19000 _08119658: movs r0, 0x98 lsls r0, 1 movs r1, 0x3F bl PlayCry1 b _08119670 _08119664: movs r0, 0x99 lsls r0, 1 movs r1, 0x3F negs r1, r1 bl PlayCry1 _08119670: movs r5, 0x2 ldr r4, _081196A0 @ =gSharedMem + 0x19000 adds r0, r4, 0 adds r0, 0x7F ldrb r0, [r0] adds r0, 0x2 movs r1, 0xC bl __modsi3 lsls r0, 24 lsrs r3, r0, 24 ldrb r1, [r4, 0x3] movs r0, 0x1F ands r0, r1 cmp r0, 0x1 bne _081196A4 ldrb r1, [r4, 0x4] movs r0, 0x3 ands r0, r1 cmp r0, 0x1 bne _081196A4 mov r0, r9 adds r0, 0x6 b _081196A8 .align 2, 0 _081196A0: .4byte gSharedMem + 0x19000 _081196A4: mov r2, r9 adds r0, r2, r5 _081196A8: lsls r0, 24 lsrs r0, 24 mov r9, r0 cmp r5, r9 bcs _0811970E ldr r6, _08119734 @ =gSharedMem + 0x19000 ldr r7, _08119738 @ =gUnknown_083F8C00 + 0xC _081196B6: lsls r0, r3, 3 ldr r1, _0811973C @ =gUnknown_083F8D90 + 0x4 adds r0, r1 ldr r1, [r6, 0x8] ldr r2, [r0] ands r1, r2 cmp r1, 0 bne _081196F8 mov r0, r10 adds r1, r0, 0x1 lsls r1, 24 lsrs r1, 24 mov r10, r1 add r0, sp strb r5, [r0] ldr r0, [sp, 0xC] cmp r0, 0 bne _081196F8 ldrb r0, [r6, 0x1A] lsls r0, 28 lsrs r0, 28 ldr r1, _08119740 @ =gSharedMem + 0x1901B adds r0, r1 ldrb r1, [r0] lsls r0, r1, 2 adds r0, r1 lsls r0, 2 adds r0, r7 ldr r0, [r0] ands r2, r0 cmp r2, 0 beq _081196F8 str r5, [sp, 0xC] _081196F8: adds r0, r3, 0x1 movs r1, 0xC bl __modsi3 lsls r0, 24 lsrs r3, r0, 24 adds r0, r5, 0x1 lsls r0, 24 lsrs r5, r0, 24 cmp r5, r9 bcc _081196B6 _0811970E: ldrb r0, [r4, 0x3] lsls r0, 27 lsrs r0, 27 adds r0, 0x1 ldrb r1, [r4, 0x2] ands r0, r1 cmp r0, 0 beq _08119756 ldr r2, [sp, 0xC] cmp r2, 0 beq _08119744 movs r0, 0xFF ldr r3, [sp, 0x10] ands r0, r3 cmp r0, 0xBF bhi _08119744 mov r0, r8 strh r2, [r0, 0x3C] b _08119766 .align 2, 0 _08119734: .4byte gSharedMem + 0x19000 _08119738: .4byte gUnknown_083F8C00 + 0xC _0811973C: .4byte gUnknown_083F8D90 + 0x4 _08119740: .4byte gSharedMem + 0x1901B _08119744: ldr r0, [sp, 0x10] mov r1, r10 bl __modsi3 add r0, sp ldrb r0, [r0] mov r1, r8 strh r0, [r1, 0x3C] b _08119766 _08119756: ldr r0, [sp, 0x10] mov r1, r10 bl __modsi3 add r0, sp ldrb r0, [r0] mov r2, r8 strh r0, [r2, 0x3C] _08119766: ldr r3, _0811977C @ =sub_8118CEC mov r0, r8 str r3, [r0, 0x1C] add sp, 0x14 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0811977C: .4byte sub_8118CEC thumb_func_end sub_811952C thumb_func_start sub_8119780 sub_8119780: @ 8119780 push {r4,lr} adds r2, r0, 0 ldrh r0, [r2, 0x30] adds r1, r0, 0x1 strh r1, [r2, 0x30] lsls r0, 16 asrs r0, 16 movs r3, 0x34 ldrsh r1, [r2, r3] cmp r0, r1 blt _081197CA ldrh r0, [r2, 0x20] subs r0, 0x2 strh r0, [r2, 0x20] lsls r0, 16 asrs r0, 16 movs r1, 0x10 negs r1, r1 cmp r0, r1 bge _081197CA ldr r4, _081197D0 @ =gSharedMem + 0x19000 ldrb r1, [r4, 0x3] movs r0, 0x40 ands r0, r1 cmp r0, 0 bne _081197BA movs r0, 0x40 orrs r0, r1 strb r0, [r4, 0x3] _081197BA: adds r0, r2, 0 bl DestroySprite movs r0, 0 strb r0, [r4, 0x1] ldr r0, _081197D4 @ =gUnknown_083FA61E ldrh r0, [r0] strh r0, [r4, 0x34] _081197CA: pop {r4} pop {r0} bx r0 .align 2, 0 _081197D0: .4byte gSharedMem + 0x19000 _081197D4: .4byte gUnknown_083FA61E thumb_func_end sub_8119780 thumb_func_start sub_81197D8 sub_81197D8: @ 81197D8 push {r4,lr} sub sp, 0x18 adds r4, r0, 0 ldr r1, _08119854 @ =gUnknown_083FA632 mov r0, sp movs r2, 0x18 bl memcpy ldrh r0, [r4, 0x30] adds r2, r0, 0x1 strh r2, [r4, 0x30] lsls r0, 16 asrs r0, 16 movs r3, 0x34 ldrsh r1, [r4, r3] cmp r0, r1 bge _0811985C movs r0, 0x1 ands r2, r0 cmp r2, 0 beq _08119836 ldr r3, _08119858 @ =gSpriteCoordOffsetY movs r0, 0x3C ldrsh r2, [r4, r0] lsls r2, 1 movs r1, 0x32 ldrsh r0, [r4, r1] lsrs r1, r0, 31 adds r0, r1 asrs r0, 1 lsls r0, 3 adds r2, r0 mov r1, sp adds r0, r1, r2 ldrh r0, [r0] strh r0, [r3] movs r3, 0x3C ldrsh r2, [r4, r3] adds r1, r2, 0x1 adds r0, r1, 0 cmp r1, 0 bge _0811982E adds r0, r2, 0x4 _0811982E: asrs r0, 2 lsls r0, 2 subs r0, r1, r0 strh r0, [r4, 0x3C] _08119836: adds r3, r4, 0 adds r3, 0x3E ldrb r2, [r3] lsls r0, r2, 29 lsrs r0, 31 movs r1, 0x1 eors r1, r0 lsls r1, 2 movs r0, 0x5 negs r0, r0 ands r0, r2 orrs r0, r1 strb r0, [r3] b _08119884 .align 2, 0 _08119854: .4byte gUnknown_083FA632 _08119858: .4byte gSpriteCoordOffsetY _0811985C: ldr r1, _0811988C @ =gSpriteCoordOffsetY movs r0, 0 strh r0, [r1] ldr r2, _08119890 @ =gSprites ldr r0, _08119894 @ =gSharedMem + 0x19000 adds r0, 0x73 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 adds r0, 0x2C ldrb r2, [r0] movs r1, 0x41 negs r1, r1 ands r1, r2 strb r1, [r0] adds r0, r4, 0 bl DestroySprite _08119884: add sp, 0x18 pop {r4} pop {r0} bx r0 .align 2, 0 _0811988C: .4byte gSpriteCoordOffsetY _08119890: .4byte gSprites _08119894: .4byte gSharedMem + 0x19000 thumb_func_end sub_81197D8 thumb_func_start sub_8119898 sub_8119898: @ 8119898 push {r4,r5,lr} adds r5, r0, 0 ldrh r0, [r5, 0x30] adds r0, 0x1 strh r0, [r5, 0x30] movs r1, 0x30 ldrsh r0, [r5, r1] bl __floatsisf adds r4, r0, 0 ldr r1, _08119948 @ =0x3d1fbe77 bl __mulsf3 adds r1, r4, 0 bl __mulsf3 bl __fixsfsi strh r0, [r5, 0x26] ldr r3, _0811994C @ =gSharedMem + 0x19000 ldr r2, _08119950 @ =gUnknown_083FA61E ldrb r0, [r3, 0x1] subs r0, 0x1 lsrs r1, r0, 31 adds r0, r1 asrs r0, 1 lsls r0, 1 adds r0, r2 ldrh r0, [r0] strh r0, [r3, 0x34] ldrb r0, [r3, 0x1] cmp r0, 0x12 bhi _081198DE adds r0, 0x1 strb r0, [r3, 0x1] _081198DE: movs r1, 0x30 ldrsh r0, [r5, r1] cmp r0, 0x3C ble _08119940 movs r0, 0 strh r0, [r5, 0x30] ldr r3, _08119954 @ =sub_8119780 str r3, [r5, 0x1C] ldr r2, _08119958 @ =gSprites movs r0, 0x3A ldrsh r1, [r5, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r4, r2, 0 adds r4, 0x1C adds r0, r4 str r3, [r0] movs r0, 0x3A ldrsh r1, [r5, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 ldr r1, _0811995C @ =0x0000fffe strh r1, [r0, 0x30] movs r0, 0x38 ldrsh r1, [r5, 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] movs r0, 0x38 ldrsh r1, [r5, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 ldr r1, _08119960 @ =sub_81197D8 str r1, [r0] movs r0, 0xD6 bl m4aSongNumStart _08119940: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08119948: .4byte 0x3d1fbe77 _0811994C: .4byte gSharedMem + 0x19000 _08119950: .4byte gUnknown_083FA61E _08119954: .4byte sub_8119780 _08119958: .4byte gSprites _0811995C: .4byte 0x0000fffe _08119960: .4byte sub_81197D8 thumb_func_end sub_8119898 thumb_func_start sub_8119964 sub_8119964: @ 8119964 push {r4,lr} adds r4, r0, 0 movs r1, 0x3C ldrsh r0, [r4, r1] cmp r0, 0 bne _081199E4 ldr r3, _08119990 @ =gSharedMem + 0x19000 ldr r1, [r3, 0x38] movs r2, 0x2E ldrsh r0, [r1, r2] cmp r0, 0 bne _08119998 movs r0, 0x34 ldrsh r2, [r1, r0] ldr r1, _08119994 @ =gUnknown_083F8DF4 ldrb r0, [r3, 0x4] lsls r0, 30 lsrs r0, 25 adds r0, r1 ldrh r0, [r0, 0x8] b _081199AA .align 2, 0 _08119990: .4byte gSharedMem + 0x19000 _08119994: .4byte gUnknown_083F8DF4 _08119998: movs r0, 0x34 ldrsh r2, [r1, r0] ldr r1, _081199D8 @ =gUnknown_083F8DF4 ldrb r0, [r3, 0x4] lsls r0, 30 lsrs r0, 25 adds r0, r1 ldrh r0, [r0, 0x8] adds r0, 0xB4 _081199AA: cmp r2, r0 bne _08119A78 adds r2, r4, 0 adds r2, 0x3E ldrb r1, [r2] movs r0, 0x5 negs r0, r0 ands r0, r1 strb r0, [r2] ldrh r0, [r4, 0x3C] adds r0, 0x1 strh r0, [r4, 0x3C] movs r0, 0x2B bl m4aSongNumStart ldr r1, _081199DC @ =gSharedMem + 0x19000 movs r0, 0x1 strb r0, [r1, 0x1] ldr r0, _081199E0 @ =gUnknown_083FA61E ldrh r0, [r0] strh r0, [r1, 0x34] b _08119A78 .align 2, 0 _081199D8: .4byte gUnknown_083F8DF4 _081199DC: .4byte gSharedMem + 0x19000 _081199E0: .4byte gUnknown_083FA61E _081199E4: ldr r3, _08119A20 @ =gSharedMem + 0x19000 ldr r2, _08119A24 @ =gUnknown_083FA61E ldrb r0, [r3, 0x1] subs r0, 0x1 lsrs r1, r0, 31 adds r0, r1 asrs r0, 1 lsls r0, 1 adds r0, r2 ldrh r0, [r0] strh r0, [r3, 0x34] ldrb r0, [r3, 0x1] cmp r0, 0x12 bhi _08119A04 adds r0, 0x1 strb r0, [r3, 0x1] _08119A04: ldr r1, [r3, 0x38] movs r2, 0x2E ldrsh r0, [r1, r2] cmp r0, 0 bne _08119A2C movs r0, 0x34 ldrsh r2, [r1, r0] ldr r1, _08119A28 @ =gUnknown_083F8DF4 ldrb r0, [r3, 0x4] lsls r0, 30 lsrs r0, 25 adds r0, r1 ldrh r0, [r0, 0xA] b _08119A3E .align 2, 0 _08119A20: .4byte gSharedMem + 0x19000 _08119A24: .4byte gUnknown_083FA61E _08119A28: .4byte gUnknown_083F8DF4 _08119A2C: movs r0, 0x34 ldrsh r2, [r1, r0] ldr r1, _08119A80 @ =gUnknown_083F8DF4 ldrb r0, [r3, 0x4] lsls r0, 30 lsrs r0, 25 adds r0, r1 ldrh r0, [r0, 0xA] adds r0, 0xB4 _08119A3E: cmp r2, r0 bne _08119A78 ldr r2, _08119A84 @ =gSprites movs r0, 0x36 ldrsh r1, [r4, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r1, r2, 0 adds r1, 0x1C adds r0, r1 ldr r1, _08119A88 @ =sub_8119898 str r1, [r0] movs r0, 0x36 ldrsh r1, [r4, 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] ldr r0, _08119A8C @ =SpriteCallbackDummy str r0, [r4, 0x1C] movs r0, 0 strh r0, [r4, 0x3C] _08119A78: pop {r4} pop {r0} bx r0 .align 2, 0 _08119A80: .4byte gUnknown_083F8DF4 _08119A84: .4byte gSprites _08119A88: .4byte sub_8119898 _08119A8C: .4byte SpriteCallbackDummy thumb_func_end sub_8119964 thumb_func_start sub_8119A90 sub_8119A90: @ 8119A90 adds r0, 0x3E ldrb r3, [r0] lsls r1, r3, 29 lsrs r1, 31 movs r2, 0x1 eors r2, r1 lsls r2, 2 movs r1, 0x5 negs r1, r1 ands r1, r3 orrs r1, r2 strb r1, [r0] bx lr thumb_func_end sub_8119A90 thumb_func_start sub_8119AAC sub_8119AAC: @ 8119AAC push {r4,r5,lr} adds r4, r0, 0 ldrh r2, [r4, 0x22] movs r0, 0x22 ldrsh r1, [r4, r0] movs r0, 0x10 negs r0, r0 cmp r1, r0 ble _08119AC4 subs r0, r2, 0x1 strh r0, [r4, 0x22] b _08119B12 _08119AC4: ldr r0, _08119B18 @ =SpriteCallbackDummy str r0, [r4, 0x1C] adds r2, r4, 0 adds r2, 0x3E ldrb r0, [r2] movs r1, 0x4 orrs r0, r1 strb r0, [r2] subs r2, 0x12 ldrb r0, [r2] movs r1, 0x40 orrs r0, r1 strb r0, [r2] movs r0, 0x5E bl m4aSongNumStop adds r0, r4, 0 bl DestroySprite ldr r5, _08119B1C @ =gSprites ldr r4, _08119B20 @ =gSharedMem + 0x19000 adds r4, 0x74 ldrb r1, [r4] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r5 ldrb r0, [r0, 0x3] lsls r0, 26 lsrs r0, 27 bl FreeOamMatrix ldrb r1, [r4] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r5 bl DestroySprite _08119B12: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08119B18: .4byte SpriteCallbackDummy _08119B1C: .4byte gSprites _08119B20: .4byte gSharedMem + 0x19000 thumb_func_end sub_8119AAC thumb_func_start sub_8119B24 sub_8119B24: @ 8119B24 push {r4,lr} adds r4, r0, 0 ldrh r1, [r4, 0x30] movs r2, 0x30 ldrsh r0, [r4, r2] cmp r0, 0 blt _08119B4E subs r1, 0x1 strh r1, [r4, 0x30] ldrh r0, [r4, 0x22] subs r0, 0x1 strh r0, [r4, 0x22] lsls r1, 16 cmp r1, 0 bne _08119BB8 adds r0, r4, 0 adds r0, 0x2B ldrb r0, [r0] cmp r0, 0x1 bne _08119BB8 b _08119B74 _08119B4E: ldrh r1, [r4, 0x34] movs r2, 0x34 ldrsh r0, [r4, r2] cmp r0, 0 blt _08119B84 subs r0, r1, 0x1 strh r0, [r4, 0x34] adds r0, r4, 0 adds r0, 0x2C ldrb r1, [r0] movs r0, 0x3F ands r0, r1 cmp r0, 0 bne _08119BB8 adds r0, r4, 0 adds r0, 0x2B ldrb r0, [r0] cmp r0, 0x1 bne _08119B7C _08119B74: ldrh r0, [r4, 0x26] adds r0, 0x1 strh r0, [r4, 0x26] b _08119BB8 _08119B7C: ldrh r0, [r4, 0x26] subs r0, 0x1 strh r0, [r4, 0x26] b _08119BB8 _08119B84: movs r0, 0x2B bl m4aSongNumStart ldr r0, _08119BC0 @ =gSharedMem + 0x19000 ldr r0, [r0, 0x38] ldrh r1, [r0, 0x2E] adds r1, 0x4 lsls r1, 24 lsrs r1, 24 adds r0, r4, 0 bl StartSpriteAnim ldr r0, _08119BC4 @ =sub_8119AAC str r0, [r4, 0x1C] ldr r2, _08119BC8 @ =gSprites movs r0, 0x3A ldrsh r1, [r4, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 adds r0, 0x2C ldrb r2, [r0] movs r1, 0x7F ands r1, r2 strb r1, [r0] _08119BB8: pop {r4} pop {r0} bx r0 .align 2, 0 _08119BC0: .4byte gSharedMem + 0x19000 _08119BC4: .4byte sub_8119AAC _08119BC8: .4byte gSprites thumb_func_end sub_8119B24 thumb_func_start sub_8119BCC sub_8119BCC: @ 8119BCC push {r4,r5,lr} sub sp, 0x14 adds r4, r0, 0 ldr r1, _08119C44 @ =gUnknown_083FA64A mov r0, sp movs r2, 0x2 bl memcpy add r5, sp, 0x4 ldr r1, _08119C48 @ =gUnknown_083FA64C adds r0, r5, 0 movs r2, 0x10 bl memcpy ldrh r0, [r4, 0x30] subs r1, r0, 0x1 strh r1, [r4, 0x30] lsls r0, 16 asrs r0, 16 cmp r0, 0x7 ble _08119C5C ldr r0, _08119C4C @ =gSharedMem + 0x19000 ldr r0, [r0, 0x38] movs r1, 0x2E ldrsh r0, [r0, r1] add r0, sp ldrb r0, [r0] lsls r0, 24 asrs r0, 24 lsls r0, 1 ldrh r2, [r4, 0x20] adds r0, r2 strh r0, [r4, 0x20] bl IsSEPlaying lsls r0, 24 cmp r0, 0 beq _08119CF6 movs r1, 0x20 ldrsh r0, [r4, r1] movs r4, 0x74 subs r4, r0 lsrs r0, r4, 31 adds r4, r0 asrs r4, 1 negs r4, r4 ldr r0, _08119C50 @ =gMPlay_SE1 ldr r5, _08119C54 @ =0x0000ffff lsls r4, 24 asrs r4, 24 adds r1, r5, 0 adds r2, r4, 0 bl m4aMPlayPanpotControl ldr r0, _08119C58 @ =gMPlay_SE2 adds r1, r5, 0 adds r2, r4, 0 bl m4aMPlayPanpotControl b _08119CF6 .align 2, 0 _08119C44: .4byte gUnknown_083FA64A _08119C48: .4byte gUnknown_083FA64C _08119C4C: .4byte gSharedMem + 0x19000 _08119C50: .4byte gMPlay_SE1 _08119C54: .4byte 0x0000ffff _08119C58: .4byte gMPlay_SE2 _08119C5C: lsls r0, r1, 16 cmp r0, 0 blt _08119CAC ldr r0, _08119CA8 @ =gSharedMem + 0x19000 ldr r0, [r0, 0x38] movs r2, 0x2E ldrsh r0, [r0, r2] add r0, sp movs r2, 0 ldrsb r2, [r0, r2] movs r1, 0x30 ldrsh r0, [r4, r1] movs r1, 0x7 subs r0, r1, r0 lsls r0, 1 adds r0, r5, r0 ldrb r0, [r0] lsls r0, 24 asrs r0, 24 muls r0, r2 ldrh r2, [r4, 0x20] adds r0, r2 strh r0, [r4, 0x20] movs r2, 0x30 ldrsh r0, [r4, r2] subs r1, r0 lsls r1, 1 mov r0, sp adds r0, 0x5 adds r0, r1 ldrb r0, [r0] lsls r0, 24 asrs r0, 24 ldrh r1, [r4, 0x22] adds r0, r1 strh r0, [r4, 0x22] b _08119CF6 .align 2, 0 _08119CA8: .4byte gSharedMem + 0x19000 _08119CAC: movs r0, 0x5E bl m4aSongNumStartOrChange ldr r0, _08119CCC @ =gSharedMem + 0x19000 ldr r0, [r0, 0x38] movs r2, 0x2E ldrsh r0, [r0, r2] cmp r0, 0 bne _08119CD0 movs r0, 0x98 lsls r0, 1 movs r1, 0x3F bl PlayCry1 b _08119CDC .align 2, 0 _08119CCC: .4byte gSharedMem + 0x19000 _08119CD0: movs r0, 0x98 lsls r0, 1 movs r1, 0x3F negs r1, r1 bl PlayCry1 _08119CDC: ldr r0, _08119D00 @ =gSharedMem + 0x19000 ldr r0, [r0, 0x38] ldrh r1, [r0, 0x2E] adds r1, 0x2 lsls r1, 24 lsrs r1, 24 adds r0, r4, 0 bl StartSpriteAnim movs r0, 0x2D strh r0, [r4, 0x30] ldr r0, _08119D04 @ =sub_8119B24 str r0, [r4, 0x1C] _08119CF6: add sp, 0x14 pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08119D00: .4byte gSharedMem + 0x19000 _08119D04: .4byte sub_8119B24 thumb_func_end sub_8119BCC thumb_func_start sub_8119D08 sub_8119D08: @ 8119D08 push {r4,lr} sub sp, 0x4 adds r4, r0, 0 ldr r1, _08119D64 @ =gUnknown_083FA64A mov r0, sp movs r2, 0x2 bl memcpy ldrh r0, [r4, 0x30] subs r1, r0, 0x1 strh r1, [r4, 0x30] lsls r0, 16 cmp r0, 0 blt _08119D70 ldr r0, _08119D68 @ =gSharedMem + 0x19000 ldr r0, [r0, 0x38] movs r1, 0x2E ldrsh r0, [r0, r1] add r0, sp ldrb r0, [r0] lsls r0, 24 asrs r0, 24 lsls r0, 1 ldrh r2, [r4, 0x20] adds r0, r2 strh r0, [r4, 0x20] ldr r1, _08119D6C @ =gSprites movs r2, 0x3A ldrsh r0, [r4, r2] lsls r2, r0, 4 adds r2, r0 lsls r2, 2 adds r2, r1 adds r2, 0x3E ldrb r3, [r2] lsls r0, r3, 29 lsrs r0, 31 movs r1, 0x1 eors r1, r0 lsls r1, 2 movs r0, 0x5 negs r0, r0 ands r0, r3 orrs r0, r1 strb r0, [r2] b _08119D74 .align 2, 0 _08119D64: .4byte gUnknown_083FA64A _08119D68: .4byte gSharedMem + 0x19000 _08119D6C: .4byte gSprites _08119D70: ldr r0, _08119D7C @ =sub_8119A90 str r0, [r4, 0x1C] _08119D74: add sp, 0x4 pop {r4} pop {r0} bx r0 .align 2, 0 _08119D7C: .4byte sub_8119A90 thumb_func_end sub_8119D08 thumb_func_start sub_8119D80 sub_8119D80: @ 8119D80 push {r4,lr} adds r4, r0, 0 ldr r3, _08119DB8 @ =gSharedMem + 0x19000 ldr r1, [r3, 0x38] movs r2, 0x2E ldrsh r0, [r1, r2] cmp r0, 0 bne _08119DC4 movs r0, 0x34 ldrsh r2, [r1, r0] ldr r1, _08119DBC @ =gUnknown_083F8DF4 ldrb r0, [r3, 0x4] lsls r0, 30 lsrs r0, 25 adds r0, r1 ldrh r0, [r0, 0x12] adds r0, 0x5A cmp r2, r0 bne _08119E26 ldr r2, _08119DC0 @ =gSprites movs r0, 0x3A ldrsh r1, [r4, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 movs r3, 0x34 b _08119DEE .align 2, 0 _08119DB8: .4byte gSharedMem + 0x19000 _08119DBC: .4byte gUnknown_083F8DF4 _08119DC0: .4byte gSprites _08119DC4: movs r0, 0x34 ldrsh r2, [r1, r0] ldr r1, _08119E2C @ =gUnknown_083F8DF4 ldrb r0, [r3, 0x4] lsls r0, 30 lsrs r0, 25 adds r0, r1 ldrh r0, [r0, 0x14] movs r1, 0x87 lsls r1, 1 adds r0, r1 cmp r2, r0 bne _08119E26 ldr r2, _08119E30 @ =gSprites movs r0, 0x3A ldrsh r1, [r4, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 movs r3, 0x2E _08119DEE: strh r3, [r0, 0x30] movs r0, 0x36 ldrsh r1, [r4, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 strh r3, [r0, 0x30] movs r0, 0x3A ldrsh r1, [r4, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r2, 0x1C adds r0, r2 ldr r1, _08119E34 @ =sub_8119D08 str r1, [r0] movs r0, 0x36 ldrsh r1, [r4, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 ldr r1, _08119E38 @ =sub_8119BCC str r1, [r0] movs r0, 0x2B bl m4aSongNumStart _08119E26: pop {r4} pop {r0} bx r0 .align 2, 0 _08119E2C: .4byte gUnknown_083F8DF4 _08119E30: .4byte gSprites _08119E34: .4byte sub_8119D08 _08119E38: .4byte sub_8119BCC thumb_func_end sub_8119D80 .align 2, 0 @ Don't pad with nop.