.include "constants/gba_constants.inc" .include "constants/species_constants.inc" .include "asm/macros.inc" .syntax unified .text thumb_func_start sub_813CAF4 sub_813CAF4: @ 813CAF4 push {r4-r6,lr} sub sp, 0x4 lsls r0, 24 lsrs r5, r0, 24 ldr r1, _0813CB2C @ =gTasks lsls r0, r5, 2 adds r0, r5 lsls r0, 3 adds r4, r0, r1 ldrh r0, [r4, 0x26] adds r0, 0x1 movs r6, 0 strh r0, [r4, 0x26] movs r1, 0x8 ldrsh r0, [r4, r1] cmp r0, 0x4 bne _0813CB18 b _0813CC28 _0813CB18: cmp r0, 0x4 bgt _0813CB30 cmp r0, 0x2 beq _0813CB60 cmp r0, 0x2 bgt _0813CBC4 cmp r0, 0 beq _0813CB46 b _0813CC8E .align 2, 0 _0813CB2C: .4byte gTasks _0813CB30: cmp r0, 0x1E beq _0813CBEE cmp r0, 0x1E bgt _0813CB3E cmp r0, 0x14 beq _0813CB8A b _0813CC8E _0813CB3E: cmp r0, 0x28 bne _0813CB44 b _0813CC56 _0813CB44: b _0813CC8E _0813CB46: movs r1, 0x80 lsls r1, 19 movs r2, 0xE5 lsls r2, 6 adds r0, r2, 0 strh r0, [r1] ldr r0, _0813CB5C @ =REG_BG2CNT strh r6, [r0] movs r0, 0xFF strh r0, [r4, 0x8] b _0813CC8E .align 2, 0 _0813CB5C: .4byte REG_BG2CNT _0813CB60: ldr r0, _0813CBB0 @ =0x0000ffff str r0, [sp] movs r0, 0x1 movs r1, 0 movs r2, 0x10 movs r3, 0 bl BeginNormalPaletteFade ldr r1, _0813CBB4 @ =REG_BG2CNT ldr r2, _0813CBB8 @ =0x00000e07 adds r0, r2, 0 strh r0, [r1] subs r1, 0xC movs r2, 0xF5 lsls r2, 6 adds r0, r2, 0 strh r0, [r1] strh r6, [r4, 0xA] strh r6, [r4, 0xC] movs r0, 0x14 strh r0, [r4, 0x8] _0813CB8A: ldr r2, _0813CBBC @ =REG_BG2VOFS ldr r0, _0813CBC0 @ =gTasks lsls r1, r5, 2 adds r1, r5 lsls r1, 3 adds r1, r0 ldrh r0, [r1, 0xA] strh r0, [r2] subs r2, 0x2 ldrh r0, [r1, 0xC] strh r0, [r2] ldrh r0, [r1, 0xA] adds r0, 0x6 strh r0, [r1, 0xA] ldrh r0, [r1, 0xC] subs r0, 0x8 strh r0, [r1, 0xC] b _0813CC8E .align 2, 0 _0813CBB0: .4byte 0x0000ffff _0813CBB4: .4byte REG_BG2CNT _0813CBB8: .4byte 0x00000e07 _0813CBBC: .4byte REG_BG2VOFS _0813CBC0: .4byte gTasks _0813CBC4: ldr r0, _0813CC14 @ =0x0000ffff str r0, [sp] movs r0, 0x1 movs r1, 0 movs r2, 0x10 movs r3, 0 bl BeginNormalPaletteFade ldr r1, _0813CC18 @ =REG_BG2CNT ldr r2, _0813CC1C @ =0x00000e07 adds r0, r2, 0 strh r0, [r1] subs r1, 0xC movs r2, 0xF5 lsls r2, 6 adds r0, r2, 0 strh r0, [r1] strh r6, [r4, 0xA] strh r6, [r4, 0xC] movs r0, 0x1E strh r0, [r4, 0x8] _0813CBEE: ldr r2, _0813CC20 @ =REG_BG2VOFS ldr r0, _0813CC24 @ =gTasks lsls r1, r5, 2 adds r1, r5 lsls r1, 3 adds r1, r0 ldrh r0, [r1, 0xA] strh r0, [r2] subs r2, 0x2 ldrh r0, [r1, 0xC] strh r0, [r2] ldrh r0, [r1, 0xA] subs r0, 0x6 strh r0, [r1, 0xA] ldrh r0, [r1, 0xC] adds r0, 0x8 strh r0, [r1, 0xC] b _0813CC8E .align 2, 0 _0813CC14: .4byte 0x0000ffff _0813CC18: .4byte REG_BG2CNT _0813CC1C: .4byte 0x00000e07 _0813CC20: .4byte REG_BG2VOFS _0813CC24: .4byte gTasks _0813CC28: ldr r0, _0813CC98 @ =0x000037f7 str r0, [sp] movs r0, 0x1 movs r1, 0x5 movs r2, 0 movs r3, 0x10 bl BeginNormalPaletteFade ldr r1, _0813CC9C @ =REG_BG2CNT ldr r2, _0813CCA0 @ =0x00000e07 adds r0, r2, 0 strh r0, [r1] subs r1, 0xC movs r2, 0xF5 lsls r2, 6 adds r0, r2, 0 strh r0, [r1] strh r6, [r4, 0xA] strh r6, [r4, 0xC] movs r0, 0x8 strh r0, [r4, 0xE] movs r0, 0x28 strh r0, [r4, 0x8] _0813CC56: ldr r2, _0813CCA4 @ =REG_BG2VOFS ldr r1, _0813CCA8 @ =gTasks lsls r0, r5, 2 adds r0, r5 lsls r0, 3 adds r3, r0, r1 ldrh r0, [r3, 0xA] strh r0, [r2] ldr r1, _0813CCAC @ =REG_BG2HOFS ldrh r0, [r3, 0xC] strh r0, [r1] ldrh r0, [r3, 0xA] ldrh r2, [r3, 0xE] subs r0, r2 strh r0, [r3, 0xA] ldrh r1, [r3, 0xC] adds r0, r2, r1 strh r0, [r3, 0xC] ldrh r1, [r3, 0x26] movs r0, 0x7 ands r0, r1 cmp r0, 0 bne _0813CC8E lsls r0, r2, 16 cmp r0, 0 beq _0813CC8E subs r0, r2, 0x1 strh r0, [r3, 0xE] _0813CC8E: add sp, 0x4 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0813CC98: .4byte 0x000037f7 _0813CC9C: .4byte REG_BG2CNT _0813CCA0: .4byte 0x00000e07 _0813CCA4: .4byte REG_BG2VOFS _0813CCA8: .4byte gTasks _0813CCAC: .4byte REG_BG2HOFS thumb_func_end sub_813CAF4 thumb_func_start intro_reset_and_hide_bgs intro_reset_and_hide_bgs: @ 813CCB0 movs r0, 0x80 lsls r0, 19 movs r1, 0 strh r1, [r0] adds r0, 0x1C strh r1, [r0] adds r0, 0x2 strh r1, [r0] subs r0, 0x6 strh r1, [r0] adds r0, 0x2 strh r1, [r0] subs r0, 0x6 strh r1, [r0] adds r0, 0x2 strh r1, [r0] subs r0, 0x6 strh r1, [r0] adds r0, 0x2 strh r1, [r0] adds r0, 0x3E strh r1, [r0] adds r0, 0x2 strh r1, [r0] adds r0, 0x2 strh r1, [r0] bx lr thumb_func_end intro_reset_and_hide_bgs thumb_func_start sub_813CCE8 sub_813CCE8: @ 813CCE8 push {r4,lr} lsls r0, 24 lsrs r3, r0, 24 ldr r1, _0813CD0C @ =gTasks lsls r0, r3, 2 adds r0, r3 lsls r0, 3 adds r0, r1 movs r2, 0x8 ldrsh r0, [r0, r2] adds r2, r1, 0 cmp r0, 0x4 bhi _0813CD28 lsls r0, 2 ldr r1, _0813CD10 @ =_0813CD14 adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _0813CD0C: .4byte gTasks _0813CD10: .4byte _0813CD14 .align 2, 0 _0813CD14: .4byte _0813CD28 .4byte _0813CD5C .4byte _0813CD8C .4byte _0813CDA8 .4byte _0813CDFC _0813CD28: ldr r1, _0813CD54 @ =REG_BLDCNT ldr r4, _0813CD58 @ =0x00003f50 adds r0, r4, 0 strh r0, [r1] adds r1, 0x2 movs r4, 0x80 lsls r4, 5 adds r0, r4, 0 strh r0, [r1] adds r1, 0x2 movs r0, 0 strh r0, [r1] lsls r0, r3, 2 adds r0, r3 lsls r0, 3 adds r0, r2 movs r1, 0x40 strh r1, [r0, 0xA] movs r1, 0x1 strh r1, [r0, 0x8] b _0813CE26 .align 2, 0 _0813CD54: .4byte REG_BLDCNT _0813CD58: .4byte 0x00003f50 _0813CD5C: lsls r0, r3, 2 adds r0, r3 lsls r0, 3 adds r2, r0, r2 ldrh r1, [r2, 0xA] movs r3, 0xA ldrsh r0, [r2, r3] cmp r0, 0 beq _0813CD78 subs r0, r1, 0x1 strh r0, [r2, 0xA] movs r4, 0xA ldrsh r0, [r2, r4] b _0813CDC2 _0813CD78: ldr r1, _0813CD84 @ =REG_BLDALPHA ldr r0, _0813CD88 @ =gUnknown_08393E64 ldrh r0, [r0] strh r0, [r1] movs r0, 0x80 b _0813CDEA .align 2, 0 _0813CD84: .4byte REG_BLDALPHA _0813CD88: .4byte gUnknown_08393E64 _0813CD8C: lsls r0, r3, 2 adds r0, r3 lsls r0, 3 adds r1, r0, r2 ldrh r0, [r1, 0xA] movs r3, 0xA ldrsh r2, [r1, r3] cmp r2, 0 bne _0813CE0E strh r2, [r1, 0xA] ldrh r0, [r1, 0x8] adds r0, 0x1 strh r0, [r1, 0x8] b _0813CE26 _0813CDA8: lsls r0, r3, 2 adds r0, r3 lsls r0, 3 adds r2, r0, r2 ldrh r1, [r2, 0xA] movs r4, 0xA ldrsh r0, [r2, r4] cmp r0, 0x3D bgt _0813CDE0 adds r0, r1, 0x1 strh r0, [r2, 0xA] movs r1, 0xA ldrsh r0, [r2, r1] _0813CDC2: lsrs r1, r0, 31 adds r0, r1 movs r2, 0xFF lsls r2, 1 ldr r3, _0813CDD8 @ =REG_BLDALPHA ldr r1, _0813CDDC @ =gUnknown_08393E64 ands r0, r2 adds r0, r1 ldrh r0, [r0] strh r0, [r3] b _0813CE26 .align 2, 0 _0813CDD8: .4byte REG_BLDALPHA _0813CDDC: .4byte gUnknown_08393E64 _0813CDE0: ldr r1, _0813CDF4 @ =REG_BLDALPHA ldr r0, _0813CDF8 @ =gUnknown_08393E64 ldrh r0, [r0, 0x3E] strh r0, [r1] movs r0, 0x10 _0813CDEA: strh r0, [r2, 0xA] ldrh r0, [r2, 0x8] adds r0, 0x1 strh r0, [r2, 0x8] b _0813CE26 .align 2, 0 _0813CDF4: .4byte REG_BLDALPHA _0813CDF8: .4byte gUnknown_08393E64 _0813CDFC: lsls r0, r3, 2 adds r0, r3 lsls r0, 3 adds r1, r0, r2 ldrh r0, [r1, 0xA] movs r4, 0xA ldrsh r2, [r1, r4] cmp r2, 0 beq _0813CE14 _0813CE0E: subs r0, 0x1 strh r0, [r1, 0xA] b _0813CE26 _0813CE14: ldr r0, _0813CE2C @ =REG_BLDCNT strh r2, [r0] adds r0, 0x2 strh r2, [r0] adds r0, 0x2 strh r2, [r0] adds r0, r3, 0 bl DestroyTask _0813CE26: pop {r4} pop {r0} bx r0 .align 2, 0 _0813CE2C: .4byte REG_BLDCNT thumb_func_end sub_813CCE8 thumb_func_start sub_813CE30 sub_813CE30: @ 813CE30 push {r4,lr} sub sp, 0x24 lsls r2, 16 lsrs r2, 16 movs r4, 0x80 lsls r4, 8 str r4, [sp] str r4, [sp, 0x4] mov r4, sp strh r0, [r4, 0x8] mov r0, sp strh r1, [r0, 0xA] strh r2, [r0, 0xC] strh r2, [r0, 0xE] strh r3, [r0, 0x10] add r4, sp, 0x14 adds r1, r4, 0 movs r2, 0x1 bl BgAffineSet ldr r1, _0813CE84 @ =REG_BG2PA ldrh r0, [r4] strh r0, [r1] adds r1, 0x2 ldrh r0, [r4, 0x2] strh r0, [r1] adds r1, 0x2 ldrh r0, [r4, 0x4] strh r0, [r1] adds r1, 0x2 ldrh r0, [r4, 0x6] strh r0, [r1] adds r1, 0x2 ldr r0, [r4, 0x8] str r0, [r1] adds r1, 0x4 ldr r0, [r4, 0xC] str r0, [r1] add sp, 0x24 pop {r4} pop {r0} bx r0 .align 2, 0 _0813CE84: .4byte REG_BG2PA thumb_func_end sub_813CE30 thumb_func_start sub_813CE88 sub_813CE88: @ 813CE88 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x10 ldr r4, [sp, 0x30] lsls r0, 16 lsrs r7, r0, 16 lsls r1, 16 lsrs r1, 16 mov r9, r1 lsls r2, 16 lsrs r2, 16 mov r10, r2 lsls r3, 16 lsrs r3, 16 mov r8, r3 lsls r4, 24 lsrs r6, r4, 24 cmp r6, 0 beq _0813CEF0 lsls r0, r7, 3 ldr r1, _0813CEE4 @ =gMonFrontPicTable adds r0, r1 ldr r1, _0813CEE8 @ =gMonFrontPicCoords lsls r2, r7, 2 adds r2, r1 ldrb r1, [r2] ldrb r2, [r2, 0x1] movs r3, 0x80 lsls r3, 18 ldr r5, _0813CEEC @ =gUnknown_0840B5A0 mov r6, r8 lsls r4, r6, 2 adds r4, r5 ldr r4, [r4] str r4, [sp] str r7, [sp, 0x4] movs r4, 0 str r4, [sp, 0x8] movs r4, 0x1 str r4, [sp, 0xC] bl sub_800D378 b _0813CF1C .align 2, 0 _0813CEE4: .4byte gMonFrontPicTable _0813CEE8: .4byte gMonFrontPicCoords _0813CEEC: .4byte gUnknown_0840B5A0 _0813CEF0: lsls r0, r7, 3 ldr r1, _0813CF90 @ =gMonBackPicTable adds r0, r1 ldr r1, _0813CF94 @ =gMonBackPicCoords lsls r2, r7, 2 adds r2, r1 ldrb r1, [r2] ldrb r2, [r2, 0x1] movs r3, 0x80 lsls r3, 18 ldr r4, _0813CF98 @ =gUnknown_0840B5A0 mov r12, r4 mov r5, r8 lsls r4, r5, 2 add r4, r12 ldr r4, [r4] str r4, [sp] str r7, [sp, 0x4] str r6, [sp, 0x8] str r6, [sp, 0xC] bl sub_800D378 _0813CF1C: ldr r2, _0813CF9C @ =0x0000ffff adds r0, r7, 0 movs r1, 0 bl species_and_otid_get_pal mov r6, r8 lsls r4, r6, 4 movs r2, 0x80 lsls r2, 1 adds r1, r4, r2 lsls r1, 16 lsrs r1, 16 movs r2, 0x20 bl LoadCompressedPalette lsls r1, r6, 24 lsrs r1, 24 mov r0, r8 bl sub_8143648 ldr r0, _0813CFA0 @ =gUnknown_02024E8C mov r3, r9 lsls r1, r3, 16 asrs r1, 16 mov r5, r10 lsls r2, r5, 16 asrs r2, 16 mov r3, r8 adds r3, 0x1 lsls r3, 26 lsrs r3, 24 bl CreateSprite lsls r0, 24 lsrs r0, 24 ldr r1, _0813CFA4 @ =gSprites lsls r2, r0, 4 adds r2, r0 lsls r2, 2 adds r2, r1 ldrb r3, [r2, 0x5] movs r1, 0xF ands r1, r3 orrs r1, r4 movs r3, 0xD negs r3, r3 ands r1, r3 movs r3, 0x4 orrs r1, r3 strb r1, [r2, 0x5] add sp, 0x10 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r1} bx r1 .align 2, 0 _0813CF90: .4byte gMonBackPicTable _0813CF94: .4byte gMonBackPicCoords _0813CF98: .4byte gUnknown_0840B5A0 _0813CF9C: .4byte 0x0000ffff _0813CFA0: .4byte gUnknown_02024E8C _0813CFA4: .4byte gSprites thumb_func_end sub_813CE88 thumb_func_start sub_813CFA8 sub_813CFA8: @ 813CFA8 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x8 mov r9, r1 mov r10, r2 adds r6, r3, 0 lsls r0, 16 lsrs r0, 16 lsls r1, 16 lsrs r1, 16 mov r9, r1 lsls r2, 16 lsrs r2, 16 mov r10, r2 lsls r6, 16 lsrs r6, 16 lsls r7, r0, 3 ldr r1, _0813D068 @ =gTrainerBackPicTable mov r8, r1 add r8, r7 ldr r1, _0813D06C @ =gTrainerBackPicCoords lsls r2, r0, 2 adds r2, r1 ldrb r1, [r2] ldrb r2, [r2, 0x1] movs r3, 0x80 lsls r3, 18 ldr r5, _0813D070 @ =gUnknown_0840B5A0 lsls r4, r6, 2 adds r4, r5 ldr r4, [r4] str r4, [sp] str r0, [sp, 0x4] mov r0, r8 bl DecompressPicFromTable_2 ldr r0, _0813D074 @ =gTrainerBackPicPaletteTable adds r0, r7, r0 ldr r0, [r0] lsls r4, r6, 4 movs r2, 0x80 lsls r2, 1 adds r1, r4, r2 lsls r1, 16 lsrs r1, 16 movs r2, 0x20 bl LoadCompressedPalette lsls r1, r6, 24 lsrs r1, 24 adds r0, r6, 0 bl sub_8143680 ldr r0, _0813D078 @ =gUnknown_02024E8C ldr r1, _0813D07C @ =gUnknown_0840B064 str r1, [r0, 0x8] mov r1, r9 lsls r1, 16 asrs r1, 16 mov r9, r1 mov r2, r10 lsls r2, 16 asrs r2, 16 mov r10, r2 movs r3, 0x1 bl CreateSprite lsls r0, 24 lsrs r0, 24 ldr r1, _0813D080 @ =gSprites lsls r2, r0, 4 adds r2, r0 lsls r2, 2 adds r2, r1 ldrb r3, [r2, 0x5] movs r1, 0xF ands r1, r3 orrs r1, r4 movs r3, 0xD negs r3, r3 ands r1, r3 movs r3, 0x4 orrs r1, r3 strb r1, [r2, 0x5] add sp, 0x8 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r1} bx r1 .align 2, 0 _0813D068: .4byte gTrainerBackPicTable _0813D06C: .4byte gTrainerBackPicCoords _0813D070: .4byte gUnknown_0840B5A0 _0813D074: .4byte gTrainerBackPicPaletteTable _0813D078: .4byte gUnknown_02024E8C _0813D07C: .4byte gUnknown_0840B064 _0813D080: .4byte gSprites thumb_func_end sub_813CFA8 thumb_func_start sub_813D084 sub_813D084: @ 813D084 push {lr} lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 beq _0813D0A0 cmp r0, 0x1 ble _0813D096 cmp r0, 0x2 beq _0813D0A8 _0813D096: ldr r2, _0813D09C @ =0x00003ff6 b _0813D0AA .align 2, 0 _0813D09C: .4byte 0x00003ff6 _0813D0A0: ldr r2, _0813D0A4 @ =0x000031df b _0813D0AA .align 2, 0 _0813D0A4: .4byte 0x000031df _0813D0A8: ldr r2, _0813D0C0 @ =0x0000518c _0813D0AA: ldr r0, _0813D0C4 @ =gPlttBufferUnfaded movs r1, 0xF1 lsls r1, 1 adds r0, r1 strh r2, [r0] ldr r0, _0813D0C8 @ =gPlttBufferFaded adds r0, r1 strh r2, [r0] pop {r0} bx r0 .align 2, 0 _0813D0C0: .4byte 0x0000518c _0813D0C4: .4byte gPlttBufferUnfaded _0813D0C8: .4byte gPlttBufferFaded thumb_func_end sub_813D084 thumb_func_start sub_813D0CC sub_813D0CC: @ 813D0CC push {r4,lr} sub sp, 0x4 adds r4, r0, 0 movs r1, 0x32 ldrsh r0, [r4, r1] cmp r0, 0xBF ble _0813D148 ldrh r1, [r4, 0x34] movs r2, 0x34 ldrsh r0, [r4, r2] cmp r0, 0 beq _0813D0EA subs r0, r1, 0x1 strh r0, [r4, 0x34] b _0813D14E _0813D0EA: 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, 0x30] lsls r0, 24 lsrs r0, 24 ldrh r1, [r4, 0x32] str r1, [sp] movs r2, 0 movs r3, 0 bl SetOamMatrix movs r0, 0x32 ldrsh r1, [r4, r0] lsls r0, r1, 1 adds r0, r1 lsls r0, 5 subs r0, r1 movs r1, 0x64 bl __divsi3 strh r0, [r4, 0x32] movs r2, 0x32 ldrsh r1, [r4, r2] adds r0, r1, 0 subs r0, 0xC0 cmp r0, 0 bge _0813D12C adds r0, 0x7F _0813D12C: asrs r0, 7 adds r0, 0x9 lsls r0, 24 lsrs r0, 24 cmp r0, 0xF bls _0813D13A movs r0, 0xF _0813D13A: lsls r2, r0, 4 ldrb r1, [r4, 0x5] movs r0, 0xF ands r0, r1 orrs r0, r2 strb r0, [r4, 0x5] b _0813D14E _0813D148: adds r0, r4, 0 bl DestroySprite _0813D14E: add sp, 0x4 pop {r4} pop {r0} bx r0 thumb_func_end sub_813D0CC thumb_func_start sub_813D158 sub_813D158: @ 813D158 push {r4,lr} adds r4, r0, 0 ldr r2, _0813D1CC @ =gSprites movs r1, 0x3C ldrsh r0, [r4, r1] lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r1, r2 movs r3, 0x3C ldrsh r0, [r1, r3] cmp r0, 0 beq _0813D1D4 adds r2, r4, 0 adds r2, 0x3E ldrb r0, [r2] movs r1, 0x4 orrs r0, r1 strb r0, [r2] ldrh r0, [r4, 0x24] ldrh r1, [r4, 0x20] adds r0, r1 strh r0, [r4, 0x20] ldrh r0, [r4, 0x26] ldrh r3, [r4, 0x22] adds r0, r3 strh r0, [r4, 0x22] adds r0, r4, 0 movs r1, 0x3 bl StartSpriteAnim movs r0, 0x80 lsls r0, 3 strh r0, [r4, 0x32] ldrh r1, [r4, 0x30] movs r0, 0x3 ands r0, r1 lsls r0, 3 strh r0, [r4, 0x34] ldr r0, _0813D1D0 @ =sub_813D0CC str r0, [r4, 0x1C] ldrb r1, [r4, 0x1] movs r0, 0x3F ands r0, r1 movs r1, 0x40 orrs r0, r1 strb r0, [r4, 0x1] ldrb r0, [r4, 0x3] movs r1, 0xC0 orrs r0, r1 strb r0, [r4, 0x3] adds r0, r4, 0 movs r1, 0x1 movs r2, 0x3 movs r3, 0x2 bl CalcCenterToCornerVec b _0813D200 .align 2, 0 _0813D1CC: .4byte gSprites _0813D1D0: .4byte sub_813D0CC _0813D1D4: ldrh r0, [r1, 0x24] strh r0, [r4, 0x24] movs r0, 0x3C ldrsh r1, [r4, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 ldrh r0, [r0, 0x26] strh r0, [r4, 0x26] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 ldrh r0, [r0, 0x20] strh r0, [r4, 0x20] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 ldrh r0, [r0, 0x22] strh r0, [r4, 0x22] _0813D200: pop {r4} pop {r0} bx r0 thumb_func_end sub_813D158 thumb_func_start sub_813D208 sub_813D208: @ 813D208 push {lr} adds r1, r0, 0 movs r2, 0x2E ldrsh r0, [r1, r2] cmp r0, 0 beq _0813D218 ldr r0, _0813D21C @ =sub_813D220 str r0, [r1, 0x1C] _0813D218: pop {r0} bx r0 .align 2, 0 _0813D21C: .4byte sub_813D220 thumb_func_end sub_813D208 thumb_func_start sub_813D220 sub_813D220: @ 813D220 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x4 adds r7, r0, 0 ldrh r4, [r7, 0x20] movs r1, 0x20 ldrsh r0, [r7, r1] cmp r0, 0x74 bgt _0813D260 ldrh r0, [r7, 0x26] ldrh r1, [r7, 0x22] adds r0, r1 movs r1, 0 strh r0, [r7, 0x22] strh r1, [r7, 0x26] adds r0, r4, 0x4 strh r0, [r7, 0x20] ldr r0, _0813D258 @ =0x0000fffc strh r0, [r7, 0x24] movs r0, 0x80 strh r0, [r7, 0x36] ldr r0, _0813D25C @ =sub_813D368 str r0, [r7, 0x1C] b _0813D352 .align 2, 0 _0813D258: .4byte 0x0000fffc _0813D25C: .4byte sub_813D368 _0813D260: ldrh r1, [r7, 0x36] ldr r5, _0813D364 @ =gSineTable lsls r0, r1, 24 lsrs r0, 23 adds r0, r5 ldrh r2, [r0] adds r0, r1, 0 adds r0, 0x40 lsls r0, 24 lsrs r0, 23 adds r0, r5 ldrh r3, [r0] adds r1, 0x2 strh r1, [r7, 0x36] lsls r2, 16 asrs r0, r2, 16 cmp r0, 0 bge _0813D286 adds r0, 0x1F _0813D286: asrs r0, 5 strh r0, [r7, 0x26] subs r0, r4, 0x1 strh r0, [r7, 0x20] movs r1, 0x1 ands r0, r1 cmp r0, 0 beq _0813D29C ldrh r0, [r7, 0x22] adds r0, 0x1 strh r0, [r7, 0x22] _0813D29C: lsls r0, r3, 16 asrs r0, 16 negs r0, r0 cmp r0, 0 bge _0813D2A8 adds r0, 0xF _0813D2A8: lsls r1, r0, 12 lsrs r1, 16 ldrh r4, [r7, 0x32] ldrh r3, [r7, 0x34] adds r0, r1, 0 subs r0, 0x10 lsls r0, 24 lsrs r0, 23 adds r0, r5 ldrh r2, [r0] adds r1, 0x30 lsls r1, 24 lsrs r1, 23 adds r1, r5 movs r0, 0 ldrsh r1, [r1, r0] adds r0, r1, 0 muls r0, r4 cmp r0, 0 bge _0813D2D2 adds r0, 0xFF _0813D2D2: lsls r0, 8 lsrs r0, 16 mov r8, r0 lsls r0, r2, 16 asrs r2, r0, 16 negs r0, r2 muls r0, r3 cmp r0, 0 bge _0813D2E6 adds r0, 0xFF _0813D2E6: lsls r0, 8 lsrs r0, 16 mov r10, r0 adds r0, r2, 0 muls r0, r4 cmp r0, 0 bge _0813D2F6 adds r0, 0xFF _0813D2F6: lsls r0, 8 lsrs r5, r0, 16 adds r0, r1, 0 muls r0, r3 cmp r0, 0 bge _0813D304 adds r0, 0xFF _0813D304: lsls r6, r0, 8 lsrs r6, 16 ldrh r0, [r7, 0x30] lsls r0, 24 lsrs r0, 24 str r3, [sp] adds r1, r4, 0 movs r2, 0 movs r3, 0 bl SetOamMatrix ldrh r0, [r7, 0x30] adds r0, 0x1 lsls r0, 24 lsrs r0, 24 mov r9, r5 mov r1, r10 lsls r5, r1, 16 lsrs r3, r5, 16 lsls r4, r6, 16 str r6, [sp] mov r1, r8 mov r2, r9 bl SetOamMatrix ldrh r0, [r7, 0x30] adds r0, 0x2 lsls r0, 24 lsrs r0, 24 lsls r5, 1 lsrs r5, 16 lsls r4, 1 lsrs r4, 16 str r4, [sp] mov r1, r8 mov r2, r9 adds r3, r5, 0 bl SetOamMatrix _0813D352: add sp, 0x4 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0813D364: .4byte gSineTable thumb_func_end sub_813D220 thumb_func_start sub_813D368 sub_813D368: @ 813D368 push {r4,lr} sub sp, 0x4 adds r4, r0, 0 ldrh r0, [r4, 0x30] lsls r0, 24 lsrs r0, 24 ldrh r1, [r4, 0x3A] adds r1, 0x40 lsls r1, 16 lsrs r1, 16 str r1, [sp] movs r2, 0 movs r3, 0 bl SetOamMatrix ldrh r0, [r4, 0x30] adds r0, 0x1 lsls r0, 24 lsrs r0, 24 ldrh r1, [r4, 0x3A] adds r1, 0x40 lsls r1, 16 lsrs r1, 16 str r1, [sp] movs r2, 0 movs r3, 0 bl SetOamMatrix ldrh r0, [r4, 0x30] adds r0, 0x2 lsls r0, 24 lsrs r0, 24 ldrh r1, [r4, 0x3A] adds r1, 0x40 lsls r1, 16 lsrs r1, 16 str r1, [sp] movs r2, 0 movs r3, 0 bl SetOamMatrix ldrh r1, [r4, 0x36] movs r2, 0x36 ldrsh r0, [r4, r2] cmp r0, 0x40 beq _0813D400 adds r0, r1, 0 subs r0, 0x8 strh r0, [r4, 0x36] ldrh r0, [r4, 0x36] adds r1, r0, 0 ldr r2, _0813D3FC @ =gSineTable adds r0, 0x40 lsls r0, 24 lsrs r0, 23 adds r0, r2 movs r3, 0 ldrsh r0, [r0, r3] cmp r0, 0 bge _0813D3E2 adds r0, 0x3F _0813D3E2: asrs r0, 6 strh r0, [r4, 0x24] lsls r0, r1, 24 lsrs r0, 23 adds r0, r2 movs r1, 0 ldrsh r0, [r0, r1] cmp r0, 0 bge _0813D3F6 adds r0, 0x3F _0813D3F6: asrs r0, 6 strh r0, [r4, 0x26] b _0813D408 .align 2, 0 _0813D3FC: .4byte gSineTable _0813D400: movs r0, 0 strh r0, [r4, 0x36] ldr r0, _0813D410 @ =sub_813D414 str r0, [r4, 0x1C] _0813D408: add sp, 0x4 pop {r4} pop {r0} bx r0 .align 2, 0 _0813D410: .4byte sub_813D414 thumb_func_end sub_813D368 thumb_func_start sub_813D414 sub_813D414: @ 813D414 push {r4,lr} adds r1, r0, 0 movs r2, 0x2E ldrsh r0, [r1, r2] cmp r0, 0x2 beq _0813D474 ldrh r0, [r1, 0x36] adds r0, 0x8 strh r0, [r1, 0x36] ldr r3, _0813D470 @ =gSineTable lsls r0, 24 lsrs r0, 23 adds r0, r3 movs r4, 0 ldrsh r0, [r0, r4] cmp r0, 0 bge _0813D438 adds r0, 0xF _0813D438: asrs r0, 4 adds r0, 0x40 lsls r0, 16 lsrs r2, r0, 16 adds r0, r2, 0 adds r0, 0x40 lsls r0, 24 lsrs r0, 23 adds r0, r3 movs r4, 0 ldrsh r0, [r0, r4] cmp r0, 0 bge _0813D454 adds r0, 0x3F _0813D454: asrs r0, 6 strh r0, [r1, 0x24] lsls r0, r2, 24 lsrs r0, 23 adds r0, r3 movs r2, 0 ldrsh r0, [r0, r2] cmp r0, 0 bge _0813D468 adds r0, 0x3F _0813D468: asrs r0, 6 strh r0, [r1, 0x26] b _0813D478 .align 2, 0 _0813D470: .4byte gSineTable _0813D474: ldr r0, _0813D480 @ =sub_813D484 str r0, [r1, 0x1C] _0813D478: pop {r4} pop {r0} bx r0 .align 2, 0 _0813D480: .4byte sub_813D484 thumb_func_end sub_813D414 thumb_func_start sub_813D484 sub_813D484: @ 813D484 push {r4,lr} adds r4, r0, 0 ldrh r2, [r4, 0x22] movs r0, 0x22 ldrsh r1, [r4, r0] movs r3, 0x38 ldrsh r0, [r4, r3] cmp r1, r0 bge _0813D49C adds r0, r2, 0x4 strh r0, [r4, 0x22] b _0813D4F8 _0813D49C: movs r0, 0x1 strh r0, [r4, 0x3C] adds r2, r4, 0 adds r2, 0x3E ldrb r0, [r2] movs r1, 0x4 orrs r0, r1 strb r0, [r2] ldrh r0, [r4, 0x24] ldrh r1, [r4, 0x20] adds r0, r1 strh r0, [r4, 0x20] ldrh r0, [r4, 0x26] ldrh r3, [r4, 0x22] adds r0, r3 strh r0, [r4, 0x22] adds r0, r4, 0 movs r1, 0x3 bl StartSpriteAnim movs r0, 0x80 lsls r0, 3 strh r0, [r4, 0x32] ldrh r1, [r4, 0x30] movs r0, 0x3 ands r0, r1 lsls r0, 3 strh r0, [r4, 0x34] ldr r0, _0813D500 @ =sub_813D0CC str r0, [r4, 0x1C] ldrb r1, [r4, 0x1] movs r0, 0x3F ands r0, r1 movs r1, 0x40 orrs r0, r1 strb r0, [r4, 0x1] ldrb r0, [r4, 0x3] movs r1, 0xC0 orrs r0, r1 strb r0, [r4, 0x3] adds r0, r4, 0 movs r1, 0x1 movs r2, 0x3 movs r3, 0x2 bl CalcCenterToCornerVec _0813D4F8: pop {r4} pop {r0} bx r0 .align 2, 0 _0813D500: .4byte sub_813D0CC thumb_func_end sub_813D484 thumb_func_start sub_813D504 sub_813D504: @ 813D504 push {r4,lr} adds r4, r0, 0 ldrh r2, [r4, 0x22] movs r0, 0x22 ldrsh r1, [r4, r0] movs r3, 0x38 ldrsh r0, [r4, r3] cmp r1, r0 bge _0813D51C adds r0, r2, 0x4 strh r0, [r4, 0x22] b _0813D578 _0813D51C: movs r0, 0x1 strh r0, [r4, 0x3C] adds r2, r4, 0 adds r2, 0x3E ldrb r0, [r2] movs r1, 0x4 orrs r0, r1 strb r0, [r2] ldrh r0, [r4, 0x24] ldrh r1, [r4, 0x20] adds r0, r1 strh r0, [r4, 0x20] ldrh r0, [r4, 0x26] ldrh r3, [r4, 0x22] adds r0, r3 strh r0, [r4, 0x22] adds r0, r4, 0 movs r1, 0x3 bl StartSpriteAnim movs r0, 0x80 lsls r0, 3 strh r0, [r4, 0x32] ldrh r1, [r4, 0x30] movs r0, 0x3 ands r0, r1 lsls r0, 3 strh r0, [r4, 0x34] ldr r0, _0813D580 @ =sub_813D0CC str r0, [r4, 0x1C] ldrb r1, [r4, 0x1] movs r0, 0x3F ands r0, r1 movs r1, 0x40 orrs r0, r1 strb r0, [r4, 0x1] ldrb r0, [r4, 0x3] movs r1, 0xC0 orrs r0, r1 strb r0, [r4, 0x3] adds r0, r4, 0 movs r1, 0x1 movs r2, 0x3 movs r3, 0x2 bl CalcCenterToCornerVec _0813D578: pop {r4} pop {r0} bx r0 .align 2, 0 _0813D580: .4byte sub_813D0CC thumb_func_end sub_813D504 thumb_func_start sub_813D584 sub_813D584: @ 813D584 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x14 adds r4, r0, 0 adds r5, r1, 0 ldr r6, [sp, 0x34] ldr r0, [sp, 0x38] mov r8, r0 lsls r4, 16 lsls r5, 16 lsls r2, 16 lsrs r2, 16 str r2, [sp, 0x8] lsls r3, 16 lsrs r3, 16 str r3, [sp, 0xC] lsls r6, 16 lsrs r6, 16 mov r1, r8 lsls r1, 24 lsrs r1, 24 mov r8, r1 ldr r0, _0813D640 @ =gSpriteTemplate_840AE20 lsrs r2, r4, 16 mov r10, r2 asrs r4, 16 lsrs r1, r5, 16 str r1, [sp, 0x4] asrs r5, 16 adds r1, r4, 0 adds r2, r5, 0 movs r3, 0 bl CreateSprite lsls r0, 24 lsrs r7, r0, 24 ldr r2, _0813D644 @ =gSprites mov r9, r2 lsls r0, r7, 4 adds r0, r7 lsls r5, r0, 2 adds r4, r5, r2 movs r0, 0 strh r0, [r4, 0x2E] strh r0, [r4, 0x3C] mov r0, sp ldrh r0, [r0, 0xC] strh r0, [r4, 0x30] mov r1, sp ldrh r1, [r1, 0x8] strh r1, [r4, 0x32] mov r2, sp ldrh r2, [r2, 0x8] strh r2, [r4, 0x34] strh r6, [r4, 0x38] mov r0, sp ldrh r0, [r0, 0x8] strh r0, [r4, 0x3A] ldrb r0, [r4, 0x1] movs r1, 0x3 orrs r0, r1 strb r0, [r4, 0x1] movs r0, 0x1F ldr r1, [sp, 0xC] ands r1, r0 lsls r1, 1 ldrb r2, [r4, 0x3] movs r0, 0x3F negs r0, r0 ands r0, r2 orrs r0, r1 strb r0, [r4, 0x3] adds r0, r4, 0 movs r1, 0 movs r2, 0x2 movs r3, 0x2 bl CalcCenterToCornerVec adds r0, r4, 0 movs r1, 0x2 bl StartSpriteAnim mov r1, r8 cmp r1, 0 bne _0813D64C mov r0, r9 adds r0, 0x1C adds r0, r5, r0 ldr r1, _0813D648 @ =sub_813D208 b _0813D654 .align 2, 0 _0813D640: .4byte gSpriteTemplate_840AE20 _0813D644: .4byte gSprites _0813D648: .4byte sub_813D208 _0813D64C: mov r0, r9 adds r0, 0x1C adds r0, r5, r0 ldr r1, _0813D774 @ =sub_813D504 _0813D654: str r1, [r0] str r7, [sp, 0x10] mov r2, r10 lsls r2, 16 asrs r2, 16 mov r10, r2 ldr r0, [sp, 0x4] lsls r0, 16 asrs r0, 16 mov r8, r0 ldr r0, _0813D778 @ =gSpriteTemplate_840AE20 mov r1, r10 mov r2, r8 movs r3, 0 bl CreateSprite lsls r0, 24 lsrs r7, r0, 24 ldr r5, _0813D77C @ =gSprites lsls r4, r7, 4 adds r4, r7 lsls r4, 2 adds r0, r4, r5 mov r1, sp ldrh r1, [r1, 0x10] strh r1, [r0, 0x3C] ldr r2, [sp, 0xC] adds r2, 0x1 mov r9, r2 strh r2, [r0, 0x30] ldrb r1, [r0, 0x1] movs r2, 0x3 orrs r1, r2 strb r1, [r0, 0x1] mov r2, r9 movs r1, 0x1F ands r2, r1 lsls r2, 1 ldrb r3, [r0, 0x3] movs r6, 0x3F negs r6, r6 adds r1, r6, 0 ands r1, r3 orrs r1, r2 strb r1, [r0, 0x3] movs r1, 0 movs r2, 0x2 movs r3, 0x2 bl CalcCenterToCornerVec ldr r2, _0813D780 @ =gSprites + 0x1C adds r4, r2 ldr r0, _0813D784 @ =sub_813D158 str r0, [r4] ldr r0, _0813D778 @ =gSpriteTemplate_840AE20 mov r1, r10 mov r2, r8 movs r3, 0 bl CreateSprite lsls r0, 24 lsrs r7, r0, 24 lsls r4, r7, 4 adds r4, r7 lsls r4, 2 adds r5, r4, r5 mov r1, sp ldrh r1, [r1, 0x10] strh r1, [r5, 0x3C] ldr r2, [sp, 0xC] adds r2, 0x2 mov r8, r2 strh r2, [r5, 0x30] adds r0, r5, 0 movs r1, 0x1 bl StartSpriteAnim ldrb r0, [r5, 0x1] movs r1, 0x3 orrs r0, r1 strb r0, [r5, 0x1] mov r0, r8 movs r2, 0x1F ands r0, r2 lsls r0, 1 ldrb r1, [r5, 0x3] ands r6, r1 orrs r6, r0 strb r6, [r5, 0x3] adds r0, r5, 0 movs r1, 0 movs r2, 0x2 movs r3, 0x2 bl CalcCenterToCornerVec ldr r0, _0813D780 @ =gSprites + 0x1C adds r4, r0 ldr r1, _0813D784 @ =sub_813D158 str r1, [r4] ldr r2, [sp, 0xC] lsls r0, r2, 24 lsrs r0, 24 ldr r5, [sp, 0x8] adds r5, 0x20 lsls r4, r5, 16 lsrs r4, 16 str r4, [sp] adds r1, r4, 0 movs r2, 0 movs r3, 0 bl SetOamMatrix mov r0, r9 lsls r0, 24 lsrs r0, 24 mov r9, r0 str r4, [sp] adds r1, r4, 0 movs r2, 0 movs r3, 0 bl SetOamMatrix mov r1, r8 lsls r1, 24 lsrs r1, 24 mov r8, r1 lsls r5, 17 lsrs r5, 16 str r5, [sp] mov r0, r8 adds r1, r4, 0 movs r2, 0 movs r3, 0 bl SetOamMatrix ldr r0, [sp, 0x10] add sp, 0x14 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r1} bx r1 .align 2, 0 _0813D774: .4byte sub_813D504 _0813D778: .4byte gSpriteTemplate_840AE20 _0813D77C: .4byte gSprites _0813D780: .4byte gSprites + 0x1C _0813D784: .4byte sub_813D158 thumb_func_end sub_813D584 thumb_func_start sub_813D788 sub_813D788: @ 813D788 push {r4,r5,lr} adds r4, r0, 0 movs r1, 0x2E ldrsh r0, [r4, r1] cmp r0, 0x4 bhi _0813D830 lsls r0, 2 ldr r1, _0813D7A0 @ =_0813D7A4 adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _0813D7A0: .4byte _0813D7A4 .align 2, 0 _0813D7A4: .4byte _0813D7B8 .4byte _0813D7C6 .4byte _0813D7E4 .4byte _0813D80C .4byte _0813D816 _0813D7B8: adds r0, r4, 0 movs r1, 0 bl StartSpriteAnimIfDifferent ldrh r0, [r4, 0x20] subs r0, 0x1 b _0813D82E _0813D7C6: adds r0, r4, 0 movs r1, 0 bl StartSpriteAnimIfDifferent ldr r0, _0813D7E0 @ =gIntroFrameCounter ldr r0, [r0] movs r1, 0x7 ands r0, r1 cmp r0, 0 bne _0813D87A ldrh r0, [r4, 0x20] adds r0, 0x1 b _0813D82E .align 2, 0 _0813D7E0: .4byte gIntroFrameCounter _0813D7E4: adds r0, r4, 0 movs r1, 0x2 bl StartSpriteAnimIfDifferent ldrh r2, [r4, 0x20] movs r1, 0x20 ldrsh r0, [r4, r1] cmp r0, 0x78 ble _0813D802 ldr r0, _0813D808 @ =gIntroFrameCounter ldr r0, [r0] movs r1, 0x7 ands r0, r1 cmp r0, 0 beq _0813D83C _0813D802: adds r0, r2, 0x1 b _0813D82E .align 2, 0 _0813D808: .4byte gIntroFrameCounter _0813D80C: adds r0, r4, 0 movs r1, 0x3 bl StartSpriteAnimIfDifferent b _0813D830 _0813D816: adds r0, r4, 0 movs r1, 0 bl StartSpriteAnimIfDifferent ldrh r2, [r4, 0x20] movs r0, 0x20 ldrsh r1, [r4, r0] movs r0, 0x20 negs r0, r0 cmp r1, r0 ble _0813D830 subs r0, r2, 0x2 _0813D82E: strh r0, [r4, 0x20] _0813D830: ldr r0, _0813D84C @ =gIntroFrameCounter ldr r0, [r0] movs r1, 0x7 ands r0, r1 cmp r0, 0 bne _0813D87A _0813D83C: movs r1, 0x26 ldrsh r5, [r4, r1] cmp r5, 0 beq _0813D850 movs r0, 0 strh r0, [r4, 0x26] b _0813D87A .align 2, 0 _0813D84C: .4byte gIntroFrameCounter _0813D850: bl Random movs r1, 0x3 ands r1, r0 cmp r1, 0x1 beq _0813D878 cmp r1, 0x1 bgt _0813D866 cmp r1, 0 beq _0813D86E b _0813D87A _0813D866: cmp r1, 0x3 bgt _0813D87A strh r5, [r4, 0x26] b _0813D87A _0813D86E: ldr r0, _0813D874 @ =0x0000ffff strh r0, [r4, 0x26] b _0813D87A .align 2, 0 _0813D874: .4byte 0x0000ffff _0813D878: strh r1, [r4, 0x26] _0813D87A: pop {r4,r5} pop {r0} bx r0 thumb_func_end sub_813D788 thumb_func_start sub_813D880 sub_813D880: @ 813D880 push {r4,lr} adds r4, r0, 0 movs r1, 0x2E ldrsh r0, [r4, r1] cmp r0, 0x1 beq _0813D89A cmp r0, 0x1 ble _0813D8E2 cmp r0, 0x2 beq _0813D8BA cmp r0, 0x3 beq _0813D8D4 b _0813D8E2 _0813D89A: movs r2, 0x24 ldrsh r0, [r4, r2] movs r2, 0x20 ldrsh r1, [r4, r2] adds r0, r1 ldr r1, _0813D8B0 @ =0x0000012f cmp r0, r1 bgt _0813D8B4 ldrh r0, [r4, 0x24] adds r0, 0x8 b _0813D8E0 .align 2, 0 _0813D8B0: .4byte 0x0000012f _0813D8B4: movs r0, 0x2 strh r0, [r4, 0x2E] b _0813D8E2 _0813D8BA: movs r1, 0x24 ldrsh r0, [r4, r1] movs r2, 0x20 ldrsh r1, [r4, r2] adds r0, r1 cmp r0, 0x78 ble _0813D8CE ldrh r0, [r4, 0x24] subs r0, 0x1 b _0813D8E0 _0813D8CE: movs r0, 0x3 strh r0, [r4, 0x2E] b _0813D8E2 _0813D8D4: ldrh r1, [r4, 0x24] movs r2, 0x24 ldrsh r0, [r4, r2] cmp r0, 0 ble _0813D8E2 subs r0, r1, 0x2 _0813D8E0: strh r0, [r4, 0x24] _0813D8E2: ldrh r0, [r4, 0x30] lsls r0, 24 lsrs r0, 24 movs r1, 0x8 bl Sin ldr r1, _0813D904 @ =gUnknown_0203935A ldrh r1, [r1] subs r0, r1 strh r0, [r4, 0x26] ldrh r0, [r4, 0x30] adds r0, 0x4 strh r0, [r4, 0x30] pop {r4} pop {r0} bx r0 .align 2, 0 _0813D904: .4byte gUnknown_0203935A thumb_func_end sub_813D880 thumb_func_start sub_813D908 sub_813D908: @ 813D908 push {lr} adds r3, r0, 0 ldr r2, _0813D930 @ =gTasks movs r0, 0x2E ldrsh r1, [r3, r0] lsls r0, r1, 2 adds r0, r1 lsls r0, 3 adds r0, r2 movs r1, 0x8 ldrsh r0, [r0, r1] cmp r0, 0 bne _0813D934 adds r0, r3, 0 adds r0, 0x3E ldrb r1, [r0] movs r2, 0x4 orrs r1, r2 strb r1, [r0] b _0813D94E .align 2, 0 _0813D930: .4byte gTasks _0813D934: cmp r0, 0x4 beq _0813D948 adds r2, r3, 0 adds r2, 0x3E ldrb r1, [r2] movs r0, 0x5 negs r0, r0 ands r0, r1 strb r0, [r2] b _0813D94E _0813D948: adds r0, r3, 0 bl DestroySprite _0813D94E: pop {r0} bx r0 thumb_func_end sub_813D908 thumb_func_start sub_813D954 sub_813D954: @ 813D954 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x8 lsls r1, 16 lsrs r6, r1, 16 lsls r2, 24 lsrs r2, 24 mov r8, r2 movs r5, 0 ldr r7, _0813DA48 @ =gUnknown_0840AF50 lsls r0, 16 mov r9, r0 lsls r0, r6, 16 str r0, [sp, 0x4] mov r1, r9 asrs r1, 16 str r1, [sp] _0813D97C: lsls r4, r5, 2 adds r0, r7, 0x2 adds r0, r4, r0 ldrh r1, [r0] ldr r2, [sp] adds r1, r2, r1 lsls r1, 16 asrs r1, 16 lsls r2, r6, 16 asrs r3, r2, 16 mov r10, r3 ldr r0, _0813DA4C @ =0xfffc0000 adds r2, r0 ldr r0, _0813DA50 @ =gSpriteTemplate_840AF94 asrs r2, 16 movs r3, 0 bl CreateSprite lsls r0, 24 lsrs r2, r0, 24 ldr r1, _0813DA54 @ =gSprites lsls r0, r2, 4 adds r0, r2 lsls r0, 2 adds r0, r1 mov r1, r8 strh r1, [r0, 0x2E] adds r4, r7 ldrb r1, [r4] bl StartSpriteAnim adds r0, r5, 0x1 lsls r0, 16 lsrs r5, r0, 16 cmp r5, 0x8 bls _0813D97C movs r5, 0 ldr r7, _0813DA58 @ =gUnknown_0840AF74 mov r0, r10 adds r0, 0xC lsls r0, 16 mov r10, r0 _0813D9D0: lsls r4, r5, 2 adds r0, r7, 0x2 adds r0, r4, r0 mov r2, r9 asrs r1, r2, 16 ldrh r0, [r0] adds r1, r0 lsls r1, 16 asrs r1, 16 ldr r0, _0813DA5C @ =gSpriteTemplate_840AFAC mov r3, r10 asrs r2, r3, 16 movs r3, 0 bl CreateSprite lsls r0, 24 lsrs r2, r0, 24 ldr r6, _0813DA54 @ =gSprites lsls r0, r2, 4 adds r0, r2 lsls r0, 2 adds r0, r6 mov r1, r8 strh r1, [r0, 0x2E] adds r4, r7 ldrb r1, [r4] bl StartSpriteAnim adds r0, r5, 0x1 lsls r0, 16 lsrs r5, r0, 16 cmp r5, 0x7 bls _0813D9D0 ldr r0, _0813DA60 @ =gSpriteTemplate_840AFC4 ldr r3, [sp, 0x4] ldr r1, _0813DA4C @ =0xfffc0000 adds r2, r3, r1 asrs r2, 16 movs r1, 0x78 movs r3, 0 bl CreateSprite lsls r0, 24 lsrs r2, r0, 24 lsls r0, r2, 4 adds r0, r2 lsls r0, 2 adds r0, r6 mov r3, r8 strh r3, [r0, 0x2E] adds r0, r2, 0 add sp, 0x8 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r1} bx r1 .align 2, 0 _0813DA48: .4byte gUnknown_0840AF50 _0813DA4C: .4byte 0xfffc0000 _0813DA50: .4byte gSpriteTemplate_840AF94 _0813DA54: .4byte gSprites _0813DA58: .4byte gUnknown_0840AF74 _0813DA5C: .4byte gSpriteTemplate_840AFAC _0813DA60: .4byte gSpriteTemplate_840AFC4 thumb_func_end sub_813D954 thumb_func_start sub_813DA64 sub_813DA64: @ 813DA64 push {r4-r6,lr} sub sp, 0x4 adds r4, r0, 0 ldrh r0, [r4, 0x3C] adds r0, 0x1 strh r0, [r4, 0x3C] movs r1, 0x2E ldrsh r0, [r4, r1] cmp r0, 0 beq _0813DA7C cmp r0, 0x1 beq _0813DAC0 _0813DA7C: ldrb r0, [r4, 0x1] movs r1, 0x3 orrs r0, r1 strb r0, [r4, 0x1] ldrb r1, [r4, 0x3] movs r0, 0x3F negs r0, r0 ands r0, r1 movs r1, 0x2 orrs r0, r1 strb r0, [r4, 0x3] adds r0, r4, 0 movs r1, 0x1 movs r2, 0x3 movs r3, 0x3 bl CalcCenterToCornerVec adds r2, r4, 0 adds r2, 0x3E ldrb r1, [r2] movs r0, 0x5 negs r0, r0 ands r0, r1 strb r0, [r2] movs r0, 0x1 strh r0, [r4, 0x2E] movs r0, 0x80 strh r0, [r4, 0x30] ldr r0, _0813DABC @ =0x0000ffe8 strh r0, [r4, 0x32] movs r0, 0 b _0813DB92 .align 2, 0 _0813DABC: .4byte 0x0000ffe8 _0813DAC0: ldrh r1, [r4, 0x34] movs r2, 0x34 ldrsh r0, [r4, r2] cmp r0, 0x4F bgt _0813DAF8 lsls r0, r1, 24 lsrs r0, 24 movs r1, 0x78 bl Sin negs r0, r0 strh r0, [r4, 0x26] ldrh r0, [r4, 0x34] lsls r0, 24 lsrs r0, 24 movs r1, 0x8C bl Sin negs r0, r0 strh r0, [r4, 0x24] movs r1, 0x34 ldrsh r0, [r4, r1] cmp r0, 0x40 ble _0813DAF8 ldrb r0, [r4, 0x5] movs r1, 0xC orrs r0, r1 strb r0, [r4, 0x5] _0813DAF8: ldr r2, _0813DB60 @ =gSineTable ldrh r1, [r4, 0x32] lsls r0, r1, 24 lsrs r0, 23 adds r0, r2 ldrh r3, [r0] adds r1, 0x40 lsls r1, 24 lsrs r1, 23 adds r1, r2 movs r2, 0 ldrsh r0, [r1, r2] movs r1, 0x30 ldrsh r2, [r4, r1] adds r1, r0, 0 muls r1, r2 adds r0, r1, 0 cmp r1, 0 bge _0813DB20 adds r0, 0xFF _0813DB20: lsls r0, 8 lsrs r6, r0, 16 lsls r0, r3, 16 asrs r3, r0, 16 negs r0, r3 muls r0, r2 cmp r0, 0 bge _0813DB32 adds r0, 0xFF _0813DB32: lsls r0, 8 lsrs r5, r0, 16 adds r0, r3, 0 muls r0, r2 cmp r0, 0 bge _0813DB40 adds r0, 0xFF _0813DB40: lsls r0, 8 lsrs r2, r0, 16 adds r1, r6, 0 adds r3, r5, 0 str r1, [sp] movs r0, 0x1 bl SetOamMatrix ldrh r1, [r4, 0x30] movs r2, 0x30 ldrsh r0, [r4, r2] cmp r0, 0xFF bgt _0813DB64 adds r0, r1, 0 adds r0, 0x8 b _0813DB68 .align 2, 0 _0813DB60: .4byte gSineTable _0813DB64: adds r0, r1, 0 adds r0, 0x20 _0813DB68: strh r0, [r4, 0x30] ldrh r1, [r4, 0x32] movs r2, 0x32 ldrsh r0, [r4, r2] cmp r0, 0x17 bgt _0813DB78 adds r0, r1, 0x1 strh r0, [r4, 0x32] _0813DB78: ldrh r2, [r4, 0x34] movs r1, 0x34 ldrsh r0, [r4, r1] cmp r0, 0x3F bgt _0813DB86 adds r0, r2, 0x2 b _0813DB92 _0813DB86: ldrh r1, [r4, 0x3C] movs r0, 0x3 ands r0, r1 cmp r0, 0 bne _0813DB94 adds r0, r2, 0x1 _0813DB92: strh r0, [r4, 0x34] _0813DB94: add sp, 0x4 pop {r4-r6} pop {r0} bx r0 thumb_func_end sub_813DA64 thumb_func_start sub_813DB9C sub_813DB9C: @ 813DB9C push {r4,lr} sub sp, 0x4 adds r4, r0, 0 movs r1, 0x2E ldrsh r0, [r4, r1] cmp r0, 0x4 bhi _0813DBCC lsls r0, 2 ldr r1, _0813DBB4 @ =_0813DBB8 adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _0813DBB4: .4byte _0813DBB8 .align 2, 0 _0813DBB8: .4byte _0813DBCC .4byte _0813DBF2 .4byte _0813DC24 .4byte _0813DC3E .4byte _0813DCAA _0813DBCC: movs r2, 0x32 ldrsh r0, [r4, r2] cmp r0, 0 beq _0813DBE0 adds r2, r4, 0 adds r2, 0x3F ldrb r0, [r2] movs r1, 0x1 orrs r0, r1 b _0813DBEC _0813DBE0: adds r2, r4, 0 adds r2, 0x3F ldrb r1, [r2] movs r0, 0x2 negs r0, r0 ands r0, r1 _0813DBEC: strb r0, [r2] movs r0, 0x1 strh r0, [r4, 0x2E] _0813DBF2: ldrh r1, [r4, 0x22] movs r3, 0x22 ldrsh r0, [r4, r3] cmp r0, 0x60 ble _0813DC18 subs r0, r1, 0x4 strh r0, [r4, 0x22] movs r1, 0x32 ldrsh r0, [r4, r1] cmp r0, 0 beq _0813DC10 ldrh r0, [r4, 0x20] adds r0, 0x2 strh r0, [r4, 0x20] b _0813DD4E _0813DC10: ldrh r0, [r4, 0x20] subs r0, 0x2 strh r0, [r4, 0x20] b _0813DD4E _0813DC18: ldrh r0, [r4, 0x2E] adds r0, 0x1 strh r0, [r4, 0x2E] movs r0, 0x8 strh r0, [r4, 0x34] b _0813DD4E _0813DC24: ldrh r0, [r4, 0x34] movs r2, 0x34 ldrsh r1, [r4, r2] cmp r1, 0 beq _0813DC34 subs r0, 0x1 strh r0, [r4, 0x34] b _0813DD4E _0813DC34: ldrh r0, [r4, 0x2E] adds r0, 0x1 strh r0, [r4, 0x2E] strh r1, [r4, 0x34] b _0813DD4E _0813DC3E: ldrb r0, [r4, 0x1] movs r1, 0x3 orrs r0, r1 strb r0, [r4, 0x1] movs r3, 0x30 ldrsh r1, [r4, r3] movs r0, 0x1F ands r1, r0 lsls r1, 1 ldrb r2, [r4, 0x3] movs r0, 0x3F negs r0, r0 ands r0, r2 orrs r0, r1 strb r0, [r4, 0x3] adds r0, r4, 0 movs r1, 0 movs r2, 0x3 movs r3, 0x3 bl CalcCenterToCornerVec movs r1, 0x32 ldrsh r0, [r4, r1] cmp r0, 0 beq _0813DC8A ldrh r0, [r4, 0x30] lsls r0, 24 lsrs r0, 24 movs r1, 0xFF lsls r1, 8 movs r2, 0x80 lsls r2, 1 str r2, [sp] movs r2, 0 movs r3, 0 bl SetOamMatrix b _0813DC9E _0813DC8A: ldrh r0, [r4, 0x30] lsls r0, 24 lsrs r0, 24 movs r1, 0x80 lsls r1, 1 str r1, [sp] movs r2, 0 movs r3, 0 bl SetOamMatrix _0813DC9E: ldrh r0, [r4, 0x2E] adds r0, 0x1 movs r1, 0 strh r0, [r4, 0x2E] strh r1, [r4, 0x36] b _0813DD4E _0813DCAA: ldrh r0, [r4, 0x36] adds r2, r0, 0x1 strh r2, [r4, 0x36] movs r3, 0x22 ldrsh r0, [r4, r3] movs r3, 0x26 ldrsh r1, [r4, r3] adds r0, r1 movs r1, 0x20 negs r1, r1 cmp r0, r1 ble _0813DD48 movs r1, 0x20 ldrsh r0, [r4, r1] movs r3, 0x24 ldrsh r1, [r4, r3] adds r0, r1 movs r1, 0x40 negs r1, r1 cmp r0, r1 ble _0813DD48 movs r1, 0x36 ldrsh r0, [r4, r1] adds r3, r0, 0 muls r3, r0 adds r0, r3, 0 negs r0, r0 cmp r0, 0 bge _0813DCE6 adds r0, 0x7 _0813DCE6: asrs r0, 3 strh r0, [r4, 0x26] movs r1, 0x32 ldrsh r0, [r4, r1] ldrh r3, [r4, 0x32] cmp r0, 0 beq _0813DCFA ldrh r0, [r4, 0x24] adds r0, r2 b _0813DCFE _0813DCFA: ldrh r0, [r4, 0x24] subs r0, r2 _0813DCFE: strh r0, [r4, 0x24] ldrh r1, [r4, 0x34] movs r2, 0x34 ldrsh r0, [r4, r2] cmp r0, 0x7F bgt _0813DD10 adds r0, r1, 0 adds r0, 0x8 strh r0, [r4, 0x34] _0813DD10: ldrh r0, [r4, 0x34] movs r2, 0x80 lsls r2, 1 adds r1, r2, 0 subs r1, r0 lsls r1, 16 lsrs r2, r1, 16 lsls r0, r3, 16 cmp r0, 0 beq _0813DD34 ldrh r0, [r4, 0x30] lsls r0, 24 lsrs r0, 24 negs r1, r2 lsls r1, 16 lsrs r1, 16 str r2, [sp] b _0813DD3E _0813DD34: ldrh r0, [r4, 0x30] lsls r0, 24 lsrs r0, 24 str r2, [sp] adds r1, r2, 0 _0813DD3E: movs r2, 0 movs r3, 0 bl SetOamMatrix b _0813DD4E _0813DD48: adds r0, r4, 0 bl DestroySprite _0813DD4E: add sp, 0x4 pop {r4} pop {r0} bx r0 thumb_func_end sub_813DB9C thumb_func_start sub_813DD58 sub_813DD58: @ 813DD58 push {r4,lr} sub sp, 0x4 adds r4, r0, 0 movs r1, 0x2E ldrsh r0, [r4, r1] cmp r0, 0x1 beq _0813DDAE cmp r0, 0x1 ble _0813DD72 cmp r0, 0x2 beq _0813DE66 cmp r0, 0x3 beq _0813DE26 _0813DD72: adds r2, r4, 0 adds r2, 0x3E ldrb r1, [r2] movs r0, 0x5 negs r0, r0 ands r0, r1 strb r0, [r2] ldrb r1, [r4, 0x1] movs r0, 0x4 negs r0, r0 ands r0, r1 movs r1, 0x1 orrs r0, r1 strb r0, [r4, 0x1] movs r2, 0x30 ldrsh r1, [r4, r2] movs r0, 0x1F ands r1, r0 lsls r1, 1 ldrb r2, [r4, 0x3] movs r0, 0x3F negs r0, r0 ands r0, r2 orrs r0, r1 strb r0, [r4, 0x3] movs r0, 0x80 lsls r0, 4 strh r0, [r4, 0x34] movs r0, 0x1 strh r0, [r4, 0x2E] _0813DDAE: ldrh r1, [r4, 0x34] movs r2, 0x34 ldrsh r0, [r4, r2] movs r2, 0x80 lsls r2, 1 cmp r0, r2 ble _0813DDEE subs r1, 0x80 strh r1, [r4, 0x34] movs r2, 0x32 ldrsh r0, [r4, r2] cmp r0, 0 beq _0813DDDA ldrh r0, [r4, 0x30] lsls r0, 24 lsrs r0, 24 negs r1, r1 lsls r1, 16 lsrs r1, 16 ldrh r2, [r4, 0x34] str r2, [sp] b _0813DDE4 _0813DDDA: ldrh r0, [r4, 0x30] lsls r0, 24 lsrs r0, 24 ldrh r1, [r4, 0x34] str r1, [sp] _0813DDE4: movs r2, 0 movs r3, 0 bl SetOamMatrix b _0813DE66 _0813DDEE: movs r1, 0x32 ldrsh r0, [r4, r1] cmp r0, 0 beq _0813DE0C ldrh r0, [r4, 0x30] lsls r0, 24 lsrs r0, 24 movs r1, 0xFF lsls r1, 8 str r2, [sp] movs r2, 0 movs r3, 0 bl SetOamMatrix b _0813DE1E _0813DE0C: ldrh r0, [r4, 0x30] lsls r0, 24 lsrs r0, 24 str r2, [sp] adds r1, r2, 0 movs r2, 0 movs r3, 0 bl SetOamMatrix _0813DE1E: ldrh r0, [r4, 0x2E] adds r0, 0x1 strh r0, [r4, 0x2E] b _0813DE66 _0813DE26: ldrh r0, [r4, 0x36] adds r0, 0x1 strh r0, [r4, 0x36] movs r2, 0x36 ldrsh r0, [r4, r2] adds r1, r0, 0 muls r1, r0 adds r0, r1, 0 cmp r0, 0 bge _0813DE3C adds r0, 0x1F _0813DE3C: asrs r0, 5 strh r0, [r4, 0x26] movs r2, 0x32 ldrsh r0, [r4, r2] cmp r0, 0 beq _0813DE56 movs r1, 0x36 ldrsh r0, [r4, r1] cmp r0, 0 bge _0813DE52 adds r0, 0x3 _0813DE52: asrs r0, 2 b _0813DE64 _0813DE56: movs r2, 0x36 ldrsh r0, [r4, r2] cmp r0, 0 bge _0813DE60 adds r0, 0x3 _0813DE60: asrs r0, 2 negs r0, r0 _0813DE64: strh r0, [r4, 0x24] _0813DE66: add sp, 0x4 pop {r4} pop {r0} bx r0 thumb_func_end sub_813DD58 thumb_func_start sub_813DE70 sub_813DE70: @ 813DE70 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x4 adds r7, r0, 0 movs r1, 0x2E ldrsh r0, [r7, r1] cmp r0, 0x6 bhi _0813DEB0 lsls r0, 2 ldr r1, _0813DE90 @ =_0813DE94 adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _0813DE90: .4byte _0813DE94 .align 2, 0 _0813DE94: .4byte _0813DEB0 .4byte _0813E0F8 .4byte _0813DEF4 .4byte _0813DF2C .4byte _0813DF54 .4byte _0813E0A8 .4byte _0813E0D0 _0813DEB0: ldrh r1, [r7, 0x20] movs r2, 0x20 ldrsh r0, [r7, r2] cmp r0, 0x28 ble _0813DEC0 subs r0, r1, 0x4 strh r0, [r7, 0x20] b _0813E0F8 _0813DEC0: adds r0, r7, 0 movs r1, 0x1 bl StartSpriteAnim ldr r4, _0813DEF0 @ =gSpriteTemplate_840B084 adds r0, r4, 0 movs r1, 0x10 movs r2, 0x68 movs r3, 0x64 bl CreateSprite lsls r0, 24 lsrs r0, 24 strh r0, [r7, 0x3A] adds r0, r4, 0 movs r1, 0xC movs r2, 0x6A movs r3, 0x65 bl CreateSprite lsls r0, 24 lsrs r0, 24 strh r0, [r7, 0x3C] b _0813DF42 .align 2, 0 _0813DEF0: .4byte gSpriteTemplate_840B084 _0813DEF4: adds r0, r7, 0 movs r1, 0x2 bl StartSpriteAnim ldr r2, _0813DF28 @ =gSprites movs r3, 0x3A ldrsh r1, [r7, r3] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 movs r1, 0x1 strh r1, [r0, 0x2E] movs r0, 0x3C ldrsh r1, [r7, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 movs r1, 0x2 strh r1, [r0, 0x2E] ldrh r0, [r7, 0x2E] adds r0, 0x1 strh r0, [r7, 0x2E] b _0813E0F8 .align 2, 0 _0813DF28: .4byte gSprites _0813DF2C: ldrh r1, [r7, 0x22] movs r2, 0x22 ldrsh r0, [r7, r2] cmp r0, 0xA0 ble _0813DF48 adds r2, r7, 0 adds r2, 0x3E ldrb r0, [r2] movs r1, 0x4 orrs r0, r1 strb r0, [r2] _0813DF42: movs r0, 0x1 strh r0, [r7, 0x2E] b _0813E0F8 _0813DF48: adds r0, r1, 0x2 strh r0, [r7, 0x22] ldrh r0, [r7, 0x20] subs r0, 0x1 strh r0, [r7, 0x20] b _0813E0F8 _0813DF54: ldr r6, _0813E094 @ =gSprites movs r3, 0x3A ldrsh r1, [r7, r3] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r6 ldrh r5, [r0, 0x24] ldrh r1, [r0, 0x20] adds r5, r1 lsls r5, 16 lsrs r5, 16 ldrh r4, [r0, 0x26] ldrh r2, [r0, 0x22] adds r4, r2 lsls r4, 16 lsrs r4, 16 bl DestroySprite movs r0, 0x8C lsls r0, 1 lsls r5, 16 asrs r1, r5, 16 lsls r4, 16 asrs r2, r4, 16 movs r3, 0x1 mov r8, r3 str r3, [sp] movs r3, 0x2 bl sub_813CE88 strh r0, [r7, 0x3A] movs r0, 0x3A ldrsh r1, [r7, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 ldr r1, _0813E098 @ =gSprites + 0x1C adds r0, r1 ldr r2, _0813E09C @ =sub_813DD58 mov r10, r2 str r2, [r0] movs r3, 0x3A ldrsh r1, [r7, r3] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r6 adds r0, 0x3E ldrb r1, [r0] movs r2, 0x4 mov r9, r2 mov r3, r9 orrs r1, r3 strb r1, [r0] movs r0, 0x3A ldrsh r1, [r7, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r6 mov r1, r8 strh r1, [r0, 0x30] movs r2, 0x3A ldrsh r1, [r7, r2] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r6 mov r3, r8 strh r3, [r0, 0x32] lsrs r5, 16 lsrs r4, 16 adds r0, r5, 0 adds r1, r4, 0 bl sub_813E580 movs r0, 0x3C ldrsh r1, [r7, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r6 ldrh r5, [r0, 0x24] ldrh r1, [r0, 0x20] adds r5, r1 lsls r5, 16 lsrs r5, 16 ldrh r4, [r0, 0x26] ldrh r2, [r0, 0x22] adds r4, r2 lsls r4, 16 lsrs r4, 16 bl DestroySprite ldr r0, _0813E0A0 @ =0x0000011b lsls r5, 16 asrs r1, r5, 16 lsls r4, 16 asrs r2, r4, 16 mov r3, r8 str r3, [sp] movs r3, 0x3 bl sub_813CE88 strh r0, [r7, 0x3C] movs r0, 0x3C ldrsh r1, [r7, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 ldr r1, _0813E098 @ =gSprites + 0x1C adds r0, r1 mov r2, r10 str r2, [r0] movs r3, 0x3C ldrsh r1, [r7, r3] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r6 adds r0, 0x3E ldrb r1, [r0] mov r2, r9 orrs r1, r2 strb r1, [r0] movs r3, 0x3C ldrsh r1, [r7, r3] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r6 movs r1, 0x2 strh r1, [r0, 0x30] movs r0, 0x3C ldrsh r1, [r7, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r6 movs r1, 0 strh r1, [r0, 0x32] lsrs r5, 16 lsrs r4, 16 adds r0, r5, 0 adds r1, r4, 0 bl sub_813E580 movs r0, 0xFF lsls r0, 16 ldr r1, _0813E0A4 @ =0x00007eff str r1, [sp] movs r1, 0 movs r2, 0x10 movs r3, 0x10 bl BeginNormalPaletteFade mov r2, r8 strh r2, [r7, 0x2E] b _0813E0F8 .align 2, 0 _0813E094: .4byte gSprites _0813E098: .4byte gSprites + 0x1C _0813E09C: .4byte sub_813DD58 _0813E0A0: .4byte 0x0000011b _0813E0A4: .4byte 0x00007eff _0813E0A8: ldr r3, _0813E0CC @ =gSprites movs r0, 0x3A ldrsh r1, [r7, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r3 movs r2, 0x3 strh r2, [r0, 0x2E] movs r0, 0x3C ldrsh r1, [r7, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r3 strh r2, [r0, 0x2E] b _0813E0F8 .align 2, 0 _0813E0CC: .4byte gSprites _0813E0D0: movs r2, 0x3A ldrsh r1, [r7, r2] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 ldr r4, _0813E108 @ =gSprites adds r0, r4 bl DestroySprite movs r3, 0x3C ldrsh r1, [r7, r3] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 bl DestroySprite adds r0, r7, 0 bl DestroySprite _0813E0F8: add sp, 0x4 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0813E108: .4byte gSprites thumb_func_end sub_813DE70 thumb_func_start sub_813E10C sub_813E10C: @ 813E10C push {r4,lr} adds r3, r0, 0 movs r1, 0x2E ldrsh r0, [r3, r1] cmp r0, 0x4 bhi _0813E13C lsls r0, 2 ldr r1, _0813E124 @ =_0813E128 adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _0813E124: .4byte _0813E128 .align 2, 0 _0813E128: .4byte _0813E13C .4byte _0813E178 .4byte _0813E1A6 .4byte _0813E1C2 .4byte _0813E1D6 _0813E13C: ldrh r4, [r3, 0x24] movs r2, 0x24 ldrsh r1, [r3, r2] movs r0, 0x38 negs r0, r0 cmp r1, r0 ble _0813E158 adds r0, r4, 0 subs r0, 0x8 strh r0, [r3, 0x24] ldrh r0, [r3, 0x26] adds r0, 0x6 strh r0, [r3, 0x26] b _0813E208 _0813E158: ldrh r0, [r3, 0x20] movs r2, 0 strh r0, [r3, 0x3A] ldrh r1, [r3, 0x22] strh r1, [r3, 0x3C] adds r0, r4 strh r0, [r3, 0x20] ldrh r0, [r3, 0x26] adds r1, r0 strh r1, [r3, 0x22] strh r2, [r3, 0x24] strh r2, [r3, 0x26] movs r0, 0x1 strh r0, [r3, 0x2E] strh r2, [r3, 0x30] b _0813E208 _0813E178: ldrh r1, [r3, 0x30] movs r2, 0x1 adds r0, r2, 0 ands r0, r1 cmp r0, 0 bne _0813E1A0 movs r0, 0x2 ands r0, r1 lsls r0, 16 asrs r0, 16 cmp r0, 0 beq _0813E19C ldr r0, _0813E198 @ =0x0000ffff strh r0, [r3, 0x24] strh r2, [r3, 0x26] b _0813E1A0 .align 2, 0 _0813E198: .4byte 0x0000ffff _0813E19C: strh r0, [r3, 0x24] strh r0, [r3, 0x26] _0813E1A0: adds r0, r1, 0x1 strh r0, [r3, 0x30] b _0813E208 _0813E1A6: adds r2, r3, 0 adds r2, 0x3E ldrb r0, [r2] movs r1, 0x4 orrs r0, r1 strb r0, [r2] ldrh r0, [r3, 0x3A] movs r1, 0 strh r0, [r3, 0x20] ldrh r0, [r3, 0x3C] strh r0, [r3, 0x22] strh r1, [r3, 0x24] strh r1, [r3, 0x26] b _0813E208 _0813E1C2: adds r2, r3, 0 adds r2, 0x3E ldrb r0, [r2] movs r1, 0x5 negs r1, r1 ands r1, r0 strb r1, [r2] ldrh r0, [r3, 0x30] adds r0, 0x1 strh r0, [r3, 0x30] _0813E1D6: ldrh r2, [r3, 0x24] movs r0, 0x24 ldrsh r1, [r3, r0] movs r0, 0x38 negs r0, r0 cmp r1, r0 ble _0813E1F0 subs r0, r2, 0x4 strh r0, [r3, 0x24] ldrh r0, [r3, 0x26] adds r0, 0x3 strh r0, [r3, 0x26] b _0813E208 _0813E1F0: ldrh r1, [r3, 0x20] adds r0, r2, r1 movs r1, 0 strh r0, [r3, 0x20] ldrh r0, [r3, 0x26] ldrh r2, [r3, 0x22] adds r0, r2 strh r0, [r3, 0x22] strh r1, [r3, 0x24] strh r1, [r3, 0x26] movs r0, 0x1 strh r0, [r3, 0x2E] _0813E208: pop {r4} pop {r0} bx r0 thumb_func_end sub_813E10C thumb_func_start sub_813E210 sub_813E210: @ 813E210 push {r4,lr} adds r3, r0, 0 movs r1, 0x2E ldrsh r0, [r3, r1] cmp r0, 0x4 bhi _0813E240 lsls r0, 2 ldr r1, _0813E228 @ =_0813E22C adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _0813E228: .4byte _0813E22C .align 2, 0 _0813E22C: .4byte _0813E240 .4byte _0813E278 .4byte _0813E2A6 .4byte _0813E2C2 .4byte _0813E2D6 _0813E240: ldrh r4, [r3, 0x24] movs r2, 0x24 ldrsh r0, [r3, r2] cmp r0, 0x37 bgt _0813E258 adds r0, r4, 0 adds r0, 0x8 strh r0, [r3, 0x24] ldrh r0, [r3, 0x26] subs r0, 0x6 strh r0, [r3, 0x26] b _0813E304 _0813E258: ldrh r0, [r3, 0x20] movs r2, 0 strh r0, [r3, 0x3A] ldrh r1, [r3, 0x22] strh r1, [r3, 0x3C] adds r0, r4 strh r0, [r3, 0x20] ldrh r0, [r3, 0x26] adds r1, r0 strh r1, [r3, 0x22] strh r2, [r3, 0x24] strh r2, [r3, 0x26] movs r0, 0x1 strh r0, [r3, 0x2E] strh r2, [r3, 0x30] b _0813E304 _0813E278: ldrh r1, [r3, 0x30] movs r2, 0x1 adds r0, r2, 0 ands r0, r1 cmp r0, 0 bne _0813E2A0 movs r0, 0x2 ands r0, r1 lsls r0, 16 asrs r0, 16 cmp r0, 0 beq _0813E29C strh r2, [r3, 0x24] ldr r0, _0813E298 @ =0x0000ffff b _0813E29E .align 2, 0 _0813E298: .4byte 0x0000ffff _0813E29C: strh r0, [r3, 0x24] _0813E29E: strh r0, [r3, 0x26] _0813E2A0: adds r0, r1, 0x1 strh r0, [r3, 0x30] b _0813E304 _0813E2A6: adds r2, r3, 0 adds r2, 0x3E ldrb r0, [r2] movs r1, 0x4 orrs r0, r1 strb r0, [r2] ldrh r0, [r3, 0x3A] movs r1, 0 strh r0, [r3, 0x20] ldrh r0, [r3, 0x3C] strh r0, [r3, 0x22] strh r1, [r3, 0x24] strh r1, [r3, 0x26] b _0813E304 _0813E2C2: adds r2, r3, 0 adds r2, 0x3E ldrb r0, [r2] movs r1, 0x5 negs r1, r1 ands r1, r0 strb r1, [r2] ldrh r0, [r3, 0x30] adds r0, 0x1 strh r0, [r3, 0x30] _0813E2D6: ldrh r1, [r3, 0x24] movs r2, 0x24 ldrsh r0, [r3, r2] cmp r0, 0x37 bgt _0813E2EC adds r0, r1, 0x4 strh r0, [r3, 0x24] ldrh r0, [r3, 0x26] subs r0, 0x3 strh r0, [r3, 0x26] b _0813E304 _0813E2EC: ldrh r2, [r3, 0x20] adds r0, r1, r2 movs r1, 0 strh r0, [r3, 0x20] ldrh r0, [r3, 0x26] ldrh r2, [r3, 0x22] adds r0, r2 strh r0, [r3, 0x22] strh r1, [r3, 0x24] strh r1, [r3, 0x26] movs r0, 0x1 strh r0, [r3, 0x2E] _0813E304: pop {r4} pop {r0} bx r0 thumb_func_end sub_813E210 thumb_func_start sub_813E30C sub_813E30C: @ 813E30C push {r4,lr} sub sp, 0x4 adds r4, r0, 0 ldrh r0, [r4, 0x3C] adds r0, 0x1 strh r0, [r4, 0x3C] movs r1, 0x2E ldrsh r0, [r4, r1] cmp r0, 0x14 bls _0813E322 b _0813E4AC _0813E322: lsls r0, 2 ldr r1, _0813E32C @ =_0813E330 adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _0813E32C: .4byte _0813E330 .align 2, 0 _0813E330: .4byte _0813E4AC .4byte _0813E384 .4byte _0813E41C .4byte _0813E4AC .4byte _0813E4AC .4byte _0813E4AC .4byte _0813E4AC .4byte _0813E4AC .4byte _0813E4AC .4byte _0813E4AC .4byte _0813E3A8 .4byte _0813E4AC .4byte _0813E4AC .4byte _0813E4AC .4byte _0813E4AC .4byte _0813E4AC .4byte _0813E4AC .4byte _0813E4AC .4byte _0813E4AC .4byte _0813E4AC .4byte _0813E440 _0813E384: ldrb r1, [r4, 0x1] movs r0, 0x4 negs r0, r0 ands r0, r1 movs r1, 0x1 orrs r0, r1 strb r0, [r4, 0x1] ldrb r1, [r4, 0x3] movs r0, 0x3F negs r0, r0 ands r0, r1 movs r1, 0x2 orrs r0, r1 strb r0, [r4, 0x3] movs r0, 0xA strh r0, [r4, 0x2E] movs r0, 0x24 strh r0, [r4, 0x36] _0813E3A8: ldrh r1, [r4, 0x20] movs r2, 0x20 ldrsh r0, [r4, r2] cmp r0, 0x90 bgt _0813E3D2 adds r0, r1, 0x4 strh r0, [r4, 0x20] ldrh r0, [r4, 0x22] subs r0, 0x1 strh r0, [r4, 0x22] ldrh r0, [r4, 0x32] lsls r0, 24 lsrs r0, 24 movs r1, 0x18 bl Sin negs r0, r0 strh r0, [r4, 0x26] ldrh r0, [r4, 0x32] adds r0, 0x4 strh r0, [r4, 0x32] _0813E3D2: ldrh r0, [r4, 0x34] ldrh r2, [r4, 0x36] subs r0, r2 strh r0, [r4, 0x34] ldrh r1, [r4, 0x3C] movs r0, 0x1 ands r0, r1 cmp r0, 0 beq _0813E3EE lsls r0, r2, 16 cmp r0, 0 beq _0813E3EE subs r0, r2, 0x1 strh r0, [r4, 0x36] _0813E3EE: ldr r2, _0813E418 @ =gSineTable ldrh r1, [r4, 0x34] lsls r0, r1, 24 lsrs r0, 23 adds r0, r2 ldrh r4, [r0] adds r1, 0x40 lsls r1, 24 lsrs r1, 23 adds r1, r2 ldrh r1, [r1] negs r3, r4 lsls r3, 16 lsrs r3, 16 str r1, [sp] movs r0, 0x1 adds r2, r4, 0 bl SetOamMatrix b _0813E4AC .align 2, 0 _0813E418: .4byte gSineTable _0813E41C: ldrb r1, [r4, 0x1] movs r0, 0x4 negs r0, r0 ands r0, r1 movs r1, 0x1 orrs r0, r1 strb r0, [r4, 0x1] ldrb r1, [r4, 0x3] movs r0, 0x3F negs r0, r0 ands r0, r1 movs r1, 0x4 orrs r0, r1 strb r0, [r4, 0x3] movs r0, 0x14 strh r0, [r4, 0x2E] movs r0, 0x24 strh r0, [r4, 0x36] _0813E440: ldrh r1, [r4, 0x20] movs r2, 0x20 ldrsh r0, [r4, r2] cmp r0, 0x60 bgt _0813E46A adds r0, r1, 0x3 strh r0, [r4, 0x20] ldrh r0, [r4, 0x22] subs r0, 0x1 strh r0, [r4, 0x22] ldrh r0, [r4, 0x32] lsls r0, 24 lsrs r0, 24 movs r1, 0x18 bl Sin negs r0, r0 strh r0, [r4, 0x26] ldrh r0, [r4, 0x32] adds r0, 0x4 strh r0, [r4, 0x32] _0813E46A: ldrh r0, [r4, 0x34] ldrh r2, [r4, 0x36] subs r0, r2 strh r0, [r4, 0x34] ldrh r1, [r4, 0x3C] movs r0, 0x1 ands r0, r1 cmp r0, 0 beq _0813E486 lsls r0, r2, 16 cmp r0, 0 beq _0813E486 subs r0, r2, 0x1 strh r0, [r4, 0x36] _0813E486: ldr r2, _0813E4B4 @ =gSineTable ldrh r1, [r4, 0x34] lsls r0, r1, 24 lsrs r0, 23 adds r0, r2 ldrh r4, [r0] adds r1, 0x40 lsls r1, 24 lsrs r1, 23 adds r1, r2 ldrh r1, [r1] negs r3, r4 lsls r3, 16 lsrs r3, 16 str r1, [sp] movs r0, 0x2 adds r2, r4, 0 bl SetOamMatrix _0813E4AC: add sp, 0x4 pop {r4} pop {r0} bx r0 .align 2, 0 _0813E4B4: .4byte gSineTable thumb_func_end sub_813E30C thumb_func_start sub_813E4B8 sub_813E4B8: @ 813E4B8 push {r4,r5,lr} sub sp, 0x4 adds r5, r0, 0 ldrh r0, [r5, 0x3C] adds r0, 0x1 strh r0, [r5, 0x3C] movs r1, 0x1 ands r0, r1 cmp r0, 0 beq _0813E4DA adds r2, r5, 0 adds r2, 0x3E ldrb r1, [r2] movs r0, 0x5 negs r0, r0 ands r0, r1 b _0813E4E4 _0813E4DA: adds r2, r5, 0 adds r2, 0x3E ldrb r0, [r2] movs r1, 0x4 orrs r0, r1 _0813E4E4: strb r0, [r2] ldrh r1, [r5, 0x32] movs r2, 0x32 ldrsh r0, [r5, r2] cmp r0, 0x3F ble _0813E4F8 adds r0, r5, 0 bl DestroySprite b _0813E574 _0813E4F8: adds r0, r1, 0x2 strh r0, [r5, 0x32] lsls r0, 24 lsrs r0, 24 movs r1, 0x28 bl Sin adds r4, r0, 0 movs r1, 0x2E ldrsh r0, [r5, r1] lsls r0, 29 lsrs r0, 24 lsls r4, 16 asrs r4, 16 adds r1, r4, 0 bl Cos strh r0, [r5, 0x24] movs r2, 0x2E ldrsh r0, [r5, r2] lsls r0, 29 lsrs r0, 24 adds r1, r4, 0 bl Sin strh r0, [r5, 0x26] movs r1, 0x2E ldrsh r0, [r5, r1] cmp r0, 0 bne _0813E574 ldrh r0, [r5, 0x34] ldrh r2, [r5, 0x30] subs r0, r2 strh r0, [r5, 0x34] ldrh r1, [r5, 0x3C] movs r0, 0x1 ands r0, r1 cmp r0, 0 beq _0813E550 lsls r0, r2, 16 cmp r0, 0 beq _0813E550 subs r0, r2, 0x1 strh r0, [r5, 0x30] _0813E550: ldr r3, _0813E57C @ =gSineTable ldrh r1, [r5, 0x34] lsls r0, r1, 24 lsrs r0, 23 adds r0, r3 ldrh r2, [r0] adds r1, 0x40 lsls r1, 24 lsrs r1, 23 adds r1, r3 ldrh r1, [r1] negs r3, r2 lsls r3, 16 lsrs r3, 16 str r1, [sp] movs r0, 0x10 bl SetOamMatrix _0813E574: add sp, 0x4 pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0813E57C: .4byte gSineTable thumb_func_end sub_813E4B8 thumb_func_start sub_813E580 sub_813E580: @ 813E580 push {r4-r7,lr} movs r4, 0 ldr r7, _0813E5D8 @ =gSprites lsls r6, r0, 16 lsls r5, r1, 16 _0813E58A: ldr r0, _0813E5DC @ =gSpriteTemplate_840B0B0 asrs r1, r6, 16 asrs r2, r5, 16 movs r3, 0 bl CreateSprite lsls r0, 24 lsrs r0, 24 lsls r2, r0, 4 adds r2, r0 lsls r2, 2 adds r2, r7 ldrb r1, [r2, 0x1] movs r3, 0x4 negs r3, r3 adds r0, r3, 0 ands r1, r0 movs r0, 0x1 orrs r1, r0 strb r1, [r2, 0x1] ldrb r1, [r2, 0x3] subs r3, 0x3B adds r0, r3, 0 ands r1, r0 movs r0, 0x20 orrs r1, r0 strb r1, [r2, 0x3] strh r4, [r2, 0x2E] movs r0, 0x20 strh r0, [r2, 0x30] adds r0, r4, 0x1 lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0x7 bls _0813E58A pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0813E5D8: .4byte gSprites _0813E5DC: .4byte gSpriteTemplate_840B0B0 thumb_func_end sub_813E580 thumb_func_start sub_813E5E0 sub_813E5E0: @ 813E5E0 push {r4,lr} adds r3, r0, 0 ldr r0, _0813E5F4 @ =gUnknown_0203931A ldrh r0, [r0] cmp r0, 0 beq _0813E5F8 adds r0, r3, 0 bl DestroySprite b _0813E6B2 .align 2, 0 _0813E5F4: .4byte gUnknown_0203931A _0813E5F8: ldr r2, _0813E6B8 @ =gSprites movs r0, 0x2E ldrsh r1, [r3, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 adds r0, 0x3E ldrb r0, [r0] movs r1, 0x3E adds r1, r3 mov r12, r1 movs r1, 0x4 ands r1, r0 mov r4, r12 ldrb r2, [r4] movs r0, 0x5 negs r0, r0 ands r0, r2 orrs r0, r1 strb r0, [r4] ldrh r1, [r3, 0x3C] movs r2, 0x3C ldrsh r0, [r3, r2] cmp r0, 0xB bgt _0813E630 adds r0, r1, 0x1 strh r0, [r3, 0x3C] _0813E630: ldrh r0, [r3, 0x3A] adds r0, 0x4 strh r0, [r3, 0x3A] ldr r4, _0813E6BC @ =gSineTable ldrh r0, [r3, 0x34] adds r0, 0x40 lsls r0, 24 lsrs r0, 23 adds r0, r4 movs r2, 0 ldrsh r1, [r0, r2] movs r2, 0x3A ldrsh r0, [r3, r2] muls r0, r1 cmp r0, 0 bge _0813E652 adds r0, 0xFF _0813E652: asrs r0, 8 ldrh r1, [r3, 0x36] adds r0, r1 strh r0, [r3, 0x20] movs r2, 0x34 ldrsh r0, [r3, r2] lsls r0, 24 lsrs r0, 23 adds r0, r4 movs r2, 0 ldrsh r1, [r0, r2] movs r2, 0x3A ldrsh r0, [r3, r2] muls r0, r1 cmp r0, 0 bge _0813E674 adds r0, 0xFF _0813E674: asrs r0, 8 ldrh r1, [r3, 0x38] adds r2, r0, r1 strh r2, [r3, 0x22] movs r1, 0x30 ldrsh r0, [r3, r1] lsls r0, 24 lsrs r0, 23 adds r0, r4 movs r4, 0 ldrsh r1, [r0, r4] movs r4, 0x3C ldrsh r0, [r3, r4] muls r0, r1 cmp r0, 0 bge _0813E696 adds r0, 0xFF _0813E696: asrs r0, 8 strh r0, [r3, 0x26] ldrh r0, [r3, 0x30] adds r0, 0x10 strh r0, [r3, 0x30] lsls r0, r2, 16 asrs r0, 16 movs r2, 0x32 ldrsh r1, [r3, r2] cmp r0, r1 ble _0813E6B2 adds r0, r3, 0 bl DestroySprite _0813E6B2: pop {r4} pop {r0} bx r0 .align 2, 0 _0813E6B8: .4byte gSprites _0813E6BC: .4byte gSineTable thumb_func_end sub_813E5E0 thumb_func_start sub_813E6C0 sub_813E6C0: @ 813E6C0 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x4 adds r4, r0, 0 ldr r0, _0813E6E0 @ =gUnknown_0203931A ldrh r0, [r0] cmp r0, 0 beq _0813E6E4 adds r0, r4, 0 bl DestroySprite b _0813E7A8 .align 2, 0 _0813E6E0: .4byte gUnknown_0203931A _0813E6E4: ldrh r0, [r4, 0x3C] adds r0, 0x1 strh r0, [r4, 0x3C] adds r2, r4, 0 adds r2, 0x3E ldrb r0, [r2] movs r1, 0x4 orrs r0, r1 strb r0, [r2] ldr r3, _0813E7B8 @ =gSprites movs r0, 0x2E ldrsh r1, [r4, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r2, r0, r3 movs r1, 0x2E ldrsh r0, [r2, r1] cmp r0, 0x1 bne _0813E7A8 ldrh r1, [r4, 0x3C] movs r0, 0x3 ands r0, r1 cmp r0, 0 bne _0813E7A8 ldrh r0, [r2, 0x20] ldrh r7, [r4, 0x30] adds r0, r7 lsls r0, 16 lsrs r0, 16 str r0, [sp] ldrh r0, [r2, 0x22] ldrh r1, [r4, 0x32] adds r0, r1 lsls r0, 16 lsrs r6, r0, 16 movs r5, 0 mov r8, r3 ldr r2, [sp] lsls r2, 16 mov r10, r2 lsls r7, r6, 16 mov r9, r7 _0813E73A: movs r0, 0x2E ldrsh r1, [r4, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 add r0, r8 adds r0, 0x43 ldrb r3, [r0] subs r3, 0x1 lsls r3, 24 lsrs r3, 24 ldr r0, _0813E7BC @ =gSpriteTemplate_840B0DC mov r2, r10 asrs r1, r2, 16 mov r7, r9 asrs r2, r7, 16 bl CreateSprite lsls r0, 24 lsrs r0, 24 cmp r0, 0x40 beq _0813E79E lsls r3, r0, 4 adds r3, r0 lsls r3, 2 add r3, r8 ldrh r0, [r4, 0x2E] strh r0, [r3, 0x2E] ldrh r1, [r4, 0x3C] lsls r1, 16 asrs r1, 18 movs r0, 0x7 ands r1, r0 lsls r1, 5 lsls r0, r5, 2 adds r0, r5 lsls r2, r0, 4 adds r0, r2 adds r1, r0 strh r1, [r3, 0x30] ldrh r0, [r4, 0x34] strh r0, [r3, 0x32] movs r0, 0x68 strh r0, [r3, 0x34] mov r0, sp ldrh r0, [r0] strh r0, [r3, 0x36] strh r6, [r3, 0x38] movs r1, 0 strh r1, [r3, 0x3A] _0813E79E: adds r0, r5, 0x1 lsls r0, 24 lsrs r5, r0, 24 cmp r5, 0x2 bls _0813E73A _0813E7A8: add sp, 0x4 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0813E7B8: .4byte gSprites _0813E7BC: .4byte gSpriteTemplate_840B0DC thumb_func_end sub_813E6C0 thumb_func_start sub_813E7C0 sub_813E7C0: @ 813E7C0 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 ldr r0, _0813E7F8 @ =gSpriteTemplate_840B0F4 movs r1, 0 movs r2, 0 movs r3, 0 bl CreateSprite lsls r0, 24 lsrs r2, r0, 24 cmp r2, 0x40 beq _0813E7F2 ldr r1, _0813E7FC @ =gSprites lsls r0, r2, 4 adds r0, r2 lsls r0, 2 adds r0, r1 movs r2, 0 strh r4, [r0, 0x2E] ldr r1, _0813E800 @ =0x0000fff4 strh r1, [r0, 0x30] strh r2, [r0, 0x32] movs r1, 0x88 strh r1, [r0, 0x34] _0813E7F2: pop {r4} pop {r0} bx r0 .align 2, 0 _0813E7F8: .4byte gSpriteTemplate_840B0F4 _0813E7FC: .4byte gSprites _0813E800: .4byte 0x0000fff4 thumb_func_end sub_813E7C0 thumb_func_start sub_813E804 sub_813E804: @ 813E804 push {r4-r7,lr} adds r3, r0, 0 ldr r0, _0813E818 @ =gUnknown_0203931A ldrh r0, [r0] cmp r0, 0 beq _0813E81C adds r0, r3, 0 bl DestroySprite b _0813E928 .align 2, 0 _0813E818: .4byte gUnknown_0203931A _0813E81C: ldr r6, _0813E904 @ =gSprites movs r0, 0x2E ldrsh r1, [r3, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r6 adds r0, 0x3E ldrb r0, [r0] movs r1, 0x3E adds r1, r3 mov r12, r1 movs r1, 0x4 ands r1, r0 mov r7, r12 ldrb r2, [r7] movs r0, 0x5 negs r0, r0 ands r0, r2 orrs r0, r1 strb r0, [r7] ldrh r0, [r3, 0x3C] adds r0, 0x1 strh r0, [r3, 0x3C] ldrh r1, [r3, 0x34] movs r2, 0x34 ldrsh r0, [r3, r2] cmp r0, 0x27 bgt _0813E85A adds r0, r1, 0x2 strh r0, [r3, 0x34] _0813E85A: movs r7, 0x2E ldrsh r1, [r3, r7] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r6 ldrh r1, [r0, 0x24] ldrh r0, [r0, 0x20] adds r2, r1, r0 ldr r4, _0813E908 @ =gSineTable ldrh r5, [r3, 0x30] adds r0, r5, 0 adds r0, 0x40 lsls r0, 24 lsrs r0, 23 adds r0, r4 movs r7, 0 ldrsh r1, [r0, r7] movs r7, 0x34 ldrsh r0, [r3, r7] muls r0, r1 cmp r0, 0 bge _0813E88A adds r0, 0xFF _0813E88A: asrs r0, 8 adds r0, r2, r0 strh r0, [r3, 0x20] movs r0, 0x2E ldrsh r1, [r3, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r6 ldrh r1, [r0, 0x26] ldrh r0, [r0, 0x22] adds r2, r1, r0 movs r1, 0x30 ldrsh r0, [r3, r1] lsls r0, 24 lsrs r0, 23 adds r0, r4 movs r7, 0 ldrsh r1, [r0, r7] movs r7, 0x34 ldrsh r0, [r3, r7] muls r0, r1 cmp r0, 0 bge _0813E8BE ldr r1, _0813E90C @ =0x000001ff adds r0, r1 _0813E8BE: asrs r0, 9 adds r0, r2, r0 strh r0, [r3, 0x22] adds r1, r5, 0x2 strh r1, [r3, 0x30] movs r2, 0x32 ldrsh r0, [r3, r2] lsls r0, 24 lsrs r0, 23 adds r0, r4 movs r7, 0 ldrsh r0, [r0, r7] cmp r0, 0 bge _0813E8DC adds r0, 0x1F _0813E8DC: asrs r0, 5 strh r0, [r3, 0x26] ldrh r0, [r3, 0x32] adds r0, 0x8 strh r0, [r3, 0x32] movs r0, 0xFF ands r1, r0 cmp r1, 0x7F bgt _0813E910 movs r0, 0x2E ldrsh r1, [r3, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r6 adds r0, 0x43 ldrb r0, [r0] subs r0, 0x1 b _0813E922 .align 2, 0 _0813E904: .4byte gSprites _0813E908: .4byte gSineTable _0813E90C: .4byte 0x000001ff _0813E910: movs r2, 0x2E ldrsh r1, [r3, r2] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r6 adds r0, 0x43 ldrb r0, [r0] adds r0, 0x1 _0813E922: adds r1, r3, 0 adds r1, 0x43 strb r0, [r1] _0813E928: pop {r4-r7} pop {r0} bx r0 thumb_func_end sub_813E804 thumb_func_start sub_813E930 sub_813E930: @ 813E930 push {r4-r7,lr} lsls r0, 24 lsrs r6, r0, 24 movs r4, 0 ldr r7, _0813E978 @ =gSprites lsls r0, r6, 4 adds r0, r6 lsls r0, 2 adds r5, r0, r7 _0813E942: movs r0, 0x20 ldrsh r1, [r5, r0] movs r0, 0x22 ldrsh r2, [r5, r0] ldr r0, _0813E97C @ =gSpriteTemplate_840B124 movs r3, 0 bl CreateSprite lsls r0, 24 lsrs r1, r0, 24 cmp r1, 0x40 beq _0813E968 lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r7 strh r6, [r0, 0x2E] lsls r1, r4, 5 strh r1, [r0, 0x30] _0813E968: adds r0, r4, 0x1 lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0x7 bls _0813E942 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0813E978: .4byte gSprites _0813E97C: .4byte gSpriteTemplate_840B124 thumb_func_end sub_813E930 thumb_func_start GetCurrentTrainerHillMapId GetCurrentTrainerHillMapId: @ 813E980 push {r4,r5,lr} adds r3, r0, 0 ldr r0, _0813E994 @ =gUnknown_0203931A ldrh r0, [r0] cmp r0, 0 beq _0813E998 adds r0, r3, 0 bl DestroySprite b _0813EA50 .align 2, 0 _0813E994: .4byte gUnknown_0203931A _0813E998: ldr r2, _0813EA58 @ =gSprites movs r0, 0x2E ldrsh r1, [r3, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 adds r0, 0x3E ldrb r0, [r0] movs r1, 0x3E adds r1, r3 mov r12, r1 movs r1, 0x4 ands r1, r0 mov r5, r12 ldrb r2, [r5] movs r0, 0x5 negs r0, r0 ands r0, r2 orrs r0, r1 strb r0, [r5] ldrh r0, [r3, 0x3C] adds r0, 0x1 strh r0, [r3, 0x3C] ldrh r0, [r3, 0x3A] adds r4, r0, 0 adds r4, 0x8 strh r4, [r3, 0x3A] ldr r2, _0813EA5C @ =gSineTable ldrh r0, [r3, 0x34] adds r0, 0x40 lsls r0, 24 lsrs r0, 23 adds r0, r2 movs r5, 0 ldrsh r1, [r0, r5] movs r5, 0x3A ldrsh r0, [r3, r5] muls r0, r1 cmp r0, 0 bge _0813E9EC adds r0, 0xFF _0813E9EC: asrs r0, 8 ldrh r1, [r3, 0x36] adds r0, r1 strh r0, [r3, 0x20] movs r5, 0x34 ldrsh r0, [r3, r5] lsls r0, 24 lsrs r0, 23 adds r0, r2 movs r2, 0 ldrsh r1, [r0, r2] movs r5, 0x3A ldrsh r0, [r3, r5] muls r0, r1 cmp r0, 0 bge _0813EA0E adds r0, 0xFF _0813EA0E: asrs r0, 8 ldrh r1, [r3, 0x38] adds r0, r1 strh r0, [r3, 0x22] movs r2, 0x3A ldrsh r0, [r3, r2] cmp r0, 0 bge _0813EA20 adds r0, 0xF _0813EA20: asrs r0, 4 lsls r0, 24 lsrs r0, 24 cmp r0, 0x9 bls _0813EA2C movs r0, 0x9 _0813EA2C: adds r1, r0, 0 adds r1, 0x12 movs r0, 0x1F ands r1, r0 lsls r1, 1 ldrb r2, [r3, 0x3] movs r0, 0x3F negs r0, r0 ands r0, r2 orrs r0, r1 strb r0, [r3, 0x3] lsls r0, r4, 16 asrs r0, 16 cmp r0, 0xA0 ble _0813EA50 adds r0, r3, 0 bl DestroySprite _0813EA50: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0813EA58: .4byte gSprites _0813EA5C: .4byte gSineTable thumb_func_end GetCurrentTrainerHillMapId thumb_func_start sub_813EA60 sub_813EA60: @ 813EA60 push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} adds r5, r0, 0 ldr r0, _0813EA7C @ =gUnknown_0203931A ldrh r0, [r0] cmp r0, 0 beq _0813EA80 adds r0, r5, 0 bl DestroySprite b _0813EB32 .align 2, 0 _0813EA7C: .4byte gUnknown_0203931A _0813EA80: ldrh r0, [r5, 0x3C] adds r0, 0x1 strh r0, [r5, 0x3C] adds r2, r5, 0 adds r2, 0x3E ldrb r0, [r2] movs r1, 0x4 orrs r0, r1 strb r0, [r2] ldr r0, _0813EB40 @ =gSprites mov r9, r0 movs r4, 0x2E ldrsh r1, [r5, r4] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 mov r1, r9 adds r3, r0, r1 movs r4, 0x2E ldrsh r1, [r3, r4] cmp r1, 0x1 bne _0813EB32 ldrh r0, [r5, 0x3C] ands r1, r0 lsls r0, r1, 16 asrs r6, r0, 16 cmp r6, 0 bne _0813EB32 ldrh r1, [r3, 0x20] ldrh r0, [r5, 0x30] adds r1, r0 lsls r1, 16 ldrh r2, [r3, 0x22] ldrh r4, [r5, 0x32] adds r2, r4 lsls r2, 16 ldr r0, _0813EB44 @ =gSpriteTemplate_840B150 lsrs r4, r1, 16 mov r8, r4 asrs r1, 16 lsrs r7, r2, 16 asrs r2, 16 adds r3, 0x43 ldrb r3, [r3] adds r3, 0x1 lsls r3, 24 lsrs r3, 24 bl CreateSprite lsls r0, 24 lsrs r0, 24 cmp r0, 0x40 beq _0813EB32 lsls r4, r0, 4 adds r4, r0 lsls r4, 2 add r4, r9 ldrb r0, [r4, 0x1] movs r1, 0x3 orrs r0, r1 strb r0, [r4, 0x1] ldrb r1, [r4, 0x3] movs r0, 0x3F negs r0, r0 ands r0, r1 movs r1, 0x24 orrs r0, r1 strb r0, [r4, 0x3] adds r0, r4, 0 movs r1, 0 movs r2, 0x1 movs r3, 0x3 bl CalcCenterToCornerVec ldrh r0, [r5, 0x2E] strh r0, [r4, 0x2E] ldr r2, _0813EB48 @ =gUnknown_0840B168 ldrh r0, [r5, 0x3C] lsls r0, 16 asrs r0, 17 movs r1, 0x7 ands r0, r1 adds r0, r2 ldrb r0, [r0] strh r0, [r4, 0x34] mov r0, r8 strh r0, [r4, 0x36] strh r7, [r4, 0x38] strh r6, [r4, 0x3A] _0813EB32: pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0813EB40: .4byte gSprites _0813EB44: .4byte gSpriteTemplate_840B150 _0813EB48: .4byte gUnknown_0840B168 thumb_func_end sub_813EA60 thumb_func_start sub_813EB4C sub_813EB4C: @ 813EB4C push {r4,r5,lr} sub sp, 0x4 lsls r0, 24 lsrs r4, r0, 24 ldr r0, _0813EBB0 @ =gSpriteTemplate_840B170 movs r1, 0 movs r2, 0 movs r3, 0 bl CreateSprite lsls r0, 24 lsrs r2, r0, 24 cmp r2, 0x40 beq _0813EB80 ldr r1, _0813EBB4 @ =gSprites lsls r0, r2, 4 adds r0, r2 lsls r0, 2 adds r0, r1 movs r1, 0 strh r4, [r0, 0x2E] strh r1, [r0, 0x30] movs r1, 0x8 strh r1, [r0, 0x32] movs r1, 0x18 strh r1, [r0, 0x34] _0813EB80: movs r4, 0 ldr r5, _0813EBB8 @ =gUnknown_0840B188 _0813EB84: adds r0, r4, 0 adds r0, 0x12 lsls r0, 24 lsrs r0, 24 lsls r1, r4, 1 adds r1, r5 ldrh r1, [r1] str r1, [sp] movs r2, 0 movs r3, 0 bl SetOamMatrix adds r0, r4, 0x1 lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0x9 bls _0813EB84 add sp, 0x4 pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0813EBB0: .4byte gSpriteTemplate_840B170 _0813EBB4: .4byte gSprites _0813EBB8: .4byte gUnknown_0840B188 thumb_func_end sub_813EB4C thumb_func_start sub_813EBBC sub_813EBBC: @ 813EBBC push {r4,lr} adds r3, r0, 0 ldr r0, _0813EBD0 @ =gUnknown_0203931A ldrh r0, [r0] cmp r0, 0 beq _0813EBD4 adds r0, r3, 0 bl DestroySprite b _0813EC80 .align 2, 0 _0813EBD0: .4byte gUnknown_0203931A _0813EBD4: ldr r2, _0813EC88 @ =gSprites movs r0, 0x2E ldrsh r1, [r3, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 adds r0, 0x3E ldrb r0, [r0] movs r1, 0x3E adds r1, r3 mov r12, r1 movs r1, 0x4 ands r1, r0 mov r4, r12 ldrb r2, [r4] movs r0, 0x5 negs r0, r0 ands r0, r2 orrs r0, r1 strb r0, [r4] ldrh r0, [r3, 0x3C] adds r0, 0x1 strh r0, [r3, 0x3C] ldrh r0, [r3, 0x3A] adds r0, 0x8 strh r0, [r3, 0x3A] ldr r2, _0813EC8C @ =gSineTable ldrh r0, [r3, 0x34] adds r0, 0x40 lsls r0, 24 lsrs r0, 23 adds r0, r2 movs r4, 0 ldrsh r1, [r0, r4] movs r4, 0x3A ldrsh r0, [r3, r4] muls r0, r1 cmp r0, 0 bge _0813EC26 adds r0, 0xFF _0813EC26: asrs r0, 8 ldrh r1, [r3, 0x36] adds r0, r1 strh r0, [r3, 0x20] movs r4, 0x34 ldrsh r0, [r3, r4] lsls r0, 24 lsrs r0, 23 adds r0, r2 movs r4, 0 ldrsh r1, [r0, r4] movs r4, 0x3A ldrsh r0, [r3, r4] muls r0, r1 cmp r0, 0 bge _0813EC48 adds r0, 0xFF _0813EC48: asrs r0, 8 ldrh r4, [r3, 0x38] adds r1, r0, r4 strh r1, [r3, 0x22] movs r4, 0x30 ldrsh r0, [r3, r4] lsls r0, 24 lsrs r0, 23 adds r0, r2 movs r2, 0 ldrsh r0, [r0, r2] cmp r0, 0 bge _0813EC64 adds r0, 0x3F _0813EC64: asrs r0, 6 strh r0, [r3, 0x26] ldrh r0, [r3, 0x30] adds r0, 0x10 strh r0, [r3, 0x30] lsls r0, r1, 16 asrs r0, 16 movs r4, 0x32 ldrsh r1, [r3, r4] cmp r0, r1 bge _0813EC80 adds r0, r3, 0 bl DestroySprite _0813EC80: pop {r4} pop {r0} bx r0 .align 2, 0 _0813EC88: .4byte gSprites _0813EC8C: .4byte gSineTable thumb_func_end sub_813EBBC thumb_func_start sub_813EC90 sub_813EC90: @ 813EC90 push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} sub sp, 0x4 adds r5, r0, 0 ldr r0, _0813ECAC @ =gUnknown_0203931A ldrh r0, [r0] cmp r0, 0 beq _0813ECB0 adds r0, r5, 0 bl DestroySprite b _0813EDA0 .align 2, 0 _0813ECAC: .4byte gUnknown_0203931A _0813ECB0: ldrh r0, [r5, 0x3C] adds r0, 0x1 strh r0, [r5, 0x3C] adds r2, r5, 0 adds r2, 0x3E ldrb r0, [r2] movs r1, 0x4 orrs r0, r1 strb r0, [r2] ldr r0, _0813EDB0 @ =gSprites mov r9, r0 movs r2, 0x2E ldrsh r1, [r5, r2] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 mov r4, r9 adds r3, r0, r4 movs r0, 0x2E ldrsh r1, [r3, r0] cmp r1, 0x1 bne _0813ED74 ldrh r0, [r5, 0x3C] ands r1, r0 lsls r0, r1, 16 asrs r6, r0, 16 cmp r6, 0 bne _0813ED66 ldrh r1, [r3, 0x20] ldrh r2, [r5, 0x30] adds r1, r2 lsls r1, 16 ldrh r2, [r3, 0x22] ldrh r4, [r5, 0x32] adds r2, r4 lsls r2, 16 ldr r0, _0813EDB4 @ =gSpriteTemplate_840B1B0 lsrs r4, r1, 16 mov r8, r4 asrs r1, 16 lsrs r7, r2, 16 asrs r2, 16 adds r3, 0x43 ldrb r3, [r3] adds r3, 0x1 lsls r3, 24 lsrs r3, 24 bl CreateSprite lsls r0, 24 lsrs r0, 24 cmp r0, 0x40 beq _0813ED66 lsls r4, r0, 4 adds r4, r0 lsls r4, 2 add r4, r9 ldrb r0, [r4, 0x1] movs r1, 0x3 orrs r0, r1 strb r0, [r4, 0x1] ldrb r1, [r4, 0x3] movs r0, 0x3F negs r0, r0 ands r0, r1 movs r1, 0x22 orrs r0, r1 strb r0, [r4, 0x3] adds r0, r4, 0 movs r1, 0 movs r2, 0x1 movs r3, 0x3 bl CalcCenterToCornerVec ldrh r0, [r5, 0x2E] strh r0, [r4, 0x2E] ldrh r0, [r5, 0x3C] lsls r0, 16 asrs r0, 18 movs r1, 0x7 ands r0, r1 lsls r0, 5 strh r0, [r4, 0x30] ldrh r0, [r5, 0x34] strh r0, [r4, 0x32] movs r0, 0xE8 strh r0, [r4, 0x34] mov r0, r8 strh r0, [r4, 0x36] strh r7, [r4, 0x38] strh r6, [r4, 0x3A] _0813ED66: ldrh r1, [r5, 0x3A] movs r2, 0x3A ldrsh r0, [r5, r2] cmp r0, 0x6F bgt _0813ED74 adds r0, r1, 0x4 strh r0, [r5, 0x3A] _0813ED74: ldr r1, _0813EDB8 @ =gSineTable ldrh r0, [r5, 0x3A] lsls r0, 24 lsrs r0, 23 adds r0, r1 movs r4, 0 ldrsh r0, [r0, r4] lsrs r1, r0, 31 adds r0, r1 asrs r0, 1 movs r2, 0x80 lsls r2, 1 adds r1, r2, 0 subs r1, r0 lsls r1, 16 lsrs r1, 16 str r1, [sp] movs r0, 0x11 movs r2, 0 movs r3, 0 bl SetOamMatrix _0813EDA0: add sp, 0x4 pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0813EDB0: .4byte gSprites _0813EDB4: .4byte gSpriteTemplate_840B1B0 _0813EDB8: .4byte gSineTable thumb_func_end sub_813EC90 thumb_func_start sub_813EDBC sub_813EDBC: @ 813EDBC push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 ldr r0, _0813EDF4 @ =gSpriteTemplate_840B1C8 movs r1, 0 movs r2, 0 movs r3, 0 bl CreateSprite lsls r0, 24 lsrs r2, r0, 24 cmp r2, 0x40 beq _0813EDEE ldr r1, _0813EDF8 @ =gSprites lsls r0, r2, 4 adds r0, r2 lsls r0, 2 adds r0, r1 movs r1, 0 strh r4, [r0, 0x2E] strh r1, [r0, 0x30] movs r1, 0xC strh r1, [r0, 0x32] movs r1, 0x18 strh r1, [r0, 0x34] _0813EDEE: pop {r4} pop {r0} bx r0 .align 2, 0 _0813EDF4: .4byte gSpriteTemplate_840B1C8 _0813EDF8: .4byte gSprites thumb_func_end sub_813EDBC thumb_func_start sub_813EDFC sub_813EDFC: @ 813EDFC push {r4,r5,lr} sub sp, 0x4 adds r5, r0, 0 movs r1, 0x2E ldrsh r0, [r5, r1] cmp r0, 0 beq _0813EE12 adds r4, r5, 0 adds r4, 0x3E cmp r0, 0x1 beq _0813EE4A _0813EE12: adds r4, r5, 0 adds r4, 0x3E ldrb r1, [r4] movs r0, 0x5 negs r0, r0 ands r0, r1 strb r0, [r4] ldrb r0, [r5, 0x1] movs r1, 0x3 orrs r0, r1 strb r0, [r5, 0x1] ldrb r1, [r5, 0x3] movs r0, 0x3F negs r0, r0 ands r0, r1 movs r1, 0x24 orrs r0, r1 strb r0, [r5, 0x3] adds r0, r5, 0 movs r1, 0 movs r2, 0x3 movs r3, 0x3 bl CalcCenterToCornerVec movs r0, 0 strh r0, [r5, 0x30] movs r0, 0x1 strh r0, [r5, 0x2E] _0813EE4A: ldrh r0, [r5, 0x3C] adds r0, 0x1 strh r0, [r5, 0x3C] movs r1, 0x1 ands r0, r1 cmp r0, 0 beq _0813EE62 ldrb r0, [r4] movs r1, 0x4 orrs r0, r1 strb r0, [r4] b _0813EE7A _0813EE62: ldrb r0, [r4] movs r1, 0x5 negs r1, r1 ands r1, r0 strb r1, [r4] ldrh r1, [r5, 0x30] movs r2, 0x30 ldrsh r0, [r5, r2] cmp r0, 0x3F bgt _0813EE7A adds r0, r1, 0x1 strh r0, [r5, 0x30] _0813EE7A: ldr r1, _0813EEB0 @ =gSineTable ldrh r0, [r5, 0x30] lsls r0, 24 lsrs r0, 23 adds r0, r1 movs r1, 0 ldrsh r0, [r0, r1] lsrs r1, r0, 31 adds r0, r1 asrs r0, 1 movs r2, 0x80 lsls r2, 1 adds r1, r2, 0 subs r1, r0 lsls r1, 16 lsrs r1, 16 str r1, [sp] movs r0, 0x12 movs r2, 0 movs r3, 0 bl SetOamMatrix add sp, 0x4 pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0813EEB0: .4byte gSineTable thumb_func_end sub_813EDFC .align 2, 0 @ Don't pad with nop.