pokefirered/asm/intro.s
2018-10-15 09:19:30 -05:00

4842 lines
82 KiB
ArmAsm

.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start sub_80EC5A4
sub_80EC5A4: @ 80EC5A4
push {lr}
bl LoadOam
bl ProcessSpriteCopyRequests
bl TransferPlttBuffer
pop {r0}
bx r0
thumb_func_end sub_80EC5A4
thumb_func_start sub_80EC5B8
sub_80EC5B8: @ 80EC5B8
push {lr}
bl UpdatePaletteFade
lsls r0, 24
cmp r0, 0
bne _080EC5CA
ldr r0, _080EC5D0 @ =sub_80EC870
bl SetMainCallback2
_080EC5CA:
pop {r0}
bx r0
.align 2, 0
_080EC5D0: .4byte sub_80EC870
thumb_func_end sub_80EC5B8
thumb_func_start load_copyright_graphics
load_copyright_graphics: @ 80EC5D4
push {r4-r6,lr}
adds r3, r0, 0
adds r4, r1, 0
adds r5, r2, 0
lsls r3, 16
lsrs r3, 16
lsls r4, 16
lsrs r4, 16
lsls r5, 16
lsrs r5, 16
ldr r0, _080EC610 @ =gUnknown_8402280
movs r6, 0xC0
lsls r6, 19
adds r3, r6
adds r1, r3, 0
bl LZ77UnCompVram
ldr r0, _080EC614 @ =gUnknown_84024E4
adds r4, r6
adds r1, r4, 0
bl LZ77UnCompVram
ldr r0, _080EC618 @ =gUnknown_8402260
adds r1, r5, 0
movs r2, 0x20
bl LoadPalette
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080EC610: .4byte gUnknown_8402280
_080EC614: .4byte gUnknown_84024E4
_080EC618: .4byte gUnknown_8402260
thumb_func_end load_copyright_graphics
thumb_func_start SerialCb_CopyrightScreen
SerialCb_CopyrightScreen: @ 80EC61C
push {lr}
ldr r0, _080EC628 @ =gUnknown_203AAD4
bl GameCubeMultiBoot_HandleSerialInterrupt
pop {r0}
bx r0
.align 2, 0
_080EC628: .4byte gUnknown_203AAD4
thumb_func_end SerialCb_CopyrightScreen
thumb_func_start sub_80EC62C
sub_80EC62C: @ 80EC62C
push {r4-r6,lr}
sub sp, 0xC
ldr r0, _080EC64C @ =gMain
movs r1, 0x87
lsls r1, 3
adds r5, r0, r1
ldrb r4, [r5]
cmp r4, 0x8C
bne _080EC640
b _080EC778
_080EC640:
cmp r4, 0x8C
bgt _080EC650
cmp r4, 0
beq _080EC65E
b _080EC732
.align 2, 0
_080EC64C: .4byte gMain
_080EC650:
cmp r4, 0x8D
bne _080EC656
b _080EC7A4
_080EC656:
cmp r4, 0x8E
bne _080EC65C
b _080EC808
_080EC65C:
b _080EC732
_080EC65E:
movs r0, 0
bl SetVBlankCallback
movs r0, 0x50
movs r1, 0
bl SetGpuReg
movs r0, 0x52
movs r1, 0
bl SetGpuReg
movs r0, 0x54
movs r1, 0
bl SetGpuReg
movs r1, 0xA0
lsls r1, 19
ldr r2, _080EC74C @ =0x00007fff
adds r0, r2, 0
strh r0, [r1]
movs r0, 0
movs r1, 0
bl SetGpuReg
movs r0, 0x10
movs r1, 0
bl SetGpuReg
movs r0, 0x12
movs r1, 0
bl SetGpuReg
add r0, sp, 0x4
strh r4, [r0]
ldr r1, _080EC750 @ =0x040000d4
str r0, [r1]
movs r0, 0xC0
lsls r0, 19
str r0, [r1, 0x4]
ldr r0, _080EC754 @ =0x8100c000
str r0, [r1, 0x8]
ldr r0, [r1, 0x8]
str r4, [sp, 0x8]
add r0, sp, 0x8
str r0, [r1]
movs r0, 0xE0
lsls r0, 19
str r0, [r1, 0x4]
ldr r0, _080EC758 @ =0x85000100
str r0, [r1, 0x8]
ldr r0, [r1, 0x8]
add r0, sp, 0x4
strh r4, [r0]
str r0, [r1]
ldr r0, _080EC75C @ =0x05000002
str r0, [r1, 0x4]
ldr r0, _080EC760 @ =0x810001ff
str r0, [r1, 0x8]
ldr r0, [r1, 0x8]
bl ResetPaletteFade
movs r1, 0xE0
lsls r1, 6
movs r0, 0
movs r2, 0
bl load_copyright_graphics
bl remove_some_task
bl ResetTasks
bl ResetSpriteData
bl FreeAllSpritePalettes
movs r0, 0x1
negs r0, r0
ldr r1, _080EC764 @ =0x0000ffff
str r1, [sp]
movs r1, 0
movs r2, 0x10
movs r3, 0
bl BeginNormalPaletteFade
movs r1, 0xE0
lsls r1, 3
movs r0, 0x8
bl SetGpuReg
movs r0, 0x1
bl EnableInterrupts
ldr r0, _080EC768 @ =sub_80EC5A4
bl SetVBlankCallback
movs r1, 0xA0
lsls r1, 1
movs r0, 0
bl SetGpuReg
ldr r0, _080EC76C @ =SerialCb_CopyrightScreen
bl SetSerialCallback
ldr r0, _080EC770 @ =gUnknown_203AAD4
bl GameCubeMultiBoot_Init
_080EC732:
bl UpdatePaletteFade
ldr r0, _080EC774 @ =gMain
movs r1, 0x87
lsls r1, 3
adds r0, r1
ldrb r1, [r0]
adds r1, 0x1
strb r1, [r0]
ldr r0, _080EC770 @ =gUnknown_203AAD4
bl GameCubeMultiBoot_Main
b _080EC812
.align 2, 0
_080EC74C: .4byte 0x00007fff
_080EC750: .4byte 0x040000d4
_080EC754: .4byte 0x8100c000
_080EC758: .4byte 0x85000100
_080EC75C: .4byte 0x05000002
_080EC760: .4byte 0x810001ff
_080EC764: .4byte 0x0000ffff
_080EC768: .4byte sub_80EC5A4
_080EC76C: .4byte SerialCb_CopyrightScreen
_080EC770: .4byte gUnknown_203AAD4
_080EC774: .4byte gMain
_080EC778:
ldr r4, _080EC7A0 @ =gUnknown_203AAD4
adds r0, r4, 0
bl GameCubeMultiBoot_Main
ldrb r0, [r4, 0x2]
cmp r0, 0x1
beq _080EC812
movs r0, 0x1
negs r0, r0
movs r1, 0
str r1, [sp]
movs r2, 0
movs r3, 0x10
bl BeginNormalPaletteFade
ldrb r0, [r5]
adds r0, 0x1
strb r0, [r5]
b _080EC812
.align 2, 0
_080EC7A0: .4byte gUnknown_203AAD4
_080EC7A4:
bl UpdatePaletteFade
lsls r0, 24
cmp r0, 0
bne _080EC812
ldrb r0, [r5]
adds r0, 0x1
strb r0, [r5]
ldr r5, _080EC7E4 @ =gUnknown_203AAD4
ldrb r0, [r5, 0x2]
cmp r0, 0
beq _080EC7F4
ldrb r0, [r5, 0x2]
cmp r0, 0x2
bne _080EC7FE
ldr r6, _080EC7E8 @ =0x020000ac
ldr r4, [r6]
ldr r0, _080EC7EC @ =0x65366347
cmp r4, r0
bne _080EC7DC
ldr r0, _080EC7F0 @ =gMultiBootProgram_PokemonColosseum_Start
movs r1, 0x80
lsls r1, 18
movs r2, 0xA0
lsls r2, 9
bl CpuSet
str r4, [r6]
_080EC7DC:
adds r0, r5, 0
bl GameCubeMultiBoot_ExecuteProgram
b _080EC7FE
.align 2, 0
_080EC7E4: .4byte gUnknown_203AAD4
_080EC7E8: .4byte 0x020000ac
_080EC7EC: .4byte 0x65366347
_080EC7F0: .4byte gMultiBootProgram_PokemonColosseum_Start
_080EC7F4:
bl GameCubeMultiBoot_Quit
ldr r0, _080EC804 @ =SerialCB
bl SetSerialCallback
_080EC7FE:
movs r0, 0
b _080EC814
.align 2, 0
_080EC804: .4byte SerialCB
_080EC808:
bl sub_800B388
ldr r0, _080EC81C @ =sub_80EC5B8
bl SetMainCallback2
_080EC812:
movs r0, 0x1
_080EC814:
add sp, 0xC
pop {r4-r6}
pop {r1}
bx r1
.align 2, 0
_080EC81C: .4byte sub_80EC5B8
thumb_func_end sub_80EC62C
thumb_func_start c2_copyright_1
c2_copyright_1: @ 80EC820
push {lr}
bl sub_80EC62C
lsls r0, 24
cmp r0, 0
bne _080EC858
bl sub_8054A28
bl Save_ResetSaveCounters
movs r0, 0
bl Save_LoadGameData
ldr r0, _080EC85C @ =gSaveFileStatus
ldrh r0, [r0]
cmp r0, 0
beq _080EC846
cmp r0, 0x2
bne _080EC84A
_080EC846:
bl Sav2_ClearSetDefault
_080EC84A:
ldr r0, _080EC860 @ =gSaveBlock2Ptr
ldr r0, [r0]
ldrb r0, [r0, 0x15]
lsls r0, 31
lsrs r0, 31
bl SetPokemonCryStereo
_080EC858:
pop {r0}
bx r0
.align 2, 0
_080EC85C: .4byte gSaveFileStatus
_080EC860: .4byte gSaveBlock2Ptr
thumb_func_end c2_copyright_1
thumb_func_start sub_80EC864
sub_80EC864: @ 80EC864
push {lr}
bl sub_80EC62C
pop {r0}
bx r0
thumb_func_end sub_80EC864
thumb_func_start sub_80EC870
sub_80EC870: @ 80EC870
push {r4,lr}
sub sp, 0xC
ldr r0, _080EC88C @ =gMain
movs r1, 0x87
lsls r1, 3
adds r0, r1
ldrb r4, [r0]
cmp r4, 0x1
beq _080EC944
cmp r4, 0x1
bgt _080EC890
cmp r4, 0
beq _080EC8A0
b _080EC894
.align 2, 0
_080EC88C: .4byte gMain
_080EC890:
cmp r4, 0x2
beq _080EC988
_080EC894:
ldr r0, _080EC928 @ =gMain
movs r1, 0x87
lsls r1, 3
adds r0, r1
movs r1, 0
strb r1, [r0]
_080EC8A0:
movs r0, 0
bl SetVBlankCallback
movs r0, 0
movs r1, 0
bl SetGpuReg
ldr r0, _080EC92C @ =gHeap
movs r1, 0xE0
lsls r1, 9
bl InitHeap
bl ResetTasks
bl ResetSpriteData
bl ResetPaletteFade
bl reset_temp_tile_data_buffers
bl sub_80ECA00
add r1, sp, 0x4
movs r0, 0
strh r0, [r1]
ldr r1, _080EC930 @ =0x040000d4
add r0, sp, 0x4
str r0, [r1]
movs r0, 0xC0
lsls r0, 19
str r0, [r1, 0x4]
ldr r0, _080EC934 @ =0x8100c000
str r0, [r1, 0x8]
ldr r0, [r1, 0x8]
movs r2, 0
str r2, [sp, 0x8]
add r0, sp, 0x8
str r0, [r1]
movs r0, 0xE0
lsls r0, 19
str r0, [r1, 0x4]
ldr r0, _080EC938 @ =0x85000100
str r0, [r1, 0x8]
ldr r0, [r1, 0x8]
add r0, sp, 0x4
strh r2, [r0]
str r0, [r1]
movs r0, 0xA0
lsls r0, 19
str r0, [r1, 0x4]
ldr r0, _080EC93C @ =0x81000200
str r0, [r1, 0x8]
ldr r0, [r1, 0x8]
movs r2, 0x80
lsls r2, 3
movs r0, 0
movs r1, 0
bl FillPalette
movs r0, 0
bl ResetBgsAndClearDma3BusyFlags
ldr r1, _080EC940 @ =gUnknown_840BB80
movs r0, 0
movs r2, 0x2
bl InitBgsFromTemplates
b _080EC9B8
.align 2, 0
_080EC928: .4byte gMain
_080EC92C: .4byte gHeap
_080EC930: .4byte 0x040000d4
_080EC934: .4byte 0x8100c000
_080EC938: .4byte 0x85000100
_080EC93C: .4byte 0x81000200
_080EC940: .4byte gUnknown_840BB80
_080EC944:
ldr r0, _080EC978 @ =gUnknown_8402630
movs r1, 0
movs r2, 0x20
bl LoadPalette
ldr r1, _080EC97C @ =gUnknown_8402650
movs r0, 0
str r0, [sp]
movs r0, 0x3
movs r2, 0
movs r3, 0
bl decompress_and_copy_tile_data_to_vram
ldr r1, _080EC980 @ =gUnknown_8402668
str r4, [sp]
movs r0, 0x3
movs r2, 0
movs r3, 0
bl decompress_and_copy_tile_data_to_vram
ldr r0, _080EC984 @ =gUnknown_840270C
movs r1, 0xD0
movs r2, 0x20
bl LoadPalette
b _080EC9B8
.align 2, 0
_080EC978: .4byte gUnknown_8402630
_080EC97C: .4byte gUnknown_8402650
_080EC980: .4byte gUnknown_8402668
_080EC984: .4byte gUnknown_840270C
_080EC988:
bl free_temp_tile_data_buffers_if_possible
lsls r0, 24
cmp r0, 0
bne _080EC9C6
bl sub_80ECA70
movs r0, 0x1
negs r0, r0
movs r1, 0x10
movs r2, 0
bl BlendPalettes
ldr r0, _080EC9B0 @ =sub_80EC9D4
bl SetMainCallback2
ldr r0, _080EC9B4 @ =sub_80EC9EC
bl SetVBlankCallback
b _080EC9C6
.align 2, 0
_080EC9B0: .4byte sub_80EC9D4
_080EC9B4: .4byte sub_80EC9EC
_080EC9B8:
ldr r1, _080EC9D0 @ =gMain
movs r0, 0x87
lsls r0, 3
adds r1, r0
ldrb r0, [r1]
adds r0, 0x1
strb r0, [r1]
_080EC9C6:
add sp, 0xC
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080EC9D0: .4byte gMain
thumb_func_end sub_80EC870
thumb_func_start sub_80EC9D4
sub_80EC9D4: @ 80EC9D4
push {lr}
bl RunTasks
bl AnimateSprites
bl BuildOamBuffer
bl UpdatePaletteFade
pop {r0}
bx r0
thumb_func_end sub_80EC9D4
thumb_func_start sub_80EC9EC
sub_80EC9EC: @ 80EC9EC
push {lr}
bl LoadOam
bl ProcessSpriteCopyRequests
bl TransferPlttBuffer
pop {r0}
bx r0
thumb_func_end sub_80EC9EC
thumb_func_start sub_80ECA00
sub_80ECA00: @ 80ECA00
push {lr}
movs r0, 0
movs r1, 0
bl SetGpuReg
movs r0, 0x50
movs r1, 0
bl SetGpuReg
movs r0, 0x52
movs r1, 0
bl SetGpuReg
movs r0, 0x54
movs r1, 0
bl SetGpuReg
movs r0, 0x10
movs r1, 0
bl SetGpuReg
movs r0, 0x12
movs r1, 0
bl SetGpuReg
movs r0, 0x14
movs r1, 0
bl SetGpuReg
movs r0, 0x16
movs r1, 0
bl SetGpuReg
movs r0, 0x18
movs r1, 0
bl SetGpuReg
movs r0, 0x1A
movs r1, 0
bl SetGpuReg
movs r0, 0x1C
movs r1, 0
bl SetGpuReg
movs r0, 0x1E
movs r1, 0
bl SetGpuReg
movs r1, 0x82
lsls r1, 5
movs r0, 0
bl SetGpuRegBits
pop {r0}
bx r0
thumb_func_end sub_80ECA00
thumb_func_start sub_80ECA70
sub_80ECA70: @ 80ECA70
push {r4,lr}
ldr r0, _080ECA9C @ =0x000028bc
bl Alloc
adds r4, r0, 0
ldr r1, _080ECAA0 @ =sub_80ECAF0
bl sub_80ECAA8
ldr r0, _080ECAA4 @ =sub_80ECAB0
movs r1, 0x3
bl CreateTask
strb r0, [r4, 0x5]
ldrb r0, [r4, 0x5]
movs r1, 0
adds r2, r4, 0
bl SetWordTaskArg
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080ECA9C: .4byte 0x000028bc
_080ECAA0: .4byte sub_80ECAF0
_080ECAA4: .4byte sub_80ECAB0
thumb_func_end sub_80ECA70
thumb_func_start sub_80ECAA8
sub_80ECAA8: @ 80ECAA8
str r1, [r0]
movs r1, 0
strb r1, [r0, 0x4]
bx lr
thumb_func_end sub_80ECAA8
thumb_func_start sub_80ECAB0
sub_80ECAB0: @ 80ECAB0
push {r4,lr}
lsls r0, 24
lsrs r0, 24
movs r1, 0
bl GetWordTaskArg
adds r4, r0, 0
ldr r0, _080ECAE8 @ =gMain
ldrh r1, [r0, 0x2E]
movs r0, 0xD
ands r0, r1
cmp r0, 0
beq _080ECAD8
ldr r0, [r4]
ldr r1, _080ECAEC @ =sub_80EDBE8
cmp r0, r1
beq _080ECAD8
adds r0, r4, 0
bl sub_80ECAA8
_080ECAD8:
ldr r1, [r4]
adds r0, r4, 0
bl _call_via_r1
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080ECAE8: .4byte gMain
_080ECAEC: .4byte sub_80EDBE8
thumb_func_end sub_80ECAB0
thumb_func_start sub_80ECAF0
sub_80ECAF0: @ 80ECAF0
push {r4,r5,lr}
sub sp, 0xC
adds r5, r0, 0
ldrb r0, [r5, 0x4]
cmp r0, 0
beq _080ECB02
cmp r0, 0x1
beq _080ECB78
b _080ECB8A
_080ECB02:
ldr r0, _080ECB68 @ =gUnknown_840BBA8
bl InitWindows
ldr r0, _080ECB6C @ =gUnknown_840272C
ldr r1, _080ECB70 @ =0x0000043c
adds r4, r5, r1
adds r1, r4, 0
bl LZ77UnCompWram
ldr r0, _080ECB74 @ =gUnknown_84028F8
adds r1, r5, 0
adds r1, 0x3C
bl LZ77UnCompWram
movs r0, 0x20
str r0, [sp]
str r0, [sp, 0x4]
movs r0, 0x11
str r0, [sp, 0x8]
movs r0, 0x2
movs r1, 0
movs r2, 0
movs r3, 0
bl FillBgTilemapBufferRect
movs r0, 0
movs r1, 0
bl FillWindowPixelBuffer
movs r0, 0x90
str r0, [sp]
movs r0, 0x10
str r0, [sp, 0x4]
movs r0, 0
adds r1, r4, 0
movs r2, 0
movs r3, 0x28
bl BlitBitmapToWindow
movs r0, 0
bl PutWindowTilemap
movs r0, 0
movs r1, 0x3
bl CopyWindowToVram
ldrb r0, [r5, 0x4]
adds r0, 0x1
strb r0, [r5, 0x4]
b _080ECB8A
.align 2, 0
_080ECB68: .4byte gUnknown_840BBA8
_080ECB6C: .4byte gUnknown_840272C
_080ECB70: .4byte 0x0000043c
_080ECB74: .4byte gUnknown_84028F8
_080ECB78:
bl IsDma3ManagerBusyWithBgCopy
lsls r0, 24
cmp r0, 0
bne _080ECB8A
ldr r1, _080ECB94 @ =sub_80ECB98
adds r0, r5, 0
bl sub_80ECAA8
_080ECB8A:
add sp, 0xC
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080ECB94: .4byte sub_80ECB98
thumb_func_end sub_80ECAF0
thumb_func_start sub_80ECB98
sub_80ECB98: @ 80ECB98
push {r4,r5,lr}
adds r4, r0, 0
ldrb r5, [r4, 0x4]
cmp r5, 0x1
beq _080ECBE2
cmp r5, 0x1
bgt _080ECBAC
cmp r5, 0
beq _080ECBB2
b _080ECC32
_080ECBAC:
cmp r5, 0x2
beq _080ECBFC
b _080ECC32
_080ECBB2:
movs r1, 0x80
lsls r1, 7
movs r0, 0
bl SetGpuRegBits
movs r1, 0xFC
lsls r1, 6
movs r0, 0x48
bl SetGpuReg
movs r0, 0x4A
movs r1, 0
bl SetGpuReg
movs r0, 0x42
movs r1, 0xF0
bl SetGpuReg
movs r0, 0x46
movs r1, 0
bl SetGpuReg
strh r5, [r4, 0x12]
b _080ECBF4
_080ECBE2:
movs r0, 0x3
bl ShowBg
movs r0, 0x1
negs r0, r0
movs r1, 0
movs r2, 0
bl BlendPalettes
_080ECBF4:
ldrb r0, [r4, 0x4]
adds r0, 0x1
strb r0, [r4, 0x4]
b _080ECC32
_080ECBFC:
ldrh r0, [r4, 0x12]
adds r0, 0x8
strh r0, [r4, 0x12]
lsls r0, 16
lsrs r0, 16
cmp r0, 0x2F
bls _080ECC0E
movs r0, 0x30
strh r0, [r4, 0x12]
_080ECC0E:
ldrh r0, [r4, 0x12]
movs r1, 0x50
subs r1, r0
lsls r1, 8
adds r0, 0x50
orrs r1, r0
lsls r1, 16
lsrs r1, 16
movs r0, 0x46
bl SetGpuReg
ldrh r0, [r4, 0x12]
cmp r0, 0x30
bne _080ECC32
ldr r1, _080ECC38 @ =sub_80ECC3C
adds r0, r4, 0
bl sub_80ECAA8
_080ECC32:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080ECC38: .4byte sub_80ECC3C
thumb_func_end sub_80ECB98
thumb_func_start sub_80ECC3C
sub_80ECC3C: @ 80ECC3C
push {r4,r5,lr}
adds r4, r0, 0
ldrb r5, [r4, 0x4]
cmp r5, 0x1
beq _080ECC68
cmp r5, 0x1
bgt _080ECC50
cmp r5, 0
beq _080ECC56
b _080ECC9C
_080ECC50:
cmp r5, 0x2
beq _080ECC86
b _080ECC9C
_080ECC56:
ldr r0, _080ECC64 @ =0x00000141
bl PlaySE
bl sub_80EDC40
strh r5, [r4, 0x12]
b _080ECC7E
.align 2, 0
_080ECC64: .4byte 0x00000141
_080ECC68:
ldrh r0, [r4, 0x12]
adds r0, 0x1
strh r0, [r4, 0x12]
lsls r0, 16
lsrs r0, 16
cmp r0, 0x1E
bne _080ECC9C
bl sub_80EDDF0
movs r0, 0
strh r0, [r4, 0x12]
_080ECC7E:
ldrb r0, [r4, 0x4]
adds r0, 0x1
strb r0, [r4, 0x4]
b _080ECC9C
_080ECC86:
ldrh r0, [r4, 0x12]
adds r0, 0x1
strh r0, [r4, 0x12]
lsls r0, 16
lsrs r0, 16
cmp r0, 0x5A
bne _080ECC9C
ldr r1, _080ECCA4 @ =sub_80ECCA8
adds r0, r4, 0
bl sub_80ECAA8
_080ECC9C:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080ECCA4: .4byte sub_80ECCA8
thumb_func_end sub_80ECC3C
thumb_func_start sub_80ECCA8
sub_80ECCA8: @ 80ECCA8
push {r4,r5,lr}
sub sp, 0x8
adds r4, r0, 0
ldrb r0, [r4, 0x4]
cmp r0, 0x5
bhi _080ECD54
lsls r0, 2
ldr r1, _080ECCC0 @ =_080ECCC4
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080ECCC0: .4byte _080ECCC4
.align 2, 0
_080ECCC4:
.4byte _080ECCDC
.4byte _080ECCE6
.4byte _080ECCF6
.4byte _080ECD18
.4byte _080ECD20
.4byte _080ECD3E
_080ECCDC:
bl sub_80EDED8
movs r0, 0
strh r0, [r4, 0x12]
b _080ECD36
_080ECCE6:
ldrh r0, [r4, 0x12]
adds r0, 0x1
strh r0, [r4, 0x12]
lsls r0, 16
lsrs r0, 16
cmp r0, 0x27
bls _080ECD54
b _080ECD36
_080ECCF6:
ldr r1, _080ECD14 @ =0x00003f44
movs r0, 0x50
bl SetGpuReg
movs r0, 0x30
str r0, [sp]
movs r0, 0
str r0, [sp, 0x4]
movs r1, 0x10
movs r2, 0x10
movs r3, 0
bl sub_812E944
b _080ECD36
.align 2, 0
_080ECD14: .4byte 0x00003f44
_080ECD18:
movs r0, 0x2
bl ShowBg
b _080ECD36
_080ECD20:
bl sub_812E9E4
lsls r0, 24
lsrs r5, r0, 24
cmp r5, 0
bne _080ECD54
movs r0, 0x50
movs r1, 0
bl SetGpuReg
strh r5, [r4, 0x12]
_080ECD36:
ldrb r0, [r4, 0x4]
adds r0, 0x1
strb r0, [r4, 0x4]
b _080ECD54
_080ECD3E:
ldrh r0, [r4, 0x12]
adds r0, 0x1
strh r0, [r4, 0x12]
lsls r0, 16
lsrs r0, 16
cmp r0, 0x32
bls _080ECD54
ldr r1, _080ECD5C @ =sub_80ECD60
adds r0, r4, 0
bl sub_80ECAA8
_080ECD54:
add sp, 0x8
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080ECD5C: .4byte sub_80ECD60
thumb_func_end sub_80ECCA8
thumb_func_start sub_80ECD60
sub_80ECD60: @ 80ECD60
push {r4-r6,lr}
sub sp, 0x8
adds r6, r0, 0
ldrb r0, [r6, 0x4]
cmp r0, 0x7
bls _080ECD6E
b _080ECE96
_080ECD6E:
lsls r0, 2
ldr r1, _080ECD78 @ =_080ECD7C
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080ECD78: .4byte _080ECD7C
.align 2, 0
_080ECD7C:
.4byte _080ECD9C
.4byte _080ECDC4
.4byte _080ECDCC
.4byte _080ECE10
.4byte _080ECE26
.4byte _080ECE52
.4byte _080ECE64
.4byte _080ECE78
_080ECD9C:
ldr r1, _080ECDC0 @ =0x00003f50
movs r0, 0x50
bl SetGpuReg
movs r5, 0x10
str r5, [sp]
movs r4, 0
str r4, [sp, 0x4]
movs r0, 0
movs r1, 0x10
movs r2, 0x10
movs r3, 0
bl sub_812E944
strh r4, [r6, 0x8]
strh r5, [r6, 0xA]
strh r4, [r6, 0x12]
b _080ECE70
.align 2, 0
_080ECDC0: .4byte 0x00003f50
_080ECDC4:
bl sub_80EDF68
str r0, [r6, 0x14]
b _080ECE70
_080ECDCC:
bl sub_812E9E4
lsls r0, 24
cmp r0, 0
bne _080ECE96
adds r1, r6, 0
adds r1, 0x3C
movs r0, 0x20
str r0, [sp]
movs r0, 0x40
str r0, [sp, 0x4]
movs r0, 0
movs r2, 0x38
movs r3, 0x6
bl BlitBitmapToWindow
ldr r0, _080ECE0C @ =0x0000043c
adds r1, r6, r0
movs r0, 0x90
str r0, [sp]
movs r0, 0x10
str r0, [sp, 0x4]
movs r0, 0
movs r2, 0
movs r3, 0x28
bl BlitBitmapToWindow
movs r0, 0
movs r1, 0x2
bl CopyWindowToVram
b _080ECE70
.align 2, 0
_080ECE0C: .4byte 0x0000043c
_080ECE10:
bl IsDma3ManagerBusyWithBgCopy
lsls r0, 24
lsrs r4, r0, 24
cmp r4, 0
bne _080ECE96
ldr r0, [r6, 0x14]
bl DestroySprite
strh r4, [r6, 0x12]
b _080ECE70
_080ECE26:
ldrh r0, [r6, 0x12]
adds r0, 0x1
strh r0, [r6, 0x12]
lsls r0, 16
lsrs r0, 16
cmp r0, 0x5A
bls _080ECE96
movs r0, 0x50
movs r1, 0x4
bl SetGpuRegBits
movs r0, 0x14
str r0, [sp]
movs r0, 0
str r0, [sp, 0x4]
movs r0, 0x10
movs r1, 0
movs r2, 0
movs r3, 0x10
bl sub_812E944
b _080ECE70
_080ECE52:
bl sub_812E9E4
lsls r0, 24
cmp r0, 0
bne _080ECE96
movs r0, 0x2
bl HideBg
b _080ECE70
_080ECE64:
bl ResetSpriteData
bl FreeAllSpritePalettes
movs r0, 0
strh r0, [r6, 0x12]
_080ECE70:
ldrb r0, [r6, 0x4]
adds r0, 0x1
strb r0, [r6, 0x4]
b _080ECE96
_080ECE78:
ldrh r0, [r6, 0x12]
adds r0, 0x1
strh r0, [r6, 0x12]
lsls r0, 16
lsrs r0, 16
cmp r0, 0x14
bls _080ECE96
movs r0, 0x50
movs r1, 0
bl SetGpuReg
ldr r1, _080ECEA0 @ =sub_80ECEA4
adds r0, r6, 0
bl sub_80ECAA8
_080ECE96:
add sp, 0x8
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080ECEA0: .4byte sub_80ECEA4
thumb_func_end sub_80ECD60
thumb_func_start sub_80ECEA4
sub_80ECEA4: @ 80ECEA4
push {r4,r5,lr}
sub sp, 0x4
adds r5, r0, 0
ldrb r0, [r5, 0x4]
cmp r0, 0x5
bls _080ECEB2
b _080ED094
_080ECEB2:
lsls r0, 2
ldr r1, _080ECEBC @ =_080ECEC0
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080ECEBC: .4byte _080ECEC0
.align 2, 0
_080ECEC0:
.4byte _080ECED8
.4byte _080ECF64
.4byte _080ECFA4
.4byte _080ECFD8
.4byte _080ED000
.4byte _080ED064
_080ECED8:
movs r0, 0
bl SetVBlankCallback
ldr r0, _080ECF48 @ =gUnknown_8402D34
movs r1, 0x10
movs r2, 0x20
bl LoadPalette
ldr r0, _080ECF4C @ =gUnknown_84048CC
movs r1, 0x20
movs r2, 0x20
bl LoadPalette
ldr r2, _080ECF50 @ =0x00007fff
movs r0, 0x6
movs r1, 0x10
bl BlendPalettes
ldr r1, _080ECF54 @ =gUnknown_840BB88
movs r0, 0
movs r2, 0x2
bl InitBgsFromTemplates
ldr r1, _080ECF58 @ =gUnknown_84048EC
movs r0, 0
str r0, [sp]
movs r0, 0x1
movs r2, 0
movs r3, 0
bl decompress_and_copy_tile_data_to_vram
ldr r1, _080ECF5C @ =gUnknown_8404F7C
movs r0, 0x1
str r0, [sp]
movs r2, 0
movs r3, 0
bl decompress_and_copy_tile_data_to_vram
movs r0, 0x1
bl ShowBg
movs r0, 0
bl HideBg
movs r0, 0x2
bl HideBg
movs r0, 0x3
bl HideBg
bl sub_80EEBE4
ldr r0, _080ECF60 @ =sub_80EC9EC
bl SetVBlankCallback
b _080ECFF0
.align 2, 0
_080ECF48: .4byte gUnknown_8402D34
_080ECF4C: .4byte gUnknown_84048CC
_080ECF50: .4byte 0x00007fff
_080ECF54: .4byte gUnknown_840BB88
_080ECF58: .4byte gUnknown_84048EC
_080ECF5C: .4byte gUnknown_8404F7C
_080ECF60: .4byte sub_80EC9EC
_080ECF64:
bl free_temp_tile_data_buffers_if_possible
lsls r0, 24
lsrs r0, 24
cmp r0, 0
beq _080ECF72
b _080ED094
_080ECF72:
ldr r1, _080ECF9C @ =gUnknown_8402D54
str r0, [sp]
movs r0, 0
movs r2, 0
movs r3, 0
bl decompress_and_copy_tile_data_to_vram
ldr r1, _080ECFA0 @ =gUnknown_8403FE8
movs r0, 0x1
str r0, [sp]
movs r0, 0
movs r2, 0
movs r3, 0
bl decompress_and_copy_tile_data_to_vram
bl sub_80F6C14
movs r0, 0x1
bl ShowBg
b _080ECFF0
.align 2, 0
_080ECF9C: .4byte gUnknown_8402D54
_080ECFA0: .4byte gUnknown_8403FE8
_080ECFA4:
bl free_temp_tile_data_buffers_if_possible
lsls r0, 24
cmp r0, 0
bne _080ED094
movs r0, 0
bl ShowBg
ldr r0, _080ECFD0 @ =sub_80ED0AC
movs r1, 0
bl CreateTask
movs r1, 0x2
negs r1, r1
ldr r0, _080ECFD4 @ =0x00007fff
str r0, [sp]
movs r0, 0x6
movs r2, 0x10
movs r3, 0
bl BeginNormalPaletteFade
b _080ECFF0
.align 2, 0
_080ECFD0: .4byte sub_80ED0AC
_080ECFD4: .4byte 0x00007fff
_080ECFD8:
ldr r0, _080ECFF8 @ =gPaletteFade
ldrb r1, [r0, 0x7]
movs r0, 0x80
ands r0, r1
lsls r0, 24
lsrs r4, r0, 24
cmp r4, 0
bne _080ED094
ldr r0, _080ECFFC @ =0x00000115
bl m4aSongNumStart
strh r4, [r5, 0x12]
_080ECFF0:
ldrb r0, [r5, 0x4]
adds r0, 0x1
strb r0, [r5, 0x4]
b _080ED094
.align 2, 0
_080ECFF8: .4byte gPaletteFade
_080ECFFC: .4byte 0x00000115
_080ED000:
ldrh r0, [r5, 0x12]
adds r0, 0x1
strh r0, [r5, 0x12]
lsls r0, 16
lsrs r0, 16
cmp r0, 0x14
bne _080ED01A
ldr r0, _080ED054 @ =sub_80ED140
movs r1, 0
bl CreateTask
bl sub_80ED118
_080ED01A:
ldrh r0, [r5, 0x12]
cmp r0, 0x1D
bls _080ED094
movs r0, 0x2
negs r0, r0
ldr r2, _080ED058 @ =0x00007fff
movs r1, 0x10
bl BlendPalettes
ldr r0, _080ED05C @ =sub_80ED0AC
bl FindTaskIdByFunc
lsls r0, 24
lsrs r0, 24
bl DestroyTask
ldr r0, _080ED054 @ =sub_80ED140
bl FindTaskIdByFunc
lsls r0, 24
lsrs r0, 24
bl DestroyTask
ldr r1, _080ED060 @ =sub_80ED188
adds r0, r5, 0
bl sub_80ECAA8
b _080ED094
.align 2, 0
_080ED054: .4byte sub_80ED140
_080ED058: .4byte 0x00007fff
_080ED05C: .4byte sub_80ED0AC
_080ED060: .4byte sub_80ED188
_080ED064:
ldr r0, _080ED09C @ =gPaletteFade
ldrb r1, [r0, 0x7]
movs r0, 0x80
ands r0, r1
cmp r0, 0
bne _080ED094
ldr r0, _080ED0A0 @ =sub_80ED0AC
bl FindTaskIdByFunc
lsls r0, 24
lsrs r0, 24
bl DestroyTask
ldr r0, _080ED0A4 @ =sub_80ED140
bl FindTaskIdByFunc
lsls r0, 24
lsrs r0, 24
bl DestroyTask
ldr r1, _080ED0A8 @ =sub_80ED188
adds r0, r5, 0
bl sub_80ECAA8
_080ED094:
add sp, 0x4
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080ED09C: .4byte gPaletteFade
_080ED0A0: .4byte sub_80ED0AC
_080ED0A4: .4byte sub_80ED140
_080ED0A8: .4byte sub_80ED188
thumb_func_end sub_80ECEA4
thumb_func_start sub_80ED0AC
sub_80ED0AC: @ 80ED0AC
push {r4,lr}
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
ldr r0, _080ED114 @ =gTasks+0x8
adds r4, r1, r0
ldrh r0, [r4]
adds r0, 0x1
strh r0, [r4]
lsls r0, 16
asrs r0, 16
cmp r0, 0x5
ble _080ED0EC
movs r1, 0
strh r1, [r4]
ldrh r0, [r4, 0x2]
adds r0, 0x1
strh r0, [r4, 0x2]
lsls r0, 16
asrs r0, 16
cmp r0, 0x2
ble _080ED0DE
strh r1, [r4, 0x2]
_080ED0DE:
movs r0, 0x2
ldrsh r1, [r4, r0]
lsls r1, 15
movs r0, 0
movs r2, 0
bl ChangeBgY
_080ED0EC:
movs r1, 0x4
ldrsh r0, [r4, r1]
cmp r0, 0
beq _080ED10C
movs r1, 0x90
lsls r1, 1
adds r0, r1, 0
ldrh r1, [r4, 0x6]
adds r0, r1
strh r0, [r4, 0x6]
movs r0, 0x6
ldrsh r1, [r4, r0]
movs r0, 0
movs r2, 0x2
bl ChangeBgY
_080ED10C:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080ED114: .4byte gTasks+0x8
thumb_func_end sub_80ED0AC
thumb_func_start sub_80ED118
sub_80ED118: @ 80ED118
push {lr}
ldr r0, _080ED138 @ =sub_80ED0AC
bl FindTaskIdByFunc
lsls r0, 24
lsrs r0, 24
ldr r2, _080ED13C @ =gTasks
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
adds r1, r2
movs r0, 0x1
strh r0, [r1, 0xC]
pop {r0}
bx r0
.align 2, 0
_080ED138: .4byte sub_80ED0AC
_080ED13C: .4byte gTasks
thumb_func_end sub_80ED118
thumb_func_start sub_80ED140
sub_80ED140: @ 80ED140
push {lr}
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
ldr r0, _080ED184 @ =gTasks+0x8
adds r1, r0
ldrh r0, [r1]
adds r0, 0x1
strh r0, [r1]
lsls r0, 16
asrs r0, 16
cmp r0, 0x3
ble _080ED17E
movs r0, 0
strh r0, [r1]
ldrh r2, [r1, 0x2]
movs r3, 0x2
ldrsh r0, [r1, r3]
cmp r0, 0x1
bgt _080ED170
adds r0, r2, 0x1
strh r0, [r1, 0x2]
_080ED170:
movs r0, 0x2
ldrsh r1, [r1, r0]
lsls r1, 15
movs r0, 0x1
movs r2, 0
bl ChangeBgY
_080ED17E:
pop {r0}
bx r0
.align 2, 0
_080ED184: .4byte gTasks+0x8
thumb_func_end sub_80ED140
thumb_func_start sub_80ED188
sub_80ED188: @ 80ED188
push {r4-r7,lr}
mov r7, r8
push {r7}
sub sp, 0x4
adds r7, r0, 0
ldrb r0, [r7, 0x4]
cmp r0, 0x6
bls _080ED19A
b _080ED3F6
_080ED19A:
lsls r0, 2
ldr r1, _080ED1A4 @ =_080ED1A8
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080ED1A4: .4byte _080ED1A8
.align 2, 0
_080ED1A8:
.4byte _080ED1C4
.4byte _080ED214
.4byte _080ED32C
.4byte _080ED350
.4byte _080ED360
.4byte _080ED3BC
.4byte _080ED3D2
_080ED1C4:
movs r0, 0x2
negs r0, r0
ldr r2, _080ED204 @ =0x00007fff
movs r1, 0x10
bl BlendPalettes
ldr r1, _080ED208 @ =gUnknown_840BB90
movs r0, 0
movs r2, 0x4
bl InitBgsFromTemplates
ldr r1, _080ED20C @ =gUnknown_8405414
movs r0, 0
str r0, [sp]
movs r0, 0x3
movs r2, 0
movs r3, 0
bl decompress_and_copy_tile_data_to_vram
ldr r1, _080ED210 @ =gUnknown_8405890
movs r0, 0x1
str r0, [sp]
movs r0, 0x3
movs r2, 0
movs r3, 0
bl decompress_and_copy_tile_data_to_vram
movs r0, 0x3
bl ShowBg
b _080ED3CA
.align 2, 0
_080ED204: .4byte 0x00007fff
_080ED208: .4byte gUnknown_840BB90
_080ED20C: .4byte gUnknown_8405414
_080ED210: .4byte gUnknown_8405890
_080ED214:
bl free_temp_tile_data_buffers_if_possible
lsls r0, 24
lsrs r6, r0, 24
cmp r6, 0
beq _080ED222
b _080ED3F6
_080ED222:
movs r0, 0
bl SetVBlankCallback
ldr r0, _080ED2FC @ =gUnknown_84053B4
movs r1, 0x10
movs r2, 0x60
bl LoadPalette
ldr r0, _080ED300 @ =gUnknown_8405DA4
movs r1, 0x50
movs r2, 0x20
bl LoadPalette
ldr r0, _080ED304 @ =gUnknown_8406634
movs r1, 0x60
movs r2, 0x20
bl LoadPalette
movs r5, 0x2
negs r5, r5
ldr r0, _080ED308 @ =0x00007fff
mov r8, r0
adds r0, r5, 0
movs r1, 0x10
mov r2, r8
bl BlendPalettes
ldr r1, _080ED30C @ =gUnknown_8405B28
str r6, [sp]
movs r0, 0
movs r2, 0
movs r3, 0
bl decompress_and_copy_tile_data_to_vram
ldr r1, _080ED310 @ =gUnknown_8405CDC
movs r4, 0x1
str r4, [sp]
movs r0, 0
movs r2, 0
movs r3, 0
bl decompress_and_copy_tile_data_to_vram
ldr r1, _080ED314 @ =gUnknown_8406654
str r6, [sp]
movs r0, 0x1
movs r2, 0
movs r3, 0
bl decompress_and_copy_tile_data_to_vram
ldr r1, _080ED318 @ =gUnknown_84071D0
str r4, [sp]
movs r0, 0x1
movs r2, 0
movs r3, 0
bl decompress_and_copy_tile_data_to_vram
ldr r1, _080ED31C @ =gUnknown_8405DC4
str r6, [sp]
movs r0, 0x2
movs r2, 0
movs r3, 0
bl decompress_and_copy_tile_data_to_vram
ldr r1, _080ED320 @ =gUnknown_840644C
str r4, [sp]
movs r0, 0x2
movs r2, 0
movs r3, 0
bl decompress_and_copy_tile_data_to_vram
bl sub_80F6C14
movs r0, 0
bl ShowBg
movs r0, 0x1
bl HideBg
movs r0, 0x2
bl HideBg
movs r1, 0xE7
lsls r1, 9
movs r0, 0x2
movs r2, 0
bl ChangeBgY
movs r1, 0xA0
lsls r1, 6
movs r0, 0x1
movs r2, 0
bl ChangeBgY
ldr r0, _080ED324 @ =sub_80ED40C
movs r1, 0
bl CreateTask
adds r0, r7, 0
bl sub_80ED444
adds r0, r5, 0
movs r1, 0x10
mov r2, r8
bl BlendPalettes
ldr r0, _080ED328 @ =sub_80EC9EC
bl SetVBlankCallback
b _080ED3CA
.align 2, 0
_080ED2FC: .4byte gUnknown_84053B4
_080ED300: .4byte gUnknown_8405DA4
_080ED304: .4byte gUnknown_8406634
_080ED308: .4byte 0x00007fff
_080ED30C: .4byte gUnknown_8405B28
_080ED310: .4byte gUnknown_8405CDC
_080ED314: .4byte gUnknown_8406654
_080ED318: .4byte gUnknown_84071D0
_080ED31C: .4byte gUnknown_8405DC4
_080ED320: .4byte gUnknown_840644C
_080ED324: .4byte sub_80ED40C
_080ED328: .4byte sub_80EC9EC
_080ED32C:
bl free_temp_tile_data_buffers_if_possible
lsls r0, 24
cmp r0, 0
bne _080ED3F6
movs r1, 0x2
negs r1, r1
ldr r0, _080ED34C @ =0x00007fff
str r0, [sp]
adds r0, r1, 0
movs r2, 0x10
movs r3, 0
bl BeginNormalPaletteFade
b _080ED3CA
.align 2, 0
_080ED34C: .4byte 0x00007fff
_080ED350:
ldr r0, _080ED35C @ =gPaletteFade
ldrb r1, [r0, 0x7]
movs r0, 0x80
ands r0, r1
b _080ED3C0
.align 2, 0
_080ED35C: .4byte gPaletteFade
_080ED360:
ldrh r0, [r7, 0x12]
adds r0, 0x1
strh r0, [r7, 0x12]
lsls r0, 16
lsrs r0, 16
cmp r0, 0x3B
bls _080ED3F6
movs r0, 0
strh r0, [r7, 0x12]
ldr r0, _080ED3B4 @ =sub_80ED40C
bl FindTaskIdByFunc
lsls r0, 24
lsrs r0, 24
bl DestroyTask
adds r0, r7, 0
bl sub_80ED4A0
ldr r0, _080ED3B8 @ =sub_80ED428
movs r1, 0
bl CreateTask
movs r1, 0x80
lsls r1, 9
movs r0, 0x3
movs r2, 0
bl ChangeBgY
movs r0, 0
bl HideBg
movs r0, 0x3
bl ShowBg
movs r0, 0x1
bl ShowBg
movs r0, 0x2
bl ShowBg
b _080ED3CA
.align 2, 0
_080ED3B4: .4byte sub_80ED40C
_080ED3B8: .4byte sub_80ED428
_080ED3BC:
bl IsDma3ManagerBusyWithBgCopy
_080ED3C0:
lsls r0, 24
lsrs r0, 24
cmp r0, 0
bne _080ED3F6
strh r0, [r7, 0x12]
_080ED3CA:
ldrb r0, [r7, 0x4]
adds r0, 0x1
strb r0, [r7, 0x4]
b _080ED3F6
_080ED3D2:
ldrh r0, [r7, 0x12]
adds r0, 0x1
strh r0, [r7, 0x12]
lsls r0, 16
lsrs r0, 16
cmp r0, 0x3B
bls _080ED3F6
ldr r0, _080ED404 @ =sub_80ED428
bl FindTaskIdByFunc
lsls r0, 24
lsrs r0, 24
bl DestroyTask
ldr r1, _080ED408 @ =sub_80ED4C0
adds r0, r7, 0
bl sub_80ECAA8
_080ED3F6:
add sp, 0x4
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080ED404: .4byte sub_80ED428
_080ED408: .4byte sub_80ED4C0
thumb_func_end sub_80ED188
thumb_func_start sub_80ED40C
sub_80ED40C: @ 80ED40C
push {lr}
movs r0, 0x3
movs r1, 0xE0
movs r2, 0x2
bl ChangeBgX
movs r1, 0x88
lsls r1, 1
movs r0, 0
movs r2, 0x1
bl ChangeBgX
pop {r0}
bx r0
thumb_func_end sub_80ED40C
thumb_func_start sub_80ED428
sub_80ED428: @ 80ED428
push {lr}
movs r0, 0x2
movs r1, 0x20
movs r2, 0x1
bl ChangeBgY
movs r0, 0x1
movs r1, 0x24
movs r2, 0x2
bl ChangeBgY
pop {r0}
bx r0
thumb_func_end sub_80ED428
thumb_func_start sub_80ED444
sub_80ED444: @ 80ED444
push {r4,lr}
adds r4, r0, 0
movs r0, 0
str r0, [r4, 0x1C]
str r0, [r4, 0x20]
ldr r0, _080ED494 @ =gUnknown_840BDA8
movs r1, 0xA8
movs r2, 0x50
movs r3, 0xB
bl CreateSprite
lsls r0, 24
lsrs r1, r0, 24
cmp r1, 0x40
beq _080ED46E
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
ldr r1, _080ED498 @ =gSprites
adds r0, r1
str r0, [r4, 0x20]
_080ED46E:
ldr r0, _080ED49C @ =gUnknown_840BDC0
movs r1, 0x48
movs r2, 0x50
movs r3, 0xC
bl CreateSprite
lsls r0, 24
lsrs r1, r0, 24
cmp r1, 0x40
beq _080ED48E
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
ldr r1, _080ED498 @ =gSprites
adds r0, r1
str r0, [r4, 0x1C]
_080ED48E:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080ED494: .4byte gUnknown_840BDA8
_080ED498: .4byte gSprites
_080ED49C: .4byte gUnknown_840BDC0
thumb_func_end sub_80ED444
thumb_func_start sub_80ED4A0
sub_80ED4A0: @ 80ED4A0
push {r4,lr}
adds r4, r0, 0
ldr r0, [r4, 0x1C]
cmp r0, 0
beq _080ED4AE
bl DestroySprite
_080ED4AE:
ldr r0, [r4, 0x20]
cmp r0, 0
beq _080ED4B8
bl DestroySprite
_080ED4B8:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80ED4A0
thumb_func_start sub_80ED4C0
sub_80ED4C0: @ 80ED4C0
push {r4,r5,lr}
sub sp, 0x4
adds r5, r0, 0
ldrb r4, [r5, 0x4]
cmp r4, 0x1
beq _080ED59C
cmp r4, 0x1
bgt _080ED4D6
cmp r4, 0
beq _080ED4E4
b _080ED68A
_080ED4D6:
cmp r4, 0x2
bne _080ED4DC
b _080ED5FC
_080ED4DC:
cmp r4, 0x3
bne _080ED4E2
b _080ED658
_080ED4E2:
b _080ED68A
_080ED4E4:
ldr r0, _080ED584 @ =gUnknown_8407430
movs r1, 0x10
movs r2, 0x40
bl LoadPalette
ldr r0, _080ED588 @ =gUnknown_8405DA4
movs r1, 0x50
movs r2, 0x20
bl LoadPalette
movs r0, 0x2
negs r0, r0
ldr r2, _080ED58C @ =0x00007fff
movs r1, 0x10
bl BlendPalettes
ldr r1, _080ED590 @ =gUnknown_840BBA0
movs r0, 0
movs r2, 0x2
bl InitBgsFromTemplates
ldr r1, _080ED594 @ =gUnknown_8407470
str r4, [sp]
movs r0, 0x1
movs r2, 0
movs r3, 0
bl decompress_and_copy_tile_data_to_vram
ldr r1, _080ED598 @ =gUnknown_8407A50
movs r0, 0x1
str r0, [sp]
movs r2, 0
movs r3, 0
bl decompress_and_copy_tile_data_to_vram
movs r0, 0x1
bl ShowBg
movs r0, 0
bl HideBg
movs r0, 0x2
bl HideBg
movs r0, 0x3
bl HideBg
bl sub_80F6C14
ldrb r0, [r5, 0x4]
adds r0, 0x1
strb r0, [r5, 0x4]
movs r1, 0x80
lsls r1, 6
movs r0, 0
bl SetGpuRegBits
movs r0, 0x48
movs r1, 0x12
bl SetGpuRegBits
movs r0, 0x48
movs r1, 0x1
bl ClearGpuRegBits
movs r0, 0x4A
movs r1, 0
bl SetGpuRegBits
movs r1, 0x82
lsls r1, 6
movs r0, 0x44
bl SetGpuReg
movs r0, 0x40
movs r1, 0x78
bl SetGpuReg
b _080ED68A
.align 2, 0
_080ED584: .4byte gUnknown_8407430
_080ED588: .4byte gUnknown_8405DA4
_080ED58C: .4byte 0x00007fff
_080ED590: .4byte gUnknown_840BBA0
_080ED594: .4byte gUnknown_8407470
_080ED598: .4byte gUnknown_8407A50
_080ED59C:
bl free_temp_tile_data_buffers_if_possible
lsls r0, 24
lsrs r0, 24
cmp r0, 0
bne _080ED68A
ldr r1, _080ED5EC @ =gUnknown_8407B9C
str r0, [sp]
movs r0, 0
movs r2, 0
movs r3, 0
bl decompress_and_copy_tile_data_to_vram
ldr r1, _080ED5F0 @ =gUnknown_8408D98
str r4, [sp]
movs r0, 0
movs r2, 0
movs r3, 0
bl decompress_and_copy_tile_data_to_vram
ldr r1, _080ED5F4 @ =gUnknown_203AB00
movs r0, 0x4
strh r0, [r1]
ldr r1, _080ED5F8 @ =gUnknown_203AB02
movs r0, 0x34
strh r0, [r1]
movs r1, 0xC0
lsls r1, 5
movs r0, 0
movs r2, 0
bl ChangeBgX
movs r1, 0xF8
lsls r1, 9
movs r0, 0
movs r2, 0
bl ChangeBgY
b _080ED642
.align 2, 0
_080ED5EC: .4byte gUnknown_8407B9C
_080ED5F0: .4byte gUnknown_8408D98
_080ED5F4: .4byte gUnknown_203AB00
_080ED5F8: .4byte gUnknown_203AB02
_080ED5FC:
bl free_temp_tile_data_buffers_if_possible
lsls r0, 24
lsrs r4, r0, 24
cmp r4, 0
bne _080ED68A
movs r0, 0x2
negs r0, r0
ldr r2, _080ED64C @ =0x00007fff
movs r1, 0
bl BlendPalettes
movs r0, 0
bl ShowBg
ldr r0, _080ED650 @ =sub_80ED714
movs r1, 0
bl CreateTask
adds r0, r5, 0
bl sub_80EE4F8
ldr r0, [r5, 0x18]
movs r1, 0
movs r2, 0xB4
movs r3, 0x34
bl sub_80EE528
ldr r0, _080ED654 @ =sub_80EE200
movs r1, 0
bl CreateTask
bl sub_80ED6D8
strh r4, [r5, 0x12]
_080ED642:
ldrb r0, [r5, 0x4]
adds r0, 0x1
strb r0, [r5, 0x4]
b _080ED68A
.align 2, 0
_080ED64C: .4byte 0x00007fff
_080ED650: .4byte sub_80ED714
_080ED654: .4byte sub_80EE200
_080ED658:
ldrh r0, [r5, 0x12]
adds r0, 0x1
strh r0, [r5, 0x12]
lsls r0, 16
lsrs r0, 16
cmp r0, 0x10
bne _080ED66C
adds r0, r5, 0
bl sub_80ED7D4
_080ED66C:
adds r0, r5, 0
bl sub_80EE5C8
cmp r0, 0
bne _080ED68A
ldr r0, _080ED694 @ =sub_80EE200
bl FuncIsActiveTask
lsls r0, 24
cmp r0, 0
bne _080ED68A
ldr r1, _080ED698 @ =sub_80ED898
adds r0, r5, 0
bl sub_80ECAA8
_080ED68A:
add sp, 0x4
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080ED694: .4byte sub_80EE200
_080ED698: .4byte sub_80ED898
thumb_func_end sub_80ED4C0
thumb_func_start sub_80ED69C
sub_80ED69C: @ 80ED69C
push {lr}
lsls r0, 24
lsrs r0, 24
ldr r2, _080ED6C4 @ =gTasks
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
adds r1, r2
movs r2, 0x8
ldrsh r0, [r1, r2]
cmp r0, 0
bne _080ED6C8
movs r1, 0x80
lsls r1, 3
movs r0, 0x1
movs r2, 0x2
bl ChangeBgX
b _080ED6D2
.align 2, 0
_080ED6C4: .4byte gTasks
_080ED6C8:
movs r0, 0x1
movs r1, 0x20
movs r2, 0x2
bl ChangeBgX
_080ED6D2:
pop {r0}
bx r0
thumb_func_end sub_80ED69C
thumb_func_start sub_80ED6D8
sub_80ED6D8: @ 80ED6D8
push {lr}
ldr r0, _080ED6E8 @ =sub_80ED69C
movs r1, 0
bl CreateTask
pop {r0}
bx r0
.align 2, 0
_080ED6E8: .4byte sub_80ED69C
thumb_func_end sub_80ED6D8
thumb_func_start sub_80ED6EC
sub_80ED6EC: @ 80ED6EC
push {lr}
ldr r0, _080ED70C @ =sub_80ED69C
bl FindTaskIdByFunc
lsls r0, 24
lsrs r0, 24
ldr r2, _080ED710 @ =gTasks
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
adds r1, r2
movs r0, 0x1
strh r0, [r1, 0x8]
pop {r0}
bx r0
.align 2, 0
_080ED70C: .4byte sub_80ED69C
_080ED710: .4byte gTasks
thumb_func_end sub_80ED6EC
thumb_func_start sub_80ED714
sub_80ED714: @ 80ED714
push {lr}
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
ldr r0, _080ED75C @ =gTasks+0x8
adds r2, r1, r0
movs r0, 0
ldrsh r1, [r2, r0]
cmp r1, 0
bne _080ED758
ldrh r0, [r2, 0x2]
adds r0, 0x1
strh r0, [r2, 0x2]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1D
ble _080ED758
strh r1, [r2, 0x2]
ldrh r0, [r2, 0x4]
movs r1, 0x1
eors r0, r1
strh r0, [r2, 0x4]
movs r0, 0x4
ldrsh r1, [r2, r0]
lsls r1, 15
movs r0, 0xF8
lsls r0, 9
adds r1, r0
movs r0, 0
movs r2, 0
bl ChangeBgY
_080ED758:
pop {r0}
bx r0
.align 2, 0
_080ED75C: .4byte gTasks+0x8
thumb_func_end sub_80ED714
thumb_func_start sub_80ED760
sub_80ED760: @ 80ED760
push {lr}
ldr r0, _080ED780 @ =sub_80ED714
bl FindTaskIdByFunc
lsls r0, 24
lsrs r0, 24
ldr r2, _080ED784 @ =gTasks
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
adds r1, r2
movs r0, 0x1
strh r0, [r1, 0x8]
pop {r0}
bx r0
.align 2, 0
_080ED780: .4byte sub_80ED714
_080ED784: .4byte gTasks
thumb_func_end sub_80ED760
thumb_func_start sub_80ED788
sub_80ED788: @ 80ED788
push {lr}
ldr r0, _080ED7A8 @ =sub_80ED714
bl FindTaskIdByFunc
lsls r0, 24
lsrs r0, 24
ldr r2, _080ED7AC @ =gTasks
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
adds r1, r2
movs r0, 0
strh r0, [r1, 0x8]
pop {r0}
bx r0
.align 2, 0
_080ED7A8: .4byte sub_80ED714
_080ED7AC: .4byte gTasks
thumb_func_end sub_80ED788
thumb_func_start sub_80ED7B0
sub_80ED7B0: @ 80ED7B0
push {lr}
ldr r0, _080ED7CC @ =sub_80ED714
bl FindTaskIdByFunc
lsls r0, 24
lsrs r0, 24
ldr r2, _080ED7D0 @ =gTasks
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
adds r1, r2
ldrb r0, [r1, 0xC]
pop {r1}
bx r1
.align 2, 0
_080ED7CC: .4byte sub_80ED714
_080ED7D0: .4byte gTasks
thumb_func_end sub_80ED7B0
thumb_func_start sub_80ED7D4
sub_80ED7D4: @ 80ED7D4
push {r4,lr}
adds r4, r0, 0
ldr r0, _080ED800 @ =gUnknown_840BDFC
movs r1, 0x94
lsls r1, 1
movs r2, 0x70
movs r3, 0x7
bl CreateSprite
lsls r0, 24
lsrs r1, r0, 24
cmp r1, 0x40
beq _080ED80C
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
ldr r1, _080ED804 @ =gSprites
adds r0, r1
str r0, [r4, 0x24]
ldr r1, _080ED808 @ =sub_80ED818
str r1, [r0, 0x1C]
b _080ED810
.align 2, 0
_080ED800: .4byte gUnknown_840BDFC
_080ED804: .4byte gSprites
_080ED808: .4byte sub_80ED818
_080ED80C:
movs r0, 0
str r0, [r4, 0x24]
_080ED810:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80ED7D4
thumb_func_start sub_80ED818
sub_80ED818: @ 80ED818
push {r4,lr}
adds r2, r0, 0
adds r4, r2, 0
adds r4, 0x2E
movs r1, 0x2E
ldrsh r0, [r2, r1]
cmp r0, 0x1
beq _080ED848
cmp r0, 0x1
bgt _080ED832
cmp r0, 0
beq _080ED838
b _080ED892
_080ED832:
cmp r0, 0x2
beq _080ED866
b _080ED892
_080ED838:
ldrh r0, [r2, 0x20]
lsls r0, 5
strh r0, [r4, 0x2]
movs r0, 0xA0
strh r0, [r4, 0x4]
ldrh r0, [r2, 0x2E]
adds r0, 0x1
strh r0, [r2, 0x2E]
_080ED848:
ldrh r0, [r4, 0x2]
ldrh r1, [r4, 0x4]
subs r0, r1
strh r0, [r4, 0x2]
lsls r0, 16
asrs r0, 21
strh r0, [r2, 0x20]
cmp r0, 0x34
bgt _080ED892
bl sub_80ED6EC
ldrh r0, [r4]
adds r0, 0x1
strh r0, [r4]
b _080ED892
_080ED866:
ldrh r0, [r4, 0x2]
subs r0, 0x20
strh r0, [r4, 0x2]
lsls r0, 16
asrs r0, 21
strh r0, [r2, 0x20]
movs r1, 0x20
negs r1, r1
cmp r0, r1
bgt _080ED892
adds r3, r2, 0
adds r3, 0x3E
ldrb r0, [r3]
movs r1, 0x4
orrs r0, r1
strb r0, [r3]
ldrh r0, [r2, 0x2E]
adds r0, 0x1
strh r0, [r2, 0x2E]
adds r0, r2, 0
bl DestroySprite
_080ED892:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80ED818
thumb_func_start sub_80ED898
sub_80ED898: @ 80ED898
push {r4,r5,lr}
sub sp, 0x8
adds r4, r0, 0
ldrb r0, [r4, 0x4]
cmp r0, 0xF
bls _080ED8A6
b _080EDA98
_080ED8A6:
lsls r0, 2
ldr r1, _080ED8B0 @ =_080ED8B4
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080ED8B0: .4byte _080ED8B4
.align 2, 0
_080ED8B4:
.4byte _080ED8F4
.4byte _080ED8F8
.4byte _080ED910
.4byte _080ED918
.4byte _080ED936
.4byte _080ED946
.4byte _080ED95E
.4byte _080ED97C
.4byte _080ED998
.4byte _080ED9A0
.4byte _080ED9BA
.4byte _080ED9D2
.4byte _080ED9DC
.4byte _080EDA1C
.4byte _080EDA5C
.4byte _080EDA7C
_080ED8F4:
movs r0, 0
b _080EDA6C
_080ED8F8:
ldrh r0, [r4, 0x12]
adds r0, 0x1
strh r0, [r4, 0x12]
lsls r0, 16
lsrs r0, 16
cmp r0, 0x1E
bhi _080ED908
b _080EDAC4
_080ED908:
adds r0, r4, 0
bl sub_80EE5E4
b _080EDA6E
_080ED910:
adds r0, r4, 0
bl sub_80EE850
b _080EDA64
_080ED918:
ldrh r0, [r4, 0x12]
adds r0, 0x1
strh r0, [r4, 0x12]
lsls r0, 16
lsrs r0, 16
cmp r0, 0x1E
bhi _080ED928
b _080EDAC4
_080ED928:
bl sub_80ED760
adds r0, r4, 0
bl sub_80EDF94
movs r0, 0
b _080EDA6C
_080ED936:
ldrb r0, [r4, 0x6]
cmp r0, 0
bne _080ED93E
b _080EDAC4
_080ED93E:
adds r0, r4, 0
bl sub_80EE6A4
b _080EDA6E
_080ED946:
adds r0, r4, 0
bl sub_80EE850
lsls r0, 24
lsrs r5, r0, 24
cmp r5, 0
beq _080ED956
b _080EDAC4
_080ED956:
bl sub_80ED788
strh r5, [r4, 0x12]
b _080EDA6E
_080ED95E:
ldrh r0, [r4, 0x12]
adds r0, 0x1
strh r0, [r4, 0x12]
lsls r0, 16
lsrs r0, 16
cmp r0, 0x10
bhi _080ED96E
b _080EDAC4
_080ED96E:
ldr r0, [r4, 0x18]
movs r1, 0x8
movs r2, 0xC
movs r3, 0x5
bl sub_80EE970
b _080EDA6E
_080ED97C:
adds r0, r4, 0
bl sub_80EE850
lsls r0, 24
cmp r0, 0
beq _080ED98A
b _080EDAC4
_080ED98A:
ldr r0, [r4, 0x18]
movs r1, 0x8
movs r2, 0xC
movs r3, 0x5
bl sub_80EE970
b _080EDA6E
_080ED998:
adds r0, r4, 0
bl sub_80EE850
b _080EDA64
_080ED9A0:
ldrh r0, [r4, 0x12]
adds r0, 0x1
strh r0, [r4, 0x12]
lsls r0, 16
lsrs r0, 16
cmp r0, 0x14
bhi _080ED9B0
b _080EDAC4
_080ED9B0:
adds r0, r4, 0
bl sub_80EEA94
movs r0, 0
b _080EDA6C
_080ED9BA:
bl sub_80ED7B0
lsls r0, 24
cmp r0, 0
beq _080ED9C6
b _080EDAC4
_080ED9C6:
bl sub_80ED760
adds r0, r4, 0
bl sub_80EDAF0
b _080EDA6E
_080ED9D2:
movs r0, 0
bl HideBg
movs r0, 0
b _080EDA6C
_080ED9DC:
ldrh r0, [r4, 0x12]
adds r0, 0x1
strh r0, [r4, 0x12]
lsls r0, 16
lsrs r0, 16
cmp r0, 0x30
bne _080ED9FA
ldr r0, _080EDA18 @ =0x00007fff
str r0, [sp]
movs r0, 0x6
movs r1, 0x2
movs r2, 0
movs r3, 0x10
bl BeginNormalPaletteFade
_080ED9FA:
ldrh r0, [r4, 0x12]
cmp r0, 0x78
bls _080EDAC4
adds r0, r4, 0
bl sub_80EDB70
adds r0, r4, 0
bl sub_80EDBAC
ldrb r0, [r4, 0x4]
adds r0, 0x1
strb r0, [r4, 0x4]
movs r0, 0
b _080EDAC2
.align 2, 0
_080EDA18: .4byte 0x00007fff
_080EDA1C:
ldrh r0, [r4, 0x12]
adds r0, 0x1
strh r0, [r4, 0x12]
lsls r0, 16
lsrs r0, 16
cmp r0, 0x8
bls _080EDAC4
add r1, sp, 0x4
ldr r2, _080EDA50 @ =0x00007fff
adds r0, r2, 0
strh r0, [r1]
ldr r1, _080EDA54 @ =gPlttBufferUnfaded + 0x20
ldr r2, _080EDA58 @ =0x01000020
add r0, sp, 0x4
bl CpuSet
movs r1, 0x2
negs r1, r1
movs r0, 0
str r0, [sp]
adds r0, r1, 0
movs r2, 0
movs r3, 0x10
bl BeginNormalPaletteFade
b _080EDA6E
.align 2, 0
_080EDA50: .4byte 0x00007fff
_080EDA54: .4byte gPlttBufferUnfaded + 0x20
_080EDA58: .4byte 0x01000020
_080EDA5C:
ldr r0, _080EDA78 @ =gPaletteFade
ldrb r1, [r0, 0x7]
movs r0, 0x80
ands r0, r1
_080EDA64:
lsls r0, 24
lsrs r0, 24
cmp r0, 0
bne _080EDAC4
_080EDA6C:
strh r0, [r4, 0x12]
_080EDA6E:
ldrb r0, [r4, 0x4]
adds r0, 0x1
strb r0, [r4, 0x4]
b _080EDAC4
.align 2, 0
_080EDA78: .4byte gPaletteFade
_080EDA7C:
ldrh r0, [r4, 0x12]
adds r0, 0x1
strh r0, [r4, 0x12]
lsls r0, 16
lsrs r0, 16
cmp r0, 0x3C
bls _080EDAC4
ldr r1, _080EDA94 @ =sub_80EDBE8
adds r0, r4, 0
bl sub_80ECAA8
b _080EDAC4
.align 2, 0
_080EDA94: .4byte sub_80EDBE8
_080EDA98:
ldr r0, _080EDACC @ =gMain
ldrh r1, [r0, 0x2E]
movs r0, 0x80
lsls r0, 1
ands r0, r1
cmp r0, 0
beq _080EDAC4
ldr r0, _080EDAD0 @ =0xffff0064
ldr r2, _080EDAD4 @ =0x00007fff
movs r1, 0
bl BlendPalettes
ldr r1, [r4, 0x18]
movs r0, 0
strh r0, [r1, 0x24]
ldr r1, [r4, 0x18]
movs r0, 0xB4
strh r0, [r1, 0x20]
movs r0, 0x1
strb r0, [r4, 0x4]
movs r0, 0x1E
_080EDAC2:
strh r0, [r4, 0x12]
_080EDAC4:
add sp, 0x8
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080EDACC: .4byte gMain
_080EDAD0: .4byte 0xffff0064
_080EDAD4: .4byte 0x00007fff
thumb_func_end sub_80ED898
thumb_func_start sub_80EDAD8
sub_80EDAD8: @ 80EDAD8
push {lr}
ldrb r3, [r0, 0x1]
lsrs r1, r3, 6
ldrb r2, [r0, 0x3]
lsrs r2, 6
lsls r3, 30
lsrs r3, 30
bl CalcCenterToCornerVec
pop {r0}
bx r0
thumb_func_end sub_80EDAD8
thumb_func_start sub_80EDAF0
sub_80EDAF0: @ 80EDAF0
push {r4-r7,lr}
adds r7, r0, 0
movs r5, 0
_080EDAF6:
movs r6, 0x1
ands r6, r5
lsls r1, r6, 1
adds r1, r6
lsls r1, 20
lsrs r2, r5, 31
adds r2, r5, r2
asrs r2, 1
lsls r2, 22
movs r0, 0xC4
lsls r0, 14
adds r1, r0
asrs r1, 16
movs r0, 0x90
lsls r0, 15
adds r2, r0
asrs r2, 16
ldr r0, _080EDB68 @ =gUnknown_840BE4C
movs r3, 0x8
bl CreateSprite
lsls r0, 24
lsrs r1, r0, 24
cmp r1, 0x40
beq _080EDB5C
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
ldr r1, _080EDB6C @ =gSprites
adds r4, r0, r1
lsls r1, r5, 24
lsrs r1, 24
adds r0, r4, 0
bl StartSpriteAnim
lsls r1, r5, 2
adds r0, r7, 0
adds r0, 0x28
adds r2, r0, r1
str r4, [r2]
cmp r6, 0
beq _080EDB56
ldrb r0, [r4, 0x1]
movs r1, 0x3F
ands r1, r0
movs r0, 0x80
orrs r1, r0
strb r1, [r4, 0x1]
_080EDB56:
ldr r0, [r2]
bl sub_80EDAD8
_080EDB5C:
adds r5, 0x1
cmp r5, 0x3
ble _080EDAF6
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080EDB68: .4byte gUnknown_840BE4C
_080EDB6C: .4byte gSprites
thumb_func_end sub_80EDAF0
thumb_func_start sub_80EDB70
sub_80EDB70: @ 80EDB70
push {r4,lr}
adds r4, r0, 0
ldr r1, [r4, 0x18]
ldrh r0, [r1, 0x24]
ldrh r2, [r1, 0x20]
adds r0, r2
strh r0, [r1, 0x20]
ldr r1, [r4, 0x18]
ldrh r0, [r1, 0x26]
ldrh r2, [r1, 0x22]
adds r0, r2
strh r0, [r1, 0x22]
ldr r0, [r4, 0x18]
movs r1, 0
movs r2, 0x2A
bl sub_8007FFC
ldr r0, [r4, 0x18]
ldr r1, _080EDBA4 @ =SpriteCallbackDummy
str r1, [r0, 0x1C]
movs r1, 0x1
bl StartSpriteAffineAnim
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080EDBA4: .4byte SpriteCallbackDummy
thumb_func_end sub_80EDB70
thumb_func_start nullsub_83
nullsub_83: @ 80EDBA8
bx lr
thumb_func_end nullsub_83
thumb_func_start sub_80EDBAC
sub_80EDBAC: @ 80EDBAC
push {r4-r7,lr}
adds r7, r0, 0
movs r6, 0
ldr r5, _080EDBE0 @ =gUnknown_840BBB8
_080EDBB4:
lsls r0, r6, 2
adds r4, r7, 0
adds r4, 0x28
adds r4, r0
ldr r0, [r4]
movs r1, 0x1
bl StartSpriteAffineAnim
ldr r0, [r4]
ldr r1, _080EDBE4 @ =nullsub_83
str r1, [r0, 0x1C]
ldrb r1, [r5]
ldrb r2, [r5, 0x1]
bl sub_8007FFC
adds r5, 0x2
adds r6, 0x1
cmp r6, 0x3
ble _080EDBB4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080EDBE0: .4byte gUnknown_840BBB8
_080EDBE4: .4byte nullsub_83
thumb_func_end sub_80EDBAC
thumb_func_start sub_80EDBE8
sub_80EDBE8: @ 80EDBE8
push {r4,lr}
adds r4, r0, 0
ldrb r0, [r4, 0x4]
cmp r0, 0
beq _080EDBF8
cmp r0, 0x1
beq _080EDC0C
b _080EDC34
_080EDBF8:
movs r2, 0x80
lsls r2, 3
movs r0, 0
movs r1, 0
bl FillPalette
ldrb r0, [r4, 0x4]
adds r0, 0x1
strb r0, [r4, 0x4]
b _080EDC34
_080EDC0C:
bl free_temp_tile_data_buffers_if_possible
lsls r0, 24
cmp r0, 0
bne _080EDC34
ldrb r0, [r4, 0x5]
bl DestroyTask
adds r0, r4, 0
bl Free
movs r0, 0x2
bl DisableInterrupts
movs r0, 0
bl SetHBlankCallback
ldr r0, _080EDC3C @ =sub_8078914
bl SetMainCallback2
_080EDC34:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080EDC3C: .4byte sub_8078914
thumb_func_end sub_80EDBE8
thumb_func_start sub_80EDC40
sub_80EDC40: @ 80EDC40
push {r4-r6,lr}
movs r5, 0
ldr r4, _080EDCE4 @ =gUnknown_840BBC0
_080EDC46:
adds r0, r4, 0
bl LoadCompressedObjectPic
adds r4, 0x8
adds r5, 0x1
cmp r5, 0x4
bls _080EDC46
ldr r0, _080EDCE8 @ =gUnknown_840BBE8
bl LoadSpritePalettes
ldr r6, _080EDCEC @ =gUnknown_203AB0E
movs r0, 0x60
strh r0, [r6]
ldr r5, _080EDCF0 @ =gUnknown_203AB10
movs r0, 0x10
strh r0, [r5]
ldr r1, _080EDCF4 @ =gUnknown_203AB12
movs r0, 0x7
strh r0, [r1]
ldr r0, _080EDCF8 @ =gUnknown_203AB14
movs r2, 0x5
strh r2, [r0]
ldr r1, _080EDCFC @ =gUnknown_203AB16
movs r0, 0x8
strh r0, [r1]
ldr r1, _080EDD00 @ =gUnknown_203AB18
movs r0, 0x5A
strh r0, [r1]
ldr r1, _080EDD04 @ =gUnknown_203AB1A
movs r0, 0x78
strh r0, [r1]
ldr r0, _080EDD08 @ =gUnknown_203AB1E
movs r1, 0x1
strh r1, [r0]
ldr r0, _080EDD0C @ =gUnknown_203AB20
strh r1, [r0]
ldr r0, _080EDD10 @ =gUnknown_203AB22
strh r2, [r0]
ldr r0, _080EDD14 @ =gUnknown_203AB24
strh r2, [r0]
ldr r4, _080EDD18 @ =gUnknown_203AB28
ldr r0, [r4]
cmp r0, 0
bne _080EDCA2
ldr r0, _080EDD1C @ =0x151b9245
str r0, [r4]
_080EDCA2:
ldr r0, _080EDD20 @ =gUnknown_840BC6C
movs r1, 0xF8
movs r2, 0x37
movs r3, 0
bl CreateSprite
lsls r0, 24
lsrs r1, r0, 24
cmp r1, 0x40
beq _080EDCDE
ldr r0, _080EDD24 @ =gSprites
lsls r3, r1, 4
adds r3, r1
lsls r3, 2
adds r2, r3, r0
movs r1, 0xF8
lsls r1, 4
strh r1, [r2, 0x2E]
movs r1, 0xDC
lsls r1, 2
strh r1, [r2, 0x30]
ldrh r1, [r6]
strh r1, [r2, 0x32]
ldrh r1, [r5]
strh r1, [r2, 0x34]
adds r0, r3
adds r0, 0x3A
ldr r1, [r4]
bl StoreWordInTwoHalfwords
_080EDCDE:
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080EDCE4: .4byte gUnknown_840BBC0
_080EDCE8: .4byte gUnknown_840BBE8
_080EDCEC: .4byte gUnknown_203AB0E
_080EDCF0: .4byte gUnknown_203AB10
_080EDCF4: .4byte gUnknown_203AB12
_080EDCF8: .4byte gUnknown_203AB14
_080EDCFC: .4byte gUnknown_203AB16
_080EDD00: .4byte gUnknown_203AB18
_080EDD04: .4byte gUnknown_203AB1A
_080EDD08: .4byte gUnknown_203AB1E
_080EDD0C: .4byte gUnknown_203AB20
_080EDD10: .4byte gUnknown_203AB22
_080EDD14: .4byte gUnknown_203AB24
_080EDD18: .4byte gUnknown_203AB28
_080EDD1C: .4byte 0x151b9245
_080EDD20: .4byte gUnknown_840BC6C
_080EDD24: .4byte gSprites
thumb_func_end sub_80EDC40
thumb_func_start sub_80EDD28
sub_80EDD28: @ 80EDD28
push {r4-r7,lr}
lsls r0, 16
lsrs r5, r0, 16
lsls r1, 16
lsrs r3, r1, 16
lsls r2, 16
lsrs r2, 16
ldr r0, _080EDDCC @ =gUnknown_203AB12
ldrh r0, [r0]
ands r2, r0
adds r2, 0x2
lsls r2, 16
lsrs r4, r2, 16
ldr r1, _080EDDD0 @ =gUnknown_203AB2C
ldrh r0, [r1]
adds r2, r0, 0
adds r0, r2, 0x1
strh r0, [r1]
lsls r0, 16
asrs r0, 16
cmp r0, 0x3
ble _080EDD5C
movs r6, 0x3
negs r6, r6
adds r0, r6, 0
strh r0, [r1]
_080EDD5C:
lsls r1, r5, 16
asrs r1, 16
lsls r0, r4, 16
asrs r7, r0, 16
adds r1, r7
lsls r0, r3, 16
asrs r0, 16
lsls r2, 16
asrs r6, r2, 16
adds r0, r6
lsls r0, 16
lsrs r3, r0, 16
lsls r1, 16
asrs r4, r1, 16
ldr r0, _080EDDD4 @ =0xffff0000
adds r1, r0
lsrs r1, 16
cmp r1, 0xEE
bhi _080EDDC6
ldr r0, _080EDDD8 @ =gUnknown_840BC84
lsls r1, r3, 16
asrs r5, r1, 16
adds r1, r4, 0
adds r2, r5, 0
movs r3, 0x1
bl CreateSprite
lsls r0, 24
lsrs r2, r0, 24
cmp r2, 0x40
beq _080EDDC6
ldr r0, _080EDDDC @ =gSprites
lsls r1, r2, 4
adds r1, r2
lsls r1, 2
adds r1, r0
ldr r0, _080EDDE0 @ =gUnknown_203AB22
ldrh r0, [r0]
lsls r4, r0
strh r4, [r1, 0x2E]
ldr r2, _080EDDE4 @ =gUnknown_203AB24
adds r0, r5, 0
ldrh r2, [r2]
lsls r0, r2
strh r0, [r1, 0x30]
ldr r0, _080EDDE8 @ =gUnknown_203AB1E
ldrh r0, [r0]
muls r0, r7
strh r0, [r1, 0x32]
ldr r0, _080EDDEC @ =gUnknown_203AB20
ldrh r0, [r0]
muls r0, r6
strh r0, [r1, 0x34]
_080EDDC6:
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080EDDCC: .4byte gUnknown_203AB12
_080EDDD0: .4byte gUnknown_203AB2C
_080EDDD4: .4byte 0xffff0000
_080EDDD8: .4byte gUnknown_840BC84
_080EDDDC: .4byte gSprites
_080EDDE0: .4byte gUnknown_203AB22
_080EDDE4: .4byte gUnknown_203AB24
_080EDDE8: .4byte gUnknown_203AB1E
_080EDDEC: .4byte gUnknown_203AB20
thumb_func_end sub_80EDD28
thumb_func_start sub_80EDDF0
sub_80EDDF0: @ 80EDDF0
push {lr}
ldr r0, _080EDE00 @ =sub_80EDE04
movs r1, 0x1
bl CreateTask
pop {r0}
bx r0
.align 2, 0
_080EDE00: .4byte sub_80EDE04
thumb_func_end sub_80EDDF0
thumb_func_start sub_80EDE04
sub_80EDE04: @ 80EDE04
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
lsls r0, 24
lsrs r0, 24
mov r9, r0
lsls r0, 2
add r0, r9
lsls r0, 3
ldr r1, _080EDEB0 @ =gTasks+0x8
adds r0, r1
mov r8, r0
ldrh r1, [r0, 0x4]
adds r1, 0x1
strh r1, [r0, 0x4]
ldrh r0, [r0, 0x6]
adds r0, 0x1
mov r2, r8
strh r0, [r2, 0x6]
lsls r1, 16
asrs r1, 16
cmp r1, 0x6
ble _080EDECA
movs r0, 0
strh r0, [r2, 0x4]
ldrb r6, [r2]
ldr r0, _080EDEB4 @ =gUnknown_840BC84
ldr r1, _080EDEB8 @ =gUnknown_840BC08
lsls r6, 2
adds r6, r1
movs r3, 0
ldrsh r1, [r6, r3]
movs r3, 0x2
ldrsh r2, [r6, r3]
movs r3, 0x2
bl CreateSprite
lsls r0, 24
lsrs r0, 24
lsls r4, r0, 4
adds r4, r0
lsls r4, 2
ldr r5, _080EDEBC @ =gSprites
adds r7, r4, r5
adds r0, r7, 0
movs r1, 0x1
bl StartSpriteAnim
adds r5, 0x1C
adds r4, r5
ldr r0, _080EDEC0 @ =sub_80EE40C
str r0, [r4]
ldrh r0, [r6, 0x2]
lsls r0, 4
strh r0, [r7, 0x30]
movs r0, 0x78
strh r0, [r7, 0x32]
mov r1, r8
ldrh r0, [r1, 0x2]
strh r0, [r7, 0x34]
lsls r0, 16
cmp r0, 0
bge _080EDE88
movs r0, 0x1
strh r0, [r7, 0x34]
_080EDE88:
mov r2, r8
ldrh r0, [r2]
adds r0, 0x1
strh r0, [r2]
lsls r0, 16
lsrs r0, 16
cmp r0, 0x8
bls _080EDECA
ldrh r0, [r2, 0x2]
adds r0, 0x1
strh r0, [r2, 0x2]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1
ble _080EDEC4
mov r0, r9
bl DestroyTask
b _080EDECA
.align 2, 0
_080EDEB0: .4byte gTasks+0x8
_080EDEB4: .4byte gUnknown_840BC84
_080EDEB8: .4byte gUnknown_840BC08
_080EDEBC: .4byte gSprites
_080EDEC0: .4byte sub_80EE40C
_080EDEC4:
movs r0, 0
mov r3, r8
strh r0, [r3]
_080EDECA:
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_80EDE04
thumb_func_start sub_80EDED8
sub_80EDED8: @ 80EDED8
push {lr}
ldr r0, _080EDEE8 @ =sub_80EDEEC
movs r1, 0x2
bl CreateTask
pop {r0}
bx r0
.align 2, 0
_080EDEE8: .4byte sub_80EDEEC
thumb_func_end sub_80EDED8
thumb_func_start sub_80EDEEC
sub_80EDEEC: @ 80EDEEC
push {r4,r5,lr}
lsls r0, 24
lsrs r0, 24
adds r5, r0, 0
lsls r0, r5, 2
adds r0, r5
lsls r0, 3
ldr r1, _080EDF5C @ =gTasks+0x8
adds r4, r0, r1
movs r1, 0
ldrsh r0, [r4, r1]
cmp r0, 0
bne _080EDF44
ldrh r1, [r4, 0x2]
ldrb r2, [r4, 0x2]
adds r0, r1, 0x4
strh r0, [r4, 0x2]
lsls r0, 16
lsrs r0, 16
cmp r0, 0x8
bls _080EDF1A
subs r0, r1, 0x5
strh r0, [r4, 0x2]
_080EDF1A:
ldr r0, _080EDF60 @ =gUnknown_840BCBC
ldr r1, _080EDF64 @ =gUnknown_840BC08
lsls r2, 2
adds r2, r1
movs r3, 0
ldrsh r1, [r2, r3]
movs r3, 0x2
ldrsh r2, [r2, r3]
movs r3, 0x3
bl CreateSprite
ldrh r0, [r4, 0x4]
adds r0, 0x1
strh r0, [r4, 0x4]
lsls r0, 16
asrs r0, 16
cmp r0, 0x8
ble _080EDF44
adds r0, r5, 0
bl DestroyTask
_080EDF44:
ldrh r0, [r4]
adds r0, 0x1
strh r0, [r4]
lsls r0, 16
asrs r0, 16
cmp r0, 0x9
ble _080EDF56
movs r0, 0
strh r0, [r4]
_080EDF56:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080EDF5C: .4byte gTasks+0x8
_080EDF60: .4byte gUnknown_840BCBC
_080EDF64: .4byte gUnknown_840BC08
thumb_func_end sub_80EDEEC
thumb_func_start sub_80EDF68
sub_80EDF68: @ 80EDF68
push {lr}
ldr r0, _080EDF8C @ =gUnknown_840BCDC
movs r1, 0x78
movs r2, 0x46
movs r3, 0x4
bl CreateSprite
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
ldr r1, _080EDF90 @ =gSprites
adds r0, r1
pop {r1}
bx r1
.align 2, 0
_080EDF8C: .4byte gUnknown_840BCDC
_080EDF90: .4byte gSprites
thumb_func_end sub_80EDF68
thumb_func_start sub_80EDF94
sub_80EDF94: @ 80EDF94
push {r4,r5,lr}
adds r4, r0, 0
movs r0, 0
strb r0, [r4, 0x6]
ldr r0, _080EDFD0 @ =sub_80EE024
movs r1, 0x4
bl CreateTask
adds r5, r0, 0
lsls r5, 24
lsrs r5, 24
adds r0, r5, 0
movs r1, 0x5
adds r2, r4, 0
bl SetWordTaskArg
ldr r0, _080EDFD4 @ =gTasks
lsls r4, r5, 2
adds r4, r5
lsls r4, 3
adds r4, r0
movs r0, 0x40
strh r0, [r4, 0xE]
movs r0, 0
bl GetBgX
strh r0, [r4, 0x10]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080EDFD0: .4byte sub_80EE024
_080EDFD4: .4byte gTasks
thumb_func_end sub_80EDF94
thumb_func_start sub_80EDFD8
sub_80EDFD8: @ 80EDFD8
push {r4-r6,lr}
mov r6, r8
push {r6}
adds r4, r0, 0
adds r5, r1, 0
adds r6, r2, 0
mov r8, r3
lsls r4, 15
movs r0, 0xF8
lsls r0, 9
adds r4, r0
movs r0, 0
adds r1, r4, 0
movs r2, 0
bl ChangeBgY
movs r0, 0
mov r1, r8
movs r2, 0
bl ChangeBgX
lsls r5, 8
movs r0, 0
adds r1, r5, 0
movs r2, 0x2
bl ChangeBgX
lsls r6, 8
movs r0, 0
adds r1, r6, 0
movs r2, 0x2
bl ChangeBgY
pop {r3}
mov r8, r3
pop {r4-r6}
pop {r0}
bx r0
thumb_func_end sub_80EDFD8
thumb_func_start sub_80EE024
sub_80EE024: @ 80EE024
push {r4,r5,lr}
lsls r0, 24
lsrs r2, r0, 24
lsls r0, r2, 2
adds r0, r2
lsls r0, 3
ldr r1, _080EE048 @ =gTasks+0x8
adds r5, r0, r1
movs r1, 0
ldrsh r0, [r5, r1]
cmp r0, 0x5
bhi _080EE11C
lsls r0, 2
ldr r1, _080EE04C @ =_080EE050
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080EE048: .4byte gTasks+0x8
_080EE04C: .4byte _080EE050
.align 2, 0
_080EE050:
.4byte _080EE068
.4byte _080EE07A
.4byte _080EE094
.4byte _080EE0BC
.4byte _080EE0EE
.4byte _080EE114
_080EE068:
movs r0, 0x2
strh r0, [r5, 0xE]
movs r0, 0
strh r0, [r5, 0x2]
movs r0, 0x6
strh r0, [r5, 0x10]
movs r0, 0x20
strh r0, [r5, 0x12]
b _080EE10C
_080EE07A:
ldrh r0, [r5, 0x6]
subs r0, 0x2
strh r0, [r5, 0x6]
ldrh r0, [r5, 0x2]
adds r0, 0x1
strh r0, [r5, 0x2]
lsls r0, 16
asrs r0, 16
cmp r0, 0xF
ble _080EE11C
movs r0, 0
strh r0, [r5, 0x2]
b _080EE10C
_080EE094:
ldrh r0, [r5, 0x2]
adds r0, 0x1
strh r0, [r5, 0x2]
lsls r0, 16
asrs r0, 16
cmp r0, 0xE
bne _080EE0AE
adds r0, r2, 0
movs r1, 0x5
bl GetWordTaskArg
movs r1, 0x1
strb r1, [r0, 0x6]
_080EE0AE:
movs r2, 0x2
ldrsh r0, [r5, r2]
cmp r0, 0xF
ble _080EE11C
movs r0, 0
strh r0, [r5, 0x2]
b _080EE10C
_080EE0BC:
ldrh r0, [r5, 0x6]
adds r0, 0x8
strh r0, [r5, 0x6]
ldrh r0, [r5, 0x2]
adds r0, 0x1
strh r0, [r5, 0x2]
lsls r0, 16
asrs r0, 16
cmp r0, 0x4
bne _080EE0E0
bl sub_80EE160
movs r0, 0x20
strh r0, [r5, 0x10]
movs r0, 0x30
strh r0, [r5, 0x12]
movs r0, 0x3
strh r0, [r5, 0xE]
_080EE0E0:
movs r3, 0x2
ldrsh r0, [r5, r3]
cmp r0, 0x7
ble _080EE11C
movs r0, 0
strh r0, [r5, 0x2]
b _080EE10C
_080EE0EE:
ldrh r0, [r5, 0x6]
subs r0, 0x8
strh r0, [r5, 0x6]
ldrh r0, [r5, 0x2]
adds r0, 0x1
strh r0, [r5, 0x2]
lsls r0, 16
asrs r0, 16
cmp r0, 0x3
ble _080EE11C
movs r1, 0
strh r1, [r5, 0xE]
movs r0, 0x40
strh r0, [r5, 0x6]
strh r1, [r5, 0x2]
_080EE10C:
ldrh r0, [r5]
adds r0, 0x1
strh r0, [r5]
b _080EE11C
_080EE114:
adds r0, r2, 0
bl DestroyTask
b _080EE156
_080EE11C:
movs r4, 0x6
ldrsh r3, [r5, r4]
ldr r4, _080EE15C @ =gUnknown_825E074
adds r0, r3, 0
adds r0, 0x40
lsls r0, 1
adds r0, r4
movs r2, 0
ldrsh r1, [r0, r2]
movs r2, 0x12
ldrsh r0, [r5, r2]
muls r1, r0
asrs r1, 8
negs r1, r1
movs r0, 0x10
ldrsh r2, [r5, r0]
lsls r3, 1
adds r3, r4
movs r4, 0
ldrsh r0, [r3, r4]
muls r0, r2
asrs r0, 8
subs r2, r0
movs r3, 0xE
ldrsh r0, [r5, r3]
movs r4, 0x8
ldrsh r3, [r5, r4]
bl sub_80EDFD8
_080EE156:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080EE15C: .4byte gUnknown_825E074
thumb_func_end sub_80EE024
thumb_func_start sub_80EE160
sub_80EE160: @ 80EE160
push {r4,lr}
ldr r4, _080EE1BC @ =gUnknown_840BE8C
adds r0, r4, 0
movs r1, 0x84
movs r2, 0x4E
movs r3, 0x6
bl CreateSprite
adds r0, r4, 0
movs r1, 0x84
movs r2, 0x76
movs r3, 0x6
bl CreateSprite
lsls r0, 24
lsrs r1, r0, 24
cmp r1, 0x40
beq _080EE1B4
ldr r0, _080EE1C0 @ =gSprites
lsls r4, r1, 4
adds r4, r1
lsls r4, 2
adds r4, r0
ldrb r2, [r4, 0x1]
movs r1, 0x3F
adds r0, r1, 0
ands r0, r2
movs r2, 0x40
orrs r0, r2
strb r0, [r4, 0x1]
ldrb r0, [r4, 0x3]
ands r1, r0
movs r0, 0x80
orrs r1, r0
strb r1, [r4, 0x3]
adds r0, r4, 0
bl sub_80EDAD8
adds r0, r4, 0
movs r1, 0x1
bl StartSpriteAnim
_080EE1B4:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080EE1BC: .4byte gUnknown_840BE8C
_080EE1C0: .4byte gSprites
thumb_func_end sub_80EE160
thumb_func_start sub_80EE1C4
sub_80EE1C4: @ 80EE1C4
push {lr}
adds r3, r0, 0
movs r0, 0x3E
adds r0, r3
mov r12, r0
ldrb r2, [r0]
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
mov r1, r12
strb r0, [r1]
adds r0, r3, 0
adds r0, 0x3F
ldrb r1, [r0]
movs r0, 0x10
ands r0, r1
cmp r0, 0
beq _080EE1FA
adds r0, r3, 0
bl DestroySprite
_080EE1FA:
pop {r0}
bx r0
thumb_func_end sub_80EE1C4
thumb_func_start sub_80EE200
sub_80EE200: @ 80EE200
push {r4,r5,lr}
lsls r0, 24
lsrs r4, r0, 24
lsls r0, r4, 2
adds r0, r4
lsls r0, 3
ldr r1, _080EE220 @ =gTasks+0x8
adds r1, r0, r1
movs r2, 0
ldrsh r0, [r1, r2]
cmp r0, 0
beq _080EE224
cmp r0, 0x1
beq _080EE232
b _080EE28A
.align 2, 0
_080EE220: .4byte gTasks+0x8
_080EE224:
movs r3, 0x80
lsls r3, 3
adds r0, r3, 0
strh r0, [r1, 0x2]
ldrh r0, [r1]
adds r0, 0x1
strh r0, [r1]
_080EE232:
ldrh r0, [r1, 0x4]
adds r0, 0x1
strh r0, [r1, 0x4]
lsls r0, 16
asrs r0, 16
cmp r0, 0x27
ble _080EE250
ldrh r2, [r1, 0x2]
movs r3, 0x2
ldrsh r0, [r1, r3]
cmp r0, 0x10
ble _080EE250
adds r0, r2, 0
subs r0, 0x10
strh r0, [r1, 0x2]
_080EE250:
movs r0, 0x2
ldrsh r1, [r1, r0]
movs r0, 0
movs r2, 0x1
bl ChangeBgX
ldr r5, _080EE290 @ =gUnknown_203AB30
str r0, [r5]
ldr r1, _080EE294 @ =0x00007fff
cmp r0, r1
bls _080EE270
movs r1, 0x80
lsls r1, 6
movs r0, 0
bl ClearGpuRegBits
_080EE270:
ldr r1, [r5]
ldr r0, _080EE298 @ =0x0000eeff
cmp r1, r0
bls _080EE28A
movs r1, 0xEF
lsls r1, 8
movs r0, 0
movs r2, 0
bl ChangeBgX
adds r0, r4, 0
bl DestroyTask
_080EE28A:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080EE290: .4byte gUnknown_203AB30
_080EE294: .4byte 0x00007fff
_080EE298: .4byte 0x0000eeff
thumb_func_end sub_80EE200
thumb_func_start sub_80EE29C
sub_80EE29C: @ 80EE29C
push {r4,r5,lr}
sub sp, 0x4
adds r5, r0, 0
ldrh r2, [r5, 0x2E]
ldrh r0, [r5, 0x32]
subs r2, r0
strh r2, [r5, 0x2E]
ldrh r1, [r5, 0x34]
ldrh r0, [r5, 0x30]
adds r1, r0
strh r1, [r5, 0x30]
ldrh r0, [r5, 0x36]
adds r0, 0x30
strh r0, [r5, 0x36]
lsls r2, 16
asrs r2, 20
strh r2, [r5, 0x20]
lsls r1, 16
asrs r1, 20
strh r1, [r5, 0x22]
ldr r1, _080EE340 @ =gUnknown_825E074
lsls r0, 16
asrs r0, 20
adds r0, 0x40
lsls r0, 1
adds r0, r1
ldrh r0, [r0]
lsls r0, 16
asrs r0, 21
strh r0, [r5, 0x26]
ldrh r0, [r5, 0x38]
adds r0, 0x1
strh r0, [r5, 0x38]
movs r1, 0x38
ldrsh r0, [r5, r1]
ldr r1, _080EE344 @ =gUnknown_203AB16
ldrh r1, [r1]
bl __modsi3
cmp r0, 0
beq _080EE324
adds r4, r5, 0
adds r4, 0x3A
adds r0, r4, 0
mov r1, sp
bl LoadWordFromTwoHalfwords
ldr r1, [sp]
ldr r0, _080EE348 @ =0x41c64e6d
muls r1, r0
ldr r3, _080EE34C @ =0x00006073
adds r1, r3
str r1, [sp]
adds r0, r4, 0
bl StoreWordInTwoHalfwords
ldr r2, [sp]
lsrs r2, 16
str r2, [sp]
movs r1, 0x20
ldrsh r0, [r5, r1]
ldrh r1, [r5, 0x26]
ldrh r3, [r5, 0x22]
adds r1, r3
lsls r1, 16
asrs r1, 16
bl sub_80EDD28
_080EE324:
movs r0, 0x20
ldrsh r1, [r5, r0]
movs r0, 0x8
negs r0, r0
cmp r1, r0
bge _080EE336
adds r0, r5, 0
bl DestroySprite
_080EE336:
add sp, 0x4
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080EE340: .4byte gUnknown_825E074
_080EE344: .4byte gUnknown_203AB16
_080EE348: .4byte 0x41c64e6d
_080EE34C: .4byte 0x00006073
thumb_func_end sub_80EE29C
thumb_func_start sub_80EE350
sub_80EE350: @ 80EE350
push {r4,lr}
adds r4, r0, 0
ldrh r0, [r4, 0x32]
ldrh r1, [r4, 0x2E]
adds r0, r1
strh r0, [r4, 0x2E]
ldrh r2, [r4, 0x34]
ldrh r1, [r4, 0x30]
adds r0, r2, r1
strh r0, [r4, 0x30]
ldrh r1, [r4, 0x36]
adds r1, 0x1
strh r1, [r4, 0x36]
ldrh r0, [r4, 0x38]
adds r0, r1
strh r0, [r4, 0x38]
ldrh r0, [r4, 0x3C]
adds r0, 0x1
strh r0, [r4, 0x3C]
ldrh r0, [r4, 0x2E]
ldr r1, _080EE3F8 @ =gUnknown_203AB22
ldrh r1, [r1]
asrs r0, r1
strh r0, [r4, 0x20]
movs r1, 0x30
ldrsh r0, [r4, r1]
ldr r1, _080EE3FC @ =gUnknown_203AB24
ldrh r1, [r1]
asrs r0, r1
strh r0, [r4, 0x22]
ldr r1, _080EE400 @ =gUnknown_203AB1C
ldrh r0, [r1]
cmp r0, 0
beq _080EE3A4
lsls r0, r2, 16
cmp r0, 0
bge _080EE3A4
movs r2, 0x38
ldrsh r0, [r4, r2]
ldrh r1, [r1]
asrs r0, r1
strh r0, [r4, 0x26]
_080EE3A4:
movs r0, 0x3C
ldrsh r1, [r4, r0]
ldr r0, _080EE404 @ =gUnknown_203AB18
ldrh r0, [r0]
cmp r1, r0
ble _080EE3DC
adds r3, r4, 0
adds r3, 0x3E
ldrb r2, [r3]
lsrs r1, r2, 2
movs r0, 0x1
eors r1, r0
ands r1, r0
lsls r1, 2
movs r0, 0x5
negs r0, r0
ands r0, r2
orrs r0, r1
strb r0, [r3]
movs r2, 0x3C
ldrsh r1, [r4, r2]
ldr r0, _080EE408 @ =gUnknown_203AB1A
ldrh r0, [r0]
cmp r1, r0
ble _080EE3DC
adds r0, r4, 0
bl DestroySprite
_080EE3DC:
movs r1, 0x22
ldrsh r0, [r4, r1]
movs r2, 0x26
ldrsh r1, [r4, r2]
adds r0, r1
cmp r0, 0xA0
bls _080EE3F0
adds r0, r4, 0
bl DestroySprite
_080EE3F0:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080EE3F8: .4byte gUnknown_203AB22
_080EE3FC: .4byte gUnknown_203AB24
_080EE400: .4byte gUnknown_203AB1C
_080EE404: .4byte gUnknown_203AB18
_080EE408: .4byte gUnknown_203AB1A
thumb_func_end sub_80EE350
thumb_func_start sub_80EE40C
sub_80EE40C: @ 80EE40C
push {r4,lr}
adds r4, r0, 0
ldrh r1, [r4, 0x32]
movs r2, 0x32
ldrsh r0, [r4, r2]
cmp r0, 0
beq _080EE490
subs r0, r1, 0x1
strh r0, [r4, 0x32]
ldrh r0, [r4, 0x30]
adds r0, 0x1
strh r0, [r4, 0x30]
lsls r0, 16
asrs r0, 20
strh r0, [r4, 0x22]
cmp r0, 0x56
ble _080EE438
movs r0, 0x4A
strh r0, [r4, 0x22]
movs r0, 0x94
lsls r0, 3
strh r0, [r4, 0x30]
_080EE438:
adds r0, r4, 0
adds r0, 0x3F
ldrb r1, [r0]
movs r0, 0x10
ands r0, r1
cmp r0, 0
beq _080EE4D4
movs r1, 0x2E
ldrsh r0, [r4, r1]
cmp r0, 0
bne _080EE46C
ldrh r0, [r4, 0x20]
adds r1, r0, 0
adds r1, 0x1A
strh r1, [r4, 0x20]
lsls r0, r1, 16
asrs r0, 16
cmp r0, 0xBC
ble _080EE486
movs r2, 0xBC
lsls r2, 1
adds r0, r2, 0
subs r0, r1
strh r0, [r4, 0x20]
movs r0, 0x1
b _080EE484
_080EE46C:
ldrh r0, [r4, 0x20]
adds r1, r0, 0
subs r1, 0x1A
strh r1, [r4, 0x20]
lsls r0, r1, 16
asrs r0, 16
cmp r0, 0x33
bgt _080EE486
movs r0, 0x68
subs r0, r1
strh r0, [r4, 0x20]
movs r0, 0
_080EE484:
strh r0, [r4, 0x2E]
_080EE486:
adds r0, r4, 0
movs r1, 0x1
bl StartSpriteAnim
b _080EE4D4
_080EE490:
movs r1, 0x34
ldrsh r0, [r4, r1]
cmp r0, 0
beq _080EE49E
adds r0, r4, 0
bl DestroySprite
_080EE49E:
adds r0, r4, 0
adds r0, 0x3F
ldrb r1, [r0]
movs r0, 0x10
ands r0, r1
cmp r0, 0
beq _080EE4B4
adds r0, r4, 0
movs r1, 0
bl StartSpriteAnim
_080EE4B4:
ldrh r0, [r4, 0x30]
adds r0, 0x4
strh r0, [r4, 0x30]
lsls r0, 16
asrs r0, 20
strh r0, [r4, 0x22]
ldrh r0, [r4, 0x36]
adds r0, 0x1
strh r0, [r4, 0x36]
lsls r0, 16
asrs r0, 16
cmp r0, 0x32
ble _080EE4D4
adds r0, r4, 0
bl DestroySprite
_080EE4D4:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80EE40C
thumb_func_start sub_80EE4DC
sub_80EE4DC: @ 80EE4DC
push {lr}
adds r2, r0, 0
adds r0, 0x3F
ldrb r1, [r0]
movs r0, 0x10
ands r0, r1
cmp r0, 0
beq _080EE4F2
adds r0, r2, 0
bl DestroySprite
_080EE4F2:
pop {r0}
bx r0
thumb_func_end sub_80EE4DC
thumb_func_start sub_80EE4F8
sub_80EE4F8: @ 80EE4F8
push {r4,lr}
adds r4, r0, 0
ldr r0, _080EE520 @ =gUnknown_840BD88
movs r1, 0
movs r2, 0
movs r3, 0x9
bl CreateSprite
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
ldr r0, _080EE524 @ =gSprites
adds r1, r0
str r1, [r4, 0x18]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080EE520: .4byte gUnknown_840BD88
_080EE524: .4byte gSprites
thumb_func_end sub_80EE4F8
thumb_func_start sub_80EE528
sub_80EE528: @ 80EE528
push {r4-r6,lr}
mov r6, r9
mov r5, r8
push {r5,r6}
adds r4, r0, 0
adds r0, r2, 0
adds r5, r3, 0
lsls r1, 16
lsls r0, 16
lsls r5, 16
lsrs r5, 16
lsrs r2, r1, 16
mov r9, r2
asrs r1, 16
lsls r2, r1, 4
movs r3, 0
mov r8, r3
strh r2, [r4, 0x2E]
lsrs r6, r0, 16
asrs r0, 16
subs r0, r1
lsls r0, 4
adds r1, r5, 0
bl __divsi3
strh r0, [r4, 0x30]
strh r5, [r4, 0x32]
strh r6, [r4, 0x34]
mov r0, r8
strh r0, [r4, 0x36]
mov r2, r9
strh r2, [r4, 0x20]
movs r0, 0x64
strh r0, [r4, 0x22]
ldr r0, _080EE57C @ =sub_80EE580
str r0, [r4, 0x1C]
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080EE57C: .4byte sub_80EE580
thumb_func_end sub_80EE528
thumb_func_start sub_80EE580
sub_80EE580: @ 80EE580
push {r4,lr}
adds r2, r0, 0
ldrh r0, [r2, 0x36]
adds r0, 0x1
strh r0, [r2, 0x36]
lsls r0, 16
asrs r0, 16
cmp r0, 0x27
ble _080EE5A0
ldrh r1, [r2, 0x30]
movs r3, 0x30
ldrsh r0, [r2, r3]
cmp r0, 0x1
ble _080EE5A0
subs r0, r1, 0x1
strh r0, [r2, 0x30]
_080EE5A0:
ldrh r0, [r2, 0x30]
ldrh r4, [r2, 0x2E]
adds r0, r4
strh r0, [r2, 0x2E]
lsls r0, 16
asrs r0, 20
strh r0, [r2, 0x20]
ldrh r3, [r2, 0x34]
movs r4, 0x34
ldrsh r1, [r2, r4]
cmp r0, r1
blt _080EE5BE
strh r3, [r2, 0x20]
ldr r0, _080EE5C4 @ =SpriteCallbackDummy
str r0, [r2, 0x1C]
_080EE5BE:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080EE5C4: .4byte SpriteCallbackDummy
thumb_func_end sub_80EE580
thumb_func_start sub_80EE5C8
sub_80EE5C8: @ 80EE5C8
push {lr}
movs r2, 0
ldr r0, [r0, 0x18]
ldr r1, [r0, 0x1C]
ldr r0, _080EE5E0 @ =sub_80EE580
cmp r1, r0
bne _080EE5D8
movs r2, 0x1
_080EE5D8:
adds r0, r2, 0
pop {r1}
bx r1
.align 2, 0
_080EE5E0: .4byte sub_80EE580
thumb_func_end sub_80EE5C8
thumb_func_start sub_80EE5E4
sub_80EE5E4: @ 80EE5E4
push {r4,lr}
adds r4, r0, 0
ldr r0, [r4, 0x18]
movs r1, 0x2
bl StartSpriteAnim
ldr r0, [r4, 0x18]
movs r1, 0
strh r1, [r0, 0x2E]
ldr r0, [r4, 0x18]
strh r1, [r0, 0x30]
ldr r1, [r4, 0x18]
movs r0, 0x3
strh r0, [r1, 0x26]
ldr r1, [r4, 0x18]
ldr r0, _080EE60C @ =sub_80EE610
str r0, [r1, 0x1C]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080EE60C: .4byte sub_80EE610
thumb_func_end sub_80EE5E4
thumb_func_start sub_80EE610
sub_80EE610: @ 80EE610
push {r4,r5,lr}
adds r4, r0, 0
movs r0, 0x2E
ldrsh r5, [r4, r0]
cmp r5, 0x1
beq _080EE646
cmp r5, 0x1
bgt _080EE626
cmp r5, 0
beq _080EE62C
b _080EE69A
_080EE626:
cmp r5, 0x2
beq _080EE65C
b _080EE69A
_080EE62C:
ldrh r0, [r4, 0x30]
adds r0, 0x1
strh r0, [r4, 0x30]
lsls r0, 16
asrs r0, 16
cmp r0, 0x8
ble _080EE69A
adds r0, r4, 0
movs r1, 0x1
bl StartSpriteAnim
strh r5, [r4, 0x26]
b _080EE654
_080EE646:
movs r0, 0x21
movs r1, 0x3F
movs r2, 0x1
bl PlayCry3
movs r0, 0
strh r0, [r4, 0x30]
_080EE654:
ldrh r0, [r4, 0x2E]
adds r0, 0x1
strh r0, [r4, 0x2E]
b _080EE69A
_080EE65C:
ldrh r0, [r4, 0x32]
adds r0, 0x1
strh r0, [r4, 0x32]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1
ble _080EE67C
movs r0, 0
strh r0, [r4, 0x32]
movs r1, 0
movs r2, 0x26
ldrsh r0, [r4, r2]
cmp r0, 0
bne _080EE67A
movs r1, 0x1
_080EE67A:
strh r1, [r4, 0x26]
_080EE67C:
ldrh r0, [r4, 0x30]
adds r0, 0x1
strh r0, [r4, 0x30]
lsls r0, 16
asrs r0, 16
cmp r0, 0x30
ble _080EE69A
adds r0, r4, 0
movs r1, 0
bl StartSpriteAnim
movs r0, 0
strh r0, [r4, 0x26]
ldr r0, _080EE6A0 @ =SpriteCallbackDummy
str r0, [r4, 0x1C]
_080EE69A:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080EE6A0: .4byte SpriteCallbackDummy
thumb_func_end sub_80EE610
thumb_func_start sub_80EE6A4
sub_80EE6A4: @ 80EE6A4
push {r4,lr}
adds r4, r0, 0
ldr r1, _080EE6F0 @ =gUnknown_203AB0A
movs r0, 0x10
strh r0, [r1]
ldr r1, _080EE6F4 @ =gUnknown_203AB04
movs r0, 0x3
strh r0, [r1]
ldr r1, _080EE6F8 @ =gUnknown_203AB08
movs r0, 0x5
strh r0, [r1]
ldr r1, _080EE6FC @ =gUnknown_203AB06
movs r0, 0
strh r0, [r1]
ldr r0, [r4, 0x18]
movs r1, 0x2
bl StartSpriteAnim
ldr r0, [r4, 0x18]
movs r1, 0
strh r1, [r0, 0x2E]
ldr r0, [r4, 0x18]
strh r1, [r0, 0x30]
ldr r0, [r4, 0x18]
strh r1, [r0, 0x32]
ldr r0, [r4, 0x18]
strh r1, [r0, 0x34]
ldr r0, [r4, 0x18]
strh r1, [r0, 0x36]
ldr r1, [r4, 0x18]
movs r0, 0x28
strh r0, [r1, 0x3C]
ldr r1, [r4, 0x18]
ldr r0, _080EE700 @ =sub_80EE704
str r0, [r1, 0x1C]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080EE6F0: .4byte gUnknown_203AB0A
_080EE6F4: .4byte gUnknown_203AB04
_080EE6F8: .4byte gUnknown_203AB08
_080EE6FC: .4byte gUnknown_203AB06
_080EE700: .4byte sub_80EE704
thumb_func_end sub_80EE6A4
thumb_func_start sub_80EE704
sub_80EE704: @ 80EE704
push {r4,r5,lr}
adds r4, r0, 0
movs r1, 0x2E
ldrsh r0, [r4, r1]
cmp r0, 0x1
beq _080EE740
cmp r0, 0x1
bgt _080EE71A
cmp r0, 0
beq _080EE726
b _080EE846
_080EE71A:
cmp r0, 0x2
beq _080EE7C4
cmp r0, 0x3
bne _080EE724
b _080EE824
_080EE724:
b _080EE846
_080EE726:
ldrh r0, [r4, 0x30]
adds r0, 0x1
strh r0, [r4, 0x30]
lsls r0, 16
asrs r0, 16
cmp r0, 0x4
bgt _080EE736
b _080EE846
_080EE736:
adds r0, r4, 0
movs r1, 0x3
bl StartSpriteAnim
b _080EE818
_080EE740:
ldrh r2, [r4, 0x3C]
ldrh r3, [r4, 0x32]
adds r1, r2, r3
movs r5, 0
strh r1, [r4, 0x32]
ldrh r0, [r4, 0x34]
adds r0, 0x8
strh r0, [r4, 0x34]
lsls r1, 16
asrs r1, 20
strh r1, [r4, 0x24]
ldr r1, _080EE7B0 @ =gUnknown_825E074
movs r3, 0x34
ldrsh r0, [r4, r3]
lsls r0, 1
adds r0, r1
movs r3, 0
ldrsh r1, [r0, r3]
ldr r0, _080EE7B4 @ =gUnknown_203AB04
ldrh r0, [r0]
muls r0, r1
ldr r1, _080EE7B8 @ =gUnknown_203AB08
ldrh r1, [r1]
asrs r0, r1
negs r0, r0
strh r0, [r4, 0x26]
ldrh r0, [r4, 0x38]
adds r0, 0x1
strh r0, [r4, 0x38]
movs r0, 0x38
ldrsh r1, [r4, r0]
ldr r0, _080EE7BC @ =gUnknown_203AB06
ldrh r0, [r0]
cmp r1, r0
ble _080EE78C
strh r5, [r4, 0x38]
subs r0, r2, 0x1
strh r0, [r4, 0x3C]
_080EE78C:
ldrh r0, [r4, 0x36]
adds r0, 0x1
strh r0, [r4, 0x36]
lsls r0, 16
asrs r0, 16
cmp r0, 0xF
ble _080EE846
adds r0, r4, 0
movs r1, 0x2
bl StartSpriteAnim
strh r5, [r4, 0x30]
ldr r0, _080EE7C0 @ =0x00004757
strh r0, [r4, 0x3A]
movs r0, 0x1C
strh r0, [r4, 0x3C]
b _080EE818
.align 2, 0
_080EE7B0: .4byte gUnknown_825E074
_080EE7B4: .4byte gUnknown_203AB04
_080EE7B8: .4byte gUnknown_203AB08
_080EE7BC: .4byte gUnknown_203AB06
_080EE7C0: .4byte 0x00004757
_080EE7C4:
ldrh r0, [r4, 0x3C]
ldrh r1, [r4, 0x32]
adds r0, r1
strh r0, [r4, 0x32]
lsls r0, 16
asrs r1, r0, 20
strh r1, [r4, 0x24]
ldrh r0, [r4, 0x30]
adds r0, 0x1
strh r0, [r4, 0x30]
lsls r0, 16
asrs r0, 16
cmp r0, 0x6
ble _080EE804
ldrh r0, [r4, 0x20]
adds r0, r1
lsls r0, 16
asrs r0, 16
ldrh r1, [r4, 0x26]
ldrh r2, [r4, 0x22]
adds r1, r2
lsls r1, 16
asrs r1, 16
movs r3, 0x3A
ldrsh r2, [r4, r3]
bl sub_80EE864
movs r0, 0x3A
ldrsh r1, [r4, r0]
ldr r0, _080EE820 @ =0x41c64e6d
muls r0, r1
strh r0, [r4, 0x3A]
_080EE804:
movs r1, 0x30
ldrsh r0, [r4, r1]
cmp r0, 0xC
ble _080EE846
adds r0, r4, 0
movs r1, 0
bl StartSpriteAnim
movs r0, 0
strh r0, [r4, 0x30]
_080EE818:
ldrh r0, [r4, 0x2E]
adds r0, 0x1
strh r0, [r4, 0x2E]
b _080EE846
.align 2, 0
_080EE820: .4byte 0x41c64e6d
_080EE824:
ldrh r0, [r4, 0x30]
adds r0, 0x1
strh r0, [r4, 0x30]
lsls r0, 16
asrs r0, 16
cmp r0, 0x10
ble _080EE846
ldr r0, _080EE84C @ =gUnknown_203AB0A
ldrh r1, [r0]
ldrh r2, [r4, 0x24]
negs r2, r2
lsls r2, 16
asrs r2, 16
adds r0, r4, 0
movs r3, 0x4
bl sub_80EE970
_080EE846:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080EE84C: .4byte gUnknown_203AB0A
thumb_func_end sub_80EE704
thumb_func_start sub_80EE850
sub_80EE850: @ 80EE850
ldr r0, [r0, 0x18]
ldr r1, [r0, 0x1C]
ldr r0, _080EE860 @ =SpriteCallbackDummy
eors r1, r0
negs r0, r1
orrs r0, r1
lsrs r0, 31
bx lr
.align 2, 0
_080EE860: .4byte SpriteCallbackDummy
thumb_func_end sub_80EE850
thumb_func_start sub_80EE864
sub_80EE864: @ 80EE864
push {r4-r7,lr}
mov r7, r8
push {r7}
lsls r2, 16
lsrs r5, r2, 16
movs r6, 0
lsls r0, 16
ldr r2, _080EE8D4 @ =0xffea0000
adds r2, r0
mov r8, r2
lsls r1, 16
movs r0, 0xC0
lsls r0, 13
adds r7, r1, r0
_080EE880:
ldr r0, _080EE8D8 @ =gUnknown_840BEC4
mov r2, r8
asrs r1, r2, 16
asrs r2, r7, 16
movs r3, 0xA
bl CreateSprite
lsls r0, 24
lsrs r1, r0, 24
cmp r1, 0x40
beq _080EE8C4
ldr r0, _080EE8DC @ =gSprites
lsls r4, r1, 4
adds r4, r1
lsls r4, 2
adds r4, r0
lsls r5, 16
asrs r5, 16
adds r0, r5, 0
movs r1, 0xD
bl __modsi3
adds r0, 0x8
strh r0, [r4, 0x34]
adds r0, r5, 0
movs r1, 0x3
bl __modsi3
strh r0, [r4, 0x36]
strh r6, [r4, 0x3C]
ldr r0, _080EE8E0 @ =0x41c64e6d
muls r0, r5
lsls r0, 16
lsrs r5, r0, 16
_080EE8C4:
adds r6, 0x1
cmp r6, 0x1
ble _080EE880
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080EE8D4: .4byte 0xffea0000
_080EE8D8: .4byte gUnknown_840BEC4
_080EE8DC: .4byte gSprites
_080EE8E0: .4byte 0x41c64e6d
thumb_func_end sub_80EE864
thumb_func_start sub_80EE8E4
sub_80EE8E4: @ 80EE8E4
push {r4,r5,lr}
adds r5, r0, 0
adds r4, r5, 0
adds r4, 0x2E
movs r1, 0x2E
ldrsh r0, [r5, r1]
cmp r0, 0
beq _080EE8FA
cmp r0, 0x1
beq _080EE90C
b _080EE93E
_080EE8FA:
ldrh r0, [r5, 0x20]
lsls r0, 4
strh r0, [r4, 0x2]
ldrh r0, [r5, 0x22]
lsls r0, 4
strh r0, [r4, 0x4]
ldrh r0, [r5, 0x2E]
adds r0, 0x1
strh r0, [r5, 0x2E]
_080EE90C:
ldrh r1, [r4, 0x2]
ldrh r0, [r4, 0x6]
subs r1, r0
strh r1, [r4, 0x2]
ldrh r0, [r4, 0x8]
ldrh r2, [r4, 0x4]
adds r0, r2
strh r0, [r4, 0x4]
lsls r1, 16
asrs r1, 20
strh r1, [r5, 0x20]
ldrh r0, [r4, 0x4]
lsls r0, 16
asrs r0, 20
strh r0, [r5, 0x22]
adds r0, r5, 0
adds r0, 0x3F
ldrb r1, [r0]
movs r0, 0x10
ands r0, r1
cmp r0, 0
beq _080EE93E
adds r0, r5, 0
bl DestroySprite
_080EE93E:
ldrh r0, [r4, 0xE]
adds r0, 0x1
strh r0, [r4, 0xE]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1
ble _080EE96A
movs r0, 0
strh r0, [r4, 0xE]
adds r3, r5, 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]
_080EE96A:
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_80EE8E4
thumb_func_start sub_80EE970
sub_80EE970: @ 80EE970
push {r4-r6,lr}
mov r6, r8
push {r6}
adds r4, r0, 0
adds r5, r1, 0
adds r0, r2, 0
adds r6, r3, 0
lsls r5, 16
lsrs r5, 16
lsls r6, 24
lsrs r6, 24
movs r1, 0
mov r8, r1
mov r1, r8
strh r1, [r4, 0x2E]
strh r5, [r4, 0x30]
ldrh r1, [r4, 0x24]
lsls r1, 4
strh r1, [r4, 0x32]
lsls r0, 16
asrs r0, 12
adds r1, r5, 0
bl __divsi3
strh r0, [r4, 0x34]
mov r0, r8
strh r0, [r4, 0x36]
movs r0, 0x80
lsls r0, 4
adds r1, r5, 0
bl __divsi3
strh r0, [r4, 0x38]
mov r1, r8
strh r1, [r4, 0x3A]
strh r6, [r4, 0x3C]
adds r0, r4, 0
movs r1, 0x2
bl StartSpriteAnim
ldr r0, _080EE9D0 @ =sub_80EE9D4
str r0, [r4, 0x1C]
pop {r3}
mov r8, r3
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080EE9D0: .4byte sub_80EE9D4
thumb_func_end sub_80EE970
thumb_func_start sub_80EE9D4
sub_80EE9D4: @ 80EE9D4
push {r4,r5,lr}
adds r4, r0, 0
movs r0, 0x2E
ldrsh r5, [r4, r0]
cmp r5, 0x1
beq _080EEA08
cmp r5, 0x1
bgt _080EE9EA
cmp r5, 0
beq _080EE9F0
b _080EEA88
_080EE9EA:
cmp r5, 0x2
beq _080EEA6E
b _080EEA88
_080EE9F0:
ldrh r0, [r4, 0x3A]
adds r0, 0x1
strh r0, [r4, 0x3A]
lsls r0, 16
asrs r0, 16
cmp r0, 0x4
ble _080EEA88
adds r0, r4, 0
movs r1, 0x3
bl StartSpriteAnim
b _080EEA64
_080EEA08:
ldrh r0, [r4, 0x30]
subs r0, 0x1
strh r0, [r4, 0x30]
lsls r0, 16
asrs r5, r0, 16
cmp r5, 0
beq _080EEA4C
ldrh r1, [r4, 0x34]
ldrh r2, [r4, 0x32]
adds r1, r2
strh r1, [r4, 0x32]
ldrh r0, [r4, 0x38]
ldrh r2, [r4, 0x36]
adds r0, r2
strh r0, [r4, 0x36]
lsls r1, 16
asrs r1, 20
strh r1, [r4, 0x24]
ldr r1, _080EEA48 @ =gUnknown_825E074
lsls r0, 16
asrs r0, 20
lsls r0, 1
adds r0, r1
movs r1, 0
ldrsh r0, [r0, r1]
movs r2, 0x3C
ldrsh r1, [r4, r2]
asrs r0, r1
negs r0, r0
strh r0, [r4, 0x26]
b _080EEA88
.align 2, 0
_080EEA48: .4byte gUnknown_825E074
_080EEA4C:
ldrh r0, [r4, 0x32]
lsrs r0, 4
strh r0, [r4, 0x24]
strh r5, [r4, 0x26]
adds r0, r4, 0
movs r1, 0x2
bl StartSpriteAnim
movs r1, 0x3C
ldrsh r0, [r4, r1]
cmp r0, 0x5
beq _080EEA84
_080EEA64:
strh r5, [r4, 0x3A]
ldrh r0, [r4, 0x2E]
adds r0, 0x1
strh r0, [r4, 0x2E]
b _080EEA88
_080EEA6E:
ldrh r0, [r4, 0x3A]
adds r0, 0x1
strh r0, [r4, 0x3A]
lsls r0, 16
asrs r0, 16
cmp r0, 0x4
ble _080EEA88
adds r0, r4, 0
movs r1, 0
bl StartSpriteAnim
_080EEA84:
ldr r0, _080EEA90 @ =SpriteCallbackDummy
str r0, [r4, 0x1C]
_080EEA88:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080EEA90: .4byte SpriteCallbackDummy
thumb_func_end sub_80EE9D4
thumb_func_start sub_80EEA94
sub_80EEA94: @ 80EEA94
push {r4,lr}
adds r4, r0, 0
ldr r0, [r4, 0x18]
movs r2, 0
strh r2, [r0, 0x2E]
ldr r0, [r4, 0x18]
strh r2, [r0, 0x30]
ldr r0, [r4, 0x18]
strh r2, [r0, 0x32]
ldr r0, [r4, 0x18]
strh r2, [r0, 0x34]
ldr r0, [r4, 0x18]
strh r2, [r0, 0x36]
ldr r0, [r4, 0x18]
strh r2, [r0, 0x38]
ldr r1, [r4, 0x18]
ldrh r0, [r1, 0x24]
ldrh r3, [r1, 0x20]
adds r0, r3
strh r0, [r1, 0x20]
ldr r0, [r4, 0x18]
strh r2, [r0, 0x24]
ldr r1, _080EEAF4 @ =gUnknown_203AB0C
movs r0, 0x24
strh r0, [r1]
ldr r1, _080EEAF8 @ =gUnknown_203AB06
movs r0, 0x28
strh r0, [r1]
ldr r1, _080EEAFC @ =gUnknown_203AB04
movs r0, 0x3
strh r0, [r1]
ldr r1, _080EEB00 @ =gUnknown_203AB08
movs r0, 0x4
strh r0, [r1]
ldr r1, [r4, 0x18]
movs r0, 0x24
strh r0, [r1, 0x3C]
ldr r0, [r4, 0x18]
movs r1, 0x2
bl StartSpriteAnim
ldr r1, [r4, 0x18]
ldr r0, _080EEB04 @ =sub_80EEB08
str r0, [r1, 0x1C]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080EEAF4: .4byte gUnknown_203AB0C
_080EEAF8: .4byte gUnknown_203AB06
_080EEAFC: .4byte gUnknown_203AB04
_080EEB00: .4byte gUnknown_203AB08
_080EEB04: .4byte sub_80EEB08
thumb_func_end sub_80EEA94
thumb_func_start sub_80EEB08
sub_80EEB08: @ 80EEB08
push {r4,r5,lr}
adds r4, r0, 0
movs r1, 0x2E
ldrsh r0, [r4, r1]
cmp r0, 0x1
beq _080EEB58
cmp r0, 0x1
bgt _080EEB1E
cmp r0, 0
beq _080EEB24
b _080EEBCE
_080EEB1E:
cmp r0, 0x2
beq _080EEB84
b _080EEBCE
_080EEB24:
ldrh r0, [r4, 0x30]
adds r0, 0x1
strh r0, [r4, 0x30]
movs r1, 0x1
ands r0, r1
cmp r0, 0
beq _080EEB4A
ldrh r0, [r4, 0x32]
adds r0, 0x1
strh r0, [r4, 0x32]
ands r0, r1
cmp r0, 0
beq _080EEB44
ldrh r0, [r4, 0x24]
adds r0, 0x1
b _080EEB48
_080EEB44:
ldrh r0, [r4, 0x24]
subs r0, 0x1
_080EEB48:
strh r0, [r4, 0x24]
_080EEB4A:
movs r3, 0x30
ldrsh r0, [r4, r3]
cmp r0, 0x11
ble _080EEBCE
movs r0, 0
strh r0, [r4, 0x30]
b _080EEB78
_080EEB58:
ldrh r0, [r4, 0x30]
adds r0, 0x1
movs r5, 0
strh r0, [r4, 0x30]
lsls r0, 16
asrs r0, 16
ldr r1, _080EEB80 @ =gUnknown_203AB06
ldrh r1, [r1]
cmp r0, r1
blt _080EEBCE
adds r0, r4, 0
movs r1, 0x4
bl StartSpriteAnim
strh r5, [r4, 0x30]
strh r5, [r4, 0x32]
_080EEB78:
ldrh r0, [r4, 0x2E]
adds r0, 0x1
strh r0, [r4, 0x2E]
b _080EEBCE
.align 2, 0
_080EEB80: .4byte gUnknown_203AB06
_080EEB84:
ldrh r2, [r4, 0x3C]
ldrh r1, [r4, 0x30]
adds r0, r2, r1
strh r0, [r4, 0x30]
lsls r0, 16
asrs r0, 20
negs r1, r0
strh r1, [r4, 0x24]
ldr r1, _080EEBD4 @ =gUnknown_825E074
lsls r0, 1
adds r0, r1
movs r3, 0
ldrsh r1, [r0, r3]
ldr r0, _080EEBD8 @ =gUnknown_203AB04
ldrh r0, [r0]
muls r0, r1
ldr r1, _080EEBDC @ =gUnknown_203AB08
ldrh r1, [r1]
asrs r0, r1
negs r0, r0
strh r0, [r4, 0x26]
ldrh r0, [r4, 0x32]
adds r0, 0x1
strh r0, [r4, 0x32]
lsls r0, r2, 16
asrs r0, 16
cmp r0, 0xC
ble _080EEBC0
subs r0, r2, 0x1
strh r0, [r4, 0x3C]
_080EEBC0:
ldrh r0, [r4, 0x30]
lsls r0, 16
asrs r0, 20
cmp r0, 0x3F
ble _080EEBCE
ldr r0, _080EEBE0 @ =SpriteCallbackDummy
str r0, [r4, 0x1C]
_080EEBCE:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080EEBD4: .4byte gUnknown_825E074
_080EEBD8: .4byte gUnknown_203AB04
_080EEBDC: .4byte gUnknown_203AB08
_080EEBE0: .4byte SpriteCallbackDummy
thumb_func_end sub_80EEB08
thumb_func_start sub_80EEBE4
sub_80EEBE4: @ 80EEBE4
push {r4,r5,lr}
movs r5, 0
ldr r4, _080EEC04 @ =gUnknown_840BEDC
_080EEBEA:
adds r0, r4, 0
bl LoadCompressedObjectPic
adds r4, 0x8
adds r5, 0x1
cmp r5, 0x6
bls _080EEBEA
ldr r0, _080EEC08 @ =gUnknown_840BF14
bl LoadSpritePalettes
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080EEC04: .4byte gUnknown_840BEDC
_080EEC08: .4byte gUnknown_840BF14
thumb_func_end sub_80EEBE4
.align 2, 0 @ Don't pad with nop.