// File: /workspace/github_cpp_makefile_star2_O3/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 $0x38, %rsp
callq 0x65c0d
leaq 0x1f4b2c(%rip), %rax    # 0x21b3e1
movb $0x1, (%rax)
leaq 0x2e5ee9(%rip), %rbx    # 0x30c7a8
cmpb $0x4b, (%rbx)
jne 0x268e8
movl $0xffffff9c, %edi       # imm = 0xFFFFFF9C
callq 0x27479
movb $0x0, (%rbx)
leaq 0x314f54(%rip), %rax    # 0x33b82c
movl $0x0, (%rax)
movl $0x69, %edi
callq 0xd8ba5
leaq 0x2e67fd(%rip), %rax    # 0x30d0ec
cmpb $0x0, (%rax)
je 0x26934
xorl %ecx, %ecx
movb %cl, (%rax)
leaq 0x1f1ed9(%rip), %rax    # 0x2187d8
movl $0x0, (%rax)
leaq 0x1f1f4f(%rip), %rax    # 0x21885b
movb %cl, (%rax)
leaq 0x1f1f45(%rip), %rax    # 0x21885a
movb %cl, (%rax)
callq 0xeceb
callq 0xfa97
addq $0x38, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x27570
callq 0xeceb
callq 0xfa97
leaq 0x1f1eec(%rip), %rax    # 0x218831
cmpb $0x74, (%rax)
jne 0x2697e
leaq 0x1f1e87(%rip), %rax    # 0x2187d8
leaq 0x1f1f03(%rip), %rcx    # 0x21885b
movb $0x1, %dl
movb %dl, (%rcx)
leaq 0x1f1ef7(%rip), %rcx    # 0x21885a
movb %dl, (%rcx)
cmpl $0x0, (%rax)
jne 0x2699f
leaq 0x1f1f1f(%rip), %rax    # 0x218890
movl (%rax), %r15d
incl %r15d
movl $0x3, %ebx
jmp 0x269ef
leaq 0x1f1e53(%rip), %rax    # 0x2187d8
movl $0x2, (%rax)
leaq 0x1f1ec9(%rip), %rax    # 0x21885b
movb $0x1, %cl
movb %cl, (%rax)
leaq 0x1f1ebd(%rip), %rax    # 0x21885a
movb %cl, (%rax)
leaq 0x1f1e5a(%rip), %rax    # 0x218800
leaq 0x1fcb97(%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 0x1f1e2c(%rip), %rax    # 0x218804
cmpl $0x1e0, (%rax)          # imm = 0x1E0
setge %al
andb %dl, %al
movzbl %al, %r15d
leal (%rdx,%rdx,2), %ebx
callq 0xeceb
leaq 0x1f1e12(%rip), %rax    # 0x218808
cmpl $0x64, (%rax)
leaq 0x21853e(%rip), %rax    # 0x23ef3e
movb (%rax), %al
jg 0x26a81
testb %al, %al
leaq 0xe7110(%rip), %rax     # 0x10db1d
leaq 0xe70e6(%rip), %rsi     # 0x10dafa
cmoveq %rax, %rsi
leaq 0x315801(%rip), %r14    # 0x33c220
leaq 0xe70cb(%rip), %rdx     # 0x10daf1
movq %r14, %rdi
xorl %eax, %eax
callq 0x9060
movl %r15d, %edi
movl %ebx, %esi
movl $0xf, %edx
movq %r14, %rcx
callq 0xe787
leal 0x1(%r15), %r12d
leaq 0xe716f(%rip), %rsi     # 0x10dbbc
leaq 0xe70f9(%rip), %rdx     # 0x10db4d
leaq 0x1fcaf5(%rip), %rcx    # 0x223550
leaq 0xe70f7(%rip), %r8      # 0x10db59
leaq 0x10b02d(%rip), %r9     # 0x131a96
movq %r14, %rdi
xorl %eax, %eax
callq 0x9060
movl $0x4, %r14d
movl $0x2, %r13d
jmp 0x26ad9
testb %al, %al
leaq 0xe7143(%rip), %rax     # 0x10dbcd
leaq 0xe7106(%rip), %rsi     # 0x10db97
cmoveq %rax, %rsi
leaq 0x10affa(%rip), %rax    # 0x131a96
movq %rax, (%rsp)
leaq 0x315779(%rip), %rdi    # 0x33c220
leaq 0xe7043(%rip), %rdx     # 0x10daf1
leaq 0xe7098(%rip), %rcx     # 0x10db4d
leaq 0x1fca94(%rip), %r8     # 0x223550
leaq 0xe7096(%rip), %r9      # 0x10db59
xorl %eax, %eax
callq 0x9060
movl $0x3, %r14d
movl $0x1, %r13d
movl %r15d, %r12d
leaq 0x315740(%rip), %rcx    # 0x33c220
movl %r12d, %edi
movl %ebx, %esi
movl $0xf, %edx
callq 0xe787
addl %r15d, %r13d
leaq 0xe7069(%rip), %rcx     # 0x10db62
movl %r13d, %edi
movl %ebx, %esi
movl $0xf, %edx
callq 0xe787
addl %r15d, %r14d
leaq 0x2183a6(%rip), %rax    # 0x23eeb8
cmpq $0x0, (%rax)
movq %r14, %r13
je 0x26b78
leaq 0x21839e(%rip), %rax    # 0x23eec0
movl (%rax), %ecx
leaq 0x218399(%rip), %rax    # 0x23eec4
movl (%rax), %r8d
leaq 0x218393(%rip), %rax    # 0x23eec8
movl (%rax), %r9d
leaq 0x3156e1(%rip), %r15    # 0x33c220
leaq 0xe70ca(%rip), %rsi     # 0x10dc10
leaq 0x2182e3(%rip), %rdx    # 0x23ee30
movq %r15, %rdi
xorl %eax, %eax
callq 0x9060
movl %r13d, %edi
movl %ebx, %esi
movl $0xf, %edx
movq %r15, %rcx
callq 0xe787
movl $0x1, %edi
callq 0x1ce49
jmp 0x27410
leaq 0x2183bf(%rip), %r12    # 0x23ef3e
cmpb $0x0, (%r12)
movl %r13d, %r15d
movq %r13, -0x50(%rbp)
jne 0x26bb2
leal 0x1(%r13), %r15d
leaq 0xe70b4(%rip), %rcx     # 0x10dc4c
movl %r13d, %edi
movl %ebx, %esi
movl $0xf, %edx
callq 0xe787
cmpb $0x0, (%r12)
je 0x27449
leaq 0xe70b3(%rip), %rcx     # 0x10dc6c
movl %r15d, %edi
movl %ebx, %esi
movl $0xf, %edx
callq 0xe787
leal 0x1(%r15), %edi
leal 0x2(%r15), %r13d
leaq 0xe70d6(%rip), %rcx     # 0x10dcad
movl %ebx, %esi
movl $0xf, %edx
callq 0xe787
leaq 0xe716b(%rip), %r14     # 0x10dd55
cmpb $0x0, (%r12)
movq %rbx, -0x38(%rbp)
je 0x26bfd
movl %r13d, %r15d
jmp 0x26c97
movq %rbx, %r12
leaq 0x1f1cc9(%rip), %rbx    # 0x2188d0
movq (%rbx), %rax
cmpq $0x1000000, %rax        # imm = 0x1000000
leaq 0xe70d2(%rip), %rcx     # 0x10dce9
leaq 0xe70ee(%rip), %rdx     # 0x10dd0c
cmoveq %rcx, %rdx
cmpq $0x20000, %rax          # imm = 0x20000
leaq 0xe7097(%rip), %rcx     # 0x10dcc6
cmovneq %rdx, %rcx
leal 0x3(%r15), %eax
movl %eax, -0x40(%rbp)
movl %r13d, %edi
movl %r12d, %esi
movl $0xf, %edx
callq 0xe787
addl $0x4, %r15d
leaq 0xe70de(%rip), %rcx     # 0x10dd33
movl -0x40(%rbp), %edi
movl %r12d, %esi
movl $0xf, %edx
callq 0xe787
leaq 0x2182d2(%rip), %rax    # 0x23ef3e
cmpb $0x0, (%rax)
jne 0x26c93
movq $-0x10000, %rax         # imm = 0xFFFF0000
addq (%rbx), %rax
testq $-0x10001, %rax         # imm = 0xFFFEFFFF
leaq 0xe70cd(%rip), %rax     # 0x10dd55
leaq 0xe70e0(%rip), %r14     # 0x10dd6f
cmoveq %rax, %r14
movq -0x38(%rbp), %rbx
leal 0x1(%r15), %r12d
movl %r15d, %edi
movl %ebx, %esi
movl $0xf, %edx
movq %r14, %rcx
callq 0xe787
leal 0x2(%r15), %r13d
leaq 0xe70de(%rip), %rcx     # 0x10dd96
movl %r12d, %edi
movl %ebx, %esi
movl $0xf, %edx
callq 0xe787
leaq 0x218270(%rip), %r12    # 0x23ef3e
cmpb $0x0, (%r12)
jne 0x26cf2
addl $0x3, %r15d
leaq 0xe70d9(%rip), %rcx     # 0x10ddb9
movl %r13d, %edi
movl %ebx, %esi
movl $0xf, %edx
callq 0xe787
movl %r15d, %r13d
leal 0x1(%r13), %r14d
leaq 0xe70dc(%rip), %rcx     # 0x10ddd9
movl %r13d, %edi
movl %ebx, %esi
movl $0xf, %edx
callq 0xe787
cmpb $0x0, (%r12)
jne 0x26d5e
leaq 0x1f1bb6(%rip), %rax    # 0x2188d0
cmpq $0x20000, (%rax)        # imm = 0x20000
jne 0x27423
leaq 0xe70d2(%rip), %rcx     # 0x10de00
leal 0x2(%r13), %r15d
movl %r14d, %edi
movl %ebx, %esi
movl $0xf, %edx
callq 0xe787
addl $0x3, %r13d
leaq 0xe713d(%rip), %rcx     # 0x10de89
movl %r15d, %edi
movl %ebx, %esi
movl $0xf, %edx
callq 0xe787
movl %r13d, %r14d
leal 0x1(%r14), %r15d
leaq 0xe713c(%rip), %rcx     # 0x10dea5
movl %r14d, %edi
movl %ebx, %esi
movl $0xf, %edx
callq 0xe787
leal 0x2(%r14), %r13d
leal 0x3(%r14), %r12d
movq %r14, -0x40(%rbp)
addl $0x4, %r14d
leaq 0x2181af(%rip), %rax    # 0x23ef3e
cmpb $0x0, (%rax)
je 0x26ddf
leaq 0xe711b(%rip), %rcx     # 0x10deb6
movl %r15d, %edi
movl %ebx, %esi
movl $0xf, %edx
callq 0xe787
leaq 0xe7120(%rip), %rcx     # 0x10ded1
movl %r13d, %edi
movl %ebx, %esi
movl $0xf, %edx
callq 0xe787
leaq 0xe7126(%rip), %rcx     # 0x10deed
movl %r12d, %edi
movl %ebx, %esi
movl $0xf, %edx
callq 0xe787
leaq 0xe7125(%rip), %rcx     # 0x10df02
jmp 0x26e4b
leaq 0xe7136(%rip), %rcx     # 0x10df1c
movl %r15d, %edi
movl %ebx, %esi
movl $0xf, %edx
callq 0xe787
leaq 0xe70d5(%rip), %rcx     # 0x10ded1
movl %r13d, %edi
movl %ebx, %esi
movl $0xf, %edx
callq 0xe787
leaq 0xe70db(%rip), %rcx     # 0x10deed
movl %r12d, %edi
movl %ebx, %esi
movl $0xf, %edx
callq 0xe787
leaq 0x1f1aa8(%rip), %rax    # 0x2188d0
movq $-0x10000, %rcx         # imm = 0xFFFF0000
addq (%rax), %rcx
testq $-0x10001, %rcx         # imm = 0xFFFEFFFF
leaq 0xe70f4(%rip), %rax     # 0x10df34
leaq 0xe7107(%rip), %rcx     # 0x10df4e
cmoveq %rax, %rcx
movl %r14d, %edi
movl %ebx, %esi
movl $0xf, %edx
callq 0xe787
movq -0x40(%rbp), %rax
leal 0x5(%rax), %edi
leaq 0xe7100(%rip), %rcx     # 0x10df68
movl %ebx, %esi
movl $0xf, %edx
callq 0xe787
leal 0x28(%rbx), %r13d
leaq 0x2180bf(%rip), %rax    # 0x23ef3e
cmpb $0x0, (%rax)
je 0x26e8d
leaq 0xe70f0(%rip), %rcx     # 0x10df7b
jmp 0x26eb7
leaq 0x1f1a3c(%rip), %rax    # 0x2188d0
movq $-0x10000, %rcx         # imm = 0xFFFF0000
addq (%rax), %rcx
testq $-0x10001, %rcx         # imm = 0xFFFEFFFF
leaq 0xe70cf(%rip), %rax     # 0x10df7b
leaq 0xe70e9(%rip), %rcx     # 0x10df9c
cmoveq %rax, %rcx
movq -0x50(%rbp), %rbx
leal 0x1(%rbx), %r14d
movl %ebx, %edi
movl %r13d, %esi
movl $0xf, %edx
callq 0xe787
leal 0x2(%rbx), %r15d
leaq 0xe70e7(%rip), %rcx     # 0x10dfc0
movl %r14d, -0x48(%rbp)
movl %r14d, %edi
movl %r13d, %esi
movl $0xf, %edx
callq 0xe787
leal 0x3(%rbx), %r12d
leaq 0x218046(%rip), %rax    # 0x23ef3e
cmpb $0x0, (%rax)
leaq 0x1f4332(%rip), %rax    # 0x21b234
movb (%rax), %al
movl %r15d, -0x44(%rbp)
je 0x26f4d
testb %al, %al
leaq 0xe70ec(%rip), %rax     # 0x10dfff
leaq 0xe70c7(%rip), %rcx     # 0x10dfe1
cmoveq %rax, %rcx
movl %r15d, %edi
movl %r13d, %esi
movl $0xf, %edx
callq 0xe787
addl $0x4, %ebx
leaq 0xe70e4(%rip), %rcx     # 0x10e01c
movl %r12d, %edi
movl %r13d, %esi
movl $0xf, %edx
callq 0xe787
movl %ebx, %r12d
jmp 0x26f71
testb %al, %al
leaq 0xe710f(%rip), %rax     # 0x10e065
leaq 0xe70e5(%rip), %rcx     # 0x10e042
cmoveq %rax, %rcx
movl %r15d, %edi
movl %r13d, %esi
movl $0xf, %edx
callq 0xe787
leaq 0x3152a8(%rip), %r14    # 0x33c220
leal 0x1(%r12), %r15d
leaq 0x217fba(%rip), %rax    # 0x23ef3e
cmpb $0x0, (%rax)
jne 0x26fac
leaq 0xe708c(%rip), %rcx     # 0x10e01c
movl %r12d, %edi
movl %r13d, %esi
movl $0xf, %edx
callq 0xe787
movl %r12d, %eax
addl $0x2, %eax
movl %r15d, %r12d
movl %eax, %r15d
movq -0x40(%rbp), %rax
addl $0x6, %eax
movl %eax, -0x2c(%rbp)
leaq 0xe70ca(%rip), %rcx     # 0x10e087
movl %r12d, %edi
movl %r13d, %esi
movl $0xf, %edx
callq 0xe787
movups 0xe70e3(%rip), %xmm0    # 0x10e0b7
movups %xmm0, 0xc(%r14)
movups 0xe70cb(%rip), %xmm0    # 0x10e0ab
movaps %xmm0, (%r14)
leal 0x1(%r15), %r12d
movl %r15d, %edi
movl %r13d, %esi
movl $0xf, %edx
movq %r14, %rcx
callq 0xe787
leaq 0x1f189e(%rip), %rax    # 0x2188a0
movl (%rax), %eax
testl %eax, %eax
movl $0x18, %edx
cmovnel %eax, %edx
leaq 0xe70b2(%rip), %rsi     # 0x10e0c7
movq %r14, %rdi
xorl %eax, %eax
callq 0x9060
leal 0x2(%r15), %ebx
movl %r12d, %edi
movl %r13d, %esi
movl $0xf, %edx
movq %r14, %rcx
callq 0xe787
leaq 0x217f01(%rip), %rax    # 0x23ef3e
cmpb $0x0, (%rax)
leaq 0xe70bb(%rip), %rax     # 0x10e102
leaq 0xe7099(%rip), %rcx     # 0x10e0e7
cmoveq %rax, %rcx
leal 0x3(%r15), %r12d
movl %ebx, %edi
movl %r13d, %esi
movl $0xf, %edx
callq 0xe787
leal 0x4(%r15), %ebx
leaq 0xe70b6(%rip), %rcx     # 0x10e126
movl %r12d, %edi
movl %r13d, %esi
movl $0xf, %edx
callq 0xe787
leal 0x5(%r15), %r12d
leaq 0xe70bf(%rip), %rcx     # 0x10e14a
movl %ebx, %edi
movl %r13d, %esi
movl $0xf, %edx
callq 0xe787
leal 0x6(%r15), %ebx
leaq 0xe70c9(%rip), %rcx     # 0x10e16e
movl %r12d, %edi
movl %r13d, %esi
movl $0xf, %edx
callq 0xe787
leaq 0x217e82(%rip), %rax    # 0x23ef3e
cmpb $0x0, (%rax)
leaq 0xe70ec(%rip), %rax     # 0x10e1b2
leaq 0xe70c3(%rip), %rcx     # 0x10e190
cmoveq %rax, %rcx
leal 0x7(%r15), %r12d
movl %ebx, %edi
movl %r13d, %esi
movl $0xf, %edx
callq 0xe787
leal 0x8(%r15), %ebx
leaq 0xe70e8(%rip), %rcx     # 0x10e1d7
movl %r12d, %edi
movl %r13d, %esi
movl $0xf, %edx
callq 0xe787
leaq 0x149b82(%rip), %rax    # 0x170c88
movq (%rax), %rdx
leaq 0xe70ef(%rip), %rsi     # 0x10e1ff
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 0xe787
leal 0xa(%r15), %ebx
leaq 0xe70de(%rip), %rcx     # 0x10e219
movl %r12d, %edi
movl %r13d, %esi
movl $0xf, %edx
callq 0xe787
addl $0xb, %r15d
leaq 0xe70e0(%rip), %rcx     # 0x10e236
movl %ebx, %edi
movl %r13d, %esi
movl $0xf, %edx
callq 0xe787
leaq 0xe70dd(%rip), %rcx     # 0x10e249
movl %r15d, %edi
movl %r13d, %esi
movl $0xf, %edx
callq 0xe787
leaq 0x1f1655(%rip), %rax    # 0x2187d8
cmpl $0x0, (%rax)
je 0x271b6
leaq 0x1f1675(%rip), %rax    # 0x218804
movq -0x40(%rbp), %rcx
addl $0x7, %ecx
cmpl $0x1e0, (%rax)          # imm = 0x1E0
cmovll -0x2c(%rbp), %ecx
leal 0x1(%rcx), %ebx
leal 0x2(%rcx), %r12d
movl %ecx, %r14d
movq -0x38(%rbp), %rax
movl %eax, %r15d
movl %ecx, -0x2c(%rbp)
jmp 0x271c9
movq -0x38(%rbp), %rax
leal 0x50(%rax), %r15d
movq -0x50(%rbp), %r14
movl -0x48(%rbp), %ebx
movl -0x44(%rbp), %r12d
leaq 0xe7097(%rip), %rcx     # 0x10e267
movl %r14d, %edi
movl %r15d, %esi
movl $0xf, %edx
callq 0xe787
leaq 0xe70a8(%rip), %rcx     # 0x10e28f
movl %ebx, %edi
movl %r15d, %esi
movl $0xf, %edx
callq 0xe787
leal 0x3(%r14), %ebx
leaq 0xe70af(%rip), %rcx     # 0x10e2b0
movl %r12d, %edi
movl %r15d, %esi
movl $0xf, %edx
callq 0xe787
leal 0x4(%r14), %r12d
leaq 0xe70bc(%rip), %rcx     # 0x10e2d8
movl %ebx, %edi
movl %r15d, %esi
movl $0xf, %edx
callq 0xe787
leal 0x5(%r14), %ebx
leaq 0xe70c8(%rip), %rcx     # 0x10e2fe
movl %r12d, %edi
movl %r15d, %esi
movl $0xf, %edx
callq 0xe787
addl $0x6, %r14d
leaq 0xe70d4(%rip), %rcx     # 0x10e325
movl %ebx, %edi
movl %r15d, %esi
movl $0xf, %edx
callq 0xe787
leaq 0x1f1571(%rip), %rax    # 0x2187d8
cmpl $0x0, (%rax)
setne %al
leaq 0x1f1590(%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 0xe70b3(%rip), %rcx     # 0x10e349
movl %r14d, %edi
movl %r13d, %esi
movl $0xf, %edx
callq 0xe787
leal 0x2(%r14), %r15d
leaq 0xe70ba(%rip), %rcx     # 0x10e36b
movl %ebx, %edi
movl %r13d, %esi
movl $0xf, %edx
callq 0xe787
leal 0x3(%r14), %ebx
leaq 0xe70c1(%rip), %rcx     # 0x10e38c
movl %r15d, %edi
movl %r13d, %esi
movl $0xf, %edx
callq 0xe787
leal 0x4(%r14), %r15d
leaq 0xe70bf(%rip), %rcx     # 0x10e3a5
movl %ebx, %edi
movl %r13d, %esi
movl $0xf, %edx
callq 0xe787
leal 0x5(%r14), %ebx
leaq 0xe70c0(%rip), %rcx     # 0x10e3c0
movl %r15d, %edi
movl %r13d, %esi
movl $0xf, %edx
callq 0xe787
leal 0x6(%r14), %r15d
leaq 0xe70ca(%rip), %rcx     # 0x10e3e5
movl %ebx, %edi
movl %r13d, %esi
movl $0xf, %edx
callq 0xe787
leaq 0xe70d3(%rip), %rcx     # 0x10e404
movl %r15d, %edi
movl %r13d, %esi
movl $0xf, %edx
callq 0xe787
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 0xe70c1(%rip), %rcx     # 0x10e42b
movq -0x38(%rbp), %r12
movl %r12d, %esi
movl $0xf, %edx
callq 0xe787
leal 0xa(%r15), %r14d
leaq 0xe70e5(%rip), %rcx     # 0x10e46b
movl %ebx, %edi
movl %r12d, %esi
movl $0xf, %edx
callq 0xe787
leal 0xb(%r15), %ebx
leaq 0xe710d(%rip), %rcx     # 0x10e4ad
movl %r14d, %edi
movl %r12d, %esi
movl $0xf, %edx
callq 0xe787
leaq 0xe7145(%rip), %rcx     # 0x10e4fc
movl %ebx, %edi
movl %r12d, %esi
movl $0xf, %edx
callq 0xe787
xorl %eax, %eax
leaq 0x1f1435(%rip), %rcx    # 0x218804
cmpl %r13d, (%rcx)
setl %al
xorl $0x5, %eax
leal (%rax,%r15), %ebx
addl $0x8, %ebx
leaq 0x314e3a(%rip), %r14    # 0x33c220
leaq 0xe7156(%rip), %rsi     # 0x10e543
leaq 0x14989c(%rip), %rdx    # 0x170c90
movq %r14, %rdi
xorl %eax, %eax
callq 0x9060
movl %ebx, %edi
movl %r12d, %esi
movl $0xa, %edx
movq %r14, %rcx
callq 0xe787
addq $0x38, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0xab54
leaq 0x2e6093(%rip), %rax    # 0x30d4bd
movzbl (%rax), %eax
cmpl $0x80, %eax
je 0x27461
cmpl $0x3, %eax
je 0x27455
testl %eax, %eax
jne 0x2746d
leaq 0xe69ee(%rip), %rcx     # 0x10de32
jmp 0x26d2e
leaq 0xe683c(%rip), %rcx     # 0x10dc8c
jmp 0x26bb9
leaq 0xe69b9(%rip), %rcx     # 0x10de15
jmp 0x26d2e
leaq 0xe69e7(%rip), %rcx     # 0x10de4f
jmp 0x26d2e
leaq 0xe69fc(%rip), %rcx     # 0x10de70
jmp 0x26d2e