
int make_directory(char *directory)

{
  char cVar1;
  long lVar2;
  bool bVar3;
  _Bool _Var4;
  int iVar5;
  ulong uVar6;
  char *pcVar7;
  char *pcVar8;
  long in_FS_OFFSET;
  undefined8 local_50 [2];
  long local_40 [2];
  
  local_40[0] = *(long *)(in_FS_OFFSET + 0x28);
  uVar6 = 0xffffffffffffffff;
  pcVar8 = directory;
  do {
    if (uVar6 == 0) break;
    uVar6 = uVar6 - 1;
    cVar1 = *pcVar8;
    pcVar8 = pcVar8 + 1;
  } while (cVar1 != '\0');
  lVar2 = -(~uVar6 + 0x17 & 0xfffffffffffffff0);
  pcVar8 = (char *)((long)local_40 + lVar2);
  *(undefined8 *)((long)local_50 + lVar2) = 0x13af09;
  strcpy(pcVar8,directory);
  pcVar7 = pcVar8 + (*pcVar8 == '/');
  do {
    cVar1 = *pcVar7;
    if ((cVar1 == '\0') || (cVar1 == '/')) {
      if (cVar1 == '\0') {
        *(undefined8 *)((long)local_50 + lVar2) = 0x13af77;
        _Var4 = file_exists_p(pcVar8,(file_stats_t *)0x0);
        if (_Var4) {
          iVar5 = 0;
LAB_0013af80:
          if (local_40[0] != *(long *)(in_FS_OFFSET + 0x28)) {
                    /* WARNING: Subroutine does not return */
            *(code **)((long)local_50 + lVar2) = file_merge;
            __stack_chk_fail();
          }
          return iVar5;
        }
        bVar3 = true;
LAB_0013af56:
        *(undefined8 *)((long)local_50 + lVar2) = 0x13af63;
        iVar5 = mkdir(pcVar8,0x1ff);
        if (bVar3) goto LAB_0013af80;
      }
      else {
        *pcVar7 = '\0';
        *(undefined8 *)((long)local_50 + lVar2) = 0x13af45;
        _Var4 = file_exists_p(pcVar8,(file_stats_t *)0x0);
        if (!_Var4) {
          bVar3 = false;
          goto LAB_0013af56;
        }
      }
      *pcVar7 = '/';
    }
    pcVar7 = pcVar7 + 1;
  } while( true );
}



int FUN_0013aeb8(char *param_1)

{
  long lVar1;
  bool bVar2;
  char cVar3;
  int iVar4;
  ulong uVar5;
  char *pcVar6;
  char *pcVar7;
  long in_FS_OFFSET;
  undefined8 local_50 [2];
  long local_40 [2];
  
  local_40[0] = *(long *)(in_FS_OFFSET + 0x28);
  uVar5 = 0xffffffffffffffff;
  pcVar7 = param_1;
  do {
    if (uVar5 == 0) break;
    uVar5 = uVar5 - 1;
    cVar3 = *pcVar7;
    pcVar7 = pcVar7 + 1;
  } while (cVar3 != '\0');
  lVar1 = -(~uVar5 + 0x17 & 0xfffffffffffffff0);
  pcVar7 = (char *)((long)local_40 + lVar1);
  *(undefined8 *)((long)local_50 + lVar1) = 0x13af09;
  strcpy(pcVar7,param_1);
  pcVar6 = pcVar7 + (*pcVar7 == '/');
  do {
    cVar3 = *pcVar6;
    if ((cVar3 == '\0') || (cVar3 == '/')) {
      if (cVar3 == '\0') {
        *(undefined8 *)((long)local_50 + lVar1) = 0x13af77;
        cVar3 = FUN_0013a9ab(pcVar7,0);
        if (cVar3 != '\0') {
          iVar4 = 0;
LAB_0013af80:
          if (local_40[0] != *(long *)(in_FS_OFFSET + 0x28)) {
                    /* WARNING: Subroutine does not return */
            *(code **)((long)local_50 + lVar1) = FUN_0013afa8;
            __stack_chk_fail();
          }
          return iVar4;
        }
        bVar2 = true;
LAB_0013af56:
        *(undefined8 *)((long)local_50 + lVar1) = 0x13af63;
        iVar4 = mkdir(pcVar7,0x1ff);
        if (bVar2) goto LAB_0013af80;
      }
      else {
        *pcVar6 = '\0';
        *(undefined8 *)((long)local_50 + lVar1) = 0x13af45;
        cVar3 = FUN_0013a9ab(pcVar7,0);
        if (cVar3 == '\0') {
          bVar2 = false;
          goto LAB_0013af56;
        }
      }
      *pcVar6 = '/';
    }
    pcVar6 = pcVar6 + 1;
  } while( true );
}


PUSH RBP
MOV RBP,RSP
PUSH R15
PUSH R14
PUSH R13
PUSH R12
PUSH RBX
SUB RSP,0x18
MOV RSI,RDI
MOV RAX,qword ptr FS:[0x28]
MOV qword ptr [RBP + -0x38],RAX
XOR EAX,EAX
MOV RCX,-0x1
SCASB.REPNE RDI
MOV RAX,RCX
NOT RAX
ADD RAX,0x17
AND RAX,-0x10
SUB RSP,RAX
LEA RBX,[RSP + 0xf]
AND RBX,-0x10
MOV R13,RBX
MOV RDI,RBX
CALL 0x0010ca90
CMP byte ptr [RBX],0x2f
SETZ AL
MOVZX EAX,AL
ADD RBX,RAX
MOV R14D,0x1
JMP 0x0013af21
ADD RBX,0x1
MOV R12,RBX
MOVZX EAX,byte ptr [RBX]
TEST AL,AL
JZ 0x0013af2f
CMP AL,0x2f
JNZ 0x0013af1d
TEST AL,AL
JZ 0x0013af6a
MOV byte ptr [R12],0x0
MOV ESI,0x0
MOV RDI,R13
CALL 0x0013a9ab
TEST AL,AL
JZ 0x0013af50
MOV byte ptr [R12],0x2f
JMP 0x0013af1d
MOV R15D,0x0
MOV ESI,0x1ff
MOV RDI,R13
CALL 0x0010ce40
TEST R15D,R15D
JNZ 0x0013af80
JMP 0x0013af49
MOV ESI,0x0
MOV RDI,R13
CALL 0x0013a9ab
TEST AL,AL
JZ 0x0013af9e
MOV EAX,0x0
MOV RDX,qword ptr [RBP + -0x38]
XOR RDX,qword ptr FS:[0x28]
JNZ 0x0013afa3
LEA RSP,[RBP + -0x28]
POP RBX
POP R12
POP R13
POP R14
POP R15
POP RBP
RET
MOV R15D,R14D
JMP 0x0013af56
CALL 0x0010ca20
(translation_unit "int FUN_0013aeb8(char *param_1)\n\n{\n  long lVar1;\n  bool bVar2;\n  char cVar3;\n  int iVar4;\n  ulong uVar5;\n  char *pcVar6;\n  char *pcVar7;\n  long in_FS_OFFSET;\n  undefined8 local_50 [2];\n  long local_40 [2];\n  \n  local_40[0] = *(long *)(in_FS_OFFSET + 0x28);\n  uVar5 = 0xffffffffffffffff;\n  pcVar7 = param_1;\n  do {\n    if (uVar5 == 0) break;\n    uVar5 = uVar5 - 1;\n    cVar3 = *pcVar7;\n    pcVar7 = pcVar7 + 1;\n  } while (cVar3 != '\0');\n  lVar1 = -(~uVar5 + 0x17 & 0xfffffffffffffff0);\n  pcVar7 = (char *)((long)local_40 + lVar1);\n  *(undefined8 *)((long)local_50 + lVar1) = 0x13af09;\n  strcpy(pcVar7,param_1);\n  pcVar6 = pcVar7 + (*pcVar7 == '/');\n  do {\n    cVar3 = *pcVar6;\n    if ((cVar3 == '\0') || (cVar3 == '/')) {\n      if (cVar3 == '\0') {\n        *(undefined8 *)((long)local_50 + lVar1) = 0x13af77;\n        cVar3 = FUN_0013a9ab(pcVar7,0);\n        if (cVar3 != '\0') {\n          iVar4 = 0;\nLAB_0013af80:\n          if (local_40[0] != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n            *(code **)((long)local_50 + lVar1) = FUN_0013afa8;\n            __stack_chk_fail();\n          }\n          return iVar4;\n        }\n        bVar2 = true;\nLAB_0013af56:\n        *(undefined8 *)((long)local_50 + lVar1) = 0x13af63;\n        iVar4 = mkdir(pcVar7,0x1ff);\n        if (bVar2) goto LAB_0013af80;\n      }\n      else {\n        *pcVar6 = '\0';\n        *(undefined8 *)((long)local_50 + lVar1) = 0x13af45;\n        cVar3 = FUN_0013a9ab(pcVar7,0);\n        if (cVar3 == '\0') {\n          bVar2 = false;\n          goto LAB_0013af56;\n        }\n      }\n      *pcVar6 = '/';\n    }\n    pcVar6 = pcVar6 + 1;\n  } while( true );\n}\n\n" (function_definition "int FUN_0013aeb8(char *param_1)\n\n{\n  long lVar1;\n  bool bVar2;\n  char cVar3;\n  int iVar4;\n  ulong uVar5;\n  char *pcVar6;\n  char *pcVar7;\n  long in_FS_OFFSET;\n  undefined8 local_50 [2];\n  long local_40 [2];\n  \n  local_40[0] = *(long *)(in_FS_OFFSET + 0x28);\n  uVar5 = 0xffffffffffffffff;\n  pcVar7 = param_1;\n  do {\n    if (uVar5 == 0) break;\n    uVar5 = uVar5 - 1;\n    cVar3 = *pcVar7;\n    pcVar7 = pcVar7 + 1;\n  } while (cVar3 != '\0');\n  lVar1 = -(~uVar5 + 0x17 & 0xfffffffffffffff0);\n  pcVar7 = (char *)((long)local_40 + lVar1);\n  *(undefined8 *)((long)local_50 + lVar1) = 0x13af09;\n  strcpy(pcVar7,param_1);\n  pcVar6 = pcVar7 + (*pcVar7 == '/');\n  do {\n    cVar3 = *pcVar6;\n    if ((cVar3 == '\0') || (cVar3 == '/')) {\n      if (cVar3 == '\0') {\n        *(undefined8 *)((long)local_50 + lVar1) = 0x13af77;\n        cVar3 = FUN_0013a9ab(pcVar7,0);\n        if (cVar3 != '\0') {\n          iVar4 = 0;\nLAB_0013af80:\n          if (local_40[0] != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n            *(code **)((long)local_50 + lVar1) = FUN_0013afa8;\n            __stack_chk_fail();\n          }\n          return iVar4;\n        }\n        bVar2 = true;\nLAB_0013af56:\n        *(undefined8 *)((long)local_50 + lVar1) = 0x13af63;\n        iVar4 = mkdir(pcVar7,0x1ff);\n        if (bVar2) goto LAB_0013af80;\n      }\n      else {\n        *pcVar6 = '\0';\n        *(undefined8 *)((long)local_50 + lVar1) = 0x13af45;\n        cVar3 = FUN_0013a9ab(pcVar7,0);\n        if (cVar3 == '\0') {\n          bVar2 = false;\n          goto LAB_0013af56;\n        }\n      }\n      *pcVar6 = '/';\n    }\n    pcVar6 = pcVar6 + 1;\n  } while( true );\n}" primitive_type (function_declarator "FUN_0013aeb8(char *param_1)" identifier (parameter_list "(char *param_1)" ( (parameter_declaration "char *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  long lVar1;\n  bool bVar2;\n  char cVar3;\n  int iVar4;\n  ulong uVar5;\n  char *pcVar6;\n  char *pcVar7;\n  long in_FS_OFFSET;\n  undefined8 local_50 [2];\n  long local_40 [2];\n  \n  local_40[0] = *(long *)(in_FS_OFFSET + 0x28);\n  uVar5 = 0xffffffffffffffff;\n  pcVar7 = param_1;\n  do {\n    if (uVar5 == 0) break;\n    uVar5 = uVar5 - 1;\n    cVar3 = *pcVar7;\n    pcVar7 = pcVar7 + 1;\n  } while (cVar3 != '\0');\n  lVar1 = -(~uVar5 + 0x17 & 0xfffffffffffffff0);\n  pcVar7 = (char *)((long)local_40 + lVar1);\n  *(undefined8 *)((long)local_50 + lVar1) = 0x13af09;\n  strcpy(pcVar7,param_1);\n  pcVar6 = pcVar7 + (*pcVar7 == '/');\n  do {\n    cVar3 = *pcVar6;\n    if ((cVar3 == '\0') || (cVar3 == '/')) {\n      if (cVar3 == '\0') {\n        *(undefined8 *)((long)local_50 + lVar1) = 0x13af77;\n        cVar3 = FUN_0013a9ab(pcVar7,0);\n        if (cVar3 != '\0') {\n          iVar4 = 0;\nLAB_0013af80:\n          if (local_40[0] != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n            *(code **)((long)local_50 + lVar1) = FUN_0013afa8;\n            __stack_chk_fail();\n          }\n          return iVar4;\n        }\n        bVar2 = true;\nLAB_0013af56:\n        *(undefined8 *)((long)local_50 + lVar1) = 0x13af63;\n        iVar4 = mkdir(pcVar7,0x1ff);\n        if (bVar2) goto LAB_0013af80;\n      }\n      else {\n        *pcVar6 = '\0';\n        *(undefined8 *)((long)local_50 + lVar1) = 0x13af45;\n        cVar3 = FUN_0013a9ab(pcVar7,0);\n        if (cVar3 == '\0') {\n          bVar2 = false;\n          goto LAB_0013af56;\n        }\n      }\n      *pcVar6 = '/';\n    }\n    pcVar6 = pcVar6 + 1;\n  } while( true );\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "char cVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "ulong uVar5;" type_identifier identifier ;) (declaration "char *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (declaration "char *pcVar7;" primitive_type (pointer_declarator "*pcVar7" * identifier) ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 local_50 [2];" type_identifier (array_declarator "local_50 [2]" identifier [ number_literal ]) ;) (declaration "long local_40 [2];" (sized_type_specifier "long" long) (array_declarator "local_40 [2]" identifier [ number_literal ]) ;) (expression_statement "local_40[0] = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_40[0] = *(long *)(in_FS_OFFSET + 0x28)" (subscript_expression "local_40[0]" identifier [ number_literal ]) = (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) ;) (expression_statement "uVar5 = 0xffffffffffffffff;" (assignment_expression "uVar5 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar7 = param_1;" (assignment_expression "pcVar7 = param_1" identifier = identifier) ;) (do_statement "do {\n    if (uVar5 == 0) break;\n    uVar5 = uVar5 - 1;\n    cVar3 = *pcVar7;\n    pcVar7 = pcVar7 + 1;\n  } while (cVar3 != '\0');" do (compound_statement "{\n    if (uVar5 == 0) break;\n    uVar5 = uVar5 - 1;\n    cVar3 = *pcVar7;\n    pcVar7 = pcVar7 + 1;\n  }" { (if_statement "if (uVar5 == 0) break;" if (parenthesized_expression "(uVar5 == 0)" ( (binary_expression "uVar5 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar5 = uVar5 - 1;" (assignment_expression "uVar5 = uVar5 - 1" identifier = (binary_expression "uVar5 - 1" identifier - number_literal)) ;) (expression_statement "cVar3 = *pcVar7;" (assignment_expression "cVar3 = *pcVar7" identifier = (pointer_expression "*pcVar7" * identifier)) ;) (expression_statement "pcVar7 = pcVar7 + 1;" (assignment_expression "pcVar7 = pcVar7 + 1" identifier = (binary_expression "pcVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(cVar3 != '\0')" ( (binary_expression "cVar3 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "lVar1 = -(~uVar5 + 0x17 & 0xfffffffffffffff0);" (assignment_expression "lVar1 = -(~uVar5 + 0x17 & 0xfffffffffffffff0)" identifier = (unary_expression "-(~uVar5 + 0x17 & 0xfffffffffffffff0)" - (parenthesized_expression "(~uVar5 + 0x17 & 0xfffffffffffffff0)" ( (binary_expression "~uVar5 + 0x17 & 0xfffffffffffffff0" (binary_expression "~uVar5 + 0x17" (unary_expression "~uVar5" ~ identifier) + number_literal) & number_literal) )))) ;) (expression_statement "pcVar7 = (char *)((long)local_40 + lVar1);" (assignment_expression "pcVar7 = (char *)((long)local_40 + lVar1)" identifier = (cast_expression "(char *)((long)local_40 + lVar1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)local_40 + lVar1)" ( (binary_expression "(long)local_40 + lVar1" (cast_expression "(long)local_40" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) ;) (expression_statement "*(undefined8 *)((long)local_50 + lVar1) = 0x13af09;" (assignment_expression "*(undefined8 *)((long)local_50 + lVar1) = 0x13af09" (pointer_expression "*(undefined8 *)((long)local_50 + lVar1)" * (cast_expression "(undefined8 *)((long)local_50 + lVar1)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)local_50 + lVar1)" ( (binary_expression "(long)local_50 + lVar1" (cast_expression "(long)local_50" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "strcpy(pcVar7,param_1);" (call_expression "strcpy(pcVar7,param_1)" identifier (argument_list "(pcVar7,param_1)" ( identifier , identifier ))) ;) (expression_statement "pcVar6 = pcVar7 + (*pcVar7 == '/');" (assignment_expression "pcVar6 = pcVar7 + (*pcVar7 == '/')" identifier = (binary_expression "pcVar7 + (*pcVar7 == '/')" identifier + (parenthesized_expression "(*pcVar7 == '/')" ( (binary_expression "*pcVar7 == '/'" (pointer_expression "*pcVar7" * identifier) == (char_literal "'/'" ' character ')) )))) ;) (do_statement "do {\n    cVar3 = *pcVar6;\n    if ((cVar3 == '\0') || (cVar3 == '/')) {\n      if (cVar3 == '\0') {\n        *(undefined8 *)((long)local_50 + lVar1) = 0x13af77;\n        cVar3 = FUN_0013a9ab(pcVar7,0);\n        if (cVar3 != '\0') {\n          iVar4 = 0;\nLAB_0013af80:\n          if (local_40[0] != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n            *(code **)((long)local_50 + lVar1) = FUN_0013afa8;\n            __stack_chk_fail();\n          }\n          return iVar4;\n        }\n        bVar2 = true;\nLAB_0013af56:\n        *(undefined8 *)((long)local_50 + lVar1) = 0x13af63;\n        iVar4 = mkdir(pcVar7,0x1ff);\n        if (bVar2) goto LAB_0013af80;\n      }\n      else {\n        *pcVar6 = '\0';\n        *(undefined8 *)((long)local_50 + lVar1) = 0x13af45;\n        cVar3 = FUN_0013a9ab(pcVar7,0);\n        if (cVar3 == '\0') {\n          bVar2 = false;\n          goto LAB_0013af56;\n        }\n      }\n      *pcVar6 = '/';\n    }\n    pcVar6 = pcVar6 + 1;\n  } while( true );" do (compound_statement "{\n    cVar3 = *pcVar6;\n    if ((cVar3 == '\0') || (cVar3 == '/')) {\n      if (cVar3 == '\0') {\n        *(undefined8 *)((long)local_50 + lVar1) = 0x13af77;\n        cVar3 = FUN_0013a9ab(pcVar7,0);\n        if (cVar3 != '\0') {\n          iVar4 = 0;\nLAB_0013af80:\n          if (local_40[0] != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n            *(code **)((long)local_50 + lVar1) = FUN_0013afa8;\n            __stack_chk_fail();\n          }\n          return iVar4;\n        }\n        bVar2 = true;\nLAB_0013af56:\n        *(undefined8 *)((long)local_50 + lVar1) = 0x13af63;\n        iVar4 = mkdir(pcVar7,0x1ff);\n        if (bVar2) goto LAB_0013af80;\n      }\n      else {\n        *pcVar6 = '\0';\n        *(undefined8 *)((long)local_50 + lVar1) = 0x13af45;\n        cVar3 = FUN_0013a9ab(pcVar7,0);\n        if (cVar3 == '\0') {\n          bVar2 = false;\n          goto LAB_0013af56;\n        }\n      }\n      *pcVar6 = '/';\n    }\n    pcVar6 = pcVar6 + 1;\n  }" { (expression_statement "cVar3 = *pcVar6;" (assignment_expression "cVar3 = *pcVar6" identifier = (pointer_expression "*pcVar6" * identifier)) ;) (if_statement "if ((cVar3 == '\0') || (cVar3 == '/')) {\n      if (cVar3 == '\0') {\n        *(undefined8 *)((long)local_50 + lVar1) = 0x13af77;\n        cVar3 = FUN_0013a9ab(pcVar7,0);\n        if (cVar3 != '\0') {\n          iVar4 = 0;\nLAB_0013af80:\n          if (local_40[0] != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n            *(code **)((long)local_50 + lVar1) = FUN_0013afa8;\n            __stack_chk_fail();\n          }\n          return iVar4;\n        }\n        bVar2 = true;\nLAB_0013af56:\n        *(undefined8 *)((long)local_50 + lVar1) = 0x13af63;\n        iVar4 = mkdir(pcVar7,0x1ff);\n        if (bVar2) goto LAB_0013af80;\n      }\n      else {\n        *pcVar6 = '\0';\n        *(undefined8 *)((long)local_50 + lVar1) = 0x13af45;\n        cVar3 = FUN_0013a9ab(pcVar7,0);\n        if (cVar3 == '\0') {\n          bVar2 = false;\n          goto LAB_0013af56;\n        }\n      }\n      *pcVar6 = '/';\n    }" if (parenthesized_expression "((cVar3 == '\0') || (cVar3 == '/'))" ( (binary_expression "(cVar3 == '\0') || (cVar3 == '/')" (parenthesized_expression "(cVar3 == '\0')" ( (binary_expression "cVar3 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) || (parenthesized_expression "(cVar3 == '/')" ( (binary_expression "cVar3 == '/'" identifier == (char_literal "'/'" ' character ')) ))) )) (compound_statement "{\n      if (cVar3 == '\0') {\n        *(undefined8 *)((long)local_50 + lVar1) = 0x13af77;\n        cVar3 = FUN_0013a9ab(pcVar7,0);\n        if (cVar3 != '\0') {\n          iVar4 = 0;\nLAB_0013af80:\n          if (local_40[0] != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n            *(code **)((long)local_50 + lVar1) = FUN_0013afa8;\n            __stack_chk_fail();\n          }\n          return iVar4;\n        }\n        bVar2 = true;\nLAB_0013af56:\n        *(undefined8 *)((long)local_50 + lVar1) = 0x13af63;\n        iVar4 = mkdir(pcVar7,0x1ff);\n        if (bVar2) goto LAB_0013af80;\n      }\n      else {\n        *pcVar6 = '\0';\n        *(undefined8 *)((long)local_50 + lVar1) = 0x13af45;\n        cVar3 = FUN_0013a9ab(pcVar7,0);\n        if (cVar3 == '\0') {\n          bVar2 = false;\n          goto LAB_0013af56;\n        }\n      }\n      *pcVar6 = '/';\n    }" { (if_statement "if (cVar3 == '\0') {\n        *(undefined8 *)((long)local_50 + lVar1) = 0x13af77;\n        cVar3 = FUN_0013a9ab(pcVar7,0);\n        if (cVar3 != '\0') {\n          iVar4 = 0;\nLAB_0013af80:\n          if (local_40[0] != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n            *(code **)((long)local_50 + lVar1) = FUN_0013afa8;\n            __stack_chk_fail();\n          }\n          return iVar4;\n        }\n        bVar2 = true;\nLAB_0013af56:\n        *(undefined8 *)((long)local_50 + lVar1) = 0x13af63;\n        iVar4 = mkdir(pcVar7,0x1ff);\n        if (bVar2) goto LAB_0013af80;\n      }\n      else {\n        *pcVar6 = '\0';\n        *(undefined8 *)((long)local_50 + lVar1) = 0x13af45;\n        cVar3 = FUN_0013a9ab(pcVar7,0);\n        if (cVar3 == '\0') {\n          bVar2 = false;\n          goto LAB_0013af56;\n        }\n      }" if (parenthesized_expression "(cVar3 == '\0')" ( (binary_expression "cVar3 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        *(undefined8 *)((long)local_50 + lVar1) = 0x13af77;\n        cVar3 = FUN_0013a9ab(pcVar7,0);\n        if (cVar3 != '\0') {\n          iVar4 = 0;\nLAB_0013af80:\n          if (local_40[0] != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n            *(code **)((long)local_50 + lVar1) = FUN_0013afa8;\n            __stack_chk_fail();\n          }\n          return iVar4;\n        }\n        bVar2 = true;\nLAB_0013af56:\n        *(undefined8 *)((long)local_50 + lVar1) = 0x13af63;\n        iVar4 = mkdir(pcVar7,0x1ff);\n        if (bVar2) goto LAB_0013af80;\n      }" { (expression_statement "*(undefined8 *)((long)local_50 + lVar1) = 0x13af77;" (assignment_expression "*(undefined8 *)((long)local_50 + lVar1) = 0x13af77" (pointer_expression "*(undefined8 *)((long)local_50 + lVar1)" * (cast_expression "(undefined8 *)((long)local_50 + lVar1)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)local_50 + lVar1)" ( (binary_expression "(long)local_50 + lVar1" (cast_expression "(long)local_50" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "cVar3 = FUN_0013a9ab(pcVar7,0);" (assignment_expression "cVar3 = FUN_0013a9ab(pcVar7,0)" identifier = (call_expression "FUN_0013a9ab(pcVar7,0)" identifier (argument_list "(pcVar7,0)" ( identifier , number_literal )))) ;) (if_statement "if (cVar3 != '\0') {\n          iVar4 = 0;\nLAB_0013af80:\n          if (local_40[0] != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n            *(code **)((long)local_50 + lVar1) = FUN_0013afa8;\n            __stack_chk_fail();\n          }\n          return iVar4;\n        }" if (parenthesized_expression "(cVar3 != '\0')" ( (binary_expression "cVar3 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          iVar4 = 0;\nLAB_0013af80:\n          if (local_40[0] != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n            *(code **)((long)local_50 + lVar1) = FUN_0013afa8;\n            __stack_chk_fail();\n          }\n          return iVar4;\n        }" { (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (labeled_statement "LAB_0013af80:\n          if (local_40[0] != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n            *(code **)((long)local_50 + lVar1) = FUN_0013afa8;\n            __stack_chk_fail();\n          }" statement_identifier : (if_statement "if (local_40[0] != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n            *(code **)((long)local_50 + lVar1) = FUN_0013afa8;\n            __stack_chk_fail();\n          }" if (parenthesized_expression "(local_40[0] != *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "local_40[0] != *(long *)(in_FS_OFFSET + 0x28)" (subscript_expression "local_40[0]" identifier [ number_literal ]) != (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n            *(code **)((long)local_50 + lVar1) = FUN_0013afa8;\n            __stack_chk_fail();\n          }" { comment (expression_statement "*(code **)((long)local_50 + lVar1) = FUN_0013afa8;" (assignment_expression "*(code **)((long)local_50 + lVar1) = FUN_0013afa8" (pointer_expression "*(code **)((long)local_50 + lVar1)" * (cast_expression "(code **)((long)local_50 + lVar1)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((long)local_50 + lVar1)" ( (binary_expression "(long)local_50 + lVar1" (cast_expression "(long)local_50" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) = identifier) ;) (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return iVar4;" return identifier ;) })) (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" identifier = true) ;) (labeled_statement "LAB_0013af56:\n        *(undefined8 *)((long)local_50 + lVar1) = 0x13af63;" statement_identifier : (expression_statement "*(undefined8 *)((long)local_50 + lVar1) = 0x13af63;" (assignment_expression "*(undefined8 *)((long)local_50 + lVar1) = 0x13af63" (pointer_expression "*(undefined8 *)((long)local_50 + lVar1)" * (cast_expression "(undefined8 *)((long)local_50 + lVar1)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)local_50 + lVar1)" ( (binary_expression "(long)local_50 + lVar1" (cast_expression "(long)local_50" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) = number_literal) ;)) (expression_statement "iVar4 = mkdir(pcVar7,0x1ff);" (assignment_expression "iVar4 = mkdir(pcVar7,0x1ff)" identifier = (call_expression "mkdir(pcVar7,0x1ff)" identifier (argument_list "(pcVar7,0x1ff)" ( identifier , number_literal )))) ;) (if_statement "if (bVar2) goto LAB_0013af80;" if (parenthesized_expression "(bVar2)" ( identifier )) (goto_statement "goto LAB_0013af80;" goto statement_identifier ;)) }) (else_clause "else {\n        *pcVar6 = '\0';\n        *(undefined8 *)((long)local_50 + lVar1) = 0x13af45;\n        cVar3 = FUN_0013a9ab(pcVar7,0);\n        if (cVar3 == '\0') {\n          bVar2 = false;\n          goto LAB_0013af56;\n        }\n      }" else (compound_statement "{\n        *pcVar6 = '\0';\n        *(undefined8 *)((long)local_50 + lVar1) = 0x13af45;\n        cVar3 = FUN_0013a9ab(pcVar7,0);\n        if (cVar3 == '\0') {\n          bVar2 = false;\n          goto LAB_0013af56;\n        }\n      }" { (expression_statement "*pcVar6 = '\0';" (assignment_expression "*pcVar6 = '\0'" (pointer_expression "*pcVar6" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "*(undefined8 *)((long)local_50 + lVar1) = 0x13af45;" (assignment_expression "*(undefined8 *)((long)local_50 + lVar1) = 0x13af45" (pointer_expression "*(undefined8 *)((long)local_50 + lVar1)" * (cast_expression "(undefined8 *)((long)local_50 + lVar1)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)local_50 + lVar1)" ( (binary_expression "(long)local_50 + lVar1" (cast_expression "(long)local_50" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "cVar3 = FUN_0013a9ab(pcVar7,0);" (assignment_expression "cVar3 = FUN_0013a9ab(pcVar7,0)" identifier = (call_expression "FUN_0013a9ab(pcVar7,0)" identifier (argument_list "(pcVar7,0)" ( identifier , number_literal )))) ;) (if_statement "if (cVar3 == '\0') {\n          bVar2 = false;\n          goto LAB_0013af56;\n        }" if (parenthesized_expression "(cVar3 == '\0')" ( (binary_expression "cVar3 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          bVar2 = false;\n          goto LAB_0013af56;\n        }" { (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" identifier = false) ;) (goto_statement "goto LAB_0013af56;" goto statement_identifier ;) })) }))) (expression_statement "*pcVar6 = '/';" (assignment_expression "*pcVar6 = '/'" (pointer_expression "*pcVar6" * identifier) = (char_literal "'/'" ' character ')) ;) })) (expression_statement "pcVar6 = pcVar6 + 1;" (assignment_expression "pcVar6 = pcVar6 + 1" identifier = (binary_expression "pcVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "int make_directory(char *directory)\n\n{\n  char cVar1;\n  long lVar2;\n  bool bVar3;\n  _Bool _Var4;\n  int iVar5;\n  ulong uVar6;\n  char *pcVar7;\n  char *pcVar8;\n  long in_FS_OFFSET;\n  undefined8 local_50 [2];\n  long local_40 [2];\n  \n  local_40[0] = *(long *)(in_FS_OFFSET + 0x28);\n  uVar6 = 0xffffffffffffffff;\n  pcVar8 = directory;\n  do {\n    if (uVar6 == 0) break;\n    uVar6 = uVar6 - 1;\n    cVar1 = *pcVar8;\n    pcVar8 = pcVar8 + 1;\n  } while (cVar1 != '\0');\n  lVar2 = -(~uVar6 + 0x17 & 0xfffffffffffffff0);\n  pcVar8 = (char *)((long)local_40 + lVar2);\n  *(undefined8 *)((long)local_50 + lVar2) = 0x13af09;\n  strcpy(pcVar8,directory);\n  pcVar7 = pcVar8 + (*pcVar8 == '/');\n  do {\n    cVar1 = *pcVar7;\n    if ((cVar1 == '\0') || (cVar1 == '/')) {\n      if (cVar1 == '\0') {\n        *(undefined8 *)((long)local_50 + lVar2) = 0x13af77;\n        _Var4 = file_exists_p(pcVar8,(file_stats_t *)0x0);\n        if (_Var4) {\n          iVar5 = 0;\nLAB_0013af80:\n          if (local_40[0] != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n            *(code **)((long)local_50 + lVar2) = file_merge;\n            __stack_chk_fail();\n          }\n          return iVar5;\n        }\n        bVar3 = true;\nLAB_0013af56:\n        *(undefined8 *)((long)local_50 + lVar2) = 0x13af63;\n        iVar5 = mkdir(pcVar8,0x1ff);\n        if (bVar3) goto LAB_0013af80;\n      }\n      else {\n        *pcVar7 = '\0';\n        *(undefined8 *)((long)local_50 + lVar2) = 0x13af45;\n        _Var4 = file_exists_p(pcVar8,(file_stats_t *)0x0);\n        if (!_Var4) {\n          bVar3 = false;\n          goto LAB_0013af56;\n        }\n      }\n      *pcVar7 = '/';\n    }\n    pcVar7 = pcVar7 + 1;\n  } while( true );\n}\n\n" (function_definition "int make_directory(char *directory)\n\n{\n  char cVar1;\n  long lVar2;\n  bool bVar3;\n  _Bool _Var4;\n  int iVar5;\n  ulong uVar6;\n  char *pcVar7;\n  char *pcVar8;\n  long in_FS_OFFSET;\n  undefined8 local_50 [2];\n  long local_40 [2];\n  \n  local_40[0] = *(long *)(in_FS_OFFSET + 0x28);\n  uVar6 = 0xffffffffffffffff;\n  pcVar8 = directory;\n  do {\n    if (uVar6 == 0) break;\n    uVar6 = uVar6 - 1;\n    cVar1 = *pcVar8;\n    pcVar8 = pcVar8 + 1;\n  } while (cVar1 != '\0');\n  lVar2 = -(~uVar6 + 0x17 & 0xfffffffffffffff0);\n  pcVar8 = (char *)((long)local_40 + lVar2);\n  *(undefined8 *)((long)local_50 + lVar2) = 0x13af09;\n  strcpy(pcVar8,directory);\n  pcVar7 = pcVar8 + (*pcVar8 == '/');\n  do {\n    cVar1 = *pcVar7;\n    if ((cVar1 == '\0') || (cVar1 == '/')) {\n      if (cVar1 == '\0') {\n        *(undefined8 *)((long)local_50 + lVar2) = 0x13af77;\n        _Var4 = file_exists_p(pcVar8,(file_stats_t *)0x0);\n        if (_Var4) {\n          iVar5 = 0;\nLAB_0013af80:\n          if (local_40[0] != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n            *(code **)((long)local_50 + lVar2) = file_merge;\n            __stack_chk_fail();\n          }\n          return iVar5;\n        }\n        bVar3 = true;\nLAB_0013af56:\n        *(undefined8 *)((long)local_50 + lVar2) = 0x13af63;\n        iVar5 = mkdir(pcVar8,0x1ff);\n        if (bVar3) goto LAB_0013af80;\n      }\n      else {\n        *pcVar7 = '\0';\n        *(undefined8 *)((long)local_50 + lVar2) = 0x13af45;\n        _Var4 = file_exists_p(pcVar8,(file_stats_t *)0x0);\n        if (!_Var4) {\n          bVar3 = false;\n          goto LAB_0013af56;\n        }\n      }\n      *pcVar7 = '/';\n    }\n    pcVar7 = pcVar7 + 1;\n  } while( true );\n}" primitive_type (function_declarator "make_directory(char *directory)" identifier (parameter_list "(char *directory)" ( (parameter_declaration "char *directory" primitive_type (pointer_declarator "*directory" * identifier)) ))) (compound_statement "{\n  char cVar1;\n  long lVar2;\n  bool bVar3;\n  _Bool _Var4;\n  int iVar5;\n  ulong uVar6;\n  char *pcVar7;\n  char *pcVar8;\n  long in_FS_OFFSET;\n  undefined8 local_50 [2];\n  long local_40 [2];\n  \n  local_40[0] = *(long *)(in_FS_OFFSET + 0x28);\n  uVar6 = 0xffffffffffffffff;\n  pcVar8 = directory;\n  do {\n    if (uVar6 == 0) break;\n    uVar6 = uVar6 - 1;\n    cVar1 = *pcVar8;\n    pcVar8 = pcVar8 + 1;\n  } while (cVar1 != '\0');\n  lVar2 = -(~uVar6 + 0x17 & 0xfffffffffffffff0);\n  pcVar8 = (char *)((long)local_40 + lVar2);\n  *(undefined8 *)((long)local_50 + lVar2) = 0x13af09;\n  strcpy(pcVar8,directory);\n  pcVar7 = pcVar8 + (*pcVar8 == '/');\n  do {\n    cVar1 = *pcVar7;\n    if ((cVar1 == '\0') || (cVar1 == '/')) {\n      if (cVar1 == '\0') {\n        *(undefined8 *)((long)local_50 + lVar2) = 0x13af77;\n        _Var4 = file_exists_p(pcVar8,(file_stats_t *)0x0);\n        if (_Var4) {\n          iVar5 = 0;\nLAB_0013af80:\n          if (local_40[0] != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n            *(code **)((long)local_50 + lVar2) = file_merge;\n            __stack_chk_fail();\n          }\n          return iVar5;\n        }\n        bVar3 = true;\nLAB_0013af56:\n        *(undefined8 *)((long)local_50 + lVar2) = 0x13af63;\n        iVar5 = mkdir(pcVar8,0x1ff);\n        if (bVar3) goto LAB_0013af80;\n      }\n      else {\n        *pcVar7 = '\0';\n        *(undefined8 *)((long)local_50 + lVar2) = 0x13af45;\n        _Var4 = file_exists_p(pcVar8,(file_stats_t *)0x0);\n        if (!_Var4) {\n          bVar3 = false;\n          goto LAB_0013af56;\n        }\n      }\n      *pcVar7 = '/';\n    }\n    pcVar7 = pcVar7 + 1;\n  } while( true );\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "bool bVar3;" primitive_type identifier ;) (declaration "_Bool _Var4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "ulong uVar6;" type_identifier identifier ;) (declaration "char *pcVar7;" primitive_type (pointer_declarator "*pcVar7" * identifier) ;) (declaration "char *pcVar8;" primitive_type (pointer_declarator "*pcVar8" * identifier) ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 local_50 [2];" type_identifier (array_declarator "local_50 [2]" identifier [ number_literal ]) ;) (declaration "long local_40 [2];" (sized_type_specifier "long" long) (array_declarator "local_40 [2]" identifier [ number_literal ]) ;) (expression_statement "local_40[0] = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_40[0] = *(long *)(in_FS_OFFSET + 0x28)" (subscript_expression "local_40[0]" identifier [ number_literal ]) = (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) ;) (expression_statement "uVar6 = 0xffffffffffffffff;" (assignment_expression "uVar6 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar8 = directory;" (assignment_expression "pcVar8 = directory" identifier = identifier) ;) (do_statement "do {\n    if (uVar6 == 0) break;\n    uVar6 = uVar6 - 1;\n    cVar1 = *pcVar8;\n    pcVar8 = pcVar8 + 1;\n  } while (cVar1 != '\0');" do (compound_statement "{\n    if (uVar6 == 0) break;\n    uVar6 = uVar6 - 1;\n    cVar1 = *pcVar8;\n    pcVar8 = pcVar8 + 1;\n  }" { (if_statement "if (uVar6 == 0) break;" if (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar6 = uVar6 - 1;" (assignment_expression "uVar6 = uVar6 - 1" identifier = (binary_expression "uVar6 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = *pcVar8;" (assignment_expression "cVar1 = *pcVar8" identifier = (pointer_expression "*pcVar8" * identifier)) ;) (expression_statement "pcVar8 = pcVar8 + 1;" (assignment_expression "pcVar8 = pcVar8 + 1" identifier = (binary_expression "pcVar8 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "lVar2 = -(~uVar6 + 0x17 & 0xfffffffffffffff0);" (assignment_expression "lVar2 = -(~uVar6 + 0x17 & 0xfffffffffffffff0)" identifier = (unary_expression "-(~uVar6 + 0x17 & 0xfffffffffffffff0)" - (parenthesized_expression "(~uVar6 + 0x17 & 0xfffffffffffffff0)" ( (binary_expression "~uVar6 + 0x17 & 0xfffffffffffffff0" (binary_expression "~uVar6 + 0x17" (unary_expression "~uVar6" ~ identifier) + number_literal) & number_literal) )))) ;) (expression_statement "pcVar8 = (char *)((long)local_40 + lVar2);" (assignment_expression "pcVar8 = (char *)((long)local_40 + lVar2)" identifier = (cast_expression "(char *)((long)local_40 + lVar2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)local_40 + lVar2)" ( (binary_expression "(long)local_40 + lVar2" (cast_expression "(long)local_40" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) ;) (expression_statement "*(undefined8 *)((long)local_50 + lVar2) = 0x13af09;" (assignment_expression "*(undefined8 *)((long)local_50 + lVar2) = 0x13af09" (pointer_expression "*(undefined8 *)((long)local_50 + lVar2)" * (cast_expression "(undefined8 *)((long)local_50 + lVar2)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)local_50 + lVar2)" ( (binary_expression "(long)local_50 + lVar2" (cast_expression "(long)local_50" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "strcpy(pcVar8,directory);" (call_expression "strcpy(pcVar8,directory)" identifier (argument_list "(pcVar8,directory)" ( identifier , identifier ))) ;) (expression_statement "pcVar7 = pcVar8 + (*pcVar8 == '/');" (assignment_expression "pcVar7 = pcVar8 + (*pcVar8 == '/')" identifier = (binary_expression "pcVar8 + (*pcVar8 == '/')" identifier + (parenthesized_expression "(*pcVar8 == '/')" ( (binary_expression "*pcVar8 == '/'" (pointer_expression "*pcVar8" * identifier) == (char_literal "'/'" ' character ')) )))) ;) (do_statement "do {\n    cVar1 = *pcVar7;\n    if ((cVar1 == '\0') || (cVar1 == '/')) {\n      if (cVar1 == '\0') {\n        *(undefined8 *)((long)local_50 + lVar2) = 0x13af77;\n        _Var4 = file_exists_p(pcVar8,(file_stats_t *)0x0);\n        if (_Var4) {\n          iVar5 = 0;\nLAB_0013af80:\n          if (local_40[0] != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n            *(code **)((long)local_50 + lVar2) = file_merge;\n            __stack_chk_fail();\n          }\n          return iVar5;\n        }\n        bVar3 = true;\nLAB_0013af56:\n        *(undefined8 *)((long)local_50 + lVar2) = 0x13af63;\n        iVar5 = mkdir(pcVar8,0x1ff);\n        if (bVar3) goto LAB_0013af80;\n      }\n      else {\n        *pcVar7 = '\0';\n        *(undefined8 *)((long)local_50 + lVar2) = 0x13af45;\n        _Var4 = file_exists_p(pcVar8,(file_stats_t *)0x0);\n        if (!_Var4) {\n          bVar3 = false;\n          goto LAB_0013af56;\n        }\n      }\n      *pcVar7 = '/';\n    }\n    pcVar7 = pcVar7 + 1;\n  } while( true );" do (compound_statement "{\n    cVar1 = *pcVar7;\n    if ((cVar1 == '\0') || (cVar1 == '/')) {\n      if (cVar1 == '\0') {\n        *(undefined8 *)((long)local_50 + lVar2) = 0x13af77;\n        _Var4 = file_exists_p(pcVar8,(file_stats_t *)0x0);\n        if (_Var4) {\n          iVar5 = 0;\nLAB_0013af80:\n          if (local_40[0] != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n            *(code **)((long)local_50 + lVar2) = file_merge;\n            __stack_chk_fail();\n          }\n          return iVar5;\n        }\n        bVar3 = true;\nLAB_0013af56:\n        *(undefined8 *)((long)local_50 + lVar2) = 0x13af63;\n        iVar5 = mkdir(pcVar8,0x1ff);\n        if (bVar3) goto LAB_0013af80;\n      }\n      else {\n        *pcVar7 = '\0';\n        *(undefined8 *)((long)local_50 + lVar2) = 0x13af45;\n        _Var4 = file_exists_p(pcVar8,(file_stats_t *)0x0);\n        if (!_Var4) {\n          bVar3 = false;\n          goto LAB_0013af56;\n        }\n      }\n      *pcVar7 = '/';\n    }\n    pcVar7 = pcVar7 + 1;\n  }" { (expression_statement "cVar1 = *pcVar7;" (assignment_expression "cVar1 = *pcVar7" identifier = (pointer_expression "*pcVar7" * identifier)) ;) (if_statement "if ((cVar1 == '\0') || (cVar1 == '/')) {\n      if (cVar1 == '\0') {\n        *(undefined8 *)((long)local_50 + lVar2) = 0x13af77;\n        _Var4 = file_exists_p(pcVar8,(file_stats_t *)0x0);\n        if (_Var4) {\n          iVar5 = 0;\nLAB_0013af80:\n          if (local_40[0] != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n            *(code **)((long)local_50 + lVar2) = file_merge;\n            __stack_chk_fail();\n          }\n          return iVar5;\n        }\n        bVar3 = true;\nLAB_0013af56:\n        *(undefined8 *)((long)local_50 + lVar2) = 0x13af63;\n        iVar5 = mkdir(pcVar8,0x1ff);\n        if (bVar3) goto LAB_0013af80;\n      }\n      else {\n        *pcVar7 = '\0';\n        *(undefined8 *)((long)local_50 + lVar2) = 0x13af45;\n        _Var4 = file_exists_p(pcVar8,(file_stats_t *)0x0);\n        if (!_Var4) {\n          bVar3 = false;\n          goto LAB_0013af56;\n        }\n      }\n      *pcVar7 = '/';\n    }" if (parenthesized_expression "((cVar1 == '\0') || (cVar1 == '/'))" ( (binary_expression "(cVar1 == '\0') || (cVar1 == '/')" (parenthesized_expression "(cVar1 == '\0')" ( (binary_expression "cVar1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) || (parenthesized_expression "(cVar1 == '/')" ( (binary_expression "cVar1 == '/'" identifier == (char_literal "'/'" ' character ')) ))) )) (compound_statement "{\n      if (cVar1 == '\0') {\n        *(undefined8 *)((long)local_50 + lVar2) = 0x13af77;\n        _Var4 = file_exists_p(pcVar8,(file_stats_t *)0x0);\n        if (_Var4) {\n          iVar5 = 0;\nLAB_0013af80:\n          if (local_40[0] != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n            *(code **)((long)local_50 + lVar2) = file_merge;\n            __stack_chk_fail();\n          }\n          return iVar5;\n        }\n        bVar3 = true;\nLAB_0013af56:\n        *(undefined8 *)((long)local_50 + lVar2) = 0x13af63;\n        iVar5 = mkdir(pcVar8,0x1ff);\n        if (bVar3) goto LAB_0013af80;\n      }\n      else {\n        *pcVar7 = '\0';\n        *(undefined8 *)((long)local_50 + lVar2) = 0x13af45;\n        _Var4 = file_exists_p(pcVar8,(file_stats_t *)0x0);\n        if (!_Var4) {\n          bVar3 = false;\n          goto LAB_0013af56;\n        }\n      }\n      *pcVar7 = '/';\n    }" { (if_statement "if (cVar1 == '\0') {\n        *(undefined8 *)((long)local_50 + lVar2) = 0x13af77;\n        _Var4 = file_exists_p(pcVar8,(file_stats_t *)0x0);\n        if (_Var4) {\n          iVar5 = 0;\nLAB_0013af80:\n          if (local_40[0] != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n            *(code **)((long)local_50 + lVar2) = file_merge;\n            __stack_chk_fail();\n          }\n          return iVar5;\n        }\n        bVar3 = true;\nLAB_0013af56:\n        *(undefined8 *)((long)local_50 + lVar2) = 0x13af63;\n        iVar5 = mkdir(pcVar8,0x1ff);\n        if (bVar3) goto LAB_0013af80;\n      }\n      else {\n        *pcVar7 = '\0';\n        *(undefined8 *)((long)local_50 + lVar2) = 0x13af45;\n        _Var4 = file_exists_p(pcVar8,(file_stats_t *)0x0);\n        if (!_Var4) {\n          bVar3 = false;\n          goto LAB_0013af56;\n        }\n      }" if (parenthesized_expression "(cVar1 == '\0')" ( (binary_expression "cVar1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        *(undefined8 *)((long)local_50 + lVar2) = 0x13af77;\n        _Var4 = file_exists_p(pcVar8,(file_stats_t *)0x0);\n        if (_Var4) {\n          iVar5 = 0;\nLAB_0013af80:\n          if (local_40[0] != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n            *(code **)((long)local_50 + lVar2) = file_merge;\n            __stack_chk_fail();\n          }\n          return iVar5;\n        }\n        bVar3 = true;\nLAB_0013af56:\n        *(undefined8 *)((long)local_50 + lVar2) = 0x13af63;\n        iVar5 = mkdir(pcVar8,0x1ff);\n        if (bVar3) goto LAB_0013af80;\n      }" { (expression_statement "*(undefined8 *)((long)local_50 + lVar2) = 0x13af77;" (assignment_expression "*(undefined8 *)((long)local_50 + lVar2) = 0x13af77" (pointer_expression "*(undefined8 *)((long)local_50 + lVar2)" * (cast_expression "(undefined8 *)((long)local_50 + lVar2)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)local_50 + lVar2)" ( (binary_expression "(long)local_50 + lVar2" (cast_expression "(long)local_50" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "_Var4 = file_exists_p(pcVar8,(file_stats_t *)0x0);" (assignment_expression "_Var4 = file_exists_p(pcVar8,(file_stats_t *)0x0)" identifier = (call_expression "file_exists_p(pcVar8,(file_stats_t *)0x0)" identifier (argument_list "(pcVar8,(file_stats_t *)0x0)" ( identifier , (cast_expression "(file_stats_t *)0x0" ( (type_descriptor "file_stats_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) )))) ;) (if_statement "if (_Var4) {\n          iVar5 = 0;\nLAB_0013af80:\n          if (local_40[0] != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n            *(code **)((long)local_50 + lVar2) = file_merge;\n            __stack_chk_fail();\n          }\n          return iVar5;\n        }" if (parenthesized_expression "(_Var4)" ( identifier )) (compound_statement "{\n          iVar5 = 0;\nLAB_0013af80:\n          if (local_40[0] != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n            *(code **)((long)local_50 + lVar2) = file_merge;\n            __stack_chk_fail();\n          }\n          return iVar5;\n        }" { (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;) (labeled_statement "LAB_0013af80:\n          if (local_40[0] != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n            *(code **)((long)local_50 + lVar2) = file_merge;\n            __stack_chk_fail();\n          }" statement_identifier : (if_statement "if (local_40[0] != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n            *(code **)((long)local_50 + lVar2) = file_merge;\n            __stack_chk_fail();\n          }" if (parenthesized_expression "(local_40[0] != *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "local_40[0] != *(long *)(in_FS_OFFSET + 0x28)" (subscript_expression "local_40[0]" identifier [ number_literal ]) != (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n            *(code **)((long)local_50 + lVar2) = file_merge;\n            __stack_chk_fail();\n          }" { comment (expression_statement "*(code **)((long)local_50 + lVar2) = file_merge;" (assignment_expression "*(code **)((long)local_50 + lVar2) = file_merge" (pointer_expression "*(code **)((long)local_50 + lVar2)" * (cast_expression "(code **)((long)local_50 + lVar2)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((long)local_50 + lVar2)" ( (binary_expression "(long)local_50 + lVar2" (cast_expression "(long)local_50" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) = identifier) ;) (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return iVar5;" return identifier ;) })) (expression_statement "bVar3 = true;" (assignment_expression "bVar3 = true" identifier = true) ;) (labeled_statement "LAB_0013af56:\n        *(undefined8 *)((long)local_50 + lVar2) = 0x13af63;" statement_identifier : (expression_statement "*(undefined8 *)((long)local_50 + lVar2) = 0x13af63;" (assignment_expression "*(undefined8 *)((long)local_50 + lVar2) = 0x13af63" (pointer_expression "*(undefined8 *)((long)local_50 + lVar2)" * (cast_expression "(undefined8 *)((long)local_50 + lVar2)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)local_50 + lVar2)" ( (binary_expression "(long)local_50 + lVar2" (cast_expression "(long)local_50" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) = number_literal) ;)) (expression_statement "iVar5 = mkdir(pcVar8,0x1ff);" (assignment_expression "iVar5 = mkdir(pcVar8,0x1ff)" identifier = (call_expression "mkdir(pcVar8,0x1ff)" identifier (argument_list "(pcVar8,0x1ff)" ( identifier , number_literal )))) ;) (if_statement "if (bVar3) goto LAB_0013af80;" if (parenthesized_expression "(bVar3)" ( identifier )) (goto_statement "goto LAB_0013af80;" goto statement_identifier ;)) }) (else_clause "else {\n        *pcVar7 = '\0';\n        *(undefined8 *)((long)local_50 + lVar2) = 0x13af45;\n        _Var4 = file_exists_p(pcVar8,(file_stats_t *)0x0);\n        if (!_Var4) {\n          bVar3 = false;\n          goto LAB_0013af56;\n        }\n      }" else (compound_statement "{\n        *pcVar7 = '\0';\n        *(undefined8 *)((long)local_50 + lVar2) = 0x13af45;\n        _Var4 = file_exists_p(pcVar8,(file_stats_t *)0x0);\n        if (!_Var4) {\n          bVar3 = false;\n          goto LAB_0013af56;\n        }\n      }" { (expression_statement "*pcVar7 = '\0';" (assignment_expression "*pcVar7 = '\0'" (pointer_expression "*pcVar7" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "*(undefined8 *)((long)local_50 + lVar2) = 0x13af45;" (assignment_expression "*(undefined8 *)((long)local_50 + lVar2) = 0x13af45" (pointer_expression "*(undefined8 *)((long)local_50 + lVar2)" * (cast_expression "(undefined8 *)((long)local_50 + lVar2)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)local_50 + lVar2)" ( (binary_expression "(long)local_50 + lVar2" (cast_expression "(long)local_50" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "_Var4 = file_exists_p(pcVar8,(file_stats_t *)0x0);" (assignment_expression "_Var4 = file_exists_p(pcVar8,(file_stats_t *)0x0)" identifier = (call_expression "file_exists_p(pcVar8,(file_stats_t *)0x0)" identifier (argument_list "(pcVar8,(file_stats_t *)0x0)" ( identifier , (cast_expression "(file_stats_t *)0x0" ( (type_descriptor "file_stats_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) )))) ;) (if_statement "if (!_Var4) {\n          bVar3 = false;\n          goto LAB_0013af56;\n        }" if (parenthesized_expression "(!_Var4)" ( (unary_expression "!_Var4" ! identifier) )) (compound_statement "{\n          bVar3 = false;\n          goto LAB_0013af56;\n        }" { (expression_statement "bVar3 = false;" (assignment_expression "bVar3 = false" identifier = false) ;) (goto_statement "goto LAB_0013af56;" goto statement_identifier ;) })) }))) (expression_statement "*pcVar7 = '/';" (assignment_expression "*pcVar7 = '/'" (pointer_expression "*pcVar7" * identifier) = (char_literal "'/'" ' character ')) ;) })) (expression_statement "pcVar7 = pcVar7 + 1;" (assignment_expression "pcVar7 = pcVar7 + 1" identifier = (binary_expression "pcVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "int FUN_0013aeb8(char *param_1)\n\n{\n  long lVar1;\n  bool bVar2;\n  char cVar3;\n  int iVar4;\n  ulong uVar5;\n  char *pcVar6;\n  char *pcVar7;\n  long in_FS_OFFSET;\n  undefined8 local_50 [2];\n  long local_40 [2];\n  \n  local_40[0] = *(long *)(in_FS_OFFSET + 0x28);\n  uVar5 = 0xffffffffffffffff;\n  pcVar7 = param_1;\n  do {\n    if (uVar5 == 0) break;\n    uVar5 = uVar5 - 1;\n    cVar3 = *pcVar7;\n    pcVar7 = pcVar7 + 1;\n  } while (cVar3 != '\0');\n  lVar1 = -(~uVar5 + 0x17 & 0xfffffffffffffff0);\n  pcVar7 = (char *)((long)local_40 + lVar1);\n  *(undefined8 *)((long)local_50 + lVar1) = 0x13af09;\n  strcpy(pcVar7,param_1);\n  pcVar6 = pcVar7 + (*pcVar7 == '/');\n  do {\n    cVar3 = *pcVar6;\n    if ((cVar3 == '\0') || (cVar3 == '/')) {\n      if (cVar3 == '\0') {\n        *(undefined8 *)((long)local_50 + lVar1) = 0x13af77;\n        cVar3 = FUN_0013a9ab(pcVar7,0);\n        if (cVar3 != '\0') {\n          iVar4 = 0;\nLAB_0013af80:\n          if (local_40[0] != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n            *(code **)((long)local_50 + lVar1) = FUN_0013afa8;\n            __stack_chk_fail();\n          }\n          return iVar4;\n        }\n        bVar2 = true;\nLAB_0013af56:\n        *(undefined8 *)((long)local_50 + lVar1) = 0x13af63;\n        iVar4 = mkdir(pcVar7,0x1ff);\n        if (bVar2) goto LAB_0013af80;\n      }\n      else {\n        *pcVar6 = '\0';\n        *(undefined8 *)((long)local_50 + lVar1) = 0x13af45;\n        cVar3 = FUN_0013a9ab(pcVar7,0);\n        if (cVar3 == '\0') {\n          bVar2 = false;\n          goto LAB_0013af56;\n        }\n      }\n      *pcVar6 = '/';\n    }\n    pcVar6 = pcVar6 + 1;\n  } while( true );\n}\n\n" (function_definition "int FUN_0013aeb8(char *param_1)\n\n{\n  long lVar1;\n  bool bVar2;\n  char cVar3;\n  int iVar4;\n  ulong uVar5;\n  char *pcVar6;\n  char *pcVar7;\n  long in_FS_OFFSET;\n  undefined8 local_50 [2];\n  long local_40 [2];\n  \n  local_40[0] = *(long *)(in_FS_OFFSET + 0x28);\n  uVar5 = 0xffffffffffffffff;\n  pcVar7 = param_1;\n  do {\n    if (uVar5 == 0) break;\n    uVar5 = uVar5 - 1;\n    cVar3 = *pcVar7;\n    pcVar7 = pcVar7 + 1;\n  } while (cVar3 != '\0');\n  lVar1 = -(~uVar5 + 0x17 & 0xfffffffffffffff0);\n  pcVar7 = (char *)((long)local_40 + lVar1);\n  *(undefined8 *)((long)local_50 + lVar1) = 0x13af09;\n  strcpy(pcVar7,param_1);\n  pcVar6 = pcVar7 + (*pcVar7 == '/');\n  do {\n    cVar3 = *pcVar6;\n    if ((cVar3 == '\0') || (cVar3 == '/')) {\n      if (cVar3 == '\0') {\n        *(undefined8 *)((long)local_50 + lVar1) = 0x13af77;\n        cVar3 = FUN_0013a9ab(pcVar7,0);\n        if (cVar3 != '\0') {\n          iVar4 = 0;\nLAB_0013af80:\n          if (local_40[0] != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n            *(code **)((long)local_50 + lVar1) = FUN_0013afa8;\n            __stack_chk_fail();\n          }\n          return iVar4;\n        }\n        bVar2 = true;\nLAB_0013af56:\n        *(undefined8 *)((long)local_50 + lVar1) = 0x13af63;\n        iVar4 = mkdir(pcVar7,0x1ff);\n        if (bVar2) goto LAB_0013af80;\n      }\n      else {\n        *pcVar6 = '\0';\n        *(undefined8 *)((long)local_50 + lVar1) = 0x13af45;\n        cVar3 = FUN_0013a9ab(pcVar7,0);\n        if (cVar3 == '\0') {\n          bVar2 = false;\n          goto LAB_0013af56;\n        }\n      }\n      *pcVar6 = '/';\n    }\n    pcVar6 = pcVar6 + 1;\n  } while( true );\n}" primitive_type (function_declarator "FUN_0013aeb8(char *param_1)" identifier (parameter_list "(char *param_1)" ( (parameter_declaration "char *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  long lVar1;\n  bool bVar2;\n  char cVar3;\n  int iVar4;\n  ulong uVar5;\n  char *pcVar6;\n  char *pcVar7;\n  long in_FS_OFFSET;\n  undefined8 local_50 [2];\n  long local_40 [2];\n  \n  local_40[0] = *(long *)(in_FS_OFFSET + 0x28);\n  uVar5 = 0xffffffffffffffff;\n  pcVar7 = param_1;\n  do {\n    if (uVar5 == 0) break;\n    uVar5 = uVar5 - 1;\n    cVar3 = *pcVar7;\n    pcVar7 = pcVar7 + 1;\n  } while (cVar3 != '\0');\n  lVar1 = -(~uVar5 + 0x17 & 0xfffffffffffffff0);\n  pcVar7 = (char *)((long)local_40 + lVar1);\n  *(undefined8 *)((long)local_50 + lVar1) = 0x13af09;\n  strcpy(pcVar7,param_1);\n  pcVar6 = pcVar7 + (*pcVar7 == '/');\n  do {\n    cVar3 = *pcVar6;\n    if ((cVar3 == '\0') || (cVar3 == '/')) {\n      if (cVar3 == '\0') {\n        *(undefined8 *)((long)local_50 + lVar1) = 0x13af77;\n        cVar3 = FUN_0013a9ab(pcVar7,0);\n        if (cVar3 != '\0') {\n          iVar4 = 0;\nLAB_0013af80:\n          if (local_40[0] != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n            *(code **)((long)local_50 + lVar1) = FUN_0013afa8;\n            __stack_chk_fail();\n          }\n          return iVar4;\n        }\n        bVar2 = true;\nLAB_0013af56:\n        *(undefined8 *)((long)local_50 + lVar1) = 0x13af63;\n        iVar4 = mkdir(pcVar7,0x1ff);\n        if (bVar2) goto LAB_0013af80;\n      }\n      else {\n        *pcVar6 = '\0';\n        *(undefined8 *)((long)local_50 + lVar1) = 0x13af45;\n        cVar3 = FUN_0013a9ab(pcVar7,0);\n        if (cVar3 == '\0') {\n          bVar2 = false;\n          goto LAB_0013af56;\n        }\n      }\n      *pcVar6 = '/';\n    }\n    pcVar6 = pcVar6 + 1;\n  } while( true );\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "char cVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "ulong uVar5;" type_identifier identifier ;) (declaration "char *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (declaration "char *pcVar7;" primitive_type (pointer_declarator "*pcVar7" * identifier) ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 local_50 [2];" type_identifier (array_declarator "local_50 [2]" identifier [ number_literal ]) ;) (declaration "long local_40 [2];" (sized_type_specifier "long" long) (array_declarator "local_40 [2]" identifier [ number_literal ]) ;) (expression_statement "local_40[0] = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_40[0] = *(long *)(in_FS_OFFSET + 0x28)" (subscript_expression "local_40[0]" identifier [ number_literal ]) = (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) ;) (expression_statement "uVar5 = 0xffffffffffffffff;" (assignment_expression "uVar5 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar7 = param_1;" (assignment_expression "pcVar7 = param_1" identifier = identifier) ;) (do_statement "do {\n    if (uVar5 == 0) break;\n    uVar5 = uVar5 - 1;\n    cVar3 = *pcVar7;\n    pcVar7 = pcVar7 + 1;\n  } while (cVar3 != '\0');" do (compound_statement "{\n    if (uVar5 == 0) break;\n    uVar5 = uVar5 - 1;\n    cVar3 = *pcVar7;\n    pcVar7 = pcVar7 + 1;\n  }" { (if_statement "if (uVar5 == 0) break;" if (parenthesized_expression "(uVar5 == 0)" ( (binary_expression "uVar5 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar5 = uVar5 - 1;" (assignment_expression "uVar5 = uVar5 - 1" identifier = (binary_expression "uVar5 - 1" identifier - number_literal)) ;) (expression_statement "cVar3 = *pcVar7;" (assignment_expression "cVar3 = *pcVar7" identifier = (pointer_expression "*pcVar7" * identifier)) ;) (expression_statement "pcVar7 = pcVar7 + 1;" (assignment_expression "pcVar7 = pcVar7 + 1" identifier = (binary_expression "pcVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(cVar3 != '\0')" ( (binary_expression "cVar3 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "lVar1 = -(~uVar5 + 0x17 & 0xfffffffffffffff0);" (assignment_expression "lVar1 = -(~uVar5 + 0x17 & 0xfffffffffffffff0)" identifier = (unary_expression "-(~uVar5 + 0x17 & 0xfffffffffffffff0)" - (parenthesized_expression "(~uVar5 + 0x17 & 0xfffffffffffffff0)" ( (binary_expression "~uVar5 + 0x17 & 0xfffffffffffffff0" (binary_expression "~uVar5 + 0x17" (unary_expression "~uVar5" ~ identifier) + number_literal) & number_literal) )))) ;) (expression_statement "pcVar7 = (char *)((long)local_40 + lVar1);" (assignment_expression "pcVar7 = (char *)((long)local_40 + lVar1)" identifier = (cast_expression "(char *)((long)local_40 + lVar1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)local_40 + lVar1)" ( (binary_expression "(long)local_40 + lVar1" (cast_expression "(long)local_40" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) ;) (expression_statement "*(undefined8 *)((long)local_50 + lVar1) = 0x13af09;" (assignment_expression "*(undefined8 *)((long)local_50 + lVar1) = 0x13af09" (pointer_expression "*(undefined8 *)((long)local_50 + lVar1)" * (cast_expression "(undefined8 *)((long)local_50 + lVar1)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)local_50 + lVar1)" ( (binary_expression "(long)local_50 + lVar1" (cast_expression "(long)local_50" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "strcpy(pcVar7,param_1);" (call_expression "strcpy(pcVar7,param_1)" identifier (argument_list "(pcVar7,param_1)" ( identifier , identifier ))) ;) (expression_statement "pcVar6 = pcVar7 + (*pcVar7 == '/');" (assignment_expression "pcVar6 = pcVar7 + (*pcVar7 == '/')" identifier = (binary_expression "pcVar7 + (*pcVar7 == '/')" identifier + (parenthesized_expression "(*pcVar7 == '/')" ( (binary_expression "*pcVar7 == '/'" (pointer_expression "*pcVar7" * identifier) == (char_literal "'/'" ' character ')) )))) ;) (do_statement "do {\n    cVar3 = *pcVar6;\n    if ((cVar3 == '\0') || (cVar3 == '/')) {\n      if (cVar3 == '\0') {\n        *(undefined8 *)((long)local_50 + lVar1) = 0x13af77;\n        cVar3 = FUN_0013a9ab(pcVar7,0);\n        if (cVar3 != '\0') {\n          iVar4 = 0;\nLAB_0013af80:\n          if (local_40[0] != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n            *(code **)((long)local_50 + lVar1) = FUN_0013afa8;\n            __stack_chk_fail();\n          }\n          return iVar4;\n        }\n        bVar2 = true;\nLAB_0013af56:\n        *(undefined8 *)((long)local_50 + lVar1) = 0x13af63;\n        iVar4 = mkdir(pcVar7,0x1ff);\n        if (bVar2) goto LAB_0013af80;\n      }\n      else {\n        *pcVar6 = '\0';\n        *(undefined8 *)((long)local_50 + lVar1) = 0x13af45;\n        cVar3 = FUN_0013a9ab(pcVar7,0);\n        if (cVar3 == '\0') {\n          bVar2 = false;\n          goto LAB_0013af56;\n        }\n      }\n      *pcVar6 = '/';\n    }\n    pcVar6 = pcVar6 + 1;\n  } while( true );" do (compound_statement "{\n    cVar3 = *pcVar6;\n    if ((cVar3 == '\0') || (cVar3 == '/')) {\n      if (cVar3 == '\0') {\n        *(undefined8 *)((long)local_50 + lVar1) = 0x13af77;\n        cVar3 = FUN_0013a9ab(pcVar7,0);\n        if (cVar3 != '\0') {\n          iVar4 = 0;\nLAB_0013af80:\n          if (local_40[0] != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n            *(code **)((long)local_50 + lVar1) = FUN_0013afa8;\n            __stack_chk_fail();\n          }\n          return iVar4;\n        }\n        bVar2 = true;\nLAB_0013af56:\n        *(undefined8 *)((long)local_50 + lVar1) = 0x13af63;\n        iVar4 = mkdir(pcVar7,0x1ff);\n        if (bVar2) goto LAB_0013af80;\n      }\n      else {\n        *pcVar6 = '\0';\n        *(undefined8 *)((long)local_50 + lVar1) = 0x13af45;\n        cVar3 = FUN_0013a9ab(pcVar7,0);\n        if (cVar3 == '\0') {\n          bVar2 = false;\n          goto LAB_0013af56;\n        }\n      }\n      *pcVar6 = '/';\n    }\n    pcVar6 = pcVar6 + 1;\n  }" { (expression_statement "cVar3 = *pcVar6;" (assignment_expression "cVar3 = *pcVar6" identifier = (pointer_expression "*pcVar6" * identifier)) ;) (if_statement "if ((cVar3 == '\0') || (cVar3 == '/')) {\n      if (cVar3 == '\0') {\n        *(undefined8 *)((long)local_50 + lVar1) = 0x13af77;\n        cVar3 = FUN_0013a9ab(pcVar7,0);\n        if (cVar3 != '\0') {\n          iVar4 = 0;\nLAB_0013af80:\n          if (local_40[0] != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n            *(code **)((long)local_50 + lVar1) = FUN_0013afa8;\n            __stack_chk_fail();\n          }\n          return iVar4;\n        }\n        bVar2 = true;\nLAB_0013af56:\n        *(undefined8 *)((long)local_50 + lVar1) = 0x13af63;\n        iVar4 = mkdir(pcVar7,0x1ff);\n        if (bVar2) goto LAB_0013af80;\n      }\n      else {\n        *pcVar6 = '\0';\n        *(undefined8 *)((long)local_50 + lVar1) = 0x13af45;\n        cVar3 = FUN_0013a9ab(pcVar7,0);\n        if (cVar3 == '\0') {\n          bVar2 = false;\n          goto LAB_0013af56;\n        }\n      }\n      *pcVar6 = '/';\n    }" if (parenthesized_expression "((cVar3 == '\0') || (cVar3 == '/'))" ( (binary_expression "(cVar3 == '\0') || (cVar3 == '/')" (parenthesized_expression "(cVar3 == '\0')" ( (binary_expression "cVar3 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) || (parenthesized_expression "(cVar3 == '/')" ( (binary_expression "cVar3 == '/'" identifier == (char_literal "'/'" ' character ')) ))) )) (compound_statement "{\n      if (cVar3 == '\0') {\n        *(undefined8 *)((long)local_50 + lVar1) = 0x13af77;\n        cVar3 = FUN_0013a9ab(pcVar7,0);\n        if (cVar3 != '\0') {\n          iVar4 = 0;\nLAB_0013af80:\n          if (local_40[0] != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n            *(code **)((long)local_50 + lVar1) = FUN_0013afa8;\n            __stack_chk_fail();\n          }\n          return iVar4;\n        }\n        bVar2 = true;\nLAB_0013af56:\n        *(undefined8 *)((long)local_50 + lVar1) = 0x13af63;\n        iVar4 = mkdir(pcVar7,0x1ff);\n        if (bVar2) goto LAB_0013af80;\n      }\n      else {\n        *pcVar6 = '\0';\n        *(undefined8 *)((long)local_50 + lVar1) = 0x13af45;\n        cVar3 = FUN_0013a9ab(pcVar7,0);\n        if (cVar3 == '\0') {\n          bVar2 = false;\n          goto LAB_0013af56;\n        }\n      }\n      *pcVar6 = '/';\n    }" { (if_statement "if (cVar3 == '\0') {\n        *(undefined8 *)((long)local_50 + lVar1) = 0x13af77;\n        cVar3 = FUN_0013a9ab(pcVar7,0);\n        if (cVar3 != '\0') {\n          iVar4 = 0;\nLAB_0013af80:\n          if (local_40[0] != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n            *(code **)((long)local_50 + lVar1) = FUN_0013afa8;\n            __stack_chk_fail();\n          }\n          return iVar4;\n        }\n        bVar2 = true;\nLAB_0013af56:\n        *(undefined8 *)((long)local_50 + lVar1) = 0x13af63;\n        iVar4 = mkdir(pcVar7,0x1ff);\n        if (bVar2) goto LAB_0013af80;\n      }\n      else {\n        *pcVar6 = '\0';\n        *(undefined8 *)((long)local_50 + lVar1) = 0x13af45;\n        cVar3 = FUN_0013a9ab(pcVar7,0);\n        if (cVar3 == '\0') {\n          bVar2 = false;\n          goto LAB_0013af56;\n        }\n      }" if (parenthesized_expression "(cVar3 == '\0')" ( (binary_expression "cVar3 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        *(undefined8 *)((long)local_50 + lVar1) = 0x13af77;\n        cVar3 = FUN_0013a9ab(pcVar7,0);\n        if (cVar3 != '\0') {\n          iVar4 = 0;\nLAB_0013af80:\n          if (local_40[0] != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n            *(code **)((long)local_50 + lVar1) = FUN_0013afa8;\n            __stack_chk_fail();\n          }\n          return iVar4;\n        }\n        bVar2 = true;\nLAB_0013af56:\n        *(undefined8 *)((long)local_50 + lVar1) = 0x13af63;\n        iVar4 = mkdir(pcVar7,0x1ff);\n        if (bVar2) goto LAB_0013af80;\n      }" { (expression_statement "*(undefined8 *)((long)local_50 + lVar1) = 0x13af77;" (assignment_expression "*(undefined8 *)((long)local_50 + lVar1) = 0x13af77" (pointer_expression "*(undefined8 *)((long)local_50 + lVar1)" * (cast_expression "(undefined8 *)((long)local_50 + lVar1)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)local_50 + lVar1)" ( (binary_expression "(long)local_50 + lVar1" (cast_expression "(long)local_50" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "cVar3 = FUN_0013a9ab(pcVar7,0);" (assignment_expression "cVar3 = FUN_0013a9ab(pcVar7,0)" identifier = (call_expression "FUN_0013a9ab(pcVar7,0)" identifier (argument_list "(pcVar7,0)" ( identifier , number_literal )))) ;) (if_statement "if (cVar3 != '\0') {\n          iVar4 = 0;\nLAB_0013af80:\n          if (local_40[0] != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n            *(code **)((long)local_50 + lVar1) = FUN_0013afa8;\n            __stack_chk_fail();\n          }\n          return iVar4;\n        }" if (parenthesized_expression "(cVar3 != '\0')" ( (binary_expression "cVar3 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          iVar4 = 0;\nLAB_0013af80:\n          if (local_40[0] != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n            *(code **)((long)local_50 + lVar1) = FUN_0013afa8;\n            __stack_chk_fail();\n          }\n          return iVar4;\n        }" { (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (labeled_statement "LAB_0013af80:\n          if (local_40[0] != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n            *(code **)((long)local_50 + lVar1) = FUN_0013afa8;\n            __stack_chk_fail();\n          }" statement_identifier : (if_statement "if (local_40[0] != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n            *(code **)((long)local_50 + lVar1) = FUN_0013afa8;\n            __stack_chk_fail();\n          }" if (parenthesized_expression "(local_40[0] != *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "local_40[0] != *(long *)(in_FS_OFFSET + 0x28)" (subscript_expression "local_40[0]" identifier [ number_literal ]) != (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n                    \n            *(code **)((long)local_50 + lVar1) = FUN_0013afa8;\n            __stack_chk_fail();\n          }" { (expression_statement "*(code **)((long)local_50 + lVar1) = FUN_0013afa8;" (assignment_expression "*(code **)((long)local_50 + lVar1) = FUN_0013afa8" (pointer_expression "*(code **)((long)local_50 + lVar1)" * (cast_expression "(code **)((long)local_50 + lVar1)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((long)local_50 + lVar1)" ( (binary_expression "(long)local_50 + lVar1" (cast_expression "(long)local_50" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) = identifier) ;) (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return iVar4;" return identifier ;) })) (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" identifier = true) ;) (labeled_statement "LAB_0013af56:\n        *(undefined8 *)((long)local_50 + lVar1) = 0x13af63;" statement_identifier : (expression_statement "*(undefined8 *)((long)local_50 + lVar1) = 0x13af63;" (assignment_expression "*(undefined8 *)((long)local_50 + lVar1) = 0x13af63" (pointer_expression "*(undefined8 *)((long)local_50 + lVar1)" * (cast_expression "(undefined8 *)((long)local_50 + lVar1)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)local_50 + lVar1)" ( (binary_expression "(long)local_50 + lVar1" (cast_expression "(long)local_50" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) = number_literal) ;)) (expression_statement "iVar4 = mkdir(pcVar7,0x1ff);" (assignment_expression "iVar4 = mkdir(pcVar7,0x1ff)" identifier = (call_expression "mkdir(pcVar7,0x1ff)" identifier (argument_list "(pcVar7,0x1ff)" ( identifier , number_literal )))) ;) (if_statement "if (bVar2) goto LAB_0013af80;" if (parenthesized_expression "(bVar2)" ( identifier )) (goto_statement "goto LAB_0013af80;" goto statement_identifier ;)) }) (else_clause "else {\n        *pcVar6 = '\0';\n        *(undefined8 *)((long)local_50 + lVar1) = 0x13af45;\n        cVar3 = FUN_0013a9ab(pcVar7,0);\n        if (cVar3 == '\0') {\n          bVar2 = false;\n          goto LAB_0013af56;\n        }\n      }" else (compound_statement "{\n        *pcVar6 = '\0';\n        *(undefined8 *)((long)local_50 + lVar1) = 0x13af45;\n        cVar3 = FUN_0013a9ab(pcVar7,0);\n        if (cVar3 == '\0') {\n          bVar2 = false;\n          goto LAB_0013af56;\n        }\n      }" { (expression_statement "*pcVar6 = '\0';" (assignment_expression "*pcVar6 = '\0'" (pointer_expression "*pcVar6" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "*(undefined8 *)((long)local_50 + lVar1) = 0x13af45;" (assignment_expression "*(undefined8 *)((long)local_50 + lVar1) = 0x13af45" (pointer_expression "*(undefined8 *)((long)local_50 + lVar1)" * (cast_expression "(undefined8 *)((long)local_50 + lVar1)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)local_50 + lVar1)" ( (binary_expression "(long)local_50 + lVar1" (cast_expression "(long)local_50" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "cVar3 = FUN_0013a9ab(pcVar7,0);" (assignment_expression "cVar3 = FUN_0013a9ab(pcVar7,0)" identifier = (call_expression "FUN_0013a9ab(pcVar7,0)" identifier (argument_list "(pcVar7,0)" ( identifier , number_literal )))) ;) (if_statement "if (cVar3 == '\0') {\n          bVar2 = false;\n          goto LAB_0013af56;\n        }" if (parenthesized_expression "(cVar3 == '\0')" ( (binary_expression "cVar3 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          bVar2 = false;\n          goto LAB_0013af56;\n        }" { (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" identifier = false) ;) (goto_statement "goto LAB_0013af56;" goto statement_identifier ;) })) }))) (expression_statement "*pcVar6 = '/';" (assignment_expression "*pcVar6 = '/'" (pointer_expression "*pcVar6" * identifier) = (char_literal "'/'" ' character ')) ;) })) (expression_statement "pcVar6 = pcVar6 + 1;" (assignment_expression "pcVar6 = pcVar6 + 1" identifier = (binary_expression "pcVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration (sized_type_specifier long) (array_declarator IDENT [ LIT ]) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (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 - (parenthesized_expression ( (binary_expression (binary_expression (unary_expression ~ IDENT) + LIT) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + IDENT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + IDENT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (char_literal ' character ')) )))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) || (parenthesized_expression ( (binary_expression IDENT == (char_literal ' character ')) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + IDENT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + IDENT) )))) = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = BOOL) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + IDENT) )))) = LIT) ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (if_statement if (parenthesized_expression ( IDENT )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + IDENT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) (goto_statement goto statement_identifier ;) })) }))) (expression_statement (assignment_expression (pointer_expression * IDENT) = (char_literal ' character ')) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( BOOL )) ;) })))
(function_definition "int FUN_0013aeb8(char *param_1)\n\n{\n  long lVar1;\n  bool bVar2;\n  char cVar3;\n  int iVar4;\n  ulong uVar5;\n  char *pcVar6;\n  char *pcVar7;\n  long in_FS_OFFSET;\n  undefined8 local_50 [2];\n  long local_40 [2];\n  \n  local_40[0] = *(long *)(in_FS_OFFSET + 0x28);\n  uVar5 = 0xffffffffffffffff;\n  pcVar7 = param_1;\n  do {\n    if (uVar5 == 0) break;\n    uVar5 = uVar5 - 1;\n    cVar3 = *pcVar7;\n    pcVar7 = pcVar7 + 1;\n  } while (cVar3 != '\0');\n  lVar1 = -(~uVar5 + 0x17 & 0xfffffffffffffff0);\n  pcVar7 = (char *)((long)local_40 + lVar1);\n  *(undefined8 *)((long)local_50 + lVar1) = 0x13af09;\n  strcpy(pcVar7,param_1);\n  pcVar6 = pcVar7 + (*pcVar7 == '/');\n  do {\n    cVar3 = *pcVar6;\n    if ((cVar3 == '\0') || (cVar3 == '/')) {\n      if (cVar3 == '\0') {\n        *(undefined8 *)((long)local_50 + lVar1) = 0x13af77;\n        cVar3 = FUN_0013a9ab(pcVar7,0);\n        if (cVar3 != '\0') {\n          iVar4 = 0;\nLAB_0013af80:\n          if (local_40[0] != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n            *(code **)((long)local_50 + lVar1) = FUN_0013afa8;\n            __stack_chk_fail();\n          }\n          return iVar4;\n        }\n        bVar2 = true;\nLAB_0013af56:\n        *(undefined8 *)((long)local_50 + lVar1) = 0x13af63;\n        iVar4 = mkdir(pcVar7,0x1ff);\n        if (bVar2) goto LAB_0013af80;\n      }\n      else {\n        *pcVar6 = '\0';\n        *(undefined8 *)((long)local_50 + lVar1) = 0x13af45;\n        cVar3 = FUN_0013a9ab(pcVar7,0);\n        if (cVar3 == '\0') {\n          bVar2 = false;\n          goto LAB_0013af56;\n        }\n      }\n      *pcVar6 = '/';\n    }\n    pcVar6 = pcVar6 + 1;\n  } while( true );\n}" (primitive_type "int") (function_declarator "FUN_0013aeb8(char *param_1)" (identifier "FUN_0013aeb8") (parameter_list "(char *param_1)" (( "(") (parameter_declaration "char *param_1" (primitive_type "char") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) () ")"))) (compound_statement "{\n  long lVar1;\n  bool bVar2;\n  char cVar3;\n  int iVar4;\n  ulong uVar5;\n  char *pcVar6;\n  char *pcVar7;\n  long in_FS_OFFSET;\n  undefined8 local_50 [2];\n  long local_40 [2];\n  \n  local_40[0] = *(long *)(in_FS_OFFSET + 0x28);\n  uVar5 = 0xffffffffffffffff;\n  pcVar7 = param_1;\n  do {\n    if (uVar5 == 0) break;\n    uVar5 = uVar5 - 1;\n    cVar3 = *pcVar7;\n    pcVar7 = pcVar7 + 1;\n  } while (cVar3 != '\0');\n  lVar1 = -(~uVar5 + 0x17 & 0xfffffffffffffff0);\n  pcVar7 = (char *)((long)local_40 + lVar1);\n  *(undefined8 *)((long)local_50 + lVar1) = 0x13af09;\n  strcpy(pcVar7,param_1);\n  pcVar6 = pcVar7 + (*pcVar7 == '/');\n  do {\n    cVar3 = *pcVar6;\n    if ((cVar3 == '\0') || (cVar3 == '/')) {\n      if (cVar3 == '\0') {\n        *(undefined8 *)((long)local_50 + lVar1) = 0x13af77;\n        cVar3 = FUN_0013a9ab(pcVar7,0);\n        if (cVar3 != '\0') {\n          iVar4 = 0;\nLAB_0013af80:\n          if (local_40[0] != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n            *(code **)((long)local_50 + lVar1) = FUN_0013afa8;\n            __stack_chk_fail();\n          }\n          return iVar4;\n        }\n        bVar2 = true;\nLAB_0013af56:\n        *(undefined8 *)((long)local_50 + lVar1) = 0x13af63;\n        iVar4 = mkdir(pcVar7,0x1ff);\n        if (bVar2) goto LAB_0013af80;\n      }\n      else {\n        *pcVar6 = '\0';\n        *(undefined8 *)((long)local_50 + lVar1) = 0x13af45;\n        cVar3 = FUN_0013a9ab(pcVar7,0);\n        if (cVar3 == '\0') {\n          bVar2 = false;\n          goto LAB_0013af56;\n        }\n      }\n      *pcVar6 = '/';\n    }\n    pcVar6 = pcVar6 + 1;\n  } while( true );\n}" ({ "{") (declaration "long lVar1;" (sized_type_specifier "long" (long "long")) (identifier "lVar1") (; ";")) (declaration "bool bVar2;" (primitive_type "bool") (identifier "bVar2") (; ";")) (declaration "char cVar3;" (primitive_type "char") (identifier "cVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "ulong uVar5;" (type_identifier "ulong") (identifier "uVar5") (; ";")) (declaration "char *pcVar6;" (primitive_type "char") (pointer_declarator "*pcVar6" (* "*") (identifier "pcVar6")) (; ";")) (declaration "char *pcVar7;" (primitive_type "char") (pointer_declarator "*pcVar7" (* "*") (identifier "pcVar7")) (; ";")) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" (long "long")) (identifier "in_FS_OFFSET") (; ";")) (declaration "undefined8 local_50 [2];" (type_identifier "undefined8") (array_declarator "local_50 [2]" (identifier "local_50") ([ "[") (number_literal "2") (] "]")) (; ";")) (declaration "long local_40 [2];" (sized_type_specifier "long" (long "long")) (array_declarator "local_40 [2]" (identifier "local_40") ([ "[") (number_literal "2") (] "]")) (; ";")) (expression_statement "local_40[0] = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_40[0] = *(long *)(in_FS_OFFSET + 0x28)" (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]")) (= "=") (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" (* "*") (cast_expression "(long *)(in_FS_OFFSET + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_FS_OFFSET + 0x28)" (( "(") (binary_expression "in_FS_OFFSET + 0x28" (identifier "in_FS_OFFSET") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (expression_statement "uVar5 = 0xffffffffffffffff;" (assignment_expression "uVar5 = 0xffffffffffffffff" (identifier "uVar5") (= "=") (number_literal "0xffffffffffffffff")) (; ";")) (expression_statement "pcVar7 = param_1;" (assignment_expression "pcVar7 = param_1" (identifier "pcVar7") (= "=") (identifier "param_1")) (; ";")) (do_statement "do {\n    if (uVar5 == 0) break;\n    uVar5 = uVar5 - 1;\n    cVar3 = *pcVar7;\n    pcVar7 = pcVar7 + 1;\n  } while (cVar3 != '\0');" (do "do") (compound_statement "{\n    if (uVar5 == 0) break;\n    uVar5 = uVar5 - 1;\n    cVar3 = *pcVar7;\n    pcVar7 = pcVar7 + 1;\n  }" ({ "{") (if_statement "if (uVar5 == 0) break;" (if "if") (parenthesized_expression "(uVar5 == 0)" (( "(") (binary_expression "uVar5 == 0" (identifier "uVar5") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar5 = uVar5 - 1;" (assignment_expression "uVar5 = uVar5 - 1" (identifier "uVar5") (= "=") (binary_expression "uVar5 - 1" (identifier "uVar5") (- "-") (number_literal "1"))) (; ";")) (expression_statement "cVar3 = *pcVar7;" (assignment_expression "cVar3 = *pcVar7" (identifier "cVar3") (= "=") (pointer_expression "*pcVar7" (* "*") (identifier "pcVar7"))) (; ";")) (expression_statement "pcVar7 = pcVar7 + 1;" (assignment_expression "pcVar7 = pcVar7 + 1" (identifier "pcVar7") (= "=") (binary_expression "pcVar7 + 1" (identifier "pcVar7") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(cVar3 != '\0')" (( "(") (binary_expression "cVar3 != '\0'" (identifier "cVar3") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (; ";")) (expression_statement "lVar1 = -(~uVar5 + 0x17 & 0xfffffffffffffff0);" (assignment_expression "lVar1 = -(~uVar5 + 0x17 & 0xfffffffffffffff0)" (identifier "lVar1") (= "=") (unary_expression "-(~uVar5 + 0x17 & 0xfffffffffffffff0)" (- "-") (parenthesized_expression "(~uVar5 + 0x17 & 0xfffffffffffffff0)" (( "(") (binary_expression "~uVar5 + 0x17 & 0xfffffffffffffff0" (binary_expression "~uVar5 + 0x17" (unary_expression "~uVar5" (~ "~") (identifier "uVar5")) (+ "+") (number_literal "0x17")) (& "&") (number_literal "0xfffffffffffffff0")) () ")")))) (; ";")) (expression_statement "pcVar7 = (char *)((long)local_40 + lVar1);" (assignment_expression "pcVar7 = (char *)((long)local_40 + lVar1)" (identifier "pcVar7") (= "=") (cast_expression "(char *)((long)local_40 + lVar1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)local_40 + lVar1)" (( "(") (binary_expression "(long)local_40 + lVar1" (cast_expression "(long)local_40" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "local_40")) (+ "+") (identifier "lVar1")) () ")")))) (; ";")) (expression_statement "*(undefined8 *)((long)local_50 + lVar1) = 0x13af09;" (assignment_expression "*(undefined8 *)((long)local_50 + lVar1) = 0x13af09" (pointer_expression "*(undefined8 *)((long)local_50 + lVar1)" (* "*") (cast_expression "(undefined8 *)((long)local_50 + lVar1)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)local_50 + lVar1)" (( "(") (binary_expression "(long)local_50 + lVar1" (cast_expression "(long)local_50" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "local_50")) (+ "+") (identifier "lVar1")) () ")")))) (= "=") (number_literal "0x13af09")) (; ";")) (expression_statement "strcpy(pcVar7,param_1);" (call_expression "strcpy(pcVar7,param_1)" (identifier "strcpy") (argument_list "(pcVar7,param_1)" (( "(") (identifier "pcVar7") (, ",") (identifier "param_1") () ")"))) (; ";")) (expression_statement "pcVar6 = pcVar7 + (*pcVar7 == '/');" (assignment_expression "pcVar6 = pcVar7 + (*pcVar7 == '/')" (identifier "pcVar6") (= "=") (binary_expression "pcVar7 + (*pcVar7 == '/')" (identifier "pcVar7") (+ "+") (parenthesized_expression "(*pcVar7 == '/')" (( "(") (binary_expression "*pcVar7 == '/'" (pointer_expression "*pcVar7" (* "*") (identifier "pcVar7")) (== "==") (char_literal "'/'" (' "'") (character "/") (' "'"))) () ")")))) (; ";")) (do_statement "do {\n    cVar3 = *pcVar6;\n    if ((cVar3 == '\0') || (cVar3 == '/')) {\n      if (cVar3 == '\0') {\n        *(undefined8 *)((long)local_50 + lVar1) = 0x13af77;\n        cVar3 = FUN_0013a9ab(pcVar7,0);\n        if (cVar3 != '\0') {\n          iVar4 = 0;\nLAB_0013af80:\n          if (local_40[0] != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n            *(code **)((long)local_50 + lVar1) = FUN_0013afa8;\n            __stack_chk_fail();\n          }\n          return iVar4;\n        }\n        bVar2 = true;\nLAB_0013af56:\n        *(undefined8 *)((long)local_50 + lVar1) = 0x13af63;\n        iVar4 = mkdir(pcVar7,0x1ff);\n        if (bVar2) goto LAB_0013af80;\n      }\n      else {\n        *pcVar6 = '\0';\n        *(undefined8 *)((long)local_50 + lVar1) = 0x13af45;\n        cVar3 = FUN_0013a9ab(pcVar7,0);\n        if (cVar3 == '\0') {\n          bVar2 = false;\n          goto LAB_0013af56;\n        }\n      }\n      *pcVar6 = '/';\n    }\n    pcVar6 = pcVar6 + 1;\n  } while( true );" (do "do") (compound_statement "{\n    cVar3 = *pcVar6;\n    if ((cVar3 == '\0') || (cVar3 == '/')) {\n      if (cVar3 == '\0') {\n        *(undefined8 *)((long)local_50 + lVar1) = 0x13af77;\n        cVar3 = FUN_0013a9ab(pcVar7,0);\n        if (cVar3 != '\0') {\n          iVar4 = 0;\nLAB_0013af80:\n          if (local_40[0] != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n            *(code **)((long)local_50 + lVar1) = FUN_0013afa8;\n            __stack_chk_fail();\n          }\n          return iVar4;\n        }\n        bVar2 = true;\nLAB_0013af56:\n        *(undefined8 *)((long)local_50 + lVar1) = 0x13af63;\n        iVar4 = mkdir(pcVar7,0x1ff);\n        if (bVar2) goto LAB_0013af80;\n      }\n      else {\n        *pcVar6 = '\0';\n        *(undefined8 *)((long)local_50 + lVar1) = 0x13af45;\n        cVar3 = FUN_0013a9ab(pcVar7,0);\n        if (cVar3 == '\0') {\n          bVar2 = false;\n          goto LAB_0013af56;\n        }\n      }\n      *pcVar6 = '/';\n    }\n    pcVar6 = pcVar6 + 1;\n  }" ({ "{") (expression_statement "cVar3 = *pcVar6;" (assignment_expression "cVar3 = *pcVar6" (identifier "cVar3") (= "=") (pointer_expression "*pcVar6" (* "*") (identifier "pcVar6"))) (; ";")) (if_statement "if ((cVar3 == '\0') || (cVar3 == '/')) {\n      if (cVar3 == '\0') {\n        *(undefined8 *)((long)local_50 + lVar1) = 0x13af77;\n        cVar3 = FUN_0013a9ab(pcVar7,0);\n        if (cVar3 != '\0') {\n          iVar4 = 0;\nLAB_0013af80:\n          if (local_40[0] != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n            *(code **)((long)local_50 + lVar1) = FUN_0013afa8;\n            __stack_chk_fail();\n          }\n          return iVar4;\n        }\n        bVar2 = true;\nLAB_0013af56:\n        *(undefined8 *)((long)local_50 + lVar1) = 0x13af63;\n        iVar4 = mkdir(pcVar7,0x1ff);\n        if (bVar2) goto LAB_0013af80;\n      }\n      else {\n        *pcVar6 = '\0';\n        *(undefined8 *)((long)local_50 + lVar1) = 0x13af45;\n        cVar3 = FUN_0013a9ab(pcVar7,0);\n        if (cVar3 == '\0') {\n          bVar2 = false;\n          goto LAB_0013af56;\n        }\n      }\n      *pcVar6 = '/';\n    }" (if "if") (parenthesized_expression "((cVar3 == '\0') || (cVar3 == '/'))" (( "(") (binary_expression "(cVar3 == '\0') || (cVar3 == '/')" (parenthesized_expression "(cVar3 == '\0')" (( "(") (binary_expression "cVar3 == '\0'" (identifier "cVar3") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (|| "||") (parenthesized_expression "(cVar3 == '/')" (( "(") (binary_expression "cVar3 == '/'" (identifier "cVar3") (== "==") (char_literal "'/'" (' "'") (character "/") (' "'"))) () ")"))) () ")")) (compound_statement "{\n      if (cVar3 == '\0') {\n        *(undefined8 *)((long)local_50 + lVar1) = 0x13af77;\n        cVar3 = FUN_0013a9ab(pcVar7,0);\n        if (cVar3 != '\0') {\n          iVar4 = 0;\nLAB_0013af80:\n          if (local_40[0] != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n            *(code **)((long)local_50 + lVar1) = FUN_0013afa8;\n            __stack_chk_fail();\n          }\n          return iVar4;\n        }\n        bVar2 = true;\nLAB_0013af56:\n        *(undefined8 *)((long)local_50 + lVar1) = 0x13af63;\n        iVar4 = mkdir(pcVar7,0x1ff);\n        if (bVar2) goto LAB_0013af80;\n      }\n      else {\n        *pcVar6 = '\0';\n        *(undefined8 *)((long)local_50 + lVar1) = 0x13af45;\n        cVar3 = FUN_0013a9ab(pcVar7,0);\n        if (cVar3 == '\0') {\n          bVar2 = false;\n          goto LAB_0013af56;\n        }\n      }\n      *pcVar6 = '/';\n    }" ({ "{") (if_statement "if (cVar3 == '\0') {\n        *(undefined8 *)((long)local_50 + lVar1) = 0x13af77;\n        cVar3 = FUN_0013a9ab(pcVar7,0);\n        if (cVar3 != '\0') {\n          iVar4 = 0;\nLAB_0013af80:\n          if (local_40[0] != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n            *(code **)((long)local_50 + lVar1) = FUN_0013afa8;\n            __stack_chk_fail();\n          }\n          return iVar4;\n        }\n        bVar2 = true;\nLAB_0013af56:\n        *(undefined8 *)((long)local_50 + lVar1) = 0x13af63;\n        iVar4 = mkdir(pcVar7,0x1ff);\n        if (bVar2) goto LAB_0013af80;\n      }\n      else {\n        *pcVar6 = '\0';\n        *(undefined8 *)((long)local_50 + lVar1) = 0x13af45;\n        cVar3 = FUN_0013a9ab(pcVar7,0);\n        if (cVar3 == '\0') {\n          bVar2 = false;\n          goto LAB_0013af56;\n        }\n      }" (if "if") (parenthesized_expression "(cVar3 == '\0')" (( "(") (binary_expression "cVar3 == '\0'" (identifier "cVar3") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n        *(undefined8 *)((long)local_50 + lVar1) = 0x13af77;\n        cVar3 = FUN_0013a9ab(pcVar7,0);\n        if (cVar3 != '\0') {\n          iVar4 = 0;\nLAB_0013af80:\n          if (local_40[0] != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n            *(code **)((long)local_50 + lVar1) = FUN_0013afa8;\n            __stack_chk_fail();\n          }\n          return iVar4;\n        }\n        bVar2 = true;\nLAB_0013af56:\n        *(undefined8 *)((long)local_50 + lVar1) = 0x13af63;\n        iVar4 = mkdir(pcVar7,0x1ff);\n        if (bVar2) goto LAB_0013af80;\n      }" ({ "{") (expression_statement "*(undefined8 *)((long)local_50 + lVar1) = 0x13af77;" (assignment_expression "*(undefined8 *)((long)local_50 + lVar1) = 0x13af77" (pointer_expression "*(undefined8 *)((long)local_50 + lVar1)" (* "*") (cast_expression "(undefined8 *)((long)local_50 + lVar1)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)local_50 + lVar1)" (( "(") (binary_expression "(long)local_50 + lVar1" (cast_expression "(long)local_50" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "local_50")) (+ "+") (identifier "lVar1")) () ")")))) (= "=") (number_literal "0x13af77")) (; ";")) (expression_statement "cVar3 = FUN_0013a9ab(pcVar7,0);" (assignment_expression "cVar3 = FUN_0013a9ab(pcVar7,0)" (identifier "cVar3") (= "=") (call_expression "FUN_0013a9ab(pcVar7,0)" (identifier "FUN_0013a9ab") (argument_list "(pcVar7,0)" (( "(") (identifier "pcVar7") (, ",") (number_literal "0") () ")")))) (; ";")) (if_statement "if (cVar3 != '\0') {\n          iVar4 = 0;\nLAB_0013af80:\n          if (local_40[0] != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n            *(code **)((long)local_50 + lVar1) = FUN_0013afa8;\n            __stack_chk_fail();\n          }\n          return iVar4;\n        }" (if "if") (parenthesized_expression "(cVar3 != '\0')" (( "(") (binary_expression "cVar3 != '\0'" (identifier "cVar3") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n          iVar4 = 0;\nLAB_0013af80:\n          if (local_40[0] != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n            *(code **)((long)local_50 + lVar1) = FUN_0013afa8;\n            __stack_chk_fail();\n          }\n          return iVar4;\n        }" ({ "{") (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" (identifier "iVar4") (= "=") (number_literal "0")) (; ";")) (labeled_statement "LAB_0013af80:\n          if (local_40[0] != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n            *(code **)((long)local_50 + lVar1) = FUN_0013afa8;\n            __stack_chk_fail();\n          }" (statement_identifier "LAB_0013af80") (: ":") (if_statement "if (local_40[0] != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n            *(code **)((long)local_50 + lVar1) = FUN_0013afa8;\n            __stack_chk_fail();\n          }" (if "if") (parenthesized_expression "(local_40[0] != *(long *)(in_FS_OFFSET + 0x28))" (( "(") (binary_expression "local_40[0] != *(long *)(in_FS_OFFSET + 0x28)" (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]")) (!= "!=") (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" (* "*") (cast_expression "(long *)(in_FS_OFFSET + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_FS_OFFSET + 0x28)" (( "(") (binary_expression "in_FS_OFFSET + 0x28" (identifier "in_FS_OFFSET") (+ "+") (number_literal "0x28")) () ")"))))) () ")")) (compound_statement "{\n                    \n            *(code **)((long)local_50 + lVar1) = FUN_0013afa8;\n            __stack_chk_fail();\n          }" ({ "{") (expression_statement "*(code **)((long)local_50 + lVar1) = FUN_0013afa8;" (assignment_expression "*(code **)((long)local_50 + lVar1) = FUN_0013afa8" (pointer_expression "*(code **)((long)local_50 + lVar1)" (* "*") (cast_expression "(code **)((long)local_50 + lVar1)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((long)local_50 + lVar1)" (( "(") (binary_expression "(long)local_50 + lVar1" (cast_expression "(long)local_50" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "local_50")) (+ "+") (identifier "lVar1")) () ")")))) (= "=") (identifier "FUN_0013afa8")) (; ";")) (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" (identifier "__stack_chk_fail") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (return_statement "return iVar4;" (return "return") (identifier "iVar4") (; ";")) (} "}"))) (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" (identifier "bVar2") (= "=") (true "true")) (; ";")) (labeled_statement "LAB_0013af56:\n        *(undefined8 *)((long)local_50 + lVar1) = 0x13af63;" (statement_identifier "LAB_0013af56") (: ":") (expression_statement "*(undefined8 *)((long)local_50 + lVar1) = 0x13af63;" (assignment_expression "*(undefined8 *)((long)local_50 + lVar1) = 0x13af63" (pointer_expression "*(undefined8 *)((long)local_50 + lVar1)" (* "*") (cast_expression "(undefined8 *)((long)local_50 + lVar1)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)local_50 + lVar1)" (( "(") (binary_expression "(long)local_50 + lVar1" (cast_expression "(long)local_50" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "local_50")) (+ "+") (identifier "lVar1")) () ")")))) (= "=") (number_literal "0x13af63")) (; ";"))) (expression_statement "iVar4 = mkdir(pcVar7,0x1ff);" (assignment_expression "iVar4 = mkdir(pcVar7,0x1ff)" (identifier "iVar4") (= "=") (call_expression "mkdir(pcVar7,0x1ff)" (identifier "mkdir") (argument_list "(pcVar7,0x1ff)" (( "(") (identifier "pcVar7") (, ",") (number_literal "0x1ff") () ")")))) (; ";")) (if_statement "if (bVar2) goto LAB_0013af80;" (if "if") (parenthesized_expression "(bVar2)" (( "(") (identifier "bVar2") () ")")) (goto_statement "goto LAB_0013af80;" (goto "goto") (statement_identifier "LAB_0013af80") (; ";"))) (} "}")) (else_clause "else {\n        *pcVar6 = '\0';\n        *(undefined8 *)((long)local_50 + lVar1) = 0x13af45;\n        cVar3 = FUN_0013a9ab(pcVar7,0);\n        if (cVar3 == '\0') {\n          bVar2 = false;\n          goto LAB_0013af56;\n        }\n      }" (else "else") (compound_statement "{\n        *pcVar6 = '\0';\n        *(undefined8 *)((long)local_50 + lVar1) = 0x13af45;\n        cVar3 = FUN_0013a9ab(pcVar7,0);\n        if (cVar3 == '\0') {\n          bVar2 = false;\n          goto LAB_0013af56;\n        }\n      }" ({ "{") (expression_statement "*pcVar6 = '\0';" (assignment_expression "*pcVar6 = '\0'" (pointer_expression "*pcVar6" (* "*") (identifier "pcVar6")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "*(undefined8 *)((long)local_50 + lVar1) = 0x13af45;" (assignment_expression "*(undefined8 *)((long)local_50 + lVar1) = 0x13af45" (pointer_expression "*(undefined8 *)((long)local_50 + lVar1)" (* "*") (cast_expression "(undefined8 *)((long)local_50 + lVar1)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)local_50 + lVar1)" (( "(") (binary_expression "(long)local_50 + lVar1" (cast_expression "(long)local_50" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "local_50")) (+ "+") (identifier "lVar1")) () ")")))) (= "=") (number_literal "0x13af45")) (; ";")) (expression_statement "cVar3 = FUN_0013a9ab(pcVar7,0);" (assignment_expression "cVar3 = FUN_0013a9ab(pcVar7,0)" (identifier "cVar3") (= "=") (call_expression "FUN_0013a9ab(pcVar7,0)" (identifier "FUN_0013a9ab") (argument_list "(pcVar7,0)" (( "(") (identifier "pcVar7") (, ",") (number_literal "0") () ")")))) (; ";")) (if_statement "if (cVar3 == '\0') {\n          bVar2 = false;\n          goto LAB_0013af56;\n        }" (if "if") (parenthesized_expression "(cVar3 == '\0')" (( "(") (binary_expression "cVar3 == '\0'" (identifier "cVar3") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n          bVar2 = false;\n          goto LAB_0013af56;\n        }" ({ "{") (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" (identifier "bVar2") (= "=") (false "false")) (; ";")) (goto_statement "goto LAB_0013af56;" (goto "goto") (statement_identifier "LAB_0013af56") (; ";")) (} "}"))) (} "}")))) (expression_statement "*pcVar6 = '/';" (assignment_expression "*pcVar6 = '/'" (pointer_expression "*pcVar6" (* "*") (identifier "pcVar6")) (= "=") (char_literal "'/'" (' "'") (character "/") (' "'"))) (; ";")) (} "}"))) (expression_statement "pcVar6 = pcVar6 + 1;" (assignment_expression "pcVar6 = pcVar6 + 1" (identifier "pcVar6") (= "=") (binary_expression "pcVar6 + 1" (identifier "pcVar6") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}")))

int function_1(char *directory)

{
  char var_4;
  long var_5;
  bool bVar3;
  type_1 _Var4;
  int iVar5;
  type_2 var_2;
  char *var_10;
  char *var_3;
  long var_1;
  type_3 local_50 [2];
  long local_40 [2];
  
  local_40[0] = *(long *)(var_1 + 0x28);
  var_2 = 0xffffffffffffffff;
  var_3 = directory;
  do {
    if (var_2 == 0) break;
    var_2 = var_2 - 1;
    var_4 = *var_3;
    var_3 = var_3 + 1;
  } while (var_4 != '\0');
  var_5 = -(~var_2 + 0x17 & 0xfffffffffffffff0);
  var_3 = (char *)((long)local_40 + var_5);
  *(type_3 *)((long)local_50 + var_5) = 0x13af09;
  var_6(var_3,directory);
  var_10 = var_3 + (*var_3 == '/');
  do {
    var_4 = *var_10;
    if ((var_4 == '\0') || (var_4 == '/')) {
      if (var_4 == '\0') {
        *(type_3 *)((long)local_50 + var_5) = 0x13af77;
        _Var4 = var_7(var_3,(type_4 *)0x0);
        if (_Var4) {
          iVar5 = 0;
LAB_0013af80:
          if (local_40[0] != *(long *)(var_1 + 0x28)) {
                    /* WARNING: Subroutine does not return */
            *(type_5 **)((long)local_50 + var_5) = file_merge;
            var_8();
          }
          return iVar5;
        }
        bVar3 = true;
LAB_0013af56:
        *(type_3 *)((long)local_50 + var_5) = 0x13af63;
        iVar5 = var_9(var_3,0x1ff);
        if (bVar3) goto LAB_0013af80;
      }
      else {
        *var_10 = '\0';
        *(type_3 *)((long)local_50 + var_5) = 0x13af45;
        _Var4 = var_7(var_3,(type_4 *)0x0);
        if (!_Var4) {
          bVar3 = false;
          goto LAB_0013af56;
        }
      }
      *var_10 = '/';
    }
    var_10 = var_10 + 1;
  } while( true );
}


(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: (sized_type_specifier) 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: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (sized_type_specifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (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: (parenthesized_expression (binary_expression left: (binary_expression left: (unary_expression argument: (identifier)) right: (number_literal)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (identifier)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (identifier))))) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (char_literal (character))))))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) right: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (character)))))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (identifier))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (identifier))))) right: (identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list)))))) (return_statement (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (true))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (identifier))))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal))))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (goto_statement label: (statement_identifier)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (char_literal (escape_sequence)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (identifier))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (false))) (goto_statement label: (statement_identifier))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (char_literal (character)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (true))))))

int MASKED(char *param_1)

{
  long lVar1;
  bool bVar2;
  char cVar3;
  int iVar4;
  ulong uVar5;
  char *pcVar6;
  char *pcVar7;
  long in_FS_OFFSET;
  undefined8 local_50 [2];
  long local_40 [2];
  
  local_40[0] = *(long *)(in_FS_OFFSET + 0x28);
  uVar5 = 0xffffffffffffffff;
  pcVar7 = param_1;
  do {
    if (uVar5 == 0) break;
    uVar5 = uVar5 - 1;
    cVar3 = *pcVar7;
    pcVar7 = pcVar7 + 1;
  } while (cVar3 != '\0');
  lVar1 = -(~uVar5 + 0x17 & 0xfffffffffffffff0);
  pcVar7 = (char *)((long)local_40 + lVar1);
  *(undefined8 *)((long)local_50 + lVar1) = 0x13af09;
  strcpy(pcVar7,param_1);
  pcVar6 = pcVar7 + (*pcVar7 == '/');
  do {
    cVar3 = *pcVar6;
    if ((cVar3 == '\0') || (cVar3 == '/')) {
      if (cVar3 == '\0') {
        *(undefined8 *)((long)local_50 + lVar1) = 0x13af77;
        cVar3 = FUN_0013a9ab(pcVar7,0);
        if (cVar3 != '\0') {
          iVar4 = 0;
LAB_0013af80:
          if (local_40[0] != *(long *)(in_FS_OFFSET + 0x28)) {
                    /* WARNING: Subroutine does not return */
            *(code **)((long)local_50 + lVar1) = FUN_0013afa8;
            __stack_chk_fail();
          }
          return iVar4;
        }
        bVar2 = true;
LAB_0013af56:
        *(undefined8 *)((long)local_50 + lVar1) = 0x13af63;
        iVar4 = mkdir(pcVar7,0x1ff);
        if (bVar2) goto LAB_0013af80;
      }
      else {
        *pcVar6 = '\0';
        *(undefined8 *)((long)local_50 + lVar1) = 0x13af45;
        cVar3 = FUN_0013a9ab(pcVar7,0);
        if (cVar3 == '\0') {
          bVar2 = false;
          goto LAB_0013af56;
        }
      }
      *pcVar6 = '/';
    }
    pcVar6 = pcVar6 + 1;
  } while( true );
}

