// File: jkingan[P]ladyheather/heathgps.cpp
// Function: show_osc_params(int, int)
void show_osc_params(int row,int col)
{
double dac;
double drift;
double tempco;
char c[10];
int prn;
int color;
int max_row;

   if(zoom_screen == 'O') return;
   if(zoom_screen == 'H') return;

   prn = 0;
   c[0] = 0;

   if(all_adevs) {
      if(SCREEN_WIDTH > NARROW_SCREEN)   col += 3;
      else if(small_font == 1) col -= 3;
   }

////   if((rcvr_type == BRANDY_RCVR) && (have_info & MANUF_PARAMS)) {
   if(rcvr_type == BRANDY_RCVR) {
      row = show_brandy_info(row, col);
   }
   else if(rcvr_type == LPFRS_RCVR) {
      max_row = MOUSE_ROW;
      if(zoom_screen == 'D') {
         max_row = (SCREEN_HEIGHT / TEXT_HEIGHT) - 3;
         col = 3;
      }
//    else if(osc_params) ;
      else if(plot_digital_clock) {
         max_row = (row + 9);
      }
      row = show_lpfrs_info(row,col, max_row);
   }
   else if(rcvr_type == PRS_RCVR) {
      max_row = MOUSE_ROW;
      if(zoom_screen == 'D') {
         max_row = (SCREEN_HEIGHT / TEXT_HEIGHT) - 3;
         col = 3;
      }
//    else if(osc_params) ;
      else if(plot_digital_clock) {
         max_row = (row + 9);
      }
      row = show_prs_info(row,col, max_row);
   }
   else if(rcvr_type == RFTG_RCVR) {
      row = show_rftg_info(row, col);
   }
   else if(rcvr_type == SA35_RCVR) {
      max_row = MOUSE_ROW;
      if(zoom_screen == 'D') {
         max_row = (SCREEN_HEIGHT / TEXT_HEIGHT) - 3;
         col = 3;
      }
//    else if(osc_params) ;
      else if(plot_digital_clock) {
         max_row = (row + 9);
      }
      row = show_sa35_info(row,col, max_row);
   }
   else if(rcvr_type == SRO_RCVR) {
      max_row = MOUSE_ROW;
      if(zoom_screen == 'D') {
         max_row = (SCREEN_HEIGHT / TEXT_HEIGHT) - 3;
         col = 3;
      }
//    else if(osc_params) ;
      else if(plot_digital_clock) {
         max_row = (row + 9);
      }
      row = show_sro_info(row,col, max_row);
   }
   else if(rcvr_type == TICC_RCVR) {
      show_ticc_config(row);
   }
   else if(rcvr_type == X72_RCVR) {
      max_row = MOUSE_ROW;
      if(zoom_screen == 'D') {
         max_row = (SCREEN_HEIGHT / TEXT_HEIGHT) - 3;
         col = 3;
      }
//    else if(osc_params) ;
      else if(plot_digital_clock) {
         max_row = (row + 9);
      }
      row = show_x72_info(row,col, max_row);
   }

   else if(zoom_screen) return;

   else if(rcvr_type == STAR_RCVR) {
      if(have_tc & 0x01) color = WHITE;
      else               color = GREY; 
      sprintf(out, "User time constant: %.0f secs    ", time_constant);
      vidstr(row++, col, color, out);
      if(row >= MOUSE_ROW) goto show_max_sigs;

      if(have_tc & 0x02) color = WHITE;
      else               color = GREY; 
      sprintf(out, "Real time constant: %.0f secs    ", real_time_constant);
      vidstr(row++, col, color, out);
      if(row >= MOUSE_ROW) goto show_max_sigs;

      if(have_gpsdo_ref & 0x02) color = WHITE;
      else                      color = GREY; 
      if(gpsdo_ref) sprintf(out, "GPSDO reference:    AUX PPS    ");
      else          sprintf(out, "GPSDO reference:    GPS        ");
      vidstr(row++, col, color, out);
      if(row >= MOUSE_ROW) goto show_max_sigs;

      if(have_star_hbsq & 0x01) color = WHITE;
      else                     color = GREY;
      sprintf(out, "HBSQ squelch time:  %d mins    ", user_hbsq);
      vidstr(row++, col, color, out);
      if(row >= MOUSE_ROW) goto show_max_sigs;

      if(have_star_hbsq & 0x02) color = WHITE;
      else                     color = GREY;
      sprintf(out, "Time until HBSQ:    %d mins    ", current_hbsq);
      vidstr(row++, col, color, out);
      if(row >= MOUSE_ROW) goto show_max_sigs;

      if(star_type == OSA_TYPE) {
         if(have_star_wtr & 0x01) color = WHITE;
         else                     color = GREY;
         sprintf(out, "Wait to restore:    %d secs    ", star_wtr);
         vidstr(row++, col, color, out);
         if(row >= MOUSE_ROW) goto show_max_sigs;

         if(have_star_wtr & 0x02) color = WHITE;
         else                     color = GREY;
         sprintf(out, "GPS WTR timer:      %d secs    ", star_wtr_timer);
         vidstr(row++, col, color, out);
         if(row >= MOUSE_ROW) goto show_max_sigs;

         if(have_star_wtr & 0x04) color = WHITE;
         else                     color = GREY;
         sprintf(out, "AUX WTR timer:      %d secs    ", star_aux_timer);
         vidstr(row++, col, color, out);
         if(row >= MOUSE_ROW) goto show_max_sigs;
      }
   }
   else if(rcvr_type == TSIP_RCVR) {  //tqtq
      if(have_jam_sync) color = WHITE;
      else color = GREY;
      if(jam_sync < 10.0)       sprintf(out, "Jam sync threshold:   %.3f ns    ", jam_sync);
      else if(jam_sync < 100.0) sprintf(out, "Jam sync threshold:  %.3f ns    ", jam_sync);
      else                      sprintf(out, "Jam sync threshold: %.3f ns    ", jam_sync);
      if(saw_ntpx) vidstr(row++, col, GREY,  out);
      else         vidstr(row++, col, color, out);

      if(have_freq_ofs) color = WHITE;
      else color = GREY;
      if(max_freq_offset < 10.0) sprintf(out, "Max freq offset:      %.3f%s    ", max_freq_offset, ppb_string);
      else                       sprintf(out, "Max freq offset:     %.3f%s    ", max_freq_offset, ppb_string);
      if(saw_ntpx) vidstr(row++, col, GREY,  out);
      else         vidstr(row++, col, color, out);

      if(have_tc) color = WHITE;
      else        color = GREY; 
      sprintf(out, "Time constant:      %.3f secs    ", time_constant);
      vidstr(row++, col, color, out);

      if(have_damp) color = WHITE;
      else          color = GREY; 
      sprintf(out, "Damping factor:       %.3f    ", damping_factor);
      vidstr(row++, col, color, out);

      if(gain_color == YELLOW) color = gain_color;
      else if(have_gain) color = WHITE;
      else color = GREY; 
      sprintf(out, "Osc gain:            %+.6f Hz/V    ", osc_gain);
      vidstr(row++, col, color, out);

      if(have_initv) color = WHITE;
      else           color = GREY; 
      sprintf(out, "Initial DAC voltage: %+.6f V    ", initial_voltage);
      if(saw_ntpx) vidstr(row++, col, GREY,  out);
      else         vidstr(row++, col, color, out);

      if(have_minv) color = WHITE;
      else          color = GREY; 
      sprintf(out, "Min EFC voltage:     %+.6f V    ", min_volts);
      vidstr(row++, col, color, out);

      if(have_maxv) color = WHITE;
      else          color = GREY; 
      sprintf(out, "Max EFC voltage:     %+.6f V    ", max_volts);
      vidstr(row++, col, color, out);

      if(have_dac_range) {
         sprintf(out, "EFC DAC range:       %+.2f to %+.2f V ", min_dac_v, max_dac_v);
         if(saw_ntpx) vidstr(row++, col, GREY,  out);
         else         vidstr(row++, col, WHITE, out);
      }


   
      // Calculate oscillator drift rate per day based upon the dac
      // voltage change over the plot display interval.  This assumes
      // that the temperature is stable.
      dac = plot[DAC].a1;
      drift = (dac * (double) osc_gain) * 24.0*60.0*60.0;  // Hz per day
      sprintf(out, "Osc drift rate: %14.6e parts/day   ", drift/10.0E6F);
      vidstr(row+1, col, WHITE, out);

      // Calculate oscillator freq change with temperature over the plot
      // display interval.  This assumes that the temperature has changed
      // during the display interval.
      tempco = plot[TEMP].a1;  // degrees/sec
      if(tempco) {
         tempco = plot[OSC].a1 / tempco;  // (ppb/sec) divided by (degrees/sec)
         tempco /= (-1.0E9);              // convert ppb/degree C into parts/C
         sprintf(out, "Osc tempco:     %14.6e parts/%cC   ", tempco, DEGREES);
         vidstr(row+2, col, WHITE, out);
      }
   }
   else if(rcvr_type == UCCM_RCVR) {
      if(have_pullin) color = WHITE;
      else            color = GREY; 
      sprintf(out, "Pullin range:       %3d PPB      ", pullin_range);
      vidstr(row++, col, color, out);
   }

   show_max_sigs:
#ifdef SIG_LEVELS
if(rcvr_type != RFTG_RCVR) {
   show_max_signals();
}
#endif

   if(0) {  // alternate osc parameter calculations
      if(view_interval == 0) return;
      if(plot_mag == 0) return;
      if(plot[DAC].stat_count == 0.0) return;
      if(plot[OSC].stat_count == 0.0) return;
      ++row;

      dac = plot[DAC].sum_change / plot[DAC].stat_count / view_interval;
      dac /= plot_mag;
      drift = (dac * (double) osc_gain) * 24.0*60.0*60.0;  // Hz per day
      sprintf(out, "Osc drift rate: %14.6e parts/day   ", drift/10.0E6F);
      vidstr(row++, col, WHITE, out);

      tempco = plot[TEMP].sum_change / plot[TEMP].stat_count / view_interval;
      tempco /= plot_mag;
      if(tempco) {
         tempco = (plot[OSC].sum_change/plot[OSC].stat_count/view_interval) / tempco;  // (ppb/sec) divided by (degrees/sec)
         tempco /= (-1.0E9);              // convert ppb/degree C into parts/C
         sprintf(out, "Osc tempco:     %14.6e parts/%cC   ", tempco, DEGREES);
         vidstr(row++, col, WHITE, out);
      }
   }

   return;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movl %edi, -0x4(%rbp)
movl %esi, -0x8(%rbp)
leaq 0x27d653(%rip), %rax    # 0x36b988
movzbl (%rax), %eax
cmpl $0x4f, %eax
jne 0xee342
jmp 0xef0fa
leaq 0x27d63f(%rip), %rax    # 0x36b988
movzbl (%rax), %eax
cmpl $0x48, %eax
jne 0xee356
jmp 0xef0fa
movl $0x0, -0x30(%rbp)
movb $0x0, -0x2a(%rbp)
leaq 0x1adbb6(%rip), %rax    # 0x29bf1e
cmpb $0x0, (%rax)
je 0xee3be
leaq 0x18966c(%rip), %rax    # 0x2779e0
movl (%rax), %eax
movl %eax, -0x3c(%rbp)
leaq 0x1943a4(%rip), %rax    # 0x282724
imull $0x31a, (%rax), %eax    # imm = 0x31A
movl $0x64, %ecx
cltd
idivl %ecx
movl %eax, %ecx
movl -0x3c(%rbp), %eax
cmpl %ecx, %eax
jle 0xee3a2
movl -0x8(%rbp), %eax
addl $0x3, %eax
movl %eax, -0x8(%rbp)
jmp 0xee3bc
leaq 0x189690(%rip), %rax    # 0x277a39
movzbl (%rax), %eax
cmpl $0x1, %eax
jne 0xee3ba
movl -0x8(%rbp), %eax
subl $0x3, %eax
movl %eax, -0x8(%rbp)
jmp 0xee3bc
jmp 0xee3be
leaq 0x1896eb(%rip), %rax    # 0x277ab0
cmpq $0x40000, (%rax)        # imm = 0x40000
jne 0xee3e1
movl -0x4(%rbp), %edi
movl -0x8(%rbp), %esi
callq 0xed5a0
movl %eax, -0x4(%rbp)
jmp 0xef0e1
leaq 0x1896c8(%rip), %rax    # 0x277ab0
cmpq $0x10000000, (%rax)     # imm = 0x10000000
jne 0xee45b
leaq 0x189590(%rip), %rax    # 0x277988
movl (%rax), %eax
movl %eax, -0x38(%rbp)
leaq 0x27d584(%rip), %rax    # 0x36b988
movzbl (%rax), %eax
cmpl $0x44, %eax
jne 0xee42e
leaq 0x1895d1(%rip), %rax    # 0x2779e4
movl (%rax), %eax
leaq 0x1895d8(%rip), %rcx    # 0x2779f4
cltd
idivl (%rcx)
subl $0x3, %eax
movl %eax, -0x38(%rbp)
movl $0x3, -0x8(%rbp)
jmp 0xee445
leaq 0x18c190(%rip), %rax    # 0x27a5c5
cmpb $0x0, (%rax)
je 0xee443
movl -0x4(%rbp), %eax
addl $0x9, %eax
movl %eax, -0x38(%rbp)
jmp 0xee445
movl -0x4(%rbp), %edi
movl -0x8(%rbp), %esi
movl -0x38(%rbp), %edx
callq 0x112630
movl %eax, -0x4(%rbp)
jmp 0xef0df
leaq 0x18964e(%rip), %rax    # 0x277ab0
cmpq $0x1000000, (%rax)      # imm = 0x1000000
jne 0xee4d5
leaq 0x189516(%rip), %rax    # 0x277988
movl (%rax), %eax
movl %eax, -0x38(%rbp)
leaq 0x27d50a(%rip), %rax    # 0x36b988
movzbl (%rax), %eax
cmpl $0x44, %eax
jne 0xee4a8
leaq 0x189557(%rip), %rax    # 0x2779e4
movl (%rax), %eax
leaq 0x18955e(%rip), %rcx    # 0x2779f4
cltd
idivl (%rcx)
subl $0x3, %eax
movl %eax, -0x38(%rbp)
movl $0x3, -0x8(%rbp)
jmp 0xee4bf
leaq 0x18c116(%rip), %rax    # 0x27a5c5
cmpb $0x0, (%rax)
je 0xee4bd
movl -0x4(%rbp), %eax
addl $0x9, %eax
movl %eax, -0x38(%rbp)
jmp 0xee4bf
movl -0x4(%rbp), %edi
movl -0x8(%rbp), %esi
movl -0x38(%rbp), %edx
callq 0x113570
movl %eax, -0x4(%rbp)
jmp 0xef0dd
leaq 0x1895d4(%rip), %rax    # 0x277ab0
cmpq $0x400000, (%rax)       # imm = 0x400000
jne 0xee4f8
movl -0x4(%rbp), %edi
movl -0x8(%rbp), %esi
callq 0xed9a0
movl %eax, -0x4(%rbp)
jmp 0xef0db
movabsq $0x1000000000, %rcx     # imm = 0x1000000000
leaq 0x1895a7(%rip), %rax    # 0x277ab0
cmpq %rcx, (%rax)
jne 0xee578
leaq 0x189473(%rip), %rax    # 0x277988
movl (%rax), %eax
movl %eax, -0x38(%rbp)
leaq 0x27d467(%rip), %rax    # 0x36b988
movzbl (%rax), %eax
cmpl $0x44, %eax
jne 0xee54b
leaq 0x1894b4(%rip), %rax    # 0x2779e4
movl (%rax), %eax
leaq 0x1894bb(%rip), %rcx    # 0x2779f4
cltd
idivl (%rcx)
subl $0x3, %eax
movl %eax, -0x38(%rbp)
movl $0x3, -0x8(%rbp)
jmp 0xee562
leaq 0x18c073(%rip), %rax    # 0x27a5c5
cmpb $0x0, (%rax)
je 0xee560
movl -0x4(%rbp), %eax
addl $0x9, %eax
movl %eax, -0x38(%rbp)
jmp 0xee562
movl -0x4(%rbp), %edi
movl -0x8(%rbp), %esi
movl -0x38(%rbp), %edx
callq 0x1129e0
movl %eax, -0x4(%rbp)
jmp 0xef0d9
leaq 0x189531(%rip), %rax    # 0x277ab0
cmpq $0x8000000, (%rax)      # imm = 0x8000000
jne 0xee5f2
leaq 0x1893f9(%rip), %rax    # 0x277988
movl (%rax), %eax
movl %eax, -0x38(%rbp)
leaq 0x27d3ed(%rip), %rax    # 0x36b988
movzbl (%rax), %eax
cmpl $0x44, %eax
jne 0xee5c5
leaq 0x18943a(%rip), %rax    # 0x2779e4
movl (%rax), %eax
leaq 0x189441(%rip), %rcx    # 0x2779f4
cltd
idivl (%rcx)
subl $0x3, %eax
movl %eax, -0x38(%rbp)
movl $0x3, -0x8(%rbp)
jmp 0xee5dc
leaq 0x18bff9(%rip), %rax    # 0x27a5c5
cmpb $0x0, (%rax)
je 0xee5da
movl -0x4(%rbp), %eax
addl $0x9, %eax
movl %eax, -0x38(%rbp)
jmp 0xee5dc
movl -0x4(%rbp), %edi
movl -0x8(%rbp), %esi
movl -0x38(%rbp), %edx
callq 0x112cb0
movl %eax, -0x4(%rbp)
jmp 0xef0d7
leaq 0x1894b7(%rip), %rax    # 0x277ab0
cmpq $0x10000, (%rax)        # imm = 0x10000
jne 0xee60f
movl -0x4(%rbp), %edi
callq 0xef100
jmp 0xef0d5
leaq 0x18949a(%rip), %rax    # 0x277ab0
cmpq $0x2000000, (%rax)      # imm = 0x2000000
jne 0xee689
leaq 0x189362(%rip), %rax    # 0x277988
movl (%rax), %eax
movl %eax, -0x38(%rbp)
leaq 0x27d356(%rip), %rax    # 0x36b988
movzbl (%rax), %eax
cmpl $0x44, %eax
jne 0xee65c
leaq 0x1893a3(%rip), %rax    # 0x2779e4
movl (%rax), %eax
leaq 0x1893aa(%rip), %rcx    # 0x2779f4
cltd
idivl (%rcx)
subl $0x3, %eax
movl %eax, -0x38(%rbp)
movl $0x3, -0x8(%rbp)
jmp 0xee673
leaq 0x18bf62(%rip), %rax    # 0x27a5c5
cmpb $0x0, (%rax)
je 0xee671
movl -0x4(%rbp), %eax
addl $0x9, %eax
movl %eax, -0x38(%rbp)
jmp 0xee673
movl -0x4(%rbp), %edi
movl -0x8(%rbp), %esi
movl -0x38(%rbp), %edx
callq 0x114760
movl %eax, -0x4(%rbp)
jmp 0xef0d3
leaq 0x27d2f8(%rip), %rax    # 0x36b988
cmpb $0x0, (%rax)
je 0xee69a
jmp 0xef0fa
leaq 0x18940f(%rip), %rax    # 0x277ab0
cmpq $0x1000, (%rax)         # imm = 0x1000
jne 0xeea73
leaq 0x27de1b(%rip), %rax    # 0x36c4d0
movl (%rax), %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0xee6c8
movl $0xf, -0x34(%rbp)
jmp 0xee6cf
movl $0x8, -0x34(%rbp)
leaq 0x27dbfa(%rip), %rax    # 0x36c2d0
movsd (%rax), %xmm0
leaq 0x2acd1f(%rip), %rdi    # 0x39b400
leaq 0x9b885(%rip), %rsi     # 0x189f6d
movb $0x1, %al
callq 0x9060
movl -0x4(%rbp), %edi
movl %edi, %eax
addl $0x1, %eax
movl %eax, -0x4(%rbp)
movl -0x8(%rbp), %esi
movl -0x34(%rbp), %eax
leaq 0x2accf9(%rip), %rcx    # 0x39b400
movzbl %al, %edx
callq 0x10ee0
movl -0x4(%rbp), %eax
leaq 0x18926f(%rip), %rcx    # 0x277988
cmpl (%rcx), %eax
jl 0xee722
jmp 0xef0e3
leaq 0x27dda7(%rip), %rax    # 0x36c4d0
movl (%rax), %eax
andl $0x2, %eax
cmpl $0x0, %eax
je 0xee73c
movl $0xf, -0x34(%rbp)
jmp 0xee743
movl $0x8, -0x34(%rbp)
leaq 0x27db8e(%rip), %rax    # 0x36c2d8
movsd (%rax), %xmm0
leaq 0x2accab(%rip), %rdi    # 0x39b400
leaq 0x9b833(%rip), %rsi     # 0x189f8f
movb $0x1, %al
callq 0x9060
movl -0x4(%rbp), %edi
movl %edi, %eax
addl $0x1, %eax
movl %eax, -0x4(%rbp)
movl -0x8(%rbp), %esi
movl -0x34(%rbp), %eax
leaq 0x2acc85(%rip), %rcx    # 0x39b400
movzbl %al, %edx
callq 0x10ee0
movl -0x4(%rbp), %eax
leaq 0x1891fb(%rip), %rcx    # 0x277988
cmpl (%rcx), %eax
jl 0xee796
jmp 0xef0e3
leaq 0x27d6c7(%rip), %rax    # 0x36be64
movl (%rax), %eax
andl $0x2, %eax
cmpl $0x0, %eax
je 0xee7b0
movl $0xf, -0x34(%rbp)
jmp 0xee7b7
movl $0x8, -0x34(%rbp)
leaq 0x27d6a2(%rip), %rax    # 0x36be60
cmpl $0x0, (%rax)
je 0xee7da
leaq 0x2acc36(%rip), %rdi    # 0x39b400
leaq 0x9b7e0(%rip), %rsi     # 0x189fb1
movb $0x0, %al
callq 0x9060
jmp 0xee7ef
leaq 0x2acc1f(%rip), %rdi    # 0x39b400
leaq 0x9b7e9(%rip), %rsi     # 0x189fd1
movb $0x0, %al
callq 0x9060
movl -0x4(%rbp), %edi
movl %edi, %eax
addl $0x1, %eax
movl %eax, -0x4(%rbp)
movl -0x8(%rbp), %esi
movl -0x34(%rbp), %eax
leaq 0x2acbf9(%rip), %rcx    # 0x39b400
movzbl %al, %edx
callq 0x10ee0
movl -0x4(%rbp), %eax
leaq 0x18916f(%rip), %rcx    # 0x277988
cmpl (%rcx), %eax
jl 0xee822
jmp 0xef0e3
leaq 0x2ae6ff(%rip), %rax    # 0x39cf28
movl (%rax), %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0xee83c
movl $0xf, -0x34(%rbp)
jmp 0xee843
movl $0x8, -0x34(%rbp)
leaq 0x2ae6d6(%rip), %rax    # 0x39cf20
movl (%rax), %edx
leaq 0x2acbad(%rip), %rdi    # 0x39b400
leaq 0x9b797(%rip), %rsi     # 0x189ff1
movb $0x0, %al
callq 0x9060
movl -0x4(%rbp), %edi
movl %edi, %eax
addl $0x1, %eax
movl %eax, -0x4(%rbp)
movl -0x8(%rbp), %esi
movl -0x34(%rbp), %eax
leaq 0x2acb87(%rip), %rcx    # 0x39b400
movzbl %al, %edx
callq 0x10ee0
movl -0x4(%rbp), %eax
leaq 0x1890fd(%rip), %rcx    # 0x277988
cmpl (%rcx), %eax
jl 0xee894
jmp 0xef0e3
leaq 0x2ae68d(%rip), %rax    # 0x39cf28
movl (%rax), %eax
andl $0x2, %eax
cmpl $0x0, %eax
je 0xee8ae
movl $0xf, -0x34(%rbp)
jmp 0xee8b5
movl $0x8, -0x34(%rbp)
leaq 0x2ae668(%rip), %rax    # 0x39cf24
movl (%rax), %edx
leaq 0x2acb3b(%rip), %rdi    # 0x39b400
leaq 0x9b745(%rip), %rsi     # 0x18a011
movb $0x0, %al
callq 0x9060
movl -0x4(%rbp), %edi
movl %edi, %eax
addl $0x1, %eax
movl %eax, -0x4(%rbp)
movl -0x8(%rbp), %esi
movl -0x34(%rbp), %eax
leaq 0x2acb15(%rip), %rcx    # 0x39b400
movzbl %al, %edx
callq 0x10ee0
movl -0x4(%rbp), %eax
leaq 0x18908b(%rip), %rcx    # 0x277988
cmpl (%rcx), %eax
jl 0xee906
jmp 0xef0e3
leaq 0x18b8bb(%rip), %rax    # 0x27a1c8
cmpl $0x4f, (%rax)
jne 0xeea6e
leaq 0x27dc9b(%rip), %rax    # 0x36c5b8
movl (%rax), %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0xee930
movl $0xf, -0x34(%rbp)
jmp 0xee937
movl $0x8, -0x34(%rbp)
leaq 0x2ae5d2(%rip), %rax    # 0x39cf10
movl (%rax), %edx
leaq 0x2acab9(%rip), %rdi    # 0x39b400
leaq 0x9b6e3(%rip), %rsi     # 0x18a031
movb $0x0, %al
callq 0x9060
movl -0x4(%rbp), %edi
movl %edi, %eax
addl $0x1, %eax
movl %eax, -0x4(%rbp)
movl -0x8(%rbp), %esi
movl -0x34(%rbp), %eax
leaq 0x2aca93(%rip), %rcx    # 0x39b400
movzbl %al, %edx
callq 0x10ee0
movl -0x4(%rbp), %eax
leaq 0x189009(%rip), %rcx    # 0x277988
cmpl (%rcx), %eax
jl 0xee988
jmp 0xef0e3
leaq 0x27dc29(%rip), %rax    # 0x36c5b8
movl (%rax), %eax
andl $0x2, %eax
cmpl $0x0, %eax
je 0xee9a2
movl $0xf, -0x34(%rbp)
jmp 0xee9a9
movl $0x8, -0x34(%rbp)
leaq 0x2ae564(%rip), %rax    # 0x39cf14
movl (%rax), %edx
leaq 0x2aca47(%rip), %rdi    # 0x39b400
leaq 0x9b691(%rip), %rsi     # 0x18a051
movb $0x0, %al
callq 0x9060
movl -0x4(%rbp), %edi
movl %edi, %eax
addl $0x1, %eax
movl %eax, -0x4(%rbp)
movl -0x8(%rbp), %esi
movl -0x34(%rbp), %eax
leaq 0x2aca21(%rip), %rcx    # 0x39b400
movzbl %al, %edx
callq 0x10ee0
movl -0x4(%rbp), %eax
leaq 0x188f97(%rip), %rcx    # 0x277988
cmpl (%rcx), %eax
jl 0xee9fa
jmp 0xef0e3
leaq 0x27dbb7(%rip), %rax    # 0x36c5b8
movl (%rax), %eax
andl $0x4, %eax
cmpl $0x0, %eax
je 0xeea14
movl $0xf, -0x34(%rbp)
jmp 0xeea1b
movl $0x8, -0x34(%rbp)
leaq 0x2ae4f6(%rip), %rax    # 0x39cf18
movl (%rax), %edx
leaq 0x2ac9d5(%rip), %rdi    # 0x39b400
leaq 0x9b63f(%rip), %rsi     # 0x18a071
movb $0x0, %al
callq 0x9060
movl -0x4(%rbp), %edi
movl %edi, %eax
addl $0x1, %eax
movl %eax, -0x4(%rbp)
movl -0x8(%rbp), %esi
movl -0x34(%rbp), %eax
leaq 0x2ac9af(%rip), %rcx    # 0x39b400
movzbl %al, %edx
callq 0x10ee0
movl -0x4(%rbp), %eax
leaq 0x188f25(%rip), %rcx    # 0x277988
cmpl (%rcx), %eax
jl 0xeea6c
jmp 0xef0e3
jmp 0xeea6e
jmp 0xef0cf
leaq 0x189036(%rip), %rax    # 0x277ab0
cmpq $0x1, (%rax)
jne 0xef064
leaq 0x27da65(%rip), %rax    # 0x36c4f0
cmpl $0x0, (%rax)
je 0xeea99
movl $0xf, -0x34(%rbp)
jmp 0xeeaa0
movl $0x8, -0x34(%rbp)
movsd 0x80618(%rip), %xmm0    # 0x16f0c0
leaq 0x27d871(%rip), %rax    # 0x36c320
ucomisd (%rax), %xmm0
jbe 0xeead7
leaq 0x27d864(%rip), %rax    # 0x36c320
movsd (%rax), %xmm0
leaq 0x2ac939(%rip), %rdi    # 0x39b400
leaq 0x9b5c3(%rip), %rsi     # 0x18a091
movb $0x1, %al
callq 0x9060
jmp 0xeeb30
movsd 0x80571(%rip), %xmm0    # 0x16f050
leaq 0x27d83a(%rip), %rax    # 0x36c320
ucomisd (%rax), %xmm0
jbe 0xeeb0e
leaq 0x27d82d(%rip), %rax    # 0x36c320
movsd (%rax), %xmm0
leaq 0x2ac902(%rip), %rdi    # 0x39b400
leaq 0x9b5ae(%rip), %rsi     # 0x18a0b3
movb $0x1, %al
callq 0x9060
jmp 0xeeb2e
leaq 0x27d80b(%rip), %rax    # 0x36c320
movsd (%rax), %xmm0
leaq 0x2ac8e0(%rip), %rdi    # 0x39b400
leaq 0x9b5ad(%rip), %rsi     # 0x18a0d4
movb $0x1, %al
callq 0x9060
jmp 0xeeb30
leaq 0x1af5e5(%rip), %rax    # 0x29e11c
cmpb $0x0, (%rax)
je 0xeeb5d
movl -0x4(%rbp), %edi
movl %edi, %eax
addl $0x1, %eax
movl %eax, -0x4(%rbp)
movl -0x8(%rbp), %esi
movl $0x8, %edx
leaq 0x2ac8aa(%rip), %rcx    # 0x39b400
callq 0x10ee0
jmp 0xeeb7d
movl -0x4(%rbp), %edi
movl %edi, %eax
addl $0x1, %eax
movl %eax, -0x4(%rbp)
movl -0x8(%rbp), %esi
movl -0x34(%rbp), %eax
leaq 0x2ac88b(%rip), %rcx    # 0x39b400
movzbl %al, %edx
callq 0x10ee0
leaq 0x27d970(%rip), %rax    # 0x36c4f4
cmpl $0x0, (%rax)
je 0xeeb92
movl $0xf, -0x34(%rbp)
jmp 0xeeb99
movl $0x8, -0x34(%rbp)
movsd 0x8051f(%rip), %xmm0    # 0x16f0c0
leaq 0x27d780(%rip), %rax    # 0x36c328
ucomisd (%rax), %xmm0
jbe 0xeebda
leaq 0x27d773(%rip), %rax    # 0x36c328
movsd (%rax), %xmm0
leaq 0x2afc38(%rip), %rax    # 0x39e7f8
movq (%rax), %rdx
leaq 0x2ac836(%rip), %rdi    # 0x39b400
leaq 0x9b523(%rip), %rsi     # 0x18a0f4
movb $0x1, %al
callq 0x9060
jmp 0xeec04
leaq 0x27d747(%rip), %rax    # 0x36c328
movsd (%rax), %xmm0
leaq 0x2afc0c(%rip), %rax    # 0x39e7f8
movq (%rax), %rdx
leaq 0x2ac80a(%rip), %rdi    # 0x39b400
leaq 0x9b518(%rip), %rsi     # 0x18a115
movb $0x1, %al
callq 0x9060
leaq 0x1af511(%rip), %rax    # 0x29e11c
cmpb $0x0, (%rax)
je 0xeec31
movl -0x4(%rbp), %edi
movl %edi, %eax
addl $0x1, %eax
movl %eax, -0x4(%rbp)
movl -0x8(%rbp), %esi
movl $0x8, %edx
leaq 0x2ac7d6(%rip), %rcx    # 0x39b400
callq 0x10ee0
jmp 0xeec51
movl -0x4(%rbp), %edi
movl %edi, %eax
addl $0x1, %eax
movl %eax, -0x4(%rbp)
movl -0x8(%rbp), %esi
movl -0x34(%rbp), %eax
leaq 0x2ac7b7(%rip), %rcx    # 0x39b400
movzbl %al, %edx
callq 0x10ee0
leaq 0x27d878(%rip), %rax    # 0x36c4d0
cmpl $0x0, (%rax)
je 0xeec66
movl $0xf, -0x34(%rbp)
jmp 0xeec6d
movl $0x8, -0x34(%rbp)
leaq 0x27d65c(%rip), %rax    # 0x36c2d0
movsd (%rax), %xmm0
leaq 0x2ac781(%rip), %rdi    # 0x39b400
leaq 0x9b4af(%rip), %rsi     # 0x18a135
movb $0x1, %al
callq 0x9060
movl -0x4(%rbp), %edi
movl %edi, %eax
addl $0x1, %eax
movl %eax, -0x4(%rbp)
movl -0x8(%rbp), %esi
movl -0x34(%rbp), %eax
leaq 0x2ac75b(%rip), %rcx    # 0x39b400
movzbl %al, %edx
callq 0x10ee0
leaq 0x27d820(%rip), %rax    # 0x36c4d4
cmpl $0x0, (%rax)
je 0xeecc2
movl $0xf, -0x34(%rbp)
jmp 0xeecc9
movl $0x8, -0x34(%rbp)
leaq 0x27d610(%rip), %rax    # 0x36c2e0
movsd (%rax), %xmm0
leaq 0x2ac725(%rip), %rdi    # 0x39b400
leaq 0x9b475(%rip), %rsi     # 0x18a157
movb $0x1, %al
callq 0x9060
movl -0x4(%rbp), %edi
movl %edi, %eax
addl $0x1, %eax
movl %eax, -0x4(%rbp)
movl -0x8(%rbp), %esi
movl -0x34(%rbp), %eax
leaq 0x2ac6ff(%rip), %rcx    # 0x39b400
movzbl %al, %edx
callq 0x10ee0
leaq 0x27d638(%rip), %rax    # 0x36c348
cmpl $0xe, (%rax)
jne 0xeed23
leaq 0x27d62c(%rip), %rax    # 0x36c348
movl (%rax), %eax
movl %eax, -0x34(%rbp)
jmp 0xeed41
leaq 0x27d7ae(%rip), %rax    # 0x36c4d8
cmpl $0x0, (%rax)
je 0xeed38
movl $0xf, -0x34(%rbp)
jmp 0xeed3f
movl $0x8, -0x34(%rbp)
jmp 0xeed41
leaq 0x27d5a0(%rip), %rax    # 0x36c2e8
movsd (%rax), %xmm0
leaq 0x2ac6ad(%rip), %rdi    # 0x39b400
leaq 0x9b41c(%rip), %rsi     # 0x18a176
movb $0x1, %al
callq 0x9060
movl -0x4(%rbp), %edi
movl %edi, %eax
addl $0x1, %eax
movl %eax, -0x4(%rbp)
movl -0x8(%rbp), %esi
movl -0x34(%rbp), %eax
leaq 0x2ac687(%rip), %rcx    # 0x39b400
movzbl %al, %edx
callq 0x10ee0
leaq 0x27d758(%rip), %rax    # 0x36c4e0
cmpl $0x0, (%rax)
je 0xeed96
movl $0xf, -0x34(%rbp)
jmp 0xeed9d
movl $0x8, -0x34(%rbp)
leaq 0x27d58c(%rip), %rax    # 0x36c330
movsd (%rax), %xmm0
leaq 0x2ac651(%rip), %rdi    # 0x39b400
leaq 0x9b3e4(%rip), %rsi     # 0x18a19a
movb $0x1, %al
callq 0x9060
leaq 0x1af358(%rip), %rax    # 0x29e11c
cmpb $0x0, (%rax)
je 0xeedea
movl -0x4(%rbp), %edi
movl %edi, %eax
addl $0x1, %eax
movl %eax, -0x4(%rbp)
movl -0x8(%rbp), %esi
movl $0x8, %edx
leaq 0x2ac61d(%rip), %rcx    # 0x39b400
callq 0x10ee0
jmp 0xeee0a
movl -0x4(%rbp), %edi
movl %edi, %eax
addl $0x1, %eax
movl %eax, -0x4(%rbp)
movl -0x8(%rbp), %esi
movl -0x34(%rbp), %eax
leaq 0x2ac5fe(%rip), %rcx    # 0x39b400
movzbl %al, %edx
callq 0x10ee0
leaq 0x27d6d3(%rip), %rax    # 0x36c4e4
cmpl $0x0, (%rax)
je 0xeee1f
movl $0xf, -0x34(%rbp)
jmp 0xeee26
movl $0x8, -0x34(%rbp)
leaq 0x27d4d3(%rip), %rax    # 0x36c300
movsd (%rax), %xmm0
leaq 0x2ac5c8(%rip), %rdi    # 0x39b400
leaq 0x9b37c(%rip), %rsi     # 0x18a1bb
movb $0x1, %al
callq 0x9060
movl -0x4(%rbp), %edi
movl %edi, %eax
addl $0x1, %eax
movl %eax, -0x4(%rbp)
movl -0x8(%rbp), %esi
movl -0x34(%rbp), %eax
leaq 0x2ac5a2(%rip), %rcx    # 0x39b400
movzbl %al, %edx
callq 0x10ee0
leaq 0x27d67b(%rip), %rax    # 0x36c4e8
cmpl $0x0, (%rax)
je 0xeee7b
movl $0xf, -0x34(%rbp)
jmp 0xeee82
movl $0x8, -0x34(%rbp)
leaq 0x27d47f(%rip), %rax    # 0x36c308
movsd (%rax), %xmm0
leaq 0x2ac56c(%rip), %rdi    # 0x39b400
leaq 0x9b341(%rip), %rsi     # 0x18a1dc
movb $0x1, %al
callq 0x9060
movl -0x4(%rbp), %edi
movl %edi, %eax
addl $0x1, %eax
movl %eax, -0x4(%rbp)
movl -0x8(%rbp), %esi
movl -0x34(%rbp), %eax
leaq 0x2ac546(%rip), %rcx    # 0x39b400
movzbl %al, %edx
callq 0x10ee0
leaq 0x27d623(%rip), %rax    # 0x36c4ec
cmpl $0x0, (%rax)
je 0xeef47
leaq 0x27d43b(%rip), %rax    # 0x36c310
movsd (%rax), %xmm0
leaq 0x27d438(%rip), %rax    # 0x36c318
movsd (%rax), %xmm1
leaq 0x2ac515(%rip), %rdi    # 0x39b400
leaq 0x9b30b(%rip), %rsi     # 0x18a1fd
movb $0x2, %al
callq 0x9060
leaq 0x1af21c(%rip), %rax    # 0x29e11c
cmpb $0x0, (%rax)
je 0xeef26
movl -0x4(%rbp), %edi
movl %edi, %eax
addl $0x1, %eax
movl %eax, -0x4(%rbp)
movl -0x8(%rbp), %esi
movl $0x8, %edx
leaq 0x2ac4e1(%rip), %rcx    # 0x39b400
callq 0x10ee0
jmp 0xeef45
movl -0x4(%rbp), %edi
movl %edi, %eax
addl $0x1, %eax
movl %eax, -0x4(%rbp)
movl -0x8(%rbp), %esi
movl $0xf, %edx
leaq 0x2ac4c0(%rip), %rcx    # 0x39b400
callq 0x10ee0
jmp 0xeef47
leaq 0xcddd2(%rip), %rax     # 0x1bcd20
movsd 0x268(%rax), %xmm0
movsd %xmm0, -0x10(%rbp)
movsd -0x10(%rbp), %xmm0
leaq 0x27d381(%rip), %rax    # 0x36c2e8
mulsd (%rax), %xmm0
movsd 0x800c5(%rip), %xmm1    # 0x16f038
mulsd %xmm1, %xmm0
movsd 0x80099(%rip), %xmm1    # 0x16f018
mulsd %xmm1, %xmm0
movsd 0x8008d(%rip), %xmm1    # 0x16f018
mulsd %xmm1, %xmm0
movsd %xmm0, -0x18(%rbp)
movsd -0x18(%rbp), %xmm0
movsd 0x8020f(%rip), %xmm1    # 0x16f1b0
divsd %xmm1, %xmm0
leaq 0x2ac454(%rip), %rdi    # 0x39b400
leaq 0x9b271(%rip), %rsi     # 0x18a224
movb $0x1, %al
callq 0x9060
movl -0x4(%rbp), %edi
addl $0x1, %edi
movl -0x8(%rbp), %esi
movl $0xf, %edx
leaq 0x2ac431(%rip), %rcx    # 0x39b400
callq 0x10ee0
leaq 0xcdd45(%rip), %rax     # 0x1bcd20
movsd 0x350(%rax), %xmm0
movsd %xmm0, -0x20(%rbp)
movsd -0x20(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0xeeffa
jp 0xeeffa
jmp 0xef062
leaq 0xcdd1f(%rip), %rax     # 0x1bcd20
movsd 0x180(%rax), %xmm0
divsd -0x20(%rbp), %xmm0
movsd %xmm0, -0x20(%rbp)
movsd -0x20(%rbp), %xmm0
movsd 0x940b8(%rip), %xmm1    # 0x1830d8
divsd %xmm1, %xmm0
movsd %xmm0, -0x20(%rbp)
movsd -0x20(%rbp), %xmm0
leaq 0x2ac3cb(%rip), %rdi    # 0x39b400
leaq 0x9b20c(%rip), %rsi     # 0x18a248
movl $0x1, %edx
movb $0x1, %al
callq 0x9060
movl -0x4(%rbp), %edi
addl $0x2, %edi
movl -0x8(%rbp), %esi
movl $0xf, %edx
leaq 0x2ac3a3(%rip), %rcx    # 0x39b400
callq 0x10ee0
jmp 0xef0cd
leaq 0x188a45(%rip), %rax    # 0x277ab0
cmpq $0x8, (%rax)
jne 0xef0cb
leaq 0x27d2d8(%rip), %rax    # 0x36c350
cmpl $0x0, (%rax)
je 0xef086
movl $0xf, -0x34(%rbp)
jmp 0xef08d
movl $0x8, -0x34(%rbp)
leaq 0x27d2b8(%rip), %rax    # 0x36c34c
movl (%rax), %edx
leaq 0x2ac363(%rip), %rdi    # 0x39b400
leaq 0x9b1c8(%rip), %rsi     # 0x18a26c
movb $0x0, %al
callq 0x9060
movl -0x4(%rbp), %edi
movl %edi, %eax
addl $0x1, %eax
movl %eax, -0x4(%rbp)
movl -0x8(%rbp), %esi
movl -0x34(%rbp), %eax
leaq 0x2ac33d(%rip), %rcx    # 0x39b400
movzbl %al, %edx
callq 0x10ee0
jmp 0xef0cd
jmp 0xef0cf
jmp 0xef0d1
jmp 0xef0d3
jmp 0xef0d5
jmp 0xef0d7
jmp 0xef0d9
jmp 0xef0db
jmp 0xef0dd
jmp 0xef0df
jmp 0xef0e1
jmp 0xef0e3
leaq 0x1889c6(%rip), %rax    # 0x277ab0
cmpq $0x400000, (%rax)       # imm = 0x400000
je 0xef0f8
callq 0xed100
jmp 0xef0fa
addq $0x40, %rsp
popq %rbp
retq