
size_t base_len(char *name)

{
  char cVar1;
  ulong uVar2;
  ulong uVar3;
  char *pcVar4;
  
  uVar3 = 0xffffffffffffffff;
  pcVar4 = name;
  do {
    if (uVar3 == 0) break;
    uVar3 = uVar3 - 1;
    cVar1 = *pcVar4;
    pcVar4 = pcVar4 + 1;
  } while (cVar1 != '\0');
  uVar3 = ~uVar3;
  uVar2 = uVar3 - 1;
  if (1 < uVar2) {
    cVar1 = name[uVar3 - 2];
    uVar3 = uVar3 - 2;
    while (cVar1 == '/') {
      if (uVar3 == 1) {
        return 1;
      }
      cVar1 = name[uVar3 - 1];
      uVar2 = uVar3;
      uVar3 = uVar3 - 1;
    }
  }
  return uVar2;
}



ulong FUN_0010519b(char *param_1)

{
  char cVar1;
  ulong uVar2;
  ulong uVar3;
  char *pcVar4;
  
  uVar3 = 0xffffffffffffffff;
  pcVar4 = param_1;
  do {
    if (uVar3 == 0) break;
    uVar3 = uVar3 - 1;
    cVar1 = *pcVar4;
    pcVar4 = pcVar4 + 1;
  } while (cVar1 != '\0');
  uVar3 = ~uVar3;
  uVar2 = uVar3 - 1;
  if (1 < uVar2) {
    cVar1 = param_1[uVar3 - 2];
    uVar3 = uVar3 - 2;
    while (cVar1 == '/') {
      if (uVar3 == 1) {
        return 1;
      }
      cVar1 = param_1[uVar3 - 1];
      uVar2 = uVar3;
      uVar3 = uVar3 - 1;
    }
  }
  return uVar2;
}


MOV RDX,RDI
MOV RCX,-0x1
MOV EAX,0x0
SCASB.REPNE RDI
MOV RAX,RCX
NOT RAX
SUB RAX,0x1
CMP RAX,0x1
JBE 0x001051c7
LEA RCX,[RAX + -0x1]
CMP byte ptr [RDX + RAX*0x1 + -0x1],0x2f
JZ 0x001051cb
RET
MOV RCX,RAX
CMP RCX,0x1
JZ 0x001051e1
LEA RAX,[RCX + -0x1]
CMP byte ptr [RDX + RCX*0x1 + -0x1],0x2f
JZ 0x001051c8
MOV RAX,RCX
JMP 0x001051c7
MOV RAX,RCX
RET
(translation_unit "ulong FUN_0010519b(char *param_1)\n\n{\n  char cVar1;\n  ulong uVar2;\n  ulong uVar3;\n  char *pcVar4;\n  \n  uVar3 = 0xffffffffffffffff;\n  pcVar4 = param_1;\n  do {\n    if (uVar3 == 0) break;\n    uVar3 = uVar3 - 1;\n    cVar1 = *pcVar4;\n    pcVar4 = pcVar4 + 1;\n  } while (cVar1 != '\0');\n  uVar3 = ~uVar3;\n  uVar2 = uVar3 - 1;\n  if (1 < uVar2) {\n    cVar1 = param_1[uVar3 - 2];\n    uVar3 = uVar3 - 2;\n    while (cVar1 == '/') {\n      if (uVar3 == 1) {\n        return 1;\n      }\n      cVar1 = param_1[uVar3 - 1];\n      uVar2 = uVar3;\n      uVar3 = uVar3 - 1;\n    }\n  }\n  return uVar2;\n}\n\n" (function_definition "ulong FUN_0010519b(char *param_1)\n\n{\n  char cVar1;\n  ulong uVar2;\n  ulong uVar3;\n  char *pcVar4;\n  \n  uVar3 = 0xffffffffffffffff;\n  pcVar4 = param_1;\n  do {\n    if (uVar3 == 0) break;\n    uVar3 = uVar3 - 1;\n    cVar1 = *pcVar4;\n    pcVar4 = pcVar4 + 1;\n  } while (cVar1 != '\0');\n  uVar3 = ~uVar3;\n  uVar2 = uVar3 - 1;\n  if (1 < uVar2) {\n    cVar1 = param_1[uVar3 - 2];\n    uVar3 = uVar3 - 2;\n    while (cVar1 == '/') {\n      if (uVar3 == 1) {\n        return 1;\n      }\n      cVar1 = param_1[uVar3 - 1];\n      uVar2 = uVar3;\n      uVar3 = uVar3 - 1;\n    }\n  }\n  return uVar2;\n}" type_identifier (function_declarator "FUN_0010519b(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  ulong uVar2;\n  ulong uVar3;\n  char *pcVar4;\n  \n  uVar3 = 0xffffffffffffffff;\n  pcVar4 = param_1;\n  do {\n    if (uVar3 == 0) break;\n    uVar3 = uVar3 - 1;\n    cVar1 = *pcVar4;\n    pcVar4 = pcVar4 + 1;\n  } while (cVar1 != '\0');\n  uVar3 = ~uVar3;\n  uVar2 = uVar3 - 1;\n  if (1 < uVar2) {\n    cVar1 = param_1[uVar3 - 2];\n    uVar3 = uVar3 - 2;\n    while (cVar1 == '/') {\n      if (uVar3 == 1) {\n        return 1;\n      }\n      cVar1 = param_1[uVar3 - 1];\n      uVar2 = uVar3;\n      uVar3 = uVar3 - 1;\n    }\n  }\n  return uVar2;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "ulong uVar2;" type_identifier identifier ;) (declaration "ulong uVar3;" type_identifier identifier ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (expression_statement "uVar3 = 0xffffffffffffffff;" (assignment_expression "uVar3 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar4 = param_1;" (assignment_expression "pcVar4 = param_1" identifier = identifier) ;) (do_statement "do {\n    if (uVar3 == 0) break;\n    uVar3 = uVar3 - 1;\n    cVar1 = *pcVar4;\n    pcVar4 = pcVar4 + 1;\n  } while (cVar1 != '\0');" do (compound_statement "{\n    if (uVar3 == 0) break;\n    uVar3 = uVar3 - 1;\n    cVar1 = *pcVar4;\n    pcVar4 = pcVar4 + 1;\n  }" { (if_statement "if (uVar3 == 0) break;" if (parenthesized_expression "(uVar3 == 0)" ( (binary_expression "uVar3 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar3 = uVar3 - 1;" (assignment_expression "uVar3 = uVar3 - 1" identifier = (binary_expression "uVar3 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = *pcVar4;" (assignment_expression "cVar1 = *pcVar4" identifier = (pointer_expression "*pcVar4" * identifier)) ;) (expression_statement "pcVar4 = pcVar4 + 1;" (assignment_expression "pcVar4 = pcVar4 + 1" identifier = (binary_expression "pcVar4 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "uVar3 = ~uVar3;" (assignment_expression "uVar3 = ~uVar3" identifier = (unary_expression "~uVar3" ~ identifier)) ;) (expression_statement "uVar2 = uVar3 - 1;" (assignment_expression "uVar2 = uVar3 - 1" identifier = (binary_expression "uVar3 - 1" identifier - number_literal)) ;) (if_statement "if (1 < uVar2) {\n    cVar1 = param_1[uVar3 - 2];\n    uVar3 = uVar3 - 2;\n    while (cVar1 == '/') {\n      if (uVar3 == 1) {\n        return 1;\n      }\n      cVar1 = param_1[uVar3 - 1];\n      uVar2 = uVar3;\n      uVar3 = uVar3 - 1;\n    }\n  }" if (parenthesized_expression "(1 < uVar2)" ( (binary_expression "1 < uVar2" number_literal < identifier) )) (compound_statement "{\n    cVar1 = param_1[uVar3 - 2];\n    uVar3 = uVar3 - 2;\n    while (cVar1 == '/') {\n      if (uVar3 == 1) {\n        return 1;\n      }\n      cVar1 = param_1[uVar3 - 1];\n      uVar2 = uVar3;\n      uVar3 = uVar3 - 1;\n    }\n  }" { (expression_statement "cVar1 = param_1[uVar3 - 2];" (assignment_expression "cVar1 = param_1[uVar3 - 2]" identifier = (subscript_expression "param_1[uVar3 - 2]" identifier [ (binary_expression "uVar3 - 2" identifier - number_literal) ])) ;) (expression_statement "uVar3 = uVar3 - 2;" (assignment_expression "uVar3 = uVar3 - 2" identifier = (binary_expression "uVar3 - 2" identifier - number_literal)) ;) (while_statement "while (cVar1 == '/') {\n      if (uVar3 == 1) {\n        return 1;\n      }\n      cVar1 = param_1[uVar3 - 1];\n      uVar2 = uVar3;\n      uVar3 = uVar3 - 1;\n    }" while (parenthesized_expression "(cVar1 == '/')" ( (binary_expression "cVar1 == '/'" identifier == (char_literal "'/'" ' character ')) )) (compound_statement "{\n      if (uVar3 == 1) {\n        return 1;\n      }\n      cVar1 = param_1[uVar3 - 1];\n      uVar2 = uVar3;\n      uVar3 = uVar3 - 1;\n    }" { (if_statement "if (uVar3 == 1) {\n        return 1;\n      }" if (parenthesized_expression "(uVar3 == 1)" ( (binary_expression "uVar3 == 1" identifier == number_literal) )) (compound_statement "{\n        return 1;\n      }" { (return_statement "return 1;" return number_literal ;) })) (expression_statement "cVar1 = param_1[uVar3 - 1];" (assignment_expression "cVar1 = param_1[uVar3 - 1]" identifier = (subscript_expression "param_1[uVar3 - 1]" identifier [ (binary_expression "uVar3 - 1" identifier - number_literal) ])) ;) (expression_statement "uVar2 = uVar3;" (assignment_expression "uVar2 = uVar3" identifier = identifier) ;) (expression_statement "uVar3 = uVar3 - 1;" (assignment_expression "uVar3 = uVar3 - 1" identifier = (binary_expression "uVar3 - 1" identifier - number_literal)) ;) })) })) (return_statement "return uVar2;" return identifier ;) })))
(translation_unit "size_t base_len(char *name)\n\n{\n  char cVar1;\n  ulong uVar2;\n  ulong uVar3;\n  char *pcVar4;\n  \n  uVar3 = 0xffffffffffffffff;\n  pcVar4 = name;\n  do {\n    if (uVar3 == 0) break;\n    uVar3 = uVar3 - 1;\n    cVar1 = *pcVar4;\n    pcVar4 = pcVar4 + 1;\n  } while (cVar1 != '\0');\n  uVar3 = ~uVar3;\n  uVar2 = uVar3 - 1;\n  if (1 < uVar2) {\n    cVar1 = name[uVar3 - 2];\n    uVar3 = uVar3 - 2;\n    while (cVar1 == '/') {\n      if (uVar3 == 1) {\n        return 1;\n      }\n      cVar1 = name[uVar3 - 1];\n      uVar2 = uVar3;\n      uVar3 = uVar3 - 1;\n    }\n  }\n  return uVar2;\n}\n\n" (function_definition "size_t base_len(char *name)\n\n{\n  char cVar1;\n  ulong uVar2;\n  ulong uVar3;\n  char *pcVar4;\n  \n  uVar3 = 0xffffffffffffffff;\n  pcVar4 = name;\n  do {\n    if (uVar3 == 0) break;\n    uVar3 = uVar3 - 1;\n    cVar1 = *pcVar4;\n    pcVar4 = pcVar4 + 1;\n  } while (cVar1 != '\0');\n  uVar3 = ~uVar3;\n  uVar2 = uVar3 - 1;\n  if (1 < uVar2) {\n    cVar1 = name[uVar3 - 2];\n    uVar3 = uVar3 - 2;\n    while (cVar1 == '/') {\n      if (uVar3 == 1) {\n        return 1;\n      }\n      cVar1 = name[uVar3 - 1];\n      uVar2 = uVar3;\n      uVar3 = uVar3 - 1;\n    }\n  }\n  return uVar2;\n}" primitive_type (function_declarator "base_len(char *name)" identifier (parameter_list "(char *name)" ( (parameter_declaration "char *name" primitive_type (pointer_declarator "*name" * identifier)) ))) (compound_statement "{\n  char cVar1;\n  ulong uVar2;\n  ulong uVar3;\n  char *pcVar4;\n  \n  uVar3 = 0xffffffffffffffff;\n  pcVar4 = name;\n  do {\n    if (uVar3 == 0) break;\n    uVar3 = uVar3 - 1;\n    cVar1 = *pcVar4;\n    pcVar4 = pcVar4 + 1;\n  } while (cVar1 != '\0');\n  uVar3 = ~uVar3;\n  uVar2 = uVar3 - 1;\n  if (1 < uVar2) {\n    cVar1 = name[uVar3 - 2];\n    uVar3 = uVar3 - 2;\n    while (cVar1 == '/') {\n      if (uVar3 == 1) {\n        return 1;\n      }\n      cVar1 = name[uVar3 - 1];\n      uVar2 = uVar3;\n      uVar3 = uVar3 - 1;\n    }\n  }\n  return uVar2;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "ulong uVar2;" type_identifier identifier ;) (declaration "ulong uVar3;" type_identifier identifier ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (expression_statement "uVar3 = 0xffffffffffffffff;" (assignment_expression "uVar3 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar4 = name;" (assignment_expression "pcVar4 = name" identifier = identifier) ;) (do_statement "do {\n    if (uVar3 == 0) break;\n    uVar3 = uVar3 - 1;\n    cVar1 = *pcVar4;\n    pcVar4 = pcVar4 + 1;\n  } while (cVar1 != '\0');" do (compound_statement "{\n    if (uVar3 == 0) break;\n    uVar3 = uVar3 - 1;\n    cVar1 = *pcVar4;\n    pcVar4 = pcVar4 + 1;\n  }" { (if_statement "if (uVar3 == 0) break;" if (parenthesized_expression "(uVar3 == 0)" ( (binary_expression "uVar3 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar3 = uVar3 - 1;" (assignment_expression "uVar3 = uVar3 - 1" identifier = (binary_expression "uVar3 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = *pcVar4;" (assignment_expression "cVar1 = *pcVar4" identifier = (pointer_expression "*pcVar4" * identifier)) ;) (expression_statement "pcVar4 = pcVar4 + 1;" (assignment_expression "pcVar4 = pcVar4 + 1" identifier = (binary_expression "pcVar4 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "uVar3 = ~uVar3;" (assignment_expression "uVar3 = ~uVar3" identifier = (unary_expression "~uVar3" ~ identifier)) ;) (expression_statement "uVar2 = uVar3 - 1;" (assignment_expression "uVar2 = uVar3 - 1" identifier = (binary_expression "uVar3 - 1" identifier - number_literal)) ;) (if_statement "if (1 < uVar2) {\n    cVar1 = name[uVar3 - 2];\n    uVar3 = uVar3 - 2;\n    while (cVar1 == '/') {\n      if (uVar3 == 1) {\n        return 1;\n      }\n      cVar1 = name[uVar3 - 1];\n      uVar2 = uVar3;\n      uVar3 = uVar3 - 1;\n    }\n  }" if (parenthesized_expression "(1 < uVar2)" ( (binary_expression "1 < uVar2" number_literal < identifier) )) (compound_statement "{\n    cVar1 = name[uVar3 - 2];\n    uVar3 = uVar3 - 2;\n    while (cVar1 == '/') {\n      if (uVar3 == 1) {\n        return 1;\n      }\n      cVar1 = name[uVar3 - 1];\n      uVar2 = uVar3;\n      uVar3 = uVar3 - 1;\n    }\n  }" { (expression_statement "cVar1 = name[uVar3 - 2];" (assignment_expression "cVar1 = name[uVar3 - 2]" identifier = (subscript_expression "name[uVar3 - 2]" identifier [ (binary_expression "uVar3 - 2" identifier - number_literal) ])) ;) (expression_statement "uVar3 = uVar3 - 2;" (assignment_expression "uVar3 = uVar3 - 2" identifier = (binary_expression "uVar3 - 2" identifier - number_literal)) ;) (while_statement "while (cVar1 == '/') {\n      if (uVar3 == 1) {\n        return 1;\n      }\n      cVar1 = name[uVar3 - 1];\n      uVar2 = uVar3;\n      uVar3 = uVar3 - 1;\n    }" while (parenthesized_expression "(cVar1 == '/')" ( (binary_expression "cVar1 == '/'" identifier == (char_literal "'/'" ' character ')) )) (compound_statement "{\n      if (uVar3 == 1) {\n        return 1;\n      }\n      cVar1 = name[uVar3 - 1];\n      uVar2 = uVar3;\n      uVar3 = uVar3 - 1;\n    }" { (if_statement "if (uVar3 == 1) {\n        return 1;\n      }" if (parenthesized_expression "(uVar3 == 1)" ( (binary_expression "uVar3 == 1" identifier == number_literal) )) (compound_statement "{\n        return 1;\n      }" { (return_statement "return 1;" return number_literal ;) })) (expression_statement "cVar1 = name[uVar3 - 1];" (assignment_expression "cVar1 = name[uVar3 - 1]" identifier = (subscript_expression "name[uVar3 - 1]" identifier [ (binary_expression "uVar3 - 1" identifier - number_literal) ])) ;) (expression_statement "uVar2 = uVar3;" (assignment_expression "uVar2 = uVar3" identifier = identifier) ;) (expression_statement "uVar3 = uVar3 - 1;" (assignment_expression "uVar3 = uVar3 - 1" identifier = (binary_expression "uVar3 - 1" identifier - number_literal)) ;) })) })) (return_statement "return uVar2;" return identifier ;) })))
(translation_unit "ulong FUN_0010519b(char *param_1)\n\n{\n  char cVar1;\n  ulong uVar2;\n  ulong uVar3;\n  char *pcVar4;\n  \n  uVar3 = 0xffffffffffffffff;\n  pcVar4 = param_1;\n  do {\n    if (uVar3 == 0) break;\n    uVar3 = uVar3 - 1;\n    cVar1 = *pcVar4;\n    pcVar4 = pcVar4 + 1;\n  } while (cVar1 != '\0');\n  uVar3 = ~uVar3;\n  uVar2 = uVar3 - 1;\n  if (1 < uVar2) {\n    cVar1 = param_1[uVar3 - 2];\n    uVar3 = uVar3 - 2;\n    while (cVar1 == '/') {\n      if (uVar3 == 1) {\n        return 1;\n      }\n      cVar1 = param_1[uVar3 - 1];\n      uVar2 = uVar3;\n      uVar3 = uVar3 - 1;\n    }\n  }\n  return uVar2;\n}\n\n" (function_definition "ulong FUN_0010519b(char *param_1)\n\n{\n  char cVar1;\n  ulong uVar2;\n  ulong uVar3;\n  char *pcVar4;\n  \n  uVar3 = 0xffffffffffffffff;\n  pcVar4 = param_1;\n  do {\n    if (uVar3 == 0) break;\n    uVar3 = uVar3 - 1;\n    cVar1 = *pcVar4;\n    pcVar4 = pcVar4 + 1;\n  } while (cVar1 != '\0');\n  uVar3 = ~uVar3;\n  uVar2 = uVar3 - 1;\n  if (1 < uVar2) {\n    cVar1 = param_1[uVar3 - 2];\n    uVar3 = uVar3 - 2;\n    while (cVar1 == '/') {\n      if (uVar3 == 1) {\n        return 1;\n      }\n      cVar1 = param_1[uVar3 - 1];\n      uVar2 = uVar3;\n      uVar3 = uVar3 - 1;\n    }\n  }\n  return uVar2;\n}" type_identifier (function_declarator "FUN_0010519b(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  ulong uVar2;\n  ulong uVar3;\n  char *pcVar4;\n  \n  uVar3 = 0xffffffffffffffff;\n  pcVar4 = param_1;\n  do {\n    if (uVar3 == 0) break;\n    uVar3 = uVar3 - 1;\n    cVar1 = *pcVar4;\n    pcVar4 = pcVar4 + 1;\n  } while (cVar1 != '\0');\n  uVar3 = ~uVar3;\n  uVar2 = uVar3 - 1;\n  if (1 < uVar2) {\n    cVar1 = param_1[uVar3 - 2];\n    uVar3 = uVar3 - 2;\n    while (cVar1 == '/') {\n      if (uVar3 == 1) {\n        return 1;\n      }\n      cVar1 = param_1[uVar3 - 1];\n      uVar2 = uVar3;\n      uVar3 = uVar3 - 1;\n    }\n  }\n  return uVar2;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "ulong uVar2;" type_identifier identifier ;) (declaration "ulong uVar3;" type_identifier identifier ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (expression_statement "uVar3 = 0xffffffffffffffff;" (assignment_expression "uVar3 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar4 = param_1;" (assignment_expression "pcVar4 = param_1" identifier = identifier) ;) (do_statement "do {\n    if (uVar3 == 0) break;\n    uVar3 = uVar3 - 1;\n    cVar1 = *pcVar4;\n    pcVar4 = pcVar4 + 1;\n  } while (cVar1 != '\0');" do (compound_statement "{\n    if (uVar3 == 0) break;\n    uVar3 = uVar3 - 1;\n    cVar1 = *pcVar4;\n    pcVar4 = pcVar4 + 1;\n  }" { (if_statement "if (uVar3 == 0) break;" if (parenthesized_expression "(uVar3 == 0)" ( (binary_expression "uVar3 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar3 = uVar3 - 1;" (assignment_expression "uVar3 = uVar3 - 1" identifier = (binary_expression "uVar3 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = *pcVar4;" (assignment_expression "cVar1 = *pcVar4" identifier = (pointer_expression "*pcVar4" * identifier)) ;) (expression_statement "pcVar4 = pcVar4 + 1;" (assignment_expression "pcVar4 = pcVar4 + 1" identifier = (binary_expression "pcVar4 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "uVar3 = ~uVar3;" (assignment_expression "uVar3 = ~uVar3" identifier = (unary_expression "~uVar3" ~ identifier)) ;) (expression_statement "uVar2 = uVar3 - 1;" (assignment_expression "uVar2 = uVar3 - 1" identifier = (binary_expression "uVar3 - 1" identifier - number_literal)) ;) (if_statement "if (1 < uVar2) {\n    cVar1 = param_1[uVar3 - 2];\n    uVar3 = uVar3 - 2;\n    while (cVar1 == '/') {\n      if (uVar3 == 1) {\n        return 1;\n      }\n      cVar1 = param_1[uVar3 - 1];\n      uVar2 = uVar3;\n      uVar3 = uVar3 - 1;\n    }\n  }" if (parenthesized_expression "(1 < uVar2)" ( (binary_expression "1 < uVar2" number_literal < identifier) )) (compound_statement "{\n    cVar1 = param_1[uVar3 - 2];\n    uVar3 = uVar3 - 2;\n    while (cVar1 == '/') {\n      if (uVar3 == 1) {\n        return 1;\n      }\n      cVar1 = param_1[uVar3 - 1];\n      uVar2 = uVar3;\n      uVar3 = uVar3 - 1;\n    }\n  }" { (expression_statement "cVar1 = param_1[uVar3 - 2];" (assignment_expression "cVar1 = param_1[uVar3 - 2]" identifier = (subscript_expression "param_1[uVar3 - 2]" identifier [ (binary_expression "uVar3 - 2" identifier - number_literal) ])) ;) (expression_statement "uVar3 = uVar3 - 2;" (assignment_expression "uVar3 = uVar3 - 2" identifier = (binary_expression "uVar3 - 2" identifier - number_literal)) ;) (while_statement "while (cVar1 == '/') {\n      if (uVar3 == 1) {\n        return 1;\n      }\n      cVar1 = param_1[uVar3 - 1];\n      uVar2 = uVar3;\n      uVar3 = uVar3 - 1;\n    }" while (parenthesized_expression "(cVar1 == '/')" ( (binary_expression "cVar1 == '/'" identifier == (char_literal "'/'" ' character ')) )) (compound_statement "{\n      if (uVar3 == 1) {\n        return 1;\n      }\n      cVar1 = param_1[uVar3 - 1];\n      uVar2 = uVar3;\n      uVar3 = uVar3 - 1;\n    }" { (if_statement "if (uVar3 == 1) {\n        return 1;\n      }" if (parenthesized_expression "(uVar3 == 1)" ( (binary_expression "uVar3 == 1" identifier == number_literal) )) (compound_statement "{\n        return 1;\n      }" { (return_statement "return 1;" return number_literal ;) })) (expression_statement "cVar1 = param_1[uVar3 - 1];" (assignment_expression "cVar1 = param_1[uVar3 - 1]" identifier = (subscript_expression "param_1[uVar3 - 1]" identifier [ (binary_expression "uVar3 - 1" identifier - number_literal) ])) ;) (expression_statement "uVar2 = uVar3;" (assignment_expression "uVar2 = uVar3" identifier = identifier) ;) (expression_statement "uVar3 = uVar3 - 1;" (assignment_expression "uVar3 = uVar3 - 1" identifier = (binary_expression "uVar3 - 1" identifier - number_literal)) ;) })) })) (return_statement "return uVar2;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) ;) (expression_statement (assignment_expression IDENT = (unary_expression ~ IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ (binary_expression IDENT - LIT) ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (while_statement while (parenthesized_expression ( (binary_expression IDENT == (char_literal ' character ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ (binary_expression IDENT - LIT) ])) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) })) })) (return_statement return IDENT ;) })))
(function_definition "ulong FUN_0010519b(char *param_1)\n\n{\n  char cVar1;\n  ulong uVar2;\n  ulong uVar3;\n  char *pcVar4;\n  \n  uVar3 = 0xffffffffffffffff;\n  pcVar4 = param_1;\n  do {\n    if (uVar3 == 0) break;\n    uVar3 = uVar3 - 1;\n    cVar1 = *pcVar4;\n    pcVar4 = pcVar4 + 1;\n  } while (cVar1 != '\0');\n  uVar3 = ~uVar3;\n  uVar2 = uVar3 - 1;\n  if (1 < uVar2) {\n    cVar1 = param_1[uVar3 - 2];\n    uVar3 = uVar3 - 2;\n    while (cVar1 == '/') {\n      if (uVar3 == 1) {\n        return 1;\n      }\n      cVar1 = param_1[uVar3 - 1];\n      uVar2 = uVar3;\n      uVar3 = uVar3 - 1;\n    }\n  }\n  return uVar2;\n}" (type_identifier "ulong") (function_declarator "FUN_0010519b(char *param_1)" (identifier "FUN_0010519b") (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  ulong uVar2;\n  ulong uVar3;\n  char *pcVar4;\n  \n  uVar3 = 0xffffffffffffffff;\n  pcVar4 = param_1;\n  do {\n    if (uVar3 == 0) break;\n    uVar3 = uVar3 - 1;\n    cVar1 = *pcVar4;\n    pcVar4 = pcVar4 + 1;\n  } while (cVar1 != '\0');\n  uVar3 = ~uVar3;\n  uVar2 = uVar3 - 1;\n  if (1 < uVar2) {\n    cVar1 = param_1[uVar3 - 2];\n    uVar3 = uVar3 - 2;\n    while (cVar1 == '/') {\n      if (uVar3 == 1) {\n        return 1;\n      }\n      cVar1 = param_1[uVar3 - 1];\n      uVar2 = uVar3;\n      uVar3 = uVar3 - 1;\n    }\n  }\n  return uVar2;\n}" ({ "{") (declaration "char cVar1;" (primitive_type "char") (identifier "cVar1") (; ";")) (declaration "ulong uVar2;" (type_identifier "ulong") (identifier "uVar2") (; ";")) (declaration "ulong uVar3;" (type_identifier "ulong") (identifier "uVar3") (; ";")) (declaration "char *pcVar4;" (primitive_type "char") (pointer_declarator "*pcVar4" (* "*") (identifier "pcVar4")) (; ";")) (expression_statement "uVar3 = 0xffffffffffffffff;" (assignment_expression "uVar3 = 0xffffffffffffffff" (identifier "uVar3") (= "=") (number_literal "0xffffffffffffffff")) (; ";")) (expression_statement "pcVar4 = param_1;" (assignment_expression "pcVar4 = param_1" (identifier "pcVar4") (= "=") (identifier "param_1")) (; ";")) (do_statement "do {\n    if (uVar3 == 0) break;\n    uVar3 = uVar3 - 1;\n    cVar1 = *pcVar4;\n    pcVar4 = pcVar4 + 1;\n  } while (cVar1 != '\0');" (do "do") (compound_statement "{\n    if (uVar3 == 0) break;\n    uVar3 = uVar3 - 1;\n    cVar1 = *pcVar4;\n    pcVar4 = pcVar4 + 1;\n  }" ({ "{") (if_statement "if (uVar3 == 0) break;" (if "if") (parenthesized_expression "(uVar3 == 0)" (( "(") (binary_expression "uVar3 == 0" (identifier "uVar3") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar3 = uVar3 - 1;" (assignment_expression "uVar3 = uVar3 - 1" (identifier "uVar3") (= "=") (binary_expression "uVar3 - 1" (identifier "uVar3") (- "-") (number_literal "1"))) (; ";")) (expression_statement "cVar1 = *pcVar4;" (assignment_expression "cVar1 = *pcVar4" (identifier "cVar1") (= "=") (pointer_expression "*pcVar4" (* "*") (identifier "pcVar4"))) (; ";")) (expression_statement "pcVar4 = pcVar4 + 1;" (assignment_expression "pcVar4 = pcVar4 + 1" (identifier "pcVar4") (= "=") (binary_expression "pcVar4 + 1" (identifier "pcVar4") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(cVar1 != '\0')" (( "(") (binary_expression "cVar1 != '\0'" (identifier "cVar1") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (; ";")) (expression_statement "uVar3 = ~uVar3;" (assignment_expression "uVar3 = ~uVar3" (identifier "uVar3") (= "=") (unary_expression "~uVar3" (~ "~") (identifier "uVar3"))) (; ";")) (expression_statement "uVar2 = uVar3 - 1;" (assignment_expression "uVar2 = uVar3 - 1" (identifier "uVar2") (= "=") (binary_expression "uVar3 - 1" (identifier "uVar3") (- "-") (number_literal "1"))) (; ";")) (if_statement "if (1 < uVar2) {\n    cVar1 = param_1[uVar3 - 2];\n    uVar3 = uVar3 - 2;\n    while (cVar1 == '/') {\n      if (uVar3 == 1) {\n        return 1;\n      }\n      cVar1 = param_1[uVar3 - 1];\n      uVar2 = uVar3;\n      uVar3 = uVar3 - 1;\n    }\n  }" (if "if") (parenthesized_expression "(1 < uVar2)" (( "(") (binary_expression "1 < uVar2" (number_literal "1") (< "<") (identifier "uVar2")) () ")")) (compound_statement "{\n    cVar1 = param_1[uVar3 - 2];\n    uVar3 = uVar3 - 2;\n    while (cVar1 == '/') {\n      if (uVar3 == 1) {\n        return 1;\n      }\n      cVar1 = param_1[uVar3 - 1];\n      uVar2 = uVar3;\n      uVar3 = uVar3 - 1;\n    }\n  }" ({ "{") (expression_statement "cVar1 = param_1[uVar3 - 2];" (assignment_expression "cVar1 = param_1[uVar3 - 2]" (identifier "cVar1") (= "=") (subscript_expression "param_1[uVar3 - 2]" (identifier "param_1") ([ "[") (binary_expression "uVar3 - 2" (identifier "uVar3") (- "-") (number_literal "2")) (] "]"))) (; ";")) (expression_statement "uVar3 = uVar3 - 2;" (assignment_expression "uVar3 = uVar3 - 2" (identifier "uVar3") (= "=") (binary_expression "uVar3 - 2" (identifier "uVar3") (- "-") (number_literal "2"))) (; ";")) (while_statement "while (cVar1 == '/') {\n      if (uVar3 == 1) {\n        return 1;\n      }\n      cVar1 = param_1[uVar3 - 1];\n      uVar2 = uVar3;\n      uVar3 = uVar3 - 1;\n    }" (while "while") (parenthesized_expression "(cVar1 == '/')" (( "(") (binary_expression "cVar1 == '/'" (identifier "cVar1") (== "==") (char_literal "'/'" (' "'") (character "/") (' "'"))) () ")")) (compound_statement "{\n      if (uVar3 == 1) {\n        return 1;\n      }\n      cVar1 = param_1[uVar3 - 1];\n      uVar2 = uVar3;\n      uVar3 = uVar3 - 1;\n    }" ({ "{") (if_statement "if (uVar3 == 1) {\n        return 1;\n      }" (if "if") (parenthesized_expression "(uVar3 == 1)" (( "(") (binary_expression "uVar3 == 1" (identifier "uVar3") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n        return 1;\n      }" ({ "{") (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (expression_statement "cVar1 = param_1[uVar3 - 1];" (assignment_expression "cVar1 = param_1[uVar3 - 1]" (identifier "cVar1") (= "=") (subscript_expression "param_1[uVar3 - 1]" (identifier "param_1") ([ "[") (binary_expression "uVar3 - 1" (identifier "uVar3") (- "-") (number_literal "1")) (] "]"))) (; ";")) (expression_statement "uVar2 = uVar3;" (assignment_expression "uVar2 = uVar3" (identifier "uVar2") (= "=") (identifier "uVar3")) (; ";")) (expression_statement "uVar3 = uVar3 - 1;" (assignment_expression "uVar3 = uVar3 - 1" (identifier "uVar3") (= "=") (binary_expression "uVar3 - 1" (identifier "uVar3") (- "-") (number_literal "1"))) (; ";")) (} "}"))) (} "}"))) (return_statement "return uVar2;" (return "return") (identifier "uVar2") (; ";")) (} "}")))

size_t function_1(char *name)

{
  char var_3;
  type_1 var_4;
  type_1 var_1;
  char *var_2;
  
  var_1 = 0xffffffffffffffff;
  var_2 = name;
  do {
    if (var_1 == 0) break;
    var_1 = var_1 - 1;
    var_3 = *var_2;
    var_2 = var_2 + 1;
  } while (var_3 != '\0');
  var_1 = ~var_1;
  var_4 = var_1 - 1;
  if (1 < var_4) {
    var_3 = name[var_1 - 2];
    var_1 = var_1 - 2;
    while (var_3 == '/') {
      if (var_1 == 1) {
        return 1;
      }
      var_3 = name[var_1 - 1];
      var_4 = var_1;
      var_1 = var_1 - 1;
    }
  }
  return var_4;
}


(translation_unit (function_definition type: (type_identifier) 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: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence))))) (expression_statement (assignment_expression left: (identifier) right: (unary_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (while_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (character)))) body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))))) (return_statement (identifier)))))

ulong MASKED(char *param_1)

{
  char cVar1;
  ulong uVar2;
  ulong uVar3;
  char *pcVar4;
  
  uVar3 = 0xffffffffffffffff;
  pcVar4 = param_1;
  do {
    if (uVar3 == 0) break;
    uVar3 = uVar3 - 1;
    cVar1 = *pcVar4;
    pcVar4 = pcVar4 + 1;
  } while (cVar1 != '\0');
  uVar3 = ~uVar3;
  uVar2 = uVar3 - 1;
  if (1 < uVar2) {
    cVar1 = param_1[uVar3 - 2];
    uVar3 = uVar3 - 2;
    while (cVar1 == '/') {
      if (uVar3 == 1) {
        return 1;
      }
      cVar1 = param_1[uVar3 - 1];
      uVar2 = uVar3;
      uVar3 = uVar3 - 1;
    }
  }
  return uVar2;
}

