// File: /workspace/github_cpp_makefile_star2_O3/jkingan[P]ladyheather/heathmsc.cpp
// Function: show_digital_clock(int, int)
int show_digital_clock(int row, int col)
{
int time_exit;
int width, height;
int www;
int ofs;
int min_scale;
int top_line;
int len;
int i;
int hh;
char s[32];
char *am_pm;
int old_vs;
int time_top;
int old_time_color;
int date_row, date_scale;
int hhh;
#define TIME_CHARS len

   // show the big digital clock if we can find a place for it

   old_vs = VCHAR_SCALE;
   time_exit = 0;     // assume there is room for the sat info and clock
   www = 0;
   ofs = 2;

   if(pri_hours >= 12) am_pm = "PM";
   else                am_pm = "AM";

   if((rcvr_type == NO_RCVR) && (zoom_screen != 'C')) { 
      if(text_mode) return 0;  // no room on screen to do this
      if(first_key) return 0;
      if(zoom_screen) return 0;
   }

// if(all_adevs && (SCREEN_WIDTH < MEDIUM_WIDTH)) return 0;
   if(all_adevs && (SCREEN_WIDTH < NARROW_SCREEN)) return 0;

   old_time_color = time_color;
   if(eclipsed) time_color = YELLOW;

   // format the time display string
   ofs = 2;
   if(show_elapsed_time && jd_elapsed) { // must be first item in this if statement
      sprintf(out, "%.3f secs", (jd_utc-jd_elapsed)*24.0*60.0*60.0+0.00001);
   }
   else if(show_julian_time) {
      sprintf(out, "%.6f", jd_display);  // 14.
      ofs = 1;
   }
   else if(show_mjd_time) {
      sprintf(out, "%.6f", jd_display-JD_MJD);  // 12.
      ofs = 1;
   }
   else if(show_unix_time) { // 12.
      sprintf(out, "%.3f", (jd_display-LINUX_EPOCH)*24.0*60.0*60.0);
      ofs = 1;
   }
   else if(show_gps_time) {  // 12.
      sprintf(out, "%.3f", (jd_display-GPS_EPOCH)*24.0*60.0*60.0);
      ofs = 1;
   }
   else if(show_msecs) {
      sprintf(out, "%02d:%02d:%02d.%03d", clock_12?(pri_hours%12):pri_hours, pri_minutes, pri_seconds, (int)(pri_frac*1000.0));
      ofs = 3;
   }
   else if(clock_12) {
      sprintf(out, "%02d:%02d:%02d %s", pri_hours%12, pri_minutes, pri_seconds, am_pm);
      ofs = 3;
   }
   else {
      sprintf(out, "%02d:%02d:%02d", pri_hours, pri_minutes, pri_seconds);
   }
   len = strlen(out)+1;

   if((zoom_screen == 'C') || (rcvr_type == NO_RCVR)) { 
      if(0 && show_euro_dates) {
         sprintf(out, "%02d.%02d.%02d", pri_day, pri_month, pri_year%100);
      }
      else {
         strcpy(out, fmt_date(1));
      }
      len = strlen(out);

      if(len < 14) len = 14;
      VCHAR_SCALE = ((SCREEN_WIDTH/8) / len);
      if(rcvr_type == NO_RCVR) {
         if(zoom_screen != 'C') {  // tweak scale factor for wide/short screens
            VCHAR_SCALE = (SCREEN_WIDTH / len);
            VCHAR_SCALE = (((VCHAR_SCALE*SCREEN_HEIGHT*1024)/768)) / (SCREEN_WIDTH*8);
            if(SCREEN_WIDTH < TINY_TINY_WIDTH) {
               VCHAR_SCALE = (VCHAR_SCALE*vc_font_scale/100);
            }
         }
      }

      if(jpl_clock) {
         i = ((SCREEN_HEIGHT) / (6*VCHAR_H));
         if(i < VCHAR_SCALE) VCHAR_SCALE = i;
         if(SCREEN_WIDTH > WIDE_WIDTH) VCHAR_SCALE = ((SCREEN_HEIGHT) / (11*VCHAR_H));

         time_row = VCHAR_SCALE/4;
         date_row = time_row;
         date_scale = VCHAR_SCALE;

         center_vstring(time_row, VCHAR_SCALE, time_color, out);

         time_row += VCHAR_SCALE+VCHAR_SCALE;
         sprintf(out, "%02d:%02d:%02d UTC", clock_12?(hours%12):hours, minutes, seconds);
         center_vstring(time_row, VCHAR_SCALE, time_color, out);

         time_row += VCHAR_SCALE+VCHAR_SCALE/2;
         hh = pri_hours+3;
         if(hh < 0) hh += 24;
         else if(hh > 23) hh -= 24;
         strcpy(s, tz_string);
         s[0] = 'E';
         sprintf(out, "%02d:%02d:%02d %s", clock_12?(hh%12):hh, pri_minutes, pri_seconds, s);
         center_vstring(time_row, VCHAR_SCALE, time_color, out);

         time_row += VCHAR_SCALE+VCHAR_SCALE/2;
         sprintf(out, "%02d:%02d:%02d %s", clock_12?(pri_hours%12):pri_hours, pri_minutes, pri_seconds, tz_string);
         center_vstring(time_row, VCHAR_SCALE, time_color, out);
      }
      else {
         time_row = ((SCREEN_HEIGHT/TEXT_HEIGHT)/2) - ((VCHAR_SCALE*16)/(2*TEXT_HEIGHT));
         time_row += (VCHAR_SCALE*16/2)/TEXT_HEIGHT;

         if((rcvr_type == NO_RCVR) && (zoom_screen != 'C')) {
            time_row = SCREEN_HEIGHT / TEXT_HEIGHT;
            time_row +=2;
            time_row -= (VCHAR_SCALE*16*3/2)/TEXT_HEIGHT;

            time_top = (time_row * TEXT_HEIGHT);  // top line of digital clock display
            time_top -= (VCHAR_SCALE*16*3/2);

            ACLOCK_SIZE = time_top - (TEXT_HEIGHT*1);
            if(ACLOCK_SIZE > (SCREEN_WIDTH/3)) ACLOCK_SIZE = (SCREEN_WIDTH/3);
            aclock_y = (ACLOCK_SIZE/2) + (TEXT_HEIGHT*1);
            aclock_x = SCREEN_WIDTH - (ACLOCK_SIZE/2) - (TEXT_WIDTH*2);
         }

         date_row = time_row;
         date_scale = VCHAR_SCALE;
         center_vstring(time_row, VCHAR_SCALE, time_color, out);

         time_row -= (VCHAR_SCALE*16*3/2)/TEXT_HEIGHT;
         if(show_elapsed_time && jd_elapsed) { // must be first item in this if statement
            sprintf(out, "%.3f secs", (jd_utc-jd_elapsed)*24.0*60.0*60.0+0.00001);
            len = strlen(out)+1;
            center_vstring(time_row, VCHAR_SCALE, time_color, out);
         }
         else if(show_julian_time) {
            sprintf(out, "%14.6f %s", jd_local, tz_info());
            len = strlen(out)+1;
            center_vstring(time_row, VCHAR_SCALE*14/len, time_color, out);
         }
         else if(show_mjd_time) {
            sprintf(out, "%12.6f %s", jd_local-JD_MJD, tz_info());
            len = strlen(out)+1;
            center_vstring(time_row, VCHAR_SCALE*14/len, time_color, out);
         }
         else if(show_unix_time) {
            sprintf(out, "%14.3f %s", (jd_local-LINUX_EPOCH)*24.0*60.0*60.0, tz_info());
            len = strlen(out)+1;
            center_vstring(time_row, VCHAR_SCALE*14/len, time_color, out);
         }
         else if(show_gps_time) {
            sprintf(out, "%14.3f %s", (jd_local-GPS_EPOCH)*24.0*60.0*60.0, tz_info());
            len = strlen(out)+1;
            center_vstring(time_row, VCHAR_SCALE*14/len, time_color, out);
         }
         else if(show_msecs) {
            if(clock_12) {
               sprintf(out, "%02d:%02d:%02d.%03d %s", pri_hours%12,pri_minutes,pri_seconds,(int)(pri_frac*1000.0), tz_info());
               len = strlen(out)+1;
               center_vstring(time_row, VCHAR_SCALE*14/len, time_color, out);
            }
            else {
               sprintf(out, "%02d:%02d:%02d.%03d %s", pri_hours,pri_minutes,pri_seconds,(int)(pri_frac*1000.0), tz_info());
               len = strlen(out)+1;
               center_vstring(time_row, VCHAR_SCALE*14/len, time_color, out);
            }
         }
         else if(clock_12){
            VCHAR_SCALE = (VCHAR_SCALE * 12) / 15;
            sprintf(out, "%02d:%02d:%02d %s %s", pri_hours%12,pri_minutes,pri_seconds, am_pm, tz_info());
            center_vstring(time_row, VCHAR_SCALE, time_color, out);
         }
         else {
            sprintf(out, "%02d:%02d:%02d %s", pri_hours,pri_minutes,pri_seconds, tz_info());
            center_vstring(time_row, VCHAR_SCALE, time_color, out);
         }
      }

      if(1 && ((zoom_screen == 'C') || (rcvr_type == NO_RCVR)) && enviro_mode()) {  // show environmental sensor data on the clock screen
         #define ENV_COL (VCharWidth*3)
         if(zoom_screen == 'C') {
            date_row += (date_scale*1);

            hhh = (SCREEN_HEIGHT - date_row*date_scale) / 8;
            VCHAR_SCALE = (hhh/16);

            date_row = (SCREEN_HEIGHT-VCharHeight*4);
            col = ENV_COL;
         }
         else {
            VCHAR_SCALE = 3; // (hhh/16);
            date_row = (VCharHeight*50)/19;
            col = (VCharWidth*2);
         }


         i = round_temp;
         round_temp = 2;
         if     (have_temperature0) sprintf(out, "Temp0:%7.2f%c%c",  scale_temp(tc0),DEGREES,DEG_SCALE);
         else if(have_temperature1) sprintf(out, "Temp1:%7.2f%c%c",  scale_temp(tc1),DEGREES,DEG_SCALE); 
         else if(have_temperature2) sprintf(out, "Temp2:%7.2f%c%c",  scale_temp(tc2),DEGREES,DEG_SCALE); 
         else if(have_temperature)  sprintf(out, "Temp:  %7.2f%c%c", scale_temp(temperature),DEGREES,DEG_SCALE); 
         else                       sprintf(out, "                ");

         graphics_coords = 1;

         round_temp = i;
         vchar_string(date_row, col, time_color, out);

         date_row += VCharHeight; //VCHAR_SCALE;
         sprintf(out, "Baro: %7.2f mb", pressure);
         vchar_string(date_row, col, time_color, out);

         date_row += VCharHeight; //VCHAR_SCALE;
         sprintf(out, "RH:   %7.2f %%", humidity);
         vchar_string(date_row, col, time_color, out);

         graphics_coords = 0;
      }

      digital_clock_shown = 1;
      show_title();

      time_color = old_time_color;
      return time_exit;
   }
   else if(zoom_screen) {
      time_color = old_time_color;
      return 1;
   }
   else if(all_adevs) { 
      if(small_font == 2) VCHAR_SCALE = 5;  // DOS 8x8 font
      else                VCHAR_SCALE = 6;
      if(rcvr_type == TICC_RCVR) VCHAR_SCALE -= 1;

      if(SCREEN_WIDTH <= 640) { 
         VCHAR_SCALE = 2;
      }
      else if(SCREEN_WIDTH < MEDIUM_WIDTH) {
         VCHAR_SCALE = 3;
         col -= 6;
      }

      if(WIDE_SCREEN) {  // center digital clock over right hand adev tables
         width = VCharWidth;
      }
      else {   // center digital clock in the upper right hand corner space
         width = ((SCREEN_WIDTH/TEXT_WIDTH)-col)*TEXT_WIDTH;
         if(clock_12) i = 3;
         else         i = 2;
         width -= ((TIME_CHARS+ofs) * VCharWidth);
         width /= 2;
      }
      www = width;
      time_col = col + (width/TEXT_WIDTH);
      time_row = row;
   }
   else {  // clock goes in or below sat info area
      if(temp_sats < 8) top_line = (row+1+8);
      else              top_line = (row+1+temp_sats);
      if(sat_cols > 1)  top_line = (row+1+sat_rows);

//    width = (INFO_COL - TIME_CHARS) * TEXT_WIDTH;
      width = (INFO_COL - 0*TIME_CHARS) * TEXT_WIDTH;
      www = width;
      height = (MOUSE_ROW-top_line-1) * TEXT_HEIGHT;

      VCHAR_SCALE = 1;

      height = (height / VCharHeight);
      width = (width / (VCharWidth*TIME_CHARS));
      if(use_vc_fonts && (vc_font_scale < 100)) width = (width*vc_font_scale) / 100;
      if(width < 0) width = 1;
      if(height < 0) height = 1;

      if(width > height) VCHAR_SCALE = height;
      else               VCHAR_SCALE = width;

      if(SCREEN_HEIGHT < TINY_TINY_HEIGHT) {
//       if(VCHAR_SCALE < 2) VCHAR_SCALE = 1;
//       else                VCHAR_SCALE = 2;
         VCHAR_SCALE = 2;
      }

#define MIN_SCALE 2 
      min_scale = MIN_SCALE;

      if(VCHAR_SCALE < MIN_SCALE) {  // no room for time under the sat info
         time_exit = 1;      // so dont draw the sat info table
         top_line = row;
         VCHAR_SCALE = 6;
      }

      time_col = (INFO_COL - 0 - ((TIME_CHARS*VCharWidth)/TEXT_WIDTH)) / 2;
      time_row = (MOUSE_ROW - top_line - (VCharHeight/TEXT_HEIGHT)) / 2;
      time_row += top_line+1;
      if((MOUSE_ROW-time_row) > 1) ++time_row;
   }
   if(time_col < 0) time_col = 0;
   clock_show_row = time_row;
//sprintf(plot_title, "r:%d c:%d  w:%d h:%d www:%d  top:%d  vscale:%d  mscale:%d", time_row,time_col, width,height, www, top_line, VCHAR_SCALE, min_scale);

   if((MOUSE_ROW-time_row) <= 1) {  // very small area for clock display
      min_scale = 1;                // ... use unscaled text format
      VCHAR_SCALE = 1;
   }

   // show the time
   i = VCHAR_SCALE;
   if(all_adevs) {
      VCHAR_SCALE = i;
   }
   else {
      VCHAR_SCALE = (VCHAR_SCALE) * 8 / len;
      if(VCHAR_SCALE < min_scale) VCHAR_SCALE = min_scale;
   }

   vchar_string(time_row, time_col, time_color, out);

   VCHAR_SCALE = i;

   if(old_vs != VCHAR_SCALE) {  // screen config changed
      need_redraw = 1100;
   }

   digital_clock_shown = 1;
   time_color = old_time_color;
   return time_exit;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x48, %rsp
movl %esi, %r14d
leaq 0x21cf33(%rip), %rax    # 0x30d508
movl (%rax), %edx
cmpl $0xc, %edx
leaq 0x24879(%rip), %rax     # 0x114e5a
leaq 0x448aa(%rip), %r12     # 0x134e92
cmovgeq %rax, %r12
leaq 0x132f49(%rip), %rax    # 0x22353c
leaq 0x1282d6(%rip), %rcx    # 0x2188d0
cmpq $0x400, (%rcx)          # imm = 0x400
movl (%rax), %r8d
sete %cl
leaq 0x21c19a(%rip), %rbx    # 0x30c7a8
movb (%rbx), %al
cmpb $0x43, %al
setne %sil
andb %cl, %sil
cmpb $0x1, %sil
jne 0xf063f
leaq 0x1281b2(%rip), %rcx    # 0x2187d8
leaq 0x14e92b(%rip), %rsi    # 0x23ef58
movl (%rsi), %esi
orl (%rcx), %esi
sete %cl
testb %al, %al
sete %al
andb %cl, %al
cmpb $0x1, %al
jne 0xf067a
leaq 0x14c6f8(%rip), %rax    # 0x23cd3e
cmpb $0x0, (%rax)
je 0xf0682
leaq 0x1281ae(%rip), %rax    # 0x218800
leaq 0x132eeb(%rip), %rcx    # 0x223544
imull $0x31a, (%rcx), %ecx    # imm = 0x31A
movslq %ecx, %rcx
imulq $0x51eb851f, %rcx, %rcx # imm = 0x51EB851F
movq %rcx, %rsi
shrq $0x3f, %rsi
sarq $0x25, %rcx
addl %esi, %ecx
cmpl %ecx, (%rax)
jge 0xf0682
xorl %r15d, %r15d
jmp 0xf148c
leaq 0x132f4b(%rip), %r15    # 0x2235d4
movl (%r15), %eax
movl %eax, -0x3c(%rbp)
leaq 0x21d17a(%rip), %rax    # 0x30d810
cmpl $0x0, (%rax)
je 0xf06a2
movl $0xe, (%r15)
leaq 0x12ad47(%rip), %rax    # 0x21b3f0
cmpl $0x0, (%rax)
leaq 0x12ad45(%rip), %rax    # 0x21b3f8
movl %r8d, -0x38(%rbp)
movq %rdi, -0x30(%rbp)
je 0xf0719
movsd (%rax), %xmm1
xorpd %xmm0, %xmm0
ucomisd %xmm0, %xmm1
jne 0xf06cd
jnp 0xf0719
leaq 0x21ce5c(%rip), %rax    # 0x30d530
movsd (%rax), %xmm0
subsd %xmm1, %xmm0
mulsd 0x1895c(%rip), %xmm0    # 0x109040
movsd 0x1891c(%rip), %xmm1    # 0x109008
mulsd %xmm1, %xmm0
mulsd %xmm1, %xmm0
addsd 0x1b18c(%rip), %xmm0    # 0x10b888
leaq 0x24bb1d(%rip), %rdi    # 0x33c220
leaq 0x4478b(%rip), %rsi     # 0x134e95
movb $0x1, %al
callq 0x9060
movl $0x2, %r13d
jmp 0xf0770
leaq 0x12ace0(%rip), %rax    # 0x21b400
cmpb $0x0, (%rax)
je 0xf0732
leaq 0x21ce24(%rip), %rax    # 0x30d550
movsd (%rax), %xmm0
jmp 0xf0755
leaq 0x12acc8(%rip), %rax    # 0x21b401
cmpb $0x0, (%rax)
je 0xf0d1d
leaq 0x21ce07(%rip), %rax    # 0x30d550
movsd (%rax), %xmm0
addsd 0x1b12b(%rip), %xmm0    # 0x10b880
leaq 0x24bac4(%rip), %rdi    # 0x33c220
leaq 0x24600(%rip), %rsi     # 0x114d63
movb $0x1, %al
callq 0x9060
movl $0x1, %r13d
leaq 0x24baa9(%rip), %rdi    # 0x33c220
callq 0x9120
movq %rax, %rcx
movb (%rbx), %dl
cmpb $0x43, %dl
sete %sil
leaq 0x128141(%rip), %r8     # 0x2188d0
movq (%r8), %rax
cmpq $0x400, %rax            # imm = 0x400
sete %dil
orb %sil, %dil
cmpb $0x1, %dil
jne 0xf0ac0
movl $0x1, %edi
movq %r8, %r14
callq 0xef8e6
leaq 0x24ba63(%rip), %r13    # 0x33c220
leaq 0x28b07c(%rip), %rsi    # 0x37b840
movq %r13, %rdi
callq 0x9340
movq %r13, %rdi
callq 0x9120
cmpl $0xf, %eax
movl $0xe, %esi
cmovgel %eax, %esi
leaq 0x12801a(%rip), %rax    # 0x218800
movl (%rax), %ecx
leal 0x7(%rcx), %eax
testl %ecx, %ecx
cmovnsl %ecx, %eax
sarl $0x3, %eax
cltd
idivl %esi
movl %eax, %r11d
cmpq $0x400, (%r14)          # imm = 0x400
sete %al
cmpb $0x43, (%rbx)
leaq 0x132d2f(%rip), %rbx    # 0x22353c
movl %r11d, (%rbx)
setne %r8b
andb %al, %r8b
cmpb $0x1, %r8b
jne 0xf0883
movl %ecx, %eax
cltd
idivl %esi
leaq 0x127fdb(%rip), %rdx    # 0x218804
imull (%rdx), %eax
shll $0xa, %eax
cltq
imulq $0x2aaaaaab, %rax, %rax # imm = 0x2AAAAAAB
movq %rax, %rdx
shrq $0x3f, %rdx
sarq $0x27, %rax
addl %edx, %eax
leal (,%rcx,8), %esi
cltd
idivl %esi
movl %eax, %r11d
movl %eax, (%rbx)
cmpl $0x1c1, %ecx            # imm = 0x1C1
jg 0xf0883
leaq 0x132ce1(%rip), %rax    # 0x223544
movl (%rax), %eax
imull %r11d, %eax
cltq
imulq $0x51eb851f, %rax, %r11 # imm = 0x51EB851F
movq %r11, %rax
shrq $0x3f, %rax
sarq $0x25, %r11
addl %eax, %r11d
movl %r11d, (%rbx)
leaq 0x127f62(%rip), %rax    # 0x2187ec
cmpl $0x0, (%rax)
leaq 0x127f70(%rip), %rax    # 0x218804
movl (%rax), %eax
je 0xf0b3b
cltq
imulq $0x2aaaaaab, %rax, %rdx # imm = 0x2AAAAAAB
movq %rdx, %rsi
shrq $0x3f, %rsi
sarq $0x23, %rdx
addl %esi, %edx
cmpl %r11d, %edx
jge 0xf08bc
movl %edx, (%rbx)
movl %edx, %r11d
cmpl $0x4fb, %ecx            # imm = 0x4FB
jl 0xf08dc
imulq $0x2e8ba2e9, %rax, %r11 # imm = 0x2E8BA2E9
movq %r11, %rax
shrq $0x3f, %rax
sarq $0x24, %r11
addl %eax, %r11d
movl %r11d, (%rbx)
leal 0x3(%r11), %edi
testl %r11d, %r11d
cmovnsl %r11d, %edi
sarl $0x2, %edi
leaq 0x24aa8b(%rip), %r14    # 0x33b37c
movl %edi, (%r14)
movl (%r15), %edx
leaq 0x24b922(%rip), %r12    # 0x33c220
movq %rdi, -0x30(%rbp)
movq %r11, -0x38(%rbp)
movl %r11d, %esi
movq %r12, %rcx
callq 0xec26
movl (%rbx), %eax
addl %eax, %eax
addl %eax, (%r14)
leaq 0x12aaf8(%rip), %rsi    # 0x21b417
leaq 0x21cbaa(%rip), %rax    # 0x30d4d0
movslq (%rax), %rax
imulq $0x2aaaaaab, %rax, %rcx # imm = 0x2AAAAAAB
movq %rcx, %rdx
shrq $0x3f, %rdx
shrq $0x21, %rcx
addl %edx, %ecx
shll $0x2, %ecx
leal (%rcx,%rcx,2), %ecx
movl %eax, %edx
subl %ecx, %edx
cmpb $0x0, (%rsi)
cmovel %eax, %edx
leaq 0x21cb78(%rip), %rax    # 0x30d4cc
movl (%rax), %ecx
leaq 0x21cb6b(%rip), %rax    # 0x30d4c8
movl (%rax), %r8d
leaq 0x44538(%rip), %rsi     # 0x134e9f
movq %r12, %rdi
xorl %eax, %eax
callq 0x9060
movl (%r14), %edi
movl (%rbx), %esi
movl (%r15), %edx
movq %r12, %rcx
callq 0xec26
movl (%rbx), %eax
movl %eax, %ecx
shrl $0x1f, %ecx
addl %eax, %ecx
sarl %ecx
addl %eax, %ecx
addl %ecx, (%r14)
leaq 0x21cb70(%rip), %rax    # 0x30d508
movl (%rax), %eax
cmpl $0x15, %eax
movl $0xffffffeb, %ecx       # imm = 0xFFFFFFEB
movl $0x3, %edx
cmovgel %ecx, %edx
cmpl $-0x3, %eax
movl $0x1b, %ebx
cmovgel %edx, %ebx
addl %eax, %ebx
leaq 0x21cf72(%rip), %rsi    # 0x30d930
leaq -0x60(%rbp), %r13
movq %r13, %rdi
callq 0x9340
movb $0x45, (%r13)
movslq %ebx, %rax
imulq $0x2aaaaaab, %rax, %rcx # imm = 0x2AAAAAAB
movq %rcx, %rdx
shrq $0x3f, %rdx
shrq $0x21, %rcx
addl %edx, %ecx
shll $0x2, %ecx
leal (%rcx,%rcx,2), %ecx
movl %eax, %edx
subl %ecx, %edx
leaq 0x12aa20(%rip), %rcx    # 0x21b417
cmpb $0x0, (%rcx)
cmovel %eax, %edx
leaq 0x21cb00(%rip), %rax    # 0x30d504
movl (%rax), %ecx
leaq 0x21caf3(%rip), %rax    # 0x30d500
movl (%rax), %r8d
leaq 0x1a0b3(%rip), %rbx     # 0x10aaca
movq %r12, %rdi
movq %rbx, %rsi
movq %r13, %r9
leaq 0x132b15(%rip), %r13    # 0x22353c
xorl %eax, %eax
callq 0x9060
movl (%r14), %edi
movl (%r13), %esi
movl (%r15), %edx
movq %r12, %rcx
callq 0xec26
movl (%r13), %eax
movl %eax, %ecx
shrl $0x1f, %ecx
addl %eax, %ecx
sarl %ecx
addl %eax, %ecx
addl %ecx, (%r14)
leaq 0x21caaf(%rip), %rax    # 0x30d508
movslq (%rax), %rax
imulq $0x2aaaaaab, %rax, %rcx # imm = 0x2AAAAAAB
movq %rcx, %rdx
shrq $0x3f, %rdx
shrq $0x21, %rcx
addl %edx, %ecx
shll $0x2, %ecx
leal (%rcx,%rcx,2), %ecx
movl %eax, %edx
subl %ecx, %edx
leaq 0x12a996(%rip), %rcx    # 0x21b417
cmpb $0x0, (%rcx)
cmovel %eax, %edx
leaq 0x21ca76(%rip), %rax    # 0x30d504
movl (%rax), %ecx
leaq 0x21ca69(%rip), %rax    # 0x30d500
movl (%rax), %r8d
movq %r12, %rdi
movq %rbx, %rsi
leaq 0x21ce89(%rip), %r9     # 0x30d930
xorl %eax, %eax
callq 0x9060
movl (%r14), %edi
movl (%r13), %esi
movl (%r15), %edx
movq %r12, %rcx
jmp 0xf11f4
movq %r15, %rbx
movl $0x1, %r15d
testb %dl, %dl
jne 0xf1487
incl %ecx
leaq 0x14c264(%rip), %rdx    # 0x23cd3e
movb (%rdx), %r9b
testb %r9b, %r9b
je 0xf0d45
leaq 0x127d6c(%rip), %rdx    # 0x218859
xorl %esi, %esi
cmpb $0x2, (%rdx)
sete %sil
xorl %edx, %edx
cmpq $0x10000, %rax          # imm = 0x10000
sete %dl
addl %esi, %edx
movl $0x6, %r12d
subl %edx, %r12d
leaq 0x132a29(%rip), %rdx    # 0x22353c
movl %r12d, (%rdx)
leaq 0x127ce3(%rip), %rax    # 0x218800
movl (%rax), %eax
cmpl $0x280, %eax            # imm = 0x280
jg 0xf0ead
movl $0x2, (%rdx)
movl $0x2, %r12d
jmp 0xf0f5c
leaq 0x127cd2(%rip), %rbx    # 0x218814
movl (%rbx), %r9d
cltd
idivl %r9d
movl %eax, %esi
movl %eax, %r10d
shrl $0x1f, %r10d
addl %eax, %r10d
sarl %r10d
movl %r11d, %eax
shll $0x4, %eax
leal (%r9,%r9), %edi
cltd
idivl %edi
subl %eax, %r10d
leal (,%r11,8), %edi
movl %edi, %eax
cltd
idivl %r9d
movl %eax, %r14d
addl %r10d, %r14d
leaq 0x24a7f9(%rip), %r13    # 0x33b37c
movl %r14d, (%r13)
testb %r8b, %r8b
je 0xf0bff
leal (%rdi,%rdi,2), %edi
movl %edi, %eax
cltd
idivl %r9d
subl %eax, %esi
addl $0x2, %esi
movl %esi, (%r13)
movl %esi, %eax
imull %r9d, %eax
addl %r9d, %edi
subl %edi, %eax
movslq %ecx, %rdx
imulq $0x55555556, %rdx, %rdx # imm = 0x55555556
movq %rdx, %rdi
shrq $0x3f, %rdi
shrq $0x20, %rdx
addl %edi, %edx
cmpl %edx, %eax
cmovll %eax, %edx
leaq 0x24a7a4(%rip), %rax    # 0x33b370
movl %edx, (%rax)
movl %edx, %eax
shrl $0x1f, %eax
addl %edx, %eax
sarl %eax
addl %eax, %r9d
leaq 0x24a797(%rip), %rdx    # 0x33b378
movl %r9d, (%rdx)
subl %eax, %ecx
leaq 0x127c23(%rip), %rax    # 0x218810
movl (%rax), %eax
addl %eax, %eax
subl %eax, %ecx
leaq 0x24a77a(%rip), %rax    # 0x33b374
movl %ecx, (%rax)
movl %esi, %r14d
movl (%r15), %edx
leaq 0x24b617(%rip), %rcx    # 0x33c220
movl %r14d, %edi
movq %r11, -0x38(%rbp)
movl %r11d, %esi
callq 0xec26
leaq 0x13291d(%rip), %rax    # 0x22353c
movl (%rax), %ecx
leal (,%rcx,8), %eax
leal (%rax,%rax,2), %eax
cltd
idivl (%rbx)
subl %eax, (%r13)
leaq 0x12a7b7(%rip), %rax    # 0x21b3f0
cmpl $0x0, (%rax)
movq %r14, -0x30(%rbp)
je 0xf0cb7
leaq 0x12a7af(%rip), %rax    # 0x21b3f8
movsd (%rax), %xmm1
xorpd %xmm0, %xmm0
ucomisd %xmm0, %xmm1
jne 0xf0c59
jnp 0xf0cb7
leaq 0x21c8d0(%rip), %rax    # 0x30d530
movsd (%rax), %xmm0
subsd %xmm1, %xmm0
mulsd 0x183d0(%rip), %xmm0    # 0x109040
movsd 0x18390(%rip), %xmm1    # 0x109008
mulsd %xmm1, %xmm0
mulsd %xmm1, %xmm0
addsd 0x1ac00(%rip), %xmm0    # 0x10b888
leaq 0x24b591(%rip), %rbx    # 0x33c220
leaq 0x441ff(%rip), %rsi     # 0x134e95
movq %rbx, %rdi
movb $0x1, %al
callq 0x9060
movl (%r13), %edi
leaq 0x132891(%rip), %r13    # 0x22353c
movl (%r13), %esi
movl (%r15), %edx
jmp 0xf11f1
leaq 0x12a742(%rip), %rax    # 0x21b400
cmpb $0x0, (%rax)
je 0xf0ed4
leaq 0x21c87a(%rip), %rax    # 0x30d548
movsd (%rax), %xmm0
leaq 0x21cbbb(%rip), %rax    # 0x30d894
leaq 0x21cc50(%rip), %rdx    # 0x30d930
leaq 0x21c7bd(%rip), %rcx    # 0x30d4a4
testb $0x1, (%rcx)
leaq 0x42c00(%rip), %rcx     # 0x1338f1
leaq 0x441b6(%rip), %rsi     # 0x134eae
cmoveq %rcx, %rsi
cmpb $0x0, (%rdx)
cmoveq %rsi, %rdx
cmpb $0x0, (%rax)
cmoveq %rsi, %rdx
leaq 0x24b50f(%rip), %rbx    # 0x33c220
leaq 0x4419a(%rip), %rsi     # 0x134eb2
jmp 0xf11bb
leaq 0x12a6de(%rip), %rax    # 0x21b402
cmpb $0x0, (%rax)
je 0xf1042
leaq 0x21c81c(%rip), %rax    # 0x30d550
movsd (%rax), %xmm0
addsd 0x18308(%rip), %xmm0    # 0x109048
jmp 0xf1061
movl %r9d, %r13d
leaq 0x14e1d1(%rip), %rax    # 0x23ef20
movl (%rax), %eax
movq -0x30(%rbp), %rdi
leal 0x9(%rdi), %edx
leal 0x1(%rdi), %r8d
cmpl $0x8, %eax
leal 0x1(%rax,%rdi), %eax
cmovll %edx, %eax
leaq 0x21ba17(%rip), %rdx    # 0x30c784
leaq 0x21ba14(%rip), %rsi    # 0x30c788
addl (%rsi), %r8d
cmpl $0x2, (%rdx)
cmovll %eax, %r8d
leaq 0x127a17(%rip), %rax    # 0x21879c
movl (%rax), %r10d
leaq 0x127a81(%rip), %rax    # 0x218810
movl (%rax), %esi
movl %esi, %eax
imull %r10d, %eax
leaq 0x127a0a(%rip), %rdx    # 0x2187a8
movl (%rdx), %r9d
movl %r8d, %r11d
notl %r11d
addl %r9d, %r11d
movl %esi, %r14d
imull %ecx, %r14d
cltd
idivl %r14d
leaq 0x132784(%rip), %rdx    # 0x223540
cmpl $0x0, (%rdx)
setne %r14b
leaq 0x13277a(%rip), %rdx    # 0x223544
movl (%rdx), %edx
cmpl $0x64, %edx
setl %r15b
andb %r14b, %r15b
cmpb $0x1, %r15b
jne 0xf0df6
imull %eax, %edx
movslq %edx, %rax
imulq $0x51eb851f, %rax, %rax # imm = 0x51EB851F
movq %rax, %rdx
shrq $0x3f, %rdx
sarq $0x25, %rax
addl %edx, %eax
testl %eax, %eax
movl $0x1, %edx
cmovsl %edx, %eax
testl %r11d, %r11d
cmovsl %edx, %r11d
cmpl %r11d, %eax
cmovll %eax, %r11d
leaq 0x1279ef(%rip), %rax    # 0x218804
cmpl $0x190, (%rax)          # imm = 0x190
movl $0x2, %eax
cmovgel %r11d, %eax
xorl %r15d, %r15d
cmpl $0x2, %eax
setl %r15b
movl $0x6, %r12d
cmovgel %eax, %r12d
leaq 0x1326fd(%rip), %r14    # 0x22353c
movl %r12d, (%r14)
cmovll %edi, %r8d
movl %ecx, %eax
imull %r12d, %eax
shll $0x3, %eax
cltd
idivl %esi
subl %eax, %r10d
movl %r10d, %esi
shrl $0x1f, %esi
addl %r10d, %esi
sarl %esi
leaq 0x24a519(%rip), %rax    # 0x33b380
movl %esi, (%rax)
movl %r12d, %eax
shll $0x4, %eax
leaq 0x12799e(%rip), %r10    # 0x218814
cltd
idivl (%r10)
addl %r8d, %eax
movl %r9d, %edx
subl %eax, %edx
movl %edx, %eax
shrl $0x1f, %eax
addl %edx, %eax
sarl %eax
leal (%r8,%rax), %edx
addl %r8d, %eax
incl %eax
subl %eax, %r9d
xorl %eax, %eax
cmpl $0x2, %r9d
setge %al
leal (%rax,%rdx), %edi
incl %edi
movl %r13d, %r9d
jmp 0xf0fa6
cmpl $0x3e1, %eax            # imm = 0x3E1
ja 0xf0f42
leaq 0x13267d(%rip), %rdx    # 0x22353c
movl $0x3, (%rdx)
addl $-0x6, %r14d
movl $0x3, %r12d
jmp 0xf0f5c
leaq 0x12a526(%rip), %rax    # 0x21b401
cmpb $0x0, (%rax)
je 0xf108c
leaq 0x21c65d(%rip), %rax    # 0x30d548
movsd (%rax), %xmm0
addsd 0x1a989(%rip), %xmm0    # 0x10b880
leaq 0x21c996(%rip), %rax    # 0x30d894
leaq 0x21ca2b(%rip), %rdx    # 0x30d930
leaq 0x21c598(%rip), %rcx    # 0x30d4a4
testb $0x1, (%rcx)
leaq 0x429db(%rip), %rcx     # 0x1338f1
leaq 0x43f91(%rip), %rsi     # 0x134eae
cmoveq %rcx, %rsi
cmpb $0x0, (%rdx)
cmoveq %rsi, %rdx
cmpb $0x0, (%rax)
cmoveq %rsi, %rdx
leaq 0x24b2ea(%rip), %rbx    # 0x33c220
leaq 0x43f7f(%rip), %rsi     # 0x134ebc
jmp 0xf11bb
cmpl $0x690, %eax            # imm = 0x690
jb 0xf0f5c
leal (,%r12,8), %eax
leaq 0x1278b8(%rip), %rdx    # 0x218810
movl (%rdx), %esi
jmp 0xf0f87
leaq 0x1278ad(%rip), %rdx    # 0x218810
movl (%rdx), %esi
cltd
idivl %esi
movl %eax, %edx
subl %r14d, %edx
imull %esi, %edx
addl %ecx, %r13d
imull %r12d, %r13d
shll $0x3, %r13d
subl %r13d, %edx
movl %edx, %eax
shrl $0x1f, %eax
addl %edx, %eax
sarl %eax
cltd
idivl %esi
movl %eax, %esi
addl %r14d, %esi
leaq 0x24a3ea(%rip), %rax    # 0x33b380
movl %esi, (%rax)
xorl %r15d, %r15d
leaq 0x13259a(%rip), %r14    # 0x22353c
movq -0x30(%rbp), %rdi
leaq 0x24a3cf(%rip), %rax    # 0x33b37c
movl %edi, (%rax)
testl %esi, %esi
jns 0xf0fc2
leaq 0x24a3c6(%rip), %rax    # 0x33b380
movl $0x0, (%rax)
xorl %esi, %esi
leaq 0x12a41f(%rip), %rax    # 0x21b3e8
movl %edi, (%rax)
leaq 0x1277d6(%rip), %rax    # 0x2187a8
movl (%rax), %eax
subl %edi, %eax
movl $0x2, %r8d
cmpl $0x1, %eax
jg 0xf0ff4
movl $0x1, (%r14)
movl $0x1, %r12d
movl $0x1, %r8d
testb %r9b, %r9b
jne 0xf100e
leal (,%r12,8), %eax
cltd
idivl %ecx
cmpl %r8d, %eax
cmovgl %eax, %r8d
movl %r8d, (%r14)
movzbl (%rbx), %edx
leaq 0x24b208(%rip), %rcx    # 0x33c220
callq 0xeb91
movl %r12d, (%r14)
cmpl %r12d, -0x38(%rbp)
je 0xf1033
leaq 0x127817(%rip), %rax    # 0x218844
movl $0x44c, (%rax)          # imm = 0x44C
leaq 0x21d081(%rip), %rax    # 0x30e0bb
movb $0x1, (%rax)
jmp 0xf1487
leaq 0x12a3ba(%rip), %rax    # 0x21b403
cmpb $0x0, (%rax)
je 0xf10b4
leaq 0x21c4fb(%rip), %rax    # 0x30d550
movsd (%rax), %xmm0
addsd 0x1a82f(%rip), %xmm0    # 0x10b890
mulsd 0x17fd7(%rip), %xmm0    # 0x109040
movsd 0x17f97(%rip), %xmm1    # 0x109008
mulsd %xmm1, %xmm0
mulsd %xmm1, %xmm0
leaq 0x24b1a0(%rip), %rdi    # 0x33c220
leaq 0x3e7f0(%rip), %rsi     # 0x12f877
jmp 0xf0763
leaq 0x12a36f(%rip), %rax    # 0x21b402
cmpb $0x0, (%rax)
je 0xf113a
leaq 0x21c4a5(%rip), %rax    # 0x30d548
movsd (%rax), %xmm0
addsd 0x17f99(%rip), %xmm0    # 0x109048
jmp 0xf115d
leaq 0x12a331(%rip), %rax    # 0x21b3ec
cmpb $0x0, (%rax)
leaq 0x12a352(%rip), %rax    # 0x21b417
movb (%rax), %cl
je 0xf149e
movslq %edx, %rax
imulq $0x2aaaaaab, %rax, %rax # imm = 0x2AAAAAAB
movq %rax, %rsi
shrq $0x3f, %rsi
shrq $0x21, %rax
addl %esi, %eax
shll $0x2, %eax
leal (%rax,%rax,2), %esi
movl %edx, %eax
subl %esi, %eax
testb %cl, %cl
cmovel %edx, %eax
leaq 0x21c40a(%rip), %rcx    # 0x30d504
movl (%rcx), %ecx
leaq 0x21c3fd(%rip), %rdx    # 0x30d500
movl (%rdx), %r8d
leaq 0x21c40b(%rip), %rdx    # 0x30d518
movsd (%rdx), %xmm0
mulsd 0x17f1f(%rip), %xmm0    # 0x109038
cvttsd2si %xmm0, %r9d
leaq 0x24b0fb(%rip), %rdi    # 0x33c220
leaq 0x35484(%rip), %rsi     # 0x1265b0
movl %eax, %edx
xorl %eax, %eax
callq 0x9060
jmp 0xf14f0
leaq 0x12a2c2(%rip), %rax    # 0x21b403
cmpb $0x0, (%rax)
je 0xf1515
leaq 0x21c3f7(%rip), %rax    # 0x30d548
movsd (%rax), %xmm0
addsd 0x1a733(%rip), %xmm0    # 0x10b890
mulsd 0x17edb(%rip), %xmm0    # 0x109040
movsd 0x17e9b(%rip), %xmm1    # 0x109008
mulsd %xmm1, %xmm0
mulsd %xmm1, %xmm0
leaq 0x21c718(%rip), %rax    # 0x30d894
leaq 0x21c7ad(%rip), %rdx    # 0x30d930
leaq 0x21c31a(%rip), %rcx    # 0x30d4a4
testb $0x1, (%rcx)
leaq 0x4275d(%rip), %rcx     # 0x1338f1
leaq 0x43d13(%rip), %rsi     # 0x134eae
cmoveq %rcx, %rsi
cmpb $0x0, (%rdx)
cmoveq %rsi, %rdx
cmpb $0x0, (%rax)
cmoveq %rsi, %rdx
leaq 0x24b06c(%rip), %rbx    # 0x33c220
leaq 0x43d0b(%rip), %rsi     # 0x134ec6
movq %rbx, %rdi
movb $0x1, %al
callq 0x9060
movq %rbx, %rdi
callq 0x9120
movq %rax, %rcx
incl %ecx
movl (%r13), %edi
leaq 0x13235f(%rip), %r13    # 0x22353c
movl (%r13), %eax
leal (%rax,%rax), %edx
shll $0x4, %eax
subl %edx, %eax
cltd
idivl %ecx
movl (%r15), %edx
movl %eax, %esi
movq %rbx, %rcx
callq 0xec26
leaq 0x21b5a8(%rip), %rbx    # 0x30c7a8
cmpb $0x43, (%rbx)
leaq 0x1276c6(%rip), %rax    # 0x2188d0
je 0xf1219
cmpq $0x400, (%rax)          # imm = 0x400
jne 0xf1472
callq 0x5f6cb
testl %eax, %eax
je 0xf1472
cmpb $0x43, (%rbx)
jne 0xf128a
movq -0x38(%rbp), %rax
movq -0x30(%rbp), %rdx
addl %eax, %edx
leaq 0x1275c8(%rip), %rcx    # 0x218804
movl (%rcx), %r12d
imull %eax, %edx
movl %r12d, %ecx
subl %edx, %ecx
negl %edx
leal (%r12,%rdx), %eax
addl $0x7f, %eax
testl %ecx, %ecx
cmovnsl %ecx, %eax
sarl $0x7, %eax
movl %eax, %edx
shll $0x4, %edx
leal (,%rax,8), %esi
cmpl $0x100, %ecx            # imm = 0x100
leaq 0x1275a3(%rip), %rcx    # 0x218814
cmovll (%rcx), %edx
leaq 0x127595(%rip), %rcx    # 0x218810
cmovll (%rcx), %esi
shll $0x2, %edx
subl %edx, %r12d
leal (%rsi,%rsi,2), %r14d
jmp 0xf129b
movl $0x7e, %r12d
movl $0x30, %r14d
movl $0x3, %eax
movl %eax, (%r13)
leaq 0x21b9e2(%rip), %rbx    # 0x30cc88
movl (%rbx), %r15d
movl $0x2, (%rbx)
leaq 0x21bf9a(%rip), %rax    # 0x30d250
cmpl $0x0, (%rax)
je 0xf12e8
leaq 0x21b8e6(%rip), %rax    # 0x30cba8
movsd (%rax), %xmm0
callq 0x131c9
leaq 0x21bcd3(%rip), %rax    # 0x30cfa5
movsbl (%rax), %ecx
leaq 0x24af44(%rip), %rdi    # 0x33c220
leaq 0x43c19(%rip), %rsi     # 0x134efc
jmp 0xf138c
leaq 0x21bf65(%rip), %rax    # 0x30d254
cmpl $0x0, (%rax)
je 0xf131e
leaq 0x21b8b5(%rip), %rax    # 0x30cbb0
movsd (%rax), %xmm0
callq 0x131c9
leaq 0x21bc9a(%rip), %rax    # 0x30cfa5
movsbl (%rax), %ecx
leaq 0x24af0b(%rip), %rdi    # 0x33c220
leaq 0x43bf0(%rip), %rsi     # 0x134f0c
jmp 0xf138c
leaq 0x21bf33(%rip), %rax    # 0x30d258
cmpl $0x0, (%rax)
je 0xf1354
leaq 0x21b887(%rip), %rax    # 0x30cbb8
movsd (%rax), %xmm0
callq 0x131c9
leaq 0x21bc64(%rip), %rax    # 0x30cfa5
movsbl (%rax), %ecx
leaq 0x24aed5(%rip), %rdi    # 0x33c220
leaq 0x43bca(%rip), %rsi     # 0x134f1c
jmp 0xf138c
leaq 0x21bef1(%rip), %rax    # 0x30d24c
cmpl $0x0, (%rax)
je 0xf14fb
leaq 0x21b6ad(%rip), %rax    # 0x30ca18
movsd (%rax), %xmm0
callq 0x131c9
leaq 0x21bc2a(%rip), %rax    # 0x30cfa5
movsbl (%rax), %ecx
leaq 0x24ae9b(%rip), %rdi    # 0x33c220
leaq 0x43ba0(%rip), %rsi     # 0x134f2c
movl $0x1, %edx
movb $0x1, %al
callq 0x9060
leaq 0x1274c9(%rip), %rax    # 0x218868
movb $0x1, (%rax)
movl %r15d, (%rbx)
leaq 0x132228(%rip), %rax    # 0x2235d4
movzbl (%rax), %edx
leaq 0x24ae6a(%rip), %rbx    # 0x33c220
movl %r12d, %edi
movl %r14d, %esi
movq %rbx, %rcx
callq 0xeb91
movl (%r13), %r15d
leaq 0x127445(%rip), %r13    # 0x218814
cmpl $0x2, %r15d
jge 0xf13db
movl (%r13), %r15d
jmp 0xf13df
shll $0x4, %r15d
addl %r12d, %r15d
leaq 0x21b7b7(%rip), %rax    # 0x30cba0
movsd (%rax), %xmm0
leaq 0x43b49(%rip), %rsi     # 0x134f3d
movq %rbx, %rdi
movb $0x1, %al
callq 0x9060
leaq 0x1321cf(%rip), %rax    # 0x2235d4
movzbl (%rax), %edx
movl %r15d, %edi
movl %r14d, %esi
movq %rbx, %rcx
callq 0xeb91
leaq 0x13211f(%rip), %rax    # 0x22353c
movl (%rax), %r12d
cmpl $0x2, %r12d
jge 0xf142c
movl (%r13), %r12d
jmp 0xf1430
shll $0x4, %r12d
addl %r15d, %r12d
leaq 0x21b75e(%rip), %rax    # 0x30cb98
movsd (%rax), %xmm0
leaq 0x43b07(%rip), %rsi     # 0x134f4c
movq %rbx, %rdi
movb $0x1, %al
callq 0x9060
leaq 0x13217e(%rip), %r15    # 0x2235d4
movzbl (%r15), %edx
movl %r12d, %edi
movl %r14d, %esi
movq %rbx, %rcx
callq 0xeb91
leaq 0x1273f9(%rip), %rax    # 0x218868
movb $0x0, (%rax)
movq %r15, %rbx
leaq 0x21cc3f(%rip), %rax    # 0x30e0bb
movb $0x1, (%rax)
callq 0x17eb5
xorl %r15d, %r15d
movl -0x3c(%rbp), %eax
movl %eax, (%rbx)
movl %r15d, %eax
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
testb %cl, %cl
je 0xf15db
movslq %edx, %rax
imulq $0x2aaaaaab, %rax, %rax # imm = 0x2AAAAAAB
movq %rax, %rcx
shrq $0x3f, %rcx
shrq $0x21, %rax
addl %ecx, %eax
shll $0x2, %eax
leal (%rax,%rax,2), %eax
subl %eax, %edx
leaq 0x21c038(%rip), %rax    # 0x30d504
movl (%rax), %ecx
leaq 0x21c02b(%rip), %rax    # 0x30d500
movl (%rax), %r8d
leaq 0x24ad41(%rip), %rdi    # 0x33c220
leaq 0x195e4(%rip), %rsi     # 0x10aaca
movq %r12, %r9
xorl %eax, %eax
callq 0x9060
movl $0x3, %r13d
jmp 0xf0770
movups 0x42653(%rip), %xmm0    # 0x133b55
leaq 0x24ad17(%rip), %rax    # 0x33c220
movaps %xmm0, (%rax)
movb $0x0, 0x10(%rax)
jmp 0xf1398
leaq 0x129ed0(%rip), %rax    # 0x21b3ec
cmpb $0x0, (%rax)
leaq 0x129ef1(%rip), %rax    # 0x21b417
movb (%rax), %al
je 0xf1608
leaq 0x21bfd3(%rip), %rcx    # 0x30d508
movl (%rcx), %edx
testb %al, %al
je 0xf16d8
movslq %edx, %rdx
imulq $0x2aaaaaab, %rdx, %rax # imm = 0x2AAAAAAB
movq %rax, %rcx
shrq $0x3f, %rcx
shrq $0x21, %rax
addl %ecx, %eax
shll $0x2, %eax
leal (%rax,%rax,2), %eax
subl %eax, %edx
leaq 0x21bf9f(%rip), %rax    # 0x30d504
movl (%rax), %ecx
leaq 0x21bf92(%rip), %rax    # 0x30d500
leaq 0x21bfa3(%rip), %rsi    # 0x30d518
movsd (%rsi), %xmm0
mulsd 0x17ab7(%rip), %xmm0    # 0x109038
movl (%rax), %r8d
cvttsd2si %xmm0, %r9d
leaq 0x21c304(%rip), %rax    # 0x30d894
leaq 0x21c399(%rip), %rsi    # 0x30d930
leaq 0x21bf06(%rip), %rdi    # 0x30d4a4
testb $0x1, (%rdi)
leaq 0x42349(%rip), %rdi     # 0x1338f1
leaq 0x438ff(%rip), %r10     # 0x134eae
cmoveq %rdi, %r10
cmpb $0x0, (%rsi)
cmoveq %r10, %rsi
cmpb $0x0, (%rax)
cmoveq %r10, %rsi
movq %rsi, (%rsp)
leaq 0x24ac54(%rip), %rbx    # 0x33c220
leaq 0x438fd(%rip), %rsi     # 0x134ed0
movq %rbx, %rdi
jmp 0xf1750
leaq 0x21bf22(%rip), %rax    # 0x30d504
movl (%rax), %ecx
leaq 0x21bf15(%rip), %rax    # 0x30d500
movl (%rax), %r8d
leaq 0x24ac2b(%rip), %rdi    # 0x33c220
leaq 0x3e8dd(%rip), %rsi     # 0x12fed9
xorl %eax, %eax
callq 0x9060
jmp 0xf0711
testb %al, %al
je 0xf175c
shll $0x2, %ecx
leal (%rcx,%rcx,2), %eax
cltq
imulq $-0x77777777, %rax, %rcx # imm = 0x88888889
shrq $0x20, %rcx
addl %ecx, %eax
movl %eax, %ecx
shrl $0x1f, %ecx
sarl $0x3, %eax
addl %ecx, %eax
leaq 0x131f06(%rip), %r14    # 0x22353c
movl %eax, (%r14)
leaq 0x21bec8(%rip), %rax    # 0x30d508
movslq (%rax), %rdx
imulq $0x2aaaaaab, %rdx, %rax # imm = 0x2AAAAAAB
movq %rax, %rcx
shrq $0x3f, %rcx
shrq $0x21, %rax
addl %ecx, %eax
shll $0x2, %eax
leal (%rax,%rax,2), %eax
subl %eax, %edx
leaq 0x21be9e(%rip), %rax    # 0x30d504
movl (%rax), %ecx
leaq 0x21be91(%rip), %rax    # 0x30d500
movl (%rax), %r8d
leaq 0x21c21b(%rip), %rax    # 0x30d894
leaq 0x21c2b0(%rip), %rsi    # 0x30d930
leaq 0x21be1d(%rip), %rdi    # 0x30d4a4
testb $0x1, (%rdi)
leaq 0x42260(%rip), %rdi     # 0x1338f1
leaq 0x43816(%rip), %r9      # 0x134eae
cmoveq %rdi, %r9
cmpb $0x0, (%rsi)
cmoveq %r9, %rsi
cmpb $0x0, (%rax)
cmoveq %r9, %rsi
movq %rsi, (%rsp)
leaq 0x24ab6b(%rip), %rbx    # 0x33c220
leaq 0x4382b(%rip), %rsi     # 0x134ee7
movq %rbx, %rdi
movq %r12, %r9
xorl %eax, %eax
callq 0x9060
movl (%r13), %edi
movq %r14, %r13
movl (%r14), %esi
jmp 0xf0caf
leaq 0x21be25(%rip), %rax    # 0x30d504
movl (%rax), %ecx
leaq 0x21be18(%rip), %rax    # 0x30d500
leaq 0x21be29(%rip), %rsi    # 0x30d518
movsd (%rsi), %xmm0
mulsd 0x1793d(%rip), %xmm0    # 0x109038
movl (%rax), %r8d
cvttsd2si %xmm0, %r9d
leaq 0x21c18a(%rip), %rax    # 0x30d894
leaq 0x21c21f(%rip), %rsi    # 0x30d930
leaq 0x21bd8c(%rip), %rdi    # 0x30d4a4
testb $0x1, (%rdi)
leaq 0x421cf(%rip), %rdi     # 0x1338f1
leaq 0x43785(%rip), %r10     # 0x134eae
cmoveq %rdi, %r10
cmpb $0x0, (%rsi)
cmoveq %r10, %rsi
cmpb $0x0, (%rax)
cmoveq %r10, %rsi
movq %rsi, (%rsp)
leaq 0x24aada(%rip), %rbx    # 0x33c220
leaq 0x43783(%rip), %rsi     # 0x134ed0
movq %rbx, %rdi
xorl %eax, %eax
callq 0x9060
jmp 0xf11c5
leaq 0x21bda5(%rip), %rax    # 0x30d508
movl (%rax), %edx
leaq 0x21bd98(%rip), %rax    # 0x30d504
movl (%rax), %ecx
leaq 0x21bd8b(%rip), %rax    # 0x30d500
movl (%rax), %r8d
leaq 0x21c115(%rip), %rax    # 0x30d894
leaq 0x21c1aa(%rip), %r9     # 0x30d930
leaq 0x21bd17(%rip), %rsi    # 0x30d4a4
testb $0x1, (%rsi)
leaq 0x4215a(%rip), %rsi     # 0x1338f1
leaq 0x43710(%rip), %rdi     # 0x134eae
cmoveq %rsi, %rdi
cmpb $0x0, (%r9)
cmoveq %rdi, %r9
cmpb $0x0, (%rax)
cmoveq %rdi, %r9
leaq 0x24aa68(%rip), %rbx    # 0x33c220
leaq 0x1930b(%rip), %rsi     # 0x10aaca
movq %rbx, %rdi
xorl %eax, %eax
callq 0x9060
jmp 0xf0ca0