// File: /workspace/github_c_makefile_star2_O1/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), %eax
testb $0x2, %al
je 0xbd58
xorl %ecx, %ecx
movl %ecx, 0x44(%rbx)
movl %ecx, 0x4c(%rbx)
andl $-0x3, %eax
movl %eax, 0x8(%rbx)
movl $0x0, 0x30(%rbx)
movl 0x4c(%rbx), %eax
leal 0x1(%rax), %ecx
movl %ecx, 0x4c(%rbx)
testl $0x600, 0x8(%rbx)       # imm = 0x600
je 0xbd7b
movss 0x2ebb(%rip), %xmm0     # 0xec34
jmp 0xbd96
movss 0x14(%rbx), %xmm1
addss 0x2ea8(%rip), %xmm1     # 0xec30
xorps %xmm2, %xmm2
movaps %xmm1, %xmm0
cmpless %xmm2, %xmm0
andnps %xmm1, %xmm0
movss %xmm0, 0x14(%rbx)
movss 0x2e95(%rip), %xmm1     # 0xec38
cmpltss %xmm0, %xmm1
movss 0x2e8c(%rip), %xmm0     # 0xec3c
andnps %xmm0, %xmm1
movss %xmm1, 0x2c(%rbx)
cmpl $0xb, %eax
jl 0xc0b1
movl $0x0, 0x4c(%rbx)
movss 0x1c(%rbx), %xmm0
ucomiss 0x2ca0(%rip), %xmm0     # 0xea74
jbe 0xbf7a
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 0x2240(%rip), %xmm1     # 0xe040
andps %xmm3, %xmm1
cvtss2sd %xmm1, %xmm1
movsd 0x2d81(%rip), %xmm2     # 0xeb90
ucomisd %xmm1, %xmm2
jbe 0xbe23
movb %cl, %al
leaq 0x2d7a(%rip), %rcx      # 0xeb98
movss (%rcx,%rax,4), %xmm3
movaps %xmm3, (%rsp)
divss %xmm3, %xmm0
cvtss2sd %xmm0, %xmm0
callq 0x4270
movaps (%rsp), %xmm4
movsd 0x2d60(%rip), %xmm1     # 0xeba0
subsd %xmm0, %xmm1
cvtsd2ss %xmm1, %xmm1
xorps %xmm2, %xmm2
cvtsd2ss %xmm0, %xmm2
xorps 0x21ca(%rip), %xmm2     # 0xe020
cmpnless 0x2dcd(%rip), %xmm4     # 0xec2c
andps %xmm4, %xmm2
andnps %xmm1, %xmm4
xorps %xmm0, %xmm0
cvtss2sd 0x20(%rbx), %xmm0
orps %xmm2, %xmm4
ucomisd 0x2ba8(%rip), %xmm0     # 0xea20
jbe 0xbe8b
addsd 0x2ba6(%rip), %xmm0     # 0xea28
cvtsd2ss %xmm0, %xmm0
movss %xmm0, 0x20(%rbx)
movss 0x20(%rbx), %xmm0
xorps %xmm1, %xmm1
ucomiss %xmm0, %xmm1
jbe 0xbead
cvtss2sd %xmm0, %xmm0
addsd 0x2b7c(%rip), %xmm0     # 0xea20
cvtsd2ss %xmm0, %xmm0
movss %xmm0, 0x20(%rbx)
movss 0x20(%rbx), %xmm0
xorps %xmm1, %xmm1
cvtss2sd %xmm4, %xmm1
subss %xmm0, %xmm4
cvtss2sd %xmm0, %xmm0
addsd 0x2b5f(%rip), %xmm0     # 0xea28
subsd %xmm0, %xmm1
xorps %xmm0, %xmm0
cvtsd2ss %xmm1, %xmm0
movaps 0x2165(%rip), %xmm1     # 0xe040
movaps %xmm0, %xmm3
andps %xmm1, %xmm3
andps %xmm4, %xmm1
cmpltss %xmm1, %xmm3
andps %xmm3, %xmm0
andnps %xmm4, %xmm3
orps %xmm0, %xmm3
testl %ebp, %ebp
jne 0xc07b
movaps %xmm3, (%rsp)
callq 0x4510
movl $0xffff, %ebp           # imm = 0xFFFF
andl %ebp, %eax
xorps %xmm0, %xmm0
cvtsi2sd %eax, %xmm0
divsd 0x2147(%rip), %xmm0     # 0xe060
mulsd 0x2c0f(%rip), %xmm0     # 0xeb30
xorps %xmm2, %xmm2
cvtsd2ss %xmm0, %xmm2
xorps %xmm0, %xmm0
movaps (%rsp), %xmm1
cmpltss %xmm0, %xmm1
movaps %xmm1, %xmm0
andnps %xmm2, %xmm0
xorps 0x20df(%rip), %xmm2     # 0xe020
andps %xmm1, %xmm2
orps %xmm0, %xmm2
movaps %xmm2, 0x10(%rsp)
callq 0x4510
andl %ebp, %eax
xorps %xmm0, %xmm0
cvtsi2sd %eax, %xmm0
divsd 0x20fe(%rip), %xmm0     # 0xe060
ucomisd 0x2c5e(%rip), %xmm0     # 0xebc8
ja 0xc067
movaps 0x10(%rsp), %xmm0
jmp 0xc073
xorps %xmm0, %xmm0
cvtss2sd 0x20(%rsi), %xmm0
addsd 0x2bb6(%rip), %xmm0     # 0xeb40
xorps %xmm2, %xmm2
cvtsd2ss %xmm0, %xmm2
xorps %xmm0, %xmm0
cvtss2sd %xmm2, %xmm0
movsd 0x2a80(%rip), %xmm3     # 0xea20
addsd %xmm3, %xmm0
cvtsd2ss %xmm0, %xmm4
xorps %xmm1, %xmm1
movaps %xmm2, %xmm0
cmpltss %xmm1, %xmm0
andps %xmm0, %xmm4
andnps %xmm2, %xmm0
orps %xmm4, %xmm0
xorps %xmm2, %xmm2
cvtss2sd %xmm0, %xmm2
ucomisd %xmm3, %xmm2
jbe 0xbfd8
addsd 0x2a57(%rip), %xmm2     # 0xea28
xorps %xmm0, %xmm0
cvtsd2ss %xmm2, %xmm0
movss 0x20(%rbx), %xmm2
ucomiss %xmm2, %xmm1
jbe 0xbffa
xorps %xmm1, %xmm1
cvtss2sd %xmm2, %xmm1
addsd 0x2a2f(%rip), %xmm1     # 0xea20
cvtsd2ss %xmm1, %xmm1
movss %xmm1, 0x20(%rbx)
xorps %xmm1, %xmm1
cvtss2sd 0x20(%rbx), %xmm1
ucomisd 0x2a16(%rip), %xmm1     # 0xea20
jbe 0xc01d
addsd 0x2a14(%rip), %xmm1     # 0xea28
cvtsd2ss %xmm1, %xmm1
movss %xmm1, 0x20(%rbx)
movss 0x20(%rbx), %xmm1
xorps %xmm2, %xmm2
cvtss2sd %xmm0, %xmm2
xorps %xmm3, %xmm3
cvtss2sd %xmm1, %xmm3
addsd 0x29f0(%rip), %xmm3     # 0xea28
subss %xmm1, %xmm0
subsd %xmm3, %xmm2
xorps %xmm1, %xmm1
cvtsd2ss %xmm2, %xmm1
movaps 0x1ff2(%rip), %xmm2     # 0xe040
movaps %xmm1, %xmm3
andps %xmm2, %xmm3
andps %xmm0, %xmm2
cmpltss %xmm2, %xmm3
andps %xmm3, %xmm1
andnps %xmm0, %xmm3
orps %xmm1, %xmm3
jmp 0xc07b
movaps 0x10(%rsp), %xmm0
xorps 0x1fad(%rip), %xmm0     # 0xe020
movaps (%rsp), %xmm3
addss %xmm0, %xmm3
xorps %xmm0, %xmm0
xorl %eax, %eax
ucomiss %xmm3, %xmm0
seta %cl
movaps 0x1fb3(%rip), %xmm0     # 0xe040
andps %xmm3, %xmm0
cvtss2sd %xmm0, %xmm0
ucomisd 0x2b34(%rip), %xmm0     # 0xebd0
jbe 0xc0ac
movb %cl, %al
leaq 0x2b31(%rip), %rcx      # 0xebd8
movss (%rcx,%rax,4), %xmm3
movss %xmm3, 0x30(%rbx)
addq $0x28, %rsp
popq %rbx
popq %rbp
retq