.include "asm/macros.inc" .include "constants/constants.inc" .syntax unified .text thumb_func_start Enemy5A Enemy5A: @ 0x080456D8 push {lr} ldr r1, _080456E4 @ =gUnk_080D1888 bl EnemyFunctionHandler pop {pc} .align 2, 0 _080456E4: .4byte gUnk_080D1888 thumb_func_start sub_080456E8 sub_080456E8: @ 0x080456E8 push {lr} ldr r2, _080456FC @ =gUnk_080D18A0 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _080456FC: .4byte gUnk_080D18A0 thumb_func_start sub_08045700 sub_08045700: @ 0x08045700 push {r4, r5, lr} adds r5, r0, #0 ldrb r0, [r5, #0xa] cmp r0, #0 beq _080457D0 ldr r0, [r5, #0x50] ldr r3, [r0, #0x50] adds r0, r5, #0 adds r0, #0x41 ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _080457D0 movs r0, #0x3f ands r0, r1 cmp r0, #0xe beq _08045728 cmp r0, #0x15 bne _08045778 _08045728: adds r1, r5, #0 adds r1, #0x81 ldrb r0, [r1] cmp r0, #0 bne _0804575C movs r0, #3 strb r0, [r5, #0xc] ldrb r0, [r1] adds r0, #1 strb r0, [r1] ldrb r1, [r5, #0xa] lsls r1, r1, #3 ldrb r0, [r5, #0xe] adds r0, #2 orrs r1, r0 adds r0, r5, #0 bl InitializeAnimation ldr r0, [r5, #0x50] ldrb r1, [r0, #0xa] lsls r1, r1, #3 ldrb r2, [r5, #0xe] adds r2, #2 orrs r1, r2 bl InitializeAnimation _0804575C: ldrb r0, [r5, #0xe] cmp r0, #0 beq _0804576C movs r0, #0xbd lsls r0, r0, #1 bl SoundReq b _080457D0 _0804576C: ldr r0, _08045774 @ =0x00000119 bl SoundReq b _080457D0 .align 2, 0 _08045774: .4byte 0x00000119 _08045778: adds r2, r5, #0 adds r2, #0x45 ldrb r1, [r2] adds r0, r1, #0 cmp r0, #0xff beq _080457D0 movs r0, #0xff strb r0, [r2] ldrb r0, [r5, #0xe] cmp r0, #0 beq _080457D0 adds r0, r3, #0 adds r0, #0x81 ldrb r0, [r0] cmp r0, #0 beq _080457D0 adds r0, r3, #0 adds r0, #0x76 movs r1, #1 ldrb r2, [r5, #0xb] lsls r1, r2 ldrb r2, [r0] orrs r1, r2 strb r1, [r0] adds r1, r5, #0 adds r1, #0x85 ldrb r0, [r1] cmp r0, #0 bne _080457D0 adds r0, #1 strb r0, [r1] ldrb r1, [r5, #0xa] lsls r1, r1, #3 movs r4, #6 orrs r1, r4 adds r0, r5, #0 bl InitializeAnimation ldr r0, [r5, #0x50] ldrb r1, [r0, #0xa] lsls r1, r1, #3 orrs r1, r4 bl InitializeAnimation _080457D0: ldr r1, _080457DC @ =gUnk_080D1888 adds r0, r5, #0 bl sub_0804AA30 pop {r4, r5, pc} .align 2, 0 _080457DC: .4byte gUnk_080D1888 thumb_func_start nullsub_173 nullsub_173: @ 0x080457E0 bx lr .align 2, 0 thumb_func_start sub_080457E4 sub_080457E4: @ 0x080457E4 push {r4, lr} adds r4, r0, #0 ldr r0, _08045850 @ =gTextBox ldrb r0, [r0] movs r2, #0x7f ands r2, r0 cmp r2, #0 bne _08045868 movs r3, #1 strb r3, [r4, #0xc] ldrb r1, [r4, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 strb r0, [r4, #0x18] adds r0, r4, #0 adds r0, #0x80 strb r2, [r0] adds r0, #1 strb r2, [r0] adds r0, #4 strb r2, [r0] strb r2, [r4, #0xf] adds r1, r4, #0 adds r1, #0x82 movs r0, #0x30 strb r0, [r1] adds r0, r4, #0 adds r0, #0x83 strb r2, [r0] ldrb r0, [r4, #0xa] cmp r0, #0 bne _08045854 adds r0, r4, #0 bl sub_08045A00 movs r0, #0x5a movs r1, #1 bl CreateEnemy adds r1, r0, #0 cmp r1, #0 beq _0804585A str r4, [r1, #0x50] str r1, [r4, #0x54] ldrb r0, [r4, #0xe] strb r0, [r1, #0xe] ldrb r0, [r4, #0xb] strb r0, [r1, #0xb] adds r0, r4, #0 bl CopyPosition b _0804585A .align 2, 0 _08045850: .4byte gTextBox _08045854: adds r0, r4, #0 adds r0, #0x63 strb r3, [r0] _0804585A: ldrb r1, [r4, #0xa] lsls r1, r1, #3 movs r0, #1 orrs r1, r0 adds r0, r4, #0 bl InitializeAnimation _08045868: pop {r4, pc} .align 2, 0 thumb_func_start sub_0804586C sub_0804586C: @ 0x0804586C push {r4, lr} adds r4, r0, #0 bl sub_08045A28 adds r1, r4, #0 adds r1, #0x82 ldrb r0, [r1] cmp r0, #0 bne _080458AA adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _080458C2 ldrb r0, [r4, #0xa] cmp r0, #0 beq _0804589A ldrb r1, [r4, #0x10] movs r0, #0x80 orrs r0, r1 strb r0, [r4, #0x10] _0804589A: movs r0, #2 strb r0, [r4, #0xc] ldrb r1, [r4, #0xa] lsls r1, r1, #3 adds r0, r4, #0 bl InitializeAnimation b _080458C2 _080458AA: subs r0, #1 strb r0, [r1] lsls r0, r0, #0x18 cmp r0, #0 bne _080458C2 ldrb r0, [r4, #0x18] movs r1, #4 rsbs r1, r1, #0 ands r1, r0 movs r0, #1 orrs r1, r0 strb r1, [r4, #0x18] _080458C2: pop {r4, pc} thumb_func_start sub_080458C4 sub_080458C4: @ 0x080458C4 push {r4, r5, lr} adds r5, r0, #0 bl sub_08045A28 ldr r1, [r5, #0x50] ldrb r2, [r5, #0xa] cmp r2, #0 beq _080458D6 ldr r1, [r1, #0x50] _080458D6: ldrb r0, [r1, #0xc] cmp r0, #3 bne _08045934 adds r0, r1, #0 adds r0, #0x80 ldrb r0, [r0] cmp r0, #1 bne _08045934 movs r0, #0 movs r4, #4 strb r4, [r5, #0xc] strb r0, [r5, #0xf] cmp r2, #0 beq _08045934 ldrb r0, [r5, #0x10] movs r1, #0x7f ands r1, r0 strb r1, [r5, #0x10] ldrb r0, [r5, #0xe] cmp r0, #0 beq _0804591C ldrb r1, [r5, #0xa] lsls r1, r1, #3 movs r4, #5 orrs r1, r4 adds r0, r5, #0 bl InitializeAnimation ldr r0, [r5, #0x50] ldrb r1, [r0, #0xa] lsls r1, r1, #3 orrs r1, r4 bl InitializeAnimation b _08045934 _0804591C: ldrb r1, [r5, #0xa] lsls r1, r1, #3 orrs r1, r4 adds r0, r5, #0 bl InitializeAnimation ldr r0, [r5, #0x50] ldrb r1, [r0, #0xa] lsls r1, r1, #3 orrs r1, r4 bl InitializeAnimation _08045934: pop {r4, r5, pc} .align 2, 0 thumb_func_start sub_08045938 sub_08045938: @ 0x08045938 push {r4, lr} adds r4, r0, #0 bl sub_08045A28 adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _08045980 movs r0, #2 strb r0, [r4, #0xc] ldrb r0, [r4, #0xa] cmp r0, #0 beq _08045980 ldrb r0, [r4, #0xe] cmp r0, #0 bne _08045966 adds r1, r4, #0 adds r1, #0x3f movs r0, #0x32 b _0804597E _08045966: ldr r0, [r4, #0x50] ldr r2, [r0, #0x50] adds r2, #0x76 movs r0, #1 ldrb r1, [r4, #0xb] lsls r0, r1 ldrb r1, [r2] orrs r0, r1 strb r0, [r2] adds r1, r4, #0 adds r1, #0x3f movs r0, #0x31 _0804597E: strb r0, [r1] _08045980: pop {r4, pc} .align 2, 0 thumb_func_start sub_08045984 sub_08045984: @ 0x08045984 push {r4, lr} adds r4, r0, #0 bl sub_08045A28 ldrb r0, [r4, #0xf] cmp r0, #0 bne _080459A6 adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _080459FE movs r0, #0x20 strb r0, [r4, #0xf] b _080459FE _080459A6: ldr r2, [r4, #0x50] ldrb r0, [r4, #0xa] cmp r0, #0 beq _080459B0 ldr r2, [r2, #0x50] _080459B0: ldrb r0, [r2, #0x14] cmp r0, #2 bhi _080459FE ldrb r0, [r2, #0xc] cmp r0, #3 beq _080459FE movs r0, #0 movs r3, #1 strb r3, [r4, #0xc] strb r0, [r4, #0xf] adds r1, r4, #0 adds r1, #0x81 strb r0, [r1] adds r1, #4 strb r0, [r1] ldrb r0, [r4, #0xa] cmp r0, #0 beq _080459DA subs r1, #0x46 movs r0, #0x33 strb r0, [r1] _080459DA: adds r0, r2, #0 adds r0, #0x75 ldrb r0, [r0] ldrb r1, [r4, #0xb] asrs r0, r1 ands r0, r3 cmp r0, #0 beq _080459EE strb r3, [r4, #0xe] b _080459F0 _080459EE: strb r0, [r4, #0xe] _080459F0: ldrb r1, [r4, #0xa] lsls r1, r1, #3 movs r0, #1 orrs r1, r0 adds r0, r4, #0 bl InitializeAnimation _080459FE: pop {r4, pc} thumb_func_start sub_08045A00 sub_08045A00: @ 0x08045A00 push {lr} adds r1, r0, #0 ldrb r3, [r1, #0xb] lsls r3, r3, #1 ldr r0, _08045A24 @ =gUnk_080D18B4 adds r3, r3, r0 ldr r0, [r1, #0x50] movs r2, #0 ldrsb r2, [r3, r2] lsls r2, r2, #0x10 ldrb r3, [r3, #1] lsls r3, r3, #0x18 asrs r3, r3, #0x18 adds r3, #3 lsls r3, r3, #0x10 bl PositionRelative pop {pc} .align 2, 0 _08045A24: .4byte gUnk_080D18B4 thumb_func_start sub_08045A28 sub_08045A28: @ 0x08045A28 push {r4, r5, r6, r7, lr} mov r7, r8 push {r7} adds r5, r0, #0 adds r0, #0x82 ldrb r0, [r0] cmp r0, #0 bne _08045A3E adds r0, r5, #0 bl GetNextFrame _08045A3E: adds r6, r5, #0 adds r6, #0x5a ldrb r0, [r6] movs r1, #0x70 mov r8, r1 mov r4, r8 ands r4, r0 ldrb r7, [r5, #0xa] cmp r7, #0 bne _08045AF8 adds r0, r5, #0 bl sub_08045A00 adds r1, r5, #0 adds r1, #0x83 ldrb r0, [r1] adds r2, r1, #0 cmp r0, #1 beq _08045AA4 cmp r0, #1 bgt _08045A6E cmp r0, #0 beq _08045A78 b _08045B7C _08045A6E: cmp r0, #2 beq _08045ABC cmp r0, #3 beq _08045AE8 b _08045B7C _08045A78: cmp r4, #0x20 beq _08045A8C cmp r4, #0x20 bhi _08045A86 cmp r4, #0 beq _08045A96 b _08045B7C _08045A86: cmp r4, #0x40 beq _08045A96 b _08045B7C _08045A8C: movs r0, #1 strb r0, [r1] movs r1, #0x9f lsls r1, r1, #1 b _08045B5A _08045A96: movs r0, #2 strb r0, [r2] ldr r1, _08045AA0 @ =0x0000013F b _08045B5A .align 2, 0 _08045AA0: .4byte 0x0000013F _08045AA4: cmp r4, #0 beq _08045AB0 cmp r4, #0x10 bne _08045B7C strb r7, [r1] b _08045B58 _08045AB0: movs r0, #2 strb r0, [r1] ldr r1, _08045AB8 @ =0x0000013F b _08045B5A .align 2, 0 _08045AB8: .4byte 0x0000013F _08045ABC: cmp r4, #0x20 beq _08045AD0 cmp r4, #0x20 bhi _08045ACA cmp r4, #0x10 beq _08045ADA b _08045B7C _08045ACA: cmp r4, #0x40 beq _08045ADE b _08045B7C _08045AD0: movs r0, #1 strb r0, [r1] movs r1, #0x9f lsls r1, r1, #1 b _08045B5A _08045ADA: strb r7, [r1] b _08045B58 _08045ADE: strb r0, [r1] ldr r1, _08045AE4 @ =0x0000013F b _08045B5A .align 2, 0 _08045AE4: .4byte 0x0000013F _08045AE8: cmp r4, #0 bne _08045B7C movs r0, #2 strb r0, [r1] ldr r1, _08045AF4 @ =0x0000013F b _08045B5A .align 2, 0 _08045AF4: .4byte 0x0000013F _08045AF8: ldr r0, [r5, #0x50] ldr r3, _08045B18 @ =0xFFFF0000 adds r1, r5, #0 movs r2, #0 bl PositionRelative adds r2, r5, #0 adds r2, #0x83 ldrb r0, [r2] cmp r0, #1 beq _08045B3A cmp r0, #1 bgt _08045B1C cmp r0, #0 beq _08045B22 b _08045B7C .align 2, 0 _08045B18: .4byte 0xFFFF0000 _08045B1C: cmp r0, #2 beq _08045B68 b _08045B7C _08045B22: ldrb r0, [r6] mov r1, r8 ands r1, r0 cmp r1, #0x10 beq _08045B54 cmp r1, #0x20 bne _08045B7C movs r0, #1 strb r0, [r2] movs r1, #0x9f lsls r1, r1, #1 b _08045B5A _08045B3A: ldrb r0, [r6] mov r1, r8 ands r1, r0 cmp r1, #0 beq _08045B4A cmp r1, #0x10 beq _08045B54 b _08045B7C _08045B4A: strb r1, [r2] ldr r1, _08045B50 @ =0x0000013F b _08045B5A .align 2, 0 _08045B50: .4byte 0x0000013F _08045B54: movs r0, #2 strb r0, [r2] _08045B58: ldr r1, _08045B64 @ =0x0000013B _08045B5A: adds r0, r5, #0 bl sub_0801D2B4 b _08045B7C .align 2, 0 _08045B64: .4byte 0x0000013B _08045B68: ldrb r0, [r6] mov r1, r8 ands r1, r0 cmp r1, #0 bne _08045B7C strb r1, [r2] ldr r1, _08045B84 @ =0x0000013F adds r0, r5, #0 bl sub_0801D2B4 _08045B7C: pop {r3} mov r8, r3 pop {r4, r5, r6, r7, pc} .align 2, 0 _08045B84: .4byte 0x0000013F