
wchar_t _rl_rubout_char(wchar_t count,wchar_t key)

{
  byte bVar1;
  int iVar2;
  wchar_t wVar3;
  wchar_t l;
  size_t sVar4;
  ushort **ppuVar5;
  
  iVar2 = rl_point;
  if (count < L'\0') {
    wVar3 = rl_delete(-count,key);
  }
  else if (rl_point == 0) {
    rl_ding();
    wVar3 = L'\x01';
  }
  else if ((count < L'\x02') && (rl_explicit_arg == 0)) {
    sVar4 = __ctype_get_mb_cur_max();
    if ((sVar4 == 1) || (rl_byte_oriented != L'\0')) {
      rl_point = rl_point + L'\xffffffff';
      bVar1 = rl_line_buffer[rl_point];
      rl_delete_text(rl_point,iVar2);
      iVar2 = rl_point;
      wVar3 = L'\0';
      if (rl_point == rl_end) {
        ppuVar5 = __ctype_b_loc();
        if ((*(byte *)((long)*ppuVar5 + (ulong)bVar1 * 2 + 1) & 0x40) != 0) {
          if (_rl_last_c_pos == L'\0') {
            wVar3 = L'\0';
          }
          else {
            l = rl_character_len((uint)bVar1,iVar2);
            _rl_erase_at_end_of_line(l);
          }
        }
      }
    }
    else {
      rl_point = _rl_find_prev_mbchar(rl_line_buffer,rl_point,L'\x01');
      rl_delete_text(rl_point,iVar2);
      wVar3 = L'\0';
    }
  }
  else {
    rl_backward_char(count,key);
    rl_kill_text(iVar2,rl_point);
    wVar3 = L'\0';
  }
  return wVar3;
}



undefined4 _rl_rubout_char(int param_1)

{
  byte bVar1;
  int iVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  size_t sVar5;
  ushort **ppuVar6;
  
  iVar2 = rl_point;
  if (param_1 < 0) {
    uVar3 = rl_delete(-param_1);
  }
  else if (rl_point == 0) {
    rl_ding();
    uVar3 = 1;
  }
  else if ((param_1 < 2) && (rl_explicit_arg == 0)) {
    sVar5 = __ctype_get_mb_cur_max();
    if ((sVar5 == 1) || (rl_byte_oriented != 0)) {
      rl_point = rl_point + -1;
      bVar1 = *(byte *)(rl_line_buffer + rl_point);
      rl_delete_text(rl_point,iVar2);
      iVar2 = rl_point;
      uVar3 = 0;
      if (rl_point == rl_end) {
        ppuVar6 = __ctype_b_loc();
        if ((*(byte *)((long)*ppuVar6 + (ulong)bVar1 * 2 + 1) & 0x40) != 0) {
          if (_rl_last_c_pos == 0) {
            uVar3 = 0;
          }
          else {
            uVar4 = rl_character_len(bVar1,iVar2);
            _rl_erase_at_end_of_line(uVar4);
          }
        }
      }
    }
    else {
      rl_point = _rl_find_prev_mbchar(rl_line_buffer,rl_point,1);
      rl_delete_text(rl_point,iVar2);
      uVar3 = 0;
    }
  }
  else {
    rl_backward_char();
    rl_kill_text(iVar2,rl_point);
    uVar3 = 0;
  }
  return uVar3;
}


PUSH R12
PUSH RBP
PUSH RBX
TEST EDI,EDI
JS 0x001c949b
MOV EBP,dword ptr [0x0021c7b8]
TEST EBP,EBP
JZ 0x001c94a6
CMP EDI,0x1
JG 0x001c947d
MOV EBX,dword ptr [0x00216568]
TEST EBX,EBX
JZ 0x001c94b2
CALL 0x001c7fb7
MOV ESI,dword ptr [0x0021c7b8]
MOV EDI,EBP
CALL 0x001c4c78
MOV EBX,0x0
MOV EAX,EBX
POP RBX
POP RBP
POP R12
RET
NEG EDI
CALL 0x001c9179
MOV EBX,EAX
JMP 0x001c9494
CALL 0x001c7983
MOV EBX,0x1
JMP 0x001c9494
CALL 0x0012d370
CMP RAX,0x1
JZ 0x001c94c9
MOV R12D,dword ptr [0x0021776c]
TEST R12D,R12D
JZ 0x001c9537
MOV EAX,dword ptr [0x0021c7b8]
LEA EDI,[RAX + -0x1]
MOV dword ptr [0x0021c7b8],EDI
MOVSXD RAX,EDI
MOV RDX,qword ptr [0x002164f0]
MOVZX R12D,byte ptr [RDX + RAX*0x1]
MOV ESI,EBP
CALL 0x001c7c50
MOV EBP,dword ptr [0x0021c7b8]
CMP EBP,dword ptr [0x0021c6d8]
JNZ 0x001c9494
CALL 0x0012dd50
MOVZX EDX,R12B
MOV RAX,qword ptr [RAX]
TEST byte ptr [RAX + RDX*0x2 + 0x1],0x40
JZ 0x001c9494
MOV EAX,dword ptr [0x002169e8]
TEST EAX,EAX
JNZ 0x001c9520
MOV EBX,EAX
JMP 0x001c9494
MOVZX EDI,R12B
MOV ESI,EBP
CALL 0x001bf509
MOV EDI,EAX
CALL 0x001bfbc9
JMP 0x001c9494
MOV EDX,0x1
MOV ESI,dword ptr [0x0021c7b8]
MOV RDI,qword ptr [0x002164f0]
CALL 0x001cfb59
MOV dword ptr [0x0021c7b8],EAX
MOV ESI,EBP
MOV EDI,EAX
CALL 0x001c7c50
MOV EBX,R12D
JMP 0x001c9494
(translation_unit "undefined4 _rl_rubout_char(int param_1)\n\n{\n  byte bVar1;\n  int iVar2;\n  undefined4 uVar3;\n  undefined4 uVar4;\n  size_t sVar5;\n  ushort **ppuVar6;\n  \n  iVar2 = rl_point;\n  if (param_1 < 0) {\n    uVar3 = rl_delete(-param_1);\n  }\n  else if (rl_point == 0) {\n    rl_ding();\n    uVar3 = 1;\n  }\n  else if ((param_1 < 2) && (rl_explicit_arg == 0)) {\n    sVar5 = __ctype_get_mb_cur_max();\n    if ((sVar5 == 1) || (rl_byte_oriented != 0)) {\n      rl_point = rl_point + -1;\n      bVar1 = *(byte *)(rl_line_buffer + rl_point);\n      rl_delete_text(rl_point,iVar2);\n      iVar2 = rl_point;\n      uVar3 = 0;\n      if (rl_point == rl_end) {\n        ppuVar6 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar6 + (ulong)bVar1 * 2 + 1) & 0x40) != 0) {\n          if (_rl_last_c_pos == 0) {\n            uVar3 = 0;\n          }\n          else {\n            uVar4 = rl_character_len(bVar1,iVar2);\n            _rl_erase_at_end_of_line(uVar4);\n          }\n        }\n      }\n    }\n    else {\n      rl_point = _rl_find_prev_mbchar(rl_line_buffer,rl_point,1);\n      rl_delete_text(rl_point,iVar2);\n      uVar3 = 0;\n    }\n  }\n  else {\n    rl_backward_char();\n    rl_kill_text(iVar2,rl_point);\n    uVar3 = 0;\n  }\n  return uVar3;\n}\n\n" (function_definition "undefined4 _rl_rubout_char(int param_1)\n\n{\n  byte bVar1;\n  int iVar2;\n  undefined4 uVar3;\n  undefined4 uVar4;\n  size_t sVar5;\n  ushort **ppuVar6;\n  \n  iVar2 = rl_point;\n  if (param_1 < 0) {\n    uVar3 = rl_delete(-param_1);\n  }\n  else if (rl_point == 0) {\n    rl_ding();\n    uVar3 = 1;\n  }\n  else if ((param_1 < 2) && (rl_explicit_arg == 0)) {\n    sVar5 = __ctype_get_mb_cur_max();\n    if ((sVar5 == 1) || (rl_byte_oriented != 0)) {\n      rl_point = rl_point + -1;\n      bVar1 = *(byte *)(rl_line_buffer + rl_point);\n      rl_delete_text(rl_point,iVar2);\n      iVar2 = rl_point;\n      uVar3 = 0;\n      if (rl_point == rl_end) {\n        ppuVar6 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar6 + (ulong)bVar1 * 2 + 1) & 0x40) != 0) {\n          if (_rl_last_c_pos == 0) {\n            uVar3 = 0;\n          }\n          else {\n            uVar4 = rl_character_len(bVar1,iVar2);\n            _rl_erase_at_end_of_line(uVar4);\n          }\n        }\n      }\n    }\n    else {\n      rl_point = _rl_find_prev_mbchar(rl_line_buffer,rl_point,1);\n      rl_delete_text(rl_point,iVar2);\n      uVar3 = 0;\n    }\n  }\n  else {\n    rl_backward_char();\n    rl_kill_text(iVar2,rl_point);\n    uVar3 = 0;\n  }\n  return uVar3;\n}" type_identifier (function_declarator "_rl_rubout_char(int param_1)" identifier (parameter_list "(int param_1)" ( (parameter_declaration "int param_1" primitive_type identifier) ))) (compound_statement "{\n  byte bVar1;\n  int iVar2;\n  undefined4 uVar3;\n  undefined4 uVar4;\n  size_t sVar5;\n  ushort **ppuVar6;\n  \n  iVar2 = rl_point;\n  if (param_1 < 0) {\n    uVar3 = rl_delete(-param_1);\n  }\n  else if (rl_point == 0) {\n    rl_ding();\n    uVar3 = 1;\n  }\n  else if ((param_1 < 2) && (rl_explicit_arg == 0)) {\n    sVar5 = __ctype_get_mb_cur_max();\n    if ((sVar5 == 1) || (rl_byte_oriented != 0)) {\n      rl_point = rl_point + -1;\n      bVar1 = *(byte *)(rl_line_buffer + rl_point);\n      rl_delete_text(rl_point,iVar2);\n      iVar2 = rl_point;\n      uVar3 = 0;\n      if (rl_point == rl_end) {\n        ppuVar6 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar6 + (ulong)bVar1 * 2 + 1) & 0x40) != 0) {\n          if (_rl_last_c_pos == 0) {\n            uVar3 = 0;\n          }\n          else {\n            uVar4 = rl_character_len(bVar1,iVar2);\n            _rl_erase_at_end_of_line(uVar4);\n          }\n        }\n      }\n    }\n    else {\n      rl_point = _rl_find_prev_mbchar(rl_line_buffer,rl_point,1);\n      rl_delete_text(rl_point,iVar2);\n      uVar3 = 0;\n    }\n  }\n  else {\n    rl_backward_char();\n    rl_kill_text(iVar2,rl_point);\n    uVar3 = 0;\n  }\n  return uVar3;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "size_t sVar5;" primitive_type identifier ;) (declaration "ushort **ppuVar6;" type_identifier (pointer_declarator "**ppuVar6" * (pointer_declarator "*ppuVar6" * identifier)) ;) (expression_statement "iVar2 = rl_point;" (assignment_expression "iVar2 = rl_point" identifier = identifier) ;) (if_statement "if (param_1 < 0) {\n    uVar3 = rl_delete(-param_1);\n  }\n  else if (rl_point == 0) {\n    rl_ding();\n    uVar3 = 1;\n  }\n  else if ((param_1 < 2) && (rl_explicit_arg == 0)) {\n    sVar5 = __ctype_get_mb_cur_max();\n    if ((sVar5 == 1) || (rl_byte_oriented != 0)) {\n      rl_point = rl_point + -1;\n      bVar1 = *(byte *)(rl_line_buffer + rl_point);\n      rl_delete_text(rl_point,iVar2);\n      iVar2 = rl_point;\n      uVar3 = 0;\n      if (rl_point == rl_end) {\n        ppuVar6 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar6 + (ulong)bVar1 * 2 + 1) & 0x40) != 0) {\n          if (_rl_last_c_pos == 0) {\n            uVar3 = 0;\n          }\n          else {\n            uVar4 = rl_character_len(bVar1,iVar2);\n            _rl_erase_at_end_of_line(uVar4);\n          }\n        }\n      }\n    }\n    else {\n      rl_point = _rl_find_prev_mbchar(rl_line_buffer,rl_point,1);\n      rl_delete_text(rl_point,iVar2);\n      uVar3 = 0;\n    }\n  }\n  else {\n    rl_backward_char();\n    rl_kill_text(iVar2,rl_point);\n    uVar3 = 0;\n  }" if (parenthesized_expression "(param_1 < 0)" ( (binary_expression "param_1 < 0" identifier < number_literal) )) (compound_statement "{\n    uVar3 = rl_delete(-param_1);\n  }" { (expression_statement "uVar3 = rl_delete(-param_1);" (assignment_expression "uVar3 = rl_delete(-param_1)" identifier = (call_expression "rl_delete(-param_1)" identifier (argument_list "(-param_1)" ( (unary_expression "-param_1" - identifier) )))) ;) }) (else_clause "else if (rl_point == 0) {\n    rl_ding();\n    uVar3 = 1;\n  }\n  else if ((param_1 < 2) && (rl_explicit_arg == 0)) {\n    sVar5 = __ctype_get_mb_cur_max();\n    if ((sVar5 == 1) || (rl_byte_oriented != 0)) {\n      rl_point = rl_point + -1;\n      bVar1 = *(byte *)(rl_line_buffer + rl_point);\n      rl_delete_text(rl_point,iVar2);\n      iVar2 = rl_point;\n      uVar3 = 0;\n      if (rl_point == rl_end) {\n        ppuVar6 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar6 + (ulong)bVar1 * 2 + 1) & 0x40) != 0) {\n          if (_rl_last_c_pos == 0) {\n            uVar3 = 0;\n          }\n          else {\n            uVar4 = rl_character_len(bVar1,iVar2);\n            _rl_erase_at_end_of_line(uVar4);\n          }\n        }\n      }\n    }\n    else {\n      rl_point = _rl_find_prev_mbchar(rl_line_buffer,rl_point,1);\n      rl_delete_text(rl_point,iVar2);\n      uVar3 = 0;\n    }\n  }\n  else {\n    rl_backward_char();\n    rl_kill_text(iVar2,rl_point);\n    uVar3 = 0;\n  }" else (if_statement "if (rl_point == 0) {\n    rl_ding();\n    uVar3 = 1;\n  }\n  else if ((param_1 < 2) && (rl_explicit_arg == 0)) {\n    sVar5 = __ctype_get_mb_cur_max();\n    if ((sVar5 == 1) || (rl_byte_oriented != 0)) {\n      rl_point = rl_point + -1;\n      bVar1 = *(byte *)(rl_line_buffer + rl_point);\n      rl_delete_text(rl_point,iVar2);\n      iVar2 = rl_point;\n      uVar3 = 0;\n      if (rl_point == rl_end) {\n        ppuVar6 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar6 + (ulong)bVar1 * 2 + 1) & 0x40) != 0) {\n          if (_rl_last_c_pos == 0) {\n            uVar3 = 0;\n          }\n          else {\n            uVar4 = rl_character_len(bVar1,iVar2);\n            _rl_erase_at_end_of_line(uVar4);\n          }\n        }\n      }\n    }\n    else {\n      rl_point = _rl_find_prev_mbchar(rl_line_buffer,rl_point,1);\n      rl_delete_text(rl_point,iVar2);\n      uVar3 = 0;\n    }\n  }\n  else {\n    rl_backward_char();\n    rl_kill_text(iVar2,rl_point);\n    uVar3 = 0;\n  }" if (parenthesized_expression "(rl_point == 0)" ( (binary_expression "rl_point == 0" identifier == number_literal) )) (compound_statement "{\n    rl_ding();\n    uVar3 = 1;\n  }" { (expression_statement "rl_ding();" (call_expression "rl_ding()" identifier (argument_list "()" ( ))) ;) (expression_statement "uVar3 = 1;" (assignment_expression "uVar3 = 1" identifier = number_literal) ;) }) (else_clause "else if ((param_1 < 2) && (rl_explicit_arg == 0)) {\n    sVar5 = __ctype_get_mb_cur_max();\n    if ((sVar5 == 1) || (rl_byte_oriented != 0)) {\n      rl_point = rl_point + -1;\n      bVar1 = *(byte *)(rl_line_buffer + rl_point);\n      rl_delete_text(rl_point,iVar2);\n      iVar2 = rl_point;\n      uVar3 = 0;\n      if (rl_point == rl_end) {\n        ppuVar6 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar6 + (ulong)bVar1 * 2 + 1) & 0x40) != 0) {\n          if (_rl_last_c_pos == 0) {\n            uVar3 = 0;\n          }\n          else {\n            uVar4 = rl_character_len(bVar1,iVar2);\n            _rl_erase_at_end_of_line(uVar4);\n          }\n        }\n      }\n    }\n    else {\n      rl_point = _rl_find_prev_mbchar(rl_line_buffer,rl_point,1);\n      rl_delete_text(rl_point,iVar2);\n      uVar3 = 0;\n    }\n  }\n  else {\n    rl_backward_char();\n    rl_kill_text(iVar2,rl_point);\n    uVar3 = 0;\n  }" else (if_statement "if ((param_1 < 2) && (rl_explicit_arg == 0)) {\n    sVar5 = __ctype_get_mb_cur_max();\n    if ((sVar5 == 1) || (rl_byte_oriented != 0)) {\n      rl_point = rl_point + -1;\n      bVar1 = *(byte *)(rl_line_buffer + rl_point);\n      rl_delete_text(rl_point,iVar2);\n      iVar2 = rl_point;\n      uVar3 = 0;\n      if (rl_point == rl_end) {\n        ppuVar6 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar6 + (ulong)bVar1 * 2 + 1) & 0x40) != 0) {\n          if (_rl_last_c_pos == 0) {\n            uVar3 = 0;\n          }\n          else {\n            uVar4 = rl_character_len(bVar1,iVar2);\n            _rl_erase_at_end_of_line(uVar4);\n          }\n        }\n      }\n    }\n    else {\n      rl_point = _rl_find_prev_mbchar(rl_line_buffer,rl_point,1);\n      rl_delete_text(rl_point,iVar2);\n      uVar3 = 0;\n    }\n  }\n  else {\n    rl_backward_char();\n    rl_kill_text(iVar2,rl_point);\n    uVar3 = 0;\n  }" if (parenthesized_expression "((param_1 < 2) && (rl_explicit_arg == 0))" ( (binary_expression "(param_1 < 2) && (rl_explicit_arg == 0)" (parenthesized_expression "(param_1 < 2)" ( (binary_expression "param_1 < 2" identifier < number_literal) )) && (parenthesized_expression "(rl_explicit_arg == 0)" ( (binary_expression "rl_explicit_arg == 0" identifier == number_literal) ))) )) (compound_statement "{\n    sVar5 = __ctype_get_mb_cur_max();\n    if ((sVar5 == 1) || (rl_byte_oriented != 0)) {\n      rl_point = rl_point + -1;\n      bVar1 = *(byte *)(rl_line_buffer + rl_point);\n      rl_delete_text(rl_point,iVar2);\n      iVar2 = rl_point;\n      uVar3 = 0;\n      if (rl_point == rl_end) {\n        ppuVar6 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar6 + (ulong)bVar1 * 2 + 1) & 0x40) != 0) {\n          if (_rl_last_c_pos == 0) {\n            uVar3 = 0;\n          }\n          else {\n            uVar4 = rl_character_len(bVar1,iVar2);\n            _rl_erase_at_end_of_line(uVar4);\n          }\n        }\n      }\n    }\n    else {\n      rl_point = _rl_find_prev_mbchar(rl_line_buffer,rl_point,1);\n      rl_delete_text(rl_point,iVar2);\n      uVar3 = 0;\n    }\n  }" { (expression_statement "sVar5 = __ctype_get_mb_cur_max();" (assignment_expression "sVar5 = __ctype_get_mb_cur_max()" identifier = (call_expression "__ctype_get_mb_cur_max()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((sVar5 == 1) || (rl_byte_oriented != 0)) {\n      rl_point = rl_point + -1;\n      bVar1 = *(byte *)(rl_line_buffer + rl_point);\n      rl_delete_text(rl_point,iVar2);\n      iVar2 = rl_point;\n      uVar3 = 0;\n      if (rl_point == rl_end) {\n        ppuVar6 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar6 + (ulong)bVar1 * 2 + 1) & 0x40) != 0) {\n          if (_rl_last_c_pos == 0) {\n            uVar3 = 0;\n          }\n          else {\n            uVar4 = rl_character_len(bVar1,iVar2);\n            _rl_erase_at_end_of_line(uVar4);\n          }\n        }\n      }\n    }\n    else {\n      rl_point = _rl_find_prev_mbchar(rl_line_buffer,rl_point,1);\n      rl_delete_text(rl_point,iVar2);\n      uVar3 = 0;\n    }" if (parenthesized_expression "((sVar5 == 1) || (rl_byte_oriented != 0))" ( (binary_expression "(sVar5 == 1) || (rl_byte_oriented != 0)" (parenthesized_expression "(sVar5 == 1)" ( (binary_expression "sVar5 == 1" identifier == number_literal) )) || (parenthesized_expression "(rl_byte_oriented != 0)" ( (binary_expression "rl_byte_oriented != 0" identifier != number_literal) ))) )) (compound_statement "{\n      rl_point = rl_point + -1;\n      bVar1 = *(byte *)(rl_line_buffer + rl_point);\n      rl_delete_text(rl_point,iVar2);\n      iVar2 = rl_point;\n      uVar3 = 0;\n      if (rl_point == rl_end) {\n        ppuVar6 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar6 + (ulong)bVar1 * 2 + 1) & 0x40) != 0) {\n          if (_rl_last_c_pos == 0) {\n            uVar3 = 0;\n          }\n          else {\n            uVar4 = rl_character_len(bVar1,iVar2);\n            _rl_erase_at_end_of_line(uVar4);\n          }\n        }\n      }\n    }" { (expression_statement "rl_point = rl_point + -1;" (assignment_expression "rl_point = rl_point + -1" identifier = (binary_expression "rl_point + -1" identifier + number_literal)) ;) (expression_statement "bVar1 = *(byte *)(rl_line_buffer + rl_point);" (assignment_expression "bVar1 = *(byte *)(rl_line_buffer + rl_point)" identifier = (pointer_expression "*(byte *)(rl_line_buffer + rl_point)" * (cast_expression "(byte *)(rl_line_buffer + rl_point)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(rl_line_buffer + rl_point)" ( (binary_expression "rl_line_buffer + rl_point" identifier + identifier) ))))) ;) (expression_statement "rl_delete_text(rl_point,iVar2);" (call_expression "rl_delete_text(rl_point,iVar2)" identifier (argument_list "(rl_point,iVar2)" ( identifier , identifier ))) ;) (expression_statement "iVar2 = rl_point;" (assignment_expression "iVar2 = rl_point" identifier = identifier) ;) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) (if_statement "if (rl_point == rl_end) {\n        ppuVar6 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar6 + (ulong)bVar1 * 2 + 1) & 0x40) != 0) {\n          if (_rl_last_c_pos == 0) {\n            uVar3 = 0;\n          }\n          else {\n            uVar4 = rl_character_len(bVar1,iVar2);\n            _rl_erase_at_end_of_line(uVar4);\n          }\n        }\n      }" if (parenthesized_expression "(rl_point == rl_end)" ( (binary_expression "rl_point == rl_end" identifier == identifier) )) (compound_statement "{\n        ppuVar6 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar6 + (ulong)bVar1 * 2 + 1) & 0x40) != 0) {\n          if (_rl_last_c_pos == 0) {\n            uVar3 = 0;\n          }\n          else {\n            uVar4 = rl_character_len(bVar1,iVar2);\n            _rl_erase_at_end_of_line(uVar4);\n          }\n        }\n      }" { (expression_statement "ppuVar6 = __ctype_b_loc();" (assignment_expression "ppuVar6 = __ctype_b_loc()" identifier = (call_expression "__ctype_b_loc()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((*(byte *)((long)*ppuVar6 + (ulong)bVar1 * 2 + 1) & 0x40) != 0) {\n          if (_rl_last_c_pos == 0) {\n            uVar3 = 0;\n          }\n          else {\n            uVar4 = rl_character_len(bVar1,iVar2);\n            _rl_erase_at_end_of_line(uVar4);\n          }\n        }" if (parenthesized_expression "((*(byte *)((long)*ppuVar6 + (ulong)bVar1 * 2 + 1) & 0x40) != 0)" ( (binary_expression "(*(byte *)((long)*ppuVar6 + (ulong)bVar1 * 2 + 1) & 0x40) != 0" (parenthesized_expression "(*(byte *)((long)*ppuVar6 + (ulong)bVar1 * 2 + 1) & 0x40)" ( (binary_expression "*(byte *)((long)*ppuVar6 + (ulong)bVar1 * 2 + 1) & 0x40" (pointer_expression "*(byte *)((long)*ppuVar6 + (ulong)bVar1 * 2 + 1)" * (cast_expression "(byte *)((long)*ppuVar6 + (ulong)bVar1 * 2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)*ppuVar6 + (ulong)bVar1 * 2 + 1)" ( (binary_expression "(long)*ppuVar6 + (ulong)bVar1 * 2 + 1" (binary_expression "(long)*ppuVar6 + (ulong)bVar1 * 2" (cast_expression "(long)*ppuVar6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "*ppuVar6" * identifier)) + (binary_expression "(ulong)bVar1 * 2" (cast_expression "(ulong)bVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n          if (_rl_last_c_pos == 0) {\n            uVar3 = 0;\n          }\n          else {\n            uVar4 = rl_character_len(bVar1,iVar2);\n            _rl_erase_at_end_of_line(uVar4);\n          }\n        }" { (if_statement "if (_rl_last_c_pos == 0) {\n            uVar3 = 0;\n          }\n          else {\n            uVar4 = rl_character_len(bVar1,iVar2);\n            _rl_erase_at_end_of_line(uVar4);\n          }" if (parenthesized_expression "(_rl_last_c_pos == 0)" ( (binary_expression "_rl_last_c_pos == 0" identifier == number_literal) )) (compound_statement "{\n            uVar3 = 0;\n          }" { (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) }) (else_clause "else {\n            uVar4 = rl_character_len(bVar1,iVar2);\n            _rl_erase_at_end_of_line(uVar4);\n          }" else (compound_statement "{\n            uVar4 = rl_character_len(bVar1,iVar2);\n            _rl_erase_at_end_of_line(uVar4);\n          }" { (expression_statement "uVar4 = rl_character_len(bVar1,iVar2);" (assignment_expression "uVar4 = rl_character_len(bVar1,iVar2)" identifier = (call_expression "rl_character_len(bVar1,iVar2)" identifier (argument_list "(bVar1,iVar2)" ( identifier , identifier )))) ;) (expression_statement "_rl_erase_at_end_of_line(uVar4);" (call_expression "_rl_erase_at_end_of_line(uVar4)" identifier (argument_list "(uVar4)" ( identifier ))) ;) }))) })) })) }) (else_clause "else {\n      rl_point = _rl_find_prev_mbchar(rl_line_buffer,rl_point,1);\n      rl_delete_text(rl_point,iVar2);\n      uVar3 = 0;\n    }" else (compound_statement "{\n      rl_point = _rl_find_prev_mbchar(rl_line_buffer,rl_point,1);\n      rl_delete_text(rl_point,iVar2);\n      uVar3 = 0;\n    }" { (expression_statement "rl_point = _rl_find_prev_mbchar(rl_line_buffer,rl_point,1);" (assignment_expression "rl_point = _rl_find_prev_mbchar(rl_line_buffer,rl_point,1)" identifier = (call_expression "_rl_find_prev_mbchar(rl_line_buffer,rl_point,1)" identifier (argument_list "(rl_line_buffer,rl_point,1)" ( identifier , identifier , number_literal )))) ;) (expression_statement "rl_delete_text(rl_point,iVar2);" (call_expression "rl_delete_text(rl_point,iVar2)" identifier (argument_list "(rl_point,iVar2)" ( identifier , identifier ))) ;) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) }))) }) (else_clause "else {\n    rl_backward_char();\n    rl_kill_text(iVar2,rl_point);\n    uVar3 = 0;\n  }" else (compound_statement "{\n    rl_backward_char();\n    rl_kill_text(iVar2,rl_point);\n    uVar3 = 0;\n  }" { (expression_statement "rl_backward_char();" (call_expression "rl_backward_char()" identifier (argument_list "()" ( ))) ;) (expression_statement "rl_kill_text(iVar2,rl_point);" (call_expression "rl_kill_text(iVar2,rl_point)" identifier (argument_list "(iVar2,rl_point)" ( identifier , identifier ))) ;) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) }))))))) (return_statement "return uVar3;" return identifier ;) })))
(translation_unit "wchar_t _rl_rubout_char(wchar_t count,wchar_t key)\n\n{\n  byte bVar1;\n  int iVar2;\n  wchar_t wVar3;\n  wchar_t l;\n  size_t sVar4;\n  ushort **ppuVar5;\n  \n  iVar2 = rl_point;\n  if (count < L'\0') {\n    wVar3 = rl_delete(-count,key);\n  }\n  else if (rl_point == 0) {\n    rl_ding();\n    wVar3 = L'\x01';\n  }\n  else if ((count < L'\x02') && (rl_explicit_arg == 0)) {\n    sVar4 = __ctype_get_mb_cur_max();\n    if ((sVar4 == 1) || (rl_byte_oriented != L'\0')) {\n      rl_point = rl_point + L'\xffffffff';\n      bVar1 = rl_line_buffer[rl_point];\n      rl_delete_text(rl_point,iVar2);\n      iVar2 = rl_point;\n      wVar3 = L'\0';\n      if (rl_point == rl_end) {\n        ppuVar5 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar5 + (ulong)bVar1 * 2 + 1) & 0x40) != 0) {\n          if (_rl_last_c_pos == L'\0') {\n            wVar3 = L'\0';\n          }\n          else {\n            l = rl_character_len((uint)bVar1,iVar2);\n            _rl_erase_at_end_of_line(l);\n          }\n        }\n      }\n    }\n    else {\n      rl_point = _rl_find_prev_mbchar(rl_line_buffer,rl_point,L'\x01');\n      rl_delete_text(rl_point,iVar2);\n      wVar3 = L'\0';\n    }\n  }\n  else {\n    rl_backward_char(count,key);\n    rl_kill_text(iVar2,rl_point);\n    wVar3 = L'\0';\n  }\n  return wVar3;\n}\n\n" (function_definition "wchar_t _rl_rubout_char(wchar_t count,wchar_t key)\n\n{\n  byte bVar1;\n  int iVar2;\n  wchar_t wVar3;\n  wchar_t l;\n  size_t sVar4;\n  ushort **ppuVar5;\n  \n  iVar2 = rl_point;\n  if (count < L'\0') {\n    wVar3 = rl_delete(-count,key);\n  }\n  else if (rl_point == 0) {\n    rl_ding();\n    wVar3 = L'\x01';\n  }\n  else if ((count < L'\x02') && (rl_explicit_arg == 0)) {\n    sVar4 = __ctype_get_mb_cur_max();\n    if ((sVar4 == 1) || (rl_byte_oriented != L'\0')) {\n      rl_point = rl_point + L'\xffffffff';\n      bVar1 = rl_line_buffer[rl_point];\n      rl_delete_text(rl_point,iVar2);\n      iVar2 = rl_point;\n      wVar3 = L'\0';\n      if (rl_point == rl_end) {\n        ppuVar5 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar5 + (ulong)bVar1 * 2 + 1) & 0x40) != 0) {\n          if (_rl_last_c_pos == L'\0') {\n            wVar3 = L'\0';\n          }\n          else {\n            l = rl_character_len((uint)bVar1,iVar2);\n            _rl_erase_at_end_of_line(l);\n          }\n        }\n      }\n    }\n    else {\n      rl_point = _rl_find_prev_mbchar(rl_line_buffer,rl_point,L'\x01');\n      rl_delete_text(rl_point,iVar2);\n      wVar3 = L'\0';\n    }\n  }\n  else {\n    rl_backward_char(count,key);\n    rl_kill_text(iVar2,rl_point);\n    wVar3 = L'\0';\n  }\n  return wVar3;\n}" type_identifier (function_declarator "_rl_rubout_char(wchar_t count,wchar_t key)" identifier (parameter_list "(wchar_t count,wchar_t key)" ( (parameter_declaration "wchar_t count" type_identifier identifier) , (parameter_declaration "wchar_t key" type_identifier identifier) ))) (compound_statement "{\n  byte bVar1;\n  int iVar2;\n  wchar_t wVar3;\n  wchar_t l;\n  size_t sVar4;\n  ushort **ppuVar5;\n  \n  iVar2 = rl_point;\n  if (count < L'\0') {\n    wVar3 = rl_delete(-count,key);\n  }\n  else if (rl_point == 0) {\n    rl_ding();\n    wVar3 = L'\x01';\n  }\n  else if ((count < L'\x02') && (rl_explicit_arg == 0)) {\n    sVar4 = __ctype_get_mb_cur_max();\n    if ((sVar4 == 1) || (rl_byte_oriented != L'\0')) {\n      rl_point = rl_point + L'\xffffffff';\n      bVar1 = rl_line_buffer[rl_point];\n      rl_delete_text(rl_point,iVar2);\n      iVar2 = rl_point;\n      wVar3 = L'\0';\n      if (rl_point == rl_end) {\n        ppuVar5 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar5 + (ulong)bVar1 * 2 + 1) & 0x40) != 0) {\n          if (_rl_last_c_pos == L'\0') {\n            wVar3 = L'\0';\n          }\n          else {\n            l = rl_character_len((uint)bVar1,iVar2);\n            _rl_erase_at_end_of_line(l);\n          }\n        }\n      }\n    }\n    else {\n      rl_point = _rl_find_prev_mbchar(rl_line_buffer,rl_point,L'\x01');\n      rl_delete_text(rl_point,iVar2);\n      wVar3 = L'\0';\n    }\n  }\n  else {\n    rl_backward_char(count,key);\n    rl_kill_text(iVar2,rl_point);\n    wVar3 = L'\0';\n  }\n  return wVar3;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "wchar_t wVar3;" type_identifier identifier ;) (declaration "wchar_t l;" type_identifier identifier ;) (declaration "size_t sVar4;" primitive_type identifier ;) (declaration "ushort **ppuVar5;" type_identifier (pointer_declarator "**ppuVar5" * (pointer_declarator "*ppuVar5" * identifier)) ;) (expression_statement "iVar2 = rl_point;" (assignment_expression "iVar2 = rl_point" identifier = identifier) ;) (if_statement "if (count < L'\0') {\n    wVar3 = rl_delete(-count,key);\n  }\n  else if (rl_point == 0) {\n    rl_ding();\n    wVar3 = L'\x01';\n  }\n  else if ((count < L'\x02') && (rl_explicit_arg == 0)) {\n    sVar4 = __ctype_get_mb_cur_max();\n    if ((sVar4 == 1) || (rl_byte_oriented != L'\0')) {\n      rl_point = rl_point + L'\xffffffff';\n      bVar1 = rl_line_buffer[rl_point];\n      rl_delete_text(rl_point,iVar2);\n      iVar2 = rl_point;\n      wVar3 = L'\0';\n      if (rl_point == rl_end) {\n        ppuVar5 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar5 + (ulong)bVar1 * 2 + 1) & 0x40) != 0) {\n          if (_rl_last_c_pos == L'\0') {\n            wVar3 = L'\0';\n          }\n          else {\n            l = rl_character_len((uint)bVar1,iVar2);\n            _rl_erase_at_end_of_line(l);\n          }\n        }\n      }\n    }\n    else {\n      rl_point = _rl_find_prev_mbchar(rl_line_buffer,rl_point,L'\x01');\n      rl_delete_text(rl_point,iVar2);\n      wVar3 = L'\0';\n    }\n  }\n  else {\n    rl_backward_char(count,key);\n    rl_kill_text(iVar2,rl_point);\n    wVar3 = L'\0';\n  }" if (parenthesized_expression "(count < L'\0')" ( (binary_expression "count < L'\0'" identifier < (char_literal "L'\0'" L' escape_sequence ')) )) (compound_statement "{\n    wVar3 = rl_delete(-count,key);\n  }" { (expression_statement "wVar3 = rl_delete(-count,key);" (assignment_expression "wVar3 = rl_delete(-count,key)" identifier = (call_expression "rl_delete(-count,key)" identifier (argument_list "(-count,key)" ( (unary_expression "-count" - identifier) , identifier )))) ;) }) (else_clause "else if (rl_point == 0) {\n    rl_ding();\n    wVar3 = L'\x01';\n  }\n  else if ((count < L'\x02') && (rl_explicit_arg == 0)) {\n    sVar4 = __ctype_get_mb_cur_max();\n    if ((sVar4 == 1) || (rl_byte_oriented != L'\0')) {\n      rl_point = rl_point + L'\xffffffff';\n      bVar1 = rl_line_buffer[rl_point];\n      rl_delete_text(rl_point,iVar2);\n      iVar2 = rl_point;\n      wVar3 = L'\0';\n      if (rl_point == rl_end) {\n        ppuVar5 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar5 + (ulong)bVar1 * 2 + 1) & 0x40) != 0) {\n          if (_rl_last_c_pos == L'\0') {\n            wVar3 = L'\0';\n          }\n          else {\n            l = rl_character_len((uint)bVar1,iVar2);\n            _rl_erase_at_end_of_line(l);\n          }\n        }\n      }\n    }\n    else {\n      rl_point = _rl_find_prev_mbchar(rl_line_buffer,rl_point,L'\x01');\n      rl_delete_text(rl_point,iVar2);\n      wVar3 = L'\0';\n    }\n  }\n  else {\n    rl_backward_char(count,key);\n    rl_kill_text(iVar2,rl_point);\n    wVar3 = L'\0';\n  }" else (if_statement "if (rl_point == 0) {\n    rl_ding();\n    wVar3 = L'\x01';\n  }\n  else if ((count < L'\x02') && (rl_explicit_arg == 0)) {\n    sVar4 = __ctype_get_mb_cur_max();\n    if ((sVar4 == 1) || (rl_byte_oriented != L'\0')) {\n      rl_point = rl_point + L'\xffffffff';\n      bVar1 = rl_line_buffer[rl_point];\n      rl_delete_text(rl_point,iVar2);\n      iVar2 = rl_point;\n      wVar3 = L'\0';\n      if (rl_point == rl_end) {\n        ppuVar5 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar5 + (ulong)bVar1 * 2 + 1) & 0x40) != 0) {\n          if (_rl_last_c_pos == L'\0') {\n            wVar3 = L'\0';\n          }\n          else {\n            l = rl_character_len((uint)bVar1,iVar2);\n            _rl_erase_at_end_of_line(l);\n          }\n        }\n      }\n    }\n    else {\n      rl_point = _rl_find_prev_mbchar(rl_line_buffer,rl_point,L'\x01');\n      rl_delete_text(rl_point,iVar2);\n      wVar3 = L'\0';\n    }\n  }\n  else {\n    rl_backward_char(count,key);\n    rl_kill_text(iVar2,rl_point);\n    wVar3 = L'\0';\n  }" if (parenthesized_expression "(rl_point == 0)" ( (binary_expression "rl_point == 0" identifier == number_literal) )) (compound_statement "{\n    rl_ding();\n    wVar3 = L'\x01';\n  }" { (expression_statement "rl_ding();" (call_expression "rl_ding()" identifier (argument_list "()" ( ))) ;) (expression_statement "wVar3 = L'\x01';" (assignment_expression "wVar3 = L'\x01'" identifier = (char_literal "L'\x01'" L' escape_sequence ')) ;) }) (else_clause "else if ((count < L'\x02') && (rl_explicit_arg == 0)) {\n    sVar4 = __ctype_get_mb_cur_max();\n    if ((sVar4 == 1) || (rl_byte_oriented != L'\0')) {\n      rl_point = rl_point + L'\xffffffff';\n      bVar1 = rl_line_buffer[rl_point];\n      rl_delete_text(rl_point,iVar2);\n      iVar2 = rl_point;\n      wVar3 = L'\0';\n      if (rl_point == rl_end) {\n        ppuVar5 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar5 + (ulong)bVar1 * 2 + 1) & 0x40) != 0) {\n          if (_rl_last_c_pos == L'\0') {\n            wVar3 = L'\0';\n          }\n          else {\n            l = rl_character_len((uint)bVar1,iVar2);\n            _rl_erase_at_end_of_line(l);\n          }\n        }\n      }\n    }\n    else {\n      rl_point = _rl_find_prev_mbchar(rl_line_buffer,rl_point,L'\x01');\n      rl_delete_text(rl_point,iVar2);\n      wVar3 = L'\0';\n    }\n  }\n  else {\n    rl_backward_char(count,key);\n    rl_kill_text(iVar2,rl_point);\n    wVar3 = L'\0';\n  }" else (if_statement "if ((count < L'\x02') && (rl_explicit_arg == 0)) {\n    sVar4 = __ctype_get_mb_cur_max();\n    if ((sVar4 == 1) || (rl_byte_oriented != L'\0')) {\n      rl_point = rl_point + L'\xffffffff';\n      bVar1 = rl_line_buffer[rl_point];\n      rl_delete_text(rl_point,iVar2);\n      iVar2 = rl_point;\n      wVar3 = L'\0';\n      if (rl_point == rl_end) {\n        ppuVar5 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar5 + (ulong)bVar1 * 2 + 1) & 0x40) != 0) {\n          if (_rl_last_c_pos == L'\0') {\n            wVar3 = L'\0';\n          }\n          else {\n            l = rl_character_len((uint)bVar1,iVar2);\n            _rl_erase_at_end_of_line(l);\n          }\n        }\n      }\n    }\n    else {\n      rl_point = _rl_find_prev_mbchar(rl_line_buffer,rl_point,L'\x01');\n      rl_delete_text(rl_point,iVar2);\n      wVar3 = L'\0';\n    }\n  }\n  else {\n    rl_backward_char(count,key);\n    rl_kill_text(iVar2,rl_point);\n    wVar3 = L'\0';\n  }" if (parenthesized_expression "((count < L'\x02') && (rl_explicit_arg == 0))" ( (binary_expression "(count < L'\x02') && (rl_explicit_arg == 0)" (parenthesized_expression "(count < L'\x02')" ( (binary_expression "count < L'\x02'" identifier < (char_literal "L'\x02'" L' escape_sequence ')) )) && (parenthesized_expression "(rl_explicit_arg == 0)" ( (binary_expression "rl_explicit_arg == 0" identifier == number_literal) ))) )) (compound_statement "{\n    sVar4 = __ctype_get_mb_cur_max();\n    if ((sVar4 == 1) || (rl_byte_oriented != L'\0')) {\n      rl_point = rl_point + L'\xffffffff';\n      bVar1 = rl_line_buffer[rl_point];\n      rl_delete_text(rl_point,iVar2);\n      iVar2 = rl_point;\n      wVar3 = L'\0';\n      if (rl_point == rl_end) {\n        ppuVar5 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar5 + (ulong)bVar1 * 2 + 1) & 0x40) != 0) {\n          if (_rl_last_c_pos == L'\0') {\n            wVar3 = L'\0';\n          }\n          else {\n            l = rl_character_len((uint)bVar1,iVar2);\n            _rl_erase_at_end_of_line(l);\n          }\n        }\n      }\n    }\n    else {\n      rl_point = _rl_find_prev_mbchar(rl_line_buffer,rl_point,L'\x01');\n      rl_delete_text(rl_point,iVar2);\n      wVar3 = L'\0';\n    }\n  }" { (expression_statement "sVar4 = __ctype_get_mb_cur_max();" (assignment_expression "sVar4 = __ctype_get_mb_cur_max()" identifier = (call_expression "__ctype_get_mb_cur_max()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((sVar4 == 1) || (rl_byte_oriented != L'\0')) {\n      rl_point = rl_point + L'\xffffffff';\n      bVar1 = rl_line_buffer[rl_point];\n      rl_delete_text(rl_point,iVar2);\n      iVar2 = rl_point;\n      wVar3 = L'\0';\n      if (rl_point == rl_end) {\n        ppuVar5 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar5 + (ulong)bVar1 * 2 + 1) & 0x40) != 0) {\n          if (_rl_last_c_pos == L'\0') {\n            wVar3 = L'\0';\n          }\n          else {\n            l = rl_character_len((uint)bVar1,iVar2);\n            _rl_erase_at_end_of_line(l);\n          }\n        }\n      }\n    }\n    else {\n      rl_point = _rl_find_prev_mbchar(rl_line_buffer,rl_point,L'\x01');\n      rl_delete_text(rl_point,iVar2);\n      wVar3 = L'\0';\n    }" if (parenthesized_expression "((sVar4 == 1) || (rl_byte_oriented != L'\0'))" ( (binary_expression "(sVar4 == 1) || (rl_byte_oriented != L'\0')" (parenthesized_expression "(sVar4 == 1)" ( (binary_expression "sVar4 == 1" identifier == number_literal) )) || (parenthesized_expression "(rl_byte_oriented != L'\0')" ( (binary_expression "rl_byte_oriented != L'\0'" identifier != (char_literal "L'\0'" L' escape_sequence ')) ))) )) (compound_statement "{\n      rl_point = rl_point + L'\xffffffff';\n      bVar1 = rl_line_buffer[rl_point];\n      rl_delete_text(rl_point,iVar2);\n      iVar2 = rl_point;\n      wVar3 = L'\0';\n      if (rl_point == rl_end) {\n        ppuVar5 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar5 + (ulong)bVar1 * 2 + 1) & 0x40) != 0) {\n          if (_rl_last_c_pos == L'\0') {\n            wVar3 = L'\0';\n          }\n          else {\n            l = rl_character_len((uint)bVar1,iVar2);\n            _rl_erase_at_end_of_line(l);\n          }\n        }\n      }\n    }" { (expression_statement "rl_point = rl_point + L'\xffffffff';" (assignment_expression "rl_point = rl_point + L'\xffffffff'" identifier = (binary_expression "rl_point + L'\xffffffff'" identifier + (char_literal "L'\xffffffff'" L' escape_sequence character character character character '))) ;) (expression_statement "bVar1 = rl_line_buffer[rl_point];" (assignment_expression "bVar1 = rl_line_buffer[rl_point]" identifier = (subscript_expression "rl_line_buffer[rl_point]" identifier [ identifier ])) ;) (expression_statement "rl_delete_text(rl_point,iVar2);" (call_expression "rl_delete_text(rl_point,iVar2)" identifier (argument_list "(rl_point,iVar2)" ( identifier , identifier ))) ;) (expression_statement "iVar2 = rl_point;" (assignment_expression "iVar2 = rl_point" identifier = identifier) ;) (expression_statement "wVar3 = L'\0';" (assignment_expression "wVar3 = L'\0'" identifier = (char_literal "L'\0'" L' escape_sequence ')) ;) (if_statement "if (rl_point == rl_end) {\n        ppuVar5 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar5 + (ulong)bVar1 * 2 + 1) & 0x40) != 0) {\n          if (_rl_last_c_pos == L'\0') {\n            wVar3 = L'\0';\n          }\n          else {\n            l = rl_character_len((uint)bVar1,iVar2);\n            _rl_erase_at_end_of_line(l);\n          }\n        }\n      }" if (parenthesized_expression "(rl_point == rl_end)" ( (binary_expression "rl_point == rl_end" identifier == identifier) )) (compound_statement "{\n        ppuVar5 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar5 + (ulong)bVar1 * 2 + 1) & 0x40) != 0) {\n          if (_rl_last_c_pos == L'\0') {\n            wVar3 = L'\0';\n          }\n          else {\n            l = rl_character_len((uint)bVar1,iVar2);\n            _rl_erase_at_end_of_line(l);\n          }\n        }\n      }" { (expression_statement "ppuVar5 = __ctype_b_loc();" (assignment_expression "ppuVar5 = __ctype_b_loc()" identifier = (call_expression "__ctype_b_loc()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((*(byte *)((long)*ppuVar5 + (ulong)bVar1 * 2 + 1) & 0x40) != 0) {\n          if (_rl_last_c_pos == L'\0') {\n            wVar3 = L'\0';\n          }\n          else {\n            l = rl_character_len((uint)bVar1,iVar2);\n            _rl_erase_at_end_of_line(l);\n          }\n        }" if (parenthesized_expression "((*(byte *)((long)*ppuVar5 + (ulong)bVar1 * 2 + 1) & 0x40) != 0)" ( (binary_expression "(*(byte *)((long)*ppuVar5 + (ulong)bVar1 * 2 + 1) & 0x40) != 0" (parenthesized_expression "(*(byte *)((long)*ppuVar5 + (ulong)bVar1 * 2 + 1) & 0x40)" ( (binary_expression "*(byte *)((long)*ppuVar5 + (ulong)bVar1 * 2 + 1) & 0x40" (pointer_expression "*(byte *)((long)*ppuVar5 + (ulong)bVar1 * 2 + 1)" * (cast_expression "(byte *)((long)*ppuVar5 + (ulong)bVar1 * 2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)*ppuVar5 + (ulong)bVar1 * 2 + 1)" ( (binary_expression "(long)*ppuVar5 + (ulong)bVar1 * 2 + 1" (binary_expression "(long)*ppuVar5 + (ulong)bVar1 * 2" (cast_expression "(long)*ppuVar5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "*ppuVar5" * identifier)) + (binary_expression "(ulong)bVar1 * 2" (cast_expression "(ulong)bVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n          if (_rl_last_c_pos == L'\0') {\n            wVar3 = L'\0';\n          }\n          else {\n            l = rl_character_len((uint)bVar1,iVar2);\n            _rl_erase_at_end_of_line(l);\n          }\n        }" { (if_statement "if (_rl_last_c_pos == L'\0') {\n            wVar3 = L'\0';\n          }\n          else {\n            l = rl_character_len((uint)bVar1,iVar2);\n            _rl_erase_at_end_of_line(l);\n          }" if (parenthesized_expression "(_rl_last_c_pos == L'\0')" ( (binary_expression "_rl_last_c_pos == L'\0'" identifier == (char_literal "L'\0'" L' escape_sequence ')) )) (compound_statement "{\n            wVar3 = L'\0';\n          }" { (expression_statement "wVar3 = L'\0';" (assignment_expression "wVar3 = L'\0'" identifier = (char_literal "L'\0'" L' escape_sequence ')) ;) }) (else_clause "else {\n            l = rl_character_len((uint)bVar1,iVar2);\n            _rl_erase_at_end_of_line(l);\n          }" else (compound_statement "{\n            l = rl_character_len((uint)bVar1,iVar2);\n            _rl_erase_at_end_of_line(l);\n          }" { (expression_statement "l = rl_character_len((uint)bVar1,iVar2);" (assignment_expression "l = rl_character_len((uint)bVar1,iVar2)" identifier = (call_expression "rl_character_len((uint)bVar1,iVar2)" identifier (argument_list "((uint)bVar1,iVar2)" ( (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier) , identifier )))) ;) (expression_statement "_rl_erase_at_end_of_line(l);" (call_expression "_rl_erase_at_end_of_line(l)" identifier (argument_list "(l)" ( identifier ))) ;) }))) })) })) }) (else_clause "else {\n      rl_point = _rl_find_prev_mbchar(rl_line_buffer,rl_point,L'\x01');\n      rl_delete_text(rl_point,iVar2);\n      wVar3 = L'\0';\n    }" else (compound_statement "{\n      rl_point = _rl_find_prev_mbchar(rl_line_buffer,rl_point,L'\x01');\n      rl_delete_text(rl_point,iVar2);\n      wVar3 = L'\0';\n    }" { (expression_statement "rl_point = _rl_find_prev_mbchar(rl_line_buffer,rl_point,L'\x01');" (assignment_expression "rl_point = _rl_find_prev_mbchar(rl_line_buffer,rl_point,L'\x01')" identifier = (call_expression "_rl_find_prev_mbchar(rl_line_buffer,rl_point,L'\x01')" identifier (argument_list "(rl_line_buffer,rl_point,L'\x01')" ( identifier , identifier , (char_literal "L'\x01'" L' escape_sequence ') )))) ;) (expression_statement "rl_delete_text(rl_point,iVar2);" (call_expression "rl_delete_text(rl_point,iVar2)" identifier (argument_list "(rl_point,iVar2)" ( identifier , identifier ))) ;) (expression_statement "wVar3 = L'\0';" (assignment_expression "wVar3 = L'\0'" identifier = (char_literal "L'\0'" L' escape_sequence ')) ;) }))) }) (else_clause "else {\n    rl_backward_char(count,key);\n    rl_kill_text(iVar2,rl_point);\n    wVar3 = L'\0';\n  }" else (compound_statement "{\n    rl_backward_char(count,key);\n    rl_kill_text(iVar2,rl_point);\n    wVar3 = L'\0';\n  }" { (expression_statement "rl_backward_char(count,key);" (call_expression "rl_backward_char(count,key)" identifier (argument_list "(count,key)" ( identifier , identifier ))) ;) (expression_statement "rl_kill_text(iVar2,rl_point);" (call_expression "rl_kill_text(iVar2,rl_point)" identifier (argument_list "(iVar2,rl_point)" ( identifier , identifier ))) ;) (expression_statement "wVar3 = L'\0';" (assignment_expression "wVar3 = L'\0'" identifier = (char_literal "L'\0'" L' escape_sequence ')) ;) }))))))) (return_statement "return wVar3;" return identifier ;) })))
(translation_unit "undefined4 _rl_rubout_char(int param_1)\n\n{\n  byte bVar1;\n  int iVar2;\n  undefined4 uVar3;\n  undefined4 uVar4;\n  size_t sVar5;\n  ushort **ppuVar6;\n  \n  iVar2 = rl_point;\n  if (param_1 < 0) {\n    uVar3 = rl_delete(-param_1);\n  }\n  else if (rl_point == 0) {\n    rl_ding();\n    uVar3 = 1;\n  }\n  else if ((param_1 < 2) && (rl_explicit_arg == 0)) {\n    sVar5 = __ctype_get_mb_cur_max();\n    if ((sVar5 == 1) || (rl_byte_oriented != 0)) {\n      rl_point = rl_point + -1;\n      bVar1 = *(byte *)(rl_line_buffer + rl_point);\n      rl_delete_text(rl_point,iVar2);\n      iVar2 = rl_point;\n      uVar3 = 0;\n      if (rl_point == rl_end) {\n        ppuVar6 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar6 + (ulong)bVar1 * 2 + 1) & 0x40) != 0) {\n          if (_rl_last_c_pos == 0) {\n            uVar3 = 0;\n          }\n          else {\n            uVar4 = rl_character_len(bVar1,iVar2);\n            _rl_erase_at_end_of_line(uVar4);\n          }\n        }\n      }\n    }\n    else {\n      rl_point = _rl_find_prev_mbchar(rl_line_buffer,rl_point,1);\n      rl_delete_text(rl_point,iVar2);\n      uVar3 = 0;\n    }\n  }\n  else {\n    rl_backward_char();\n    rl_kill_text(iVar2,rl_point);\n    uVar3 = 0;\n  }\n  return uVar3;\n}\n\n" (function_definition "undefined4 _rl_rubout_char(int param_1)\n\n{\n  byte bVar1;\n  int iVar2;\n  undefined4 uVar3;\n  undefined4 uVar4;\n  size_t sVar5;\n  ushort **ppuVar6;\n  \n  iVar2 = rl_point;\n  if (param_1 < 0) {\n    uVar3 = rl_delete(-param_1);\n  }\n  else if (rl_point == 0) {\n    rl_ding();\n    uVar3 = 1;\n  }\n  else if ((param_1 < 2) && (rl_explicit_arg == 0)) {\n    sVar5 = __ctype_get_mb_cur_max();\n    if ((sVar5 == 1) || (rl_byte_oriented != 0)) {\n      rl_point = rl_point + -1;\n      bVar1 = *(byte *)(rl_line_buffer + rl_point);\n      rl_delete_text(rl_point,iVar2);\n      iVar2 = rl_point;\n      uVar3 = 0;\n      if (rl_point == rl_end) {\n        ppuVar6 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar6 + (ulong)bVar1 * 2 + 1) & 0x40) != 0) {\n          if (_rl_last_c_pos == 0) {\n            uVar3 = 0;\n          }\n          else {\n            uVar4 = rl_character_len(bVar1,iVar2);\n            _rl_erase_at_end_of_line(uVar4);\n          }\n        }\n      }\n    }\n    else {\n      rl_point = _rl_find_prev_mbchar(rl_line_buffer,rl_point,1);\n      rl_delete_text(rl_point,iVar2);\n      uVar3 = 0;\n    }\n  }\n  else {\n    rl_backward_char();\n    rl_kill_text(iVar2,rl_point);\n    uVar3 = 0;\n  }\n  return uVar3;\n}" type_identifier (function_declarator "_rl_rubout_char(int param_1)" identifier (parameter_list "(int param_1)" ( (parameter_declaration "int param_1" primitive_type identifier) ))) (compound_statement "{\n  byte bVar1;\n  int iVar2;\n  undefined4 uVar3;\n  undefined4 uVar4;\n  size_t sVar5;\n  ushort **ppuVar6;\n  \n  iVar2 = rl_point;\n  if (param_1 < 0) {\n    uVar3 = rl_delete(-param_1);\n  }\n  else if (rl_point == 0) {\n    rl_ding();\n    uVar3 = 1;\n  }\n  else if ((param_1 < 2) && (rl_explicit_arg == 0)) {\n    sVar5 = __ctype_get_mb_cur_max();\n    if ((sVar5 == 1) || (rl_byte_oriented != 0)) {\n      rl_point = rl_point + -1;\n      bVar1 = *(byte *)(rl_line_buffer + rl_point);\n      rl_delete_text(rl_point,iVar2);\n      iVar2 = rl_point;\n      uVar3 = 0;\n      if (rl_point == rl_end) {\n        ppuVar6 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar6 + (ulong)bVar1 * 2 + 1) & 0x40) != 0) {\n          if (_rl_last_c_pos == 0) {\n            uVar3 = 0;\n          }\n          else {\n            uVar4 = rl_character_len(bVar1,iVar2);\n            _rl_erase_at_end_of_line(uVar4);\n          }\n        }\n      }\n    }\n    else {\n      rl_point = _rl_find_prev_mbchar(rl_line_buffer,rl_point,1);\n      rl_delete_text(rl_point,iVar2);\n      uVar3 = 0;\n    }\n  }\n  else {\n    rl_backward_char();\n    rl_kill_text(iVar2,rl_point);\n    uVar3 = 0;\n  }\n  return uVar3;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "size_t sVar5;" primitive_type identifier ;) (declaration "ushort **ppuVar6;" type_identifier (pointer_declarator "**ppuVar6" * (pointer_declarator "*ppuVar6" * identifier)) ;) (expression_statement "iVar2 = rl_point;" (assignment_expression "iVar2 = rl_point" identifier = identifier) ;) (if_statement "if (param_1 < 0) {\n    uVar3 = rl_delete(-param_1);\n  }\n  else if (rl_point == 0) {\n    rl_ding();\n    uVar3 = 1;\n  }\n  else if ((param_1 < 2) && (rl_explicit_arg == 0)) {\n    sVar5 = __ctype_get_mb_cur_max();\n    if ((sVar5 == 1) || (rl_byte_oriented != 0)) {\n      rl_point = rl_point + -1;\n      bVar1 = *(byte *)(rl_line_buffer + rl_point);\n      rl_delete_text(rl_point,iVar2);\n      iVar2 = rl_point;\n      uVar3 = 0;\n      if (rl_point == rl_end) {\n        ppuVar6 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar6 + (ulong)bVar1 * 2 + 1) & 0x40) != 0) {\n          if (_rl_last_c_pos == 0) {\n            uVar3 = 0;\n          }\n          else {\n            uVar4 = rl_character_len(bVar1,iVar2);\n            _rl_erase_at_end_of_line(uVar4);\n          }\n        }\n      }\n    }\n    else {\n      rl_point = _rl_find_prev_mbchar(rl_line_buffer,rl_point,1);\n      rl_delete_text(rl_point,iVar2);\n      uVar3 = 0;\n    }\n  }\n  else {\n    rl_backward_char();\n    rl_kill_text(iVar2,rl_point);\n    uVar3 = 0;\n  }" if (parenthesized_expression "(param_1 < 0)" ( (binary_expression "param_1 < 0" identifier < number_literal) )) (compound_statement "{\n    uVar3 = rl_delete(-param_1);\n  }" { (expression_statement "uVar3 = rl_delete(-param_1);" (assignment_expression "uVar3 = rl_delete(-param_1)" identifier = (call_expression "rl_delete(-param_1)" identifier (argument_list "(-param_1)" ( (unary_expression "-param_1" - identifier) )))) ;) }) (else_clause "else if (rl_point == 0) {\n    rl_ding();\n    uVar3 = 1;\n  }\n  else if ((param_1 < 2) && (rl_explicit_arg == 0)) {\n    sVar5 = __ctype_get_mb_cur_max();\n    if ((sVar5 == 1) || (rl_byte_oriented != 0)) {\n      rl_point = rl_point + -1;\n      bVar1 = *(byte *)(rl_line_buffer + rl_point);\n      rl_delete_text(rl_point,iVar2);\n      iVar2 = rl_point;\n      uVar3 = 0;\n      if (rl_point == rl_end) {\n        ppuVar6 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar6 + (ulong)bVar1 * 2 + 1) & 0x40) != 0) {\n          if (_rl_last_c_pos == 0) {\n            uVar3 = 0;\n          }\n          else {\n            uVar4 = rl_character_len(bVar1,iVar2);\n            _rl_erase_at_end_of_line(uVar4);\n          }\n        }\n      }\n    }\n    else {\n      rl_point = _rl_find_prev_mbchar(rl_line_buffer,rl_point,1);\n      rl_delete_text(rl_point,iVar2);\n      uVar3 = 0;\n    }\n  }\n  else {\n    rl_backward_char();\n    rl_kill_text(iVar2,rl_point);\n    uVar3 = 0;\n  }" else (if_statement "if (rl_point == 0) {\n    rl_ding();\n    uVar3 = 1;\n  }\n  else if ((param_1 < 2) && (rl_explicit_arg == 0)) {\n    sVar5 = __ctype_get_mb_cur_max();\n    if ((sVar5 == 1) || (rl_byte_oriented != 0)) {\n      rl_point = rl_point + -1;\n      bVar1 = *(byte *)(rl_line_buffer + rl_point);\n      rl_delete_text(rl_point,iVar2);\n      iVar2 = rl_point;\n      uVar3 = 0;\n      if (rl_point == rl_end) {\n        ppuVar6 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar6 + (ulong)bVar1 * 2 + 1) & 0x40) != 0) {\n          if (_rl_last_c_pos == 0) {\n            uVar3 = 0;\n          }\n          else {\n            uVar4 = rl_character_len(bVar1,iVar2);\n            _rl_erase_at_end_of_line(uVar4);\n          }\n        }\n      }\n    }\n    else {\n      rl_point = _rl_find_prev_mbchar(rl_line_buffer,rl_point,1);\n      rl_delete_text(rl_point,iVar2);\n      uVar3 = 0;\n    }\n  }\n  else {\n    rl_backward_char();\n    rl_kill_text(iVar2,rl_point);\n    uVar3 = 0;\n  }" if (parenthesized_expression "(rl_point == 0)" ( (binary_expression "rl_point == 0" identifier == number_literal) )) (compound_statement "{\n    rl_ding();\n    uVar3 = 1;\n  }" { (expression_statement "rl_ding();" (call_expression "rl_ding()" identifier (argument_list "()" ( ))) ;) (expression_statement "uVar3 = 1;" (assignment_expression "uVar3 = 1" identifier = number_literal) ;) }) (else_clause "else if ((param_1 < 2) && (rl_explicit_arg == 0)) {\n    sVar5 = __ctype_get_mb_cur_max();\n    if ((sVar5 == 1) || (rl_byte_oriented != 0)) {\n      rl_point = rl_point + -1;\n      bVar1 = *(byte *)(rl_line_buffer + rl_point);\n      rl_delete_text(rl_point,iVar2);\n      iVar2 = rl_point;\n      uVar3 = 0;\n      if (rl_point == rl_end) {\n        ppuVar6 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar6 + (ulong)bVar1 * 2 + 1) & 0x40) != 0) {\n          if (_rl_last_c_pos == 0) {\n            uVar3 = 0;\n          }\n          else {\n            uVar4 = rl_character_len(bVar1,iVar2);\n            _rl_erase_at_end_of_line(uVar4);\n          }\n        }\n      }\n    }\n    else {\n      rl_point = _rl_find_prev_mbchar(rl_line_buffer,rl_point,1);\n      rl_delete_text(rl_point,iVar2);\n      uVar3 = 0;\n    }\n  }\n  else {\n    rl_backward_char();\n    rl_kill_text(iVar2,rl_point);\n    uVar3 = 0;\n  }" else (if_statement "if ((param_1 < 2) && (rl_explicit_arg == 0)) {\n    sVar5 = __ctype_get_mb_cur_max();\n    if ((sVar5 == 1) || (rl_byte_oriented != 0)) {\n      rl_point = rl_point + -1;\n      bVar1 = *(byte *)(rl_line_buffer + rl_point);\n      rl_delete_text(rl_point,iVar2);\n      iVar2 = rl_point;\n      uVar3 = 0;\n      if (rl_point == rl_end) {\n        ppuVar6 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar6 + (ulong)bVar1 * 2 + 1) & 0x40) != 0) {\n          if (_rl_last_c_pos == 0) {\n            uVar3 = 0;\n          }\n          else {\n            uVar4 = rl_character_len(bVar1,iVar2);\n            _rl_erase_at_end_of_line(uVar4);\n          }\n        }\n      }\n    }\n    else {\n      rl_point = _rl_find_prev_mbchar(rl_line_buffer,rl_point,1);\n      rl_delete_text(rl_point,iVar2);\n      uVar3 = 0;\n    }\n  }\n  else {\n    rl_backward_char();\n    rl_kill_text(iVar2,rl_point);\n    uVar3 = 0;\n  }" if (parenthesized_expression "((param_1 < 2) && (rl_explicit_arg == 0))" ( (binary_expression "(param_1 < 2) && (rl_explicit_arg == 0)" (parenthesized_expression "(param_1 < 2)" ( (binary_expression "param_1 < 2" identifier < number_literal) )) && (parenthesized_expression "(rl_explicit_arg == 0)" ( (binary_expression "rl_explicit_arg == 0" identifier == number_literal) ))) )) (compound_statement "{\n    sVar5 = __ctype_get_mb_cur_max();\n    if ((sVar5 == 1) || (rl_byte_oriented != 0)) {\n      rl_point = rl_point + -1;\n      bVar1 = *(byte *)(rl_line_buffer + rl_point);\n      rl_delete_text(rl_point,iVar2);\n      iVar2 = rl_point;\n      uVar3 = 0;\n      if (rl_point == rl_end) {\n        ppuVar6 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar6 + (ulong)bVar1 * 2 + 1) & 0x40) != 0) {\n          if (_rl_last_c_pos == 0) {\n            uVar3 = 0;\n          }\n          else {\n            uVar4 = rl_character_len(bVar1,iVar2);\n            _rl_erase_at_end_of_line(uVar4);\n          }\n        }\n      }\n    }\n    else {\n      rl_point = _rl_find_prev_mbchar(rl_line_buffer,rl_point,1);\n      rl_delete_text(rl_point,iVar2);\n      uVar3 = 0;\n    }\n  }" { (expression_statement "sVar5 = __ctype_get_mb_cur_max();" (assignment_expression "sVar5 = __ctype_get_mb_cur_max()" identifier = (call_expression "__ctype_get_mb_cur_max()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((sVar5 == 1) || (rl_byte_oriented != 0)) {\n      rl_point = rl_point + -1;\n      bVar1 = *(byte *)(rl_line_buffer + rl_point);\n      rl_delete_text(rl_point,iVar2);\n      iVar2 = rl_point;\n      uVar3 = 0;\n      if (rl_point == rl_end) {\n        ppuVar6 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar6 + (ulong)bVar1 * 2 + 1) & 0x40) != 0) {\n          if (_rl_last_c_pos == 0) {\n            uVar3 = 0;\n          }\n          else {\n            uVar4 = rl_character_len(bVar1,iVar2);\n            _rl_erase_at_end_of_line(uVar4);\n          }\n        }\n      }\n    }\n    else {\n      rl_point = _rl_find_prev_mbchar(rl_line_buffer,rl_point,1);\n      rl_delete_text(rl_point,iVar2);\n      uVar3 = 0;\n    }" if (parenthesized_expression "((sVar5 == 1) || (rl_byte_oriented != 0))" ( (binary_expression "(sVar5 == 1) || (rl_byte_oriented != 0)" (parenthesized_expression "(sVar5 == 1)" ( (binary_expression "sVar5 == 1" identifier == number_literal) )) || (parenthesized_expression "(rl_byte_oriented != 0)" ( (binary_expression "rl_byte_oriented != 0" identifier != number_literal) ))) )) (compound_statement "{\n      rl_point = rl_point + -1;\n      bVar1 = *(byte *)(rl_line_buffer + rl_point);\n      rl_delete_text(rl_point,iVar2);\n      iVar2 = rl_point;\n      uVar3 = 0;\n      if (rl_point == rl_end) {\n        ppuVar6 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar6 + (ulong)bVar1 * 2 + 1) & 0x40) != 0) {\n          if (_rl_last_c_pos == 0) {\n            uVar3 = 0;\n          }\n          else {\n            uVar4 = rl_character_len(bVar1,iVar2);\n            _rl_erase_at_end_of_line(uVar4);\n          }\n        }\n      }\n    }" { (expression_statement "rl_point = rl_point + -1;" (assignment_expression "rl_point = rl_point + -1" identifier = (binary_expression "rl_point + -1" identifier + number_literal)) ;) (expression_statement "bVar1 = *(byte *)(rl_line_buffer + rl_point);" (assignment_expression "bVar1 = *(byte *)(rl_line_buffer + rl_point)" identifier = (pointer_expression "*(byte *)(rl_line_buffer + rl_point)" * (cast_expression "(byte *)(rl_line_buffer + rl_point)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(rl_line_buffer + rl_point)" ( (binary_expression "rl_line_buffer + rl_point" identifier + identifier) ))))) ;) (expression_statement "rl_delete_text(rl_point,iVar2);" (call_expression "rl_delete_text(rl_point,iVar2)" identifier (argument_list "(rl_point,iVar2)" ( identifier , identifier ))) ;) (expression_statement "iVar2 = rl_point;" (assignment_expression "iVar2 = rl_point" identifier = identifier) ;) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) (if_statement "if (rl_point == rl_end) {\n        ppuVar6 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar6 + (ulong)bVar1 * 2 + 1) & 0x40) != 0) {\n          if (_rl_last_c_pos == 0) {\n            uVar3 = 0;\n          }\n          else {\n            uVar4 = rl_character_len(bVar1,iVar2);\n            _rl_erase_at_end_of_line(uVar4);\n          }\n        }\n      }" if (parenthesized_expression "(rl_point == rl_end)" ( (binary_expression "rl_point == rl_end" identifier == identifier) )) (compound_statement "{\n        ppuVar6 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar6 + (ulong)bVar1 * 2 + 1) & 0x40) != 0) {\n          if (_rl_last_c_pos == 0) {\n            uVar3 = 0;\n          }\n          else {\n            uVar4 = rl_character_len(bVar1,iVar2);\n            _rl_erase_at_end_of_line(uVar4);\n          }\n        }\n      }" { (expression_statement "ppuVar6 = __ctype_b_loc();" (assignment_expression "ppuVar6 = __ctype_b_loc()" identifier = (call_expression "__ctype_b_loc()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((*(byte *)((long)*ppuVar6 + (ulong)bVar1 * 2 + 1) & 0x40) != 0) {\n          if (_rl_last_c_pos == 0) {\n            uVar3 = 0;\n          }\n          else {\n            uVar4 = rl_character_len(bVar1,iVar2);\n            _rl_erase_at_end_of_line(uVar4);\n          }\n        }" if (parenthesized_expression "((*(byte *)((long)*ppuVar6 + (ulong)bVar1 * 2 + 1) & 0x40) != 0)" ( (binary_expression "(*(byte *)((long)*ppuVar6 + (ulong)bVar1 * 2 + 1) & 0x40) != 0" (parenthesized_expression "(*(byte *)((long)*ppuVar6 + (ulong)bVar1 * 2 + 1) & 0x40)" ( (binary_expression "*(byte *)((long)*ppuVar6 + (ulong)bVar1 * 2 + 1) & 0x40" (pointer_expression "*(byte *)((long)*ppuVar6 + (ulong)bVar1 * 2 + 1)" * (cast_expression "(byte *)((long)*ppuVar6 + (ulong)bVar1 * 2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)*ppuVar6 + (ulong)bVar1 * 2 + 1)" ( (binary_expression "(long)*ppuVar6 + (ulong)bVar1 * 2 + 1" (binary_expression "(long)*ppuVar6 + (ulong)bVar1 * 2" (cast_expression "(long)*ppuVar6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "*ppuVar6" * identifier)) + (binary_expression "(ulong)bVar1 * 2" (cast_expression "(ulong)bVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n          if (_rl_last_c_pos == 0) {\n            uVar3 = 0;\n          }\n          else {\n            uVar4 = rl_character_len(bVar1,iVar2);\n            _rl_erase_at_end_of_line(uVar4);\n          }\n        }" { (if_statement "if (_rl_last_c_pos == 0) {\n            uVar3 = 0;\n          }\n          else {\n            uVar4 = rl_character_len(bVar1,iVar2);\n            _rl_erase_at_end_of_line(uVar4);\n          }" if (parenthesized_expression "(_rl_last_c_pos == 0)" ( (binary_expression "_rl_last_c_pos == 0" identifier == number_literal) )) (compound_statement "{\n            uVar3 = 0;\n          }" { (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) }) (else_clause "else {\n            uVar4 = rl_character_len(bVar1,iVar2);\n            _rl_erase_at_end_of_line(uVar4);\n          }" else (compound_statement "{\n            uVar4 = rl_character_len(bVar1,iVar2);\n            _rl_erase_at_end_of_line(uVar4);\n          }" { (expression_statement "uVar4 = rl_character_len(bVar1,iVar2);" (assignment_expression "uVar4 = rl_character_len(bVar1,iVar2)" identifier = (call_expression "rl_character_len(bVar1,iVar2)" identifier (argument_list "(bVar1,iVar2)" ( identifier , identifier )))) ;) (expression_statement "_rl_erase_at_end_of_line(uVar4);" (call_expression "_rl_erase_at_end_of_line(uVar4)" identifier (argument_list "(uVar4)" ( identifier ))) ;) }))) })) })) }) (else_clause "else {\n      rl_point = _rl_find_prev_mbchar(rl_line_buffer,rl_point,1);\n      rl_delete_text(rl_point,iVar2);\n      uVar3 = 0;\n    }" else (compound_statement "{\n      rl_point = _rl_find_prev_mbchar(rl_line_buffer,rl_point,1);\n      rl_delete_text(rl_point,iVar2);\n      uVar3 = 0;\n    }" { (expression_statement "rl_point = _rl_find_prev_mbchar(rl_line_buffer,rl_point,1);" (assignment_expression "rl_point = _rl_find_prev_mbchar(rl_line_buffer,rl_point,1)" identifier = (call_expression "_rl_find_prev_mbchar(rl_line_buffer,rl_point,1)" identifier (argument_list "(rl_line_buffer,rl_point,1)" ( identifier , identifier , number_literal )))) ;) (expression_statement "rl_delete_text(rl_point,iVar2);" (call_expression "rl_delete_text(rl_point,iVar2)" identifier (argument_list "(rl_point,iVar2)" ( identifier , identifier ))) ;) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) }))) }) (else_clause "else {\n    rl_backward_char();\n    rl_kill_text(iVar2,rl_point);\n    uVar3 = 0;\n  }" else (compound_statement "{\n    rl_backward_char();\n    rl_kill_text(iVar2,rl_point);\n    uVar3 = 0;\n  }" { (expression_statement "rl_backward_char();" (call_expression "rl_backward_char()" identifier (argument_list "()" ( ))) ;) (expression_statement "rl_kill_text(iVar2,rl_point);" (call_expression "rl_kill_text(iVar2,rl_point)" identifier (argument_list "(iVar2,rl_point)" ( identifier , identifier ))) ;) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) }))))))) (return_statement "return uVar3;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * (pointer_declarator * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (unary_expression - IDENT) )))) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < LIT) )) && (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (pointer_expression * IDENT)) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT) )))) & LIT) )) != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) }))) })) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))))))) (return_statement return IDENT ;) })))
(function_definition "undefined4 _rl_rubout_char(int param_1)\n\n{\n  byte bVar1;\n  int iVar2;\n  undefined4 uVar3;\n  undefined4 uVar4;\n  size_t sVar5;\n  ushort **ppuVar6;\n  \n  iVar2 = rl_point;\n  if (param_1 < 0) {\n    uVar3 = rl_delete(-param_1);\n  }\n  else if (rl_point == 0) {\n    rl_ding();\n    uVar3 = 1;\n  }\n  else if ((param_1 < 2) && (rl_explicit_arg == 0)) {\n    sVar5 = __ctype_get_mb_cur_max();\n    if ((sVar5 == 1) || (rl_byte_oriented != 0)) {\n      rl_point = rl_point + -1;\n      bVar1 = *(byte *)(rl_line_buffer + rl_point);\n      rl_delete_text(rl_point,iVar2);\n      iVar2 = rl_point;\n      uVar3 = 0;\n      if (rl_point == rl_end) {\n        ppuVar6 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar6 + (ulong)bVar1 * 2 + 1) & 0x40) != 0) {\n          if (_rl_last_c_pos == 0) {\n            uVar3 = 0;\n          }\n          else {\n            uVar4 = rl_character_len(bVar1,iVar2);\n            _rl_erase_at_end_of_line(uVar4);\n          }\n        }\n      }\n    }\n    else {\n      rl_point = _rl_find_prev_mbchar(rl_line_buffer,rl_point,1);\n      rl_delete_text(rl_point,iVar2);\n      uVar3 = 0;\n    }\n  }\n  else {\n    rl_backward_char();\n    rl_kill_text(iVar2,rl_point);\n    uVar3 = 0;\n  }\n  return uVar3;\n}" (type_identifier "undefined4") (function_declarator "_rl_rubout_char(int param_1)" (identifier "_rl_rubout_char") (parameter_list "(int param_1)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) () ")"))) (compound_statement "{\n  byte bVar1;\n  int iVar2;\n  undefined4 uVar3;\n  undefined4 uVar4;\n  size_t sVar5;\n  ushort **ppuVar6;\n  \n  iVar2 = rl_point;\n  if (param_1 < 0) {\n    uVar3 = rl_delete(-param_1);\n  }\n  else if (rl_point == 0) {\n    rl_ding();\n    uVar3 = 1;\n  }\n  else if ((param_1 < 2) && (rl_explicit_arg == 0)) {\n    sVar5 = __ctype_get_mb_cur_max();\n    if ((sVar5 == 1) || (rl_byte_oriented != 0)) {\n      rl_point = rl_point + -1;\n      bVar1 = *(byte *)(rl_line_buffer + rl_point);\n      rl_delete_text(rl_point,iVar2);\n      iVar2 = rl_point;\n      uVar3 = 0;\n      if (rl_point == rl_end) {\n        ppuVar6 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar6 + (ulong)bVar1 * 2 + 1) & 0x40) != 0) {\n          if (_rl_last_c_pos == 0) {\n            uVar3 = 0;\n          }\n          else {\n            uVar4 = rl_character_len(bVar1,iVar2);\n            _rl_erase_at_end_of_line(uVar4);\n          }\n        }\n      }\n    }\n    else {\n      rl_point = _rl_find_prev_mbchar(rl_line_buffer,rl_point,1);\n      rl_delete_text(rl_point,iVar2);\n      uVar3 = 0;\n    }\n  }\n  else {\n    rl_backward_char();\n    rl_kill_text(iVar2,rl_point);\n    uVar3 = 0;\n  }\n  return uVar3;\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "undefined4 uVar3;" (type_identifier "undefined4") (identifier "uVar3") (; ";")) (declaration "undefined4 uVar4;" (type_identifier "undefined4") (identifier "uVar4") (; ";")) (declaration "size_t sVar5;" (primitive_type "size_t") (identifier "sVar5") (; ";")) (declaration "ushort **ppuVar6;" (type_identifier "ushort") (pointer_declarator "**ppuVar6" (* "*") (pointer_declarator "*ppuVar6" (* "*") (identifier "ppuVar6"))) (; ";")) (expression_statement "iVar2 = rl_point;" (assignment_expression "iVar2 = rl_point" (identifier "iVar2") (= "=") (identifier "rl_point")) (; ";")) (if_statement "if (param_1 < 0) {\n    uVar3 = rl_delete(-param_1);\n  }\n  else if (rl_point == 0) {\n    rl_ding();\n    uVar3 = 1;\n  }\n  else if ((param_1 < 2) && (rl_explicit_arg == 0)) {\n    sVar5 = __ctype_get_mb_cur_max();\n    if ((sVar5 == 1) || (rl_byte_oriented != 0)) {\n      rl_point = rl_point + -1;\n      bVar1 = *(byte *)(rl_line_buffer + rl_point);\n      rl_delete_text(rl_point,iVar2);\n      iVar2 = rl_point;\n      uVar3 = 0;\n      if (rl_point == rl_end) {\n        ppuVar6 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar6 + (ulong)bVar1 * 2 + 1) & 0x40) != 0) {\n          if (_rl_last_c_pos == 0) {\n            uVar3 = 0;\n          }\n          else {\n            uVar4 = rl_character_len(bVar1,iVar2);\n            _rl_erase_at_end_of_line(uVar4);\n          }\n        }\n      }\n    }\n    else {\n      rl_point = _rl_find_prev_mbchar(rl_line_buffer,rl_point,1);\n      rl_delete_text(rl_point,iVar2);\n      uVar3 = 0;\n    }\n  }\n  else {\n    rl_backward_char();\n    rl_kill_text(iVar2,rl_point);\n    uVar3 = 0;\n  }" (if "if") (parenthesized_expression "(param_1 < 0)" (( "(") (binary_expression "param_1 < 0" (identifier "param_1") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n    uVar3 = rl_delete(-param_1);\n  }" ({ "{") (expression_statement "uVar3 = rl_delete(-param_1);" (assignment_expression "uVar3 = rl_delete(-param_1)" (identifier "uVar3") (= "=") (call_expression "rl_delete(-param_1)" (identifier "rl_delete") (argument_list "(-param_1)" (( "(") (unary_expression "-param_1" (- "-") (identifier "param_1")) () ")")))) (; ";")) (} "}")) (else_clause "else if (rl_point == 0) {\n    rl_ding();\n    uVar3 = 1;\n  }\n  else if ((param_1 < 2) && (rl_explicit_arg == 0)) {\n    sVar5 = __ctype_get_mb_cur_max();\n    if ((sVar5 == 1) || (rl_byte_oriented != 0)) {\n      rl_point = rl_point + -1;\n      bVar1 = *(byte *)(rl_line_buffer + rl_point);\n      rl_delete_text(rl_point,iVar2);\n      iVar2 = rl_point;\n      uVar3 = 0;\n      if (rl_point == rl_end) {\n        ppuVar6 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar6 + (ulong)bVar1 * 2 + 1) & 0x40) != 0) {\n          if (_rl_last_c_pos == 0) {\n            uVar3 = 0;\n          }\n          else {\n            uVar4 = rl_character_len(bVar1,iVar2);\n            _rl_erase_at_end_of_line(uVar4);\n          }\n        }\n      }\n    }\n    else {\n      rl_point = _rl_find_prev_mbchar(rl_line_buffer,rl_point,1);\n      rl_delete_text(rl_point,iVar2);\n      uVar3 = 0;\n    }\n  }\n  else {\n    rl_backward_char();\n    rl_kill_text(iVar2,rl_point);\n    uVar3 = 0;\n  }" (else "else") (if_statement "if (rl_point == 0) {\n    rl_ding();\n    uVar3 = 1;\n  }\n  else if ((param_1 < 2) && (rl_explicit_arg == 0)) {\n    sVar5 = __ctype_get_mb_cur_max();\n    if ((sVar5 == 1) || (rl_byte_oriented != 0)) {\n      rl_point = rl_point + -1;\n      bVar1 = *(byte *)(rl_line_buffer + rl_point);\n      rl_delete_text(rl_point,iVar2);\n      iVar2 = rl_point;\n      uVar3 = 0;\n      if (rl_point == rl_end) {\n        ppuVar6 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar6 + (ulong)bVar1 * 2 + 1) & 0x40) != 0) {\n          if (_rl_last_c_pos == 0) {\n            uVar3 = 0;\n          }\n          else {\n            uVar4 = rl_character_len(bVar1,iVar2);\n            _rl_erase_at_end_of_line(uVar4);\n          }\n        }\n      }\n    }\n    else {\n      rl_point = _rl_find_prev_mbchar(rl_line_buffer,rl_point,1);\n      rl_delete_text(rl_point,iVar2);\n      uVar3 = 0;\n    }\n  }\n  else {\n    rl_backward_char();\n    rl_kill_text(iVar2,rl_point);\n    uVar3 = 0;\n  }" (if "if") (parenthesized_expression "(rl_point == 0)" (( "(") (binary_expression "rl_point == 0" (identifier "rl_point") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    rl_ding();\n    uVar3 = 1;\n  }" ({ "{") (expression_statement "rl_ding();" (call_expression "rl_ding()" (identifier "rl_ding") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "uVar3 = 1;" (assignment_expression "uVar3 = 1" (identifier "uVar3") (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else if ((param_1 < 2) && (rl_explicit_arg == 0)) {\n    sVar5 = __ctype_get_mb_cur_max();\n    if ((sVar5 == 1) || (rl_byte_oriented != 0)) {\n      rl_point = rl_point + -1;\n      bVar1 = *(byte *)(rl_line_buffer + rl_point);\n      rl_delete_text(rl_point,iVar2);\n      iVar2 = rl_point;\n      uVar3 = 0;\n      if (rl_point == rl_end) {\n        ppuVar6 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar6 + (ulong)bVar1 * 2 + 1) & 0x40) != 0) {\n          if (_rl_last_c_pos == 0) {\n            uVar3 = 0;\n          }\n          else {\n            uVar4 = rl_character_len(bVar1,iVar2);\n            _rl_erase_at_end_of_line(uVar4);\n          }\n        }\n      }\n    }\n    else {\n      rl_point = _rl_find_prev_mbchar(rl_line_buffer,rl_point,1);\n      rl_delete_text(rl_point,iVar2);\n      uVar3 = 0;\n    }\n  }\n  else {\n    rl_backward_char();\n    rl_kill_text(iVar2,rl_point);\n    uVar3 = 0;\n  }" (else "else") (if_statement "if ((param_1 < 2) && (rl_explicit_arg == 0)) {\n    sVar5 = __ctype_get_mb_cur_max();\n    if ((sVar5 == 1) || (rl_byte_oriented != 0)) {\n      rl_point = rl_point + -1;\n      bVar1 = *(byte *)(rl_line_buffer + rl_point);\n      rl_delete_text(rl_point,iVar2);\n      iVar2 = rl_point;\n      uVar3 = 0;\n      if (rl_point == rl_end) {\n        ppuVar6 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar6 + (ulong)bVar1 * 2 + 1) & 0x40) != 0) {\n          if (_rl_last_c_pos == 0) {\n            uVar3 = 0;\n          }\n          else {\n            uVar4 = rl_character_len(bVar1,iVar2);\n            _rl_erase_at_end_of_line(uVar4);\n          }\n        }\n      }\n    }\n    else {\n      rl_point = _rl_find_prev_mbchar(rl_line_buffer,rl_point,1);\n      rl_delete_text(rl_point,iVar2);\n      uVar3 = 0;\n    }\n  }\n  else {\n    rl_backward_char();\n    rl_kill_text(iVar2,rl_point);\n    uVar3 = 0;\n  }" (if "if") (parenthesized_expression "((param_1 < 2) && (rl_explicit_arg == 0))" (( "(") (binary_expression "(param_1 < 2) && (rl_explicit_arg == 0)" (parenthesized_expression "(param_1 < 2)" (( "(") (binary_expression "param_1 < 2" (identifier "param_1") (< "<") (number_literal "2")) () ")")) (&& "&&") (parenthesized_expression "(rl_explicit_arg == 0)" (( "(") (binary_expression "rl_explicit_arg == 0" (identifier "rl_explicit_arg") (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n    sVar5 = __ctype_get_mb_cur_max();\n    if ((sVar5 == 1) || (rl_byte_oriented != 0)) {\n      rl_point = rl_point + -1;\n      bVar1 = *(byte *)(rl_line_buffer + rl_point);\n      rl_delete_text(rl_point,iVar2);\n      iVar2 = rl_point;\n      uVar3 = 0;\n      if (rl_point == rl_end) {\n        ppuVar6 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar6 + (ulong)bVar1 * 2 + 1) & 0x40) != 0) {\n          if (_rl_last_c_pos == 0) {\n            uVar3 = 0;\n          }\n          else {\n            uVar4 = rl_character_len(bVar1,iVar2);\n            _rl_erase_at_end_of_line(uVar4);\n          }\n        }\n      }\n    }\n    else {\n      rl_point = _rl_find_prev_mbchar(rl_line_buffer,rl_point,1);\n      rl_delete_text(rl_point,iVar2);\n      uVar3 = 0;\n    }\n  }" ({ "{") (expression_statement "sVar5 = __ctype_get_mb_cur_max();" (assignment_expression "sVar5 = __ctype_get_mb_cur_max()" (identifier "sVar5") (= "=") (call_expression "__ctype_get_mb_cur_max()" (identifier "__ctype_get_mb_cur_max") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if ((sVar5 == 1) || (rl_byte_oriented != 0)) {\n      rl_point = rl_point + -1;\n      bVar1 = *(byte *)(rl_line_buffer + rl_point);\n      rl_delete_text(rl_point,iVar2);\n      iVar2 = rl_point;\n      uVar3 = 0;\n      if (rl_point == rl_end) {\n        ppuVar6 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar6 + (ulong)bVar1 * 2 + 1) & 0x40) != 0) {\n          if (_rl_last_c_pos == 0) {\n            uVar3 = 0;\n          }\n          else {\n            uVar4 = rl_character_len(bVar1,iVar2);\n            _rl_erase_at_end_of_line(uVar4);\n          }\n        }\n      }\n    }\n    else {\n      rl_point = _rl_find_prev_mbchar(rl_line_buffer,rl_point,1);\n      rl_delete_text(rl_point,iVar2);\n      uVar3 = 0;\n    }" (if "if") (parenthesized_expression "((sVar5 == 1) || (rl_byte_oriented != 0))" (( "(") (binary_expression "(sVar5 == 1) || (rl_byte_oriented != 0)" (parenthesized_expression "(sVar5 == 1)" (( "(") (binary_expression "sVar5 == 1" (identifier "sVar5") (== "==") (number_literal "1")) () ")")) (|| "||") (parenthesized_expression "(rl_byte_oriented != 0)" (( "(") (binary_expression "rl_byte_oriented != 0" (identifier "rl_byte_oriented") (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n      rl_point = rl_point + -1;\n      bVar1 = *(byte *)(rl_line_buffer + rl_point);\n      rl_delete_text(rl_point,iVar2);\n      iVar2 = rl_point;\n      uVar3 = 0;\n      if (rl_point == rl_end) {\n        ppuVar6 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar6 + (ulong)bVar1 * 2 + 1) & 0x40) != 0) {\n          if (_rl_last_c_pos == 0) {\n            uVar3 = 0;\n          }\n          else {\n            uVar4 = rl_character_len(bVar1,iVar2);\n            _rl_erase_at_end_of_line(uVar4);\n          }\n        }\n      }\n    }" ({ "{") (expression_statement "rl_point = rl_point + -1;" (assignment_expression "rl_point = rl_point + -1" (identifier "rl_point") (= "=") (binary_expression "rl_point + -1" (identifier "rl_point") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar1 = *(byte *)(rl_line_buffer + rl_point);" (assignment_expression "bVar1 = *(byte *)(rl_line_buffer + rl_point)" (identifier "bVar1") (= "=") (pointer_expression "*(byte *)(rl_line_buffer + rl_point)" (* "*") (cast_expression "(byte *)(rl_line_buffer + rl_point)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(rl_line_buffer + rl_point)" (( "(") (binary_expression "rl_line_buffer + rl_point" (identifier "rl_line_buffer") (+ "+") (identifier "rl_point")) () ")"))))) (; ";")) (expression_statement "rl_delete_text(rl_point,iVar2);" (call_expression "rl_delete_text(rl_point,iVar2)" (identifier "rl_delete_text") (argument_list "(rl_point,iVar2)" (( "(") (identifier "rl_point") (, ",") (identifier "iVar2") () ")"))) (; ";")) (expression_statement "iVar2 = rl_point;" (assignment_expression "iVar2 = rl_point" (identifier "iVar2") (= "=") (identifier "rl_point")) (; ";")) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" (identifier "uVar3") (= "=") (number_literal "0")) (; ";")) (if_statement "if (rl_point == rl_end) {\n        ppuVar6 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar6 + (ulong)bVar1 * 2 + 1) & 0x40) != 0) {\n          if (_rl_last_c_pos == 0) {\n            uVar3 = 0;\n          }\n          else {\n            uVar4 = rl_character_len(bVar1,iVar2);\n            _rl_erase_at_end_of_line(uVar4);\n          }\n        }\n      }" (if "if") (parenthesized_expression "(rl_point == rl_end)" (( "(") (binary_expression "rl_point == rl_end" (identifier "rl_point") (== "==") (identifier "rl_end")) () ")")) (compound_statement "{\n        ppuVar6 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar6 + (ulong)bVar1 * 2 + 1) & 0x40) != 0) {\n          if (_rl_last_c_pos == 0) {\n            uVar3 = 0;\n          }\n          else {\n            uVar4 = rl_character_len(bVar1,iVar2);\n            _rl_erase_at_end_of_line(uVar4);\n          }\n        }\n      }" ({ "{") (expression_statement "ppuVar6 = __ctype_b_loc();" (assignment_expression "ppuVar6 = __ctype_b_loc()" (identifier "ppuVar6") (= "=") (call_expression "__ctype_b_loc()" (identifier "__ctype_b_loc") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if ((*(byte *)((long)*ppuVar6 + (ulong)bVar1 * 2 + 1) & 0x40) != 0) {\n          if (_rl_last_c_pos == 0) {\n            uVar3 = 0;\n          }\n          else {\n            uVar4 = rl_character_len(bVar1,iVar2);\n            _rl_erase_at_end_of_line(uVar4);\n          }\n        }" (if "if") (parenthesized_expression "((*(byte *)((long)*ppuVar6 + (ulong)bVar1 * 2 + 1) & 0x40) != 0)" (( "(") (binary_expression "(*(byte *)((long)*ppuVar6 + (ulong)bVar1 * 2 + 1) & 0x40) != 0" (parenthesized_expression "(*(byte *)((long)*ppuVar6 + (ulong)bVar1 * 2 + 1) & 0x40)" (( "(") (binary_expression "*(byte *)((long)*ppuVar6 + (ulong)bVar1 * 2 + 1) & 0x40" (pointer_expression "*(byte *)((long)*ppuVar6 + (ulong)bVar1 * 2 + 1)" (* "*") (cast_expression "(byte *)((long)*ppuVar6 + (ulong)bVar1 * 2 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)*ppuVar6 + (ulong)bVar1 * 2 + 1)" (( "(") (binary_expression "(long)*ppuVar6 + (ulong)bVar1 * 2 + 1" (binary_expression "(long)*ppuVar6 + (ulong)bVar1 * 2" (cast_expression "(long)*ppuVar6" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (pointer_expression "*ppuVar6" (* "*") (identifier "ppuVar6"))) (+ "+") (binary_expression "(ulong)bVar1 * 2" (cast_expression "(ulong)bVar1" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar1")) (* "*") (number_literal "2"))) (+ "+") (number_literal "1")) () ")")))) (& "&") (number_literal "0x40")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          if (_rl_last_c_pos == 0) {\n            uVar3 = 0;\n          }\n          else {\n            uVar4 = rl_character_len(bVar1,iVar2);\n            _rl_erase_at_end_of_line(uVar4);\n          }\n        }" ({ "{") (if_statement "if (_rl_last_c_pos == 0) {\n            uVar3 = 0;\n          }\n          else {\n            uVar4 = rl_character_len(bVar1,iVar2);\n            _rl_erase_at_end_of_line(uVar4);\n          }" (if "if") (parenthesized_expression "(_rl_last_c_pos == 0)" (( "(") (binary_expression "_rl_last_c_pos == 0" (identifier "_rl_last_c_pos") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            uVar3 = 0;\n          }" ({ "{") (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" (identifier "uVar3") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n            uVar4 = rl_character_len(bVar1,iVar2);\n            _rl_erase_at_end_of_line(uVar4);\n          }" (else "else") (compound_statement "{\n            uVar4 = rl_character_len(bVar1,iVar2);\n            _rl_erase_at_end_of_line(uVar4);\n          }" ({ "{") (expression_statement "uVar4 = rl_character_len(bVar1,iVar2);" (assignment_expression "uVar4 = rl_character_len(bVar1,iVar2)" (identifier "uVar4") (= "=") (call_expression "rl_character_len(bVar1,iVar2)" (identifier "rl_character_len") (argument_list "(bVar1,iVar2)" (( "(") (identifier "bVar1") (, ",") (identifier "iVar2") () ")")))) (; ";")) (expression_statement "_rl_erase_at_end_of_line(uVar4);" (call_expression "_rl_erase_at_end_of_line(uVar4)" (identifier "_rl_erase_at_end_of_line") (argument_list "(uVar4)" (( "(") (identifier "uVar4") () ")"))) (; ";")) (} "}")))) (} "}"))) (} "}"))) (} "}")) (else_clause "else {\n      rl_point = _rl_find_prev_mbchar(rl_line_buffer,rl_point,1);\n      rl_delete_text(rl_point,iVar2);\n      uVar3 = 0;\n    }" (else "else") (compound_statement "{\n      rl_point = _rl_find_prev_mbchar(rl_line_buffer,rl_point,1);\n      rl_delete_text(rl_point,iVar2);\n      uVar3 = 0;\n    }" ({ "{") (expression_statement "rl_point = _rl_find_prev_mbchar(rl_line_buffer,rl_point,1);" (assignment_expression "rl_point = _rl_find_prev_mbchar(rl_line_buffer,rl_point,1)" (identifier "rl_point") (= "=") (call_expression "_rl_find_prev_mbchar(rl_line_buffer,rl_point,1)" (identifier "_rl_find_prev_mbchar") (argument_list "(rl_line_buffer,rl_point,1)" (( "(") (identifier "rl_line_buffer") (, ",") (identifier "rl_point") (, ",") (number_literal "1") () ")")))) (; ";")) (expression_statement "rl_delete_text(rl_point,iVar2);" (call_expression "rl_delete_text(rl_point,iVar2)" (identifier "rl_delete_text") (argument_list "(rl_point,iVar2)" (( "(") (identifier "rl_point") (, ",") (identifier "iVar2") () ")"))) (; ";")) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" (identifier "uVar3") (= "=") (number_literal "0")) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n    rl_backward_char();\n    rl_kill_text(iVar2,rl_point);\n    uVar3 = 0;\n  }" (else "else") (compound_statement "{\n    rl_backward_char();\n    rl_kill_text(iVar2,rl_point);\n    uVar3 = 0;\n  }" ({ "{") (expression_statement "rl_backward_char();" (call_expression "rl_backward_char()" (identifier "rl_backward_char") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "rl_kill_text(iVar2,rl_point);" (call_expression "rl_kill_text(iVar2,rl_point)" (identifier "rl_kill_text") (argument_list "(iVar2,rl_point)" (( "(") (identifier "iVar2") (, ",") (identifier "rl_point") () ")"))) (; ";")) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" (identifier "uVar3") (= "=") (number_literal "0")) (; ";")) (} "}")))))))) (return_statement "return uVar3;" (return "return") (identifier "uVar3") (; ";")) (} "}")))

type_1 function_1(type_1 var_1,type_1 key)

{
  type_2 bVar1;
  int iVar2;
  type_1 wVar3;
  type_1 l;
  size_t var_7;
  type_3 **ppuVar5;
  
  iVar2 = var_3;
  if (var_1 < L'\0') {
    wVar3 = var_2(-var_1,key);
  }
  else if (var_3 == 0) {
    var_4();
    wVar3 = L'\x01';
  }
  else if ((var_1 < L'\x02') && (var_5 == 0)) {
    var_7 = var_6();
    if ((var_7 == 1) || (var_8 != L'\0')) {
      var_3 = var_3 + L'\xffffffff';
      bVar1 = rl_line_buffer[var_3];
      var_9(var_3,iVar2);
      iVar2 = var_3;
      wVar3 = L'\0';
      if (var_3 == var_10) {
        ppuVar5 = var_11();
        if ((*(type_2 *)((long)*ppuVar5 + (type_4)bVar1 * 2 + 1) & 0x40) != 0) {
          if (var_12 == L'\0') {
            wVar3 = L'\0';
          }
          else {
            l = var_13((type_5)bVar1,iVar2);
            var_14(l);
          }
        }
      }
    }
    else {
      var_3 = var_15(rl_line_buffer,var_3,L'\x01');
      var_9(var_3,iVar2);
      wVar3 = L'\0';
    }
  }
  else {
    var_16(var_1,key);
    var_17(iVar2,var_3);
    wVar3 = L'\0';
  }
  return wVar3;
}


(translation_unit (function_definition type: (type_identifier) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (pointer_declarator declarator: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (unary_expression argument: (identifier))))))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (pointer_expression argument: (identifier))) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (number_literal))))) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))))))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (number_literal))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))))))) alternative: (else_clause (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))))))))) (return_statement (identifier)))))

undefined4 MASKED(int param_1)

{
  byte bVar1;
  int iVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  size_t sVar5;
  ushort **ppuVar6;
  
  iVar2 = rl_point;
  if (param_1 < 0) {
    uVar3 = rl_delete(-param_1);
  }
  else if (rl_point == 0) {
    rl_ding();
    uVar3 = 1;
  }
  else if ((param_1 < 2) && (rl_explicit_arg == 0)) {
    sVar5 = __ctype_get_mb_cur_max();
    if ((sVar5 == 1) || (rl_byte_oriented != 0)) {
      rl_point = rl_point + -1;
      bVar1 = *(byte *)(rl_line_buffer + rl_point);
      rl_delete_text(rl_point,iVar2);
      iVar2 = rl_point;
      uVar3 = 0;
      if (rl_point == rl_end) {
        ppuVar6 = __ctype_b_loc();
        if ((*(byte *)((long)*ppuVar6 + (ulong)bVar1 * 2 + 1) & 0x40) != 0) {
          if (_rl_last_c_pos == 0) {
            uVar3 = 0;
          }
          else {
            uVar4 = rl_character_len(bVar1,iVar2);
            _rl_erase_at_end_of_line(uVar4);
          }
        }
      }
    }
    else {
      rl_point = _rl_find_prev_mbchar(rl_line_buffer,rl_point,1);
      rl_delete_text(rl_point,iVar2);
      uVar3 = 0;
    }
  }
  else {
    rl_backward_char();
    rl_kill_text(iVar2,rl_point);
    uVar3 = 0;
  }
  return uVar3;
}

