;;; Arachnus_Dying ;;;
08023E7C (T)  push    r4,r5,r14
08023E7E (T)  ldr     r2,=300120Ch              ;\
08023E80 (T)  ldr     r1,=83BDED6h              ;|
08023E82 (T)  ldr     r3,=EnemyOrientation      ;|
08023E84 (T)  ldrh    r0,[r3,6h]                ;|
08023E86 (T)  lsl     r0,r0,1h                  ;} MOSAIC = 83BDED6[EnemyYPositionSpawn]
08023E88 (T)  add     r0,r0,r1                  ;|
08023E8A (T)  ldrh    r0,[r0]                   ;|
08023E8C (T)  strh    r0,[r2]                   ;/
08023E8E (T)  ldrh    r0,[r3,6h]                ;\
08023E90 (T)  sub     r0,1h                     ;} --EnemyYPositionSpawn
08023E92 (T)  strh    r0,[r3,6h]                ;/
08023E94 (T)  ldrh    r0,[r3,2h]                ;\
08023E96 (T)  sub     r0,0A0h                   ;|
08023E98 (T)  lsl     r0,r0,10h                 ;} r5 = EnemyYPosition - A0h
08023E9A (T)  lsr     r5,r0,10h                 ;/
08023E9C (T)  ldrh    r4,[r3,4h]                ; r4 = EnemyXPosition
08023E9E (T)  ldrh    r0,[r3,8h]                ;\
08023EA0 (T)  mov     r2,r3                     ;|
08023EA2 (T)  cmp     r0,0h                     ;} If EnemyXPositionSpawn == 0:
08023EA4 (T)  bne     8023EA8h                  ;/
08023EA6 (T)  b       8023FB4h                  ; Branch to 8023FB4h

08023EA8 (T)  ldrh    r0,[r3,6h]                ;\
08023EAA (T)  cmp     r0,28h                    ;} If EnemyYPositionSpawn > 28h:
08023EAC (T)  bls     8023EB0h                  ;/
08023EAE (T)  b       802410Ch                  ; Return

08023EB0 (T)  lsl     r0,r0,2h                  ;\
08023EB2 (T)  ldr     r1,=8023ECCh              ;|
08023EB4 (T)  add     r0,r0,r1                  ;} Branch to code that handles the current EnemyYPositionSpawn
08023EB6 (T)  ldr     r0,[r0]                   ;|
08023EB8 (T)  mov     r15,r0                    ;/
08023EBA      dw      00000h
08023EBC      dd      00300120Ch,0083BDED6h,0030006BCh,008023ECCh
08023ECC      dd      008023FAAh,00802410Ch,00802410Ch,00802410Ch
08023EDC      dd      00802410Ch,00802410Ch,00802410Ch,00802410Ch
08023EEC      dd      00802410Ch,00802410Ch,008023F9Ah,00802410Ch
08023EFC      dd      00802410Ch,00802410Ch,00802410Ch,00802410Ch
08023F0C      dd      00802410Ch,00802410Ch,00802410Ch,00802410Ch
08023F1C      dd      008023F8Ah,00802410Ch,00802410Ch,00802410Ch
08023F2C      dd      00802410Ch,00802410Ch,00802410Ch,00802410Ch
08023F3C      dd      00802410Ch,00802410Ch,008023F84h,00802410Ch
08023F4C      dd      00802410Ch,00802410Ch,00802410Ch,00802410Ch
08023F5C      dd      00802410Ch,00802410Ch,00802410Ch,00802410Ch
08023F6C      dd      008023F70h

; 28h
08023F70 (T)  mov     r0,r5                     ;\
08023F72 (T)  sub     r0,10h                    ;} r0 parameter = EnemyYPosition - B0h
08023F74 (T)  mov     r1,r4                     ; r1 parameter = EnemyXPosition
08023F76 (T)  mov     r2,25h                    ; r2 parameter = 25h
08023F78 (T)  bl      80730E4h                  ; Execute subroutine 80730E4h
08023F7C (T)  mov     r0,r5                     ;\
08023F7E (T)  add     r0,10h                    ;} r0 parameter = EnemyYPosition - 90h
08023F80 (T)  mov     r1,r4                     ; r1 parameter = EnemyXPosition
08023F82 (T)  b       8023F92h                  ; Branch to 8023F92h

; 1Eh
08023F84 (T)  mov     r0,r5                     ;\
08023F86 (T)  sub     r0,20h                    ;} r0 parameter = EnemyYPosition - C0h
08023F88 (T)  b       8023F9Eh                  ; Branch to 8023F9Eh

; 14h
08023F8A (T)  mov     r0,r5                     ;\
08023F8C (T)  add     r0,40h                    ;} r0 parameter = EnemyYPosition - 60h
08023F8E (T)  mov     r1,r4                     ;\
08023F90 (T)  sub     r1,10h                    ;} r1 parameter = EnemyXPosition - 10h

; Also branched from 28h:
; r0 = EnemyYPosition - 90h
; r1 = EnemyXPosition
08023F92 (T)  mov     r2,26h                    ; r2 parameter = 26h
08023F94 (T)  bl      80730E4h                  ; Execute subroutine 80730E4h
08023F98 (T)  b       802410Ch                  ; Return

; 0Ah
08023F9A (T)  mov     r0,r5                     ;\
08023F9C (T)  sub     r0,40h                    ;} r0 parameter = EnemyYPosition - E0h

; Also branched from 1Eh:
; r0 = EnemyYPosition - C0h
08023F9E (T)  mov     r1,r4                     ;\
08023FA0 (T)  add     r1,1Ch                    ;} r1 parameter = EnemyXPosition + 1Ch
08023FA2 (T)  mov     r2,25h                    ; r2 parameter = 25h
08023FA4 (T)  bl      80730E4h                  ; Execute subroutine 80730E4h
08023FA8 (T)  b       802410Ch                  ; Return

; 00h
08023FAA (T)  mov     r0,0h                     ;\
08023FAC (T)  strh    r0,[r2,8h]                ;} EnemyXPositionSpawn = 0
08023FAE (T)  mov     r0,2Ch                    ;\
08023FB0 (T)  strh    r0,[r2,6h]                ;} EnemyYPosition spawn = 2Ch
08023FB2 (T)  b       802410Ch                  ; Return

; EnemyXPositionSpawn == 0
08023FB4 (T)  ldrh    r0,[r3,6h]                ;\
08023FB6 (T)  cmp     r0,28h                    ;|
08023FB8 (T)  bls     8023FBCh                  ;|
08023FBA (T)  b       80240DEh                  ;|
                                                ;|
08023FBC (T)  lsl     r0,r0,2h                  ;} Branch to code that handles the current EnemyYPositionSpawn
08023FBE (T)  ldr     r1,=8023FCCh              ;|
08023FC0 (T)  add     r0,r0,r1                  ;|
08023FC2 (T)  ldr     r0,[r0]                   ;|
08023FC4 (T)  mov     r15,r0                    ;/
08023FC6      dw      00000h
08023FC8      dd      008023FCCh,0080240CEh,0080240DEh,0080240DEh
08023FD8      dd      0080240DEh,0080240DEh,0080240DEh,0080240DEh
08023FE8      dd      0080240DEh,0080240DEh,0080240DEh,0080240B0h
08023FF8      dd      0080240DEh,0080240DEh,0080240DEh,0080240DEh
08024008      dd      0080240DEh,0080240DEh,0080240DEh,0080240DEh
08024018      dd      0080240DEh,00802409Ah,0080240DEh,0080240DEh
08024028      dd      0080240DEh,0080240DEh,0080240DEh,0080240DEh
08024038      dd      0080240DEh,0080240DEh,0080240DEh,008024086h
08024048      dd      0080240DEh,0080240DEh,0080240DEh,0080240DEh
08024058      dd      0080240DEh,0080240DEh,0080240DEh,0080240DEh
08024068      dd      0080240DEh,008024070h

; 28h
08024070 (T)  mov     r0,r5                     ;\
08024072 (T)  sub     r0,40h                    ;} r0 parameter = EnemyYPosition - E0h
08024074 (T)  sub     r4,10h                    ;\
08024076 (T)  mov     r1,r4                     ;} r1 parameter = EnemyXPosition - 10h
08024078 (T)  mov     r2,26h                    ; r2 parameter = 26h
0802407A (T)  bl      80730E4h                  ; Execute subroutine 80730E4h
0802407E (T)  mov     r0,r5                     ;\
08024080 (T)  add     r0,20h                    ;} r0 parameter = EnemyYPosition - 80h
08024082 (T)  mov     r1,r4                     ; r1 parameter = EnemyXPosition - 10h
08024084 (T)  b       80240C6h                  ; Branch to 80240C6h

; 1Eh
08024086 (T)  mov     r0,r5                     ;\
08024088 (T)  sub     r0,20h                    ;} r0 parameter = EnemyYPosition - C0h
0802408A (T)  mov     r1,r4                     ;\
0802408C (T)  add     r1,1Ch                    ;} r1 parameter = EnemyXPosition + 1Ch
0802408E (T)  mov     r2,26h                    ; r2 parameter = 26h
08024090 (T)  bl      80730E4h                  ; Execute subroutine 80730E4h
08024094 (T)  mov     r0,r5                     ;\
08024096 (T)  add     r0,40h                    ;} r0 parameter = EnemyYPosition - 60h
08024098 (T)  b       80240C2h                  ; Branch to 80240C2h

; 14h
0802409A (T)  mov     r0,r5                     ;\
0802409C (T)  sub     r0,20h                    ;} r0 parameter = EnemyYPosition - C0h
0802409E (T)  sub     r4,10h                    ;\
080240A0 (T)  mov     r1,r4                     ;} r1 parameter = EnemyXPosition - 10h
080240A2 (T)  mov     r2,26h                    ; r2 parameter = 26h
080240A4 (T)  bl      80730E4h                  ; Execute subroutine 80730E4h
080240A8 (T)  mov     r0,r5                     ;\
080240AA (T)  add     r0,40h                    ;} r0 parameter = EnemyYPosition - 60h
080240AC (T)  mov     r1,r4                     ; r1 parameter = EnemyXPosition - 10h
080240AE (T)  b       80240C6h                  ; Branch to 80240C6h

; 0Ah
080240B0 (T)  mov     r0,r5                     ;\
080240B2 (T)  sub     r0,40h                    ;} r0 parameter = EnemyYPosition - E0h
080240B4 (T)  mov     r1,r4                     ;\
080240B6 (T)  add     r1,1Ch                    ;} r1 parameter = EnemyXPosition + 1Ch
080240B8 (T)  mov     r2,26h                    ; r2 parameter = 26h
080240BA (T)  bl      80730E4h                  ; Execute subroutine 80730E4h
080240BE (T)  mov     r0,r5                     ;\
080240C0 (T)  add     r0,20h                    ;} r0 parameter = EnemyYPosition - 80h

; Also branch from 1Eh:
; r0 parameter = EnemyYPosition - 60h
080240C2 (T)  mov     r1,r4                     ;\
080240C4 (T)  add     r1,20h                    ;} r1 parameter = EnemyXPosition + 20h

; Also branched from 28h:
; r0 = EnemyYPosition - 80h
; r1 = EnemyXPosition - 10h
; and 14h:
; r0 = EnemyYPosition - 60h
; r1 = EnemyXPosition - 10h
080240C6 (T)  mov     r2,25h                    ; r2 parameter = 25h
080240C8 (T)  bl      80730E4h                  ; Execute subroutine 80730E4h
080240CC (T)  b       80240DEh                  ; Branch to 80240DEh

; 00h
080240CE (T)  ldr     r2,=EnemyOrientation      ;\
080240D0 (T)  mov     r1,r2                     ;|
080240D2 (T)  add     r1,24h                    ;} Enemy pose = 59h (start to be born)
080240D4 (T)  mov     r0,59h                    ;|
080240D6 (T)  strb    r0,[r1]                   ;/
080240D8 (T)  ldr     r0,=30006ADh              ;\
080240DA (T)  ldrb    r0,[r0]                   ;} Enemy ID = [30006AD]
080240DC (T)  strb    r0,[r2,1Dh]               ;/

; Execution continues here after all enemy y position spawn specific code is executed
080240DE (T)  ldr     r1,=EnemyOrientation      ;\
080240E0 (T)  ldrh    r0,[r1,6h]                ;|
080240E2 (T)  cmp     r0,13h                    ;} If enemy Y position spawn <= 13h:
080240E4 (T)  bhi     80240FCh                  ;/
080240E6 (T)  ldr     r0,=30006ADh              ;\
080240E8 (T)  ldrb    r0,[r0]                   ;} r0 parameter = [30006AD]
080240EA (T)  ldrh    r2,[r1,6h]                ; r2 = enemy ID
080240EC (T)  mov     r1,0h                     ; r1 parameter = 0
080240EE (T)  bl      800F8ACh                  ; Execute subroutine 800F8ACh
080240F2 (T)  b       802410Ch                  ; Return
080240F4      dd      0030006BCh,0030006ADh

080240FC (T)  cmp     r0,14h                    ;\
080240FE (T)  bne     802410Ch                  ;} If enemy Y position spawn != 14h: return
08024100 (T)  ldr     r0,=30006ADh              ;\
08024102 (T)  ldrb    r0,[r0]                   ;} r0 parameter = [30006AD]
08024104 (T)  mov     r1,0h                     ; r1 parameter = 0
08024106 (T)  mov     r2,5h                     ; r2 parameter = 5
08024108 (T)  bl      800F8F0h                  ; Execute subroutine 800F8F0h

0802410C (T)  pop     r4,r5
0802410E (T)  pop     r0
08024110 (T)  bx      r0
08024112      dw      00000h
08024114      dd      0030006ADh