// File: /workspace/github_cpp_makefile_star2_O1/jkingan[P]ladyheather/heathui.cpp
// Function: kbd_help()
void kbd_help()
{
char *s, *ems_info;
COORD help_row, help_col;
COORD row, col;
COORD help_row_1;

   // this routine displays help info about the keyboard commands
   // until a key is pressed
   //
   // NEW_RCVR

   request_version(); // so the "Press space for help" message gets updated quickly
   plot_version = 1;  // once asked for help,  switch help message to version
                      // display since the user should now know that help exists

   if(zoom_screen == 'K') {
      change_zoom_config(-100);
      cancel_zoom(10);      //zkzk
   }

   if(1 && osc_params) {   // if enabled, cancel the osc param display mode
      osc_params = 0;
      text_mode = 0;
      no_x_margin = no_y_margin = 0;
      erase_screen();
      redraw_screen();
//    do_kbd(' ');
      sure_exit();
      return;
   }

   osc_params = 0;
   erase_screen();
   redraw_screen();

   // !!! kludge: for undersized screens
   if(screen_type == 't') {   // text mode
      no_x_margin = no_y_margin = 1;
   }
   else if(ALWAYS_TEXT_HELP || (SCREEN_HEIGHT <= SHORT_SCREEN)) {  // small graphics screens
      text_mode = 2;  // say we are in text mode while help is displayed
      no_x_margin = no_y_margin = 1;
   }

   if(text_mode) {   // full screen help mode
      if(SCREEN_WIDTH >= NARROW_SCREEN) {  // there is room for a margin
         if(SCREEN_HEIGHT < TINY_HEIGHT) help_row = 0;
         else                            help_row = 1;
         help_col = 3;
      }
      else {         // no margin space available
         help_row = 0;
         help_col = HELP_COL;
      }
      erase_screen();
   }
   else {            // help is in the plot area
      help_row = HELP_ROW;
      help_col = HELP_COL+3;
   }

   row = help_row;
   col = help_col + 0;

   s = "Control ";
   ems_info = "";
   if(TEXT_COLS <= 100) {
      if(luxor) sprintf(out, "Luxor Power/LED Analyzer %sProgram", s);
      else      sprintf(out, "Lady Heather's Disciplined Oscillator %sProgram", s);
      vidstr(row,col,  HELP_COLOR, out);
      ++row;

      sprintf(out, "Rev %s - %s %s%s", VERSION, date_string, __TIME__, ems_info);
      vidstr(row,col,  HELP_COLOR, out);
      ++row;

      vidstr(row,col,  HELP_COLOR, "Keyboard command help.  Press any key to continue...");
      ++row;
      ++row;
   }
   else {
      if(luxor) sprintf(out, "Luxor Power/LED Analyzer %sProgram.  Rev %s - %s %s%s", s, VERSION, date_string, __TIME__, ems_info);
      else      sprintf(out, "Lady Heather's Disciplined Oscillator %sProgram.  Rev %s - %s %s%s", s, VERSION, date_string, __TIME__, ems_info);
      vidstr(row,col,  HELP_COLOR, out);
      ++row;

      vidstr(row,col,  HELP_COLOR, "Keyboard command help.  Press any key to continue...");
      ++row;
      ++row;
   }
   help_row = row;

   if(script_file) {  // error was in a script file,  abandon script
      sprintf(out, "Unknown command seen in script file: %s line %d, col %d: %c",
         script_name, script_line, script_col, script_err);
      vidstr(row, col,  HELP_COLOR, out);
      close_script(1);
      goto help_exit;
   }

   #ifdef ADEV_STUFF
      if(luxor == 0) {
         s = "a - select Adev type to display";
         vidstr(row++, col,  HELP_COLOR, s);
      }
   #endif

   if(luxor) {
      s = "b - Battery capacity/resistance";
      vidstr(row++, col,  HELP_COLOR, s);
   }
   else {
      s = "b - experimental OSC control PID";
      vidstr(row++, col,  HELP_COLOR, s);
   }

   s = "c - Clear collected data";
   vidstr(row++, col,  HELP_COLOR, s);

   if(luxor == 0) {
      if(rcvr_type == CS_RCVR)       s = "d - set Standby mode / DAC voltage";
      else if(rcvr_type == PRS_RCVR) s = "d - set discipline mode / FC value";
      else                           s = "d - set osc Disciplining / DAC voltage";
      vidstr(row++, col,  HELP_COLOR, s);

      s = "e - save current config to EEPROM";
      vidstr(row++, col,  HELP_COLOR, s);
   }

   if(luxor)                        s = "f - change display Filter";
   else if(rcvr_type == CS_RCVR)    s = "f - change display Filter";
   else if(rcvr_type == TICC_RCVR)  s = "f - change display Filter";
   else                             s = "f - toggle Filter or signal/elev masks";
   vidstr(row++, col,  HELP_COLOR, s);

   s = "g - modify Graph or screen display";
   vidstr(row++, col,  HELP_COLOR, s);

   if(luxor == 0) {
      s = "h - toggle manual Holdover mode";
      vidstr(row++, col,  HELP_COLOR, s);
   }

   s = "i - set the plot queue update Interval";
   vidstr(row++, col,  HELP_COLOR, s);

   if(luxor == 0) {
      if     (rcvr_type == CS_RCVR)     s = "j - sync PPS outputs";
      else if(timing_mode == TMODE_UTC) s = "j - Jam sync PPS to UTC time";
      else if(timing_mode == TMODE_GPS) s = "j - Jam sync PPS to GPS time";
      else if(timing_mode == TMODE_SU)  s = "j - Jam sync PPS to UTC(SU) time";
      else                              s = "j - Jam sync PPS to time";
      vidstr(row++, col,  HELP_COLOR, s);

      s = "k - temperature control PID";
      vidstr(row++, col,  HELP_COLOR, s);
   }

   s = "l - data Logging";
   vidstr(row++, col,  HELP_COLOR, s);

   if(luxor) {
      s = "m - change LED driver Mode";
      vidstr(row++, col,  HELP_COLOR, s);

#ifdef WINDOWS
      s = "n - use NOTEPAD to edit a file";
      vidstr(row++, col,  HELP_COLOR, s);
#else  // __linux__  __MACH__   __FreeBSD__
      s = "n - use NANO to edit a file";
      vidstr(row++, col,  HELP_COLOR, s);
#endif

      s = "o - Set misc options";
      vidstr(row++, col,  HELP_COLOR, s);

      s = "p - set Protection values";
      vidstr(row++, col,  HELP_COLOR, s);
   }
   else {
      if(1 || jd_obs) {
         s = "m - RINEX file commands";
         vidstr(row++, col,  HELP_COLOR, s);
      }
#ifdef WINDOWS
      s = "n - use NOTEPAD to edit a file";
      vidstr(row++, col,  HELP_COLOR, s);
#else  // __linux__  __MACH__   __FreeBSD__
      s = "n - use NANO to edit a file";
      vidstr(row++, col,  HELP_COLOR, s);
#endif

      s = "o - Set misc options";
      vidstr(row++, col,  HELP_COLOR, s);

      if     (rcvr_type == CS_RCVR)   s = "p - Configuration control";
      else if(rcvr_type == TICC_RCVR) s = "p - Configuration control";
      else                            s = "p - PPS and TRAIM control";
      vidstr(row++, col,  HELP_COLOR, s);
   }

   s = "r - Read in a file";
   vidstr(row++, col,  HELP_COLOR, s);


   help_row_1 = row;      // switch to next column
   row = help_row;
   col = help_col + 40;

   if(luxor)                       s = "s - enter position (lat lon alt)";
   else if(rcvr_type == CS_RCVR)   s = "s - enter position (lat lon alt)";
   else if(rcvr_type == TICC_RCVR) s = "s - enter position (lat lon alt)";
   else      s = "s - Survey/sats/signals/positioning";
   vidstr(row++, col,  HELP_COLOR, s);

   s = "t - Time and temperature control";
   vidstr(row++, col,  HELP_COLOR, s);

   if(luxor) {
      if(pause_data) s = "u - resume plot queue Updates";
      else           s = "u - pause plot queue Updates";
      vidstr(row++, col,  HELP_COLOR, s);

      s = "v - set View time span of plot window";
      vidstr(row++, col,  HELP_COLOR, s);
   }
   else {
      if(pause_data) s = "u - resume plot/adev queue Updates";
      else           s = "u - pause plot/adev queue Updates";
      vidstr(row++, col,  HELP_COLOR, s);
   }

   if(luxor) {
      s = "w - Write data, screen, delete file";
      vidstr(row++, col,  HELP_COLOR, s);
   }
   else {
      s = "v - set View time span of plot window";
      vidstr(row++, col,  HELP_COLOR, s);

      s = "w - Write data, screen, delete file";
      vidstr(row++, col,  HELP_COLOR, s);
   }

   sprintf(out, "x - view graphs at 1 hr/div");
   vidstr(row++, col,  HELP_COLOR, out);

   if(day_size) sprintf(out, "y - view graphs at %d hr/screen", day_size);
   else         sprintf(out, "y - view graphs at %d hr/screen", 24);
   vidstr(row++, col,  HELP_COLOR, out);

   if(luxor) s = "z - Zoom fullscreen clocks";
   else      s = "z - Zoom fullscreen clocks and maps";
   vidstr(row++, col,  HELP_COLOR, s);

   s = "-+  lower/raise last selected graph";
   vidstr(row++, col,  HELP_COLOR, s);

   s = "{}  shrink/grow last selected graph";
   vidstr(row++, col,  HELP_COLOR, s);

   s = "! - device resets and diagnostics";
   vidstr(row++, col,  HELP_COLOR, s);

   if(luxor) s = "& - change calibration parameters";
   else      s = "& - oscillator discipling parameters";
   vidstr(row++, col,  HELP_COLOR, s);

   s = "/ - startup (command line) only options";
   vidstr(row++, col,  HELP_COLOR, s);

   #ifdef GIF_FILES
      sprintf(out, "\\ - dump screen to %s.gif", unit_file_name);
   #else
      sprintf(out, "\\ - dump screen to %s.bmp", unit_file_name);
   #endif
   vidstr(row++, col,  HELP_COLOR, out);

   s = "$ - change screen resolution";
   vidstr(row++, col,  HELP_COLOR, s);

   s = "` - RPN calculator";
   vidstr(row++, col,  HELP_COLOR, s);

   s = "? - display command line help";
   vidstr(row++, col,  HELP_COLOR, s);



   if(text_mode) {  // full screen help
      col = help_col;
      if(SCREEN_HEIGHT < TINY_HEIGHT) row = help_row_1;
      else                            row = help_row_1 + 1;
      help_row_1 = row;
   }
   else {           // help in the plot area
      row = help_row;
      col = help_col + 80;
   }

   s = "HOME - scroll plot to beginning of data";
   vidstr(row++, col,  HELP_COLOR, s);

   s = "END - scroll plot to end of data";
   vidstr(row++, col,  HELP_COLOR, s);

   s = "LEFT - scroll plot forward one division";
   vidstr(row++, col,  HELP_COLOR, s);

   s = "RIGHT - scroll plot back one division";
   vidstr(row++, col,  HELP_COLOR, s);

   s = "PG UP - scroll plot forward one screen";
   vidstr(row++, col,  HELP_COLOR, s);

   s = "PG DN - scroll plot back one screen";
   vidstr(row++, col,  HELP_COLOR, s);

   if(text_mode && (SCREEN_HEIGHT < SHORT_SCREEN)) {
      row = help_row_1;
      col = help_col + 40;
   }

   s = "UP - scroll plot forward one hour";
   vidstr(row++, col,  HELP_COLOR, s);

   s = "DOWN - scroll plot back one hour";
   vidstr(row++, col,  HELP_COLOR, s);

   s = "<> - scroll plot one day";
   vidstr(row++, col,  HELP_COLOR, s);

   s = "[] - scroll plot one pixel";
   vidstr(row++, col,  HELP_COLOR, s);

   s = "DEL - return plotting back to normal";
   vidstr(row++, col,  HELP_COLOR, s);

   s = "% - scroll to next error event";
   vidstr(row++, col,  HELP_COLOR, s);

   s = "0..9,=,+,- set or move to plot markers";
   vidstr(row++, col,  HELP_COLOR, s);

   if(SCREEN_HEIGHT < TINY_HEIGHT) ;
   else ++row;
   col = help_col;
   s = "LEFT CLICK in plot area - zoom and center plot at mouse pointer";
   vidstr(row++, col, HELP_COLOR, s);
   s = "RIGHT BUTTON (at center of plot area) - scroll plot left or right";
   vidstr(row++, col, HELP_COLOR, s);
   s = "LEFT CLICK lat/lon info, sat info, plot header, adev table, maps, clock, watch";
   vidstr(row++, col, HELP_COLOR, s);
   s = "           to zoom them to full screen.  Click again to restore screen";
   vidstr(row++, col, HELP_COLOR, s);

   if(SCREEN_HEIGHT < TINY_HEIGHT) ;
   else ++row;
   sprintf(out, "Config/log directory: %s", heather_path);
   vidstr(row++, col, GREEN, out);

   help_exit:
   refresh_page();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
callq 0x659e2
leaq 0x1f485f(%rip), %rax    # 0x21b3e1
movb $0x1, (%rax)
leaq 0x2e5c1c(%rip), %rbx    # 0x30c7a8
cmpb $0x4b, (%rbx)
jne 0x26bb5
movl $0xffffff9c, %edi       # imm = 0xFFFFFF9C
callq 0x27724
movb $0x0, (%rbx)
leaq 0x314c87(%rip), %rax    # 0x33b82c
movl $0x0, (%rax)
movl $0x69, %edi
callq 0xd846f
leaq 0x2e6530(%rip), %rax    # 0x30d0ec
cmpb $0x0, (%rax)
movb $0x0, (%rax)
je 0x26c02
leaq 0x1f1c0d(%rip), %rax    # 0x2187d8
movl $0x0, (%rax)
leaq 0x1f1c83(%rip), %rax    # 0x21885b
xorl %ecx, %ecx
movb %cl, (%rax)
leaq 0x1f1c77(%rip), %rax    # 0x21885a
movb %cl, (%rax)
callq 0xed5e
callq 0xfb1a
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x2781b
callq 0xed5e
callq 0xfb1a
leaq 0x1f1c1e(%rip), %rax    # 0x218831
cmpb $0x74, (%rax)
je 0x26c25
leaq 0x1f1bb9(%rip), %rax    # 0x2187d8
movl $0x2, (%rax)
leaq 0x1f1c2f(%rip), %rax    # 0x21885b
movb $0x1, %cl
movb %cl, (%rax)
leaq 0x1f1c23(%rip), %rax    # 0x21885a
movb %cl, (%rax)
leaq 0x1f1b98(%rip), %rax    # 0x2187d8
cmpl $0x0, (%rax)
je 0x26c97
leaq 0x1f1bb4(%rip), %rax    # 0x218800
leaq 0x1fc8f1(%rip), %rcx    # 0x223544
imull $0x31a, (%rcx), %ecx    # imm = 0x31A
movslq %ecx, %rcx
imulq $0x51eb851f, %rcx, %rcx # imm = 0x51EB851F
movq %rcx, %rdx
shrq $0x3f, %rdx
sarq $0x25, %rcx
addl %edx, %ecx
xorl %edx, %edx
cmpl %ecx, (%rax)
setge %dl
leaq 0x1f1b86(%rip), %rax    # 0x218804
cmpl $0x1e0, (%rax)          # imm = 0x1E0
setge %al
andb %dl, %al
movzbl %al, %r15d
leal (%rdx,%rdx,2), %ebx
callq 0xed5e
jmp 0x26ca9
leaq 0x1f1bf2(%rip), %rax    # 0x218890
movl (%rax), %r15d
incl %r15d
movl $0x3, %ebx
leaq 0x1f1b58(%rip), %rax    # 0x218808
cmpl $0x64, (%rax)
leaq 0x218284(%rip), %rax    # 0x23ef3e
movb (%rax), %al
jg 0x26d3b
testb %al, %al
leaq 0xe6dc2(%rip), %rax     # 0x10da89
leaq 0xe6d98(%rip), %rsi     # 0x10da66
cmoveq %rax, %rsi
leaq 0x315547(%rip), %r14    # 0x33c220
leaq 0xe6d7d(%rip), %rdx     # 0x10da5d
movq %r14, %rdi
xorl %eax, %eax
callq 0x9060
movl %r15d, %edi
movl %ebx, %esi
movl $0xf, %edx
movq %r14, %rcx
callq 0xe7d0
leal 0x1(%r15), %r12d
leaq 0xe6e21(%rip), %rsi     # 0x10db28
leaq 0xe6dab(%rip), %rdx     # 0x10dab9
leaq 0x1fc83b(%rip), %rcx    # 0x223550
leaq 0xe6da9(%rip), %r8      # 0x10dac5
leaq 0x10ac83(%rip), %r9     # 0x1319a6
movq %r14, %rdi
xorl %eax, %eax
callq 0x9060
movl $0x4, %r14d
movl $0x2, %r13d
jmp 0x26d93
testb %al, %al
leaq 0xe6df5(%rip), %rax     # 0x10db39
leaq 0xe6db8(%rip), %rsi     # 0x10db03
cmoveq %rax, %rsi
leaq 0x10ac50(%rip), %rax    # 0x1319a6
movq %rax, (%rsp)
leaq 0x3154bf(%rip), %rdi    # 0x33c220
leaq 0xe6cf5(%rip), %rdx     # 0x10da5d
leaq 0xe6d4a(%rip), %rcx     # 0x10dab9
leaq 0x1fc7da(%rip), %r8     # 0x223550
leaq 0xe6d48(%rip), %r9      # 0x10dac5
xorl %eax, %eax
callq 0x9060
movl $0x3, %r14d
movl $0x1, %r13d
movl %r15d, %r12d
leaq 0x315486(%rip), %rcx    # 0x33c220
movl %r12d, %edi
movl %ebx, %esi
movl $0xf, %edx
callq 0xe7d0
addl %r15d, %r13d
leaq 0xe6d1b(%rip), %rcx     # 0x10dace
movl %r13d, %edi
movl %ebx, %esi
movl $0xf, %edx
callq 0xe7d0
addl %r15d, %r14d
leaq 0x2180ec(%rip), %rax    # 0x23eeb8
cmpq $0x0, (%rax)
movq %r14, %r12
je 0x26e32
leaq 0x2180e4(%rip), %rax    # 0x23eec0
movl (%rax), %ecx
leaq 0x2180df(%rip), %rax    # 0x23eec4
movl (%rax), %r8d
leaq 0x2180d9(%rip), %rax    # 0x23eec8
movl (%rax), %r9d
leaq 0x315427(%rip), %r15    # 0x33c220
leaq 0xe6d7c(%rip), %rsi     # 0x10db7c
leaq 0x218029(%rip), %rdx    # 0x23ee30
movq %r15, %rdi
xorl %eax, %eax
callq 0x9060
movl %r12d, %edi
movl %ebx, %esi
movl $0xf, %edx
movq %r15, %rcx
callq 0xe7d0
movl $0x1, %edi
callq 0x1ce0a
jmp 0x276c4
leaq 0x218105(%rip), %r13    # 0x23ef3e
cmpb $0x0, (%r13)
movl %r12d, %r15d
jne 0x26e5e
leal 0x1(%r12), %r15d
leaq 0xe6d69(%rip), %rcx     # 0x10dbb8
movl %r12d, %edi
movl %ebx, %esi
movl $0xf, %edx
callq 0xe7d0
movq %r12, -0x40(%rbp)
cmpb $0x0, (%r13)
leaq 0xe6d8a(%rip), %rax     # 0x10dbf8
leaq 0xe6d63(%rip), %rcx     # 0x10dbd8
cmoveq %rax, %rcx
movl %r15d, %edi
movl %ebx, %esi
movl $0xf, %edx
callq 0xe7d0
leal 0x1(%r15), %edi
leal 0x2(%r15), %r12d
leaq 0xe6d82(%rip), %rcx     # 0x10dc19
movl %ebx, %esi
movl $0xf, %edx
callq 0xe7d0
cmpb $0x0, (%r13)
jne 0x26f14
leaq 0x1f1a1f(%rip), %rax    # 0x2188d0
movq (%rax), %rax
cmpq $0x1000000, %rax        # imm = 0x1000000
leaq 0xe6d94(%rip), %rcx     # 0x10dc55
leaq 0xe6db0(%rip), %rdx     # 0x10dc78
cmoveq %rcx, %rdx
cmpq $0x20000, %rax          # imm = 0x20000
leaq 0xe6d59(%rip), %rcx     # 0x10dc32
cmovneq %rdx, %rcx
leal 0x3(%r15), %r13d
movl %r12d, %edi
movl %ebx, %esi
movl $0xf, %edx
callq 0xe7d0
addl $0x4, %r15d
leaq 0xe6da4(%rip), %rcx     # 0x10dc9f
movl %r13d, %edi
leaq 0x218039(%rip), %r13    # 0x23ef3e
movl %ebx, %esi
movl $0xf, %edx
callq 0xe7d0
movl %r15d, %r12d
cmpb $0x0, (%r13)
je 0x26f24
leaq 0xe6d9f(%rip), %rcx     # 0x10dcc1
jmp 0x26f4e
leaq 0x1f19a5(%rip), %rax    # 0x2188d0
movq $-0x10000, %rcx         # imm = 0xFFFF0000
addq (%rax), %rcx
testq $-0x10001, %rcx         # imm = 0xFFFEFFFF
leaq 0xe6d7e(%rip), %rax     # 0x10dcc1
leaq 0xe6d91(%rip), %rcx     # 0x10dcdb
cmoveq %rax, %rcx
leal 0x1(%r12), %r13d
movl %r12d, %edi
movl %ebx, %esi
movl $0xf, %edx
callq 0xe7d0
leal 0x2(%r12), %r15d
leaq 0xe6d94(%rip), %rcx     # 0x10dd02
movl %r13d, %edi
movl %ebx, %esi
movl $0xf, %edx
callq 0xe7d0
leaq 0x217fba(%rip), %r13    # 0x23ef3e
cmpb $0x0, (%r13)
jne 0x26fa8
addl $0x3, %r12d
leaq 0xe6d8f(%rip), %rcx     # 0x10dd25
movl %r15d, %edi
movl %ebx, %esi
movl $0xf, %edx
callq 0xe7d0
movl %r12d, %r15d
leal 0x1(%r15), %r12d
leaq 0xe6d92(%rip), %rcx     # 0x10dd45
movl %r15d, %edi
movl %ebx, %esi
movl $0xf, %edx
callq 0xe7d0
cmpb $0x0, (%r13)
jne 0x27014
leaq 0x1f1900(%rip), %rax    # 0x2188d0
cmpq $0x20000, (%rax)        # imm = 0x20000
jne 0x276d7
movq %r12, %rdi
leaq 0xe6d85(%rip), %rcx     # 0x10dd6c
leal 0x2(%r15), %r12d
movl %ebx, %esi
movl $0xf, %edx
callq 0xe7d0
addl $0x3, %r15d
leaq 0xe6df3(%rip), %rcx     # 0x10ddf5
movl %r12d, %edi
movl %ebx, %esi
movl $0xf, %edx
callq 0xe7d0
movl %r15d, %r12d
leal 0x1(%r12), %r15d
leaq 0xe6df1(%rip), %rcx     # 0x10de11
movl %r12d, %edi
movl %ebx, %esi
movl $0xf, %edx
callq 0xe7d0
leal 0x2(%r12), %r13d
movq %r12, %rax
addl $0x3, %r12d
movq %rax, %r14
addl $0x4, %eax
movl %eax, -0x2c(%rbp)
leaq 0x217ef3(%rip), %rax    # 0x23ef3e
cmpb $0x0, (%rax)
je 0x2709b
leaq 0xe6dcb(%rip), %rcx     # 0x10de22
movl %r15d, %edi
movl %ebx, %esi
movl $0xf, %edx
callq 0xe7d0
leaq 0xe6dd0(%rip), %rcx     # 0x10de3d
movl %r13d, %edi
movl %ebx, %esi
movl $0xf, %edx
callq 0xe7d0
leaq 0xe6dd6(%rip), %rcx     # 0x10de59
movl %r12d, %edi
movl %ebx, %esi
movl $0xf, %edx
callq 0xe7d0
leaq 0xe6dd5(%rip), %rcx     # 0x10de6e
jmp 0x27107
leaq 0xe6de6(%rip), %rcx     # 0x10de88
movl %r15d, %edi
movl %ebx, %esi
movl $0xf, %edx
callq 0xe7d0
leaq 0xe6d85(%rip), %rcx     # 0x10de3d
movl %r13d, %edi
movl %ebx, %esi
movl $0xf, %edx
callq 0xe7d0
leaq 0xe6d8b(%rip), %rcx     # 0x10de59
movl %r12d, %edi
movl %ebx, %esi
movl $0xf, %edx
callq 0xe7d0
leaq 0x1f17ec(%rip), %rax    # 0x2188d0
movq $-0x10000, %rcx         # imm = 0xFFFF0000
addq (%rax), %rcx
testq $-0x10001, %rcx         # imm = 0xFFFEFFFF
leaq 0xe6da4(%rip), %rax     # 0x10dea0
leaq 0xe6db7(%rip), %rcx     # 0x10deba
cmoveq %rax, %rcx
movl -0x2c(%rbp), %edi
movl %ebx, %esi
movl $0xf, %edx
callq 0xe7d0
leal 0x5(%r14), %edi
leaq 0xe6db3(%rip), %rcx     # 0x10ded4
movl %ebx, %esi
movl $0xf, %edx
callq 0xe7d0
leal 0x28(%rbx), %r13d
leaq 0x217e06(%rip), %rax    # 0x23ef3e
cmpb $0x0, (%rax)
movq -0x40(%rbp), %rdx
je 0x2714a
leaq 0xe6d9f(%rip), %rcx     # 0x10dee7
jmp 0x27174
leaq 0x1f177f(%rip), %rax    # 0x2188d0
movq $-0x10000, %rcx         # imm = 0xFFFF0000
addq (%rax), %rcx
testq $-0x10001, %rcx         # imm = 0xFFFEFFFF
leaq 0xe6d7e(%rip), %rax     # 0x10dee7
leaq 0xe6d98(%rip), %rcx     # 0x10df08
cmoveq %rax, %rcx
movq %rbx, -0x38(%rbp)
movq %rdx, %rbx
leal 0x1(%rdx), %r12d
movl %ebx, %edi
movl %r13d, %esi
movl $0xf, %edx
callq 0xe7d0
leal 0x2(%rbx), %r15d
leaq 0xe6d93(%rip), %rcx     # 0x10df2c
movl %r12d, %edi
movl %r13d, %esi
movl $0xf, %edx
callq 0xe7d0
leal 0x3(%rbx), %r12d
leaq 0x217d8a(%rip), %rax    # 0x23ef3e
cmpb $0x0, (%rax)
leaq 0x1f4076(%rip), %rax    # 0x21b234
movb (%rax), %al
je 0x27205
testb %al, %al
leaq 0xe6da0(%rip), %rax     # 0x10df6b
leaq 0xe6d7b(%rip), %rcx     # 0x10df4d
cmoveq %rax, %rcx
movl %r15d, %edi
movl %r13d, %esi
movl $0xf, %edx
callq 0xe7d0
addl $0x4, %ebx
leaq 0xe6d98(%rip), %rcx     # 0x10df88
movl %r12d, %edi
movl %r13d, %esi
movl $0xf, %edx
callq 0xe7d0
movl %ebx, %r12d
jmp 0x27229
testb %al, %al
leaq 0xe6dc3(%rip), %rax     # 0x10dfd1
leaq 0xe6d99(%rip), %rcx     # 0x10dfae
cmoveq %rax, %rcx
movl %r15d, %edi
movl %r13d, %esi
movl $0xf, %edx
callq 0xe7d0
leaq 0x314ff0(%rip), %rbx    # 0x33c220
leal 0x1(%r12), %r15d
leaq 0x217d02(%rip), %rax    # 0x23ef3e
cmpb $0x0, (%rax)
jne 0x27264
leaq 0xe6d40(%rip), %rcx     # 0x10df88
movl %r12d, %edi
movl %r13d, %esi
movl $0xf, %edx
callq 0xe7d0
movl %r12d, %eax
addl $0x2, %eax
movl %r15d, %r12d
movl %eax, %r15d
movq %r14, -0x48(%rbp)
leal 0x6(%r14), %eax
movl %eax, -0x2c(%rbp)
leaq 0xe6d7d(%rip), %rcx     # 0x10dff3
movl %r12d, %edi
movl %r13d, %esi
movl $0xf, %edx
callq 0xe7d0
movups 0xe6d96(%rip), %xmm0    # 0x10e023
movups %xmm0, 0xc(%rbx)
movups 0xe6d7f(%rip), %xmm0    # 0x10e017
movaps %xmm0, (%rbx)
leal 0x1(%r15), %r12d
movl %r15d, %edi
movl %r13d, %esi
movl $0xf, %edx
movq %rbx, %rcx
callq 0xe7d0
leaq 0x1f15e7(%rip), %rax    # 0x2188a0
movl (%rax), %eax
testl %eax, %eax
movl $0x18, %edx
cmovnel %eax, %edx
leaq 0xe6d67(%rip), %rsi     # 0x10e033
movq %rbx, %rdi
xorl %eax, %eax
callq 0x9060
movq %rbx, %r14
leal 0x2(%r15), %ebx
movl %r12d, %edi
movl %r13d, %esi
movl $0xf, %edx
movq %r14, %rcx
callq 0xe7d0
leaq 0x217c47(%rip), %rax    # 0x23ef3e
cmpb $0x0, (%rax)
leaq 0xe6d6d(%rip), %rax     # 0x10e06e
leaq 0xe6d4b(%rip), %rcx     # 0x10e053
cmoveq %rax, %rcx
leal 0x3(%r15), %r12d
movl %ebx, %edi
movl %r13d, %esi
movl $0xf, %edx
callq 0xe7d0
leal 0x4(%r15), %ebx
leaq 0xe6d68(%rip), %rcx     # 0x10e092
movl %r12d, %edi
movl %r13d, %esi
movl $0xf, %edx
callq 0xe7d0
leal 0x5(%r15), %r12d
leaq 0xe6d71(%rip), %rcx     # 0x10e0b6
movl %ebx, %edi
movl %r13d, %esi
movl $0xf, %edx
callq 0xe7d0
leal 0x6(%r15), %ebx
leaq 0xe6d7b(%rip), %rcx     # 0x10e0da
movl %r12d, %edi
movl %r13d, %esi
movl $0xf, %edx
callq 0xe7d0
leaq 0x217bc8(%rip), %rax    # 0x23ef3e
cmpb $0x0, (%rax)
leaq 0xe6d9e(%rip), %rax     # 0x10e11e
leaq 0xe6d75(%rip), %rcx     # 0x10e0fc
cmoveq %rax, %rcx
leal 0x7(%r15), %r12d
movl %ebx, %edi
movl %r13d, %esi
movl $0xf, %edx
callq 0xe7d0
leal 0x8(%r15), %ebx
leaq 0xe6d9a(%rip), %rcx     # 0x10e143
movl %r12d, %edi
movl %r13d, %esi
movl $0xf, %edx
callq 0xe7d0
leaq 0x1498c8(%rip), %rax    # 0x170c88
movq (%rax), %rdx
leaq 0xe6da1(%rip), %rsi     # 0x10e16b
movq %r14, %rdi
xorl %eax, %eax
callq 0x9060
leal 0x9(%r15), %r12d
movl %ebx, %edi
movl %r13d, %esi
movl $0xf, %edx
movq %r14, %rcx
callq 0xe7d0
leal 0xa(%r15), %ebx
leaq 0xe6d90(%rip), %rcx     # 0x10e185
movl %r12d, %edi
movl %r13d, %esi
movl $0xf, %edx
callq 0xe7d0
addl $0xb, %r15d
leaq 0xe6d92(%rip), %rcx     # 0x10e1a2
movl %ebx, %edi
movl %r13d, %esi
movl $0xf, %edx
callq 0xe7d0
leaq 0xe6d8f(%rip), %rcx     # 0x10e1b5
movl %r15d, %edi
movl %r13d, %esi
movl $0xf, %edx
callq 0xe7d0
leaq 0x1f139b(%rip), %rax    # 0x2187d8
cmpl $0x0, (%rax)
je 0x27469
leaq 0x1f13bb(%rip), %rax    # 0x218804
movq -0x48(%rbp), %rcx
addl $0x7, %ecx
cmpl $0x1e0, (%rax)          # imm = 0x1E0
cmovll -0x2c(%rbp), %ecx
movl %ecx, %r14d
movq -0x38(%rbp), %rax
movl %eax, %r15d
movl %ecx, -0x2c(%rbp)
jmp 0x27475
movq -0x38(%rbp), %rax
leal 0x50(%rax), %r15d
movq -0x40(%rbp), %r14
leal 0x1(%r14), %ebx
leaq 0xe6d53(%rip), %rcx     # 0x10e1d3
movl %r14d, %edi
movl %r15d, %esi
movl $0xf, %edx
callq 0xe7d0
leal 0x2(%r14), %r12d
leaq 0xe6d60(%rip), %rcx     # 0x10e1fb
movl %ebx, %edi
movl %r15d, %esi
movl $0xf, %edx
callq 0xe7d0
leal 0x3(%r14), %ebx
leaq 0xe6d67(%rip), %rcx     # 0x10e21c
movl %r12d, %edi
movl %r15d, %esi
movl $0xf, %edx
callq 0xe7d0
leal 0x4(%r14), %r12d
leaq 0xe6d74(%rip), %rcx     # 0x10e244
movl %ebx, %edi
movl %r15d, %esi
movl $0xf, %edx
callq 0xe7d0
leal 0x5(%r14), %ebx
leaq 0xe6d80(%rip), %rcx     # 0x10e26a
movl %r12d, %edi
movl %r15d, %esi
movl $0xf, %edx
callq 0xe7d0
addl $0x6, %r14d
leaq 0xe6d8c(%rip), %rcx     # 0x10e291
movl %ebx, %edi
movl %r15d, %esi
movl $0xf, %edx
callq 0xe7d0
leaq 0x1f12bd(%rip), %rax    # 0x2187d8
cmpl $0x0, (%rax)
setne %al
leaq 0x1f12dc(%rip), %rcx    # 0x218804
cmpl $0x258, (%rcx)          # imm = 0x258
movq %rcx, %r12
setl %cl
testb %cl, %al
cmovnel -0x2c(%rbp), %r14d
cmovel %r15d, %r13d
leal 0x1(%r14), %ebx
leaq 0xe6d6b(%rip), %rcx     # 0x10e2b5
movl %r14d, %edi
movl %r13d, %esi
movl $0xf, %edx
callq 0xe7d0
leal 0x2(%r14), %r15d
leaq 0xe6d72(%rip), %rcx     # 0x10e2d7
movl %ebx, %edi
movl %r13d, %esi
movl $0xf, %edx
callq 0xe7d0
leal 0x3(%r14), %ebx
leaq 0xe6d79(%rip), %rcx     # 0x10e2f8
movl %r15d, %edi
movl %r13d, %esi
movl $0xf, %edx
callq 0xe7d0
leal 0x4(%r14), %r15d
leaq 0xe6d77(%rip), %rcx     # 0x10e311
movl %ebx, %edi
movl %r13d, %esi
movl $0xf, %edx
callq 0xe7d0
leal 0x5(%r14), %ebx
leaq 0xe6d78(%rip), %rcx     # 0x10e32c
movl %r15d, %edi
movl %r13d, %esi
movl $0xf, %edx
callq 0xe7d0
leal 0x6(%r14), %r15d
leaq 0xe6d82(%rip), %rcx     # 0x10e351
movl %ebx, %edi
movl %r13d, %esi
movl $0xf, %edx
callq 0xe7d0
leaq 0xe6d8b(%rip), %rcx     # 0x10e370
movl %r15d, %edi
movl %r13d, %esi
movl $0xf, %edx
callq 0xe7d0
movl $0x1e0, %r13d           # imm = 0x1E0
xorl %eax, %eax
cmpl %r13d, (%r12)
setl %al
movl %r14d, %r15d
subl %eax, %r15d
negl %eax
leal (%r14,%rax), %edi
addl $0x8, %edi
leal 0x9(%r15), %ebx
leaq 0xe6d79(%rip), %rcx     # 0x10e397
movq -0x38(%rbp), %r12
movl %r12d, %esi
movl $0xf, %edx
callq 0xe7d0
leal 0xa(%r15), %r14d
leaq 0xe6d9d(%rip), %rcx     # 0x10e3d7
movl %ebx, %edi
movl %r12d, %esi
movl $0xf, %edx
callq 0xe7d0
leal 0xb(%r15), %ebx
leaq 0xe6dc5(%rip), %rcx     # 0x10e419
movl %r14d, %edi
movl %r12d, %esi
movl $0xf, %edx
callq 0xe7d0
leaq 0xe6dfd(%rip), %rcx     # 0x10e468
movl %ebx, %edi
movl %r12d, %esi
movl $0xf, %edx
callq 0xe7d0
xorl %eax, %eax
leaq 0x1f1181(%rip), %rcx    # 0x218804
cmpl %r13d, (%rcx)
setl %al
xorl $0x5, %eax
leal (%rax,%r15), %ebx
addl $0x8, %ebx
leaq 0x314b86(%rip), %r14    # 0x33c220
leaq 0xe6e0e(%rip), %rsi     # 0x10e4af
leaq 0x1495e8(%rip), %rdx    # 0x170c90
movq %r14, %rdi
xorl %eax, %eax
callq 0x9060
movl %ebx, %edi
movl %r12d, %esi
movl $0xa, %edx
movq %r14, %rcx
callq 0xe7d0
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0xab5f
leaq 0x2e5ddf(%rip), %rax    # 0x30d4bd
movzbl (%rax), %eax
movq %r12, %rdi
cmpl $0x80, %eax
je 0x2770c
cmpl $0x3, %eax
je 0x27700
testl %eax, %eax
jne 0x27718
leaq 0xe66a3(%rip), %rcx     # 0x10dd9e
jmp 0x26fe7
leaq 0xe667a(%rip), %rcx     # 0x10dd81
jmp 0x26fe7
leaq 0xe66a8(%rip), %rcx     # 0x10ddbb
jmp 0x26fe7
leaq 0xe66bd(%rip), %rcx     # 0x10dddc
jmp 0x26fe7