// File: jkingan[P]ladyheather/heathmsc.cpp
// Function: show_adev_table(ADEV_INFO*, int, int, unsigned char, int)
int show_adev_table(struct ADEV_INFO *bins, int adev_row, int adev_col, u08 color, int why)
{
int i;
int id;
char *d;
char *t;
long adev_q_count;
char c;
int count;
char adev_id[32];
int mask;
double tau;
double period;
char pstring[128];

   left_adev_col = adev_col;

   if(text_mode) {
      if(first_key) return 0;
      if(all_adevs == SINGLE_ADEVS) return 0;     // no room on screen to do this
   }
   if(zoom_screen) return 0;
   if(bins->bin_count <= 0) return 0;              // nothing to show
   if(adevs_active(1) == 0) return 0;
   if((SCREEN_WIDTH < NARROW_SCREEN) && (all_adevs == SINGLE_ADEVS)) {  // no room for ADEV tables
      return 0;
   }
   if(osc_params && (rcvr_type == TICC_RCVR)) return 0;

   mask = 0xFFFF;
   period = adev_period;
   if     (bins->adev_type == PPS_ADEV) { t = "ADEV"; adev_q_count = pps_adev_q_count+(long) pps_adev_q_overflow; mask = DISPLAY_ADEV; period = pps_adev_period; } 
   else if(bins->adev_type == OSC_ADEV) { t = "ADEV"; adev_q_count = osc_adev_q_count+(long) osc_adev_q_overflow; mask = DISPLAY_ADEV; period = osc_adev_period; } 
   else if(bins->adev_type == CHC_ADEV) { t = "ADEV"; adev_q_count = chc_adev_q_count+(long) chc_adev_q_overflow; mask = DISPLAY_ADEV; period = chc_adev_period; } 
   else if(bins->adev_type == CHD_ADEV) { t = "ADEV"; adev_q_count = chd_adev_q_count+(long) chd_adev_q_overflow; mask = DISPLAY_ADEV; period = chd_adev_period; } 

   else if(bins->adev_type == PPS_HDEV) { t = "HDEV"; adev_q_count = pps_adev_q_count+(long) pps_adev_q_overflow; mask = DISPLAY_HDEV; period = pps_adev_period; } 
   else if(bins->adev_type == OSC_HDEV) { t = "HDEV"; adev_q_count = osc_adev_q_count+(long) osc_adev_q_overflow; mask = DISPLAY_HDEV; period = osc_adev_period; } 
   else if(bins->adev_type == CHC_HDEV) { t = "HDEV"; adev_q_count = chc_adev_q_count+(long) chc_adev_q_overflow; mask = DISPLAY_HDEV; period = chc_adev_period; } 
   else if(bins->adev_type == CHD_HDEV) { t = "HDEV"; adev_q_count = chd_adev_q_count+(long) chd_adev_q_overflow; mask = DISPLAY_HDEV; period = chd_adev_period; } 

   else if(bins->adev_type == PPS_MDEV) { t = "MDEV"; adev_q_count = pps_adev_q_count+(long) pps_adev_q_overflow; mask = DISPLAY_MDEV; period = pps_adev_period; } 
   else if(bins->adev_type == OSC_MDEV) { t = "MDEV"; adev_q_count = osc_adev_q_count+(long) osc_adev_q_overflow; mask = DISPLAY_MDEV; period = osc_adev_period; } 
   else if(bins->adev_type == CHC_MDEV) { t = "MDEV"; adev_q_count = chc_adev_q_count+(long) chc_adev_q_overflow; mask = DISPLAY_MDEV; period = chc_adev_period; } 
   else if(bins->adev_type == CHD_MDEV) { t = "MDEV"; adev_q_count = chd_adev_q_count+(long) chd_adev_q_overflow; mask = DISPLAY_MDEV; period = chd_adev_period; } 

   else if(bins->adev_type == PPS_TDEV) { t = "TDEV"; adev_q_count = pps_adev_q_count+(long) pps_adev_q_overflow; mask = DISPLAY_TDEV; period = pps_adev_period; } 
   else if(bins->adev_type == OSC_TDEV) { t = "TDEV"; adev_q_count = osc_adev_q_count+(long) osc_adev_q_overflow; mask = DISPLAY_TDEV; period = osc_adev_period; } 
   else if(bins->adev_type == CHC_TDEV) { t = "TDEV"; adev_q_count = chc_adev_q_count+(long) chc_adev_q_overflow; mask = DISPLAY_TDEV; period = chc_adev_period; } 
   else if(bins->adev_type == CHD_TDEV) { t = "TDEV"; adev_q_count = chd_adev_q_count+(long) chd_adev_q_overflow; mask = DISPLAY_TDEV; period = chd_adev_period; } 

   else if(bins->adev_type == A_MTIE)   { t = "MTIE"; adev_q_count = mtie_intervals[CHA_MTIE][0]; mask = DISPLAY_MTIE; period = pps_adev_period; } 
   else if(bins->adev_type == B_MTIE)   { t = "MTIE"; adev_q_count = mtie_intervals[CHB_MTIE][0]; mask = DISPLAY_MTIE; period = osc_adev_period; } 
   else if(bins->adev_type == C_MTIE)   { t = "MTIE"; adev_q_count = mtie_intervals[CHC_MTIE][0]; mask = DISPLAY_MTIE; period = chc_adev_period; } 
   else if(bins->adev_type == D_MTIE)   { t = "MTIE"; adev_q_count = mtie_intervals[CHD_MTIE][0]; mask = DISPLAY_MTIE; period = chd_adev_period; } 
   else { t="????"; adev_q_count = 0; }
   if(period <= 0.0) return 0;      // aaaapppp other periods 
   
   if(SCREEN_WIDTH < ADEV_AZEL_THRESH) {  // no room for both a map and adev tables
      if(all_adevs == SINGLE_ADEVS) {
         if(plot_watch) {
            if(shared_plot && (shared_item & SHARE_WATCH)) ;
            else return 0;
         }
         if(plot_azel) {
            if(shared_plot && (shared_item & SHARE_MAP)) ;
            else return 0;
         }
         if(plot_signals) {
            if(shared_plot && (shared_item & SHARE_SIGNALS)) ;
            else return 0;
         }
         if(plot_lla) {
            if(shared_plot && (shared_item & SHARE_LLA)) ;
            else return 0;
         }

         if(precision_survey) return 0;
         if(check_precise_posn) return 0;
         if(precise_survey_done) return 0;
         if(show_fixes) return 0;
      }
   }

   if((bins->adev_bins[0] == 0.0) && (bins->adev_bins[1] == 0.0)) return 0;

   calc_adev_display_size();
      
   id = bins->adev_type / NUM_ADEV_TYPES;

   if(id == CHD_ID) {
      d = "chD";
   }
   else if(id == CHC_ID) {
      d = "chC";
   }
   else if(id == PPS_ID) {
      if(jitter_adev)    d = "Msg jit"; //"PPS";
      else if(TICC_USED) d = "chA";
      else               d = plot[PPS].plot_id; //"PPS";
   }
   else {
      if(jitter_adev)    d = "Msg ofs"; //"OSC";
      else if(TICC_USED) d = "chB";
      else               d = plot[OSC].plot_id; //"OSC";
   }

if(ATYPE == A_MTIE) {
// if((mask & adev_display_mask) == 0) return 0;
}

   strcpy(adev_id, t);
   if(TICC_USED == 0) strlwr(adev_id);  // show bogo-adevs in lower case
   else if(ticc_type == LARS_TICC) strlwr(adev_id);

   blank_underscore = 1; // '_' char is used for formatting columns,  convert to blank

   if(all_adevs && (rcvr_type == TICC_RCVR)) {
      vidstr(adev_row,adev_col, WHITE, "                       ");
   }

   if(last_was_adev) c = UP_DOWN_CHAR;  // show adev scrolling is active
   else              c = ':';           // show plot scrolling is active

//sprintf(debug_text3, "%s  lwa:%d(%d)  fsb:%d  mbs:%d  atr:%d  aps:%d  abr:%d  aar:%d  bc:%d", 
//t, last_was_adev,lwa, first_show_bin, max_bins_shown, adev_table_rows, adev_page_size, adev_bottom_row, all_adev_row, bins->bin_count);

if(0) {  // try to fix mystery bug where adev display starts at the wrong bin
   for(i=0; i<bins->bin_count; i++) {
      if(bins->adev_taus[i] == 0) {  // we should never see a bin with tau=0
         first_show_bin = 0;
         break;
      }
   }
}

   count = 0;
   if(all_adevs || (SCREEN_WIDTH < MEDIUM_WIDTH)) {  // 800x600 - short version of tables
      left_adev_col = adev_col;
       sprintf(out, "%s %s%c %lu pts", d, adev_id,c, adev_q_count);
///   sprintf(out, "%s %s%c %lu pts bc:%d", d, adev_id,c, adev_q_count,bins->bin_count);
      vidstr(adev_row, left_adev_col, color, &blanks[TEXT_COLS-max_adev_width]);
      vidstr(adev_row, left_adev_col, color, out);
      adevs_shown = strlen(out);
      if(bins->bin_count > max_bins_shown) max_bins_shown = bins->bin_count;

      for(i=first_show_bin; i<bins->bin_count; i++) {
         ++adev_row;
         if(all_adevs && (left_adev_col < INFO_COL)) {
            if(adev_row > (MOUSE_ROW+0)) break;  // mmmmmm
         }
         else if(adev_row > (MOUSE_ROW+1)) break;  // mmmmmm

         if(max_adev_width > 5) {  // erase the old data
//          fill_rectangle (left_adev_col*TEXT_WIDTH+TEXT_X_MARGIN,adev_row*TEXT_HEIGHT+TEXT_Y_MARGIN, (max_adev_width)*TEXT_WIDTH,TEXT_HEIGHT, RED);
            erase_rectangle(left_adev_col*TEXT_WIDTH+TEXT_X_MARGIN,adev_row*TEXT_HEIGHT+TEXT_Y_MARGIN, (max_adev_width)*TEXT_WIDTH,TEXT_HEIGHT);
         }
         if(++count >= adev_table_rows) break;
         if(ATYPE == A_MTIE) {
            if(bins->adev_on[i] < 0.0) break;
         }
         else if(bins->adev_on[i] <= 0.0) break;

         tau = bins->adev_taus[i];
         strcpy(pstring, "??????");

         if(fperiod(period)) {  // non-integer period
            if     (tau < 100.0)    sprintf(pstring, "%6.3f", tau);
            else if(tau < 1000.0)   sprintf(pstring, "%6.2f", tau);
            else if(tau < 10000.0)  sprintf(pstring, "%6.1f", tau);
            else                    sprintf(pstring, "%6.0f", tau);
         }
         else {
            sprintf(pstring, "%6ld", (long) tau);
         }

         if(all_adevs && (SCREEN_WIDTH >= MEDIUM_WIDTH) && (text_mode == 0)) {
            if(tau >= 1000000.0) {
               sprintf(out, "%st %.4le (n=%ld)", pstring, bins->adev_bins[i], bins->adev_on[i]);
            }
            else {
               sprintf(out, "%s t %.4le (n=%ld)", pstring, bins->adev_bins[i], bins->adev_on[i]);
            }
            adevs_shown = strlen(out);
         }
         else {
            if(1 || (SCREEN_WIDTH < NARROW_SCREEN)) {
               sprintf(out, "%st %.3le", pstring, bins->adev_bins[i]);
            }
            else {
               sprintf(out, "%s t %.3le", pstring, bins->adev_bins[i]);
            }
            adevs_shown = strlen(out);
            adevs_shown += 6;  // make sure view info erases
         }
         vidstr(adev_row, left_adev_col, color, out);

         if(adevs_shown > max_adev_width) max_adev_width = adevs_shown+1;
      }
   }
   else {   // long version of tables will fit
      left_adev_col = adev_col+4;
      sprintf(out, "%s %s%c for %lu points", d, adev_id,c, adev_q_count);
///   sprintf(out, "%s %s%c %lu pts bc::%d", d, adev_id,c, adev_q_count,bins->bin_count);
      vidstr(adev_row, adev_col, color, &blanks[TEXT_COLS-max_adev_width]);
      vidstr(adev_row, adev_col+7, color, out);
      adevs_shown = 7 + 5 + strlen(out) + 2;
      adevs_shown = strlen(out);
      if(bins->bin_count > max_bins_shown) {
         max_bins_shown = bins->bin_count;
      }

      for(i=first_show_bin; i<bins->bin_count; i++) {  // draw the adev table entries
         ++adev_row;
         if(all_adevs && (left_adev_col < INFO_COL)) {
            if(adev_row > (MOUSE_ROW+0)) break;  // mmmmmm
         }
         else if(adev_row > (MOUSE_ROW+1)) break;  // mmmmmm

         if(max_adev_width > 5) {   // erase the old data
//          fill_rectangle (left_adev_col*TEXT_WIDTH+TEXT_X_MARGIN,adev_row*TEXT_HEIGHT+TEXT_Y_MARGIN, max_adev_width*TEXT_WIDTH,TEXT_HEIGHT, RED);
            erase_rectangle(left_adev_col*TEXT_WIDTH+TEXT_X_MARGIN,adev_row*TEXT_HEIGHT+TEXT_Y_MARGIN, max_adev_width*TEXT_WIDTH,TEXT_HEIGHT);
         }
         if(++count >= adev_table_rows) break;
         if(ATYPE == A_MTIE) {
            if(bins->adev_on[i] < 0.0) break;
         }
         else if(bins->adev_on[i] <= 0.0) break;

         tau = bins->adev_taus[i];
         strcpy(pstring, "????????");

         if(fperiod(period)) {
            if     (tau < 1000.0)    sprintf(pstring, "%8.4f", tau);
            else if(tau < 10000.0)   sprintf(pstring, "%8.3f", tau);
            else if(tau < 100000.0)  sprintf(pstring, "%8.2f", tau);
            else if(tau < 1000000.0) sprintf(pstring, "%8.1f", tau);
            else                     sprintf(pstring, "%8.0f", tau);
         }
         else {
            sprintf(pstring, "%8ld", (long) tau);
         }

         sprintf(out, "%s tau  %.3le (n=%ld)", pstring, bins->adev_bins[i], bins->adev_on[i]);
         vidstr(adev_row, left_adev_col, color, out);

         adevs_shown = strlen(out);
         if(adevs_shown > max_adev_width) max_adev_width = adevs_shown+1;
      }
   }

   ++adev_row;
//sprintf(debug_text, "maw:%d  left:%d  arow:%d  bot:%d  geight:%d  mouse:%d", 
//max_adev_width, left_adev_col, adev_row, adev_bottom_row, (adev_bottom_row-adev_row+1), MOUSE_ROW);
   i = (adev_bottom_row-adev_row+1);       // i=number of rows to erase
   if(all_adevs && (left_adev_col < INFO_COL)) {
      if(adev_bottom_row >= (MOUSE_ROW+0)) {  // mmmmm would eat into plot titles
         i -= (adev_bottom_row - (MOUSE_ROW+0));  // mmmmm adjust it so it won't
      }
   }
   else if(adev_bottom_row >= (MOUSE_ROW+1)) {  // mmmmm would eat into plot titles
      i -= (adev_bottom_row - (MOUSE_ROW+1));  // mmmmm adjust it so it won't
   }
   if(i > 0) {  // erase the rest of the adev table
//    fill_rectangle(left_adev_col*TEXT_WIDTH+TEXT_X_MARGIN, adev_row*TEXT_HEIGHT+TEXT_Y_MARGIN, max_adev_width*TEXT_WIDTH,i*TEXT_HEIGHT, BLUE);
      erase_rectangle(left_adev_col*TEXT_WIDTH+TEXT_X_MARGIN,adev_row*TEXT_HEIGHT+TEXT_Y_MARGIN, max_adev_width*TEXT_WIDTH,i*TEXT_HEIGHT);
   }

   blank_underscore = 0;
   return 1;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x120, %rsp            # imm = 0x120
movb %cl, %al
movq %rdi, -0x10(%rbp)
movl %esi, -0x14(%rbp)
movl %edx, -0x18(%rbp)
movb %al, -0x19(%rbp)
movl %r8d, -0x20(%rbp)
movl -0x18(%rbp), %ecx
leaq 0x113e40(%rip), %rax    # 0x2779a8
movl %ecx, (%rax)
leaq 0x113e47(%rip), %rax    # 0x2779b8
cmpl $0x0, (%rax)
je 0x163bab
leaq 0x13a5bb(%rip), %rax    # 0x29e138
cmpl $0x0, (%rax)
je 0x163b8e
movl $0x0, -0x4(%rbp)
jmp 0x165068
leaq 0x138389(%rip), %rax    # 0x29bf1e
movzbl (%rax), %eax
cmpl $0x0, %eax
jne 0x163ba9
movl $0x0, -0x4(%rbp)
jmp 0x165068
jmp 0x163bab
leaq 0x207dd6(%rip), %rax    # 0x36b988
cmpb $0x0, (%rax)
je 0x163bc3
movl $0x0, -0x4(%rbp)
jmp 0x165068
movq -0x10(%rbp), %rax
cmpl $0x0, 0x648(%rax)
jg 0x163bdc
movl $0x0, -0x4(%rbp)
jmp 0x165068
movl $0x1, %edi
callq 0x127d80
cmpl $0x0, %eax
jne 0x163bf7
movl $0x0, -0x4(%rbp)
jmp 0x165068
leaq 0x113de2(%rip), %rax    # 0x2779e0
movl (%rax), %eax
movl %eax, -0x114(%rbp)
leaq 0x11eb17(%rip), %rax    # 0x282724
imull $0x31a, (%rax), %eax    # imm = 0x31A
movl $0x64, %ecx
cltd
idivl %ecx
movl %eax, %ecx
movl -0x114(%rbp), %eax
cmpl %ecx, %eax
jge 0x163c42
leaq 0x1382f0(%rip), %rax    # 0x29bf1e
movzbl (%rax), %eax
cmpl $0x0, %eax
jne 0x163c42
movl $0x0, -0x4(%rbp)
jmp 0x165068
leaq 0x208683(%rip), %rax    # 0x36c2cc
cmpb $0x0, (%rax)
je 0x163c6a
leaq 0x113e5b(%rip), %rax    # 0x277ab0
cmpq $0x10000, (%rax)        # imm = 0x10000
jne 0x163c6a
movl $0x0, -0x4(%rbp)
jmp 0x165068
movl $0xffff, -0x74(%rbp)    # imm = 0xFFFF
leaq 0x138260(%rip), %rax    # 0x29bed8
movsd (%rax), %xmm0
movsd %xmm0, -0x88(%rbp)
movq -0x10(%rbp), %rax
movzbl (%rax), %eax
cmpl $0x5, %eax
jne 0x163cd7
leaq 0xcc73(%rip), %rax      # 0x17090a
movq %rax, -0x38(%rbp)
leaq 0x138076(%rip), %rax    # 0x29bd18
movq (%rax), %rax
leaq 0x138074(%rip), %rcx    # 0x29bd20
cvttsd2si (%rcx), %rcx
addq %rcx, %rax
movq %rax, -0x40(%rbp)
movl $0x1, -0x74(%rbp)
leaq 0x13821a(%rip), %rax    # 0x29bee0
movsd (%rax), %xmm0
movsd %xmm0, -0x88(%rbp)
jmp 0x1642eb
movq -0x10(%rbp), %rax
movzbl (%rax), %eax
cmpl $0x0, %eax
jne 0x163d2a
leaq 0xcc20(%rip), %rax      # 0x17090a
movq %rax, -0x38(%rbp)
leaq 0x138073(%rip), %rax    # 0x29bd68
movq (%rax), %rax
leaq 0x138071(%rip), %rcx    # 0x29bd70
cvttsd2si (%rcx), %rcx
addq %rcx, %rax
movq %rax, -0x40(%rbp)
movl $0x1, -0x74(%rbp)
leaq 0x1381cf(%rip), %rax    # 0x29bee8
movsd (%rax), %xmm0
movsd %xmm0, -0x88(%rbp)
jmp 0x1642e9
movq -0x10(%rbp), %rax
movzbl (%rax), %eax
cmpl $0xa, %eax
jne 0x163d7d
leaq 0xcbcd(%rip), %rax      # 0x17090a
movq %rax, -0x38(%rbp)
leaq 0x138070(%rip), %rax    # 0x29bdb8
movq (%rax), %rax
leaq 0x13806e(%rip), %rcx    # 0x29bdc0
cvttsd2si (%rcx), %rcx
addq %rcx, %rax
movq %rax, -0x40(%rbp)
movl $0x1, -0x74(%rbp)
leaq 0x138184(%rip), %rax    # 0x29bef0
movsd (%rax), %xmm0
movsd %xmm0, -0x88(%rbp)
jmp 0x1642e7
movq -0x10(%rbp), %rax
movzbl (%rax), %eax
cmpl $0xf, %eax
jne 0x163dd0
leaq 0xcb7a(%rip), %rax      # 0x17090a
movq %rax, -0x38(%rbp)
leaq 0x13806d(%rip), %rax    # 0x29be08
movq (%rax), %rax
leaq 0x13806b(%rip), %rcx    # 0x29be10
cvttsd2si (%rcx), %rcx
addq %rcx, %rax
movq %rax, -0x40(%rbp)
movl $0x1, -0x74(%rbp)
leaq 0x138139(%rip), %rax    # 0x29bef8
movsd (%rax), %xmm0
movsd %xmm0, -0x88(%rbp)
jmp 0x1642e5
movq -0x10(%rbp), %rax
movzbl (%rax), %eax
cmpl $0x6, %eax
jne 0x163e23
leaq 0xcb2c(%rip), %rax      # 0x17090f
movq %rax, -0x38(%rbp)
leaq 0x137f2a(%rip), %rax    # 0x29bd18
movq (%rax), %rax
leaq 0x137f28(%rip), %rcx    # 0x29bd20
cvttsd2si (%rcx), %rcx
addq %rcx, %rax
movq %rax, -0x40(%rbp)
movl $0x2, -0x74(%rbp)
leaq 0x1380ce(%rip), %rax    # 0x29bee0
movsd (%rax), %xmm0
movsd %xmm0, -0x88(%rbp)
jmp 0x1642e3
movq -0x10(%rbp), %rax
movzbl (%rax), %eax
cmpl $0x1, %eax
jne 0x163e76
leaq 0xcad9(%rip), %rax      # 0x17090f
movq %rax, -0x38(%rbp)
leaq 0x137f27(%rip), %rax    # 0x29bd68
movq (%rax), %rax
leaq 0x137f25(%rip), %rcx    # 0x29bd70
cvttsd2si (%rcx), %rcx
addq %rcx, %rax
movq %rax, -0x40(%rbp)
movl $0x2, -0x74(%rbp)
leaq 0x138083(%rip), %rax    # 0x29bee8
movsd (%rax), %xmm0
movsd %xmm0, -0x88(%rbp)
jmp 0x1642e1
movq -0x10(%rbp), %rax
movzbl (%rax), %eax
cmpl $0xb, %eax
jne 0x163ec9
leaq 0xca86(%rip), %rax      # 0x17090f
movq %rax, -0x38(%rbp)
leaq 0x137f24(%rip), %rax    # 0x29bdb8
movq (%rax), %rax
leaq 0x137f22(%rip), %rcx    # 0x29bdc0
cvttsd2si (%rcx), %rcx
addq %rcx, %rax
movq %rax, -0x40(%rbp)
movl $0x2, -0x74(%rbp)
leaq 0x138038(%rip), %rax    # 0x29bef0
movsd (%rax), %xmm0
movsd %xmm0, -0x88(%rbp)
jmp 0x1642df
movq -0x10(%rbp), %rax
movzbl (%rax), %eax
cmpl $0x10, %eax
jne 0x163f1c
leaq 0xca33(%rip), %rax      # 0x17090f
movq %rax, -0x38(%rbp)
leaq 0x137f21(%rip), %rax    # 0x29be08
movq (%rax), %rax
leaq 0x137f1f(%rip), %rcx    # 0x29be10
cvttsd2si (%rcx), %rcx
addq %rcx, %rax
movq %rax, -0x40(%rbp)
movl $0x2, -0x74(%rbp)
leaq 0x137fed(%rip), %rax    # 0x29bef8
movsd (%rax), %xmm0
movsd %xmm0, -0x88(%rbp)
jmp 0x1642dd
movq -0x10(%rbp), %rax
movzbl (%rax), %eax
cmpl $0x7, %eax
jne 0x163f6f
leaq 0xc9e5(%rip), %rax      # 0x170914
movq %rax, -0x38(%rbp)
leaq 0x137dde(%rip), %rax    # 0x29bd18
movq (%rax), %rax
leaq 0x137ddc(%rip), %rcx    # 0x29bd20
cvttsd2si (%rcx), %rcx
addq %rcx, %rax
movq %rax, -0x40(%rbp)
movl $0x4, -0x74(%rbp)
leaq 0x137f82(%rip), %rax    # 0x29bee0
movsd (%rax), %xmm0
movsd %xmm0, -0x88(%rbp)
jmp 0x1642db
movq -0x10(%rbp), %rax
movzbl (%rax), %eax
cmpl $0x2, %eax
jne 0x163fc2
leaq 0xc992(%rip), %rax      # 0x170914
movq %rax, -0x38(%rbp)
leaq 0x137ddb(%rip), %rax    # 0x29bd68
movq (%rax), %rax
leaq 0x137dd9(%rip), %rcx    # 0x29bd70
cvttsd2si (%rcx), %rcx
addq %rcx, %rax
movq %rax, -0x40(%rbp)
movl $0x4, -0x74(%rbp)
leaq 0x137f37(%rip), %rax    # 0x29bee8
movsd (%rax), %xmm0
movsd %xmm0, -0x88(%rbp)
jmp 0x1642d9
movq -0x10(%rbp), %rax
movzbl (%rax), %eax
cmpl $0xc, %eax
jne 0x164015
leaq 0xc93f(%rip), %rax      # 0x170914
movq %rax, -0x38(%rbp)
leaq 0x137dd8(%rip), %rax    # 0x29bdb8
movq (%rax), %rax
leaq 0x137dd6(%rip), %rcx    # 0x29bdc0
cvttsd2si (%rcx), %rcx
addq %rcx, %rax
movq %rax, -0x40(%rbp)
movl $0x4, -0x74(%rbp)
leaq 0x137eec(%rip), %rax    # 0x29bef0
movsd (%rax), %xmm0
movsd %xmm0, -0x88(%rbp)
jmp 0x1642d7
movq -0x10(%rbp), %rax
movzbl (%rax), %eax
cmpl $0x11, %eax
jne 0x164068
leaq 0xc8ec(%rip), %rax      # 0x170914
movq %rax, -0x38(%rbp)
leaq 0x137dd5(%rip), %rax    # 0x29be08
movq (%rax), %rax
leaq 0x137dd3(%rip), %rcx    # 0x29be10
cvttsd2si (%rcx), %rcx
addq %rcx, %rax
movq %rax, -0x40(%rbp)
movl $0x4, -0x74(%rbp)
leaq 0x137ea1(%rip), %rax    # 0x29bef8
movsd (%rax), %xmm0
movsd %xmm0, -0x88(%rbp)
jmp 0x1642d5
movq -0x10(%rbp), %rax
movzbl (%rax), %eax
cmpl $0x8, %eax
jne 0x1640bb
leaq 0xc89e(%rip), %rax      # 0x170919
movq %rax, -0x38(%rbp)
leaq 0x137c92(%rip), %rax    # 0x29bd18
movq (%rax), %rax
leaq 0x137c90(%rip), %rcx    # 0x29bd20
cvttsd2si (%rcx), %rcx
addq %rcx, %rax
movq %rax, -0x40(%rbp)
movl $0x8, -0x74(%rbp)
leaq 0x137e36(%rip), %rax    # 0x29bee0
movsd (%rax), %xmm0
movsd %xmm0, -0x88(%rbp)
jmp 0x1642d3
movq -0x10(%rbp), %rax
movzbl (%rax), %eax
cmpl $0x3, %eax
jne 0x16410e
leaq 0xc84b(%rip), %rax      # 0x170919
movq %rax, -0x38(%rbp)
leaq 0x137c8f(%rip), %rax    # 0x29bd68
movq (%rax), %rax
leaq 0x137c8d(%rip), %rcx    # 0x29bd70
cvttsd2si (%rcx), %rcx
addq %rcx, %rax
movq %rax, -0x40(%rbp)
movl $0x8, -0x74(%rbp)
leaq 0x137deb(%rip), %rax    # 0x29bee8
movsd (%rax), %xmm0
movsd %xmm0, -0x88(%rbp)
jmp 0x1642d1
movq -0x10(%rbp), %rax
movzbl (%rax), %eax
cmpl $0xd, %eax
jne 0x164161
leaq 0xc7f8(%rip), %rax      # 0x170919
movq %rax, -0x38(%rbp)
leaq 0x137c8c(%rip), %rax    # 0x29bdb8
movq (%rax), %rax
leaq 0x137c8a(%rip), %rcx    # 0x29bdc0
cvttsd2si (%rcx), %rcx
addq %rcx, %rax
movq %rax, -0x40(%rbp)
movl $0x8, -0x74(%rbp)
leaq 0x137da0(%rip), %rax    # 0x29bef0
movsd (%rax), %xmm0
movsd %xmm0, -0x88(%rbp)
jmp 0x1642cf
movq -0x10(%rbp), %rax
movzbl (%rax), %eax
cmpl $0x12, %eax
jne 0x1641b4
leaq 0xc7a5(%rip), %rax      # 0x170919
movq %rax, -0x38(%rbp)
leaq 0x137c89(%rip), %rax    # 0x29be08
movq (%rax), %rax
leaq 0x137c87(%rip), %rcx    # 0x29be10
cvttsd2si (%rcx), %rcx
addq %rcx, %rax
movq %rax, -0x40(%rbp)
movl $0x8, -0x74(%rbp)
leaq 0x137d55(%rip), %rax    # 0x29bef8
movsd (%rax), %xmm0
movsd %xmm0, -0x88(%rbp)
jmp 0x1642cd
movq -0x10(%rbp), %rax
movzbl (%rax), %eax
cmpl $0x9, %eax
jne 0x1641f5
leaq 0xc757(%rip), %rax      # 0x17091e
movq %rax, -0x38(%rbp)
movslq 0x35013e(%rip), %rax    # 0x4b4310
movq %rax, -0x40(%rbp)
movl $0x10, -0x74(%rbp)
leaq 0x137cfc(%rip), %rax    # 0x29bee0
movsd (%rax), %xmm0
movsd %xmm0, -0x88(%rbp)
jmp 0x1642cb
movq -0x10(%rbp), %rax
movzbl (%rax), %eax
cmpl $0x4, %eax
jne 0x164236
leaq 0xc716(%rip), %rax      # 0x17091e
movq %rax, -0x38(%rbp)
movslq 0x350291(%rip), %rax    # 0x4b44a4
movq %rax, -0x40(%rbp)
movl $0x10, -0x74(%rbp)
leaq 0x137cc3(%rip), %rax    # 0x29bee8
movsd (%rax), %xmm0
movsd %xmm0, -0x88(%rbp)
jmp 0x1642c9
movq -0x10(%rbp), %rax
movzbl (%rax), %eax
cmpl $0xe, %eax
jne 0x164274
leaq 0xc6d5(%rip), %rax      # 0x17091e
movq %rax, -0x38(%rbp)
movslq 0x3503e4(%rip), %rax    # 0x4b4638
movq %rax, -0x40(%rbp)
movl $0x10, -0x74(%rbp)
leaq 0x137c8a(%rip), %rax    # 0x29bef0
movsd (%rax), %xmm0
movsd %xmm0, -0x88(%rbp)
jmp 0x1642c7
movq -0x10(%rbp), %rax
movzbl (%rax), %eax
cmpl $0x13, %eax
jne 0x1642b2
leaq 0xc697(%rip), %rax      # 0x17091e
movq %rax, -0x38(%rbp)
movslq 0x35053a(%rip), %rax    # 0x4b47cc
movq %rax, -0x40(%rbp)
movl $0x10, -0x74(%rbp)
leaq 0x137c54(%rip), %rax    # 0x29bef8
movsd (%rax), %xmm0
movsd %xmm0, -0x88(%rbp)
jmp 0x1642c5
leaq 0x263b4(%rip), %rax     # 0x18a66d
movq %rax, -0x38(%rbp)
movq $0x0, -0x40(%rbp)
jmp 0x1642c7
jmp 0x1642c9
jmp 0x1642cb
jmp 0x1642cd
jmp 0x1642cf
jmp 0x1642d1
jmp 0x1642d3
jmp 0x1642d5
jmp 0x1642d7
jmp 0x1642d9
jmp 0x1642db
jmp 0x1642dd
jmp 0x1642df
jmp 0x1642e1
jmp 0x1642e3
jmp 0x1642e5
jmp 0x1642e7
jmp 0x1642e9
jmp 0x1642eb
xorps %xmm0, %xmm0
ucomisd -0x88(%rbp), %xmm0
jb 0x164304
movl $0x0, -0x4(%rbp)
jmp 0x165068
leaq 0x1136d5(%rip), %rax    # 0x2779e0
cmpl $0x500, (%rax)          # imm = 0x500
jge 0x164472
leaq 0x137c00(%rip), %rax    # 0x29bf1e
movzbl (%rax), %eax
cmpl $0x0, %eax
jne 0x164470
leaq 0x1162b7(%rip), %rax    # 0x27a5e8
cmpb $0x0, (%rax)
je 0x164363
leaq 0x23628b(%rip), %rax    # 0x39a5c8
cmpb $0x0, (%rax)
je 0x164355
leaq 0x236283(%rip), %rax    # 0x39a5cc
movl (%rax), %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0x164355
jmp 0x164361
movl $0x0, -0x4(%rbp)
jmp 0x165068
jmp 0x164363
leaq 0x116289(%rip), %rax    # 0x27a5f3
cmpb $0x0, (%rax)
je 0x16439c
leaq 0x236252(%rip), %rax    # 0x39a5c8
cmpb $0x0, (%rax)
je 0x16438e
leaq 0x23624a(%rip), %rax    # 0x39a5cc
movl (%rax), %eax
andl $0x2, %eax
cmpl $0x0, %eax
je 0x16438e
jmp 0x16439a
movl $0x0, -0x4(%rbp)
jmp 0x165068
jmp 0x16439c
leaq 0x116252(%rip), %rax    # 0x27a5f5
cmpb $0x0, (%rax)
je 0x1643d5
leaq 0x236219(%rip), %rax    # 0x39a5c8
cmpb $0x0, (%rax)
je 0x1643c7
leaq 0x236211(%rip), %rax    # 0x39a5cc
movl (%rax), %eax
andl $0x4, %eax
cmpl $0x0, %eax
je 0x1643c7
jmp 0x1643d3
movl $0x0, -0x4(%rbp)
jmp 0x165068
jmp 0x1643d5
leaq 0x2360b4(%rip), %rax    # 0x39a490
cmpb $0x0, (%rax)
je 0x16440e
leaq 0x2361e0(%rip), %rax    # 0x39a5c8
cmpb $0x0, (%rax)
je 0x164400
leaq 0x2361d8(%rip), %rax    # 0x39a5cc
movl (%rax), %eax
andl $0x8, %eax
cmpl $0x0, %eax
je 0x164400
jmp 0x16440c
movl $0x0, -0x4(%rbp)
jmp 0x165068
jmp 0x16440e
leaq 0x208c63(%rip), %rax    # 0x36d078
cmpb $0x0, (%rax)
je 0x164426
movl $0x0, -0x4(%rbp)
jmp 0x165068
leaq 0x236093(%rip), %rax    # 0x39a4c0
cmpb $0x0, (%rax)
je 0x16443e
movl $0x0, -0x4(%rbp)
jmp 0x165068
leaq 0x208c35(%rip), %rax    # 0x36d07a
cmpb $0x0, (%rax)
je 0x164456
movl $0x0, -0x4(%rbp)
jmp 0x165068
leaq 0x236057(%rip), %rax    # 0x39a4b4
cmpb $0x0, (%rax)
je 0x16446e
movl $0x0, -0x4(%rbp)
jmp 0x165068
jmp 0x164470
jmp 0x164472
movq -0x10(%rbp), %rax
movss 0x194(%rax), %xmm0
cvtss2sd %xmm0, %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0x1644b4
jp 0x1644b4
movq -0x10(%rbp), %rax
movss 0x198(%rax), %xmm0
cvtss2sd %xmm0, %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0x1644b4
jp 0x1644b4
movl $0x0, -0x4(%rbp)
jmp 0x165068
callq 0x15e830
movq -0x10(%rbp), %rax
movzbl (%rax), %eax
movl $0x5, %ecx
cltd
idivl %ecx
movl %eax, -0x28(%rbp)
cmpl $0x3, -0x28(%rbp)
jne 0x1644e1
leaq 0x1d79b(%rip), %rax     # 0x181c73
movq %rax, -0x30(%rbp)
jmp 0x1645a9
cmpl $0x2, -0x28(%rbp)
jne 0x1644f7
leaq 0x11125(%rip), %rax     # 0x175613
movq %rax, -0x30(%rbp)
jmp 0x1645a7
cmpl $0x1, -0x28(%rbp)
jne 0x16454f
leaq 0x1379a0(%rip), %rax    # 0x29bea4
cmpl $0x0, (%rax)
je 0x164516
leaq 0x3413b(%rip), %rax     # 0x19864b
movq %rax, -0x30(%rbp)
jmp 0x16454d
leaq 0x113593(%rip), %rax    # 0x277ab0
cmpq $0x10000, (%rax)        # imm = 0x10000
je 0x164530
callq 0x992e0
cmpl $0x0, %eax
je 0x16453d
leaq 0x1e399(%rip), %rax     # 0x1828d0
movq %rax, -0x30(%rbp)
jmp 0x16454b
leaq 0x587dc(%rip), %rax     # 0x1bcd20
movq (%rax), %rax
movq %rax, -0x30(%rbp)
jmp 0x16454d
jmp 0x1645a5
leaq 0x13794e(%rip), %rax    # 0x29bea4
cmpl $0x0, (%rax)
je 0x164568
leaq 0x340f1(%rip), %rax     # 0x198653
movq %rax, -0x30(%rbp)
jmp 0x1645a3
leaq 0x113541(%rip), %rax    # 0x277ab0
cmpq $0x10000, (%rax)        # imm = 0x10000
je 0x164582
callq 0x992e0
cmpl $0x0, %eax
je 0x16458f
leaq 0x1e34d(%rip), %rax     # 0x1828d6
movq %rax, -0x30(%rbp)
jmp 0x1645a1
leaq 0x5878a(%rip), %rax     # 0x1bcd20
movq 0xe8(%rax), %rax
movq %rax, -0x30(%rbp)
jmp 0x1645a3
jmp 0x1645a5
jmp 0x1645a7
jmp 0x1645a9
leaq 0x11e240(%rip), %rax    # 0x2827f0
cmpl $0x9, (%rax)
jne 0x1645b7
jmp 0x1645b7
leaq -0x70(%rbp), %rdi
movq -0x38(%rbp), %rsi
callq 0x9350
movb $0x1, %al
leaq 0x1134e3(%rip), %rcx    # 0x277ab0
cmpq $0x10000, (%rcx)        # imm = 0x10000
movb %al, -0x115(%rbp)
je 0x1645ed
callq 0x992e0
cmpl $0x0, %eax
setne %al
movb %al, -0x115(%rbp)
movb -0x115(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x164608
leaq -0x70(%rbp), %rdi
callq 0x9850
jmp 0x16461f
leaq 0x1134d9(%rip), %rax    # 0x277ae8
cmpl $0x4c, (%rax)
jne 0x16461d
leaq -0x70(%rbp), %rdi
callq 0x9850
jmp 0x16461f
leaq 0x115fe3(%rip), %rax    # 0x27a609
movb $0x1, (%rax)
leaq 0x1378ee(%rip), %rax    # 0x29bf1e
cmpb $0x0, (%rax)
je 0x16465c
leaq 0x113474(%rip), %rax    # 0x277ab0
cmpq $0x10000, (%rax)        # imm = 0x10000
jne 0x16465c
movl -0x14(%rbp), %edi
movl -0x18(%rbp), %esi
movl $0xf, %edx
leaq 0x3205f(%rip), %rcx     # 0x1966b6
callq 0x10ee0
leaq 0x115e81(%rip), %rax    # 0x27a4e4
cmpl $0x0, (%rax)
je 0x16466e
movb $0x12, -0x41(%rbp)
jmp 0x164672
movb $0x3a, -0x41(%rbp)
movl $0x0, -0x48(%rbp)
leaq 0x13789e(%rip), %rax    # 0x29bf1e
cmpb $0x0, (%rax)
jne 0x164698
leaq 0x113354(%rip), %rax    # 0x2779e0
cmpl $0x3e2, (%rax)          # imm = 0x3E2
jge 0x164b3e
movl -0x18(%rbp), %ecx
leaq 0x113306(%rip), %rax    # 0x2779a8
movl %ecx, (%rax)
movq -0x30(%rbp), %rdx
leaq -0x70(%rbp), %rcx
movsbl -0x41(%rbp), %r8d
movq -0x40(%rbp), %r9
leaq 0x236d44(%rip), %rdi    # 0x39b400
leaq 0x33f98(%rip), %rsi     # 0x19865b
movb $0x0, %al
callq 0x9060
movl -0x14(%rbp), %edi
leaq 0x1132d4(%rip), %rax    # 0x2779a8
movl (%rax), %esi
movb -0x19(%rbp), %al
leaq 0x113308(%rip), %rcx    # 0x2779e8
movl (%rcx), %ecx
leaq 0x137783(%rip), %rdx    # 0x29be6c
subl (%rdx), %ecx
movslq %ecx, %rdx
leaq 0x236afb(%rip), %rcx    # 0x39b1f0
addq %rdx, %rcx
movzbl %al, %edx
callq 0x10ee0
movl -0x14(%rbp), %edi
leaq 0x11329e(%rip), %rax    # 0x2779a8
movl (%rax), %esi
leaq 0x236ced(%rip), %rcx    # 0x39b400
movzbl -0x19(%rbp), %edx
callq 0x10ee0
leaq 0x236cdd(%rip), %rdi    # 0x39b400
callq 0x9120
movl %eax, %ecx
leaq 0x137733(%rip), %rax    # 0x29be64
movl %ecx, (%rax)
movq -0x10(%rbp), %rax
movl 0x648(%rax), %eax
leaq 0x13772c(%rip), %rcx    # 0x29be70
cmpl (%rcx), %eax
jle 0x16475b
movq -0x10(%rbp), %rax
movl 0x648(%rax), %ecx
leaq 0x137717(%rip), %rax    # 0x29be70
movl %ecx, (%rax)
leaq 0x1376fe(%rip), %rax    # 0x29be60
movl (%rax), %eax
movl %eax, -0x24(%rbp)
movl -0x24(%rbp), %eax
movq -0x10(%rbp), %rcx
cmpl 0x648(%rcx), %eax
jge 0x164b39
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
leaq 0x137794(%rip), %rax    # 0x29bf1e
cmpb $0x0, (%rax)
je 0x1647bd
leaq 0x113212(%rip), %rax    # 0x2779a8
movl (%rax), %eax
leaq 0x1131dd(%rip), %rcx    # 0x27797c
cmpl (%rcx), %eax
jge 0x1647bd
movl -0x14(%rbp), %eax
leaq 0x1131db(%rip), %rcx    # 0x277988
movl (%rcx), %ecx
addl $0x0, %ecx
cmpl %ecx, %eax
jle 0x1647bb
jmp 0x164b39
jmp 0x1647d7
movl -0x14(%rbp), %eax
leaq 0x1131c1(%rip), %rcx    # 0x277988
movl (%rcx), %ecx
addl $0x1, %ecx
cmpl %ecx, %eax
jle 0x1647d5
jmp 0x164b39
jmp 0x1647d7
leaq 0x13768e(%rip), %rax    # 0x29be6c
cmpl $0x5, (%rax)
jle 0x16483f
leaq 0x1131be(%rip), %rax    # 0x2779a8
movl (%rax), %edi
leaq 0x1131fd(%rip), %rax    # 0x2779f0
imull (%rax), %edi
leaq 0x1131f3(%rip), %rax    # 0x2779f0
movl (%rax), %eax
shll %eax
addl %eax, %edi
movl -0x14(%rbp), %esi
leaq 0x1131e7(%rip), %rax    # 0x2779f4
imull (%rax), %esi
leaq 0x1131dd(%rip), %rax    # 0x2779f4
movl (%rax), %eax
shll $0x0, %eax
addl %eax, %esi
leaq 0x137647(%rip), %rax    # 0x29be6c
movl (%rax), %edx
leaq 0x1131c2(%rip), %rax    # 0x2779f0
imull (%rax), %edx
leaq 0x1131bc(%rip), %rax    # 0x2779f4
movl (%rax), %ecx
callq 0xf250
movl -0x48(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x48(%rbp)
leaq 0x113151(%rip), %rcx    # 0x2779a0
cmpl (%rcx), %eax
jl 0x164858
jmp 0x164b39
leaq 0x11df91(%rip), %rax    # 0x2827f0
cmpl $0x9, (%rax)
jne 0x164886
movq -0x10(%rbp), %rax
movslq -0x24(%rbp), %rcx
cvtsi2sdq 0x328(%rax,%rcx,8), %xmm1
xorps %xmm0, %xmm0
ucomisd %xmm1, %xmm0
jbe 0x164884
jmp 0x164b39
jmp 0x1648a8
movq -0x10(%rbp), %rax
movslq -0x24(%rbp), %rcx
cvtsi2sdq 0x328(%rax,%rcx,8), %xmm1
xorps %xmm0, %xmm0
ucomisd %xmm1, %xmm0
jb 0x1648a6
jmp 0x164b39
jmp 0x1648a8
movq -0x10(%rbp), %rax
movslq -0x24(%rbp), %rcx
movss 0x4(%rax,%rcx,4), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x80(%rbp)
leaq -0x110(%rbp), %rdi
leaq 0x25d9e(%rip), %rsi     # 0x18a66b
callq 0x9350
movsd -0x88(%rbp), %xmm0
callq 0x163b00
cmpl $0x0, %eax
je 0x164989
movsd 0xa760(%rip), %xmm0     # 0x16f050
ucomisd -0x80(%rbp), %xmm0
jbe 0x164913
leaq -0x110(%rbp), %rdi
movsd -0x80(%rbp), %xmm0
leaq 0x269d8(%rip), %rsi     # 0x18b2e2
movb $0x1, %al
callq 0x9060
jmp 0x164987
movsd 0xa715(%rip), %xmm0     # 0x16f030
ucomisd -0x80(%rbp), %xmm0
jbe 0x16493e
leaq -0x110(%rbp), %rdi
movsd -0x80(%rbp), %xmm0
leaq 0x269c2(%rip), %rsi     # 0x18b2f7
movb $0x1, %al
callq 0x9060
jmp 0x164985
movsd 0xa7b2(%rip), %xmm0     # 0x16f0f8
ucomisd -0x80(%rbp), %xmm0
jbe 0x164969
leaq -0x110(%rbp), %rdi
movsd -0x80(%rbp), %xmm0
leaq 0x33d0b(%rip), %rsi     # 0x19866b
movb $0x1, %al
callq 0x9060
jmp 0x164983
leaq -0x110(%rbp), %rdi
movsd -0x80(%rbp), %xmm0
leaq 0x33cf5(%rip), %rsi     # 0x198671
movb $0x1, %al
callq 0x9060
jmp 0x164985
jmp 0x164987
jmp 0x1649a4
leaq -0x110(%rbp), %rdi
cvttsd2si -0x80(%rbp), %rdx
leaq 0x33cda(%rip), %rsi     # 0x198677
movb $0x0, %al
callq 0x9060
leaq 0x137573(%rip), %rax    # 0x29bf1e
cmpb $0x0, (%rax)
je 0x164a87
leaq 0x113025(%rip), %rax    # 0x2779e0
cmpl $0x3e2, (%rax)          # imm = 0x3E2
jl 0x164a87
leaq 0x112fea(%rip), %rax    # 0x2779b8
cmpl $0x0, (%rax)
jne 0x164a87
movsd -0x80(%rbp), %xmm0
movsd 0xa65c(%rip), %xmm1     # 0x16f040
ucomisd %xmm1, %xmm0
jb 0x164a2d
leaq -0x110(%rbp), %rdx
movq -0x10(%rbp), %rax
movslq -0x24(%rbp), %rcx
movss 0x194(%rax,%rcx,4), %xmm0
cvtss2sd %xmm0, %xmm0
movq -0x10(%rbp), %rax
movslq -0x24(%rbp), %rcx
movq 0x328(%rax,%rcx,8), %rcx
leaq 0x2369e3(%rip), %rdi    # 0x39b400
leaq 0x33c58(%rip), %rsi     # 0x19867c
movb $0x1, %al
callq 0x9060
jmp 0x164a6e
leaq -0x110(%rbp), %rdx
movq -0x10(%rbp), %rax
movslq -0x24(%rbp), %rcx
movss 0x194(%rax,%rcx,4), %xmm0
cvtss2sd %xmm0, %xmm0
movq -0x10(%rbp), %rax
movslq -0x24(%rbp), %rcx
movq 0x328(%rax,%rcx,8), %rcx
leaq 0x2369a0(%rip), %rdi    # 0x39b400
leaq 0x33c27(%rip), %rsi     # 0x19868e
movb $0x1, %al
callq 0x9060
leaq 0x23698b(%rip), %rdi    # 0x39b400
callq 0x9120
movl %eax, %ecx
leaq 0x1373e1(%rip), %rax    # 0x29be64
movl %ecx, (%rax)
jmp 0x164ae4
leaq -0x110(%rbp), %rdx
movq -0x10(%rbp), %rax
movslq -0x24(%rbp), %rcx
movss 0x194(%rax,%rcx,4), %xmm0
cvtss2sd %xmm0, %xmm0
leaq 0x236956(%rip), %rdi    # 0x39b400
leaq 0x33bf0(%rip), %rsi     # 0x1986a1
movb $0x1, %al
callq 0x9060
leaq 0x236941(%rip), %rdi    # 0x39b400
callq 0x9120
movl %eax, %ecx
leaq 0x137397(%rip), %rax    # 0x29be64
movl %ecx, (%rax)
leaq 0x13738e(%rip), %rax    # 0x29be64
movl (%rax), %ecx
addl $0x6, %ecx
leaq 0x137382(%rip), %rax    # 0x29be64
movl %ecx, (%rax)
movl -0x14(%rbp), %edi
leaq 0x112eba(%rip), %rax    # 0x2779a8
movl (%rax), %esi
leaq 0x236909(%rip), %rcx    # 0x39b400
movzbl -0x19(%rbp), %edx
callq 0x10ee0
leaq 0x13735d(%rip), %rax    # 0x29be64
movl (%rax), %eax
leaq 0x13735c(%rip), %rcx    # 0x29be6c
cmpl (%rcx), %eax
jle 0x164b29
leaq 0x137349(%rip), %rax    # 0x29be64
movl (%rax), %ecx
addl $0x1, %ecx
leaq 0x137345(%rip), %rax    # 0x29be6c
movl %ecx, (%rax)
jmp 0x164b2b
movl -0x24(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x24(%rbp)
jmp 0x164767
jmp 0x164f42
movl -0x18(%rbp), %ecx
addl $0x4, %ecx
leaq 0x112e5d(%rip), %rax    # 0x2779a8
movl %ecx, (%rax)
movq -0x30(%rbp), %rdx
leaq -0x70(%rbp), %rcx
movsbl -0x41(%rbp), %r8d
movq -0x40(%rbp), %r9
leaq 0x23689b(%rip), %rdi    # 0x39b400
leaq 0x33b3f(%rip), %rsi     # 0x1986ab
movb $0x0, %al
callq 0x9060
movl -0x14(%rbp), %edi
movl -0x18(%rbp), %esi
movb -0x19(%rbp), %al
leaq 0x112e65(%rip), %rcx    # 0x2779e8
movl (%rcx), %ecx
leaq 0x1372e0(%rip), %rdx    # 0x29be6c
subl (%rdx), %ecx
movslq %ecx, %rdx
leaq 0x236658(%rip), %rcx    # 0x39b1f0
addq %rdx, %rcx
movzbl %al, %edx
callq 0x10ee0
movl -0x14(%rbp), %edi
movl -0x18(%rbp), %esi
addl $0x7, %esi
leaq 0x23684d(%rip), %rcx    # 0x39b400
movzbl -0x19(%rbp), %edx
callq 0x10ee0
leaq 0x23683d(%rip), %rdi    # 0x39b400
callq 0x9120
addq $0xc, %rax
addq $0x2, %rax
movl %eax, %ecx
leaq 0x13728b(%rip), %rax    # 0x29be64
movl %ecx, (%rax)
leaq 0x23681e(%rip), %rdi    # 0x39b400
callq 0x9120
movl %eax, %ecx
leaq 0x137274(%rip), %rax    # 0x29be64
movl %ecx, (%rax)
movq -0x10(%rbp), %rax
movl 0x648(%rax), %eax
leaq 0x13726d(%rip), %rcx    # 0x29be70
cmpl (%rcx), %eax
jle 0x164c1a
movq -0x10(%rbp), %rax
movl 0x648(%rax), %ecx
leaq 0x137258(%rip), %rax    # 0x29be70
movl %ecx, (%rax)
leaq 0x13723f(%rip), %rax    # 0x29be60
movl (%rax), %eax
movl %eax, -0x24(%rbp)
movl -0x24(%rbp), %eax
movq -0x10(%rbp), %rcx
cmpl 0x648(%rcx), %eax
jge 0x164f40
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
leaq 0x1372d5(%rip), %rax    # 0x29bf1e
cmpb $0x0, (%rax)
je 0x164c7c
leaq 0x112d53(%rip), %rax    # 0x2779a8
movl (%rax), %eax
leaq 0x112d1e(%rip), %rcx    # 0x27797c
cmpl (%rcx), %eax
jge 0x164c7c
movl -0x14(%rbp), %eax
leaq 0x112d1c(%rip), %rcx    # 0x277988
movl (%rcx), %ecx
addl $0x0, %ecx
cmpl %ecx, %eax
jle 0x164c7a
jmp 0x164f40
jmp 0x164c96
movl -0x14(%rbp), %eax
leaq 0x112d02(%rip), %rcx    # 0x277988
movl (%rcx), %ecx
addl $0x1, %ecx
cmpl %ecx, %eax
jle 0x164c94
jmp 0x164f40
jmp 0x164c96
leaq 0x1371cf(%rip), %rax    # 0x29be6c
cmpl $0x5, (%rax)
jle 0x164cfe
leaq 0x112cff(%rip), %rax    # 0x2779a8
movl (%rax), %edi
leaq 0x112d3e(%rip), %rax    # 0x2779f0
imull (%rax), %edi
leaq 0x112d34(%rip), %rax    # 0x2779f0
movl (%rax), %eax
shll %eax
addl %eax, %edi
movl -0x14(%rbp), %esi
leaq 0x112d28(%rip), %rax    # 0x2779f4
imull (%rax), %esi
leaq 0x112d1e(%rip), %rax    # 0x2779f4
movl (%rax), %eax
shll $0x0, %eax
addl %eax, %esi
leaq 0x137188(%rip), %rax    # 0x29be6c
movl (%rax), %edx
leaq 0x112d03(%rip), %rax    # 0x2779f0
imull (%rax), %edx
leaq 0x112cfd(%rip), %rax    # 0x2779f4
movl (%rax), %ecx
callq 0xf250
movl -0x48(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x48(%rbp)
leaq 0x112c92(%rip), %rcx    # 0x2779a0
cmpl (%rcx), %eax
jl 0x164d17
jmp 0x164f40
leaq 0x11dad2(%rip), %rax    # 0x2827f0
cmpl $0x9, (%rax)
jne 0x164d45
movq -0x10(%rbp), %rax
movslq -0x24(%rbp), %rcx
cvtsi2sdq 0x328(%rax,%rcx,8), %xmm1
xorps %xmm0, %xmm0
ucomisd %xmm1, %xmm0
jbe 0x164d43
jmp 0x164f40
jmp 0x164d67
movq -0x10(%rbp), %rax
movslq -0x24(%rbp), %rcx
cvtsi2sdq 0x328(%rax,%rcx,8), %xmm1
xorps %xmm0, %xmm0
ucomisd %xmm1, %xmm0
jb 0x164d65
jmp 0x164f40
jmp 0x164d67
movq -0x10(%rbp), %rax
movslq -0x24(%rbp), %rcx
movss 0x4(%rax,%rcx,4), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x80(%rbp)
leaq -0x110(%rbp), %rdi
leaq 0x258dd(%rip), %rsi     # 0x18a669
callq 0x9350
movsd -0x88(%rbp), %xmm0
callq 0x163b00
cmpl $0x0, %eax
je 0x164e78
movsd 0xa281(%rip), %xmm0     # 0x16f030
ucomisd -0x80(%rbp), %xmm0
jbe 0x164dd5
leaq -0x110(%rbp), %rdi
movsd -0x80(%rbp), %xmm0
leaq 0x338f9(%rip), %rsi     # 0x1986c2
movb $0x1, %al
callq 0x9060
jmp 0x164e76
movsd 0xa31b(%rip), %xmm0     # 0x16f0f8
ucomisd -0x80(%rbp), %xmm0
jbe 0x164e00
leaq -0x110(%rbp), %rdi
movsd -0x80(%rbp), %xmm0
leaq 0x3167d(%rip), %rsi     # 0x196474
movb $0x1, %al
callq 0x9060
jmp 0x164e74
movsd 0xa2e0(%rip), %xmm0     # 0x16f0e8
ucomisd -0x80(%rbp), %xmm0
jbe 0x164e2b
leaq -0x110(%rbp), %rdi
movsd -0x80(%rbp), %xmm0
leaq 0x25777(%rip), %rsi     # 0x18a599
movb $0x1, %al
callq 0x9060
jmp 0x164e72
movsd 0xa20d(%rip), %xmm0     # 0x16f040
ucomisd -0x80(%rbp), %xmm0
jbe 0x164e56
leaq -0x110(%rbp), %rdi
movsd -0x80(%rbp), %xmm0
leaq 0x25745(%rip), %rsi     # 0x18a592
movb $0x1, %al
callq 0x9060
jmp 0x164e70
leaq -0x110(%rbp), %rdi
movsd -0x80(%rbp), %xmm0
leaq 0x25722(%rip), %rsi     # 0x18a58b
movb $0x1, %al
callq 0x9060
jmp 0x164e72
jmp 0x164e74
jmp 0x164e76
jmp 0x164e93
leaq -0x110(%rbp), %rdi
cvttsd2si -0x80(%rbp), %rdx
leaq 0x3383c(%rip), %rsi     # 0x1986c8
movb $0x0, %al
callq 0x9060
leaq -0x110(%rbp), %rdx
movq -0x10(%rbp), %rax
movslq -0x24(%rbp), %rcx
movss 0x194(%rax,%rcx,4), %xmm0
cvtss2sd %xmm0, %xmm0
movq -0x10(%rbp), %rax
movslq -0x24(%rbp), %rcx
movq 0x328(%rax,%rcx,8), %rcx
leaq 0x23653a(%rip), %rdi    # 0x39b400
leaq 0x33800(%rip), %rsi     # 0x1986cd
movb $0x1, %al
callq 0x9060
movl -0x14(%rbp), %edi
leaq 0x112aca(%rip), %rax    # 0x2779a8
movl (%rax), %esi
leaq 0x236519(%rip), %rcx    # 0x39b400
movzbl -0x19(%rbp), %edx
callq 0x10ee0
leaq 0x236509(%rip), %rdi    # 0x39b400
callq 0x9120
movl %eax, %ecx
leaq 0x136f5f(%rip), %rax    # 0x29be64
movl %ecx, (%rax)
leaq 0x136f56(%rip), %rax    # 0x29be64
movl (%rax), %eax
leaq 0x136f55(%rip), %rcx    # 0x29be6c
cmpl (%rcx), %eax
jle 0x164f30
leaq 0x136f42(%rip), %rax    # 0x29be64
movl (%rax), %ecx
addl $0x1, %ecx
leaq 0x136f3e(%rip), %rax    # 0x29be6c
movl %ecx, (%rax)
jmp 0x164f32
movl -0x24(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x24(%rbp)
jmp 0x164c26
jmp 0x164f42
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
leaq 0x112a46(%rip), %rax    # 0x277998
movl (%rax), %eax
subl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x24(%rbp)
leaq 0x136fba(%rip), %rax    # 0x29bf1e
cmpb $0x0, (%rax)
je 0x164fb7
leaq 0x112a38(%rip), %rax    # 0x2779a8
movl (%rax), %eax
leaq 0x112a03(%rip), %rcx    # 0x27797c
cmpl (%rcx), %eax
jge 0x164fb7
leaq 0x112a14(%rip), %rax    # 0x277998
movl (%rax), %eax
leaq 0x1129fb(%rip), %rcx    # 0x277988
movl (%rcx), %ecx
addl $0x0, %ecx
cmpl %ecx, %eax
jl 0x164fb5
leaq 0x1129fb(%rip), %rax    # 0x277998
movl (%rax), %ecx
leaq 0x1129e2(%rip), %rax    # 0x277988
movl (%rax), %eax
addl $0x0, %eax
subl %eax, %ecx
movl -0x24(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x24(%rbp)
jmp 0x164ff1
leaq 0x1129da(%rip), %rax    # 0x277998
movl (%rax), %eax
leaq 0x1129c1(%rip), %rcx    # 0x277988
movl (%rcx), %ecx
addl $0x1, %ecx
cmpl %ecx, %eax
jl 0x164fef
leaq 0x1129c1(%rip), %rax    # 0x277998
movl (%rax), %ecx
leaq 0x1129a8(%rip), %rax    # 0x277988
movl (%rax), %eax
addl $0x1, %eax
subl %eax, %ecx
movl -0x24(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x24(%rbp)
jmp 0x164ff1
cmpl $0x0, -0x24(%rbp)
jle 0x165057
leaq 0x1129aa(%rip), %rax    # 0x2779a8
movl (%rax), %edi
leaq 0x1129e9(%rip), %rax    # 0x2779f0
imull (%rax), %edi
leaq 0x1129df(%rip), %rax    # 0x2779f0
movl (%rax), %eax
shll %eax
addl %eax, %edi
movl -0x14(%rbp), %esi
leaq 0x1129d3(%rip), %rax    # 0x2779f4
imull (%rax), %esi
leaq 0x1129c9(%rip), %rax    # 0x2779f4
movl (%rax), %eax
shll $0x0, %eax
addl %eax, %esi
leaq 0x136e33(%rip), %rax    # 0x29be6c
movl (%rax), %edx
leaq 0x1129ae(%rip), %rax    # 0x2779f0
imull (%rax), %edx
movl -0x24(%rbp), %ecx
leaq 0x1129a5(%rip), %rax    # 0x2779f4
imull (%rax), %ecx
callq 0xf250
leaq 0x1155ab(%rip), %rax    # 0x27a609
movb $0x0, (%rax)
movl $0x1, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x120, %rsp            # imm = 0x120
popq %rbp
retq
nopw %cs:(%rax,%rax)