
_Bool outside_of_confinement(char *currpath,_Bool allow_tabcomp)

{
  char *__haystack;
  char *__haystack_00;
  char *pcVar1;
  char *pcVar2;
  bool bVar3;
  
  if (operating_dir == (char *)0x0) {
    return false;
  }
  __haystack_00 = get_full_path(currpath);
  __haystack = operating_dir;
  if (__haystack_00 != (char *)0x0) {
    pcVar1 = strstr(__haystack_00,operating_dir);
    bVar3 = false;
    if (allow_tabcomp) {
      pcVar2 = strstr(__haystack,__haystack_00);
      bVar3 = __haystack == pcVar2;
    }
    free(__haystack_00);
    allow_tabcomp = (_Bool)(pcVar1 != __haystack_00 & (bVar3 ^ 1U));
  }
  return allow_tabcomp;
}



uint FUN_0010b887(undefined8 param_1,uint param_2)

{
  char *__haystack;
  char *__haystack_00;
  char *pcVar1;
  char *pcVar2;
  undefined8 extraout_RAX;
  uint uVar3;
  
  if (DAT_0013bbb8 == (char *)0x0) {
    return 0;
  }
  __haystack_00 = (char *)FUN_0010a765();
  __haystack = DAT_0013bbb8;
  if (__haystack_00 != (char *)0x0) {
    pcVar1 = strstr(__haystack_00,DAT_0013bbb8);
    uVar3 = 0;
    if ((char)param_2 != '\0') {
      pcVar2 = strstr(__haystack,__haystack_00);
      uVar3 = (uint)(__haystack == pcVar2);
    }
    free(__haystack_00);
    param_2 = (uint)CONCAT71((int7)((ulong)extraout_RAX >> 8),pcVar1 != __haystack_00) & (uVar3 ^ 1)
    ;
  }
  return param_2;
}


MOV EAX,0x0
CMP qword ptr [0x0013bbb8],0x0
JZ 0x0010b904
PUSH R14
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
MOV EBX,ESI
CALL 0x0010a765
MOV R12,RAX
TEST RAX,RAX
JZ 0x0010b900
MOV R13,qword ptr [0x0013bbb8]
MOV RSI,R13
MOV RDI,RAX
CALL 0x00105a60
MOV R14,RAX
MOV EBP,0x0
TEST BL,BL
JZ 0x0010b8e1
MOV RSI,R12
MOV RDI,R13
CALL 0x00105a60
CMP R13,RAX
SETZ BPL
MOVZX EBP,BPL
MOV RDI,R12
CALL 0x001050f0
CMP R14,R12
SETNZ AL
AND EBP,0x1
XOR EBP,0x1
AND EAX,EBP
POP RBX
POP RBP
POP R12
POP R13
POP R14
RET
MOV EAX,EBX
JMP 0x0010b8f7
RET
(translation_unit "uint FUN_0010b887(undefined8 param_1,uint param_2)\n\n{\n  char *__haystack;\n  char *__haystack_00;\n  char *pcVar1;\n  char *pcVar2;\n  undefined8 extraout_RAX;\n  uint uVar3;\n  \n  if (DAT_0013bbb8 == (char *)0x0) {\n    return 0;\n  }\n  __haystack_00 = (char *)FUN_0010a765();\n  __haystack = DAT_0013bbb8;\n  if (__haystack_00 != (char *)0x0) {\n    pcVar1 = strstr(__haystack_00,DAT_0013bbb8);\n    uVar3 = 0;\n    if ((char)param_2 != '\0') {\n      pcVar2 = strstr(__haystack,__haystack_00);\n      uVar3 = (uint)(__haystack == pcVar2);\n    }\n    free(__haystack_00);\n    param_2 = (uint)CONCAT71((int7)((ulong)extraout_RAX >> 8),pcVar1 != __haystack_00) & (uVar3 ^ 1)\n    ;\n  }\n  return param_2;\n}\n\n" (function_definition "uint FUN_0010b887(undefined8 param_1,uint param_2)\n\n{\n  char *__haystack;\n  char *__haystack_00;\n  char *pcVar1;\n  char *pcVar2;\n  undefined8 extraout_RAX;\n  uint uVar3;\n  \n  if (DAT_0013bbb8 == (char *)0x0) {\n    return 0;\n  }\n  __haystack_00 = (char *)FUN_0010a765();\n  __haystack = DAT_0013bbb8;\n  if (__haystack_00 != (char *)0x0) {\n    pcVar1 = strstr(__haystack_00,DAT_0013bbb8);\n    uVar3 = 0;\n    if ((char)param_2 != '\0') {\n      pcVar2 = strstr(__haystack,__haystack_00);\n      uVar3 = (uint)(__haystack == pcVar2);\n    }\n    free(__haystack_00);\n    param_2 = (uint)CONCAT71((int7)((ulong)extraout_RAX >> 8),pcVar1 != __haystack_00) & (uVar3 ^ 1)\n    ;\n  }\n  return param_2;\n}" type_identifier (function_declarator "FUN_0010b887(undefined8 param_1,uint param_2)" identifier (parameter_list "(undefined8 param_1,uint param_2)" ( (parameter_declaration "undefined8 param_1" type_identifier identifier) , (parameter_declaration "uint param_2" type_identifier identifier) ))) (compound_statement "{\n  char *__haystack;\n  char *__haystack_00;\n  char *pcVar1;\n  char *pcVar2;\n  undefined8 extraout_RAX;\n  uint uVar3;\n  \n  if (DAT_0013bbb8 == (char *)0x0) {\n    return 0;\n  }\n  __haystack_00 = (char *)FUN_0010a765();\n  __haystack = DAT_0013bbb8;\n  if (__haystack_00 != (char *)0x0) {\n    pcVar1 = strstr(__haystack_00,DAT_0013bbb8);\n    uVar3 = 0;\n    if ((char)param_2 != '\0') {\n      pcVar2 = strstr(__haystack,__haystack_00);\n      uVar3 = (uint)(__haystack == pcVar2);\n    }\n    free(__haystack_00);\n    param_2 = (uint)CONCAT71((int7)((ulong)extraout_RAX >> 8),pcVar1 != __haystack_00) & (uVar3 ^ 1)\n    ;\n  }\n  return param_2;\n}" { (declaration "char *__haystack;" primitive_type (pointer_declarator "*__haystack" * identifier) ;) (declaration "char *__haystack_00;" primitive_type (pointer_declarator "*__haystack_00" * identifier) ;) (declaration "char *pcVar1;" primitive_type (pointer_declarator "*pcVar1" * identifier) ;) (declaration "char *pcVar2;" primitive_type (pointer_declarator "*pcVar2" * identifier) ;) (declaration "undefined8 extraout_RAX;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (if_statement "if (DAT_0013bbb8 == (char *)0x0) {\n    return 0;\n  }" if (parenthesized_expression "(DAT_0013bbb8 == (char *)0x0)" ( (binary_expression "DAT_0013bbb8 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "__haystack_00 = (char *)FUN_0010a765();" (assignment_expression "__haystack_00 = (char *)FUN_0010a765()" identifier = (cast_expression "(char *)FUN_0010a765()" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0010a765()" identifier (argument_list "()" ( ))))) ;) (expression_statement "__haystack = DAT_0013bbb8;" (assignment_expression "__haystack = DAT_0013bbb8" identifier = identifier) ;) (if_statement "if (__haystack_00 != (char *)0x0) {\n    pcVar1 = strstr(__haystack_00,DAT_0013bbb8);\n    uVar3 = 0;\n    if ((char)param_2 != '\0') {\n      pcVar2 = strstr(__haystack,__haystack_00);\n      uVar3 = (uint)(__haystack == pcVar2);\n    }\n    free(__haystack_00);\n    param_2 = (uint)CONCAT71((int7)((ulong)extraout_RAX >> 8),pcVar1 != __haystack_00) & (uVar3 ^ 1)\n    ;\n  }" if (parenthesized_expression "(__haystack_00 != (char *)0x0)" ( (binary_expression "__haystack_00 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    pcVar1 = strstr(__haystack_00,DAT_0013bbb8);\n    uVar3 = 0;\n    if ((char)param_2 != '\0') {\n      pcVar2 = strstr(__haystack,__haystack_00);\n      uVar3 = (uint)(__haystack == pcVar2);\n    }\n    free(__haystack_00);\n    param_2 = (uint)CONCAT71((int7)((ulong)extraout_RAX >> 8),pcVar1 != __haystack_00) & (uVar3 ^ 1)\n    ;\n  }" { (expression_statement "pcVar1 = strstr(__haystack_00,DAT_0013bbb8);" (assignment_expression "pcVar1 = strstr(__haystack_00,DAT_0013bbb8)" identifier = (call_expression "strstr(__haystack_00,DAT_0013bbb8)" identifier (argument_list "(__haystack_00,DAT_0013bbb8)" ( identifier , identifier )))) ;) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) (if_statement "if ((char)param_2 != '\0') {\n      pcVar2 = strstr(__haystack,__haystack_00);\n      uVar3 = (uint)(__haystack == pcVar2);\n    }" if (parenthesized_expression "((char)param_2 != '\0')" ( (binary_expression "(char)param_2 != '\0'" (cast_expression "(char)param_2" ( (type_descriptor "char" primitive_type) ) identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      pcVar2 = strstr(__haystack,__haystack_00);\n      uVar3 = (uint)(__haystack == pcVar2);\n    }" { (expression_statement "pcVar2 = strstr(__haystack,__haystack_00);" (assignment_expression "pcVar2 = strstr(__haystack,__haystack_00)" identifier = (call_expression "strstr(__haystack,__haystack_00)" identifier (argument_list "(__haystack,__haystack_00)" ( identifier , identifier )))) ;) (expression_statement "uVar3 = (uint)(__haystack == pcVar2);" (assignment_expression "uVar3 = (uint)(__haystack == pcVar2)" identifier = (call_expression "(uint)(__haystack == pcVar2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(__haystack == pcVar2)" ( (binary_expression "__haystack == pcVar2" identifier == identifier) )))) ;) })) (expression_statement "free(__haystack_00);" (call_expression "free(__haystack_00)" identifier (argument_list "(__haystack_00)" ( identifier ))) ;) (expression_statement "param_2 = (uint)CONCAT71((int7)((ulong)extraout_RAX >> 8),pcVar1 != __haystack_00) & (uVar3 ^ 1)\n    ;" (assignment_expression "param_2 = (uint)CONCAT71((int7)((ulong)extraout_RAX >> 8),pcVar1 != __haystack_00) & (uVar3 ^ 1)" identifier = (binary_expression "(uint)CONCAT71((int7)((ulong)extraout_RAX >> 8),pcVar1 != __haystack_00) & (uVar3 ^ 1)" (cast_expression "(uint)CONCAT71((int7)((ulong)extraout_RAX >> 8),pcVar1 != __haystack_00)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CONCAT71((int7)((ulong)extraout_RAX >> 8),pcVar1 != __haystack_00)" identifier (argument_list "((int7)((ulong)extraout_RAX >> 8),pcVar1 != __haystack_00)" ( (call_expression "(int7)((ulong)extraout_RAX >> 8)" (parenthesized_expression "(int7)" ( identifier )) (argument_list "((ulong)extraout_RAX >> 8)" ( (binary_expression "(ulong)extraout_RAX >> 8" (cast_expression "(ulong)extraout_RAX" ( (type_descriptor "ulong" type_identifier) ) identifier) >> number_literal) ))) , (binary_expression "pcVar1 != __haystack_00" identifier != identifier) )))) & (parenthesized_expression "(uVar3 ^ 1)" ( (binary_expression "uVar3 ^ 1" identifier ^ number_literal) )))) ;) })) (return_statement "return param_2;" return identifier ;) })))
(translation_unit "_Bool outside_of_confinement(char *currpath,_Bool allow_tabcomp)\n\n{\n  char *__haystack;\n  char *__haystack_00;\n  char *pcVar1;\n  char *pcVar2;\n  bool bVar3;\n  \n  if (operating_dir == (char *)0x0) {\n    return false;\n  }\n  __haystack_00 = get_full_path(currpath);\n  __haystack = operating_dir;\n  if (__haystack_00 != (char *)0x0) {\n    pcVar1 = strstr(__haystack_00,operating_dir);\n    bVar3 = false;\n    if (allow_tabcomp) {\n      pcVar2 = strstr(__haystack,__haystack_00);\n      bVar3 = __haystack == pcVar2;\n    }\n    free(__haystack_00);\n    allow_tabcomp = (_Bool)(pcVar1 != __haystack_00 & (bVar3 ^ 1U));\n  }\n  return allow_tabcomp;\n}\n\n" (function_definition "_Bool outside_of_confinement(char *currpath,_Bool allow_tabcomp)\n\n{\n  char *__haystack;\n  char *__haystack_00;\n  char *pcVar1;\n  char *pcVar2;\n  bool bVar3;\n  \n  if (operating_dir == (char *)0x0) {\n    return false;\n  }\n  __haystack_00 = get_full_path(currpath);\n  __haystack = operating_dir;\n  if (__haystack_00 != (char *)0x0) {\n    pcVar1 = strstr(__haystack_00,operating_dir);\n    bVar3 = false;\n    if (allow_tabcomp) {\n      pcVar2 = strstr(__haystack,__haystack_00);\n      bVar3 = __haystack == pcVar2;\n    }\n    free(__haystack_00);\n    allow_tabcomp = (_Bool)(pcVar1 != __haystack_00 & (bVar3 ^ 1U));\n  }\n  return allow_tabcomp;\n}" type_identifier (function_declarator "outside_of_confinement(char *currpath,_Bool allow_tabcomp)" identifier (parameter_list "(char *currpath,_Bool allow_tabcomp)" ( (parameter_declaration "char *currpath" primitive_type (pointer_declarator "*currpath" * identifier)) , (parameter_declaration "_Bool allow_tabcomp" type_identifier identifier) ))) (compound_statement "{\n  char *__haystack;\n  char *__haystack_00;\n  char *pcVar1;\n  char *pcVar2;\n  bool bVar3;\n  \n  if (operating_dir == (char *)0x0) {\n    return false;\n  }\n  __haystack_00 = get_full_path(currpath);\n  __haystack = operating_dir;\n  if (__haystack_00 != (char *)0x0) {\n    pcVar1 = strstr(__haystack_00,operating_dir);\n    bVar3 = false;\n    if (allow_tabcomp) {\n      pcVar2 = strstr(__haystack,__haystack_00);\n      bVar3 = __haystack == pcVar2;\n    }\n    free(__haystack_00);\n    allow_tabcomp = (_Bool)(pcVar1 != __haystack_00 & (bVar3 ^ 1U));\n  }\n  return allow_tabcomp;\n}" { (declaration "char *__haystack;" primitive_type (pointer_declarator "*__haystack" * identifier) ;) (declaration "char *__haystack_00;" primitive_type (pointer_declarator "*__haystack_00" * identifier) ;) (declaration "char *pcVar1;" primitive_type (pointer_declarator "*pcVar1" * identifier) ;) (declaration "char *pcVar2;" primitive_type (pointer_declarator "*pcVar2" * identifier) ;) (declaration "bool bVar3;" primitive_type identifier ;) (if_statement "if (operating_dir == (char *)0x0) {\n    return false;\n  }" if (parenthesized_expression "(operating_dir == (char *)0x0)" ( (binary_expression "operating_dir == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return false;\n  }" { (return_statement "return false;" return false ;) })) (expression_statement "__haystack_00 = get_full_path(currpath);" (assignment_expression "__haystack_00 = get_full_path(currpath)" identifier = (call_expression "get_full_path(currpath)" identifier (argument_list "(currpath)" ( identifier )))) ;) (expression_statement "__haystack = operating_dir;" (assignment_expression "__haystack = operating_dir" identifier = identifier) ;) (if_statement "if (__haystack_00 != (char *)0x0) {\n    pcVar1 = strstr(__haystack_00,operating_dir);\n    bVar3 = false;\n    if (allow_tabcomp) {\n      pcVar2 = strstr(__haystack,__haystack_00);\n      bVar3 = __haystack == pcVar2;\n    }\n    free(__haystack_00);\n    allow_tabcomp = (_Bool)(pcVar1 != __haystack_00 & (bVar3 ^ 1U));\n  }" if (parenthesized_expression "(__haystack_00 != (char *)0x0)" ( (binary_expression "__haystack_00 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    pcVar1 = strstr(__haystack_00,operating_dir);\n    bVar3 = false;\n    if (allow_tabcomp) {\n      pcVar2 = strstr(__haystack,__haystack_00);\n      bVar3 = __haystack == pcVar2;\n    }\n    free(__haystack_00);\n    allow_tabcomp = (_Bool)(pcVar1 != __haystack_00 & (bVar3 ^ 1U));\n  }" { (expression_statement "pcVar1 = strstr(__haystack_00,operating_dir);" (assignment_expression "pcVar1 = strstr(__haystack_00,operating_dir)" identifier = (call_expression "strstr(__haystack_00,operating_dir)" identifier (argument_list "(__haystack_00,operating_dir)" ( identifier , identifier )))) ;) (expression_statement "bVar3 = false;" (assignment_expression "bVar3 = false" identifier = false) ;) (if_statement "if (allow_tabcomp) {\n      pcVar2 = strstr(__haystack,__haystack_00);\n      bVar3 = __haystack == pcVar2;\n    }" if (parenthesized_expression "(allow_tabcomp)" ( identifier )) (compound_statement "{\n      pcVar2 = strstr(__haystack,__haystack_00);\n      bVar3 = __haystack == pcVar2;\n    }" { (expression_statement "pcVar2 = strstr(__haystack,__haystack_00);" (assignment_expression "pcVar2 = strstr(__haystack,__haystack_00)" identifier = (call_expression "strstr(__haystack,__haystack_00)" identifier (argument_list "(__haystack,__haystack_00)" ( identifier , identifier )))) ;) (expression_statement "bVar3 = __haystack == pcVar2;" (assignment_expression "bVar3 = __haystack == pcVar2" identifier = (binary_expression "__haystack == pcVar2" identifier == identifier)) ;) })) (expression_statement "free(__haystack_00);" (call_expression "free(__haystack_00)" identifier (argument_list "(__haystack_00)" ( identifier ))) ;) (expression_statement "allow_tabcomp = (_Bool)(pcVar1 != __haystack_00 & (bVar3 ^ 1U));" (assignment_expression "allow_tabcomp = (_Bool)(pcVar1 != __haystack_00 & (bVar3 ^ 1U))" identifier = (call_expression "(_Bool)(pcVar1 != __haystack_00 & (bVar3 ^ 1U))" (parenthesized_expression "(_Bool)" ( identifier )) (argument_list "(pcVar1 != __haystack_00 & (bVar3 ^ 1U))" ( (binary_expression "pcVar1 != __haystack_00 & (bVar3 ^ 1U)" (binary_expression "pcVar1 != __haystack_00" identifier != identifier) & (parenthesized_expression "(bVar3 ^ 1U)" ( (binary_expression "bVar3 ^ 1U" identifier ^ number_literal) ))) )))) ;) })) (return_statement "return allow_tabcomp;" return identifier ;) })))
(translation_unit "uint FUN_0010b887(undefined8 param_1,uint param_2)\n\n{\n  char *__haystack;\n  char *__haystack_00;\n  char *pcVar1;\n  char *pcVar2;\n  undefined8 extraout_RAX;\n  uint uVar3;\n  \n  if (DAT_0013bbb8 == (char *)0x0) {\n    return 0;\n  }\n  __haystack_00 = (char *)FUN_0010a765();\n  __haystack = DAT_0013bbb8;\n  if (__haystack_00 != (char *)0x0) {\n    pcVar1 = strstr(__haystack_00,DAT_0013bbb8);\n    uVar3 = 0;\n    if ((char)param_2 != '\0') {\n      pcVar2 = strstr(__haystack,__haystack_00);\n      uVar3 = (uint)(__haystack == pcVar2);\n    }\n    free(__haystack_00);\n    param_2 = (uint)CONCAT71((int7)((ulong)extraout_RAX >> 8),pcVar1 != __haystack_00) & (uVar3 ^ 1)\n    ;\n  }\n  return param_2;\n}\n\n" (function_definition "uint FUN_0010b887(undefined8 param_1,uint param_2)\n\n{\n  char *__haystack;\n  char *__haystack_00;\n  char *pcVar1;\n  char *pcVar2;\n  undefined8 extraout_RAX;\n  uint uVar3;\n  \n  if (DAT_0013bbb8 == (char *)0x0) {\n    return 0;\n  }\n  __haystack_00 = (char *)FUN_0010a765();\n  __haystack = DAT_0013bbb8;\n  if (__haystack_00 != (char *)0x0) {\n    pcVar1 = strstr(__haystack_00,DAT_0013bbb8);\n    uVar3 = 0;\n    if ((char)param_2 != '\0') {\n      pcVar2 = strstr(__haystack,__haystack_00);\n      uVar3 = (uint)(__haystack == pcVar2);\n    }\n    free(__haystack_00);\n    param_2 = (uint)CONCAT71((int7)((ulong)extraout_RAX >> 8),pcVar1 != __haystack_00) & (uVar3 ^ 1)\n    ;\n  }\n  return param_2;\n}" type_identifier (function_declarator "FUN_0010b887(undefined8 param_1,uint param_2)" identifier (parameter_list "(undefined8 param_1,uint param_2)" ( (parameter_declaration "undefined8 param_1" type_identifier identifier) , (parameter_declaration "uint param_2" type_identifier identifier) ))) (compound_statement "{\n  char *__haystack;\n  char *__haystack_00;\n  char *pcVar1;\n  char *pcVar2;\n  undefined8 extraout_RAX;\n  uint uVar3;\n  \n  if (DAT_0013bbb8 == (char *)0x0) {\n    return 0;\n  }\n  __haystack_00 = (char *)FUN_0010a765();\n  __haystack = DAT_0013bbb8;\n  if (__haystack_00 != (char *)0x0) {\n    pcVar1 = strstr(__haystack_00,DAT_0013bbb8);\n    uVar3 = 0;\n    if ((char)param_2 != '\0') {\n      pcVar2 = strstr(__haystack,__haystack_00);\n      uVar3 = (uint)(__haystack == pcVar2);\n    }\n    free(__haystack_00);\n    param_2 = (uint)CONCAT71((int7)((ulong)extraout_RAX >> 8),pcVar1 != __haystack_00) & (uVar3 ^ 1)\n    ;\n  }\n  return param_2;\n}" { (declaration "char *__haystack;" primitive_type (pointer_declarator "*__haystack" * identifier) ;) (declaration "char *__haystack_00;" primitive_type (pointer_declarator "*__haystack_00" * identifier) ;) (declaration "char *pcVar1;" primitive_type (pointer_declarator "*pcVar1" * identifier) ;) (declaration "char *pcVar2;" primitive_type (pointer_declarator "*pcVar2" * identifier) ;) (declaration "undefined8 extraout_RAX;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (if_statement "if (DAT_0013bbb8 == (char *)0x0) {\n    return 0;\n  }" if (parenthesized_expression "(DAT_0013bbb8 == (char *)0x0)" ( (binary_expression "DAT_0013bbb8 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "__haystack_00 = (char *)FUN_0010a765();" (assignment_expression "__haystack_00 = (char *)FUN_0010a765()" identifier = (cast_expression "(char *)FUN_0010a765()" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0010a765()" identifier (argument_list "()" ( ))))) ;) (expression_statement "__haystack = DAT_0013bbb8;" (assignment_expression "__haystack = DAT_0013bbb8" identifier = identifier) ;) (if_statement "if (__haystack_00 != (char *)0x0) {\n    pcVar1 = strstr(__haystack_00,DAT_0013bbb8);\n    uVar3 = 0;\n    if ((char)param_2 != '\0') {\n      pcVar2 = strstr(__haystack,__haystack_00);\n      uVar3 = (uint)(__haystack == pcVar2);\n    }\n    free(__haystack_00);\n    param_2 = (uint)CONCAT71((int7)((ulong)extraout_RAX >> 8),pcVar1 != __haystack_00) & (uVar3 ^ 1)\n    ;\n  }" if (parenthesized_expression "(__haystack_00 != (char *)0x0)" ( (binary_expression "__haystack_00 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    pcVar1 = strstr(__haystack_00,DAT_0013bbb8);\n    uVar3 = 0;\n    if ((char)param_2 != '\0') {\n      pcVar2 = strstr(__haystack,__haystack_00);\n      uVar3 = (uint)(__haystack == pcVar2);\n    }\n    free(__haystack_00);\n    param_2 = (uint)CONCAT71((int7)((ulong)extraout_RAX >> 8),pcVar1 != __haystack_00) & (uVar3 ^ 1)\n    ;\n  }" { (expression_statement "pcVar1 = strstr(__haystack_00,DAT_0013bbb8);" (assignment_expression "pcVar1 = strstr(__haystack_00,DAT_0013bbb8)" identifier = (call_expression "strstr(__haystack_00,DAT_0013bbb8)" identifier (argument_list "(__haystack_00,DAT_0013bbb8)" ( identifier , identifier )))) ;) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) (if_statement "if ((char)param_2 != '\0') {\n      pcVar2 = strstr(__haystack,__haystack_00);\n      uVar3 = (uint)(__haystack == pcVar2);\n    }" if (parenthesized_expression "((char)param_2 != '\0')" ( (binary_expression "(char)param_2 != '\0'" (cast_expression "(char)param_2" ( (type_descriptor "char" primitive_type) ) identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      pcVar2 = strstr(__haystack,__haystack_00);\n      uVar3 = (uint)(__haystack == pcVar2);\n    }" { (expression_statement "pcVar2 = strstr(__haystack,__haystack_00);" (assignment_expression "pcVar2 = strstr(__haystack,__haystack_00)" identifier = (call_expression "strstr(__haystack,__haystack_00)" identifier (argument_list "(__haystack,__haystack_00)" ( identifier , identifier )))) ;) (expression_statement "uVar3 = (uint)(__haystack == pcVar2);" (assignment_expression "uVar3 = (uint)(__haystack == pcVar2)" identifier = (call_expression "(uint)(__haystack == pcVar2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(__haystack == pcVar2)" ( (binary_expression "__haystack == pcVar2" identifier == identifier) )))) ;) })) (expression_statement "free(__haystack_00);" (call_expression "free(__haystack_00)" identifier (argument_list "(__haystack_00)" ( identifier ))) ;) (expression_statement "param_2 = (uint)CONCAT71((int7)((ulong)extraout_RAX >> 8),pcVar1 != __haystack_00) & (uVar3 ^ 1)\n    ;" (assignment_expression "param_2 = (uint)CONCAT71((int7)((ulong)extraout_RAX >> 8),pcVar1 != __haystack_00) & (uVar3 ^ 1)" identifier = (binary_expression "(uint)CONCAT71((int7)((ulong)extraout_RAX >> 8),pcVar1 != __haystack_00) & (uVar3 ^ 1)" (cast_expression "(uint)CONCAT71((int7)((ulong)extraout_RAX >> 8),pcVar1 != __haystack_00)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CONCAT71((int7)((ulong)extraout_RAX >> 8),pcVar1 != __haystack_00)" identifier (argument_list "((int7)((ulong)extraout_RAX >> 8),pcVar1 != __haystack_00)" ( (call_expression "(int7)((ulong)extraout_RAX >> 8)" (parenthesized_expression "(int7)" ( identifier )) (argument_list "((ulong)extraout_RAX >> 8)" ( (binary_expression "(ulong)extraout_RAX >> 8" (cast_expression "(ulong)extraout_RAX" ( (type_descriptor "ulong" type_identifier) ) identifier) >> number_literal) ))) , (binary_expression "pcVar1 != __haystack_00" identifier != identifier) )))) & (parenthesized_expression "(uVar3 ^ 1)" ( (binary_expression "uVar3 ^ 1" identifier ^ number_literal) )))) ;) })) (return_statement "return param_2;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT == IDENT) )))) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ))) , (binary_expression IDENT != IDENT) )))) & (parenthesized_expression ( (binary_expression IDENT ^ LIT) )))) ;) })) (return_statement return IDENT ;) })))
(function_definition "uint FUN_0010b887(undefined8 param_1,uint param_2)\n\n{\n  char *__haystack;\n  char *__haystack_00;\n  char *pcVar1;\n  char *pcVar2;\n  undefined8 extraout_RAX;\n  uint uVar3;\n  \n  if (DAT_0013bbb8 == (char *)0x0) {\n    return 0;\n  }\n  __haystack_00 = (char *)FUN_0010a765();\n  __haystack = DAT_0013bbb8;\n  if (__haystack_00 != (char *)0x0) {\n    pcVar1 = strstr(__haystack_00,DAT_0013bbb8);\n    uVar3 = 0;\n    if ((char)param_2 != '\0') {\n      pcVar2 = strstr(__haystack,__haystack_00);\n      uVar3 = (uint)(__haystack == pcVar2);\n    }\n    free(__haystack_00);\n    param_2 = (uint)CONCAT71((int7)((ulong)extraout_RAX >> 8),pcVar1 != __haystack_00) & (uVar3 ^ 1)\n    ;\n  }\n  return param_2;\n}" (type_identifier "uint") (function_declarator "FUN_0010b887(undefined8 param_1,uint param_2)" (identifier "FUN_0010b887") (parameter_list "(undefined8 param_1,uint param_2)" (( "(") (parameter_declaration "undefined8 param_1" (type_identifier "undefined8") (identifier "param_1")) (, ",") (parameter_declaration "uint param_2" (type_identifier "uint") (identifier "param_2")) () ")"))) (compound_statement "{\n  char *__haystack;\n  char *__haystack_00;\n  char *pcVar1;\n  char *pcVar2;\n  undefined8 extraout_RAX;\n  uint uVar3;\n  \n  if (DAT_0013bbb8 == (char *)0x0) {\n    return 0;\n  }\n  __haystack_00 = (char *)FUN_0010a765();\n  __haystack = DAT_0013bbb8;\n  if (__haystack_00 != (char *)0x0) {\n    pcVar1 = strstr(__haystack_00,DAT_0013bbb8);\n    uVar3 = 0;\n    if ((char)param_2 != '\0') {\n      pcVar2 = strstr(__haystack,__haystack_00);\n      uVar3 = (uint)(__haystack == pcVar2);\n    }\n    free(__haystack_00);\n    param_2 = (uint)CONCAT71((int7)((ulong)extraout_RAX >> 8),pcVar1 != __haystack_00) & (uVar3 ^ 1)\n    ;\n  }\n  return param_2;\n}" ({ "{") (declaration "char *__haystack;" (primitive_type "char") (pointer_declarator "*__haystack" (* "*") (identifier "__haystack")) (; ";")) (declaration "char *__haystack_00;" (primitive_type "char") (pointer_declarator "*__haystack_00" (* "*") (identifier "__haystack_00")) (; ";")) (declaration "char *pcVar1;" (primitive_type "char") (pointer_declarator "*pcVar1" (* "*") (identifier "pcVar1")) (; ";")) (declaration "char *pcVar2;" (primitive_type "char") (pointer_declarator "*pcVar2" (* "*") (identifier "pcVar2")) (; ";")) (declaration "undefined8 extraout_RAX;" (type_identifier "undefined8") (identifier "extraout_RAX") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (if_statement "if (DAT_0013bbb8 == (char *)0x0) {\n    return 0;\n  }" (if "if") (parenthesized_expression "(DAT_0013bbb8 == (char *)0x0)" (( "(") (binary_expression "DAT_0013bbb8 == (char *)0x0" (identifier "DAT_0013bbb8") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    return 0;\n  }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "__haystack_00 = (char *)FUN_0010a765();" (assignment_expression "__haystack_00 = (char *)FUN_0010a765()" (identifier "__haystack_00") (= "=") (cast_expression "(char *)FUN_0010a765()" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0010a765()" (identifier "FUN_0010a765") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "__haystack = DAT_0013bbb8;" (assignment_expression "__haystack = DAT_0013bbb8" (identifier "__haystack") (= "=") (identifier "DAT_0013bbb8")) (; ";")) (if_statement "if (__haystack_00 != (char *)0x0) {\n    pcVar1 = strstr(__haystack_00,DAT_0013bbb8);\n    uVar3 = 0;\n    if ((char)param_2 != '\0') {\n      pcVar2 = strstr(__haystack,__haystack_00);\n      uVar3 = (uint)(__haystack == pcVar2);\n    }\n    free(__haystack_00);\n    param_2 = (uint)CONCAT71((int7)((ulong)extraout_RAX >> 8),pcVar1 != __haystack_00) & (uVar3 ^ 1)\n    ;\n  }" (if "if") (parenthesized_expression "(__haystack_00 != (char *)0x0)" (( "(") (binary_expression "__haystack_00 != (char *)0x0" (identifier "__haystack_00") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    pcVar1 = strstr(__haystack_00,DAT_0013bbb8);\n    uVar3 = 0;\n    if ((char)param_2 != '\0') {\n      pcVar2 = strstr(__haystack,__haystack_00);\n      uVar3 = (uint)(__haystack == pcVar2);\n    }\n    free(__haystack_00);\n    param_2 = (uint)CONCAT71((int7)((ulong)extraout_RAX >> 8),pcVar1 != __haystack_00) & (uVar3 ^ 1)\n    ;\n  }" ({ "{") (expression_statement "pcVar1 = strstr(__haystack_00,DAT_0013bbb8);" (assignment_expression "pcVar1 = strstr(__haystack_00,DAT_0013bbb8)" (identifier "pcVar1") (= "=") (call_expression "strstr(__haystack_00,DAT_0013bbb8)" (identifier "strstr") (argument_list "(__haystack_00,DAT_0013bbb8)" (( "(") (identifier "__haystack_00") (, ",") (identifier "DAT_0013bbb8") () ")")))) (; ";")) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" (identifier "uVar3") (= "=") (number_literal "0")) (; ";")) (if_statement "if ((char)param_2 != '\0') {\n      pcVar2 = strstr(__haystack,__haystack_00);\n      uVar3 = (uint)(__haystack == pcVar2);\n    }" (if "if") (parenthesized_expression "((char)param_2 != '\0')" (( "(") (binary_expression "(char)param_2 != '\0'" (cast_expression "(char)param_2" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "param_2")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      pcVar2 = strstr(__haystack,__haystack_00);\n      uVar3 = (uint)(__haystack == pcVar2);\n    }" ({ "{") (expression_statement "pcVar2 = strstr(__haystack,__haystack_00);" (assignment_expression "pcVar2 = strstr(__haystack,__haystack_00)" (identifier "pcVar2") (= "=") (call_expression "strstr(__haystack,__haystack_00)" (identifier "strstr") (argument_list "(__haystack,__haystack_00)" (( "(") (identifier "__haystack") (, ",") (identifier "__haystack_00") () ")")))) (; ";")) (expression_statement "uVar3 = (uint)(__haystack == pcVar2);" (assignment_expression "uVar3 = (uint)(__haystack == pcVar2)" (identifier "uVar3") (= "=") (call_expression "(uint)(__haystack == pcVar2)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(__haystack == pcVar2)" (( "(") (binary_expression "__haystack == pcVar2" (identifier "__haystack") (== "==") (identifier "pcVar2")) () ")")))) (; ";")) (} "}"))) (expression_statement "free(__haystack_00);" (call_expression "free(__haystack_00)" (identifier "free") (argument_list "(__haystack_00)" (( "(") (identifier "__haystack_00") () ")"))) (; ";")) (expression_statement "param_2 = (uint)CONCAT71((int7)((ulong)extraout_RAX >> 8),pcVar1 != __haystack_00) & (uVar3 ^ 1)\n    ;" (assignment_expression "param_2 = (uint)CONCAT71((int7)((ulong)extraout_RAX >> 8),pcVar1 != __haystack_00) & (uVar3 ^ 1)" (identifier "param_2") (= "=") (binary_expression "(uint)CONCAT71((int7)((ulong)extraout_RAX >> 8),pcVar1 != __haystack_00) & (uVar3 ^ 1)" (cast_expression "(uint)CONCAT71((int7)((ulong)extraout_RAX >> 8),pcVar1 != __haystack_00)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (call_expression "CONCAT71((int7)((ulong)extraout_RAX >> 8),pcVar1 != __haystack_00)" (identifier "CONCAT71") (argument_list "((int7)((ulong)extraout_RAX >> 8),pcVar1 != __haystack_00)" (( "(") (call_expression "(int7)((ulong)extraout_RAX >> 8)" (parenthesized_expression "(int7)" (( "(") (identifier "int7") () ")")) (argument_list "((ulong)extraout_RAX >> 8)" (( "(") (binary_expression "(ulong)extraout_RAX >> 8" (cast_expression "(ulong)extraout_RAX" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "extraout_RAX")) (>> ">>") (number_literal "8")) () ")"))) (, ",") (binary_expression "pcVar1 != __haystack_00" (identifier "pcVar1") (!= "!=") (identifier "__haystack_00")) () ")")))) (& "&") (parenthesized_expression "(uVar3 ^ 1)" (( "(") (binary_expression "uVar3 ^ 1" (identifier "uVar3") (^ "^") (number_literal "1")) () ")")))) (; ";")) (} "}"))) (return_statement "return param_2;" (return "return") (identifier "param_2") (; ";")) (} "}")))

type_1 function_1(char *currpath,type_1 allow_tabcomp)

{
  char *var_5;
  char *var_3;
  char *var_8;
  char *var_6;
  bool var_9;
  
  if (var_1 == (char *)0x0) {
    return false;
  }
  var_3 = var_2(currpath);
  var_5 = var_1;
  if (var_3 != (char *)0x0) {
    var_8 = var_4(var_3,var_1);
    var_9 = false;
    if (allow_tabcomp) {
      var_6 = var_4(var_5,var_3);
      var_9 = var_5 == var_6;
    }
    var_7(var_3);
    allow_tabcomp = (type_1)(var_8 != var_3 & (var_9 ^ 1U));
  }
  return allow_tabcomp;
}


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

uint MASKED(undefined8 param_1,uint param_2)

{
  char *__haystack;
  char *__haystack_00;
  char *pcVar1;
  char *pcVar2;
  undefined8 extraout_RAX;
  uint uVar3;
  
  if (DAT_0013bbb8 == (char *)0x0) {
    return 0;
  }
  __haystack_00 = (char *)FUN_0010a765();
  __haystack = DAT_0013bbb8;
  if (__haystack_00 != (char *)0x0) {
    pcVar1 = strstr(__haystack_00,DAT_0013bbb8);
    uVar3 = 0;
    if ((char)param_2 != '\0') {
      pcVar2 = strstr(__haystack,__haystack_00);
      uVar3 = (uint)(__haystack == pcVar2);
    }
    free(__haystack_00);
    param_2 = (uint)CONCAT71((int7)((ulong)extraout_RAX >> 8),pcVar1 != __haystack_00) & (uVar3 ^ 1)
    ;
  }
  return param_2;
}

