
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Unknown calling convention */

_Bool is_good_file(char *file)

{
  int iVar1;
  int iVar2;
  uint uVar3;
  char *msg;
  _Bool _Var4;
  int in_GS_OFFSET;
  stat rcinfo;
  
  iVar1 = *(int *)(in_GS_OFFSET + 0x14);
  iVar2 = access(file,4);
  _Var4 = false;
  if (iVar2 != 0) goto LAB_0002abe4;
  iVar2 = __xstat64(3,file,(stat64 *)&rcinfo);
  _Var4 = true;
  if (iVar2 == -1) goto LAB_0002abe4;
  uVar3 = rcinfo.st_mode & 0xf000;
  if ((uVar3 - 0x2000 & 0xffffd000) == 0) {
    if (uVar3 != 0x4000) goto LAB_0002ac3b;
    msg = (char *)dcgettext(0,"\"%s\" is a directory",5);
  }
  else {
    if (uVar3 != 0x6000) goto LAB_0002abe4;
LAB_0002ac3b:
    msg = (char *)dcgettext(0,"\"%s\" is a device file",5);
  }
  rcfile_error(msg,file);
  _Var4 = false;
LAB_0002abe4:
  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {
    return _Var4;
  }
                    /* WARNING: Subroutine does not return */
  __stack_chk_fail_local();
}



/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

undefined4 FUN_0002abb0(char *param_1)

{
  int iVar1;
  uint uVar2;
  undefined4 uVar3;
  int in_GS_OFFSET;
  stat64 local_70;
  int local_10;
  undefined4 uStack_c;
  
  uStack_c = 0x2abb7;
  local_10 = *(int *)(in_GS_OFFSET + 0x14);
  iVar1 = access(param_1,4);
  uVar3 = 0;
  if (iVar1 != 0) goto LAB_0002abe4;
  iVar1 = __xstat64(3,param_1,&local_70);
  uVar3 = 1;
  if (iVar1 == -1) goto LAB_0002abe4;
  uVar2 = local_70.st_mode & 0xf000;
  if ((uVar2 - 0x2000 & 0xffffd000) == 0) {
    if (uVar2 != 0x4000) goto LAB_0002ac3b;
    uVar3 = dcgettext(0,"\"%s\" is a directory",5);
  }
  else {
    if (uVar2 != 0x6000) goto LAB_0002abe4;
LAB_0002ac3b:
    uVar3 = dcgettext(0,"\"%s\" is a device file",5);
  }
  FUN_0002a280(uVar3,param_1);
  uVar3 = 0;
LAB_0002abe4:
  if (local_10 == *(int *)(in_GS_OFFSET + 0x14)) {
    return uVar3;
  }
                    /* WARNING: Subroutine does not return */
  FUN_0004be20();
}


PUSH ESI
PUSH EBX
CALL 0x00014e20
ADD EBX,0x40019
SUB ESP,0x7c
MOV EAX,GS:[0x14]
MOV dword ptr [ESP + 0x74],EAX
XOR EAX,EAX
MOV ESI,dword ptr [ESP + 0x88]
PUSH 0x4
PUSH ESI
CALL 0x000137e0
ADD ESP,0x10
XOR EDX,EDX
TEST EAX,EAX
JZ 0x0002ac00
MOV ECX,dword ptr [ESP + 0x6c]
XOR ECX,dword ptr GS:[0x14]
MOV EAX,EDX
JNZ 0x0002ac87
ADD ESP,0x74
POP EBX
POP ESI
RET
SUB ESP,0x4
LEA EAX,[ESP + 0x10]
PUSH EAX
PUSH ESI
PUSH 0x3
CALL 0x00013a50
ADD ESP,0x10
MOV EDX,0x1
CMP EAX,-0x1
JZ 0x0002abe4
MOV EAX,dword ptr [ESP + 0x1c]
AND EAX,0xf000
LEA ECX,[EAX + 0xffffe000]
AND ECX,0xffffd000
JZ 0x0002ac68
CMP EAX,0x6000
JNZ 0x0002abe4
SUB ESP,0x4
LEA EAX,[EBX + 0xfffe186a]
PUSH 0x5
PUSH EAX
PUSH 0x0
CALL 0x000132e0
ADD ESP,0x10
SUB ESP,0x8
PUSH ESI
PUSH EAX
CALL 0x0002a280
ADD ESP,0x10
XOR EDX,EDX
JMP 0x0002abe4
CMP EAX,0x4000
JNZ 0x0002ac3b
SUB ESP,0x4
LEA EAX,[EBX + 0xfffe1856]
PUSH 0x5
PUSH EAX
PUSH 0x0
CALL 0x000132e0
ADD ESP,0x10
JMP 0x0002ac51
CALL 0x0004be20
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nundefined4 FUN_0002abb0(char *param_1)\n\n{\n  int iVar1;\n  uint uVar2;\n  undefined4 uVar3;\n  int in_GS_OFFSET;\n  stat64 local_70;\n  int local_10;\n  undefined4 uStack_c;\n  \n  uStack_c = 0x2abb7;\n  local_10 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar1 = access(param_1,4);\n  uVar3 = 0;\n  if (iVar1 != 0) goto LAB_0002abe4;\n  iVar1 = __xstat64(3,param_1,&local_70);\n  uVar3 = 1;\n  if (iVar1 == -1) goto LAB_0002abe4;\n  uVar2 = local_70.st_mode & 0xf000;\n  if ((uVar2 - 0x2000 & 0xffffd000) == 0) {\n    if (uVar2 != 0x4000) goto LAB_0002ac3b;\n    uVar3 = dcgettext(0,"\"%s\" is a directory",5);\n  }\n  else {\n    if (uVar2 != 0x6000) goto LAB_0002abe4;\nLAB_0002ac3b:\n    uVar3 = dcgettext(0,"\"%s\" is a device file",5);\n  }\n  FUN_0002a280(uVar3,param_1);\n  uVar3 = 0;\nLAB_0002abe4:\n  if (local_10 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar3;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0004be20();\n}\n\n" comment (function_definition "undefined4 FUN_0002abb0(char *param_1)\n\n{\n  int iVar1;\n  uint uVar2;\n  undefined4 uVar3;\n  int in_GS_OFFSET;\n  stat64 local_70;\n  int local_10;\n  undefined4 uStack_c;\n  \n  uStack_c = 0x2abb7;\n  local_10 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar1 = access(param_1,4);\n  uVar3 = 0;\n  if (iVar1 != 0) goto LAB_0002abe4;\n  iVar1 = __xstat64(3,param_1,&local_70);\n  uVar3 = 1;\n  if (iVar1 == -1) goto LAB_0002abe4;\n  uVar2 = local_70.st_mode & 0xf000;\n  if ((uVar2 - 0x2000 & 0xffffd000) == 0) {\n    if (uVar2 != 0x4000) goto LAB_0002ac3b;\n    uVar3 = dcgettext(0,"\"%s\" is a directory",5);\n  }\n  else {\n    if (uVar2 != 0x6000) goto LAB_0002abe4;\nLAB_0002ac3b:\n    uVar3 = dcgettext(0,"\"%s\" is a device file",5);\n  }\n  FUN_0002a280(uVar3,param_1);\n  uVar3 = 0;\nLAB_0002abe4:\n  if (local_10 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar3;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0004be20();\n}" type_identifier (function_declarator "FUN_0002abb0(char *param_1)" identifier (parameter_list "(char *param_1)" ( (parameter_declaration "char *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  undefined4 uVar3;\n  int in_GS_OFFSET;\n  stat64 local_70;\n  int local_10;\n  undefined4 uStack_c;\n  \n  uStack_c = 0x2abb7;\n  local_10 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar1 = access(param_1,4);\n  uVar3 = 0;\n  if (iVar1 != 0) goto LAB_0002abe4;\n  iVar1 = __xstat64(3,param_1,&local_70);\n  uVar3 = 1;\n  if (iVar1 == -1) goto LAB_0002abe4;\n  uVar2 = local_70.st_mode & 0xf000;\n  if ((uVar2 - 0x2000 & 0xffffd000) == 0) {\n    if (uVar2 != 0x4000) goto LAB_0002ac3b;\n    uVar3 = dcgettext(0,"\"%s\" is a directory",5);\n  }\n  else {\n    if (uVar2 != 0x6000) goto LAB_0002abe4;\nLAB_0002ac3b:\n    uVar3 = dcgettext(0,"\"%s\" is a device file",5);\n  }\n  FUN_0002a280(uVar3,param_1);\n  uVar3 = 0;\nLAB_0002abe4:\n  if (local_10 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar3;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0004be20();\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "stat64 local_70;" type_identifier identifier ;) (declaration "int local_10;" primitive_type identifier ;) (declaration "undefined4 uStack_c;" type_identifier identifier ;) (expression_statement "uStack_c = 0x2abb7;" (assignment_expression "uStack_c = 0x2abb7" identifier = number_literal) ;) (expression_statement "local_10 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_10 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "iVar1 = access(param_1,4);" (assignment_expression "iVar1 = access(param_1,4)" identifier = (call_expression "access(param_1,4)" identifier (argument_list "(param_1,4)" ( identifier , number_literal )))) ;) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) (if_statement "if (iVar1 != 0) goto LAB_0002abe4;" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0002abe4;" goto statement_identifier ;)) (expression_statement "iVar1 = __xstat64(3,param_1,&local_70);" (assignment_expression "iVar1 = __xstat64(3,param_1,&local_70)" identifier = (call_expression "__xstat64(3,param_1,&local_70)" identifier (argument_list "(3,param_1,&local_70)" ( number_literal , identifier , (pointer_expression "&local_70" & identifier) )))) ;) (expression_statement "uVar3 = 1;" (assignment_expression "uVar3 = 1" identifier = number_literal) ;) (if_statement "if (iVar1 == -1) goto LAB_0002abe4;" if (parenthesized_expression "(iVar1 == -1)" ( (binary_expression "iVar1 == -1" identifier == number_literal) )) (goto_statement "goto LAB_0002abe4;" goto statement_identifier ;)) (expression_statement "uVar2 = local_70.st_mode & 0xf000;" (assignment_expression "uVar2 = local_70.st_mode & 0xf000" identifier = (binary_expression "local_70.st_mode & 0xf000" (field_expression "local_70.st_mode" identifier . field_identifier) & number_literal)) ;) (if_statement "if ((uVar2 - 0x2000 & 0xffffd000) == 0) {\n    if (uVar2 != 0x4000) goto LAB_0002ac3b;\n    uVar3 = dcgettext(0,"\"%s\" is a directory",5);\n  }\n  else {\n    if (uVar2 != 0x6000) goto LAB_0002abe4;\nLAB_0002ac3b:\n    uVar3 = dcgettext(0,"\"%s\" is a device file",5);\n  }" if (parenthesized_expression "((uVar2 - 0x2000 & 0xffffd000) == 0)" ( (binary_expression "(uVar2 - 0x2000 & 0xffffd000) == 0" (parenthesized_expression "(uVar2 - 0x2000 & 0xffffd000)" ( (binary_expression "uVar2 - 0x2000 & 0xffffd000" (binary_expression "uVar2 - 0x2000" identifier - number_literal) & number_literal) )) == number_literal) )) (compound_statement "{\n    if (uVar2 != 0x4000) goto LAB_0002ac3b;\n    uVar3 = dcgettext(0,"\"%s\" is a directory",5);\n  }" { (if_statement "if (uVar2 != 0x4000) goto LAB_0002ac3b;" if (parenthesized_expression "(uVar2 != 0x4000)" ( (binary_expression "uVar2 != 0x4000" identifier != number_literal) )) (goto_statement "goto LAB_0002ac3b;" goto statement_identifier ;)) (expression_statement "uVar3 = dcgettext(0,"\"%s\" is a directory",5);" (assignment_expression "uVar3 = dcgettext(0,"\"%s\" is a directory",5)" identifier = (call_expression "dcgettext(0,"\"%s\" is a directory",5)" identifier (argument_list "(0,"\"%s\" is a directory",5)" ( number_literal , (string_literal ""\"%s\" is a directory"" " escape_sequence string_content escape_sequence string_content ") , number_literal )))) ;) }) (else_clause "else {\n    if (uVar2 != 0x6000) goto LAB_0002abe4;\nLAB_0002ac3b:\n    uVar3 = dcgettext(0,"\"%s\" is a device file",5);\n  }" else (compound_statement "{\n    if (uVar2 != 0x6000) goto LAB_0002abe4;\nLAB_0002ac3b:\n    uVar3 = dcgettext(0,"\"%s\" is a device file",5);\n  }" { (if_statement "if (uVar2 != 0x6000) goto LAB_0002abe4;" if (parenthesized_expression "(uVar2 != 0x6000)" ( (binary_expression "uVar2 != 0x6000" identifier != number_literal) )) (goto_statement "goto LAB_0002abe4;" goto statement_identifier ;)) (labeled_statement "LAB_0002ac3b:\n    uVar3 = dcgettext(0,"\"%s\" is a device file",5);" statement_identifier : (expression_statement "uVar3 = dcgettext(0,"\"%s\" is a device file",5);" (assignment_expression "uVar3 = dcgettext(0,"\"%s\" is a device file",5)" identifier = (call_expression "dcgettext(0,"\"%s\" is a device file",5)" identifier (argument_list "(0,"\"%s\" is a device file",5)" ( number_literal , (string_literal ""\"%s\" is a device file"" " escape_sequence string_content escape_sequence string_content ") , number_literal )))) ;)) }))) (expression_statement "FUN_0002a280(uVar3,param_1);" (call_expression "FUN_0002a280(uVar3,param_1)" identifier (argument_list "(uVar3,param_1)" ( identifier , identifier ))) ;) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) (labeled_statement "LAB_0002abe4:\n  if (local_10 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar3;\n  }" statement_identifier : (if_statement "if (local_10 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar3;\n  }" if (parenthesized_expression "(local_10 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_10 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return uVar3;\n  }" { (return_statement "return uVar3;" return identifier ;) }))) comment (expression_statement "FUN_0004be20();" (call_expression "FUN_0004be20()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Unknown calling convention */\n\n_Bool is_good_file(char *file)\n\n{\n  int iVar1;\n  int iVar2;\n  uint uVar3;\n  char *msg;\n  _Bool _Var4;\n  int in_GS_OFFSET;\n  stat rcinfo;\n  \n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar2 = access(file,4);\n  _Var4 = false;\n  if (iVar2 != 0) goto LAB_0002abe4;\n  iVar2 = __xstat64(3,file,(stat64 *)&rcinfo);\n  _Var4 = true;\n  if (iVar2 == -1) goto LAB_0002abe4;\n  uVar3 = rcinfo.st_mode & 0xf000;\n  if ((uVar3 - 0x2000 & 0xffffd000) == 0) {\n    if (uVar3 != 0x4000) goto LAB_0002ac3b;\n    msg = (char *)dcgettext(0,"\"%s\" is a directory",5);\n  }\n  else {\n    if (uVar3 != 0x6000) goto LAB_0002abe4;\nLAB_0002ac3b:\n    msg = (char *)dcgettext(0,"\"%s\" is a device file",5);\n  }\n  rcfile_error(msg,file);\n  _Var4 = false;\nLAB_0002abe4:\n  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return _Var4;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\n}\n\n" comment comment (function_definition "_Bool is_good_file(char *file)\n\n{\n  int iVar1;\n  int iVar2;\n  uint uVar3;\n  char *msg;\n  _Bool _Var4;\n  int in_GS_OFFSET;\n  stat rcinfo;\n  \n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar2 = access(file,4);\n  _Var4 = false;\n  if (iVar2 != 0) goto LAB_0002abe4;\n  iVar2 = __xstat64(3,file,(stat64 *)&rcinfo);\n  _Var4 = true;\n  if (iVar2 == -1) goto LAB_0002abe4;\n  uVar3 = rcinfo.st_mode & 0xf000;\n  if ((uVar3 - 0x2000 & 0xffffd000) == 0) {\n    if (uVar3 != 0x4000) goto LAB_0002ac3b;\n    msg = (char *)dcgettext(0,"\"%s\" is a directory",5);\n  }\n  else {\n    if (uVar3 != 0x6000) goto LAB_0002abe4;\nLAB_0002ac3b:\n    msg = (char *)dcgettext(0,"\"%s\" is a device file",5);\n  }\n  rcfile_error(msg,file);\n  _Var4 = false;\nLAB_0002abe4:\n  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return _Var4;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\n}" type_identifier (function_declarator "is_good_file(char *file)" identifier (parameter_list "(char *file)" ( (parameter_declaration "char *file" primitive_type (pointer_declarator "*file" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  uint uVar3;\n  char *msg;\n  _Bool _Var4;\n  int in_GS_OFFSET;\n  stat rcinfo;\n  \n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar2 = access(file,4);\n  _Var4 = false;\n  if (iVar2 != 0) goto LAB_0002abe4;\n  iVar2 = __xstat64(3,file,(stat64 *)&rcinfo);\n  _Var4 = true;\n  if (iVar2 == -1) goto LAB_0002abe4;\n  uVar3 = rcinfo.st_mode & 0xf000;\n  if ((uVar3 - 0x2000 & 0xffffd000) == 0) {\n    if (uVar3 != 0x4000) goto LAB_0002ac3b;\n    msg = (char *)dcgettext(0,"\"%s\" is a directory",5);\n  }\n  else {\n    if (uVar3 != 0x6000) goto LAB_0002abe4;\nLAB_0002ac3b:\n    msg = (char *)dcgettext(0,"\"%s\" is a device file",5);\n  }\n  rcfile_error(msg,file);\n  _Var4 = false;\nLAB_0002abe4:\n  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return _Var4;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "char *msg;" primitive_type (pointer_declarator "*msg" * identifier) ;) (declaration "_Bool _Var4;" type_identifier identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "stat rcinfo;" type_identifier identifier ;) (expression_statement "iVar1 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iVar1 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "iVar2 = access(file,4);" (assignment_expression "iVar2 = access(file,4)" identifier = (call_expression "access(file,4)" identifier (argument_list "(file,4)" ( identifier , number_literal )))) ;) (expression_statement "_Var4 = false;" (assignment_expression "_Var4 = false" identifier = false) ;) (if_statement "if (iVar2 != 0) goto LAB_0002abe4;" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0002abe4;" goto statement_identifier ;)) (expression_statement "iVar2 = __xstat64(3,file,(stat64 *)&rcinfo);" (assignment_expression "iVar2 = __xstat64(3,file,(stat64 *)&rcinfo)" identifier = (call_expression "__xstat64(3,file,(stat64 *)&rcinfo)" identifier (argument_list "(3,file,(stat64 *)&rcinfo)" ( number_literal , identifier , (cast_expression "(stat64 *)&rcinfo" ( (type_descriptor "stat64 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&rcinfo" & identifier)) )))) ;) (expression_statement "_Var4 = true;" (assignment_expression "_Var4 = true" identifier = true) ;) (if_statement "if (iVar2 == -1) goto LAB_0002abe4;" if (parenthesized_expression "(iVar2 == -1)" ( (binary_expression "iVar2 == -1" identifier == number_literal) )) (goto_statement "goto LAB_0002abe4;" goto statement_identifier ;)) (expression_statement "uVar3 = rcinfo.st_mode & 0xf000;" (assignment_expression "uVar3 = rcinfo.st_mode & 0xf000" identifier = (binary_expression "rcinfo.st_mode & 0xf000" (field_expression "rcinfo.st_mode" identifier . field_identifier) & number_literal)) ;) (if_statement "if ((uVar3 - 0x2000 & 0xffffd000) == 0) {\n    if (uVar3 != 0x4000) goto LAB_0002ac3b;\n    msg = (char *)dcgettext(0,"\"%s\" is a directory",5);\n  }\n  else {\n    if (uVar3 != 0x6000) goto LAB_0002abe4;\nLAB_0002ac3b:\n    msg = (char *)dcgettext(0,"\"%s\" is a device file",5);\n  }" if (parenthesized_expression "((uVar3 - 0x2000 & 0xffffd000) == 0)" ( (binary_expression "(uVar3 - 0x2000 & 0xffffd000) == 0" (parenthesized_expression "(uVar3 - 0x2000 & 0xffffd000)" ( (binary_expression "uVar3 - 0x2000 & 0xffffd000" (binary_expression "uVar3 - 0x2000" identifier - number_literal) & number_literal) )) == number_literal) )) (compound_statement "{\n    if (uVar3 != 0x4000) goto LAB_0002ac3b;\n    msg = (char *)dcgettext(0,"\"%s\" is a directory",5);\n  }" { (if_statement "if (uVar3 != 0x4000) goto LAB_0002ac3b;" if (parenthesized_expression "(uVar3 != 0x4000)" ( (binary_expression "uVar3 != 0x4000" identifier != number_literal) )) (goto_statement "goto LAB_0002ac3b;" goto statement_identifier ;)) (expression_statement "msg = (char *)dcgettext(0,"\"%s\" is a directory",5);" (assignment_expression "msg = (char *)dcgettext(0,"\"%s\" is a directory",5)" identifier = (cast_expression "(char *)dcgettext(0,"\"%s\" is a directory",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"\"%s\" is a directory",5)" identifier (argument_list "(0,"\"%s\" is a directory",5)" ( number_literal , (string_literal ""\"%s\" is a directory"" " escape_sequence string_content escape_sequence string_content ") , number_literal ))))) ;) }) (else_clause "else {\n    if (uVar3 != 0x6000) goto LAB_0002abe4;\nLAB_0002ac3b:\n    msg = (char *)dcgettext(0,"\"%s\" is a device file",5);\n  }" else (compound_statement "{\n    if (uVar3 != 0x6000) goto LAB_0002abe4;\nLAB_0002ac3b:\n    msg = (char *)dcgettext(0,"\"%s\" is a device file",5);\n  }" { (if_statement "if (uVar3 != 0x6000) goto LAB_0002abe4;" if (parenthesized_expression "(uVar3 != 0x6000)" ( (binary_expression "uVar3 != 0x6000" identifier != number_literal) )) (goto_statement "goto LAB_0002abe4;" goto statement_identifier ;)) (labeled_statement "LAB_0002ac3b:\n    msg = (char *)dcgettext(0,"\"%s\" is a device file",5);" statement_identifier : (expression_statement "msg = (char *)dcgettext(0,"\"%s\" is a device file",5);" (assignment_expression "msg = (char *)dcgettext(0,"\"%s\" is a device file",5)" identifier = (cast_expression "(char *)dcgettext(0,"\"%s\" is a device file",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"\"%s\" is a device file",5)" identifier (argument_list "(0,"\"%s\" is a device file",5)" ( number_literal , (string_literal ""\"%s\" is a device file"" " escape_sequence string_content escape_sequence string_content ") , number_literal ))))) ;)) }))) (expression_statement "rcfile_error(msg,file);" (call_expression "rcfile_error(msg,file)" identifier (argument_list "(msg,file)" ( identifier , identifier ))) ;) (expression_statement "_Var4 = false;" (assignment_expression "_Var4 = false" identifier = false) ;) (labeled_statement "LAB_0002abe4:\n  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return _Var4;\n  }" statement_identifier : (if_statement "if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return _Var4;\n  }" if (parenthesized_expression "(iVar1 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "iVar1 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return _Var4;\n  }" { (return_statement "return _Var4;" return identifier ;) }))) comment (expression_statement "__stack_chk_fail_local();" (call_expression "__stack_chk_fail_local()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "undefined4 FUN_0002abb0(char *param_1)\n\n{\n  int iVar1;\n  uint uVar2;\n  undefined4 uVar3;\n  int in_GS_OFFSET;\n  stat64 local_70;\n  int local_10;\n  undefined4 uStack_c;\n  \n  uStack_c = 0x2abb7;\n  local_10 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar1 = access(param_1,4);\n  uVar3 = 0;\n  if (iVar1 != 0) goto LAB_0002abe4;\n  iVar1 = __xstat64(3,param_1,&local_70);\n  uVar3 = 1;\n  if (iVar1 == -1) goto LAB_0002abe4;\n  uVar2 = local_70.st_mode & 0xf000;\n  if ((uVar2 - 0x2000 & 0xffffd000) == 0) {\n    if (uVar2 != 0x4000) goto LAB_0002ac3b;\n    uVar3 = dcgettext(0,"\"%s\" is a directory",5);\n  }\n  else {\n    if (uVar2 != 0x6000) goto LAB_0002abe4;\nLAB_0002ac3b:\n    uVar3 = dcgettext(0,"\"%s\" is a device file",5);\n  }\n  FUN_0002a280(uVar3,param_1);\n  uVar3 = 0;\nLAB_0002abe4:\n  if (local_10 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar3;\n  }\n                    \n  FUN_0004be20();\n}\n\n" (function_definition "undefined4 FUN_0002abb0(char *param_1)\n\n{\n  int iVar1;\n  uint uVar2;\n  undefined4 uVar3;\n  int in_GS_OFFSET;\n  stat64 local_70;\n  int local_10;\n  undefined4 uStack_c;\n  \n  uStack_c = 0x2abb7;\n  local_10 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar1 = access(param_1,4);\n  uVar3 = 0;\n  if (iVar1 != 0) goto LAB_0002abe4;\n  iVar1 = __xstat64(3,param_1,&local_70);\n  uVar3 = 1;\n  if (iVar1 == -1) goto LAB_0002abe4;\n  uVar2 = local_70.st_mode & 0xf000;\n  if ((uVar2 - 0x2000 & 0xffffd000) == 0) {\n    if (uVar2 != 0x4000) goto LAB_0002ac3b;\n    uVar3 = dcgettext(0,"\"%s\" is a directory",5);\n  }\n  else {\n    if (uVar2 != 0x6000) goto LAB_0002abe4;\nLAB_0002ac3b:\n    uVar3 = dcgettext(0,"\"%s\" is a device file",5);\n  }\n  FUN_0002a280(uVar3,param_1);\n  uVar3 = 0;\nLAB_0002abe4:\n  if (local_10 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar3;\n  }\n                    \n  FUN_0004be20();\n}" type_identifier (function_declarator "FUN_0002abb0(char *param_1)" identifier (parameter_list "(char *param_1)" ( (parameter_declaration "char *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  undefined4 uVar3;\n  int in_GS_OFFSET;\n  stat64 local_70;\n  int local_10;\n  undefined4 uStack_c;\n  \n  uStack_c = 0x2abb7;\n  local_10 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar1 = access(param_1,4);\n  uVar3 = 0;\n  if (iVar1 != 0) goto LAB_0002abe4;\n  iVar1 = __xstat64(3,param_1,&local_70);\n  uVar3 = 1;\n  if (iVar1 == -1) goto LAB_0002abe4;\n  uVar2 = local_70.st_mode & 0xf000;\n  if ((uVar2 - 0x2000 & 0xffffd000) == 0) {\n    if (uVar2 != 0x4000) goto LAB_0002ac3b;\n    uVar3 = dcgettext(0,"\"%s\" is a directory",5);\n  }\n  else {\n    if (uVar2 != 0x6000) goto LAB_0002abe4;\nLAB_0002ac3b:\n    uVar3 = dcgettext(0,"\"%s\" is a device file",5);\n  }\n  FUN_0002a280(uVar3,param_1);\n  uVar3 = 0;\nLAB_0002abe4:\n  if (local_10 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar3;\n  }\n                    \n  FUN_0004be20();\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "stat64 local_70;" type_identifier identifier ;) (declaration "int local_10;" primitive_type identifier ;) (declaration "undefined4 uStack_c;" type_identifier identifier ;) (expression_statement "uStack_c = 0x2abb7;" (assignment_expression "uStack_c = 0x2abb7" identifier = number_literal) ;) (expression_statement "local_10 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_10 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "iVar1 = access(param_1,4);" (assignment_expression "iVar1 = access(param_1,4)" identifier = (call_expression "access(param_1,4)" identifier (argument_list "(param_1,4)" ( identifier , number_literal )))) ;) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) (if_statement "if (iVar1 != 0) goto LAB_0002abe4;" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0002abe4;" goto statement_identifier ;)) (expression_statement "iVar1 = __xstat64(3,param_1,&local_70);" (assignment_expression "iVar1 = __xstat64(3,param_1,&local_70)" identifier = (call_expression "__xstat64(3,param_1,&local_70)" identifier (argument_list "(3,param_1,&local_70)" ( number_literal , identifier , (pointer_expression "&local_70" & identifier) )))) ;) (expression_statement "uVar3 = 1;" (assignment_expression "uVar3 = 1" identifier = number_literal) ;) (if_statement "if (iVar1 == -1) goto LAB_0002abe4;" if (parenthesized_expression "(iVar1 == -1)" ( (binary_expression "iVar1 == -1" identifier == number_literal) )) (goto_statement "goto LAB_0002abe4;" goto statement_identifier ;)) (expression_statement "uVar2 = local_70.st_mode & 0xf000;" (assignment_expression "uVar2 = local_70.st_mode & 0xf000" identifier = (binary_expression "local_70.st_mode & 0xf000" (field_expression "local_70.st_mode" identifier . field_identifier) & number_literal)) ;) (if_statement "if ((uVar2 - 0x2000 & 0xffffd000) == 0) {\n    if (uVar2 != 0x4000) goto LAB_0002ac3b;\n    uVar3 = dcgettext(0,"\"%s\" is a directory",5);\n  }\n  else {\n    if (uVar2 != 0x6000) goto LAB_0002abe4;\nLAB_0002ac3b:\n    uVar3 = dcgettext(0,"\"%s\" is a device file",5);\n  }" if (parenthesized_expression "((uVar2 - 0x2000 & 0xffffd000) == 0)" ( (binary_expression "(uVar2 - 0x2000 & 0xffffd000) == 0" (parenthesized_expression "(uVar2 - 0x2000 & 0xffffd000)" ( (binary_expression "uVar2 - 0x2000 & 0xffffd000" (binary_expression "uVar2 - 0x2000" identifier - number_literal) & number_literal) )) == number_literal) )) (compound_statement "{\n    if (uVar2 != 0x4000) goto LAB_0002ac3b;\n    uVar3 = dcgettext(0,"\"%s\" is a directory",5);\n  }" { (if_statement "if (uVar2 != 0x4000) goto LAB_0002ac3b;" if (parenthesized_expression "(uVar2 != 0x4000)" ( (binary_expression "uVar2 != 0x4000" identifier != number_literal) )) (goto_statement "goto LAB_0002ac3b;" goto statement_identifier ;)) (expression_statement "uVar3 = dcgettext(0,"\"%s\" is a directory",5);" (assignment_expression "uVar3 = dcgettext(0,"\"%s\" is a directory",5)" identifier = (call_expression "dcgettext(0,"\"%s\" is a directory",5)" identifier (argument_list "(0,"\"%s\" is a directory",5)" ( number_literal , (string_literal ""\"%s\" is a directory"" " escape_sequence string_content escape_sequence string_content ") , number_literal )))) ;) }) (else_clause "else {\n    if (uVar2 != 0x6000) goto LAB_0002abe4;\nLAB_0002ac3b:\n    uVar3 = dcgettext(0,"\"%s\" is a device file",5);\n  }" else (compound_statement "{\n    if (uVar2 != 0x6000) goto LAB_0002abe4;\nLAB_0002ac3b:\n    uVar3 = dcgettext(0,"\"%s\" is a device file",5);\n  }" { (if_statement "if (uVar2 != 0x6000) goto LAB_0002abe4;" if (parenthesized_expression "(uVar2 != 0x6000)" ( (binary_expression "uVar2 != 0x6000" identifier != number_literal) )) (goto_statement "goto LAB_0002abe4;" goto statement_identifier ;)) (labeled_statement "LAB_0002ac3b:\n    uVar3 = dcgettext(0,"\"%s\" is a device file",5);" statement_identifier : (expression_statement "uVar3 = dcgettext(0,"\"%s\" is a device file",5);" (assignment_expression "uVar3 = dcgettext(0,"\"%s\" is a device file",5)" identifier = (call_expression "dcgettext(0,"\"%s\" is a device file",5)" identifier (argument_list "(0,"\"%s\" is a device file",5)" ( number_literal , (string_literal ""\"%s\" is a device file"" " escape_sequence string_content escape_sequence string_content ") , number_literal )))) ;)) }))) (expression_statement "FUN_0002a280(uVar3,param_1);" (call_expression "FUN_0002a280(uVar3,param_1)" identifier (argument_list "(uVar3,param_1)" ( identifier , identifier ))) ;) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) (labeled_statement "LAB_0002abe4:\n  if (local_10 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar3;\n  }" statement_identifier : (if_statement "if (local_10 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar3;\n  }" if (parenthesized_expression "(local_10 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_10 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return uVar3;\n  }" { (return_statement "return uVar3;" return identifier ;) }))) (expression_statement "FUN_0004be20();" (call_expression "FUN_0004be20()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , IDENT , (pointer_expression & IDENT) )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression (field_expression IDENT . field_identifier) & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) & LIT) )) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " escape_sequence string_content escape_sequence string_content ") , LIT )))) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " escape_sequence string_content escape_sequence string_content ") , LIT )))) ;)) }))) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (return_statement return IDENT ;) }))) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })))
(function_definition "undefined4 FUN_0002abb0(char *param_1)\n\n{\n  int iVar1;\n  uint uVar2;\n  undefined4 uVar3;\n  int in_GS_OFFSET;\n  stat64 local_70;\n  int local_10;\n  undefined4 uStack_c;\n  \n  uStack_c = 0x2abb7;\n  local_10 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar1 = access(param_1,4);\n  uVar3 = 0;\n  if (iVar1 != 0) goto LAB_0002abe4;\n  iVar1 = __xstat64(3,param_1,&local_70);\n  uVar3 = 1;\n  if (iVar1 == -1) goto LAB_0002abe4;\n  uVar2 = local_70.st_mode & 0xf000;\n  if ((uVar2 - 0x2000 & 0xffffd000) == 0) {\n    if (uVar2 != 0x4000) goto LAB_0002ac3b;\n    uVar3 = dcgettext(0,"\"%s\" is a directory",5);\n  }\n  else {\n    if (uVar2 != 0x6000) goto LAB_0002abe4;\nLAB_0002ac3b:\n    uVar3 = dcgettext(0,"\"%s\" is a device file",5);\n  }\n  FUN_0002a280(uVar3,param_1);\n  uVar3 = 0;\nLAB_0002abe4:\n  if (local_10 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar3;\n  }\n                    \n  FUN_0004be20();\n}" (type_identifier "undefined4") (function_declarator "FUN_0002abb0(char *param_1)" (identifier "FUN_0002abb0") (parameter_list "(char *param_1)" (( "(") (parameter_declaration "char *param_1" (primitive_type "char") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) () ")"))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  undefined4 uVar3;\n  int in_GS_OFFSET;\n  stat64 local_70;\n  int local_10;\n  undefined4 uStack_c;\n  \n  uStack_c = 0x2abb7;\n  local_10 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar1 = access(param_1,4);\n  uVar3 = 0;\n  if (iVar1 != 0) goto LAB_0002abe4;\n  iVar1 = __xstat64(3,param_1,&local_70);\n  uVar3 = 1;\n  if (iVar1 == -1) goto LAB_0002abe4;\n  uVar2 = local_70.st_mode & 0xf000;\n  if ((uVar2 - 0x2000 & 0xffffd000) == 0) {\n    if (uVar2 != 0x4000) goto LAB_0002ac3b;\n    uVar3 = dcgettext(0,"\"%s\" is a directory",5);\n  }\n  else {\n    if (uVar2 != 0x6000) goto LAB_0002abe4;\nLAB_0002ac3b:\n    uVar3 = dcgettext(0,"\"%s\" is a device file",5);\n  }\n  FUN_0002a280(uVar3,param_1);\n  uVar3 = 0;\nLAB_0002abe4:\n  if (local_10 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar3;\n  }\n                    \n  FUN_0004be20();\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "undefined4 uVar3;" (type_identifier "undefined4") (identifier "uVar3") (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "stat64 local_70;" (type_identifier "stat64") (identifier "local_70") (; ";")) (declaration "int local_10;" (primitive_type "int") (identifier "local_10") (; ";")) (declaration "undefined4 uStack_c;" (type_identifier "undefined4") (identifier "uStack_c") (; ";")) (expression_statement "uStack_c = 0x2abb7;" (assignment_expression "uStack_c = 0x2abb7" (identifier "uStack_c") (= "=") (number_literal "0x2abb7")) (; ";")) (expression_statement "local_10 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_10 = *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_10") (= "=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "iVar1 = access(param_1,4);" (assignment_expression "iVar1 = access(param_1,4)" (identifier "iVar1") (= "=") (call_expression "access(param_1,4)" (identifier "access") (argument_list "(param_1,4)" (( "(") (identifier "param_1") (, ",") (number_literal "4") () ")")))) (; ";")) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" (identifier "uVar3") (= "=") (number_literal "0")) (; ";")) (if_statement "if (iVar1 != 0) goto LAB_0002abe4;" (if "if") (parenthesized_expression "(iVar1 != 0)" (( "(") (binary_expression "iVar1 != 0" (identifier "iVar1") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0002abe4;" (goto "goto") (statement_identifier "LAB_0002abe4") (; ";"))) (expression_statement "iVar1 = __xstat64(3,param_1,&local_70);" (assignment_expression "iVar1 = __xstat64(3,param_1,&local_70)" (identifier "iVar1") (= "=") (call_expression "__xstat64(3,param_1,&local_70)" (identifier "__xstat64") (argument_list "(3,param_1,&local_70)" (( "(") (number_literal "3") (, ",") (identifier "param_1") (, ",") (pointer_expression "&local_70" (& "&") (identifier "local_70")) () ")")))) (; ";")) (expression_statement "uVar3 = 1;" (assignment_expression "uVar3 = 1" (identifier "uVar3") (= "=") (number_literal "1")) (; ";")) (if_statement "if (iVar1 == -1) goto LAB_0002abe4;" (if "if") (parenthesized_expression "(iVar1 == -1)" (( "(") (binary_expression "iVar1 == -1" (identifier "iVar1") (== "==") (number_literal "-1")) () ")")) (goto_statement "goto LAB_0002abe4;" (goto "goto") (statement_identifier "LAB_0002abe4") (; ";"))) (expression_statement "uVar2 = local_70.st_mode & 0xf000;" (assignment_expression "uVar2 = local_70.st_mode & 0xf000" (identifier "uVar2") (= "=") (binary_expression "local_70.st_mode & 0xf000" (field_expression "local_70.st_mode" (identifier "local_70") (. ".") (field_identifier "st_mode")) (& "&") (number_literal "0xf000"))) (; ";")) (if_statement "if ((uVar2 - 0x2000 & 0xffffd000) == 0) {\n    if (uVar2 != 0x4000) goto LAB_0002ac3b;\n    uVar3 = dcgettext(0,"\"%s\" is a directory",5);\n  }\n  else {\n    if (uVar2 != 0x6000) goto LAB_0002abe4;\nLAB_0002ac3b:\n    uVar3 = dcgettext(0,"\"%s\" is a device file",5);\n  }" (if "if") (parenthesized_expression "((uVar2 - 0x2000 & 0xffffd000) == 0)" (( "(") (binary_expression "(uVar2 - 0x2000 & 0xffffd000) == 0" (parenthesized_expression "(uVar2 - 0x2000 & 0xffffd000)" (( "(") (binary_expression "uVar2 - 0x2000 & 0xffffd000" (binary_expression "uVar2 - 0x2000" (identifier "uVar2") (- "-") (number_literal "0x2000")) (& "&") (number_literal "0xffffd000")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    if (uVar2 != 0x4000) goto LAB_0002ac3b;\n    uVar3 = dcgettext(0,"\"%s\" is a directory",5);\n  }" ({ "{") (if_statement "if (uVar2 != 0x4000) goto LAB_0002ac3b;" (if "if") (parenthesized_expression "(uVar2 != 0x4000)" (( "(") (binary_expression "uVar2 != 0x4000" (identifier "uVar2") (!= "!=") (number_literal "0x4000")) () ")")) (goto_statement "goto LAB_0002ac3b;" (goto "goto") (statement_identifier "LAB_0002ac3b") (; ";"))) (expression_statement "uVar3 = dcgettext(0,"\"%s\" is a directory",5);" (assignment_expression "uVar3 = dcgettext(0,"\"%s\" is a directory",5)" (identifier "uVar3") (= "=") (call_expression "dcgettext(0,"\"%s\" is a directory",5)" (identifier "dcgettext") (argument_list "(0,"\"%s\" is a directory",5)" (( "(") (number_literal "0") (, ",") (string_literal ""\"%s\" is a directory"" (" """) (escape_sequence "\"") (string_content "%s") (escape_sequence "\"") (string_content " is a directory") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (} "}")) (else_clause "else {\n    if (uVar2 != 0x6000) goto LAB_0002abe4;\nLAB_0002ac3b:\n    uVar3 = dcgettext(0,"\"%s\" is a device file",5);\n  }" (else "else") (compound_statement "{\n    if (uVar2 != 0x6000) goto LAB_0002abe4;\nLAB_0002ac3b:\n    uVar3 = dcgettext(0,"\"%s\" is a device file",5);\n  }" ({ "{") (if_statement "if (uVar2 != 0x6000) goto LAB_0002abe4;" (if "if") (parenthesized_expression "(uVar2 != 0x6000)" (( "(") (binary_expression "uVar2 != 0x6000" (identifier "uVar2") (!= "!=") (number_literal "0x6000")) () ")")) (goto_statement "goto LAB_0002abe4;" (goto "goto") (statement_identifier "LAB_0002abe4") (; ";"))) (labeled_statement "LAB_0002ac3b:\n    uVar3 = dcgettext(0,"\"%s\" is a device file",5);" (statement_identifier "LAB_0002ac3b") (: ":") (expression_statement "uVar3 = dcgettext(0,"\"%s\" is a device file",5);" (assignment_expression "uVar3 = dcgettext(0,"\"%s\" is a device file",5)" (identifier "uVar3") (= "=") (call_expression "dcgettext(0,"\"%s\" is a device file",5)" (identifier "dcgettext") (argument_list "(0,"\"%s\" is a device file",5)" (( "(") (number_literal "0") (, ",") (string_literal ""\"%s\" is a device file"" (" """) (escape_sequence "\"") (string_content "%s") (escape_sequence "\"") (string_content " is a device file") (" """)) (, ",") (number_literal "5") () ")")))) (; ";"))) (} "}")))) (expression_statement "FUN_0002a280(uVar3,param_1);" (call_expression "FUN_0002a280(uVar3,param_1)" (identifier "FUN_0002a280") (argument_list "(uVar3,param_1)" (( "(") (identifier "uVar3") (, ",") (identifier "param_1") () ")"))) (; ";")) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" (identifier "uVar3") (= "=") (number_literal "0")) (; ";")) (labeled_statement "LAB_0002abe4:\n  if (local_10 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar3;\n  }" (statement_identifier "LAB_0002abe4") (: ":") (if_statement "if (local_10 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar3;\n  }" (if "if") (parenthesized_expression "(local_10 == *(int *)(in_GS_OFFSET + 0x14))" (( "(") (binary_expression "local_10 == *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_10") (== "==") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (compound_statement "{\n    return uVar3;\n  }" ({ "{") (return_statement "return uVar3;" (return "return") (identifier "uVar3") (; ";")) (} "}")))) (expression_statement "FUN_0004be20();" (call_expression "FUN_0004be20()" (identifier "FUN_0004be20") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Unknown calling convention */

type_1 function_1(char *file)

{
  int var_8;
  int var_3;
  type_2 var_5;
  char *msg;
  type_1 _Var4;
  int var_1;
  type_3 rcinfo;
  
  var_8 = *(int *)(var_1 + 0x14);
  var_3 = var_2(file,4);
  _Var4 = false;
  if (var_3 != 0) goto LAB_0002abe4;
  var_3 = var_4(3,file,(type_4 *)&rcinfo);
  _Var4 = true;
  if (var_3 == -1) goto LAB_0002abe4;
  var_5 = rcinfo.st_mode & 0xf000;
  if ((var_5 - 0x2000 & 0xffffd000) == 0) {
    if (var_5 != 0x4000) goto LAB_0002ac3b;
    msg = (char *)var_6(0,"\"%s\" is a directory",5);
  }
  else {
    if (var_5 != 0x6000) goto LAB_0002abe4;
LAB_0002ac3b:
    msg = (char *)var_6(0,"\"%s\" is a device file",5);
  }
  var_7(msg,file);
  _Var4 = false;
LAB_0002abe4:
  if (var_8 == *(int *)(var_1 + 0x14)) {
    return _Var4;
  }
                    /* WARNING: Subroutine does not return */
  var_9();
}


(translation_unit (function_definition type: (type_identifier) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (number_literal) (identifier) (pointer_expression argument: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (escape_sequence) (string_content) (escape_sequence) (string_content)) (number_literal)))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (escape_sequence) (string_content) (escape_sequence) (string_content)) (number_literal))))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) consequence: (compound_statement (return_statement (identifier))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))))))

/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

undefined4 MASKED(char *param_1)

{
  int iVar1;
  uint uVar2;
  undefined4 uVar3;
  int in_GS_OFFSET;
  stat64 local_70;
  int local_10;
  undefined4 uStack_c;
  
  uStack_c = 0x2abb7;
  local_10 = *(int *)(in_GS_OFFSET + 0x14);
  iVar1 = access(param_1,4);
  uVar3 = 0;
  if (iVar1 != 0) goto LAB_0002abe4;
  iVar1 = __xstat64(3,param_1,&local_70);
  uVar3 = 1;
  if (iVar1 == -1) goto LAB_0002abe4;
  uVar2 = local_70.st_mode & 0xf000;
  if ((uVar2 - 0x2000 & 0xffffd000) == 0) {
    if (uVar2 != 0x4000) goto LAB_0002ac3b;
    uVar3 = dcgettext(0,"\"%s\" is a directory",5);
  }
  else {
    if (uVar2 != 0x6000) goto LAB_0002abe4;
LAB_0002ac3b:
    uVar3 = dcgettext(0,"\"%s\" is a device file",5);
  }
  FUN_0002a280(uVar3,param_1);
  uVar3 = 0;
LAB_0002abe4:
  if (local_10 == *(int *)(in_GS_OFFSET + 0x14)) {
    return uVar3;
  }
                    /* WARNING: Subroutine does not return */
  FUN_0004be20();
}

