;;; 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