diff options
Diffstat (limited to 'asm/intro.s')
-rw-r--r-- | asm/intro.s | 4710 |
1 files changed, 4710 insertions, 0 deletions
diff --git a/asm/intro.s b/asm/intro.s new file mode 100644 index 000000000..21f3a236f --- /dev/null +++ b/asm/intro.s @@ -0,0 +1,4710 @@ + .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. |