;;; Arachnus_FinishedWalking ;;;
080241B0 (T) push r4,r5,r14
080241B2 (T) ldr r5,=EnemyOrientation ;\
080241B4 (T) mov r4,r5 ;|
080241B6 (T) add r4,2Eh ;|
080241B8 (T) ldrb r0,[r4] ;} If EnemyRespawnTimer != 0:
080241BA (T) cmp r0,0h ;|
080241BC (T) beq 80241D4h ;/
080241BE (T) cmp r0,0FFh ;\
080241C0 (T) bne 80241C6h ;} If EnemyRespawnTimer == FFh:
080241C2 (T) bl 80239E0h ; Execute subroutine Arachnus_SetSlash
080241C6 (T) ldrb r0,[r4] ;\
080241C8 (T) sub r0,1h ;} Decrement EnemyRespawnTimer
080241CA (T) strb r0,[r4] ;/
080241CC (T) b 8024234h ; Return
080241CE dw 00000h
080241D0 dd 0030006BCh
080241D4 (T) ldrh r1,[r5] ;\ Else (EnemyRespawnTimer == 0):
080241D6 (T) mov r0,80h ;|
080241D8 (T) lsl r0,r0,3h ;|
080241DA (T) and r0,r1 ;} If EnemyOrientation has 400h (shot):
080241DC (T) cmp r0,0h ;|
080241DE (T) beq 80241FCh ;/
080241E0 (T) mov r0,1Ah ; r0 parameter = 1Ah (flame projectile EnemyID)
080241E2 (T) bl 8012858h ; Execute subroutine 8012858h (count number of specific flame projectiles)
080241E6 (T) cmp r0,0h ;\
080241E8 (T) bne 8024204h ;|
080241EA (T) ldrh r1,[r5] ;|
080241EC (T) mov r0,80h ;|
080241EE (T) lsl r0,r0,4h ;} If returned 0 and EnemyOrientation hasn't 800h (not flaming):
080241F0 (T) and r0,r1 ;|
080241F2 (T) cmp r0,0h ;|
080241F4 (T) bne 8024204h ;/
080241F6 (T) bl 8023854h ; Execute subroutine Arachnus_SetFlame
080241FA (T) b 8024234h ; Return
; Else (EnemyOrientation hasn't 400h):
080241FC (T) bl 80127BCh ; Execute subroutine Samus_IsHangingOnLedge
08024200 (T) cmp r0,0h ;\
08024202 (T) beq 802420Ah ;} If not returned 0 (Samus is hanging on ledge):
; Also branched from 80241F4h if 8012858h didn't return 0 or EnemyOrientation has 800h
08024204 (T) bl 8023950h ; Execute subroutine Arachnus_SetRoll
08024208 (T) b 8024234h ; Return
; Else (Samus_IsHangingOnLedge returned 0):
0802420A (T) mov r2,0C0h ;\
0802420C (T) lsl r2,r2,1h ;} r1 and r2 parameters = 180h
0802420E (T) mov r0,0C0h ; r0 parameter = C0h
08024210 (T) mov r1,r2 ;/
08024212 (T) bl 8011BE4h ; Execute subroutine Enemy_WithinRange
08024216 (T) cmp r0,3h ;\
08024218 (T) bne 8024220h ;} If returned 3 (in front range):
0802421A (T) bl 80239E0h ; Execute subroutine Arachnus_SetSlash
0802421E (T) b 8024234h ; Return
08024220 (T) mov r2,80h ;\
08024222 (T) lsl r2,r2,2h ;} r1 and r2 parameters = 100h
08024224 (T) mov r0,0C0h ; r0 parameter = C0h
08024226 (T) mov r1,r2 ;/
08024228 (T) bl 8011BE4h ; Execute subroutine Enemy_WithinRange
0802422C (T) cmp r0,3h ;\
0802422E (T) bne 8024234h ;} If returned 3 (in front range):
08024230 (T) bl 8023950h ; Execute subroutine Arachnus_SetRoll
08024234 (T) pop r4,r5
08024236 (T) pop r0
08024238 (T) bx r0