.include "asm/macros.inc" .include "constants/constants.inc" .syntax unified .text thumb_func_start VaatiTransfigured VaatiTransfigured: @ 0x0803F770 push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xa] cmp r0, #5 bhi _0803F810 lsls r0, r0, #2 ldr r1, _0803F784 @ =_0803F788 adds r0, r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _0803F784: .4byte _0803F788 _0803F788: @ jump table .4byte _0803F7A0 @ case 0 .4byte _0803F7D0 @ case 1 .4byte _0803F7D8 @ case 2 .4byte _0803F7E0 @ case 3 .4byte _0803F7E8 @ case 4 .4byte _0803F800 @ case 5 _0803F7A0: ldrb r0, [r4, #0xc] cmp r0, #0 beq _0803F7C8 adds r1, r4, #0 adds r1, #0x78 ldrh r0, [r1] adds r2, r4, #0 adds r2, #0x7a strh r0, [r2] ldrh r0, [r4, #0x2e] strh r0, [r1] adds r1, #4 ldrh r0, [r1] adds r2, #4 strh r0, [r2] ldrh r0, [r4, #0x32] strh r0, [r1] adds r0, r4, #0 bl sub_080409B0 _0803F7C8: ldr r0, _0803F7CC @ =gUnk_080D0AC8 b _0803F7EA .align 2, 0 _0803F7CC: .4byte gUnk_080D0AC8 _0803F7D0: ldr r0, _0803F7D4 @ =gUnk_080D0AE8 b _0803F7EA .align 2, 0 _0803F7D4: .4byte gUnk_080D0AE8 _0803F7D8: ldr r0, _0803F7DC @ =gUnk_080D0AF0 b _0803F7EA .align 2, 0 _0803F7DC: .4byte gUnk_080D0AF0 _0803F7E0: ldr r0, _0803F7E4 @ =gUnk_080D0AFC b _0803F7EA .align 2, 0 _0803F7E4: .4byte gUnk_080D0AFC _0803F7E8: ldr r0, _0803F7FC @ =gUnk_080D0B04 _0803F7EA: ldrb r1, [r4, #0xc] lsls r1, r1, #2 adds r1, r1, r0 ldr r1, [r1] adds r0, r4, #0 bl _call_via_r1 b _0803F810 .align 2, 0 _0803F7FC: .4byte gUnk_080D0B04 _0803F800: ldr r0, _0803F814 @ =gUnk_080D0B0C ldrb r1, [r4, #0xc] lsls r1, r1, #2 adds r1, r1, r0 ldr r1, [r1] adds r0, r4, #0 bl _call_via_r1 _0803F810: pop {r4, pc} .align 2, 0 _0803F814: .4byte gUnk_080D0B0C thumb_func_start sub_0803F818 sub_0803F818: @ 0x0803F818 push {r4, r5, r6, r7, lr} adds r5, r0, #0 bl sub_0804A720 movs r0, #0 bl CheckRoomFlag cmp r0, #0 beq _0803F910 ldr r0, _0803F8FC @ =gUnk_03003DBC ldrb r0, [r0] cmp r0, #0x50 bhi _0803F910 movs r4, #0 movs r2, #1 movs r0, #1 strb r0, [r5, #0xc] ldrb r1, [r5, #0x18] subs r0, #5 ands r0, r1 orrs r0, r2 strb r0, [r5, #0x18] adds r3, r5, #0 adds r3, #0x29 ldrb r1, [r3] movs r0, #8 rsbs r0, r0, #0 ands r0, r1 movs r1, #5 orrs r0, r1 strb r0, [r3] adds r1, r5, #0 adds r1, #0x6d ldrb r0, [r1] orrs r2, r0 strb r2, [r1] bl Random movs r1, #0x17 ands r0, r1 adds r0, #4 strb r0, [r5, #0x15] movs r0, #0x30 strb r0, [r5, #0xe] movs r0, #0xc strb r0, [r5, #0xf] adds r1, r5, #0 adds r1, #0x82 movs r0, #4 strb r0, [r1] subs r1, #2 movs r0, #0xff strb r0, [r1] adds r0, r5, #0 adds r0, #0x74 strb r4, [r0] adds r0, #3 strb r4, [r0] adds r1, #4 movs r0, #9 strb r0, [r1] strb r4, [r5, #0x14] adds r0, r5, #0 adds r0, #0x86 strb r4, [r0] adds r0, #1 strb r4, [r0] ldrh r1, [r5, #0x2e] subs r0, #0xf strh r1, [r0] ldrh r0, [r5, #0x2e] adds r1, r5, #0 adds r1, #0x7a strh r0, [r1] ldrh r1, [r5, #0x32] adds r0, r5, #0 adds r0, #0x7c strh r1, [r0] ldrh r0, [r5, #0x32] adds r1, r5, #0 adds r1, #0x7e strh r0, [r1] movs r4, #1 adds r7, r5, #0 adds r7, #0x75 _0803F8C2: adds r0, r5, #0 adds r1, r4, #0 movs r2, #0 bl sub_08040648 adds r4, #1 cmp r4, #5 bls _0803F8C2 bl Random adds r0, r5, #0 bl sub_080408EC movs r4, #0 movs r6, #1 _0803F8E0: movs r0, #0x5a movs r1, #0 bl CreateEnemy str r5, [r0, #0x50] strb r4, [r0, #0xb] ldrb r1, [r7] asrs r1, r4 ands r1, r6 cmp r1, #0 beq _0803F900 strb r6, [r0, #0xe] b _0803F902 .align 2, 0 _0803F8FC: .4byte gUnk_03003DBC _0803F900: strb r1, [r0, #0xe] _0803F902: adds r4, #1 cmp r4, #7 bls _0803F8E0 adds r0, r5, #0 movs r1, #0 bl InitAnimationForceUpdate _0803F910: pop {r4, r5, r6, r7, pc} .align 2, 0 thumb_func_start sub_0803F914 sub_0803F914: @ 0x0803F914 push {r4, r5, r6, r7, lr} sub sp, #4 adds r7, r0, #0 adds r4, r7, #0 adds r4, #0x80 ldrb r0, [r4] cmp r0, #2 beq _0803F998 cmp r0, #2 bgt _0803F932 cmp r0, #0 beq _0803F95A cmp r0, #1 beq _0803F97A b _0803FA40 _0803F932: cmp r0, #4 bne _0803F938 b _0803FA3A _0803F938: cmp r0, #4 blt _0803F9CE adds r3, r4, #0 cmp r0, #0xff beq _0803F944 b _0803FA42 _0803F944: ldrb r0, [r7, #0xe] subs r0, #1 strb r0, [r7, #0xe] lsls r0, r0, #0x18 lsrs r0, r0, #0x18 cmp r0, #0 bne _0803FA42 strb r0, [r3] movs r0, #0xb strb r0, [r7, #0xe] b _0803FA42 _0803F95A: ldrb r0, [r7, #0xe] subs r0, #1 strb r0, [r7, #0xe] lsls r0, r0, #0x18 adds r3, r4, #0 cmp r0, #0 bne _0803FA42 ldrb r0, [r3] adds r0, #1 strb r0, [r3] movs r0, #0xc0 lsls r0, r0, #1 strh r0, [r7, #0x24] movs r0, #0x14 strb r0, [r7, #0xe] b _0803FA42 _0803F97A: ldrb r0, [r7, #0xe] subs r0, #1 strb r0, [r7, #0xe] lsls r0, r0, #0x18 adds r3, r4, #0 cmp r0, #0 bne _0803FA42 ldrb r0, [r3] adds r0, #1 strb r0, [r3] movs r0, #0xc0 strh r0, [r7, #0x24] movs r0, #0xc strb r0, [r7, #0xe] b _0803FA42 _0803F998: ldrb r0, [r7, #0xe] subs r0, #1 strb r0, [r7, #0xe] lsls r0, r0, #0x18 lsrs r1, r0, #0x18 adds r3, r4, #0 cmp r1, #0 bne _0803FA42 ldrb r0, [r3] adds r0, #1 strb r0, [r3] strh r1, [r7, #0x24] ldrb r0, [r7, #0x14] cmp r0, #1 bhi _0803F9C8 str r3, [sp] bl Random movs r1, #0x7f ands r0, r1 adds r0, #0x40 strb r0, [r7, #0xe] ldr r3, [sp] b _0803FA42 _0803F9C8: movs r0, #8 strb r0, [r7, #0xe] b _0803FA42 _0803F9CE: ldrb r0, [r7, #0xe] subs r0, #1 strb r0, [r7, #0xe] lsls r0, r0, #0x18 lsrs r1, r0, #0x18 cmp r1, #0 bne _0803FA32 movs r0, #0 strh r1, [r7, #0x36] strb r0, [r4] ldr r1, _0803FA04 @ =gUnk_080D0ABF ldrb r0, [r7, #0x14] lsls r0, r0, #1 adds r0, r0, r1 ldrb r0, [r0] strb r0, [r7, #0xe] adds r0, r7, #0 bl sub_08040934 adds r1, r0, #0 cmp r1, #2 beq _0803FA1A cmp r1, #2 bhi _0803FA08 cmp r1, #1 beq _0803FA0E b _0803FA26 .align 2, 0 _0803FA04: .4byte gUnk_080D0ABF _0803FA08: cmp r1, #3 beq _0803FA20 b _0803FA26 _0803FA0E: movs r0, #4 strb r0, [r7, #0xc] adds r0, r7, #0 adds r0, #0x74 strb r1, [r0] b _0803FA40 _0803FA1A: movs r0, #5 strb r0, [r7, #0xc] b _0803FA40 _0803FA20: movs r0, #6 strb r0, [r7, #0xc] b _0803FA40 _0803FA26: adds r1, r7, #0 adds r1, #0x80 movs r0, #4 strb r0, [r1] adds r3, r1, #0 b _0803FA42 _0803FA32: adds r0, r7, #0 bl sub_08040AD4 b _0803FA40 _0803FA3A: adds r0, r7, #0 bl sub_08040670 _0803FA40: adds r3, r4, #0 _0803FA42: adds r1, r7, #0 adds r1, #0x82 ldrb r0, [r1] subs r0, #1 strb r0, [r1] lsls r0, r0, #0x18 cmp r0, #0 bne _0803FAAC movs r0, #4 strb r0, [r1] ldrb r2, [r7, #0x15] adds r2, #0x12 movs r0, #0x1c ands r2, r0 asrs r2, r2, #2 movs r0, #0x9b movs r1, #0 str r3, [sp] bl CreateObject adds r6, r0, #0 ldr r3, [sp] cmp r6, #0 beq _0803FAAC str r7, [r6, #0x50] str r3, [sp] bl Random movs r5, #0xf ands r0, r5 ldr r1, _0803FAC4 @ =0x0000FFF9 adds r4, r1, #0 adds r0, r4, r0 ldrh r1, [r6, #0x2e] adds r0, r0, r1 strh r0, [r6, #0x2e] bl Random ands r0, r5 adds r4, r4, r0 ldrh r0, [r6, #0x32] adds r4, r4, r0 strh r4, [r6, #0x32] adds r2, r6, #0 adds r2, #0x29 ldrb r1, [r2] movs r0, #8 rsbs r0, r0, #0 ands r0, r1 movs r1, #6 orrs r0, r1 strb r0, [r2] ldr r3, [sp] _0803FAAC: ldrb r0, [r3] cmp r0, #0xff beq _0803FAB8 adds r0, r7, #0 bl sub_080AEF88 _0803FAB8: adds r0, r7, #0 bl UpdateAnimationSingleFrame add sp, #4 pop {r4, r5, r6, r7, pc} .align 2, 0 _0803FAC4: .4byte 0x0000FFF9 thumb_func_start sub_0803FAC8 sub_0803FAC8: @ 0x0803FAC8 push {lr} bl UpdateAnimationSingleFrame pop {pc} thumb_func_start sub_0803FAD0 sub_0803FAD0: @ 0x0803FAD0 push {r4, r5, r6, r7, lr} adds r7, r0, #0 adds r0, #0x80 ldrb r0, [r0] cmp r0, #5 bls _0803FADE b _0803FD32 _0803FADE: lsls r0, r0, #2 ldr r1, _0803FAE8 @ =_0803FAEC adds r0, r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _0803FAE8: .4byte _0803FAEC _0803FAEC: @ jump table .4byte _0803FB04 @ case 0 .4byte _0803FB34 @ case 1 .4byte _0803FBB8 @ case 2 .4byte _0803FBE2 @ case 3 .4byte _0803FC80 @ case 4 .4byte _0803FD0C @ case 5 _0803FB04: movs r1, #0xa0 lsls r1, r1, #6 adds r0, r7, #0 bl sub_080044EC adds r1, r0, #0 cmp r1, #1 beq _0803FB16 b _0803FD32 _0803FB16: adds r0, r7, #0 adds r0, #0x80 strb r1, [r0] movs r0, #0xc0 strb r0, [r7, #0xe] ldrb r1, [r7, #0x10] movs r0, #0x80 orrs r0, r1 strb r0, [r7, #0x10] movs r0, #0xa6 lsls r0, r0, #1 bl PlaySFX movs r0, #0x14 b _0803FC4A _0803FB34: ldrb r0, [r7, #0xe] subs r0, #1 strb r0, [r7, #0xe] lsls r0, r0, #0x18 lsrs r2, r0, #0x18 adds r3, r7, #0 adds r3, #0x80 cmp r2, #0 bne _0803FB58 movs r0, #2 strb r0, [r3] adds r1, r7, #0 adds r1, #0x3f movs r0, #0x35 strb r0, [r1] adds r0, r7, #0 adds r0, #0x62 strb r2, [r0] _0803FB58: adds r2, r7, #0 adds r2, #0x45 ldr r0, _0803FB70 @ =gUnk_080D0ABC ldrb r1, [r7, #0x14] adds r1, r1, r0 ldrb r0, [r2] ldrb r1, [r1] cmp r0, r1 bhs _0803FB74 movs r0, #1 strb r0, [r7, #0xe] b _0803FB76 .align 2, 0 _0803FB70: .4byte gUnk_080D0ABC _0803FB74: movs r0, #0 _0803FB76: cmp r0, #0 bne _0803FB7C b _0803FD32 _0803FB7C: movs r1, #0 movs r0, #2 strb r0, [r3] adds r2, r7, #0 adds r2, #0x3f movs r0, #0x35 strb r0, [r2] adds r0, r7, #0 adds r0, #0x62 strb r1, [r0] ldrb r0, [r7, #0x14] adds r0, #1 strb r0, [r7, #0x14] lsls r0, r0, #0x18 lsrs r0, r0, #0x18 cmp r0, #2 bhi _0803FBA0 b _0803FD32 _0803FBA0: movs r0, #7 strb r0, [r7, #0xc] movs r0, #0xe0 strb r0, [r7, #0xe] bl sub_0807A108 ldr r0, _0803FBB4 @ =0x00000127 bl PlaySFX b _0803FD4E .align 2, 0 _0803FBB4: .4byte 0x00000127 _0803FBB8: ldr r0, [r7, #0x54] adds r0, #0x74 movs r1, #0x10 strb r1, [r0] ldrb r0, [r7, #0xe] cmp r0, #0 beq _0803FBD4 adds r0, r7, #0 adds r0, #0x80 movs r1, #3 strb r1, [r0] movs r0, #0x40 strb r0, [r7, #0xe] b _0803FD32 _0803FBD4: adds r0, r7, #0 adds r0, #0x80 movs r1, #4 strb r1, [r0] movs r0, #0x50 strb r0, [r7, #0xe] b _0803FD32 _0803FBE2: ldrb r0, [r7, #0xe] cmp r0, #0 beq _0803FC08 subs r0, #1 strb r0, [r7, #0xe] lsls r0, r0, #0x18 cmp r0, #0 beq _0803FBF4 b _0803FD32 _0803FBF4: ldrb r1, [r7, #0x10] movs r0, #0x7f ands r0, r1 strb r0, [r7, #0x10] movs r0, #0xe0 lsls r0, r0, #0xa str r0, [r7, #0x20] movs r0, #0x10 strb r0, [r7, #0xf] b _0803FD32 _0803FC08: movs r1, #0xa0 lsls r1, r1, #6 adds r0, r7, #0 bl sub_08003FC4 adds r2, r0, #0 cmp r2, #0 bne _0803FC52 adds r1, r7, #0 adds r1, #0x80 movs r0, #5 strb r0, [r1] movs r0, #0x10 strb r0, [r7, #0xe] ldrb r1, [r7, #0x10] movs r0, #0x80 orrs r0, r1 strb r0, [r7, #0x10] adds r1, r7, #0 adds r1, #0x45 movs r0, #0xff strb r0, [r1] adds r0, r7, #0 adds r0, #0x86 strb r2, [r0] adds r0, r7, #0 bl sub_080408EC movs r0, #0xa6 lsls r0, r0, #1 bl PlaySFX movs r0, #0x1e _0803FC4A: movs r1, #4 bl sub_08080964 b _0803FD32 _0803FC52: ldrb r0, [r7, #0xf] cmp r0, #0 beq _0803FD32 subs r1, r0, #1 strb r1, [r7, #0xf] lsls r0, r1, #0x18 cmp r0, #0 bne _0803FC6C movs r0, #0xd8 lsls r0, r0, #1 bl PlaySFX b _0803FD32 _0803FC6C: movs r0, #7 ands r1, r0 cmp r1, #0 bne _0803FD32 ldr r0, _0803FC7C @ =0x00000149 bl PlaySFX b _0803FD32 .align 2, 0 _0803FC7C: .4byte 0x00000149 _0803FC80: ldrb r0, [r7, #0xe] subs r1, r0, #1 strb r1, [r7, #0xe] lsls r0, r1, #0x18 lsrs r2, r0, #0x18 cmp r2, #0 bne _0803FCA8 adds r0, r7, #0 adds r0, #0x80 movs r1, #5 strb r1, [r0] movs r0, #0x10 strb r0, [r7, #0xe] adds r0, r7, #0 adds r0, #0x86 strb r2, [r0] adds r0, r7, #0 bl sub_080408EC b _0803FD32 _0803FCA8: movs r0, #1 ands r1, r0 cmp r1, #0 beq _0803FD32 movs r0, #0x9b movs r1, #1 movs r2, #0xff bl CreateObject adds r6, r0, #0 cmp r6, #0 beq _0803FD32 str r7, [r6, #0x50] adds r0, r7, #0 adds r1, r6, #0 bl CopyPosition bl Random movs r5, #0xf ands r0, r5 ldr r1, _0803FD08 @ =0x0000FFF9 adds r4, r1, #0 adds r0, r4, r0 ldrh r1, [r6, #0x2e] adds r0, r0, r1 strh r0, [r6, #0x2e] bl Random ands r0, r5 adds r4, r4, r0 ldrh r0, [r6, #0x32] adds r4, r4, r0 strh r4, [r6, #0x32] adds r2, r6, #0 adds r2, #0x29 ldrb r1, [r2] movs r0, #8 rsbs r0, r0, #0 ands r0, r1 movs r1, #4 orrs r0, r1 strb r0, [r2] movs r0, #0x92 lsls r0, r0, #1 bl PlaySFX b _0803FD32 .align 2, 0 _0803FD08: .4byte 0x0000FFF9 _0803FD0C: ldrb r0, [r7, #0xe] subs r0, #1 strb r0, [r7, #0xe] lsls r0, r0, #0x18 lsrs r1, r0, #0x18 cmp r1, #0 bne _0803FD32 movs r0, #1 strb r0, [r7, #0xc] adds r0, r7, #0 adds r0, #0x80 strb r1, [r0] adds r0, #1 strb r1, [r0] subs r0, #0xb strb r1, [r0] adds r0, r7, #0 bl sub_08040670 _0803FD32: adds r0, r7, #0 adds r0, #0x80 ldrb r0, [r0] cmp r0, #2 bls _0803FD48 ldrb r1, [r7, #0xe] movs r0, #1 ands r0, r1 adds r1, r7, #0 adds r1, #0x62 strb r0, [r1] _0803FD48: adds r0, r7, #0 bl UpdateAnimationSingleFrame _0803FD4E: pop {r4, r5, r6, r7, pc} thumb_func_start sub_0803FD50 sub_0803FD50: @ 0x0803FD50 push {r4, r5, lr} adds r4, r0, #0 adds r5, r4, #0 adds r5, #0x80 ldrb r0, [r5] cmp r0, #1 beq _0803FDA8 cmp r0, #1 bgt _0803FD68 cmp r0, #0 beq _0803FD72 b _0803FE86 _0803FD68: cmp r0, #2 beq _0803FE0C cmp r0, #3 beq _0803FE62 b _0803FE86 _0803FD72: ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 lsrs r1, r0, #0x18 cmp r1, #0 beq _0803FD82 b _0803FE86 _0803FD82: ldrb r0, [r5] adds r0, #1 strb r0, [r5] adds r0, r4, #0 adds r0, #0x74 strb r1, [r0] movs r0, #0x80 strb r0, [r4, #0xe] strb r1, [r4, #0xf] movs r0, #0x90 lsls r0, r0, #0xa str r0, [r4, #0x20] ldr r0, _0803FDA4 @ =0x0000012B bl PlaySFX b _0803FE86 .align 2, 0 _0803FDA4: .4byte 0x0000012B _0803FDA8: movs r1, #0xa0 lsls r1, r1, #6 adds r0, r4, #0 bl sub_08003FC4 cmp r0, #0 bne _0803FE86 ldrb r0, [r5] adds r0, #1 strb r0, [r5] adds r0, r4, #0 adds r0, #0x84 ldrb r0, [r0] cmp r0, #1 beq _0803FDD8 cmp r0, #1 bgt _0803FDD0 cmp r0, #0 beq _0803FDDE b _0803FDE4 _0803FDD0: cmp r0, #2 beq _0803FDDE cmp r0, #3 bne _0803FDE4 _0803FDD8: movs r0, #1 strb r0, [r4, #0xf] b _0803FDF0 _0803FDDE: movs r0, #0 strb r0, [r4, #0xf] b _0803FDF0 _0803FDE4: bl Random movs r1, #0x20 ands r1, r0 lsrs r1, r1, #5 strb r1, [r4, #0xf] _0803FDF0: ldrb r0, [r4, #0x14] cmp r0, #1 bls _0803FDFA movs r0, #1 strb r0, [r4, #0xf] _0803FDFA: movs r0, #0xa6 lsls r0, r0, #1 bl PlaySFX movs r0, #0x1e movs r1, #4 bl sub_08080964 b _0803FE86 _0803FE0C: ldrb r0, [r4, #0xe] subs r1, r0, #1 strb r1, [r4, #0xe] lsls r0, r1, #0x18 cmp r0, #0 bne _0803FE34 ldrb r0, [r5] adds r0, #1 strb r0, [r5] ldr r2, _0803FE30 @ =gUnk_080D0ABF ldrb r0, [r4, #0x14] lsls r0, r0, #1 movs r1, #1 orrs r0, r1 adds r0, r0, r2 ldrb r0, [r0] strb r0, [r4, #0xe] b _0803FE86 .align 2, 0 _0803FE30: .4byte gUnk_080D0ABF _0803FE34: movs r0, #7 ands r1, r0 cmp r1, #0 bne _0803FE46 ldrb r2, [r4, #0xf] adds r0, r4, #0 movs r1, #0x1f bl sub_0804A98C _0803FE46: ldrb r0, [r4, #0xf] cmp r0, #0 beq _0803FE86 ldrb r0, [r4, #0x14] cmp r0, #1 bls _0803FE86 ldrb r0, [r4, #0xe] cmp r0, #5 bhi _0803FE86 movs r0, #0x80 strb r0, [r4, #0xe] movs r0, #0 strb r0, [r4, #0xf] b _0803FE86 _0803FE62: ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 lsrs r1, r0, #0x18 cmp r1, #0 bne _0803FE80 movs r0, #1 strb r0, [r4, #0xc] strb r1, [r5] strh r1, [r4, #0x36] adds r0, r4, #0 bl sub_08040670 b _0803FE86 _0803FE80: adds r0, r4, #0 bl sub_08040AD4 _0803FE86: adds r0, r4, #0 bl UpdateAnimationSingleFrame pop {r4, r5, pc} .align 2, 0 thumb_func_start sub_0803FE90 sub_0803FE90: @ 0x0803FE90 push {r4, r5, lr} adds r4, r0, #0 adds r3, r4, #0 adds r3, #0x80 ldrb r2, [r3] cmp r2, #1 beq _0803FED4 cmp r2, #1 bgt _0803FEA8 cmp r2, #0 beq _0803FEAE b _0803FF74 _0803FEA8: cmp r2, #2 beq _0803FF52 b _0803FF74 _0803FEAE: ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _0803FF74 ldrb r0, [r3] adds r0, #1 strb r0, [r3] movs r0, #0x40 strb r0, [r4, #0xe] ldrb r0, [r4, #0x14] cmp r0, #1 bls _0803FF74 movs r0, #0x80 strb r0, [r4, #0xe] movs r0, #1 strb r0, [r4, #0xf] b _0803FF74 _0803FED4: ldrb r0, [r4, #0xe] subs r1, r0, #1 strb r1, [r4, #0xe] lsls r0, r1, #0x18 cmp r0, #0 bne _0803FEFC ldrb r0, [r3] adds r0, #1 strb r0, [r3] ldr r1, _0803FEF8 @ =gUnk_080D0ABF ldrb r0, [r4, #0x14] lsls r0, r0, #1 orrs r0, r2 adds r0, r0, r1 ldrb r0, [r0] strb r0, [r4, #0xe] b _0803FF74 .align 2, 0 _0803FEF8: .4byte gUnk_080D0ABF _0803FEFC: ldrb r0, [r4, #0xf] cmp r0, #0 beq _0803FF24 movs r0, #7 ands r1, r0 cmp r1, #0 bne _0803FF14 ldrb r2, [r4, #0xf] adds r0, r4, #0 movs r1, #0x1f bl sub_0804A98C _0803FF14: ldrb r0, [r4, #0xe] cmp r0, #5 bhi _0803FF74 movs r0, #0x40 strb r0, [r4, #0xe] movs r0, #0 strb r0, [r4, #0xf] b _0803FF74 _0803FF24: movs r5, #0xf ands r5, r1 cmp r5, #0 bne _0803FF74 adds r0, r4, #0 movs r1, #0x1f movs r2, #2 bl sub_0804A98C adds r1, r0, #0 cmp r1, #0 beq _0803FF74 strb r5, [r1, #0xb] adds r0, r4, #0 adds r0, #0x81 ldrb r0, [r0] cmp r0, #0 beq _0803FF74 ldrh r0, [r1, #0x24] lsls r0, r0, #0x10 asrs r0, r0, #0x11 strh r0, [r1, #0x24] b _0803FF74 _0803FF52: ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 lsrs r1, r0, #0x18 cmp r1, #0 bne _0803FF6E movs r0, #1 strb r0, [r4, #0xc] strb r1, [r3] adds r0, r4, #0 bl sub_08040670 b _0803FF74 _0803FF6E: adds r0, r4, #0 bl sub_08040AD4 _0803FF74: adds r0, r4, #0 bl UpdateAnimationSingleFrame pop {r4, r5, pc} thumb_func_start sub_0803FF7C sub_0803FF7C: @ 0x0803FF7C push {r4, r5, lr} adds r4, r0, #0 adds r2, r4, #0 adds r2, #0x80 ldrb r5, [r2] cmp r5, #1 beq _0803FFBC cmp r5, #1 bgt _0803FF94 cmp r5, #0 beq _0803FF9A b _08040062 _0803FF94: cmp r5, #2 beq _08040040 b _08040062 _0803FF9A: ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _08040062 ldrb r0, [r2] adds r0, #1 strb r0, [r2] movs r0, #0x80 strb r0, [r4, #0xe] ldrb r0, [r4, #0x14] cmp r0, #1 bls _08040062 movs r0, #1 strb r0, [r4, #0xf] b _08040062 _0803FFBC: ldrb r0, [r4, #0xe] subs r1, r0, #1 strb r1, [r4, #0xe] lsls r0, r1, #0x18 cmp r0, #0 bne _0803FFE4 ldrb r0, [r2] adds r0, #1 strb r0, [r2] ldr r1, _0803FFE0 @ =gUnk_080D0ABF ldrb r0, [r4, #0x14] lsls r0, r0, #1 orrs r0, r5 adds r0, r0, r1 ldrb r0, [r0] strb r0, [r4, #0xe] b _08040062 .align 2, 0 _0803FFE0: .4byte gUnk_080D0ABF _0803FFE4: ldrb r0, [r4, #0xf] cmp r0, #0 beq _0804000C movs r0, #7 ands r1, r0 cmp r1, #0 bne _0803FFFC ldrb r2, [r4, #0xf] adds r0, r4, #0 movs r1, #0x1f bl sub_0804A98C _0803FFFC: ldrb r0, [r4, #0xe] cmp r0, #5 bhi _08040062 movs r0, #0x80 strb r0, [r4, #0xe] movs r0, #0 strb r0, [r4, #0xf] b _08040062 _0804000C: movs r0, #0x1f ands r1, r0 cmp r1, #0 bne _08040062 adds r0, r4, #0 movs r1, #0x1f movs r2, #2 bl sub_0804A98C adds r1, r0, #0 cmp r1, #0 beq _08040062 strb r5, [r1, #0xb] ldrh r0, [r1, #0x32] subs r0, #0x20 strh r0, [r1, #0x32] adds r0, r4, #0 adds r0, #0x81 ldrb r0, [r0] cmp r0, #0 beq _08040062 ldrh r0, [r1, #0x24] lsls r0, r0, #0x10 asrs r0, r0, #0x11 strh r0, [r1, #0x24] b _08040062 _08040040: ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 lsrs r1, r0, #0x18 cmp r1, #0 bne _0804005C movs r0, #1 strb r0, [r4, #0xc] strb r1, [r2] adds r0, r4, #0 bl sub_08040670 b _08040062 _0804005C: adds r0, r4, #0 bl sub_08040AD4 _08040062: adds r0, r4, #0 bl UpdateAnimationSingleFrame pop {r4, r5, pc} .align 2, 0 thumb_func_start sub_0804006C sub_0804006C: @ 0x0804006C push {r4, r5, r6, lr} adds r4, r0, #0 bl sub_08078B48 ldrb r0, [r4, #0xe] cmp r0, #0 beq _08040090 subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _080400C2 movs r0, #2 bl SetRoomFlag movs r0, #8 strb r0, [r4, #0xf] b _080400BA _08040090: ldrb r0, [r4, #0xf] cmp r0, #0 beq _080400B4 subs r0, #1 strb r0, [r4, #0xf] lsls r0, r0, #0x18 lsrs r0, r0, #0x18 cmp r0, #0 bne _080400BA adds r1, r4, #0 adds r1, #0x45 strb r0, [r1] ldrb r1, [r4, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 strb r0, [r4, #0x18] b _080400BA _080400B4: adds r0, r4, #0 bl sub_0804A7D4 _080400BA: adds r0, r4, #0 bl UpdateAnimationSingleFrame b _08040126 _080400C2: ldrb r0, [r4, #0xf] adds r0, #1 movs r1, #7 ands r0, r1 strb r0, [r4, #0xf] cmp r0, #0 bne _08040120 adds r0, r4, #0 movs r1, #0x55 movs r2, #0 bl CreateFx adds r5, r0, #0 cmp r5, #0 beq _08040120 bl Random ldr r1, _08040128 @ =0x00003F3F ands r0, r1 movs r3, #0xff adds r1, r0, #0 ands r1, r3 ldr r6, _0804012C @ =0x0000FFE0 adds r2, r6, #0 adds r1, r2, r1 ldrh r6, [r5, #0x2e] adds r1, r1, r6 strh r1, [r5, #0x2e] lsrs r0, r0, #8 ands r0, r3 adds r2, r2, r0 ldrh r0, [r5, #0x32] adds r2, r2, r0 strh r2, [r5, #0x32] adds r2, r5, #0 adds r2, #0x29 ldrb r1, [r2] movs r0, #8 rsbs r0, r0, #0 ands r0, r1 movs r1, #2 orrs r0, r1 strb r0, [r2] movs r0, #0xb7 lsls r0, r0, #1 bl PlaySFX _08040120: adds r0, r4, #0 bl UpdateAnimationSingleFrame _08040126: pop {r4, r5, r6, pc} .align 2, 0 _08040128: .4byte 0x00003F3F _0804012C: .4byte 0x0000FFE0 thumb_func_start sub_08040130 sub_08040130: @ 0x08040130 push {lr} movs r2, #0 movs r1, #1 strb r1, [r0, #0xc] strb r2, [r0, #0xe] adds r1, r0, #0 adds r1, #0x80 strb r2, [r1] adds r3, r0, #0 adds r3, #0x29 ldrb r2, [r3] movs r1, #8 rsbs r1, r1, #0 ands r1, r2 movs r2, #6 orrs r1, r2 strb r1, [r3] ldrb r1, [r0, #0xe] bl InitAnimationForceUpdate pop {pc} .align 2, 0 thumb_func_start sub_0804015C sub_0804015C: @ 0x0804015C push {r4, r5, lr} adds r4, r0, #0 ldr r5, [r4, #0x50] adds r0, r5, #0 adds r0, #0x45 ldrb r0, [r0] cmp r0, #0 bne _0804017C adds r2, r4, #0 adds r2, #0x6d ldrb r1, [r2] movs r0, #2 orrs r0, r1 strb r0, [r2] bl DeleteThisEntity _0804017C: adds r0, r5, #0 adds r0, #0x7a ldrh r0, [r0] strh r0, [r4, #0x2e] adds r0, r5, #0 adds r0, #0x7e ldrh r0, [r0] strh r0, [r4, #0x32] adds r0, r5, #0 adds r0, #0x74 ldrb r0, [r0] cmp r0, #0 bne _0804019E adds r0, r4, #0 bl UpdateAnimationSingleFrame b _080401A6 _0804019E: adds r0, r4, #0 movs r1, #2 bl sub_080042BA _080401A6: ldrb r0, [r5, #0xc] cmp r0, #4 bls _080401C0 ldrb r0, [r4, #0xe] cmp r0, #0 bne _080401D2 movs r0, #1 strb r0, [r4, #0xe] adds r0, r4, #0 movs r1, #1 bl InitAnimationForceUpdate b _080401D2 _080401C0: ldrb r0, [r4, #0xe] cmp r0, #0 beq _080401D2 movs r0, #0 strb r0, [r4, #0xe] adds r0, r4, #0 movs r1, #0 bl InitAnimationForceUpdate _080401D2: ldrb r0, [r5, #0xc] cmp r0, #3 beq _080401DC ldrh r0, [r5, #0x36] strh r0, [r4, #0x36] _080401DC: pop {r4, r5, pc} .align 2, 0 thumb_func_start sub_080401E0 sub_080401E0: @ 0x080401E0 push {r4, r5, lr} adds r4, r0, #0 ldrb r1, [r4, #0xb] adds r5, r1, #0 cmp r5, #0 beq _08040212 movs r0, #1 strb r0, [r4, #0xc] adds r1, #1 adds r3, r4, #0 adds r3, #0x29 movs r0, #7 ands r1, r0 ldrb r2, [r3] movs r0, #8 rsbs r0, r0, #0 ands r0, r2 orrs r0, r1 strb r0, [r3] ldrb r1, [r4, #0xb] adds r1, #4 adds r0, r4, #0 bl InitAnimationForceUpdate b _08040260 _08040212: adds r2, r4, #0 adds r2, #0x29 ldrb r1, [r2] movs r0, #8 rsbs r0, r0, #0 ands r0, r1 movs r1, #4 orrs r0, r1 strb r0, [r2] ldr r0, _08040264 @ =gUnk_03003DBC ldrb r0, [r0] cmp r0, #0x45 bhi _08040260 adds r0, r4, #0 movs r1, #2 movs r2, #1 bl sub_08040648 adds r0, r4, #0 movs r1, #2 movs r2, #2 bl sub_08040648 movs r0, #1 strb r0, [r4, #0xc] strb r5, [r4, #0xe] bl Random movs r1, #0x7f ands r0, r1 adds r0, #0x17 strb r0, [r4, #0xf] adds r0, r4, #0 adds r0, #0x74 strb r5, [r0] adds r0, r4, #0 movs r1, #0 bl InitAnimationForceUpdate _08040260: pop {r4, r5, pc} .align 2, 0 _08040264: .4byte gUnk_03003DBC thumb_func_start sub_08040268 sub_08040268: @ 0x08040268 push {r4, r5, lr} adds r4, r0, #0 ldr r0, [r4, #0x50] adds r0, #0x45 ldrb r0, [r0] cmp r0, #0 bne _08040286 adds r2, r4, #0 adds r2, #0x6d ldrb r1, [r2] movs r0, #2 orrs r0, r1 strb r0, [r2] bl DeleteThisEntity _08040286: ldr r0, [r4, #0x50] adds r1, r4, #0 bl CopyPosition ldrb r2, [r4, #0xb] cmp r2, #1 beq _080402C6 cmp r2, #1 bgt _0804029E cmp r2, #0 beq _080402E4 b _08040382 _0804029E: cmp r2, #2 bne _08040382 ldr r1, _080402DC @ =gLinkEntity adds r0, r4, #0 bl GetFacingDirection lsls r0, r0, #1 ldr r1, _080402E0 @ =gUnk_080D0B18 adds r0, r0, r1 movs r1, #0 ldrsb r1, [r0, r1] ldrh r2, [r4, #0x2e] adds r1, r1, r2 strh r1, [r4, #0x2e] ldrb r0, [r0, #1] lsls r0, r0, #0x18 asrs r0, r0, #0x18 ldrh r1, [r4, #0x32] adds r0, r0, r1 strh r0, [r4, #0x32] _080402C6: ldr r0, [r4, #0x50] ldrb r0, [r0, #0x1e] cmp r0, #2 beq _08040382 movs r0, #2 strb r0, [r4, #0xc] ldrb r1, [r4, #0x18] subs r0, #6 ands r0, r1 strb r0, [r4, #0x18] b _08040382 .align 2, 0 _080402DC: .4byte gLinkEntity _080402E0: .4byte gUnk_080D0B18 _080402E4: adds r5, r4, #0 adds r5, #0x74 ldrb r0, [r5] cmp r0, #1 beq _0804032E cmp r0, #1 bgt _080402F8 cmp r0, #0 beq _08040302 b _08040382 _080402F8: cmp r0, #0x10 beq _08040354 cmp r0, #0x11 beq _08040366 b _08040382 _08040302: ldrb r0, [r4, #0xf] subs r0, #1 strb r0, [r4, #0xf] lsls r0, r0, #0x18 cmp r0, #0 bne _08040382 bl Random movs r1, #0x7f ands r0, r1 adds r0, #0x27 strb r0, [r4, #0xf] movs r1, #1 ands r0, r1 cmp r0, #0 beq _08040382 strb r1, [r5] adds r0, r4, #0 movs r1, #8 bl InitAnimationForceUpdate b _08040382 _0804032E: adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _08040382 strb r2, [r5] bl Random movs r1, #0x7f ands r0, r1 adds r0, #0x17 strb r0, [r4, #0xf] adds r0, r4, #0 movs r1, #0 bl InitAnimationForceUpdate b _08040382 _08040354: adds r0, r4, #0 movs r1, #7 bl InitAnimationForceUpdate movs r0, #0x11 strb r0, [r5] movs r0, #0x50 strb r0, [r4, #0xf] b _08040382 _08040366: ldrb r0, [r4, #0xf] subs r0, #1 strb r0, [r4, #0xf] lsls r0, r0, #0x18 cmp r0, #0 bne _08040382 movs r0, #1 strb r0, [r5] movs r0, #0x30 strb r0, [r4, #0xf] adds r0, r4, #0 movs r1, #8 bl InitAnimationForceUpdate _08040382: adds r0, r4, #0 bl UpdateAnimationSingleFrame pop {r4, r5, pc} .align 2, 0 thumb_func_start sub_0804038C sub_0804038C: @ 0x0804038C push {r4, lr} adds r4, r0, #0 ldr r0, [r4, #0x50] adds r0, #0x45 ldrb r0, [r0] cmp r0, #0 bne _080403AA adds r2, r4, #0 adds r2, #0x6d ldrb r1, [r2] movs r0, #2 orrs r0, r1 strb r0, [r2] bl DeleteThisEntity _080403AA: ldr r0, [r4, #0x50] adds r1, r4, #0 bl CopyPosition ldr r0, [r4, #0x50] ldrb r0, [r0, #0x1e] cmp r0, #2 bne _080403CA movs r2, #1 movs r0, #1 strb r0, [r4, #0xc] ldrb r1, [r4, #0x18] subs r0, #5 ands r0, r1 orrs r0, r2 strb r0, [r4, #0x18] _080403CA: pop {r4, pc} thumb_func_start sub_080403CC sub_080403CC: @ 0x080403CC push {lr} movs r1, #1 strb r1, [r0, #0xc] adds r3, r0, #0 adds r3, #0x29 ldrb r2, [r3] subs r1, #9 ands r1, r2 movs r2, #4 orrs r1, r2 strb r1, [r3] movs r1, #0 bl InitAnimationForceUpdate pop {pc} .align 2, 0 thumb_func_start sub_080403EC sub_080403EC: @ 0x080403EC push {r4, lr} adds r4, r0, #0 ldr r0, [r4, #0x50] adds r0, #0x45 ldrb r0, [r0] cmp r0, #0 bne _0804040A adds r2, r4, #0 adds r2, #0x6d ldrb r1, [r2] movs r0, #2 orrs r0, r1 strb r0, [r2] bl DeleteThisEntity _0804040A: ldr r0, [r4, #0x50] adds r1, r4, #0 bl CopyPosition adds r0, r4, #0 bl UpdateAnimationSingleFrame pop {r4, pc} .align 2, 0 thumb_func_start sub_0804041C sub_0804041C: @ 0x0804041C push {lr} movs r2, #0 movs r1, #1 strb r1, [r0, #0xc] adds r1, r0, #0 adds r1, #0x80 strb r2, [r1] movs r1, #0xa strb r1, [r0, #0xe] ldrb r2, [r0, #0x18] subs r1, #0xe ands r1, r2 strb r1, [r0, #0x18] adds r3, r0, #0 adds r3, #0x29 ldrb r1, [r3] movs r2, #7 orrs r1, r2 strb r1, [r3] movs r1, #0 bl InitializeAnimation pop {pc} .align 2, 0 thumb_func_start sub_0804044C sub_0804044C: @ 0x0804044C push {r4, lr} adds r4, r0, #0 ldr r0, [r4, #0x50] adds r0, #0x45 ldrb r0, [r0] cmp r0, #0 bne _0804046A adds r2, r4, #0 adds r2, #0x6d ldrb r1, [r2] movs r0, #2 orrs r0, r1 strb r0, [r2] bl DeleteThisEntity _0804046A: ldr r0, [r4, #0x50] ldrb r0, [r0, #0xc] cmp r0, #5 beq _0804048A adds r1, r4, #0 adds r1, #0x80 ldrb r0, [r1] cmp r0, #0 beq _080404BC movs r0, #0 strb r0, [r1] ldrb r1, [r4, #0x18] subs r0, #4 ands r0, r1 strb r0, [r4, #0x18] b _080404BC _0804048A: adds r1, r4, #0 adds r1, #0x80 ldrb r0, [r1] cmp r0, #0 bne _080404A6 adds r0, #1 strb r0, [r1] ldrb r1, [r4, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 movs r1, #1 orrs r0, r1 strb r0, [r4, #0x18] _080404A6: ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _080404BC movs r0, #0xa strb r0, [r4, #0xe] ldr r0, _080404CC @ =0x00000149 bl PlaySFX _080404BC: ldr r0, [r4, #0x50] adds r1, r4, #0 bl CopyPosition adds r0, r4, #0 bl GetNextFrame pop {r4, pc} .align 2, 0 _080404CC: .4byte 0x00000149 thumb_func_start sub_080404D0 sub_080404D0: @ 0x080404D0 push {lr} adds r2, r0, #0 ldrb r0, [r2, #0xb] cmp r0, #0 beq _080404FC movs r0, #2 strb r0, [r2, #0xc] movs r0, #0xa strb r0, [r2, #0xe] adds r3, r2, #0 adds r3, #0x29 ldrb r1, [r3] subs r0, #0x12 ands r0, r1 movs r1, #3 orrs r0, r1 strb r0, [r3] adds r0, r2, #0 movs r1, #2 bl InitializeAnimation b _08040518 _080404FC: movs r0, #1 strb r0, [r2, #0xc] ldrb r1, [r2, #0x18] subs r0, #5 ands r0, r1 strb r0, [r2, #0x18] adds r2, #0x29 ldrb r1, [r2] movs r0, #8 rsbs r0, r0, #0 ands r0, r1 movs r1, #4 orrs r0, r1 strb r0, [r2] _08040518: pop {pc} .align 2, 0 thumb_func_start sub_0804051C sub_0804051C: @ 0x0804051C push {r4, lr} adds r4, r0, #0 ldr r0, [r4, #0x50] adds r0, #0x45 ldrb r0, [r0] cmp r0, #0 bne _0804053A adds r2, r4, #0 adds r2, #0x6d ldrb r1, [r2] movs r0, #2 orrs r0, r1 strb r0, [r2] bl DeleteThisEntity _0804053A: adds r1, r4, #0 adds r1, #0x80 ldrb r0, [r1] cmp r0, #0 beq _0804054A cmp r0, #1 beq _0804056C b _080405C4 _0804054A: ldr r0, [r4, #0x50] ldrb r0, [r0, #0xc] cmp r0, #6 bne _080405CC movs r0, #1 movs r2, #1 strb r0, [r1] ldrb r1, [r4, #0x18] subs r0, #5 ands r0, r1 orrs r0, r2 strb r0, [r4, #0x18] adds r0, r4, #0 movs r1, #1 bl InitializeAnimation b _080405C4 _0804056C: ldr r0, [r4, #0x50] ldrb r0, [r0, #0xc] cmp r0, #6 beq _08040582 movs r0, #0 strb r0, [r1] ldrb r1, [r4, #0x18] subs r0, #4 ands r0, r1 strb r0, [r4, #0x18] b _080405C4 _08040582: adds r2, r4, #0 adds r2, #0x5a ldrb r1, [r2] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _080405A8 movs r0, #0x7f ands r0, r1 strb r0, [r2] ldr r0, _080405D0 @ =gUnk_03003DBC ldrb r0, [r0] cmp r0, #0x46 bhi _080405A8 ldrb r1, [r4, #0xa] adds r0, r4, #0 movs r2, #1 bl sub_08040648 _080405A8: ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _080405BE movs r0, #0xa strb r0, [r4, #0xe] ldr r0, _080405D4 @ =0x00000149 bl PlaySFX _080405BE: adds r0, r4, #0 bl GetNextFrame _080405C4: ldr r0, [r4, #0x50] adds r1, r4, #0 bl CopyPosition _080405CC: pop {r4, pc} .align 2, 0 _080405D0: .4byte gUnk_03003DBC _080405D4: .4byte 0x00000149 thumb_func_start sub_080405D8 sub_080405D8: @ 0x080405D8 push {r4, lr} adds r4, r0, #0 ldr r0, [r4, #0x50] adds r0, #0x45 ldrb r0, [r0] cmp r0, #0 bne _080405F6 adds r2, r4, #0 adds r2, #0x6d ldrb r1, [r2] movs r0, #2 orrs r0, r1 strb r0, [r2] bl DeleteThisEntity _080405F6: adds r3, r4, #0 adds r3, #0x80 ldrb r2, [r3] cmp r2, #0 bne _08040626 ldr r0, [r4, #0x50] ldr r0, [r0, #0x50] ldrb r0, [r0, #0xc] cmp r0, #6 beq _08040638 adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _08040638 adds r0, r2, #1 strb r0, [r3] adds r0, r4, #0 movs r1, #3 bl InitializeAnimation b _08040638 _08040626: adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _08040638 bl DeleteThisEntity _08040638: ldr r0, [r4, #0x50] adds r1, r4, #0 bl CopyPosition adds r0, r4, #0 bl GetNextFrame pop {r4, pc} thumb_func_start sub_08040648 sub_08040648: @ 0x08040648 push {r4, r5, r6, r7, lr} adds r6, r0, #0 adds r4, r1, #0 adds r7, r2, #0 movs r0, #0x4f bl CreateEnemy adds r5, r0, #0 strb r7, [r5, #0xb] str r6, [r5, #0x50] adds r0, r6, #0 adds r1, r5, #0 bl CopyPosition cmp r4, #2 bne _0804066E cmp r7, #0 bne _0804066E str r5, [r6, #0x54] _0804066E: pop {r4, r5, r6, r7, pc} thumb_func_start sub_08040670 sub_08040670: @ 0x08040670 push {lr} adds r2, r0, #0 movs r1, #0 movs r0, #1 strb r0, [r2, #0xc] adds r0, r2, #0 adds r0, #0x80 strb r1, [r0] movs r0, #0x80 lsls r0, r0, #1 strh r0, [r2, #0x24] movs r0, #0xc strb r0, [r2, #0xe] ldrb r0, [r2, #0x14] cmp r0, #0 bne _08040698 adds r0, r2, #0 bl sub_080406A0 b _0804069E _08040698: adds r0, r2, #0 bl sub_08040770 _0804069E: pop {pc} thumb_func_start sub_080406A0 sub_080406A0: @ 0x080406A0 push {r4, r5, r6, r7, lr} mov r7, r8 push {r7} adds r5, r0, #0 bl Random mov r8, r0 movs r0, #0x30 mov r1, r8 ands r1, r0 mov r8, r1 adds r0, r5, #0 adds r0, #0x86 ldrb r6, [r0] ldr r2, _080406F0 @ =gRoomControls ldrh r3, [r2, #6] ldr r4, _080406F4 @ =gUnk_080D0B58 lsls r1, r6, #1 lsls r0, r6, #2 adds r0, r0, r4 ldrh r0, [r0] adds r7, r3, r0 ldrh r2, [r2, #8] adds r1, #1 lsls r1, r1, #1 adds r1, r1, r4 ldrh r0, [r1] adds r4, r2, r0 adds r0, r5, #0 adds r1, r7, #0 adds r2, r4, #0 movs r3, #0x1c bl sub_0806FCB8 cmp r0, #0 beq _0804071E cmp r6, #0 beq _080406F8 movs r6, #0 b _08040702 .align 2, 0 _080406F0: .4byte gRoomControls _080406F4: .4byte gUnk_080D0B58 _080406F8: bl Random movs r1, #1 ands r1, r0 adds r6, r1, #1 _08040702: ldr r2, _0804074C @ =gRoomControls ldrh r3, [r2, #6] ldr r4, _08040750 @ =gUnk_080D0B58 lsls r1, r6, #1 lsls r0, r6, #2 adds r0, r0, r4 ldrh r0, [r0] adds r7, r3, r0 ldrh r2, [r2, #8] adds r1, #1 lsls r1, r1, #1 adds r1, r1, r4 ldrh r0, [r1] adds r4, r2, r0 _0804071E: movs r2, #0x2e ldrsh r0, [r5, r2] movs r2, #0x32 ldrsh r1, [r5, r2] adds r2, r7, #0 adds r3, r4, #0 bl sub_080045D4 strb r0, [r5, #0x15] movs r0, #0x20 mov r1, r8 ands r0, r1 cmp r0, #0 beq _0804075A ldrb r1, [r5, #0x15] movs r0, #0x10 mov r2, r8 ands r2, r0 cmp r2, #0 beq _08040754 adds r0, r1, #1 b _08040758 .align 2, 0 _0804074C: .4byte gRoomControls _08040750: .4byte gUnk_080D0B58 _08040754: adds r0, r1, #0 adds r0, #0x1f _08040758: strb r0, [r5, #0x15] _0804075A: ldrb r0, [r5, #0x15] movs r1, #0x1f ands r1, r0 strb r1, [r5, #0x15] adds r0, r5, #0 adds r0, #0x86 strb r6, [r0] pop {r3} mov r8, r3 pop {r4, r5, r6, r7, pc} .align 2, 0 thumb_func_start sub_08040770 sub_08040770: @ 0x08040770 push {r4, r5, r6, r7, lr} mov r7, r8 push {r7} adds r7, r0, #0 bl Random mov r8, r0 movs r0, #0x38 mov r1, r8 ands r1, r0 mov r8, r1 adds r0, r7, #0 adds r0, #0x86 ldrb r5, [r0] ldr r2, _080407CC @ =gRoomControls ldrh r3, [r2, #6] ldr r4, _080407D0 @ =gUnk_080D0B64 lsls r1, r5, #1 lsls r0, r5, #2 adds r0, r0, r4 ldrh r0, [r0] adds r6, r3, r0 ldrh r2, [r2, #8] adds r1, #1 lsls r1, r1, #1 adds r1, r1, r4 ldrh r0, [r1] adds r4, r2, r0 adds r0, r7, #0 adds r1, r6, #0 adds r2, r4, #0 movs r3, #0x1c bl sub_0806FCB8 cmp r0, #0 beq _0804089A ldrb r0, [r7, #0x14] cmp r0, #2 beq _08040822 movs r0, #8 mov r2, r8 ands r0, r2 cmp r0, #0 beq _080407D4 adds r5, #1 b _080407D6 .align 2, 0 _080407CC: .4byte gRoomControls _080407D0: .4byte gUnk_080D0B64 _080407D4: adds r5, #3 _080407D6: movs r0, #3 ands r5, r0 adds r0, r7, #0 adds r0, #0x81 ldrb r0, [r0] cmp r0, #0 beq _0804087E adds r0, r7, #0 adds r0, #0x75 ldrb r0, [r0] cmp r0, #0x3c beq _0804080A cmp r0, #0x3c bgt _080407F8 cmp r0, #0xf beq _08040802 b _0804087E _080407F8: cmp r0, #0xc3 beq _0804081A cmp r0, #0xf0 beq _08040812 b _0804087E _08040802: cmp r5, #0 bne _0804087E movs r5, #2 b _0804087E _0804080A: cmp r5, #1 bne _0804087E movs r5, #3 b _0804087E _08040812: cmp r5, #2 bne _0804087E movs r5, #0 b _0804087E _0804081A: cmp r5, #3 bne _0804087E movs r5, #1 b _0804087E _08040822: adds r1, r7, #0 adds r1, #0x87 ldrb r2, [r1] movs r0, #0x7f ands r0, r2 adds r4, r1, #0 cmp r0, #0 beq _08040848 movs r0, #0x80 ands r0, r2 cmp r0, #0 beq _0804083E adds r5, #1 b _08040840 _0804083E: adds r5, #3 _08040840: ldrb r0, [r4] subs r0, #1 strb r0, [r4] b _0804087A _08040848: bl Random movs r1, #7 ands r0, r1 adds r0, #4 strb r0, [r4] ldrb r6, [r4] bl Random movs r1, #0x20 ands r1, r0 cmp r1, #0 bne _08040868 movs r1, #0x80 orrs r1, r6 b _0804086A _08040868: adds r1, r6, #0 _0804086A: strb r1, [r4] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _08040878 adds r5, #1 b _0804087A _08040878: adds r5, #3 _0804087A: movs r0, #3 ands r5, r0 _0804087E: ldr r2, _080408C8 @ =gRoomControls ldrh r3, [r2, #6] ldr r4, _080408CC @ =gUnk_080D0B64 lsls r1, r5, #1 lsls r0, r5, #2 adds r0, r0, r4 ldrh r0, [r0] adds r6, r3, r0 ldrh r2, [r2, #8] adds r1, #1 lsls r1, r1, #1 adds r1, r1, r4 ldrh r0, [r1] adds r4, r2, r0 _0804089A: movs r1, #0x2e ldrsh r0, [r7, r1] movs r2, #0x32 ldrsh r1, [r7, r2] adds r2, r6, #0 adds r3, r4, #0 bl sub_080045D4 strb r0, [r7, #0x15] movs r0, #0x20 mov r1, r8 ands r0, r1 cmp r0, #0 beq _080408D6 ldrb r1, [r7, #0x15] movs r0, #0x10 mov r2, r8 ands r2, r0 cmp r2, #0 beq _080408D0 adds r0, r1, #1 b _080408D4 .align 2, 0 _080408C8: .4byte gRoomControls _080408CC: .4byte gUnk_080D0B64 _080408D0: adds r0, r1, #0 adds r0, #0x1f _080408D4: strb r0, [r7, #0x15] _080408D6: ldrb r0, [r7, #0x15] movs r1, #0x1f ands r1, r0 strb r1, [r7, #0x15] adds r0, r7, #0 adds r0, #0x86 strb r5, [r0] pop {r3} mov r8, r3 pop {r4, r5, r6, r7, pc} .align 2, 0 thumb_func_start sub_080408EC sub_080408EC: @ 0x080408EC push {r4, r5, r6, r7, lr} adds r2, r0, #0 ldrb r0, [r2, #0x14] cmp r0, #0 bne _08040902 movs r1, #0xf0 adds r4, r2, #0 adds r4, #0x75 adds r5, r2, #0 adds r5, #0x76 b _08040926 _08040902: adds r4, r2, #0 adds r4, #0x75 adds r5, r2, #0 adds r5, #0x76 ldr r7, _08040930 @ =gUnk_080D0B74 movs r6, #0x3c _0804090E: bl Random ands r0, r6 lsrs r0, r0, #2 adds r0, r0, r7 ldrb r1, [r0] ldrb r0, [r4] cmp r1, r0 bne _08040922 movs r1, #0xff _08040922: cmp r1, #0xff beq _0804090E _08040926: movs r0, #0 strb r1, [r4] strb r0, [r5] pop {r4, r5, r6, r7, pc} .align 2, 0 _08040930: .4byte gUnk_080D0B74 thumb_func_start sub_08040934 sub_08040934: @ 0x08040934 push {r4, lr} adds r4, r0, #0 bl Random movs r1, #0x3e ands r1, r0 movs r2, #0 cmp r1, #0x2e bhi _08040948 movs r2, #1 _08040948: adds r0, r4, #0 adds r0, #0x87 ldrb r1, [r0] movs r0, #0x7f ands r0, r1 cmp r0, #0 beq _08040958 movs r2, #0 _08040958: adds r4, #0x84 ldrb r0, [r4] cmp r0, #9 beq _080409A4 cmp r2, #0 beq _080409AA adds r0, #1 movs r1, #5 bl __modsi3 strb r0, [r4] bl Random movs r1, #0xf8 ands r1, r0 lsrs r1, r1, #3 ldr r0, _08040998 @ =gUnk_080D0B84 adds r0, r1, r0 ldrb r2, [r0] ldrb r0, [r4] cmp r0, #1 beq _0804099C cmp r0, #1 blt _080409AA cmp r0, #4 bgt _080409AA cmp r0, #3 blt _080409AA cmp r2, #0 bne _080409AA b _080409A8 .align 2, 0 _08040998: .4byte gUnk_080D0B84 _0804099C: cmp r2, #0 beq _080409A8 movs r2, #3 b _080409AA _080409A4: movs r0, #0 strb r0, [r4] _080409A8: movs r2, #1 _080409AA: adds r0, r2, #0 pop {r4, pc} .align 2, 0 thumb_func_start sub_080409B0 sub_080409B0: @ 0x080409B0 push {r4, r5, lr} adds r4, r0, #0 movs r0, #0x81 adds r0, r0, r4 mov ip, r0 ldrb r1, [r0] cmp r1, #1 beq _080409EA cmp r1, #1 bgt _080409CA cmp r1, #0 beq _080409D0 b _08040A68 _080409CA: cmp r1, #2 beq _08040A04 b _08040A68 _080409D0: adds r0, r4, #0 adds r0, #0x75 adds r2, r4, #0 adds r2, #0x76 ldrb r0, [r0] ldrb r3, [r2] cmp r0, r3 bne _08040A68 movs r0, #1 mov r3, ip strb r0, [r3] strb r1, [r2] b _08040A68 _080409EA: adds r0, r4, #0 adds r0, #0x76 ldrb r0, [r0] cmp r0, #0 beq _08040A68 movs r0, #2 mov r1, ip strb r0, [r1] adds r1, r4, #0 adds r1, #0x77 movs r0, #0x10 strb r0, [r1] b _08040A68 _08040A04: adds r1, r4, #0 adds r1, #0x77 ldrb r0, [r1] subs r0, #1 strb r0, [r1] lsls r0, r0, #0x18 lsrs r2, r0, #0x18 cmp r2, #0 bne _08040A68 adds r0, r4, #0 adds r0, #0x75 adds r3, r4, #0 adds r3, #0x76 ldrb r1, [r0] ldrb r0, [r3] ands r0, r1 cmp r1, r0 beq _08040A3C movs r0, #1 mov r1, ip strb r0, [r1] strb r2, [r3] ldr r0, _08040A38 @ =0x00000155 bl PlaySFX b _08040A68 .align 2, 0 _08040A38: .4byte 0x00000155 _08040A3C: movs r1, #3 strb r1, [r4, #0xc] adds r0, r4, #0 adds r0, #0x80 strb r2, [r0] mov r3, ip strb r1, [r3] ldrb r1, [r4, #0x10] movs r0, #0x7f ands r0, r1 strb r0, [r4, #0x10] adds r1, r4, #0 adds r1, #0x3f movs r0, #0x36 strb r0, [r1] movs r0, #0xc0 lsls r0, r0, #9 str r0, [r4, #0x20] movs r0, #0xb2 lsls r0, r0, #1 bl PlaySFX _08040A68: adds r0, r4, #0 adds r0, #0x81 ldrb r0, [r0] cmp r0, #2 bhi _08040A84 adds r0, r4, #0 adds r0, #0x42 ldrb r0, [r0] cmp r0, #0 beq _08040AC8 adds r0, r4, #0 bl sub_080AF18C b _08040AC8 _08040A84: adds r2, r4, #0 adds r2, #0x41 ldrb r1, [r2] movs r0, #0x80 ands r0, r1 adds r5, r2, #0 cmp r0, #0 beq _08040AB0 adds r0, r4, #0 adds r0, #0x3d ldrb r0, [r0] lsls r0, r0, #0x18 asrs r0, r0, #0x18 cmp r0, #0 ble _08040AB0 movs r0, #0xc movs r1, #1 bl sub_08080964 ldr r0, _08040ACC @ =0x00000127 bl PlaySFX _08040AB0: ldrb r0, [r5] cmp r0, #0x8a bne _08040AC8 ldr r0, _08040AD0 @ =gLinkState adds r0, #0xa0 ldrb r0, [r0] cmp r0, #5 bne _08040AC8 adds r1, r4, #0 adds r1, #0x45 movs r0, #0xc0 strb r0, [r1] _08040AC8: pop {r4, r5, pc} .align 2, 0 _08040ACC: .4byte 0x00000127 _08040AD0: .4byte gLinkState thumb_func_start sub_08040AD4 sub_08040AD4: @ 0x08040AD4 push {r4, r5, r6, lr} adds r5, r0, #0 ldrb r0, [r5, #0xe] movs r1, #0x3f ands r1, r0 lsls r6, r1, #0x18 lsrs r4, r6, #0x18 movs r0, #0x1f ands r0, r4 cmp r0, #0 bne _08040AF0 ldr r0, _08040B0C @ =0x000001A9 bl PlaySFX _08040AF0: movs r0, #3 ands r4, r0 cmp r4, #0 bne _08040B2A lsrs r4, r6, #0x1a movs r0, #0x2e ldrsh r2, [r5, r0] adds r0, r4, #4 movs r1, #8 ands r0, r1 cmp r0, #0 beq _08040B10 subs r0, r2, #1 b _08040B12 .align 2, 0 _08040B0C: .4byte 0x000001A9 _08040B10: adds r0, r2, #1 _08040B12: strh r0, [r5, #0x2e] movs r0, #0x32 ldrsh r2, [r5, r0] adds r0, r4, #2 movs r1, #4 ands r0, r1 cmp r0, #0 beq _08040B26 subs r0, r2, #1 b _08040B28 _08040B26: adds r0, r2, #1 _08040B28: strh r0, [r5, #0x32] _08040B2A: pop {r4, r5, r6, pc}