
_Bool restorecon(char *path,_Bool recurse,_Bool local)

{
  long lVar1;
  int iVar2;
  FTS *sp;
  FTSENT *pFVar3;
  char *path_00;
  int *piVar4;
  undefined8 uVar5;
  char *__ptr;
  long in_FS_OFFSET;
  char *ftspath [2];
  
  lVar1 = *(long *)(in_FS_OFFSET + 0x28);
  if ((*path == '/') || (local)) {
    __ptr = (char *)0x0;
    path_00 = path;
LAB_0010d76b:
    ftspath[1] = (char *)0x0;
    ftspath[0] = path_00;
    if (recurse) {
      sp = xfts_open(ftspath,0x10,(_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0);
      while (pFVar3 = fts_read(sp), pFVar3 != (FTSENT *)0x0) {
        iVar2 = restorecon_private(sp->fts_path,local);
        recurse = (_Bool)(recurse & iVar2 != -1);
      }
      piVar4 = __errno_location();
      if (*piVar4 != 0) {
        uVar5 = dcgettext(0,"fts_read failed",5);
        error(0,*piVar4,uVar5);
        recurse = false;
      }
      iVar2 = fts_close(sp);
      if (iVar2 != 0) {
        uVar5 = dcgettext(0,"fts_close failed",5);
        error(0,*piVar4,uVar5);
        recurse = false;
      }
      free(__ptr);
      goto LAB_0010d85a;
    }
  }
  else {
    __ptr = canonicalize_filename_mode(path,CAN_MISSING);
    path_00 = __ptr;
    if (__ptr != (char *)0x0) goto LAB_0010d76b;
    path_00 = quotearg_style(shell_escape_always_quoting_style,path);
    uVar5 = dcgettext(0,"error canonicalizing %s",5);
    piVar4 = __errno_location();
    error(1,*piVar4,uVar5,path_00);
  }
  iVar2 = restorecon_private(path_00,local);
  recurse = iVar2 != -1;
  free(__ptr);
LAB_0010d85a:
  if (lVar1 != *(long *)(in_FS_OFFSET + 0x28)) {
                    /* WARNING: Subroutine does not return */
    __stack_chk_fail();
  }
  return recurse;
}



ulong FUN_0010d730(char *param_1,uint param_2,char param_3)

{
  int iVar1;
  long lVar2;
  long lVar3;
  undefined8 uVar4;
  char *pcVar5;
  int *piVar6;
  ulong uVar7;
  char *__ptr;
  long in_FS_OFFSET;
  char *local_58;
  undefined8 local_50;
  long local_40;
  
  uVar7 = (ulong)param_2;
  local_40 = *(long *)(in_FS_OFFSET + 0x28);
  if ((*param_1 == '/') || (param_3 != '\0')) {
    __ptr = (char *)0x0;
    pcVar5 = param_1;
LAB_0010d76b:
    local_50 = 0;
    local_58 = pcVar5;
    if ((char)param_2 != '\0') {
      lVar2 = FUN_00115010(&local_58,0x10,0);
      while (lVar3 = fts_read(lVar2), lVar3 != 0) {
        uVar4 = FUN_0010d185(*(undefined8 *)(lVar2 + 0x20),param_3);
        uVar7 = (ulong)((uint)uVar7 & (uint)CONCAT71((int7)((ulong)uVar4 >> 8),(int)uVar4 != -1));
      }
      piVar6 = __errno_location();
      if (*piVar6 != 0) {
        uVar4 = dcgettext(0,"fts_read failed",5);
        error(0,*piVar6,uVar4);
        uVar7 = 0;
      }
      iVar1 = fts_close(lVar2);
      if (iVar1 != 0) {
        uVar4 = dcgettext(0,"fts_close failed",5);
        error(0,*piVar6,uVar4);
        uVar7 = 0;
      }
      free(__ptr);
      goto LAB_0010d85a;
    }
  }
  else {
    __ptr = (char *)FUN_0010e159(param_1,2);
    pcVar5 = __ptr;
    if (__ptr != (char *)0x0) goto LAB_0010d76b;
    pcVar5 = (char *)FUN_00112342(4,param_1);
    uVar7 = dcgettext(0,"error canonicalizing %s",5);
    piVar6 = __errno_location();
    error(1,*piVar6,uVar7,pcVar5);
  }
  iVar1 = FUN_0010d185(pcVar5,param_3);
  uVar7 = CONCAT71((int7)(uVar7 >> 8),iVar1 != -1);
  free(__ptr);
LAB_0010d85a:
  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {
                    /* WARNING: Subroutine does not return */
    __stack_chk_fail();
  }
  return uVar7 & 0xffffffff;
}


PUSH R15
PUSH R14
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x28
MOV RBP,RDI
MOV R15D,ESI
MOV R14D,EDX
MOV EBX,ESI
MOV R13D,EDX
MOV RAX,qword ptr FS:[0x28]
MOV qword ptr [RSP + 0x18],RAX
XOR EAX,EAX
CMP byte ptr [RDI],0x2f
JZ 0x0010d765
TEST DL,DL
JZ 0x0010d7c1
MOV R12D,0x0
MOV qword ptr [RSP],RBP
MOV qword ptr [RSP + 0x8],0x0
TEST R15B,R15B
JZ 0x0010d81d
MOV RDI,RSP
MOV EDX,0x0
MOV ESI,0x10
CALL 0x00115010
MOV RBP,RAX
MOVZX R13D,R13B
MOV RDI,RBP
CALL 0x0011740d
TEST RAX,RAX
JZ 0x0010d839
MOV RDI,qword ptr [RBP + 0x20]
MOV ESI,R13D
CALL 0x0010d185
CMP EAX,-0x1
SETNZ AL
AND EBX,EAX
JMP 0x0010d79a
MOV ESI,0x2
CALL 0x0010e159
MOV R12,RAX
TEST RAX,RAX
JZ 0x0010d7d8
MOV RBP,RAX
JMP 0x0010d76b
MOV RSI,RBP
MOV EDI,0x4
CALL 0x00112342
MOV RBP,RAX
MOV EDX,0x5
LEA RSI,[0x11edb1]
MOV EDI,0x0
CALL 0x00104280
MOV RBX,RAX
CALL 0x001040b0
MOV RCX,RBP
MOV RDX,RBX
MOV ESI,dword ptr [RAX]
MOV EDI,0x1
MOV EAX,0x0
CALL 0x00104800
MOVZX ESI,R14B
MOV RDI,RBP
CALL 0x0010d185
CMP EAX,-0x1
SETNZ BL
MOV RDI,R12
CALL 0x00104a30
JMP 0x0010d85a
CALL 0x001040b0
MOV R13,RAX
CMP dword ptr [RAX],0x0
JNZ 0x0010d87b
MOV RDI,RBP
CALL 0x001172de
TEST EAX,EAX
JNZ 0x0010d8ae
MOV RDI,R12
CALL 0x00104a30
MOV EAX,EBX
MOV RCX,qword ptr [RSP + 0x18]
XOR RCX,qword ptr FS:[0x28]
JNZ 0x0010d8e4
ADD RSP,0x28
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV EDX,0x5
LEA RSI,[0x11edc9]
MOV EDI,0x0
CALL 0x00104280
MOV RDX,RAX
MOV ESI,dword ptr [R13]
MOV EDI,0x0
MOV EAX,0x0
CALL 0x00104800
MOV EBX,0x0
JMP 0x0010d846
MOV EDX,0x5
LEA RSI,[0x11edd9]
MOV EDI,0x0
CALL 0x00104280
MOV RDX,RAX
MOV ESI,dword ptr [R13]
MOV EDI,0x0
MOV EAX,0x0
CALL 0x00104800
MOV EBX,0x0
JMP 0x0010d852
CALL 0x001042e0
(translation_unit "ulong FUN_0010d730(char *param_1,uint param_2,char param_3)\n\n{\n  int iVar1;\n  long lVar2;\n  long lVar3;\n  undefined8 uVar4;\n  char *pcVar5;\n  int *piVar6;\n  ulong uVar7;\n  char *__ptr;\n  long in_FS_OFFSET;\n  char *local_58;\n  undefined8 local_50;\n  long local_40;\n  \n  uVar7 = (ulong)param_2;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if ((*param_1 == '/') || (param_3 != '\0')) {\n    __ptr = (char *)0x0;\n    pcVar5 = param_1;\nLAB_0010d76b:\n    local_50 = 0;\n    local_58 = pcVar5;\n    if ((char)param_2 != '\0') {\n      lVar2 = FUN_00115010(&local_58,0x10,0);\n      while (lVar3 = fts_read(lVar2), lVar3 != 0) {\n        uVar4 = FUN_0010d185(*(undefined8 *)(lVar2 + 0x20),param_3);\n        uVar7 = (ulong)((uint)uVar7 & (uint)CONCAT71((int7)((ulong)uVar4 >> 8),(int)uVar4 != -1));\n      }\n      piVar6 = __errno_location();\n      if (*piVar6 != 0) {\n        uVar4 = dcgettext(0,"fts_read failed",5);\n        error(0,*piVar6,uVar4);\n        uVar7 = 0;\n      }\n      iVar1 = fts_close(lVar2);\n      if (iVar1 != 0) {\n        uVar4 = dcgettext(0,"fts_close failed",5);\n        error(0,*piVar6,uVar4);\n        uVar7 = 0;\n      }\n      free(__ptr);\n      goto LAB_0010d85a;\n    }\n  }\n  else {\n    __ptr = (char *)FUN_0010e159(param_1,2);\n    pcVar5 = __ptr;\n    if (__ptr != (char *)0x0) goto LAB_0010d76b;\n    pcVar5 = (char *)FUN_00112342(4,param_1);\n    uVar7 = dcgettext(0,"error canonicalizing %s",5);\n    piVar6 = __errno_location();\n    error(1,*piVar6,uVar7,pcVar5);\n  }\n  iVar1 = FUN_0010d185(pcVar5,param_3);\n  uVar7 = CONCAT71((int7)(uVar7 >> 8),iVar1 != -1);\n  free(__ptr);\nLAB_0010d85a:\n  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n  return uVar7 & 0xffffffff;\n}\n\n" (function_definition "ulong FUN_0010d730(char *param_1,uint param_2,char param_3)\n\n{\n  int iVar1;\n  long lVar2;\n  long lVar3;\n  undefined8 uVar4;\n  char *pcVar5;\n  int *piVar6;\n  ulong uVar7;\n  char *__ptr;\n  long in_FS_OFFSET;\n  char *local_58;\n  undefined8 local_50;\n  long local_40;\n  \n  uVar7 = (ulong)param_2;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if ((*param_1 == '/') || (param_3 != '\0')) {\n    __ptr = (char *)0x0;\n    pcVar5 = param_1;\nLAB_0010d76b:\n    local_50 = 0;\n    local_58 = pcVar5;\n    if ((char)param_2 != '\0') {\n      lVar2 = FUN_00115010(&local_58,0x10,0);\n      while (lVar3 = fts_read(lVar2), lVar3 != 0) {\n        uVar4 = FUN_0010d185(*(undefined8 *)(lVar2 + 0x20),param_3);\n        uVar7 = (ulong)((uint)uVar7 & (uint)CONCAT71((int7)((ulong)uVar4 >> 8),(int)uVar4 != -1));\n      }\n      piVar6 = __errno_location();\n      if (*piVar6 != 0) {\n        uVar4 = dcgettext(0,"fts_read failed",5);\n        error(0,*piVar6,uVar4);\n        uVar7 = 0;\n      }\n      iVar1 = fts_close(lVar2);\n      if (iVar1 != 0) {\n        uVar4 = dcgettext(0,"fts_close failed",5);\n        error(0,*piVar6,uVar4);\n        uVar7 = 0;\n      }\n      free(__ptr);\n      goto LAB_0010d85a;\n    }\n  }\n  else {\n    __ptr = (char *)FUN_0010e159(param_1,2);\n    pcVar5 = __ptr;\n    if (__ptr != (char *)0x0) goto LAB_0010d76b;\n    pcVar5 = (char *)FUN_00112342(4,param_1);\n    uVar7 = dcgettext(0,"error canonicalizing %s",5);\n    piVar6 = __errno_location();\n    error(1,*piVar6,uVar7,pcVar5);\n  }\n  iVar1 = FUN_0010d185(pcVar5,param_3);\n  uVar7 = CONCAT71((int7)(uVar7 >> 8),iVar1 != -1);\n  free(__ptr);\nLAB_0010d85a:\n  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n  return uVar7 & 0xffffffff;\n}" type_identifier (function_declarator "FUN_0010d730(char *param_1,uint param_2,char param_3)" identifier (parameter_list "(char *param_1,uint param_2,char param_3)" ( (parameter_declaration "char *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uint param_2" type_identifier identifier) , (parameter_declaration "char param_3" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  long lVar2;\n  long lVar3;\n  undefined8 uVar4;\n  char *pcVar5;\n  int *piVar6;\n  ulong uVar7;\n  char *__ptr;\n  long in_FS_OFFSET;\n  char *local_58;\n  undefined8 local_50;\n  long local_40;\n  \n  uVar7 = (ulong)param_2;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if ((*param_1 == '/') || (param_3 != '\0')) {\n    __ptr = (char *)0x0;\n    pcVar5 = param_1;\nLAB_0010d76b:\n    local_50 = 0;\n    local_58 = pcVar5;\n    if ((char)param_2 != '\0') {\n      lVar2 = FUN_00115010(&local_58,0x10,0);\n      while (lVar3 = fts_read(lVar2), lVar3 != 0) {\n        uVar4 = FUN_0010d185(*(undefined8 *)(lVar2 + 0x20),param_3);\n        uVar7 = (ulong)((uint)uVar7 & (uint)CONCAT71((int7)((ulong)uVar4 >> 8),(int)uVar4 != -1));\n      }\n      piVar6 = __errno_location();\n      if (*piVar6 != 0) {\n        uVar4 = dcgettext(0,"fts_read failed",5);\n        error(0,*piVar6,uVar4);\n        uVar7 = 0;\n      }\n      iVar1 = fts_close(lVar2);\n      if (iVar1 != 0) {\n        uVar4 = dcgettext(0,"fts_close failed",5);\n        error(0,*piVar6,uVar4);\n        uVar7 = 0;\n      }\n      free(__ptr);\n      goto LAB_0010d85a;\n    }\n  }\n  else {\n    __ptr = (char *)FUN_0010e159(param_1,2);\n    pcVar5 = __ptr;\n    if (__ptr != (char *)0x0) goto LAB_0010d76b;\n    pcVar5 = (char *)FUN_00112342(4,param_1);\n    uVar7 = dcgettext(0,"error canonicalizing %s",5);\n    piVar6 = __errno_location();\n    error(1,*piVar6,uVar7,pcVar5);\n  }\n  iVar1 = FUN_0010d185(pcVar5,param_3);\n  uVar7 = CONCAT71((int7)(uVar7 >> 8),iVar1 != -1);\n  free(__ptr);\nLAB_0010d85a:\n  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n  return uVar7 & 0xffffffff;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 uVar4;" type_identifier identifier ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "int *piVar6;" primitive_type (pointer_declarator "*piVar6" * identifier) ;) (declaration "ulong uVar7;" type_identifier identifier ;) (declaration "char *__ptr;" primitive_type (pointer_declarator "*__ptr" * identifier) ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "char *local_58;" primitive_type (pointer_declarator "*local_58" * identifier) ;) (declaration "undefined8 local_50;" type_identifier identifier ;) (declaration "long local_40;" (sized_type_specifier "long" long) identifier ;) (expression_statement "uVar7 = (ulong)param_2;" (assignment_expression "uVar7 = (ulong)param_2" identifier = (cast_expression "(ulong)param_2" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (expression_statement "local_40 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_40 = *(long *)(in_FS_OFFSET + 0x28)" identifier = (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) ))))) ;) (if_statement "if ((*param_1 == '/') || (param_3 != '\0')) {\n    __ptr = (char *)0x0;\n    pcVar5 = param_1;\nLAB_0010d76b:\n    local_50 = 0;\n    local_58 = pcVar5;\n    if ((char)param_2 != '\0') {\n      lVar2 = FUN_00115010(&local_58,0x10,0);\n      while (lVar3 = fts_read(lVar2), lVar3 != 0) {\n        uVar4 = FUN_0010d185(*(undefined8 *)(lVar2 + 0x20),param_3);\n        uVar7 = (ulong)((uint)uVar7 & (uint)CONCAT71((int7)((ulong)uVar4 >> 8),(int)uVar4 != -1));\n      }\n      piVar6 = __errno_location();\n      if (*piVar6 != 0) {\n        uVar4 = dcgettext(0,"fts_read failed",5);\n        error(0,*piVar6,uVar4);\n        uVar7 = 0;\n      }\n      iVar1 = fts_close(lVar2);\n      if (iVar1 != 0) {\n        uVar4 = dcgettext(0,"fts_close failed",5);\n        error(0,*piVar6,uVar4);\n        uVar7 = 0;\n      }\n      free(__ptr);\n      goto LAB_0010d85a;\n    }\n  }\n  else {\n    __ptr = (char *)FUN_0010e159(param_1,2);\n    pcVar5 = __ptr;\n    if (__ptr != (char *)0x0) goto LAB_0010d76b;\n    pcVar5 = (char *)FUN_00112342(4,param_1);\n    uVar7 = dcgettext(0,"error canonicalizing %s",5);\n    piVar6 = __errno_location();\n    error(1,*piVar6,uVar7,pcVar5);\n  }" if (parenthesized_expression "((*param_1 == '/') || (param_3 != '\0'))" ( (binary_expression "(*param_1 == '/') || (param_3 != '\0')" (parenthesized_expression "(*param_1 == '/')" ( (binary_expression "*param_1 == '/'" (pointer_expression "*param_1" * identifier) == (char_literal "'/'" ' character ')) )) || (parenthesized_expression "(param_3 != '\0')" ( (binary_expression "param_3 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n    __ptr = (char *)0x0;\n    pcVar5 = param_1;\nLAB_0010d76b:\n    local_50 = 0;\n    local_58 = pcVar5;\n    if ((char)param_2 != '\0') {\n      lVar2 = FUN_00115010(&local_58,0x10,0);\n      while (lVar3 = fts_read(lVar2), lVar3 != 0) {\n        uVar4 = FUN_0010d185(*(undefined8 *)(lVar2 + 0x20),param_3);\n        uVar7 = (ulong)((uint)uVar7 & (uint)CONCAT71((int7)((ulong)uVar4 >> 8),(int)uVar4 != -1));\n      }\n      piVar6 = __errno_location();\n      if (*piVar6 != 0) {\n        uVar4 = dcgettext(0,"fts_read failed",5);\n        error(0,*piVar6,uVar4);\n        uVar7 = 0;\n      }\n      iVar1 = fts_close(lVar2);\n      if (iVar1 != 0) {\n        uVar4 = dcgettext(0,"fts_close failed",5);\n        error(0,*piVar6,uVar4);\n        uVar7 = 0;\n      }\n      free(__ptr);\n      goto LAB_0010d85a;\n    }\n  }" { (expression_statement "__ptr = (char *)0x0;" (assignment_expression "__ptr = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pcVar5 = param_1;" (assignment_expression "pcVar5 = param_1" identifier = identifier) ;) (labeled_statement "LAB_0010d76b:\n    local_50 = 0;" statement_identifier : (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" identifier = number_literal) ;)) (expression_statement "local_58 = pcVar5;" (assignment_expression "local_58 = pcVar5" identifier = identifier) ;) (if_statement "if ((char)param_2 != '\0') {\n      lVar2 = FUN_00115010(&local_58,0x10,0);\n      while (lVar3 = fts_read(lVar2), lVar3 != 0) {\n        uVar4 = FUN_0010d185(*(undefined8 *)(lVar2 + 0x20),param_3);\n        uVar7 = (ulong)((uint)uVar7 & (uint)CONCAT71((int7)((ulong)uVar4 >> 8),(int)uVar4 != -1));\n      }\n      piVar6 = __errno_location();\n      if (*piVar6 != 0) {\n        uVar4 = dcgettext(0,"fts_read failed",5);\n        error(0,*piVar6,uVar4);\n        uVar7 = 0;\n      }\n      iVar1 = fts_close(lVar2);\n      if (iVar1 != 0) {\n        uVar4 = dcgettext(0,"fts_close failed",5);\n        error(0,*piVar6,uVar4);\n        uVar7 = 0;\n      }\n      free(__ptr);\n      goto LAB_0010d85a;\n    }" if (parenthesized_expression "((char)param_2 != '\0')" ( (binary_expression "(char)param_2 != '\0'" (cast_expression "(char)param_2" ( (type_descriptor "char" primitive_type) ) identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      lVar2 = FUN_00115010(&local_58,0x10,0);\n      while (lVar3 = fts_read(lVar2), lVar3 != 0) {\n        uVar4 = FUN_0010d185(*(undefined8 *)(lVar2 + 0x20),param_3);\n        uVar7 = (ulong)((uint)uVar7 & (uint)CONCAT71((int7)((ulong)uVar4 >> 8),(int)uVar4 != -1));\n      }\n      piVar6 = __errno_location();\n      if (*piVar6 != 0) {\n        uVar4 = dcgettext(0,"fts_read failed",5);\n        error(0,*piVar6,uVar4);\n        uVar7 = 0;\n      }\n      iVar1 = fts_close(lVar2);\n      if (iVar1 != 0) {\n        uVar4 = dcgettext(0,"fts_close failed",5);\n        error(0,*piVar6,uVar4);\n        uVar7 = 0;\n      }\n      free(__ptr);\n      goto LAB_0010d85a;\n    }" { (expression_statement "lVar2 = FUN_00115010(&local_58,0x10,0);" (assignment_expression "lVar2 = FUN_00115010(&local_58,0x10,0)" identifier = (call_expression "FUN_00115010(&local_58,0x10,0)" identifier (argument_list "(&local_58,0x10,0)" ( (pointer_expression "&local_58" & identifier) , number_literal , number_literal )))) ;) (while_statement "while (lVar3 = fts_read(lVar2), lVar3 != 0) {\n        uVar4 = FUN_0010d185(*(undefined8 *)(lVar2 + 0x20),param_3);\n        uVar7 = (ulong)((uint)uVar7 & (uint)CONCAT71((int7)((ulong)uVar4 >> 8),(int)uVar4 != -1));\n      }" while (parenthesized_expression "(lVar3 = fts_read(lVar2), lVar3 != 0)" ( (comma_expression "lVar3 = fts_read(lVar2), lVar3 != 0" (assignment_expression "lVar3 = fts_read(lVar2)" identifier = (call_expression "fts_read(lVar2)" identifier (argument_list "(lVar2)" ( identifier )))) , (binary_expression "lVar3 != 0" identifier != number_literal)) )) (compound_statement "{\n        uVar4 = FUN_0010d185(*(undefined8 *)(lVar2 + 0x20),param_3);\n        uVar7 = (ulong)((uint)uVar7 & (uint)CONCAT71((int7)((ulong)uVar4 >> 8),(int)uVar4 != -1));\n      }" { (expression_statement "uVar4 = FUN_0010d185(*(undefined8 *)(lVar2 + 0x20),param_3);" (assignment_expression "uVar4 = FUN_0010d185(*(undefined8 *)(lVar2 + 0x20),param_3)" identifier = (call_expression "FUN_0010d185(*(undefined8 *)(lVar2 + 0x20),param_3)" identifier (argument_list "(*(undefined8 *)(lVar2 + 0x20),param_3)" ( (pointer_expression "*(undefined8 *)(lVar2 + 0x20)" * (cast_expression "(undefined8 *)(lVar2 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x20)" ( (binary_expression "lVar2 + 0x20" identifier + number_literal) )))) , identifier )))) ;) (expression_statement "uVar7 = (ulong)((uint)uVar7 & (uint)CONCAT71((int7)((ulong)uVar4 >> 8),(int)uVar4 != -1));" (assignment_expression "uVar7 = (ulong)((uint)uVar7 & (uint)CONCAT71((int7)((ulong)uVar4 >> 8),(int)uVar4 != -1))" identifier = (call_expression "(ulong)((uint)uVar7 & (uint)CONCAT71((int7)((ulong)uVar4 >> 8),(int)uVar4 != -1))" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((uint)uVar7 & (uint)CONCAT71((int7)((ulong)uVar4 >> 8),(int)uVar4 != -1))" ( (binary_expression "(uint)uVar7 & (uint)CONCAT71((int7)((ulong)uVar4 >> 8),(int)uVar4 != -1)" (cast_expression "(uint)uVar7" ( (type_descriptor "uint" type_identifier) ) identifier) & (cast_expression "(uint)CONCAT71((int7)((ulong)uVar4 >> 8),(int)uVar4 != -1)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CONCAT71((int7)((ulong)uVar4 >> 8),(int)uVar4 != -1)" identifier (argument_list "((int7)((ulong)uVar4 >> 8),(int)uVar4 != -1)" ( (call_expression "(int7)((ulong)uVar4 >> 8)" (parenthesized_expression "(int7)" ( identifier )) (argument_list "((ulong)uVar4 >> 8)" ( (binary_expression "(ulong)uVar4 >> 8" (cast_expression "(ulong)uVar4" ( (type_descriptor "ulong" type_identifier) ) identifier) >> number_literal) ))) , (binary_expression "(int)uVar4 != -1" (cast_expression "(int)uVar4" ( (type_descriptor "int" primitive_type) ) identifier) != number_literal) ))))) )))) ;) })) (expression_statement "piVar6 = __errno_location();" (assignment_expression "piVar6 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (if_statement "if (*piVar6 != 0) {\n        uVar4 = dcgettext(0,"fts_read failed",5);\n        error(0,*piVar6,uVar4);\n        uVar7 = 0;\n      }" if (parenthesized_expression "(*piVar6 != 0)" ( (binary_expression "*piVar6 != 0" (pointer_expression "*piVar6" * identifier) != number_literal) )) (compound_statement "{\n        uVar4 = dcgettext(0,"fts_read failed",5);\n        error(0,*piVar6,uVar4);\n        uVar7 = 0;\n      }" { (expression_statement "uVar4 = dcgettext(0,"fts_read failed",5);" (assignment_expression "uVar4 = dcgettext(0,"fts_read failed",5)" identifier = (call_expression "dcgettext(0,"fts_read failed",5)" identifier (argument_list "(0,"fts_read failed",5)" ( number_literal , (string_literal ""fts_read failed"" " string_content ") , number_literal )))) ;) (expression_statement "error(0,*piVar6,uVar4);" (call_expression "error(0,*piVar6,uVar4)" identifier (argument_list "(0,*piVar6,uVar4)" ( number_literal , (pointer_expression "*piVar6" * identifier) , identifier ))) ;) (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;) })) (expression_statement "iVar1 = fts_close(lVar2);" (assignment_expression "iVar1 = fts_close(lVar2)" identifier = (call_expression "fts_close(lVar2)" identifier (argument_list "(lVar2)" ( identifier )))) ;) (if_statement "if (iVar1 != 0) {\n        uVar4 = dcgettext(0,"fts_close failed",5);\n        error(0,*piVar6,uVar4);\n        uVar7 = 0;\n      }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n        uVar4 = dcgettext(0,"fts_close failed",5);\n        error(0,*piVar6,uVar4);\n        uVar7 = 0;\n      }" { (expression_statement "uVar4 = dcgettext(0,"fts_close failed",5);" (assignment_expression "uVar4 = dcgettext(0,"fts_close failed",5)" identifier = (call_expression "dcgettext(0,"fts_close failed",5)" identifier (argument_list "(0,"fts_close failed",5)" ( number_literal , (string_literal ""fts_close failed"" " string_content ") , number_literal )))) ;) (expression_statement "error(0,*piVar6,uVar4);" (call_expression "error(0,*piVar6,uVar4)" identifier (argument_list "(0,*piVar6,uVar4)" ( number_literal , (pointer_expression "*piVar6" * identifier) , identifier ))) ;) (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;) })) (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) (goto_statement "goto LAB_0010d85a;" goto statement_identifier ;) })) }) (else_clause "else {\n    __ptr = (char *)FUN_0010e159(param_1,2);\n    pcVar5 = __ptr;\n    if (__ptr != (char *)0x0) goto LAB_0010d76b;\n    pcVar5 = (char *)FUN_00112342(4,param_1);\n    uVar7 = dcgettext(0,"error canonicalizing %s",5);\n    piVar6 = __errno_location();\n    error(1,*piVar6,uVar7,pcVar5);\n  }" else (compound_statement "{\n    __ptr = (char *)FUN_0010e159(param_1,2);\n    pcVar5 = __ptr;\n    if (__ptr != (char *)0x0) goto LAB_0010d76b;\n    pcVar5 = (char *)FUN_00112342(4,param_1);\n    uVar7 = dcgettext(0,"error canonicalizing %s",5);\n    piVar6 = __errno_location();\n    error(1,*piVar6,uVar7,pcVar5);\n  }" { (expression_statement "__ptr = (char *)FUN_0010e159(param_1,2);" (assignment_expression "__ptr = (char *)FUN_0010e159(param_1,2)" identifier = (cast_expression "(char *)FUN_0010e159(param_1,2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0010e159(param_1,2)" identifier (argument_list "(param_1,2)" ( identifier , number_literal ))))) ;) (expression_statement "pcVar5 = __ptr;" (assignment_expression "pcVar5 = __ptr" identifier = identifier) ;) (if_statement "if (__ptr != (char *)0x0) goto LAB_0010d76b;" if (parenthesized_expression "(__ptr != (char *)0x0)" ( (binary_expression "__ptr != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0010d76b;" goto statement_identifier ;)) (expression_statement "pcVar5 = (char *)FUN_00112342(4,param_1);" (assignment_expression "pcVar5 = (char *)FUN_00112342(4,param_1)" identifier = (cast_expression "(char *)FUN_00112342(4,param_1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00112342(4,param_1)" identifier (argument_list "(4,param_1)" ( number_literal , identifier ))))) ;) (expression_statement "uVar7 = dcgettext(0,"error canonicalizing %s",5);" (assignment_expression "uVar7 = dcgettext(0,"error canonicalizing %s",5)" identifier = (call_expression "dcgettext(0,"error canonicalizing %s",5)" identifier (argument_list "(0,"error canonicalizing %s",5)" ( number_literal , (string_literal ""error canonicalizing %s"" " string_content ") , number_literal )))) ;) (expression_statement "piVar6 = __errno_location();" (assignment_expression "piVar6 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "error(1,*piVar6,uVar7,pcVar5);" (call_expression "error(1,*piVar6,uVar7,pcVar5)" identifier (argument_list "(1,*piVar6,uVar7,pcVar5)" ( number_literal , (pointer_expression "*piVar6" * identifier) , identifier , identifier ))) ;) }))) (expression_statement "iVar1 = FUN_0010d185(pcVar5,param_3);" (assignment_expression "iVar1 = FUN_0010d185(pcVar5,param_3)" identifier = (call_expression "FUN_0010d185(pcVar5,param_3)" identifier (argument_list "(pcVar5,param_3)" ( identifier , identifier )))) ;) (expression_statement "uVar7 = CONCAT71((int7)(uVar7 >> 8),iVar1 != -1);" (assignment_expression "uVar7 = CONCAT71((int7)(uVar7 >> 8),iVar1 != -1)" identifier = (call_expression "CONCAT71((int7)(uVar7 >> 8),iVar1 != -1)" identifier (argument_list "((int7)(uVar7 >> 8),iVar1 != -1)" ( (call_expression "(int7)(uVar7 >> 8)" (parenthesized_expression "(int7)" ( identifier )) (argument_list "(uVar7 >> 8)" ( (binary_expression "uVar7 >> 8" identifier >> number_literal) ))) , (binary_expression "iVar1 != -1" identifier != number_literal) )))) ;) (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) (labeled_statement "LAB_0010d85a:\n  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }" statement_identifier : (if_statement "if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }" if (parenthesized_expression "(local_40 != *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "local_40 != *(long *)(in_FS_OFFSET + 0x28)" identifier != (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    __stack_chk_fail();\n  }" { comment (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return uVar7 & 0xffffffff;" return (binary_expression "uVar7 & 0xffffffff" identifier & number_literal) ;) })))
(translation_unit "_Bool restorecon(char *path,_Bool recurse,_Bool local)\n\n{\n  long lVar1;\n  int iVar2;\n  FTS *sp;\n  FTSENT *pFVar3;\n  char *path_00;\n  int *piVar4;\n  undefined8 uVar5;\n  char *__ptr;\n  long in_FS_OFFSET;\n  char *ftspath [2];\n  \n  lVar1 = *(long *)(in_FS_OFFSET + 0x28);\n  if ((*path == '/') || (local)) {\n    __ptr = (char *)0x0;\n    path_00 = path;\nLAB_0010d76b:\n    ftspath[1] = (char *)0x0;\n    ftspath[0] = path_00;\n    if (recurse) {\n      sp = xfts_open(ftspath,0x10,(_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0);\n      while (pFVar3 = fts_read(sp), pFVar3 != (FTSENT *)0x0) {\n        iVar2 = restorecon_private(sp->fts_path,local);\n        recurse = (_Bool)(recurse & iVar2 != -1);\n      }\n      piVar4 = __errno_location();\n      if (*piVar4 != 0) {\n        uVar5 = dcgettext(0,"fts_read failed",5);\n        error(0,*piVar4,uVar5);\n        recurse = false;\n      }\n      iVar2 = fts_close(sp);\n      if (iVar2 != 0) {\n        uVar5 = dcgettext(0,"fts_close failed",5);\n        error(0,*piVar4,uVar5);\n        recurse = false;\n      }\n      free(__ptr);\n      goto LAB_0010d85a;\n    }\n  }\n  else {\n    __ptr = canonicalize_filename_mode(path,CAN_MISSING);\n    path_00 = __ptr;\n    if (__ptr != (char *)0x0) goto LAB_0010d76b;\n    path_00 = quotearg_style(shell_escape_always_quoting_style,path);\n    uVar5 = dcgettext(0,"error canonicalizing %s",5);\n    piVar4 = __errno_location();\n    error(1,*piVar4,uVar5,path_00);\n  }\n  iVar2 = restorecon_private(path_00,local);\n  recurse = iVar2 != -1;\n  free(__ptr);\nLAB_0010d85a:\n  if (lVar1 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n  return recurse;\n}\n\n" (function_definition "_Bool restorecon(char *path,_Bool recurse,_Bool local)\n\n{\n  long lVar1;\n  int iVar2;\n  FTS *sp;\n  FTSENT *pFVar3;\n  char *path_00;\n  int *piVar4;\n  undefined8 uVar5;\n  char *__ptr;\n  long in_FS_OFFSET;\n  char *ftspath [2];\n  \n  lVar1 = *(long *)(in_FS_OFFSET + 0x28);\n  if ((*path == '/') || (local)) {\n    __ptr = (char *)0x0;\n    path_00 = path;\nLAB_0010d76b:\n    ftspath[1] = (char *)0x0;\n    ftspath[0] = path_00;\n    if (recurse) {\n      sp = xfts_open(ftspath,0x10,(_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0);\n      while (pFVar3 = fts_read(sp), pFVar3 != (FTSENT *)0x0) {\n        iVar2 = restorecon_private(sp->fts_path,local);\n        recurse = (_Bool)(recurse & iVar2 != -1);\n      }\n      piVar4 = __errno_location();\n      if (*piVar4 != 0) {\n        uVar5 = dcgettext(0,"fts_read failed",5);\n        error(0,*piVar4,uVar5);\n        recurse = false;\n      }\n      iVar2 = fts_close(sp);\n      if (iVar2 != 0) {\n        uVar5 = dcgettext(0,"fts_close failed",5);\n        error(0,*piVar4,uVar5);\n        recurse = false;\n      }\n      free(__ptr);\n      goto LAB_0010d85a;\n    }\n  }\n  else {\n    __ptr = canonicalize_filename_mode(path,CAN_MISSING);\n    path_00 = __ptr;\n    if (__ptr != (char *)0x0) goto LAB_0010d76b;\n    path_00 = quotearg_style(shell_escape_always_quoting_style,path);\n    uVar5 = dcgettext(0,"error canonicalizing %s",5);\n    piVar4 = __errno_location();\n    error(1,*piVar4,uVar5,path_00);\n  }\n  iVar2 = restorecon_private(path_00,local);\n  recurse = iVar2 != -1;\n  free(__ptr);\nLAB_0010d85a:\n  if (lVar1 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n  return recurse;\n}" type_identifier (function_declarator "restorecon(char *path,_Bool recurse,_Bool local)" identifier (parameter_list "(char *path,_Bool recurse,_Bool local)" ( (parameter_declaration "char *path" primitive_type (pointer_declarator "*path" * identifier)) , (parameter_declaration "_Bool recurse" type_identifier identifier) , (parameter_declaration "_Bool local" type_identifier identifier) ))) (compound_statement "{\n  long lVar1;\n  int iVar2;\n  FTS *sp;\n  FTSENT *pFVar3;\n  char *path_00;\n  int *piVar4;\n  undefined8 uVar5;\n  char *__ptr;\n  long in_FS_OFFSET;\n  char *ftspath [2];\n  \n  lVar1 = *(long *)(in_FS_OFFSET + 0x28);\n  if ((*path == '/') || (local)) {\n    __ptr = (char *)0x0;\n    path_00 = path;\nLAB_0010d76b:\n    ftspath[1] = (char *)0x0;\n    ftspath[0] = path_00;\n    if (recurse) {\n      sp = xfts_open(ftspath,0x10,(_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0);\n      while (pFVar3 = fts_read(sp), pFVar3 != (FTSENT *)0x0) {\n        iVar2 = restorecon_private(sp->fts_path,local);\n        recurse = (_Bool)(recurse & iVar2 != -1);\n      }\n      piVar4 = __errno_location();\n      if (*piVar4 != 0) {\n        uVar5 = dcgettext(0,"fts_read failed",5);\n        error(0,*piVar4,uVar5);\n        recurse = false;\n      }\n      iVar2 = fts_close(sp);\n      if (iVar2 != 0) {\n        uVar5 = dcgettext(0,"fts_close failed",5);\n        error(0,*piVar4,uVar5);\n        recurse = false;\n      }\n      free(__ptr);\n      goto LAB_0010d85a;\n    }\n  }\n  else {\n    __ptr = canonicalize_filename_mode(path,CAN_MISSING);\n    path_00 = __ptr;\n    if (__ptr != (char *)0x0) goto LAB_0010d76b;\n    path_00 = quotearg_style(shell_escape_always_quoting_style,path);\n    uVar5 = dcgettext(0,"error canonicalizing %s",5);\n    piVar4 = __errno_location();\n    error(1,*piVar4,uVar5,path_00);\n  }\n  iVar2 = restorecon_private(path_00,local);\n  recurse = iVar2 != -1;\n  free(__ptr);\nLAB_0010d85a:\n  if (lVar1 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n  return recurse;\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "FTS *sp;" type_identifier (pointer_declarator "*sp" * identifier) ;) (declaration "FTSENT *pFVar3;" type_identifier (pointer_declarator "*pFVar3" * identifier) ;) (declaration "char *path_00;" primitive_type (pointer_declarator "*path_00" * identifier) ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "undefined8 uVar5;" type_identifier identifier ;) (declaration "char *__ptr;" primitive_type (pointer_declarator "*__ptr" * identifier) ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "char *ftspath [2];" primitive_type (pointer_declarator "*ftspath [2]" * (array_declarator "ftspath [2]" identifier [ number_literal ])) ;) (expression_statement "lVar1 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "lVar1 = *(long *)(in_FS_OFFSET + 0x28)" identifier = (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) ))))) ;) (if_statement "if ((*path == '/') || (local)) {\n    __ptr = (char *)0x0;\n    path_00 = path;\nLAB_0010d76b:\n    ftspath[1] = (char *)0x0;\n    ftspath[0] = path_00;\n    if (recurse) {\n      sp = xfts_open(ftspath,0x10,(_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0);\n      while (pFVar3 = fts_read(sp), pFVar3 != (FTSENT *)0x0) {\n        iVar2 = restorecon_private(sp->fts_path,local);\n        recurse = (_Bool)(recurse & iVar2 != -1);\n      }\n      piVar4 = __errno_location();\n      if (*piVar4 != 0) {\n        uVar5 = dcgettext(0,"fts_read failed",5);\n        error(0,*piVar4,uVar5);\n        recurse = false;\n      }\n      iVar2 = fts_close(sp);\n      if (iVar2 != 0) {\n        uVar5 = dcgettext(0,"fts_close failed",5);\n        error(0,*piVar4,uVar5);\n        recurse = false;\n      }\n      free(__ptr);\n      goto LAB_0010d85a;\n    }\n  }\n  else {\n    __ptr = canonicalize_filename_mode(path,CAN_MISSING);\n    path_00 = __ptr;\n    if (__ptr != (char *)0x0) goto LAB_0010d76b;\n    path_00 = quotearg_style(shell_escape_always_quoting_style,path);\n    uVar5 = dcgettext(0,"error canonicalizing %s",5);\n    piVar4 = __errno_location();\n    error(1,*piVar4,uVar5,path_00);\n  }" if (parenthesized_expression "((*path == '/') || (local))" ( (binary_expression "(*path == '/') || (local)" (parenthesized_expression "(*path == '/')" ( (binary_expression "*path == '/'" (pointer_expression "*path" * identifier) == (char_literal "'/'" ' character ')) )) || (parenthesized_expression "(local)" ( identifier ))) )) (compound_statement "{\n    __ptr = (char *)0x0;\n    path_00 = path;\nLAB_0010d76b:\n    ftspath[1] = (char *)0x0;\n    ftspath[0] = path_00;\n    if (recurse) {\n      sp = xfts_open(ftspath,0x10,(_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0);\n      while (pFVar3 = fts_read(sp), pFVar3 != (FTSENT *)0x0) {\n        iVar2 = restorecon_private(sp->fts_path,local);\n        recurse = (_Bool)(recurse & iVar2 != -1);\n      }\n      piVar4 = __errno_location();\n      if (*piVar4 != 0) {\n        uVar5 = dcgettext(0,"fts_read failed",5);\n        error(0,*piVar4,uVar5);\n        recurse = false;\n      }\n      iVar2 = fts_close(sp);\n      if (iVar2 != 0) {\n        uVar5 = dcgettext(0,"fts_close failed",5);\n        error(0,*piVar4,uVar5);\n        recurse = false;\n      }\n      free(__ptr);\n      goto LAB_0010d85a;\n    }\n  }" { (expression_statement "__ptr = (char *)0x0;" (assignment_expression "__ptr = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "path_00 = path;" (assignment_expression "path_00 = path" identifier = identifier) ;) (labeled_statement "LAB_0010d76b:\n    ftspath[1] = (char *)0x0;" statement_identifier : (expression_statement "ftspath[1] = (char *)0x0;" (assignment_expression "ftspath[1] = (char *)0x0" (subscript_expression "ftspath[1]" identifier [ number_literal ]) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (expression_statement "ftspath[0] = path_00;" (assignment_expression "ftspath[0] = path_00" (subscript_expression "ftspath[0]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (recurse) {\n      sp = xfts_open(ftspath,0x10,(_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0);\n      while (pFVar3 = fts_read(sp), pFVar3 != (FTSENT *)0x0) {\n        iVar2 = restorecon_private(sp->fts_path,local);\n        recurse = (_Bool)(recurse & iVar2 != -1);\n      }\n      piVar4 = __errno_location();\n      if (*piVar4 != 0) {\n        uVar5 = dcgettext(0,"fts_read failed",5);\n        error(0,*piVar4,uVar5);\n        recurse = false;\n      }\n      iVar2 = fts_close(sp);\n      if (iVar2 != 0) {\n        uVar5 = dcgettext(0,"fts_close failed",5);\n        error(0,*piVar4,uVar5);\n        recurse = false;\n      }\n      free(__ptr);\n      goto LAB_0010d85a;\n    }" if (parenthesized_expression "(recurse)" ( identifier )) (compound_statement "{\n      sp = xfts_open(ftspath,0x10,(_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0);\n      while (pFVar3 = fts_read(sp), pFVar3 != (FTSENT *)0x0) {\n        iVar2 = restorecon_private(sp->fts_path,local);\n        recurse = (_Bool)(recurse & iVar2 != -1);\n      }\n      piVar4 = __errno_location();\n      if (*piVar4 != 0) {\n        uVar5 = dcgettext(0,"fts_read failed",5);\n        error(0,*piVar4,uVar5);\n        recurse = false;\n      }\n      iVar2 = fts_close(sp);\n      if (iVar2 != 0) {\n        uVar5 = dcgettext(0,"fts_close failed",5);\n        error(0,*piVar4,uVar5);\n        recurse = false;\n      }\n      free(__ptr);\n      goto LAB_0010d85a;\n    }" { (expression_statement "sp = xfts_open(ftspath,0x10,(_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0);" (assignment_expression "sp = xfts_open(ftspath,0x10,(_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0)" identifier = (call_expression "xfts_open(ftspath,0x10,(_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0)" identifier (argument_list "(ftspath,0x10,(_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0)" ( identifier , number_literal , (cast_expression "(_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0" ( (type_descriptor "_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) )))) ;) (while_statement "while (pFVar3 = fts_read(sp), pFVar3 != (FTSENT *)0x0) {\n        iVar2 = restorecon_private(sp->fts_path,local);\n        recurse = (_Bool)(recurse & iVar2 != -1);\n      }" while (parenthesized_expression "(pFVar3 = fts_read(sp), pFVar3 != (FTSENT *)0x0)" ( (comma_expression "pFVar3 = fts_read(sp), pFVar3 != (FTSENT *)0x0" (assignment_expression "pFVar3 = fts_read(sp)" identifier = (call_expression "fts_read(sp)" identifier (argument_list "(sp)" ( identifier )))) , (binary_expression "pFVar3 != (FTSENT *)0x0" identifier != (cast_expression "(FTSENT *)0x0" ( (type_descriptor "FTSENT *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) )) (compound_statement "{\n        iVar2 = restorecon_private(sp->fts_path,local);\n        recurse = (_Bool)(recurse & iVar2 != -1);\n      }" { (expression_statement "iVar2 = restorecon_private(sp->fts_path,local);" (assignment_expression "iVar2 = restorecon_private(sp->fts_path,local)" identifier = (call_expression "restorecon_private(sp->fts_path,local)" identifier (argument_list "(sp->fts_path,local)" ( (field_expression "sp->fts_path" identifier -> field_identifier) , identifier )))) ;) (expression_statement "recurse = (_Bool)(recurse & iVar2 != -1);" (assignment_expression "recurse = (_Bool)(recurse & iVar2 != -1)" identifier = (call_expression "(_Bool)(recurse & iVar2 != -1)" (parenthesized_expression "(_Bool)" ( identifier )) (argument_list "(recurse & iVar2 != -1)" ( (binary_expression "recurse & iVar2 != -1" identifier & (binary_expression "iVar2 != -1" identifier != number_literal)) )))) ;) })) (expression_statement "piVar4 = __errno_location();" (assignment_expression "piVar4 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (if_statement "if (*piVar4 != 0) {\n        uVar5 = dcgettext(0,"fts_read failed",5);\n        error(0,*piVar4,uVar5);\n        recurse = false;\n      }" if (parenthesized_expression "(*piVar4 != 0)" ( (binary_expression "*piVar4 != 0" (pointer_expression "*piVar4" * identifier) != number_literal) )) (compound_statement "{\n        uVar5 = dcgettext(0,"fts_read failed",5);\n        error(0,*piVar4,uVar5);\n        recurse = false;\n      }" { (expression_statement "uVar5 = dcgettext(0,"fts_read failed",5);" (assignment_expression "uVar5 = dcgettext(0,"fts_read failed",5)" identifier = (call_expression "dcgettext(0,"fts_read failed",5)" identifier (argument_list "(0,"fts_read failed",5)" ( number_literal , (string_literal ""fts_read failed"" " string_content ") , number_literal )))) ;) (expression_statement "error(0,*piVar4,uVar5);" (call_expression "error(0,*piVar4,uVar5)" identifier (argument_list "(0,*piVar4,uVar5)" ( number_literal , (pointer_expression "*piVar4" * identifier) , identifier ))) ;) (expression_statement "recurse = false;" (assignment_expression "recurse = false" identifier = false) ;) })) (expression_statement "iVar2 = fts_close(sp);" (assignment_expression "iVar2 = fts_close(sp)" identifier = (call_expression "fts_close(sp)" identifier (argument_list "(sp)" ( identifier )))) ;) (if_statement "if (iVar2 != 0) {\n        uVar5 = dcgettext(0,"fts_close failed",5);\n        error(0,*piVar4,uVar5);\n        recurse = false;\n      }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n        uVar5 = dcgettext(0,"fts_close failed",5);\n        error(0,*piVar4,uVar5);\n        recurse = false;\n      }" { (expression_statement "uVar5 = dcgettext(0,"fts_close failed",5);" (assignment_expression "uVar5 = dcgettext(0,"fts_close failed",5)" identifier = (call_expression "dcgettext(0,"fts_close failed",5)" identifier (argument_list "(0,"fts_close failed",5)" ( number_literal , (string_literal ""fts_close failed"" " string_content ") , number_literal )))) ;) (expression_statement "error(0,*piVar4,uVar5);" (call_expression "error(0,*piVar4,uVar5)" identifier (argument_list "(0,*piVar4,uVar5)" ( number_literal , (pointer_expression "*piVar4" * identifier) , identifier ))) ;) (expression_statement "recurse = false;" (assignment_expression "recurse = false" identifier = false) ;) })) (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) (goto_statement "goto LAB_0010d85a;" goto statement_identifier ;) })) }) (else_clause "else {\n    __ptr = canonicalize_filename_mode(path,CAN_MISSING);\n    path_00 = __ptr;\n    if (__ptr != (char *)0x0) goto LAB_0010d76b;\n    path_00 = quotearg_style(shell_escape_always_quoting_style,path);\n    uVar5 = dcgettext(0,"error canonicalizing %s",5);\n    piVar4 = __errno_location();\n    error(1,*piVar4,uVar5,path_00);\n  }" else (compound_statement "{\n    __ptr = canonicalize_filename_mode(path,CAN_MISSING);\n    path_00 = __ptr;\n    if (__ptr != (char *)0x0) goto LAB_0010d76b;\n    path_00 = quotearg_style(shell_escape_always_quoting_style,path);\n    uVar5 = dcgettext(0,"error canonicalizing %s",5);\n    piVar4 = __errno_location();\n    error(1,*piVar4,uVar5,path_00);\n  }" { (expression_statement "__ptr = canonicalize_filename_mode(path,CAN_MISSING);" (assignment_expression "__ptr = canonicalize_filename_mode(path,CAN_MISSING)" identifier = (call_expression "canonicalize_filename_mode(path,CAN_MISSING)" identifier (argument_list "(path,CAN_MISSING)" ( identifier , identifier )))) ;) (expression_statement "path_00 = __ptr;" (assignment_expression "path_00 = __ptr" identifier = identifier) ;) (if_statement "if (__ptr != (char *)0x0) goto LAB_0010d76b;" if (parenthesized_expression "(__ptr != (char *)0x0)" ( (binary_expression "__ptr != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0010d76b;" goto statement_identifier ;)) (expression_statement "path_00 = quotearg_style(shell_escape_always_quoting_style,path);" (assignment_expression "path_00 = quotearg_style(shell_escape_always_quoting_style,path)" identifier = (call_expression "quotearg_style(shell_escape_always_quoting_style,path)" identifier (argument_list "(shell_escape_always_quoting_style,path)" ( identifier , identifier )))) ;) (expression_statement "uVar5 = dcgettext(0,"error canonicalizing %s",5);" (assignment_expression "uVar5 = dcgettext(0,"error canonicalizing %s",5)" identifier = (call_expression "dcgettext(0,"error canonicalizing %s",5)" identifier (argument_list "(0,"error canonicalizing %s",5)" ( number_literal , (string_literal ""error canonicalizing %s"" " string_content ") , number_literal )))) ;) (expression_statement "piVar4 = __errno_location();" (assignment_expression "piVar4 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "error(1,*piVar4,uVar5,path_00);" (call_expression "error(1,*piVar4,uVar5,path_00)" identifier (argument_list "(1,*piVar4,uVar5,path_00)" ( number_literal , (pointer_expression "*piVar4" * identifier) , identifier , identifier ))) ;) }))) (expression_statement "iVar2 = restorecon_private(path_00,local);" (assignment_expression "iVar2 = restorecon_private(path_00,local)" identifier = (call_expression "restorecon_private(path_00,local)" identifier (argument_list "(path_00,local)" ( identifier , identifier )))) ;) (expression_statement "recurse = iVar2 != -1;" (assignment_expression "recurse = iVar2 != -1" identifier = (binary_expression "iVar2 != -1" identifier != number_literal)) ;) (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) (labeled_statement "LAB_0010d85a:\n  if (lVar1 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }" statement_identifier : (if_statement "if (lVar1 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }" if (parenthesized_expression "(lVar1 != *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "lVar1 != *(long *)(in_FS_OFFSET + 0x28)" identifier != (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    __stack_chk_fail();\n  }" { comment (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return recurse;" return identifier ;) })))
(translation_unit "ulong FUN_0010d730(char *param_1,uint param_2,char param_3)\n\n{\n  int iVar1;\n  long lVar2;\n  long lVar3;\n  undefined8 uVar4;\n  char *pcVar5;\n  int *piVar6;\n  ulong uVar7;\n  char *__ptr;\n  long in_FS_OFFSET;\n  char *local_58;\n  undefined8 local_50;\n  long local_40;\n  \n  uVar7 = (ulong)param_2;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if ((*param_1 == '/') || (param_3 != '\0')) {\n    __ptr = (char *)0x0;\n    pcVar5 = param_1;\nLAB_0010d76b:\n    local_50 = 0;\n    local_58 = pcVar5;\n    if ((char)param_2 != '\0') {\n      lVar2 = FUN_00115010(&local_58,0x10,0);\n      while (lVar3 = fts_read(lVar2), lVar3 != 0) {\n        uVar4 = FUN_0010d185(*(undefined8 *)(lVar2 + 0x20),param_3);\n        uVar7 = (ulong)((uint)uVar7 & (uint)CONCAT71((int7)((ulong)uVar4 >> 8),(int)uVar4 != -1));\n      }\n      piVar6 = __errno_location();\n      if (*piVar6 != 0) {\n        uVar4 = dcgettext(0,"fts_read failed",5);\n        error(0,*piVar6,uVar4);\n        uVar7 = 0;\n      }\n      iVar1 = fts_close(lVar2);\n      if (iVar1 != 0) {\n        uVar4 = dcgettext(0,"fts_close failed",5);\n        error(0,*piVar6,uVar4);\n        uVar7 = 0;\n      }\n      free(__ptr);\n      goto LAB_0010d85a;\n    }\n  }\n  else {\n    __ptr = (char *)FUN_0010e159(param_1,2);\n    pcVar5 = __ptr;\n    if (__ptr != (char *)0x0) goto LAB_0010d76b;\n    pcVar5 = (char *)FUN_00112342(4,param_1);\n    uVar7 = dcgettext(0,"error canonicalizing %s",5);\n    piVar6 = __errno_location();\n    error(1,*piVar6,uVar7,pcVar5);\n  }\n  iVar1 = FUN_0010d185(pcVar5,param_3);\n  uVar7 = CONCAT71((int7)(uVar7 >> 8),iVar1 != -1);\n  free(__ptr);\nLAB_0010d85a:\n  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }\n  return uVar7 & 0xffffffff;\n}\n\n" (function_definition "ulong FUN_0010d730(char *param_1,uint param_2,char param_3)\n\n{\n  int iVar1;\n  long lVar2;\n  long lVar3;\n  undefined8 uVar4;\n  char *pcVar5;\n  int *piVar6;\n  ulong uVar7;\n  char *__ptr;\n  long in_FS_OFFSET;\n  char *local_58;\n  undefined8 local_50;\n  long local_40;\n  \n  uVar7 = (ulong)param_2;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if ((*param_1 == '/') || (param_3 != '\0')) {\n    __ptr = (char *)0x0;\n    pcVar5 = param_1;\nLAB_0010d76b:\n    local_50 = 0;\n    local_58 = pcVar5;\n    if ((char)param_2 != '\0') {\n      lVar2 = FUN_00115010(&local_58,0x10,0);\n      while (lVar3 = fts_read(lVar2), lVar3 != 0) {\n        uVar4 = FUN_0010d185(*(undefined8 *)(lVar2 + 0x20),param_3);\n        uVar7 = (ulong)((uint)uVar7 & (uint)CONCAT71((int7)((ulong)uVar4 >> 8),(int)uVar4 != -1));\n      }\n      piVar6 = __errno_location();\n      if (*piVar6 != 0) {\n        uVar4 = dcgettext(0,"fts_read failed",5);\n        error(0,*piVar6,uVar4);\n        uVar7 = 0;\n      }\n      iVar1 = fts_close(lVar2);\n      if (iVar1 != 0) {\n        uVar4 = dcgettext(0,"fts_close failed",5);\n        error(0,*piVar6,uVar4);\n        uVar7 = 0;\n      }\n      free(__ptr);\n      goto LAB_0010d85a;\n    }\n  }\n  else {\n    __ptr = (char *)FUN_0010e159(param_1,2);\n    pcVar5 = __ptr;\n    if (__ptr != (char *)0x0) goto LAB_0010d76b;\n    pcVar5 = (char *)FUN_00112342(4,param_1);\n    uVar7 = dcgettext(0,"error canonicalizing %s",5);\n    piVar6 = __errno_location();\n    error(1,*piVar6,uVar7,pcVar5);\n  }\n  iVar1 = FUN_0010d185(pcVar5,param_3);\n  uVar7 = CONCAT71((int7)(uVar7 >> 8),iVar1 != -1);\n  free(__ptr);\nLAB_0010d85a:\n  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }\n  return uVar7 & 0xffffffff;\n}" type_identifier (function_declarator "FUN_0010d730(char *param_1,uint param_2,char param_3)" identifier (parameter_list "(char *param_1,uint param_2,char param_3)" ( (parameter_declaration "char *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uint param_2" type_identifier identifier) , (parameter_declaration "char param_3" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  long lVar2;\n  long lVar3;\n  undefined8 uVar4;\n  char *pcVar5;\n  int *piVar6;\n  ulong uVar7;\n  char *__ptr;\n  long in_FS_OFFSET;\n  char *local_58;\n  undefined8 local_50;\n  long local_40;\n  \n  uVar7 = (ulong)param_2;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if ((*param_1 == '/') || (param_3 != '\0')) {\n    __ptr = (char *)0x0;\n    pcVar5 = param_1;\nLAB_0010d76b:\n    local_50 = 0;\n    local_58 = pcVar5;\n    if ((char)param_2 != '\0') {\n      lVar2 = FUN_00115010(&local_58,0x10,0);\n      while (lVar3 = fts_read(lVar2), lVar3 != 0) {\n        uVar4 = FUN_0010d185(*(undefined8 *)(lVar2 + 0x20),param_3);\n        uVar7 = (ulong)((uint)uVar7 & (uint)CONCAT71((int7)((ulong)uVar4 >> 8),(int)uVar4 != -1));\n      }\n      piVar6 = __errno_location();\n      if (*piVar6 != 0) {\n        uVar4 = dcgettext(0,"fts_read failed",5);\n        error(0,*piVar6,uVar4);\n        uVar7 = 0;\n      }\n      iVar1 = fts_close(lVar2);\n      if (iVar1 != 0) {\n        uVar4 = dcgettext(0,"fts_close failed",5);\n        error(0,*piVar6,uVar4);\n        uVar7 = 0;\n      }\n      free(__ptr);\n      goto LAB_0010d85a;\n    }\n  }\n  else {\n    __ptr = (char *)FUN_0010e159(param_1,2);\n    pcVar5 = __ptr;\n    if (__ptr != (char *)0x0) goto LAB_0010d76b;\n    pcVar5 = (char *)FUN_00112342(4,param_1);\n    uVar7 = dcgettext(0,"error canonicalizing %s",5);\n    piVar6 = __errno_location();\n    error(1,*piVar6,uVar7,pcVar5);\n  }\n  iVar1 = FUN_0010d185(pcVar5,param_3);\n  uVar7 = CONCAT71((int7)(uVar7 >> 8),iVar1 != -1);\n  free(__ptr);\nLAB_0010d85a:\n  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }\n  return uVar7 & 0xffffffff;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 uVar4;" type_identifier identifier ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "int *piVar6;" primitive_type (pointer_declarator "*piVar6" * identifier) ;) (declaration "ulong uVar7;" type_identifier identifier ;) (declaration "char *__ptr;" primitive_type (pointer_declarator "*__ptr" * identifier) ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "char *local_58;" primitive_type (pointer_declarator "*local_58" * identifier) ;) (declaration "undefined8 local_50;" type_identifier identifier ;) (declaration "long local_40;" (sized_type_specifier "long" long) identifier ;) (expression_statement "uVar7 = (ulong)param_2;" (assignment_expression "uVar7 = (ulong)param_2" identifier = (cast_expression "(ulong)param_2" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (expression_statement "local_40 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_40 = *(long *)(in_FS_OFFSET + 0x28)" identifier = (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) ))))) ;) (if_statement "if ((*param_1 == '/') || (param_3 != '\0')) {\n    __ptr = (char *)0x0;\n    pcVar5 = param_1;\nLAB_0010d76b:\n    local_50 = 0;\n    local_58 = pcVar5;\n    if ((char)param_2 != '\0') {\n      lVar2 = FUN_00115010(&local_58,0x10,0);\n      while (lVar3 = fts_read(lVar2), lVar3 != 0) {\n        uVar4 = FUN_0010d185(*(undefined8 *)(lVar2 + 0x20),param_3);\n        uVar7 = (ulong)((uint)uVar7 & (uint)CONCAT71((int7)((ulong)uVar4 >> 8),(int)uVar4 != -1));\n      }\n      piVar6 = __errno_location();\n      if (*piVar6 != 0) {\n        uVar4 = dcgettext(0,"fts_read failed",5);\n        error(0,*piVar6,uVar4);\n        uVar7 = 0;\n      }\n      iVar1 = fts_close(lVar2);\n      if (iVar1 != 0) {\n        uVar4 = dcgettext(0,"fts_close failed",5);\n        error(0,*piVar6,uVar4);\n        uVar7 = 0;\n      }\n      free(__ptr);\n      goto LAB_0010d85a;\n    }\n  }\n  else {\n    __ptr = (char *)FUN_0010e159(param_1,2);\n    pcVar5 = __ptr;\n    if (__ptr != (char *)0x0) goto LAB_0010d76b;\n    pcVar5 = (char *)FUN_00112342(4,param_1);\n    uVar7 = dcgettext(0,"error canonicalizing %s",5);\n    piVar6 = __errno_location();\n    error(1,*piVar6,uVar7,pcVar5);\n  }" if (parenthesized_expression "((*param_1 == '/') || (param_3 != '\0'))" ( (binary_expression "(*param_1 == '/') || (param_3 != '\0')" (parenthesized_expression "(*param_1 == '/')" ( (binary_expression "*param_1 == '/'" (pointer_expression "*param_1" * identifier) == (char_literal "'/'" ' character ')) )) || (parenthesized_expression "(param_3 != '\0')" ( (binary_expression "param_3 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n    __ptr = (char *)0x0;\n    pcVar5 = param_1;\nLAB_0010d76b:\n    local_50 = 0;\n    local_58 = pcVar5;\n    if ((char)param_2 != '\0') {\n      lVar2 = FUN_00115010(&local_58,0x10,0);\n      while (lVar3 = fts_read(lVar2), lVar3 != 0) {\n        uVar4 = FUN_0010d185(*(undefined8 *)(lVar2 + 0x20),param_3);\n        uVar7 = (ulong)((uint)uVar7 & (uint)CONCAT71((int7)((ulong)uVar4 >> 8),(int)uVar4 != -1));\n      }\n      piVar6 = __errno_location();\n      if (*piVar6 != 0) {\n        uVar4 = dcgettext(0,"fts_read failed",5);\n        error(0,*piVar6,uVar4);\n        uVar7 = 0;\n      }\n      iVar1 = fts_close(lVar2);\n      if (iVar1 != 0) {\n        uVar4 = dcgettext(0,"fts_close failed",5);\n        error(0,*piVar6,uVar4);\n        uVar7 = 0;\n      }\n      free(__ptr);\n      goto LAB_0010d85a;\n    }\n  }" { (expression_statement "__ptr = (char *)0x0;" (assignment_expression "__ptr = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pcVar5 = param_1;" (assignment_expression "pcVar5 = param_1" identifier = identifier) ;) (labeled_statement "LAB_0010d76b:\n    local_50 = 0;" statement_identifier : (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" identifier = number_literal) ;)) (expression_statement "local_58 = pcVar5;" (assignment_expression "local_58 = pcVar5" identifier = identifier) ;) (if_statement "if ((char)param_2 != '\0') {\n      lVar2 = FUN_00115010(&local_58,0x10,0);\n      while (lVar3 = fts_read(lVar2), lVar3 != 0) {\n        uVar4 = FUN_0010d185(*(undefined8 *)(lVar2 + 0x20),param_3);\n        uVar7 = (ulong)((uint)uVar7 & (uint)CONCAT71((int7)((ulong)uVar4 >> 8),(int)uVar4 != -1));\n      }\n      piVar6 = __errno_location();\n      if (*piVar6 != 0) {\n        uVar4 = dcgettext(0,"fts_read failed",5);\n        error(0,*piVar6,uVar4);\n        uVar7 = 0;\n      }\n      iVar1 = fts_close(lVar2);\n      if (iVar1 != 0) {\n        uVar4 = dcgettext(0,"fts_close failed",5);\n        error(0,*piVar6,uVar4);\n        uVar7 = 0;\n      }\n      free(__ptr);\n      goto LAB_0010d85a;\n    }" if (parenthesized_expression "((char)param_2 != '\0')" ( (binary_expression "(char)param_2 != '\0'" (cast_expression "(char)param_2" ( (type_descriptor "char" primitive_type) ) identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      lVar2 = FUN_00115010(&local_58,0x10,0);\n      while (lVar3 = fts_read(lVar2), lVar3 != 0) {\n        uVar4 = FUN_0010d185(*(undefined8 *)(lVar2 + 0x20),param_3);\n        uVar7 = (ulong)((uint)uVar7 & (uint)CONCAT71((int7)((ulong)uVar4 >> 8),(int)uVar4 != -1));\n      }\n      piVar6 = __errno_location();\n      if (*piVar6 != 0) {\n        uVar4 = dcgettext(0,"fts_read failed",5);\n        error(0,*piVar6,uVar4);\n        uVar7 = 0;\n      }\n      iVar1 = fts_close(lVar2);\n      if (iVar1 != 0) {\n        uVar4 = dcgettext(0,"fts_close failed",5);\n        error(0,*piVar6,uVar4);\n        uVar7 = 0;\n      }\n      free(__ptr);\n      goto LAB_0010d85a;\n    }" { (expression_statement "lVar2 = FUN_00115010(&local_58,0x10,0);" (assignment_expression "lVar2 = FUN_00115010(&local_58,0x10,0)" identifier = (call_expression "FUN_00115010(&local_58,0x10,0)" identifier (argument_list "(&local_58,0x10,0)" ( (pointer_expression "&local_58" & identifier) , number_literal , number_literal )))) ;) (while_statement "while (lVar3 = fts_read(lVar2), lVar3 != 0) {\n        uVar4 = FUN_0010d185(*(undefined8 *)(lVar2 + 0x20),param_3);\n        uVar7 = (ulong)((uint)uVar7 & (uint)CONCAT71((int7)((ulong)uVar4 >> 8),(int)uVar4 != -1));\n      }" while (parenthesized_expression "(lVar3 = fts_read(lVar2), lVar3 != 0)" ( (comma_expression "lVar3 = fts_read(lVar2), lVar3 != 0" (assignment_expression "lVar3 = fts_read(lVar2)" identifier = (call_expression "fts_read(lVar2)" identifier (argument_list "(lVar2)" ( identifier )))) , (binary_expression "lVar3 != 0" identifier != number_literal)) )) (compound_statement "{\n        uVar4 = FUN_0010d185(*(undefined8 *)(lVar2 + 0x20),param_3);\n        uVar7 = (ulong)((uint)uVar7 & (uint)CONCAT71((int7)((ulong)uVar4 >> 8),(int)uVar4 != -1));\n      }" { (expression_statement "uVar4 = FUN_0010d185(*(undefined8 *)(lVar2 + 0x20),param_3);" (assignment_expression "uVar4 = FUN_0010d185(*(undefined8 *)(lVar2 + 0x20),param_3)" identifier = (call_expression "FUN_0010d185(*(undefined8 *)(lVar2 + 0x20),param_3)" identifier (argument_list "(*(undefined8 *)(lVar2 + 0x20),param_3)" ( (pointer_expression "*(undefined8 *)(lVar2 + 0x20)" * (cast_expression "(undefined8 *)(lVar2 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x20)" ( (binary_expression "lVar2 + 0x20" identifier + number_literal) )))) , identifier )))) ;) (expression_statement "uVar7 = (ulong)((uint)uVar7 & (uint)CONCAT71((int7)((ulong)uVar4 >> 8),(int)uVar4 != -1));" (assignment_expression "uVar7 = (ulong)((uint)uVar7 & (uint)CONCAT71((int7)((ulong)uVar4 >> 8),(int)uVar4 != -1))" identifier = (call_expression "(ulong)((uint)uVar7 & (uint)CONCAT71((int7)((ulong)uVar4 >> 8),(int)uVar4 != -1))" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((uint)uVar7 & (uint)CONCAT71((int7)((ulong)uVar4 >> 8),(int)uVar4 != -1))" ( (binary_expression "(uint)uVar7 & (uint)CONCAT71((int7)((ulong)uVar4 >> 8),(int)uVar4 != -1)" (cast_expression "(uint)uVar7" ( (type_descriptor "uint" type_identifier) ) identifier) & (cast_expression "(uint)CONCAT71((int7)((ulong)uVar4 >> 8),(int)uVar4 != -1)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CONCAT71((int7)((ulong)uVar4 >> 8),(int)uVar4 != -1)" identifier (argument_list "((int7)((ulong)uVar4 >> 8),(int)uVar4 != -1)" ( (call_expression "(int7)((ulong)uVar4 >> 8)" (parenthesized_expression "(int7)" ( identifier )) (argument_list "((ulong)uVar4 >> 8)" ( (binary_expression "(ulong)uVar4 >> 8" (cast_expression "(ulong)uVar4" ( (type_descriptor "ulong" type_identifier) ) identifier) >> number_literal) ))) , (binary_expression "(int)uVar4 != -1" (cast_expression "(int)uVar4" ( (type_descriptor "int" primitive_type) ) identifier) != number_literal) ))))) )))) ;) })) (expression_statement "piVar6 = __errno_location();" (assignment_expression "piVar6 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (if_statement "if (*piVar6 != 0) {\n        uVar4 = dcgettext(0,"fts_read failed",5);\n        error(0,*piVar6,uVar4);\n        uVar7 = 0;\n      }" if (parenthesized_expression "(*piVar6 != 0)" ( (binary_expression "*piVar6 != 0" (pointer_expression "*piVar6" * identifier) != number_literal) )) (compound_statement "{\n        uVar4 = dcgettext(0,"fts_read failed",5);\n        error(0,*piVar6,uVar4);\n        uVar7 = 0;\n      }" { (expression_statement "uVar4 = dcgettext(0,"fts_read failed",5);" (assignment_expression "uVar4 = dcgettext(0,"fts_read failed",5)" identifier = (call_expression "dcgettext(0,"fts_read failed",5)" identifier (argument_list "(0,"fts_read failed",5)" ( number_literal , (string_literal ""fts_read failed"" " string_content ") , number_literal )))) ;) (expression_statement "error(0,*piVar6,uVar4);" (call_expression "error(0,*piVar6,uVar4)" identifier (argument_list "(0,*piVar6,uVar4)" ( number_literal , (pointer_expression "*piVar6" * identifier) , identifier ))) ;) (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;) })) (expression_statement "iVar1 = fts_close(lVar2);" (assignment_expression "iVar1 = fts_close(lVar2)" identifier = (call_expression "fts_close(lVar2)" identifier (argument_list "(lVar2)" ( identifier )))) ;) (if_statement "if (iVar1 != 0) {\n        uVar4 = dcgettext(0,"fts_close failed",5);\n        error(0,*piVar6,uVar4);\n        uVar7 = 0;\n      }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n        uVar4 = dcgettext(0,"fts_close failed",5);\n        error(0,*piVar6,uVar4);\n        uVar7 = 0;\n      }" { (expression_statement "uVar4 = dcgettext(0,"fts_close failed",5);" (assignment_expression "uVar4 = dcgettext(0,"fts_close failed",5)" identifier = (call_expression "dcgettext(0,"fts_close failed",5)" identifier (argument_list "(0,"fts_close failed",5)" ( number_literal , (string_literal ""fts_close failed"" " string_content ") , number_literal )))) ;) (expression_statement "error(0,*piVar6,uVar4);" (call_expression "error(0,*piVar6,uVar4)" identifier (argument_list "(0,*piVar6,uVar4)" ( number_literal , (pointer_expression "*piVar6" * identifier) , identifier ))) ;) (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;) })) (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) (goto_statement "goto LAB_0010d85a;" goto statement_identifier ;) })) }) (else_clause "else {\n    __ptr = (char *)FUN_0010e159(param_1,2);\n    pcVar5 = __ptr;\n    if (__ptr != (char *)0x0) goto LAB_0010d76b;\n    pcVar5 = (char *)FUN_00112342(4,param_1);\n    uVar7 = dcgettext(0,"error canonicalizing %s",5);\n    piVar6 = __errno_location();\n    error(1,*piVar6,uVar7,pcVar5);\n  }" else (compound_statement "{\n    __ptr = (char *)FUN_0010e159(param_1,2);\n    pcVar5 = __ptr;\n    if (__ptr != (char *)0x0) goto LAB_0010d76b;\n    pcVar5 = (char *)FUN_00112342(4,param_1);\n    uVar7 = dcgettext(0,"error canonicalizing %s",5);\n    piVar6 = __errno_location();\n    error(1,*piVar6,uVar7,pcVar5);\n  }" { (expression_statement "__ptr = (char *)FUN_0010e159(param_1,2);" (assignment_expression "__ptr = (char *)FUN_0010e159(param_1,2)" identifier = (cast_expression "(char *)FUN_0010e159(param_1,2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0010e159(param_1,2)" identifier (argument_list "(param_1,2)" ( identifier , number_literal ))))) ;) (expression_statement "pcVar5 = __ptr;" (assignment_expression "pcVar5 = __ptr" identifier = identifier) ;) (if_statement "if (__ptr != (char *)0x0) goto LAB_0010d76b;" if (parenthesized_expression "(__ptr != (char *)0x0)" ( (binary_expression "__ptr != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0010d76b;" goto statement_identifier ;)) (expression_statement "pcVar5 = (char *)FUN_00112342(4,param_1);" (assignment_expression "pcVar5 = (char *)FUN_00112342(4,param_1)" identifier = (cast_expression "(char *)FUN_00112342(4,param_1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00112342(4,param_1)" identifier (argument_list "(4,param_1)" ( number_literal , identifier ))))) ;) (expression_statement "uVar7 = dcgettext(0,"error canonicalizing %s",5);" (assignment_expression "uVar7 = dcgettext(0,"error canonicalizing %s",5)" identifier = (call_expression "dcgettext(0,"error canonicalizing %s",5)" identifier (argument_list "(0,"error canonicalizing %s",5)" ( number_literal , (string_literal ""error canonicalizing %s"" " string_content ") , number_literal )))) ;) (expression_statement "piVar6 = __errno_location();" (assignment_expression "piVar6 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "error(1,*piVar6,uVar7,pcVar5);" (call_expression "error(1,*piVar6,uVar7,pcVar5)" identifier (argument_list "(1,*piVar6,uVar7,pcVar5)" ( number_literal , (pointer_expression "*piVar6" * identifier) , identifier , identifier ))) ;) }))) (expression_statement "iVar1 = FUN_0010d185(pcVar5,param_3);" (assignment_expression "iVar1 = FUN_0010d185(pcVar5,param_3)" identifier = (call_expression "FUN_0010d185(pcVar5,param_3)" identifier (argument_list "(pcVar5,param_3)" ( identifier , identifier )))) ;) (expression_statement "uVar7 = CONCAT71((int7)(uVar7 >> 8),iVar1 != -1);" (assignment_expression "uVar7 = CONCAT71((int7)(uVar7 >> 8),iVar1 != -1)" identifier = (call_expression "CONCAT71((int7)(uVar7 >> 8),iVar1 != -1)" identifier (argument_list "((int7)(uVar7 >> 8),iVar1 != -1)" ( (call_expression "(int7)(uVar7 >> 8)" (parenthesized_expression "(int7)" ( identifier )) (argument_list "(uVar7 >> 8)" ( (binary_expression "uVar7 >> 8" identifier >> number_literal) ))) , (binary_expression "iVar1 != -1" identifier != number_literal) )))) ;) (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) (labeled_statement "LAB_0010d85a:\n  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }" statement_identifier : (if_statement "if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }" if (parenthesized_expression "(local_40 != *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "local_40 != *(long *)(in_FS_OFFSET + 0x28)" identifier != (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    __stack_chk_fail();\n  }" { (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return uVar7 & 0xffffffff;" return (binary_expression "uVar7 & 0xffffffff" identifier & number_literal) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (char_literal ' character ')) )) || (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , LIT , LIT )))) ;) (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) , (binary_expression IDENT != LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ))) , (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) != LIT) ))))) )))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " string_content ") , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( LIT , (pointer_expression * IDENT) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " string_content ") , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( LIT , (pointer_expression * IDENT) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , LIT ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT , IDENT ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " string_content ") , LIT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (call_expression IDENT (argument_list ( LIT , (pointer_expression * IDENT) , IDENT , IDENT ))) ;) }))) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) ))) , (binary_expression IDENT != LIT) )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (return_statement return (binary_expression IDENT & LIT) ;) })))
(function_definition "ulong FUN_0010d730(char *param_1,uint param_2,char param_3)\n\n{\n  int iVar1;\n  long lVar2;\n  long lVar3;\n  undefined8 uVar4;\n  char *pcVar5;\n  int *piVar6;\n  ulong uVar7;\n  char *__ptr;\n  long in_FS_OFFSET;\n  char *local_58;\n  undefined8 local_50;\n  long local_40;\n  \n  uVar7 = (ulong)param_2;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if ((*param_1 == '/') || (param_3 != '\0')) {\n    __ptr = (char *)0x0;\n    pcVar5 = param_1;\nLAB_0010d76b:\n    local_50 = 0;\n    local_58 = pcVar5;\n    if ((char)param_2 != '\0') {\n      lVar2 = FUN_00115010(&local_58,0x10,0);\n      while (lVar3 = fts_read(lVar2), lVar3 != 0) {\n        uVar4 = FUN_0010d185(*(undefined8 *)(lVar2 + 0x20),param_3);\n        uVar7 = (ulong)((uint)uVar7 & (uint)CONCAT71((int7)((ulong)uVar4 >> 8),(int)uVar4 != -1));\n      }\n      piVar6 = __errno_location();\n      if (*piVar6 != 0) {\n        uVar4 = dcgettext(0,"fts_read failed",5);\n        error(0,*piVar6,uVar4);\n        uVar7 = 0;\n      }\n      iVar1 = fts_close(lVar2);\n      if (iVar1 != 0) {\n        uVar4 = dcgettext(0,"fts_close failed",5);\n        error(0,*piVar6,uVar4);\n        uVar7 = 0;\n      }\n      free(__ptr);\n      goto LAB_0010d85a;\n    }\n  }\n  else {\n    __ptr = (char *)FUN_0010e159(param_1,2);\n    pcVar5 = __ptr;\n    if (__ptr != (char *)0x0) goto LAB_0010d76b;\n    pcVar5 = (char *)FUN_00112342(4,param_1);\n    uVar7 = dcgettext(0,"error canonicalizing %s",5);\n    piVar6 = __errno_location();\n    error(1,*piVar6,uVar7,pcVar5);\n  }\n  iVar1 = FUN_0010d185(pcVar5,param_3);\n  uVar7 = CONCAT71((int7)(uVar7 >> 8),iVar1 != -1);\n  free(__ptr);\nLAB_0010d85a:\n  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }\n  return uVar7 & 0xffffffff;\n}" (type_identifier "ulong") (function_declarator "FUN_0010d730(char *param_1,uint param_2,char param_3)" (identifier "FUN_0010d730") (parameter_list "(char *param_1,uint param_2,char param_3)" (( "(") (parameter_declaration "char *param_1" (primitive_type "char") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "uint param_2" (type_identifier "uint") (identifier "param_2")) (, ",") (parameter_declaration "char param_3" (primitive_type "char") (identifier "param_3")) () ")"))) (compound_statement "{\n  int iVar1;\n  long lVar2;\n  long lVar3;\n  undefined8 uVar4;\n  char *pcVar5;\n  int *piVar6;\n  ulong uVar7;\n  char *__ptr;\n  long in_FS_OFFSET;\n  char *local_58;\n  undefined8 local_50;\n  long local_40;\n  \n  uVar7 = (ulong)param_2;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if ((*param_1 == '/') || (param_3 != '\0')) {\n    __ptr = (char *)0x0;\n    pcVar5 = param_1;\nLAB_0010d76b:\n    local_50 = 0;\n    local_58 = pcVar5;\n    if ((char)param_2 != '\0') {\n      lVar2 = FUN_00115010(&local_58,0x10,0);\n      while (lVar3 = fts_read(lVar2), lVar3 != 0) {\n        uVar4 = FUN_0010d185(*(undefined8 *)(lVar2 + 0x20),param_3);\n        uVar7 = (ulong)((uint)uVar7 & (uint)CONCAT71((int7)((ulong)uVar4 >> 8),(int)uVar4 != -1));\n      }\n      piVar6 = __errno_location();\n      if (*piVar6 != 0) {\n        uVar4 = dcgettext(0,"fts_read failed",5);\n        error(0,*piVar6,uVar4);\n        uVar7 = 0;\n      }\n      iVar1 = fts_close(lVar2);\n      if (iVar1 != 0) {\n        uVar4 = dcgettext(0,"fts_close failed",5);\n        error(0,*piVar6,uVar4);\n        uVar7 = 0;\n      }\n      free(__ptr);\n      goto LAB_0010d85a;\n    }\n  }\n  else {\n    __ptr = (char *)FUN_0010e159(param_1,2);\n    pcVar5 = __ptr;\n    if (__ptr != (char *)0x0) goto LAB_0010d76b;\n    pcVar5 = (char *)FUN_00112342(4,param_1);\n    uVar7 = dcgettext(0,"error canonicalizing %s",5);\n    piVar6 = __errno_location();\n    error(1,*piVar6,uVar7,pcVar5);\n  }\n  iVar1 = FUN_0010d185(pcVar5,param_3);\n  uVar7 = CONCAT71((int7)(uVar7 >> 8),iVar1 != -1);\n  free(__ptr);\nLAB_0010d85a:\n  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }\n  return uVar7 & 0xffffffff;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "long lVar2;" (sized_type_specifier "long" (long "long")) (identifier "lVar2") (; ";")) (declaration "long lVar3;" (sized_type_specifier "long" (long "long")) (identifier "lVar3") (; ";")) (declaration "undefined8 uVar4;" (type_identifier "undefined8") (identifier "uVar4") (; ";")) (declaration "char *pcVar5;" (primitive_type "char") (pointer_declarator "*pcVar5" (* "*") (identifier "pcVar5")) (; ";")) (declaration "int *piVar6;" (primitive_type "int") (pointer_declarator "*piVar6" (* "*") (identifier "piVar6")) (; ";")) (declaration "ulong uVar7;" (type_identifier "ulong") (identifier "uVar7") (; ";")) (declaration "char *__ptr;" (primitive_type "char") (pointer_declarator "*__ptr" (* "*") (identifier "__ptr")) (; ";")) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" (long "long")) (identifier "in_FS_OFFSET") (; ";")) (declaration "char *local_58;" (primitive_type "char") (pointer_declarator "*local_58" (* "*") (identifier "local_58")) (; ";")) (declaration "undefined8 local_50;" (type_identifier "undefined8") (identifier "local_50") (; ";")) (declaration "long local_40;" (sized_type_specifier "long" (long "long")) (identifier "local_40") (; ";")) (expression_statement "uVar7 = (ulong)param_2;" (assignment_expression "uVar7 = (ulong)param_2" (identifier "uVar7") (= "=") (cast_expression "(ulong)param_2" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "param_2"))) (; ";")) (expression_statement "local_40 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_40 = *(long *)(in_FS_OFFSET + 0x28)" (identifier "local_40") (= "=") (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")) () ")"))))) (; ";")) (if_statement "if ((*param_1 == '/') || (param_3 != '\0')) {\n    __ptr = (char *)0x0;\n    pcVar5 = param_1;\nLAB_0010d76b:\n    local_50 = 0;\n    local_58 = pcVar5;\n    if ((char)param_2 != '\0') {\n      lVar2 = FUN_00115010(&local_58,0x10,0);\n      while (lVar3 = fts_read(lVar2), lVar3 != 0) {\n        uVar4 = FUN_0010d185(*(undefined8 *)(lVar2 + 0x20),param_3);\n        uVar7 = (ulong)((uint)uVar7 & (uint)CONCAT71((int7)((ulong)uVar4 >> 8),(int)uVar4 != -1));\n      }\n      piVar6 = __errno_location();\n      if (*piVar6 != 0) {\n        uVar4 = dcgettext(0,"fts_read failed",5);\n        error(0,*piVar6,uVar4);\n        uVar7 = 0;\n      }\n      iVar1 = fts_close(lVar2);\n      if (iVar1 != 0) {\n        uVar4 = dcgettext(0,"fts_close failed",5);\n        error(0,*piVar6,uVar4);\n        uVar7 = 0;\n      }\n      free(__ptr);\n      goto LAB_0010d85a;\n    }\n  }\n  else {\n    __ptr = (char *)FUN_0010e159(param_1,2);\n    pcVar5 = __ptr;\n    if (__ptr != (char *)0x0) goto LAB_0010d76b;\n    pcVar5 = (char *)FUN_00112342(4,param_1);\n    uVar7 = dcgettext(0,"error canonicalizing %s",5);\n    piVar6 = __errno_location();\n    error(1,*piVar6,uVar7,pcVar5);\n  }" (if "if") (parenthesized_expression "((*param_1 == '/') || (param_3 != '\0'))" (( "(") (binary_expression "(*param_1 == '/') || (param_3 != '\0')" (parenthesized_expression "(*param_1 == '/')" (( "(") (binary_expression "*param_1 == '/'" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (== "==") (char_literal "'/'" (' "'") (character "/") (' "'"))) () ")")) (|| "||") (parenthesized_expression "(param_3 != '\0')" (( "(") (binary_expression "param_3 != '\0'" (identifier "param_3") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (compound_statement "{\n    __ptr = (char *)0x0;\n    pcVar5 = param_1;\nLAB_0010d76b:\n    local_50 = 0;\n    local_58 = pcVar5;\n    if ((char)param_2 != '\0') {\n      lVar2 = FUN_00115010(&local_58,0x10,0);\n      while (lVar3 = fts_read(lVar2), lVar3 != 0) {\n        uVar4 = FUN_0010d185(*(undefined8 *)(lVar2 + 0x20),param_3);\n        uVar7 = (ulong)((uint)uVar7 & (uint)CONCAT71((int7)((ulong)uVar4 >> 8),(int)uVar4 != -1));\n      }\n      piVar6 = __errno_location();\n      if (*piVar6 != 0) {\n        uVar4 = dcgettext(0,"fts_read failed",5);\n        error(0,*piVar6,uVar4);\n        uVar7 = 0;\n      }\n      iVar1 = fts_close(lVar2);\n      if (iVar1 != 0) {\n        uVar4 = dcgettext(0,"fts_close failed",5);\n        error(0,*piVar6,uVar4);\n        uVar7 = 0;\n      }\n      free(__ptr);\n      goto LAB_0010d85a;\n    }\n  }" ({ "{") (expression_statement "__ptr = (char *)0x0;" (assignment_expression "__ptr = (char *)0x0" (identifier "__ptr") (= "=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "pcVar5 = param_1;" (assignment_expression "pcVar5 = param_1" (identifier "pcVar5") (= "=") (identifier "param_1")) (; ";")) (labeled_statement "LAB_0010d76b:\n    local_50 = 0;" (statement_identifier "LAB_0010d76b") (: ":") (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" (identifier "local_50") (= "=") (number_literal "0")) (; ";"))) (expression_statement "local_58 = pcVar5;" (assignment_expression "local_58 = pcVar5" (identifier "local_58") (= "=") (identifier "pcVar5")) (; ";")) (if_statement "if ((char)param_2 != '\0') {\n      lVar2 = FUN_00115010(&local_58,0x10,0);\n      while (lVar3 = fts_read(lVar2), lVar3 != 0) {\n        uVar4 = FUN_0010d185(*(undefined8 *)(lVar2 + 0x20),param_3);\n        uVar7 = (ulong)((uint)uVar7 & (uint)CONCAT71((int7)((ulong)uVar4 >> 8),(int)uVar4 != -1));\n      }\n      piVar6 = __errno_location();\n      if (*piVar6 != 0) {\n        uVar4 = dcgettext(0,"fts_read failed",5);\n        error(0,*piVar6,uVar4);\n        uVar7 = 0;\n      }\n      iVar1 = fts_close(lVar2);\n      if (iVar1 != 0) {\n        uVar4 = dcgettext(0,"fts_close failed",5);\n        error(0,*piVar6,uVar4);\n        uVar7 = 0;\n      }\n      free(__ptr);\n      goto LAB_0010d85a;\n    }" (if "if") (parenthesized_expression "((char)param_2 != '\0')" (( "(") (binary_expression "(char)param_2 != '\0'" (cast_expression "(char)param_2" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "param_2")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      lVar2 = FUN_00115010(&local_58,0x10,0);\n      while (lVar3 = fts_read(lVar2), lVar3 != 0) {\n        uVar4 = FUN_0010d185(*(undefined8 *)(lVar2 + 0x20),param_3);\n        uVar7 = (ulong)((uint)uVar7 & (uint)CONCAT71((int7)((ulong)uVar4 >> 8),(int)uVar4 != -1));\n      }\n      piVar6 = __errno_location();\n      if (*piVar6 != 0) {\n        uVar4 = dcgettext(0,"fts_read failed",5);\n        error(0,*piVar6,uVar4);\n        uVar7 = 0;\n      }\n      iVar1 = fts_close(lVar2);\n      if (iVar1 != 0) {\n        uVar4 = dcgettext(0,"fts_close failed",5);\n        error(0,*piVar6,uVar4);\n        uVar7 = 0;\n      }\n      free(__ptr);\n      goto LAB_0010d85a;\n    }" ({ "{") (expression_statement "lVar2 = FUN_00115010(&local_58,0x10,0);" (assignment_expression "lVar2 = FUN_00115010(&local_58,0x10,0)" (identifier "lVar2") (= "=") (call_expression "FUN_00115010(&local_58,0x10,0)" (identifier "FUN_00115010") (argument_list "(&local_58,0x10,0)" (( "(") (pointer_expression "&local_58" (& "&") (identifier "local_58")) (, ",") (number_literal "0x10") (, ",") (number_literal "0") () ")")))) (; ";")) (while_statement "while (lVar3 = fts_read(lVar2), lVar3 != 0) {\n        uVar4 = FUN_0010d185(*(undefined8 *)(lVar2 + 0x20),param_3);\n        uVar7 = (ulong)((uint)uVar7 & (uint)CONCAT71((int7)((ulong)uVar4 >> 8),(int)uVar4 != -1));\n      }" (while "while") (parenthesized_expression "(lVar3 = fts_read(lVar2), lVar3 != 0)" (( "(") (comma_expression "lVar3 = fts_read(lVar2), lVar3 != 0" (assignment_expression "lVar3 = fts_read(lVar2)" (identifier "lVar3") (= "=") (call_expression "fts_read(lVar2)" (identifier "fts_read") (argument_list "(lVar2)" (( "(") (identifier "lVar2") () ")")))) (, ",") (binary_expression "lVar3 != 0" (identifier "lVar3") (!= "!=") (number_literal "0"))) () ")")) (compound_statement "{\n        uVar4 = FUN_0010d185(*(undefined8 *)(lVar2 + 0x20),param_3);\n        uVar7 = (ulong)((uint)uVar7 & (uint)CONCAT71((int7)((ulong)uVar4 >> 8),(int)uVar4 != -1));\n      }" ({ "{") (expression_statement "uVar4 = FUN_0010d185(*(undefined8 *)(lVar2 + 0x20),param_3);" (assignment_expression "uVar4 = FUN_0010d185(*(undefined8 *)(lVar2 + 0x20),param_3)" (identifier "uVar4") (= "=") (call_expression "FUN_0010d185(*(undefined8 *)(lVar2 + 0x20),param_3)" (identifier "FUN_0010d185") (argument_list "(*(undefined8 *)(lVar2 + 0x20),param_3)" (( "(") (pointer_expression "*(undefined8 *)(lVar2 + 0x20)" (* "*") (cast_expression "(undefined8 *)(lVar2 + 0x20)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar2 + 0x20)" (( "(") (binary_expression "lVar2 + 0x20" (identifier "lVar2") (+ "+") (number_literal "0x20")) () ")")))) (, ",") (identifier "param_3") () ")")))) (; ";")) (expression_statement "uVar7 = (ulong)((uint)uVar7 & (uint)CONCAT71((int7)((ulong)uVar4 >> 8),(int)uVar4 != -1));" (assignment_expression "uVar7 = (ulong)((uint)uVar7 & (uint)CONCAT71((int7)((ulong)uVar4 >> 8),(int)uVar4 != -1))" (identifier "uVar7") (= "=") (call_expression "(ulong)((uint)uVar7 & (uint)CONCAT71((int7)((ulong)uVar4 >> 8),(int)uVar4 != -1))" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "((uint)uVar7 & (uint)CONCAT71((int7)((ulong)uVar4 >> 8),(int)uVar4 != -1))" (( "(") (binary_expression "(uint)uVar7 & (uint)CONCAT71((int7)((ulong)uVar4 >> 8),(int)uVar4 != -1)" (cast_expression "(uint)uVar7" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar7")) (& "&") (cast_expression "(uint)CONCAT71((int7)((ulong)uVar4 >> 8),(int)uVar4 != -1)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (call_expression "CONCAT71((int7)((ulong)uVar4 >> 8),(int)uVar4 != -1)" (identifier "CONCAT71") (argument_list "((int7)((ulong)uVar4 >> 8),(int)uVar4 != -1)" (( "(") (call_expression "(int7)((ulong)uVar4 >> 8)" (parenthesized_expression "(int7)" (( "(") (identifier "int7") () ")")) (argument_list "((ulong)uVar4 >> 8)" (( "(") (binary_expression "(ulong)uVar4 >> 8" (cast_expression "(ulong)uVar4" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar4")) (>> ">>") (number_literal "8")) () ")"))) (, ",") (binary_expression "(int)uVar4 != -1" (cast_expression "(int)uVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar4")) (!= "!=") (number_literal "-1")) () ")"))))) () ")")))) (; ";")) (} "}"))) (expression_statement "piVar6 = __errno_location();" (assignment_expression "piVar6 = __errno_location()" (identifier "piVar6") (= "=") (call_expression "__errno_location()" (identifier "__errno_location") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (*piVar6 != 0) {\n        uVar4 = dcgettext(0,"fts_read failed",5);\n        error(0,*piVar6,uVar4);\n        uVar7 = 0;\n      }" (if "if") (parenthesized_expression "(*piVar6 != 0)" (( "(") (binary_expression "*piVar6 != 0" (pointer_expression "*piVar6" (* "*") (identifier "piVar6")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        uVar4 = dcgettext(0,"fts_read failed",5);\n        error(0,*piVar6,uVar4);\n        uVar7 = 0;\n      }" ({ "{") (expression_statement "uVar4 = dcgettext(0,"fts_read failed",5);" (assignment_expression "uVar4 = dcgettext(0,"fts_read failed",5)" (identifier "uVar4") (= "=") (call_expression "dcgettext(0,"fts_read failed",5)" (identifier "dcgettext") (argument_list "(0,"fts_read failed",5)" (( "(") (number_literal "0") (, ",") (string_literal ""fts_read failed"" (" """) (string_content "fts_read failed") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "error(0,*piVar6,uVar4);" (call_expression "error(0,*piVar6,uVar4)" (identifier "error") (argument_list "(0,*piVar6,uVar4)" (( "(") (number_literal "0") (, ",") (pointer_expression "*piVar6" (* "*") (identifier "piVar6")) (, ",") (identifier "uVar4") () ")"))) (; ";")) (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" (identifier "uVar7") (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "iVar1 = fts_close(lVar2);" (assignment_expression "iVar1 = fts_close(lVar2)" (identifier "iVar1") (= "=") (call_expression "fts_close(lVar2)" (identifier "fts_close") (argument_list "(lVar2)" (( "(") (identifier "lVar2") () ")")))) (; ";")) (if_statement "if (iVar1 != 0) {\n        uVar4 = dcgettext(0,"fts_close failed",5);\n        error(0,*piVar6,uVar4);\n        uVar7 = 0;\n      }" (if "if") (parenthesized_expression "(iVar1 != 0)" (( "(") (binary_expression "iVar1 != 0" (identifier "iVar1") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        uVar4 = dcgettext(0,"fts_close failed",5);\n        error(0,*piVar6,uVar4);\n        uVar7 = 0;\n      }" ({ "{") (expression_statement "uVar4 = dcgettext(0,"fts_close failed",5);" (assignment_expression "uVar4 = dcgettext(0,"fts_close failed",5)" (identifier "uVar4") (= "=") (call_expression "dcgettext(0,"fts_close failed",5)" (identifier "dcgettext") (argument_list "(0,"fts_close failed",5)" (( "(") (number_literal "0") (, ",") (string_literal ""fts_close failed"" (" """) (string_content "fts_close failed") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "error(0,*piVar6,uVar4);" (call_expression "error(0,*piVar6,uVar4)" (identifier "error") (argument_list "(0,*piVar6,uVar4)" (( "(") (number_literal "0") (, ",") (pointer_expression "*piVar6" (* "*") (identifier "piVar6")) (, ",") (identifier "uVar4") () ")"))) (; ";")) (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" (identifier "uVar7") (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "free(__ptr);" (call_expression "free(__ptr)" (identifier "free") (argument_list "(__ptr)" (( "(") (identifier "__ptr") () ")"))) (; ";")) (goto_statement "goto LAB_0010d85a;" (goto "goto") (statement_identifier "LAB_0010d85a") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    __ptr = (char *)FUN_0010e159(param_1,2);\n    pcVar5 = __ptr;\n    if (__ptr != (char *)0x0) goto LAB_0010d76b;\n    pcVar5 = (char *)FUN_00112342(4,param_1);\n    uVar7 = dcgettext(0,"error canonicalizing %s",5);\n    piVar6 = __errno_location();\n    error(1,*piVar6,uVar7,pcVar5);\n  }" (else "else") (compound_statement "{\n    __ptr = (char *)FUN_0010e159(param_1,2);\n    pcVar5 = __ptr;\n    if (__ptr != (char *)0x0) goto LAB_0010d76b;\n    pcVar5 = (char *)FUN_00112342(4,param_1);\n    uVar7 = dcgettext(0,"error canonicalizing %s",5);\n    piVar6 = __errno_location();\n    error(1,*piVar6,uVar7,pcVar5);\n  }" ({ "{") (expression_statement "__ptr = (char *)FUN_0010e159(param_1,2);" (assignment_expression "__ptr = (char *)FUN_0010e159(param_1,2)" (identifier "__ptr") (= "=") (cast_expression "(char *)FUN_0010e159(param_1,2)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0010e159(param_1,2)" (identifier "FUN_0010e159") (argument_list "(param_1,2)" (( "(") (identifier "param_1") (, ",") (number_literal "2") () ")"))))) (; ";")) (expression_statement "pcVar5 = __ptr;" (assignment_expression "pcVar5 = __ptr" (identifier "pcVar5") (= "=") (identifier "__ptr")) (; ";")) (if_statement "if (__ptr != (char *)0x0) goto LAB_0010d76b;" (if "if") (parenthesized_expression "(__ptr != (char *)0x0)" (( "(") (binary_expression "__ptr != (char *)0x0" (identifier "__ptr") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_0010d76b;" (goto "goto") (statement_identifier "LAB_0010d76b") (; ";"))) (expression_statement "pcVar5 = (char *)FUN_00112342(4,param_1);" (assignment_expression "pcVar5 = (char *)FUN_00112342(4,param_1)" (identifier "pcVar5") (= "=") (cast_expression "(char *)FUN_00112342(4,param_1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00112342(4,param_1)" (identifier "FUN_00112342") (argument_list "(4,param_1)" (( "(") (number_literal "4") (, ",") (identifier "param_1") () ")"))))) (; ";")) (expression_statement "uVar7 = dcgettext(0,"error canonicalizing %s",5);" (assignment_expression "uVar7 = dcgettext(0,"error canonicalizing %s",5)" (identifier "uVar7") (= "=") (call_expression "dcgettext(0,"error canonicalizing %s",5)" (identifier "dcgettext") (argument_list "(0,"error canonicalizing %s",5)" (( "(") (number_literal "0") (, ",") (string_literal ""error canonicalizing %s"" (" """) (string_content "error canonicalizing %s") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "piVar6 = __errno_location();" (assignment_expression "piVar6 = __errno_location()" (identifier "piVar6") (= "=") (call_expression "__errno_location()" (identifier "__errno_location") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "error(1,*piVar6,uVar7,pcVar5);" (call_expression "error(1,*piVar6,uVar7,pcVar5)" (identifier "error") (argument_list "(1,*piVar6,uVar7,pcVar5)" (( "(") (number_literal "1") (, ",") (pointer_expression "*piVar6" (* "*") (identifier "piVar6")) (, ",") (identifier "uVar7") (, ",") (identifier "pcVar5") () ")"))) (; ";")) (} "}")))) (expression_statement "iVar1 = FUN_0010d185(pcVar5,param_3);" (assignment_expression "iVar1 = FUN_0010d185(pcVar5,param_3)" (identifier "iVar1") (= "=") (call_expression "FUN_0010d185(pcVar5,param_3)" (identifier "FUN_0010d185") (argument_list "(pcVar5,param_3)" (( "(") (identifier "pcVar5") (, ",") (identifier "param_3") () ")")))) (; ";")) (expression_statement "uVar7 = CONCAT71((int7)(uVar7 >> 8),iVar1 != -1);" (assignment_expression "uVar7 = CONCAT71((int7)(uVar7 >> 8),iVar1 != -1)" (identifier "uVar7") (= "=") (call_expression "CONCAT71((int7)(uVar7 >> 8),iVar1 != -1)" (identifier "CONCAT71") (argument_list "((int7)(uVar7 >> 8),iVar1 != -1)" (( "(") (call_expression "(int7)(uVar7 >> 8)" (parenthesized_expression "(int7)" (( "(") (identifier "int7") () ")")) (argument_list "(uVar7 >> 8)" (( "(") (binary_expression "uVar7 >> 8" (identifier "uVar7") (>> ">>") (number_literal "8")) () ")"))) (, ",") (binary_expression "iVar1 != -1" (identifier "iVar1") (!= "!=") (number_literal "-1")) () ")")))) (; ";")) (expression_statement "free(__ptr);" (call_expression "free(__ptr)" (identifier "free") (argument_list "(__ptr)" (( "(") (identifier "__ptr") () ")"))) (; ";")) (labeled_statement "LAB_0010d85a:\n  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }" (statement_identifier "LAB_0010d85a") (: ":") (if_statement "if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }" (if "if") (parenthesized_expression "(local_40 != *(long *)(in_FS_OFFSET + 0x28))" (( "(") (binary_expression "local_40 != *(long *)(in_FS_OFFSET + 0x28)" (identifier "local_40") (!= "!=") (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    __stack_chk_fail();\n  }" ({ "{") (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" (identifier "__stack_chk_fail") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (return_statement "return uVar7 & 0xffffffff;" (return "return") (binary_expression "uVar7 & 0xffffffff" (identifier "uVar7") (& "&") (number_literal "0xffffffff")) (; ";")) (} "}")))

type_1 function_1(char *path,type_1 var_6,type_1 local)

{
  long var_16;
  int var_7;
  type_2 *sp;
  type_3 *var_4;
  char *path_00;
  int *piVar4;
  type_4 uVar5;
  char *var_14;
  long var_1;
  char *ftspath [2];
  
  var_16 = *(long *)(var_1 + 0x28);
  if ((*path == '/') || (local)) {
    var_14 = (char *)0x0;
    path_00 = path;
LAB_0010d76b:
    ftspath[1] = (char *)0x0;
    ftspath[0] = path_00;
    if (var_6) {
      sp = var_2(ftspath,0x10,(type_5 *)0x0);
      while (var_4 = var_3(sp), var_4 != (type_3 *)0x0) {
        var_7 = var_5(sp->fts_path,local);
        var_6 = (type_1)(var_6 & var_7 != -1);
      }
      piVar4 = var_8();
      if (*piVar4 != 0) {
        uVar5 = var_9(0,"fts_read failed",5);
        var_10(0,*piVar4,uVar5);
        var_6 = false;
      }
      var_7 = var_11(sp);
      if (var_7 != 0) {
        uVar5 = var_9(0,"fts_close failed",5);
        var_10(0,*piVar4,uVar5);
        var_6 = false;
      }
      var_12(var_14);
      goto LAB_0010d85a;
    }
  }
  else {
    var_14 = var_13(path,CAN_MISSING);
    path_00 = var_14;
    if (var_14 != (char *)0x0) goto LAB_0010d76b;
    path_00 = var_15(shell_escape_always_quoting_style,path);
    uVar5 = var_9(0,"error canonicalizing %s",5);
    piVar4 = var_8();
    var_10(1,*piVar4,uVar5,path_00);
  }
  var_7 = var_5(path_00,local);
  var_6 = var_7 != -1;
  var_12(var_14);
LAB_0010d85a:
  if (var_16 != *(long *)(var_1 + 0x28)) {
                    /* WARNING: Subroutine does not return */
    var_17();
  }
  return var_6;
}


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

ulong MASKED(char *param_1,uint param_2,char param_3)

{
  int iVar1;
  long lVar2;
  long lVar3;
  undefined8 uVar4;
  char *pcVar5;
  int *piVar6;
  ulong uVar7;
  char *__ptr;
  long in_FS_OFFSET;
  char *local_58;
  undefined8 local_50;
  long local_40;
  
  uVar7 = (ulong)param_2;
  local_40 = *(long *)(in_FS_OFFSET + 0x28);
  if ((*param_1 == '/') || (param_3 != '\0')) {
    __ptr = (char *)0x0;
    pcVar5 = param_1;
LAB_0010d76b:
    local_50 = 0;
    local_58 = pcVar5;
    if ((char)param_2 != '\0') {
      lVar2 = FUN_00115010(&local_58,0x10,0);
      while (lVar3 = fts_read(lVar2), lVar3 != 0) {
        uVar4 = FUN_0010d185(*(undefined8 *)(lVar2 + 0x20),param_3);
        uVar7 = (ulong)((uint)uVar7 & (uint)CONCAT71((int7)((ulong)uVar4 >> 8),(int)uVar4 != -1));
      }
      piVar6 = __errno_location();
      if (*piVar6 != 0) {
        uVar4 = dcgettext(0,"fts_read failed",5);
        error(0,*piVar6,uVar4);
        uVar7 = 0;
      }
      iVar1 = fts_close(lVar2);
      if (iVar1 != 0) {
        uVar4 = dcgettext(0,"fts_close failed",5);
        error(0,*piVar6,uVar4);
        uVar7 = 0;
      }
      free(__ptr);
      goto LAB_0010d85a;
    }
  }
  else {
    __ptr = (char *)FUN_0010e159(param_1,2);
    pcVar5 = __ptr;
    if (__ptr != (char *)0x0) goto LAB_0010d76b;
    pcVar5 = (char *)FUN_00112342(4,param_1);
    uVar7 = dcgettext(0,"error canonicalizing %s",5);
    piVar6 = __errno_location();
    error(1,*piVar6,uVar7,pcVar5);
  }
  iVar1 = FUN_0010d185(pcVar5,param_3);
  uVar7 = CONCAT71((int7)(uVar7 >> 8),iVar1 != -1);
  free(__ptr);
LAB_0010d85a:
  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {
                    /* WARNING: Subroutine does not return */
    __stack_chk_fail();
  }
  return uVar7 & 0xffffffff;
}

