// File: jkingan[P]ladyheather/heathgps.cpp
// Function: show_time_info()
void show_time_info()
{
int color;
u08 alarm_state;
long sec;
int row;
int zoomed;
unsigned week;
int flag;

   zoomed = zoom_screen;
   if(1 && (!SMALL_SCREEN) && ((zoom_screen == 'S') || (zoom_screen == 'L') || (zoom_screen == 'M'))) zoomed = 0;
   if(zoom_screen == 'I') zoomed = 0;

   if((text_mode && first_key) || zoomed || luxor) { // screen in use for help/edit info
      time_set_char = ' ';
      return;
   }

   if(alarm_time || alarm_date || egg_timer) alarm_state = ALARM_CHAR;
   else if(dump_time || dump_date || dump_timer || log_time || log_date || log_timer) {
      if(single_dump || single_log) alarm_state = '!';         //!!!!! need separate flags for screen and log dumps
      else                          alarm_state = DUMP_CHAR;
   }
   else if(cuckoo) {
      if(singing_clock) alarm_state = SONG_CHAR;
      else if(ships_clock) alarm_state = '#'; // SONG_CHAR;
      else alarm_state = CHIME_CHAR;
   }
   else alarm_state = ' ';

   if(time_set_char != ' ') {
      sprintf(out, "Time synced %c  ", alarm_state);
      vidstr(TIME_ROW+0, TIME_COL, GREEN, out);
   }
   else if(time_flags & TFLAGS_INVALID) {
      sprintf(out, "Time invalid %c ", alarm_state);
      vidstr(TIME_ROW+0, TIME_COL, RED, out);
      time_color = RED;
   }
   else if(time_flags & TFLAGS_RTC)     {
      sprintf(out, "RTC time %c     ", alarm_state);
      vidstr(TIME_ROW+0, TIME_COL, YELLOW, out);
      time_color = RED;
   }
   else if((time_flags & TFLAGS_NO_UTC_OFS) || !have_utc_ofs) {
      sprintf(out, "NO UTC offset %c", alarm_state);
      if(time_flags & TFLAGS_UTC) vidstr(TIME_ROW+0, TIME_COL, RED, out);
      else                        vidstr(TIME_ROW+0, TIME_COL, YELLOW, out);
      time_color = YELLOW;
   }
   else if((time_flags & TFLAGS_GNSS_MASK) && (rcvr_type == ESIP_RCVR)) {
      if((time_flags & TFLAGS_GNSS_MASK) == TFLAGS_GLONASS)      sprintf(out, "UTC(SU) TIME %c ", alarm_state);
      else if((time_flags & TFLAGS_GNSS_MASK) == TFLAGS_BEIDOU)  sprintf(out, "BEIDOU TIME %c  ", alarm_state);
      else if((time_flags & TFLAGS_GNSS_MASK) == TFLAGS_GALILEO) sprintf(out, "GALILEO TIME %c ", alarm_state);
      else                                                       sprintf(out, "UNKNOWN TIME %c ", alarm_state);
      time_color = YELLOW;
      vidstr(TIME_ROW+0, TIME_COL, time_color, out);
   }
   else if((time_flags & TFLAGS_GNSS_MASK) && (saw_icm || ACU_GG || ACU_360 || (res_t == RES_T_360))) {
      if((time_flags & TFLAGS_GNSS_MASK) == 0x20)      sprintf(out, "GLONASS TIME %c ", alarm_state);
      else if((time_flags & TFLAGS_GNSS_MASK) == 0x30) sprintf(out, "GLONASS TIME %c ", alarm_state); 
      else if((time_flags & TFLAGS_GNSS_MASK) == TFLAGS_GALILEO) sprintf(out, "GALILEO TIME %c ", alarm_state);
      else                                                       sprintf(out, "UNK GNSS TIME%c ", alarm_state);
      time_color = YELLOW;
      vidstr(TIME_ROW+0, TIME_COL, time_color, out);
   }
   else if((time_flags & TFLAGS_USER_TIME) && (STARLOC == 0)) {
      sprintf(out, "USER set time %c", alarm_state);
      vidstr(TIME_ROW+0, TIME_COL, YELLOW, out);
      time_color = YELLOW;
   }
   else if(time_flags & TFLAGS_UTC) {
      if(0 && (rcvr_type == ESIP_RCVR) && (esip_time_source == 3)) {
         sprintf(out, "UTC(SU) OK %c   ", alarm_state);
         if(have_timing_mode) vidstr(TIME_ROW+0, TIME_COL, YELLOW, out);
         else                 vidstr(TIME_ROW+0, TIME_COL, GREY,   out);
      }
      else {
         sprintf(out, "UTC time OK %c  ", alarm_state);
         if(have_timing_mode) vidstr(TIME_ROW+0, TIME_COL, GREEN,  out);
         else                 vidstr(TIME_ROW+0, TIME_COL, GREY,   out);
      }

      if(dst_ofs)            time_color = DST_TIME_COLOR;
      else if(time_zone_set) time_color = DST_TIME_COLOR;  // !!! std_time_color is rather dim for the big clock
      else                   time_color = WHITE;
   }
   else {
      sprintf(out, "GPS time OK %c  ", alarm_state);
      if(have_timing_mode) vidstr(TIME_ROW+0, TIME_COL, YELLOW, out);
      else                 vidstr(TIME_ROW+0, TIME_COL, GREY,   out);
      if(dst_ofs)            time_color = DST_TIME_COLOR;
      else if(time_zone_set) time_color = DST_TIME_COLOR;  // !!! std_time_color is rather dim for the big clock
      else                   time_color = WHITE;
   }

   if(time_color != last_time_color) {  // redraw big clock if time status has changed
      last_time_color = time_color;
   }

   if(leap_time) {  // log possible leap second
      write_log_leapsecond();
   }

   if((last_utc_offset != (-9999)) && (utc_offset != last_utc_offset)) {
      write_log_utc(utc_offset);
   }
   last_utc_offset = utc_offset;


   color = WHITE;
   if(sound_alarm && (ticker & 0x01)) {  // flash screen clocks RED
      color = RED;
   }

   if(seconds_time || fraction_time) {
      sec  = (long) pri_hours * 60L*60L;
      sec += (long) pri_minutes * 60L;
      sec += (long) pri_seconds;
      if(fraction_time) {
         sec *= 1000L;
         sec /= 864L;
         sprintf(out, "%s: .%05ld", tz_info(), sec);
      }
      else {
         sprintf(out, "%s:  %05ld", tz_info(), sec);
      }
      if(dst_ofs)            vidstr(TIME_ROW+2,TIME_COL, DST_TIME_COLOR, out);
      else if(time_zone_set) vidstr(TIME_ROW+2,TIME_COL, STD_TIME_COLOR, out);
      else                   vidstr(TIME_ROW+2,TIME_COL, WHITE, out);

      strcpy(out, fmt_date(0));
      vidstr(TIME_ROW+1,TIME_COL, color, out);
   }
   else {
      sprintf(out, "%02d:%02d:%02d %s", pri_hours,pri_minutes,pri_seconds, tz_info());
      if(dst_ofs)            vidstr(TIME_ROW+1,TIME_COL, DST_TIME_COLOR, out);
      else if(time_zone_set) vidstr(TIME_ROW+1,TIME_COL, STD_TIME_COLOR, out);
      else                   vidstr(TIME_ROW+1,TIME_COL, WHITE, out);

      strcpy(out, fmt_date(0));
      if(rolled && (color == WHITE)) {
         vidstr(TIME_ROW+2,TIME_COL, YELLOW, out);
      }
      else {
         vidstr(TIME_ROW+2,TIME_COL, color, out);
      }
   }
   

   row = TIME_ROW+3;
// if(have_week == 999) color = YELLOW;  // using faked GPS week and tow numbers
   if(have_week) {
      week = (unsigned) gps_week;
      flag = 0;
      if(0 && rolls && (week < 1024)) {  // adjust displayed week for rollovers
         week += 1024 * (unsigned) rolls;
         flag = 1;
      }
      sprintf(out, "Week: %5u  ", week);

      if((color == WHITE) && faked_tow) flag = 1;
      if     (flag)      vidstr(row,TIME_COL, YELLOW, out);
      else if(rolled)    vidstr(row,TIME_COL, color, out);
      else if(rollover)  vidstr(row,TIME_COL, color, out);
      else               vidstr(row,TIME_COL, color, out);
      ++row;
   }

   if(have_tow) {
      sprintf(out, "TOW:%7lu  ", (unsigned long) tow);
      if((color == WHITE) && faked_tow) vidstr(row,TIME_COL, YELLOW, out);
      else                              vidstr(row,TIME_COL, color, out);
      ++row;
   }

   if(have_utc_ofs) {
      sprintf(out, "UTC ofs:%3d  ", utc_offset);
      if(color == RED) ;
      else if(user_set_utc_ofs) color = YELLOW;   // using user value
      else if(have_utc_ofs < 0) color = RED;      // using estimated value
      vidstr(row,TIME_COL, color, out);           // using receiver value
      ++row;
   }

   time_set_char = ' ';
   return;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
leaq 0x2ecac9(%rip), %rax    # 0x36b988
movzbl (%rax), %eax
movl %eax, -0x18(%rbp)
leaq 0x1f8b14(%rip), %rax    # 0x2779e0
movl (%rax), %eax
movl %eax, -0x24(%rbp)
leaq 0x20384c(%rip), %rax    # 0x282724
imull $0x31a, (%rax), %eax    # imm = 0x31A
movl $0x64, %ecx
cltd
idivl %ecx
movl %eax, %ecx
movl -0x24(%rbp), %eax
cmpl %ecx, %eax
jl 0x7ef32
leaq 0x1f8aee(%rip), %rax    # 0x2779e4
cmpl $0x258, (%rax)          # imm = 0x258
jl 0x7ef32
leaq 0x2eca83(%rip), %rax    # 0x36b988
movzbl (%rax), %eax
cmpl $0x53, %eax
je 0x7ef2b
leaq 0x2eca74(%rip), %rax    # 0x36b988
movzbl (%rax), %eax
cmpl $0x4c, %eax
je 0x7ef2b
leaq 0x2eca65(%rip), %rax    # 0x36b988
movzbl (%rax), %eax
cmpl $0x4d, %eax
jne 0x7ef32
movl $0x0, -0x18(%rbp)
leaq 0x2eca4f(%rip), %rax    # 0x36b988
movzbl (%rax), %eax
cmpl $0x49, %eax
jne 0x7ef48
movl $0x0, -0x18(%rbp)
leaq 0x1f8a69(%rip), %rax    # 0x2779b8
cmpl $0x0, (%rax)
je 0x7ef60
leaq 0x21f1dd(%rip), %rax    # 0x29e138
cmpl $0x0, (%rax)
jne 0x7ef72
cmpl $0x0, -0x18(%rbp)
jne 0x7ef72
leaq 0x21f1b1(%rip), %rax    # 0x29e11e
cmpb $0x0, (%rax)
je 0x7ef81
leaq 0x2ee117(%rip), %rax    # 0x36d090
movb $0x20, (%rax)
jmp 0x7faf8
leaq 0x2ee174(%rip), %rax    # 0x36d0fc
cmpl $0x0, (%rax)
jne 0x7efa6
leaq 0x2ee178(%rip), %rax    # 0x36d10c
cmpl $0x0, (%rax)
jne 0x7efa6
leaq 0x2ee148(%rip), %rax    # 0x36d0e8
cmpq $0x0, (%rax)
je 0x7efaf
movb $0xf, -0x5(%rbp)
jmp 0x7f05d
leaq 0x2ee17a(%rip), %rax    # 0x36d130
cmpl $0x0, (%rax)
jne 0x7eff9
leaq 0x2ee17e(%rip), %rax    # 0x36d140
cmpl $0x0, (%rax)
jne 0x7eff9
leaq 0x2ee192(%rip), %rax    # 0x36d160
cmpq $0x0, (%rax)
jne 0x7eff9
leaq 0x2ee1a9(%rip), %rax    # 0x36d184
cmpl $0x0, (%rax)
jne 0x7eff9
leaq 0x2ee1ad(%rip), %rax    # 0x36d194
cmpl $0x0, (%rax)
jne 0x7eff9
leaq 0x2ee1c5(%rip), %rax    # 0x36d1b8
cmpq $0x0, (%rax)
je 0x7f01d
leaq 0x2ee179(%rip), %rax    # 0x36d179
cmpb $0x0, (%rax)
jne 0x7f011
leaq 0x2ee1c5(%rip), %rax    # 0x36d1d1
cmpb $0x0, (%rax)
je 0x7f017
movb $0x21, -0x5(%rbp)
jmp 0x7f01b
movb $0x13, -0x5(%rbp)
jmp 0x7f05b
leaq 0x2ee098(%rip), %rax    # 0x36d0bc
cmpb $0x0, (%rax)
je 0x7f055
leaq 0x2ee08d(%rip), %rax    # 0x36d0bd
cmpb $0x0, (%rax)
je 0x7f03b
movb $0xe, -0x5(%rbp)
jmp 0x7f053
leaq 0x2ee07f(%rip), %rax    # 0x36d0c1
cmpb $0x0, (%rax)
je 0x7f04d
movb $0x23, -0x5(%rbp)
jmp 0x7f051
movb $0xd, -0x5(%rbp)
jmp 0x7f053
jmp 0x7f059
movb $0x20, -0x5(%rbp)
jmp 0x7f05b
jmp 0x7f05d
leaq 0x2ee02c(%rip), %rax    # 0x36d090
movzbl (%rax), %eax
cmpl $0x20, %eax
je 0x7f09f
movzbl -0x5(%rbp), %edx
leaq 0x31c389(%rip), %rdi    # 0x39b400
leaq 0x10c859(%rip), %rsi    # 0x18b8d7
movb $0x0, %al
callq 0x9060
xorl %esi, %esi
movl $0xa, %edx
leaq 0x31c36d(%rip), %rcx    # 0x39b400
movl %esi, %edi
callq 0x10ee0
jmp 0x7f5f0
leaq 0x2ed5de(%rip), %rax    # 0x36c684
movl (%rax), %eax
andl $0x4, %eax
cmpl $0x0, %eax
je 0x7f0f0
movzbl -0x5(%rbp), %edx
leaq 0x31c345(%rip), %rdi    # 0x39b400
leaq 0x10c826(%rip), %rsi    # 0x18b8e8
movb $0x0, %al
callq 0x9060
xorl %esi, %esi
movl $0xc, %edx
leaq 0x31c329(%rip), %rcx    # 0x39b400
movl %esi, %edi
callq 0x10ee0
leaq 0x2036cf(%rip), %rax    # 0x2827b4
movl $0xc, (%rax)
jmp 0x7f5ee
leaq 0x2ed58d(%rip), %rax    # 0x36c684
movl (%rax), %eax
andl $0x100, %eax            # imm = 0x100
cmpl $0x0, %eax
je 0x7f143
movzbl -0x5(%rbp), %edx
leaq 0x31c2f2(%rip), %rdi    # 0x39b400
leaq 0x10c7e4(%rip), %rsi    # 0x18b8f9
movb $0x0, %al
callq 0x9060
xorl %esi, %esi
movl $0xe, %edx
leaq 0x31c2d6(%rip), %rcx    # 0x39b400
movl %esi, %edi
callq 0x10ee0
leaq 0x20367c(%rip), %rax    # 0x2827b4
movl $0xc, (%rax)
jmp 0x7f5ec
leaq 0x2ed53a(%rip), %rax    # 0x36c684
movl (%rax), %eax
andl $0x8, %eax
cmpl $0x0, %eax
jne 0x7f160
leaq 0x2ed3a1(%rip), %rax    # 0x36c4fc
cmpl $0x0, (%rax)
jne 0x7f1c8
movzbl -0x5(%rbp), %edx
leaq 0x31c295(%rip), %rdi    # 0x39b400
leaq 0x10c798(%rip), %rsi    # 0x18b90a
movb $0x0, %al
callq 0x9060
leaq 0x2ed504(%rip), %rax    # 0x36c684
movl (%rax), %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0x7f1a1
xorl %esi, %esi
movl $0xc, %edx
leaq 0x31c268(%rip), %rcx    # 0x39b400
movl %esi, %edi
callq 0x10ee0
jmp 0x7f1b6
xorl %esi, %esi
movl $0xe, %edx
leaq 0x31c251(%rip), %rcx    # 0x39b400
movl %esi, %edi
callq 0x10ee0
leaq 0x2035f7(%rip), %rax    # 0x2827b4
movl $0xe, (%rax)
jmp 0x7f5ea
leaq 0x2ed4b5(%rip), %rax    # 0x36c684
movl (%rax), %eax
andl $0x30, %eax
cmpl $0x0, %eax
je 0x7f2c1
movl $0x80000000, %ecx       # imm = 0x80000000
leaq 0x1f88c7(%rip), %rax    # 0x277ab0
cmpq %rcx, (%rax)
jne 0x7f2c1
leaq 0x2ed48b(%rip), %rax    # 0x36c684
movl (%rax), %eax
andl $0x30, %eax
cmpl $0x10, %eax
jne 0x7f21e
movzbl -0x5(%rbp), %edx
leaq 0x31c1f2(%rip), %rdi    # 0x39b400
leaq 0x10c706(%rip), %rsi    # 0x18b91b
movb $0x0, %al
callq 0x9060
jmp 0x7f293
leaq 0x2ed45f(%rip), %rax    # 0x36c684
movl (%rax), %eax
andl $0x30, %eax
cmpl $0x20, %eax
jne 0x7f24a
movzbl -0x5(%rbp), %edx
leaq 0x31c1c6(%rip), %rdi    # 0x39b400
leaq 0x10c6eb(%rip), %rsi    # 0x18b92c
movb $0x0, %al
callq 0x9060
jmp 0x7f291
leaq 0x2ed433(%rip), %rax    # 0x36c684
movl (%rax), %eax
andl $0x30, %eax
cmpl $0x30, %eax
jne 0x7f276
movzbl -0x5(%rbp), %edx
leaq 0x31c19a(%rip), %rdi    # 0x39b400
leaq 0x10c6d0(%rip), %rsi    # 0x18b93d
movb $0x0, %al
callq 0x9060
jmp 0x7f28f
movzbl -0x5(%rbp), %edx
leaq 0x31c17f(%rip), %rdi    # 0x39b400
leaq 0x10c6c6(%rip), %rsi    # 0x18b94e
movb $0x0, %al
callq 0x9060
jmp 0x7f291
jmp 0x7f293
leaq 0x20351a(%rip), %rax    # 0x2827b4
movl $0xe, (%rax)
leaq 0x20350d(%rip), %rax    # 0x2827b4
movl (%rax), %eax
xorl %esi, %esi
leaq 0x31c14e(%rip), %rcx    # 0x39b400
movl %esi, %edi
movzbl %al, %edx
callq 0x10ee0
jmp 0x7f5e8
leaq 0x2ed3bc(%rip), %rax    # 0x36c684
movl (%rax), %eax
andl $0x30, %eax
cmpl $0x0, %eax
je 0x7f41a
leaq 0x21ee30(%rip), %rax    # 0x29e10d
cmpb $0x0, (%rax)
jne 0x7f34b
leaq 0x1f87c7(%rip), %rax    # 0x277ab0
cmpq $0x1, (%rax)
jne 0x7f307
leaq 0x1faebe(%rip), %rax    # 0x27a1b4
cmpl $0x41, (%rax)
jne 0x7f307
leaq 0x1f87d6(%rip), %rax    # 0x277ad8
cmpl $0x47, (%rax)
je 0x7f34b
leaq 0x1f87a2(%rip), %rax    # 0x277ab0
cmpq $0x1, (%rax)
jne 0x7f338
leaq 0x1fae99(%rip), %rax    # 0x27a1b4
cmpl $0x41, (%rax)
jne 0x7f338
leaq 0x1f87b1(%rip), %rax    # 0x277ad8
cmpl $0x33, (%rax)
je 0x7f34b
leaq 0x1f87a5(%rip), %rax    # 0x277ad8
cmpl $0x47, (%rax)
je 0x7f34b
leaq 0x1f87a5(%rip), %rax    # 0x277ae4
movzbl (%rax), %eax
cmpl $0x4, %eax
jne 0x7f41a
leaq 0x2ed332(%rip), %rax    # 0x36c684
movl (%rax), %eax
andl $0x30, %eax
cmpl $0x20, %eax
jne 0x7f377
movzbl -0x5(%rbp), %edx
leaq 0x31c099(%rip), %rdi    # 0x39b400
leaq 0x10c5f1(%rip), %rsi    # 0x18b95f
movb $0x0, %al
callq 0x9060
jmp 0x7f3ec
leaq 0x2ed306(%rip), %rax    # 0x36c684
movl (%rax), %eax
andl $0x30, %eax
cmpl $0x30, %eax
jne 0x7f3a3
movzbl -0x5(%rbp), %edx
leaq 0x31c06d(%rip), %rdi    # 0x39b400
leaq 0x10c5c5(%rip), %rsi    # 0x18b95f
movb $0x0, %al
callq 0x9060
jmp 0x7f3ea
leaq 0x2ed2da(%rip), %rax    # 0x36c684
movl (%rax), %eax
andl $0x30, %eax
cmpl $0x30, %eax
jne 0x7f3cf
movzbl -0x5(%rbp), %edx
leaq 0x31c041(%rip), %rdi    # 0x39b400
leaq 0x10c577(%rip), %rsi    # 0x18b93d
movb $0x0, %al
callq 0x9060
jmp 0x7f3e8
movzbl -0x5(%rbp), %edx
leaq 0x31c026(%rip), %rdi    # 0x39b400
leaq 0x10c58f(%rip), %rsi    # 0x18b970
movb $0x0, %al
callq 0x9060
jmp 0x7f3ea
jmp 0x7f3ec
leaq 0x2033c1(%rip), %rax    # 0x2827b4
movl $0xe, (%rax)
leaq 0x2033b4(%rip), %rax    # 0x2827b4
movl (%rax), %eax
xorl %esi, %esi
leaq 0x31bff5(%rip), %rcx    # 0x39b400
movl %esi, %edi
movzbl %al, %edx
callq 0x10ee0
jmp 0x7f5e6
leaq 0x2ed263(%rip), %rax    # 0x36c684
movl (%rax), %eax
andl $0x10, %eax
cmpl $0x0, %eax
je 0x7f49a
xorl %eax, %eax
leaq 0x1f867c(%rip), %rcx    # 0x277ab0
cmpq $0x1, (%rcx)
movb %al, -0x25(%rbp)
jne 0x7f44d
leaq 0x1fad70(%rip), %rax    # 0x27a1b4
cmpl $0x53, (%rax)
sete %al
movb %al, -0x25(%rbp)
movb -0x25(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x7f49a
movzbl -0x5(%rbp), %edx
leaq 0x31bf9b(%rip), %rdi    # 0x39b400
leaq 0x10c515(%rip), %rsi    # 0x18b981
movb $0x0, %al
callq 0x9060
xorl %esi, %esi
movl $0xe, %edx
leaq 0x31bf7f(%rip), %rcx    # 0x39b400
movl %esi, %edi
callq 0x10ee0
leaq 0x203325(%rip), %rax    # 0x2827b4
movl $0xe, (%rax)
jmp 0x7f5e4
leaq 0x2ed1e3(%rip), %rax    # 0x36c684
movl (%rax), %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0x7f54a
movzbl -0x5(%rbp), %edx
leaq 0x31bf46(%rip), %rdi    # 0x39b400
leaq 0x10c4d1(%rip), %rsi    # 0x18b992
movb $0x0, %al
callq 0x9060
leaq 0x2ed0dd(%rip), %rax    # 0x36c5ac
cmpl $0x0, (%rax)
je 0x7f4eb
xorl %esi, %esi
movl $0xa, %edx
leaq 0x31bf1e(%rip), %rcx    # 0x39b400
movl %esi, %edi
callq 0x10ee0
jmp 0x7f500
xorl %esi, %esi
movl $0x8, %edx
leaq 0x31bf07(%rip), %rcx    # 0x39b400
movl %esi, %edi
callq 0x10ee0
leaq 0x2ed579(%rip), %rax    # 0x36ca80
cmpl $0x0, (%rax)
je 0x7f51b
leaq 0x2032a1(%rip), %rax    # 0x2827b4
movl $0xb, (%rax)
jmp 0x7f545
leaq 0x2ed552(%rip), %rax    # 0x36ca74
cmpb $0x0, (%rax)
je 0x7f536
leaq 0x203286(%rip), %rax    # 0x2827b4
movl $0xb, (%rax)
jmp 0x7f543
leaq 0x203277(%rip), %rax    # 0x2827b4
movl $0xf, (%rax)
jmp 0x7f545
jmp 0x7f5e2
movzbl -0x5(%rbp), %edx
leaq 0x31beab(%rip), %rdi    # 0x39b400
leaq 0x10c447(%rip), %rsi    # 0x18b9a3
movb $0x0, %al
callq 0x9060
leaq 0x2ed042(%rip), %rax    # 0x36c5ac
cmpl $0x0, (%rax)
je 0x7f586
xorl %esi, %esi
movl $0xe, %edx
leaq 0x31be83(%rip), %rcx    # 0x39b400
movl %esi, %edi
callq 0x10ee0
jmp 0x7f59b
xorl %esi, %esi
movl $0x8, %edx
leaq 0x31be6c(%rip), %rcx    # 0x39b400
movl %esi, %edi
callq 0x10ee0
leaq 0x2ed4de(%rip), %rax    # 0x36ca80
cmpl $0x0, (%rax)
je 0x7f5b6
leaq 0x203206(%rip), %rax    # 0x2827b4
movl $0xb, (%rax)
jmp 0x7f5e0
leaq 0x2ed4b7(%rip), %rax    # 0x36ca74
cmpb $0x0, (%rax)
je 0x7f5d1
leaq 0x2031eb(%rip), %rax    # 0x2827b4
movl $0xb, (%rax)
jmp 0x7f5de
leaq 0x2031dc(%rip), %rax    # 0x2827b4
movl $0xf, (%rax)
jmp 0x7f5e0
jmp 0x7f5e2
jmp 0x7f5e4
jmp 0x7f5e6
jmp 0x7f5e8
jmp 0x7f5ea
jmp 0x7f5ec
jmp 0x7f5ee
jmp 0x7f5f0
leaq 0x2031bd(%rip), %rax    # 0x2827b4
movl (%rax), %eax
leaq 0x2031b8(%rip), %rcx    # 0x2827b8
cmpl (%rcx), %eax
je 0x7f616
leaq 0x2031a9(%rip), %rax    # 0x2827b4
movl (%rax), %ecx
leaq 0x2031a4(%rip), %rax    # 0x2827b8
movl %ecx, (%rax)
leaq 0x2ed013(%rip), %rax    # 0x36c630
cmpb $0x0, (%rax)
je 0x7f627
callq 0x120e90
leaq 0x2ed2de(%rip), %rax    # 0x36c90c
cmpl $0xffffd8f1, (%rax)     # imm = 0xFFFFD8F1
je 0x7f658
leaq 0x2ed2cb(%rip), %rax    # 0x36c908
movl (%rax), %eax
leaq 0x2ed2c6(%rip), %rcx    # 0x36c90c
cmpl (%rcx), %eax
je 0x7f658
leaq 0x2ed2b7(%rip), %rax    # 0x36c908
movl (%rax), %edi
callq 0x120dd0
leaq 0x2ed2a9(%rip), %rax    # 0x36c908
movl (%rax), %ecx
leaq 0x2ed2a4(%rip), %rax    # 0x36c90c
movl %ecx, (%rax)
movl $0xf, -0x4(%rbp)
leaq 0x2edab0(%rip), %rax    # 0x36d128
cmpb $0x0, (%rax)
je 0x7f696
leaq 0x2eda3c(%rip), %rax    # 0x36d0c0
movzbl (%rax), %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0x7f696
movl $0xc, -0x4(%rbp)
leaq 0x2ed2c0(%rip), %rax    # 0x36c95d
cmpb $0x0, (%rax)
jne 0x7f6b2
leaq 0x2ed2b3(%rip), %rax    # 0x36c95c
cmpb $0x0, (%rax)
je 0x7f7f8
leaq 0x2ed02f(%rip), %rax    # 0x36c6e8
movslq (%rax), %rax
imulq $0x3c, %rax, %rax
imulq $0x3c, %rax, %rax
movq %rax, -0x10(%rbp)
leaq 0x2ed015(%rip), %rax    # 0x36c6e4
movslq (%rax), %rax
imulq $0x3c, %rax, %rax
addq -0x10(%rbp), %rax
movq %rax, -0x10(%rbp)
leaq 0x2ecffb(%rip), %rax    # 0x36c6e0
movslq (%rax), %rax
addq -0x10(%rbp), %rax
movq %rax, -0x10(%rbp)
leaq 0x2ed265(%rip), %rax    # 0x36c95c
cmpb $0x0, (%rax)
je 0x7f73d
imulq $0x3e8, -0x10(%rbp), %rax # imm = 0x3E8
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rax
movl $0x360, %ecx            # imm = 0x360
cqto
idivq %rcx
movq %rax, -0x10(%rbp)
callq 0x149c70
movq %rax, %rdx
movq -0x10(%rbp), %rcx
leaq 0x31bcd3(%rip), %rdi    # 0x39b400
leaq 0x10c280(%rip), %rsi    # 0x18b9b4
movb $0x0, %al
callq 0x9060
jmp 0x7f75e
callq 0x149c70
movq %rax, %rdx
movq -0x10(%rbp), %rcx
leaq 0x31bcb0(%rip), %rdi    # 0x39b400
leaq 0x10c268(%rip), %rsi    # 0x18b9bf
movb $0x0, %al
callq 0x9060
leaq 0x2ed31b(%rip), %rax    # 0x36ca80
cmpl $0x0, (%rax)
je 0x7f784
movl $0x2, %edi
xorl %esi, %esi
movl $0xb, %edx
leaq 0x31bc83(%rip), %rcx    # 0x39b400
callq 0x10ee0
jmp 0x7f7c4
leaq 0x2ed2e9(%rip), %rax    # 0x36ca74
cmpb $0x0, (%rax)
je 0x7f7aa
movl $0x2, %edi
xorl %esi, %esi
movl $0x9, %edx
leaq 0x31bc5d(%rip), %rcx    # 0x39b400
callq 0x10ee0
jmp 0x7f7c2
movl $0x2, %edi
xorl %esi, %esi
movl $0xf, %edx
leaq 0x31bc43(%rip), %rcx    # 0x39b400
callq 0x10ee0
jmp 0x7f7c4
xorl %edi, %edi
callq 0x148a00
movq %rax, %rsi
leaq 0x31bc2b(%rip), %rdi    # 0x39b400
callq 0x9350
movl -0x4(%rbp), %eax
movl $0x1, %edi
xorl %esi, %esi
leaq 0x31bc15(%rip), %rcx    # 0x39b400
movzbl %al, %edx
callq 0x10ee0
jmp 0x7f906
leaq 0x2ecee9(%rip), %rax    # 0x36c6e8
movl (%rax), %eax
movl %eax, -0x34(%rbp)
leaq 0x2eced9(%rip), %rax    # 0x36c6e4
movl (%rax), %eax
movl %eax, -0x30(%rbp)
leaq 0x2ecec9(%rip), %rax    # 0x36c6e0
movl (%rax), %eax
movl %eax, -0x2c(%rbp)
callq 0x149c70
movl -0x34(%rbp), %edx
movl -0x30(%rbp), %ecx
movl -0x2c(%rbp), %r8d
movq %rax, %r9
leaq 0x31bbcb(%rip), %rdi    # 0x39b400
leaq 0xf127b(%rip), %rsi     # 0x170ab7
movb $0x0, %al
callq 0x9060
leaq 0x2ed236(%rip), %rax    # 0x36ca80
cmpl $0x0, (%rax)
je 0x7f869
movl $0x1, %edi
xorl %esi, %esi
movl $0xb, %edx
leaq 0x31bb9e(%rip), %rcx    # 0x39b400
callq 0x10ee0
jmp 0x7f8a9
leaq 0x2ed204(%rip), %rax    # 0x36ca74
cmpb $0x0, (%rax)
je 0x7f88f
movl $0x1, %edi
xorl %esi, %esi
movl $0x9, %edx
leaq 0x31bb78(%rip), %rcx    # 0x39b400
callq 0x10ee0
jmp 0x7f8a7
movl $0x1, %edi
xorl %esi, %esi
movl $0xf, %edx
leaq 0x31bb5e(%rip), %rcx    # 0x39b400
callq 0x10ee0
jmp 0x7f8a9
xorl %edi, %edi
callq 0x148a00
movq %rax, %rsi
leaq 0x31bb46(%rip), %rdi    # 0x39b400
callq 0x9350
leaq 0x2ecd2a(%rip), %rax    # 0x36c5f0
cmpl $0x0, (%rax)
je 0x7f8eb
cmpl $0xf, -0x4(%rbp)
jne 0x7f8eb
movl $0x2, %edi
xorl %esi, %esi
movl $0xe, %edx
leaq 0x31bb1c(%rip), %rcx    # 0x39b400
callq 0x10ee0
jmp 0x7f904
movl -0x4(%rbp), %eax
movl $0x2, %edi
xorl %esi, %esi
leaq 0x31bb04(%rip), %rcx    # 0x39b400
movzbl %al, %edx
callq 0x10ee0
jmp 0x7f906
movl $0x3, -0x14(%rbp)
leaq 0x2ecbf8(%rip), %rax    # 0x36c50c
cmpl $0x0, (%rax)
je 0x7f9fa
leaq 0x2ecff4(%rip), %rax    # 0x36c918
movzwl (%rax), %eax
movl %eax, -0x1c(%rbp)
movl $0x0, -0x20(%rbp)
movl -0x1c(%rbp), %edx
leaq 0x31bac5(%rip), %rdi    # 0x39b400
leaq 0x10c088(%rip), %rsi    # 0x18b9ca
movb $0x0, %al
callq 0x9060
cmpl $0xf, -0x4(%rbp)
jne 0x7f962
leaq 0x2ecfd2(%rip), %rax    # 0x36c928
cmpl $0x0, (%rax)
je 0x7f962
movl $0x1, -0x20(%rbp)
cmpl $0x0, -0x20(%rbp)
je 0x7f980
movl -0x14(%rbp), %edi
xorl %esi, %esi
movl $0xe, %edx
leaq 0x31ba87(%rip), %rcx    # 0x39b400
callq 0x10ee0
jmp 0x7f9f1
leaq 0x2ecc69(%rip), %rax    # 0x36c5f0
cmpl $0x0, (%rax)
je 0x7f9a5
movl -0x14(%rbp), %edi
movl -0x4(%rbp), %eax
xorl %esi, %esi
leaq 0x31ba65(%rip), %rcx    # 0x39b400
movzbl %al, %edx
callq 0x10ee0
jmp 0x7f9ef
leaq 0x1fac94(%rip), %rax    # 0x27a640
movsd (%rax), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0x7f9bd
jp 0x7f9bd
jmp 0x7f9d6
movl -0x14(%rbp), %edi
movl -0x4(%rbp), %eax
xorl %esi, %esi
leaq 0x31ba34(%rip), %rcx    # 0x39b400
movzbl %al, %edx
callq 0x10ee0
jmp 0x7f9ed
movl -0x14(%rbp), %edi
movl -0x4(%rbp), %eax
xorl %esi, %esi
leaq 0x31ba1b(%rip), %rcx    # 0x39b400
movzbl %al, %edx
callq 0x10ee0
jmp 0x7f9ef
jmp 0x7f9f1
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
leaq 0x2ecb07(%rip), %rax    # 0x36c508
cmpl $0x0, (%rax)
je 0x7fa70
leaq 0x2ecf0f(%rip), %rax    # 0x36c91c
movl (%rax), %eax
movl %eax, %edx
leaq 0x31b9e8(%rip), %rdi    # 0x39b400
leaq 0x10bfb7(%rip), %rsi    # 0x18b9d6
movb $0x0, %al
callq 0x9060
cmpl $0xf, -0x4(%rbp)
jne 0x7fa50
leaq 0x2ecef5(%rip), %rax    # 0x36c928
cmpl $0x0, (%rax)
je 0x7fa50
movl -0x14(%rbp), %edi
xorl %esi, %esi
movl $0xe, %edx
leaq 0x31b9b7(%rip), %rcx    # 0x39b400
callq 0x10ee0
jmp 0x7fa67
movl -0x14(%rbp), %edi
movl -0x4(%rbp), %eax
xorl %esi, %esi
leaq 0x31b9a1(%rip), %rcx    # 0x39b400
movzbl %al, %edx
callq 0x10ee0
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
leaq 0x2eca85(%rip), %rax    # 0x36c4fc
cmpl $0x0, (%rax)
je 0x7faee
leaq 0x2ece85(%rip), %rax    # 0x36c908
movl (%rax), %edx
leaq 0x31b974(%rip), %rdi    # 0x39b400
leaq 0x10bf4e(%rip), %rsi    # 0x18b9e1
movb $0x0, %al
callq 0x9060
cmpl $0xc, -0x4(%rbp)
jne 0x7faa2
jmp 0x7face
leaq 0x2ece6b(%rip), %rax    # 0x36c914
cmpl $0x0, (%rax)
je 0x7fab7
movl $0xe, -0x4(%rbp)
jmp 0x7facc
leaq 0x2eca3e(%rip), %rax    # 0x36c4fc
cmpl $0x0, (%rax)
jge 0x7faca
movl $0xc, -0x4(%rbp)
jmp 0x7facc
jmp 0x7face
movl -0x14(%rbp), %edi
movl -0x4(%rbp), %eax
xorl %esi, %esi
leaq 0x31b923(%rip), %rcx    # 0x39b400
movzbl %al, %edx
callq 0x10ee0
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
leaq 0x2ed59b(%rip), %rax    # 0x36d090
movb $0x20, (%rax)
addq $0x40, %rsp
popq %rbp
retq
nop