// File: /workspace/github_c_makefile_star2_O0/jrrk[P]cbzone/c_graphics.c
// Function: scanner
void scanner(o)
     Genericp o;
{
  static float scale = 0.03;
  static XSegment scanline[] = {500, 560, 500, 560};
  static Bool init = True;
  static XSegment* dot;
  static float ca = 1.0;        /* keep track of where the scanner line */
  static float sa = 0.0;        /* is currently positioned */
  static float sda = 0.087156;
  static float cda = 0.996195;
  static int ind = 0;           /* number of enemies last on scanner */
  float temp;
  Genericp g;
  XSegment* nextdot;
  XSegment* curdot;

  if (init) {
    dot = (XSegment*) malloc(sizeof(XSegment)*2*opt->mobjects);
    if (dot == NULL) {
      printf("Malloc failed...too many objects?\n");
#ifdef WIN32
      return;
#else //X11
      exit(1);
#endif
    }
    init = False;
  }

  gprsetclippingactive(False);
  gprsetdrawvalue(opt->cpi[COLOR_BG]);
  multiline(scanline, 1);               /*       erase scan line       */
  if (ind)                              /* erase enemies, if necessary */
    multiline(dot, ind);
  temp = ca;
  ca = ca * cda - sa * sda;
  sa = sa * cda + sda * temp;
  scanline->x2 = 60.0 * ca + 500;
  scanline->y2 = 60.0 * sa + 560;
  gprsetdrawvalue(opt->cpi[COLOR_SCANNER]);
  multiline(scanline, 1);               /*     draw scanline           */
  ind = 0;
  curdot = dot;
  for (g=o+opt->estart; g<o+opt->lstart; g++)
    if (g->attr & IS_ALIVE && g->range <= 2000.0 && g->range != 0.0) {
      nextdot = curdot + 1;
      nextdot->x1 = curdot->x1 = 500 + g->prox * scale - 1;
      nextdot->y2 = curdot->y1 = 560 - g->proy * scale + 1;
      nextdot->x2 = curdot->x2 = curdot->x1 + 2;
      nextdot->y1 = curdot->y2 = curdot->y1 - 2;
      ind += 2;
      curdot += 2;
    }
  if (ind)
    multiline(dot, ind);                /* draw enemies, if necessary  */
  gprsetclippingactive(True);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
cmpl $0x0, 0xe42d(%rip)      # 0x194f0
je 0xb10f
leaq 0xe894(%rip), %rax      # 0x19960
movq (%rax), %rax
movslq 0x1c(%rax), %rdi
shlq $0x4, %rdi
callq 0x5180
movq %rax, 0xeb0d(%rip)      # 0x19bf0
cmpq $0x0, 0xeb05(%rip)      # 0x19bf0
jne 0xb105
leaq 0x971c(%rip), %rdi      # 0x14810
movb $0x0, %al
callq 0x5050
movl $0x1, %edi
callq 0x5100
movl $0x0, 0xe3e1(%rip)      # 0x194f0
xorl %edi, %edi
movb $0x0, %al
callq 0x98e0
leaq 0xe841(%rip), %rax      # 0x19960
movq (%rax), %rax
movl 0xf0(%rax), %edi
movb $0x0, %al
callq 0x9e90
leaq 0xe3b2(%rip), %rdi      # 0x194e8
movl $0x1, %esi
movb $0x0, %al
callq 0x95e0
cmpl $0x0, 0xeab3(%rip)      # 0x19bfc
je 0xb15f
movq 0xea9e(%rip), %rdi      # 0x19bf0
movl 0xeaa4(%rip), %esi      # 0x19bfc
movb $0x0, %al
callq 0x95e0
movss 0xe38d(%rip), %xmm0     # 0x194f4
movss %xmm0, -0xc(%rbp)
movss 0xe380(%rip), %xmm0     # 0x194f4
movss 0xe380(%rip), %xmm2     # 0x194fc
movss 0xea74(%rip), %xmm1     # 0x19bf8
movss 0xe36c(%rip), %xmm3     # 0x194f8
mulss %xmm3, %xmm1
mulss %xmm2, %xmm0
subss %xmm1, %xmm0
movss %xmm0, 0xe354(%rip)     # 0x194f4
movss 0xea50(%rip), %xmm0     # 0x19bf8
movss 0xe34c(%rip), %xmm2     # 0x194fc
movss 0xe340(%rip), %xmm1     # 0x194f8
movss -0xc(%rbp), %xmm3
mulss %xmm3, %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, 0xea27(%rip)     # 0x19bf8
movss 0xe31b(%rip), %xmm0     # 0x194f4
cvtss2sd %xmm0, %xmm0
movsd 0x94e3(%rip), %xmm1     # 0x146c8
mulsd %xmm1, %xmm0
movsd 0x9487(%rip), %xmm2     # 0x14678
addsd %xmm2, %xmm0
cvttsd2si %xmm0, %eax
movw %ax, 0xe2ec(%rip)       # 0x194ec
movss 0xe9f0(%rip), %xmm0     # 0x19bf8
cvtss2sd %xmm0, %xmm0
mulsd %xmm1, %xmm0
movsd 0x94b8(%rip), %xmm1     # 0x146d0
addsd %xmm1, %xmm0
cvttsd2si %xmm0, %eax
movw %ax, 0xe2c7(%rip)       # 0x194ee
leaq 0xe732(%rip), %rax      # 0x19960
movq (%rax), %rax
movl 0x11c(%rax), %edi
movb $0x0, %al
callq 0x9e90
leaq 0xe2a3(%rip), %rdi      # 0x194e8
movl $0x1, %esi
movb $0x0, %al
callq 0x95e0
movl $0x0, 0xe9a1(%rip)      # 0x19bfc
movq 0xe98e(%rip), %rax      # 0x19bf0
movq %rax, -0x28(%rbp)
movq -0x8(%rbp), %rax
leaq 0xe6ef(%rip), %rcx      # 0x19960
movq (%rcx), %rcx
movslq 0x20(%rcx), %rcx
imulq $0x660, %rcx, %rcx      # imm = 0x660
addq %rcx, %rax
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movq -0x8(%rbp), %rcx
leaq 0xe6cb(%rip), %rdx      # 0x19960
movq (%rdx), %rdx
movslq 0x24(%rdx), %rdx
imulq $0x660, %rdx, %rdx      # imm = 0x660
addq %rdx, %rcx
cmpq %rcx, %rax
jae 0xb3f3
movq -0x18(%rbp), %rax
movl 0x8(%rax), %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0xb3de
movq -0x18(%rbp), %rax
movss 0x34(%rax), %xmm0
cvtss2sd %xmm0, %xmm1
movsd 0x8d39(%rip), %xmm0     # 0x14010
ucomisd %xmm1, %xmm0
jb 0xb3de
movq -0x18(%rbp), %rax
movss 0x34(%rax), %xmm0
cvtss2sd %xmm0, %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0xb2fe
jp 0xb2fe
jmp 0xb3de
movq -0x28(%rbp), %rax
addq $0x8, %rax
movq %rax, -0x20(%rbp)
movq -0x18(%rbp), %rax
movss 0x18(%rax), %xmm0
movss 0xe1c9(%rip), %xmm1     # 0x194e4
mulss %xmm1, %xmm0
movss 0x8cf9(%rip), %xmm1     # 0x14020
addss %xmm1, %xmm0
movss 0x8d45(%rip), %xmm1     # 0x14078
subss %xmm1, %xmm0
cvttss2si %xmm0, %eax
movw %ax, %cx
movq -0x28(%rbp), %rax
movw %cx, (%rax)
movq -0x20(%rbp), %rax
movw %cx, (%rax)
movq -0x18(%rbp), %rax
movss 0x1c(%rax), %xmm2
movss 0xe187(%rip), %xmm0     # 0x194e4
mulss %xmm0, %xmm2
movss 0x9397(%rip), %xmm0     # 0x14700
subss %xmm2, %xmm0
addss %xmm1, %xmm0
cvttss2si %xmm0, %eax
movw %ax, %cx
movq -0x28(%rbp), %rax
movw %cx, 0x2(%rax)
movq -0x20(%rbp), %rax
movw %cx, 0x6(%rax)
movq -0x28(%rbp), %rax
movswl (%rax), %eax
addl $0x2, %eax
movw %ax, %cx
movq -0x28(%rbp), %rax
movw %cx, 0x4(%rax)
movq -0x20(%rbp), %rax
movw %cx, 0x4(%rax)
movq -0x28(%rbp), %rax
movswl 0x2(%rax), %eax
subl $0x2, %eax
movw %ax, %cx
movq -0x28(%rbp), %rax
movw %cx, 0x6(%rax)
movq -0x20(%rbp), %rax
movw %cx, 0x2(%rax)
movl 0xe833(%rip), %eax      # 0x19bfc
addl $0x2, %eax
movl %eax, 0xe82a(%rip)      # 0x19bfc
movq -0x28(%rbp), %rax
addq $0x10, %rax
movq %rax, -0x28(%rbp)
jmp 0xb3e0
movq -0x18(%rbp), %rax
addq $0x660, %rax            # imm = 0x660
movq %rax, -0x18(%rbp)
jmp 0xb286
cmpl $0x0, 0xe802(%rip)      # 0x19bfc
je 0xb410
movq 0xe7ed(%rip), %rdi      # 0x19bf0
movl 0xe7f3(%rip), %esi      # 0x19bfc
movb $0x0, %al
callq 0x95e0
movl $0x1, %edi
movb $0x0, %al
callq 0x98e0
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)