// File: /workspace/github_cpp_makefile_star2_O2/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 0x1ec521(%rip), %rsi    # 0x205328
leaq -0x178(%rbp), %r14
movq %r14, %rdi
callq 0xf9c7
leaq -0xc8(%rbp), %r15
movl $0xb0, %edx
movq %r15, %rdi
movq %r14, %rsi
callq 0x92a0
cmpl $0x0, 0x2de418(%rip)    # 0x2f724c
movsd 0x28(%r15), %xmm0
jne 0x18e65
cmpl $0x0, 0x2ddc15(%rip)    # 0x2f6a58
je 0x18e65
addsd 0x2ddbfb(%rip), %xmm0   # 0x2f6a48
movsd %xmm0, -0xa0(%rbp)
leaq 0xdbddc(%rip), %rax     # 0xf4c38
movq %rax, 0x12f185(%rip)    # 0x147fe8
jmp 0x18e75
addsd 0x2ddbab(%rip), %xmm0   # 0x2f6a18
movsd %xmm0, -0xa0(%rbp)
cvtsi2sdl 0x21008f(%rip), %xmm0 # 0x228f0c
movsd %xmm0, -0x20(%rbp)
cmpl $0x0, 0x2de473(%rip)    # 0x2f72fc
movsd -0xa8(%rbp), %xmm0
jne 0x18ee4
cmpl $0x0, 0x2de52a(%rip)    # 0x2f73c4
jne 0x18ee4
cmpl $0x0, 0x2ddbb1(%rip)    # 0x2f6a54
je 0x18ee4
addsd 0x2ddb93(%rip), %xmm0   # 0x2f6a40
movsd %xmm0, -0xa8(%rbp)
leaq 0x102afa(%rip), %rax    # 0x11b9b6
movq %rax, 0x12f045(%rip)    # 0x147f08
leaq 0xdbd74(%rip), %rax     # 0xf4c3e
movq %rax, 0x12f02f(%rip)    # 0x147f00
movabsq $0x3ff0000000000000, %rax # imm = 0x3FF0000000000000
movq %rax, 0x12f02e(%rip)    # 0x147f10
jmp 0x18ef4
addsd 0x2ddb14(%rip), %xmm0   # 0x2f6a00
movsd %xmm0, -0xa8(%rbp)
movq 0x1e99d5(%rip), %rax    # 0x2028d0
cmpq $0x10000, %rax          # imm = 0x10000
jne 0x18f5c
movsd 0x20dc5d(%rip), %xmm0   # 0x226b68
addsd -0xb8(%rbp), %xmm0
movsd %xmm0, -0xb8(%rbp)
movsd 0x20dc95(%rip), %xmm0   # 0x226bb8
addsd -0xb0(%rbp), %xmm0
movsd %xmm0, -0xb0(%rbp)
movsd 0x20dccd(%rip), %xmm1   # 0x226c08
addsd -0x68(%rbp), %xmm1
movsd %xmm1, -0x68(%rbp)
movsd 0x20dd13(%rip), %xmm1   # 0x226c60
addsd -0x60(%rbp), %xmm1
movsd %xmm1, -0x60(%rbp)
jmp 0x190bf
movl 0x2de2d6(%rip), %ecx    # 0x2f7238
testl %ecx, %ecx
setne %dl
cmpl $0x37, %ecx
setne %cl
testb %cl, %dl
jne 0x18fbd
cmpl $0x0, 0x2ddad8(%rip)    # 0x2f6a50
je 0x18fbd
movsd 0x2ddab6(%rip), %xmm0   # 0x2f6a38
addsd -0xb8(%rbp), %xmm0
movsd %xmm0, -0xb8(%rbp)
movsd 0x2dd826(%rip), %xmm0   # 0x2f67c0
addsd -0xb0(%rbp), %xmm0
movsd %xmm0, -0xb0(%rbp)
leaq 0xdbc92(%rip), %rax     # 0xf4c43
movq %rax, 0x12ed78(%rip)    # 0x147d30
jmp 0x190bf
cmpq $0x10000000, %rax       # imm = 0x10000000
je 0x1908f
cmpq $0x80000, %rax          # imm = 0x80000
je 0x1906d
cmpq $0x800000, %rax         # imm = 0x800000
je 0x1904c
cmpq $0x8000000, %rax        # imm = 0x8000000
je 0x19012
cmpq $0x20000, %rax          # imm = 0x20000
jne 0x1905c
movsd 0x1eb91b(%rip), %xmm0   # 0x204910
addsd -0xb8(%rbp), %xmm0
movsd %xmm0, -0xb8(%rbp)
movsd 0x1eb93b(%rip), %xmm0   # 0x204948
jmp 0x190af
movsd 0x2dd79e(%rip), %xmm1   # 0x2f67b8
addsd -0xb8(%rbp), %xmm1
cvtsi2sdl 0x2deb8e(%rip), %xmm0 # 0x2f7bb8
mulsd 0xda11e(%rip), %xmm0    # 0xf3150
mulsd 0xda11e(%rip), %xmm0    # 0xf3158
divsd 0xd9ff6(%rip), %xmm0    # 0xf3038
movsd %xmm1, -0xb8(%rbp)
jmp 0x190af
callq 0x57eca
testl %eax, %eax
jne 0x1906d
movq 0x1e9874(%rip), %rax    # 0x2028d0
cmpq $0x400, %rax            # imm = 0x400
jne 0x1908f
callq 0x57eca
testl %eax, %eax
je 0x1908f
movsd 0x2ddb6b(%rip), %xmm0   # 0x2f6be0
addsd -0xb8(%rbp), %xmm0
movsd %xmm0, -0xb8(%rbp)
movsd 0x2ddb5b(%rip), %xmm0   # 0x2f6be8
jmp 0x190af
movsd 0x2dd721(%rip), %xmm0   # 0x2f67b8
addsd -0xb8(%rbp), %xmm0
movsd %xmm0, -0xb8(%rbp)
movsd 0x2dd711(%rip), %xmm0   # 0x2f67c0
addsd -0xb0(%rbp), %xmm0
movsd %xmm0, -0xb0(%rbp)
movq 0x1e980a(%rip), %rax    # 0x2028d0
cmpq $0x8, %rax
je 0x19823
cmpq $0x10000, %rax          # imm = 0x10000
je 0x19321
movabsq $0x1000000000, %rcx     # imm = 0x1000000000
cmpq %rcx, %rax
je 0x1983a
cmpq $0x100000, %rax         # imm = 0x100000
je 0x194f0
cmpq $0x800000, %rax         # imm = 0x800000
je 0x197ba
cmpq $0x1000000, %rax        # imm = 0x1000000
je 0x196ef
cmpq $0x2000000, %rax        # imm = 0x2000000
je 0x19256
cmpq $0x8000000, %rax        # imm = 0x8000000
je 0x19437
cmpq $0x10000000, %rax       # imm = 0x10000000
je 0x1939a
cmpq $0x20000, %rax          # imm = 0x20000
jne 0x19582
movsd 0x1eb7d5(%rip), %xmm0   # 0x204920
addsd -0x98(%rbp), %xmm0
movsd %xmm0, -0x98(%rbp)
movsd 0x1eb7c5(%rip), %xmm0   # 0x204928
addsd -0x90(%rbp), %xmm0
movsd %xmm0, -0x90(%rbp)
movsd 0x1eb79d(%rip), %xmm0   # 0x204918
addsd -0x88(%rbp), %xmm0
movsd %xmm0, -0x88(%rbp)
movsd 0x1eb7a5(%rip), %xmm0   # 0x204938
addsd -0x80(%rbp), %xmm0
movsd %xmm0, -0x80(%rbp)
movsd 0x1eb79b(%rip), %xmm0   # 0x204940
addsd -0x78(%rbp), %xmm0
movsd %xmm0, -0x78(%rbp)
movsd 0x1eb7a9(%rip), %xmm0   # 0x204960
addsd -0x70(%rbp), %xmm0
movsd %xmm0, -0x70(%rbp)
movsd 0x1eb79f(%rip), %xmm0   # 0x204968
addsd -0x68(%rbp), %xmm0
movsd %xmm0, -0x68(%rbp)
movsd 0x1eb795(%rip), %xmm0   # 0x204970
addsd -0x60(%rbp), %xmm0
movsd %xmm0, -0x60(%rbp)
movsd 0x1eb78b(%rip), %xmm0   # 0x204978
addsd -0x58(%rbp), %xmm0
movsd %xmm0, -0x58(%rbp)
movsd 0x1eb701(%rip), %xmm0   # 0x204900
addsd -0x50(%rbp), %xmm0
movsd %xmm0, -0x50(%rbp)
movsd 0x1eb6f7(%rip), %xmm0   # 0x204908
addsd -0x40(%rbp), %xmm0
movsd %xmm0, -0x40(%rbp)
movsd 0x1eb72d(%rip), %xmm0   # 0x204950
addsd -0x38(%rbp), %xmm0
movsd %xmm0, -0x38(%rbp)
movsd 0x1eb723(%rip), %xmm0   # 0x204958
addsd -0x30(%rbp), %xmm0
movsd %xmm0, -0x30(%rbp)
movsd 0x1eb751(%rip), %xmm0   # 0x204998
addsd -0x28(%rbp), %xmm0
movsd %xmm0, -0x28(%rbp)
jmp 0x19a74
movsd 0x1ebc0a(%rip), %xmm0   # 0x204e68
addsd -0x98(%rbp), %xmm0
movsd %xmm0, -0x98(%rbp)
movsd 0x1ebc1a(%rip), %xmm0   # 0x204e90
addsd -0x90(%rbp), %xmm0
movsd %xmm0, -0x90(%rbp)
movsd 0x1ebc0a(%rip), %xmm0   # 0x204e98
addsd -0x88(%rbp), %xmm0
movsd %xmm0, -0x88(%rbp)
movsd 0x1ebbfa(%rip), %xmm0   # 0x204ea0
addsd -0x80(%rbp), %xmm0
movsd %xmm0, -0x80(%rbp)
movsd 0x1ebba8(%rip), %xmm0   # 0x204e60
addsd -0x78(%rbp), %xmm0
movsd %xmm0, -0x78(%rbp)
movsd 0x1ebb5e(%rip), %xmm0   # 0x204e28
addsd -0x70(%rbp), %xmm0
movsd %xmm0, -0x70(%rbp)
movsd 0x1ebb54(%rip), %xmm0   # 0x204e30
addsd -0x68(%rbp), %xmm0
movsd %xmm0, -0x68(%rbp)
movsd 0x1ebb5a(%rip), %xmm0   # 0x204e48
addsd -0x60(%rbp), %xmm0
movsd %xmm0, -0x60(%rbp)
movsd 0x1ebb40(%rip), %xmm0   # 0x204e40
addsd -0x58(%rbp), %xmm0
movsd %xmm0, -0x58(%rbp)
movsd 0x1ebb26(%rip), %xmm0   # 0x204e38
addsd -0x50(%rbp), %xmm0
movsd %xmm0, -0x50(%rbp)
jmp 0x19a74
movsd 0x2dd4cf(%rip), %xmm0   # 0x2f67f8
addsd -0x98(%rbp), %xmm0
movsd %xmm0, -0x98(%rbp)
movsd 0x2dd4bf(%rip), %xmm0   # 0x2f6800
addsd -0x90(%rbp), %xmm0
movsd %xmm0, -0x90(%rbp)
movsd 0x2dd4bf(%rip), %xmm0   # 0x2f6818
addsd -0x88(%rbp), %xmm0
movsd %xmm0, -0x88(%rbp)
movsd 0x2dd4af(%rip), %xmm0   # 0x2f6820
addsd -0x80(%rbp), %xmm0
movsd %xmm0, -0x80(%rbp)
movsd 0x2dd555(%rip), %xmm0   # 0x2f68d8
addsd -0x78(%rbp), %xmm0
movsd %xmm0, -0x78(%rbp)
movsd 0x2dd54b(%rip), %xmm0   # 0x2f68e0
jmp 0x19a6a
movsd 0x2de946(%rip), %xmm0   # 0x2f7ce8
addsd -0x98(%rbp), %xmm0
movsd %xmm0, -0x98(%rbp)
movsd 0x2de916(%rip), %xmm0   # 0x2f7cd0
addsd -0x90(%rbp), %xmm0
movsd %xmm0, -0x90(%rbp)
movsd 0x2de8f6(%rip), %xmm0   # 0x2f7cc8
addsd -0x88(%rbp), %xmm0
movsd %xmm0, -0x88(%rbp)
movsd 0x2de8f6(%rip), %xmm0   # 0x2f7ce0
addsd -0x80(%rbp), %xmm0
movsd %xmm0, -0x80(%rbp)
movsd 0x2de8f4(%rip), %xmm0   # 0x2f7cf0
addsd -0x78(%rbp), %xmm0
movsd %xmm0, -0x78(%rbp)
movsd 0x2de8ea(%rip), %xmm0   # 0x2f7cf8
addsd -0x70(%rbp), %xmm0
movsd %xmm0, -0x70(%rbp)
movsd 0x2de8e0(%rip), %xmm0   # 0x2f7d00
addsd -0x68(%rbp), %xmm0
movsd %xmm0, -0x68(%rbp)
movsd 0x2de8a6(%rip), %xmm0   # 0x2f7cd8
jmp 0x1982b
movsd 0x2de729(%rip), %xmm0   # 0x2f7b68
addsd -0x98(%rbp), %xmm0
movsd %xmm0, -0x98(%rbp)
movsd 0x2de721(%rip), %xmm0   # 0x2f7b78
addsd -0x90(%rbp), %xmm0
movsd %xmm0, -0x90(%rbp)
movsd 0x2de711(%rip), %xmm0   # 0x2f7b80
addsd -0x88(%rbp), %xmm0
movsd %xmm0, -0x88(%rbp)
movsd 0x2de701(%rip), %xmm0   # 0x2f7b88
addsd -0x80(%rbp), %xmm0
movsd %xmm0, -0x80(%rbp)
movsd 0x2de6f7(%rip), %xmm0   # 0x2f7b90
addsd -0x78(%rbp), %xmm0
movsd %xmm0, -0x78(%rbp)
movsd 0x2de6ed(%rip), %xmm0   # 0x2f7b98
addsd -0x70(%rbp), %xmm0
cvtsi2sdl 0x2de720(%rip), %xmm1 # 0x2f7bd8
movsd %xmm0, -0x70(%rbp)
addsd -0x68(%rbp), %xmm1
movsd %xmm1, -0x68(%rbp)
movsd 0x2de6a1(%rip), %xmm0   # 0x2f7b70
addsd -0x60(%rbp), %xmm0
movsd %xmm0, -0x60(%rbp)
movsd 0x2de6bf(%rip), %xmm0   # 0x2f7ba0
addsd -0x58(%rbp), %xmm0
movsd %xmm0, -0x58(%rbp)
jmp 0x19a74
movsd 0x30e180(%rip), %xmm0   # 0x327678
addsd -0x98(%rbp), %xmm0
movsd %xmm0, -0x98(%rbp)
movsd 0x30e188(%rip), %xmm0   # 0x327698
addsd -0x90(%rbp), %xmm0
movsd %xmm0, -0x90(%rbp)
movsd 0x30e160(%rip), %xmm0   # 0x327688
addsd -0x88(%rbp), %xmm0
cvtsi2sdl 0x2dd718(%rip), %xmm1 # 0x2f6c50
movsd %xmm0, -0x88(%rbp)
addsd -0x80(%rbp), %xmm1
movsd %xmm1, -0x80(%rbp)
movsd 0x30e0f6(%rip), %xmm0   # 0x327648
addsd -0x78(%rbp), %xmm0
movsd %xmm0, -0x78(%rbp)
callq 0x52755
addsd -0x70(%rbp), %xmm0
movsd %xmm0, -0x70(%rbp)
movsd 0x30e0e5(%rip), %xmm0   # 0x327658
addsd -0x68(%rbp), %xmm0
movsd %xmm0, -0x68(%rbp)
jmp 0x19a74
movb 0x1e937c(%rip), %cl     # 0x202904
orb 0x30bd36(%rip), %cl     # 0x3252c4
jne 0x195bd
cmpq $0x1, %rax
sete %dl
movl 0x1eba37(%rip), %ecx    # 0x204fd4
cmpl $0x41, %ecx
sete %sil
andb %dl, %sil
movl 0x1e934b(%rip), %edx    # 0x2028f8
cmpl $0x47, %edx
sete %dil
testb %dil, %sil
je 0x19899
movsd 0xd9b9b(%rip), %xmm2    # 0xf3160
movsd 0x2dda03(%rip), %xmm1   # 0x2f6fd0
mulsd %xmm2, %xmm1
movsd -0x98(%rbp), %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x98(%rbp)
movsd 0x2dd9eb(%rip), %xmm0   # 0x2f6fd8
mulsd %xmm0, %xmm2
addsd -0x90(%rbp), %xmm2
movsd %xmm2, -0x90(%rbp)
movsd 0x2dd9d7(%rip), %xmm2   # 0x2f6fe0
addsd -0x88(%rbp), %xmm2
movsd %xmm2, -0x88(%rbp)
movsd 0x2dd9df(%rip), %xmm2   # 0x2f7000
ucomisd %xmm1, %xmm2
jbe 0x1962f
movsd %xmm1, 0x2dd9d1(%rip)   # 0x2f7000
ucomisd 0x2dd9d1(%rip), %xmm1   # 0x2f7008
jbe 0x19641
movsd %xmm1, 0x2dd9c7(%rip)   # 0x2f7008
mulsd 0xd9b17(%rip), %xmm0    # 0xf3160
movsd 0x2dd9bf(%rip), %xmm1   # 0x2f7010
ucomisd %xmm0, %xmm1
jbe 0x1965f
movsd %xmm0, 0x2dd9b1(%rip)   # 0x2f7010
ucomisd 0x2dd9b1(%rip), %xmm0   # 0x2f7018
jbe 0x19671
movsd %xmm0, 0x2dd9a7(%rip)   # 0x2f7018
leaq -0x60(%rbp), %rcx
movl $0x1, 0x2ddc41(%rip)    # 0x2f72c0
cmpq $0x8, %rax
je 0x196af
cmpq $0x10, %rax
je 0x196af
cmpq $0x40000, %rax          # imm = 0x40000
je 0x19a19
cmpq $0x400000, %rax         # imm = 0x400000
je 0x199d8
cmpq $0x200000, %rax         # imm = 0x200000
jne 0x19a3c
cvtsi2sdl 0x2dd599(%rip), %xmm0 # 0x2f6c50
addsd -0x80(%rbp), %xmm0
movsd %xmm0, -0x80(%rbp)
movsd -0x78(%rbp), %xmm0
cmpq $0x200000, %rax         # imm = 0x200000
jne 0x199b0
cvtsi2sdl 0x30dcc6(%rip), %xmm1 # 0x3273a0
addsd %xmm1, %xmm0
movsd %xmm0, -0x78(%rbp)
leaq 0x30dc7e(%rip), %rax    # 0x327368
jmp 0x19a59
movsd 0x1eb4d1(%rip), %xmm0   # 0x204bc8
addsd -0x98(%rbp), %xmm0
movsd %xmm0, -0x98(%rbp)
movsd 0x1eb4c1(%rip), %xmm0   # 0x204bd0
addsd -0x90(%rbp), %xmm0
movsd %xmm0, -0x90(%rbp)
movsd 0x1eb4b1(%rip), %xmm0   # 0x204bd8
addsd -0x88(%rbp), %xmm0
movsd %xmm0, -0x88(%rbp)
movsd 0x1eb4d1(%rip), %xmm0   # 0x204c10
addsd -0x80(%rbp), %xmm0
movsd %xmm0, -0x80(%rbp)
movsd 0x1eb50f(%rip), %xmm0   # 0x204c60
addsd -0x78(%rbp), %xmm0
movsd %xmm0, -0x78(%rbp)
movsd 0x1eb4f5(%rip), %xmm0   # 0x204c58
addsd -0x70(%rbp), %xmm0
movsd %xmm0, -0x70(%rbp)
movsd 0x1eb473(%rip), %xmm0   # 0x204be8
addsd -0x68(%rbp), %xmm0
movsd %xmm0, -0x68(%rbp)
movsd 0x1eb459(%rip), %xmm0   # 0x204be0
addsd -0x60(%rbp), %xmm0
movsd %xmm0, -0x60(%rbp)
cvtsi2sdl 0x1eb38f(%rip), %xmm0 # 0x204b28
addsd -0x58(%rbp), %xmm0
cvtsi2sdl 0x1eb386(%rip), %xmm1 # 0x204b2c
movsd %xmm0, -0x58(%rbp)
addsd -0x50(%rbp), %xmm1
movsd %xmm1, -0x50(%rbp)
jmp 0x19a74
movsd 0x2dd886(%rip), %xmm0   # 0x2f7048
addsd -0x98(%rbp), %xmm0
movsd %xmm0, -0x98(%rbp)
movsd 0x2dd876(%rip), %xmm0   # 0x2f7050
addsd -0x90(%rbp), %xmm0
movsd %xmm0, -0x90(%rbp)
movsd 0x2dd866(%rip), %xmm0   # 0x2f7058
addsd -0x88(%rbp), %xmm0
movsd %xmm0, -0x88(%rbp)
movsd 0x2dd826(%rip), %xmm0   # 0x2f7030
addsd -0x70(%rbp), %xmm0
movsd %xmm0, -0x70(%rbp)
movl $0x1, 0x2ddaa2(%rip)    # 0x2f72c0
jmp 0x19a74
movsd 0x2dd1fd(%rip), %xmm0   # 0x2f6a28
addsd -0x60(%rbp), %xmm0
movsd %xmm0, -0x60(%rbp)
jmp 0x19a74
movsd 0x2dd21e(%rip), %xmm0   # 0x2f6a60
addsd -0x98(%rbp), %xmm0
movsd %xmm0, -0x98(%rbp)
movsd 0x2dd226(%rip), %xmm0   # 0x2f6a80
addsd -0x90(%rbp), %xmm0
movsd %xmm0, -0x90(%rbp)
movsd 0x2dd1f6(%rip), %xmm0   # 0x2f6a68
addsd -0x88(%rbp), %xmm0
movsd %xmm0, -0x88(%rbp)
movsd 0x2dd1ee(%rip), %xmm0   # 0x2f6a78
addsd -0x80(%rbp), %xmm0
movsd %xmm0, -0x80(%rbp)
jmp 0x19a74
testb %sil, %sil
je 0x198b0
cmpl $0x33, %edx
je 0x195bd
cmpl $0x47, %edx
je 0x195bd
cmpl $0x41, %ecx
sete %dl
cmpq $0x1, %rax
sete %sil
cmpl $0x50, %ecx
sete %cl
movabsq $0x4806409fc, %rdi      # imm = 0x4806409FC
testq %rdi, %rax
jne 0x195bd
orb %cl, %dl
andb %dl, %sil
jne 0x195bd
cmpb $0x0, 0x20f655(%rip)    # 0x228f3e
je 0x19fb2
movsd 0x2dd509(%rip), %xmm0   # 0x2f6e00
addsd -0x98(%rbp), %xmm0
movsd %xmm0, -0x98(%rbp)
movsd 0x2dd4c1(%rip), %xmm0   # 0x2f6dd0
addsd -0x90(%rbp), %xmm0
movsd %xmm0, -0x90(%rbp)
movsd 0x2dd4b1(%rip), %xmm0   # 0x2f6dd8
addsd -0x88(%rbp), %xmm0
movsd %xmm0, -0x88(%rbp)
movsd 0x2dd4b1(%rip), %xmm0   # 0x2f6df0
addsd -0x80(%rbp), %xmm0
movsd %xmm0, -0x80(%rbp)
movsd 0x1eb8b7(%rip), %xmm0   # 0x205208
addsd -0x78(%rbp), %xmm0
movsd %xmm0, -0x78(%rbp)
movsd 0x2dd59d(%rip), %xmm0   # 0x2f6f00
addsd -0x70(%rbp), %xmm0
movsd %xmm0, -0x70(%rbp)
movsd 0x2dd593(%rip), %xmm0   # 0x2f6f08
addsd -0x68(%rbp), %xmm0
movsd %xmm0, -0x68(%rbp)
movsd 0x2dd589(%rip), %xmm0   # 0x2f6f10
addsd -0x60(%rbp), %xmm0
movsd %xmm0, -0x60(%rbp)
movsd 0x2dd57f(%rip), %xmm0   # 0x2f6f18
addsd -0x58(%rbp), %xmm0
movsd %xmm0, -0x58(%rbp)
movsd 0x2dd22d(%rip), %xmm0   # 0x2f6bd8
jmp 0x19312
cvtsi2sdl 0x2dd2a0(%rip), %xmm1 # 0x2f6c58
addsd %xmm1, %xmm0
movsd %xmm0, -0x78(%rbp)
cmpq $0x8, %rax
jne 0x19a65
leaq -0x68(%rbp), %rcx
leaq 0x2de082(%rip), %rax    # 0x2f7a58
jmp 0x19a03
movsd 0x2de0b0(%rip), %xmm0   # 0x2f7a90
addsd -0x78(%rbp), %xmm0
movsd %xmm0, -0x78(%rbp)
movsd 0x2de066(%rip), %xmm0   # 0x2f7a58
addsd -0x68(%rbp), %xmm0
movsd %xmm0, -0x68(%rbp)
leaq 0x2de05d(%rip), %rax    # 0x2f7a60
movsd (%rax), %xmm0
addsd (%rcx), %xmm0
movsd %xmm0, (%rcx)
movsd 0x2de051(%rip), %xmm0   # 0x2f7a68
jmp 0x19a6a
movsd 0x30c5af(%rip), %xmm0   # 0x325fd0
mulsd 0xd972f(%rip), %xmm0    # 0xf3158
addsd -0x68(%rbp), %xmm0
movsd %xmm0, -0x68(%rbp)
leaq 0x30c57e(%rip), %rax    # 0x325fb8
jmp 0x19a59
leaq -0x78(%rbp), %rcx
movsd 0x2dd5d8(%rip), %xmm0   # 0x2f7020
addsd -0x8(%rcx), %xmm0
movsd %xmm0, -0x8(%rcx)
leaq 0x2dd5cf(%rip), %rax    # 0x2f7028
movsd (%rax), %xmm0
addsd (%rcx), %xmm0
movsd %xmm0, (%rcx)
callq 0x52755
addsd -0x70(%rbp), %xmm0
movsd %xmm0, -0x70(%rbp)
cmpb $0x0, 0x20f4c3(%rip)    # 0x228f3e
setne %cl
movq 0x1e8e4b(%rip), %rax    # 0x2028d0
cmpq $0x20000, %rax          # imm = 0x20000
sete %dl
orb %cl, %dl
jne 0x19c3f
testl $0xb020000, %eax        # imm = 0xB020000
jne 0x19afa
movsd 0x2ddc6b(%rip), %xmm0   # 0x2f7710
subsd 0x2ddc6b(%rip), %xmm0   # 0x2f7718
addq $-0x8, %rax
testq $-0x9, %rax
jne 0x19ade
movsd 0xd96a7(%rip), %xmm1    # 0xf3168
cmpltsd %xmm0, %xmm1
movsd 0xd956a(%rip), %xmm2    # 0xf3038
andpd %xmm1, %xmm2
andnpd %xmm0, %xmm1
orpd %xmm2, %xmm1
movapd %xmm1, %xmm0
addsd -0x50(%rbp), %xmm0
movsd %xmm0, -0x50(%rbp)
movsd 0x2de3e0(%rip), %xmm0   # 0x2f7ed0
addsd -0x58(%rbp), %xmm0
movsd %xmm0, -0x58(%rbp)
callq 0x57eca
testl %eax, %eax
je 0x19b52
cmpq $0x800000, 0x1e8dc2(%rip) # imm = 0x800000
je 0x19b52
movsd 0x2dd080(%rip), %xmm0   # 0x2f6b98
addsd -0x40(%rbp), %xmm0
movsd %xmm0, -0x40(%rbp)
movsd 0x2dd076(%rip), %xmm0   # 0x2f6ba0
addsd -0x38(%rbp), %xmm0
movsd %xmm0, -0x38(%rbp)
movsd 0x2dd074(%rip), %xmm0   # 0x2f6bb0
addsd -0x30(%rbp), %xmm0
movsd %xmm0, -0x30(%rbp)
leaq 0x2dd06b(%rip), %rax    # 0x2f6bb8
jmp 0x19c31
movslq 0x2dcc3b(%rip), %rdx    # 0x2f6794
testq %rdx, %rdx
je 0x19baa
imulq $0x348, %rdx, %rax      # imm = 0x348
leaq 0x20f444(%rip), %rcx    # 0x228fb0
cvtss2sd 0x208(%rax,%rcx), %xmm0
addsd -0x40(%rbp), %xmm0
movsd %xmm0, -0x40(%rbp)
cvtss2sd 0x20c(%rax,%rcx), %xmm0
addsd -0x38(%rbp), %xmm0
movsd %xmm0, -0x38(%rbp)
movss 0x20(%rax,%rcx), %xmm1
cvtss2sd %xmm1, %xmm0
xorpd %xmm2, %xmm2
ucomiss %xmm1, %xmm2
ja 0x19be9
movaps %xmm0, %xmm1
jmp 0x19bf3
movsd 0x2dd496(%rip), %xmm0   # 0x2f7048
addsd -0x40(%rbp), %xmm0
movsd %xmm0, -0x40(%rbp)
movsd 0x2dd48c(%rip), %xmm0   # 0x2f7050
addsd -0x38(%rbp), %xmm0
movsd %xmm0, -0x38(%rbp)
movsd 0x2dd482(%rip), %xmm0   # 0x2f7058
addsd -0x30(%rbp), %xmm0
movsd %xmm0, -0x30(%rbp)
leaq 0x2dd449(%rip), %rax    # 0x2f7030
jmp 0x19c31
movaps 0xd95c0(%rip), %xmm1    # 0xf31b0
xorps %xmm0, %xmm1
cmpl $0x3e8, %edx            # imm = 0x3E8
jl 0x19bfe
movaps %xmm0, %xmm1
addsd -0x30(%rbp), %xmm1
movsd %xmm1, -0x30(%rbp)
cmpl $0x0, 0x2dd735(%rip)    # 0x2f7344
je 0x19c1a
addq %rcx, %rax
addq $0x28, %rax
jmp 0x19c31
cmpl $0x0, 0x2dd727(%rip)    # 0x2f7348
leaq 0x38(%rax,%rcx), %rcx
leaq 0x2dd403(%rip), %rax    # 0x2f7030
cmovneq %rcx, %rax
movsd (%rax), %xmm0
addsd -0x28(%rbp), %xmm0
movsd %xmm0, -0x28(%rbp)
andq $0x0, -0x48(%rbp)
movzwl -0xc8(%rbp), %ecx
andl $0x1f00, %ecx           # imm = 0x1F00
movl 0x20f2b5(%rip), %eax    # 0x228f0c
movl $0xff, %edx
cmpl %edx, %eax
cmovll %eax, %edx
movzwl 0x20f2e0(%rip), %eax    # 0x228f48
andl $0x800, %eax            # imm = 0x800
orl %ecx, %eax
orl %edx, %eax
movw %ax, -0xc8(%rbp)
testb $0x1, 0x2dd825(%rip)    # 0x2f74a4
je 0x19c8d
orl $0x200, %eax            # imm = 0x200
movw %ax, -0xc8(%rbp)
movb 0x2dd803(%rip), %sil    # 0x2f7497
cmpb $0x6, %sil
setne %cl
cmpb $0x0, 0x30fa36(%rip)    # 0x3296d8
sete %dl
testb %sil, %sil
je 0x19cba
orb %dl, %cl
je 0x19cba
orl $0x100, %eax            # imm = 0x100
movw %ax, -0xc8(%rbp)
cmpl $0x0, 0x2dd2df(%rip)    # 0x2f6fa0
je 0x19ccf
orl $0x1000, %eax           # imm = 0x1000
movw %ax, -0xc8(%rbp)
cmpb $0x0, 0x20f292(%rip)    # 0x228f68
je 0x19cf2
movl 0x20f292(%rip), %ecx    # 0x228f70
orl 0x20f288(%rip), %ecx    # 0x228f6c
je 0x19cf2
orl $0x400, %eax            # imm = 0x400
movw %ax, -0xc8(%rbp)
movsd 0x2dd836(%rip), %xmm0   # 0x2f7530
movsd %xmm0, -0xc0(%rbp)
movq 0x1eb61f(%rip), %r14    # 0x205328
testq %r14, %r14
js 0x19d36
cmpq %r14, 0x1eb60b(%rip)    # 0x205320
jle 0x19d36
imulq $0xb0, %r14, %rdi
addq 0x1eb5eb(%rip), %rdi    # 0x205310
leaq -0xc8(%rbp), %rsi
movl $0xb0, %edx
callq 0x9650
andl $0x0, 0x20f20b(%rip)    # 0x228f48
movslq 0x1eb648(%rip), %rax    # 0x20538c
incq %rax
movl %eax, 0x1eb63f(%rip)    # 0x20538c
cmpq %rax, 0x1eb644(%rip)    # 0x205398
jle 0x19d63
testl %ebx, %ebx
jne 0x19ec7
jmp 0x19ed9
andl $0x0, 0x1eb622(%rip)    # 0x20538c
movb 0x20cfd0(%rip), %al     # 0x226d40
testb %al, %al
jne 0x19d82
movq 0x1eb5bd(%rip), %rcx    # 0x205338
movq %rcx, 0x20cfc6(%rip)    # 0x226d48
movslq 0x1eb607(%rip), %rcx    # 0x205390
incq %rcx
movl %ecx, 0x1eb5fe(%rip)    # 0x205390
cmpq %rcx, 0x1eb607(%rip)    # 0x2053a0
setle %dl
movb 0x1eb623(%rip), %cl     # 0x2053c5
cmpb $0x2, %cl
sete %sil
orb %dl, %sil
cmpb $0x1, %sil
jne 0x19e2e
cmpb $0x2, %cl
sete %cl
testb %al, %al
sete %al
orb %cl, %al
jne 0x19dd5
movl 0x1e8abd(%rip), %eax    # 0x202884
subl 0x1eb603(%rip), %eax    # 0x2053d0
cmpl %eax, 0x1eb5f9(%rip)    # 0x2053cc
jge 0x19e2e
cmpq 0x1eb48c(%rip), %r14    # 0x205268
jne 0x19df6
leaq 0x310783(%rip), %rdi    # 0x32a568
leaq -0xc8(%rbp), %rsi
movl $0xb0, %edx
callq 0x92a0
leaq -0xc8(%rbp), %r14
movq %r14, %rdi
callq 0x18245
leaq 0x31075c(%rip), %rdi    # 0x32a568
movl $0xb0, %edx
movq %r14, %rsi
callq 0x92a0
testl %ebx, %ebx
jne 0x19ee7
cmpb $0x2, 0x1eb59d(%rip)    # 0x2053c5
je 0x19ee7
cmpb $0x0, 0x1eb593(%rip)    # 0x2053c8
je 0x19e3e
xorl %edi, %edi
callq 0x18cb0
movslq 0x1eb54b(%rip), %rax    # 0x205390
cmpq %rax, 0x1eb554(%rip)    # 0x2053a0
jg 0x19e55
andl $0x0, 0x1eb53b(%rip)    # 0x205390
movq 0x1eb4dc(%rip), %rcx    # 0x205338
incq %rcx
movq 0x1eb4ba(%rip), %rax    # 0x205320
cmpq %rax, %rcx
cmovgeq %rax, %rcx
movq 0x1eb4b4(%rip), %rdx    # 0x205328
incq %rdx
xorl %edi, %edi
cmpq %rax, %rdx
cmovlq %rdx, %rdi
movq %rcx, 0x1eb4b1(%rip)    # 0x205338
movq %rdi, 0x1eb49a(%rip)    # 0x205328
cmpq 0x1eb49b(%rip), %rdi    # 0x205330
jne 0x19eb9
leaq 0x1(%rdi), %rcx
xorl %edx, %edx
cmpq %rax, %rcx
cmovlq %rcx, %rdx
movq %rdx, 0x1eb485(%rip)    # 0x205330
movq %rax, 0x1eb486(%rip)    # 0x205338
movb $0x1, 0x1eb487(%rip)    # 0x205340
callq 0x10086
testl %ebx, %ebx
je 0x19ed9
callq 0x1747f
addq $0x168, %rsp            # imm = 0x168
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0xaa05
addq $0x168, %rsp            # imm = 0x168
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
movq 0x1eb43a(%rip), %rdi    # 0x205328
callq 0x17b5b
movslq 0x1eb4d6(%rip), %rcx    # 0x2053d0
movl 0x1eb4cc(%rip), %eax    # 0x2053cc
addl %ecx, %eax
movl %eax, 0x1eb4c4(%rip)    # 0x2053cc
movl 0x1e8976(%rip), %edx    # 0x202884
cmpl %edx, %eax
jge 0x19f32
cmpb $0x0, 0x1eb4be(%rip)    # 0x2053d7
je 0x19e2e
xorl %edi, %edi
callq 0x18cb0
movb $0x0, 0x1eb4aa(%rip)    # 0x2053d7
jmp 0x19e3e
cmpb $0x2, 0x1eb48c(%rip)    # 0x2053c5
jne 0x19f48
pushq $0x1
popq %rdi
callq 0x2ca0e
jmp 0x19e3e
movl 0x1e894a(%rip), %esi    # 0x202898
subl %esi, %edx
imull %ecx, %esi
subl %esi, %eax
movl %eax, 0x1eb471(%rip)    # 0x2053cc
movq 0x1eb3c6(%rip), %rsi    # 0x205328
movslq %edx, %rax
imulq 0x1eb433(%rip), %rax    # 0x2053a0
cqto
idivq %rcx
addq 0x1eb3b7(%rip), %rax    # 0x205330
subq %rax, %rsi
movq %rsi, 0x1eb3c5(%rip)    # 0x205348
jns 0x19e37
cmpb $0x0, 0x1eb3b0(%rip)    # 0x205340
je 0x19fa4
addq 0x1eb387(%rip), %rsi    # 0x205320
xorl %eax, %eax
testq %rsi, %rsi
cmovgq %rsi, %rax
jmp 0x19fa6
xorl %eax, %eax
movq %rax, 0x1eb39b(%rip)    # 0x205348
jmp 0x19e37
movsd 0x2dd196(%rip), %xmm1   # 0x2f7150
movsd 0x2dca3e(%rip), %xmm2   # 0x2f6a00
xorpd %xmm3, %xmm3
cmpeqsd %xmm1, %xmm3
movapd %xmm3, %xmm4
andpd %xmm2, %xmm4
andnpd %xmm1, %xmm3
orpd %xmm4, %xmm3
subsd %xmm3, %xmm2
mulsd 0x2dd121(%rip), %xmm2   # 0x2f7108
movsd 0xd9049(%rip), %xmm1    # 0xf3038
mulsd %xmm1, %xmm2
addsd -0x98(%rbp), %xmm2
movsd %xmm2, -0x98(%rbp)
mulsd %xmm1, %xmm0
subsd %xmm2, %xmm0
movsd %xmm0, -0x90(%rbp)
jmp 0x19a74