
/* WARNING: Enum "DT": Some values do not have unique names */

void script_add_library(void *closurev,char *name,size_t length)

{
  char *pcVar1;
  size_t sVar2;
  Input_argument *pIVar3;
  Input_arguments *this;
  char *__s;
  Parser_closure *closure;
  string name_string;
  Input_file_argument file;
  
  name_string._M_dataplus._M_p = (pointer)&name_string.field_2;
  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::
  _M_construct<char_const*>(&name_string,name,name + length);
  if (*name_string._M_dataplus._M_p != 'l') {
    pcVar1 = (char *)gettext("library name must be prefixed with -l");
                    /* try { // try from 002668c1 to 002668ff has its CatchHandler @ 002669ea */
    gold::gold_error(pcVar1);
  }
  __s = name_string._M_dataplus._M_p + 1;
  pcVar1 = (char *)0xffffffffffffffff;
  file.name_._M_dataplus._M_p = (pointer)&file.name_.field_2;
  if (__s != (char *)0x0) {
    sVar2 = strlen(__s);
    pcVar1 = __s + sVar2;
  }
  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::
  _M_construct<char_const*>(&file.name_,__s,pcVar1);
  file.extra_search_path_._M_dataplus._M_p = (pointer)&file.extra_search_path_.field_2;
  file.type_ = INPUT_FILE_TYPE_LIBRARY;
                    /* try { // try from 0026691f to 00266923 has its CatchHandler @ 002669e2 */
  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::
  _M_construct<char_const*>(&file.extra_search_path_,"");
  file.options_._0_8_ = *(undefined8 *)((long)closurev + 8);
  file.options_._8_8_ = *(undefined8 *)((long)closurev + 0x10);
  this = *(Input_arguments **)((long)closurev + 0x78);
  file.just_symbols_ = false;
  file.arg_serial_ = 0;
  if (this == (Input_arguments *)0x0) {
    this = (Input_arguments *)operator_new(0x20);
    (this->input_argument_list_).
    super__Vector_base<gold::Input_argument,_std::allocator<gold::Input_argument>_>._M_impl._M_start
         = (pointer)0x0;
    (this->input_argument_list_).
    super__Vector_base<gold::Input_argument,_std::allocator<gold::Input_argument>_>._M_impl.
    _M_finish = (pointer)0x0;
    (this->input_argument_list_).
    super__Vector_base<gold::Input_argument,_std::allocator<gold::Input_argument>_>._M_impl.
    _M_end_of_storage = (pointer)0x0;
    this->in_group_ = false;
    this->in_lib_ = false;
    this->file_count_ = 0;
    *(Input_arguments **)((long)closurev + 0x78) = this;
  }
                    /* try { // try from 00266948 to 002669a9 has its CatchHandler @ 002669da */
  pIVar3 = gold::Input_arguments::add_file(this,&file);
  pIVar3->script_info_ = *(Script_info **)((long)closurev + 0x80);
  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
       *)file.extra_search_path_._M_dataplus._M_p != &file.extra_search_path_.field_2) {
    operator_delete(file.extra_search_path_._M_dataplus._M_p);
  }
  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
       *)file.name_._M_dataplus._M_p != &file.name_.field_2) {
    operator_delete(file.name_._M_dataplus._M_p);
  }
  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
       *)name_string._M_dataplus._M_p != &name_string.field_2) {
    operator_delete(name_string._M_dataplus._M_p);
  }
  return;
}



void FUN_00266880(long param_1,long param_2,long param_3)

{
  undefined8 uVar1;
  size_t sVar2;
  long lVar3;
  undefined8 *puVar4;
  char *pcVar5;
  char *__s;
  char *local_a8 [2];
  char local_98 [16];
  undefined1 *local_88 [2];
  undefined1 local_78 [16];
  undefined4 local_68;
  undefined1 *local_60 [2];
  undefined1 local_50 [16];
  undefined1 local_40;
  undefined8 local_3c;
  undefined8 uStack_34;
  undefined4 local_2c;
  
  local_a8[0] = local_98;
  FUN_001665c0(local_a8,param_2,param_3 + param_2);
  if (*local_a8[0] != 'l') {
    uVar1 = gettext("library name must be prefixed with -l");
                    /* try { // try from 002668c1 to 002668ff has its CatchHandler @ 002669ea */
    FUN_00178320(uVar1);
  }
  __s = local_a8[0] + 1;
  pcVar5 = (char *)0xffffffffffffffff;
  local_88[0] = local_78;
  if (__s != (char *)0x0) {
    sVar2 = strlen(__s);
    pcVar5 = __s + sVar2;
  }
  FUN_001665c0(local_88,__s,pcVar5);
  local_60[0] = local_50;
  local_68 = 1;
                    /* try { // try from 0026691f to 00266923 has its CatchHandler @ 002669e2 */
  FUN_001665c0(local_60,"");
  local_3c = *(undefined8 *)(param_1 + 8);
  uStack_34 = *(undefined8 *)(param_1 + 0x10);
  puVar4 = *(undefined8 **)(param_1 + 0x78);
  local_40 = 0;
  local_2c = 0;
  if (puVar4 == (undefined8 *)0x0) {
    puVar4 = (undefined8 *)FUN_002d94a0(0x20);
    *puVar4 = 0;
    puVar4[1] = 0;
    puVar4[2] = 0;
    *(undefined2 *)(puVar4 + 3) = 0;
    *(undefined4 *)((long)puVar4 + 0x1c) = 0;
    *(undefined8 **)(param_1 + 0x78) = puVar4;
  }
                    /* try { // try from 00266948 to 002669a9 has its CatchHandler @ 002669da */
  lVar3 = FUN_001e6fb0(puVar4,local_88);
  *(undefined8 *)(lVar3 + 0x78) = *(undefined8 *)(param_1 + 0x80);
  if (local_60[0] != local_50) {
    FUN_002dac70();
  }
  if (local_88[0] != local_78) {
    FUN_002dac70();
  }
  if (local_a8[0] != local_98) {
    FUN_002dac70();
  }
  return;
}


PUSH R13
ADD RDX,RSI
MOV R13,RDI
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x88
MOV R12,RSP
LEA RAX,[R12 + 0x10]
MOV RDI,R12
MOV qword ptr [RSP],RAX
CALL 0x001665c0
MOV RSI,qword ptr [RSP]
CMP byte ptr [RSI],0x6c
JZ 0x002668ca
LEA RDI,[0x3862b8]
CALL 0x00147320
MOV RDI,RAX
XOR EAX,EAX
CALL 0x00178320
MOV RSI,qword ptr [RSP]
LEA RBX,[RSP + 0x20]
ADD RSI,0x1
MOV RDX,-0x1
LEA RAX,[RBX + 0x10]
MOV RBP,RSI
MOV qword ptr [RSP + 0x20],RAX
JZ 0x002668f5
MOV RDI,RSI
CALL 0x00147490
LEA RDX,[RBP + RAX*0x1]
MOV RSI,RBP
MOV RDI,RBX
CALL 0x001665c0
LEA RAX,[RBX + 0x38]
LEA RDX,[0x38b016]
MOV dword ptr [RSP + 0x40],0x1
LEA RDI,[RBX + 0x28]
MOV RSI,RDX
MOV qword ptr [RSP + 0x48],RAX
CALL 0x001665c0
MOVDQU XMM0,xmmword ptr [R13 + 0x8]
MOV RDI,qword ptr [R13 + 0x78]
MOV byte ptr [RSP + 0x68],0x0
MOV dword ptr [RSP + 0x7c],0x0
MOVUPS xmmword ptr [RSP + 0x6c],XMM0
TEST RDI,RDI
JZ 0x002669a0
MOV RSI,RBX
CALL 0x001e6fb0
MOV RDX,qword ptr [R13 + 0x80]
MOV RDI,qword ptr [RSP + 0x48]
MOV qword ptr [RAX + 0x78],RDX
LEA RAX,[RBX + 0x38]
CMP RDI,RAX
JZ 0x0026696b
CALL 0x002dac70
MOV RDI,qword ptr [RSP + 0x20]
ADD RBX,0x10
CMP RDI,RBX
JZ 0x0026697e
CALL 0x002dac70
MOV RDI,qword ptr [RSP]
ADD R12,0x10
CMP RDI,R12
JZ 0x00266990
CALL 0x002dac70
ADD RSP,0x88
POP RBX
POP RBP
POP R12
POP R13
RET
MOV EDI,0x20
CALL 0x002d94a0
MOV RDI,RAX
MOV qword ptr [RAX],0x0
MOV qword ptr [RAX + 0x8],0x0
MOV qword ptr [RAX + 0x10],0x0
XOR EAX,EAX
MOV word ptr [RDI + 0x18],AX
MOV dword ptr [RDI + 0x1c],0x0
MOV qword ptr [R13 + 0x78],RDI
JMP 0x00266945
(translation_unit "void FUN_00266880(long param_1,long param_2,long param_3)\n\n{\n  undefined8 uVar1;\n  size_t sVar2;\n  long lVar3;\n  undefined8 *puVar4;\n  char *pcVar5;\n  char *__s;\n  char *local_a8 [2];\n  char local_98 [16];\n  undefined1 *local_88 [2];\n  undefined1 local_78 [16];\n  undefined4 local_68;\n  undefined1 *local_60 [2];\n  undefined1 local_50 [16];\n  undefined1 local_40;\n  undefined8 local_3c;\n  undefined8 uStack_34;\n  undefined4 local_2c;\n  \n  local_a8[0] = local_98;\n  FUN_001665c0(local_a8,param_2,param_3 + param_2);\n  if (*local_a8[0] != 'l') {\n    uVar1 = gettext("library name must be prefixed with -l");\n                    /* try { // try from 002668c1 to 002668ff has its CatchHandler @ 002669ea */\n    FUN_00178320(uVar1);\n  }\n  __s = local_a8[0] + 1;\n  pcVar5 = (char *)0xffffffffffffffff;\n  local_88[0] = local_78;\n  if (__s != (char *)0x0) {\n    sVar2 = strlen(__s);\n    pcVar5 = __s + sVar2;\n  }\n  FUN_001665c0(local_88,__s,pcVar5);\n  local_60[0] = local_50;\n  local_68 = 1;\n                    /* try { // try from 0026691f to 00266923 has its CatchHandler @ 002669e2 */\n  FUN_001665c0(local_60,"");\n  local_3c = *(undefined8 *)(param_1 + 8);\n  uStack_34 = *(undefined8 *)(param_1 + 0x10);\n  puVar4 = *(undefined8 **)(param_1 + 0x78);\n  local_40 = 0;\n  local_2c = 0;\n  if (puVar4 == (undefined8 *)0x0) {\n    puVar4 = (undefined8 *)FUN_002d94a0(0x20);\n    *puVar4 = 0;\n    puVar4[1] = 0;\n    puVar4[2] = 0;\n    *(undefined2 *)(puVar4 + 3) = 0;\n    *(undefined4 *)((long)puVar4 + 0x1c) = 0;\n    *(undefined8 **)(param_1 + 0x78) = puVar4;\n  }\n                    /* try { // try from 00266948 to 002669a9 has its CatchHandler @ 002669da */\n  lVar3 = FUN_001e6fb0(puVar4,local_88);\n  *(undefined8 *)(lVar3 + 0x78) = *(undefined8 *)(param_1 + 0x80);\n  if (local_60[0] != local_50) {\n    FUN_002dac70();\n  }\n  if (local_88[0] != local_78) {\n    FUN_002dac70();\n  }\n  if (local_a8[0] != local_98) {\n    FUN_002dac70();\n  }\n  return;\n}\n\n" (function_definition "void FUN_00266880(long param_1,long param_2,long param_3)\n\n{\n  undefined8 uVar1;\n  size_t sVar2;\n  long lVar3;\n  undefined8 *puVar4;\n  char *pcVar5;\n  char *__s;\n  char *local_a8 [2];\n  char local_98 [16];\n  undefined1 *local_88 [2];\n  undefined1 local_78 [16];\n  undefined4 local_68;\n  undefined1 *local_60 [2];\n  undefined1 local_50 [16];\n  undefined1 local_40;\n  undefined8 local_3c;\n  undefined8 uStack_34;\n  undefined4 local_2c;\n  \n  local_a8[0] = local_98;\n  FUN_001665c0(local_a8,param_2,param_3 + param_2);\n  if (*local_a8[0] != 'l') {\n    uVar1 = gettext("library name must be prefixed with -l");\n                    /* try { // try from 002668c1 to 002668ff has its CatchHandler @ 002669ea */\n    FUN_00178320(uVar1);\n  }\n  __s = local_a8[0] + 1;\n  pcVar5 = (char *)0xffffffffffffffff;\n  local_88[0] = local_78;\n  if (__s != (char *)0x0) {\n    sVar2 = strlen(__s);\n    pcVar5 = __s + sVar2;\n  }\n  FUN_001665c0(local_88,__s,pcVar5);\n  local_60[0] = local_50;\n  local_68 = 1;\n                    /* try { // try from 0026691f to 00266923 has its CatchHandler @ 002669e2 */\n  FUN_001665c0(local_60,"");\n  local_3c = *(undefined8 *)(param_1 + 8);\n  uStack_34 = *(undefined8 *)(param_1 + 0x10);\n  puVar4 = *(undefined8 **)(param_1 + 0x78);\n  local_40 = 0;\n  local_2c = 0;\n  if (puVar4 == (undefined8 *)0x0) {\n    puVar4 = (undefined8 *)FUN_002d94a0(0x20);\n    *puVar4 = 0;\n    puVar4[1] = 0;\n    puVar4[2] = 0;\n    *(undefined2 *)(puVar4 + 3) = 0;\n    *(undefined4 *)((long)puVar4 + 0x1c) = 0;\n    *(undefined8 **)(param_1 + 0x78) = puVar4;\n  }\n                    /* try { // try from 00266948 to 002669a9 has its CatchHandler @ 002669da */\n  lVar3 = FUN_001e6fb0(puVar4,local_88);\n  *(undefined8 *)(lVar3 + 0x78) = *(undefined8 *)(param_1 + 0x80);\n  if (local_60[0] != local_50) {\n    FUN_002dac70();\n  }\n  if (local_88[0] != local_78) {\n    FUN_002dac70();\n  }\n  if (local_a8[0] != local_98) {\n    FUN_002dac70();\n  }\n  return;\n}" primitive_type (function_declarator "FUN_00266880(long param_1,long param_2,long param_3)" identifier (parameter_list "(long param_1,long param_2,long param_3)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_3" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  undefined8 uVar1;\n  size_t sVar2;\n  long lVar3;\n  undefined8 *puVar4;\n  char *pcVar5;\n  char *__s;\n  char *local_a8 [2];\n  char local_98 [16];\n  undefined1 *local_88 [2];\n  undefined1 local_78 [16];\n  undefined4 local_68;\n  undefined1 *local_60 [2];\n  undefined1 local_50 [16];\n  undefined1 local_40;\n  undefined8 local_3c;\n  undefined8 uStack_34;\n  undefined4 local_2c;\n  \n  local_a8[0] = local_98;\n  FUN_001665c0(local_a8,param_2,param_3 + param_2);\n  if (*local_a8[0] != 'l') {\n    uVar1 = gettext("library name must be prefixed with -l");\n                    /* try { // try from 002668c1 to 002668ff has its CatchHandler @ 002669ea */\n    FUN_00178320(uVar1);\n  }\n  __s = local_a8[0] + 1;\n  pcVar5 = (char *)0xffffffffffffffff;\n  local_88[0] = local_78;\n  if (__s != (char *)0x0) {\n    sVar2 = strlen(__s);\n    pcVar5 = __s + sVar2;\n  }\n  FUN_001665c0(local_88,__s,pcVar5);\n  local_60[0] = local_50;\n  local_68 = 1;\n                    /* try { // try from 0026691f to 00266923 has its CatchHandler @ 002669e2 */\n  FUN_001665c0(local_60,"");\n  local_3c = *(undefined8 *)(param_1 + 8);\n  uStack_34 = *(undefined8 *)(param_1 + 0x10);\n  puVar4 = *(undefined8 **)(param_1 + 0x78);\n  local_40 = 0;\n  local_2c = 0;\n  if (puVar4 == (undefined8 *)0x0) {\n    puVar4 = (undefined8 *)FUN_002d94a0(0x20);\n    *puVar4 = 0;\n    puVar4[1] = 0;\n    puVar4[2] = 0;\n    *(undefined2 *)(puVar4 + 3) = 0;\n    *(undefined4 *)((long)puVar4 + 0x1c) = 0;\n    *(undefined8 **)(param_1 + 0x78) = puVar4;\n  }\n                    /* try { // try from 00266948 to 002669a9 has its CatchHandler @ 002669da */\n  lVar3 = FUN_001e6fb0(puVar4,local_88);\n  *(undefined8 *)(lVar3 + 0x78) = *(undefined8 *)(param_1 + 0x80);\n  if (local_60[0] != local_50) {\n    FUN_002dac70();\n  }\n  if (local_88[0] != local_78) {\n    FUN_002dac70();\n  }\n  if (local_a8[0] != local_98) {\n    FUN_002dac70();\n  }\n  return;\n}" { (declaration "undefined8 uVar1;" type_identifier identifier ;) (declaration "size_t sVar2;" primitive_type identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "char *local_a8 [2];" primitive_type (pointer_declarator "*local_a8 [2]" * (array_declarator "local_a8 [2]" identifier [ number_literal ])) ;) (declaration "char local_98 [16];" primitive_type (array_declarator "local_98 [16]" identifier [ number_literal ]) ;) (declaration "undefined1 *local_88 [2];" type_identifier (pointer_declarator "*local_88 [2]" * (array_declarator "local_88 [2]" identifier [ number_literal ])) ;) (declaration "undefined1 local_78 [16];" type_identifier (array_declarator "local_78 [16]" identifier [ number_literal ]) ;) (declaration "undefined4 local_68;" type_identifier identifier ;) (declaration "undefined1 *local_60 [2];" type_identifier (pointer_declarator "*local_60 [2]" * (array_declarator "local_60 [2]" identifier [ number_literal ])) ;) (declaration "undefined1 local_50 [16];" type_identifier (array_declarator "local_50 [16]" identifier [ number_literal ]) ;) (declaration "undefined1 local_40;" type_identifier identifier ;) (declaration "undefined8 local_3c;" type_identifier identifier ;) (declaration "undefined8 uStack_34;" type_identifier identifier ;) (declaration "undefined4 local_2c;" type_identifier identifier ;) (expression_statement "local_a8[0] = local_98;" (assignment_expression "local_a8[0] = local_98" (subscript_expression "local_a8[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_001665c0(local_a8,param_2,param_3 + param_2);" (call_expression "FUN_001665c0(local_a8,param_2,param_3 + param_2)" identifier (argument_list "(local_a8,param_2,param_3 + param_2)" ( identifier , identifier , (binary_expression "param_3 + param_2" identifier + identifier) ))) ;) (if_statement "if (*local_a8[0] != 'l') {\n    uVar1 = gettext("library name must be prefixed with -l");\n                    /* try { // try from 002668c1 to 002668ff has its CatchHandler @ 002669ea */\n    FUN_00178320(uVar1);\n  }" if (parenthesized_expression "(*local_a8[0] != 'l')" ( (binary_expression "*local_a8[0] != 'l'" (pointer_expression "*local_a8[0]" * (subscript_expression "local_a8[0]" identifier [ number_literal ])) != (char_literal "'l'" ' character ')) )) (compound_statement "{\n    uVar1 = gettext("library name must be prefixed with -l");\n                    /* try { // try from 002668c1 to 002668ff has its CatchHandler @ 002669ea */\n    FUN_00178320(uVar1);\n  }" { (expression_statement "uVar1 = gettext("library name must be prefixed with -l");" (assignment_expression "uVar1 = gettext("library name must be prefixed with -l")" identifier = (call_expression "gettext("library name must be prefixed with -l")" identifier (argument_list "("library name must be prefixed with -l")" ( (string_literal ""library name must be prefixed with -l"" " string_content ") )))) ;) comment (expression_statement "FUN_00178320(uVar1);" (call_expression "FUN_00178320(uVar1)" identifier (argument_list "(uVar1)" ( identifier ))) ;) })) (expression_statement "__s = local_a8[0] + 1;" (assignment_expression "__s = local_a8[0] + 1" identifier = (binary_expression "local_a8[0] + 1" (subscript_expression "local_a8[0]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "pcVar5 = (char *)0xffffffffffffffff;" (assignment_expression "pcVar5 = (char *)0xffffffffffffffff" identifier = (cast_expression "(char *)0xffffffffffffffff" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_88[0] = local_78;" (assignment_expression "local_88[0] = local_78" (subscript_expression "local_88[0]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (__s != (char *)0x0) {\n    sVar2 = strlen(__s);\n    pcVar5 = __s + sVar2;\n  }" if (parenthesized_expression "(__s != (char *)0x0)" ( (binary_expression "__s != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    sVar2 = strlen(__s);\n    pcVar5 = __s + sVar2;\n  }" { (expression_statement "sVar2 = strlen(__s);" (assignment_expression "sVar2 = strlen(__s)" identifier = (call_expression "strlen(__s)" identifier (argument_list "(__s)" ( identifier )))) ;) (expression_statement "pcVar5 = __s + sVar2;" (assignment_expression "pcVar5 = __s + sVar2" identifier = (binary_expression "__s + sVar2" identifier + identifier)) ;) })) (expression_statement "FUN_001665c0(local_88,__s,pcVar5);" (call_expression "FUN_001665c0(local_88,__s,pcVar5)" identifier (argument_list "(local_88,__s,pcVar5)" ( identifier , identifier , identifier ))) ;) (expression_statement "local_60[0] = local_50;" (assignment_expression "local_60[0] = local_50" (subscript_expression "local_60[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_68 = 1;" (assignment_expression "local_68 = 1" identifier = number_literal) ;) comment (expression_statement "FUN_001665c0(local_60,"");" (call_expression "FUN_001665c0(local_60,"")" identifier (argument_list "(local_60,"")" ( identifier , (string_literal """" " ") ))) ;) (expression_statement "local_3c = *(undefined8 *)(param_1 + 8);" (assignment_expression "local_3c = *(undefined8 *)(param_1 + 8)" identifier = (pointer_expression "*(undefined8 *)(param_1 + 8)" * (cast_expression "(undefined8 *)(param_1 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (expression_statement "uStack_34 = *(undefined8 *)(param_1 + 0x10);" (assignment_expression "uStack_34 = *(undefined8 *)(param_1 + 0x10)" identifier = (pointer_expression "*(undefined8 *)(param_1 + 0x10)" * (cast_expression "(undefined8 *)(param_1 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "puVar4 = *(undefined8 **)(param_1 + 0x78);" (assignment_expression "puVar4 = *(undefined8 **)(param_1 + 0x78)" identifier = (pointer_expression "*(undefined8 **)(param_1 + 0x78)" * (cast_expression "(undefined8 **)(param_1 + 0x78)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x78)" ( (binary_expression "param_1 + 0x78" identifier + number_literal) ))))) ;) (expression_statement "local_40 = 0;" (assignment_expression "local_40 = 0" identifier = number_literal) ;) (expression_statement "local_2c = 0;" (assignment_expression "local_2c = 0" identifier = number_literal) ;) (if_statement "if (puVar4 == (undefined8 *)0x0) {\n    puVar4 = (undefined8 *)FUN_002d94a0(0x20);\n    *puVar4 = 0;\n    puVar4[1] = 0;\n    puVar4[2] = 0;\n    *(undefined2 *)(puVar4 + 3) = 0;\n    *(undefined4 *)((long)puVar4 + 0x1c) = 0;\n    *(undefined8 **)(param_1 + 0x78) = puVar4;\n  }" if (parenthesized_expression "(puVar4 == (undefined8 *)0x0)" ( (binary_expression "puVar4 == (undefined8 *)0x0" identifier == (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    puVar4 = (undefined8 *)FUN_002d94a0(0x20);\n    *puVar4 = 0;\n    puVar4[1] = 0;\n    puVar4[2] = 0;\n    *(undefined2 *)(puVar4 + 3) = 0;\n    *(undefined4 *)((long)puVar4 + 0x1c) = 0;\n    *(undefined8 **)(param_1 + 0x78) = puVar4;\n  }" { (expression_statement "puVar4 = (undefined8 *)FUN_002d94a0(0x20);" (assignment_expression "puVar4 = (undefined8 *)FUN_002d94a0(0x20)" identifier = (cast_expression "(undefined8 *)FUN_002d94a0(0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d94a0(0x20)" identifier (argument_list "(0x20)" ( number_literal ))))) ;) (expression_statement "*puVar4 = 0;" (assignment_expression "*puVar4 = 0" (pointer_expression "*puVar4" * identifier) = number_literal) ;) (expression_statement "puVar4[1] = 0;" (assignment_expression "puVar4[1] = 0" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar4[2] = 0;" (assignment_expression "puVar4[2] = 0" (subscript_expression "puVar4[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined2 *)(puVar4 + 3) = 0;" (assignment_expression "*(undefined2 *)(puVar4 + 3) = 0" (pointer_expression "*(undefined2 *)(puVar4 + 3)" * (cast_expression "(undefined2 *)(puVar4 + 3)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 3)" ( (binary_expression "puVar4 + 3" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)((long)puVar4 + 0x1c) = 0;" (assignment_expression "*(undefined4 *)((long)puVar4 + 0x1c) = 0" (pointer_expression "*(undefined4 *)((long)puVar4 + 0x1c)" * (cast_expression "(undefined4 *)((long)puVar4 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar4 + 0x1c)" ( (binary_expression "(long)puVar4 + 0x1c" (cast_expression "(long)puVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 **)(param_1 + 0x78) = puVar4;" (assignment_expression "*(undefined8 **)(param_1 + 0x78) = puVar4" (pointer_expression "*(undefined8 **)(param_1 + 0x78)" * (cast_expression "(undefined8 **)(param_1 + 0x78)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x78)" ( (binary_expression "param_1 + 0x78" identifier + number_literal) )))) = identifier) ;) })) comment (expression_statement "lVar3 = FUN_001e6fb0(puVar4,local_88);" (assignment_expression "lVar3 = FUN_001e6fb0(puVar4,local_88)" identifier = (call_expression "FUN_001e6fb0(puVar4,local_88)" identifier (argument_list "(puVar4,local_88)" ( identifier , identifier )))) ;) (expression_statement "*(undefined8 *)(lVar3 + 0x78) = *(undefined8 *)(param_1 + 0x80);" (assignment_expression "*(undefined8 *)(lVar3 + 0x78) = *(undefined8 *)(param_1 + 0x80)" (pointer_expression "*(undefined8 *)(lVar3 + 0x78)" * (cast_expression "(undefined8 *)(lVar3 + 0x78)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 0x78)" ( (binary_expression "lVar3 + 0x78" identifier + number_literal) )))) = (pointer_expression "*(undefined8 *)(param_1 + 0x80)" * (cast_expression "(undefined8 *)(param_1 + 0x80)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x80)" ( (binary_expression "param_1 + 0x80" identifier + number_literal) ))))) ;) (if_statement "if (local_60[0] != local_50) {\n    FUN_002dac70();\n  }" if (parenthesized_expression "(local_60[0] != local_50)" ( (binary_expression "local_60[0] != local_50" (subscript_expression "local_60[0]" identifier [ number_literal ]) != identifier) )) (compound_statement "{\n    FUN_002dac70();\n  }" { (expression_statement "FUN_002dac70();" (call_expression "FUN_002dac70()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (local_88[0] != local_78) {\n    FUN_002dac70();\n  }" if (parenthesized_expression "(local_88[0] != local_78)" ( (binary_expression "local_88[0] != local_78" (subscript_expression "local_88[0]" identifier [ number_literal ]) != identifier) )) (compound_statement "{\n    FUN_002dac70();\n  }" { (expression_statement "FUN_002dac70();" (call_expression "FUN_002dac70()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (local_a8[0] != local_98) {\n    FUN_002dac70();\n  }" if (parenthesized_expression "(local_a8[0] != local_98)" ( (binary_expression "local_a8[0] != local_98" (subscript_expression "local_a8[0]" identifier [ number_literal ]) != identifier) )) (compound_statement "{\n    FUN_002dac70();\n  }" { (expression_statement "FUN_002dac70();" (call_expression "FUN_002dac70()" identifier (argument_list "()" ( ))) ;) })) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Enum "DT": Some values do not have unique names */\n\nvoid script_add_library(void *closurev,char *name,size_t length)\n\n{\n  char *pcVar1;\n  size_t sVar2;\n  Input_argument *pIVar3;\n  Input_arguments *this;\n  char *__s;\n  Parser_closure *closure;\n  string name_string;\n  Input_file_argument file;\n  \n  name_string._M_dataplus._M_p = (pointer)&name_string.field_2;\n  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char_const*>(&name_string,name,name + length);\n  if (*name_string._M_dataplus._M_p != 'l') {\n    pcVar1 = (char *)gettext("library name must be prefixed with -l");\n                    /* try { // try from 002668c1 to 002668ff has its CatchHandler @ 002669ea */\n    gold::gold_error(pcVar1);\n  }\n  __s = name_string._M_dataplus._M_p + 1;\n  pcVar1 = (char *)0xffffffffffffffff;\n  file.name_._M_dataplus._M_p = (pointer)&file.name_.field_2;\n  if (__s != (char *)0x0) {\n    sVar2 = strlen(__s);\n    pcVar1 = __s + sVar2;\n  }\n  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char_const*>(&file.name_,__s,pcVar1);\n  file.extra_search_path_._M_dataplus._M_p = (pointer)&file.extra_search_path_.field_2;\n  file.type_ = INPUT_FILE_TYPE_LIBRARY;\n                    /* try { // try from 0026691f to 00266923 has its CatchHandler @ 002669e2 */\n  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char_const*>(&file.extra_search_path_,"");\n  file.options_._0_8_ = *(undefined8 *)((long)closurev + 8);\n  file.options_._8_8_ = *(undefined8 *)((long)closurev + 0x10);\n  this = *(Input_arguments **)((long)closurev + 0x78);\n  file.just_symbols_ = false;\n  file.arg_serial_ = 0;\n  if (this == (Input_arguments *)0x0) {\n    this = (Input_arguments *)operator_new(0x20);\n    (this->input_argument_list_).\n    super__Vector_base<gold::Input_argument,_std::allocator<gold::Input_argument>_>._M_impl._M_start\n         = (pointer)0x0;\n    (this->input_argument_list_).\n    super__Vector_base<gold::Input_argument,_std::allocator<gold::Input_argument>_>._M_impl.\n    _M_finish = (pointer)0x0;\n    (this->input_argument_list_).\n    super__Vector_base<gold::Input_argument,_std::allocator<gold::Input_argument>_>._M_impl.\n    _M_end_of_storage = (pointer)0x0;\n    this->in_group_ = false;\n    this->in_lib_ = false;\n    this->file_count_ = 0;\n    *(Input_arguments **)((long)closurev + 0x78) = this;\n  }\n                    /* try { // try from 00266948 to 002669a9 has its CatchHandler @ 002669da */\n  pIVar3 = gold::Input_arguments::add_file(this,&file);\n  pIVar3->script_info_ = *(Script_info **)((long)closurev + 0x80);\n  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)file.extra_search_path_._M_dataplus._M_p != &file.extra_search_path_.field_2) {\n    operator_delete(file.extra_search_path_._M_dataplus._M_p);\n  }\n  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)file.name_._M_dataplus._M_p != &file.name_.field_2) {\n    operator_delete(file.name_._M_dataplus._M_p);\n  }\n  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)name_string._M_dataplus._M_p != &name_string.field_2) {\n    operator_delete(name_string._M_dataplus._M_p);\n  }\n  return;\n}\n\n" comment (function_definition "void script_add_library(void *closurev,char *name,size_t length)\n\n{\n  char *pcVar1;\n  size_t sVar2;\n  Input_argument *pIVar3;\n  Input_arguments *this;\n  char *__s;\n  Parser_closure *closure;\n  string name_string;\n  Input_file_argument file;\n  \n  name_string._M_dataplus._M_p = (pointer)&name_string.field_2;\n  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char_const*>(&name_string,name,name + length);\n  if (*name_string._M_dataplus._M_p != 'l') {\n    pcVar1 = (char *)gettext("library name must be prefixed with -l");\n                    /* try { // try from 002668c1 to 002668ff has its CatchHandler @ 002669ea */\n    gold::gold_error(pcVar1);\n  }\n  __s = name_string._M_dataplus._M_p + 1;\n  pcVar1 = (char *)0xffffffffffffffff;\n  file.name_._M_dataplus._M_p = (pointer)&file.name_.field_2;\n  if (__s != (char *)0x0) {\n    sVar2 = strlen(__s);\n    pcVar1 = __s + sVar2;\n  }\n  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char_const*>(&file.name_,__s,pcVar1);\n  file.extra_search_path_._M_dataplus._M_p = (pointer)&file.extra_search_path_.field_2;\n  file.type_ = INPUT_FILE_TYPE_LIBRARY;\n                    /* try { // try from 0026691f to 00266923 has its CatchHandler @ 002669e2 */\n  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char_const*>(&file.extra_search_path_,"");\n  file.options_._0_8_ = *(undefined8 *)((long)closurev + 8);\n  file.options_._8_8_ = *(undefined8 *)((long)closurev + 0x10);\n  this = *(Input_arguments **)((long)closurev + 0x78);\n  file.just_symbols_ = false;\n  file.arg_serial_ = 0;\n  if (this == (Input_arguments *)0x0) {\n    this = (Input_arguments *)operator_new(0x20);\n    (this->input_argument_list_).\n    super__Vector_base<gold::Input_argument,_std::allocator<gold::Input_argument>_>._M_impl._M_start\n         = (pointer)0x0;\n    (this->input_argument_list_).\n    super__Vector_base<gold::Input_argument,_std::allocator<gold::Input_argument>_>._M_impl.\n    _M_finish = (pointer)0x0;\n    (this->input_argument_list_).\n    super__Vector_base<gold::Input_argument,_std::allocator<gold::Input_argument>_>._M_impl.\n    _M_end_of_storage = (pointer)0x0;\n    this->in_group_ = false;\n    this->in_lib_ = false;\n    this->file_count_ = 0;\n    *(Input_arguments **)((long)closurev + 0x78) = this;\n  }\n                    /* try { // try from 00266948 to 002669a9 has its CatchHandler @ 002669da */\n  pIVar3 = gold::Input_arguments::add_file(this,&file);\n  pIVar3->script_info_ = *(Script_info **)((long)closurev + 0x80);\n  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)file.extra_search_path_._M_dataplus._M_p != &file.extra_search_path_.field_2) {\n    operator_delete(file.extra_search_path_._M_dataplus._M_p);\n  }\n  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)file.name_._M_dataplus._M_p != &file.name_.field_2) {\n    operator_delete(file.name_._M_dataplus._M_p);\n  }\n  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)name_string._M_dataplus._M_p != &name_string.field_2) {\n    operator_delete(name_string._M_dataplus._M_p);\n  }\n  return;\n}" primitive_type (function_declarator "script_add_library(void *closurev,char *name,size_t length)" identifier (parameter_list "(void *closurev,char *name,size_t length)" ( (parameter_declaration "void *closurev" primitive_type (pointer_declarator "*closurev" * identifier)) , (parameter_declaration "char *name" primitive_type (pointer_declarator "*name" * identifier)) , (parameter_declaration "size_t length" primitive_type identifier) ))) (compound_statement "{\n  char *pcVar1;\n  size_t sVar2;\n  Input_argument *pIVar3;\n  Input_arguments *this;\n  char *__s;\n  Parser_closure *closure;\n  string name_string;\n  Input_file_argument file;\n  \n  name_string._M_dataplus._M_p = (pointer)&name_string.field_2;\n  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char_const*>(&name_string,name,name + length);\n  if (*name_string._M_dataplus._M_p != 'l') {\n    pcVar1 = (char *)gettext("library name must be prefixed with -l");\n                    /* try { // try from 002668c1 to 002668ff has its CatchHandler @ 002669ea */\n    gold::gold_error(pcVar1);\n  }\n  __s = name_string._M_dataplus._M_p + 1;\n  pcVar1 = (char *)0xffffffffffffffff;\n  file.name_._M_dataplus._M_p = (pointer)&file.name_.field_2;\n  if (__s != (char *)0x0) {\n    sVar2 = strlen(__s);\n    pcVar1 = __s + sVar2;\n  }\n  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char_const*>(&file.name_,__s,pcVar1);\n  file.extra_search_path_._M_dataplus._M_p = (pointer)&file.extra_search_path_.field_2;\n  file.type_ = INPUT_FILE_TYPE_LIBRARY;\n                    /* try { // try from 0026691f to 00266923 has its CatchHandler @ 002669e2 */\n  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char_const*>(&file.extra_search_path_,"");\n  file.options_._0_8_ = *(undefined8 *)((long)closurev + 8);\n  file.options_._8_8_ = *(undefined8 *)((long)closurev + 0x10);\n  this = *(Input_arguments **)((long)closurev + 0x78);\n  file.just_symbols_ = false;\n  file.arg_serial_ = 0;\n  if (this == (Input_arguments *)0x0) {\n    this = (Input_arguments *)operator_new(0x20);\n    (this->input_argument_list_).\n    super__Vector_base<gold::Input_argument,_std::allocator<gold::Input_argument>_>._M_impl._M_start\n         = (pointer)0x0;\n    (this->input_argument_list_).\n    super__Vector_base<gold::Input_argument,_std::allocator<gold::Input_argument>_>._M_impl.\n    _M_finish = (pointer)0x0;\n    (this->input_argument_list_).\n    super__Vector_base<gold::Input_argument,_std::allocator<gold::Input_argument>_>._M_impl.\n    _M_end_of_storage = (pointer)0x0;\n    this->in_group_ = false;\n    this->in_lib_ = false;\n    this->file_count_ = 0;\n    *(Input_arguments **)((long)closurev + 0x78) = this;\n  }\n                    /* try { // try from 00266948 to 002669a9 has its CatchHandler @ 002669da */\n  pIVar3 = gold::Input_arguments::add_file(this,&file);\n  pIVar3->script_info_ = *(Script_info **)((long)closurev + 0x80);\n  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)file.extra_search_path_._M_dataplus._M_p != &file.extra_search_path_.field_2) {\n    operator_delete(file.extra_search_path_._M_dataplus._M_p);\n  }\n  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)file.name_._M_dataplus._M_p != &file.name_.field_2) {\n    operator_delete(file.name_._M_dataplus._M_p);\n  }\n  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)name_string._M_dataplus._M_p != &name_string.field_2) {\n    operator_delete(name_string._M_dataplus._M_p);\n  }\n  return;\n}" { (declaration "char *pcVar1;" primitive_type (pointer_declarator "*pcVar1" * identifier) ;) (declaration "size_t sVar2;" primitive_type identifier ;) (declaration "Input_argument *pIVar3;" type_identifier (pointer_declarator "*pIVar3" * identifier) ;) (declaration "Input_arguments *this;" type_identifier (pointer_declarator "*this" * identifier) ;) (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "Parser_closure *closure;" type_identifier (pointer_declarator "*closure" * identifier) ;) (declaration "string name_string;" type_identifier identifier ;) (declaration "Input_file_argument file;" type_identifier identifier ;) (expression_statement "name_string._M_dataplus._M_p = (pointer)&name_string.field_2;" (assignment_expression "name_string._M_dataplus._M_p = (pointer)&name_string.field_2" (field_expression "name_string._M_dataplus._M_p" (field_expression "name_string._M_dataplus" identifier . field_identifier) . field_identifier) = (binary_expression "(pointer)&name_string.field_2" (parenthesized_expression "(pointer)" ( identifier )) & (field_expression "name_string.field_2" identifier . field_identifier))) ;) (labeled_statement "std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char_const*>(&name_string,name,name + length);" statement_identifier (ERROR "::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>:" : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : : (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > :) : (expression_statement "_M_construct<char_const*>(&name_string,name,name + length);" (binary_expression "_M_construct<char_const*>(&name_string,name,name + length)" (binary_expression "_M_construct<char_const" identifier < identifier) (ERROR "*" *) > (parenthesized_expression "(&name_string,name,name + length)" ( (comma_expression "&name_string,name,name + length" (pointer_expression "&name_string" & identifier) , (comma_expression "name,name + length" identifier , (binary_expression "name + length" identifier + identifier))) ))) ;)) (if_statement "if (*name_string._M_dataplus._M_p != 'l') {\n    pcVar1 = (char *)gettext("library name must be prefixed with -l");\n                    /* try { // try from 002668c1 to 002668ff has its CatchHandler @ 002669ea */\n    gold::gold_error(pcVar1);\n  }" if (parenthesized_expression "(*name_string._M_dataplus._M_p != 'l')" ( (binary_expression "*name_string._M_dataplus._M_p != 'l'" (pointer_expression "*name_string._M_dataplus._M_p" * (field_expression "name_string._M_dataplus._M_p" (field_expression "name_string._M_dataplus" identifier . field_identifier) . field_identifier)) != (char_literal "'l'" ' character ')) )) (compound_statement "{\n    pcVar1 = (char *)gettext("library name must be prefixed with -l");\n                    /* try { // try from 002668c1 to 002668ff has its CatchHandler @ 002669ea */\n    gold::gold_error(pcVar1);\n  }" { (expression_statement "pcVar1 = (char *)gettext("library name must be prefixed with -l");" (assignment_expression "pcVar1 = (char *)gettext("library name must be prefixed with -l")" identifier = (cast_expression "(char *)gettext("library name must be prefixed with -l")" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "gettext("library name must be prefixed with -l")" identifier (argument_list "("library name must be prefixed with -l")" ( (string_literal ""library name must be prefixed with -l"" " string_content ") ))))) ;) comment (labeled_statement "gold::gold_error(pcVar1);" statement_identifier : (ERROR ":" :) (expression_statement "gold_error(pcVar1);" (call_expression "gold_error(pcVar1)" identifier (argument_list "(pcVar1)" ( identifier ))) ;)) })) (expression_statement "__s = name_string._M_dataplus._M_p + 1;" (assignment_expression "__s = name_string._M_dataplus._M_p + 1" identifier = (binary_expression "name_string._M_dataplus._M_p + 1" (field_expression "name_string._M_dataplus._M_p" (field_expression "name_string._M_dataplus" identifier . field_identifier) . field_identifier) + number_literal)) ;) (expression_statement "pcVar1 = (char *)0xffffffffffffffff;" (assignment_expression "pcVar1 = (char *)0xffffffffffffffff" identifier = (cast_expression "(char *)0xffffffffffffffff" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "file.name_._M_dataplus._M_p = (pointer)&file.name_.field_2;" (assignment_expression "file.name_._M_dataplus._M_p = (pointer)&file.name_.field_2" (field_expression "file.name_._M_dataplus._M_p" (field_expression "file.name_._M_dataplus" (field_expression "file.name_" identifier . field_identifier) . field_identifier) . field_identifier) = (binary_expression "(pointer)&file.name_.field_2" (parenthesized_expression "(pointer)" ( identifier )) & (field_expression "file.name_.field_2" (field_expression "file.name_" identifier . field_identifier) . field_identifier))) ;) (if_statement "if (__s != (char *)0x0) {\n    sVar2 = strlen(__s);\n    pcVar1 = __s + sVar2;\n  }" if (parenthesized_expression "(__s != (char *)0x0)" ( (binary_expression "__s != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    sVar2 = strlen(__s);\n    pcVar1 = __s + sVar2;\n  }" { (expression_statement "sVar2 = strlen(__s);" (assignment_expression "sVar2 = strlen(__s)" identifier = (call_expression "strlen(__s)" identifier (argument_list "(__s)" ( identifier )))) ;) (expression_statement "pcVar1 = __s + sVar2;" (assignment_expression "pcVar1 = __s + sVar2" identifier = (binary_expression "__s + sVar2" identifier + identifier)) ;) })) (labeled_statement "std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char_const*>(&file.name_,__s,pcVar1);" statement_identifier (ERROR "::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>:" : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : : (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > :) : (expression_statement "_M_construct<char_const*>(&file.name_,__s,pcVar1);" (binary_expression "_M_construct<char_const*>(&file.name_,__s,pcVar1)" (binary_expression "_M_construct<char_const" identifier < identifier) (ERROR "*" *) > (parenthesized_expression "(&file.name_,__s,pcVar1)" ( (comma_expression "&file.name_,__s,pcVar1" (pointer_expression "&file.name_" & (field_expression "file.name_" identifier . field_identifier)) , (comma_expression "__s,pcVar1" identifier , identifier)) ))) ;)) (expression_statement "file.extra_search_path_._M_dataplus._M_p = (pointer)&file.extra_search_path_.field_2;" (assignment_expression "file.extra_search_path_._M_dataplus._M_p = (pointer)&file.extra_search_path_.field_2" (field_expression "file.extra_search_path_._M_dataplus._M_p" (field_expression "file.extra_search_path_._M_dataplus" (field_expression "file.extra_search_path_" identifier . field_identifier) . field_identifier) . field_identifier) = (binary_expression "(pointer)&file.extra_search_path_.field_2" (parenthesized_expression "(pointer)" ( identifier )) & (field_expression "file.extra_search_path_.field_2" (field_expression "file.extra_search_path_" identifier . field_identifier) . field_identifier))) ;) (expression_statement "file.type_ = INPUT_FILE_TYPE_LIBRARY;" (assignment_expression "file.type_ = INPUT_FILE_TYPE_LIBRARY" (field_expression "file.type_" identifier . field_identifier) = identifier) ;) comment (labeled_statement "std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char_const*>(&file.extra_search_path_,"");" statement_identifier (ERROR "::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>:" : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : : (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > :) : (expression_statement "_M_construct<char_const*>(&file.extra_search_path_,"");" (binary_expression "_M_construct<char_const*>(&file.extra_search_path_,"")" (binary_expression "_M_construct<char_const" identifier < identifier) (ERROR "*" *) > (parenthesized_expression "(&file.extra_search_path_,"")" ( (comma_expression "&file.extra_search_path_,""" (pointer_expression "&file.extra_search_path_" & (field_expression "file.extra_search_path_" identifier . field_identifier)) , (string_literal """" " ")) ))) ;)) (expression_statement "file.options_._0_8_ = *(undefined8 *)((long)closurev + 8);" (assignment_expression "file.options_._0_8_ = *(undefined8 *)((long)closurev + 8)" (field_expression "file.options_._0_8_" (field_expression "file.options_" identifier . field_identifier) . field_identifier) = (pointer_expression "*(undefined8 *)((long)closurev + 8)" * (cast_expression "(undefined8 *)((long)closurev + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)closurev + 8)" ( (binary_expression "(long)closurev + 8" (cast_expression "(long)closurev" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "file.options_._8_8_ = *(undefined8 *)((long)closurev + 0x10);" (assignment_expression "file.options_._8_8_ = *(undefined8 *)((long)closurev + 0x10)" (field_expression "file.options_._8_8_" (field_expression "file.options_" identifier . field_identifier) . field_identifier) = (pointer_expression "*(undefined8 *)((long)closurev + 0x10)" * (cast_expression "(undefined8 *)((long)closurev + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)closurev + 0x10)" ( (binary_expression "(long)closurev + 0x10" (cast_expression "(long)closurev" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "this = *(Input_arguments **)((long)closurev + 0x78);" (assignment_expression "this = *(Input_arguments **)((long)closurev + 0x78)" identifier = (pointer_expression "*(Input_arguments **)((long)closurev + 0x78)" * (cast_expression "(Input_arguments **)((long)closurev + 0x78)" ( (type_descriptor "Input_arguments **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((long)closurev + 0x78)" ( (binary_expression "(long)closurev + 0x78" (cast_expression "(long)closurev" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "file.just_symbols_ = false;" (assignment_expression "file.just_symbols_ = false" (field_expression "file.just_symbols_" identifier . field_identifier) = false) ;) (expression_statement "file.arg_serial_ = 0;" (assignment_expression "file.arg_serial_ = 0" (field_expression "file.arg_serial_" identifier . field_identifier) = number_literal) ;) (if_statement "if (this == (Input_arguments *)0x0) {\n    this = (Input_arguments *)operator_new(0x20);\n    (this->input_argument_list_).\n    super__Vector_base<gold::Input_argument,_std::allocator<gold::Input_argument>_>._M_impl._M_start\n         = (pointer)0x0;\n    (this->input_argument_list_).\n    super__Vector_base<gold::Input_argument,_std::allocator<gold::Input_argument>_>._M_impl.\n    _M_finish = (pointer)0x0;\n    (this->input_argument_list_).\n    super__Vector_base<gold::Input_argument,_std::allocator<gold::Input_argument>_>._M_impl.\n    _M_end_of_storage = (pointer)0x0;\n    this->in_group_ = false;\n    this->in_lib_ = false;\n    this->file_count_ = 0;\n    *(Input_arguments **)((long)closurev + 0x78) = this;\n  }" if (parenthesized_expression "(this == (Input_arguments *)0x0)" ( (binary_expression "this == (Input_arguments *)0x0" identifier == (cast_expression "(Input_arguments *)0x0" ( (type_descriptor "Input_arguments *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    this = (Input_arguments *)operator_new(0x20);\n    (this->input_argument_list_).\n    super__Vector_base<gold::Input_argument,_std::allocator<gold::Input_argument>_>._M_impl._M_start\n         = (pointer)0x0;\n    (this->input_argument_list_).\n    super__Vector_base<gold::Input_argument,_std::allocator<gold::Input_argument>_>._M_impl.\n    _M_finish = (pointer)0x0;\n    (this->input_argument_list_).\n    super__Vector_base<gold::Input_argument,_std::allocator<gold::Input_argument>_>._M_impl.\n    _M_end_of_storage = (pointer)0x0;\n    this->in_group_ = false;\n    this->in_lib_ = false;\n    this->file_count_ = 0;\n    *(Input_arguments **)((long)closurev + 0x78) = this;\n  }" { (expression_statement "this = (Input_arguments *)operator_new(0x20);" (assignment_expression "this = (Input_arguments *)operator_new(0x20)" identifier = (cast_expression "(Input_arguments *)operator_new(0x20)" ( (type_descriptor "Input_arguments *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0x20)" identifier (argument_list "(0x20)" ( number_literal ))))) ;) (ERROR "(this->input_argument_list_).\n    super__Vector_base<gold::Input_argument,_std::allocator<gold::" (comma_expression "(this->input_argument_list_).\n    super__Vector_base<gold::Input_argument,_std" (binary_expression "(this->input_argument_list_).\n    super__Vector_base<gold" (field_expression "(this->input_argument_list_).\n    super__Vector_base" (parenthesized_expression "(this->input_argument_list_)" ( (field_expression "this->input_argument_list_" identifier -> field_identifier) )) . field_identifier) < identifier) (ERROR "::Input_argument" : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (expression_statement "Input_argument>_>._M_impl._M_start\n         = (pointer)0x0;" (assignment_expression "Input_argument>_>._M_impl._M_start\n         = (pointer)0x0" (field_expression "Input_argument>_>._M_impl._M_start" (field_expression "Input_argument>_>._M_impl" (binary_expression "Input_argument>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) = (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) ;) (ERROR "(this->input_argument_list_).\n    super__Vector_base<gold::Input_argument,_std::allocator<gold::" (comma_expression "(this->input_argument_list_).\n    super__Vector_base<gold::Input_argument,_std" (binary_expression "(this->input_argument_list_).\n    super__Vector_base<gold" (field_expression "(this->input_argument_list_).\n    super__Vector_base" (parenthesized_expression "(this->input_argument_list_)" ( (field_expression "this->input_argument_list_" identifier -> field_identifier) )) . field_identifier) < identifier) (ERROR "::Input_argument" : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (expression_statement "Input_argument>_>._M_impl.\n    _M_finish = (pointer)0x0;" (assignment_expression "Input_argument>_>._M_impl.\n    _M_finish = (pointer)0x0" (field_expression "Input_argument>_>._M_impl.\n    _M_finish" (field_expression "Input_argument>_>._M_impl" (binary_expression "Input_argument>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) = (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) ;) (ERROR "(this->input_argument_list_).\n    super__Vector_base<gold::Input_argument,_std::allocator<gold::" (comma_expression "(this->input_argument_list_).\n    super__Vector_base<gold::Input_argument,_std" (binary_expression "(this->input_argument_list_).\n    super__Vector_base<gold" (field_expression "(this->input_argument_list_).\n    super__Vector_base" (parenthesized_expression "(this->input_argument_list_)" ( (field_expression "this->input_argument_list_" identifier -> field_identifier) )) . field_identifier) < identifier) (ERROR "::Input_argument" : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (expression_statement "Input_argument>_>._M_impl.\n    _M_end_of_storage = (pointer)0x0;" (assignment_expression "Input_argument>_>._M_impl.\n    _M_end_of_storage = (pointer)0x0" (field_expression "Input_argument>_>._M_impl.\n    _M_end_of_storage" (field_expression "Input_argument>_>._M_impl" (binary_expression "Input_argument>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) = (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) ;) (expression_statement "this->in_group_ = false;" (assignment_expression "this->in_group_ = false" (field_expression "this->in_group_" identifier -> field_identifier) = false) ;) (expression_statement "this->in_lib_ = false;" (assignment_expression "this->in_lib_ = false" (field_expression "this->in_lib_" identifier -> field_identifier) = false) ;) (expression_statement "this->file_count_ = 0;" (assignment_expression "this->file_count_ = 0" (field_expression "this->file_count_" identifier -> field_identifier) = number_literal) ;) (expression_statement "*(Input_arguments **)((long)closurev + 0x78) = this;" (assignment_expression "*(Input_arguments **)((long)closurev + 0x78) = this" (pointer_expression "*(Input_arguments **)((long)closurev + 0x78)" * (cast_expression "(Input_arguments **)((long)closurev + 0x78)" ( (type_descriptor "Input_arguments **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((long)closurev + 0x78)" ( (binary_expression "(long)closurev + 0x78" (cast_expression "(long)closurev" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = identifier) ;) })) comment (ERROR "pIVar3 = gold::" (assignment_expression "pIVar3 = gold" identifier = identifier) : :) (labeled_statement "Input_arguments::add_file(this,&file);" statement_identifier : (ERROR ":" :) (expression_statement "add_file(this,&file);" (call_expression "add_file(this,&file)" identifier (argument_list "(this,&file)" ( identifier , (pointer_expression "&file" & identifier) ))) ;)) (expression_statement "pIVar3->script_info_ = *(Script_info **)((long)closurev + 0x80);" (assignment_expression "pIVar3->script_info_ = *(Script_info **)((long)closurev + 0x80)" (field_expression "pIVar3->script_info_" identifier -> field_identifier) = (pointer_expression "*(Script_info **)((long)closurev + 0x80)" * (cast_expression "(Script_info **)((long)closurev + 0x80)" ( (type_descriptor "Script_info **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((long)closurev + 0x80)" ( (binary_expression "(long)closurev + 0x80" (cast_expression "(long)closurev" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (if_statement "if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)file.extra_search_path_._M_dataplus._M_p != &file.extra_search_path_.field_2) {\n    operator_delete(file.extra_search_path_._M_dataplus._M_p);\n  }" if (parenthesized_expression "((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)file.extra_search_path_._M_dataplus._M_p != &file.extra_search_path_.field_2)" ( (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)file.extra_search_path_._M_dataplus._M_p != &file.extra_search_path_.field_2)" ( (ERROR "anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::" (comma_expression "anon_union_16_2_edb7204a_for_basic_string<char,_std" (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_9\n       *)file.extra_search_path_._M_dataplus._M_p != &file.extra_search_path_.field_2" (binary_expression "allocator<char>_>_9\n       *)file.extra_search_path_._M_dataplus._M_p" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n       *)file.extra_search_path_._M_dataplus._M_p" identifier * (ERROR ")" )) (field_expression "file.extra_search_path_._M_dataplus._M_p" (field_expression "file.extra_search_path_._M_dataplus" (field_expression "file.extra_search_path_" identifier . field_identifier) . field_identifier) . field_identifier))) != (pointer_expression "&file.extra_search_path_.field_2" & (field_expression "file.extra_search_path_.field_2" (field_expression "file.extra_search_path_" identifier . field_identifier) . field_identifier))) )) )) (compound_statement "{\n    operator_delete(file.extra_search_path_._M_dataplus._M_p);\n  }" { (expression_statement "operator_delete(file.extra_search_path_._M_dataplus._M_p);" (call_expression "operator_delete(file.extra_search_path_._M_dataplus._M_p)" identifier (argument_list "(file.extra_search_path_._M_dataplus._M_p)" ( (field_expression "file.extra_search_path_._M_dataplus._M_p" (field_expression "file.extra_search_path_._M_dataplus" (field_expression "file.extra_search_path_" identifier . field_identifier) . field_identifier) . field_identifier) ))) ;) })) (if_statement "if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)file.name_._M_dataplus._M_p != &file.name_.field_2) {\n    operator_delete(file.name_._M_dataplus._M_p);\n  }" if (parenthesized_expression "((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)file.name_._M_dataplus._M_p != &file.name_.field_2)" ( (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)file.name_._M_dataplus._M_p != &file.name_.field_2)" ( (ERROR "anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::" (comma_expression "anon_union_16_2_edb7204a_for_basic_string<char,_std" (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_9\n       *)file.name_._M_dataplus._M_p != &file.name_.field_2" (binary_expression "allocator<char>_>_9\n       *)file.name_._M_dataplus._M_p" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n       *)file.name_._M_dataplus._M_p" identifier * (ERROR ")" )) (field_expression "file.name_._M_dataplus._M_p" (field_expression "file.name_._M_dataplus" (field_expression "file.name_" identifier . field_identifier) . field_identifier) . field_identifier))) != (pointer_expression "&file.name_.field_2" & (field_expression "file.name_.field_2" (field_expression "file.name_" identifier . field_identifier) . field_identifier))) )) )) (compound_statement "{\n    operator_delete(file.name_._M_dataplus._M_p);\n  }" { (expression_statement "operator_delete(file.name_._M_dataplus._M_p);" (call_expression "operator_delete(file.name_._M_dataplus._M_p)" identifier (argument_list "(file.name_._M_dataplus._M_p)" ( (field_expression "file.name_._M_dataplus._M_p" (field_expression "file.name_._M_dataplus" (field_expression "file.name_" identifier . field_identifier) . field_identifier) . field_identifier) ))) ;) })) (if_statement "if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)name_string._M_dataplus._M_p != &name_string.field_2) {\n    operator_delete(name_string._M_dataplus._M_p);\n  }" if (parenthesized_expression "((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)name_string._M_dataplus._M_p != &name_string.field_2)" ( (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)name_string._M_dataplus._M_p != &name_string.field_2)" ( (ERROR "anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::" (comma_expression "anon_union_16_2_edb7204a_for_basic_string<char,_std" (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_9\n       *)name_string._M_dataplus._M_p != &name_string.field_2" (binary_expression "allocator<char>_>_9\n       *)name_string._M_dataplus._M_p" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n       *)name_string._M_dataplus._M_p" identifier * (ERROR ")" )) (field_expression "name_string._M_dataplus._M_p" (field_expression "name_string._M_dataplus" identifier . field_identifier) . field_identifier))) != (pointer_expression "&name_string.field_2" & (field_expression "name_string.field_2" identifier . field_identifier))) )) )) (compound_statement "{\n    operator_delete(name_string._M_dataplus._M_p);\n  }" { (expression_statement "operator_delete(name_string._M_dataplus._M_p);" (call_expression "operator_delete(name_string._M_dataplus._M_p)" identifier (argument_list "(name_string._M_dataplus._M_p)" ( (field_expression "name_string._M_dataplus._M_p" (field_expression "name_string._M_dataplus" identifier . field_identifier) . field_identifier) ))) ;) })) (return_statement "return;" return ;) })))
(translation_unit "void FUN_00266880(long param_1,long param_2,long param_3)\n\n{\n  undefined8 uVar1;\n  size_t sVar2;\n  long lVar3;\n  undefined8 *puVar4;\n  char *pcVar5;\n  char *__s;\n  char *local_a8 [2];\n  char local_98 [16];\n  undefined1 *local_88 [2];\n  undefined1 local_78 [16];\n  undefined4 local_68;\n  undefined1 *local_60 [2];\n  undefined1 local_50 [16];\n  undefined1 local_40;\n  undefined8 local_3c;\n  undefined8 uStack_34;\n  undefined4 local_2c;\n  \n  local_a8[0] = local_98;\n  FUN_001665c0(local_a8,param_2,param_3 + param_2);\n  if (*local_a8[0] != 'l') {\n    uVar1 = gettext("library name must be prefixed with -l");\n                    \n    FUN_00178320(uVar1);\n  }\n  __s = local_a8[0] + 1;\n  pcVar5 = (char *)0xffffffffffffffff;\n  local_88[0] = local_78;\n  if (__s != (char *)0x0) {\n    sVar2 = strlen(__s);\n    pcVar5 = __s + sVar2;\n  }\n  FUN_001665c0(local_88,__s,pcVar5);\n  local_60[0] = local_50;\n  local_68 = 1;\n                    \n  FUN_001665c0(local_60,"");\n  local_3c = *(undefined8 *)(param_1 + 8);\n  uStack_34 = *(undefined8 *)(param_1 + 0x10);\n  puVar4 = *(undefined8 **)(param_1 + 0x78);\n  local_40 = 0;\n  local_2c = 0;\n  if (puVar4 == (undefined8 *)0x0) {\n    puVar4 = (undefined8 *)FUN_002d94a0(0x20);\n    *puVar4 = 0;\n    puVar4[1] = 0;\n    puVar4[2] = 0;\n    *(undefined2 *)(puVar4 + 3) = 0;\n    *(undefined4 *)((long)puVar4 + 0x1c) = 0;\n    *(undefined8 **)(param_1 + 0x78) = puVar4;\n  }\n                    \n  lVar3 = FUN_001e6fb0(puVar4,local_88);\n  *(undefined8 *)(lVar3 + 0x78) = *(undefined8 *)(param_1 + 0x80);\n  if (local_60[0] != local_50) {\n    FUN_002dac70();\n  }\n  if (local_88[0] != local_78) {\n    FUN_002dac70();\n  }\n  if (local_a8[0] != local_98) {\n    FUN_002dac70();\n  }\n  return;\n}\n\n" (function_definition "void FUN_00266880(long param_1,long param_2,long param_3)\n\n{\n  undefined8 uVar1;\n  size_t sVar2;\n  long lVar3;\n  undefined8 *puVar4;\n  char *pcVar5;\n  char *__s;\n  char *local_a8 [2];\n  char local_98 [16];\n  undefined1 *local_88 [2];\n  undefined1 local_78 [16];\n  undefined4 local_68;\n  undefined1 *local_60 [2];\n  undefined1 local_50 [16];\n  undefined1 local_40;\n  undefined8 local_3c;\n  undefined8 uStack_34;\n  undefined4 local_2c;\n  \n  local_a8[0] = local_98;\n  FUN_001665c0(local_a8,param_2,param_3 + param_2);\n  if (*local_a8[0] != 'l') {\n    uVar1 = gettext("library name must be prefixed with -l");\n                    \n    FUN_00178320(uVar1);\n  }\n  __s = local_a8[0] + 1;\n  pcVar5 = (char *)0xffffffffffffffff;\n  local_88[0] = local_78;\n  if (__s != (char *)0x0) {\n    sVar2 = strlen(__s);\n    pcVar5 = __s + sVar2;\n  }\n  FUN_001665c0(local_88,__s,pcVar5);\n  local_60[0] = local_50;\n  local_68 = 1;\n                    \n  FUN_001665c0(local_60,"");\n  local_3c = *(undefined8 *)(param_1 + 8);\n  uStack_34 = *(undefined8 *)(param_1 + 0x10);\n  puVar4 = *(undefined8 **)(param_1 + 0x78);\n  local_40 = 0;\n  local_2c = 0;\n  if (puVar4 == (undefined8 *)0x0) {\n    puVar4 = (undefined8 *)FUN_002d94a0(0x20);\n    *puVar4 = 0;\n    puVar4[1] = 0;\n    puVar4[2] = 0;\n    *(undefined2 *)(puVar4 + 3) = 0;\n    *(undefined4 *)((long)puVar4 + 0x1c) = 0;\n    *(undefined8 **)(param_1 + 0x78) = puVar4;\n  }\n                    \n  lVar3 = FUN_001e6fb0(puVar4,local_88);\n  *(undefined8 *)(lVar3 + 0x78) = *(undefined8 *)(param_1 + 0x80);\n  if (local_60[0] != local_50) {\n    FUN_002dac70();\n  }\n  if (local_88[0] != local_78) {\n    FUN_002dac70();\n  }\n  if (local_a8[0] != local_98) {\n    FUN_002dac70();\n  }\n  return;\n}" primitive_type (function_declarator "FUN_00266880(long param_1,long param_2,long param_3)" identifier (parameter_list "(long param_1,long param_2,long param_3)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_3" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  undefined8 uVar1;\n  size_t sVar2;\n  long lVar3;\n  undefined8 *puVar4;\n  char *pcVar5;\n  char *__s;\n  char *local_a8 [2];\n  char local_98 [16];\n  undefined1 *local_88 [2];\n  undefined1 local_78 [16];\n  undefined4 local_68;\n  undefined1 *local_60 [2];\n  undefined1 local_50 [16];\n  undefined1 local_40;\n  undefined8 local_3c;\n  undefined8 uStack_34;\n  undefined4 local_2c;\n  \n  local_a8[0] = local_98;\n  FUN_001665c0(local_a8,param_2,param_3 + param_2);\n  if (*local_a8[0] != 'l') {\n    uVar1 = gettext("library name must be prefixed with -l");\n                    \n    FUN_00178320(uVar1);\n  }\n  __s = local_a8[0] + 1;\n  pcVar5 = (char *)0xffffffffffffffff;\n  local_88[0] = local_78;\n  if (__s != (char *)0x0) {\n    sVar2 = strlen(__s);\n    pcVar5 = __s + sVar2;\n  }\n  FUN_001665c0(local_88,__s,pcVar5);\n  local_60[0] = local_50;\n  local_68 = 1;\n                    \n  FUN_001665c0(local_60,"");\n  local_3c = *(undefined8 *)(param_1 + 8);\n  uStack_34 = *(undefined8 *)(param_1 + 0x10);\n  puVar4 = *(undefined8 **)(param_1 + 0x78);\n  local_40 = 0;\n  local_2c = 0;\n  if (puVar4 == (undefined8 *)0x0) {\n    puVar4 = (undefined8 *)FUN_002d94a0(0x20);\n    *puVar4 = 0;\n    puVar4[1] = 0;\n    puVar4[2] = 0;\n    *(undefined2 *)(puVar4 + 3) = 0;\n    *(undefined4 *)((long)puVar4 + 0x1c) = 0;\n    *(undefined8 **)(param_1 + 0x78) = puVar4;\n  }\n                    \n  lVar3 = FUN_001e6fb0(puVar4,local_88);\n  *(undefined8 *)(lVar3 + 0x78) = *(undefined8 *)(param_1 + 0x80);\n  if (local_60[0] != local_50) {\n    FUN_002dac70();\n  }\n  if (local_88[0] != local_78) {\n    FUN_002dac70();\n  }\n  if (local_a8[0] != local_98) {\n    FUN_002dac70();\n  }\n  return;\n}" { (declaration "undefined8 uVar1;" type_identifier identifier ;) (declaration "size_t sVar2;" primitive_type identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "char *local_a8 [2];" primitive_type (pointer_declarator "*local_a8 [2]" * (array_declarator "local_a8 [2]" identifier [ number_literal ])) ;) (declaration "char local_98 [16];" primitive_type (array_declarator "local_98 [16]" identifier [ number_literal ]) ;) (declaration "undefined1 *local_88 [2];" type_identifier (pointer_declarator "*local_88 [2]" * (array_declarator "local_88 [2]" identifier [ number_literal ])) ;) (declaration "undefined1 local_78 [16];" type_identifier (array_declarator "local_78 [16]" identifier [ number_literal ]) ;) (declaration "undefined4 local_68;" type_identifier identifier ;) (declaration "undefined1 *local_60 [2];" type_identifier (pointer_declarator "*local_60 [2]" * (array_declarator "local_60 [2]" identifier [ number_literal ])) ;) (declaration "undefined1 local_50 [16];" type_identifier (array_declarator "local_50 [16]" identifier [ number_literal ]) ;) (declaration "undefined1 local_40;" type_identifier identifier ;) (declaration "undefined8 local_3c;" type_identifier identifier ;) (declaration "undefined8 uStack_34;" type_identifier identifier ;) (declaration "undefined4 local_2c;" type_identifier identifier ;) (expression_statement "local_a8[0] = local_98;" (assignment_expression "local_a8[0] = local_98" (subscript_expression "local_a8[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_001665c0(local_a8,param_2,param_3 + param_2);" (call_expression "FUN_001665c0(local_a8,param_2,param_3 + param_2)" identifier (argument_list "(local_a8,param_2,param_3 + param_2)" ( identifier , identifier , (binary_expression "param_3 + param_2" identifier + identifier) ))) ;) (if_statement "if (*local_a8[0] != 'l') {\n    uVar1 = gettext("library name must be prefixed with -l");\n                    \n    FUN_00178320(uVar1);\n  }" if (parenthesized_expression "(*local_a8[0] != 'l')" ( (binary_expression "*local_a8[0] != 'l'" (pointer_expression "*local_a8[0]" * (subscript_expression "local_a8[0]" identifier [ number_literal ])) != (char_literal "'l'" ' character ')) )) (compound_statement "{\n    uVar1 = gettext("library name must be prefixed with -l");\n                    \n    FUN_00178320(uVar1);\n  }" { (expression_statement "uVar1 = gettext("library name must be prefixed with -l");" (assignment_expression "uVar1 = gettext("library name must be prefixed with -l")" identifier = (call_expression "gettext("library name must be prefixed with -l")" identifier (argument_list "("library name must be prefixed with -l")" ( (string_literal ""library name must be prefixed with -l"" " string_content ") )))) ;) (expression_statement "FUN_00178320(uVar1);" (call_expression "FUN_00178320(uVar1)" identifier (argument_list "(uVar1)" ( identifier ))) ;) })) (expression_statement "__s = local_a8[0] + 1;" (assignment_expression "__s = local_a8[0] + 1" identifier = (binary_expression "local_a8[0] + 1" (subscript_expression "local_a8[0]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "pcVar5 = (char *)0xffffffffffffffff;" (assignment_expression "pcVar5 = (char *)0xffffffffffffffff" identifier = (cast_expression "(char *)0xffffffffffffffff" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_88[0] = local_78;" (assignment_expression "local_88[0] = local_78" (subscript_expression "local_88[0]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (__s != (char *)0x0) {\n    sVar2 = strlen(__s);\n    pcVar5 = __s + sVar2;\n  }" if (parenthesized_expression "(__s != (char *)0x0)" ( (binary_expression "__s != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    sVar2 = strlen(__s);\n    pcVar5 = __s + sVar2;\n  }" { (expression_statement "sVar2 = strlen(__s);" (assignment_expression "sVar2 = strlen(__s)" identifier = (call_expression "strlen(__s)" identifier (argument_list "(__s)" ( identifier )))) ;) (expression_statement "pcVar5 = __s + sVar2;" (assignment_expression "pcVar5 = __s + sVar2" identifier = (binary_expression "__s + sVar2" identifier + identifier)) ;) })) (expression_statement "FUN_001665c0(local_88,__s,pcVar5);" (call_expression "FUN_001665c0(local_88,__s,pcVar5)" identifier (argument_list "(local_88,__s,pcVar5)" ( identifier , identifier , identifier ))) ;) (expression_statement "local_60[0] = local_50;" (assignment_expression "local_60[0] = local_50" (subscript_expression "local_60[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_68 = 1;" (assignment_expression "local_68 = 1" identifier = number_literal) ;) (expression_statement "FUN_001665c0(local_60,"");" (call_expression "FUN_001665c0(local_60,"")" identifier (argument_list "(local_60,"")" ( identifier , (string_literal """" " ") ))) ;) (expression_statement "local_3c = *(undefined8 *)(param_1 + 8);" (assignment_expression "local_3c = *(undefined8 *)(param_1 + 8)" identifier = (pointer_expression "*(undefined8 *)(param_1 + 8)" * (cast_expression "(undefined8 *)(param_1 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (expression_statement "uStack_34 = *(undefined8 *)(param_1 + 0x10);" (assignment_expression "uStack_34 = *(undefined8 *)(param_1 + 0x10)" identifier = (pointer_expression "*(undefined8 *)(param_1 + 0x10)" * (cast_expression "(undefined8 *)(param_1 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "puVar4 = *(undefined8 **)(param_1 + 0x78);" (assignment_expression "puVar4 = *(undefined8 **)(param_1 + 0x78)" identifier = (pointer_expression "*(undefined8 **)(param_1 + 0x78)" * (cast_expression "(undefined8 **)(param_1 + 0x78)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x78)" ( (binary_expression "param_1 + 0x78" identifier + number_literal) ))))) ;) (expression_statement "local_40 = 0;" (assignment_expression "local_40 = 0" identifier = number_literal) ;) (expression_statement "local_2c = 0;" (assignment_expression "local_2c = 0" identifier = number_literal) ;) (if_statement "if (puVar4 == (undefined8 *)0x0) {\n    puVar4 = (undefined8 *)FUN_002d94a0(0x20);\n    *puVar4 = 0;\n    puVar4[1] = 0;\n    puVar4[2] = 0;\n    *(undefined2 *)(puVar4 + 3) = 0;\n    *(undefined4 *)((long)puVar4 + 0x1c) = 0;\n    *(undefined8 **)(param_1 + 0x78) = puVar4;\n  }" if (parenthesized_expression "(puVar4 == (undefined8 *)0x0)" ( (binary_expression "puVar4 == (undefined8 *)0x0" identifier == (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    puVar4 = (undefined8 *)FUN_002d94a0(0x20);\n    *puVar4 = 0;\n    puVar4[1] = 0;\n    puVar4[2] = 0;\n    *(undefined2 *)(puVar4 + 3) = 0;\n    *(undefined4 *)((long)puVar4 + 0x1c) = 0;\n    *(undefined8 **)(param_1 + 0x78) = puVar4;\n  }" { (expression_statement "puVar4 = (undefined8 *)FUN_002d94a0(0x20);" (assignment_expression "puVar4 = (undefined8 *)FUN_002d94a0(0x20)" identifier = (cast_expression "(undefined8 *)FUN_002d94a0(0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d94a0(0x20)" identifier (argument_list "(0x20)" ( number_literal ))))) ;) (expression_statement "*puVar4 = 0;" (assignment_expression "*puVar4 = 0" (pointer_expression "*puVar4" * identifier) = number_literal) ;) (expression_statement "puVar4[1] = 0;" (assignment_expression "puVar4[1] = 0" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar4[2] = 0;" (assignment_expression "puVar4[2] = 0" (subscript_expression "puVar4[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined2 *)(puVar4 + 3) = 0;" (assignment_expression "*(undefined2 *)(puVar4 + 3) = 0" (pointer_expression "*(undefined2 *)(puVar4 + 3)" * (cast_expression "(undefined2 *)(puVar4 + 3)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 3)" ( (binary_expression "puVar4 + 3" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)((long)puVar4 + 0x1c) = 0;" (assignment_expression "*(undefined4 *)((long)puVar4 + 0x1c) = 0" (pointer_expression "*(undefined4 *)((long)puVar4 + 0x1c)" * (cast_expression "(undefined4 *)((long)puVar4 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar4 + 0x1c)" ( (binary_expression "(long)puVar4 + 0x1c" (cast_expression "(long)puVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 **)(param_1 + 0x78) = puVar4;" (assignment_expression "*(undefined8 **)(param_1 + 0x78) = puVar4" (pointer_expression "*(undefined8 **)(param_1 + 0x78)" * (cast_expression "(undefined8 **)(param_1 + 0x78)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x78)" ( (binary_expression "param_1 + 0x78" identifier + number_literal) )))) = identifier) ;) })) (expression_statement "lVar3 = FUN_001e6fb0(puVar4,local_88);" (assignment_expression "lVar3 = FUN_001e6fb0(puVar4,local_88)" identifier = (call_expression "FUN_001e6fb0(puVar4,local_88)" identifier (argument_list "(puVar4,local_88)" ( identifier , identifier )))) ;) (expression_statement "*(undefined8 *)(lVar3 + 0x78) = *(undefined8 *)(param_1 + 0x80);" (assignment_expression "*(undefined8 *)(lVar3 + 0x78) = *(undefined8 *)(param_1 + 0x80)" (pointer_expression "*(undefined8 *)(lVar3 + 0x78)" * (cast_expression "(undefined8 *)(lVar3 + 0x78)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 0x78)" ( (binary_expression "lVar3 + 0x78" identifier + number_literal) )))) = (pointer_expression "*(undefined8 *)(param_1 + 0x80)" * (cast_expression "(undefined8 *)(param_1 + 0x80)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x80)" ( (binary_expression "param_1 + 0x80" identifier + number_literal) ))))) ;) (if_statement "if (local_60[0] != local_50) {\n    FUN_002dac70();\n  }" if (parenthesized_expression "(local_60[0] != local_50)" ( (binary_expression "local_60[0] != local_50" (subscript_expression "local_60[0]" identifier [ number_literal ]) != identifier) )) (compound_statement "{\n    FUN_002dac70();\n  }" { (expression_statement "FUN_002dac70();" (call_expression "FUN_002dac70()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (local_88[0] != local_78) {\n    FUN_002dac70();\n  }" if (parenthesized_expression "(local_88[0] != local_78)" ( (binary_expression "local_88[0] != local_78" (subscript_expression "local_88[0]" identifier [ number_literal ]) != identifier) )) (compound_statement "{\n    FUN_002dac70();\n  }" { (expression_statement "FUN_002dac70();" (call_expression "FUN_002dac70()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (local_a8[0] != local_98) {\n    FUN_002dac70();\n  }" if (parenthesized_expression "(local_a8[0] != local_98)" ( (binary_expression "local_a8[0] != local_98" (subscript_expression "local_a8[0]" identifier [ number_literal ]) != identifier) )) (compound_statement "{\n    FUN_002dac70();\n  }" { (expression_statement "FUN_002dac70();" (call_expression "FUN_002dac70()" identifier (argument_list "()" ( ))) ;) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * (array_declarator IDENT [ LIT ])) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (pointer_declarator * (array_declarator IDENT [ LIT ])) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * (array_declarator IDENT [ LIT ])) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , (binary_expression IDENT + IDENT) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (subscript_expression IDENT [ LIT ])) != (char_literal ' character ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (string_literal " string_content ") )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = 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 = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " ") ))) ;) (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 = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (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 *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression (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) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (return_statement return ;) })))
(function_definition "void FUN_00266880(long param_1,long param_2,long param_3)\n\n{\n  undefined8 uVar1;\n  size_t sVar2;\n  long lVar3;\n  undefined8 *puVar4;\n  char *pcVar5;\n  char *__s;\n  char *local_a8 [2];\n  char local_98 [16];\n  undefined1 *local_88 [2];\n  undefined1 local_78 [16];\n  undefined4 local_68;\n  undefined1 *local_60 [2];\n  undefined1 local_50 [16];\n  undefined1 local_40;\n  undefined8 local_3c;\n  undefined8 uStack_34;\n  undefined4 local_2c;\n  \n  local_a8[0] = local_98;\n  FUN_001665c0(local_a8,param_2,param_3 + param_2);\n  if (*local_a8[0] != 'l') {\n    uVar1 = gettext("library name must be prefixed with -l");\n                    \n    FUN_00178320(uVar1);\n  }\n  __s = local_a8[0] + 1;\n  pcVar5 = (char *)0xffffffffffffffff;\n  local_88[0] = local_78;\n  if (__s != (char *)0x0) {\n    sVar2 = strlen(__s);\n    pcVar5 = __s + sVar2;\n  }\n  FUN_001665c0(local_88,__s,pcVar5);\n  local_60[0] = local_50;\n  local_68 = 1;\n                    \n  FUN_001665c0(local_60,"");\n  local_3c = *(undefined8 *)(param_1 + 8);\n  uStack_34 = *(undefined8 *)(param_1 + 0x10);\n  puVar4 = *(undefined8 **)(param_1 + 0x78);\n  local_40 = 0;\n  local_2c = 0;\n  if (puVar4 == (undefined8 *)0x0) {\n    puVar4 = (undefined8 *)FUN_002d94a0(0x20);\n    *puVar4 = 0;\n    puVar4[1] = 0;\n    puVar4[2] = 0;\n    *(undefined2 *)(puVar4 + 3) = 0;\n    *(undefined4 *)((long)puVar4 + 0x1c) = 0;\n    *(undefined8 **)(param_1 + 0x78) = puVar4;\n  }\n                    \n  lVar3 = FUN_001e6fb0(puVar4,local_88);\n  *(undefined8 *)(lVar3 + 0x78) = *(undefined8 *)(param_1 + 0x80);\n  if (local_60[0] != local_50) {\n    FUN_002dac70();\n  }\n  if (local_88[0] != local_78) {\n    FUN_002dac70();\n  }\n  if (local_a8[0] != local_98) {\n    FUN_002dac70();\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00266880(long param_1,long param_2,long param_3)" (identifier "FUN_00266880") (parameter_list "(long param_1,long param_2,long param_3)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) (, ",") (parameter_declaration "long param_2" (sized_type_specifier "long" (long "long")) (identifier "param_2")) (, ",") (parameter_declaration "long param_3" (sized_type_specifier "long" (long "long")) (identifier "param_3")) () ")"))) (compound_statement "{\n  undefined8 uVar1;\n  size_t sVar2;\n  long lVar3;\n  undefined8 *puVar4;\n  char *pcVar5;\n  char *__s;\n  char *local_a8 [2];\n  char local_98 [16];\n  undefined1 *local_88 [2];\n  undefined1 local_78 [16];\n  undefined4 local_68;\n  undefined1 *local_60 [2];\n  undefined1 local_50 [16];\n  undefined1 local_40;\n  undefined8 local_3c;\n  undefined8 uStack_34;\n  undefined4 local_2c;\n  \n  local_a8[0] = local_98;\n  FUN_001665c0(local_a8,param_2,param_3 + param_2);\n  if (*local_a8[0] != 'l') {\n    uVar1 = gettext("library name must be prefixed with -l");\n                    \n    FUN_00178320(uVar1);\n  }\n  __s = local_a8[0] + 1;\n  pcVar5 = (char *)0xffffffffffffffff;\n  local_88[0] = local_78;\n  if (__s != (char *)0x0) {\n    sVar2 = strlen(__s);\n    pcVar5 = __s + sVar2;\n  }\n  FUN_001665c0(local_88,__s,pcVar5);\n  local_60[0] = local_50;\n  local_68 = 1;\n                    \n  FUN_001665c0(local_60,"");\n  local_3c = *(undefined8 *)(param_1 + 8);\n  uStack_34 = *(undefined8 *)(param_1 + 0x10);\n  puVar4 = *(undefined8 **)(param_1 + 0x78);\n  local_40 = 0;\n  local_2c = 0;\n  if (puVar4 == (undefined8 *)0x0) {\n    puVar4 = (undefined8 *)FUN_002d94a0(0x20);\n    *puVar4 = 0;\n    puVar4[1] = 0;\n    puVar4[2] = 0;\n    *(undefined2 *)(puVar4 + 3) = 0;\n    *(undefined4 *)((long)puVar4 + 0x1c) = 0;\n    *(undefined8 **)(param_1 + 0x78) = puVar4;\n  }\n                    \n  lVar3 = FUN_001e6fb0(puVar4,local_88);\n  *(undefined8 *)(lVar3 + 0x78) = *(undefined8 *)(param_1 + 0x80);\n  if (local_60[0] != local_50) {\n    FUN_002dac70();\n  }\n  if (local_88[0] != local_78) {\n    FUN_002dac70();\n  }\n  if (local_a8[0] != local_98) {\n    FUN_002dac70();\n  }\n  return;\n}" ({ "{") (declaration "undefined8 uVar1;" (type_identifier "undefined8") (identifier "uVar1") (; ";")) (declaration "size_t sVar2;" (primitive_type "size_t") (identifier "sVar2") (; ";")) (declaration "long lVar3;" (sized_type_specifier "long" (long "long")) (identifier "lVar3") (; ";")) (declaration "undefined8 *puVar4;" (type_identifier "undefined8") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "char *pcVar5;" (primitive_type "char") (pointer_declarator "*pcVar5" (* "*") (identifier "pcVar5")) (; ";")) (declaration "char *__s;" (primitive_type "char") (pointer_declarator "*__s" (* "*") (identifier "__s")) (; ";")) (declaration "char *local_a8 [2];" (primitive_type "char") (pointer_declarator "*local_a8 [2]" (* "*") (array_declarator "local_a8 [2]" (identifier "local_a8") ([ "[") (number_literal "2") (] "]"))) (; ";")) (declaration "char local_98 [16];" (primitive_type "char") (array_declarator "local_98 [16]" (identifier "local_98") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "undefined1 *local_88 [2];" (type_identifier "undefined1") (pointer_declarator "*local_88 [2]" (* "*") (array_declarator "local_88 [2]" (identifier "local_88") ([ "[") (number_literal "2") (] "]"))) (; ";")) (declaration "undefined1 local_78 [16];" (type_identifier "undefined1") (array_declarator "local_78 [16]" (identifier "local_78") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "undefined4 local_68;" (type_identifier "undefined4") (identifier "local_68") (; ";")) (declaration "undefined1 *local_60 [2];" (type_identifier "undefined1") (pointer_declarator "*local_60 [2]" (* "*") (array_declarator "local_60 [2]" (identifier "local_60") ([ "[") (number_literal "2") (] "]"))) (; ";")) (declaration "undefined1 local_50 [16];" (type_identifier "undefined1") (array_declarator "local_50 [16]" (identifier "local_50") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "undefined1 local_40;" (type_identifier "undefined1") (identifier "local_40") (; ";")) (declaration "undefined8 local_3c;" (type_identifier "undefined8") (identifier "local_3c") (; ";")) (declaration "undefined8 uStack_34;" (type_identifier "undefined8") (identifier "uStack_34") (; ";")) (declaration "undefined4 local_2c;" (type_identifier "undefined4") (identifier "local_2c") (; ";")) (expression_statement "local_a8[0] = local_98;" (assignment_expression "local_a8[0] = local_98" (subscript_expression "local_a8[0]" (identifier "local_a8") ([ "[") (number_literal "0") (] "]")) (= "=") (identifier "local_98")) (; ";")) (expression_statement "FUN_001665c0(local_a8,param_2,param_3 + param_2);" (call_expression "FUN_001665c0(local_a8,param_2,param_3 + param_2)" (identifier "FUN_001665c0") (argument_list "(local_a8,param_2,param_3 + param_2)" (( "(") (identifier "local_a8") (, ",") (identifier "param_2") (, ",") (binary_expression "param_3 + param_2" (identifier "param_3") (+ "+") (identifier "param_2")) () ")"))) (; ";")) (if_statement "if (*local_a8[0] != 'l') {\n    uVar1 = gettext("library name must be prefixed with -l");\n                    \n    FUN_00178320(uVar1);\n  }" (if "if") (parenthesized_expression "(*local_a8[0] != 'l')" (( "(") (binary_expression "*local_a8[0] != 'l'" (pointer_expression "*local_a8[0]" (* "*") (subscript_expression "local_a8[0]" (identifier "local_a8") ([ "[") (number_literal "0") (] "]"))) (!= "!=") (char_literal "'l'" (' "'") (character "l") (' "'"))) () ")")) (compound_statement "{\n    uVar1 = gettext("library name must be prefixed with -l");\n                    \n    FUN_00178320(uVar1);\n  }" ({ "{") (expression_statement "uVar1 = gettext("library name must be prefixed with -l");" (assignment_expression "uVar1 = gettext("library name must be prefixed with -l")" (identifier "uVar1") (= "=") (call_expression "gettext("library name must be prefixed with -l")" (identifier "gettext") (argument_list "("library name must be prefixed with -l")" (( "(") (string_literal ""library name must be prefixed with -l"" (" """) (string_content "library name must be prefixed with -l") (" """)) () ")")))) (; ";")) (expression_statement "FUN_00178320(uVar1);" (call_expression "FUN_00178320(uVar1)" (identifier "FUN_00178320") (argument_list "(uVar1)" (( "(") (identifier "uVar1") () ")"))) (; ";")) (} "}"))) (expression_statement "__s = local_a8[0] + 1;" (assignment_expression "__s = local_a8[0] + 1" (identifier "__s") (= "=") (binary_expression "local_a8[0] + 1" (subscript_expression "local_a8[0]" (identifier "local_a8") ([ "[") (number_literal "0") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pcVar5 = (char *)0xffffffffffffffff;" (assignment_expression "pcVar5 = (char *)0xffffffffffffffff" (identifier "pcVar5") (= "=") (cast_expression "(char *)0xffffffffffffffff" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xffffffffffffffff"))) (; ";")) (expression_statement "local_88[0] = local_78;" (assignment_expression "local_88[0] = local_78" (subscript_expression "local_88[0]" (identifier "local_88") ([ "[") (number_literal "0") (] "]")) (= "=") (identifier "local_78")) (; ";")) (if_statement "if (__s != (char *)0x0) {\n    sVar2 = strlen(__s);\n    pcVar5 = __s + sVar2;\n  }" (if "if") (parenthesized_expression "(__s != (char *)0x0)" (( "(") (binary_expression "__s != (char *)0x0" (identifier "__s") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    sVar2 = strlen(__s);\n    pcVar5 = __s + sVar2;\n  }" ({ "{") (expression_statement "sVar2 = strlen(__s);" (assignment_expression "sVar2 = strlen(__s)" (identifier "sVar2") (= "=") (call_expression "strlen(__s)" (identifier "strlen") (argument_list "(__s)" (( "(") (identifier "__s") () ")")))) (; ";")) (expression_statement "pcVar5 = __s + sVar2;" (assignment_expression "pcVar5 = __s + sVar2" (identifier "pcVar5") (= "=") (binary_expression "__s + sVar2" (identifier "__s") (+ "+") (identifier "sVar2"))) (; ";")) (} "}"))) (expression_statement "FUN_001665c0(local_88,__s,pcVar5);" (call_expression "FUN_001665c0(local_88,__s,pcVar5)" (identifier "FUN_001665c0") (argument_list "(local_88,__s,pcVar5)" (( "(") (identifier "local_88") (, ",") (identifier "__s") (, ",") (identifier "pcVar5") () ")"))) (; ";")) (expression_statement "local_60[0] = local_50;" (assignment_expression "local_60[0] = local_50" (subscript_expression "local_60[0]" (identifier "local_60") ([ "[") (number_literal "0") (] "]")) (= "=") (identifier "local_50")) (; ";")) (expression_statement "local_68 = 1;" (assignment_expression "local_68 = 1" (identifier "local_68") (= "=") (number_literal "1")) (; ";")) (expression_statement "FUN_001665c0(local_60,"");" (call_expression "FUN_001665c0(local_60,"")" (identifier "FUN_001665c0") (argument_list "(local_60,"")" (( "(") (identifier "local_60") (, ",") (string_literal """" (" """) (" """)) () ")"))) (; ";")) (expression_statement "local_3c = *(undefined8 *)(param_1 + 8);" (assignment_expression "local_3c = *(undefined8 *)(param_1 + 8)" (identifier "local_3c") (= "=") (pointer_expression "*(undefined8 *)(param_1 + 8)" (* "*") (cast_expression "(undefined8 *)(param_1 + 8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "uStack_34 = *(undefined8 *)(param_1 + 0x10);" (assignment_expression "uStack_34 = *(undefined8 *)(param_1 + 0x10)" (identifier "uStack_34") (= "=") (pointer_expression "*(undefined8 *)(param_1 + 0x10)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x10)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "puVar4 = *(undefined8 **)(param_1 + 0x78);" (assignment_expression "puVar4 = *(undefined8 **)(param_1 + 0x78)" (identifier "puVar4") (= "=") (pointer_expression "*(undefined8 **)(param_1 + 0x78)" (* "*") (cast_expression "(undefined8 **)(param_1 + 0x78)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x78)" (( "(") (binary_expression "param_1 + 0x78" (identifier "param_1") (+ "+") (number_literal "0x78")) () ")"))))) (; ";")) (expression_statement "local_40 = 0;" (assignment_expression "local_40 = 0" (identifier "local_40") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_2c = 0;" (assignment_expression "local_2c = 0" (identifier "local_2c") (= "=") (number_literal "0")) (; ";")) (if_statement "if (puVar4 == (undefined8 *)0x0) {\n    puVar4 = (undefined8 *)FUN_002d94a0(0x20);\n    *puVar4 = 0;\n    puVar4[1] = 0;\n    puVar4[2] = 0;\n    *(undefined2 *)(puVar4 + 3) = 0;\n    *(undefined4 *)((long)puVar4 + 0x1c) = 0;\n    *(undefined8 **)(param_1 + 0x78) = puVar4;\n  }" (if "if") (parenthesized_expression "(puVar4 == (undefined8 *)0x0)" (( "(") (binary_expression "puVar4 == (undefined8 *)0x0" (identifier "puVar4") (== "==") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    puVar4 = (undefined8 *)FUN_002d94a0(0x20);\n    *puVar4 = 0;\n    puVar4[1] = 0;\n    puVar4[2] = 0;\n    *(undefined2 *)(puVar4 + 3) = 0;\n    *(undefined4 *)((long)puVar4 + 0x1c) = 0;\n    *(undefined8 **)(param_1 + 0x78) = puVar4;\n  }" ({ "{") (expression_statement "puVar4 = (undefined8 *)FUN_002d94a0(0x20);" (assignment_expression "puVar4 = (undefined8 *)FUN_002d94a0(0x20)" (identifier "puVar4") (= "=") (cast_expression "(undefined8 *)FUN_002d94a0(0x20)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_002d94a0(0x20)" (identifier "FUN_002d94a0") (argument_list "(0x20)" (( "(") (number_literal "0x20") () ")"))))) (; ";")) (expression_statement "*puVar4 = 0;" (assignment_expression "*puVar4 = 0" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar4[1] = 0;" (assignment_expression "puVar4[1] = 0" (subscript_expression "puVar4[1]" (identifier "puVar4") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar4[2] = 0;" (assignment_expression "puVar4[2] = 0" (subscript_expression "puVar4[2]" (identifier "puVar4") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined2 *)(puVar4 + 3) = 0;" (assignment_expression "*(undefined2 *)(puVar4 + 3) = 0" (pointer_expression "*(undefined2 *)(puVar4 + 3)" (* "*") (cast_expression "(undefined2 *)(puVar4 + 3)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + 3)" (( "(") (binary_expression "puVar4 + 3" (identifier "puVar4") (+ "+") (number_literal "3")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)((long)puVar4 + 0x1c) = 0;" (assignment_expression "*(undefined4 *)((long)puVar4 + 0x1c) = 0" (pointer_expression "*(undefined4 *)((long)puVar4 + 0x1c)" (* "*") (cast_expression "(undefined4 *)((long)puVar4 + 0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar4 + 0x1c)" (( "(") (binary_expression "(long)puVar4 + 0x1c" (cast_expression "(long)puVar4" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar4")) (+ "+") (number_literal "0x1c")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined8 **)(param_1 + 0x78) = puVar4;" (assignment_expression "*(undefined8 **)(param_1 + 0x78) = puVar4" (pointer_expression "*(undefined8 **)(param_1 + 0x78)" (* "*") (cast_expression "(undefined8 **)(param_1 + 0x78)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x78)" (( "(") (binary_expression "param_1 + 0x78" (identifier "param_1") (+ "+") (number_literal "0x78")) () ")")))) (= "=") (identifier "puVar4")) (; ";")) (} "}"))) (expression_statement "lVar3 = FUN_001e6fb0(puVar4,local_88);" (assignment_expression "lVar3 = FUN_001e6fb0(puVar4,local_88)" (identifier "lVar3") (= "=") (call_expression "FUN_001e6fb0(puVar4,local_88)" (identifier "FUN_001e6fb0") (argument_list "(puVar4,local_88)" (( "(") (identifier "puVar4") (, ",") (identifier "local_88") () ")")))) (; ";")) (expression_statement "*(undefined8 *)(lVar3 + 0x78) = *(undefined8 *)(param_1 + 0x80);" (assignment_expression "*(undefined8 *)(lVar3 + 0x78) = *(undefined8 *)(param_1 + 0x80)" (pointer_expression "*(undefined8 *)(lVar3 + 0x78)" (* "*") (cast_expression "(undefined8 *)(lVar3 + 0x78)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar3 + 0x78)" (( "(") (binary_expression "lVar3 + 0x78" (identifier "lVar3") (+ "+") (number_literal "0x78")) () ")")))) (= "=") (pointer_expression "*(undefined8 *)(param_1 + 0x80)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x80)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x80)" (( "(") (binary_expression "param_1 + 0x80" (identifier "param_1") (+ "+") (number_literal "0x80")) () ")"))))) (; ";")) (if_statement "if (local_60[0] != local_50) {\n    FUN_002dac70();\n  }" (if "if") (parenthesized_expression "(local_60[0] != local_50)" (( "(") (binary_expression "local_60[0] != local_50" (subscript_expression "local_60[0]" (identifier "local_60") ([ "[") (number_literal "0") (] "]")) (!= "!=") (identifier "local_50")) () ")")) (compound_statement "{\n    FUN_002dac70();\n  }" ({ "{") (expression_statement "FUN_002dac70();" (call_expression "FUN_002dac70()" (identifier "FUN_002dac70") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (if_statement "if (local_88[0] != local_78) {\n    FUN_002dac70();\n  }" (if "if") (parenthesized_expression "(local_88[0] != local_78)" (( "(") (binary_expression "local_88[0] != local_78" (subscript_expression "local_88[0]" (identifier "local_88") ([ "[") (number_literal "0") (] "]")) (!= "!=") (identifier "local_78")) () ")")) (compound_statement "{\n    FUN_002dac70();\n  }" ({ "{") (expression_statement "FUN_002dac70();" (call_expression "FUN_002dac70()" (identifier "FUN_002dac70") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (if_statement "if (local_a8[0] != local_98) {\n    FUN_002dac70();\n  }" (if "if") (parenthesized_expression "(local_a8[0] != local_98)" (( "(") (binary_expression "local_a8[0] != local_98" (subscript_expression "local_a8[0]" (identifier "local_a8") ([ "[") (number_literal "0") (] "]")) (!= "!=") (identifier "local_98")) () ")")) (compound_statement "{\n    FUN_002dac70();\n  }" ({ "{") (expression_statement "FUN_002dac70();" (call_expression "FUN_002dac70()" (identifier "FUN_002dac70") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Enum "DT": Some values do not have unique names */

void function_1(void *closurev,char *var_3,size_t var_4)

{
  char *pcVar1;
  size_t var_9;
  type_1 *pIVar3;
  type_2 *var_10;
  char *var_7;
  type_3 *closure;
  type_4 name_string;
  type_5 file;
  
  name_string._M_dataplus._M_p = (type_7)&name_string.field_2;
  std::__cxx11::basic_string<var_15,_std::char_traits<var_15>,_std::var_14<var_15>var_12>::
  var_1<var_2*>(&name_string,var_3,var_3 + var_4);
  if (*name_string._M_dataplus._M_p != 'l') {
    pcVar1 = (char *)var_5("library name must be prefixed with -l");
                    /* try { // try from 002668c1 to 002668ff has its CatchHandler @ 002669ea */
    gold::var_6(pcVar1);
  }
  var_7 = name_string._M_dataplus._M_p + 1;
  pcVar1 = (char *)0xffffffffffffffff;
  file.name_._M_dataplus._M_p = (type_7)&file.name_.field_2;
  if (var_7 != (char *)0x0) {
    var_9 = var_8(var_7);
    pcVar1 = var_7 + var_9;
  }
  std::__cxx11::basic_string<var_15,_std::char_traits<var_15>,_std::var_14<var_15>var_12>::
  var_1<var_2*>(&file.name_,var_7,pcVar1);
  file.extra_search_path_._M_dataplus._M_p = (type_7)&file.extra_search_path_.field_2;
  file.type_ = INPUT_FILE_TYPE_LIBRARY;
                    /* try { // try from 0026691f to 00266923 has its CatchHandler @ 002669e2 */
  std::__cxx11::basic_string<var_15,_std::char_traits<var_15>,_std::var_14<var_15>var_12>::
  var_1<var_2*>(&file.extra_search_path_,"");
  file.options_._0_8_ = *(type_6 *)((long)closurev + 8);
  file.options_._8_8_ = *(type_6 *)((long)closurev + 0x10);
  var_10 = *(type_2 **)((long)closurev + 0x78);
  file.just_symbols_ = false;
  file.arg_serial_ = 0;
  if (var_10 == (type_2 *)0x0) {
    var_10 = (type_2 *)var_11(0x20);
    (var_10->input_argument_list_).
    super__Vector_base<gold::type_1,_std::var_14<gold::type_1>var_12>._M_impl._M_start
         = (type_7)0x0;
    (var_10->input_argument_list_).
    super__Vector_base<gold::type_1,_std::var_14<gold::type_1>var_12>._M_impl.
    _M_finish = (type_7)0x0;
    (var_10->input_argument_list_).
    super__Vector_base<gold::type_1,_std::var_14<gold::type_1>var_12>._M_impl.
    _M_end_of_storage = (type_7)0x0;
    var_10->in_group_ = false;
    var_10->in_lib_ = false;
    var_10->file_count_ = 0;
    *(type_2 **)((long)closurev + 0x78) = var_10;
  }
                    /* try { // try from 00266948 to 002669a9 has its CatchHandler @ 002669da */
  pIVar3 = gold::Input_arguments::var_13(var_10,&file);
  pIVar3->script_info_ = *(type_8 **)((long)closurev + 0x80);
  if ((anon_union_16_2_edb7204a_for_basic_string<var_15,_std::char_traits<var_15>,_std::var_14<var_15>var_12>var_16
       *)file.extra_search_path_._M_dataplus._M_p != &file.extra_search_path_.field_2) {
    var_17(file.extra_search_path_._M_dataplus._M_p);
  }
  if ((anon_union_16_2_edb7204a_for_basic_string<var_15,_std::char_traits<var_15>,_std::var_14<var_15>var_12>var_16
       *)file.name_._M_dataplus._M_p != &file.name_.field_2) {
    var_17(file.name_._M_dataplus._M_p);
  }
  if ((anon_union_16_2_edb7204a_for_basic_string<var_15,_std::char_traits<var_15>,_std::var_14<var_15>var_12>var_16
       *)name_string._M_dataplus._M_p != &name_string.field_2) {
    var_17(name_string._M_dataplus._M_p);
  }
  return;
}


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

void MASKED(long param_1,long param_2,long param_3)

{
  undefined8 uVar1;
  size_t sVar2;
  long lVar3;
  undefined8 *puVar4;
  char *pcVar5;
  char *__s;
  char *local_a8 [2];
  char local_98 [16];
  undefined1 *local_88 [2];
  undefined1 local_78 [16];
  undefined4 local_68;
  undefined1 *local_60 [2];
  undefined1 local_50 [16];
  undefined1 local_40;
  undefined8 local_3c;
  undefined8 uStack_34;
  undefined4 local_2c;
  
  local_a8[0] = local_98;
  FUN_001665c0(local_a8,param_2,param_3 + param_2);
  if (*local_a8[0] != 'l') {
    uVar1 = gettext("library name must be prefixed with -l");
                    /* try { // try from 002668c1 to 002668ff has its CatchHandler @ 002669ea */
    FUN_00178320(uVar1);
  }
  __s = local_a8[0] + 1;
  pcVar5 = (char *)0xffffffffffffffff;
  local_88[0] = local_78;
  if (__s != (char *)0x0) {
    sVar2 = strlen(__s);
    pcVar5 = __s + sVar2;
  }
  FUN_001665c0(local_88,__s,pcVar5);
  local_60[0] = local_50;
  local_68 = 1;
                    /* try { // try from 0026691f to 00266923 has its CatchHandler @ 002669e2 */
  FUN_001665c0(local_60,"");
  local_3c = *(undefined8 *)(param_1 + 8);
  uStack_34 = *(undefined8 *)(param_1 + 0x10);
  puVar4 = *(undefined8 **)(param_1 + 0x78);
  local_40 = 0;
  local_2c = 0;
  if (puVar4 == (undefined8 *)0x0) {
    puVar4 = (undefined8 *)FUN_002d94a0(0x20);
    *puVar4 = 0;
    puVar4[1] = 0;
    puVar4[2] = 0;
    *(undefined2 *)(puVar4 + 3) = 0;
    *(undefined4 *)((long)puVar4 + 0x1c) = 0;
    *(undefined8 **)(param_1 + 0x78) = puVar4;
  }
                    /* try { // try from 00266948 to 002669a9 has its CatchHandler @ 002669da */
  lVar3 = FUN_001e6fb0(puVar4,local_88);
  *(undefined8 *)(lVar3 + 0x78) = *(undefined8 *)(param_1 + 0x80);
  if (local_60[0] != local_50) {
    FUN_002dac70();
  }
  if (local_88[0] != local_78) {
    FUN_002dac70();
  }
  if (local_a8[0] != local_98) {
    FUN_002dac70();
  }
  return;
}

