
char * quotearg_alloc_mem(char *arg,size_t argsize,size_t *size,quoting_options *o)

{
  int iVar1;
  int *piVar2;
  size_t sVar3;
  char *buffer;
  wchar_t flags;
  
  if (o == (quoting_options *)0x0) {
    o = &default_quoting_options;
  }
  piVar2 = __errno_location();
  iVar1 = *piVar2;
  flags = (uint)(size == (size_t *)0x0) | o->flags;
  sVar3 = quotearg_buffer_restyled
                    ((char *)0x0,0,arg,argsize,o->style,flags,o->quote_these_too,o->left_quote,
                     o->right_quote);
  buffer = (char *)xmalloc(sVar3 + 1);
  quotearg_buffer_restyled
            (buffer,sVar3 + 1,arg,argsize,o->style,flags,o->quote_these_too,o->left_quote,
             o->right_quote);
  *piVar2 = iVar1;
  if (size != (size_t *)0x0) {
    *size = sVar3;
  }
  return buffer;
}



undefined8 FUN_0011f160(undefined8 param_1,undefined8 param_2,long *param_3,undefined4 *param_4)

{
  int iVar1;
  int *piVar2;
  long lVar3;
  undefined8 uVar4;
  uint uVar5;
  
  if (param_4 == (undefined4 *)0x0) {
    param_4 = (undefined4 *)&DAT_001355e0;
  }
  piVar2 = __errno_location();
  iVar1 = *piVar2;
  uVar5 = (uint)(param_3 == (long *)0x0) | param_4[1];
  lVar3 = FUN_0011d690(0,0,param_1,param_2,*param_4,uVar5,param_4 + 2,*(undefined8 *)(param_4 + 10),
                       *(undefined8 *)(param_4 + 0xc));
  uVar4 = FUN_00120ce0(lVar3 + 1);
  FUN_0011d690(uVar4,lVar3 + 1,param_1,param_2,*param_4,uVar5,param_4 + 2,
               *(undefined8 *)(param_4 + 10),*(undefined8 *)(param_4 + 0xc));
  *piVar2 = iVar1;
  if (param_3 != (long *)0x0) {
    *param_3 = lVar3;
  }
  return uVar4;
}


PUSH R15
LEA RAX,[0x1355e0]
MOV R15,RSI
PUSH R14
MOV R14,RDI
PUSH R13
PUSH R12
MOV R12,RDX
PUSH RBP
PUSH RBX
MOV RBX,RCX
SUB RSP,0x38
TEST RCX,RCX
CMOVZ RBX,RAX
XOR EBP,EBP
CALL 0x001040b0
TEST R12,R12
MOV RCX,R15
MOV RDX,R14
MOV R13,RAX
MOV EAX,dword ptr [RAX]
SETZ BPL
LEA R10,[RBX + 0x8]
SUB RSP,0x8
OR EBP,dword ptr [RBX + 0x4]
MOV R8D,dword ptr [RBX]
XOR ESI,ESI
MOV dword ptr [RSP + 0x14],EAX
MOV R9D,EBP
XOR EDI,EDI
PUSH qword ptr [RBX + 0x30]
PUSH qword ptr [RBX + 0x28]
PUSH R10
MOV qword ptr [RSP + 0x40],R10
CALL 0x0011d690
LEA RSI,[RAX + 0x1]
MOV qword ptr [RSP + 0x48],RAX
ADD RSP,0x20
MOV RDI,RSI
MOV qword ptr [RSP + 0x18],RSI
CALL 0x00120ce0
MOV R8D,dword ptr [RBX]
MOV R9D,EBP
MOV RCX,R15
MOV qword ptr [RSP + 0x10],RAX
SUB RSP,0x8
MOV RDX,R14
MOV RDI,RAX
PUSH qword ptr [RBX + 0x30]
PUSH qword ptr [RBX + 0x28]
MOV R10,qword ptr [RSP + 0x38]
PUSH R10
MOV RSI,qword ptr [RSP + 0x38]
CALL 0x0011d690
MOV EAX,dword ptr [RSP + 0x2c]
ADD RSP,0x20
MOV dword ptr [R13],EAX
TEST R12,R12
JZ 0x0011f22f
MOV R11,qword ptr [RSP + 0x28]
MOV qword ptr [R12],R11
MOV RAX,qword ptr [RSP + 0x10]
ADD RSP,0x38
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
(translation_unit "undefined8 FUN_0011f160(undefined8 param_1,undefined8 param_2,long *param_3,undefined4 *param_4)\n\n{\n  int iVar1;\n  int *piVar2;\n  long lVar3;\n  undefined8 uVar4;\n  uint uVar5;\n  \n  if (param_4 == (undefined4 *)0x0) {\n    param_4 = (undefined4 *)&DAT_001355e0;\n  }\n  piVar2 = __errno_location();\n  iVar1 = *piVar2;\n  uVar5 = (uint)(param_3 == (long *)0x0) | param_4[1];\n  lVar3 = FUN_0011d690(0,0,param_1,param_2,*param_4,uVar5,param_4 + 2,*(undefined8 *)(param_4 + 10),\n                       *(undefined8 *)(param_4 + 0xc));\n  uVar4 = FUN_00120ce0(lVar3 + 1);\n  FUN_0011d690(uVar4,lVar3 + 1,param_1,param_2,*param_4,uVar5,param_4 + 2,\n               *(undefined8 *)(param_4 + 10),*(undefined8 *)(param_4 + 0xc));\n  *piVar2 = iVar1;\n  if (param_3 != (long *)0x0) {\n    *param_3 = lVar3;\n  }\n  return uVar4;\n}\n\n" (function_definition "undefined8 FUN_0011f160(undefined8 param_1,undefined8 param_2,long *param_3,undefined4 *param_4)\n\n{\n  int iVar1;\n  int *piVar2;\n  long lVar3;\n  undefined8 uVar4;\n  uint uVar5;\n  \n  if (param_4 == (undefined4 *)0x0) {\n    param_4 = (undefined4 *)&DAT_001355e0;\n  }\n  piVar2 = __errno_location();\n  iVar1 = *piVar2;\n  uVar5 = (uint)(param_3 == (long *)0x0) | param_4[1];\n  lVar3 = FUN_0011d690(0,0,param_1,param_2,*param_4,uVar5,param_4 + 2,*(undefined8 *)(param_4 + 10),\n                       *(undefined8 *)(param_4 + 0xc));\n  uVar4 = FUN_00120ce0(lVar3 + 1);\n  FUN_0011d690(uVar4,lVar3 + 1,param_1,param_2,*param_4,uVar5,param_4 + 2,\n               *(undefined8 *)(param_4 + 10),*(undefined8 *)(param_4 + 0xc));\n  *piVar2 = iVar1;\n  if (param_3 != (long *)0x0) {\n    *param_3 = lVar3;\n  }\n  return uVar4;\n}" type_identifier (function_declarator "FUN_0011f160(undefined8 param_1,undefined8 param_2,long *param_3,undefined4 *param_4)" identifier (parameter_list "(undefined8 param_1,undefined8 param_2,long *param_3,undefined4 *param_4)" ( (parameter_declaration "undefined8 param_1" type_identifier identifier) , (parameter_declaration "undefined8 param_2" type_identifier identifier) , (parameter_declaration "long *param_3" (sized_type_specifier "long" long) (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "undefined4 *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  int *piVar2;\n  long lVar3;\n  undefined8 uVar4;\n  uint uVar5;\n  \n  if (param_4 == (undefined4 *)0x0) {\n    param_4 = (undefined4 *)&DAT_001355e0;\n  }\n  piVar2 = __errno_location();\n  iVar1 = *piVar2;\n  uVar5 = (uint)(param_3 == (long *)0x0) | param_4[1];\n  lVar3 = FUN_0011d690(0,0,param_1,param_2,*param_4,uVar5,param_4 + 2,*(undefined8 *)(param_4 + 10),\n                       *(undefined8 *)(param_4 + 0xc));\n  uVar4 = FUN_00120ce0(lVar3 + 1);\n  FUN_0011d690(uVar4,lVar3 + 1,param_1,param_2,*param_4,uVar5,param_4 + 2,\n               *(undefined8 *)(param_4 + 10),*(undefined8 *)(param_4 + 0xc));\n  *piVar2 = iVar1;\n  if (param_3 != (long *)0x0) {\n    *param_3 = lVar3;\n  }\n  return uVar4;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (if_statement "if (param_4 == (undefined4 *)0x0) {\n    param_4 = (undefined4 *)&DAT_001355e0;\n  }" if (parenthesized_expression "(param_4 == (undefined4 *)0x0)" ( (binary_expression "param_4 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    param_4 = (undefined4 *)&DAT_001355e0;\n  }" { (expression_statement "param_4 = (undefined4 *)&DAT_001355e0;" (assignment_expression "param_4 = (undefined4 *)&DAT_001355e0" identifier = (cast_expression "(undefined4 *)&DAT_001355e0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_001355e0" & identifier))) ;) })) (expression_statement "piVar2 = __errno_location();" (assignment_expression "piVar2 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar1 = *piVar2;" (assignment_expression "iVar1 = *piVar2" identifier = (pointer_expression "*piVar2" * identifier)) ;) (expression_statement "uVar5 = (uint)(param_3 == (long *)0x0) | param_4[1];" (assignment_expression "uVar5 = (uint)(param_3 == (long *)0x0) | param_4[1]" identifier = (binary_expression "(uint)(param_3 == (long *)0x0) | param_4[1]" (call_expression "(uint)(param_3 == (long *)0x0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_3 == (long *)0x0)" ( (binary_expression "param_3 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ))) | (subscript_expression "param_4[1]" identifier [ number_literal ]))) ;) (expression_statement "lVar3 = FUN_0011d690(0,0,param_1,param_2,*param_4,uVar5,param_4 + 2,*(undefined8 *)(param_4 + 10),\n                       *(undefined8 *)(param_4 + 0xc));" (assignment_expression "lVar3 = FUN_0011d690(0,0,param_1,param_2,*param_4,uVar5,param_4 + 2,*(undefined8 *)(param_4 + 10),\n                       *(undefined8 *)(param_4 + 0xc))" identifier = (call_expression "FUN_0011d690(0,0,param_1,param_2,*param_4,uVar5,param_4 + 2,*(undefined8 *)(param_4 + 10),\n                       *(undefined8 *)(param_4 + 0xc))" identifier (argument_list "(0,0,param_1,param_2,*param_4,uVar5,param_4 + 2,*(undefined8 *)(param_4 + 10),\n                       *(undefined8 *)(param_4 + 0xc))" ( number_literal , number_literal , identifier , identifier , (pointer_expression "*param_4" * identifier) , identifier , (binary_expression "param_4 + 2" identifier + number_literal) , (pointer_expression "*(undefined8 *)(param_4 + 10)" * (cast_expression "(undefined8 *)(param_4 + 10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 10)" ( (binary_expression "param_4 + 10" identifier + number_literal) )))) , (pointer_expression "*(undefined8 *)(param_4 + 0xc)" * (cast_expression "(undefined8 *)(param_4 + 0xc)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0xc)" ( (binary_expression "param_4 + 0xc" identifier + number_literal) )))) )))) ;) (expression_statement "uVar4 = FUN_00120ce0(lVar3 + 1);" (assignment_expression "uVar4 = FUN_00120ce0(lVar3 + 1)" identifier = (call_expression "FUN_00120ce0(lVar3 + 1)" identifier (argument_list "(lVar3 + 1)" ( (binary_expression "lVar3 + 1" identifier + number_literal) )))) ;) (expression_statement "FUN_0011d690(uVar4,lVar3 + 1,param_1,param_2,*param_4,uVar5,param_4 + 2,\n               *(undefined8 *)(param_4 + 10),*(undefined8 *)(param_4 + 0xc));" (call_expression "FUN_0011d690(uVar4,lVar3 + 1,param_1,param_2,*param_4,uVar5,param_4 + 2,\n               *(undefined8 *)(param_4 + 10),*(undefined8 *)(param_4 + 0xc))" identifier (argument_list "(uVar4,lVar3 + 1,param_1,param_2,*param_4,uVar5,param_4 + 2,\n               *(undefined8 *)(param_4 + 10),*(undefined8 *)(param_4 + 0xc))" ( identifier , (binary_expression "lVar3 + 1" identifier + number_literal) , identifier , identifier , (pointer_expression "*param_4" * identifier) , identifier , (binary_expression "param_4 + 2" identifier + number_literal) , (pointer_expression "*(undefined8 *)(param_4 + 10)" * (cast_expression "(undefined8 *)(param_4 + 10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 10)" ( (binary_expression "param_4 + 10" identifier + number_literal) )))) , (pointer_expression "*(undefined8 *)(param_4 + 0xc)" * (cast_expression "(undefined8 *)(param_4 + 0xc)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0xc)" ( (binary_expression "param_4 + 0xc" identifier + number_literal) )))) ))) ;) (expression_statement "*piVar2 = iVar1;" (assignment_expression "*piVar2 = iVar1" (pointer_expression "*piVar2" * identifier) = identifier) ;) (if_statement "if (param_3 != (long *)0x0) {\n    *param_3 = lVar3;\n  }" if (parenthesized_expression "(param_3 != (long *)0x0)" ( (binary_expression "param_3 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    *param_3 = lVar3;\n  }" { (expression_statement "*param_3 = lVar3;" (assignment_expression "*param_3 = lVar3" (pointer_expression "*param_3" * identifier) = identifier) ;) })) (return_statement "return uVar4;" return identifier ;) })))
(translation_unit "char * quotearg_alloc_mem(char *arg,size_t argsize,size_t *size,quoting_options *o)\n\n{\n  int iVar1;\n  int *piVar2;\n  size_t sVar3;\n  char *buffer;\n  wchar_t flags;\n  \n  if (o == (quoting_options *)0x0) {\n    o = &default_quoting_options;\n  }\n  piVar2 = __errno_location();\n  iVar1 = *piVar2;\n  flags = (uint)(size == (size_t *)0x0) | o->flags;\n  sVar3 = quotearg_buffer_restyled\n                    ((char *)0x0,0,arg,argsize,o->style,flags,o->quote_these_too,o->left_quote,\n                     o->right_quote);\n  buffer = (char *)xmalloc(sVar3 + 1);\n  quotearg_buffer_restyled\n            (buffer,sVar3 + 1,arg,argsize,o->style,flags,o->quote_these_too,o->left_quote,\n             o->right_quote);\n  *piVar2 = iVar1;\n  if (size != (size_t *)0x0) {\n    *size = sVar3;\n  }\n  return buffer;\n}\n\n" (function_definition "char * quotearg_alloc_mem(char *arg,size_t argsize,size_t *size,quoting_options *o)\n\n{\n  int iVar1;\n  int *piVar2;\n  size_t sVar3;\n  char *buffer;\n  wchar_t flags;\n  \n  if (o == (quoting_options *)0x0) {\n    o = &default_quoting_options;\n  }\n  piVar2 = __errno_location();\n  iVar1 = *piVar2;\n  flags = (uint)(size == (size_t *)0x0) | o->flags;\n  sVar3 = quotearg_buffer_restyled\n                    ((char *)0x0,0,arg,argsize,o->style,flags,o->quote_these_too,o->left_quote,\n                     o->right_quote);\n  buffer = (char *)xmalloc(sVar3 + 1);\n  quotearg_buffer_restyled\n            (buffer,sVar3 + 1,arg,argsize,o->style,flags,o->quote_these_too,o->left_quote,\n             o->right_quote);\n  *piVar2 = iVar1;\n  if (size != (size_t *)0x0) {\n    *size = sVar3;\n  }\n  return buffer;\n}" primitive_type (pointer_declarator "* quotearg_alloc_mem(char *arg,size_t argsize,size_t *size,quoting_options *o)" * (function_declarator "quotearg_alloc_mem(char *arg,size_t argsize,size_t *size,quoting_options *o)" identifier (parameter_list "(char *arg,size_t argsize,size_t *size,quoting_options *o)" ( (parameter_declaration "char *arg" primitive_type (pointer_declarator "*arg" * identifier)) , (parameter_declaration "size_t argsize" primitive_type identifier) , (parameter_declaration "size_t *size" primitive_type (pointer_declarator "*size" * identifier)) , (parameter_declaration "quoting_options *o" type_identifier (pointer_declarator "*o" * identifier)) )))) (compound_statement "{\n  int iVar1;\n  int *piVar2;\n  size_t sVar3;\n  char *buffer;\n  wchar_t flags;\n  \n  if (o == (quoting_options *)0x0) {\n    o = &default_quoting_options;\n  }\n  piVar2 = __errno_location();\n  iVar1 = *piVar2;\n  flags = (uint)(size == (size_t *)0x0) | o->flags;\n  sVar3 = quotearg_buffer_restyled\n                    ((char *)0x0,0,arg,argsize,o->style,flags,o->quote_these_too,o->left_quote,\n                     o->right_quote);\n  buffer = (char *)xmalloc(sVar3 + 1);\n  quotearg_buffer_restyled\n            (buffer,sVar3 + 1,arg,argsize,o->style,flags,o->quote_these_too,o->left_quote,\n             o->right_quote);\n  *piVar2 = iVar1;\n  if (size != (size_t *)0x0) {\n    *size = sVar3;\n  }\n  return buffer;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "size_t sVar3;" primitive_type identifier ;) (declaration "char *buffer;" primitive_type (pointer_declarator "*buffer" * identifier) ;) (declaration "wchar_t flags;" type_identifier identifier ;) (if_statement "if (o == (quoting_options *)0x0) {\n    o = &default_quoting_options;\n  }" if (parenthesized_expression "(o == (quoting_options *)0x0)" ( (binary_expression "o == (quoting_options *)0x0" identifier == (cast_expression "(quoting_options *)0x0" ( (type_descriptor "quoting_options *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    o = &default_quoting_options;\n  }" { (expression_statement "o = &default_quoting_options;" (assignment_expression "o = &default_quoting_options" identifier = (pointer_expression "&default_quoting_options" & identifier)) ;) })) (expression_statement "piVar2 = __errno_location();" (assignment_expression "piVar2 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar1 = *piVar2;" (assignment_expression "iVar1 = *piVar2" identifier = (pointer_expression "*piVar2" * identifier)) ;) (expression_statement "flags = (uint)(size == (size_t *)0x0) | o->flags;" (assignment_expression "flags = (uint)(size == (size_t *)0x0) | o->flags" identifier = (binary_expression "(uint)(size == (size_t *)0x0) | o->flags" (call_expression "(uint)(size == (size_t *)0x0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(size == (size_t *)0x0)" ( (binary_expression "size == (size_t *)0x0" identifier == (cast_expression "(size_t *)0x0" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ))) | (field_expression "o->flags" identifier -> field_identifier))) ;) (expression_statement "sVar3 = quotearg_buffer_restyled\n                    ((char *)0x0,0,arg,argsize,o->style,flags,o->quote_these_too,o->left_quote,\n                     o->right_quote);" (assignment_expression "sVar3 = quotearg_buffer_restyled\n                    ((char *)0x0,0,arg,argsize,o->style,flags,o->quote_these_too,o->left_quote,\n                     o->right_quote)" identifier = (call_expression "quotearg_buffer_restyled\n                    ((char *)0x0,0,arg,argsize,o->style,flags,o->quote_these_too,o->left_quote,\n                     o->right_quote)" identifier (argument_list "((char *)0x0,0,arg,argsize,o->style,flags,o->quote_these_too,o->left_quote,\n                     o->right_quote)" ( (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) , number_literal , identifier , identifier , (field_expression "o->style" identifier -> field_identifier) , identifier , (field_expression "o->quote_these_too" identifier -> field_identifier) , (field_expression "o->left_quote" identifier -> field_identifier) , (field_expression "o->right_quote" identifier -> field_identifier) )))) ;) (expression_statement "buffer = (char *)xmalloc(sVar3 + 1);" (assignment_expression "buffer = (char *)xmalloc(sVar3 + 1)" identifier = (cast_expression "(char *)xmalloc(sVar3 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar3 + 1)" identifier (argument_list "(sVar3 + 1)" ( (binary_expression "sVar3 + 1" identifier + number_literal) ))))) ;) (expression_statement "quotearg_buffer_restyled\n            (buffer,sVar3 + 1,arg,argsize,o->style,flags,o->quote_these_too,o->left_quote,\n             o->right_quote);" (call_expression "quotearg_buffer_restyled\n            (buffer,sVar3 + 1,arg,argsize,o->style,flags,o->quote_these_too,o->left_quote,\n             o->right_quote)" identifier (argument_list "(buffer,sVar3 + 1,arg,argsize,o->style,flags,o->quote_these_too,o->left_quote,\n             o->right_quote)" ( identifier , (binary_expression "sVar3 + 1" identifier + number_literal) , identifier , identifier , (field_expression "o->style" identifier -> field_identifier) , identifier , (field_expression "o->quote_these_too" identifier -> field_identifier) , (field_expression "o->left_quote" identifier -> field_identifier) , (field_expression "o->right_quote" identifier -> field_identifier) ))) ;) (expression_statement "*piVar2 = iVar1;" (assignment_expression "*piVar2 = iVar1" (pointer_expression "*piVar2" * identifier) = identifier) ;) (if_statement "if (size != (size_t *)0x0) {\n    *size = sVar3;\n  }" if (parenthesized_expression "(size != (size_t *)0x0)" ( (binary_expression "size != (size_t *)0x0" identifier != (cast_expression "(size_t *)0x0" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    *size = sVar3;\n  }" { (expression_statement "*size = sVar3;" (assignment_expression "*size = sVar3" (pointer_expression "*size" * identifier) = identifier) ;) })) (return_statement "return buffer;" return identifier ;) })))
(translation_unit "undefined8 FUN_0011f160(undefined8 param_1,undefined8 param_2,long *param_3,undefined4 *param_4)\n\n{\n  int iVar1;\n  int *piVar2;\n  long lVar3;\n  undefined8 uVar4;\n  uint uVar5;\n  \n  if (param_4 == (undefined4 *)0x0) {\n    param_4 = (undefined4 *)&DAT_001355e0;\n  }\n  piVar2 = __errno_location();\n  iVar1 = *piVar2;\n  uVar5 = (uint)(param_3 == (long *)0x0) | param_4[1];\n  lVar3 = FUN_0011d690(0,0,param_1,param_2,*param_4,uVar5,param_4 + 2,*(undefined8 *)(param_4 + 10),\n                       *(undefined8 *)(param_4 + 0xc));\n  uVar4 = FUN_00120ce0(lVar3 + 1);\n  FUN_0011d690(uVar4,lVar3 + 1,param_1,param_2,*param_4,uVar5,param_4 + 2,\n               *(undefined8 *)(param_4 + 10),*(undefined8 *)(param_4 + 0xc));\n  *piVar2 = iVar1;\n  if (param_3 != (long *)0x0) {\n    *param_3 = lVar3;\n  }\n  return uVar4;\n}\n\n" (function_definition "undefined8 FUN_0011f160(undefined8 param_1,undefined8 param_2,long *param_3,undefined4 *param_4)\n\n{\n  int iVar1;\n  int *piVar2;\n  long lVar3;\n  undefined8 uVar4;\n  uint uVar5;\n  \n  if (param_4 == (undefined4 *)0x0) {\n    param_4 = (undefined4 *)&DAT_001355e0;\n  }\n  piVar2 = __errno_location();\n  iVar1 = *piVar2;\n  uVar5 = (uint)(param_3 == (long *)0x0) | param_4[1];\n  lVar3 = FUN_0011d690(0,0,param_1,param_2,*param_4,uVar5,param_4 + 2,*(undefined8 *)(param_4 + 10),\n                       *(undefined8 *)(param_4 + 0xc));\n  uVar4 = FUN_00120ce0(lVar3 + 1);\n  FUN_0011d690(uVar4,lVar3 + 1,param_1,param_2,*param_4,uVar5,param_4 + 2,\n               *(undefined8 *)(param_4 + 10),*(undefined8 *)(param_4 + 0xc));\n  *piVar2 = iVar1;\n  if (param_3 != (long *)0x0) {\n    *param_3 = lVar3;\n  }\n  return uVar4;\n}" type_identifier (function_declarator "FUN_0011f160(undefined8 param_1,undefined8 param_2,long *param_3,undefined4 *param_4)" identifier (parameter_list "(undefined8 param_1,undefined8 param_2,long *param_3,undefined4 *param_4)" ( (parameter_declaration "undefined8 param_1" type_identifier identifier) , (parameter_declaration "undefined8 param_2" type_identifier identifier) , (parameter_declaration "long *param_3" (sized_type_specifier "long" long) (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "undefined4 *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  int *piVar2;\n  long lVar3;\n  undefined8 uVar4;\n  uint uVar5;\n  \n  if (param_4 == (undefined4 *)0x0) {\n    param_4 = (undefined4 *)&DAT_001355e0;\n  }\n  piVar2 = __errno_location();\n  iVar1 = *piVar2;\n  uVar5 = (uint)(param_3 == (long *)0x0) | param_4[1];\n  lVar3 = FUN_0011d690(0,0,param_1,param_2,*param_4,uVar5,param_4 + 2,*(undefined8 *)(param_4 + 10),\n                       *(undefined8 *)(param_4 + 0xc));\n  uVar4 = FUN_00120ce0(lVar3 + 1);\n  FUN_0011d690(uVar4,lVar3 + 1,param_1,param_2,*param_4,uVar5,param_4 + 2,\n               *(undefined8 *)(param_4 + 10),*(undefined8 *)(param_4 + 0xc));\n  *piVar2 = iVar1;\n  if (param_3 != (long *)0x0) {\n    *param_3 = lVar3;\n  }\n  return uVar4;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (if_statement "if (param_4 == (undefined4 *)0x0) {\n    param_4 = (undefined4 *)&DAT_001355e0;\n  }" if (parenthesized_expression "(param_4 == (undefined4 *)0x0)" ( (binary_expression "param_4 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    param_4 = (undefined4 *)&DAT_001355e0;\n  }" { (expression_statement "param_4 = (undefined4 *)&DAT_001355e0;" (assignment_expression "param_4 = (undefined4 *)&DAT_001355e0" identifier = (cast_expression "(undefined4 *)&DAT_001355e0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_001355e0" & identifier))) ;) })) (expression_statement "piVar2 = __errno_location();" (assignment_expression "piVar2 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar1 = *piVar2;" (assignment_expression "iVar1 = *piVar2" identifier = (pointer_expression "*piVar2" * identifier)) ;) (expression_statement "uVar5 = (uint)(param_3 == (long *)0x0) | param_4[1];" (assignment_expression "uVar5 = (uint)(param_3 == (long *)0x0) | param_4[1]" identifier = (binary_expression "(uint)(param_3 == (long *)0x0) | param_4[1]" (call_expression "(uint)(param_3 == (long *)0x0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_3 == (long *)0x0)" ( (binary_expression "param_3 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ))) | (subscript_expression "param_4[1]" identifier [ number_literal ]))) ;) (expression_statement "lVar3 = FUN_0011d690(0,0,param_1,param_2,*param_4,uVar5,param_4 + 2,*(undefined8 *)(param_4 + 10),\n                       *(undefined8 *)(param_4 + 0xc));" (assignment_expression "lVar3 = FUN_0011d690(0,0,param_1,param_2,*param_4,uVar5,param_4 + 2,*(undefined8 *)(param_4 + 10),\n                       *(undefined8 *)(param_4 + 0xc))" identifier = (call_expression "FUN_0011d690(0,0,param_1,param_2,*param_4,uVar5,param_4 + 2,*(undefined8 *)(param_4 + 10),\n                       *(undefined8 *)(param_4 + 0xc))" identifier (argument_list "(0,0,param_1,param_2,*param_4,uVar5,param_4 + 2,*(undefined8 *)(param_4 + 10),\n                       *(undefined8 *)(param_4 + 0xc))" ( number_literal , number_literal , identifier , identifier , (pointer_expression "*param_4" * identifier) , identifier , (binary_expression "param_4 + 2" identifier + number_literal) , (pointer_expression "*(undefined8 *)(param_4 + 10)" * (cast_expression "(undefined8 *)(param_4 + 10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 10)" ( (binary_expression "param_4 + 10" identifier + number_literal) )))) , (pointer_expression "*(undefined8 *)(param_4 + 0xc)" * (cast_expression "(undefined8 *)(param_4 + 0xc)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0xc)" ( (binary_expression "param_4 + 0xc" identifier + number_literal) )))) )))) ;) (expression_statement "uVar4 = FUN_00120ce0(lVar3 + 1);" (assignment_expression "uVar4 = FUN_00120ce0(lVar3 + 1)" identifier = (call_expression "FUN_00120ce0(lVar3 + 1)" identifier (argument_list "(lVar3 + 1)" ( (binary_expression "lVar3 + 1" identifier + number_literal) )))) ;) (expression_statement "FUN_0011d690(uVar4,lVar3 + 1,param_1,param_2,*param_4,uVar5,param_4 + 2,\n               *(undefined8 *)(param_4 + 10),*(undefined8 *)(param_4 + 0xc));" (call_expression "FUN_0011d690(uVar4,lVar3 + 1,param_1,param_2,*param_4,uVar5,param_4 + 2,\n               *(undefined8 *)(param_4 + 10),*(undefined8 *)(param_4 + 0xc))" identifier (argument_list "(uVar4,lVar3 + 1,param_1,param_2,*param_4,uVar5,param_4 + 2,\n               *(undefined8 *)(param_4 + 10),*(undefined8 *)(param_4 + 0xc))" ( identifier , (binary_expression "lVar3 + 1" identifier + number_literal) , identifier , identifier , (pointer_expression "*param_4" * identifier) , identifier , (binary_expression "param_4 + 2" identifier + number_literal) , (pointer_expression "*(undefined8 *)(param_4 + 10)" * (cast_expression "(undefined8 *)(param_4 + 10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 10)" ( (binary_expression "param_4 + 10" identifier + number_literal) )))) , (pointer_expression "*(undefined8 *)(param_4 + 0xc)" * (cast_expression "(undefined8 *)(param_4 + 0xc)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0xc)" ( (binary_expression "param_4 + 0xc" identifier + number_literal) )))) ))) ;) (expression_statement "*piVar2 = iVar1;" (assignment_expression "*piVar2 = iVar1" (pointer_expression "*piVar2" * identifier) = identifier) ;) (if_statement "if (param_3 != (long *)0x0) {\n    *param_3 = lVar3;\n  }" if (parenthesized_expression "(param_3 != (long *)0x0)" ( (binary_expression "param_3 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    *param_3 = lVar3;\n  }" { (expression_statement "*param_3 = lVar3;" (assignment_expression "*param_3 = lVar3" (pointer_expression "*param_3" * identifier) = identifier) ;) })) (return_statement "return uVar4;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration (sized_type_specifier long) (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression & IDENT))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT == (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) ))) | (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , LIT , IDENT , IDENT , (pointer_expression * IDENT) , IDENT , (binary_expression IDENT + LIT) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (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 ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) , IDENT , IDENT , (pointer_expression * IDENT) , IDENT , (binary_expression IDENT + LIT) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) })) (return_statement return IDENT ;) })))
(function_definition "undefined8 FUN_0011f160(undefined8 param_1,undefined8 param_2,long *param_3,undefined4 *param_4)\n\n{\n  int iVar1;\n  int *piVar2;\n  long lVar3;\n  undefined8 uVar4;\n  uint uVar5;\n  \n  if (param_4 == (undefined4 *)0x0) {\n    param_4 = (undefined4 *)&DAT_001355e0;\n  }\n  piVar2 = __errno_location();\n  iVar1 = *piVar2;\n  uVar5 = (uint)(param_3 == (long *)0x0) | param_4[1];\n  lVar3 = FUN_0011d690(0,0,param_1,param_2,*param_4,uVar5,param_4 + 2,*(undefined8 *)(param_4 + 10),\n                       *(undefined8 *)(param_4 + 0xc));\n  uVar4 = FUN_00120ce0(lVar3 + 1);\n  FUN_0011d690(uVar4,lVar3 + 1,param_1,param_2,*param_4,uVar5,param_4 + 2,\n               *(undefined8 *)(param_4 + 10),*(undefined8 *)(param_4 + 0xc));\n  *piVar2 = iVar1;\n  if (param_3 != (long *)0x0) {\n    *param_3 = lVar3;\n  }\n  return uVar4;\n}" (type_identifier "undefined8") (function_declarator "FUN_0011f160(undefined8 param_1,undefined8 param_2,long *param_3,undefined4 *param_4)" (identifier "FUN_0011f160") (parameter_list "(undefined8 param_1,undefined8 param_2,long *param_3,undefined4 *param_4)" (( "(") (parameter_declaration "undefined8 param_1" (type_identifier "undefined8") (identifier "param_1")) (, ",") (parameter_declaration "undefined8 param_2" (type_identifier "undefined8") (identifier "param_2")) (, ",") (parameter_declaration "long *param_3" (sized_type_specifier "long" (long "long")) (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) (, ",") (parameter_declaration "undefined4 *param_4" (type_identifier "undefined4") (pointer_declarator "*param_4" (* "*") (identifier "param_4"))) () ")"))) (compound_statement "{\n  int iVar1;\n  int *piVar2;\n  long lVar3;\n  undefined8 uVar4;\n  uint uVar5;\n  \n  if (param_4 == (undefined4 *)0x0) {\n    param_4 = (undefined4 *)&DAT_001355e0;\n  }\n  piVar2 = __errno_location();\n  iVar1 = *piVar2;\n  uVar5 = (uint)(param_3 == (long *)0x0) | param_4[1];\n  lVar3 = FUN_0011d690(0,0,param_1,param_2,*param_4,uVar5,param_4 + 2,*(undefined8 *)(param_4 + 10),\n                       *(undefined8 *)(param_4 + 0xc));\n  uVar4 = FUN_00120ce0(lVar3 + 1);\n  FUN_0011d690(uVar4,lVar3 + 1,param_1,param_2,*param_4,uVar5,param_4 + 2,\n               *(undefined8 *)(param_4 + 10),*(undefined8 *)(param_4 + 0xc));\n  *piVar2 = iVar1;\n  if (param_3 != (long *)0x0) {\n    *param_3 = lVar3;\n  }\n  return uVar4;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "int *piVar2;" (primitive_type "int") (pointer_declarator "*piVar2" (* "*") (identifier "piVar2")) (; ";")) (declaration "long lVar3;" (sized_type_specifier "long" (long "long")) (identifier "lVar3") (; ";")) (declaration "undefined8 uVar4;" (type_identifier "undefined8") (identifier "uVar4") (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (if_statement "if (param_4 == (undefined4 *)0x0) {\n    param_4 = (undefined4 *)&DAT_001355e0;\n  }" (if "if") (parenthesized_expression "(param_4 == (undefined4 *)0x0)" (( "(") (binary_expression "param_4 == (undefined4 *)0x0" (identifier "param_4") (== "==") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    param_4 = (undefined4 *)&DAT_001355e0;\n  }" ({ "{") (expression_statement "param_4 = (undefined4 *)&DAT_001355e0;" (assignment_expression "param_4 = (undefined4 *)&DAT_001355e0" (identifier "param_4") (= "=") (cast_expression "(undefined4 *)&DAT_001355e0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "&DAT_001355e0" (& "&") (identifier "DAT_001355e0")))) (; ";")) (} "}"))) (expression_statement "piVar2 = __errno_location();" (assignment_expression "piVar2 = __errno_location()" (identifier "piVar2") (= "=") (call_expression "__errno_location()" (identifier "__errno_location") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "iVar1 = *piVar2;" (assignment_expression "iVar1 = *piVar2" (identifier "iVar1") (= "=") (pointer_expression "*piVar2" (* "*") (identifier "piVar2"))) (; ";")) (expression_statement "uVar5 = (uint)(param_3 == (long *)0x0) | param_4[1];" (assignment_expression "uVar5 = (uint)(param_3 == (long *)0x0) | param_4[1]" (identifier "uVar5") (= "=") (binary_expression "(uint)(param_3 == (long *)0x0) | param_4[1]" (call_expression "(uint)(param_3 == (long *)0x0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(param_3 == (long *)0x0)" (( "(") (binary_expression "param_3 == (long *)0x0" (identifier "param_3") (== "==") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")"))) (| "|") (subscript_expression "param_4[1]" (identifier "param_4") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "lVar3 = FUN_0011d690(0,0,param_1,param_2,*param_4,uVar5,param_4 + 2,*(undefined8 *)(param_4 + 10),\n                       *(undefined8 *)(param_4 + 0xc));" (assignment_expression "lVar3 = FUN_0011d690(0,0,param_1,param_2,*param_4,uVar5,param_4 + 2,*(undefined8 *)(param_4 + 10),\n                       *(undefined8 *)(param_4 + 0xc))" (identifier "lVar3") (= "=") (call_expression "FUN_0011d690(0,0,param_1,param_2,*param_4,uVar5,param_4 + 2,*(undefined8 *)(param_4 + 10),\n                       *(undefined8 *)(param_4 + 0xc))" (identifier "FUN_0011d690") (argument_list "(0,0,param_1,param_2,*param_4,uVar5,param_4 + 2,*(undefined8 *)(param_4 + 10),\n                       *(undefined8 *)(param_4 + 0xc))" (( "(") (number_literal "0") (, ",") (number_literal "0") (, ",") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (pointer_expression "*param_4" (* "*") (identifier "param_4")) (, ",") (identifier "uVar5") (, ",") (binary_expression "param_4 + 2" (identifier "param_4") (+ "+") (number_literal "2")) (, ",") (pointer_expression "*(undefined8 *)(param_4 + 10)" (* "*") (cast_expression "(undefined8 *)(param_4 + 10)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + 10)" (( "(") (binary_expression "param_4 + 10" (identifier "param_4") (+ "+") (number_literal "10")) () ")")))) (, ",") (pointer_expression "*(undefined8 *)(param_4 + 0xc)" (* "*") (cast_expression "(undefined8 *)(param_4 + 0xc)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + 0xc)" (( "(") (binary_expression "param_4 + 0xc" (identifier "param_4") (+ "+") (number_literal "0xc")) () ")")))) () ")")))) (; ";")) (expression_statement "uVar4 = FUN_00120ce0(lVar3 + 1);" (assignment_expression "uVar4 = FUN_00120ce0(lVar3 + 1)" (identifier "uVar4") (= "=") (call_expression "FUN_00120ce0(lVar3 + 1)" (identifier "FUN_00120ce0") (argument_list "(lVar3 + 1)" (( "(") (binary_expression "lVar3 + 1" (identifier "lVar3") (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "FUN_0011d690(uVar4,lVar3 + 1,param_1,param_2,*param_4,uVar5,param_4 + 2,\n               *(undefined8 *)(param_4 + 10),*(undefined8 *)(param_4 + 0xc));" (call_expression "FUN_0011d690(uVar4,lVar3 + 1,param_1,param_2,*param_4,uVar5,param_4 + 2,\n               *(undefined8 *)(param_4 + 10),*(undefined8 *)(param_4 + 0xc))" (identifier "FUN_0011d690") (argument_list "(uVar4,lVar3 + 1,param_1,param_2,*param_4,uVar5,param_4 + 2,\n               *(undefined8 *)(param_4 + 10),*(undefined8 *)(param_4 + 0xc))" (( "(") (identifier "uVar4") (, ",") (binary_expression "lVar3 + 1" (identifier "lVar3") (+ "+") (number_literal "1")) (, ",") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (pointer_expression "*param_4" (* "*") (identifier "param_4")) (, ",") (identifier "uVar5") (, ",") (binary_expression "param_4 + 2" (identifier "param_4") (+ "+") (number_literal "2")) (, ",") (pointer_expression "*(undefined8 *)(param_4 + 10)" (* "*") (cast_expression "(undefined8 *)(param_4 + 10)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + 10)" (( "(") (binary_expression "param_4 + 10" (identifier "param_4") (+ "+") (number_literal "10")) () ")")))) (, ",") (pointer_expression "*(undefined8 *)(param_4 + 0xc)" (* "*") (cast_expression "(undefined8 *)(param_4 + 0xc)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + 0xc)" (( "(") (binary_expression "param_4 + 0xc" (identifier "param_4") (+ "+") (number_literal "0xc")) () ")")))) () ")"))) (; ";")) (expression_statement "*piVar2 = iVar1;" (assignment_expression "*piVar2 = iVar1" (pointer_expression "*piVar2" (* "*") (identifier "piVar2")) (= "=") (identifier "iVar1")) (; ";")) (if_statement "if (param_3 != (long *)0x0) {\n    *param_3 = lVar3;\n  }" (if "if") (parenthesized_expression "(param_3 != (long *)0x0)" (( "(") (binary_expression "param_3 != (long *)0x0" (identifier "param_3") (!= "!=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    *param_3 = lVar3;\n  }" ({ "{") (expression_statement "*param_3 = lVar3;" (assignment_expression "*param_3 = lVar3" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (= "=") (identifier "lVar3")) (; ";")) (} "}"))) (return_statement "return uVar4;" (return "return") (identifier "uVar4") (; ";")) (} "}")))

char * function_1(char *arg,size_t argsize,size_t *var_3,type_1 *var_1)

{
  int iVar1;
  int *piVar2;
  size_t var_6;
  char *buffer;
  type_2 flags;
  
  if (var_1 == (type_1 *)0x0) {
    var_1 = &default_quoting_options;
  }
  piVar2 = var_2();
  iVar1 = *piVar2;
  flags = (uint)(var_3 == (size_t *)0x0) | var_1->flags;
  var_6 = var_4
                    ((char *)0x0,0,arg,argsize,var_1->style,flags,var_1->quote_these_too,var_1->left_quote,
                     var_1->right_quote);
  buffer = (char *)var_5(var_6 + 1);
  var_4
            (buffer,var_6 + 1,arg,argsize,var_1->style,flags,var_1->quote_these_too,var_1->left_quote,
             var_1->right_quote);
  *piVar2 = iVar1;
  if (var_3 != (size_t *)0x0) {
    *var_3 = var_6;
  }
  return buffer;
}


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

undefined8 MASKED(undefined8 param_1,undefined8 param_2,long *param_3,undefined4 *param_4)

{
  int iVar1;
  int *piVar2;
  long lVar3;
  undefined8 uVar4;
  uint uVar5;
  
  if (param_4 == (undefined4 *)0x0) {
    param_4 = (undefined4 *)&DAT_001355e0;
  }
  piVar2 = __errno_location();
  iVar1 = *piVar2;
  uVar5 = (uint)(param_3 == (long *)0x0) | param_4[1];
  lVar3 = FUN_0011d690(0,0,param_1,param_2,*param_4,uVar5,param_4 + 2,*(undefined8 *)(param_4 + 10),
                       *(undefined8 *)(param_4 + 0xc));
  uVar4 = FUN_00120ce0(lVar3 + 1);
  FUN_0011d690(uVar4,lVar3 + 1,param_1,param_2,*param_4,uVar5,param_4 + 2,
               *(undefined8 *)(param_4 + 10),*(undefined8 *)(param_4 + 0xc));
  *piVar2 = iVar1;
  if (param_3 != (long *)0x0) {
    *param_3 = lVar3;
  }
  return uVar4;
}

