
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Unknown calling convention */

char ** rl_completion_matches(char *text,rl_compentry_func_t *entry_function)

{
  char **match_list;
  char *pcVar1;
  char *string;
  size_t bytes;
  int matches;
  char **ppcVar2;
  int iVar3;
  int local_28;
  
  match_list = (char **)xmalloc(0x2c);
  match_list[1] = (char *)0x0;
  local_28 = 10;
  matches = 0;
  do {
    pcVar1 = (*entry_function)(text,matches);
    if (pcVar1 == (char *)0x0) {
      if (matches == 0) {
        ppcVar2 = (char **)0x0;
        xfree(match_list);
      }
      else {
        ppcVar2 = match_list;
        if (matches == 1) {
          pcVar1 = match_list[1];
          match_list[1] = (char *)0x0;
          *match_list = pcVar1;
        }
        else {
          compute_lcd_of_matches(match_list,matches,text);
        }
      }
      return ppcVar2;
    }
    if (_rl_caught_signal == 0) {
      iVar3 = matches + 1;
      if (local_28 <= iVar3) {
        bytes = local_28 * 4 + 0x2c;
        local_28 = local_28 + 10;
        goto LAB_000cf287;
      }
    }
    else {
      if ((entry_function == rl_filename_completion_function) &&
         (string = match_list[1], string != (char *)0x0)) {
        ppcVar2 = match_list + 2;
        do {
          xfree(string);
          string = *ppcVar2;
          ppcVar2 = ppcVar2 + 1;
        } while (string != (char *)0x0);
      }
      xfree(match_list);
      if (_rl_caught_signal == 0) {
        local_28 = 10;
        bytes = 0x2c;
        match_list = (char **)0x0;
        iVar3 = 1;
        matches = 0;
      }
      else {
        match_list = (char **)0x0;
        iVar3 = 1;
        _rl_signal_handler(_rl_caught_signal);
        bytes = 0x2c;
        matches = 0;
        local_28 = 10;
      }
LAB_000cf287:
      match_list = (char **)xrealloc(match_list,bytes);
      if (match_list == (char **)0x0) {
        return (char **)0x0;
      }
    }
    match_list[iVar3] = pcVar1;
    match_list[matches + 2] = (char *)0x0;
    matches = iVar3;
  } while( true );
}



/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

undefined4 * rl_completion_matches(undefined4 param_1,code *param_2)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  undefined4 *puVar6;
  int iVar7;
  int *piVar8;
  int local_28;
  
  puVar2 = (undefined4 *)xmalloc(0x2c);
  puVar2[1] = 0;
  local_28 = 10;
  iVar5 = 0;
  do {
    iVar3 = (*param_2)(param_1,iVar5);
    if (iVar3 == 0) {
      if (iVar5 == 0) {
        puVar6 = (undefined4 *)0x0;
        xfree(puVar2);
      }
      else {
        puVar6 = puVar2;
        if (iVar5 == 1) {
          uVar1 = puVar2[1];
          puVar2[1] = 0;
          *puVar2 = uVar1;
        }
        else {
          FUN_000cd7f0();
        }
      }
      return puVar6;
    }
    if (_rl_caught_signal == 0) {
      iVar7 = iVar5 + 1;
      if (local_28 <= iVar7) {
        iVar4 = local_28 * 4 + 0x2c;
        local_28 = local_28 + 10;
        goto LAB_000cf287;
      }
    }
    else {
      if ((param_2 == rl_filename_completion_function) && (iVar5 = puVar2[1], iVar5 != 0)) {
        piVar8 = puVar2 + 2;
        do {
          xfree(iVar5);
          iVar5 = *piVar8;
          piVar8 = piVar8 + 1;
        } while (iVar5 != 0);
      }
      xfree(puVar2);
      if (_rl_caught_signal == 0) {
        local_28 = 10;
        iVar4 = 0x2c;
        puVar2 = (undefined4 *)0x0;
        iVar7 = 1;
        iVar5 = 0;
      }
      else {
        puVar2 = (undefined4 *)0x0;
        iVar7 = 1;
        _rl_signal_handler(_rl_caught_signal);
        iVar4 = 0x2c;
        iVar5 = 0;
        local_28 = 10;
      }
LAB_000cf287:
      puVar2 = (undefined4 *)xrealloc(puVar2,iVar4);
      if (puVar2 == (undefined4 *)0x0) {
        return (undefined4 *)0x0;
      }
    }
    puVar2[iVar7] = iVar3;
    puVar2[iVar5 + 2] = 0;
    iVar5 = iVar7;
  } while( true );
}


PUSH EBP
PUSH EDI
XOR EDI,EDI
PUSH ESI
PUSH EBX
CALL 0x00031ed0
ADD EBX,0x7ae05
SUB ESP,0x28
PUSH 0x2c
CALL 0x00099200
ADD ESP,0x10
MOV ESI,EAX
MOV dword ptr [EAX + 0x4],0x0
LEA EAX,[EBX + 0x7fd0]
MOV dword ptr [ESP + 0x4],0xa
MOV dword ptr [ESP],EAX
LEA EAX,[EBX + 0xfff82b40]
MOV dword ptr [ESP + 0xc],EAX
JMP 0x000cf2ad
MOV EAX,dword ptr [ESP + 0xc]
CMP dword ptr [ESP + 0x34],EAX
JZ 0x000cf340
SUB ESP,0xc
PUSH ESI
CALL 0x000992e0
MOV EAX,dword ptr [ESP + 0x10]
ADD ESP,0x10
MOV EDX,dword ptr [EAX]
TEST EDX,EDX
JZ 0x000cf320
MOV EAX,dword ptr [ESP]
SUB ESP,0xc
XOR ESI,ESI
MOV EDI,0x1
MOV EAX,dword ptr [EAX]
PUSH EAX
CALL 0x000dcf50
ADD ESP,0x10
MOV ECX,0x2c
XOR EDX,EDX
MOV dword ptr [ESP + 0x4],0xa
MOV dword ptr [ESP + 0x8],EDX
SUB ESP,0x8
PUSH ECX
PUSH ESI
CALL 0x00099260
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0x8]
TEST EAX,EAX
MOV ESI,EAX
JZ 0x000cf316
MOV dword ptr [ESI + EDI*0x4],EBP
MOV dword ptr [ESI + EDX*0x4 + 0x8],0x0
SUB ESP,0x8
PUSH EDI
PUSH dword ptr [ESP + 0x3c]
CALL dword ptr [ESP + 0x44]
MOV EBP,EAX
ADD ESP,0x10
TEST EAX,EAX
JZ 0x000cf300
MOV EAX,dword ptr [ESP]
MOV EAX,dword ptr [EAX]
TEST EAX,EAX
JNZ 0x000cf238
LEA EAX,[EDI + 0x1]
CMP EAX,dword ptr [ESP + 0x4]
JGE 0x000cf2e0
MOV EDX,EDI
MOV EDI,EAX
JMP 0x000cf2a2
MOV EDX,dword ptr [ESP + 0x4]
LEA ECX,[EDX*0x4 + 0x2c]
ADD EDX,0xa
MOV dword ptr [ESP + 0x4],EDX
MOV EDX,EDI
MOV EDI,EAX
JMP 0x000cf287
TEST EDI,EDI
JZ 0x000cf36b
CMP EDI,0x1
JZ 0x000cf37b
MOV ECX,dword ptr [ESP + 0x30]
MOV EDX,EDI
MOV EAX,ESI
CALL 0x000cd7f0
ADD ESP,0x1c
MOV EAX,ESI
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV dword ptr [ESP + 0x4],0xa
MOV ECX,0x2c
XOR ESI,ESI
MOV EDI,0x1
JMP 0x000cf287
MOV EAX,dword ptr [ESI + 0x4]
TEST EAX,EAX
JZ 0x000cf246
LEA EDI,[ESI + 0x8]
NOP
SUB ESP,0xc
ADD EDI,0x4
PUSH EAX
CALL 0x000992e0
MOV EAX,dword ptr [EDI + -0x4]
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x000cf350
JMP 0x000cf246
SUB ESP,0xc
PUSH ESI
XOR ESI,ESI
CALL 0x000992e0
ADD ESP,0x10
JMP 0x000cf316
MOV EAX,dword ptr [ESI + 0x4]
MOV dword ptr [ESI + 0x4],0x0
MOV dword ptr [ESI],EAX
JMP 0x000cf316
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nundefined4 * rl_completion_matches(undefined4 param_1,code *param_2)\n\n{\n  undefined4 uVar1;\n  undefined4 *puVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  undefined4 *puVar6;\n  int iVar7;\n  int *piVar8;\n  int local_28;\n  \n  puVar2 = (undefined4 *)xmalloc(0x2c);\n  puVar2[1] = 0;\n  local_28 = 10;\n  iVar5 = 0;\n  do {\n    iVar3 = (*param_2)(param_1,iVar5);\n    if (iVar3 == 0) {\n      if (iVar5 == 0) {\n        puVar6 = (undefined4 *)0x0;\n        xfree(puVar2);\n      }\n      else {\n        puVar6 = puVar2;\n        if (iVar5 == 1) {\n          uVar1 = puVar2[1];\n          puVar2[1] = 0;\n          *puVar2 = uVar1;\n        }\n        else {\n          FUN_000cd7f0();\n        }\n      }\n      return puVar6;\n    }\n    if (_rl_caught_signal == 0) {\n      iVar7 = iVar5 + 1;\n      if (local_28 <= iVar7) {\n        iVar4 = local_28 * 4 + 0x2c;\n        local_28 = local_28 + 10;\n        goto LAB_000cf287;\n      }\n    }\n    else {\n      if ((param_2 == rl_filename_completion_function) && (iVar5 = puVar2[1], iVar5 != 0)) {\n        piVar8 = puVar2 + 2;\n        do {\n          xfree(iVar5);\n          iVar5 = *piVar8;\n          piVar8 = piVar8 + 1;\n        } while (iVar5 != 0);\n      }\n      xfree(puVar2);\n      if (_rl_caught_signal == 0) {\n        local_28 = 10;\n        iVar4 = 0x2c;\n        puVar2 = (undefined4 *)0x0;\n        iVar7 = 1;\n        iVar5 = 0;\n      }\n      else {\n        puVar2 = (undefined4 *)0x0;\n        iVar7 = 1;\n        _rl_signal_handler(_rl_caught_signal);\n        iVar4 = 0x2c;\n        iVar5 = 0;\n        local_28 = 10;\n      }\nLAB_000cf287:\n      puVar2 = (undefined4 *)xrealloc(puVar2,iVar4);\n      if (puVar2 == (undefined4 *)0x0) {\n        return (undefined4 *)0x0;\n      }\n    }\n    puVar2[iVar7] = iVar3;\n    puVar2[iVar5 + 2] = 0;\n    iVar5 = iVar7;\n  } while( true );\n}\n\n" comment (function_definition "undefined4 * rl_completion_matches(undefined4 param_1,code *param_2)\n\n{\n  undefined4 uVar1;\n  undefined4 *puVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  undefined4 *puVar6;\n  int iVar7;\n  int *piVar8;\n  int local_28;\n  \n  puVar2 = (undefined4 *)xmalloc(0x2c);\n  puVar2[1] = 0;\n  local_28 = 10;\n  iVar5 = 0;\n  do {\n    iVar3 = (*param_2)(param_1,iVar5);\n    if (iVar3 == 0) {\n      if (iVar5 == 0) {\n        puVar6 = (undefined4 *)0x0;\n        xfree(puVar2);\n      }\n      else {\n        puVar6 = puVar2;\n        if (iVar5 == 1) {\n          uVar1 = puVar2[1];\n          puVar2[1] = 0;\n          *puVar2 = uVar1;\n        }\n        else {\n          FUN_000cd7f0();\n        }\n      }\n      return puVar6;\n    }\n    if (_rl_caught_signal == 0) {\n      iVar7 = iVar5 + 1;\n      if (local_28 <= iVar7) {\n        iVar4 = local_28 * 4 + 0x2c;\n        local_28 = local_28 + 10;\n        goto LAB_000cf287;\n      }\n    }\n    else {\n      if ((param_2 == rl_filename_completion_function) && (iVar5 = puVar2[1], iVar5 != 0)) {\n        piVar8 = puVar2 + 2;\n        do {\n          xfree(iVar5);\n          iVar5 = *piVar8;\n          piVar8 = piVar8 + 1;\n        } while (iVar5 != 0);\n      }\n      xfree(puVar2);\n      if (_rl_caught_signal == 0) {\n        local_28 = 10;\n        iVar4 = 0x2c;\n        puVar2 = (undefined4 *)0x0;\n        iVar7 = 1;\n        iVar5 = 0;\n      }\n      else {\n        puVar2 = (undefined4 *)0x0;\n        iVar7 = 1;\n        _rl_signal_handler(_rl_caught_signal);\n        iVar4 = 0x2c;\n        iVar5 = 0;\n        local_28 = 10;\n      }\nLAB_000cf287:\n      puVar2 = (undefined4 *)xrealloc(puVar2,iVar4);\n      if (puVar2 == (undefined4 *)0x0) {\n        return (undefined4 *)0x0;\n      }\n    }\n    puVar2[iVar7] = iVar3;\n    puVar2[iVar5 + 2] = 0;\n    iVar5 = iVar7;\n  } while( true );\n}" type_identifier (pointer_declarator "* rl_completion_matches(undefined4 param_1,code *param_2)" * (function_declarator "rl_completion_matches(undefined4 param_1,code *param_2)" identifier (parameter_list "(undefined4 param_1,code *param_2)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "code *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) )))) (compound_statement "{\n  undefined4 uVar1;\n  undefined4 *puVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  undefined4 *puVar6;\n  int iVar7;\n  int *piVar8;\n  int local_28;\n  \n  puVar2 = (undefined4 *)xmalloc(0x2c);\n  puVar2[1] = 0;\n  local_28 = 10;\n  iVar5 = 0;\n  do {\n    iVar3 = (*param_2)(param_1,iVar5);\n    if (iVar3 == 0) {\n      if (iVar5 == 0) {\n        puVar6 = (undefined4 *)0x0;\n        xfree(puVar2);\n      }\n      else {\n        puVar6 = puVar2;\n        if (iVar5 == 1) {\n          uVar1 = puVar2[1];\n          puVar2[1] = 0;\n          *puVar2 = uVar1;\n        }\n        else {\n          FUN_000cd7f0();\n        }\n      }\n      return puVar6;\n    }\n    if (_rl_caught_signal == 0) {\n      iVar7 = iVar5 + 1;\n      if (local_28 <= iVar7) {\n        iVar4 = local_28 * 4 + 0x2c;\n        local_28 = local_28 + 10;\n        goto LAB_000cf287;\n      }\n    }\n    else {\n      if ((param_2 == rl_filename_completion_function) && (iVar5 = puVar2[1], iVar5 != 0)) {\n        piVar8 = puVar2 + 2;\n        do {\n          xfree(iVar5);\n          iVar5 = *piVar8;\n          piVar8 = piVar8 + 1;\n        } while (iVar5 != 0);\n      }\n      xfree(puVar2);\n      if (_rl_caught_signal == 0) {\n        local_28 = 10;\n        iVar4 = 0x2c;\n        puVar2 = (undefined4 *)0x0;\n        iVar7 = 1;\n        iVar5 = 0;\n      }\n      else {\n        puVar2 = (undefined4 *)0x0;\n        iVar7 = 1;\n        _rl_signal_handler(_rl_caught_signal);\n        iVar4 = 0x2c;\n        iVar5 = 0;\n        local_28 = 10;\n      }\nLAB_000cf287:\n      puVar2 = (undefined4 *)xrealloc(puVar2,iVar4);\n      if (puVar2 == (undefined4 *)0x0) {\n        return (undefined4 *)0x0;\n      }\n    }\n    puVar2[iVar7] = iVar3;\n    puVar2[iVar5 + 2] = 0;\n    iVar5 = iVar7;\n  } while( true );\n}" { (declaration "undefined4 uVar1;" type_identifier identifier ;) (declaration "undefined4 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "undefined4 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int *piVar8;" primitive_type (pointer_declarator "*piVar8" * identifier) ;) (declaration "int local_28;" primitive_type identifier ;) (expression_statement "puVar2 = (undefined4 *)xmalloc(0x2c);" (assignment_expression "puVar2 = (undefined4 *)xmalloc(0x2c)" identifier = (cast_expression "(undefined4 *)xmalloc(0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(0x2c)" identifier (argument_list "(0x2c)" ( number_literal ))))) ;) (expression_statement "puVar2[1] = 0;" (assignment_expression "puVar2[1] = 0" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_28 = 10;" (assignment_expression "local_28 = 10" identifier = number_literal) ;) (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;) (do_statement "do {\n    iVar3 = (*param_2)(param_1,iVar5);\n    if (iVar3 == 0) {\n      if (iVar5 == 0) {\n        puVar6 = (undefined4 *)0x0;\n        xfree(puVar2);\n      }\n      else {\n        puVar6 = puVar2;\n        if (iVar5 == 1) {\n          uVar1 = puVar2[1];\n          puVar2[1] = 0;\n          *puVar2 = uVar1;\n        }\n        else {\n          FUN_000cd7f0();\n        }\n      }\n      return puVar6;\n    }\n    if (_rl_caught_signal == 0) {\n      iVar7 = iVar5 + 1;\n      if (local_28 <= iVar7) {\n        iVar4 = local_28 * 4 + 0x2c;\n        local_28 = local_28 + 10;\n        goto LAB_000cf287;\n      }\n    }\n    else {\n      if ((param_2 == rl_filename_completion_function) && (iVar5 = puVar2[1], iVar5 != 0)) {\n        piVar8 = puVar2 + 2;\n        do {\n          xfree(iVar5);\n          iVar5 = *piVar8;\n          piVar8 = piVar8 + 1;\n        } while (iVar5 != 0);\n      }\n      xfree(puVar2);\n      if (_rl_caught_signal == 0) {\n        local_28 = 10;\n        iVar4 = 0x2c;\n        puVar2 = (undefined4 *)0x0;\n        iVar7 = 1;\n        iVar5 = 0;\n      }\n      else {\n        puVar2 = (undefined4 *)0x0;\n        iVar7 = 1;\n        _rl_signal_handler(_rl_caught_signal);\n        iVar4 = 0x2c;\n        iVar5 = 0;\n        local_28 = 10;\n      }\nLAB_000cf287:\n      puVar2 = (undefined4 *)xrealloc(puVar2,iVar4);\n      if (puVar2 == (undefined4 *)0x0) {\n        return (undefined4 *)0x0;\n      }\n    }\n    puVar2[iVar7] = iVar3;\n    puVar2[iVar5 + 2] = 0;\n    iVar5 = iVar7;\n  } while( true );" do (compound_statement "{\n    iVar3 = (*param_2)(param_1,iVar5);\n    if (iVar3 == 0) {\n      if (iVar5 == 0) {\n        puVar6 = (undefined4 *)0x0;\n        xfree(puVar2);\n      }\n      else {\n        puVar6 = puVar2;\n        if (iVar5 == 1) {\n          uVar1 = puVar2[1];\n          puVar2[1] = 0;\n          *puVar2 = uVar1;\n        }\n        else {\n          FUN_000cd7f0();\n        }\n      }\n      return puVar6;\n    }\n    if (_rl_caught_signal == 0) {\n      iVar7 = iVar5 + 1;\n      if (local_28 <= iVar7) {\n        iVar4 = local_28 * 4 + 0x2c;\n        local_28 = local_28 + 10;\n        goto LAB_000cf287;\n      }\n    }\n    else {\n      if ((param_2 == rl_filename_completion_function) && (iVar5 = puVar2[1], iVar5 != 0)) {\n        piVar8 = puVar2 + 2;\n        do {\n          xfree(iVar5);\n          iVar5 = *piVar8;\n          piVar8 = piVar8 + 1;\n        } while (iVar5 != 0);\n      }\n      xfree(puVar2);\n      if (_rl_caught_signal == 0) {\n        local_28 = 10;\n        iVar4 = 0x2c;\n        puVar2 = (undefined4 *)0x0;\n        iVar7 = 1;\n        iVar5 = 0;\n      }\n      else {\n        puVar2 = (undefined4 *)0x0;\n        iVar7 = 1;\n        _rl_signal_handler(_rl_caught_signal);\n        iVar4 = 0x2c;\n        iVar5 = 0;\n        local_28 = 10;\n      }\nLAB_000cf287:\n      puVar2 = (undefined4 *)xrealloc(puVar2,iVar4);\n      if (puVar2 == (undefined4 *)0x0) {\n        return (undefined4 *)0x0;\n      }\n    }\n    puVar2[iVar7] = iVar3;\n    puVar2[iVar5 + 2] = 0;\n    iVar5 = iVar7;\n  }" { (expression_statement "iVar3 = (*param_2)(param_1,iVar5);" (assignment_expression "iVar3 = (*param_2)(param_1,iVar5)" identifier = (call_expression "(*param_2)(param_1,iVar5)" (parenthesized_expression "(*param_2)" ( (pointer_expression "*param_2" * identifier) )) (argument_list "(param_1,iVar5)" ( identifier , identifier )))) ;) (if_statement "if (iVar3 == 0) {\n      if (iVar5 == 0) {\n        puVar6 = (undefined4 *)0x0;\n        xfree(puVar2);\n      }\n      else {\n        puVar6 = puVar2;\n        if (iVar5 == 1) {\n          uVar1 = puVar2[1];\n          puVar2[1] = 0;\n          *puVar2 = uVar1;\n        }\n        else {\n          FUN_000cd7f0();\n        }\n      }\n      return puVar6;\n    }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n      if (iVar5 == 0) {\n        puVar6 = (undefined4 *)0x0;\n        xfree(puVar2);\n      }\n      else {\n        puVar6 = puVar2;\n        if (iVar5 == 1) {\n          uVar1 = puVar2[1];\n          puVar2[1] = 0;\n          *puVar2 = uVar1;\n        }\n        else {\n          FUN_000cd7f0();\n        }\n      }\n      return puVar6;\n    }" { (if_statement "if (iVar5 == 0) {\n        puVar6 = (undefined4 *)0x0;\n        xfree(puVar2);\n      }\n      else {\n        puVar6 = puVar2;\n        if (iVar5 == 1) {\n          uVar1 = puVar2[1];\n          puVar2[1] = 0;\n          *puVar2 = uVar1;\n        }\n        else {\n          FUN_000cd7f0();\n        }\n      }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n        puVar6 = (undefined4 *)0x0;\n        xfree(puVar2);\n      }" { (expression_statement "puVar6 = (undefined4 *)0x0;" (assignment_expression "puVar6 = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "xfree(puVar2);" (call_expression "xfree(puVar2)" identifier (argument_list "(puVar2)" ( identifier ))) ;) }) (else_clause "else {\n        puVar6 = puVar2;\n        if (iVar5 == 1) {\n          uVar1 = puVar2[1];\n          puVar2[1] = 0;\n          *puVar2 = uVar1;\n        }\n        else {\n          FUN_000cd7f0();\n        }\n      }" else (compound_statement "{\n        puVar6 = puVar2;\n        if (iVar5 == 1) {\n          uVar1 = puVar2[1];\n          puVar2[1] = 0;\n          *puVar2 = uVar1;\n        }\n        else {\n          FUN_000cd7f0();\n        }\n      }" { (expression_statement "puVar6 = puVar2;" (assignment_expression "puVar6 = puVar2" identifier = identifier) ;) (if_statement "if (iVar5 == 1) {\n          uVar1 = puVar2[1];\n          puVar2[1] = 0;\n          *puVar2 = uVar1;\n        }\n        else {\n          FUN_000cd7f0();\n        }" if (parenthesized_expression "(iVar5 == 1)" ( (binary_expression "iVar5 == 1" identifier == number_literal) )) (compound_statement "{\n          uVar1 = puVar2[1];\n          puVar2[1] = 0;\n          *puVar2 = uVar1;\n        }" { (expression_statement "uVar1 = puVar2[1];" (assignment_expression "uVar1 = puVar2[1]" identifier = (subscript_expression "puVar2[1]" identifier [ number_literal ])) ;) (expression_statement "puVar2[1] = 0;" (assignment_expression "puVar2[1] = 0" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*puVar2 = uVar1;" (assignment_expression "*puVar2 = uVar1" (pointer_expression "*puVar2" * identifier) = identifier) ;) }) (else_clause "else {\n          FUN_000cd7f0();\n        }" else (compound_statement "{\n          FUN_000cd7f0();\n        }" { (expression_statement "FUN_000cd7f0();" (call_expression "FUN_000cd7f0()" identifier (argument_list "()" ( ))) ;) }))) }))) (return_statement "return puVar6;" return identifier ;) })) (if_statement "if (_rl_caught_signal == 0) {\n      iVar7 = iVar5 + 1;\n      if (local_28 <= iVar7) {\n        iVar4 = local_28 * 4 + 0x2c;\n        local_28 = local_28 + 10;\n        goto LAB_000cf287;\n      }\n    }\n    else {\n      if ((param_2 == rl_filename_completion_function) && (iVar5 = puVar2[1], iVar5 != 0)) {\n        piVar8 = puVar2 + 2;\n        do {\n          xfree(iVar5);\n          iVar5 = *piVar8;\n          piVar8 = piVar8 + 1;\n        } while (iVar5 != 0);\n      }\n      xfree(puVar2);\n      if (_rl_caught_signal == 0) {\n        local_28 = 10;\n        iVar4 = 0x2c;\n        puVar2 = (undefined4 *)0x0;\n        iVar7 = 1;\n        iVar5 = 0;\n      }\n      else {\n        puVar2 = (undefined4 *)0x0;\n        iVar7 = 1;\n        _rl_signal_handler(_rl_caught_signal);\n        iVar4 = 0x2c;\n        iVar5 = 0;\n        local_28 = 10;\n      }\nLAB_000cf287:\n      puVar2 = (undefined4 *)xrealloc(puVar2,iVar4);\n      if (puVar2 == (undefined4 *)0x0) {\n        return (undefined4 *)0x0;\n      }\n    }" if (parenthesized_expression "(_rl_caught_signal == 0)" ( (binary_expression "_rl_caught_signal == 0" identifier == number_literal) )) (compound_statement "{\n      iVar7 = iVar5 + 1;\n      if (local_28 <= iVar7) {\n        iVar4 = local_28 * 4 + 0x2c;\n        local_28 = local_28 + 10;\n        goto LAB_000cf287;\n      }\n    }" { (expression_statement "iVar7 = iVar5 + 1;" (assignment_expression "iVar7 = iVar5 + 1" identifier = (binary_expression "iVar5 + 1" identifier + number_literal)) ;) (if_statement "if (local_28 <= iVar7) {\n        iVar4 = local_28 * 4 + 0x2c;\n        local_28 = local_28 + 10;\n        goto LAB_000cf287;\n      }" if (parenthesized_expression "(local_28 <= iVar7)" ( (binary_expression "local_28 <= iVar7" identifier <= identifier) )) (compound_statement "{\n        iVar4 = local_28 * 4 + 0x2c;\n        local_28 = local_28 + 10;\n        goto LAB_000cf287;\n      }" { (expression_statement "iVar4 = local_28 * 4 + 0x2c;" (assignment_expression "iVar4 = local_28 * 4 + 0x2c" identifier = (binary_expression "local_28 * 4 + 0x2c" (binary_expression "local_28 * 4" identifier * number_literal) + number_literal)) ;) (expression_statement "local_28 = local_28 + 10;" (assignment_expression "local_28 = local_28 + 10" identifier = (binary_expression "local_28 + 10" identifier + number_literal)) ;) (goto_statement "goto LAB_000cf287;" goto statement_identifier ;) })) }) (else_clause "else {\n      if ((param_2 == rl_filename_completion_function) && (iVar5 = puVar2[1], iVar5 != 0)) {\n        piVar8 = puVar2 + 2;\n        do {\n          xfree(iVar5);\n          iVar5 = *piVar8;\n          piVar8 = piVar8 + 1;\n        } while (iVar5 != 0);\n      }\n      xfree(puVar2);\n      if (_rl_caught_signal == 0) {\n        local_28 = 10;\n        iVar4 = 0x2c;\n        puVar2 = (undefined4 *)0x0;\n        iVar7 = 1;\n        iVar5 = 0;\n      }\n      else {\n        puVar2 = (undefined4 *)0x0;\n        iVar7 = 1;\n        _rl_signal_handler(_rl_caught_signal);\n        iVar4 = 0x2c;\n        iVar5 = 0;\n        local_28 = 10;\n      }\nLAB_000cf287:\n      puVar2 = (undefined4 *)xrealloc(puVar2,iVar4);\n      if (puVar2 == (undefined4 *)0x0) {\n        return (undefined4 *)0x0;\n      }\n    }" else (compound_statement "{\n      if ((param_2 == rl_filename_completion_function) && (iVar5 = puVar2[1], iVar5 != 0)) {\n        piVar8 = puVar2 + 2;\n        do {\n          xfree(iVar5);\n          iVar5 = *piVar8;\n          piVar8 = piVar8 + 1;\n        } while (iVar5 != 0);\n      }\n      xfree(puVar2);\n      if (_rl_caught_signal == 0) {\n        local_28 = 10;\n        iVar4 = 0x2c;\n        puVar2 = (undefined4 *)0x0;\n        iVar7 = 1;\n        iVar5 = 0;\n      }\n      else {\n        puVar2 = (undefined4 *)0x0;\n        iVar7 = 1;\n        _rl_signal_handler(_rl_caught_signal);\n        iVar4 = 0x2c;\n        iVar5 = 0;\n        local_28 = 10;\n      }\nLAB_000cf287:\n      puVar2 = (undefined4 *)xrealloc(puVar2,iVar4);\n      if (puVar2 == (undefined4 *)0x0) {\n        return (undefined4 *)0x0;\n      }\n    }" { (if_statement "if ((param_2 == rl_filename_completion_function) && (iVar5 = puVar2[1], iVar5 != 0)) {\n        piVar8 = puVar2 + 2;\n        do {\n          xfree(iVar5);\n          iVar5 = *piVar8;\n          piVar8 = piVar8 + 1;\n        } while (iVar5 != 0);\n      }" if (parenthesized_expression "((param_2 == rl_filename_completion_function) && (iVar5 = puVar2[1], iVar5 != 0))" ( (binary_expression "(param_2 == rl_filename_completion_function) && (iVar5 = puVar2[1], iVar5 != 0)" (parenthesized_expression "(param_2 == rl_filename_completion_function)" ( (binary_expression "param_2 == rl_filename_completion_function" identifier == identifier) )) && (parenthesized_expression "(iVar5 = puVar2[1], iVar5 != 0)" ( (comma_expression "iVar5 = puVar2[1], iVar5 != 0" (assignment_expression "iVar5 = puVar2[1]" identifier = (subscript_expression "puVar2[1]" identifier [ number_literal ])) , (binary_expression "iVar5 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n        piVar8 = puVar2 + 2;\n        do {\n          xfree(iVar5);\n          iVar5 = *piVar8;\n          piVar8 = piVar8 + 1;\n        } while (iVar5 != 0);\n      }" { (expression_statement "piVar8 = puVar2 + 2;" (assignment_expression "piVar8 = puVar2 + 2" identifier = (binary_expression "puVar2 + 2" identifier + number_literal)) ;) (do_statement "do {\n          xfree(iVar5);\n          iVar5 = *piVar8;\n          piVar8 = piVar8 + 1;\n        } while (iVar5 != 0);" do (compound_statement "{\n          xfree(iVar5);\n          iVar5 = *piVar8;\n          piVar8 = piVar8 + 1;\n        }" { (expression_statement "xfree(iVar5);" (call_expression "xfree(iVar5)" identifier (argument_list "(iVar5)" ( identifier ))) ;) (expression_statement "iVar5 = *piVar8;" (assignment_expression "iVar5 = *piVar8" identifier = (pointer_expression "*piVar8" * identifier)) ;) (expression_statement "piVar8 = piVar8 + 1;" (assignment_expression "piVar8 = piVar8 + 1" identifier = (binary_expression "piVar8 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) ;) })) (expression_statement "xfree(puVar2);" (call_expression "xfree(puVar2)" identifier (argument_list "(puVar2)" ( identifier ))) ;) (if_statement "if (_rl_caught_signal == 0) {\n        local_28 = 10;\n        iVar4 = 0x2c;\n        puVar2 = (undefined4 *)0x0;\n        iVar7 = 1;\n        iVar5 = 0;\n      }\n      else {\n        puVar2 = (undefined4 *)0x0;\n        iVar7 = 1;\n        _rl_signal_handler(_rl_caught_signal);\n        iVar4 = 0x2c;\n        iVar5 = 0;\n        local_28 = 10;\n      }" if (parenthesized_expression "(_rl_caught_signal == 0)" ( (binary_expression "_rl_caught_signal == 0" identifier == number_literal) )) (compound_statement "{\n        local_28 = 10;\n        iVar4 = 0x2c;\n        puVar2 = (undefined4 *)0x0;\n        iVar7 = 1;\n        iVar5 = 0;\n      }" { (expression_statement "local_28 = 10;" (assignment_expression "local_28 = 10" identifier = number_literal) ;) (expression_statement "iVar4 = 0x2c;" (assignment_expression "iVar4 = 0x2c" identifier = number_literal) ;) (expression_statement "puVar2 = (undefined4 *)0x0;" (assignment_expression "puVar2 = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar7 = 1;" (assignment_expression "iVar7 = 1" identifier = number_literal) ;) (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;) }) (else_clause "else {\n        puVar2 = (undefined4 *)0x0;\n        iVar7 = 1;\n        _rl_signal_handler(_rl_caught_signal);\n        iVar4 = 0x2c;\n        iVar5 = 0;\n        local_28 = 10;\n      }" else (compound_statement "{\n        puVar2 = (undefined4 *)0x0;\n        iVar7 = 1;\n        _rl_signal_handler(_rl_caught_signal);\n        iVar4 = 0x2c;\n        iVar5 = 0;\n        local_28 = 10;\n      }" { (expression_statement "puVar2 = (undefined4 *)0x0;" (assignment_expression "puVar2 = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar7 = 1;" (assignment_expression "iVar7 = 1" identifier = number_literal) ;) (expression_statement "_rl_signal_handler(_rl_caught_signal);" (call_expression "_rl_signal_handler(_rl_caught_signal)" identifier (argument_list "(_rl_caught_signal)" ( identifier ))) ;) (expression_statement "iVar4 = 0x2c;" (assignment_expression "iVar4 = 0x2c" identifier = number_literal) ;) (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;) (expression_statement "local_28 = 10;" (assignment_expression "local_28 = 10" identifier = number_literal) ;) }))) (labeled_statement "LAB_000cf287:\n      puVar2 = (undefined4 *)xrealloc(puVar2,iVar4);" statement_identifier : (expression_statement "puVar2 = (undefined4 *)xrealloc(puVar2,iVar4);" (assignment_expression "puVar2 = (undefined4 *)xrealloc(puVar2,iVar4)" identifier = (cast_expression "(undefined4 *)xrealloc(puVar2,iVar4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xrealloc(puVar2,iVar4)" identifier (argument_list "(puVar2,iVar4)" ( identifier , identifier ))))) ;)) (if_statement "if (puVar2 == (undefined4 *)0x0) {\n        return (undefined4 *)0x0;\n      }" if (parenthesized_expression "(puVar2 == (undefined4 *)0x0)" ( (binary_expression "puVar2 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        return (undefined4 *)0x0;\n      }" { (return_statement "return (undefined4 *)0x0;" return (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) }))) (expression_statement "puVar2[iVar7] = iVar3;" (assignment_expression "puVar2[iVar7] = iVar3" (subscript_expression "puVar2[iVar7]" identifier [ identifier ]) = identifier) ;) (expression_statement "puVar2[iVar5 + 2] = 0;" (assignment_expression "puVar2[iVar5 + 2] = 0" (subscript_expression "puVar2[iVar5 + 2]" identifier [ (binary_expression "iVar5 + 2" identifier + number_literal) ]) = number_literal) ;) (expression_statement "iVar5 = iVar7;" (assignment_expression "iVar5 = iVar7" identifier = identifier) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Unknown calling convention */\n\nchar ** rl_completion_matches(char *text,rl_compentry_func_t *entry_function)\n\n{\n  char **match_list;\n  char *pcVar1;\n  char *string;\n  size_t bytes;\n  int matches;\n  char **ppcVar2;\n  int iVar3;\n  int local_28;\n  \n  match_list = (char **)xmalloc(0x2c);\n  match_list[1] = (char *)0x0;\n  local_28 = 10;\n  matches = 0;\n  do {\n    pcVar1 = (*entry_function)(text,matches);\n    if (pcVar1 == (char *)0x0) {\n      if (matches == 0) {\n        ppcVar2 = (char **)0x0;\n        xfree(match_list);\n      }\n      else {\n        ppcVar2 = match_list;\n        if (matches == 1) {\n          pcVar1 = match_list[1];\n          match_list[1] = (char *)0x0;\n          *match_list = pcVar1;\n        }\n        else {\n          compute_lcd_of_matches(match_list,matches,text);\n        }\n      }\n      return ppcVar2;\n    }\n    if (_rl_caught_signal == 0) {\n      iVar3 = matches + 1;\n      if (local_28 <= iVar3) {\n        bytes = local_28 * 4 + 0x2c;\n        local_28 = local_28 + 10;\n        goto LAB_000cf287;\n      }\n    }\n    else {\n      if ((entry_function == rl_filename_completion_function) &&\n         (string = match_list[1], string != (char *)0x0)) {\n        ppcVar2 = match_list + 2;\n        do {\n          xfree(string);\n          string = *ppcVar2;\n          ppcVar2 = ppcVar2 + 1;\n        } while (string != (char *)0x0);\n      }\n      xfree(match_list);\n      if (_rl_caught_signal == 0) {\n        local_28 = 10;\n        bytes = 0x2c;\n        match_list = (char **)0x0;\n        iVar3 = 1;\n        matches = 0;\n      }\n      else {\n        match_list = (char **)0x0;\n        iVar3 = 1;\n        _rl_signal_handler(_rl_caught_signal);\n        bytes = 0x2c;\n        matches = 0;\n        local_28 = 10;\n      }\nLAB_000cf287:\n      match_list = (char **)xrealloc(match_list,bytes);\n      if (match_list == (char **)0x0) {\n        return (char **)0x0;\n      }\n    }\n    match_list[iVar3] = pcVar1;\n    match_list[matches + 2] = (char *)0x0;\n    matches = iVar3;\n  } while( true );\n}\n\n" comment comment (function_definition "char ** rl_completion_matches(char *text,rl_compentry_func_t *entry_function)\n\n{\n  char **match_list;\n  char *pcVar1;\n  char *string;\n  size_t bytes;\n  int matches;\n  char **ppcVar2;\n  int iVar3;\n  int local_28;\n  \n  match_list = (char **)xmalloc(0x2c);\n  match_list[1] = (char *)0x0;\n  local_28 = 10;\n  matches = 0;\n  do {\n    pcVar1 = (*entry_function)(text,matches);\n    if (pcVar1 == (char *)0x0) {\n      if (matches == 0) {\n        ppcVar2 = (char **)0x0;\n        xfree(match_list);\n      }\n      else {\n        ppcVar2 = match_list;\n        if (matches == 1) {\n          pcVar1 = match_list[1];\n          match_list[1] = (char *)0x0;\n          *match_list = pcVar1;\n        }\n        else {\n          compute_lcd_of_matches(match_list,matches,text);\n        }\n      }\n      return ppcVar2;\n    }\n    if (_rl_caught_signal == 0) {\n      iVar3 = matches + 1;\n      if (local_28 <= iVar3) {\n        bytes = local_28 * 4 + 0x2c;\n        local_28 = local_28 + 10;\n        goto LAB_000cf287;\n      }\n    }\n    else {\n      if ((entry_function == rl_filename_completion_function) &&\n         (string = match_list[1], string != (char *)0x0)) {\n        ppcVar2 = match_list + 2;\n        do {\n          xfree(string);\n          string = *ppcVar2;\n          ppcVar2 = ppcVar2 + 1;\n        } while (string != (char *)0x0);\n      }\n      xfree(match_list);\n      if (_rl_caught_signal == 0) {\n        local_28 = 10;\n        bytes = 0x2c;\n        match_list = (char **)0x0;\n        iVar3 = 1;\n        matches = 0;\n      }\n      else {\n        match_list = (char **)0x0;\n        iVar3 = 1;\n        _rl_signal_handler(_rl_caught_signal);\n        bytes = 0x2c;\n        matches = 0;\n        local_28 = 10;\n      }\nLAB_000cf287:\n      match_list = (char **)xrealloc(match_list,bytes);\n      if (match_list == (char **)0x0) {\n        return (char **)0x0;\n      }\n    }\n    match_list[iVar3] = pcVar1;\n    match_list[matches + 2] = (char *)0x0;\n    matches = iVar3;\n  } while( true );\n}" primitive_type (pointer_declarator "** rl_completion_matches(char *text,rl_compentry_func_t *entry_function)" * (pointer_declarator "* rl_completion_matches(char *text,rl_compentry_func_t *entry_function)" * (function_declarator "rl_completion_matches(char *text,rl_compentry_func_t *entry_function)" identifier (parameter_list "(char *text,rl_compentry_func_t *entry_function)" ( (parameter_declaration "char *text" primitive_type (pointer_declarator "*text" * identifier)) , (parameter_declaration "rl_compentry_func_t *entry_function" type_identifier (pointer_declarator "*entry_function" * identifier)) ))))) (compound_statement "{\n  char **match_list;\n  char *pcVar1;\n  char *string;\n  size_t bytes;\n  int matches;\n  char **ppcVar2;\n  int iVar3;\n  int local_28;\n  \n  match_list = (char **)xmalloc(0x2c);\n  match_list[1] = (char *)0x0;\n  local_28 = 10;\n  matches = 0;\n  do {\n    pcVar1 = (*entry_function)(text,matches);\n    if (pcVar1 == (char *)0x0) {\n      if (matches == 0) {\n        ppcVar2 = (char **)0x0;\n        xfree(match_list);\n      }\n      else {\n        ppcVar2 = match_list;\n        if (matches == 1) {\n          pcVar1 = match_list[1];\n          match_list[1] = (char *)0x0;\n          *match_list = pcVar1;\n        }\n        else {\n          compute_lcd_of_matches(match_list,matches,text);\n        }\n      }\n      return ppcVar2;\n    }\n    if (_rl_caught_signal == 0) {\n      iVar3 = matches + 1;\n      if (local_28 <= iVar3) {\n        bytes = local_28 * 4 + 0x2c;\n        local_28 = local_28 + 10;\n        goto LAB_000cf287;\n      }\n    }\n    else {\n      if ((entry_function == rl_filename_completion_function) &&\n         (string = match_list[1], string != (char *)0x0)) {\n        ppcVar2 = match_list + 2;\n        do {\n          xfree(string);\n          string = *ppcVar2;\n          ppcVar2 = ppcVar2 + 1;\n        } while (string != (char *)0x0);\n      }\n      xfree(match_list);\n      if (_rl_caught_signal == 0) {\n        local_28 = 10;\n        bytes = 0x2c;\n        match_list = (char **)0x0;\n        iVar3 = 1;\n        matches = 0;\n      }\n      else {\n        match_list = (char **)0x0;\n        iVar3 = 1;\n        _rl_signal_handler(_rl_caught_signal);\n        bytes = 0x2c;\n        matches = 0;\n        local_28 = 10;\n      }\nLAB_000cf287:\n      match_list = (char **)xrealloc(match_list,bytes);\n      if (match_list == (char **)0x0) {\n        return (char **)0x0;\n      }\n    }\n    match_list[iVar3] = pcVar1;\n    match_list[matches + 2] = (char *)0x0;\n    matches = iVar3;\n  } while( true );\n}" { (declaration "char **match_list;" primitive_type (pointer_declarator "**match_list" * (pointer_declarator "*match_list" * identifier)) ;) (declaration "char *pcVar1;" primitive_type (pointer_declarator "*pcVar1" * identifier) ;) (declaration "char *string;" primitive_type (pointer_declarator "*string" * identifier) ;) (declaration "size_t bytes;" primitive_type identifier ;) (declaration "int matches;" primitive_type identifier ;) (declaration "char **ppcVar2;" primitive_type (pointer_declarator "**ppcVar2" * (pointer_declarator "*ppcVar2" * identifier)) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int local_28;" primitive_type identifier ;) (expression_statement "match_list = (char **)xmalloc(0x2c);" (assignment_expression "match_list = (char **)xmalloc(0x2c)" identifier = (cast_expression "(char **)xmalloc(0x2c)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (call_expression "xmalloc(0x2c)" identifier (argument_list "(0x2c)" ( number_literal ))))) ;) (expression_statement "match_list[1] = (char *)0x0;" (assignment_expression "match_list[1] = (char *)0x0" (subscript_expression "match_list[1]" identifier [ number_literal ]) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_28 = 10;" (assignment_expression "local_28 = 10" identifier = number_literal) ;) (expression_statement "matches = 0;" (assignment_expression "matches = 0" identifier = number_literal) ;) (do_statement "do {\n    pcVar1 = (*entry_function)(text,matches);\n    if (pcVar1 == (char *)0x0) {\n      if (matches == 0) {\n        ppcVar2 = (char **)0x0;\n        xfree(match_list);\n      }\n      else {\n        ppcVar2 = match_list;\n        if (matches == 1) {\n          pcVar1 = match_list[1];\n          match_list[1] = (char *)0x0;\n          *match_list = pcVar1;\n        }\n        else {\n          compute_lcd_of_matches(match_list,matches,text);\n        }\n      }\n      return ppcVar2;\n    }\n    if (_rl_caught_signal == 0) {\n      iVar3 = matches + 1;\n      if (local_28 <= iVar3) {\n        bytes = local_28 * 4 + 0x2c;\n        local_28 = local_28 + 10;\n        goto LAB_000cf287;\n      }\n    }\n    else {\n      if ((entry_function == rl_filename_completion_function) &&\n         (string = match_list[1], string != (char *)0x0)) {\n        ppcVar2 = match_list + 2;\n        do {\n          xfree(string);\n          string = *ppcVar2;\n          ppcVar2 = ppcVar2 + 1;\n        } while (string != (char *)0x0);\n      }\n      xfree(match_list);\n      if (_rl_caught_signal == 0) {\n        local_28 = 10;\n        bytes = 0x2c;\n        match_list = (char **)0x0;\n        iVar3 = 1;\n        matches = 0;\n      }\n      else {\n        match_list = (char **)0x0;\n        iVar3 = 1;\n        _rl_signal_handler(_rl_caught_signal);\n        bytes = 0x2c;\n        matches = 0;\n        local_28 = 10;\n      }\nLAB_000cf287:\n      match_list = (char **)xrealloc(match_list,bytes);\n      if (match_list == (char **)0x0) {\n        return (char **)0x0;\n      }\n    }\n    match_list[iVar3] = pcVar1;\n    match_list[matches + 2] = (char *)0x0;\n    matches = iVar3;\n  } while( true );" do (compound_statement "{\n    pcVar1 = (*entry_function)(text,matches);\n    if (pcVar1 == (char *)0x0) {\n      if (matches == 0) {\n        ppcVar2 = (char **)0x0;\n        xfree(match_list);\n      }\n      else {\n        ppcVar2 = match_list;\n        if (matches == 1) {\n          pcVar1 = match_list[1];\n          match_list[1] = (char *)0x0;\n          *match_list = pcVar1;\n        }\n        else {\n          compute_lcd_of_matches(match_list,matches,text);\n        }\n      }\n      return ppcVar2;\n    }\n    if (_rl_caught_signal == 0) {\n      iVar3 = matches + 1;\n      if (local_28 <= iVar3) {\n        bytes = local_28 * 4 + 0x2c;\n        local_28 = local_28 + 10;\n        goto LAB_000cf287;\n      }\n    }\n    else {\n      if ((entry_function == rl_filename_completion_function) &&\n         (string = match_list[1], string != (char *)0x0)) {\n        ppcVar2 = match_list + 2;\n        do {\n          xfree(string);\n          string = *ppcVar2;\n          ppcVar2 = ppcVar2 + 1;\n        } while (string != (char *)0x0);\n      }\n      xfree(match_list);\n      if (_rl_caught_signal == 0) {\n        local_28 = 10;\n        bytes = 0x2c;\n        match_list = (char **)0x0;\n        iVar3 = 1;\n        matches = 0;\n      }\n      else {\n        match_list = (char **)0x0;\n        iVar3 = 1;\n        _rl_signal_handler(_rl_caught_signal);\n        bytes = 0x2c;\n        matches = 0;\n        local_28 = 10;\n      }\nLAB_000cf287:\n      match_list = (char **)xrealloc(match_list,bytes);\n      if (match_list == (char **)0x0) {\n        return (char **)0x0;\n      }\n    }\n    match_list[iVar3] = pcVar1;\n    match_list[matches + 2] = (char *)0x0;\n    matches = iVar3;\n  }" { (expression_statement "pcVar1 = (*entry_function)(text,matches);" (assignment_expression "pcVar1 = (*entry_function)(text,matches)" identifier = (call_expression "(*entry_function)(text,matches)" (parenthesized_expression "(*entry_function)" ( (pointer_expression "*entry_function" * identifier) )) (argument_list "(text,matches)" ( identifier , identifier )))) ;) (if_statement "if (pcVar1 == (char *)0x0) {\n      if (matches == 0) {\n        ppcVar2 = (char **)0x0;\n        xfree(match_list);\n      }\n      else {\n        ppcVar2 = match_list;\n        if (matches == 1) {\n          pcVar1 = match_list[1];\n          match_list[1] = (char *)0x0;\n          *match_list = pcVar1;\n        }\n        else {\n          compute_lcd_of_matches(match_list,matches,text);\n        }\n      }\n      return ppcVar2;\n    }" if (parenthesized_expression "(pcVar1 == (char *)0x0)" ( (binary_expression "pcVar1 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      if (matches == 0) {\n        ppcVar2 = (char **)0x0;\n        xfree(match_list);\n      }\n      else {\n        ppcVar2 = match_list;\n        if (matches == 1) {\n          pcVar1 = match_list[1];\n          match_list[1] = (char *)0x0;\n          *match_list = pcVar1;\n        }\n        else {\n          compute_lcd_of_matches(match_list,matches,text);\n        }\n      }\n      return ppcVar2;\n    }" { (if_statement "if (matches == 0) {\n        ppcVar2 = (char **)0x0;\n        xfree(match_list);\n      }\n      else {\n        ppcVar2 = match_list;\n        if (matches == 1) {\n          pcVar1 = match_list[1];\n          match_list[1] = (char *)0x0;\n          *match_list = pcVar1;\n        }\n        else {\n          compute_lcd_of_matches(match_list,matches,text);\n        }\n      }" if (parenthesized_expression "(matches == 0)" ( (binary_expression "matches == 0" identifier == number_literal) )) (compound_statement "{\n        ppcVar2 = (char **)0x0;\n        xfree(match_list);\n      }" { (expression_statement "ppcVar2 = (char **)0x0;" (assignment_expression "ppcVar2 = (char **)0x0" identifier = (cast_expression "(char **)0x0" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) ;) (expression_statement "xfree(match_list);" (call_expression "xfree(match_list)" identifier (argument_list "(match_list)" ( identifier ))) ;) }) (else_clause "else {\n        ppcVar2 = match_list;\n        if (matches == 1) {\n          pcVar1 = match_list[1];\n          match_list[1] = (char *)0x0;\n          *match_list = pcVar1;\n        }\n        else {\n          compute_lcd_of_matches(match_list,matches,text);\n        }\n      }" else (compound_statement "{\n        ppcVar2 = match_list;\n        if (matches == 1) {\n          pcVar1 = match_list[1];\n          match_list[1] = (char *)0x0;\n          *match_list = pcVar1;\n        }\n        else {\n          compute_lcd_of_matches(match_list,matches,text);\n        }\n      }" { (expression_statement "ppcVar2 = match_list;" (assignment_expression "ppcVar2 = match_list" identifier = identifier) ;) (if_statement "if (matches == 1) {\n          pcVar1 = match_list[1];\n          match_list[1] = (char *)0x0;\n          *match_list = pcVar1;\n        }\n        else {\n          compute_lcd_of_matches(match_list,matches,text);\n        }" if (parenthesized_expression "(matches == 1)" ( (binary_expression "matches == 1" identifier == number_literal) )) (compound_statement "{\n          pcVar1 = match_list[1];\n          match_list[1] = (char *)0x0;\n          *match_list = pcVar1;\n        }" { (expression_statement "pcVar1 = match_list[1];" (assignment_expression "pcVar1 = match_list[1]" identifier = (subscript_expression "match_list[1]" identifier [ number_literal ])) ;) (expression_statement "match_list[1] = (char *)0x0;" (assignment_expression "match_list[1] = (char *)0x0" (subscript_expression "match_list[1]" identifier [ number_literal ]) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "*match_list = pcVar1;" (assignment_expression "*match_list = pcVar1" (pointer_expression "*match_list" * identifier) = identifier) ;) }) (else_clause "else {\n          compute_lcd_of_matches(match_list,matches,text);\n        }" else (compound_statement "{\n          compute_lcd_of_matches(match_list,matches,text);\n        }" { (expression_statement "compute_lcd_of_matches(match_list,matches,text);" (call_expression "compute_lcd_of_matches(match_list,matches,text)" identifier (argument_list "(match_list,matches,text)" ( identifier , identifier , identifier ))) ;) }))) }))) (return_statement "return ppcVar2;" return identifier ;) })) (if_statement "if (_rl_caught_signal == 0) {\n      iVar3 = matches + 1;\n      if (local_28 <= iVar3) {\n        bytes = local_28 * 4 + 0x2c;\n        local_28 = local_28 + 10;\n        goto LAB_000cf287;\n      }\n    }\n    else {\n      if ((entry_function == rl_filename_completion_function) &&\n         (string = match_list[1], string != (char *)0x0)) {\n        ppcVar2 = match_list + 2;\n        do {\n          xfree(string);\n          string = *ppcVar2;\n          ppcVar2 = ppcVar2 + 1;\n        } while (string != (char *)0x0);\n      }\n      xfree(match_list);\n      if (_rl_caught_signal == 0) {\n        local_28 = 10;\n        bytes = 0x2c;\n        match_list = (char **)0x0;\n        iVar3 = 1;\n        matches = 0;\n      }\n      else {\n        match_list = (char **)0x0;\n        iVar3 = 1;\n        _rl_signal_handler(_rl_caught_signal);\n        bytes = 0x2c;\n        matches = 0;\n        local_28 = 10;\n      }\nLAB_000cf287:\n      match_list = (char **)xrealloc(match_list,bytes);\n      if (match_list == (char **)0x0) {\n        return (char **)0x0;\n      }\n    }" if (parenthesized_expression "(_rl_caught_signal == 0)" ( (binary_expression "_rl_caught_signal == 0" identifier == number_literal) )) (compound_statement "{\n      iVar3 = matches + 1;\n      if (local_28 <= iVar3) {\n        bytes = local_28 * 4 + 0x2c;\n        local_28 = local_28 + 10;\n        goto LAB_000cf287;\n      }\n    }" { (expression_statement "iVar3 = matches + 1;" (assignment_expression "iVar3 = matches + 1" identifier = (binary_expression "matches + 1" identifier + number_literal)) ;) (if_statement "if (local_28 <= iVar3) {\n        bytes = local_28 * 4 + 0x2c;\n        local_28 = local_28 + 10;\n        goto LAB_000cf287;\n      }" if (parenthesized_expression "(local_28 <= iVar3)" ( (binary_expression "local_28 <= iVar3" identifier <= identifier) )) (compound_statement "{\n        bytes = local_28 * 4 + 0x2c;\n        local_28 = local_28 + 10;\n        goto LAB_000cf287;\n      }" { (expression_statement "bytes = local_28 * 4 + 0x2c;" (assignment_expression "bytes = local_28 * 4 + 0x2c" identifier = (binary_expression "local_28 * 4 + 0x2c" (binary_expression "local_28 * 4" identifier * number_literal) + number_literal)) ;) (expression_statement "local_28 = local_28 + 10;" (assignment_expression "local_28 = local_28 + 10" identifier = (binary_expression "local_28 + 10" identifier + number_literal)) ;) (goto_statement "goto LAB_000cf287;" goto statement_identifier ;) })) }) (else_clause "else {\n      if ((entry_function == rl_filename_completion_function) &&\n         (string = match_list[1], string != (char *)0x0)) {\n        ppcVar2 = match_list + 2;\n        do {\n          xfree(string);\n          string = *ppcVar2;\n          ppcVar2 = ppcVar2 + 1;\n        } while (string != (char *)0x0);\n      }\n      xfree(match_list);\n      if (_rl_caught_signal == 0) {\n        local_28 = 10;\n        bytes = 0x2c;\n        match_list = (char **)0x0;\n        iVar3 = 1;\n        matches = 0;\n      }\n      else {\n        match_list = (char **)0x0;\n        iVar3 = 1;\n        _rl_signal_handler(_rl_caught_signal);\n        bytes = 0x2c;\n        matches = 0;\n        local_28 = 10;\n      }\nLAB_000cf287:\n      match_list = (char **)xrealloc(match_list,bytes);\n      if (match_list == (char **)0x0) {\n        return (char **)0x0;\n      }\n    }" else (compound_statement "{\n      if ((entry_function == rl_filename_completion_function) &&\n         (string = match_list[1], string != (char *)0x0)) {\n        ppcVar2 = match_list + 2;\n        do {\n          xfree(string);\n          string = *ppcVar2;\n          ppcVar2 = ppcVar2 + 1;\n        } while (string != (char *)0x0);\n      }\n      xfree(match_list);\n      if (_rl_caught_signal == 0) {\n        local_28 = 10;\n        bytes = 0x2c;\n        match_list = (char **)0x0;\n        iVar3 = 1;\n        matches = 0;\n      }\n      else {\n        match_list = (char **)0x0;\n        iVar3 = 1;\n        _rl_signal_handler(_rl_caught_signal);\n        bytes = 0x2c;\n        matches = 0;\n        local_28 = 10;\n      }\nLAB_000cf287:\n      match_list = (char **)xrealloc(match_list,bytes);\n      if (match_list == (char **)0x0) {\n        return (char **)0x0;\n      }\n    }" { (if_statement "if ((entry_function == rl_filename_completion_function) &&\n         (string = match_list[1], string != (char *)0x0)) {\n        ppcVar2 = match_list + 2;\n        do {\n          xfree(string);\n          string = *ppcVar2;\n          ppcVar2 = ppcVar2 + 1;\n        } while (string != (char *)0x0);\n      }" if (parenthesized_expression "((entry_function == rl_filename_completion_function) &&\n         (string = match_list[1], string != (char *)0x0))" ( (binary_expression "(entry_function == rl_filename_completion_function) &&\n         (string = match_list[1], string != (char *)0x0)" (parenthesized_expression "(entry_function == rl_filename_completion_function)" ( (binary_expression "entry_function == rl_filename_completion_function" identifier == identifier) )) && (parenthesized_expression "(string = match_list[1], string != (char *)0x0)" ( (comma_expression "string = match_list[1], string != (char *)0x0" (assignment_expression "string = match_list[1]" identifier = (subscript_expression "match_list[1]" identifier [ number_literal ])) , (binary_expression "string != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n        ppcVar2 = match_list + 2;\n        do {\n          xfree(string);\n          string = *ppcVar2;\n          ppcVar2 = ppcVar2 + 1;\n        } while (string != (char *)0x0);\n      }" { (expression_statement "ppcVar2 = match_list + 2;" (assignment_expression "ppcVar2 = match_list + 2" identifier = (binary_expression "match_list + 2" identifier + number_literal)) ;) (do_statement "do {\n          xfree(string);\n          string = *ppcVar2;\n          ppcVar2 = ppcVar2 + 1;\n        } while (string != (char *)0x0);" do (compound_statement "{\n          xfree(string);\n          string = *ppcVar2;\n          ppcVar2 = ppcVar2 + 1;\n        }" { (expression_statement "xfree(string);" (call_expression "xfree(string)" identifier (argument_list "(string)" ( identifier ))) ;) (expression_statement "string = *ppcVar2;" (assignment_expression "string = *ppcVar2" identifier = (pointer_expression "*ppcVar2" * identifier)) ;) (expression_statement "ppcVar2 = ppcVar2 + 1;" (assignment_expression "ppcVar2 = ppcVar2 + 1" identifier = (binary_expression "ppcVar2 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(string != (char *)0x0)" ( (binary_expression "string != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) })) (expression_statement "xfree(match_list);" (call_expression "xfree(match_list)" identifier (argument_list "(match_list)" ( identifier ))) ;) (if_statement "if (_rl_caught_signal == 0) {\n        local_28 = 10;\n        bytes = 0x2c;\n        match_list = (char **)0x0;\n        iVar3 = 1;\n        matches = 0;\n      }\n      else {\n        match_list = (char **)0x0;\n        iVar3 = 1;\n        _rl_signal_handler(_rl_caught_signal);\n        bytes = 0x2c;\n        matches = 0;\n        local_28 = 10;\n      }" if (parenthesized_expression "(_rl_caught_signal == 0)" ( (binary_expression "_rl_caught_signal == 0" identifier == number_literal) )) (compound_statement "{\n        local_28 = 10;\n        bytes = 0x2c;\n        match_list = (char **)0x0;\n        iVar3 = 1;\n        matches = 0;\n      }" { (expression_statement "local_28 = 10;" (assignment_expression "local_28 = 10" identifier = number_literal) ;) (expression_statement "bytes = 0x2c;" (assignment_expression "bytes = 0x2c" identifier = number_literal) ;) (expression_statement "match_list = (char **)0x0;" (assignment_expression "match_list = (char **)0x0" identifier = (cast_expression "(char **)0x0" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) ;) (expression_statement "iVar3 = 1;" (assignment_expression "iVar3 = 1" identifier = number_literal) ;) (expression_statement "matches = 0;" (assignment_expression "matches = 0" identifier = number_literal) ;) }) (else_clause "else {\n        match_list = (char **)0x0;\n        iVar3 = 1;\n        _rl_signal_handler(_rl_caught_signal);\n        bytes = 0x2c;\n        matches = 0;\n        local_28 = 10;\n      }" else (compound_statement "{\n        match_list = (char **)0x0;\n        iVar3 = 1;\n        _rl_signal_handler(_rl_caught_signal);\n        bytes = 0x2c;\n        matches = 0;\n        local_28 = 10;\n      }" { (expression_statement "match_list = (char **)0x0;" (assignment_expression "match_list = (char **)0x0" identifier = (cast_expression "(char **)0x0" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) ;) (expression_statement "iVar3 = 1;" (assignment_expression "iVar3 = 1" identifier = number_literal) ;) (expression_statement "_rl_signal_handler(_rl_caught_signal);" (call_expression "_rl_signal_handler(_rl_caught_signal)" identifier (argument_list "(_rl_caught_signal)" ( identifier ))) ;) (expression_statement "bytes = 0x2c;" (assignment_expression "bytes = 0x2c" identifier = number_literal) ;) (expression_statement "matches = 0;" (assignment_expression "matches = 0" identifier = number_literal) ;) (expression_statement "local_28 = 10;" (assignment_expression "local_28 = 10" identifier = number_literal) ;) }))) (labeled_statement "LAB_000cf287:\n      match_list = (char **)xrealloc(match_list,bytes);" statement_identifier : (expression_statement "match_list = (char **)xrealloc(match_list,bytes);" (assignment_expression "match_list = (char **)xrealloc(match_list,bytes)" identifier = (cast_expression "(char **)xrealloc(match_list,bytes)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (call_expression "xrealloc(match_list,bytes)" identifier (argument_list "(match_list,bytes)" ( identifier , identifier ))))) ;)) (if_statement "if (match_list == (char **)0x0) {\n        return (char **)0x0;\n      }" if (parenthesized_expression "(match_list == (char **)0x0)" ( (binary_expression "match_list == (char **)0x0" identifier == (cast_expression "(char **)0x0" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) )) (compound_statement "{\n        return (char **)0x0;\n      }" { (return_statement "return (char **)0x0;" return (cast_expression "(char **)0x0" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal) ;) })) }))) (expression_statement "match_list[iVar3] = pcVar1;" (assignment_expression "match_list[iVar3] = pcVar1" (subscript_expression "match_list[iVar3]" identifier [ identifier ]) = identifier) ;) (expression_statement "match_list[matches + 2] = (char *)0x0;" (assignment_expression "match_list[matches + 2] = (char *)0x0" (subscript_expression "match_list[matches + 2]" identifier [ (binary_expression "matches + 2" identifier + number_literal) ]) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "matches = iVar3;" (assignment_expression "matches = iVar3" identifier = identifier) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "undefined4 * rl_completion_matches(undefined4 param_1,code *param_2)\n\n{\n  undefined4 uVar1;\n  undefined4 *puVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  undefined4 *puVar6;\n  int iVar7;\n  int *piVar8;\n  int local_28;\n  \n  puVar2 = (undefined4 *)xmalloc(0x2c);\n  puVar2[1] = 0;\n  local_28 = 10;\n  iVar5 = 0;\n  do {\n    iVar3 = (*param_2)(param_1,iVar5);\n    if (iVar3 == 0) {\n      if (iVar5 == 0) {\n        puVar6 = (undefined4 *)0x0;\n        xfree(puVar2);\n      }\n      else {\n        puVar6 = puVar2;\n        if (iVar5 == 1) {\n          uVar1 = puVar2[1];\n          puVar2[1] = 0;\n          *puVar2 = uVar1;\n        }\n        else {\n          FUN_000cd7f0();\n        }\n      }\n      return puVar6;\n    }\n    if (_rl_caught_signal == 0) {\n      iVar7 = iVar5 + 1;\n      if (local_28 <= iVar7) {\n        iVar4 = local_28 * 4 + 0x2c;\n        local_28 = local_28 + 10;\n        goto LAB_000cf287;\n      }\n    }\n    else {\n      if ((param_2 == rl_filename_completion_function) && (iVar5 = puVar2[1], iVar5 != 0)) {\n        piVar8 = puVar2 + 2;\n        do {\n          xfree(iVar5);\n          iVar5 = *piVar8;\n          piVar8 = piVar8 + 1;\n        } while (iVar5 != 0);\n      }\n      xfree(puVar2);\n      if (_rl_caught_signal == 0) {\n        local_28 = 10;\n        iVar4 = 0x2c;\n        puVar2 = (undefined4 *)0x0;\n        iVar7 = 1;\n        iVar5 = 0;\n      }\n      else {\n        puVar2 = (undefined4 *)0x0;\n        iVar7 = 1;\n        _rl_signal_handler(_rl_caught_signal);\n        iVar4 = 0x2c;\n        iVar5 = 0;\n        local_28 = 10;\n      }\nLAB_000cf287:\n      puVar2 = (undefined4 *)xrealloc(puVar2,iVar4);\n      if (puVar2 == (undefined4 *)0x0) {\n        return (undefined4 *)0x0;\n      }\n    }\n    puVar2[iVar7] = iVar3;\n    puVar2[iVar5 + 2] = 0;\n    iVar5 = iVar7;\n  } while( true );\n}\n\n" (function_definition "undefined4 * rl_completion_matches(undefined4 param_1,code *param_2)\n\n{\n  undefined4 uVar1;\n  undefined4 *puVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  undefined4 *puVar6;\n  int iVar7;\n  int *piVar8;\n  int local_28;\n  \n  puVar2 = (undefined4 *)xmalloc(0x2c);\n  puVar2[1] = 0;\n  local_28 = 10;\n  iVar5 = 0;\n  do {\n    iVar3 = (*param_2)(param_1,iVar5);\n    if (iVar3 == 0) {\n      if (iVar5 == 0) {\n        puVar6 = (undefined4 *)0x0;\n        xfree(puVar2);\n      }\n      else {\n        puVar6 = puVar2;\n        if (iVar5 == 1) {\n          uVar1 = puVar2[1];\n          puVar2[1] = 0;\n          *puVar2 = uVar1;\n        }\n        else {\n          FUN_000cd7f0();\n        }\n      }\n      return puVar6;\n    }\n    if (_rl_caught_signal == 0) {\n      iVar7 = iVar5 + 1;\n      if (local_28 <= iVar7) {\n        iVar4 = local_28 * 4 + 0x2c;\n        local_28 = local_28 + 10;\n        goto LAB_000cf287;\n      }\n    }\n    else {\n      if ((param_2 == rl_filename_completion_function) && (iVar5 = puVar2[1], iVar5 != 0)) {\n        piVar8 = puVar2 + 2;\n        do {\n          xfree(iVar5);\n          iVar5 = *piVar8;\n          piVar8 = piVar8 + 1;\n        } while (iVar5 != 0);\n      }\n      xfree(puVar2);\n      if (_rl_caught_signal == 0) {\n        local_28 = 10;\n        iVar4 = 0x2c;\n        puVar2 = (undefined4 *)0x0;\n        iVar7 = 1;\n        iVar5 = 0;\n      }\n      else {\n        puVar2 = (undefined4 *)0x0;\n        iVar7 = 1;\n        _rl_signal_handler(_rl_caught_signal);\n        iVar4 = 0x2c;\n        iVar5 = 0;\n        local_28 = 10;\n      }\nLAB_000cf287:\n      puVar2 = (undefined4 *)xrealloc(puVar2,iVar4);\n      if (puVar2 == (undefined4 *)0x0) {\n        return (undefined4 *)0x0;\n      }\n    }\n    puVar2[iVar7] = iVar3;\n    puVar2[iVar5 + 2] = 0;\n    iVar5 = iVar7;\n  } while( true );\n}" type_identifier (pointer_declarator "* rl_completion_matches(undefined4 param_1,code *param_2)" * (function_declarator "rl_completion_matches(undefined4 param_1,code *param_2)" identifier (parameter_list "(undefined4 param_1,code *param_2)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "code *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) )))) (compound_statement "{\n  undefined4 uVar1;\n  undefined4 *puVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  undefined4 *puVar6;\n  int iVar7;\n  int *piVar8;\n  int local_28;\n  \n  puVar2 = (undefined4 *)xmalloc(0x2c);\n  puVar2[1] = 0;\n  local_28 = 10;\n  iVar5 = 0;\n  do {\n    iVar3 = (*param_2)(param_1,iVar5);\n    if (iVar3 == 0) {\n      if (iVar5 == 0) {\n        puVar6 = (undefined4 *)0x0;\n        xfree(puVar2);\n      }\n      else {\n        puVar6 = puVar2;\n        if (iVar5 == 1) {\n          uVar1 = puVar2[1];\n          puVar2[1] = 0;\n          *puVar2 = uVar1;\n        }\n        else {\n          FUN_000cd7f0();\n        }\n      }\n      return puVar6;\n    }\n    if (_rl_caught_signal == 0) {\n      iVar7 = iVar5 + 1;\n      if (local_28 <= iVar7) {\n        iVar4 = local_28 * 4 + 0x2c;\n        local_28 = local_28 + 10;\n        goto LAB_000cf287;\n      }\n    }\n    else {\n      if ((param_2 == rl_filename_completion_function) && (iVar5 = puVar2[1], iVar5 != 0)) {\n        piVar8 = puVar2 + 2;\n        do {\n          xfree(iVar5);\n          iVar5 = *piVar8;\n          piVar8 = piVar8 + 1;\n        } while (iVar5 != 0);\n      }\n      xfree(puVar2);\n      if (_rl_caught_signal == 0) {\n        local_28 = 10;\n        iVar4 = 0x2c;\n        puVar2 = (undefined4 *)0x0;\n        iVar7 = 1;\n        iVar5 = 0;\n      }\n      else {\n        puVar2 = (undefined4 *)0x0;\n        iVar7 = 1;\n        _rl_signal_handler(_rl_caught_signal);\n        iVar4 = 0x2c;\n        iVar5 = 0;\n        local_28 = 10;\n      }\nLAB_000cf287:\n      puVar2 = (undefined4 *)xrealloc(puVar2,iVar4);\n      if (puVar2 == (undefined4 *)0x0) {\n        return (undefined4 *)0x0;\n      }\n    }\n    puVar2[iVar7] = iVar3;\n    puVar2[iVar5 + 2] = 0;\n    iVar5 = iVar7;\n  } while( true );\n}" { (declaration "undefined4 uVar1;" type_identifier identifier ;) (declaration "undefined4 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "undefined4 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int *piVar8;" primitive_type (pointer_declarator "*piVar8" * identifier) ;) (declaration "int local_28;" primitive_type identifier ;) (expression_statement "puVar2 = (undefined4 *)xmalloc(0x2c);" (assignment_expression "puVar2 = (undefined4 *)xmalloc(0x2c)" identifier = (cast_expression "(undefined4 *)xmalloc(0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(0x2c)" identifier (argument_list "(0x2c)" ( number_literal ))))) ;) (expression_statement "puVar2[1] = 0;" (assignment_expression "puVar2[1] = 0" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_28 = 10;" (assignment_expression "local_28 = 10" identifier = number_literal) ;) (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;) (do_statement "do {\n    iVar3 = (*param_2)(param_1,iVar5);\n    if (iVar3 == 0) {\n      if (iVar5 == 0) {\n        puVar6 = (undefined4 *)0x0;\n        xfree(puVar2);\n      }\n      else {\n        puVar6 = puVar2;\n        if (iVar5 == 1) {\n          uVar1 = puVar2[1];\n          puVar2[1] = 0;\n          *puVar2 = uVar1;\n        }\n        else {\n          FUN_000cd7f0();\n        }\n      }\n      return puVar6;\n    }\n    if (_rl_caught_signal == 0) {\n      iVar7 = iVar5 + 1;\n      if (local_28 <= iVar7) {\n        iVar4 = local_28 * 4 + 0x2c;\n        local_28 = local_28 + 10;\n        goto LAB_000cf287;\n      }\n    }\n    else {\n      if ((param_2 == rl_filename_completion_function) && (iVar5 = puVar2[1], iVar5 != 0)) {\n        piVar8 = puVar2 + 2;\n        do {\n          xfree(iVar5);\n          iVar5 = *piVar8;\n          piVar8 = piVar8 + 1;\n        } while (iVar5 != 0);\n      }\n      xfree(puVar2);\n      if (_rl_caught_signal == 0) {\n        local_28 = 10;\n        iVar4 = 0x2c;\n        puVar2 = (undefined4 *)0x0;\n        iVar7 = 1;\n        iVar5 = 0;\n      }\n      else {\n        puVar2 = (undefined4 *)0x0;\n        iVar7 = 1;\n        _rl_signal_handler(_rl_caught_signal);\n        iVar4 = 0x2c;\n        iVar5 = 0;\n        local_28 = 10;\n      }\nLAB_000cf287:\n      puVar2 = (undefined4 *)xrealloc(puVar2,iVar4);\n      if (puVar2 == (undefined4 *)0x0) {\n        return (undefined4 *)0x0;\n      }\n    }\n    puVar2[iVar7] = iVar3;\n    puVar2[iVar5 + 2] = 0;\n    iVar5 = iVar7;\n  } while( true );" do (compound_statement "{\n    iVar3 = (*param_2)(param_1,iVar5);\n    if (iVar3 == 0) {\n      if (iVar5 == 0) {\n        puVar6 = (undefined4 *)0x0;\n        xfree(puVar2);\n      }\n      else {\n        puVar6 = puVar2;\n        if (iVar5 == 1) {\n          uVar1 = puVar2[1];\n          puVar2[1] = 0;\n          *puVar2 = uVar1;\n        }\n        else {\n          FUN_000cd7f0();\n        }\n      }\n      return puVar6;\n    }\n    if (_rl_caught_signal == 0) {\n      iVar7 = iVar5 + 1;\n      if (local_28 <= iVar7) {\n        iVar4 = local_28 * 4 + 0x2c;\n        local_28 = local_28 + 10;\n        goto LAB_000cf287;\n      }\n    }\n    else {\n      if ((param_2 == rl_filename_completion_function) && (iVar5 = puVar2[1], iVar5 != 0)) {\n        piVar8 = puVar2 + 2;\n        do {\n          xfree(iVar5);\n          iVar5 = *piVar8;\n          piVar8 = piVar8 + 1;\n        } while (iVar5 != 0);\n      }\n      xfree(puVar2);\n      if (_rl_caught_signal == 0) {\n        local_28 = 10;\n        iVar4 = 0x2c;\n        puVar2 = (undefined4 *)0x0;\n        iVar7 = 1;\n        iVar5 = 0;\n      }\n      else {\n        puVar2 = (undefined4 *)0x0;\n        iVar7 = 1;\n        _rl_signal_handler(_rl_caught_signal);\n        iVar4 = 0x2c;\n        iVar5 = 0;\n        local_28 = 10;\n      }\nLAB_000cf287:\n      puVar2 = (undefined4 *)xrealloc(puVar2,iVar4);\n      if (puVar2 == (undefined4 *)0x0) {\n        return (undefined4 *)0x0;\n      }\n    }\n    puVar2[iVar7] = iVar3;\n    puVar2[iVar5 + 2] = 0;\n    iVar5 = iVar7;\n  }" { (expression_statement "iVar3 = (*param_2)(param_1,iVar5);" (assignment_expression "iVar3 = (*param_2)(param_1,iVar5)" identifier = (call_expression "(*param_2)(param_1,iVar5)" (parenthesized_expression "(*param_2)" ( (pointer_expression "*param_2" * identifier) )) (argument_list "(param_1,iVar5)" ( identifier , identifier )))) ;) (if_statement "if (iVar3 == 0) {\n      if (iVar5 == 0) {\n        puVar6 = (undefined4 *)0x0;\n        xfree(puVar2);\n      }\n      else {\n        puVar6 = puVar2;\n        if (iVar5 == 1) {\n          uVar1 = puVar2[1];\n          puVar2[1] = 0;\n          *puVar2 = uVar1;\n        }\n        else {\n          FUN_000cd7f0();\n        }\n      }\n      return puVar6;\n    }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n      if (iVar5 == 0) {\n        puVar6 = (undefined4 *)0x0;\n        xfree(puVar2);\n      }\n      else {\n        puVar6 = puVar2;\n        if (iVar5 == 1) {\n          uVar1 = puVar2[1];\n          puVar2[1] = 0;\n          *puVar2 = uVar1;\n        }\n        else {\n          FUN_000cd7f0();\n        }\n      }\n      return puVar6;\n    }" { (if_statement "if (iVar5 == 0) {\n        puVar6 = (undefined4 *)0x0;\n        xfree(puVar2);\n      }\n      else {\n        puVar6 = puVar2;\n        if (iVar5 == 1) {\n          uVar1 = puVar2[1];\n          puVar2[1] = 0;\n          *puVar2 = uVar1;\n        }\n        else {\n          FUN_000cd7f0();\n        }\n      }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n        puVar6 = (undefined4 *)0x0;\n        xfree(puVar2);\n      }" { (expression_statement "puVar6 = (undefined4 *)0x0;" (assignment_expression "puVar6 = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "xfree(puVar2);" (call_expression "xfree(puVar2)" identifier (argument_list "(puVar2)" ( identifier ))) ;) }) (else_clause "else {\n        puVar6 = puVar2;\n        if (iVar5 == 1) {\n          uVar1 = puVar2[1];\n          puVar2[1] = 0;\n          *puVar2 = uVar1;\n        }\n        else {\n          FUN_000cd7f0();\n        }\n      }" else (compound_statement "{\n        puVar6 = puVar2;\n        if (iVar5 == 1) {\n          uVar1 = puVar2[1];\n          puVar2[1] = 0;\n          *puVar2 = uVar1;\n        }\n        else {\n          FUN_000cd7f0();\n        }\n      }" { (expression_statement "puVar6 = puVar2;" (assignment_expression "puVar6 = puVar2" identifier = identifier) ;) (if_statement "if (iVar5 == 1) {\n          uVar1 = puVar2[1];\n          puVar2[1] = 0;\n          *puVar2 = uVar1;\n        }\n        else {\n          FUN_000cd7f0();\n        }" if (parenthesized_expression "(iVar5 == 1)" ( (binary_expression "iVar5 == 1" identifier == number_literal) )) (compound_statement "{\n          uVar1 = puVar2[1];\n          puVar2[1] = 0;\n          *puVar2 = uVar1;\n        }" { (expression_statement "uVar1 = puVar2[1];" (assignment_expression "uVar1 = puVar2[1]" identifier = (subscript_expression "puVar2[1]" identifier [ number_literal ])) ;) (expression_statement "puVar2[1] = 0;" (assignment_expression "puVar2[1] = 0" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*puVar2 = uVar1;" (assignment_expression "*puVar2 = uVar1" (pointer_expression "*puVar2" * identifier) = identifier) ;) }) (else_clause "else {\n          FUN_000cd7f0();\n        }" else (compound_statement "{\n          FUN_000cd7f0();\n        }" { (expression_statement "FUN_000cd7f0();" (call_expression "FUN_000cd7f0()" identifier (argument_list "()" ( ))) ;) }))) }))) (return_statement "return puVar6;" return identifier ;) })) (if_statement "if (_rl_caught_signal == 0) {\n      iVar7 = iVar5 + 1;\n      if (local_28 <= iVar7) {\n        iVar4 = local_28 * 4 + 0x2c;\n        local_28 = local_28 + 10;\n        goto LAB_000cf287;\n      }\n    }\n    else {\n      if ((param_2 == rl_filename_completion_function) && (iVar5 = puVar2[1], iVar5 != 0)) {\n        piVar8 = puVar2 + 2;\n        do {\n          xfree(iVar5);\n          iVar5 = *piVar8;\n          piVar8 = piVar8 + 1;\n        } while (iVar5 != 0);\n      }\n      xfree(puVar2);\n      if (_rl_caught_signal == 0) {\n        local_28 = 10;\n        iVar4 = 0x2c;\n        puVar2 = (undefined4 *)0x0;\n        iVar7 = 1;\n        iVar5 = 0;\n      }\n      else {\n        puVar2 = (undefined4 *)0x0;\n        iVar7 = 1;\n        _rl_signal_handler(_rl_caught_signal);\n        iVar4 = 0x2c;\n        iVar5 = 0;\n        local_28 = 10;\n      }\nLAB_000cf287:\n      puVar2 = (undefined4 *)xrealloc(puVar2,iVar4);\n      if (puVar2 == (undefined4 *)0x0) {\n        return (undefined4 *)0x0;\n      }\n    }" if (parenthesized_expression "(_rl_caught_signal == 0)" ( (binary_expression "_rl_caught_signal == 0" identifier == number_literal) )) (compound_statement "{\n      iVar7 = iVar5 + 1;\n      if (local_28 <= iVar7) {\n        iVar4 = local_28 * 4 + 0x2c;\n        local_28 = local_28 + 10;\n        goto LAB_000cf287;\n      }\n    }" { (expression_statement "iVar7 = iVar5 + 1;" (assignment_expression "iVar7 = iVar5 + 1" identifier = (binary_expression "iVar5 + 1" identifier + number_literal)) ;) (if_statement "if (local_28 <= iVar7) {\n        iVar4 = local_28 * 4 + 0x2c;\n        local_28 = local_28 + 10;\n        goto LAB_000cf287;\n      }" if (parenthesized_expression "(local_28 <= iVar7)" ( (binary_expression "local_28 <= iVar7" identifier <= identifier) )) (compound_statement "{\n        iVar4 = local_28 * 4 + 0x2c;\n        local_28 = local_28 + 10;\n        goto LAB_000cf287;\n      }" { (expression_statement "iVar4 = local_28 * 4 + 0x2c;" (assignment_expression "iVar4 = local_28 * 4 + 0x2c" identifier = (binary_expression "local_28 * 4 + 0x2c" (binary_expression "local_28 * 4" identifier * number_literal) + number_literal)) ;) (expression_statement "local_28 = local_28 + 10;" (assignment_expression "local_28 = local_28 + 10" identifier = (binary_expression "local_28 + 10" identifier + number_literal)) ;) (goto_statement "goto LAB_000cf287;" goto statement_identifier ;) })) }) (else_clause "else {\n      if ((param_2 == rl_filename_completion_function) && (iVar5 = puVar2[1], iVar5 != 0)) {\n        piVar8 = puVar2 + 2;\n        do {\n          xfree(iVar5);\n          iVar5 = *piVar8;\n          piVar8 = piVar8 + 1;\n        } while (iVar5 != 0);\n      }\n      xfree(puVar2);\n      if (_rl_caught_signal == 0) {\n        local_28 = 10;\n        iVar4 = 0x2c;\n        puVar2 = (undefined4 *)0x0;\n        iVar7 = 1;\n        iVar5 = 0;\n      }\n      else {\n        puVar2 = (undefined4 *)0x0;\n        iVar7 = 1;\n        _rl_signal_handler(_rl_caught_signal);\n        iVar4 = 0x2c;\n        iVar5 = 0;\n        local_28 = 10;\n      }\nLAB_000cf287:\n      puVar2 = (undefined4 *)xrealloc(puVar2,iVar4);\n      if (puVar2 == (undefined4 *)0x0) {\n        return (undefined4 *)0x0;\n      }\n    }" else (compound_statement "{\n      if ((param_2 == rl_filename_completion_function) && (iVar5 = puVar2[1], iVar5 != 0)) {\n        piVar8 = puVar2 + 2;\n        do {\n          xfree(iVar5);\n          iVar5 = *piVar8;\n          piVar8 = piVar8 + 1;\n        } while (iVar5 != 0);\n      }\n      xfree(puVar2);\n      if (_rl_caught_signal == 0) {\n        local_28 = 10;\n        iVar4 = 0x2c;\n        puVar2 = (undefined4 *)0x0;\n        iVar7 = 1;\n        iVar5 = 0;\n      }\n      else {\n        puVar2 = (undefined4 *)0x0;\n        iVar7 = 1;\n        _rl_signal_handler(_rl_caught_signal);\n        iVar4 = 0x2c;\n        iVar5 = 0;\n        local_28 = 10;\n      }\nLAB_000cf287:\n      puVar2 = (undefined4 *)xrealloc(puVar2,iVar4);\n      if (puVar2 == (undefined4 *)0x0) {\n        return (undefined4 *)0x0;\n      }\n    }" { (if_statement "if ((param_2 == rl_filename_completion_function) && (iVar5 = puVar2[1], iVar5 != 0)) {\n        piVar8 = puVar2 + 2;\n        do {\n          xfree(iVar5);\n          iVar5 = *piVar8;\n          piVar8 = piVar8 + 1;\n        } while (iVar5 != 0);\n      }" if (parenthesized_expression "((param_2 == rl_filename_completion_function) && (iVar5 = puVar2[1], iVar5 != 0))" ( (binary_expression "(param_2 == rl_filename_completion_function) && (iVar5 = puVar2[1], iVar5 != 0)" (parenthesized_expression "(param_2 == rl_filename_completion_function)" ( (binary_expression "param_2 == rl_filename_completion_function" identifier == identifier) )) && (parenthesized_expression "(iVar5 = puVar2[1], iVar5 != 0)" ( (comma_expression "iVar5 = puVar2[1], iVar5 != 0" (assignment_expression "iVar5 = puVar2[1]" identifier = (subscript_expression "puVar2[1]" identifier [ number_literal ])) , (binary_expression "iVar5 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n        piVar8 = puVar2 + 2;\n        do {\n          xfree(iVar5);\n          iVar5 = *piVar8;\n          piVar8 = piVar8 + 1;\n        } while (iVar5 != 0);\n      }" { (expression_statement "piVar8 = puVar2 + 2;" (assignment_expression "piVar8 = puVar2 + 2" identifier = (binary_expression "puVar2 + 2" identifier + number_literal)) ;) (do_statement "do {\n          xfree(iVar5);\n          iVar5 = *piVar8;\n          piVar8 = piVar8 + 1;\n        } while (iVar5 != 0);" do (compound_statement "{\n          xfree(iVar5);\n          iVar5 = *piVar8;\n          piVar8 = piVar8 + 1;\n        }" { (expression_statement "xfree(iVar5);" (call_expression "xfree(iVar5)" identifier (argument_list "(iVar5)" ( identifier ))) ;) (expression_statement "iVar5 = *piVar8;" (assignment_expression "iVar5 = *piVar8" identifier = (pointer_expression "*piVar8" * identifier)) ;) (expression_statement "piVar8 = piVar8 + 1;" (assignment_expression "piVar8 = piVar8 + 1" identifier = (binary_expression "piVar8 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) ;) })) (expression_statement "xfree(puVar2);" (call_expression "xfree(puVar2)" identifier (argument_list "(puVar2)" ( identifier ))) ;) (if_statement "if (_rl_caught_signal == 0) {\n        local_28 = 10;\n        iVar4 = 0x2c;\n        puVar2 = (undefined4 *)0x0;\n        iVar7 = 1;\n        iVar5 = 0;\n      }\n      else {\n        puVar2 = (undefined4 *)0x0;\n        iVar7 = 1;\n        _rl_signal_handler(_rl_caught_signal);\n        iVar4 = 0x2c;\n        iVar5 = 0;\n        local_28 = 10;\n      }" if (parenthesized_expression "(_rl_caught_signal == 0)" ( (binary_expression "_rl_caught_signal == 0" identifier == number_literal) )) (compound_statement "{\n        local_28 = 10;\n        iVar4 = 0x2c;\n        puVar2 = (undefined4 *)0x0;\n        iVar7 = 1;\n        iVar5 = 0;\n      }" { (expression_statement "local_28 = 10;" (assignment_expression "local_28 = 10" identifier = number_literal) ;) (expression_statement "iVar4 = 0x2c;" (assignment_expression "iVar4 = 0x2c" identifier = number_literal) ;) (expression_statement "puVar2 = (undefined4 *)0x0;" (assignment_expression "puVar2 = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar7 = 1;" (assignment_expression "iVar7 = 1" identifier = number_literal) ;) (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;) }) (else_clause "else {\n        puVar2 = (undefined4 *)0x0;\n        iVar7 = 1;\n        _rl_signal_handler(_rl_caught_signal);\n        iVar4 = 0x2c;\n        iVar5 = 0;\n        local_28 = 10;\n      }" else (compound_statement "{\n        puVar2 = (undefined4 *)0x0;\n        iVar7 = 1;\n        _rl_signal_handler(_rl_caught_signal);\n        iVar4 = 0x2c;\n        iVar5 = 0;\n        local_28 = 10;\n      }" { (expression_statement "puVar2 = (undefined4 *)0x0;" (assignment_expression "puVar2 = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar7 = 1;" (assignment_expression "iVar7 = 1" identifier = number_literal) ;) (expression_statement "_rl_signal_handler(_rl_caught_signal);" (call_expression "_rl_signal_handler(_rl_caught_signal)" identifier (argument_list "(_rl_caught_signal)" ( identifier ))) ;) (expression_statement "iVar4 = 0x2c;" (assignment_expression "iVar4 = 0x2c" identifier = number_literal) ;) (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;) (expression_statement "local_28 = 10;" (assignment_expression "local_28 = 10" identifier = number_literal) ;) }))) (labeled_statement "LAB_000cf287:\n      puVar2 = (undefined4 *)xrealloc(puVar2,iVar4);" statement_identifier : (expression_statement "puVar2 = (undefined4 *)xrealloc(puVar2,iVar4);" (assignment_expression "puVar2 = (undefined4 *)xrealloc(puVar2,iVar4)" identifier = (cast_expression "(undefined4 *)xrealloc(puVar2,iVar4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xrealloc(puVar2,iVar4)" identifier (argument_list "(puVar2,iVar4)" ( identifier , identifier ))))) ;)) (if_statement "if (puVar2 == (undefined4 *)0x0) {\n        return (undefined4 *)0x0;\n      }" if (parenthesized_expression "(puVar2 == (undefined4 *)0x0)" ( (binary_expression "puVar2 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        return (undefined4 *)0x0;\n      }" { (return_statement "return (undefined4 *)0x0;" return (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) }))) (expression_statement "puVar2[iVar7] = iVar3;" (assignment_expression "puVar2[iVar7] = iVar3" (subscript_expression "puVar2[iVar7]" identifier [ identifier ]) = identifier) ;) (expression_statement "puVar2[iVar5 + 2] = 0;" (assignment_expression "puVar2[iVar5 + 2] = 0" (subscript_expression "puVar2[iVar5 + 2]" identifier [ (binary_expression "iVar5 + 2" identifier + number_literal) ]) = number_literal) ;) (expression_statement "iVar5 = iVar7;" (assignment_expression "iVar5 = iVar7" identifier = identifier) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) )))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) }))) (return_statement return IDENT ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT * LIT) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == IDENT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) , (binary_expression IDENT != LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT ))))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) }))) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( BOOL )) ;) })))
(function_definition "undefined4 * rl_completion_matches(undefined4 param_1,code *param_2)\n\n{\n  undefined4 uVar1;\n  undefined4 *puVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  undefined4 *puVar6;\n  int iVar7;\n  int *piVar8;\n  int local_28;\n  \n  puVar2 = (undefined4 *)xmalloc(0x2c);\n  puVar2[1] = 0;\n  local_28 = 10;\n  iVar5 = 0;\n  do {\n    iVar3 = (*param_2)(param_1,iVar5);\n    if (iVar3 == 0) {\n      if (iVar5 == 0) {\n        puVar6 = (undefined4 *)0x0;\n        xfree(puVar2);\n      }\n      else {\n        puVar6 = puVar2;\n        if (iVar5 == 1) {\n          uVar1 = puVar2[1];\n          puVar2[1] = 0;\n          *puVar2 = uVar1;\n        }\n        else {\n          FUN_000cd7f0();\n        }\n      }\n      return puVar6;\n    }\n    if (_rl_caught_signal == 0) {\n      iVar7 = iVar5 + 1;\n      if (local_28 <= iVar7) {\n        iVar4 = local_28 * 4 + 0x2c;\n        local_28 = local_28 + 10;\n        goto LAB_000cf287;\n      }\n    }\n    else {\n      if ((param_2 == rl_filename_completion_function) && (iVar5 = puVar2[1], iVar5 != 0)) {\n        piVar8 = puVar2 + 2;\n        do {\n          xfree(iVar5);\n          iVar5 = *piVar8;\n          piVar8 = piVar8 + 1;\n        } while (iVar5 != 0);\n      }\n      xfree(puVar2);\n      if (_rl_caught_signal == 0) {\n        local_28 = 10;\n        iVar4 = 0x2c;\n        puVar2 = (undefined4 *)0x0;\n        iVar7 = 1;\n        iVar5 = 0;\n      }\n      else {\n        puVar2 = (undefined4 *)0x0;\n        iVar7 = 1;\n        _rl_signal_handler(_rl_caught_signal);\n        iVar4 = 0x2c;\n        iVar5 = 0;\n        local_28 = 10;\n      }\nLAB_000cf287:\n      puVar2 = (undefined4 *)xrealloc(puVar2,iVar4);\n      if (puVar2 == (undefined4 *)0x0) {\n        return (undefined4 *)0x0;\n      }\n    }\n    puVar2[iVar7] = iVar3;\n    puVar2[iVar5 + 2] = 0;\n    iVar5 = iVar7;\n  } while( true );\n}" (type_identifier "undefined4") (pointer_declarator "* rl_completion_matches(undefined4 param_1,code *param_2)" (* "*") (function_declarator "rl_completion_matches(undefined4 param_1,code *param_2)" (identifier "rl_completion_matches") (parameter_list "(undefined4 param_1,code *param_2)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) (, ",") (parameter_declaration "code *param_2" (type_identifier "code") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")")))) (compound_statement "{\n  undefined4 uVar1;\n  undefined4 *puVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  undefined4 *puVar6;\n  int iVar7;\n  int *piVar8;\n  int local_28;\n  \n  puVar2 = (undefined4 *)xmalloc(0x2c);\n  puVar2[1] = 0;\n  local_28 = 10;\n  iVar5 = 0;\n  do {\n    iVar3 = (*param_2)(param_1,iVar5);\n    if (iVar3 == 0) {\n      if (iVar5 == 0) {\n        puVar6 = (undefined4 *)0x0;\n        xfree(puVar2);\n      }\n      else {\n        puVar6 = puVar2;\n        if (iVar5 == 1) {\n          uVar1 = puVar2[1];\n          puVar2[1] = 0;\n          *puVar2 = uVar1;\n        }\n        else {\n          FUN_000cd7f0();\n        }\n      }\n      return puVar6;\n    }\n    if (_rl_caught_signal == 0) {\n      iVar7 = iVar5 + 1;\n      if (local_28 <= iVar7) {\n        iVar4 = local_28 * 4 + 0x2c;\n        local_28 = local_28 + 10;\n        goto LAB_000cf287;\n      }\n    }\n    else {\n      if ((param_2 == rl_filename_completion_function) && (iVar5 = puVar2[1], iVar5 != 0)) {\n        piVar8 = puVar2 + 2;\n        do {\n          xfree(iVar5);\n          iVar5 = *piVar8;\n          piVar8 = piVar8 + 1;\n        } while (iVar5 != 0);\n      }\n      xfree(puVar2);\n      if (_rl_caught_signal == 0) {\n        local_28 = 10;\n        iVar4 = 0x2c;\n        puVar2 = (undefined4 *)0x0;\n        iVar7 = 1;\n        iVar5 = 0;\n      }\n      else {\n        puVar2 = (undefined4 *)0x0;\n        iVar7 = 1;\n        _rl_signal_handler(_rl_caught_signal);\n        iVar4 = 0x2c;\n        iVar5 = 0;\n        local_28 = 10;\n      }\nLAB_000cf287:\n      puVar2 = (undefined4 *)xrealloc(puVar2,iVar4);\n      if (puVar2 == (undefined4 *)0x0) {\n        return (undefined4 *)0x0;\n      }\n    }\n    puVar2[iVar7] = iVar3;\n    puVar2[iVar5 + 2] = 0;\n    iVar5 = iVar7;\n  } while( true );\n}" ({ "{") (declaration "undefined4 uVar1;" (type_identifier "undefined4") (identifier "uVar1") (; ";")) (declaration "undefined4 *puVar2;" (type_identifier "undefined4") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "undefined4 *puVar6;" (type_identifier "undefined4") (pointer_declarator "*puVar6" (* "*") (identifier "puVar6")) (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "int *piVar8;" (primitive_type "int") (pointer_declarator "*piVar8" (* "*") (identifier "piVar8")) (; ";")) (declaration "int local_28;" (primitive_type "int") (identifier "local_28") (; ";")) (expression_statement "puVar2 = (undefined4 *)xmalloc(0x2c);" (assignment_expression "puVar2 = (undefined4 *)xmalloc(0x2c)" (identifier "puVar2") (= "=") (cast_expression "(undefined4 *)xmalloc(0x2c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(0x2c)" (identifier "xmalloc") (argument_list "(0x2c)" (( "(") (number_literal "0x2c") () ")"))))) (; ";")) (expression_statement "puVar2[1] = 0;" (assignment_expression "puVar2[1] = 0" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_28 = 10;" (assignment_expression "local_28 = 10" (identifier "local_28") (= "=") (number_literal "10")) (; ";")) (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" (identifier "iVar5") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n    iVar3 = (*param_2)(param_1,iVar5);\n    if (iVar3 == 0) {\n      if (iVar5 == 0) {\n        puVar6 = (undefined4 *)0x0;\n        xfree(puVar2);\n      }\n      else {\n        puVar6 = puVar2;\n        if (iVar5 == 1) {\n          uVar1 = puVar2[1];\n          puVar2[1] = 0;\n          *puVar2 = uVar1;\n        }\n        else {\n          FUN_000cd7f0();\n        }\n      }\n      return puVar6;\n    }\n    if (_rl_caught_signal == 0) {\n      iVar7 = iVar5 + 1;\n      if (local_28 <= iVar7) {\n        iVar4 = local_28 * 4 + 0x2c;\n        local_28 = local_28 + 10;\n        goto LAB_000cf287;\n      }\n    }\n    else {\n      if ((param_2 == rl_filename_completion_function) && (iVar5 = puVar2[1], iVar5 != 0)) {\n        piVar8 = puVar2 + 2;\n        do {\n          xfree(iVar5);\n          iVar5 = *piVar8;\n          piVar8 = piVar8 + 1;\n        } while (iVar5 != 0);\n      }\n      xfree(puVar2);\n      if (_rl_caught_signal == 0) {\n        local_28 = 10;\n        iVar4 = 0x2c;\n        puVar2 = (undefined4 *)0x0;\n        iVar7 = 1;\n        iVar5 = 0;\n      }\n      else {\n        puVar2 = (undefined4 *)0x0;\n        iVar7 = 1;\n        _rl_signal_handler(_rl_caught_signal);\n        iVar4 = 0x2c;\n        iVar5 = 0;\n        local_28 = 10;\n      }\nLAB_000cf287:\n      puVar2 = (undefined4 *)xrealloc(puVar2,iVar4);\n      if (puVar2 == (undefined4 *)0x0) {\n        return (undefined4 *)0x0;\n      }\n    }\n    puVar2[iVar7] = iVar3;\n    puVar2[iVar5 + 2] = 0;\n    iVar5 = iVar7;\n  } while( true );" (do "do") (compound_statement "{\n    iVar3 = (*param_2)(param_1,iVar5);\n    if (iVar3 == 0) {\n      if (iVar5 == 0) {\n        puVar6 = (undefined4 *)0x0;\n        xfree(puVar2);\n      }\n      else {\n        puVar6 = puVar2;\n        if (iVar5 == 1) {\n          uVar1 = puVar2[1];\n          puVar2[1] = 0;\n          *puVar2 = uVar1;\n        }\n        else {\n          FUN_000cd7f0();\n        }\n      }\n      return puVar6;\n    }\n    if (_rl_caught_signal == 0) {\n      iVar7 = iVar5 + 1;\n      if (local_28 <= iVar7) {\n        iVar4 = local_28 * 4 + 0x2c;\n        local_28 = local_28 + 10;\n        goto LAB_000cf287;\n      }\n    }\n    else {\n      if ((param_2 == rl_filename_completion_function) && (iVar5 = puVar2[1], iVar5 != 0)) {\n        piVar8 = puVar2 + 2;\n        do {\n          xfree(iVar5);\n          iVar5 = *piVar8;\n          piVar8 = piVar8 + 1;\n        } while (iVar5 != 0);\n      }\n      xfree(puVar2);\n      if (_rl_caught_signal == 0) {\n        local_28 = 10;\n        iVar4 = 0x2c;\n        puVar2 = (undefined4 *)0x0;\n        iVar7 = 1;\n        iVar5 = 0;\n      }\n      else {\n        puVar2 = (undefined4 *)0x0;\n        iVar7 = 1;\n        _rl_signal_handler(_rl_caught_signal);\n        iVar4 = 0x2c;\n        iVar5 = 0;\n        local_28 = 10;\n      }\nLAB_000cf287:\n      puVar2 = (undefined4 *)xrealloc(puVar2,iVar4);\n      if (puVar2 == (undefined4 *)0x0) {\n        return (undefined4 *)0x0;\n      }\n    }\n    puVar2[iVar7] = iVar3;\n    puVar2[iVar5 + 2] = 0;\n    iVar5 = iVar7;\n  }" ({ "{") (expression_statement "iVar3 = (*param_2)(param_1,iVar5);" (assignment_expression "iVar3 = (*param_2)(param_1,iVar5)" (identifier "iVar3") (= "=") (call_expression "(*param_2)(param_1,iVar5)" (parenthesized_expression "(*param_2)" (( "(") (pointer_expression "*param_2" (* "*") (identifier "param_2")) () ")")) (argument_list "(param_1,iVar5)" (( "(") (identifier "param_1") (, ",") (identifier "iVar5") () ")")))) (; ";")) (if_statement "if (iVar3 == 0) {\n      if (iVar5 == 0) {\n        puVar6 = (undefined4 *)0x0;\n        xfree(puVar2);\n      }\n      else {\n        puVar6 = puVar2;\n        if (iVar5 == 1) {\n          uVar1 = puVar2[1];\n          puVar2[1] = 0;\n          *puVar2 = uVar1;\n        }\n        else {\n          FUN_000cd7f0();\n        }\n      }\n      return puVar6;\n    }" (if "if") (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      if (iVar5 == 0) {\n        puVar6 = (undefined4 *)0x0;\n        xfree(puVar2);\n      }\n      else {\n        puVar6 = puVar2;\n        if (iVar5 == 1) {\n          uVar1 = puVar2[1];\n          puVar2[1] = 0;\n          *puVar2 = uVar1;\n        }\n        else {\n          FUN_000cd7f0();\n        }\n      }\n      return puVar6;\n    }" ({ "{") (if_statement "if (iVar5 == 0) {\n        puVar6 = (undefined4 *)0x0;\n        xfree(puVar2);\n      }\n      else {\n        puVar6 = puVar2;\n        if (iVar5 == 1) {\n          uVar1 = puVar2[1];\n          puVar2[1] = 0;\n          *puVar2 = uVar1;\n        }\n        else {\n          FUN_000cd7f0();\n        }\n      }" (if "if") (parenthesized_expression "(iVar5 == 0)" (( "(") (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        puVar6 = (undefined4 *)0x0;\n        xfree(puVar2);\n      }" ({ "{") (expression_statement "puVar6 = (undefined4 *)0x0;" (assignment_expression "puVar6 = (undefined4 *)0x0" (identifier "puVar6") (= "=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "xfree(puVar2);" (call_expression "xfree(puVar2)" (identifier "xfree") (argument_list "(puVar2)" (( "(") (identifier "puVar2") () ")"))) (; ";")) (} "}")) (else_clause "else {\n        puVar6 = puVar2;\n        if (iVar5 == 1) {\n          uVar1 = puVar2[1];\n          puVar2[1] = 0;\n          *puVar2 = uVar1;\n        }\n        else {\n          FUN_000cd7f0();\n        }\n      }" (else "else") (compound_statement "{\n        puVar6 = puVar2;\n        if (iVar5 == 1) {\n          uVar1 = puVar2[1];\n          puVar2[1] = 0;\n          *puVar2 = uVar1;\n        }\n        else {\n          FUN_000cd7f0();\n        }\n      }" ({ "{") (expression_statement "puVar6 = puVar2;" (assignment_expression "puVar6 = puVar2" (identifier "puVar6") (= "=") (identifier "puVar2")) (; ";")) (if_statement "if (iVar5 == 1) {\n          uVar1 = puVar2[1];\n          puVar2[1] = 0;\n          *puVar2 = uVar1;\n        }\n        else {\n          FUN_000cd7f0();\n        }" (if "if") (parenthesized_expression "(iVar5 == 1)" (( "(") (binary_expression "iVar5 == 1" (identifier "iVar5") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n          uVar1 = puVar2[1];\n          puVar2[1] = 0;\n          *puVar2 = uVar1;\n        }" ({ "{") (expression_statement "uVar1 = puVar2[1];" (assignment_expression "uVar1 = puVar2[1]" (identifier "uVar1") (= "=") (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar2[1] = 0;" (assignment_expression "puVar2[1] = 0" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*puVar2 = uVar1;" (assignment_expression "*puVar2 = uVar1" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (identifier "uVar1")) (; ";")) (} "}")) (else_clause "else {\n          FUN_000cd7f0();\n        }" (else "else") (compound_statement "{\n          FUN_000cd7f0();\n        }" ({ "{") (expression_statement "FUN_000cd7f0();" (call_expression "FUN_000cd7f0()" (identifier "FUN_000cd7f0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (} "}")))) (return_statement "return puVar6;" (return "return") (identifier "puVar6") (; ";")) (} "}"))) (if_statement "if (_rl_caught_signal == 0) {\n      iVar7 = iVar5 + 1;\n      if (local_28 <= iVar7) {\n        iVar4 = local_28 * 4 + 0x2c;\n        local_28 = local_28 + 10;\n        goto LAB_000cf287;\n      }\n    }\n    else {\n      if ((param_2 == rl_filename_completion_function) && (iVar5 = puVar2[1], iVar5 != 0)) {\n        piVar8 = puVar2 + 2;\n        do {\n          xfree(iVar5);\n          iVar5 = *piVar8;\n          piVar8 = piVar8 + 1;\n        } while (iVar5 != 0);\n      }\n      xfree(puVar2);\n      if (_rl_caught_signal == 0) {\n        local_28 = 10;\n        iVar4 = 0x2c;\n        puVar2 = (undefined4 *)0x0;\n        iVar7 = 1;\n        iVar5 = 0;\n      }\n      else {\n        puVar2 = (undefined4 *)0x0;\n        iVar7 = 1;\n        _rl_signal_handler(_rl_caught_signal);\n        iVar4 = 0x2c;\n        iVar5 = 0;\n        local_28 = 10;\n      }\nLAB_000cf287:\n      puVar2 = (undefined4 *)xrealloc(puVar2,iVar4);\n      if (puVar2 == (undefined4 *)0x0) {\n        return (undefined4 *)0x0;\n      }\n    }" (if "if") (parenthesized_expression "(_rl_caught_signal == 0)" (( "(") (binary_expression "_rl_caught_signal == 0" (identifier "_rl_caught_signal") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      iVar7 = iVar5 + 1;\n      if (local_28 <= iVar7) {\n        iVar4 = local_28 * 4 + 0x2c;\n        local_28 = local_28 + 10;\n        goto LAB_000cf287;\n      }\n    }" ({ "{") (expression_statement "iVar7 = iVar5 + 1;" (assignment_expression "iVar7 = iVar5 + 1" (identifier "iVar7") (= "=") (binary_expression "iVar5 + 1" (identifier "iVar5") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (local_28 <= iVar7) {\n        iVar4 = local_28 * 4 + 0x2c;\n        local_28 = local_28 + 10;\n        goto LAB_000cf287;\n      }" (if "if") (parenthesized_expression "(local_28 <= iVar7)" (( "(") (binary_expression "local_28 <= iVar7" (identifier "local_28") (<= "<=") (identifier "iVar7")) () ")")) (compound_statement "{\n        iVar4 = local_28 * 4 + 0x2c;\n        local_28 = local_28 + 10;\n        goto LAB_000cf287;\n      }" ({ "{") (expression_statement "iVar4 = local_28 * 4 + 0x2c;" (assignment_expression "iVar4 = local_28 * 4 + 0x2c" (identifier "iVar4") (= "=") (binary_expression "local_28 * 4 + 0x2c" (binary_expression "local_28 * 4" (identifier "local_28") (* "*") (number_literal "4")) (+ "+") (number_literal "0x2c"))) (; ";")) (expression_statement "local_28 = local_28 + 10;" (assignment_expression "local_28 = local_28 + 10" (identifier "local_28") (= "=") (binary_expression "local_28 + 10" (identifier "local_28") (+ "+") (number_literal "10"))) (; ";")) (goto_statement "goto LAB_000cf287;" (goto "goto") (statement_identifier "LAB_000cf287") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n      if ((param_2 == rl_filename_completion_function) && (iVar5 = puVar2[1], iVar5 != 0)) {\n        piVar8 = puVar2 + 2;\n        do {\n          xfree(iVar5);\n          iVar5 = *piVar8;\n          piVar8 = piVar8 + 1;\n        } while (iVar5 != 0);\n      }\n      xfree(puVar2);\n      if (_rl_caught_signal == 0) {\n        local_28 = 10;\n        iVar4 = 0x2c;\n        puVar2 = (undefined4 *)0x0;\n        iVar7 = 1;\n        iVar5 = 0;\n      }\n      else {\n        puVar2 = (undefined4 *)0x0;\n        iVar7 = 1;\n        _rl_signal_handler(_rl_caught_signal);\n        iVar4 = 0x2c;\n        iVar5 = 0;\n        local_28 = 10;\n      }\nLAB_000cf287:\n      puVar2 = (undefined4 *)xrealloc(puVar2,iVar4);\n      if (puVar2 == (undefined4 *)0x0) {\n        return (undefined4 *)0x0;\n      }\n    }" (else "else") (compound_statement "{\n      if ((param_2 == rl_filename_completion_function) && (iVar5 = puVar2[1], iVar5 != 0)) {\n        piVar8 = puVar2 + 2;\n        do {\n          xfree(iVar5);\n          iVar5 = *piVar8;\n          piVar8 = piVar8 + 1;\n        } while (iVar5 != 0);\n      }\n      xfree(puVar2);\n      if (_rl_caught_signal == 0) {\n        local_28 = 10;\n        iVar4 = 0x2c;\n        puVar2 = (undefined4 *)0x0;\n        iVar7 = 1;\n        iVar5 = 0;\n      }\n      else {\n        puVar2 = (undefined4 *)0x0;\n        iVar7 = 1;\n        _rl_signal_handler(_rl_caught_signal);\n        iVar4 = 0x2c;\n        iVar5 = 0;\n        local_28 = 10;\n      }\nLAB_000cf287:\n      puVar2 = (undefined4 *)xrealloc(puVar2,iVar4);\n      if (puVar2 == (undefined4 *)0x0) {\n        return (undefined4 *)0x0;\n      }\n    }" ({ "{") (if_statement "if ((param_2 == rl_filename_completion_function) && (iVar5 = puVar2[1], iVar5 != 0)) {\n        piVar8 = puVar2 + 2;\n        do {\n          xfree(iVar5);\n          iVar5 = *piVar8;\n          piVar8 = piVar8 + 1;\n        } while (iVar5 != 0);\n      }" (if "if") (parenthesized_expression "((param_2 == rl_filename_completion_function) && (iVar5 = puVar2[1], iVar5 != 0))" (( "(") (binary_expression "(param_2 == rl_filename_completion_function) && (iVar5 = puVar2[1], iVar5 != 0)" (parenthesized_expression "(param_2 == rl_filename_completion_function)" (( "(") (binary_expression "param_2 == rl_filename_completion_function" (identifier "param_2") (== "==") (identifier "rl_filename_completion_function")) () ")")) (&& "&&") (parenthesized_expression "(iVar5 = puVar2[1], iVar5 != 0)" (( "(") (comma_expression "iVar5 = puVar2[1], iVar5 != 0" (assignment_expression "iVar5 = puVar2[1]" (identifier "iVar5") (= "=") (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]"))) (, ",") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n        piVar8 = puVar2 + 2;\n        do {\n          xfree(iVar5);\n          iVar5 = *piVar8;\n          piVar8 = piVar8 + 1;\n        } while (iVar5 != 0);\n      }" ({ "{") (expression_statement "piVar8 = puVar2 + 2;" (assignment_expression "piVar8 = puVar2 + 2" (identifier "piVar8") (= "=") (binary_expression "puVar2 + 2" (identifier "puVar2") (+ "+") (number_literal "2"))) (; ";")) (do_statement "do {\n          xfree(iVar5);\n          iVar5 = *piVar8;\n          piVar8 = piVar8 + 1;\n        } while (iVar5 != 0);" (do "do") (compound_statement "{\n          xfree(iVar5);\n          iVar5 = *piVar8;\n          piVar8 = piVar8 + 1;\n        }" ({ "{") (expression_statement "xfree(iVar5);" (call_expression "xfree(iVar5)" (identifier "xfree") (argument_list "(iVar5)" (( "(") (identifier "iVar5") () ")"))) (; ";")) (expression_statement "iVar5 = *piVar8;" (assignment_expression "iVar5 = *piVar8" (identifier "iVar5") (= "=") (pointer_expression "*piVar8" (* "*") (identifier "piVar8"))) (; ";")) (expression_statement "piVar8 = piVar8 + 1;" (assignment_expression "piVar8 = piVar8 + 1" (identifier "piVar8") (= "=") (binary_expression "piVar8 + 1" (identifier "piVar8") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar5 != 0)" (( "(") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) () ")")) (; ";")) (} "}"))) (expression_statement "xfree(puVar2);" (call_expression "xfree(puVar2)" (identifier "xfree") (argument_list "(puVar2)" (( "(") (identifier "puVar2") () ")"))) (; ";")) (if_statement "if (_rl_caught_signal == 0) {\n        local_28 = 10;\n        iVar4 = 0x2c;\n        puVar2 = (undefined4 *)0x0;\n        iVar7 = 1;\n        iVar5 = 0;\n      }\n      else {\n        puVar2 = (undefined4 *)0x0;\n        iVar7 = 1;\n        _rl_signal_handler(_rl_caught_signal);\n        iVar4 = 0x2c;\n        iVar5 = 0;\n        local_28 = 10;\n      }" (if "if") (parenthesized_expression "(_rl_caught_signal == 0)" (( "(") (binary_expression "_rl_caught_signal == 0" (identifier "_rl_caught_signal") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        local_28 = 10;\n        iVar4 = 0x2c;\n        puVar2 = (undefined4 *)0x0;\n        iVar7 = 1;\n        iVar5 = 0;\n      }" ({ "{") (expression_statement "local_28 = 10;" (assignment_expression "local_28 = 10" (identifier "local_28") (= "=") (number_literal "10")) (; ";")) (expression_statement "iVar4 = 0x2c;" (assignment_expression "iVar4 = 0x2c" (identifier "iVar4") (= "=") (number_literal "0x2c")) (; ";")) (expression_statement "puVar2 = (undefined4 *)0x0;" (assignment_expression "puVar2 = (undefined4 *)0x0" (identifier "puVar2") (= "=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "iVar7 = 1;" (assignment_expression "iVar7 = 1" (identifier "iVar7") (= "=") (number_literal "1")) (; ";")) (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" (identifier "iVar5") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n        puVar2 = (undefined4 *)0x0;\n        iVar7 = 1;\n        _rl_signal_handler(_rl_caught_signal);\n        iVar4 = 0x2c;\n        iVar5 = 0;\n        local_28 = 10;\n      }" (else "else") (compound_statement "{\n        puVar2 = (undefined4 *)0x0;\n        iVar7 = 1;\n        _rl_signal_handler(_rl_caught_signal);\n        iVar4 = 0x2c;\n        iVar5 = 0;\n        local_28 = 10;\n      }" ({ "{") (expression_statement "puVar2 = (undefined4 *)0x0;" (assignment_expression "puVar2 = (undefined4 *)0x0" (identifier "puVar2") (= "=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "iVar7 = 1;" (assignment_expression "iVar7 = 1" (identifier "iVar7") (= "=") (number_literal "1")) (; ";")) (expression_statement "_rl_signal_handler(_rl_caught_signal);" (call_expression "_rl_signal_handler(_rl_caught_signal)" (identifier "_rl_signal_handler") (argument_list "(_rl_caught_signal)" (( "(") (identifier "_rl_caught_signal") () ")"))) (; ";")) (expression_statement "iVar4 = 0x2c;" (assignment_expression "iVar4 = 0x2c" (identifier "iVar4") (= "=") (number_literal "0x2c")) (; ";")) (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" (identifier "iVar5") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_28 = 10;" (assignment_expression "local_28 = 10" (identifier "local_28") (= "=") (number_literal "10")) (; ";")) (} "}")))) (labeled_statement "LAB_000cf287:\n      puVar2 = (undefined4 *)xrealloc(puVar2,iVar4);" (statement_identifier "LAB_000cf287") (: ":") (expression_statement "puVar2 = (undefined4 *)xrealloc(puVar2,iVar4);" (assignment_expression "puVar2 = (undefined4 *)xrealloc(puVar2,iVar4)" (identifier "puVar2") (= "=") (cast_expression "(undefined4 *)xrealloc(puVar2,iVar4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xrealloc(puVar2,iVar4)" (identifier "xrealloc") (argument_list "(puVar2,iVar4)" (( "(") (identifier "puVar2") (, ",") (identifier "iVar4") () ")"))))) (; ";"))) (if_statement "if (puVar2 == (undefined4 *)0x0) {\n        return (undefined4 *)0x0;\n      }" (if "if") (parenthesized_expression "(puVar2 == (undefined4 *)0x0)" (( "(") (binary_expression "puVar2 == (undefined4 *)0x0" (identifier "puVar2") (== "==") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        return (undefined4 *)0x0;\n      }" ({ "{") (return_statement "return (undefined4 *)0x0;" (return "return") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (} "}")))) (expression_statement "puVar2[iVar7] = iVar3;" (assignment_expression "puVar2[iVar7] = iVar3" (subscript_expression "puVar2[iVar7]" (identifier "puVar2") ([ "[") (identifier "iVar7") (] "]")) (= "=") (identifier "iVar3")) (; ";")) (expression_statement "puVar2[iVar5 + 2] = 0;" (assignment_expression "puVar2[iVar5 + 2] = 0" (subscript_expression "puVar2[iVar5 + 2]" (identifier "puVar2") ([ "[") (binary_expression "iVar5 + 2" (identifier "iVar5") (+ "+") (number_literal "2")) (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar5 = iVar7;" (assignment_expression "iVar5 = iVar7" (identifier "iVar5") (= "=") (identifier "iVar7")) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Unknown calling convention */

char ** function_1(char *text,type_1 *var_9)

{
  char **var_12;
  char *var_2;
  char *var_11;
  size_t bytes;
  int var_3;
  char **var_13;
  int var_8;
  int var_7;
  
  var_12 = (char **)var_1(0x2c);
  var_12[1] = (char *)0x0;
  var_7 = 10;
  var_3 = 0;
  do {
    var_2 = (*var_9)(text,var_3);
    if (var_2 == (char *)0x0) {
      if (var_3 == 0) {
        var_13 = (char **)0x0;
        var_4(var_12);
      }
      else {
        var_13 = var_12;
        if (var_3 == 1) {
          var_2 = var_12[1];
          var_12[1] = (char *)0x0;
          *var_12 = var_2;
        }
        else {
          var_5(var_12,var_3,text);
        }
      }
      return var_13;
    }
    if (var_6 == 0) {
      var_8 = var_3 + 1;
      if (var_7 <= var_8) {
        bytes = var_7 * 4 + 0x2c;
        var_7 = var_7 + 10;
        goto LAB_000cf287;
      }
    }
    else {
      if ((var_9 == var_10) &&
         (var_11 = var_12[1], var_11 != (char *)0x0)) {
        var_13 = var_12 + 2;
        do {
          var_4(var_11);
          var_11 = *var_13;
          var_13 = var_13 + 1;
        } while (var_11 != (char *)0x0);
      }
      var_4(var_12);
      if (var_6 == 0) {
        var_7 = 10;
        bytes = 0x2c;
        var_12 = (char **)0x0;
        var_8 = 1;
        var_3 = 0;
      }
      else {
        var_12 = (char **)0x0;
        var_8 = 1;
        var_14(var_6);
        bytes = 0x2c;
        var_3 = 0;
        var_7 = 10;
      }
LAB_000cf287:
      var_12 = (char **)var_15(var_12,bytes);
      if (var_12 == (char **)0x0) {
        return (char **)0x0;
      }
    }
    var_12[var_8] = var_2;
    var_12[var_3 + 2] = (char *)0x0;
    var_3 = var_8;
  } while( true );
}


(translation_unit (function_definition type: (type_identifier) declarator: (pointer_declarator declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier)))))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) 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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier))))) alternative: (else_clause (compound_statement (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: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier)))) alternative: (else_clause (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))))))))) (return_statement (identifier)))) (if_statement condition: (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)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (goto_statement label: (statement_identifier))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))) right: (binary_expression left: (identifier) right: (number_literal)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (do_statement body: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (return_statement (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (true))))))

/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

undefined4 * MASKED(undefined4 param_1,code *param_2)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  undefined4 *puVar6;
  int iVar7;
  int *piVar8;
  int local_28;
  
  puVar2 = (undefined4 *)xmalloc(0x2c);
  puVar2[1] = 0;
  local_28 = 10;
  iVar5 = 0;
  do {
    iVar3 = (*param_2)(param_1,iVar5);
    if (iVar3 == 0) {
      if (iVar5 == 0) {
        puVar6 = (undefined4 *)0x0;
        xfree(puVar2);
      }
      else {
        puVar6 = puVar2;
        if (iVar5 == 1) {
          uVar1 = puVar2[1];
          puVar2[1] = 0;
          *puVar2 = uVar1;
        }
        else {
          FUN_000cd7f0();
        }
      }
      return puVar6;
    }
    if (_rl_caught_signal == 0) {
      iVar7 = iVar5 + 1;
      if (local_28 <= iVar7) {
        iVar4 = local_28 * 4 + 0x2c;
        local_28 = local_28 + 10;
        goto LAB_000cf287;
      }
    }
    else {
      if ((param_2 == rl_filename_completion_function) && (iVar5 = puVar2[1], iVar5 != 0)) {
        piVar8 = puVar2 + 2;
        do {
          xfree(iVar5);
          iVar5 = *piVar8;
          piVar8 = piVar8 + 1;
        } while (iVar5 != 0);
      }
      xfree(puVar2);
      if (_rl_caught_signal == 0) {
        local_28 = 10;
        iVar4 = 0x2c;
        puVar2 = (undefined4 *)0x0;
        iVar7 = 1;
        iVar5 = 0;
      }
      else {
        puVar2 = (undefined4 *)0x0;
        iVar7 = 1;
        _rl_signal_handler(_rl_caught_signal);
        iVar4 = 0x2c;
        iVar5 = 0;
        local_28 = 10;
      }
LAB_000cf287:
      puVar2 = (undefined4 *)xrealloc(puVar2,iVar4);
      if (puVar2 == (undefined4 *)0x0) {
        return (undefined4 *)0x0;
      }
    }
    puVar2[iVar7] = iVar3;
    puVar2[iVar5 + 2] = 0;
    iVar5 = iVar7;
  } while( true );
}

