// File: /workspace/github_c_makefile_star2_O0/neovim[P]libtermkey/driver-csi.c
// Function: register_keys
static int register_keys(void)
{
  int i;

  for(i = 0; i < 64; i++) {
    csi_ss3s[i].sym = TERMKEY_SYM_UNKNOWN;
    ss3s[i].sym     = TERMKEY_SYM_UNKNOWN;
    ss3_kpalts[i] = 0;
  }

  for(i = 0; i < NCSIFUNCS; i++)
    csifuncs[i].sym = TERMKEY_SYM_UNKNOWN;

  register_csi_ss3(TERMKEY_TYPE_KEYSYM, TERMKEY_SYM_UP,    'A');
  register_csi_ss3(TERMKEY_TYPE_KEYSYM, TERMKEY_SYM_DOWN,  'B');
  register_csi_ss3(TERMKEY_TYPE_KEYSYM, TERMKEY_SYM_RIGHT, 'C');
  register_csi_ss3(TERMKEY_TYPE_KEYSYM, TERMKEY_SYM_LEFT,  'D');
  register_csi_ss3(TERMKEY_TYPE_KEYSYM, TERMKEY_SYM_BEGIN, 'E');
  register_csi_ss3(TERMKEY_TYPE_KEYSYM, TERMKEY_SYM_END,   'F');
  register_csi_ss3(TERMKEY_TYPE_KEYSYM, TERMKEY_SYM_HOME,  'H');
  register_csi_ss3(TERMKEY_TYPE_FUNCTION, 1, 'P');
  register_csi_ss3(TERMKEY_TYPE_FUNCTION, 2, 'Q');
  register_csi_ss3(TERMKEY_TYPE_FUNCTION, 3, 'R');
  register_csi_ss3(TERMKEY_TYPE_FUNCTION, 4, 'S');

  register_csi_ss3_full(TERMKEY_TYPE_KEYSYM, TERMKEY_SYM_TAB, TERMKEY_KEYMOD_SHIFT, TERMKEY_KEYMOD_SHIFT, 'Z');

  register_ss3kpalt(TERMKEY_TYPE_KEYSYM, TERMKEY_SYM_KPENTER,  'M', 0);
  register_ss3kpalt(TERMKEY_TYPE_KEYSYM, TERMKEY_SYM_KPEQUALS, 'X', '=');
  register_ss3kpalt(TERMKEY_TYPE_KEYSYM, TERMKEY_SYM_KPMULT,   'j', '*');
  register_ss3kpalt(TERMKEY_TYPE_KEYSYM, TERMKEY_SYM_KPPLUS,   'k', '+');
  register_ss3kpalt(TERMKEY_TYPE_KEYSYM, TERMKEY_SYM_KPCOMMA,  'l', ',');
  register_ss3kpalt(TERMKEY_TYPE_KEYSYM, TERMKEY_SYM_KPMINUS,  'm', '-');
  register_ss3kpalt(TERMKEY_TYPE_KEYSYM, TERMKEY_SYM_KPPERIOD, 'n', '.');
  register_ss3kpalt(TERMKEY_TYPE_KEYSYM, TERMKEY_SYM_KPDIV,    'o', '/');
  register_ss3kpalt(TERMKEY_TYPE_KEYSYM, TERMKEY_SYM_KP0,      'p', '0');
  register_ss3kpalt(TERMKEY_TYPE_KEYSYM, TERMKEY_SYM_KP1,      'q', '1');
  register_ss3kpalt(TERMKEY_TYPE_KEYSYM, TERMKEY_SYM_KP2,      'r', '2');
  register_ss3kpalt(TERMKEY_TYPE_KEYSYM, TERMKEY_SYM_KP3,      's', '3');
  register_ss3kpalt(TERMKEY_TYPE_KEYSYM, TERMKEY_SYM_KP4,      't', '4');
  register_ss3kpalt(TERMKEY_TYPE_KEYSYM, TERMKEY_SYM_KP5,      'u', '5');
  register_ss3kpalt(TERMKEY_TYPE_KEYSYM, TERMKEY_SYM_KP6,      'v', '6');
  register_ss3kpalt(TERMKEY_TYPE_KEYSYM, TERMKEY_SYM_KP7,      'w', '7');
  register_ss3kpalt(TERMKEY_TYPE_KEYSYM, TERMKEY_SYM_KP8,      'x', '8');
  register_ss3kpalt(TERMKEY_TYPE_KEYSYM, TERMKEY_SYM_KP9,      'y', '9');

  register_csifunc(TERMKEY_TYPE_KEYSYM, TERMKEY_SYM_FIND,      1);
  register_csifunc(TERMKEY_TYPE_KEYSYM, TERMKEY_SYM_INSERT,    2);
  register_csifunc(TERMKEY_TYPE_KEYSYM, TERMKEY_SYM_DELETE,    3);
  register_csifunc(TERMKEY_TYPE_KEYSYM, TERMKEY_SYM_SELECT,    4);
  register_csifunc(TERMKEY_TYPE_KEYSYM, TERMKEY_SYM_PAGEUP,    5);
  register_csifunc(TERMKEY_TYPE_KEYSYM, TERMKEY_SYM_PAGEDOWN,  6);
  register_csifunc(TERMKEY_TYPE_KEYSYM, TERMKEY_SYM_HOME,      7);
  register_csifunc(TERMKEY_TYPE_KEYSYM, TERMKEY_SYM_END,       8);

  register_csifunc(TERMKEY_TYPE_FUNCTION, 1,  11);
  register_csifunc(TERMKEY_TYPE_FUNCTION, 2,  12);
  register_csifunc(TERMKEY_TYPE_FUNCTION, 3,  13);
  register_csifunc(TERMKEY_TYPE_FUNCTION, 4,  14);
  register_csifunc(TERMKEY_TYPE_FUNCTION, 5,  15);
  register_csifunc(TERMKEY_TYPE_FUNCTION, 6,  17);
  register_csifunc(TERMKEY_TYPE_FUNCTION, 7,  18);
  register_csifunc(TERMKEY_TYPE_FUNCTION, 8,  19);
  register_csifunc(TERMKEY_TYPE_FUNCTION, 9,  20);
  register_csifunc(TERMKEY_TYPE_FUNCTION, 10, 21);
  register_csifunc(TERMKEY_TYPE_FUNCTION, 11, 23);
  register_csifunc(TERMKEY_TYPE_FUNCTION, 12, 24);
  register_csifunc(TERMKEY_TYPE_FUNCTION, 13, 25);
  register_csifunc(TERMKEY_TYPE_FUNCTION, 14, 26);
  register_csifunc(TERMKEY_TYPE_FUNCTION, 15, 28);
  register_csifunc(TERMKEY_TYPE_FUNCTION, 16, 29);
  register_csifunc(TERMKEY_TYPE_FUNCTION, 17, 31);
  register_csifunc(TERMKEY_TYPE_FUNCTION, 18, 32);
  register_csifunc(TERMKEY_TYPE_FUNCTION, 19, 33);
  register_csifunc(TERMKEY_TYPE_FUNCTION, 20, 34);

  csi_handlers['u' - 0x40] = &handle_csi_u;

  csi_handlers['M' - 0x40] = &handle_csi_m;
  csi_handlers['m' - 0x40] = &handle_csi_m;

  csi_handlers['R' - 0x40] = &handle_csi_R;

  csi_handlers['y' - 0x40] = &handle_csi_y;

  keyinfo_initialised = 1;
  return 1;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movl $0x0, -0x4(%rbp)
cmpl $0x40, -0x4(%rbp)
jge 0x7001
movslq -0x4(%rbp), %rcx
leaq 0x6b20(%rip), %rax      # 0xdae0
shlq $0x4, %rcx
addq %rcx, %rax
movl $0xffffffff, 0x4(%rax)  # imm = 0xFFFFFFFF
movslq -0x4(%rbp), %rcx
leaq 0x6f07(%rip), %rax      # 0xdee0
shlq $0x4, %rcx
addq %rcx, %rax
movl $0xffffffff, 0x4(%rax)  # imm = 0xFFFFFFFF
movslq -0x4(%rbp), %rcx
leaq 0x72ee(%rip), %rax      # 0xe2e0
movb $0x0, (%rax,%rcx)
movl -0x4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x4(%rbp)
jmp 0x6faf
movl $0x0, -0x4(%rbp)
movslq -0x4(%rbp), %rax
cmpq $0x23, %rax
jae 0x7036
movslq -0x4(%rbp), %rcx
leaq 0x7303(%rip), %rax      # 0xe320
shlq $0x4, %rcx
addq %rcx, %rax
movl $0xffffffff, 0x4(%rax)  # imm = 0xFFFFFFFF
movl -0x4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x4(%rbp)
jmp 0x7008
movl $0x2, %edi
movl $0x7, %esi
movl $0x41, %edx
callq 0x7570
movl $0x2, %edi
movl $0x8, %esi
movl $0x42, %edx
callq 0x7570
movl $0x2, %edi
movl $0xa, %esi
movl $0x43, %edx
callq 0x7570
movl $0x2, %edi
movl $0x9, %esi
movl $0x44, %edx
callq 0x7570
movl $0x2, %edi
movl $0xb, %esi
movl $0x45, %edx
callq 0x7570
movl $0x2, %edi
movl $0x13, %esi
movl $0x46, %edx
callq 0x7570
movl $0x2, %edi
movl $0x12, %esi
movl $0x48, %edx
callq 0x7570
movl $0x1, %esi
movl $0x50, %edx
movl %esi, %edi
callq 0x7570
movl $0x1, %edi
movl $0x2, %esi
movl $0x51, %edx
callq 0x7570
movl $0x1, %edi
movl $0x3, %esi
movl $0x52, %edx
callq 0x7570
movl $0x1, %edi
movl $0x4, %esi
movl $0x53, %edx
callq 0x7570
movl $0x2, %esi
movl $0x1, %ecx
movl $0x5a, %r8d
movl %esi, %edi
movl %ecx, %edx
callq 0x75a0
movl $0x2, %edi
movl $0x34, %esi
movl $0x4d, %edx
xorl %ecx, %ecx
callq 0x7670
movl $0x2, %edi
movl $0x3b, %esi
movl $0x58, %edx
movl $0x3d, %ecx
callq 0x7670
movl $0x2, %edi
movl $0x37, %esi
movl $0x6a, %edx
movl $0x2a, %ecx
callq 0x7670
movl $0x2, %edi
movl $0x35, %esi
movl $0x6b, %edx
movl $0x2b, %ecx
callq 0x7670
movl $0x2, %edi
movl $0x39, %esi
movl $0x6c, %edx
movl $0x2c, %ecx
callq 0x7670
movl $0x2, %edi
movl $0x36, %esi
movl $0x6d, %edx
movl $0x2d, %ecx
callq 0x7670
movl $0x2, %edi
movl $0x3a, %esi
movl $0x6e, %edx
movl $0x2e, %ecx
callq 0x7670
movl $0x2, %edi
movl $0x38, %esi
movl $0x6f, %edx
movl $0x2f, %ecx
callq 0x7670
movl $0x2, %edi
movl $0x2a, %esi
movl $0x70, %edx
movl $0x30, %ecx
callq 0x7670
movl $0x2, %edi
movl $0x2b, %esi
movl $0x71, %edx
movl $0x31, %ecx
callq 0x7670
movl $0x2, %edi
movl $0x2c, %esi
movl $0x72, %edx
movl $0x32, %ecx
callq 0x7670
movl $0x2, %edi
movl $0x2d, %esi
movl $0x73, %edx
movl $0x33, %ecx
callq 0x7670
movl $0x2, %edi
movl $0x2e, %esi
movl $0x74, %edx
movl $0x34, %ecx
callq 0x7670
movl $0x2, %edi
movl $0x2f, %esi
movl $0x75, %edx
movl $0x35, %ecx
callq 0x7670
movl $0x2, %edi
movl $0x30, %esi
movl $0x76, %edx
movl $0x36, %ecx
callq 0x7670
movl $0x2, %edi
movl $0x31, %esi
movl $0x77, %edx
movl $0x37, %ecx
callq 0x7670
movl $0x2, %edi
movl $0x32, %esi
movl $0x78, %edx
movl $0x38, %ecx
callq 0x7670
movl $0x2, %edi
movl $0x33, %esi
movl $0x79, %edx
movl $0x39, %ecx
callq 0x7670
movl $0x2, %edi
movl $0xc, %esi
movl $0x1, %edx
callq 0x7730
movl $0x2, %edx
movl $0xd, %esi
movl %edx, %edi
callq 0x7730
movl $0x2, %edi
movl $0xe, %esi
movl $0x3, %edx
callq 0x7730
movl $0x2, %edi
movl $0xf, %esi
movl $0x4, %edx
callq 0x7730
movl $0x2, %edi
movl $0x10, %esi
movl $0x5, %edx
callq 0x7730
movl $0x2, %edi
movl $0x11, %esi
movl $0x6, %edx
callq 0x7730
movl $0x2, %edi
movl $0x12, %esi
movl $0x7, %edx
callq 0x7730
movl $0x2, %edi
movl $0x13, %esi
movl $0x8, %edx
callq 0x7730
movl $0x1, %esi
movl $0xb, %edx
movl %esi, %edi
callq 0x7730
movl $0x1, %edi
movl $0x2, %esi
movl $0xc, %edx
callq 0x7730
movl $0x1, %edi
movl $0x3, %esi
movl $0xd, %edx
callq 0x7730
movl $0x1, %edi
movl $0x4, %esi
movl $0xe, %edx
callq 0x7730
movl $0x1, %edi
movl $0x5, %esi
movl $0xf, %edx
callq 0x7730
movl $0x1, %edi
movl $0x6, %esi
movl $0x11, %edx
callq 0x7730
movl $0x1, %edi
movl $0x7, %esi
movl $0x12, %edx
callq 0x7730
movl $0x1, %edi
movl $0x8, %esi
movl $0x13, %edx
callq 0x7730
movl $0x1, %edi
movl $0x9, %esi
movl $0x14, %edx
callq 0x7730
movl $0x1, %edi
movl $0xa, %esi
movl $0x15, %edx
callq 0x7730
movl $0x1, %edi
movl $0xb, %esi
movl $0x17, %edx
callq 0x7730
movl $0x1, %edi
movl $0xc, %esi
movl $0x18, %edx
callq 0x7730
movl $0x1, %edi
movl $0xd, %esi
movl $0x19, %edx
callq 0x7730
movl $0x1, %edi
movl $0xe, %esi
movl $0x1a, %edx
callq 0x7730
movl $0x1, %edi
movl $0xf, %esi
movl $0x1c, %edx
callq 0x7730
movl $0x1, %edi
movl $0x10, %esi
movl $0x1d, %edx
callq 0x7730
movl $0x1, %edi
movl $0x11, %esi
movl $0x1f, %edx
callq 0x7730
movl $0x1, %edi
movl $0x12, %esi
movl $0x20, %edx
callq 0x7730
movl $0x1, %edi
movl $0x13, %esi
movl $0x21, %edx
callq 0x7730
movl $0x1, %edi
movl $0x14, %esi
movl $0x22, %edx
callq 0x7730
leaq 0x2a8(%rip), %rax       # 0x77c0
movq %rax, 0x71d9(%rip)      # 0xe6f8
leaq 0x34a(%rip), %rax       # 0x7870
movq %rax, 0x708b(%rip)      # 0xe5b8
leaq 0x33c(%rip), %rax       # 0x7870
movq %rax, 0x717d(%rip)      # 0xe6b8
leaq 0x48e(%rip), %rax       # 0x79d0
movq %rax, 0x7097(%rip)      # 0xe5e0
leaq 0x510(%rip), %rax       # 0x7a60
movq %rax, 0x71c1(%rip)      # 0xe718
movl $0x1, 0x656f(%rip)      # 0xdad0
movl $0x1, %eax
addq $0x10, %rsp
popq %rbp
retq
nopl (%rax)