
_Bool strip_trailing_slashes(char *file)

{
  char cVar1;
  char *name;
  size_t sVar2;
  
  name = last_component(file);
  if (*name == '\0') {
    name = file;
  }
  sVar2 = base_len(name);
  cVar1 = name[sVar2];
  name[sVar2] = '\0';
  return cVar1 != '\0';
}



bool FUN_0010ec60(char *param_1)

{
  char cVar1;
  long lVar2;
  char *pcVar3;
  
  pcVar3 = (char *)FUN_0010ebc9();
  if (*pcVar3 == '\0') {
    pcVar3 = param_1;
  }
  lVar2 = FUN_0010ec16(pcVar3);
  cVar1 = pcVar3[lVar2];
  pcVar3[lVar2] = '\0';
  return cVar1 != '\0';
}


PUSH RBP
PUSH RBX
SUB RSP,0x8
MOV RBP,RDI
CALL 0x0010ebc9
MOV RBX,RAX
CMP byte ptr [RAX],0x0
CMOVZ RBX,RBP
MOV RDI,RBX
CALL 0x0010ec16
ADD RBX,RAX
CMP byte ptr [RBX],0x0
SETNZ AL
MOV byte ptr [RBX],0x0
ADD RSP,0x8
POP RBX
POP RBP
RET
(translation_unit "bool FUN_0010ec60(char *param_1)\n\n{\n  char cVar1;\n  long lVar2;\n  char *pcVar3;\n  \n  pcVar3 = (char *)FUN_0010ebc9();\n  if (*pcVar3 == '\0') {\n    pcVar3 = param_1;\n  }\n  lVar2 = FUN_0010ec16(pcVar3);\n  cVar1 = pcVar3[lVar2];\n  pcVar3[lVar2] = '\0';\n  return cVar1 != '\0';\n}\n\n" (function_definition "bool FUN_0010ec60(char *param_1)\n\n{\n  char cVar1;\n  long lVar2;\n  char *pcVar3;\n  \n  pcVar3 = (char *)FUN_0010ebc9();\n  if (*pcVar3 == '\0') {\n    pcVar3 = param_1;\n  }\n  lVar2 = FUN_0010ec16(pcVar3);\n  cVar1 = pcVar3[lVar2];\n  pcVar3[lVar2] = '\0';\n  return cVar1 != '\0';\n}" primitive_type (function_declarator "FUN_0010ec60(char *param_1)" identifier (parameter_list "(char *param_1)" ( (parameter_declaration "char *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  char cVar1;\n  long lVar2;\n  char *pcVar3;\n  \n  pcVar3 = (char *)FUN_0010ebc9();\n  if (*pcVar3 == '\0') {\n    pcVar3 = param_1;\n  }\n  lVar2 = FUN_0010ec16(pcVar3);\n  cVar1 = pcVar3[lVar2];\n  pcVar3[lVar2] = '\0';\n  return cVar1 != '\0';\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (expression_statement "pcVar3 = (char *)FUN_0010ebc9();" (assignment_expression "pcVar3 = (char *)FUN_0010ebc9()" identifier = (cast_expression "(char *)FUN_0010ebc9()" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0010ebc9()" identifier (argument_list "()" ( ))))) ;) (if_statement "if (*pcVar3 == '\0') {\n    pcVar3 = param_1;\n  }" if (parenthesized_expression "(*pcVar3 == '\0')" ( (binary_expression "*pcVar3 == '\0'" (pointer_expression "*pcVar3" * identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    pcVar3 = param_1;\n  }" { (expression_statement "pcVar3 = param_1;" (assignment_expression "pcVar3 = param_1" identifier = identifier) ;) })) (expression_statement "lVar2 = FUN_0010ec16(pcVar3);" (assignment_expression "lVar2 = FUN_0010ec16(pcVar3)" identifier = (call_expression "FUN_0010ec16(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier )))) ;) (expression_statement "cVar1 = pcVar3[lVar2];" (assignment_expression "cVar1 = pcVar3[lVar2]" identifier = (subscript_expression "pcVar3[lVar2]" identifier [ identifier ])) ;) (expression_statement "pcVar3[lVar2] = '\0';" (assignment_expression "pcVar3[lVar2] = '\0'" (subscript_expression "pcVar3[lVar2]" identifier [ identifier ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (return_statement "return cVar1 != '\0';" return (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) ;) })))
(translation_unit "_Bool strip_trailing_slashes(char *file)\n\n{\n  char cVar1;\n  char *name;\n  size_t sVar2;\n  \n  name = last_component(file);\n  if (*name == '\0') {\n    name = file;\n  }\n  sVar2 = base_len(name);\n  cVar1 = name[sVar2];\n  name[sVar2] = '\0';\n  return cVar1 != '\0';\n}\n\n" (function_definition "_Bool strip_trailing_slashes(char *file)\n\n{\n  char cVar1;\n  char *name;\n  size_t sVar2;\n  \n  name = last_component(file);\n  if (*name == '\0') {\n    name = file;\n  }\n  sVar2 = base_len(name);\n  cVar1 = name[sVar2];\n  name[sVar2] = '\0';\n  return cVar1 != '\0';\n}" type_identifier (function_declarator "strip_trailing_slashes(char *file)" identifier (parameter_list "(char *file)" ( (parameter_declaration "char *file" primitive_type (pointer_declarator "*file" * identifier)) ))) (compound_statement "{\n  char cVar1;\n  char *name;\n  size_t sVar2;\n  \n  name = last_component(file);\n  if (*name == '\0') {\n    name = file;\n  }\n  sVar2 = base_len(name);\n  cVar1 = name[sVar2];\n  name[sVar2] = '\0';\n  return cVar1 != '\0';\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "char *name;" primitive_type (pointer_declarator "*name" * identifier) ;) (declaration "size_t sVar2;" primitive_type identifier ;) (expression_statement "name = last_component(file);" (assignment_expression "name = last_component(file)" identifier = (call_expression "last_component(file)" identifier (argument_list "(file)" ( identifier )))) ;) (if_statement "if (*name == '\0') {\n    name = file;\n  }" if (parenthesized_expression "(*name == '\0')" ( (binary_expression "*name == '\0'" (pointer_expression "*name" * identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    name = file;\n  }" { (expression_statement "name = file;" (assignment_expression "name = file" identifier = identifier) ;) })) (expression_statement "sVar2 = base_len(name);" (assignment_expression "sVar2 = base_len(name)" identifier = (call_expression "base_len(name)" identifier (argument_list "(name)" ( identifier )))) ;) (expression_statement "cVar1 = name[sVar2];" (assignment_expression "cVar1 = name[sVar2]" identifier = (subscript_expression "name[sVar2]" identifier [ identifier ])) ;) (expression_statement "name[sVar2] = '\0';" (assignment_expression "name[sVar2] = '\0'" (subscript_expression "name[sVar2]" identifier [ identifier ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (return_statement "return cVar1 != '\0';" return (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) ;) })))
(translation_unit "bool FUN_0010ec60(char *param_1)\n\n{\n  char cVar1;\n  long lVar2;\n  char *pcVar3;\n  \n  pcVar3 = (char *)FUN_0010ebc9();\n  if (*pcVar3 == '\0') {\n    pcVar3 = param_1;\n  }\n  lVar2 = FUN_0010ec16(pcVar3);\n  cVar1 = pcVar3[lVar2];\n  pcVar3[lVar2] = '\0';\n  return cVar1 != '\0';\n}\n\n" (function_definition "bool FUN_0010ec60(char *param_1)\n\n{\n  char cVar1;\n  long lVar2;\n  char *pcVar3;\n  \n  pcVar3 = (char *)FUN_0010ebc9();\n  if (*pcVar3 == '\0') {\n    pcVar3 = param_1;\n  }\n  lVar2 = FUN_0010ec16(pcVar3);\n  cVar1 = pcVar3[lVar2];\n  pcVar3[lVar2] = '\0';\n  return cVar1 != '\0';\n}" primitive_type (function_declarator "FUN_0010ec60(char *param_1)" identifier (parameter_list "(char *param_1)" ( (parameter_declaration "char *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  char cVar1;\n  long lVar2;\n  char *pcVar3;\n  \n  pcVar3 = (char *)FUN_0010ebc9();\n  if (*pcVar3 == '\0') {\n    pcVar3 = param_1;\n  }\n  lVar2 = FUN_0010ec16(pcVar3);\n  cVar1 = pcVar3[lVar2];\n  pcVar3[lVar2] = '\0';\n  return cVar1 != '\0';\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (expression_statement "pcVar3 = (char *)FUN_0010ebc9();" (assignment_expression "pcVar3 = (char *)FUN_0010ebc9()" identifier = (cast_expression "(char *)FUN_0010ebc9()" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0010ebc9()" identifier (argument_list "()" ( ))))) ;) (if_statement "if (*pcVar3 == '\0') {\n    pcVar3 = param_1;\n  }" if (parenthesized_expression "(*pcVar3 == '\0')" ( (binary_expression "*pcVar3 == '\0'" (pointer_expression "*pcVar3" * identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    pcVar3 = param_1;\n  }" { (expression_statement "pcVar3 = param_1;" (assignment_expression "pcVar3 = param_1" identifier = identifier) ;) })) (expression_statement "lVar2 = FUN_0010ec16(pcVar3);" (assignment_expression "lVar2 = FUN_0010ec16(pcVar3)" identifier = (call_expression "FUN_0010ec16(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier )))) ;) (expression_statement "cVar1 = pcVar3[lVar2];" (assignment_expression "cVar1 = pcVar3[lVar2]" identifier = (subscript_expression "pcVar3[lVar2]" identifier [ identifier ])) ;) (expression_statement "pcVar3[lVar2] = '\0';" (assignment_expression "pcVar3[lVar2] = '\0'" (subscript_expression "pcVar3[lVar2]" identifier [ identifier ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (return_statement "return cVar1 != '\0';" return (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ IDENT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = (char_literal ' escape_sequence ')) ;) (return_statement return (binary_expression IDENT != (char_literal ' escape_sequence ')) ;) })))
(function_definition "bool FUN_0010ec60(char *param_1)\n\n{\n  char cVar1;\n  long lVar2;\n  char *pcVar3;\n  \n  pcVar3 = (char *)FUN_0010ebc9();\n  if (*pcVar3 == '\0') {\n    pcVar3 = param_1;\n  }\n  lVar2 = FUN_0010ec16(pcVar3);\n  cVar1 = pcVar3[lVar2];\n  pcVar3[lVar2] = '\0';\n  return cVar1 != '\0';\n}" (primitive_type "bool") (function_declarator "FUN_0010ec60(char *param_1)" (identifier "FUN_0010ec60") (parameter_list "(char *param_1)" (( "(") (parameter_declaration "char *param_1" (primitive_type "char") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) () ")"))) (compound_statement "{\n  char cVar1;\n  long lVar2;\n  char *pcVar3;\n  \n  pcVar3 = (char *)FUN_0010ebc9();\n  if (*pcVar3 == '\0') {\n    pcVar3 = param_1;\n  }\n  lVar2 = FUN_0010ec16(pcVar3);\n  cVar1 = pcVar3[lVar2];\n  pcVar3[lVar2] = '\0';\n  return cVar1 != '\0';\n}" ({ "{") (declaration "char cVar1;" (primitive_type "char") (identifier "cVar1") (; ";")) (declaration "long lVar2;" (sized_type_specifier "long" (long "long")) (identifier "lVar2") (; ";")) (declaration "char *pcVar3;" (primitive_type "char") (pointer_declarator "*pcVar3" (* "*") (identifier "pcVar3")) (; ";")) (expression_statement "pcVar3 = (char *)FUN_0010ebc9();" (assignment_expression "pcVar3 = (char *)FUN_0010ebc9()" (identifier "pcVar3") (= "=") (cast_expression "(char *)FUN_0010ebc9()" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0010ebc9()" (identifier "FUN_0010ebc9") (argument_list "()" (( "(") () ")"))))) (; ";")) (if_statement "if (*pcVar3 == '\0') {\n    pcVar3 = param_1;\n  }" (if "if") (parenthesized_expression "(*pcVar3 == '\0')" (( "(") (binary_expression "*pcVar3 == '\0'" (pointer_expression "*pcVar3" (* "*") (identifier "pcVar3")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    pcVar3 = param_1;\n  }" ({ "{") (expression_statement "pcVar3 = param_1;" (assignment_expression "pcVar3 = param_1" (identifier "pcVar3") (= "=") (identifier "param_1")) (; ";")) (} "}"))) (expression_statement "lVar2 = FUN_0010ec16(pcVar3);" (assignment_expression "lVar2 = FUN_0010ec16(pcVar3)" (identifier "lVar2") (= "=") (call_expression "FUN_0010ec16(pcVar3)" (identifier "FUN_0010ec16") (argument_list "(pcVar3)" (( "(") (identifier "pcVar3") () ")")))) (; ";")) (expression_statement "cVar1 = pcVar3[lVar2];" (assignment_expression "cVar1 = pcVar3[lVar2]" (identifier "cVar1") (= "=") (subscript_expression "pcVar3[lVar2]" (identifier "pcVar3") ([ "[") (identifier "lVar2") (] "]"))) (; ";")) (expression_statement "pcVar3[lVar2] = '\0';" (assignment_expression "pcVar3[lVar2] = '\0'" (subscript_expression "pcVar3[lVar2]" (identifier "pcVar3") ([ "[") (identifier "lVar2") (] "]")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (return_statement "return cVar1 != '\0';" (return "return") (binary_expression "cVar1 != '\0'" (identifier "cVar1") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (} "}")))

type_1 function_1(char *file)

{
  char var_3;
  char *name;
  size_t sVar2;
  
  name = var_1(file);
  if (*name == '\0') {
    name = file;
  }
  sVar2 = var_2(name);
  var_3 = name[sVar2];
  name[sVar2] = '\0';
  return var_3 != '\0';
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (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))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (identifier)) right: (char_literal (escape_sequence)))) (return_statement (binary_expression left: (identifier) right: (char_literal (escape_sequence)))))))

bool MASKED(char *param_1)

{
  char cVar1;
  long lVar2;
  char *pcVar3;
  
  pcVar3 = (char *)FUN_0010ebc9();
  if (*pcVar3 == '\0') {
    pcVar3 = param_1;
  }
  lVar2 = FUN_0010ec16(pcVar3);
  cVar1 = pcVar3[lVar2];
  pcVar3[lVar2] = '\0';
  return cVar1 != '\0';
}

