// File: jkingan[P]ladyheather/heathgps.cpp
// Function: set_lla(double, double, double)
void set_lla(double slat, double slon, double salt)
{
S32 v1,v2,v3;
char c;
char ns,ew;
double x;
int deg,mins;
double xmins;
double secs;
char lats[256];
char lons[256];
char alts[256];

// sprintf(debug_text2, "set lla:%.9lf %.9lf %.9lf", slat*180.0/PI, slon*180.0/PI, salt);

   if(read_only) return;

   need_posns = 1;
   need_sunrise = 1;
   if(luxor) {
      lat = slat;
      lon = slon;
      alt = salt;
   }
   else if((NO_SATS || (rcvr_type == ACRON_RCVR)) && (rcvr_type != TIDE_RCVR)) {
      lat = slat;
      lon = slon;
      alt = salt;
   }
   else if(rcvr_type == ESIP_RCVR) {
      slat = slat * 180.0 / PI;
      slon = slon * 180.0 / PI;
      sprintf(out, "PERDAPI,SURVEY,3,0,0,%.7f,%.7f,%d", slat,slon,(int)salt);
      send_esip_cmd(out);
   }
   else if(rcvr_type == FURUNO_RCVR) {
      x = salt - (double) (int) salt;
      if(salt < 0.0) {
         salt = 0.0-salt;
         deg = ((int) (x*10.0) % 10);
         sprintf(out, "GPset,Z2,H-%05d.%d", (int) (0.0-salt), deg);
      }
      else {
         deg = ((int) (x*10.0) % 10);
         sprintf(out, "GPset,Z2,H%06d.%d", (int) salt, deg);
      }
      send_furuno_cmd(out);

      slat = slat * 180.0 / PI;
      if(slat < 0.0) {
         ns = 'S';
         slat = 0.0 - slat;
      }
      else ns = 'N';

      deg = (int) slat;
      x = slat - (double) deg;
      mins = (int) (x*60.0*10000.0);
      sprintf(lats, "%02d%02d.%04d,%c", deg,mins/10000,mins%10000, ns);


      slon = slon * 180.0 / PI;
      if(slon < 0.0) {
         ew = 'W';
         slon = 0.0 - slon;
      }
      else ew = 'E';

      deg = (int) slon;
      x = slon - (double) deg;
      mins = (int) (x*60.0*10000.0);
      sprintf(lons, "%03d%02d.%04d,%c", deg,mins/10000,mins%10000, ew);

      sprintf(out, "$GPGGA,%s,%s", lats,lons);
      send_nmea_cmd(out);

      send_furuno_cmd("GPsrq");
   }
   else if(rcvr_type == NVS_RCVR) {
      set_rcvr_mode(RCVR_MODE_HOLD);  // position hold mode

//    send_nvs_start(0x1D);  // could be 0x0F 0x03 
//    send_byte(0x07);
      send_nvs_start(0x0F);  // could be 0x1D 0x07 
      send_byte(0x03);
      send_double(slat);
      send_double(slon);
      send_double(salt);
      send_nvs_end();
   }
   else if(rcvr_type == MOTO_RCVR) {
      v1 = (S32) ((slat * 180.0 / PI) * 3600000.0); // radians to milliarcseconds
      v2 = (S32) ((slon * 180.0 / PI) * 3600000.0); // radians to milliarcseconds
      v3 = (S32) (salt * 100.0);  // convert meters to cm

      if(0) {
         set_rcvr_mode(RCVR_MODE_HOLD);  // position hold mode

         send_moto_start("Ad");  // !!!! (moto_chans != 12)
         send_dword(v1);
         send_moto_end();
         send_moto_start("Ae");
         send_dword(v2);
         send_moto_end();
         send_moto_start("Af");
         send_dword(v3);
         send_byte(0);
         send_moto_end();
      }

      set_rcvr_mode(RCVR_MODE_3D);  // enter 3D mode so we can set position hold lla
      Sleep(2000);

      send_moto_start("As");   // set LLA
      send_dword(v1);
      send_dword(v2);
      send_dword(v3);
      send_byte(0);
      send_moto_end();

      Sleep(1000);
      set_rcvr_mode(RCVR_MODE_HOLD);  // position hold mode
   }
   else if(rcvr_type == RFTG_RCVR) {
      v1 = (S32) ((slat * 180.0 / PI) * 3600000.0); // radians to milliarcseconds
      v2 = (S32) ((slon * 180.0 / PI) * 3600000.0); // radians to milliarcseconds
      v3 = (S32) (salt * 100.0);  // convert meters to cm

      set_rftg_lla(v1, v2, v3);

      request_rftg_sats();  // readback the position
      set_rftg_normal();

      if(have_rftg_unit && (rftg_unit == 0) && (have_rftg_lla == 0)) {  // RB unit has no GPS, use user define coords
         lat = slat;
         lon = slon;
         alt = salt;
      }
   }
   else if((rcvr_type == SCPI_RCVR) || (rcvr_type == TM4_RCVR) || (rcvr_type == UCCM_RCVR) || (rcvr_type == Z12_RCVR) || (rcvr_type == ZYFER_RCVR)) {
      x = slat * 180.0 / PI;
      if(x >= 0.0) c = 'N';
      else {
         c = 'S';
         x = 0.0 - x;
      }

      deg = (int) x;

      x -= (double) deg; // x = decimal part of degrees
      x *= 60.0;         // x = minutes
      xmins = x;
      mins = (int) x;

      x -= (double) mins; 
      secs = (x * 60.0);   // x = seconds

      if(rcvr_type == TM4_RCVR) {
         sprintf(lats, "%02d%05.2f,%c", deg,xmins,c);
      }
      else if(rcvr_type == Z12_RCVR) {
         secs = (double) mins + secs/60.0;
         sprintf(lats, "%.8f,%c", ((double)deg*100.0)+secs,c);
      }
      else if(rcvr_type == ZYFER_RCVR) {
         secs = (double) mins + secs/60.0;
         sprintf(lats, "%d,%.8f,%c", deg,secs,c);
      }
      else {
         sprintf(lats, "%c,%d,%d,%f,", c,deg,mins,secs);
      }


      x = slon * 180.0 / PI;
      if(x >= 0.0) c = 'E';
      else {
         c = 'W';
         x = 0.0 - x;
      }

      deg = (int) x;

      x -= (double) deg; // x = decimal part of degrees
      x *= 60.0;         // x = minutes
      xmins = x;
      mins = (int) x;

      x -= (double) mins; 
      secs = (x * 60.0);   // x = seconds

      if(rcvr_type == TM4_RCVR) {
         if(alt >= 0) sprintf(alts, "+%05d", (int) salt);
         else         sprintf(alts, "%06d",  (int) salt);
         sprintf(lons, "%03d%05.2f,%c,%s", deg,xmins,c,alts);
      }
      else if(rcvr_type == Z12_RCVR) {
         secs = (double) mins + secs/60.0;
         sprintf(lons, "%.8f,%c", ((double)deg*100.0)+secs,c);

         if(alt >= 0) sprintf(alts, "+%.2f", salt);
         else         sprintf(alts, "%.2f", salt);
      }
      else if(rcvr_type == ZYFER_RCVR) {
         secs = (double) mins + secs/60.0;
         sprintf(lons, "%d,%.8f,%c,%.2f", deg,secs,c, salt);
      }
      else {
         sprintf(lons, "%c,%d,%d,%f,%f", c,deg,mins,secs,salt);
      }

      extend_com_timeout(0.0);
      if(rcvr_type == TM4_RCVR) {
         sprintf(out, "#19,%s,%s", lats,lons);
         send_tm4_cmd(out);
      }
      else if(rcvr_type == Z12_RCVR) {
//sprintf(debug_text, "set lla: %s %s %s", lats,lons,alts);
      }
      else if(rcvr_type == ZYFER_RCVR) {
         send_zyfer_cmd("$TRMO,K");
         sprintf(out, "$SPOS,%s,%s", lats,lons);
         send_zyfer_cmd(out);
      }
      else if(rcvr_type == UCCM_RCVR) {
         sprintf(out, "GPS:POS %s%s", lats,lons);
         queue_uccm_cmd(out, SCPI_NULL_MSG);  // !!!!!
         Sleep(1000);
         queue_uccm_cmd("SYST:STAT?", UCCM_STATUS_MSG);
      }
      else if(scpi_type == NORTEL_TYPE) {
         sprintf(out, "GPS:POSITION %s%s", lats,lons);
         queue_scpi_cmd(out, SCPI_NULL_MSG);  // !!!!!
      }
      else {  
         sprintf(out, ":PTIM:GPS:POS %s%s", lats,lons);
         queue_scpi_cmd(out, SCPI_NULL_MSG);  // !!!!!
      }
   }
   else if(rcvr_type == TAIP_RCVR) {  // sets receiver initial position
      strcpy(lats, "SIP");
      if(slat >= 0.0) sprintf(out, "+%02d", (int) (slat*180.0/PI));
      else            sprintf(out, "%03d", (int) (slat*180.0/PI));
      strcat(lats, out);

      if(slon >= 0.0) sprintf(out, "+%03d", (int) (slon*180.0/PI));
      else            sprintf(out, "%04d", (int) (slon*180.0/PI));
      strcat(lats, out);

      if(salt >= 0.0) sprintf(out, "+%04d", (int) (salt/10.0));
      else            sprintf(out, "%05d", (int) (salt/10.0));
      strcat(lats, out);

      send_taip_cmd(lats);
   }
   else if(rcvr_type == TIDE_RCVR) {
      if((lat == 0.0) && (lon == 0.0)) {    // first time position has been set...
         new_queue(RESET_ALL_QUEUES, 5467); // clear the queues so tides scale properly
      }

      lat = slat;
      lon = slon;
      alt = salt;

      ref_lat = slat;
      ref_lon = slon;
      ref_alt = salt;

      moon_posn(jd_tt);
      sun_posn(jd_utc, 0);
   }
   else if(rcvr_type == TRUE_RCVR) {
      sprintf(out, "$SETPOS %ld %ld %ld", (long) (slat*1.0E6*180.0/PI), (long) (slon*1.0E6*180.0/PI), (long) salt);
      send_true_cmd(out);  // $SETPOS %ld %ld %ld - set position (lat lon alt in same format as $GETPOS)
      send_true_cmd("$GETPOS");
   }
   else if(rcvr_type == TSIP_RCVR) {
      send_tsip_start(0x32);
      send_single((float) slat);
      send_single((float) slon);
      send_single((float) salt);
      send_tsip_end();

      if(0 && SV6_FAMILY) {
         send_tsip_start(0x2A);   // !!!! altitude for 2D mode
         send_single((float) salt);
         send_tsip_end();
      }
   }
   else if(rcvr_type == UBX_RCVR) {
      set_ubx_config(2, slat,slon,salt);
   }
   else if(rcvr_type == VENUS_RCVR) {
      set_venus_survey(2, slat,slon,salt);
   }
   else if(rcvr_type == ZODIAC_RCVR) {
      set_zod_config(6, slat,slon,salt, traim_threshold, 1);
   }

   need_redraw = 7780;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x360, %rsp            # imm = 0x360
movsd %xmm0, -0x8(%rbp)
movsd %xmm1, -0x10(%rbp)
movsd %xmm2, -0x18(%rbp)
leaq 0x309059(%rip), %rax    # 0x3961fa
cmpb $0x0, (%rax)
je 0x8d1ab
jmp 0x8e27b
leaq 0x1ed40e(%rip), %rax    # 0x27a5c0
movb $0x1, (%rax)
leaq 0x2df5d4(%rip), %rax    # 0x36c790
movl $0x1, (%rax)
leaq 0x210f55(%rip), %rax    # 0x29e11e
cmpb $0x0, (%rax)
je 0x8d203
movsd -0x8(%rbp), %xmm0
leaq 0x2defd6(%rip), %rax    # 0x36c1b0
movsd %xmm0, (%rax)
movsd -0x10(%rbp), %xmm0
leaq 0x2defce(%rip), %rax    # 0x36c1b8
movsd %xmm0, (%rax)
movsd -0x18(%rbp), %xmm0
leaq 0x2defc6(%rip), %rax    # 0x36c1c0
movsd %xmm0, (%rax)
jmp 0x8e26e
leaq 0x1ea8a6(%rip), %rcx    # 0x277ab0
movabsq $0x105b8b0400, %rax     # imm = 0x105B8B0400
andq (%rcx), %rax
cmpq $0x0, %rax
jne 0x8d261
leaq 0x1ecf8c(%rip), %rax    # 0x27a1b0
cmpl $0x0, (%rax)
je 0x8d235
leaq 0x2df374(%rip), %rax    # 0x36c5a4
cmpl $0x0, (%rax)
je 0x8d261
leaq 0x1ea874(%rip), %rax    # 0x277ab0
cmpq $0x400000, (%rax)       # imm = 0x400000
jne 0x8d251
leaq 0x2df948(%rip), %rax    # 0x36cb94
cmpl $0x0, (%rax)
je 0x8d261
leaq 0x1ea858(%rip), %rax    # 0x277ab0
cmpq $0x4000, (%rax)         # imm = 0x4000
jne 0x8d2a6
leaq 0x1ea848(%rip), %rax    # 0x277ab0
cmpq $0x800000, (%rax)       # imm = 0x800000
je 0x8d2a6
movsd -0x8(%rbp), %xmm0
leaq 0x2def33(%rip), %rax    # 0x36c1b0
movsd %xmm0, (%rax)
movsd -0x10(%rbp), %xmm0
leaq 0x2def2b(%rip), %rax    # 0x36c1b8
movsd %xmm0, (%rax)
movsd -0x18(%rbp), %xmm0
leaq 0x2def23(%rip), %rax    # 0x36c1c0
movsd %xmm0, (%rax)
jmp 0x8e26c
movl $0x80000000, %ecx       # imm = 0x80000000
leaq 0x1ea7fe(%rip), %rax    # 0x277ab0
cmpq %rcx, (%rax)
jne 0x8d328
movsd 0xe1db9(%rip), %xmm0    # 0x16f078
mulsd -0x8(%rbp), %xmm0
movsd 0xe42fc(%rip), %xmm1    # 0x1715c8
divsd %xmm1, %xmm0
movsd %xmm0, -0x8(%rbp)
movsd 0xe1d9b(%rip), %xmm0    # 0x16f078
mulsd -0x10(%rbp), %xmm0
movsd 0xe42de(%rip), %xmm1    # 0x1715c8
divsd %xmm1, %xmm0
movsd %xmm0, -0x10(%rbp)
movsd -0x8(%rbp), %xmm0
movsd -0x10(%rbp), %xmm1
cvttsd2si -0x18(%rbp), %edx
leaq 0x30e0f7(%rip), %rdi    # 0x39b400
leaq 0xf69cb(%rip), %rsi     # 0x183cdb
movb $0x2, %al
callq 0x9060
leaq 0x30e0e2(%rip), %rdi    # 0x39b400
callq 0x830d0
jmp 0x8e26a
leaq 0x1ea781(%rip), %rax    # 0x277ab0
cmpq $0x20000000, (%rax)     # imm = 0x20000000
jne 0x8d5ad
movsd -0x18(%rbp), %xmm0
cvttsd2si -0x18(%rbp), %eax
cvtsi2sd %eax, %xmm1
subsd %xmm1, %xmm0
movsd %xmm0, -0x30(%rbp)
xorps %xmm0, %xmm0
ucomisd -0x18(%rbp), %xmm0
jbe 0x8d3ac
xorps %xmm0, %xmm0
subsd -0x18(%rbp), %xmm0
movsd %xmm0, -0x18(%rbp)
movsd 0xe1d4e(%rip), %xmm0    # 0x16f0c0
mulsd -0x30(%rbp), %xmm0
cvttsd2si %xmm0, %eax
movl $0xa, %ecx
cltd
idivl %ecx
movl %edx, -0x34(%rbp)
xorps %xmm0, %xmm0
subsd -0x18(%rbp), %xmm0
cvttsd2si %xmm0, %edx
movl -0x34(%rbp), %ecx
leaq 0x30e064(%rip), %rdi    # 0x39b400
leaq 0xf695a(%rip), %rsi     # 0x183cfd
movb $0x0, %al
callq 0x9060
jmp 0x8d3e5
movsd 0xe1d0c(%rip), %xmm0    # 0x16f0c0
mulsd -0x30(%rbp), %xmm0
cvttsd2si %xmm0, %eax
movl $0xa, %ecx
cltd
idivl %ecx
movl %edx, -0x34(%rbp)
cvttsd2si -0x18(%rbp), %edx
movl -0x34(%rbp), %ecx
leaq 0x30e029(%rip), %rdi    # 0x39b400
leaq 0xf6932(%rip), %rsi     # 0x183d10
movb $0x0, %al
callq 0x9060
leaq 0x30e014(%rip), %rdi    # 0x39b400
callq 0x83270
movsd 0xe1c7f(%rip), %xmm0    # 0x16f078
mulsd -0x8(%rbp), %xmm0
movsd 0xe41c2(%rip), %xmm1    # 0x1715c8
divsd %xmm1, %xmm0
movsd %xmm0, -0x8(%rbp)
xorps %xmm0, %xmm0
ucomisd -0x8(%rbp), %xmm0
jbe 0x8d42c
movb $0x53, -0x26(%rbp)
xorps %xmm0, %xmm0
subsd -0x8(%rbp), %xmm0
movsd %xmm0, -0x8(%rbp)
jmp 0x8d430
movb $0x4e, -0x26(%rbp)
cvttsd2si -0x8(%rbp), %eax
movl %eax, -0x34(%rbp)
movsd -0x8(%rbp), %xmm0
cvtsi2sdl -0x34(%rbp), %xmm1
subsd %xmm1, %xmm0
movsd %xmm0, -0x30(%rbp)
movsd 0xe1bc5(%rip), %xmm0    # 0x16f018
mulsd -0x30(%rbp), %xmm0
movsd 0xe1c98(%rip), %xmm1    # 0x16f0f8
mulsd %xmm1, %xmm0
cvttsd2si %xmm0, %eax
movl %eax, -0x38(%rbp)
leaq -0x150(%rbp), %rdi
movl -0x34(%rbp), %eax
movl %eax, -0x354(%rbp)
movl -0x38(%rbp), %eax
movl $0x2710, %ecx           # imm = 0x2710
cltd
idivl %ecx
movl %eax, %ecx
movl -0x38(%rbp), %eax
movl $0x2710, %esi           # imm = 0x2710
cltd
idivl %esi
movl %edx, %r8d
movl -0x354(%rbp), %edx
movsbl -0x26(%rbp), %r9d
leaq 0xf687a(%rip), %rsi     # 0x183d22
movb $0x0, %al
callq 0x9060
movsd 0xe1bc1(%rip), %xmm0    # 0x16f078
mulsd -0x10(%rbp), %xmm0
movsd 0xe4104(%rip), %xmm1    # 0x1715c8
divsd %xmm1, %xmm0
movsd %xmm0, -0x10(%rbp)
xorps %xmm0, %xmm0
ucomisd -0x10(%rbp), %xmm0
jbe 0x8d4ea
movb $0x57, -0x27(%rbp)
xorps %xmm0, %xmm0
subsd -0x10(%rbp), %xmm0
movsd %xmm0, -0x10(%rbp)
jmp 0x8d4ee
movb $0x45, -0x27(%rbp)
cvttsd2si -0x10(%rbp), %eax
movl %eax, -0x34(%rbp)
movsd -0x10(%rbp), %xmm0
cvtsi2sdl -0x34(%rbp), %xmm1
subsd %xmm1, %xmm0
movsd %xmm0, -0x30(%rbp)
movsd 0xe1b07(%rip), %xmm0    # 0x16f018
mulsd -0x30(%rbp), %xmm0
movsd 0xe1bda(%rip), %xmm1    # 0x16f0f8
mulsd %xmm1, %xmm0
cvttsd2si %xmm0, %eax
movl %eax, -0x38(%rbp)
leaq -0x250(%rbp), %rdi
movl -0x34(%rbp), %eax
movl %eax, -0x358(%rbp)
movl -0x38(%rbp), %eax
movl $0x2710, %ecx           # imm = 0x2710
cltd
idivl %ecx
movl %eax, %ecx
movl -0x38(%rbp), %eax
movl $0x2710, %esi           # imm = 0x2710
cltd
idivl %esi
movl %edx, %r8d
movl -0x358(%rbp), %edx
movsbl -0x27(%rbp), %r9d
leaq 0xf67cd(%rip), %rsi     # 0x183d33
movb $0x0, %al
callq 0x9060
leaq -0x150(%rbp), %rdx
leaq -0x250(%rbp), %rcx
leaq 0x30de7e(%rip), %rdi    # 0x39b400
leaq 0xf67bb(%rip), %rsi     # 0x183d44
movb $0x0, %al
callq 0x9060
leaq 0x30de69(%rip), %rdi    # 0x39b400
callq 0x833e0
leaq 0xf67ae(%rip), %rdi     # 0x183d51
callq 0x83270
jmp 0x8e268
leaq 0x1ea4fc(%rip), %rax    # 0x277ab0
cmpq $0x800, (%rax)          # imm = 0x800
jne 0x8d61b
movl $0x7, %edi
movl $0xff, %edx
movss 0xe4369(%rip), %xmm3    # 0x171938
movl %edx, %esi
movaps %xmm3, %xmm0
movaps %xmm3, %xmm1
movaps %xmm3, %xmm2
callq 0x805d0
movl $0xf, %edi
callq 0x824f0
movl $0x3, %edi
callq 0x7b210
movsd -0x8(%rbp), %xmm0
callq 0x7b670
movsd -0x10(%rbp), %xmm0
callq 0x7b670
movsd -0x18(%rbp), %xmm0
callq 0x7b670
callq 0x82630
jmp 0x8e266
leaq 0x1ea48e(%rip), %rax    # 0x277ab0
cmpq $0x20, (%rax)
jne 0x8d725
movsd 0xe1a44(%rip), %xmm0    # 0x16f078
mulsd -0x8(%rbp), %xmm0
movsd 0xe3f87(%rip), %xmm1    # 0x1715c8
divsd %xmm1, %xmm0
movsd 0xf557b(%rip), %xmm1    # 0x182bc8
mulsd %xmm1, %xmm0
cvttsd2si %xmm0, %eax
movl %eax, -0x1c(%rbp)
movsd 0xe1a18(%rip), %xmm0    # 0x16f078
mulsd -0x10(%rbp), %xmm0
movsd 0xe3f5b(%rip), %xmm1    # 0x1715c8
divsd %xmm1, %xmm0
movsd 0xf554f(%rip), %xmm1    # 0x182bc8
mulsd %xmm1, %xmm0
cvttsd2si %xmm0, %eax
movl %eax, -0x20(%rbp)
movsd 0xe19c4(%rip), %xmm0    # 0x16f050
mulsd -0x18(%rbp), %xmm0
cvttsd2si %xmm0, %eax
movl %eax, -0x24(%rbp)
movl $0x4, %edi
movl $0xff, %edx
movss 0xe428e(%rip), %xmm3    # 0x171938
movl %edx, %esi
movaps %xmm3, %xmm0
movaps %xmm3, %xmm1
movaps %xmm3, %xmm2
callq 0x805d0
movl $0x7d0, %edi            # imm = 0x7D0
callq 0xb8b0
leaq 0xf668c(%rip), %rdi     # 0x183d57
callq 0x86190
movl -0x1c(%rbp), %edi
callq 0x7b520
movl -0x20(%rbp), %edi
callq 0x7b520
movl -0x24(%rbp), %edi
callq 0x7b520
xorl %edi, %edi
callq 0x7b210
callq 0x86230
movl $0x3e8, %edi            # imm = 0x3E8
callq 0xb8b0
movl $0x7, %edi
movl $0xff, %edx
movss 0xe4228(%rip), %xmm3    # 0x171938
movl %edx, %esi
movaps %xmm3, %xmm0
movaps %xmm3, %xmm1
movaps %xmm3, %xmm2
callq 0x805d0
jmp 0x8e264
leaq 0x1ea384(%rip), %rax    # 0x277ab0
cmpq $0x400000, (%rax)       # imm = 0x400000
jne 0x8d816
movsd 0xe1937(%rip), %xmm0    # 0x16f078
mulsd -0x8(%rbp), %xmm0
movsd 0xe3e7a(%rip), %xmm1    # 0x1715c8
divsd %xmm1, %xmm0
movsd 0xf546e(%rip), %xmm1    # 0x182bc8
mulsd %xmm1, %xmm0
cvttsd2si %xmm0, %eax
movl %eax, -0x1c(%rbp)
movsd 0xe190b(%rip), %xmm0    # 0x16f078
mulsd -0x10(%rbp), %xmm0
movsd 0xe3e4e(%rip), %xmm1    # 0x1715c8
divsd %xmm1, %xmm0
movsd 0xf5442(%rip), %xmm1    # 0x182bc8
mulsd %xmm1, %xmm0
cvttsd2si %xmm0, %eax
movl %eax, -0x20(%rbp)
movsd 0xe18b7(%rip), %xmm0    # 0x16f050
mulsd -0x18(%rbp), %xmm0
cvttsd2si %xmm0, %eax
movl %eax, -0x24(%rbp)
movl -0x1c(%rbp), %edi
movl -0x20(%rbp), %esi
movl -0x24(%rbp), %edx
callq 0x8e290
callq 0x8b130
callq 0x8b030
leaq 0x2df3d4(%rip), %rax    # 0x36cb98
cmpl $0x0, (%rax)
je 0x8d811
leaq 0x2df3c4(%rip), %rax    # 0x36cb94
cmpl $0x0, (%rax)
jne 0x8d811
leaq 0x2df4a4(%rip), %rax    # 0x36cc80
cmpl $0x0, (%rax)
jne 0x8d811
movsd -0x8(%rbp), %xmm0
leaq 0x2de9c3(%rip), %rax    # 0x36c1b0
movsd %xmm0, (%rax)
movsd -0x10(%rbp), %xmm0
leaq 0x2de9bb(%rip), %rax    # 0x36c1b8
movsd %xmm0, (%rax)
movsd -0x18(%rbp), %xmm0
leaq 0x2de9b3(%rip), %rax    # 0x36c1c0
movsd %xmm0, (%rax)
jmp 0x8e262
leaq 0x1ea293(%rip), %rax    # 0x277ab0
cmpq $0x10, (%rax)
je 0x8d870
movabsq $0x400000000, %rcx      # imm = 0x400000000
leaq 0x1ea27c(%rip), %rax    # 0x277ab0
cmpq %rcx, (%rax)
je 0x8d870
leaq 0x1ea270(%rip), %rax    # 0x277ab0
cmpq $0x8, (%rax)
je 0x8d870
movabsq $0x100000000, %rcx      # imm = 0x100000000
leaq 0x1ea259(%rip), %rax    # 0x277ab0
cmpq %rcx, (%rax)
je 0x8d870
leaq 0x1ea24d(%rip), %rax    # 0x277ab0
cmpq $0x100000, (%rax)       # imm = 0x100000
jne 0x8de4a
movsd 0xe1800(%rip), %xmm0    # 0x16f078
mulsd -0x8(%rbp), %xmm0
movsd 0xe3d43(%rip), %xmm1    # 0x1715c8
divsd %xmm1, %xmm0
movsd %xmm0, -0x30(%rbp)
movsd -0x30(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jb 0x8d8a2
movb $0x4e, -0x25(%rbp)
jmp 0x8d8b3
movb $0x53, -0x25(%rbp)
xorps %xmm0, %xmm0
subsd -0x30(%rbp), %xmm0
movsd %xmm0, -0x30(%rbp)
cvttsd2si -0x30(%rbp), %eax
movl %eax, -0x34(%rbp)
cvtsi2sdl -0x34(%rbp), %xmm1
movsd -0x30(%rbp), %xmm0
subsd %xmm1, %xmm0
movsd %xmm0, -0x30(%rbp)
movsd 0xe1742(%rip), %xmm0    # 0x16f018
mulsd -0x30(%rbp), %xmm0
movsd %xmm0, -0x30(%rbp)
movsd -0x30(%rbp), %xmm0
movsd %xmm0, -0x40(%rbp)
cvttsd2si -0x30(%rbp), %eax
movl %eax, -0x38(%rbp)
cvtsi2sdl -0x38(%rbp), %xmm1
movsd -0x30(%rbp), %xmm0
subsd %xmm1, %xmm0
movsd %xmm0, -0x30(%rbp)
movsd 0xe170b(%rip), %xmm0    # 0x16f018
mulsd -0x30(%rbp), %xmm0
movsd %xmm0, -0x48(%rbp)
movabsq $0x400000000, %rcx      # imm = 0x400000000
leaq 0x1ea188(%rip), %rax    # 0x277ab0
cmpq %rcx, (%rax)
jne 0x8d953
leaq -0x150(%rbp), %rdi
movl -0x34(%rbp), %edx
movsd -0x40(%rbp), %xmm0
movsbl -0x25(%rbp), %ecx
leaq 0xf6413(%rip), %rsi     # 0x183d5a
movb $0x1, %al
callq 0x9060
jmp 0x8da38
movabsq $0x100000000, %rcx      # imm = 0x100000000
leaq 0x1ea14c(%rip), %rax    # 0x277ab0
cmpq %rcx, (%rax)
jne 0x8d9bd
cvtsi2sdl -0x38(%rbp), %xmm0
movsd -0x48(%rbp), %xmm1
movsd 0xe169d(%rip), %xmm2    # 0x16f018
divsd %xmm2, %xmm1
addsd %xmm1, %xmm0
movsd %xmm0, -0x48(%rbp)
leaq -0x150(%rbp), %rdi
cvtsi2sdl -0x34(%rbp), %xmm0
movsd -0x48(%rbp), %xmm1
movsd 0xe16af(%rip), %xmm2    # 0x16f050
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsbl -0x25(%rbp), %edx
leaq 0xf63b7(%rip), %rsi     # 0x183d6b
movb $0x1, %al
callq 0x9060
jmp 0x8da36
leaq 0x1ea0ec(%rip), %rax    # 0x277ab0
cmpq $0x100000, (%rax)       # imm = 0x100000
jne 0x8da0f
cvtsi2sdl -0x38(%rbp), %xmm0
movsd -0x48(%rbp), %xmm1
movsd 0xe1639(%rip), %xmm2    # 0x16f018
divsd %xmm2, %xmm1
addsd %xmm1, %xmm0
movsd %xmm0, -0x48(%rbp)
leaq -0x150(%rbp), %rdi
movl -0x34(%rbp), %edx
movsd -0x48(%rbp), %xmm0
movsbl -0x25(%rbp), %ecx
leaq 0xf6362(%rip), %rsi     # 0x183d68
movb $0x1, %al
callq 0x9060
jmp 0x8da34
leaq -0x150(%rbp), %rdi
movsbl -0x25(%rbp), %edx
movl -0x34(%rbp), %ecx
movl -0x38(%rbp), %r8d
movsd -0x48(%rbp), %xmm0
leaq 0xf6346(%rip), %rsi     # 0x183d73
movb $0x1, %al
callq 0x9060
jmp 0x8da36
jmp 0x8da38
movsd 0xe1638(%rip), %xmm0    # 0x16f078
mulsd -0x10(%rbp), %xmm0
movsd 0xe3b7b(%rip), %xmm1    # 0x1715c8
divsd %xmm1, %xmm0
movsd %xmm0, -0x30(%rbp)
movsd -0x30(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jb 0x8da6a
movb $0x45, -0x25(%rbp)
jmp 0x8da7b
movb $0x57, -0x25(%rbp)
xorps %xmm0, %xmm0
subsd -0x30(%rbp), %xmm0
movsd %xmm0, -0x30(%rbp)
cvttsd2si -0x30(%rbp), %eax
movl %eax, -0x34(%rbp)
cvtsi2sdl -0x34(%rbp), %xmm1
movsd -0x30(%rbp), %xmm0
subsd %xmm1, %xmm0
movsd %xmm0, -0x30(%rbp)
movsd 0xe157a(%rip), %xmm0    # 0x16f018
mulsd -0x30(%rbp), %xmm0
movsd %xmm0, -0x30(%rbp)
movsd -0x30(%rbp), %xmm0
movsd %xmm0, -0x40(%rbp)
cvttsd2si -0x30(%rbp), %eax
movl %eax, -0x38(%rbp)
cvtsi2sdl -0x38(%rbp), %xmm1
movsd -0x30(%rbp), %xmm0
subsd %xmm1, %xmm0
movsd %xmm0, -0x30(%rbp)
movsd 0xe1543(%rip), %xmm0    # 0x16f018
mulsd -0x30(%rbp), %xmm0
movsd %xmm0, -0x48(%rbp)
movabsq $0x400000000, %rcx      # imm = 0x400000000
leaq 0x1e9fc0(%rip), %rax    # 0x277ab0
cmpq %rcx, (%rax)
jne 0x8db6c
leaq 0x2de6c4(%rip), %rax    # 0x36c1c0
movsd (%rax), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jb 0x8db25
leaq -0x350(%rbp), %rdi
cvttsd2si -0x18(%rbp), %edx
leaq 0xf6886(%rip), %rsi     # 0x1843a2
movb $0x0, %al
callq 0x9060
jmp 0x8db3f
leaq -0x350(%rbp), %rdi
cvttsd2si -0x18(%rbp), %edx
leaq 0xf67a5(%rip), %rsi     # 0x1842dd
movb $0x0, %al
callq 0x9060
leaq -0x250(%rbp), %rdi
movl -0x34(%rbp), %edx
movsd -0x40(%rbp), %xmm0
movsbl -0x25(%rbp), %ecx
leaq -0x350(%rbp), %r8
leaq 0xf6220(%rip), %rsi     # 0x183d80
movb $0x1, %al
callq 0x9060
jmp 0x8dcac
movabsq $0x100000000, %rcx      # imm = 0x100000000
leaq 0x1e9f33(%rip), %rax    # 0x277ab0
cmpq %rcx, (%rax)
jne 0x8dc27
cvtsi2sdl -0x38(%rbp), %xmm0
movsd -0x48(%rbp), %xmm1
movsd 0xe1480(%rip), %xmm2    # 0x16f018
divsd %xmm2, %xmm1
addsd %xmm1, %xmm0
movsd %xmm0, -0x48(%rbp)
leaq -0x250(%rbp), %rdi
cvtsi2sdl -0x34(%rbp), %xmm0
movsd -0x48(%rbp), %xmm1
movsd 0xe1492(%rip), %xmm2    # 0x16f050
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsbl -0x25(%rbp), %edx
leaq 0xf619a(%rip), %rsi     # 0x183d6b
movb $0x1, %al
callq 0x9060
leaq 0x2de5e1(%rip), %rax    # 0x36c1c0
movsd (%rax), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jb 0x8dc08
leaq -0x350(%rbp), %rdi
movsd -0x18(%rbp), %xmm0
leaq 0xf6192(%rip), %rsi     # 0x183d91
movb $0x1, %al
callq 0x9060
jmp 0x8dc22
leaq -0x350(%rbp), %rdi
movsd -0x18(%rbp), %xmm0
leaq 0xf961e(%rip), %rsi     # 0x187239
movb $0x1, %al
callq 0x9060
jmp 0x8dcaa
leaq 0x1e9e82(%rip), %rax    # 0x277ab0
cmpq $0x100000, (%rax)       # imm = 0x100000
jne 0x8dc7e
cvtsi2sdl -0x38(%rbp), %xmm0
movsd -0x48(%rbp), %xmm1
movsd 0xe13cf(%rip), %xmm2    # 0x16f018
divsd %xmm2, %xmm1
addsd %xmm1, %xmm0
movsd %xmm0, -0x48(%rbp)
leaq -0x250(%rbp), %rdi
movl -0x34(%rbp), %edx
movsd -0x48(%rbp), %xmm0
movsbl -0x25(%rbp), %ecx
movsd -0x18(%rbp), %xmm1
leaq 0xf6122(%rip), %rsi     # 0x183d97
movb $0x2, %al
callq 0x9060
jmp 0x8dca8
leaq -0x250(%rbp), %rdi
movsbl -0x25(%rbp), %edx
movl -0x34(%rbp), %ecx
movl -0x38(%rbp), %r8d
movsd -0x48(%rbp), %xmm0
movsd -0x18(%rbp), %xmm1
leaq 0xf6106(%rip), %rsi     # 0x183da7
movb $0x2, %al
callq 0x9060
jmp 0x8dcaa
jmp 0x8dcac
xorps %xmm0, %xmm0
callq 0x88f10
movabsq $0x400000000, %rcx      # imm = 0x400000000
leaq 0x1e9deb(%rip), %rax    # 0x277ab0
cmpq %rcx, (%rax)
jne 0x8dcfe
leaq -0x150(%rbp), %rdx
leaq -0x250(%rbp), %rcx
leaq 0x30d721(%rip), %rdi    # 0x39b400
leaq 0xf60d0(%rip), %rsi     # 0x183db6
movb $0x0, %al
callq 0x9060
leaq 0x30d70c(%rip), %rdi    # 0x39b400
callq 0x83490
jmp 0x8de45
movabsq $0x100000000, %rcx      # imm = 0x100000000
leaq 0x1e9da1(%rip), %rax    # 0x277ab0
cmpq %rcx, (%rax)
jne 0x8dd19
jmp 0x8de43
leaq 0x1e9d90(%rip), %rax    # 0x277ab0
cmpq $0x100000, (%rax)       # imm = 0x100000
jne 0x8dd69
leaq 0xf6090(%rip), %rdi     # 0x183dc0
callq 0x85d30
leaq -0x150(%rbp), %rdx
leaq -0x250(%rbp), %rcx
leaq 0x30d6b6(%rip), %rdi    # 0x39b400
leaq 0xf6077(%rip), %rsi     # 0x183dc8
movb $0x0, %al
callq 0x9060
leaq 0x30d6a1(%rip), %rdi    # 0x39b400
callq 0x85d30
jmp 0x8de41
leaq 0x1e9d40(%rip), %rax    # 0x277ab0
cmpq $0x8, (%rax)
jne 0x8ddc7
leaq -0x150(%rbp), %rdx
leaq -0x250(%rbp), %rcx
leaq 0x30d675(%rip), %rdi    # 0x39b400
leaq 0xf605a(%rip), %rsi     # 0x183dec
movb $0x0, %al
callq 0x9060
leaq 0x30d660(%rip), %rdi    # 0x39b400
movl $0x1, %esi
callq 0x82fd0
movl $0x3e8, %edi            # imm = 0x3E8
callq 0xb8b0
leaq 0xf96c0(%rip), %rdi     # 0x18747b
movl $0x65, %esi
callq 0x82fd0
jmp 0x8de3f
leaq 0x1ec3f2(%rip), %rax    # 0x27a1c0
cmpl $0x4e, (%rax)
jne 0x8de09
leaq -0x150(%rbp), %rdx
leaq -0x250(%rbp), %rcx
leaq 0x30d618(%rip), %rdi    # 0x39b400
leaq 0xf5fe5(%rip), %rsi     # 0x183dd4
movb $0x0, %al
callq 0x9060
leaq 0x30d603(%rip), %rdi    # 0x39b400
movl $0x1, %esi
callq 0x82fd0
jmp 0x8de3d
leaq -0x150(%rbp), %rdx
leaq -0x250(%rbp), %rcx
leaq 0x30d5e2(%rip), %rdi    # 0x39b400
leaq 0xf5fc1(%rip), %rsi     # 0x183de6
movb $0x0, %al
callq 0x9060
leaq 0x30d5cd(%rip), %rdi    # 0x39b400
movl $0x1, %esi
callq 0x82fd0
jmp 0x8de3f
jmp 0x8de41
jmp 0x8de43
jmp 0x8de45
jmp 0x8e260
leaq 0x1e9c5f(%rip), %rax    # 0x277ab0
cmpq $0x8000, (%rax)         # imm = 0x8000
jne 0x8e007
leaq -0x150(%rbp), %rdi
leaq 0x1084c7(%rip), %rsi    # 0x196333
callq 0x9350
movsd -0x8(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jb 0x8deb3
movsd 0xe11f1(%rip), %xmm0    # 0x16f078
mulsd -0x8(%rbp), %xmm0
movsd 0xe3734(%rip), %xmm1    # 0x1715c8
divsd %xmm1, %xmm0
cvttsd2si %xmm0, %edx
leaq 0x30d55d(%rip), %rdi    # 0x39b400
leaq 0xf69ed(%rip), %rsi     # 0x184897
movb $0x0, %al
callq 0x9060
jmp 0x8dee5
movsd 0xe11bd(%rip), %xmm0    # 0x16f078
mulsd -0x8(%rbp), %xmm0
movsd 0xe3700(%rip), %xmm1    # 0x1715c8
divsd %xmm1, %xmm0
cvttsd2si %xmm0, %edx
leaq 0x30d529(%rip), %rdi    # 0x39b400
leaq 0xf8dbc(%rip), %rsi     # 0x186c9a
movb $0x0, %al
callq 0x9060
leaq -0x150(%rbp), %rdi
leaq 0x30d50d(%rip), %rsi    # 0x39b400
callq 0x96a0
movsd -0x10(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jb 0x8df3a
movsd 0xe116a(%rip), %xmm0    # 0x16f078
mulsd -0x10(%rbp), %xmm0
movsd 0xe36ad(%rip), %xmm1    # 0x1715c8
divsd %xmm1, %xmm0
cvttsd2si %xmm0, %edx
leaq 0x30d4d6(%rip), %rdi    # 0x39b400
leaq 0xf8d68(%rip), %rsi     # 0x186c99
movb $0x0, %al
callq 0x9060
jmp 0x8df6c
movsd 0xe1136(%rip), %xmm0    # 0x16f078
mulsd -0x10(%rbp), %xmm0
movsd 0xe3679(%rip), %xmm1    # 0x1715c8
divsd %xmm1, %xmm0
cvttsd2si %xmm0, %edx
leaq 0x30d4a2(%rip), %rdi    # 0x39b400
leaq 0x10316b(%rip), %rsi    # 0x1910d0
movb $0x0, %al
callq 0x9060
leaq -0x150(%rbp), %rdi
leaq 0x30d486(%rip), %rsi    # 0x39b400
callq 0x96a0
movsd -0x18(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jb 0x8dfb9
movsd -0x18(%rbp), %xmm0
movsd 0xe1126(%rip), %xmm1    # 0x16f0c0
divsd %xmm1, %xmm0
cvttsd2si %xmm0, %edx
leaq 0x30d457(%rip), %rdi    # 0x39b400
leaq 0xf5e49(%rip), %rsi     # 0x183df9
movb $0x0, %al
callq 0x9060
jmp 0x8dfe3
movsd -0x18(%rbp), %xmm0
movsd 0xe10fa(%rip), %xmm1    # 0x16f0c0
divsd %xmm1, %xmm0
cvttsd2si %xmm0, %edx
leaq 0x30d42b(%rip), %rdi    # 0x39b400
leaq 0xf63c7(%rip), %rsi     # 0x1843a3
movb $0x0, %al
callq 0x9060
leaq -0x150(%rbp), %rdi
leaq 0x30d40f(%rip), %rsi    # 0x39b400
callq 0x96a0
leaq -0x150(%rbp), %rdi
callq 0x899c0
jmp 0x8e25e
leaq 0x1e9aa2(%rip), %rax    # 0x277ab0
cmpq $0x800000, (%rax)       # imm = 0x800000
jne 0x8e0dd
leaq 0x2de18e(%rip), %rax    # 0x36c1b0
movsd (%rax), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0x8e056
jp 0x8e056
leaq 0x2de180(%rip), %rax    # 0x36c1b8
movsd (%rax), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0x8e056
jp 0x8e056
movl $0x7, %edi
movl $0x155b, %esi           # imm = 0x155B
callq 0x14df0
movsd -0x8(%rbp), %xmm0
leaq 0x2de14e(%rip), %rax    # 0x36c1b0
movsd %xmm0, (%rax)
movsd -0x10(%rbp), %xmm0
leaq 0x2de146(%rip), %rax    # 0x36c1b8
movsd %xmm0, (%rax)
movsd -0x18(%rbp), %xmm0
leaq 0x2de13e(%rip), %rax    # 0x36c1c0
movsd %xmm0, (%rax)
movsd -0x8(%rbp), %xmm0
leaq 0x30c45e(%rip), %rax    # 0x39a4f0
movsd %xmm0, (%rax)
movsd -0x10(%rbp), %xmm0
leaq 0x30c456(%rip), %rax    # 0x39a4f8
movsd %xmm0, (%rax)
movsd -0x18(%rbp), %xmm0
leaq 0x30c44e(%rip), %rax    # 0x39a500
movsd %xmm0, (%rax)
leaq 0x2de663(%rip), %rax    # 0x36c720
movsd (%rax), %xmm0
callq 0x13b5b0
leaq 0x2de643(%rip), %rax    # 0x36c710
movsd (%rax), %xmm0
xorl %edi, %edi
callq 0x13cd20
jmp 0x8e25c
leaq 0x1e99cc(%rip), %rax    # 0x277ab0
cmpq $0x200000, (%rax)       # imm = 0x200000
jne 0x8e17d
movsd 0xe0f47(%rip), %xmm0    # 0x16f040
mulsd -0x8(%rbp), %xmm0
movsd 0xe0f72(%rip), %xmm1    # 0x16f078
mulsd %xmm1, %xmm0
movsd 0xe34b6(%rip), %xmm1    # 0x1715c8
divsd %xmm1, %xmm0
cvttsd2si %xmm0, %rdx
movsd 0xe0f1d(%rip), %xmm0    # 0x16f040
mulsd -0x10(%rbp), %xmm0
movsd 0xe0f48(%rip), %xmm1    # 0x16f078
mulsd %xmm1, %xmm0
movsd 0xe348c(%rip), %xmm1    # 0x1715c8
divsd %xmm1, %xmm0
cvttsd2si %xmm0, %rcx
cvttsd2si -0x18(%rbp), %r8
leaq 0x30d2ae(%rip), %rdi    # 0x39b400
leaq 0xf5ca6(%rip), %rsi     # 0x183dff
movb $0x0, %al
callq 0x9060
leaq 0x30d299(%rip), %rdi    # 0x39b400
callq 0x83580
leaq 0xf5a86(%rip), %rdi     # 0x183bf9
callq 0x83580
jmp 0x8e25a
leaq 0x1e992c(%rip), %rax    # 0x277ab0
cmpq $0x1, (%rax)
jne 0x8e1c8
movl $0x32, %edi
callq 0x824f0
movsd -0x8(%rbp), %xmm0
cvtsd2ss %xmm0, %xmm0
callq 0x7b600
movsd -0x10(%rbp), %xmm0
cvtsd2ss %xmm0, %xmm0
callq 0x7b600
movsd -0x18(%rbp), %xmm0
cvtsd2ss %xmm0, %xmm0
callq 0x7b600
callq 0x82590
jmp 0x8e258
leaq 0x1e98e1(%rip), %rax    # 0x277ab0
cmpq $0x4, (%rax)
jne 0x8e1f0
movsd -0x8(%rbp), %xmm0
movsd -0x10(%rbp), %xmm1
movsd -0x18(%rbp), %xmm2
movl $0x2, %edi
callq 0x8e2f0
jmp 0x8e256
leaq 0x1e98b9(%rip), %rax    # 0x277ab0
cmpq $0x80, (%rax)
jne 0x8e21b
movsd -0x8(%rbp), %xmm0
movsd -0x10(%rbp), %xmm1
movsd -0x18(%rbp), %xmm2
movl $0x2, %edi
callq 0x8c850
jmp 0x8e254
leaq 0x1e988e(%rip), %rax    # 0x277ab0
cmpq $0x100, (%rax)          # imm = 0x100
jne 0x8e252
movsd -0x8(%rbp), %xmm0
movsd -0x10(%rbp), %xmm1
movsd -0x18(%rbp), %xmm2
leaq 0x1ec063(%rip), %rax    # 0x27a2a4
movl (%rax), %esi
movl $0x6, %edi
movl $0x1, %edx
callq 0x8e4f0
jmp 0x8e254
jmp 0x8e256
jmp 0x8e258
jmp 0x8e25a
jmp 0x8e25c
jmp 0x8e25e
jmp 0x8e260
jmp 0x8e262
jmp 0x8e264
jmp 0x8e266
jmp 0x8e268
jmp 0x8e26a
jmp 0x8e26c
jmp 0x8e26e
leaq 0x1e97af(%rip), %rax    # 0x277a24
movl $0x1e64, (%rax)         # imm = 0x1E64
addq $0x360, %rsp            # imm = 0x360
popq %rbp
retq
nopw %cs:(%rax,%rax)