// File: /workspace/github_c_makefile_star2_O3/jrrk[P]cbzone/c_move.c
// Function: movemissile
void movemissile(g, pl, first)
     Genericp g;
     Genericp pl;
     Bool first;
{
  float dx, dy, tazm, t1, t3, dt1, t2;

  if (g->attr & IS_NEW) {
    g->ecount = 0;
    g->pcount = 0;
    g->attr &= ~IS_NEW;
  }

  g->rotate = 0.0;
  g->pcount++;
  g->z -= 25.0;
  if (g->z <= 0.0)
    g->z = 0.0;
  if (g->attr & IS_BLOCKED)
    g->z = 90.0;
  g->speed = 35.0;
  if (g->z > 91.0)
    g->speed = 0.0;
  if (g->pcount >= 12) {
    g->pcount = 0;
    if (g->proy > 60.0) {
      dx = pl->x - g->x;
      dy = pl->y - g->y;
      if (fabs(dy) < 1.e-7)
        dy = sign(1.e-7, dy);
      if (dy <= 0.0)
        tazm = - atan(dx / dy) + ra (180.0);
      else
        tazm = - atan(dx / dy);
      if (g->azm > PI2)
        g->azm -= PI2;
      if (g->azm < 0.0)
        g->azm += PI2;
      t1 = (tazm - g->azm);
      t3 = (tazm - (g->azm - PI2));
      if (fabs(t3) < fabs(t1))
        t1 = t3;
      if (!first) {
        dt1 = frand() * 0.5;
        dt1 = sign (dt1, t1);
        if (frand() > 0.8)
          dt1 = - dt1;
        t1 += dt1;
      }
      if (fabs(t1) > 0.90)
        t1 = sign (0.90, t1);
      g->rotate = t1;
    }
    else {
      tazm = pl->azm - PI;
      if (tazm < 0.0)
        tazm += PI2;
      if (tazm > PI2)
        tazm -= PI2;
      if (g->azm < 0.0)
        g->azm += PI2;
      if (g->azm > PI2)
        g->azm -= PI2;
      t1 = (tazm - g->azm);
      t2 = (tazm - (g->azm - PI2));
      if (fabs(t2) < fabs(t1))
        t1 = t2;
      if (fabs(t1) > 0.90)
        t1 = sign (0.90, t1);
      g->rotate = t1;
    }
  }
}

// Assembly:
pushq %rbp
pushq %rbx
subq $0x28, %rsp
movl %edx, %ebp
movq %rdi, %rbx
movl 0x8(%rdi), %ecx
testb $0x2, %cl
jne 0xbe00
movl 0x4c(%rbx), %eax
jmp 0xbe0f
movl $0x0, 0x44(%rbx)
andl $-0x3, %ecx
movl %ecx, 0x8(%rbx)
xorl %eax, %eax
movl $0x0, 0x30(%rbx)
leal 0x1(%rax), %edx
movl %edx, 0x4c(%rbx)
testl $0x600, %ecx            # imm = 0x600
je 0xbe2e
movss 0x2f5c(%rip), %xmm0     # 0xed88
jmp 0xbe49
movss 0x14(%rbx), %xmm1
addss 0x2f49(%rip), %xmm1     # 0xed84
xorps %xmm2, %xmm2
movaps %xmm1, %xmm0
cmpless %xmm2, %xmm0
andnps %xmm1, %xmm0
movss %xmm0, 0x14(%rbx)
movss 0x2f36(%rip), %xmm1     # 0xed8c
cmpltss %xmm0, %xmm1
movss 0x2f2d(%rip), %xmm0     # 0xed90
andnps %xmm0, %xmm1
movss %xmm1, 0x2c(%rbx)
cmpl $0xb, %eax
jl 0xc158
movl $0x0, 0x4c(%rbx)
movss 0x1c(%rbx), %xmm0
ucomiss 0x2d01(%rip), %xmm0     # 0xeb88
jbe 0xc027
movss 0xc(%rsi), %xmm0
movss 0x10(%rsi), %xmm3
subss 0xc(%rbx), %xmm0
subss 0x10(%rbx), %xmm3
xorps %xmm1, %xmm1
xorl %eax, %eax
ucomiss %xmm3, %xmm1
seta %cl
movaps 0x219d(%rip), %xmm1     # 0xe050
andps %xmm3, %xmm1
cvtss2sd %xmm1, %xmm1
movsd 0x2e26(%rip), %xmm2     # 0xece8
ucomisd %xmm1, %xmm2
jbe 0xbed6
movb %cl, %al
leaq 0x2e1f(%rip), %rcx      # 0xecf0
movss (%rcx,%rax,4), %xmm3
movaps %xmm3, (%rsp)
divss %xmm3, %xmm0
cvtss2sd %xmm0, %xmm0
callq 0x4270
movaps (%rsp), %xmm2
movsd 0x2e05(%rip), %xmm1     # 0xecf8
subsd %xmm0, %xmm1
cvtsd2ss %xmm1, %xmm1
cvtsd2ss %xmm0, %xmm0
xorps 0x210a(%rip), %xmm0     # 0xe010
cmpnless 0x2e71(%rip), %xmm2     # 0xed80
andps %xmm2, %xmm0
andnps %xmm1, %xmm2
orps %xmm0, %xmm2
movss 0x20(%rbx), %xmm0
xorps %xmm1, %xmm1
cvtss2sd %xmm0, %xmm1
ucomisd 0x2c04(%rip), %xmm1     # 0xeb30
jbe 0xbf42
addsd 0x2c02(%rip), %xmm1     # 0xeb38
xorps %xmm0, %xmm0
cvtsd2ss %xmm1, %xmm0
movss %xmm0, 0x20(%rbx)
xorps %xmm1, %xmm1
ucomiss %xmm0, %xmm1
jbe 0xbf5f
cvtss2sd %xmm0, %xmm0
addsd 0x2bda(%rip), %xmm0     # 0xeb30
cvtsd2ss %xmm0, %xmm0
movss %xmm0, 0x20(%rbx)
xorps %xmm1, %xmm1
cvtss2sd %xmm2, %xmm1
subss %xmm0, %xmm2
cvtss2sd %xmm0, %xmm0
addsd 0x2bc2(%rip), %xmm0     # 0xeb38
subsd %xmm0, %xmm1
xorps %xmm0, %xmm0
cvtsd2ss %xmm1, %xmm0
movaps 0x20c8(%rip), %xmm1     # 0xe050
movaps %xmm0, %xmm3
andps %xmm1, %xmm3
andps %xmm2, %xmm1
cmpltss %xmm1, %xmm3
andps %xmm3, %xmm0
andnps %xmm2, %xmm3
orps %xmm0, %xmm3
testl %ebp, %ebp
jne 0xc122
movaps %xmm3, (%rsp)
callq 0x4510
movl $0xffff, %ebp           # imm = 0xFFFF
andl %ebp, %eax
xorps %xmm0, %xmm0
cvtsi2sd %eax, %xmm0
divsd 0x20aa(%rip), %xmm0     # 0xe070
mulsd 0x2cba(%rip), %xmm0     # 0xec88
xorps %xmm2, %xmm2
cvtsd2ss %xmm0, %xmm2
xorps %xmm0, %xmm0
movaps (%rsp), %xmm1
cmpltss %xmm0, %xmm1
movaps %xmm1, %xmm0
andnps %xmm2, %xmm0
xorps 0x2022(%rip), %xmm2     # 0xe010
andps %xmm1, %xmm2
orps %xmm0, %xmm2
movaps %xmm2, 0x10(%rsp)
callq 0x4510
andl %ebp, %eax
xorps %xmm0, %xmm0
cvtsi2sd %eax, %xmm0
divsd 0x2061(%rip), %xmm0     # 0xe070
ucomisd 0x2d09(%rip), %xmm0     # 0xed20
ja 0xc10e
movaps 0x10(%rsp), %xmm0
jmp 0xc11a
xorps %xmm0, %xmm0
cvtss2sd 0x20(%rsi), %xmm0
addsd 0x2c61(%rip), %xmm0     # 0xec98
xorps %xmm1, %xmm1
cvtsd2ss %xmm0, %xmm1
xorps %xmm0, %xmm0
cvtss2sd %xmm1, %xmm0
movsd 0x2ae3(%rip), %xmm3     # 0xeb30
addsd %xmm3, %xmm0
cvtsd2ss %xmm0, %xmm4
xorps %xmm2, %xmm2
movaps %xmm1, %xmm0
cmpltss %xmm2, %xmm0
andps %xmm0, %xmm4
andnps %xmm1, %xmm0
orps %xmm4, %xmm0
xorps %xmm1, %xmm1
cvtss2sd %xmm0, %xmm1
ucomisd %xmm3, %xmm1
jbe 0xc085
addsd 0x2aba(%rip), %xmm1     # 0xeb38
xorps %xmm0, %xmm0
cvtsd2ss %xmm1, %xmm0
movss 0x20(%rbx), %xmm1
ucomiss %xmm1, %xmm2
jbe 0xc0a4
cvtss2sd %xmm1, %xmm1
addsd 0x2a95(%rip), %xmm1     # 0xeb30
cvtsd2ss %xmm1, %xmm1
movss %xmm1, 0x20(%rbx)
xorps %xmm2, %xmm2
cvtss2sd %xmm1, %xmm2
ucomisd 0x2a7d(%rip), %xmm2     # 0xeb30
jbe 0xc0d0
addsd 0x2a7b(%rip), %xmm2     # 0xeb38
xorps %xmm1, %xmm1
cvtsd2ss %xmm2, %xmm1
movss %xmm1, 0x20(%rbx)
xorps %xmm2, %xmm2
cvtss2sd %xmm1, %xmm2
xorps %xmm3, %xmm3
cvtss2sd %xmm0, %xmm3
addsd 0x2a59(%rip), %xmm2     # 0xeb38
subss %xmm1, %xmm0
subsd %xmm2, %xmm3
xorps %xmm1, %xmm1
cvtsd2ss %xmm3, %xmm1
movaps 0x1f5b(%rip), %xmm2     # 0xe050
movaps %xmm1, %xmm3
andps %xmm2, %xmm3
andps %xmm0, %xmm2
cmpltss %xmm2, %xmm3
andps %xmm3, %xmm1
andnps %xmm0, %xmm3
orps %xmm1, %xmm3
jmp 0xc122
movaps 0x10(%rsp), %xmm0
xorps 0x1ef6(%rip), %xmm0     # 0xe010
movaps (%rsp), %xmm3
addss %xmm0, %xmm3
xorps %xmm0, %xmm0
xorl %eax, %eax
ucomiss %xmm3, %xmm0
seta %cl
movaps 0x1f1c(%rip), %xmm0     # 0xe050
andps %xmm3, %xmm0
cvtss2sd %xmm0, %xmm0
ucomisd 0x2be5(%rip), %xmm0     # 0xed28
jbe 0xc153
movb %cl, %al
leaq 0x2be2(%rip), %rcx      # 0xed30
movss (%rcx,%rax,4), %xmm3
movss %xmm3, 0x30(%rbx)
addq $0x28, %rsp
popq %rbx
popq %rbp
retq