// File: 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
subq $0x2f0, %rsp            # imm = 0x2F0
movl %edi, -0x4(%rbp)
movq 0x2554d3(%rip), %rsi    # 0x27a508
leaq -0x180(%rbp), %rdi
callq 0x133f0
leaq -0xb8(%rbp), %rdi
leaq -0x180(%rbp), %rsi
movl $0xb0, %edx
callq 0x92c0
cmpl $0x0, 0x3473cc(%rip)    # 0x36c42c
jne 0x25093
cmpl $0x0, 0x346bcf(%rip)    # 0x36bc38
je 0x25093
movsd 0x346bb5(%rip), %xmm0   # 0x36bc28
addsd -0x90(%rbp), %xmm0
movsd %xmm0, -0x90(%rbp)
leaq 0x14bb20(%rip), %rax    # 0x170baa
movq %rax, 0x197f47(%rip)    # 0x1bcfd8
jmp 0x250ab
movsd 0x346b5d(%rip), %xmm0   # 0x36bbf8
addsd -0x90(%rbp), %xmm0
movsd %xmm0, -0x90(%rbp)
cvtsi2sdl 0x279039(%rip), %xmm0 # 0x29e0ec
movsd %xmm0, -0x10(%rbp)
cmpl $0x0, 0x34741d(%rip)    # 0x36c4dc
jne 0x25119
cmpl $0x0, 0x3474dc(%rip)    # 0x36c5a4
jne 0x25119
cmpl $0x0, 0x346b63(%rip)    # 0x36bc34
je 0x25119
movsd 0x346b45(%rip), %xmm0   # 0x36bc20
addsd -0x98(%rbp), %xmm0
movsd %xmm0, -0x98(%rbp)
leaq 0x16f4a0(%rip), %rax    # 0x194592
movq %rax, 0x197dff(%rip)    # 0x1bcef8
leaq 0x14bab0(%rip), %rax    # 0x170bb0
movq %rax, 0x197de9(%rip)    # 0x1bcef0
movsd 0x149f59(%rip), %xmm0   # 0x16f068
movsd %xmm0, 0x197de9(%rip)   # 0x1bcf00
jmp 0x25131
movsd 0x346abf(%rip), %xmm0   # 0x36bbe0
addsd -0x98(%rbp), %xmm0
movsd %xmm0, -0x98(%rbp)
cmpq $0x10000, 0x252974(%rip) # imm = 0x10000
jne 0x25197
movsd 0x276c02(%rip), %xmm0   # 0x29bd48
addsd -0xa8(%rbp), %xmm0
movsd %xmm0, -0xa8(%rbp)
movsd 0x276c3a(%rip), %xmm0   # 0x29bd98
addsd -0xa0(%rbp), %xmm0
movsd %xmm0, -0xa0(%rbp)
movsd 0x276c72(%rip), %xmm0   # 0x29bde8
addsd -0x58(%rbp), %xmm0
movsd %xmm0, -0x58(%rbp)
movsd 0x276cb8(%rip), %xmm0   # 0x29be40
addsd -0x50(%rbp), %xmm0
movsd %xmm0, -0x50(%rbp)
jmp 0x25431
cmpl $0x0, 0x34727a(%rip)    # 0x36c418
je 0x251a9
cmpl $0x37, 0x347271(%rip)   # 0x36c418
jne 0x251f5
cmpl $0x0, 0x346a80(%rip)    # 0x36bc30
je 0x251f5
movsd 0x346a5e(%rip), %xmm0   # 0x36bc18
addsd -0xa8(%rbp), %xmm0
movsd %xmm0, -0xa8(%rbp)
movsd 0x3467ce(%rip), %xmm0   # 0x36b9a0
addsd -0xa0(%rbp), %xmm0
movsd %xmm0, -0xa0(%rbp)
leaq 0x14b9cc(%rip), %rax    # 0x170bb5
movq %rax, 0x197b30(%rip)    # 0x1bcd20
jmp 0x2542f
cmpq $0x20000, 0x2528b0(%rip) # imm = 0x20000
jne 0x25237
movsd 0x2548e6(%rip), %xmm0   # 0x279af0
addsd -0xa8(%rbp), %xmm0
movsd %xmm0, -0xa8(%rbp)
movsd 0x254906(%rip), %xmm0   # 0x279b28
addsd -0xa0(%rbp), %xmm0
movsd %xmm0, -0xa0(%rbp)
jmp 0x2542d
cmpq $0x10000000, 0x25286e(%rip) # imm = 0x10000000
jne 0x25279
movsd 0x34674c(%rip), %xmm0   # 0x36b998
addsd -0xa8(%rbp), %xmm0
movsd %xmm0, -0xa8(%rbp)
movsd 0x34673c(%rip), %xmm0   # 0x36b9a0
addsd -0xa0(%rbp), %xmm0
movsd %xmm0, -0xa0(%rbp)
jmp 0x2542b
cmpq $0x8000000, 0x25282c(%rip) # imm = 0x8000000
jne 0x252df
movsd 0x34670a(%rip), %xmm0   # 0x36b998
addsd -0xa8(%rbp), %xmm0
movsd %xmm0, -0xa8(%rbp)
cvtsi2sdl 0x347af2(%rip), %xmm0 # 0x36cd98
movsd 0x149eca(%rip), %xmm1   # 0x16f178
mulsd %xmm1, %xmm0
movsd 0x149eb6(%rip), %xmm1   # 0x16f170
mulsd %xmm1, %xmm0
movsd 0x149d6a(%rip), %xmm1   # 0x16f030
divsd %xmm1, %xmm0
addsd -0xa0(%rbp), %xmm0
movsd %xmm0, -0xa0(%rbp)
jmp 0x25429
cmpq $0x80000, 0x2527c6(%rip) # imm = 0x80000
jne 0x25321
movsd 0x346acc(%rip), %xmm0   # 0x36bdc0
addsd -0xa8(%rbp), %xmm0
movsd %xmm0, -0xa8(%rbp)
movsd 0x346abc(%rip), %xmm0   # 0x36bdc8
addsd -0xa0(%rbp), %xmm0
movsd %xmm0, -0xa0(%rbp)
jmp 0x25427
cmpq $0x800000, 0x252784(%rip) # imm = 0x800000
jne 0x2536d
callq 0x83ad0
cmpl $0x0, %eax
je 0x2536d
movsd 0x346a80(%rip), %xmm0   # 0x36bdc0
addsd -0xa8(%rbp), %xmm0
movsd %xmm0, -0xa8(%rbp)
movsd 0x346a70(%rip), %xmm0   # 0x36bdc8
addsd -0xa0(%rbp), %xmm0
movsd %xmm0, -0xa0(%rbp)
jmp 0x25425
cmpq $0x400, 0x252738(%rip) # imm = 0x400
jne 0x253b6
callq 0x83ad0
cmpl $0x0, %eax
je 0x253b6
movsd 0x346a34(%rip), %xmm0   # 0x36bdc0
addsd -0xa8(%rbp), %xmm0
movsd %xmm0, -0xa8(%rbp)
movsd 0x346a24(%rip), %xmm0   # 0x36bdc8
addsd -0xa0(%rbp), %xmm0
movsd %xmm0, -0xa0(%rbp)
jmp 0x25423
cmpb $0x0, 0x278d61(%rip)    # 0x29e11e
je 0x253f1
movsd 0x3465d1(%rip), %xmm0   # 0x36b998
addsd -0xa8(%rbp), %xmm0
movsd %xmm0, -0xa8(%rbp)
movsd 0x3465c1(%rip), %xmm0   # 0x36b9a0
addsd -0xa0(%rbp), %xmm0
movsd %xmm0, -0xa0(%rbp)
jmp 0x25421
movsd 0x34659f(%rip), %xmm0   # 0x36b998
addsd -0xa8(%rbp), %xmm0
movsd %xmm0, -0xa8(%rbp)
movsd 0x34658f(%rip), %xmm0   # 0x36b9a0
addsd -0xa0(%rbp), %xmm0
movsd %xmm0, -0xa0(%rbp)
jmp 0x25423
jmp 0x25425
jmp 0x25427
jmp 0x25429
jmp 0x2542b
jmp 0x2542d
jmp 0x2542f
jmp 0x25431
cmpq $0x20000, 0x252674(%rip) # imm = 0x20000
jne 0x25549
movsd 0x2546b6(%rip), %xmm0   # 0x279b00
addsd -0x88(%rbp), %xmm0
movsd %xmm0, -0x88(%rbp)
movsd 0x2546a6(%rip), %xmm0   # 0x279b08
addsd -0x80(%rbp), %xmm0
movsd %xmm0, -0x80(%rbp)
movsd 0x254684(%rip), %xmm0   # 0x279af8
addsd -0x78(%rbp), %xmm0
movsd %xmm0, -0x78(%rbp)
movsd 0x254692(%rip), %xmm0   # 0x279b18
addsd -0x70(%rbp), %xmm0
movsd %xmm0, -0x70(%rbp)
movsd 0x254688(%rip), %xmm0   # 0x279b20
addsd -0x68(%rbp), %xmm0
movsd %xmm0, -0x68(%rbp)
movsd 0x254696(%rip), %xmm0   # 0x279b40
addsd -0x60(%rbp), %xmm0
movsd %xmm0, -0x60(%rbp)
movsd 0x25468c(%rip), %xmm0   # 0x279b48
addsd -0x58(%rbp), %xmm0
movsd %xmm0, -0x58(%rbp)
movsd 0x254682(%rip), %xmm0   # 0x279b50
addsd -0x50(%rbp), %xmm0
movsd %xmm0, -0x50(%rbp)
movsd 0x254678(%rip), %xmm0   # 0x279b58
addsd -0x48(%rbp), %xmm0
movsd %xmm0, -0x48(%rbp)
movsd 0x2545ee(%rip), %xmm0   # 0x279ae0
addsd -0x40(%rbp), %xmm0
movsd %xmm0, -0x40(%rbp)
movsd 0x2545e4(%rip), %xmm0   # 0x279ae8
addsd -0x30(%rbp), %xmm0
movsd %xmm0, -0x30(%rbp)
movsd 0x25461a(%rip), %xmm0   # 0x279b30
addsd -0x28(%rbp), %xmm0
movsd %xmm0, -0x28(%rbp)
movsd 0x254610(%rip), %xmm0   # 0x279b38
addsd -0x20(%rbp), %xmm0
movsd %xmm0, -0x20(%rbp)
movsd 0x25463e(%rip), %xmm0   # 0x279b78
addsd -0x18(%rbp), %xmm0
movsd %xmm0, -0x18(%rbp)
jmp 0x25f58
cmpq $0x10000000, 0x25255c(%rip) # imm = 0x10000000
jne 0x255f5
movsd 0x347966(%rip), %xmm0   # 0x36cec8
addsd -0x88(%rbp), %xmm0
movsd %xmm0, -0x88(%rbp)
movsd 0x347936(%rip), %xmm0   # 0x36ceb0
addsd -0x80(%rbp), %xmm0
movsd %xmm0, -0x80(%rbp)
movsd 0x34791c(%rip), %xmm0   # 0x36cea8
addsd -0x78(%rbp), %xmm0
movsd %xmm0, -0x78(%rbp)
movsd 0x347922(%rip), %xmm0   # 0x36cec0
addsd -0x70(%rbp), %xmm0
movsd %xmm0, -0x70(%rbp)
movsd 0x347920(%rip), %xmm0   # 0x36ced0
addsd -0x68(%rbp), %xmm0
movsd %xmm0, -0x68(%rbp)
movsd 0x347916(%rip), %xmm0   # 0x36ced8
addsd -0x60(%rbp), %xmm0
movsd %xmm0, -0x60(%rbp)
movsd 0x34790c(%rip), %xmm0   # 0x36cee0
addsd -0x58(%rbp), %xmm0
movsd %xmm0, -0x58(%rbp)
movsd 0x3478d2(%rip), %xmm0   # 0x36ceb8
addsd -0x50(%rbp), %xmm0
movsd %xmm0, -0x50(%rbp)
jmp 0x25f56
cmpq $0x1000000, 0x2524b0(%rip) # imm = 0x1000000
jne 0x256c5
movsd 0x25479a(%rip), %xmm0   # 0x279da8
addsd -0x88(%rbp), %xmm0
movsd %xmm0, -0x88(%rbp)
movsd 0x25478a(%rip), %xmm0   # 0x279db0
addsd -0x80(%rbp), %xmm0
movsd %xmm0, -0x80(%rbp)
movsd 0x254780(%rip), %xmm0   # 0x279db8
addsd -0x78(%rbp), %xmm0
movsd %xmm0, -0x78(%rbp)
movsd 0x2547a6(%rip), %xmm0   # 0x279df0
addsd -0x70(%rbp), %xmm0
movsd %xmm0, -0x70(%rbp)
movsd 0x2547e4(%rip), %xmm0   # 0x279e40
addsd -0x68(%rbp), %xmm0
movsd %xmm0, -0x68(%rbp)
movsd 0x2547ca(%rip), %xmm0   # 0x279e38
addsd -0x60(%rbp), %xmm0
movsd %xmm0, -0x60(%rbp)
movsd 0x254748(%rip), %xmm0   # 0x279dc8
addsd -0x58(%rbp), %xmm0
movsd %xmm0, -0x58(%rbp)
movsd 0x25472e(%rip), %xmm0   # 0x279dc0
addsd -0x50(%rbp), %xmm0
movsd %xmm0, -0x50(%rbp)
cvtsi2sdl 0x254664(%rip), %xmm0 # 0x279d08
addsd -0x48(%rbp), %xmm0
movsd %xmm0, -0x48(%rbp)
cvtsi2sdl 0x254656(%rip), %xmm0 # 0x279d0c
addsd -0x40(%rbp), %xmm0
movsd %xmm0, -0x40(%rbp)
jmp 0x25f54
movabsq $0x1000000000, %rax     # imm = 0x1000000000
cmpq %rax, 0x2523da(%rip)    # 0x277ab0
jne 0x2572b
movsd 0x346560(%rip), %xmm0   # 0x36bc40
addsd -0x88(%rbp), %xmm0
movsd %xmm0, -0x88(%rbp)
movsd 0x346568(%rip), %xmm0   # 0x36bc60
addsd -0x80(%rbp), %xmm0
movsd %xmm0, -0x80(%rbp)
movsd 0x34653e(%rip), %xmm0   # 0x36bc48
addsd -0x78(%rbp), %xmm0
movsd %xmm0, -0x78(%rbp)
movsd 0x34653c(%rip), %xmm0   # 0x36bc58
addsd -0x70(%rbp), %xmm0
movsd %xmm0, -0x70(%rbp)
jmp 0x25f52
cmpq $0x8000000, 0x25237a(%rip) # imm = 0x8000000
jne 0x257e9
movsd 0x347604(%rip), %xmm0   # 0x36cd48
addsd -0x88(%rbp), %xmm0
movsd %xmm0, -0x88(%rbp)
movsd 0x3475fc(%rip), %xmm0   # 0x36cd58
addsd -0x80(%rbp), %xmm0
movsd %xmm0, -0x80(%rbp)
movsd 0x3475f2(%rip), %xmm0   # 0x36cd60
addsd -0x78(%rbp), %xmm0
movsd %xmm0, -0x78(%rbp)
movsd 0x3475e8(%rip), %xmm0   # 0x36cd68
addsd -0x70(%rbp), %xmm0
movsd %xmm0, -0x70(%rbp)
movsd 0x3475de(%rip), %xmm0   # 0x36cd70
addsd -0x68(%rbp), %xmm0
movsd %xmm0, -0x68(%rbp)
movsd 0x3475d4(%rip), %xmm0   # 0x36cd78
addsd -0x60(%rbp), %xmm0
movsd %xmm0, -0x60(%rbp)
cvtsi2sdl 0x347602(%rip), %xmm0 # 0x36cdb8
addsd -0x58(%rbp), %xmm0
movsd %xmm0, -0x58(%rbp)
movsd 0x347588(%rip), %xmm0   # 0x36cd50
addsd -0x50(%rbp), %xmm0
movsd %xmm0, -0x50(%rbp)
movsd 0x3475a6(%rip), %xmm0   # 0x36cd80
addsd -0x48(%rbp), %xmm0
movsd %xmm0, -0x48(%rbp)
jmp 0x25f50
cmpq $0x10000, 0x2522bc(%rip) # imm = 0x10000
jne 0x2586d
movsd 0x3461da(%rip), %xmm0   # 0x36b9d8
addsd -0x88(%rbp), %xmm0
movsd %xmm0, -0x88(%rbp)
movsd 0x3461ca(%rip), %xmm0   # 0x36b9e0
addsd -0x80(%rbp), %xmm0
movsd %xmm0, -0x80(%rbp)
movsd 0x3461d0(%rip), %xmm0   # 0x36b9f8
addsd -0x78(%rbp), %xmm0
movsd %xmm0, -0x78(%rbp)
movsd 0x3461c6(%rip), %xmm0   # 0x36ba00
addsd -0x70(%rbp), %xmm0
movsd %xmm0, -0x70(%rbp)
movsd 0x34626c(%rip), %xmm0   # 0x36bab8
addsd -0x68(%rbp), %xmm0
movsd %xmm0, -0x68(%rbp)
movsd 0x346262(%rip), %xmm0   # 0x36bac0
addsd -0x60(%rbp), %xmm0
movsd %xmm0, -0x60(%rbp)
jmp 0x25f4e
cmpq $0x800000, 0x252238(%rip) # imm = 0x800000
jne 0x258d7
movsd 0x3469a6(%rip), %xmm0   # 0x36c228
addsd -0x88(%rbp), %xmm0
movsd %xmm0, -0x88(%rbp)
movsd 0x346996(%rip), %xmm0   # 0x36c230
addsd -0x80(%rbp), %xmm0
movsd %xmm0, -0x80(%rbp)
movsd 0x34698c(%rip), %xmm0   # 0x36c238
addsd -0x78(%rbp), %xmm0
movsd %xmm0, -0x78(%rbp)
movsd 0x346952(%rip), %xmm0   # 0x36c210
addsd -0x60(%rbp), %xmm0
movsd %xmm0, -0x60(%rbp)
movl $0x1, 0x346bce(%rip)    # 0x36c4a0
jmp 0x25f4c
cmpq $0x8, 0x2521d1(%rip)    # 0x277ab0
jne 0x258f8
movsd 0x34631f(%rip), %xmm0   # 0x36bc08
addsd -0x50(%rbp), %xmm0
movsd %xmm0, -0x50(%rbp)
jmp 0x25f4a
cmpq $0x2000000, 0x2521ad(%rip) # imm = 0x2000000
jne 0x259c8
movsd 0x254737(%rip), %xmm0   # 0x27a048
addsd -0x88(%rbp), %xmm0
movsd %xmm0, -0x88(%rbp)
movsd 0x254747(%rip), %xmm0   # 0x27a070
addsd -0x80(%rbp), %xmm0
movsd %xmm0, -0x80(%rbp)
movsd 0x25473d(%rip), %xmm0   # 0x27a078
addsd -0x78(%rbp), %xmm0
movsd %xmm0, -0x78(%rbp)
movsd 0x254733(%rip), %xmm0   # 0x27a080
addsd -0x70(%rbp), %xmm0
movsd %xmm0, -0x70(%rbp)
movsd 0x2546e1(%rip), %xmm0   # 0x27a040
addsd -0x68(%rbp), %xmm0
movsd %xmm0, -0x68(%rbp)
movsd 0x254697(%rip), %xmm0   # 0x27a008
addsd -0x60(%rbp), %xmm0
movsd %xmm0, -0x60(%rbp)
movsd 0x25468d(%rip), %xmm0   # 0x27a010
addsd -0x58(%rbp), %xmm0
movsd %xmm0, -0x58(%rbp)
movsd 0x254693(%rip), %xmm0   # 0x27a028
addsd -0x50(%rbp), %xmm0
movsd %xmm0, -0x50(%rbp)
movsd 0x254679(%rip), %xmm0   # 0x27a020
addsd -0x48(%rbp), %xmm0
movsd %xmm0, -0x48(%rbp)
movsd 0x25465f(%rip), %xmm0   # 0x27a018
addsd -0x40(%rbp), %xmm0
movsd %xmm0, -0x40(%rbp)
jmp 0x25f48
cmpq $0x100000, 0x2520dd(%rip) # imm = 0x100000
jne 0x25a5f
movsd 0x376e77(%rip), %xmm0   # 0x39c858
addsd -0x88(%rbp), %xmm0
movsd %xmm0, -0x88(%rbp)
movsd 0x376e7f(%rip), %xmm0   # 0x39c878
addsd -0x80(%rbp), %xmm0
movsd %xmm0, -0x80(%rbp)
movsd 0x376e5d(%rip), %xmm0   # 0x39c868
addsd -0x78(%rbp), %xmm0
movsd %xmm0, -0x78(%rbp)
cvtsi2sdl 0x346413(%rip), %xmm0 # 0x36be30
addsd -0x70(%rbp), %xmm0
movsd %xmm0, -0x70(%rbp)
movsd 0x376df9(%rip), %xmm0   # 0x39c828
addsd -0x68(%rbp), %xmm0
movsd %xmm0, -0x68(%rbp)
callq 0x7b750
addsd -0x60(%rbp), %xmm0
movsd %xmm0, -0x60(%rbp)
movsd 0x376de8(%rip), %xmm0   # 0x39c838
addsd -0x58(%rbp), %xmm0
movsd %xmm0, -0x58(%rbp)
jmp 0x25f46
cmpb $0x0, 0x374a3e(%rip)    # 0x39a4a4
jne 0x25b12
cmpb $0x0, 0x252071(%rip)    # 0x277ae4
jne 0x25b12
cmpq $0x1, 0x25202f(%rip)    # 0x277ab0
jne 0x25a95
cmpl $0x41, 0x25472a(%rip)   # 0x27a1b4
jne 0x25a95
cmpl $0x47, 0x252045(%rip)   # 0x277ad8
je 0x25b12
cmpq $0x1, 0x252013(%rip)    # 0x277ab0
jne 0x25aba
cmpl $0x41, 0x25470e(%rip)   # 0x27a1b4
jne 0x25aba
cmpl $0x33, 0x252029(%rip)   # 0x277ad8
je 0x25b12
cmpl $0x47, 0x252020(%rip)   # 0x277ad8
je 0x25b12
cmpq $0x1, 0x251fee(%rip)    # 0x277ab0
jne 0x25acd
cmpl $0x41, 0x2546e9(%rip)   # 0x27a1b4
je 0x25b12
cmpq $0x1, 0x251fdb(%rip)    # 0x277ab0
jne 0x25ae0
cmpl $0x50, 0x2546d6(%rip)   # 0x27a1b4
je 0x25b12
movabsq $0x800009e4, %rax       # imm = 0x800009E4
andq 0x251fbf(%rip), %rax    # 0x277ab0
cmpq $0x0, %rax
jne 0x25b12
movabsq $0x400640018, %rax      # imm = 0x400640018
andq 0x251fa8(%rip), %rax    # 0x277ab0
cmpq $0x0, %rax
je 0x25dd0
movsd 0x346696(%rip), %xmm0   # 0x36c1b0
movsd -0x88(%rbp), %xmm1
movsd 0x149656(%rip), %xmm2   # 0x16f180
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x88(%rbp)
movsd 0x346676(%rip), %xmm0   # 0x36c1b8
movsd -0x80(%rbp), %xmm1
movsd 0x149631(%rip), %xmm2   # 0x16f180
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x80(%rbp)
movsd 0x34665c(%rip), %xmm0   # 0x36c1c0
addsd -0x78(%rbp), %xmm0
movsd %xmm0, -0x78(%rbp)
movsd 0x14960a(%rip), %xmm1   # 0x16f180
mulsd 0x346632(%rip), %xmm1   # 0x36c1b0
movsd 0x34665a(%rip), %xmm0   # 0x36c1e0
ucomisd %xmm1, %xmm0
jbe 0x25ba4
movsd 0x1495ec(%rip), %xmm0   # 0x16f180
mulsd 0x346614(%rip), %xmm0   # 0x36c1b0
movsd %xmm0, 0x34663c(%rip)   # 0x36c1e0
movsd 0x1495d4(%rip), %xmm0   # 0x16f180
mulsd 0x3465fc(%rip), %xmm0   # 0x36c1b0
ucomisd 0x34662c(%rip), %xmm0   # 0x36c1e8
jbe 0x25bd6
movsd 0x1495ba(%rip), %xmm0   # 0x16f180
mulsd 0x3465e2(%rip), %xmm0   # 0x36c1b0
movsd %xmm0, 0x346612(%rip)   # 0x36c1e8
movsd 0x1495a2(%rip), %xmm1   # 0x16f180
mulsd 0x3465d2(%rip), %xmm1   # 0x36c1b8
movsd 0x346602(%rip), %xmm0   # 0x36c1f0
ucomisd %xmm1, %xmm0
jbe 0x25c0c
movsd 0x149584(%rip), %xmm0   # 0x16f180
mulsd 0x3465b4(%rip), %xmm0   # 0x36c1b8
movsd %xmm0, 0x3465e4(%rip)   # 0x36c1f0
movsd 0x14956c(%rip), %xmm0   # 0x16f180
mulsd 0x34659c(%rip), %xmm0   # 0x36c1b8
ucomisd 0x3465d4(%rip), %xmm0   # 0x36c1f8
jbe 0x25c3e
movsd 0x149552(%rip), %xmm0   # 0x16f180
mulsd 0x346582(%rip), %xmm0   # 0x36c1b8
movsd %xmm0, 0x3465ba(%rip)   # 0x36c1f8
movl $0x1, 0x346858(%rip)    # 0x36c4a0
cmpq $0x10, 0x251e60(%rip)   # 0x277ab0
je 0x25c69
cmpq $0x8, 0x251e56(%rip)    # 0x277ab0
je 0x25c69
cmpq $0x200000, 0x251e49(%rip) # imm = 0x200000
jne 0x25ce1
cvtsi2sdl 0x3461bf(%rip), %xmm0 # 0x36be30
addsd -0x70(%rbp), %xmm0
movsd %xmm0, -0x70(%rbp)
cmpq $0x200000, 0x251e2a(%rip) # imm = 0x200000
jne 0x25cae
cvtsi2sdl 0x3768f0(%rip), %xmm0 # 0x39c580
addsd -0x68(%rbp), %xmm0
movsd %xmm0, -0x68(%rbp)
movsd 0x3768a6(%rip), %xmm0   # 0x39c548
addsd -0x50(%rbp), %xmm0
movsd %xmm0, -0x50(%rbp)
jmp 0x25cc0
cvtsi2sdl 0x346182(%rip), %xmm0 # 0x36be38
addsd -0x68(%rbp), %xmm0
movsd %xmm0, -0x68(%rbp)
cmpq $0x8, 0x251de8(%rip)    # 0x277ab0
jne 0x25cdc
movsd 0x346f66(%rip), %xmm0   # 0x36cc38
addsd -0x58(%rbp), %xmm0
movsd %xmm0, -0x58(%rbp)
jmp 0x25d91
cmpq $0x40000, 0x251dc4(%rip) # imm = 0x40000
jne 0x25d24
movsd 0x3754ba(%rip), %xmm0   # 0x39b1b0
movsd -0x58(%rbp), %xmm1
movsd 0x14946d(%rip), %xmm2   # 0x16f170
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x58(%rbp)
movsd 0x375480(%rip), %xmm0   # 0x39b198
addsd -0x50(%rbp), %xmm0
movsd %xmm0, -0x50(%rbp)
jmp 0x25d8f
cmpq $0x400000, 0x251d81(%rip) # imm = 0x400000
jne 0x25d69
movsd 0x346f37(%rip), %xmm0   # 0x36cc70
addsd -0x68(%rbp), %xmm0
movsd %xmm0, -0x68(%rbp)
movsd 0x346eed(%rip), %xmm0   # 0x36cc38
addsd -0x58(%rbp), %xmm0
movsd %xmm0, -0x58(%rbp)
movsd 0x346ee3(%rip), %xmm0   # 0x36cc40
addsd -0x50(%rbp), %xmm0
movsd %xmm0, -0x50(%rbp)
jmp 0x25d8d
movsd 0x34648f(%rip), %xmm0   # 0x36c200
addsd -0x70(%rbp), %xmm0
movsd %xmm0, -0x70(%rbp)
movsd 0x346485(%rip), %xmm0   # 0x36c208
addsd -0x68(%rbp), %xmm0
movsd %xmm0, -0x68(%rbp)
jmp 0x25d8f
jmp 0x25d91
cmpq $0x400000, 0x251d14(%rip) # imm = 0x400000
je 0x25da8
cmpq $0x8, 0x251d0a(%rip)    # 0x277ab0
jne 0x25dbc
movsd 0x346e98(%rip), %xmm0   # 0x36cc48
addsd -0x60(%rbp), %xmm0
movsd %xmm0, -0x60(%rbp)
jmp 0x25dcb
callq 0x7b750
addsd -0x60(%rbp), %xmm0
movsd %xmm0, -0x60(%rbp)
jmp 0x25f44
movsd 0x346558(%rip), %xmm0   # 0x36c330
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0x25df5
jp 0x25df5
movsd 0x345df5(%rip), %xmm0   # 0x36bbe0
movsd %xmm0, -0xc0(%rbp)
jmp 0x25e05
movsd 0x346533(%rip), %xmm0   # 0x36c330
movsd %xmm0, -0xc0(%rbp)
cmpb $0x0, 0x278312(%rip)    # 0x29e11e
je 0x25ece
movsd 0x3461c6(%rip), %xmm0   # 0x36bfe0
addsd -0x88(%rbp), %xmm0
movsd %xmm0, -0x88(%rbp)
movsd 0x34617e(%rip), %xmm0   # 0x36bfb0
addsd -0x80(%rbp), %xmm0
movsd %xmm0, -0x80(%rbp)
movsd 0x346174(%rip), %xmm0   # 0x36bfb8
addsd -0x78(%rbp), %xmm0
movsd %xmm0, -0x78(%rbp)
movsd 0x34617a(%rip), %xmm0   # 0x36bfd0
addsd -0x70(%rbp), %xmm0
movsd %xmm0, -0x70(%rbp)
movsd 0x254580(%rip), %xmm0   # 0x27a3e8
addsd -0x68(%rbp), %xmm0
movsd %xmm0, -0x68(%rbp)
movsd 0x346266(%rip), %xmm0   # 0x36c0e0
addsd -0x60(%rbp), %xmm0
movsd %xmm0, -0x60(%rbp)
movsd 0x34625c(%rip), %xmm0   # 0x36c0e8
addsd -0x58(%rbp), %xmm0
movsd %xmm0, -0x58(%rbp)
movsd 0x346252(%rip), %xmm0   # 0x36c0f0
addsd -0x50(%rbp), %xmm0
movsd %xmm0, -0x50(%rbp)
movsd 0x346248(%rip), %xmm0   # 0x36c0f8
addsd -0x48(%rbp), %xmm0
movsd %xmm0, -0x48(%rbp)
movsd 0x345ef6(%rip), %xmm0   # 0x36bdb8
addsd -0x40(%rbp), %xmm0
movsd %xmm0, -0x40(%rbp)
jmp 0x25f42
movsd 0x345d0a(%rip), %xmm0   # 0x36bbe0
subsd -0xc0(%rbp), %xmm0
mulsd 0x346402(%rip), %xmm0   # 0x36c2e8
movsd -0x88(%rbp), %xmm1
movsd 0x14913a(%rip), %xmm2   # 0x16f030
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x88(%rbp)
movsd -0xa0(%rbp), %xmm0
movsd -0x88(%rbp), %xmm1
movq %xmm1, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm1
movsd 0x1490fb(%rip), %xmm2   # 0x16f030
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x80(%rbp)
jmp 0x25f44
jmp 0x25f46
jmp 0x25f48
jmp 0x25f4a
jmp 0x25f4c
jmp 0x25f4e
jmp 0x25f50
jmp 0x25f52
jmp 0x25f54
jmp 0x25f56
jmp 0x25f58
cmpb $0x0, 0x2781bf(%rip)    # 0x29e11e
je 0x25f66
jmp 0x26222
cmpq $0x20000, 0x251b3f(%rip) # imm = 0x20000
jne 0x25f78
jmp 0x26220
movzbl 0x27819f(%rip), %eax    # 0x29e11e
movq 0x251b2a(%rip), %rcx    # 0x277ab0
andq $0xb020000, %rcx        # imm = 0xB020000
orq %rcx, %rax
cmpq $0x0, %rax
je 0x25f98
jmp 0x26010
movsd 0x346950(%rip), %xmm0   # 0x36c8f0
subsd 0x346950(%rip), %xmm0   # 0x36c8f8
movsd %xmm0, -0xc8(%rbp)
cmpq $0x10, 0x251af8(%rip)   # 0x277ab0
je 0x25fc4
cmpq $0x8, 0x251aee(%rip)    # 0x277ab0
jne 0x25fec
movsd -0xc8(%rbp), %xmm0
movsd 0x1491b4(%rip), %xmm1   # 0x16f188
ucomisd %xmm1, %xmm0
jbe 0x25fea
movsd 0x14904e(%rip), %xmm0   # 0x16f030
movsd %xmm0, -0xc8(%rbp)
jmp 0x25fec
movsd -0xc8(%rbp), %xmm0
addsd -0x40(%rbp), %xmm0
movsd %xmm0, -0x40(%rbp)
movsd 0x3470aa(%rip), %xmm0   # 0x36d0b0
addsd -0x48(%rbp), %xmm0
movsd %xmm0, -0x48(%rbp)
callq 0x83ad0
cmpl $0x0, %eax
je 0x26074
cmpq $0x800000, 0x251a8b(%rip) # imm = 0x800000
je 0x26074
movsd 0x345d49(%rip), %xmm0   # 0x36bd78
addsd -0x30(%rbp), %xmm0
movsd %xmm0, -0x30(%rbp)
movsd 0x345d3f(%rip), %xmm0   # 0x36bd80
addsd -0x28(%rbp), %xmm0
movsd %xmm0, -0x28(%rbp)
movsd 0x345d3d(%rip), %xmm0   # 0x36bd90
addsd -0x20(%rbp), %xmm0
movsd %xmm0, -0x20(%rbp)
movsd 0x345d33(%rip), %xmm0   # 0x36bd98
addsd -0x18(%rbp), %xmm0
movsd %xmm0, -0x18(%rbp)
jmp 0x2621c
cmpl $0x0, 0x3458f9(%rip)    # 0x36b974
je 0x261d2
movslq 0x3458ec(%rip), %rcx    # 0x36b974
leaq 0x278101(%rip), %rax    # 0x29e190
imulq $0x348, %rcx, %rcx      # imm = 0x348
addq %rcx, %rax
movss 0x208(%rax), %xmm0
cvtss2sd %xmm0, %xmm0
addsd -0x30(%rbp), %xmm0
movsd %xmm0, -0x30(%rbp)
movslq 0x3458be(%rip), %rcx    # 0x36b974
leaq 0x2780d3(%rip), %rax    # 0x29e190
imulq $0x348, %rcx, %rcx      # imm = 0x348
addq %rcx, %rax
movss 0x20c(%rax), %xmm0
cvtss2sd %xmm0, %xmm0
addsd -0x28(%rbp), %xmm0
movsd %xmm0, -0x28(%rbp)
movslq 0x345890(%rip), %rcx    # 0x36b974
leaq 0x2780a5(%rip), %rax    # 0x29e190
imulq $0x348, %rcx, %rcx      # imm = 0x348
addq %rcx, %rax
movss 0x20(%rax), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0xd0(%rbp)
xorps %xmm0, %xmm0
ucomisd -0xd0(%rbp), %xmm0
jbe 0x26146
cmpl $0x3e7, 0x345857(%rip)  # imm = 0x3E7
jg 0x26146
movsd -0xd0(%rbp), %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
movsd %xmm0, -0xd0(%rbp)
movsd -0xd0(%rbp), %xmm0
addsd -0x20(%rbp), %xmm0
movsd %xmm0, -0x20(%rbp)
cmpl $0x0, 0x3463c5(%rip)    # 0x36c524
je 0x2618a
movslq 0x34580c(%rip), %rcx    # 0x36b974
leaq 0x278021(%rip), %rax    # 0x29e190
imulq $0x348, %rcx, %rcx      # imm = 0x348
addq %rcx, %rax
movsd 0x28(%rax), %xmm0
addsd -0x18(%rbp), %xmm0
movsd %xmm0, -0x18(%rbp)
jmp 0x261d0
cmpl $0x0, 0x346397(%rip)    # 0x36c528
je 0x261bc
movslq 0x3457da(%rip), %rcx    # 0x36b974
leaq 0x277fef(%rip), %rax    # 0x29e190
imulq $0x348, %rcx, %rcx      # imm = 0x348
addq %rcx, %rax
movsd 0x38(%rax), %xmm0
addsd -0x18(%rbp), %xmm0
movsd %xmm0, -0x18(%rbp)
jmp 0x261ce
movsd 0x34604c(%rip), %xmm0   # 0x36c210
addsd -0x18(%rbp), %xmm0
movsd %xmm0, -0x18(%rbp)
jmp 0x261d0
jmp 0x2621a
movsd 0x34604e(%rip), %xmm0   # 0x36c228
addsd -0x30(%rbp), %xmm0
movsd %xmm0, -0x30(%rbp)
movsd 0x346044(%rip), %xmm0   # 0x36c230
addsd -0x28(%rbp), %xmm0
movsd %xmm0, -0x28(%rbp)
movsd 0x34603a(%rip), %xmm0   # 0x36c238
addsd -0x20(%rbp), %xmm0
movsd %xmm0, -0x20(%rbp)
movsd 0x346000(%rip), %xmm0   # 0x36c210
addsd -0x18(%rbp), %xmm0
movsd %xmm0, -0x18(%rbp)
jmp 0x2621c
jmp 0x2621e
jmp 0x26220
jmp 0x26222
xorps %xmm0, %xmm0
movsd %xmm0, -0x38(%rbp)
movzwl -0xb8(%rbp), %eax
andl $0x1f00, %eax           # imm = 0x1F00
movw %ax, -0xb8(%rbp)
cmpl $0xff, 0x277ea5(%rip)   # 0x29e0ec
jle 0x2625e
movzwl -0xb8(%rbp), %eax
orl $0xff, %eax
movw %ax, -0xb8(%rbp)
jmp 0x26274
movl 0x277e88(%rip), %ecx    # 0x29e0ec
movzwl -0xb8(%rbp), %eax
orl %ecx, %eax
movw %ax, -0xb8(%rbp)
movl 0x277eae(%rip), %ecx    # 0x29e128
andl $0x800, %ecx            # imm = 0x800
movzwl -0xb8(%rbp), %eax
orl %ecx, %eax
movw %ax, -0xb8(%rbp)
movl 0x3463ee(%rip), %eax    # 0x36c684
andl $0x1, %eax
cmpl $0x0, %eax
je 0x262b1
movzwl -0xb8(%rbp), %eax
orl $0x200, %eax            # imm = 0x200
movw %ax, -0xb8(%rbp)
movzbl 0x3463bf(%rip), %eax    # 0x36c677
cmpl $0x6, %eax
jne 0x262c8
cmpb $0x0, 0x3785f4(%rip)    # 0x39e8b8
je 0x262c8
jmp 0x262e9
movzbl 0x3463a8(%rip), %eax    # 0x36c677
cmpl $0x0, %eax
je 0x262e7
movzwl -0xb8(%rbp), %eax
orl $0x100, %eax            # imm = 0x100
movw %ax, -0xb8(%rbp)
jmp 0x262e9
cmpl $0x0, 0x345e90(%rip)    # 0x36c180
je 0x26305
movzwl -0xb8(%rbp), %eax
orl $0x1000, %eax           # imm = 0x1000
movw %ax, -0xb8(%rbp)
cmpb $0x0, 0x277e3c(%rip)    # 0x29e148
je 0x26333
cmpl $0x0, 0x277e37(%rip)    # 0x29e14c
jne 0x26320
cmpl $0x0, 0x277e32(%rip)    # 0x29e150
je 0x26333
movzwl -0xb8(%rbp), %eax
orl $0x400, %eax            # imm = 0x400
movw %ax, -0xb8(%rbp)
movsd 0x3463d5(%rip), %xmm0   # 0x36c710
movsd %xmm0, -0xb0(%rbp)
movq 0x2541be(%rip), %rax    # 0x27a508
movq %rax, -0x238(%rbp)
leaq -0x230(%rbp), %rdi
leaq -0xb8(%rbp), %rsi
movl $0xb0, %edx
callq 0x92c0
movq %rsp, %rdi
movl $0x16, %ecx
leaq -0x230(%rbp), %rsi
rep  movsq (%rsi), %es:(%rdi)
movq -0x238(%rbp), %rdi
callq 0x13680
movl $0x0, 0x277d97(%rip)    # 0x29e128
movl 0x2541d5(%rip), %eax    # 0x27a56c
addl $0x1, %eax
movl %eax, 0x2541cc(%rip)    # 0x27a56c
cltq
cmpq 0x2541cf(%rip), %rax    # 0x27a578
jge 0x263bb
cmpl $0x0, -0x4(%rbp)
je 0x263b6
callq 0xb0d0
jmp 0x266c0
movl $0x0, 0x2541a7(%rip)    # 0x27a56c
movzbl 0x275b54(%rip), %eax    # 0x29bf20
cmpl $0x0, %eax
jne 0x263df
movq 0x254140(%rip), %rax    # 0x27a518
movq %rax, 0x275b49(%rip)    # 0x29bf28
movl 0x25418b(%rip), %eax    # 0x27a570
addl $0x1, %eax
movl %eax, 0x254182(%rip)    # 0x27a570
movslq 0x25417b(%rip), %rax    # 0x27a570
cmpq 0x254184(%rip), %rax    # 0x27a580
jge 0x2640e
movzbl 0x2541a0(%rip), %eax    # 0x27a5a5
cmpl $0x2, %eax
jne 0x265dc
movzbl 0x275b0b(%rip), %eax    # 0x29bf20
cmpl $0x0, %eax
je 0x26440
movzbl 0x254184(%rip), %eax    # 0x27a5a5
cmpl $0x2, %eax
je 0x26440
movl 0x254180(%rip), %eax    # 0x27a5ac
movl 0x251632(%rip), %ecx    # 0x277a64
subl 0x254178(%rip), %ecx    # 0x27a5b0
cmpl %ecx, %eax
jge 0x265dc
movq 0x2540c1(%rip), %rax    # 0x27a508
cmpq 0x253ffa(%rip), %rax    # 0x27a448
jne 0x26468
leaq 0x3792f1(%rip), %rdi    # 0x39f748
leaq -0xb8(%rbp), %rsi
movl $0xb0, %edx
callq 0x92c0
leaq -0xb8(%rbp), %rdi
callq 0x23ac0
leaq 0x3792cd(%rip), %rdi    # 0x39f748
leaq -0xb8(%rbp), %rsi
movl $0xb0, %edx
callq 0x92c0
movzbl 0x254112(%rip), %eax    # 0x27a5a5
cmpl $0x2, %eax
jne 0x2649a
jmp 0x264a7
cmpl $0x0, -0x4(%rbp)
jne 0x264a5
jmp 0x265de
jmp 0x264a7
movq 0x25405a(%rip), %rdi    # 0x27a508
callq 0x22c30
movl 0x2540f7(%rip), %eax    # 0x27a5b0
addl 0x2540ed(%rip), %eax    # 0x27a5ac
movl %eax, 0x2540e7(%rip)    # 0x27a5ac
movl 0x2540e1(%rip), %eax    # 0x27a5ac
cmpl 0x251593(%rip), %eax    # 0x277a64
jl 0x265ad
movzbl 0x2540c7(%rip), %eax    # 0x27a5a5
cmpl $0x2, %eax
jne 0x264f2
movl $0x1, %edi
callq 0x42620
jmp 0x265ab
movl 0x251580(%rip), %ecx    # 0x277a78
imull 0x2540b1(%rip), %ecx    # 0x27a5b0
movl 0x2540a7(%rip), %eax    # 0x27a5ac
subl %ecx, %eax
movl %eax, 0x25409f(%rip)    # 0x27a5ac
movq 0x253ff4(%rip), %rax    # 0x27a508
movq %rax, -0x240(%rbp)
movl 0x251543(%rip), %eax    # 0x277a64
subl 0x251551(%rip), %eax    # 0x277a78
cltq
imulq 0x25404f(%rip), %rax    # 0x27a580
movslq 0x254078(%rip), %rcx    # 0x27a5b0
cqto
idivq %rcx
movq %rax, %rcx
movq -0x240(%rbp), %rax
subq %rcx, %rax
subq 0x253fbf(%rip), %rax    # 0x27a510
movq %rax, 0x253fd0(%rip)    # 0x27a528
cmpq $0x0, 0x253fc8(%rip)    # 0x27a528
jge 0x265a4
cmpb $0x0, 0x253fb7(%rip)    # 0x27a520
je 0x26597
movq 0x253f8e(%rip), %rax    # 0x27a500
addq 0x253faf(%rip), %rax    # 0x27a528
movq %rax, 0x253fa8(%rip)    # 0x27a528
cmpq $0x0, 0x253fa0(%rip)    # 0x27a528
jge 0x26595
movq $0x0, 0x253f93(%rip) # 0x27a528
jmp 0x265a2
movq $0x0, 0x253f86(%rip) # 0x27a528
jmp 0x265a4
xorl %edi, %edi
callq 0x24e80
jmp 0x265da
cmpb $0x0, 0x254003(%rip)    # 0x27a5b7
je 0x265c6
xorl %edi, %edi
callq 0x24e80
movb $0x0, 0x253ff3(%rip)    # 0x27a5b7
jmp 0x265d8
cmpb $0x0, 0x253fdb(%rip)    # 0x27a5a8
je 0x265d6
xorl %edi, %edi
callq 0x24e80
jmp 0x265d8
jmp 0x265da
jmp 0x265f0
jmp 0x265de
cmpb $0x0, 0x253fc3(%rip)    # 0x27a5a8
je 0x265ee
xorl %edi, %edi
callq 0x24e80
jmp 0x265f0
movslq 0x253f79(%rip), %rax    # 0x27a570
cmpq 0x253f82(%rip), %rax    # 0x27a580
jl 0x2660a
movl $0x0, 0x253f66(%rip)    # 0x27a570
movq 0x253f07(%rip), %rax    # 0x27a518
addq $0x1, %rax
movq %rax, 0x253efc(%rip)    # 0x27a518
cmpq 0x253edd(%rip), %rax    # 0x27a500
jl 0x26633
movq 0x253ed4(%rip), %rax    # 0x27a500
movq %rax, 0x253ee5(%rip)    # 0x27a518
movq 0x253ece(%rip), %rax    # 0x27a508
addq $0x1, %rax
movq %rax, 0x253ec3(%rip)    # 0x27a508
cmpq 0x253eb4(%rip), %rax    # 0x27a500
jl 0x26659
movq $0x0, 0x253eaf(%rip) # 0x27a508
movq 0x253ea8(%rip), %rax    # 0x27a508
cmpq 0x253ea9(%rip), %rax    # 0x27a510
jne 0x266a4
movq 0x253ea0(%rip), %rax    # 0x27a510
addq $0x1, %rax
movq %rax, 0x253e95(%rip)    # 0x27a510
cmpq 0x253e7e(%rip), %rax    # 0x27a500
jl 0x2668f
movq $0x0, 0x253e81(%rip) # 0x27a510
movq 0x253e6a(%rip), %rax    # 0x27a500
movq %rax, 0x253e7b(%rip)    # 0x27a518
movb $0x1, 0x253e7c(%rip)    # 0x27a520
movq 0x253e5d(%rip), %rdi    # 0x27a508
callq 0x13f30
cmpl $0x0, -0x4(%rbp)
je 0x266c0
callq 0x21820
callq 0xb0d0
addq $0x2f0, %rsp            # imm = 0x2F0
popq %rbp
retq
nopl (%rax)