
int link_exists2_p(char *dir,size_t dirlen,char *fname,glob_t *pglob)

{
  char cVar1;
  long lVar2;
  _func_int_char_ptr_stat_ptr *p_Var3;
  long lVar4;
  int iVar5;
  undefined1 *puVar6;
  ulong uVar7;
  char *pcVar8;
  long in_FS_OFFSET;
  undefined8 uStack_e0;
  stat st;
  
  lVar2 = *(long *)(in_FS_OFFSET + 0x28);
  uVar7 = 0xffffffffffffffff;
  pcVar8 = fname;
  do {
    if (uVar7 == 0) break;
    uVar7 = uVar7 - 1;
    cVar1 = *pcVar8;
    pcVar8 = pcVar8 + 1;
  } while (cVar1 != '\0');
  lVar4 = -(dirlen + 0x18 + ~uVar7 & 0xfffffffffffffff0);
  pcVar8 = (char *)((long)&st + lVar4 + 8);
  *(undefined8 *)((long)&uStack_e0 + lVar4) = 0x1128c1;
  puVar6 = (undefined1 *)mempcpy(pcVar8,dir,dirlen);
  *puVar6 = 0x2f;
  *(undefined8 *)((long)&uStack_e0 + lVar4) = 0x1128d3;
  memcpy(puVar6 + 1,fname,~uVar7);
  p_Var3 = pglob->gl_stat;
  *(undefined8 *)((long)&uStack_e0 + lVar4) = 0x1128e1;
  iVar5 = (*p_Var3)(pcVar8,&st);
  if (lVar2 == *(long *)(in_FS_OFFSET + 0x28)) {
    return (int)(iVar5 == 0);
  }
                    /* WARNING: Subroutine does not return */
  *(code **)((long)&uStack_e0 + lVar4) = prefix_array;
  __stack_chk_fail();
}



bool FUN_0011285e(void *param_1,size_t param_2,char *param_3,long param_4)

{
  char cVar1;
  code *pcVar2;
  long lVar3;
  int iVar4;
  undefined1 *puVar5;
  ulong uVar6;
  char *pcVar7;
  long in_FS_OFFSET;
  undefined8 uStack_e0;
  undefined1 local_d8 [8];
  undefined1 auStack_d0 [144];
  long local_40;
  
  local_40 = *(long *)(in_FS_OFFSET + 0x28);
  uVar6 = 0xffffffffffffffff;
  pcVar7 = param_3;
  do {
    if (uVar6 == 0) break;
    uVar6 = uVar6 - 1;
    cVar1 = *pcVar7;
    pcVar7 = pcVar7 + 1;
  } while (cVar1 != '\0');
  lVar3 = -(param_2 + 0x18 + ~uVar6 & 0xfffffffffffffff0);
  *(undefined8 *)((long)&uStack_e0 + lVar3) = 0x1128c1;
  puVar5 = (undefined1 *)mempcpy(auStack_d0 + lVar3,param_1,param_2);
  *puVar5 = 0x2f;
  *(undefined8 *)((long)&uStack_e0 + lVar3) = 0x1128d3;
  memcpy(puVar5 + 1,param_3,~uVar6);
  pcVar2 = *(code **)(param_4 + 0x40);
  *(undefined8 *)((long)&uStack_e0 + lVar3) = 0x1128e1;
  iVar4 = (*pcVar2)(auStack_d0 + lVar3,local_d8);
  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {
    return iVar4 == 0;
  }
                    /* WARNING: Subroutine does not return */
  *(code **)((long)&uStack_e0 + lVar3) = FUN_00112908;
  __stack_chk_fail();
}


PUSH RBP
MOV RBP,RSP
PUSH R15
PUSH R14
PUSH R13
PUSH R12
PUSH RBX
SUB RSP,0xa8
MOV R8,RDI
MOV R14,RDX
MOV R15,RCX
MOV R13D,0x28
MOV RAX,qword ptr FS:[R13]
MOV qword ptr [RBP + -0x38],RAX
XOR EAX,EAX
MOV RCX,-0x1
MOV RDI,RDX
SCASB.REPNE RDI
NOT RCX
MOV RBX,RCX
LEA RAX,[RSI + RCX*0x1 + 0x18]
AND RAX,-0x10
SUB RSP,RAX
LEA R12,[RSP + 0xf]
AND R12,-0x10
MOV RDX,RSI
MOV RSI,R8
MOV RDI,R12
CALL 0x00105630
MOV byte ptr [RAX],0x2f
LEA RDI,[RAX + 0x1]
MOV RDX,RBX
MOV RSI,R14
CALL 0x00105480
LEA RSI,[RBP + -0xd0]
MOV RDI,R12
CALL qword ptr [R15 + 0x40]
TEST EAX,EAX
SETZ AL
MOV RDX,qword ptr [RBP + -0x38]
XOR RDX,qword ptr FS:[R13]
JNZ 0x00112903
MOVZX EAX,AL
LEA RSP,[RBP + -0x28]
POP RBX
POP R12
POP R13
POP R14
POP R15
POP RBP
RET
CALL 0x001051e0
(translation_unit "bool FUN_0011285e(void *param_1,size_t param_2,char *param_3,long param_4)\n\n{\n  char cVar1;\n  code *pcVar2;\n  long lVar3;\n  int iVar4;\n  undefined1 *puVar5;\n  ulong uVar6;\n  char *pcVar7;\n  long in_FS_OFFSET;\n  undefined8 uStack_e0;\n  undefined1 local_d8 [8];\n  undefined1 auStack_d0 [144];\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  uVar6 = 0xffffffffffffffff;\n  pcVar7 = param_3;\n  do {\n    if (uVar6 == 0) break;\n    uVar6 = uVar6 - 1;\n    cVar1 = *pcVar7;\n    pcVar7 = pcVar7 + 1;\n  } while (cVar1 != '\0');\n  lVar3 = -(param_2 + 0x18 + ~uVar6 & 0xfffffffffffffff0);\n  *(undefined8 *)((long)&uStack_e0 + lVar3) = 0x1128c1;\n  puVar5 = (undefined1 *)mempcpy(auStack_d0 + lVar3,param_1,param_2);\n  *puVar5 = 0x2f;\n  *(undefined8 *)((long)&uStack_e0 + lVar3) = 0x1128d3;\n  memcpy(puVar5 + 1,param_3,~uVar6);\n  pcVar2 = *(code **)(param_4 + 0x40);\n  *(undefined8 *)((long)&uStack_e0 + lVar3) = 0x1128e1;\n  iVar4 = (*pcVar2)(auStack_d0 + lVar3,local_d8);\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return iVar4 == 0;\n  }\n                    /* WARNING: Subroutine does not return */\n  *(code **)((long)&uStack_e0 + lVar3) = FUN_00112908;\n  __stack_chk_fail();\n}\n\n" (function_definition "bool FUN_0011285e(void *param_1,size_t param_2,char *param_3,long param_4)\n\n{\n  char cVar1;\n  code *pcVar2;\n  long lVar3;\n  int iVar4;\n  undefined1 *puVar5;\n  ulong uVar6;\n  char *pcVar7;\n  long in_FS_OFFSET;\n  undefined8 uStack_e0;\n  undefined1 local_d8 [8];\n  undefined1 auStack_d0 [144];\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  uVar6 = 0xffffffffffffffff;\n  pcVar7 = param_3;\n  do {\n    if (uVar6 == 0) break;\n    uVar6 = uVar6 - 1;\n    cVar1 = *pcVar7;\n    pcVar7 = pcVar7 + 1;\n  } while (cVar1 != '\0');\n  lVar3 = -(param_2 + 0x18 + ~uVar6 & 0xfffffffffffffff0);\n  *(undefined8 *)((long)&uStack_e0 + lVar3) = 0x1128c1;\n  puVar5 = (undefined1 *)mempcpy(auStack_d0 + lVar3,param_1,param_2);\n  *puVar5 = 0x2f;\n  *(undefined8 *)((long)&uStack_e0 + lVar3) = 0x1128d3;\n  memcpy(puVar5 + 1,param_3,~uVar6);\n  pcVar2 = *(code **)(param_4 + 0x40);\n  *(undefined8 *)((long)&uStack_e0 + lVar3) = 0x1128e1;\n  iVar4 = (*pcVar2)(auStack_d0 + lVar3,local_d8);\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return iVar4 == 0;\n  }\n                    /* WARNING: Subroutine does not return */\n  *(code **)((long)&uStack_e0 + lVar3) = FUN_00112908;\n  __stack_chk_fail();\n}" primitive_type (function_declarator "FUN_0011285e(void *param_1,size_t param_2,char *param_3,long param_4)" identifier (parameter_list "(void *param_1,size_t param_2,char *param_3,long param_4)" ( (parameter_declaration "void *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "size_t param_2" primitive_type identifier) , (parameter_declaration "char *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "long param_4" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  char cVar1;\n  code *pcVar2;\n  long lVar3;\n  int iVar4;\n  undefined1 *puVar5;\n  ulong uVar6;\n  char *pcVar7;\n  long in_FS_OFFSET;\n  undefined8 uStack_e0;\n  undefined1 local_d8 [8];\n  undefined1 auStack_d0 [144];\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  uVar6 = 0xffffffffffffffff;\n  pcVar7 = param_3;\n  do {\n    if (uVar6 == 0) break;\n    uVar6 = uVar6 - 1;\n    cVar1 = *pcVar7;\n    pcVar7 = pcVar7 + 1;\n  } while (cVar1 != '\0');\n  lVar3 = -(param_2 + 0x18 + ~uVar6 & 0xfffffffffffffff0);\n  *(undefined8 *)((long)&uStack_e0 + lVar3) = 0x1128c1;\n  puVar5 = (undefined1 *)mempcpy(auStack_d0 + lVar3,param_1,param_2);\n  *puVar5 = 0x2f;\n  *(undefined8 *)((long)&uStack_e0 + lVar3) = 0x1128d3;\n  memcpy(puVar5 + 1,param_3,~uVar6);\n  pcVar2 = *(code **)(param_4 + 0x40);\n  *(undefined8 *)((long)&uStack_e0 + lVar3) = 0x1128e1;\n  iVar4 = (*pcVar2)(auStack_d0 + lVar3,local_d8);\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return iVar4 == 0;\n  }\n                    /* WARNING: Subroutine does not return */\n  *(code **)((long)&uStack_e0 + lVar3) = FUN_00112908;\n  __stack_chk_fail();\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "code *pcVar2;" type_identifier (pointer_declarator "*pcVar2" * identifier) ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "undefined1 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "ulong uVar6;" type_identifier identifier ;) (declaration "char *pcVar7;" primitive_type (pointer_declarator "*pcVar7" * identifier) ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 uStack_e0;" type_identifier identifier ;) (declaration "undefined1 local_d8 [8];" type_identifier (array_declarator "local_d8 [8]" identifier [ number_literal ]) ;) (declaration "undefined1 auStack_d0 [144];" type_identifier (array_declarator "auStack_d0 [144]" identifier [ number_literal ]) ;) (declaration "long local_40;" (sized_type_specifier "long" long) 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) ))))) ;) (expression_statement "uVar6 = 0xffffffffffffffff;" (assignment_expression "uVar6 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar7 = param_3;" (assignment_expression "pcVar7 = param_3" identifier = identifier) ;) (do_statement "do {\n    if (uVar6 == 0) break;\n    uVar6 = uVar6 - 1;\n    cVar1 = *pcVar7;\n    pcVar7 = pcVar7 + 1;\n  } while (cVar1 != '\0');" do (compound_statement "{\n    if (uVar6 == 0) break;\n    uVar6 = uVar6 - 1;\n    cVar1 = *pcVar7;\n    pcVar7 = pcVar7 + 1;\n  }" { (if_statement "if (uVar6 == 0) break;" if (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar6 = uVar6 - 1;" (assignment_expression "uVar6 = uVar6 - 1" identifier = (binary_expression "uVar6 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = *pcVar7;" (assignment_expression "cVar1 = *pcVar7" identifier = (pointer_expression "*pcVar7" * identifier)) ;) (expression_statement "pcVar7 = pcVar7 + 1;" (assignment_expression "pcVar7 = pcVar7 + 1" identifier = (binary_expression "pcVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "lVar3 = -(param_2 + 0x18 + ~uVar6 & 0xfffffffffffffff0);" (assignment_expression "lVar3 = -(param_2 + 0x18 + ~uVar6 & 0xfffffffffffffff0)" identifier = (unary_expression "-(param_2 + 0x18 + ~uVar6 & 0xfffffffffffffff0)" - (parenthesized_expression "(param_2 + 0x18 + ~uVar6 & 0xfffffffffffffff0)" ( (binary_expression "param_2 + 0x18 + ~uVar6 & 0xfffffffffffffff0" (binary_expression "param_2 + 0x18 + ~uVar6" (binary_expression "param_2 + 0x18" identifier + number_literal) + (unary_expression "~uVar6" ~ identifier)) & number_literal) )))) ;) (expression_statement "*(undefined8 *)((long)&uStack_e0 + lVar3) = 0x1128c1;" (assignment_expression "*(undefined8 *)((long)&uStack_e0 + lVar3) = 0x1128c1" (pointer_expression "*(undefined8 *)((long)&uStack_e0 + lVar3)" * (cast_expression "(undefined8 *)((long)&uStack_e0 + lVar3)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&uStack_e0 + lVar3)" ( (binary_expression "(long)&uStack_e0 + lVar3" (cast_expression "(long)&uStack_e0" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&uStack_e0" & identifier)) + identifier) )))) = number_literal) ;) (expression_statement "puVar5 = (undefined1 *)mempcpy(auStack_d0 + lVar3,param_1,param_2);" (assignment_expression "puVar5 = (undefined1 *)mempcpy(auStack_d0 + lVar3,param_1,param_2)" identifier = (cast_expression "(undefined1 *)mempcpy(auStack_d0 + lVar3,param_1,param_2)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "mempcpy(auStack_d0 + lVar3,param_1,param_2)" identifier (argument_list "(auStack_d0 + lVar3,param_1,param_2)" ( (binary_expression "auStack_d0 + lVar3" identifier + identifier) , identifier , identifier ))))) ;) (expression_statement "*puVar5 = 0x2f;" (assignment_expression "*puVar5 = 0x2f" (pointer_expression "*puVar5" * identifier) = number_literal) ;) (expression_statement "*(undefined8 *)((long)&uStack_e0 + lVar3) = 0x1128d3;" (assignment_expression "*(undefined8 *)((long)&uStack_e0 + lVar3) = 0x1128d3" (pointer_expression "*(undefined8 *)((long)&uStack_e0 + lVar3)" * (cast_expression "(undefined8 *)((long)&uStack_e0 + lVar3)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&uStack_e0 + lVar3)" ( (binary_expression "(long)&uStack_e0 + lVar3" (cast_expression "(long)&uStack_e0" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&uStack_e0" & identifier)) + identifier) )))) = number_literal) ;) (expression_statement "memcpy(puVar5 + 1,param_3,~uVar6);" (call_expression "memcpy(puVar5 + 1,param_3,~uVar6)" identifier (argument_list "(puVar5 + 1,param_3,~uVar6)" ( (binary_expression "puVar5 + 1" identifier + number_literal) , identifier , (unary_expression "~uVar6" ~ identifier) ))) ;) (expression_statement "pcVar2 = *(code **)(param_4 + 0x40);" (assignment_expression "pcVar2 = *(code **)(param_4 + 0x40)" identifier = (pointer_expression "*(code **)(param_4 + 0x40)" * (cast_expression "(code **)(param_4 + 0x40)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_4 + 0x40)" ( (binary_expression "param_4 + 0x40" identifier + number_literal) ))))) ;) (expression_statement "*(undefined8 *)((long)&uStack_e0 + lVar3) = 0x1128e1;" (assignment_expression "*(undefined8 *)((long)&uStack_e0 + lVar3) = 0x1128e1" (pointer_expression "*(undefined8 *)((long)&uStack_e0 + lVar3)" * (cast_expression "(undefined8 *)((long)&uStack_e0 + lVar3)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&uStack_e0 + lVar3)" ( (binary_expression "(long)&uStack_e0 + lVar3" (cast_expression "(long)&uStack_e0" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&uStack_e0" & identifier)) + identifier) )))) = number_literal) ;) (expression_statement "iVar4 = (*pcVar2)(auStack_d0 + lVar3,local_d8);" (assignment_expression "iVar4 = (*pcVar2)(auStack_d0 + lVar3,local_d8)" identifier = (call_expression "(*pcVar2)(auStack_d0 + lVar3,local_d8)" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "(auStack_d0 + lVar3,local_d8)" ( (binary_expression "auStack_d0 + lVar3" identifier + identifier) , identifier )))) ;) (if_statement "if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return iVar4 == 0;\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    return iVar4 == 0;\n  }" { (return_statement "return iVar4 == 0;" return (binary_expression "iVar4 == 0" identifier == number_literal) ;) })) comment (expression_statement "*(code **)((long)&uStack_e0 + lVar3) = FUN_00112908;" (assignment_expression "*(code **)((long)&uStack_e0 + lVar3) = FUN_00112908" (pointer_expression "*(code **)((long)&uStack_e0 + lVar3)" * (cast_expression "(code **)((long)&uStack_e0 + lVar3)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((long)&uStack_e0 + lVar3)" ( (binary_expression "(long)&uStack_e0 + lVar3" (cast_expression "(long)&uStack_e0" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&uStack_e0" & identifier)) + identifier) )))) = identifier) ;) (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "int link_exists2_p(char *dir,size_t dirlen,char *fname,glob_t *pglob)\n\n{\n  char cVar1;\n  long lVar2;\n  _func_int_char_ptr_stat_ptr *p_Var3;\n  long lVar4;\n  int iVar5;\n  undefined1 *puVar6;\n  ulong uVar7;\n  char *pcVar8;\n  long in_FS_OFFSET;\n  undefined8 uStack_e0;\n  stat st;\n  \n  lVar2 = *(long *)(in_FS_OFFSET + 0x28);\n  uVar7 = 0xffffffffffffffff;\n  pcVar8 = fname;\n  do {\n    if (uVar7 == 0) break;\n    uVar7 = uVar7 - 1;\n    cVar1 = *pcVar8;\n    pcVar8 = pcVar8 + 1;\n  } while (cVar1 != '\0');\n  lVar4 = -(dirlen + 0x18 + ~uVar7 & 0xfffffffffffffff0);\n  pcVar8 = (char *)((long)&st + lVar4 + 8);\n  *(undefined8 *)((long)&uStack_e0 + lVar4) = 0x1128c1;\n  puVar6 = (undefined1 *)mempcpy(pcVar8,dir,dirlen);\n  *puVar6 = 0x2f;\n  *(undefined8 *)((long)&uStack_e0 + lVar4) = 0x1128d3;\n  memcpy(puVar6 + 1,fname,~uVar7);\n  p_Var3 = pglob->gl_stat;\n  *(undefined8 *)((long)&uStack_e0 + lVar4) = 0x1128e1;\n  iVar5 = (*p_Var3)(pcVar8,&st);\n  if (lVar2 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return (int)(iVar5 == 0);\n  }\n                    /* WARNING: Subroutine does not return */\n  *(code **)((long)&uStack_e0 + lVar4) = prefix_array;\n  __stack_chk_fail();\n}\n\n" (function_definition "int link_exists2_p(char *dir,size_t dirlen,char *fname,glob_t *pglob)\n\n{\n  char cVar1;\n  long lVar2;\n  _func_int_char_ptr_stat_ptr *p_Var3;\n  long lVar4;\n  int iVar5;\n  undefined1 *puVar6;\n  ulong uVar7;\n  char *pcVar8;\n  long in_FS_OFFSET;\n  undefined8 uStack_e0;\n  stat st;\n  \n  lVar2 = *(long *)(in_FS_OFFSET + 0x28);\n  uVar7 = 0xffffffffffffffff;\n  pcVar8 = fname;\n  do {\n    if (uVar7 == 0) break;\n    uVar7 = uVar7 - 1;\n    cVar1 = *pcVar8;\n    pcVar8 = pcVar8 + 1;\n  } while (cVar1 != '\0');\n  lVar4 = -(dirlen + 0x18 + ~uVar7 & 0xfffffffffffffff0);\n  pcVar8 = (char *)((long)&st + lVar4 + 8);\n  *(undefined8 *)((long)&uStack_e0 + lVar4) = 0x1128c1;\n  puVar6 = (undefined1 *)mempcpy(pcVar8,dir,dirlen);\n  *puVar6 = 0x2f;\n  *(undefined8 *)((long)&uStack_e0 + lVar4) = 0x1128d3;\n  memcpy(puVar6 + 1,fname,~uVar7);\n  p_Var3 = pglob->gl_stat;\n  *(undefined8 *)((long)&uStack_e0 + lVar4) = 0x1128e1;\n  iVar5 = (*p_Var3)(pcVar8,&st);\n  if (lVar2 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return (int)(iVar5 == 0);\n  }\n                    /* WARNING: Subroutine does not return */\n  *(code **)((long)&uStack_e0 + lVar4) = prefix_array;\n  __stack_chk_fail();\n}" primitive_type (function_declarator "link_exists2_p(char *dir,size_t dirlen,char *fname,glob_t *pglob)" identifier (parameter_list "(char *dir,size_t dirlen,char *fname,glob_t *pglob)" ( (parameter_declaration "char *dir" primitive_type (pointer_declarator "*dir" * identifier)) , (parameter_declaration "size_t dirlen" primitive_type identifier) , (parameter_declaration "char *fname" primitive_type (pointer_declarator "*fname" * identifier)) , (parameter_declaration "glob_t *pglob" type_identifier (pointer_declarator "*pglob" * identifier)) ))) (compound_statement "{\n  char cVar1;\n  long lVar2;\n  _func_int_char_ptr_stat_ptr *p_Var3;\n  long lVar4;\n  int iVar5;\n  undefined1 *puVar6;\n  ulong uVar7;\n  char *pcVar8;\n  long in_FS_OFFSET;\n  undefined8 uStack_e0;\n  stat st;\n  \n  lVar2 = *(long *)(in_FS_OFFSET + 0x28);\n  uVar7 = 0xffffffffffffffff;\n  pcVar8 = fname;\n  do {\n    if (uVar7 == 0) break;\n    uVar7 = uVar7 - 1;\n    cVar1 = *pcVar8;\n    pcVar8 = pcVar8 + 1;\n  } while (cVar1 != '\0');\n  lVar4 = -(dirlen + 0x18 + ~uVar7 & 0xfffffffffffffff0);\n  pcVar8 = (char *)((long)&st + lVar4 + 8);\n  *(undefined8 *)((long)&uStack_e0 + lVar4) = 0x1128c1;\n  puVar6 = (undefined1 *)mempcpy(pcVar8,dir,dirlen);\n  *puVar6 = 0x2f;\n  *(undefined8 *)((long)&uStack_e0 + lVar4) = 0x1128d3;\n  memcpy(puVar6 + 1,fname,~uVar7);\n  p_Var3 = pglob->gl_stat;\n  *(undefined8 *)((long)&uStack_e0 + lVar4) = 0x1128e1;\n  iVar5 = (*p_Var3)(pcVar8,&st);\n  if (lVar2 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return (int)(iVar5 == 0);\n  }\n                    /* WARNING: Subroutine does not return */\n  *(code **)((long)&uStack_e0 + lVar4) = prefix_array;\n  __stack_chk_fail();\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "_func_int_char_ptr_stat_ptr *p_Var3;" type_identifier (pointer_declarator "*p_Var3" * identifier) ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "undefined1 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "ulong uVar7;" type_identifier identifier ;) (declaration "char *pcVar8;" primitive_type (pointer_declarator "*pcVar8" * identifier) ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 uStack_e0;" type_identifier identifier ;) (declaration "stat st;" type_identifier identifier ;) (expression_statement "lVar2 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "lVar2 = *(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) ))))) ;) (expression_statement "uVar7 = 0xffffffffffffffff;" (assignment_expression "uVar7 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar8 = fname;" (assignment_expression "pcVar8 = fname" identifier = identifier) ;) (do_statement "do {\n    if (uVar7 == 0) break;\n    uVar7 = uVar7 - 1;\n    cVar1 = *pcVar8;\n    pcVar8 = pcVar8 + 1;\n  } while (cVar1 != '\0');" do (compound_statement "{\n    if (uVar7 == 0) break;\n    uVar7 = uVar7 - 1;\n    cVar1 = *pcVar8;\n    pcVar8 = pcVar8 + 1;\n  }" { (if_statement "if (uVar7 == 0) break;" if (parenthesized_expression "(uVar7 == 0)" ( (binary_expression "uVar7 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar7 = uVar7 - 1;" (assignment_expression "uVar7 = uVar7 - 1" identifier = (binary_expression "uVar7 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = *pcVar8;" (assignment_expression "cVar1 = *pcVar8" identifier = (pointer_expression "*pcVar8" * identifier)) ;) (expression_statement "pcVar8 = pcVar8 + 1;" (assignment_expression "pcVar8 = pcVar8 + 1" identifier = (binary_expression "pcVar8 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "lVar4 = -(dirlen + 0x18 + ~uVar7 & 0xfffffffffffffff0);" (assignment_expression "lVar4 = -(dirlen + 0x18 + ~uVar7 & 0xfffffffffffffff0)" identifier = (unary_expression "-(dirlen + 0x18 + ~uVar7 & 0xfffffffffffffff0)" - (parenthesized_expression "(dirlen + 0x18 + ~uVar7 & 0xfffffffffffffff0)" ( (binary_expression "dirlen + 0x18 + ~uVar7 & 0xfffffffffffffff0" (binary_expression "dirlen + 0x18 + ~uVar7" (binary_expression "dirlen + 0x18" identifier + number_literal) + (unary_expression "~uVar7" ~ identifier)) & number_literal) )))) ;) (expression_statement "pcVar8 = (char *)((long)&st + lVar4 + 8);" (assignment_expression "pcVar8 = (char *)((long)&st + lVar4 + 8)" identifier = (cast_expression "(char *)((long)&st + lVar4 + 8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&st + lVar4 + 8)" ( (binary_expression "(long)&st + lVar4 + 8" (binary_expression "(long)&st + lVar4" (cast_expression "(long)&st" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&st" & identifier)) + identifier) + number_literal) )))) ;) (expression_statement "*(undefined8 *)((long)&uStack_e0 + lVar4) = 0x1128c1;" (assignment_expression "*(undefined8 *)((long)&uStack_e0 + lVar4) = 0x1128c1" (pointer_expression "*(undefined8 *)((long)&uStack_e0 + lVar4)" * (cast_expression "(undefined8 *)((long)&uStack_e0 + lVar4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&uStack_e0 + lVar4)" ( (binary_expression "(long)&uStack_e0 + lVar4" (cast_expression "(long)&uStack_e0" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&uStack_e0" & identifier)) + identifier) )))) = number_literal) ;) (expression_statement "puVar6 = (undefined1 *)mempcpy(pcVar8,dir,dirlen);" (assignment_expression "puVar6 = (undefined1 *)mempcpy(pcVar8,dir,dirlen)" identifier = (cast_expression "(undefined1 *)mempcpy(pcVar8,dir,dirlen)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "mempcpy(pcVar8,dir,dirlen)" identifier (argument_list "(pcVar8,dir,dirlen)" ( identifier , identifier , identifier ))))) ;) (expression_statement "*puVar6 = 0x2f;" (assignment_expression "*puVar6 = 0x2f" (pointer_expression "*puVar6" * identifier) = number_literal) ;) (expression_statement "*(undefined8 *)((long)&uStack_e0 + lVar4) = 0x1128d3;" (assignment_expression "*(undefined8 *)((long)&uStack_e0 + lVar4) = 0x1128d3" (pointer_expression "*(undefined8 *)((long)&uStack_e0 + lVar4)" * (cast_expression "(undefined8 *)((long)&uStack_e0 + lVar4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&uStack_e0 + lVar4)" ( (binary_expression "(long)&uStack_e0 + lVar4" (cast_expression "(long)&uStack_e0" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&uStack_e0" & identifier)) + identifier) )))) = number_literal) ;) (expression_statement "memcpy(puVar6 + 1,fname,~uVar7);" (call_expression "memcpy(puVar6 + 1,fname,~uVar7)" identifier (argument_list "(puVar6 + 1,fname,~uVar7)" ( (binary_expression "puVar6 + 1" identifier + number_literal) , identifier , (unary_expression "~uVar7" ~ identifier) ))) ;) (expression_statement "p_Var3 = pglob->gl_stat;" (assignment_expression "p_Var3 = pglob->gl_stat" identifier = (field_expression "pglob->gl_stat" identifier -> field_identifier)) ;) (expression_statement "*(undefined8 *)((long)&uStack_e0 + lVar4) = 0x1128e1;" (assignment_expression "*(undefined8 *)((long)&uStack_e0 + lVar4) = 0x1128e1" (pointer_expression "*(undefined8 *)((long)&uStack_e0 + lVar4)" * (cast_expression "(undefined8 *)((long)&uStack_e0 + lVar4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&uStack_e0 + lVar4)" ( (binary_expression "(long)&uStack_e0 + lVar4" (cast_expression "(long)&uStack_e0" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&uStack_e0" & identifier)) + identifier) )))) = number_literal) ;) (expression_statement "iVar5 = (*p_Var3)(pcVar8,&st);" (assignment_expression "iVar5 = (*p_Var3)(pcVar8,&st)" identifier = (call_expression "(*p_Var3)(pcVar8,&st)" (parenthesized_expression "(*p_Var3)" ( (pointer_expression "*p_Var3" * identifier) )) (argument_list "(pcVar8,&st)" ( identifier , (pointer_expression "&st" & identifier) )))) ;) (if_statement "if (lVar2 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return (int)(iVar5 == 0);\n  }" if (parenthesized_expression "(lVar2 == *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "lVar2 == *(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    return (int)(iVar5 == 0);\n  }" { (return_statement "return (int)(iVar5 == 0);" return (cast_expression "(int)(iVar5 == 0)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) ))) ;) })) comment (expression_statement "*(code **)((long)&uStack_e0 + lVar4) = prefix_array;" (assignment_expression "*(code **)((long)&uStack_e0 + lVar4) = prefix_array" (pointer_expression "*(code **)((long)&uStack_e0 + lVar4)" * (cast_expression "(code **)((long)&uStack_e0 + lVar4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((long)&uStack_e0 + lVar4)" ( (binary_expression "(long)&uStack_e0 + lVar4" (cast_expression "(long)&uStack_e0" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&uStack_e0" & identifier)) + identifier) )))) = identifier) ;) (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "bool FUN_0011285e(void *param_1,size_t param_2,char *param_3,long param_4)\n\n{\n  char cVar1;\n  code *pcVar2;\n  long lVar3;\n  int iVar4;\n  undefined1 *puVar5;\n  ulong uVar6;\n  char *pcVar7;\n  long in_FS_OFFSET;\n  undefined8 uStack_e0;\n  undefined1 local_d8 [8];\n  undefined1 auStack_d0 [144];\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  uVar6 = 0xffffffffffffffff;\n  pcVar7 = param_3;\n  do {\n    if (uVar6 == 0) break;\n    uVar6 = uVar6 - 1;\n    cVar1 = *pcVar7;\n    pcVar7 = pcVar7 + 1;\n  } while (cVar1 != '\0');\n  lVar3 = -(param_2 + 0x18 + ~uVar6 & 0xfffffffffffffff0);\n  *(undefined8 *)((long)&uStack_e0 + lVar3) = 0x1128c1;\n  puVar5 = (undefined1 *)mempcpy(auStack_d0 + lVar3,param_1,param_2);\n  *puVar5 = 0x2f;\n  *(undefined8 *)((long)&uStack_e0 + lVar3) = 0x1128d3;\n  memcpy(puVar5 + 1,param_3,~uVar6);\n  pcVar2 = *(code **)(param_4 + 0x40);\n  *(undefined8 *)((long)&uStack_e0 + lVar3) = 0x1128e1;\n  iVar4 = (*pcVar2)(auStack_d0 + lVar3,local_d8);\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return iVar4 == 0;\n  }\n                    \n  *(code **)((long)&uStack_e0 + lVar3) = FUN_00112908;\n  __stack_chk_fail();\n}\n\n" (function_definition "bool FUN_0011285e(void *param_1,size_t param_2,char *param_3,long param_4)\n\n{\n  char cVar1;\n  code *pcVar2;\n  long lVar3;\n  int iVar4;\n  undefined1 *puVar5;\n  ulong uVar6;\n  char *pcVar7;\n  long in_FS_OFFSET;\n  undefined8 uStack_e0;\n  undefined1 local_d8 [8];\n  undefined1 auStack_d0 [144];\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  uVar6 = 0xffffffffffffffff;\n  pcVar7 = param_3;\n  do {\n    if (uVar6 == 0) break;\n    uVar6 = uVar6 - 1;\n    cVar1 = *pcVar7;\n    pcVar7 = pcVar7 + 1;\n  } while (cVar1 != '\0');\n  lVar3 = -(param_2 + 0x18 + ~uVar6 & 0xfffffffffffffff0);\n  *(undefined8 *)((long)&uStack_e0 + lVar3) = 0x1128c1;\n  puVar5 = (undefined1 *)mempcpy(auStack_d0 + lVar3,param_1,param_2);\n  *puVar5 = 0x2f;\n  *(undefined8 *)((long)&uStack_e0 + lVar3) = 0x1128d3;\n  memcpy(puVar5 + 1,param_3,~uVar6);\n  pcVar2 = *(code **)(param_4 + 0x40);\n  *(undefined8 *)((long)&uStack_e0 + lVar3) = 0x1128e1;\n  iVar4 = (*pcVar2)(auStack_d0 + lVar3,local_d8);\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return iVar4 == 0;\n  }\n                    \n  *(code **)((long)&uStack_e0 + lVar3) = FUN_00112908;\n  __stack_chk_fail();\n}" primitive_type (function_declarator "FUN_0011285e(void *param_1,size_t param_2,char *param_3,long param_4)" identifier (parameter_list "(void *param_1,size_t param_2,char *param_3,long param_4)" ( (parameter_declaration "void *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "size_t param_2" primitive_type identifier) , (parameter_declaration "char *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "long param_4" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  char cVar1;\n  code *pcVar2;\n  long lVar3;\n  int iVar4;\n  undefined1 *puVar5;\n  ulong uVar6;\n  char *pcVar7;\n  long in_FS_OFFSET;\n  undefined8 uStack_e0;\n  undefined1 local_d8 [8];\n  undefined1 auStack_d0 [144];\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  uVar6 = 0xffffffffffffffff;\n  pcVar7 = param_3;\n  do {\n    if (uVar6 == 0) break;\n    uVar6 = uVar6 - 1;\n    cVar1 = *pcVar7;\n    pcVar7 = pcVar7 + 1;\n  } while (cVar1 != '\0');\n  lVar3 = -(param_2 + 0x18 + ~uVar6 & 0xfffffffffffffff0);\n  *(undefined8 *)((long)&uStack_e0 + lVar3) = 0x1128c1;\n  puVar5 = (undefined1 *)mempcpy(auStack_d0 + lVar3,param_1,param_2);\n  *puVar5 = 0x2f;\n  *(undefined8 *)((long)&uStack_e0 + lVar3) = 0x1128d3;\n  memcpy(puVar5 + 1,param_3,~uVar6);\n  pcVar2 = *(code **)(param_4 + 0x40);\n  *(undefined8 *)((long)&uStack_e0 + lVar3) = 0x1128e1;\n  iVar4 = (*pcVar2)(auStack_d0 + lVar3,local_d8);\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return iVar4 == 0;\n  }\n                    \n  *(code **)((long)&uStack_e0 + lVar3) = FUN_00112908;\n  __stack_chk_fail();\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "code *pcVar2;" type_identifier (pointer_declarator "*pcVar2" * identifier) ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "undefined1 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "ulong uVar6;" type_identifier identifier ;) (declaration "char *pcVar7;" primitive_type (pointer_declarator "*pcVar7" * identifier) ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 uStack_e0;" type_identifier identifier ;) (declaration "undefined1 local_d8 [8];" type_identifier (array_declarator "local_d8 [8]" identifier [ number_literal ]) ;) (declaration "undefined1 auStack_d0 [144];" type_identifier (array_declarator "auStack_d0 [144]" identifier [ number_literal ]) ;) (declaration "long local_40;" (sized_type_specifier "long" long) 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) ))))) ;) (expression_statement "uVar6 = 0xffffffffffffffff;" (assignment_expression "uVar6 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar7 = param_3;" (assignment_expression "pcVar7 = param_3" identifier = identifier) ;) (do_statement "do {\n    if (uVar6 == 0) break;\n    uVar6 = uVar6 - 1;\n    cVar1 = *pcVar7;\n    pcVar7 = pcVar7 + 1;\n  } while (cVar1 != '\0');" do (compound_statement "{\n    if (uVar6 == 0) break;\n    uVar6 = uVar6 - 1;\n    cVar1 = *pcVar7;\n    pcVar7 = pcVar7 + 1;\n  }" { (if_statement "if (uVar6 == 0) break;" if (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar6 = uVar6 - 1;" (assignment_expression "uVar6 = uVar6 - 1" identifier = (binary_expression "uVar6 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = *pcVar7;" (assignment_expression "cVar1 = *pcVar7" identifier = (pointer_expression "*pcVar7" * identifier)) ;) (expression_statement "pcVar7 = pcVar7 + 1;" (assignment_expression "pcVar7 = pcVar7 + 1" identifier = (binary_expression "pcVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "lVar3 = -(param_2 + 0x18 + ~uVar6 & 0xfffffffffffffff0);" (assignment_expression "lVar3 = -(param_2 + 0x18 + ~uVar6 & 0xfffffffffffffff0)" identifier = (unary_expression "-(param_2 + 0x18 + ~uVar6 & 0xfffffffffffffff0)" - (parenthesized_expression "(param_2 + 0x18 + ~uVar6 & 0xfffffffffffffff0)" ( (binary_expression "param_2 + 0x18 + ~uVar6 & 0xfffffffffffffff0" (binary_expression "param_2 + 0x18 + ~uVar6" (binary_expression "param_2 + 0x18" identifier + number_literal) + (unary_expression "~uVar6" ~ identifier)) & number_literal) )))) ;) (expression_statement "*(undefined8 *)((long)&uStack_e0 + lVar3) = 0x1128c1;" (assignment_expression "*(undefined8 *)((long)&uStack_e0 + lVar3) = 0x1128c1" (pointer_expression "*(undefined8 *)((long)&uStack_e0 + lVar3)" * (cast_expression "(undefined8 *)((long)&uStack_e0 + lVar3)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&uStack_e0 + lVar3)" ( (binary_expression "(long)&uStack_e0 + lVar3" (cast_expression "(long)&uStack_e0" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&uStack_e0" & identifier)) + identifier) )))) = number_literal) ;) (expression_statement "puVar5 = (undefined1 *)mempcpy(auStack_d0 + lVar3,param_1,param_2);" (assignment_expression "puVar5 = (undefined1 *)mempcpy(auStack_d0 + lVar3,param_1,param_2)" identifier = (cast_expression "(undefined1 *)mempcpy(auStack_d0 + lVar3,param_1,param_2)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "mempcpy(auStack_d0 + lVar3,param_1,param_2)" identifier (argument_list "(auStack_d0 + lVar3,param_1,param_2)" ( (binary_expression "auStack_d0 + lVar3" identifier + identifier) , identifier , identifier ))))) ;) (expression_statement "*puVar5 = 0x2f;" (assignment_expression "*puVar5 = 0x2f" (pointer_expression "*puVar5" * identifier) = number_literal) ;) (expression_statement "*(undefined8 *)((long)&uStack_e0 + lVar3) = 0x1128d3;" (assignment_expression "*(undefined8 *)((long)&uStack_e0 + lVar3) = 0x1128d3" (pointer_expression "*(undefined8 *)((long)&uStack_e0 + lVar3)" * (cast_expression "(undefined8 *)((long)&uStack_e0 + lVar3)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&uStack_e0 + lVar3)" ( (binary_expression "(long)&uStack_e0 + lVar3" (cast_expression "(long)&uStack_e0" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&uStack_e0" & identifier)) + identifier) )))) = number_literal) ;) (expression_statement "memcpy(puVar5 + 1,param_3,~uVar6);" (call_expression "memcpy(puVar5 + 1,param_3,~uVar6)" identifier (argument_list "(puVar5 + 1,param_3,~uVar6)" ( (binary_expression "puVar5 + 1" identifier + number_literal) , identifier , (unary_expression "~uVar6" ~ identifier) ))) ;) (expression_statement "pcVar2 = *(code **)(param_4 + 0x40);" (assignment_expression "pcVar2 = *(code **)(param_4 + 0x40)" identifier = (pointer_expression "*(code **)(param_4 + 0x40)" * (cast_expression "(code **)(param_4 + 0x40)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_4 + 0x40)" ( (binary_expression "param_4 + 0x40" identifier + number_literal) ))))) ;) (expression_statement "*(undefined8 *)((long)&uStack_e0 + lVar3) = 0x1128e1;" (assignment_expression "*(undefined8 *)((long)&uStack_e0 + lVar3) = 0x1128e1" (pointer_expression "*(undefined8 *)((long)&uStack_e0 + lVar3)" * (cast_expression "(undefined8 *)((long)&uStack_e0 + lVar3)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&uStack_e0 + lVar3)" ( (binary_expression "(long)&uStack_e0 + lVar3" (cast_expression "(long)&uStack_e0" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&uStack_e0" & identifier)) + identifier) )))) = number_literal) ;) (expression_statement "iVar4 = (*pcVar2)(auStack_d0 + lVar3,local_d8);" (assignment_expression "iVar4 = (*pcVar2)(auStack_d0 + lVar3,local_d8)" identifier = (call_expression "(*pcVar2)(auStack_d0 + lVar3,local_d8)" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "(auStack_d0 + lVar3,local_d8)" ( (binary_expression "auStack_d0 + lVar3" identifier + identifier) , identifier )))) ;) (if_statement "if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return iVar4 == 0;\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    return iVar4 == 0;\n  }" { (return_statement "return iVar4 == 0;" return (binary_expression "iVar4 == 0" identifier == number_literal) ;) })) (expression_statement "*(code **)((long)&uStack_e0 + lVar3) = FUN_00112908;" (assignment_expression "*(code **)((long)&uStack_e0 + lVar3) = FUN_00112908" (pointer_expression "*(code **)((long)&uStack_e0 + lVar3)" * (cast_expression "(code **)((long)&uStack_e0 + lVar3)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((long)&uStack_e0 + lVar3)" ( (binary_expression "(long)&uStack_e0 + lVar3" (cast_expression "(long)&uStack_e0" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&uStack_e0" & identifier)) + identifier) )))) = identifier) ;) (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration (sized_type_specifier long) IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration (sized_type_specifier long) 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) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) ;) (expression_statement (assignment_expression IDENT = (unary_expression - (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT + LIT) + (unary_expression ~ IDENT)) & LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (pointer_expression & IDENT)) + IDENT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression IDENT + IDENT) , IDENT , IDENT ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (pointer_expression & IDENT)) + IDENT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT , (unary_expression ~ IDENT) ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (pointer_expression & IDENT)) + IDENT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (binary_expression IDENT + IDENT) , IDENT )))) ;) (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 { (return_statement return (binary_expression IDENT == LIT) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (pointer_expression & IDENT)) + IDENT) )))) = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })))
(function_definition "bool FUN_0011285e(void *param_1,size_t param_2,char *param_3,long param_4)\n\n{\n  char cVar1;\n  code *pcVar2;\n  long lVar3;\n  int iVar4;\n  undefined1 *puVar5;\n  ulong uVar6;\n  char *pcVar7;\n  long in_FS_OFFSET;\n  undefined8 uStack_e0;\n  undefined1 local_d8 [8];\n  undefined1 auStack_d0 [144];\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  uVar6 = 0xffffffffffffffff;\n  pcVar7 = param_3;\n  do {\n    if (uVar6 == 0) break;\n    uVar6 = uVar6 - 1;\n    cVar1 = *pcVar7;\n    pcVar7 = pcVar7 + 1;\n  } while (cVar1 != '\0');\n  lVar3 = -(param_2 + 0x18 + ~uVar6 & 0xfffffffffffffff0);\n  *(undefined8 *)((long)&uStack_e0 + lVar3) = 0x1128c1;\n  puVar5 = (undefined1 *)mempcpy(auStack_d0 + lVar3,param_1,param_2);\n  *puVar5 = 0x2f;\n  *(undefined8 *)((long)&uStack_e0 + lVar3) = 0x1128d3;\n  memcpy(puVar5 + 1,param_3,~uVar6);\n  pcVar2 = *(code **)(param_4 + 0x40);\n  *(undefined8 *)((long)&uStack_e0 + lVar3) = 0x1128e1;\n  iVar4 = (*pcVar2)(auStack_d0 + lVar3,local_d8);\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return iVar4 == 0;\n  }\n                    \n  *(code **)((long)&uStack_e0 + lVar3) = FUN_00112908;\n  __stack_chk_fail();\n}" (primitive_type "bool") (function_declarator "FUN_0011285e(void *param_1,size_t param_2,char *param_3,long param_4)" (identifier "FUN_0011285e") (parameter_list "(void *param_1,size_t param_2,char *param_3,long param_4)" (( "(") (parameter_declaration "void *param_1" (primitive_type "void") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "size_t param_2" (primitive_type "size_t") (identifier "param_2")) (, ",") (parameter_declaration "char *param_3" (primitive_type "char") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) (, ",") (parameter_declaration "long param_4" (sized_type_specifier "long" (long "long")) (identifier "param_4")) () ")"))) (compound_statement "{\n  char cVar1;\n  code *pcVar2;\n  long lVar3;\n  int iVar4;\n  undefined1 *puVar5;\n  ulong uVar6;\n  char *pcVar7;\n  long in_FS_OFFSET;\n  undefined8 uStack_e0;\n  undefined1 local_d8 [8];\n  undefined1 auStack_d0 [144];\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  uVar6 = 0xffffffffffffffff;\n  pcVar7 = param_3;\n  do {\n    if (uVar6 == 0) break;\n    uVar6 = uVar6 - 1;\n    cVar1 = *pcVar7;\n    pcVar7 = pcVar7 + 1;\n  } while (cVar1 != '\0');\n  lVar3 = -(param_2 + 0x18 + ~uVar6 & 0xfffffffffffffff0);\n  *(undefined8 *)((long)&uStack_e0 + lVar3) = 0x1128c1;\n  puVar5 = (undefined1 *)mempcpy(auStack_d0 + lVar3,param_1,param_2);\n  *puVar5 = 0x2f;\n  *(undefined8 *)((long)&uStack_e0 + lVar3) = 0x1128d3;\n  memcpy(puVar5 + 1,param_3,~uVar6);\n  pcVar2 = *(code **)(param_4 + 0x40);\n  *(undefined8 *)((long)&uStack_e0 + lVar3) = 0x1128e1;\n  iVar4 = (*pcVar2)(auStack_d0 + lVar3,local_d8);\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return iVar4 == 0;\n  }\n                    \n  *(code **)((long)&uStack_e0 + lVar3) = FUN_00112908;\n  __stack_chk_fail();\n}" ({ "{") (declaration "char cVar1;" (primitive_type "char") (identifier "cVar1") (; ";")) (declaration "code *pcVar2;" (type_identifier "code") (pointer_declarator "*pcVar2" (* "*") (identifier "pcVar2")) (; ";")) (declaration "long lVar3;" (sized_type_specifier "long" (long "long")) (identifier "lVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "undefined1 *puVar5;" (type_identifier "undefined1") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "ulong uVar6;" (type_identifier "ulong") (identifier "uVar6") (; ";")) (declaration "char *pcVar7;" (primitive_type "char") (pointer_declarator "*pcVar7" (* "*") (identifier "pcVar7")) (; ";")) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" (long "long")) (identifier "in_FS_OFFSET") (; ";")) (declaration "undefined8 uStack_e0;" (type_identifier "undefined8") (identifier "uStack_e0") (; ";")) (declaration "undefined1 local_d8 [8];" (type_identifier "undefined1") (array_declarator "local_d8 [8]" (identifier "local_d8") ([ "[") (number_literal "8") (] "]")) (; ";")) (declaration "undefined1 auStack_d0 [144];" (type_identifier "undefined1") (array_declarator "auStack_d0 [144]" (identifier "auStack_d0") ([ "[") (number_literal "144") (] "]")) (; ";")) (declaration "long local_40;" (sized_type_specifier "long" (long "long")) (identifier "local_40") (; ";")) (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")) () ")"))))) (; ";")) (expression_statement "uVar6 = 0xffffffffffffffff;" (assignment_expression "uVar6 = 0xffffffffffffffff" (identifier "uVar6") (= "=") (number_literal "0xffffffffffffffff")) (; ";")) (expression_statement "pcVar7 = param_3;" (assignment_expression "pcVar7 = param_3" (identifier "pcVar7") (= "=") (identifier "param_3")) (; ";")) (do_statement "do {\n    if (uVar6 == 0) break;\n    uVar6 = uVar6 - 1;\n    cVar1 = *pcVar7;\n    pcVar7 = pcVar7 + 1;\n  } while (cVar1 != '\0');" (do "do") (compound_statement "{\n    if (uVar6 == 0) break;\n    uVar6 = uVar6 - 1;\n    cVar1 = *pcVar7;\n    pcVar7 = pcVar7 + 1;\n  }" ({ "{") (if_statement "if (uVar6 == 0) break;" (if "if") (parenthesized_expression "(uVar6 == 0)" (( "(") (binary_expression "uVar6 == 0" (identifier "uVar6") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar6 = uVar6 - 1;" (assignment_expression "uVar6 = uVar6 - 1" (identifier "uVar6") (= "=") (binary_expression "uVar6 - 1" (identifier "uVar6") (- "-") (number_literal "1"))) (; ";")) (expression_statement "cVar1 = *pcVar7;" (assignment_expression "cVar1 = *pcVar7" (identifier "cVar1") (= "=") (pointer_expression "*pcVar7" (* "*") (identifier "pcVar7"))) (; ";")) (expression_statement "pcVar7 = pcVar7 + 1;" (assignment_expression "pcVar7 = pcVar7 + 1" (identifier "pcVar7") (= "=") (binary_expression "pcVar7 + 1" (identifier "pcVar7") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(cVar1 != '\0')" (( "(") (binary_expression "cVar1 != '\0'" (identifier "cVar1") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (; ";")) (expression_statement "lVar3 = -(param_2 + 0x18 + ~uVar6 & 0xfffffffffffffff0);" (assignment_expression "lVar3 = -(param_2 + 0x18 + ~uVar6 & 0xfffffffffffffff0)" (identifier "lVar3") (= "=") (unary_expression "-(param_2 + 0x18 + ~uVar6 & 0xfffffffffffffff0)" (- "-") (parenthesized_expression "(param_2 + 0x18 + ~uVar6 & 0xfffffffffffffff0)" (( "(") (binary_expression "param_2 + 0x18 + ~uVar6 & 0xfffffffffffffff0" (binary_expression "param_2 + 0x18 + ~uVar6" (binary_expression "param_2 + 0x18" (identifier "param_2") (+ "+") (number_literal "0x18")) (+ "+") (unary_expression "~uVar6" (~ "~") (identifier "uVar6"))) (& "&") (number_literal "0xfffffffffffffff0")) () ")")))) (; ";")) (expression_statement "*(undefined8 *)((long)&uStack_e0 + lVar3) = 0x1128c1;" (assignment_expression "*(undefined8 *)((long)&uStack_e0 + lVar3) = 0x1128c1" (pointer_expression "*(undefined8 *)((long)&uStack_e0 + lVar3)" (* "*") (cast_expression "(undefined8 *)((long)&uStack_e0 + lVar3)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)&uStack_e0 + lVar3)" (( "(") (binary_expression "(long)&uStack_e0 + lVar3" (cast_expression "(long)&uStack_e0" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (pointer_expression "&uStack_e0" (& "&") (identifier "uStack_e0"))) (+ "+") (identifier "lVar3")) () ")")))) (= "=") (number_literal "0x1128c1")) (; ";")) (expression_statement "puVar5 = (undefined1 *)mempcpy(auStack_d0 + lVar3,param_1,param_2);" (assignment_expression "puVar5 = (undefined1 *)mempcpy(auStack_d0 + lVar3,param_1,param_2)" (identifier "puVar5") (= "=") (cast_expression "(undefined1 *)mempcpy(auStack_d0 + lVar3,param_1,param_2)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "mempcpy(auStack_d0 + lVar3,param_1,param_2)" (identifier "mempcpy") (argument_list "(auStack_d0 + lVar3,param_1,param_2)" (( "(") (binary_expression "auStack_d0 + lVar3" (identifier "auStack_d0") (+ "+") (identifier "lVar3")) (, ",") (identifier "param_1") (, ",") (identifier "param_2") () ")"))))) (; ";")) (expression_statement "*puVar5 = 0x2f;" (assignment_expression "*puVar5 = 0x2f" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (number_literal "0x2f")) (; ";")) (expression_statement "*(undefined8 *)((long)&uStack_e0 + lVar3) = 0x1128d3;" (assignment_expression "*(undefined8 *)((long)&uStack_e0 + lVar3) = 0x1128d3" (pointer_expression "*(undefined8 *)((long)&uStack_e0 + lVar3)" (* "*") (cast_expression "(undefined8 *)((long)&uStack_e0 + lVar3)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)&uStack_e0 + lVar3)" (( "(") (binary_expression "(long)&uStack_e0 + lVar3" (cast_expression "(long)&uStack_e0" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (pointer_expression "&uStack_e0" (& "&") (identifier "uStack_e0"))) (+ "+") (identifier "lVar3")) () ")")))) (= "=") (number_literal "0x1128d3")) (; ";")) (expression_statement "memcpy(puVar5 + 1,param_3,~uVar6);" (call_expression "memcpy(puVar5 + 1,param_3,~uVar6)" (identifier "memcpy") (argument_list "(puVar5 + 1,param_3,~uVar6)" (( "(") (binary_expression "puVar5 + 1" (identifier "puVar5") (+ "+") (number_literal "1")) (, ",") (identifier "param_3") (, ",") (unary_expression "~uVar6" (~ "~") (identifier "uVar6")) () ")"))) (; ";")) (expression_statement "pcVar2 = *(code **)(param_4 + 0x40);" (assignment_expression "pcVar2 = *(code **)(param_4 + 0x40)" (identifier "pcVar2") (= "=") (pointer_expression "*(code **)(param_4 + 0x40)" (* "*") (cast_expression "(code **)(param_4 + 0x40)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_4 + 0x40)" (( "(") (binary_expression "param_4 + 0x40" (identifier "param_4") (+ "+") (number_literal "0x40")) () ")"))))) (; ";")) (expression_statement "*(undefined8 *)((long)&uStack_e0 + lVar3) = 0x1128e1;" (assignment_expression "*(undefined8 *)((long)&uStack_e0 + lVar3) = 0x1128e1" (pointer_expression "*(undefined8 *)((long)&uStack_e0 + lVar3)" (* "*") (cast_expression "(undefined8 *)((long)&uStack_e0 + lVar3)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)&uStack_e0 + lVar3)" (( "(") (binary_expression "(long)&uStack_e0 + lVar3" (cast_expression "(long)&uStack_e0" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (pointer_expression "&uStack_e0" (& "&") (identifier "uStack_e0"))) (+ "+") (identifier "lVar3")) () ")")))) (= "=") (number_literal "0x1128e1")) (; ";")) (expression_statement "iVar4 = (*pcVar2)(auStack_d0 + lVar3,local_d8);" (assignment_expression "iVar4 = (*pcVar2)(auStack_d0 + lVar3,local_d8)" (identifier "iVar4") (= "=") (call_expression "(*pcVar2)(auStack_d0 + lVar3,local_d8)" (parenthesized_expression "(*pcVar2)" (( "(") (pointer_expression "*pcVar2" (* "*") (identifier "pcVar2")) () ")")) (argument_list "(auStack_d0 + lVar3,local_d8)" (( "(") (binary_expression "auStack_d0 + lVar3" (identifier "auStack_d0") (+ "+") (identifier "lVar3")) (, ",") (identifier "local_d8") () ")")))) (; ";")) (if_statement "if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return iVar4 == 0;\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    return iVar4 == 0;\n  }" ({ "{") (return_statement "return iVar4 == 0;" (return "return") (binary_expression "iVar4 == 0" (identifier "iVar4") (== "==") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "*(code **)((long)&uStack_e0 + lVar3) = FUN_00112908;" (assignment_expression "*(code **)((long)&uStack_e0 + lVar3) = FUN_00112908" (pointer_expression "*(code **)((long)&uStack_e0 + lVar3)" (* "*") (cast_expression "(code **)((long)&uStack_e0 + lVar3)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((long)&uStack_e0 + lVar3)" (( "(") (binary_expression "(long)&uStack_e0 + lVar3" (cast_expression "(long)&uStack_e0" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (pointer_expression "&uStack_e0" (& "&") (identifier "uStack_e0"))) (+ "+") (identifier "lVar3")) () ")")))) (= "=") (identifier "FUN_00112908")) (; ";")) (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" (identifier "__stack_chk_fail") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))

int function_1(char *dir,size_t var_5,char *fname,type_1 *pglob)

{
  char var_4;
  long var_10;
  type_2 *p_Var3;
  long var_6;
  int var_11;
  type_3 *var_9;
  type_4 var_2;
  char *var_3;
  long var_1;
  type_5 uStack_e0;
  type_6 st;
  
  var_10 = *(long *)(var_1 + 0x28);
  var_2 = 0xffffffffffffffff;
  var_3 = fname;
  do {
    if (var_2 == 0) break;
    var_2 = var_2 - 1;
    var_4 = *var_3;
    var_3 = var_3 + 1;
  } while (var_4 != '\0');
  var_6 = -(var_5 + 0x18 + ~var_2 & 0xfffffffffffffff0);
  var_3 = (char *)((long)&st + var_6 + 8);
  *(type_5 *)((long)&uStack_e0 + var_6) = 0x1128c1;
  var_9 = (type_3 *)var_7(var_3,dir,var_5);
  *var_9 = 0x2f;
  *(type_5 *)((long)&uStack_e0 + var_6) = 0x1128d3;
  var_8(var_9 + 1,fname,~var_2);
  p_Var3 = pglob->gl_stat;
  *(type_5 *)((long)&uStack_e0 + var_6) = 0x1128e1;
  var_11 = (*p_Var3)(var_3,&st);
  if (var_10 == *(long *)(var_1 + 0x28)) {
    return (int)(var_11 == 0);
  }
                    /* WARNING: Subroutine does not return */
  *(type_7 **)((long)&uStack_e0 + var_6) = prefix_array;
  var_12();
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (sized_type_specifier) declarator: (identifier)))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) 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: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (sized_type_specifier) declarator: (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))))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence))))) (expression_statement (assignment_expression left: (identifier) right: (unary_expression argument: (parenthesized_expression (binary_expression left: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (unary_expression argument: (identifier))) right: (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (pointer_expression argument: (identifier))) right: (identifier))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (identifier)) (identifier) (identifier)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (pointer_expression argument: (identifier))) right: (identifier))))) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (identifier) (unary_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (pointer_expression argument: (identifier))) right: (identifier))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (binary_expression left: (identifier) right: (identifier)) (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 (return_statement (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (pointer_expression argument: (identifier))) right: (identifier))))) right: (identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))))))

bool MASKED(void *param_1,size_t param_2,char *param_3,long param_4)

{
  char cVar1;
  code *pcVar2;
  long lVar3;
  int iVar4;
  undefined1 *puVar5;
  ulong uVar6;
  char *pcVar7;
  long in_FS_OFFSET;
  undefined8 uStack_e0;
  undefined1 local_d8 [8];
  undefined1 auStack_d0 [144];
  long local_40;
  
  local_40 = *(long *)(in_FS_OFFSET + 0x28);
  uVar6 = 0xffffffffffffffff;
  pcVar7 = param_3;
  do {
    if (uVar6 == 0) break;
    uVar6 = uVar6 - 1;
    cVar1 = *pcVar7;
    pcVar7 = pcVar7 + 1;
  } while (cVar1 != '\0');
  lVar3 = -(param_2 + 0x18 + ~uVar6 & 0xfffffffffffffff0);
  *(undefined8 *)((long)&uStack_e0 + lVar3) = 0x1128c1;
  puVar5 = (undefined1 *)mempcpy(auStack_d0 + lVar3,param_1,param_2);
  *puVar5 = 0x2f;
  *(undefined8 *)((long)&uStack_e0 + lVar3) = 0x1128d3;
  memcpy(puVar5 + 1,param_3,~uVar6);
  pcVar2 = *(code **)(param_4 + 0x40);
  *(undefined8 *)((long)&uStack_e0 + lVar3) = 0x1128e1;
  iVar4 = (*pcVar2)(auStack_d0 + lVar3,local_d8);
  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {
    return iVar4 == 0;
  }
                    /* WARNING: Subroutine does not return */
  *(code **)((long)&uStack_e0 + lVar3) = FUN_00112908;
  __stack_chk_fail();
}

