// File: /workspace/github_c_makefile_star2_O2/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 0xb093
movl 0x4c(%rbx), %eax
jmp 0xb09f
andl $0x0, 0x44(%rbx)
andl $-0x3, %ecx
movl %ecx, 0x8(%rbx)
xorl %eax, %eax
andl $0x0, 0x30(%rbx)
leal 0x1(%rax), %edx
movl %edx, 0x4c(%rbx)
testw $0x600, %cx             # imm = 0x600
je 0xb0ba
movss 0x2c90(%rip), %xmm0     # 0xdd48
jmp 0xb0d5
movss 0x14(%rbx), %xmm1
addss 0x2c7d(%rip), %xmm1     # 0xdd44
xorps %xmm2, %xmm2
movaps %xmm1, %xmm0
cmpless %xmm2, %xmm0
andnps %xmm1, %xmm0
movss %xmm0, 0x14(%rbx)
movss 0x2c6a(%rip), %xmm1     # 0xdd4c
cmpltss %xmm0, %xmm1
movss 0x2c61(%rip), %xmm0     # 0xdd50
andnps %xmm0, %xmm1
movss %xmm1, 0x2c(%rbx)
cmpl $0xb, %eax
jl 0xb3ae
andl $0x0, 0x4c(%rbx)
movss 0x1c(%rbx), %xmm0
ucomiss 0x2a2c(%rip), %xmm0     # 0xdb3c
jbe 0xb29b
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 0x1f14(%rip), %xmm1     # 0xd050
andps %xmm3, %xmm1
cvtss2sd %xmm1, %xmm1
movsd 0x2b5d(%rip), %xmm2     # 0xdca8
ucomisd %xmm1, %xmm2
jbe 0xb15f
movb %cl, %al
leaq 0x2b56(%rip), %rcx      # 0xdcb0
movss (%rcx,%rax,4), %xmm3
movaps %xmm3, (%rsp)
divss %xmm3, %xmm0
cvtss2sd %xmm0, %xmm0
callq 0x4270
movaps (%rsp), %xmm2
movsd 0x2b3c(%rip), %xmm1     # 0xdcb8
subsd %xmm0, %xmm1
cvtsd2ss %xmm1, %xmm1
cvtsd2ss %xmm0, %xmm0
xorps 0x1e81(%rip), %xmm0     # 0xd010
cmpnless 0x2ba8(%rip), %xmm2     # 0xdd40
andps %xmm2, %xmm0
andnps %xmm1, %xmm2
orps %xmm0, %xmm2
movss 0x20(%rbx), %xmm0
cvtss2sd %xmm0, %xmm1
ucomisd 0x293e(%rip), %xmm1     # 0xdaf0
jbe 0xb1c5
addsd 0x293c(%rip), %xmm1     # 0xdaf8
cvtsd2ss %xmm1, %xmm0
movss %xmm0, 0x20(%rbx)
xorps %xmm1, %xmm1
ucomiss %xmm0, %xmm1
jbe 0xb1e2
cvtss2sd %xmm0, %xmm0
addsd 0x2917(%rip), %xmm0     # 0xdaf0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, 0x20(%rbx)
cvtss2sd %xmm2, %xmm1
subss %xmm0, %xmm2
cvtss2sd %xmm0, %xmm0
addsd 0x2902(%rip), %xmm0     # 0xdaf8
subsd %xmm0, %xmm1
cvtsd2ss %xmm1, %xmm0
movaps 0x1e4b(%rip), %xmm1     # 0xd050
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 0xb378
movaps %xmm3, (%rsp)
callq 0x4520
movl $0xffff, %ebp           # imm = 0xFFFF
andl %ebp, %eax
cvtsi2sd %eax, %xmm0
divsd 0x1e30(%rip), %xmm0     # 0xd070
mulsd 0x2a00(%rip), %xmm0     # 0xdc48
cvtsd2ss %xmm0, %xmm2
xorps %xmm0, %xmm0
movaps (%rsp), %xmm1
cmpltss %xmm0, %xmm1
movaps %xmm1, %xmm0
andnps %xmm2, %xmm0
xorps 0x1dab(%rip), %xmm2     # 0xd010
andps %xmm1, %xmm2
orps %xmm0, %xmm2
movaps %xmm2, 0x10(%rsp)
callq 0x4520
andl %ebp, %eax
cvtsi2sd %eax, %xmm0
divsd 0x1ded(%rip), %xmm0     # 0xd070
ucomisd 0x2a55(%rip), %xmm0     # 0xdce0
ja 0xb364
movaps 0x10(%rsp), %xmm0
jmp 0xb370
cvtss2sd 0x20(%rsi), %xmm0
addsd 0x29b0(%rip), %xmm0     # 0xdc58
cvtsd2ss %xmm0, %xmm1
cvtss2sd %xmm1, %xmm0
movsd 0x2838(%rip), %xmm3     # 0xdaf0
addsd %xmm3, %xmm0
cvtsd2ss %xmm0, %xmm4
xorps %xmm2, %xmm2
movaps %xmm1, %xmm0
cmpltss %xmm2, %xmm0
andps %xmm0, %xmm4
andnps %xmm1, %xmm0
orps %xmm4, %xmm0
cvtss2sd %xmm0, %xmm1
ucomisd %xmm3, %xmm1
jbe 0xb2ea
addsd 0x2812(%rip), %xmm1     # 0xdaf8
cvtsd2ss %xmm1, %xmm0
movss 0x20(%rbx), %xmm1
ucomiss %xmm1, %xmm2
jbe 0xb309
cvtss2sd %xmm1, %xmm1
addsd 0x27f0(%rip), %xmm1     # 0xdaf0
cvtsd2ss %xmm1, %xmm1
movss %xmm1, 0x20(%rbx)
cvtss2sd %xmm1, %xmm2
ucomisd 0x27db(%rip), %xmm2     # 0xdaf0
jbe 0xb32c
addsd 0x27d9(%rip), %xmm2     # 0xdaf8
cvtsd2ss %xmm2, %xmm1
movss %xmm1, 0x20(%rbx)
cvtss2sd %xmm1, %xmm2
cvtss2sd %xmm0, %xmm3
addsd 0x27c0(%rip), %xmm2     # 0xdaf8
subss %xmm1, %xmm0
subsd %xmm2, %xmm3
cvtsd2ss %xmm3, %xmm1
movaps 0x1d05(%rip), %xmm2     # 0xd050
movaps %xmm1, %xmm3
andps %xmm2, %xmm3
andps %xmm0, %xmm2
cmpltss %xmm2, %xmm3
andps %xmm3, %xmm1
andnps %xmm0, %xmm3
orps %xmm1, %xmm3
jmp 0xb378
movaps 0x10(%rsp), %xmm0
xorps 0x1ca0(%rip), %xmm0     # 0xd010
movaps (%rsp), %xmm3
addss %xmm0, %xmm3
xorps %xmm0, %xmm0
xorl %eax, %eax
ucomiss %xmm3, %xmm0
seta %cl
movaps 0x1cc6(%rip), %xmm0     # 0xd050
andps %xmm3, %xmm0
cvtss2sd %xmm0, %xmm0
ucomisd 0x294f(%rip), %xmm0     # 0xdce8
jbe 0xb3a9
movb %cl, %al
leaq 0x294c(%rip), %rcx      # 0xdcf0
movss (%rcx,%rax,4), %xmm3
movss %xmm3, 0x30(%rbx)
addq $0x28, %rsp
popq %rbx
popq %rbp
retq