
void add_to_set(bfd_link_info *info,bfd_link_hash_entry *h,bfd_reloc_code_real_type reloc,bfd *abfd,
               asection *section,bfd_vma value)

{
  char *pcVar1;
  char *fmt;
  
  if (config.warn_constructors != 0) {
    pcVar1 = (h->root).string;
    fmt = (char *)dcgettext(0,"%P: warning: global constructor %s used\n",5);
    einfo(fmt,pcVar1);
  }
  if (config.build_constructors != 0) {
    ldctor_add_set_entry(h,reloc,(char *)0x0,section,value);
    if (h->field_0x18 == '\0') {
      (h->u).undef.abfd = abfd;
      h->field_0x18 = 1;
      return;
    }
  }
  return;
}



void FUN_00120de0(undefined8 param_1,long param_2,undefined4 param_3,undefined8 param_4,
                 undefined8 param_5,undefined8 param_6)

{
  undefined8 uVar1;
  undefined8 uVar2;
  
  if (DAT_00225d10 != 0) {
    uVar1 = *(undefined8 *)(param_2 + 8);
    uVar2 = dcgettext(0,"%P: warning: global constructor %s used\n",5);
    FUN_001261f0(uVar2,uVar1);
  }
  if (DAT_00225d0c != 0) {
    FUN_0011f930(param_2,param_3,0,param_5,param_6);
    if (*(char *)(param_2 + 0x18) == '\0') {
      *(undefined8 *)(param_2 + 0x28) = param_4;
      *(undefined1 *)(param_2 + 0x18) = 1;
      return;
    }
  }
  return;
}


PUSH R14
PUSH R13
MOV R13,RCX
PUSH R12
MOV R12,R8
PUSH RBP
MOV EBP,EDX
PUSH RBX
MOV RBX,RSI
SUB RSP,0x10
MOV EDX,dword ptr [0x00225d10]
TEST EDX,EDX
JNZ 0x00120e50
MOV EAX,dword ptr [0x00225d0c]
TEST EAX,EAX
JNZ 0x00120e20
ADD RSP,0x10
POP RBX
POP RBP
POP R12
POP R13
POP R14
RET
XOR EDX,EDX
MOV R8,R9
MOV RCX,R12
MOV ESI,EBP
MOV RDI,RBX
CALL 0x0011f930
CMP byte ptr [RBX + 0x18],0x0
JNZ 0x00120e0b
MOV qword ptr [RBX + 0x28],R13
MOV byte ptr [RBX + 0x18],0x1
ADD RSP,0x10
POP RBX
POP RBP
POP R12
POP R13
POP R14
RET
MOV R14,qword ptr [RSI + 0x8]
MOV EDX,0x5
XOR EDI,EDI
MOV qword ptr [RSP + 0x8],R9
LEA RSI,[0x154658]
CALL 0x0010a2e0
MOV RSI,R14
MOV RDI,RAX
XOR EAX,EAX
CALL 0x001261f0
MOV R9,qword ptr [RSP + 0x8]
JMP 0x00120e01
(translation_unit "void FUN_00120de0(undefined8 param_1,long param_2,undefined4 param_3,undefined8 param_4,\n                 undefined8 param_5,undefined8 param_6)\n\n{\n  undefined8 uVar1;\n  undefined8 uVar2;\n  \n  if (DAT_00225d10 != 0) {\n    uVar1 = *(undefined8 *)(param_2 + 8);\n    uVar2 = dcgettext(0,"%P: warning: global constructor %s used\n",5);\n    FUN_001261f0(uVar2,uVar1);\n  }\n  if (DAT_00225d0c != 0) {\n    FUN_0011f930(param_2,param_3,0,param_5,param_6);\n    if (*(char *)(param_2 + 0x18) == '\0') {\n      *(undefined8 *)(param_2 + 0x28) = param_4;\n      *(undefined1 *)(param_2 + 0x18) = 1;\n      return;\n    }\n  }\n  return;\n}\n\n" (function_definition "void FUN_00120de0(undefined8 param_1,long param_2,undefined4 param_3,undefined8 param_4,\n                 undefined8 param_5,undefined8 param_6)\n\n{\n  undefined8 uVar1;\n  undefined8 uVar2;\n  \n  if (DAT_00225d10 != 0) {\n    uVar1 = *(undefined8 *)(param_2 + 8);\n    uVar2 = dcgettext(0,"%P: warning: global constructor %s used\n",5);\n    FUN_001261f0(uVar2,uVar1);\n  }\n  if (DAT_00225d0c != 0) {\n    FUN_0011f930(param_2,param_3,0,param_5,param_6);\n    if (*(char *)(param_2 + 0x18) == '\0') {\n      *(undefined8 *)(param_2 + 0x28) = param_4;\n      *(undefined1 *)(param_2 + 0x18) = 1;\n      return;\n    }\n  }\n  return;\n}" primitive_type (function_declarator "FUN_00120de0(undefined8 param_1,long param_2,undefined4 param_3,undefined8 param_4,\n                 undefined8 param_5,undefined8 param_6)" identifier (parameter_list "(undefined8 param_1,long param_2,undefined4 param_3,undefined8 param_4,\n                 undefined8 param_5,undefined8 param_6)" ( (parameter_declaration "undefined8 param_1" type_identifier identifier) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "undefined8 param_4" type_identifier identifier) , (parameter_declaration "undefined8 param_5" type_identifier identifier) , (parameter_declaration "undefined8 param_6" type_identifier identifier) ))) (compound_statement "{\n  undefined8 uVar1;\n  undefined8 uVar2;\n  \n  if (DAT_00225d10 != 0) {\n    uVar1 = *(undefined8 *)(param_2 + 8);\n    uVar2 = dcgettext(0,"%P: warning: global constructor %s used\n",5);\n    FUN_001261f0(uVar2,uVar1);\n  }\n  if (DAT_00225d0c != 0) {\n    FUN_0011f930(param_2,param_3,0,param_5,param_6);\n    if (*(char *)(param_2 + 0x18) == '\0') {\n      *(undefined8 *)(param_2 + 0x28) = param_4;\n      *(undefined1 *)(param_2 + 0x18) = 1;\n      return;\n    }\n  }\n  return;\n}" { (declaration "undefined8 uVar1;" type_identifier identifier ;) (declaration "undefined8 uVar2;" type_identifier identifier ;) (if_statement "if (DAT_00225d10 != 0) {\n    uVar1 = *(undefined8 *)(param_2 + 8);\n    uVar2 = dcgettext(0,"%P: warning: global constructor %s used\n",5);\n    FUN_001261f0(uVar2,uVar1);\n  }" if (parenthesized_expression "(DAT_00225d10 != 0)" ( (binary_expression "DAT_00225d10 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar1 = *(undefined8 *)(param_2 + 8);\n    uVar2 = dcgettext(0,"%P: warning: global constructor %s used\n",5);\n    FUN_001261f0(uVar2,uVar1);\n  }" { (expression_statement "uVar1 = *(undefined8 *)(param_2 + 8);" (assignment_expression "uVar1 = *(undefined8 *)(param_2 + 8)" identifier = (pointer_expression "*(undefined8 *)(param_2 + 8)" * (cast_expression "(undefined8 *)(param_2 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) ))))) ;) (expression_statement "uVar2 = dcgettext(0,"%P: warning: global constructor %s used\n",5);" (assignment_expression "uVar2 = dcgettext(0,"%P: warning: global constructor %s used\n",5)" identifier = (call_expression "dcgettext(0,"%P: warning: global constructor %s used\n",5)" identifier (argument_list "(0,"%P: warning: global constructor %s used\n",5)" ( number_literal , (string_literal ""%P: warning: global constructor %s used\n"" " string_content escape_sequence ") , number_literal )))) ;) (expression_statement "FUN_001261f0(uVar2,uVar1);" (call_expression "FUN_001261f0(uVar2,uVar1)" identifier (argument_list "(uVar2,uVar1)" ( identifier , identifier ))) ;) })) (if_statement "if (DAT_00225d0c != 0) {\n    FUN_0011f930(param_2,param_3,0,param_5,param_6);\n    if (*(char *)(param_2 + 0x18) == '\0') {\n      *(undefined8 *)(param_2 + 0x28) = param_4;\n      *(undefined1 *)(param_2 + 0x18) = 1;\n      return;\n    }\n  }" if (parenthesized_expression "(DAT_00225d0c != 0)" ( (binary_expression "DAT_00225d0c != 0" identifier != number_literal) )) (compound_statement "{\n    FUN_0011f930(param_2,param_3,0,param_5,param_6);\n    if (*(char *)(param_2 + 0x18) == '\0') {\n      *(undefined8 *)(param_2 + 0x28) = param_4;\n      *(undefined1 *)(param_2 + 0x18) = 1;\n      return;\n    }\n  }" { (expression_statement "FUN_0011f930(param_2,param_3,0,param_5,param_6);" (call_expression "FUN_0011f930(param_2,param_3,0,param_5,param_6)" identifier (argument_list "(param_2,param_3,0,param_5,param_6)" ( identifier , identifier , number_literal , identifier , identifier ))) ;) (if_statement "if (*(char *)(param_2 + 0x18) == '\0') {\n      *(undefined8 *)(param_2 + 0x28) = param_4;\n      *(undefined1 *)(param_2 + 0x18) = 1;\n      return;\n    }" if (parenthesized_expression "(*(char *)(param_2 + 0x18) == '\0')" ( (binary_expression "*(char *)(param_2 + 0x18) == '\0'" (pointer_expression "*(char *)(param_2 + 0x18)" * (cast_expression "(char *)(param_2 + 0x18)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x18)" ( (binary_expression "param_2 + 0x18" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      *(undefined8 *)(param_2 + 0x28) = param_4;\n      *(undefined1 *)(param_2 + 0x18) = 1;\n      return;\n    }" { (expression_statement "*(undefined8 *)(param_2 + 0x28) = param_4;" (assignment_expression "*(undefined8 *)(param_2 + 0x28) = param_4" (pointer_expression "*(undefined8 *)(param_2 + 0x28)" * (cast_expression "(undefined8 *)(param_2 + 0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x28)" ( (binary_expression "param_2 + 0x28" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 *)(param_2 + 0x18) = 1;" (assignment_expression "*(undefined1 *)(param_2 + 0x18) = 1" (pointer_expression "*(undefined1 *)(param_2 + 0x18)" * (cast_expression "(undefined1 *)(param_2 + 0x18)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x18)" ( (binary_expression "param_2 + 0x18" identifier + number_literal) )))) = number_literal) ;) (return_statement "return;" return ;) })) })) (return_statement "return;" return ;) })))
(translation_unit "void add_to_set(bfd_link_info *info,bfd_link_hash_entry *h,bfd_reloc_code_real_type reloc,bfd *abfd,\n               asection *section,bfd_vma value)\n\n{\n  char *pcVar1;\n  char *fmt;\n  \n  if (config.warn_constructors != 0) {\n    pcVar1 = (h->root).string;\n    fmt = (char *)dcgettext(0,"%P: warning: global constructor %s used\n",5);\n    einfo(fmt,pcVar1);\n  }\n  if (config.build_constructors != 0) {\n    ldctor_add_set_entry(h,reloc,(char *)0x0,section,value);\n    if (h->field_0x18 == '\0') {\n      (h->u).undef.abfd = abfd;\n      h->field_0x18 = 1;\n      return;\n    }\n  }\n  return;\n}\n\n" (function_definition "void add_to_set(bfd_link_info *info,bfd_link_hash_entry *h,bfd_reloc_code_real_type reloc,bfd *abfd,\n               asection *section,bfd_vma value)\n\n{\n  char *pcVar1;\n  char *fmt;\n  \n  if (config.warn_constructors != 0) {\n    pcVar1 = (h->root).string;\n    fmt = (char *)dcgettext(0,"%P: warning: global constructor %s used\n",5);\n    einfo(fmt,pcVar1);\n  }\n  if (config.build_constructors != 0) {\n    ldctor_add_set_entry(h,reloc,(char *)0x0,section,value);\n    if (h->field_0x18 == '\0') {\n      (h->u).undef.abfd = abfd;\n      h->field_0x18 = 1;\n      return;\n    }\n  }\n  return;\n}" primitive_type (function_declarator "add_to_set(bfd_link_info *info,bfd_link_hash_entry *h,bfd_reloc_code_real_type reloc,bfd *abfd,\n               asection *section,bfd_vma value)" identifier (parameter_list "(bfd_link_info *info,bfd_link_hash_entry *h,bfd_reloc_code_real_type reloc,bfd *abfd,\n               asection *section,bfd_vma value)" ( (parameter_declaration "bfd_link_info *info" type_identifier (pointer_declarator "*info" * identifier)) , (parameter_declaration "bfd_link_hash_entry *h" type_identifier (pointer_declarator "*h" * identifier)) , (parameter_declaration "bfd_reloc_code_real_type reloc" type_identifier identifier) , (parameter_declaration "bfd *abfd" type_identifier (pointer_declarator "*abfd" * identifier)) , (parameter_declaration "asection *section" type_identifier (pointer_declarator "*section" * identifier)) , (parameter_declaration "bfd_vma value" type_identifier identifier) ))) (compound_statement "{\n  char *pcVar1;\n  char *fmt;\n  \n  if (config.warn_constructors != 0) {\n    pcVar1 = (h->root).string;\n    fmt = (char *)dcgettext(0,"%P: warning: global constructor %s used\n",5);\n    einfo(fmt,pcVar1);\n  }\n  if (config.build_constructors != 0) {\n    ldctor_add_set_entry(h,reloc,(char *)0x0,section,value);\n    if (h->field_0x18 == '\0') {\n      (h->u).undef.abfd = abfd;\n      h->field_0x18 = 1;\n      return;\n    }\n  }\n  return;\n}" { (declaration "char *pcVar1;" primitive_type (pointer_declarator "*pcVar1" * identifier) ;) (declaration "char *fmt;" primitive_type (pointer_declarator "*fmt" * identifier) ;) (if_statement "if (config.warn_constructors != 0) {\n    pcVar1 = (h->root).string;\n    fmt = (char *)dcgettext(0,"%P: warning: global constructor %s used\n",5);\n    einfo(fmt,pcVar1);\n  }" if (parenthesized_expression "(config.warn_constructors != 0)" ( (binary_expression "config.warn_constructors != 0" (field_expression "config.warn_constructors" identifier . field_identifier) != number_literal) )) (compound_statement "{\n    pcVar1 = (h->root).string;\n    fmt = (char *)dcgettext(0,"%P: warning: global constructor %s used\n",5);\n    einfo(fmt,pcVar1);\n  }" { (expression_statement "pcVar1 = (h->root).string;" (assignment_expression "pcVar1 = (h->root).string" identifier = (field_expression "(h->root).string" (parenthesized_expression "(h->root)" ( (field_expression "h->root" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "fmt = (char *)dcgettext(0,"%P: warning: global constructor %s used\n",5);" (assignment_expression "fmt = (char *)dcgettext(0,"%P: warning: global constructor %s used\n",5)" identifier = (cast_expression "(char *)dcgettext(0,"%P: warning: global constructor %s used\n",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"%P: warning: global constructor %s used\n",5)" identifier (argument_list "(0,"%P: warning: global constructor %s used\n",5)" ( number_literal , (string_literal ""%P: warning: global constructor %s used\n"" " string_content escape_sequence ") , number_literal ))))) ;) (expression_statement "einfo(fmt,pcVar1);" (call_expression "einfo(fmt,pcVar1)" identifier (argument_list "(fmt,pcVar1)" ( identifier , identifier ))) ;) })) (if_statement "if (config.build_constructors != 0) {\n    ldctor_add_set_entry(h,reloc,(char *)0x0,section,value);\n    if (h->field_0x18 == '\0') {\n      (h->u).undef.abfd = abfd;\n      h->field_0x18 = 1;\n      return;\n    }\n  }" if (parenthesized_expression "(config.build_constructors != 0)" ( (binary_expression "config.build_constructors != 0" (field_expression "config.build_constructors" identifier . field_identifier) != number_literal) )) (compound_statement "{\n    ldctor_add_set_entry(h,reloc,(char *)0x0,section,value);\n    if (h->field_0x18 == '\0') {\n      (h->u).undef.abfd = abfd;\n      h->field_0x18 = 1;\n      return;\n    }\n  }" { (expression_statement "ldctor_add_set_entry(h,reloc,(char *)0x0,section,value);" (call_expression "ldctor_add_set_entry(h,reloc,(char *)0x0,section,value)" identifier (argument_list "(h,reloc,(char *)0x0,section,value)" ( identifier , identifier , (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) , identifier , identifier ))) ;) (if_statement "if (h->field_0x18 == '\0') {\n      (h->u).undef.abfd = abfd;\n      h->field_0x18 = 1;\n      return;\n    }" if (parenthesized_expression "(h->field_0x18 == '\0')" ( (binary_expression "h->field_0x18 == '\0'" (field_expression "h->field_0x18" identifier -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      (h->u).undef.abfd = abfd;\n      h->field_0x18 = 1;\n      return;\n    }" { (expression_statement "(h->u).undef.abfd = abfd;" (assignment_expression "(h->u).undef.abfd = abfd" (field_expression "(h->u).undef.abfd" (field_expression "(h->u).undef" (parenthesized_expression "(h->u)" ( (field_expression "h->u" identifier -> field_identifier) )) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "h->field_0x18 = 1;" (assignment_expression "h->field_0x18 = 1" (field_expression "h->field_0x18" identifier -> field_identifier) = number_literal) ;) (return_statement "return;" return ;) })) })) (return_statement "return;" return ;) })))
(translation_unit "void FUN_00120de0(undefined8 param_1,long param_2,undefined4 param_3,undefined8 param_4,\n                 undefined8 param_5,undefined8 param_6)\n\n{\n  undefined8 uVar1;\n  undefined8 uVar2;\n  \n  if (DAT_00225d10 != 0) {\n    uVar1 = *(undefined8 *)(param_2 + 8);\n    uVar2 = dcgettext(0,"%P: warning: global constructor %s used\n",5);\n    FUN_001261f0(uVar2,uVar1);\n  }\n  if (DAT_00225d0c != 0) {\n    FUN_0011f930(param_2,param_3,0,param_5,param_6);\n    if (*(char *)(param_2 + 0x18) == '\0') {\n      *(undefined8 *)(param_2 + 0x28) = param_4;\n      *(undefined1 *)(param_2 + 0x18) = 1;\n      return;\n    }\n  }\n  return;\n}\n\n" (function_definition "void FUN_00120de0(undefined8 param_1,long param_2,undefined4 param_3,undefined8 param_4,\n                 undefined8 param_5,undefined8 param_6)\n\n{\n  undefined8 uVar1;\n  undefined8 uVar2;\n  \n  if (DAT_00225d10 != 0) {\n    uVar1 = *(undefined8 *)(param_2 + 8);\n    uVar2 = dcgettext(0,"%P: warning: global constructor %s used\n",5);\n    FUN_001261f0(uVar2,uVar1);\n  }\n  if (DAT_00225d0c != 0) {\n    FUN_0011f930(param_2,param_3,0,param_5,param_6);\n    if (*(char *)(param_2 + 0x18) == '\0') {\n      *(undefined8 *)(param_2 + 0x28) = param_4;\n      *(undefined1 *)(param_2 + 0x18) = 1;\n      return;\n    }\n  }\n  return;\n}" primitive_type (function_declarator "FUN_00120de0(undefined8 param_1,long param_2,undefined4 param_3,undefined8 param_4,\n                 undefined8 param_5,undefined8 param_6)" identifier (parameter_list "(undefined8 param_1,long param_2,undefined4 param_3,undefined8 param_4,\n                 undefined8 param_5,undefined8 param_6)" ( (parameter_declaration "undefined8 param_1" type_identifier identifier) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "undefined8 param_4" type_identifier identifier) , (parameter_declaration "undefined8 param_5" type_identifier identifier) , (parameter_declaration "undefined8 param_6" type_identifier identifier) ))) (compound_statement "{\n  undefined8 uVar1;\n  undefined8 uVar2;\n  \n  if (DAT_00225d10 != 0) {\n    uVar1 = *(undefined8 *)(param_2 + 8);\n    uVar2 = dcgettext(0,"%P: warning: global constructor %s used\n",5);\n    FUN_001261f0(uVar2,uVar1);\n  }\n  if (DAT_00225d0c != 0) {\n    FUN_0011f930(param_2,param_3,0,param_5,param_6);\n    if (*(char *)(param_2 + 0x18) == '\0') {\n      *(undefined8 *)(param_2 + 0x28) = param_4;\n      *(undefined1 *)(param_2 + 0x18) = 1;\n      return;\n    }\n  }\n  return;\n}" { (declaration "undefined8 uVar1;" type_identifier identifier ;) (declaration "undefined8 uVar2;" type_identifier identifier ;) (if_statement "if (DAT_00225d10 != 0) {\n    uVar1 = *(undefined8 *)(param_2 + 8);\n    uVar2 = dcgettext(0,"%P: warning: global constructor %s used\n",5);\n    FUN_001261f0(uVar2,uVar1);\n  }" if (parenthesized_expression "(DAT_00225d10 != 0)" ( (binary_expression "DAT_00225d10 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar1 = *(undefined8 *)(param_2 + 8);\n    uVar2 = dcgettext(0,"%P: warning: global constructor %s used\n",5);\n    FUN_001261f0(uVar2,uVar1);\n  }" { (expression_statement "uVar1 = *(undefined8 *)(param_2 + 8);" (assignment_expression "uVar1 = *(undefined8 *)(param_2 + 8)" identifier = (pointer_expression "*(undefined8 *)(param_2 + 8)" * (cast_expression "(undefined8 *)(param_2 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) ))))) ;) (expression_statement "uVar2 = dcgettext(0,"%P: warning: global constructor %s used\n",5);" (assignment_expression "uVar2 = dcgettext(0,"%P: warning: global constructor %s used\n",5)" identifier = (call_expression "dcgettext(0,"%P: warning: global constructor %s used\n",5)" identifier (argument_list "(0,"%P: warning: global constructor %s used\n",5)" ( number_literal , (string_literal ""%P: warning: global constructor %s used\n"" " string_content escape_sequence ") , number_literal )))) ;) (expression_statement "FUN_001261f0(uVar2,uVar1);" (call_expression "FUN_001261f0(uVar2,uVar1)" identifier (argument_list "(uVar2,uVar1)" ( identifier , identifier ))) ;) })) (if_statement "if (DAT_00225d0c != 0) {\n    FUN_0011f930(param_2,param_3,0,param_5,param_6);\n    if (*(char *)(param_2 + 0x18) == '\0') {\n      *(undefined8 *)(param_2 + 0x28) = param_4;\n      *(undefined1 *)(param_2 + 0x18) = 1;\n      return;\n    }\n  }" if (parenthesized_expression "(DAT_00225d0c != 0)" ( (binary_expression "DAT_00225d0c != 0" identifier != number_literal) )) (compound_statement "{\n    FUN_0011f930(param_2,param_3,0,param_5,param_6);\n    if (*(char *)(param_2 + 0x18) == '\0') {\n      *(undefined8 *)(param_2 + 0x28) = param_4;\n      *(undefined1 *)(param_2 + 0x18) = 1;\n      return;\n    }\n  }" { (expression_statement "FUN_0011f930(param_2,param_3,0,param_5,param_6);" (call_expression "FUN_0011f930(param_2,param_3,0,param_5,param_6)" identifier (argument_list "(param_2,param_3,0,param_5,param_6)" ( identifier , identifier , number_literal , identifier , identifier ))) ;) (if_statement "if (*(char *)(param_2 + 0x18) == '\0') {\n      *(undefined8 *)(param_2 + 0x28) = param_4;\n      *(undefined1 *)(param_2 + 0x18) = 1;\n      return;\n    }" if (parenthesized_expression "(*(char *)(param_2 + 0x18) == '\0')" ( (binary_expression "*(char *)(param_2 + 0x18) == '\0'" (pointer_expression "*(char *)(param_2 + 0x18)" * (cast_expression "(char *)(param_2 + 0x18)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x18)" ( (binary_expression "param_2 + 0x18" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      *(undefined8 *)(param_2 + 0x28) = param_4;\n      *(undefined1 *)(param_2 + 0x18) = 1;\n      return;\n    }" { (expression_statement "*(undefined8 *)(param_2 + 0x28) = param_4;" (assignment_expression "*(undefined8 *)(param_2 + 0x28) = param_4" (pointer_expression "*(undefined8 *)(param_2 + 0x28)" * (cast_expression "(undefined8 *)(param_2 + 0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x28)" ( (binary_expression "param_2 + 0x28" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 *)(param_2 + 0x18) = 1;" (assignment_expression "*(undefined1 *)(param_2 + 0x18) = 1" (pointer_expression "*(undefined1 *)(param_2 + 0x18)" * (cast_expression "(undefined1 *)(param_2 + 0x18)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x18)" ( (binary_expression "param_2 + 0x18" identifier + number_literal) )))) = number_literal) ;) (return_statement "return;" return ;) })) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence ") , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , LIT , IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (return_statement return ;) })) })) (return_statement return ;) })))
(function_definition "void FUN_00120de0(undefined8 param_1,long param_2,undefined4 param_3,undefined8 param_4,\n                 undefined8 param_5,undefined8 param_6)\n\n{\n  undefined8 uVar1;\n  undefined8 uVar2;\n  \n  if (DAT_00225d10 != 0) {\n    uVar1 = *(undefined8 *)(param_2 + 8);\n    uVar2 = dcgettext(0,"%P: warning: global constructor %s used\n",5);\n    FUN_001261f0(uVar2,uVar1);\n  }\n  if (DAT_00225d0c != 0) {\n    FUN_0011f930(param_2,param_3,0,param_5,param_6);\n    if (*(char *)(param_2 + 0x18) == '\0') {\n      *(undefined8 *)(param_2 + 0x28) = param_4;\n      *(undefined1 *)(param_2 + 0x18) = 1;\n      return;\n    }\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00120de0(undefined8 param_1,long param_2,undefined4 param_3,undefined8 param_4,\n                 undefined8 param_5,undefined8 param_6)" (identifier "FUN_00120de0") (parameter_list "(undefined8 param_1,long param_2,undefined4 param_3,undefined8 param_4,\n                 undefined8 param_5,undefined8 param_6)" (( "(") (parameter_declaration "undefined8 param_1" (type_identifier "undefined8") (identifier "param_1")) (, ",") (parameter_declaration "long param_2" (sized_type_specifier "long" (long "long")) (identifier "param_2")) (, ",") (parameter_declaration "undefined4 param_3" (type_identifier "undefined4") (identifier "param_3")) (, ",") (parameter_declaration "undefined8 param_4" (type_identifier "undefined8") (identifier "param_4")) (, ",") (parameter_declaration "undefined8 param_5" (type_identifier "undefined8") (identifier "param_5")) (, ",") (parameter_declaration "undefined8 param_6" (type_identifier "undefined8") (identifier "param_6")) () ")"))) (compound_statement "{\n  undefined8 uVar1;\n  undefined8 uVar2;\n  \n  if (DAT_00225d10 != 0) {\n    uVar1 = *(undefined8 *)(param_2 + 8);\n    uVar2 = dcgettext(0,"%P: warning: global constructor %s used\n",5);\n    FUN_001261f0(uVar2,uVar1);\n  }\n  if (DAT_00225d0c != 0) {\n    FUN_0011f930(param_2,param_3,0,param_5,param_6);\n    if (*(char *)(param_2 + 0x18) == '\0') {\n      *(undefined8 *)(param_2 + 0x28) = param_4;\n      *(undefined1 *)(param_2 + 0x18) = 1;\n      return;\n    }\n  }\n  return;\n}" ({ "{") (declaration "undefined8 uVar1;" (type_identifier "undefined8") (identifier "uVar1") (; ";")) (declaration "undefined8 uVar2;" (type_identifier "undefined8") (identifier "uVar2") (; ";")) (if_statement "if (DAT_00225d10 != 0) {\n    uVar1 = *(undefined8 *)(param_2 + 8);\n    uVar2 = dcgettext(0,"%P: warning: global constructor %s used\n",5);\n    FUN_001261f0(uVar2,uVar1);\n  }" (if "if") (parenthesized_expression "(DAT_00225d10 != 0)" (( "(") (binary_expression "DAT_00225d10 != 0" (identifier "DAT_00225d10") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    uVar1 = *(undefined8 *)(param_2 + 8);\n    uVar2 = dcgettext(0,"%P: warning: global constructor %s used\n",5);\n    FUN_001261f0(uVar2,uVar1);\n  }" ({ "{") (expression_statement "uVar1 = *(undefined8 *)(param_2 + 8);" (assignment_expression "uVar1 = *(undefined8 *)(param_2 + 8)" (identifier "uVar1") (= "=") (pointer_expression "*(undefined8 *)(param_2 + 8)" (* "*") (cast_expression "(undefined8 *)(param_2 + 8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 8)" (( "(") (binary_expression "param_2 + 8" (identifier "param_2") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "uVar2 = dcgettext(0,"%P: warning: global constructor %s used\n",5);" (assignment_expression "uVar2 = dcgettext(0,"%P: warning: global constructor %s used\n",5)" (identifier "uVar2") (= "=") (call_expression "dcgettext(0,"%P: warning: global constructor %s used\n",5)" (identifier "dcgettext") (argument_list "(0,"%P: warning: global constructor %s used\n",5)" (( "(") (number_literal "0") (, ",") (string_literal ""%P: warning: global constructor %s used\n"" (" """) (string_content "%P: warning: global constructor %s used") (escape_sequence "\n") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "FUN_001261f0(uVar2,uVar1);" (call_expression "FUN_001261f0(uVar2,uVar1)" (identifier "FUN_001261f0") (argument_list "(uVar2,uVar1)" (( "(") (identifier "uVar2") (, ",") (identifier "uVar1") () ")"))) (; ";")) (} "}"))) (if_statement "if (DAT_00225d0c != 0) {\n    FUN_0011f930(param_2,param_3,0,param_5,param_6);\n    if (*(char *)(param_2 + 0x18) == '\0') {\n      *(undefined8 *)(param_2 + 0x28) = param_4;\n      *(undefined1 *)(param_2 + 0x18) = 1;\n      return;\n    }\n  }" (if "if") (parenthesized_expression "(DAT_00225d0c != 0)" (( "(") (binary_expression "DAT_00225d0c != 0" (identifier "DAT_00225d0c") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    FUN_0011f930(param_2,param_3,0,param_5,param_6);\n    if (*(char *)(param_2 + 0x18) == '\0') {\n      *(undefined8 *)(param_2 + 0x28) = param_4;\n      *(undefined1 *)(param_2 + 0x18) = 1;\n      return;\n    }\n  }" ({ "{") (expression_statement "FUN_0011f930(param_2,param_3,0,param_5,param_6);" (call_expression "FUN_0011f930(param_2,param_3,0,param_5,param_6)" (identifier "FUN_0011f930") (argument_list "(param_2,param_3,0,param_5,param_6)" (( "(") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (number_literal "0") (, ",") (identifier "param_5") (, ",") (identifier "param_6") () ")"))) (; ";")) (if_statement "if (*(char *)(param_2 + 0x18) == '\0') {\n      *(undefined8 *)(param_2 + 0x28) = param_4;\n      *(undefined1 *)(param_2 + 0x18) = 1;\n      return;\n    }" (if "if") (parenthesized_expression "(*(char *)(param_2 + 0x18) == '\0')" (( "(") (binary_expression "*(char *)(param_2 + 0x18) == '\0'" (pointer_expression "*(char *)(param_2 + 0x18)" (* "*") (cast_expression "(char *)(param_2 + 0x18)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x18)" (( "(") (binary_expression "param_2 + 0x18" (identifier "param_2") (+ "+") (number_literal "0x18")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      *(undefined8 *)(param_2 + 0x28) = param_4;\n      *(undefined1 *)(param_2 + 0x18) = 1;\n      return;\n    }" ({ "{") (expression_statement "*(undefined8 *)(param_2 + 0x28) = param_4;" (assignment_expression "*(undefined8 *)(param_2 + 0x28) = param_4" (pointer_expression "*(undefined8 *)(param_2 + 0x28)" (* "*") (cast_expression "(undefined8 *)(param_2 + 0x28)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x28)" (( "(") (binary_expression "param_2 + 0x28" (identifier "param_2") (+ "+") (number_literal "0x28")) () ")")))) (= "=") (identifier "param_4")) (; ";")) (expression_statement "*(undefined1 *)(param_2 + 0x18) = 1;" (assignment_expression "*(undefined1 *)(param_2 + 0x18) = 1" (pointer_expression "*(undefined1 *)(param_2 + 0x18)" (* "*") (cast_expression "(undefined1 *)(param_2 + 0x18)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x18)" (( "(") (binary_expression "param_2 + 0x18" (identifier "param_2") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (number_literal "1")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

void function_1(type_1 *info,type_2 *h,type_3 reloc,type_4 *abfd,
               type_5 *section,type_6 value)

{
  char *pcVar1;
  char *fmt;
  
  if (config.warn_constructors != 0) {
    pcVar1 = (h->root).string;
    fmt = (char *)var_1(0,"%P: warning: global constructor %s used\n",5);
    var_2(fmt,pcVar1);
  }
  if (config.build_constructors != 0) {
    var_3(h,reloc,(char *)0x0,section,value);
    if (h->field_0x18 == '\0') {
      (h->u).undef.abfd = abfd;
      h->field_0x18 = 1;
      return;
    }
  }
  return;
}


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

void MASKED(undefined8 param_1,long param_2,undefined4 param_3,undefined8 param_4,
                 undefined8 param_5,undefined8 param_6)

{
  undefined8 uVar1;
  undefined8 uVar2;
  
  if (DAT_00225d10 != 0) {
    uVar1 = *(undefined8 *)(param_2 + 8);
    uVar2 = dcgettext(0,"%P: warning: global constructor %s used\n",5);
    FUN_001261f0(uVar2,uVar1);
  }
  if (DAT_00225d0c != 0) {
    FUN_0011f930(param_2,param_3,0,param_5,param_6);
    if (*(char *)(param_2 + 0x18) == '\0') {
      *(undefined8 *)(param_2 + 0x28) = param_4;
      *(undefined1 *)(param_2 + 0x18) = 1;
      return;
    }
  }
  return;
}

