// File: /workspace/github_cpp_makefile_star2_O1/jkingan[P]ladyheather/heather.cpp
// Function: update_plot(int)
void update_plot(int draw_flag)
{
struct PLOT_Q q;
double v;
DATA_SIZE jitter;
DATA_SIZE sig;

   // add current data values to the plot data queue
   // NEW_RCVR
   //
   // !!!! IF YOU ADD A NEW DEVICE AND STORE OTHER VALUES IN THE PLOT QUEUE
   // YOU MUST ALSO MODIFY write_q_entry() TO SAVE/CALCULATE/RESTORE THEM
   // WHEN IT WRITES A LOG FILE ENTRY !!!!

   q = get_plot_q(plot_q_in);

   // update the plot queue with the current data
   if((have_temperature == 0) && have_lars_temp) {
      q.data[TEMP] += lars_temp;
      plot[TEMP].plot_id = "TEMPL";
   }
   else {
      q.data[TEMP] += temperature;
   }
   q.data[SAT_PLOT] = (DATA_SIZE) sat_count;

   if((have_dac == 0) && (have_sawtooth == 0) && have_lars_dac) {
      q.data[DAC] += lars_dac;
      plot[DAC].units = "";
      plot[DAC].plot_id = "DACL";
      plot[DAC].ref_scale = (DATA_SIZE) 1.0;
   }
   else {
      q.data[DAC] += dac_voltage;
   }

   if(rcvr_type == TICC_RCVR) {
      q.data[PPS]  += (DATA_SIZE) pps_tie;
      q.data[OSC]  += (DATA_SIZE) osc_tie;
      q.data[CHC]  += (DATA_SIZE) chc_tie;  // [SEVEN]
      q.data[CHD]  += (DATA_SIZE) chd_tie;  // [EIGHT]
   }
   else if(((have_pps_offset == 0) || (have_pps_offset == 55)) && have_lars_pps) {
      q.data[PPS]  += (DATA_SIZE) lars_pps;
      q.data[OSC]  += (DATA_SIZE) osc_offset;
      plot[PPS].plot_id = "PPSL";
   }
   else if(rcvr_type == CS_RCVR) {
      q.data[PPS]  += (DATA_SIZE) cs_pump;
      q.data[OSC]  += (DATA_SIZE) cs_emul;
   }
   else if(rcvr_type == LPFRS_RCVR) {
      q.data[PPS]  += (DATA_SIZE) pps_offset;
      q.data[OSC]  += (DATA_SIZE) osc_offset;
   }
   else if(rcvr_type == SRO_RCVR) {
      q.data[PPS]  += (DATA_SIZE) pps_offset;
      q.data[OSC]  += (DATA_SIZE) (((double)sro_fc)*SRO_DDS_STEP*1.0E12/1000.0);
   }
   else if(rcvr_type == THERMO_RCVR) {
      q.data[ADC3]  += (DATA_SIZE) adc3;
      q.data[ADC4]  += (DATA_SIZE) adc4;
   }
   else if((rcvr_type == TIDE_RCVR) && enviro_mode()) {
      q.data[ADC3]  += (DATA_SIZE) adc3;
      q.data[ADC4]  += (DATA_SIZE) adc4;
   }
   else if((rcvr_type == NO_RCVR) && enviro_mode()) {
      q.data[ADC3]  += (DATA_SIZE) adc3;
      q.data[ADC4]  += (DATA_SIZE) adc4;
   }
   else if(luxor) {
      q.data[PPS]  += (DATA_SIZE) pps_offset;
      q.data[OSC]  += (DATA_SIZE) osc_offset;
   }
   else {
      q.data[PPS]  += (DATA_SIZE) pps_offset;
      q.data[OSC]  += (DATA_SIZE) osc_offset;
//    q.data[CHC]  += (DATA_SIZE) chc_offset;  // !!!! not for non TICC_RCVR
//    q.data[CHD]  += (DATA_SIZE) chd_offset;
   }

   if(rcvr_type == CS_RCVR) {
      if(ONE < NUM_PLOTS)   q.data[ONE] += (DATA_SIZE) cs_rfam1;
      if(TWO < NUM_PLOTS)   q.data[TWO] += (DATA_SIZE) cs_rfam2;
      if(THREE < NUM_PLOTS) q.data[THREE] += (DATA_SIZE) cs_gain;

      if(FOUR < NUM_PLOTS)  q.data[FOUR] += (DATA_SIZE) cs_coven;
      if(FIVE < NUM_PLOTS)  q.data[FIVE] += (DATA_SIZE) cs_qoven;

      if(SIX < NUM_PLOTS)   q.data[SIX] += (DATA_SIZE) cs_pll_dro;
      if(SEVEN < NUM_PLOTS) q.data[SEVEN] += (DATA_SIZE) cs_pll_saw;
      if(EIGHT < NUM_PLOTS) q.data[EIGHT] += (DATA_SIZE) cs_pll_87;
      if(NINE  < NUM_PLOTS) q.data[NINE] += (DATA_SIZE) cs_pll_up;

      q.data[TEN] += (DATA_SIZE) cs_beam;

      q.data[ELEVEN] += (DATA_SIZE) cs_cfield;
      q.data[TWELVE] += (DATA_SIZE) cs_hwi;
      q.data[THIRTEEN] += (DATA_SIZE) cs_msp;
      q.data[FOURTEEN] += (DATA_SIZE) cs_volt_avg;
   }
   else if(rcvr_type == LPFRS_RCVR) {
      if(ONE < NUM_PLOTS) q.data[ONE] += (DATA_SIZE) (lpfrs_dd);
      if(TWO < NUM_PLOTS) q.data[TWO] += (DATA_SIZE) (lpfrs_gg);
      if(THREE < NUM_PLOTS) q.data[THREE] += (DATA_SIZE) (lpfrs_hh);

      if(FOUR < NUM_PLOTS)  q.data[FOUR] += (DATA_SIZE) (lpfrs_ee);
      if(FIVE < NUM_PLOTS)  q.data[FIVE] += (DATA_SIZE) (lpfrs_cc);
      if(SIX < NUM_PLOTS)   q.data[SIX] += (DATA_SIZE) (lpfrs_bb);
      if(SEVEN < NUM_PLOTS) q.data[SEVEN] += (DATA_SIZE) (lpfrs_aa);
      if(EIGHT < NUM_PLOTS)  q.data[EIGHT] += (DATA_SIZE) (lpfrs_ff);
   }
   else if(rcvr_type == PRS_RCVR) {
      if(ONE < NUM_PLOTS) q.data[ONE] += (DATA_SIZE) (prs_ad[5]);
      if(TWO < NUM_PLOTS) q.data[TWO] += (DATA_SIZE) (prs_ad[6]);
      if(THREE < NUM_PLOTS) q.data[THREE] += (DATA_SIZE) (prs_ad[7]);

      if(FOUR < NUM_PLOTS)  q.data[FOUR] += (DATA_SIZE) (prs_ad[14]);
      if(FIVE < NUM_PLOTS)  q.data[FIVE] += (DATA_SIZE) (prs_ad_therm);
      if(SIX < NUM_PLOTS)   q.data[SIX] += (DATA_SIZE) (prs_ad_pwr);
      if(SEVEN < NUM_PLOTS) q.data[SEVEN] += (DATA_SIZE) (prs_ad[9]);
      if(EIGHT < NUM_PLOTS) q.data[EIGHT] += (DATA_SIZE) (prs_ad[8]);
      if(NINE  < NUM_PLOTS) q.data[NINE] += (DATA_SIZE) prs_ds1;
      if(TEN  < NUM_PLOTS)  q.data[TEN] += (DATA_SIZE) prs_ds2;
   }
   else if(rcvr_type == SA35_RCVR) {
      if(ONE < NUM_PLOTS) q.data[ONE] += (DATA_SIZE) (sa35_tec);
      if(TWO < NUM_PLOTS) q.data[TWO] += (DATA_SIZE) (sa35_dc);
      if(THREE < NUM_PLOTS) q.data[THREE] += (DATA_SIZE) (sa35_rf);

      if(FOUR < NUM_PLOTS)  q.data[FOUR] += (DATA_SIZE) (sa35_heater);
   }
   else if(rcvr_type == SRO_RCVR) {
      if(ONE < NUM_PLOTS) q.data[ONE] += (DATA_SIZE) (sro_hh);
      if(TWO < NUM_PLOTS) q.data[TWO] += (DATA_SIZE) (sro_ff);
      if(THREE < NUM_PLOTS) q.data[THREE] += (DATA_SIZE) (sro_ee);

      if(FOUR < NUM_PLOTS)  q.data[FOUR] += (DATA_SIZE) (sro_dd);
      if(FIVE < NUM_PLOTS)  q.data[FIVE] += (DATA_SIZE) (sro_cc);
      if(SIX < NUM_PLOTS)   q.data[SIX] += (DATA_SIZE) (sro_bb);
      if(SEVEN < NUM_PLOTS) q.data[SEVEN] += (DATA_SIZE) (sro_vt);
      if(EIGHT < NUM_PLOTS) q.data[EIGHT] += (DATA_SIZE) (sro_gg);
      if(NINE < NUM_PLOTS)  q.data[NINE] += (DATA_SIZE) (sro_aa); // !!!! reserved value
   }
   else if(rcvr_type == TICC_RCVR) {
      if(ONE < NUM_PLOTS)   q.data[ONE] += (DATA_SIZE) pps_phase;
      if(TWO < NUM_PLOTS)   q.data[TWO] += (DATA_SIZE) osc_phase;
      if(THREE < NUM_PLOTS) q.data[THREE] += (DATA_SIZE) chc_phase;
      if(FOUR < NUM_PLOTS)  q.data[FOUR] += (DATA_SIZE) chd_phase;

      if(FIVE < NUM_PLOTS)  q.data[FIVE] += (DATA_SIZE) cha_time2;
      if(SIX < NUM_PLOTS)   q.data[SIX] += (DATA_SIZE) chb_time2;
   }
   else if(1 && (rcvr_type == TIDE_RCVR)) {  // we also store tide data in lat/lon/alt/dop plots (along with plots 11/12/13/14)
      if(ONE < NUM_PLOTS)   q.data[ONE] += (DATA_SIZE) lat_tide;
      if(TWO < NUM_PLOTS)   q.data[TWO] += (DATA_SIZE) lon_tide;
      if(THREE < NUM_PLOTS) q.data[THREE] += (DATA_SIZE) alt_tide;
      if(SIX < NUM_PLOTS)   q.data[SIX] += (DATA_SIZE) ugals;
      have_lla_queue = 1;
   }
   else if(rcvr_type == UCCM_RCVR) {
      if(EIGHT < NUM_PLOTS) q.data[EIGHT] += (DATA_SIZE) pcorr;
   }
   else if(rcvr_type == X72_RCVR) {
      if(ONE < NUM_PLOTS) q.data[ONE] += (DATA_SIZE) x72_dmvoutc;
      if(TWO < NUM_PLOTS) q.data[TWO] += (DATA_SIZE) x72_dlvoutc;
      if(THREE < NUM_PLOTS) q.data[THREE] += (DATA_SIZE) x72_drvoutc;

      if(FOUR < NUM_PLOTS)  q.data[FOUR] += (DATA_SIZE) x72_dmv2demavg;
      if(FIVE < NUM_PLOTS)  q.data[FIVE] += (DATA_SIZE) x72_dlvolt;
      if(SIX < NUM_PLOTS)   q.data[SIX] += (DATA_SIZE) x72_dmp17;
      if(SEVEN < NUM_PLOTS) q.data[SEVEN] += (DATA_SIZE) x72_dmp5;
      if(EIGHT < NUM_PLOTS) q.data[EIGHT] += (DATA_SIZE) x72_pres;
      if(NINE < NUM_PLOTS)  q.data[NINE] += (DATA_SIZE) x72_plmp;
      if(TEN < NUM_PLOTS)   q.data[TEN]  += (DATA_SIZE) x72_dhtrvolt;
   }
   else if(rcvr_type == ZYFER_RCVR) {
      if(ONE < NUM_PLOTS)   q.data[ONE] += (DATA_SIZE) zyfer_hefe;
      if(TWO < NUM_PLOTS)   q.data[TWO] += (DATA_SIZE) zyfer_hete;
      if(THREE < NUM_PLOTS) q.data[THREE] += (DATA_SIZE) zyfer_hest;
      if(FOUR < NUM_PLOTS)  q.data[FOUR] += (DATA_SIZE) tfom;
      if(FIVE < NUM_PLOTS)  q.data[FIVE] += (DATA_SIZE) zyfer_drift;
      if(SIX < NUM_PLOTS)   q.data[SIX] += average_dop();
      if(SEVEN < NUM_PLOTS) q.data[SEVEN] += (DATA_SIZE) zyfer_tdev;
//    if(EIGHT < NUM_PLOTS) q.data[EIGHT] += (DATA_SIZE) zyfer_essn;
   }
   else if(graph_lla || TIMING_RCVR || LLA_RCVR) {
      if(ONE < NUM_PLOTS)   q.data[ONE] += (DATA_SIZE) (lat*RAD_TO_DEG);
      if(TWO < NUM_PLOTS)   q.data[TWO] += (DATA_SIZE) (lon*RAD_TO_DEG);
      if(THREE < NUM_PLOTS) q.data[THREE] += (DATA_SIZE) alt;

      if((lat*RAD_TO_DEG) < min_q_lat) min_q_lat = (lat*RAD_TO_DEG);
      if((lat*RAD_TO_DEG) > max_q_lat) max_q_lat = (lat*RAD_TO_DEG);
      if((lon*RAD_TO_DEG) < min_q_lon) min_q_lon = (lon*RAD_TO_DEG);
      if((lon*RAD_TO_DEG) > max_q_lon) max_q_lon = (lon*RAD_TO_DEG);
      have_lla_queue = 1;

      if((rcvr_type == SCPI_RCVR) || (rcvr_type == UCCM_RCVR) || (rcvr_type == TRUE_RCVR)) {
         if(FOUR < NUM_PLOTS)  q.data[FOUR] += (DATA_SIZE) tfom;
         if(rcvr_type == TRUE_RCVR) {
            if(FIVE < NUM_PLOTS)  q.data[FIVE] += (DATA_SIZE) true_debug;
            if(EIGHT < NUM_PLOTS) q.data[EIGHT] += (DATA_SIZE) true_eval;
         }
         else {
            if(FIVE < NUM_PLOTS)  q.data[FIVE] += (DATA_SIZE) ffom;
         }

         if(rcvr_type == UCCM_RCVR) {
            if(SEVEN < NUM_PLOTS) q.data[SEVEN] += (DATA_SIZE) (ant_v1);
         }
      }
      else if(rcvr_type == BRANDY_RCVR) {
         if(SEVEN < NUM_PLOTS) q.data[SEVEN] += (DATA_SIZE) (freq_trend*1.0E12);
         if(EIGHT < NUM_PLOTS) q.data[EIGHT] += (DATA_SIZE) (avg_phase);
      }
      else if(rcvr_type == RFTG_RCVR) {
         if(FIVE < NUM_PLOTS)  q.data[FIVE] += (DATA_SIZE) rftg_oscv;
         if(SEVEN < NUM_PLOTS) q.data[SEVEN] += (DATA_SIZE) (ant_v1);
         if(EIGHT < NUM_PLOTS) q.data[EIGHT] += (DATA_SIZE) (ant_v2);
      }
      else {
         if(FOUR < NUM_PLOTS)  q.data[FOUR] += (DATA_SIZE) speed;
         if(FIVE < NUM_PLOTS)  q.data[FIVE] += (DATA_SIZE) heading;
      }

      if((rcvr_type == RFTG_RCVR) || (rcvr_type == UCCM_RCVR)) {  // we use DOP plot for antenna current
         if(SIX < NUM_PLOTS) q.data[SIX] += (DATA_SIZE) ant_ma;
      }
      else {
         if(SIX < NUM_PLOTS) q.data[SIX] += average_dop();
      }
   }
   else {
      if(initial_voltage == (DATA_SIZE) 0.0) v = dac_voltage;
      else                        v = initial_voltage;
      if(luxor) {  // DERIVED_PLOTS !!!!
         if(LUX2 < NUM_PLOTS)    q.data[LUX2] += (DATA_SIZE) lux2;        // ONE
         if(LEDV < NUM_PLOTS)    q.data[LEDV] += (DATA_SIZE) led_v;       // TWO
         if(LEDI < NUM_PLOTS)    q.data[LEDI] += (DATA_SIZE) led_i;       // THREE
         if(PWMHZ < NUM_PLOTS)   q.data[PWMHZ] += (DATA_SIZE) pwm_hz;     // FOUR
         if(TC2 < NUM_PLOTS )    q.data[TC2] += (DATA_SIZE) luxor_tc2;    // FIVE

         if(BLUEHZ < NUM_PLOTS)  q.data[BLUEHZ] += (DATA_SIZE) blue_hz;   // SIX  // color sensor
         if(GREENHZ < NUM_PLOTS) q.data[GREENHZ] += (DATA_SIZE) green_hz; // SEVEN
         if(REDHZ < NUM_PLOTS)   q.data[REDHZ] += (DATA_SIZE) red_hz;     // EIGHT
         if(WHITEHZ < NUM_PLOTS) q.data[WHITEHZ] += (DATA_SIZE) white_hz; // NINE
         if(AUXV < NUM_PLOTS)    q.data[AUXV] += (DATA_SIZE) adc2;        // TEN
         // ELEVEN = BATTW
         // TWELVE = LEDW
         // THIRTEEN = EFF
         // FOURTEEN = CCT
      }
      else {
         if(ONE < NUM_PLOTS) q.data[ONE] += (DATA_SIZE) ((dac_voltage-v)*osc_gain*((DATA_SIZE)1000.0));
         if(TWO < NUM_PLOTS) q.data[TWO] = (DATA_SIZE) ((q.data[OSC]*(DATA_SIZE) 1000.0)-q.data[ONE]);
      }
   }

   if(luxor) ;
   else if(rcvr_type == CS_RCVR) ;
   else if(USES_JIT_PLOTS) goto tide_plots; // device uses plots [NINE] and [TEN]
   else {
      jitter = (DATA_SIZE) (this_time_msec - last_time_msec);  // timing message jitter
      if((rcvr_type == SCPI_RCVR) || (rcvr_type == UCCM_RCVR)) {  // !!!! kludge around STATUS messaage
         if(jitter > (DATA_SIZE) 1800.0) jitter = (DATA_SIZE) 1000.0;
      }

      q.data[MSGJIT] += jitter;                // [NINE]
      q.data[MSGOFS] += (DATA_SIZE) msg_ofs;   // [TEN]

      tide_plots:
      if(enviro_mode() && (rcvr_type != TIDE_RCVR)) {
         q.data[HUMIDITY] += (DATA_SIZE) humidity;
         q.data[PRESSURE] += (DATA_SIZE) pressure;
         q.data[TEMP1] += (DATA_SIZE) tc1;
         q.data[TEMP2] += (DATA_SIZE) tc2;
      }
      else if(plot_prn) {
         q.data[ELEVEN] += (DATA_SIZE) sat[plot_prn].azimuth;
         q.data[TWELVE] += (DATA_SIZE) sat[plot_prn].elevation;
         sig = sat[plot_prn].sig_level;
         if((sig < 0.0) && (plot_prn <= MAX_PRN)) sig = (-sig);
         q.data[THIRTEEN] += sig;
         if(have_phase)      q.data[FOURTEEN] += (DATA_SIZE) sat[plot_prn].code_phase;
         else if(have_range) q.data[FOURTEEN] += (DATA_SIZE) sat[plot_prn].range;
         else                q.data[FOURTEEN] += (DATA_SIZE) ugals;
      }
      else {
         q.data[ELEVEN] += (DATA_SIZE) lat_tide;
         q.data[TWELVE] += (DATA_SIZE) lon_tide;
         q.data[THIRTEEN] += (DATA_SIZE) alt_tide;
         q.data[FOURTEEN] += (DATA_SIZE) ugals;
      }
   }

   if(FFT < NUM_PLOTS+DERIVED_PLOTS) q.data[FFT] = (DATA_SIZE) 0.0;

   q.sat_flags &= SAT_FLAGS;       // preserve flag bits
   if(sat_count > SAT_COUNT_MASK) q.sat_flags |= SAT_COUNT_MASK;   // satellite count
   else                           q.sat_flags |= sat_count;
   q.sat_flags |= (new_const & CONST_CHANGE);            // constellation change
   if(time_flags & TFLAGS_UTC) q.sat_flags |= UTC_TIME;  // UTC/GPS time flag

//if((seconds%10) == 9) q.sat_flags |= TIME_SKIP;

   if((discipline_mode == DIS_MODE_DISABLED) && osc_control_on) ;
   else if(discipline_mode != DIS_MODE_NORMAL) {
      q.sat_flags |= HOLDOVER;
   }

   if(spike_delay) q.sat_flags |= TEMP_SPIKE;

   if(flag_faults && (msg_fault || tsip_error)) q.sat_flags |= TIME_SKIP;

   q.q_jd = jd_utc;

   put_plot_q(plot_q_in, q);

   new_const = 0;

   if(++plot_time < queue_interval) {  // not yet time to draw
      if(draw_flag) refresh_page();    // make sure text parts of screen keep updating
      return;
   }
   plot_time = 0;

   if(review_mode == 0) {
      review = plot_q_count;
   }

   ++view_time;
//!!!!!!!!!! if((view_time >= view_interval) && ((review_mode == 0) || (plot_column < (PLOT_WIDTH-plot_mag)))) {
//!!!!!!!!!! if((view_time >= view_interval) && ((review_mode == 0) || view_all_data || (plot_column < (PLOT_WIDTH-plot_mag)))) {
   if(((view_time >= view_interval) || (view_all_data == 2)) && ((review_mode == 0) || (view_all_data == 2) || (plot_column < (PLOT_WIDTH-plot_mag)))) {
      if(plot_q_in == plot_q_col0) last_q = q;
      add_stat_point(&q);
      last_q = q;
      if(view_all_data == 2) ;
      else if(draw_flag == NO_REFRESH) goto scroll_it;

      plot_entry(plot_q_in);  // plot latest queue entry
      plot_column += plot_mag;
      if(plot_column >= PLOT_WIDTH) {   // it's time to scroll the plot left
         if(view_all_data == 2) {
            view_all(1);
         }
         else {
            plot_column -= (PLOT_SCROLL*plot_mag);
            plot_start = plot_q_in - (((PLOT_WIDTH - PLOT_SCROLL)*view_interval)/plot_mag) - plot_q_out;
            if(plot_start < 0) {
                if(plot_q_full) {
                   plot_start += plot_q_size;
                   if(plot_start < 0) plot_start = 0;
                }
                else plot_start = 0;
            }
            draw_plot(NO_REFRESH);
         }
      }
      else if(off_scale) {  // a graph is now off scale,  redraw the plots to rescale it
         draw_plot(NO_REFRESH);
         off_scale = 0;
      }
      else if(continuous_scroll) draw_plot(NO_REFRESH);
   }
   else {
      scroll_it:
      if(continuous_scroll) draw_plot(NO_REFRESH);
   }
   if(view_time >= view_interval) view_time = 0;


   // prepare queue for next point
   if(++plot_q_count >= plot_q_size) plot_q_count = plot_q_size;
   if(++plot_q_in >= plot_q_size) {
      plot_q_in = 0;
   }
   if(plot_q_in == plot_q_out) {  // plot queue is full
      if(++plot_q_out >= plot_q_size) plot_q_out = 0;
      plot_q_count = plot_q_size;
      plot_q_full = 1;
   }
   clear_plot_entry((long) plot_q_in);

   if(draw_flag) {
      show_title();    // rrrrr
      refresh_page();
   }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
subq $0x168, %rsp            # imm = 0x168
movl %edi, %ebx
movq 0x201a3b(%rip), %rsi    # 0x21b328
leaq -0x178(%rbp), %r14
movq %r14, %rdi
callq 0x10141
leaq -0xc8(%rbp), %r15
movl $0xb0, %edx
movq %r15, %rdi
movq %r14, %rsi
callq 0x92b0
cmpl $0x0, 0x2f3932(%rip)    # 0x30d24c
movsd 0x28(%r15), %xmm0
jne 0x1994b
cmpl $0x0, 0x2f312f(%rip)    # 0x30ca58
je 0x1994b
addsd 0x2f3115(%rip), %xmm0   # 0x30ca48
movsd %xmm0, -0xa0(%rbp)
leaq 0xf126b(%rip), %rax     # 0x10abad
movq %rax, 0x14469f(%rip)    # 0x15dfe8
jmp 0x1995b
addsd 0x2f30c5(%rip), %xmm0   # 0x30ca18
movsd %xmm0, -0xa0(%rbp)
xorps %xmm0, %xmm0
cvtsi2sdl 0x2255a6(%rip), %xmm0 # 0x23ef0c
movsd %xmm0, -0x20(%rbp)
cmpl $0x0, 0x2f398a(%rip)    # 0x30d2fc
movsd -0xa8(%rbp), %xmm0
jne 0x199cd
cmpl $0x0, 0x2f3a41(%rip)    # 0x30d3c4
jne 0x199cd
cmpl $0x0, 0x2f30c8(%rip)    # 0x30ca54
je 0x199cd
addsd 0x2f30aa(%rip), %xmm0   # 0x30ca40
movsd %xmm0, -0xa8(%rbp)
leaq 0x118001(%rip), %rax    # 0x1319a6
movq %rax, 0x14455c(%rip)    # 0x15df08
leaq 0xf1200(%rip), %rax     # 0x10abb3
movq %rax, 0x144546(%rip)    # 0x15df00
movabsq $0x3ff0000000000000, %rax # imm = 0x3FF0000000000000
movq %rax, 0x144545(%rip)    # 0x15df10
jmp 0x199dd
addsd 0x2f302b(%rip), %xmm0   # 0x30ca00
movsd %xmm0, -0xa8(%rbp)
movq 0x1feeec(%rip), %rax    # 0x2188d0
cmpq $0x10000, %rax          # imm = 0x10000
jne 0x19a45
movsd 0x223174(%rip), %xmm0   # 0x23cb68
addsd -0xb8(%rbp), %xmm0
movsd %xmm0, -0xb8(%rbp)
movsd 0x2231ac(%rip), %xmm0   # 0x23cbb8
addsd -0xb0(%rbp), %xmm0
movsd %xmm0, -0xb0(%rbp)
movsd 0x2231e4(%rip), %xmm0   # 0x23cc08
addsd -0x68(%rbp), %xmm0
movsd %xmm0, -0x68(%rbp)
movsd 0x22322a(%rip), %xmm0   # 0x23cc60
addsd -0x60(%rbp), %xmm0
movsd %xmm0, -0x60(%rbp)
jmp 0x19bc2
movl 0x2f37ed(%rip), %ecx    # 0x30d238
testl %ecx, %ecx
setne %dl
cmpl $0x37, %ecx
setne %cl
testb %cl, %dl
jne 0x19aa6
cmpl $0x0, 0x2f2fef(%rip)    # 0x30ca50
je 0x19aa6
movsd 0x2f2fcd(%rip), %xmm0   # 0x30ca38
addsd -0xb8(%rbp), %xmm0
movsd %xmm0, -0xb8(%rbp)
movsd 0x2f2d3d(%rip), %xmm0   # 0x30c7c0
addsd -0xb0(%rbp), %xmm0
movsd %xmm0, -0xb0(%rbp)
leaq 0xf111e(%rip), %rax     # 0x10abb8
movq %rax, 0x14428f(%rip)    # 0x15dd30
jmp 0x19bc2
cmpq $0x7fffff, %rax         # imm = 0x7FFFFF
jle 0x19acc
cmpq $0x800000, %rax         # imm = 0x800000
je 0x19ae2
cmpq $0x8000000, %rax        # imm = 0x8000000
je 0x19b48
cmpq $0x10000000, %rax       # imm = 0x10000000
je 0x19b26
jmp 0x19aeb
cmpq $0x20000, %rax          # imm = 0x20000
je 0x19b92
cmpq $0x80000, %rax          # imm = 0x80000
je 0x19b01
jmp 0x19aeb
callq 0x5f743
testl %eax, %eax
jne 0x19b01
cmpq $0x400, 0x1fedda(%rip) # imm = 0x400
jne 0x19b26
callq 0x5f743
testl %eax, %eax
je 0x19b26
movsd 0x2f30d7(%rip), %xmm0   # 0x30cbe0
addsd -0xb8(%rbp), %xmm0
movsd %xmm0, -0xb8(%rbp)
movsd 0x2f30c7(%rip), %xmm0   # 0x30cbe8
jmp 0x19bb2
movsd 0x2f2c8a(%rip), %xmm0   # 0x30c7b8
addsd -0xb8(%rbp), %xmm0
movsd %xmm0, -0xb8(%rbp)
movsd 0x2f2c7a(%rip), %xmm0   # 0x30c7c0
jmp 0x19bb2
movsd 0x2f2c68(%rip), %xmm0   # 0x30c7b8
addsd -0xb8(%rbp), %xmm0
cvtsi2sdl 0x2f4058(%rip), %xmm1 # 0x30dbb8
mulsd 0xef5e0(%rip), %xmm1    # 0x109148
mulsd 0xef5e0(%rip), %xmm1    # 0x109150
divsd 0xef4c0(%rip), %xmm1    # 0x109038
movsd %xmm0, -0xb8(%rbp)
addsd -0xb0(%rbp), %xmm1
movsd %xmm1, -0xb0(%rbp)
jmp 0x19bc2
movsd 0x200d76(%rip), %xmm0   # 0x21a910
addsd -0xb8(%rbp), %xmm0
movsd %xmm0, -0xb8(%rbp)
movsd 0x200d96(%rip), %xmm0   # 0x21a948
addsd -0xb0(%rbp), %xmm0
movsd %xmm0, -0xb0(%rbp)
movq 0x1fed07(%rip), %rax    # 0x2188d0
cmpq $0xffffff, %rax         # imm = 0xFFFFFF
jg 0x19c6e
cmpq $0x1ffff, %rax          # imm = 0x1FFFF
jle 0x19d04
cmpq $0x20000, %rax          # imm = 0x20000
je 0x19f54
cmpq $0x100000, %rax         # imm = 0x100000
je 0x1a123
cmpq $0x800000, %rax         # imm = 0x800000
jne 0x1a25f
movsd 0x2f343b(%rip), %xmm0   # 0x30d048
addsd -0x98(%rbp), %xmm0
movsd %xmm0, -0x98(%rbp)
movsd 0x2f342b(%rip), %xmm0   # 0x30d050
addsd -0x90(%rbp), %xmm0
movsd %xmm0, -0x90(%rbp)
movsd 0x2f341b(%rip), %xmm0   # 0x30d058
addsd -0x88(%rbp), %xmm0
movsd %xmm0, -0x88(%rbp)
movsd 0x2f33db(%rip), %xmm0   # 0x30d030
addsd -0x70(%rbp), %xmm0
movsd %xmm0, -0x70(%rbp)
movl $0x1, 0x2f3657(%rip)    # 0x30d2c0
jmp 0x1a5d9
cmpq $0x7ffffff, %rax        # imm = 0x7FFFFFF
jle 0x19d93
cmpq $0x8000000, %rax        # imm = 0x8000000
je 0x1a067
cmpq $0x10000000, %rax       # imm = 0x10000000
je 0x1a1b8
movabsq $0x1000000000, %rcx     # imm = 0x1000000000
cmpq %rcx, %rax
jne 0x1a25f
movsd 0x2f2db3(%rip), %xmm0   # 0x30ca60
addsd -0x98(%rbp), %xmm0
movsd %xmm0, -0x98(%rbp)
movsd 0x2f2dbb(%rip), %xmm0   # 0x30ca80
addsd -0x90(%rbp), %xmm0
movsd %xmm0, -0x90(%rbp)
movsd 0x2f2d8b(%rip), %xmm0   # 0x30ca68
addsd -0x88(%rbp), %xmm0
movsd %xmm0, -0x88(%rbp)
movsd 0x2f2d83(%rip), %xmm0   # 0x30ca78
addsd -0x80(%rbp), %xmm0
movsd %xmm0, -0x80(%rbp)
jmp 0x1a5d9
cmpq $0x8, %rax
je 0x19e76
cmpq $0x10000, %rax          # imm = 0x10000
jne 0x1a25f
movsd 0x2f2ad6(%rip), %xmm0   # 0x30c7f8
addsd -0x98(%rbp), %xmm0
movsd %xmm0, -0x98(%rbp)
movsd 0x2f2ac6(%rip), %xmm0   # 0x30c800
addsd -0x90(%rbp), %xmm0
movsd %xmm0, -0x90(%rbp)
movsd 0x2f2ac6(%rip), %xmm0   # 0x30c818
addsd -0x88(%rbp), %xmm0
movsd %xmm0, -0x88(%rbp)
movsd 0x2f2ab6(%rip), %xmm0   # 0x30c820
addsd -0x80(%rbp), %xmm0
movsd %xmm0, -0x80(%rbp)
movsd 0x2f2b5c(%rip), %xmm0   # 0x30c8d8
addsd -0x78(%rbp), %xmm0
movsd %xmm0, -0x78(%rbp)
movsd 0x2f2b52(%rip), %xmm0   # 0x30c8e0
jmp 0x1a5cf
cmpq $0x1000000, %rax        # imm = 0x1000000
je 0x19e83
cmpq $0x2000000, %rax        # imm = 0x2000000
jne 0x1a25f
movsd 0x2010b5(%rip), %xmm0   # 0x21ae68
addsd -0x98(%rbp), %xmm0
movsd %xmm0, -0x98(%rbp)
movsd 0x2010c5(%rip), %xmm0   # 0x21ae90
addsd -0x90(%rbp), %xmm0
movsd %xmm0, -0x90(%rbp)
movsd 0x2010b5(%rip), %xmm0   # 0x21ae98
addsd -0x88(%rbp), %xmm0
movsd %xmm0, -0x88(%rbp)
movsd 0x2010a5(%rip), %xmm0   # 0x21aea0
addsd -0x80(%rbp), %xmm0
movsd %xmm0, -0x80(%rbp)
movsd 0x201053(%rip), %xmm0   # 0x21ae60
addsd -0x78(%rbp), %xmm0
movsd %xmm0, -0x78(%rbp)
movsd 0x201009(%rip), %xmm0   # 0x21ae28
addsd -0x70(%rbp), %xmm0
movsd %xmm0, -0x70(%rbp)
movsd 0x200fff(%rip), %xmm0   # 0x21ae30
addsd -0x68(%rbp), %xmm0
movsd %xmm0, -0x68(%rbp)
movsd 0x201005(%rip), %xmm0   # 0x21ae48
addsd -0x60(%rbp), %xmm0
movsd %xmm0, -0x60(%rbp)
movsd 0x200feb(%rip), %xmm0   # 0x21ae40
addsd -0x58(%rbp), %xmm0
movsd %xmm0, -0x58(%rbp)
movsd 0x200fd1(%rip), %xmm0   # 0x21ae38
addsd -0x50(%rbp), %xmm0
movsd %xmm0, -0x50(%rbp)
jmp 0x1a5d9
movsd 0x2f2baa(%rip), %xmm0   # 0x30ca28
jmp 0x1a250
movsd 0x200d3d(%rip), %xmm0   # 0x21abc8
addsd -0x98(%rbp), %xmm0
movsd %xmm0, -0x98(%rbp)
movsd 0x200d2d(%rip), %xmm0   # 0x21abd0
addsd -0x90(%rbp), %xmm0
movsd %xmm0, -0x90(%rbp)
movsd 0x200d1d(%rip), %xmm0   # 0x21abd8
addsd -0x88(%rbp), %xmm0
movsd %xmm0, -0x88(%rbp)
movsd 0x200d3d(%rip), %xmm0   # 0x21ac10
addsd -0x80(%rbp), %xmm0
movsd %xmm0, -0x80(%rbp)
movsd 0x200d7b(%rip), %xmm0   # 0x21ac60
addsd -0x78(%rbp), %xmm0
movsd %xmm0, -0x78(%rbp)
movsd 0x200d61(%rip), %xmm0   # 0x21ac58
addsd -0x70(%rbp), %xmm0
movsd %xmm0, -0x70(%rbp)
movsd 0x200cdf(%rip), %xmm0   # 0x21abe8
addsd -0x68(%rbp), %xmm0
movsd %xmm0, -0x68(%rbp)
movsd 0x200cc5(%rip), %xmm0   # 0x21abe0
addsd -0x60(%rbp), %xmm0
movsd %xmm0, -0x60(%rbp)
xorps %xmm0, %xmm0
cvtsi2sdl 0x200bf8(%rip), %xmm0 # 0x21ab28
addsd -0x58(%rbp), %xmm0
xorps %xmm1, %xmm1
cvtsi2sdl 0x200bec(%rip), %xmm1 # 0x21ab2c
movsd %xmm0, -0x58(%rbp)
addsd -0x50(%rbp), %xmm1
movsd %xmm1, -0x50(%rbp)
jmp 0x1a5d9
movsd 0x2009c4(%rip), %xmm0   # 0x21a920
addsd -0x98(%rbp), %xmm0
movsd %xmm0, -0x98(%rbp)
movsd 0x2009b4(%rip), %xmm0   # 0x21a928
addsd -0x90(%rbp), %xmm0
movsd %xmm0, -0x90(%rbp)
movsd 0x20098c(%rip), %xmm0   # 0x21a918
addsd -0x88(%rbp), %xmm0
movsd %xmm0, -0x88(%rbp)
movsd 0x200994(%rip), %xmm0   # 0x21a938
addsd -0x80(%rbp), %xmm0
movsd %xmm0, -0x80(%rbp)
movsd 0x20098a(%rip), %xmm0   # 0x21a940
addsd -0x78(%rbp), %xmm0
movsd %xmm0, -0x78(%rbp)
movsd 0x200998(%rip), %xmm0   # 0x21a960
addsd -0x70(%rbp), %xmm0
movsd %xmm0, -0x70(%rbp)
movsd 0x20098e(%rip), %xmm0   # 0x21a968
addsd -0x68(%rbp), %xmm0
movsd %xmm0, -0x68(%rbp)
movsd 0x200984(%rip), %xmm0   # 0x21a970
addsd -0x60(%rbp), %xmm0
movsd %xmm0, -0x60(%rbp)
movsd 0x20097a(%rip), %xmm0   # 0x21a978
addsd -0x58(%rbp), %xmm0
movsd %xmm0, -0x58(%rbp)
movsd 0x2008f0(%rip), %xmm0   # 0x21a900
addsd -0x50(%rbp), %xmm0
movsd %xmm0, -0x50(%rbp)
movsd 0x2008e6(%rip), %xmm0   # 0x21a908
addsd -0x40(%rbp), %xmm0
movsd %xmm0, -0x40(%rbp)
movsd 0x20091c(%rip), %xmm0   # 0x21a950
addsd -0x38(%rbp), %xmm0
movsd %xmm0, -0x38(%rbp)
movsd 0x200912(%rip), %xmm0   # 0x21a958
addsd -0x30(%rbp), %xmm0
movsd %xmm0, -0x30(%rbp)
movsd 0x200940(%rip), %xmm0   # 0x21a998
addsd -0x28(%rbp), %xmm0
movsd %xmm0, -0x28(%rbp)
jmp 0x1a5d9
movsd 0x2f3af9(%rip), %xmm0   # 0x30db68
addsd -0x98(%rbp), %xmm0
movsd %xmm0, -0x98(%rbp)
movsd 0x2f3af1(%rip), %xmm0   # 0x30db78
addsd -0x90(%rbp), %xmm0
movsd %xmm0, -0x90(%rbp)
movsd 0x2f3ae1(%rip), %xmm0   # 0x30db80
addsd -0x88(%rbp), %xmm0
movsd %xmm0, -0x88(%rbp)
movsd 0x2f3ad1(%rip), %xmm0   # 0x30db88
addsd -0x80(%rbp), %xmm0
movsd %xmm0, -0x80(%rbp)
movsd 0x2f3ac7(%rip), %xmm0   # 0x30db90
addsd -0x78(%rbp), %xmm0
movsd %xmm0, -0x78(%rbp)
movsd 0x2f3abd(%rip), %xmm0   # 0x30db98
addsd -0x70(%rbp), %xmm0
xorps %xmm1, %xmm1
cvtsi2sdl 0x2f3aed(%rip), %xmm1 # 0x30dbd8
movsd %xmm0, -0x70(%rbp)
addsd -0x68(%rbp), %xmm1
movsd %xmm1, -0x68(%rbp)
movsd 0x2f3a6e(%rip), %xmm0   # 0x30db70
addsd -0x60(%rbp), %xmm0
movsd %xmm0, -0x60(%rbp)
movsd 0x2f3a8c(%rip), %xmm0   # 0x30dba0
addsd -0x58(%rbp), %xmm0
movsd %xmm0, -0x58(%rbp)
jmp 0x1a5d9
movsd 0x32354d(%rip), %xmm0   # 0x33d678
addsd -0x98(%rbp), %xmm0
movsd %xmm0, -0x98(%rbp)
movsd 0x323555(%rip), %xmm0   # 0x33d698
addsd -0x90(%rbp), %xmm0
movsd %xmm0, -0x90(%rbp)
movsd 0x32352d(%rip), %xmm0   # 0x33d688
addsd -0x88(%rbp), %xmm0
xorps %xmm1, %xmm1
cvtsi2sdl 0x2f2ae2(%rip), %xmm1 # 0x30cc50
movsd %xmm0, -0x88(%rbp)
addsd -0x80(%rbp), %xmm1
movsd %xmm1, -0x80(%rbp)
movsd 0x3234c0(%rip), %xmm0   # 0x33d648
addsd -0x78(%rbp), %xmm0
movsd %xmm0, -0x78(%rbp)
callq 0x59519
addsd -0x70(%rbp), %xmm0
movsd %xmm0, -0x70(%rbp)
movsd 0x3234af(%rip), %xmm0   # 0x33d658
addsd -0x68(%rbp), %xmm0
movsd %xmm0, -0x68(%rbp)
jmp 0x1a5d9
movsd 0x2f3b28(%rip), %xmm0   # 0x30dce8
addsd -0x98(%rbp), %xmm0
movsd %xmm0, -0x98(%rbp)
movsd 0x2f3af8(%rip), %xmm0   # 0x30dcd0
addsd -0x90(%rbp), %xmm0
movsd %xmm0, -0x90(%rbp)
movsd 0x2f3ad8(%rip), %xmm0   # 0x30dcc8
addsd -0x88(%rbp), %xmm0
movsd %xmm0, -0x88(%rbp)
movsd 0x2f3ad8(%rip), %xmm0   # 0x30dce0
addsd -0x80(%rbp), %xmm0
movsd %xmm0, -0x80(%rbp)
movsd 0x2f3ad6(%rip), %xmm0   # 0x30dcf0
addsd -0x78(%rbp), %xmm0
movsd %xmm0, -0x78(%rbp)
movsd 0x2f3acc(%rip), %xmm0   # 0x30dcf8
addsd -0x70(%rbp), %xmm0
movsd %xmm0, -0x70(%rbp)
movsd 0x2f3ac2(%rip), %xmm0   # 0x30dd00
addsd -0x68(%rbp), %xmm0
movsd %xmm0, -0x68(%rbp)
movsd 0x2f3a88(%rip), %xmm0   # 0x30dcd8
addsd -0x60(%rbp), %xmm0
movsd %xmm0, -0x60(%rbp)
jmp 0x1a5d9
movb 0x1fe69f(%rip), %cl     # 0x218904
orb 0x321059(%rip), %cl     # 0x33b2c4
jne 0x1a29a
cmpq $0x1, %rax
sete %dl
movl 0x200d5a(%rip), %ecx    # 0x21afd4
cmpl $0x41, %ecx
sete %sil
andb %dl, %sil
movl 0x1fe66e(%rip), %edx    # 0x2188f8
cmpl $0x47, %edx
sete %dil
testb %dil, %sil
je 0x1a3ea
movsd 0xeeeb6(%rip), %xmm2    # 0x109158
movsd 0x2f2d26(%rip), %xmm1   # 0x30cfd0
mulsd %xmm2, %xmm1
movsd -0x98(%rbp), %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x98(%rbp)
movsd 0x2f2d0e(%rip), %xmm0   # 0x30cfd8
mulsd %xmm0, %xmm2
addsd -0x90(%rbp), %xmm2
movsd %xmm2, -0x90(%rbp)
movsd 0x2f2cfa(%rip), %xmm2   # 0x30cfe0
addsd -0x88(%rbp), %xmm2
movsd %xmm2, -0x88(%rbp)
movsd 0x2f2d02(%rip), %xmm2   # 0x30d000
ucomisd %xmm1, %xmm2
jbe 0x1a30c
movsd %xmm1, 0x2f2cf4(%rip)   # 0x30d000
ucomisd 0x2f2cf4(%rip), %xmm1   # 0x30d008
jbe 0x1a31e
movsd %xmm1, 0x2f2cea(%rip)   # 0x30d008
mulsd 0xeee32(%rip), %xmm0    # 0x109158
movsd 0x2f2ce2(%rip), %xmm1   # 0x30d010
ucomisd %xmm0, %xmm1
jbe 0x1a33c
movsd %xmm0, 0x2f2cd4(%rip)   # 0x30d010
ucomisd 0x2f2cd4(%rip), %xmm0   # 0x30d018
jbe 0x1a34e
movsd %xmm0, 0x2f2cca(%rip)   # 0x30d018
movl $0x1, 0x2f2f68(%rip)    # 0x30d2c0
cmpq $0x3ffff, %rax          # imm = 0x3FFFF
jle 0x1a389
leaq -0x60(%rbp), %rcx
cmpq $0x40000, %rax          # imm = 0x40000
je 0x1a52c
cmpq $0x400000, %rax         # imm = 0x400000
je 0x1a54f
cmpq $0x200000, %rax         # imm = 0x200000
je 0x1a399
jmp 0x1a589
cmpq $0x8, %rax
je 0x1a399
cmpq $0x10, %rax
jne 0x1a589
xorps %xmm0, %xmm0
cvtsi2sdl 0x2f28ac(%rip), %xmm0 # 0x30cc50
addsd -0x80(%rbp), %xmm0
movsd %xmm0, -0x80(%rbp)
movsd -0x78(%rbp), %xmm0
cmpq $0x200000, %rax         # imm = 0x200000
jne 0x1a501
xorps %xmm1, %xmm1
cvtsi2sdl 0x322fd6(%rip), %xmm1 # 0x33d3a0
addsd %xmm1, %xmm0
movsd %xmm0, -0x78(%rbp)
movsd 0x322f8d(%rip), %xmm0   # 0x33d368
addsd -0x60(%rbp), %xmm0
movsd %xmm0, -0x60(%rbp)
jmp 0x1a515
testb %sil, %sil
je 0x1a401
cmpl $0x33, %edx
je 0x1a29a
cmpl $0x47, %edx
je 0x1a29a
cmpl $0x41, %ecx
sete %dl
cmpq $0x1, %rax
sete %sil
cmpl $0x50, %ecx
sete %cl
movabsq $0x4806409fc, %rdi      # imm = 0x4806409FC
testq %rdi, %rax
jne 0x1a29a
orb %cl, %dl
andb %dl, %sil
jne 0x1a29a
cmpb $0x0, 0x224b04(%rip)    # 0x23ef3e
je 0x1ab1e
movsd 0x2f29b8(%rip), %xmm0   # 0x30ce00
addsd -0x98(%rbp), %xmm0
movsd %xmm0, -0x98(%rbp)
movsd 0x2f2970(%rip), %xmm0   # 0x30cdd0
addsd -0x90(%rbp), %xmm0
movsd %xmm0, -0x90(%rbp)
movsd 0x2f2960(%rip), %xmm0   # 0x30cdd8
addsd -0x88(%rbp), %xmm0
movsd %xmm0, -0x88(%rbp)
movsd 0x2f2960(%rip), %xmm0   # 0x30cdf0
addsd -0x80(%rbp), %xmm0
movsd %xmm0, -0x80(%rbp)
movsd 0x200d66(%rip), %xmm0   # 0x21b208
addsd -0x78(%rbp), %xmm0
movsd %xmm0, -0x78(%rbp)
movsd 0x2f2a4c(%rip), %xmm0   # 0x30cf00
addsd -0x70(%rbp), %xmm0
movsd %xmm0, -0x70(%rbp)
movsd 0x2f2a42(%rip), %xmm0   # 0x30cf08
addsd -0x68(%rbp), %xmm0
movsd %xmm0, -0x68(%rbp)
movsd 0x2f2a38(%rip), %xmm0   # 0x30cf10
addsd -0x60(%rbp), %xmm0
movsd %xmm0, -0x60(%rbp)
movsd 0x2f2a2e(%rip), %xmm0   # 0x30cf18
addsd -0x58(%rbp), %xmm0
movsd %xmm0, -0x58(%rbp)
movsd 0x2f26dc(%rip), %xmm0   # 0x30cbd8
jmp 0x19e67
xorps %xmm1, %xmm1
cvtsi2sdl 0x2f274c(%rip), %xmm1 # 0x30cc58
addsd %xmm1, %xmm0
movsd %xmm0, -0x78(%rbp)
cmpq $0x8, %rax
je 0x1a57c
cmpq $0x400000, %rax         # imm = 0x400000
je 0x1a5c0
jmp 0x1a5ca
movsd 0x321a9c(%rip), %xmm0   # 0x33bfd0
mulsd 0xeec14(%rip), %xmm0    # 0x109150
addsd -0x68(%rbp), %xmm0
movsd %xmm0, -0x68(%rbp)
leaq 0x321a6b(%rip), %rdx    # 0x33bfb8
jmp 0x1a5a6
movsd 0x2f3539(%rip), %xmm0   # 0x30da90
addsd -0x78(%rbp), %xmm0
movsd %xmm0, -0x78(%rbp)
movsd 0x2f34ef(%rip), %xmm0   # 0x30da58
addsd -0x68(%rbp), %xmm0
movsd %xmm0, -0x68(%rbp)
leaq 0x2f34e6(%rip), %rdx    # 0x30da60
jmp 0x1a5a6
leaq -0x68(%rbp), %rcx
leaq 0x2f34d1(%rip), %rdx    # 0x30da58
jmp 0x1a5a6
leaq -0x78(%rbp), %rcx
movsd 0x2f2a8b(%rip), %xmm0   # 0x30d020
addsd -0x8(%rcx), %xmm0
movsd %xmm0, -0x8(%rcx)
leaq 0x2f2a82(%rip), %rdx    # 0x30d028
movsd (%rdx), %xmm0
addsd (%rcx), %xmm0
movsd %xmm0, (%rcx)
cmpq $0x400000, %rax         # imm = 0x400000
je 0x1a5c0
cmpq $0x8, %rax
jne 0x1a5ca
movsd 0x2f34a0(%rip), %xmm0   # 0x30da68
jmp 0x1a5cf
callq 0x59519
addsd -0x70(%rbp), %xmm0
movsd %xmm0, -0x70(%rbp)
cmpb $0x0, 0x22495e(%rip)    # 0x23ef3e
setne %cl
movq 0x1fe2e6(%rip), %rax    # 0x2188d0
cmpq $0x20000, %rax          # imm = 0x20000
sete %dl
orb %cl, %dl
jne 0x1a7ad
testl $0xb020000, %eax        # imm = 0xB020000
jne 0x1a65f
movsd 0x2f3106(%rip), %xmm0   # 0x30d710
subsd 0x2f3106(%rip), %xmm0   # 0x30d718
addq $-0x8, %rax
testq $-0x9, %rax
jne 0x1a643
movsd 0xeeb3a(%rip), %xmm1    # 0x109160
cmpltsd %xmm0, %xmm1
movsd 0xeea05(%rip), %xmm2    # 0x109038
andpd %xmm1, %xmm2
andnpd %xmm0, %xmm1
orpd %xmm2, %xmm1
movapd %xmm1, %xmm0
addsd -0x50(%rbp), %xmm0
movsd %xmm0, -0x50(%rbp)
movsd 0x2f387b(%rip), %xmm0   # 0x30ded0
addsd -0x58(%rbp), %xmm0
movsd %xmm0, -0x58(%rbp)
callq 0x5f743
testl %eax, %eax
je 0x1a6b7
cmpq $0x800000, 0x1fe25d(%rip) # imm = 0x800000
je 0x1a6b7
movsd 0x2f251b(%rip), %xmm0   # 0x30cb98
addsd -0x40(%rbp), %xmm0
movsd %xmm0, -0x40(%rbp)
movsd 0x2f2511(%rip), %xmm0   # 0x30cba0
addsd -0x38(%rbp), %xmm0
movsd %xmm0, -0x38(%rbp)
movsd 0x2f250f(%rip), %xmm0   # 0x30cbb0
addsd -0x30(%rbp), %xmm0
movsd %xmm0, -0x30(%rbp)
leaq 0x2f2506(%rip), %rax    # 0x30cbb8
jmp 0x1a79f
movslq 0x2f20d6(%rip), %rdx    # 0x30c794
testq %rdx, %rdx
je 0x1a718
imulq $0x348, %rdx, %rax      # imm = 0x348
leaq 0x2248df(%rip), %rcx    # 0x23efb0
xorps %xmm0, %xmm0
cvtss2sd 0x208(%rax,%rcx), %xmm0
addsd -0x40(%rbp), %xmm0
movsd %xmm0, -0x40(%rbp)
xorps %xmm0, %xmm0
cvtss2sd 0x20c(%rax,%rcx), %xmm0
addsd -0x38(%rbp), %xmm0
movsd %xmm0, -0x38(%rbp)
movss 0x20(%rax,%rcx), %xmm1
xorps %xmm0, %xmm0
cvtss2sd %xmm1, %xmm0
xorpd %xmm2, %xmm2
ucomiss %xmm1, %xmm2
ja 0x1a757
movaps %xmm0, %xmm1
jmp 0x1a761
movsd 0x2f2928(%rip), %xmm0   # 0x30d048
addsd -0x40(%rbp), %xmm0
movsd %xmm0, -0x40(%rbp)
movsd 0x2f291e(%rip), %xmm0   # 0x30d050
addsd -0x38(%rbp), %xmm0
movsd %xmm0, -0x38(%rbp)
movsd 0x2f2914(%rip), %xmm0   # 0x30d058
addsd -0x30(%rbp), %xmm0
movsd %xmm0, -0x30(%rbp)
leaq 0x2f28db(%rip), %rax    # 0x30d030
jmp 0x1a79f
movaps 0xeea42(%rip), %xmm1    # 0x1091a0
xorps %xmm0, %xmm1
cmpl $0x3e8, %edx            # imm = 0x3E8
jl 0x1a76c
movaps %xmm0, %xmm1
addsd -0x30(%rbp), %xmm1
movsd %xmm1, -0x30(%rbp)
cmpl $0x0, 0x2f2bc7(%rip)    # 0x30d344
je 0x1a788
addq %rcx, %rax
addq $0x28, %rax
jmp 0x1a79f
cmpl $0x0, 0x2f2bb9(%rip)    # 0x30d348
leaq 0x38(%rax,%rcx), %rcx
leaq 0x2f2895(%rip), %rax    # 0x30d030
cmovneq %rcx, %rax
movsd (%rax), %xmm0
addsd -0x28(%rbp), %xmm0
movsd %xmm0, -0x28(%rbp)
movq $0x0, -0x48(%rbp)
movzwl -0xc8(%rbp), %ecx
andl $0x1f00, %ecx           # imm = 0x1F00
movl 0x224744(%rip), %eax    # 0x23ef0c
movl $0xff, %edx
cmpl %edx, %eax
cmovll %eax, %edx
movzwl 0x22476f(%rip), %eax    # 0x23ef48
andl $0x800, %eax            # imm = 0x800
orl %ecx, %eax
orl %edx, %eax
movw %ax, -0xc8(%rbp)
testb $0x1, 0x2f2cb4(%rip)    # 0x30d4a4
je 0x1a7fe
orl $0x200, %eax            # imm = 0x200
movw %ax, -0xc8(%rbp)
movb 0x2f2c93(%rip), %dl     # 0x30d497
cmpb $0x6, %dl
setne %al
cmpb $0x0, 0x324ec7(%rip)    # 0x33f6d8
sete %cl
testb %dl, %dl
je 0x1a823
orb %cl, %al
je 0x1a823
orb $0x1, -0xc7(%rbp)
cmpl $0x0, 0x2f2776(%rip)    # 0x30cfa0
je 0x1a833
orb $0x10, -0xc7(%rbp)
cmpb $0x0, 0x22472e(%rip)    # 0x23ef68
je 0x1a851
movl 0x22472e(%rip), %eax    # 0x23ef70
orl 0x224724(%rip), %eax    # 0x23ef6c
je 0x1a851
orb $0x4, -0xc7(%rbp)
movsd 0x2f2cd7(%rip), %xmm0   # 0x30d530
movsd %xmm0, -0xc0(%rbp)
movq 0x200ac0(%rip), %r14    # 0x21b328
testq %r14, %r14
js 0x1a895
cmpq %r14, 0x200aac(%rip)    # 0x21b320
jle 0x1a895
imulq $0xb0, %r14, %rdi
addq 0x200a8c(%rip), %rdi    # 0x21b310
leaq -0xc8(%rbp), %rsi
movl $0xb0, %edx
callq 0x9650
movl $0x0, 0x2246a9(%rip)    # 0x23ef48
movslq 0x200ae6(%rip), %rax    # 0x21b38c
incq %rax
movl %eax, 0x200add(%rip)    # 0x21b38c
cmpq %rax, 0x200ae2(%rip)    # 0x21b398
jle 0x1a8c5
testl %ebx, %ebx
jne 0x1aa31
jmp 0x1aa43
movl $0x0, 0x200abd(%rip)    # 0x21b38c
movb 0x22246b(%rip), %al     # 0x23cd40
testb %al, %al
jne 0x1a8e7
movq 0x200a58(%rip), %rcx    # 0x21b338
movq %rcx, 0x222461(%rip)    # 0x23cd48
movslq 0x200aa2(%rip), %rcx    # 0x21b390
incq %rcx
movl %ecx, 0x200a99(%rip)    # 0x21b390
cmpq %rcx, 0x200aa2(%rip)    # 0x21b3a0
setle %dl
movb 0x200abe(%rip), %cl     # 0x21b3c5
cmpb $0x2, %cl
sete %sil
orb %dl, %sil
cmpb $0x1, %sil
jne 0x1a993
cmpb $0x2, %cl
sete %cl
testb %al, %al
sete %al
orb %cl, %al
jne 0x1a93a
movl 0x1fdf58(%rip), %eax    # 0x218884
subl 0x200a9e(%rip), %eax    # 0x21b3d0
cmpl %eax, 0x200a94(%rip)    # 0x21b3cc
jge 0x1a993
cmpq 0x200927(%rip), %r14    # 0x21b268
jne 0x1a95b
leaq 0x325c1e(%rip), %rdi    # 0x340568
leaq -0xc8(%rbp), %rsi
movl $0xb0, %edx
callq 0x92b0
leaq -0xc8(%rbp), %r14
movq %r14, %rdi
callq 0x18d06
leaq 0x325bf7(%rip), %rdi    # 0x340568
movl $0xb0, %edx
movq %r14, %rsi
callq 0x92b0
testl %ebx, %ebx
jne 0x1aa51
cmpb $0x2, 0x200a38(%rip)    # 0x21b3c5
je 0x1aa51
cmpb $0x0, 0x200a2e(%rip)    # 0x21b3c8
je 0x1a9a3
xorl %edi, %edi
callq 0x19792
movslq 0x2009e6(%rip), %rax    # 0x21b390
cmpq %rax, 0x2009ef(%rip)    # 0x21b3a0
jg 0x1a9bd
movl $0x0, 0x2009d3(%rip)    # 0x21b390
movq 0x200974(%rip), %rcx    # 0x21b338
incq %rcx
movq 0x200952(%rip), %rax    # 0x21b320
cmpq %rax, %rcx
cmovgeq %rax, %rcx
movq 0x20094c(%rip), %rdx    # 0x21b328
incq %rdx
xorl %edi, %edi
cmpq %rax, %rdx
cmovlq %rdx, %rdi
movq %rcx, 0x200949(%rip)    # 0x21b338
movq %rdi, 0x200932(%rip)    # 0x21b328
movq 0x200933(%rip), %rcx    # 0x21b330
cmpq %rcx, %rdi
jne 0x1aa23
incq %rcx
xorl %edx, %edx
cmpq %rax, %rcx
cmovlq %rcx, %rdx
movq %rdx, 0x20091b(%rip)    # 0x21b330
movq %rax, 0x20091c(%rip)    # 0x21b338
movb $0x1, 0x20091d(%rip)    # 0x21b340
callq 0x10818
testl %ebx, %ebx
je 0x1aa43
callq 0x17e7f
addq $0x168, %rsp            # imm = 0x168
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0xab5f
addq $0x168, %rsp            # imm = 0x168
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
movq 0x2008d0(%rip), %rdi    # 0x21b328
callq 0x18609
movslq 0x20096c(%rip), %rcx    # 0x21b3d0
movl 0x200962(%rip), %eax    # 0x21b3cc
addl %ecx, %eax
movl %eax, 0x20095a(%rip)    # 0x21b3cc
movl 0x1fde0c(%rip), %edx    # 0x218884
cmpl %edx, %eax
jge 0x1aa9c
cmpb $0x0, 0x200954(%rip)    # 0x21b3d7
je 0x1a993
xorl %edi, %edi
callq 0x19792
movb $0x0, 0x200940(%rip)    # 0x21b3d7
jmp 0x1a9a3
cmpb $0x2, 0x200922(%rip)    # 0x21b3c5
jne 0x1aab4
movl $0x1, %edi
callq 0x2f340
jmp 0x1a9a3
movl 0x1fddde(%rip), %esi    # 0x218898
subl %esi, %edx
imull %ecx, %esi
subl %esi, %eax
movl %eax, 0x200905(%rip)    # 0x21b3cc
movq 0x20085a(%rip), %rsi    # 0x21b328
movslq %edx, %rax
imulq 0x2008c7(%rip), %rax    # 0x21b3a0
cqto
idivq %rcx
addq 0x20084b(%rip), %rax    # 0x21b330
subq %rax, %rsi
movq %rsi, 0x200859(%rip)    # 0x21b348
jns 0x1a99c
cmpb $0x0, 0x200844(%rip)    # 0x21b340
je 0x1ab10
addq 0x20081b(%rip), %rsi    # 0x21b320
xorl %eax, %eax
testq %rsi, %rsi
cmovgq %rsi, %rax
jmp 0x1ab12
xorl %eax, %eax
movq %rax, 0x20082f(%rip)    # 0x21b348
jmp 0x1a99c
movsd 0x2f262a(%rip), %xmm0   # 0x30d150
movsd 0x2f1ed2(%rip), %xmm1   # 0x30ca00
xorpd %xmm2, %xmm2
cmpeqsd %xmm0, %xmm2
movapd %xmm2, %xmm3
andpd %xmm1, %xmm3
andnpd %xmm0, %xmm2
orpd %xmm3, %xmm2
subsd %xmm2, %xmm1
mulsd 0x2f25b5(%rip), %xmm1   # 0x30d108
movsd 0xee4dd(%rip), %xmm0    # 0x109038
mulsd %xmm0, %xmm1
addsd -0x98(%rbp), %xmm1
movsd %xmm1, -0x98(%rbp)
mulsd -0xb0(%rbp), %xmm0
subsd %xmm1, %xmm0
movsd %xmm0, -0x90(%rbp)
jmp 0x1a5d9