
void constructor_callback
               (bfd_link_info *info,bfd_boolean constructor,char *name,bfd *abfd,asection *section,
               bfd_vma value)

{
  char cVar1;
  long lVar2;
  bfd_link_hash_entry *h;
  char *pcVar3;
  char set_name [15];
  
  if (config.warn_constructors != 0) {
    pcVar3 = (char *)dcgettext(0,"%P: warning: global constructor %s used\n",5);
    einfo(pcVar3,name);
  }
  if (config.build_constructors == 0) {
    return;
  }
  lVar2 = bfd_reloc_type_lookup(info->output_bfd,0x22b);
  if (lVar2 == 0) {
    if ((undefined1  [232])((undefined1  [232])*info & (undefined1  [232])0x3) !=
        (undefined1  [232])0x2) {
      lVar2 = bfd_reloc_type_lookup(abfd,0x22b);
      if (lVar2 != 0) goto LAB_00122e37;
    }
    pcVar3 = (char *)dcgettext(0,"%F%P: BFD backend error: BFD_RELOC_CTOR unsupported\n",5);
    einfo(pcVar3);
  }
LAB_00122e37:
  cVar1 = abfd->xvec->symbol_leading_char;
  if (cVar1 == '\0') {
    pcVar3 = set_name;
  }
  else {
    pcVar3 = set_name + 1;
    set_name[0] = cVar1;
  }
  if (constructor == 0) {
    builtin_strncpy(pcVar3,"__DTOR_LIST__",0xe);
  }
  else {
    builtin_strncpy(pcVar3,"__CTOR_LIST__",0xe);
  }
  h = (bfd_link_hash_entry *)bfd_link_hash_lookup(info->hash,set_name,1,1,1);
  if (h == (bfd_link_hash_entry *)0x0) {
    pcVar3 = (char *)dcgettext(0,"%F%P: bfd_link_hash_lookup failed: %E\n",5);
    einfo(pcVar3);
  }
  if (h->field_0x18 == '\0') {
    h->field_0x18 = 1;
    (h->u).undef.abfd = abfd;
  }
  ldctor_add_set_entry(h,BFD_RELOC_CTOR,name,section,value);
  return;
}



void FUN_00122dd0(byte *param_1,int param_2,undefined8 param_3,long param_4,undefined8 param_5,
                 undefined8 param_6)

{
  char cVar1;
  long lVar2;
  char *pcVar3;
  undefined8 uVar4;
  char local_47;
  char local_46 [22];
  
  if (DAT_002a6950 != 0) {
    uVar4 = dcgettext(0,"%P: warning: global constructor %s used\n",5);
    FUN_001283c0(uVar4,param_3);
  }
  if (DAT_002a694c == 0) {
    return;
  }
  lVar2 = bfd_reloc_type_lookup(*(undefined8 *)(param_1 + 0x50),0x22b);
  if (lVar2 == 0) {
    if ((*param_1 & 3) != 2) {
      lVar2 = bfd_reloc_type_lookup(param_4,0x22b);
      if (lVar2 != 0) goto LAB_00122e37;
    }
    uVar4 = dcgettext(0,"%F%P: BFD backend error: BFD_RELOC_CTOR unsupported\n",5);
    FUN_001283c0(uVar4);
  }
LAB_00122e37:
  cVar1 = *(char *)(*(long *)(param_4 + 8) + 0x1c);
  if (cVar1 == '\0') {
    pcVar3 = &local_47;
  }
  else {
    pcVar3 = local_46;
    local_47 = cVar1;
  }
  if (param_2 == 0) {
    builtin_strncpy(pcVar3,"__DTOR_LIST__",0xe);
  }
  else {
    builtin_strncpy(pcVar3,"__CTOR_LIST__",0xe);
  }
  lVar2 = bfd_link_hash_lookup(*(undefined8 *)(param_1 + 0x28),&local_47,1,1,1);
  if (lVar2 == 0) {
    uVar4 = dcgettext(0,"%F%P: bfd_link_hash_lookup failed: %E\n",5);
    FUN_001283c0(uVar4);
  }
  if (*(char *)(lVar2 + 0x18) == '\0') {
    *(undefined1 *)(lVar2 + 0x18) = 1;
    *(long *)(lVar2 + 0x28) = param_4;
  }
  FUN_00121b00(lVar2,0x22b,param_3,param_5,param_6);
  return;
}


PUSH R15
MOV R15D,ESI
PUSH R14
MOV R14,R9
PUSH R13
MOV R13,R8
PUSH R12
MOV R12,RDX
PUSH RBP
MOV RBP,RCX
PUSH RBX
MOV RBX,RDI
SUB RSP,0x18
MOV EDI,dword ptr [0x002a6950]
TEST EDI,EDI
JNZ 0x00122ed8
MOV ESI,dword ptr [0x002a694c]
TEST ESI,ESI
JNZ 0x00122e20
ADD RSP,0x18
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV RDI,qword ptr [RBX + 0x50]
MOV ESI,0x22b
CALL 0x0010c3e0
TEST RAX,RAX
JZ 0x00122f38
MOV RAX,qword ptr [RBP + 0x8]
MOVZX EAX,byte ptr [RAX + 0x1c]
TEST AL,AL
JZ 0x00122f28
LEA RSI,[RSP + 0x1]
MOV byte ptr [RSP + 0x1],AL
LEA RAX,[RSI + 0x1]
TEST R15D,R15D
JZ 0x00122f00
MOV RCX,0x4c5f524f54435f5f
MOV dword ptr [RAX + 0x8],0x5f545349
MOV qword ptr [RAX],RCX
MOV ECX,0x5f
MOV word ptr [RAX + 0xc],CX
MOV RDI,qword ptr [RBX + 0x28]
MOV R8D,0x1
MOV ECX,0x1
MOV EDX,0x1
CALL 0x0010c630
MOV RBX,RAX
TEST RAX,RAX
JZ 0x00122f80
CMP byte ptr [RBX + 0x18],0x0
JNZ 0x00122ead
MOV byte ptr [RBX + 0x18],0x1
MOV qword ptr [RBX + 0x28],RBP
MOV R8,R14
MOV RCX,R13
MOV RDX,R12
MOV RDI,RBX
MOV ESI,0x22b
CALL 0x00121b00
ADD RSP,0x18
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
XOR EDI,EDI
MOV EDX,0x5
LEA RSI,[0x162718]
CALL 0x0010c350
MOV RSI,R12
MOV RDI,RAX
XOR EAX,EAX
CALL 0x001283c0
JMP 0x00122dfe
MOV RCX,0x4c5f524f54445f5f
MOV EDX,0x5f
MOV dword ptr [RAX + 0x8],0x5f545349
MOV qword ptr [RAX],RCX
MOV word ptr [RAX + 0xc],DX
JMP 0x00122e7a
LEA RSI,[RSP + 0x1]
MOV RAX,RSI
JMP 0x00122e54
MOVZX EAX,byte ptr [RBX]
AND EAX,0x3
CMP AL,0x2
JZ 0x00122f58
MOV ESI,0x22b
MOV RDI,RBP
CALL 0x0010c3e0
TEST RAX,RAX
JNZ 0x00122e37
XOR EDI,EDI
MOV EDX,0x5
LEA RSI,[0x162748]
CALL 0x0010c350
MOV RDI,RAX
XOR EAX,EAX
CALL 0x001283c0
JMP 0x00122e37
XOR EDI,EDI
MOV EDX,0x5
LEA RSI,[0x161420]
CALL 0x0010c350
MOV RDI,RAX
XOR EAX,EAX
CALL 0x001283c0
JMP 0x00122e9f
(translation_unit "void FUN_00122dd0(byte *param_1,int param_2,undefined8 param_3,long param_4,undefined8 param_5,\n                 undefined8 param_6)\n\n{\n  char cVar1;\n  long lVar2;\n  char *pcVar3;\n  undefined8 uVar4;\n  char local_47;\n  char local_46 [22];\n  \n  if (DAT_002a6950 != 0) {\n    uVar4 = dcgettext(0,"%P: warning: global constructor %s used\n",5);\n    FUN_001283c0(uVar4,param_3);\n  }\n  if (DAT_002a694c == 0) {\n    return;\n  }\n  lVar2 = bfd_reloc_type_lookup(*(undefined8 *)(param_1 + 0x50),0x22b);\n  if (lVar2 == 0) {\n    if ((*param_1 & 3) != 2) {\n      lVar2 = bfd_reloc_type_lookup(param_4,0x22b);\n      if (lVar2 != 0) goto LAB_00122e37;\n    }\n    uVar4 = dcgettext(0,"%F%P: BFD backend error: BFD_RELOC_CTOR unsupported\n",5);\n    FUN_001283c0(uVar4);\n  }\nLAB_00122e37:\n  cVar1 = *(char *)(*(long *)(param_4 + 8) + 0x1c);\n  if (cVar1 == '\0') {\n    pcVar3 = &local_47;\n  }\n  else {\n    pcVar3 = local_46;\n    local_47 = cVar1;\n  }\n  if (param_2 == 0) {\n    builtin_strncpy(pcVar3,"__DTOR_LIST__",0xe);\n  }\n  else {\n    builtin_strncpy(pcVar3,"__CTOR_LIST__",0xe);\n  }\n  lVar2 = bfd_link_hash_lookup(*(undefined8 *)(param_1 + 0x28),&local_47,1,1,1);\n  if (lVar2 == 0) {\n    uVar4 = dcgettext(0,"%F%P: bfd_link_hash_lookup failed: %E\n",5);\n    FUN_001283c0(uVar4);\n  }\n  if (*(char *)(lVar2 + 0x18) == '\0') {\n    *(undefined1 *)(lVar2 + 0x18) = 1;\n    *(long *)(lVar2 + 0x28) = param_4;\n  }\n  FUN_00121b00(lVar2,0x22b,param_3,param_5,param_6);\n  return;\n}\n\n" (function_definition "void FUN_00122dd0(byte *param_1,int param_2,undefined8 param_3,long param_4,undefined8 param_5,\n                 undefined8 param_6)\n\n{\n  char cVar1;\n  long lVar2;\n  char *pcVar3;\n  undefined8 uVar4;\n  char local_47;\n  char local_46 [22];\n  \n  if (DAT_002a6950 != 0) {\n    uVar4 = dcgettext(0,"%P: warning: global constructor %s used\n",5);\n    FUN_001283c0(uVar4,param_3);\n  }\n  if (DAT_002a694c == 0) {\n    return;\n  }\n  lVar2 = bfd_reloc_type_lookup(*(undefined8 *)(param_1 + 0x50),0x22b);\n  if (lVar2 == 0) {\n    if ((*param_1 & 3) != 2) {\n      lVar2 = bfd_reloc_type_lookup(param_4,0x22b);\n      if (lVar2 != 0) goto LAB_00122e37;\n    }\n    uVar4 = dcgettext(0,"%F%P: BFD backend error: BFD_RELOC_CTOR unsupported\n",5);\n    FUN_001283c0(uVar4);\n  }\nLAB_00122e37:\n  cVar1 = *(char *)(*(long *)(param_4 + 8) + 0x1c);\n  if (cVar1 == '\0') {\n    pcVar3 = &local_47;\n  }\n  else {\n    pcVar3 = local_46;\n    local_47 = cVar1;\n  }\n  if (param_2 == 0) {\n    builtin_strncpy(pcVar3,"__DTOR_LIST__",0xe);\n  }\n  else {\n    builtin_strncpy(pcVar3,"__CTOR_LIST__",0xe);\n  }\n  lVar2 = bfd_link_hash_lookup(*(undefined8 *)(param_1 + 0x28),&local_47,1,1,1);\n  if (lVar2 == 0) {\n    uVar4 = dcgettext(0,"%F%P: bfd_link_hash_lookup failed: %E\n",5);\n    FUN_001283c0(uVar4);\n  }\n  if (*(char *)(lVar2 + 0x18) == '\0') {\n    *(undefined1 *)(lVar2 + 0x18) = 1;\n    *(long *)(lVar2 + 0x28) = param_4;\n  }\n  FUN_00121b00(lVar2,0x22b,param_3,param_5,param_6);\n  return;\n}" primitive_type (function_declarator "FUN_00122dd0(byte *param_1,int param_2,undefined8 param_3,long param_4,undefined8 param_5,\n                 undefined8 param_6)" identifier (parameter_list "(byte *param_1,int param_2,undefined8 param_3,long param_4,undefined8 param_5,\n                 undefined8 param_6)" ( (parameter_declaration "byte *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "undefined8 param_3" type_identifier identifier) , (parameter_declaration "long param_4" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined8 param_5" type_identifier identifier) , (parameter_declaration "undefined8 param_6" type_identifier identifier) ))) (compound_statement "{\n  char cVar1;\n  long lVar2;\n  char *pcVar3;\n  undefined8 uVar4;\n  char local_47;\n  char local_46 [22];\n  \n  if (DAT_002a6950 != 0) {\n    uVar4 = dcgettext(0,"%P: warning: global constructor %s used\n",5);\n    FUN_001283c0(uVar4,param_3);\n  }\n  if (DAT_002a694c == 0) {\n    return;\n  }\n  lVar2 = bfd_reloc_type_lookup(*(undefined8 *)(param_1 + 0x50),0x22b);\n  if (lVar2 == 0) {\n    if ((*param_1 & 3) != 2) {\n      lVar2 = bfd_reloc_type_lookup(param_4,0x22b);\n      if (lVar2 != 0) goto LAB_00122e37;\n    }\n    uVar4 = dcgettext(0,"%F%P: BFD backend error: BFD_RELOC_CTOR unsupported\n",5);\n    FUN_001283c0(uVar4);\n  }\nLAB_00122e37:\n  cVar1 = *(char *)(*(long *)(param_4 + 8) + 0x1c);\n  if (cVar1 == '\0') {\n    pcVar3 = &local_47;\n  }\n  else {\n    pcVar3 = local_46;\n    local_47 = cVar1;\n  }\n  if (param_2 == 0) {\n    builtin_strncpy(pcVar3,"__DTOR_LIST__",0xe);\n  }\n  else {\n    builtin_strncpy(pcVar3,"__CTOR_LIST__",0xe);\n  }\n  lVar2 = bfd_link_hash_lookup(*(undefined8 *)(param_1 + 0x28),&local_47,1,1,1);\n  if (lVar2 == 0) {\n    uVar4 = dcgettext(0,"%F%P: bfd_link_hash_lookup failed: %E\n",5);\n    FUN_001283c0(uVar4);\n  }\n  if (*(char *)(lVar2 + 0x18) == '\0') {\n    *(undefined1 *)(lVar2 + 0x18) = 1;\n    *(long *)(lVar2 + 0x28) = param_4;\n  }\n  FUN_00121b00(lVar2,0x22b,param_3,param_5,param_6);\n  return;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "undefined8 uVar4;" type_identifier identifier ;) (declaration "char local_47;" primitive_type identifier ;) (declaration "char local_46 [22];" primitive_type (array_declarator "local_46 [22]" identifier [ number_literal ]) ;) (if_statement "if (DAT_002a6950 != 0) {\n    uVar4 = dcgettext(0,"%P: warning: global constructor %s used\n",5);\n    FUN_001283c0(uVar4,param_3);\n  }" if (parenthesized_expression "(DAT_002a6950 != 0)" ( (binary_expression "DAT_002a6950 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar4 = dcgettext(0,"%P: warning: global constructor %s used\n",5);\n    FUN_001283c0(uVar4,param_3);\n  }" { (expression_statement "uVar4 = dcgettext(0,"%P: warning: global constructor %s used\n",5);" (assignment_expression "uVar4 = 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_001283c0(uVar4,param_3);" (call_expression "FUN_001283c0(uVar4,param_3)" identifier (argument_list "(uVar4,param_3)" ( identifier , identifier ))) ;) })) (if_statement "if (DAT_002a694c == 0) {\n    return;\n  }" if (parenthesized_expression "(DAT_002a694c == 0)" ( (binary_expression "DAT_002a694c == 0" identifier == number_literal) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "lVar2 = bfd_reloc_type_lookup(*(undefined8 *)(param_1 + 0x50),0x22b);" (assignment_expression "lVar2 = bfd_reloc_type_lookup(*(undefined8 *)(param_1 + 0x50),0x22b)" identifier = (call_expression "bfd_reloc_type_lookup(*(undefined8 *)(param_1 + 0x50),0x22b)" identifier (argument_list "(*(undefined8 *)(param_1 + 0x50),0x22b)" ( (pointer_expression "*(undefined8 *)(param_1 + 0x50)" * (cast_expression "(undefined8 *)(param_1 + 0x50)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) )))) , number_literal )))) ;) (if_statement "if (lVar2 == 0) {\n    if ((*param_1 & 3) != 2) {\n      lVar2 = bfd_reloc_type_lookup(param_4,0x22b);\n      if (lVar2 != 0) goto LAB_00122e37;\n    }\n    uVar4 = dcgettext(0,"%F%P: BFD backend error: BFD_RELOC_CTOR unsupported\n",5);\n    FUN_001283c0(uVar4);\n  }" if (parenthesized_expression "(lVar2 == 0)" ( (binary_expression "lVar2 == 0" identifier == number_literal) )) (compound_statement "{\n    if ((*param_1 & 3) != 2) {\n      lVar2 = bfd_reloc_type_lookup(param_4,0x22b);\n      if (lVar2 != 0) goto LAB_00122e37;\n    }\n    uVar4 = dcgettext(0,"%F%P: BFD backend error: BFD_RELOC_CTOR unsupported\n",5);\n    FUN_001283c0(uVar4);\n  }" { (if_statement "if ((*param_1 & 3) != 2) {\n      lVar2 = bfd_reloc_type_lookup(param_4,0x22b);\n      if (lVar2 != 0) goto LAB_00122e37;\n    }" if (parenthesized_expression "((*param_1 & 3) != 2)" ( (binary_expression "(*param_1 & 3) != 2" (parenthesized_expression "(*param_1 & 3)" ( (binary_expression "*param_1 & 3" (pointer_expression "*param_1" * identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n      lVar2 = bfd_reloc_type_lookup(param_4,0x22b);\n      if (lVar2 != 0) goto LAB_00122e37;\n    }" { (expression_statement "lVar2 = bfd_reloc_type_lookup(param_4,0x22b);" (assignment_expression "lVar2 = bfd_reloc_type_lookup(param_4,0x22b)" identifier = (call_expression "bfd_reloc_type_lookup(param_4,0x22b)" identifier (argument_list "(param_4,0x22b)" ( identifier , number_literal )))) ;) (if_statement "if (lVar2 != 0) goto LAB_00122e37;" if (parenthesized_expression "(lVar2 != 0)" ( (binary_expression "lVar2 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00122e37;" goto statement_identifier ;)) })) (expression_statement "uVar4 = dcgettext(0,"%F%P: BFD backend error: BFD_RELOC_CTOR unsupported\n",5);" (assignment_expression "uVar4 = dcgettext(0,"%F%P: BFD backend error: BFD_RELOC_CTOR unsupported\n",5)" identifier = (call_expression "dcgettext(0,"%F%P: BFD backend error: BFD_RELOC_CTOR unsupported\n",5)" identifier (argument_list "(0,"%F%P: BFD backend error: BFD_RELOC_CTOR unsupported\n",5)" ( number_literal , (string_literal ""%F%P: BFD backend error: BFD_RELOC_CTOR unsupported\n"" " string_content escape_sequence ") , number_literal )))) ;) (expression_statement "FUN_001283c0(uVar4);" (call_expression "FUN_001283c0(uVar4)" identifier (argument_list "(uVar4)" ( identifier ))) ;) })) (labeled_statement "LAB_00122e37:\n  cVar1 = *(char *)(*(long *)(param_4 + 8) + 0x1c);" statement_identifier : (expression_statement "cVar1 = *(char *)(*(long *)(param_4 + 8) + 0x1c);" (assignment_expression "cVar1 = *(char *)(*(long *)(param_4 + 8) + 0x1c)" identifier = (pointer_expression "*(char *)(*(long *)(param_4 + 8) + 0x1c)" * (cast_expression "(char *)(*(long *)(param_4 + 8) + 0x1c)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_4 + 8) + 0x1c)" ( (binary_expression "*(long *)(param_4 + 8) + 0x1c" (pointer_expression "*(long *)(param_4 + 8)" * (cast_expression "(long *)(param_4 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 8)" ( (binary_expression "param_4 + 8" identifier + number_literal) )))) + number_literal) ))))) ;)) (if_statement "if (cVar1 == '\0') {\n    pcVar3 = &local_47;\n  }\n  else {\n    pcVar3 = local_46;\n    local_47 = cVar1;\n  }" if (parenthesized_expression "(cVar1 == '\0')" ( (binary_expression "cVar1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    pcVar3 = &local_47;\n  }" { (expression_statement "pcVar3 = &local_47;" (assignment_expression "pcVar3 = &local_47" identifier = (pointer_expression "&local_47" & identifier)) ;) }) (else_clause "else {\n    pcVar3 = local_46;\n    local_47 = cVar1;\n  }" else (compound_statement "{\n    pcVar3 = local_46;\n    local_47 = cVar1;\n  }" { (expression_statement "pcVar3 = local_46;" (assignment_expression "pcVar3 = local_46" identifier = identifier) ;) (expression_statement "local_47 = cVar1;" (assignment_expression "local_47 = cVar1" identifier = identifier) ;) }))) (if_statement "if (param_2 == 0) {\n    builtin_strncpy(pcVar3,"__DTOR_LIST__",0xe);\n  }\n  else {\n    builtin_strncpy(pcVar3,"__CTOR_LIST__",0xe);\n  }" if (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) (compound_statement "{\n    builtin_strncpy(pcVar3,"__DTOR_LIST__",0xe);\n  }" { (expression_statement "builtin_strncpy(pcVar3,"__DTOR_LIST__",0xe);" (call_expression "builtin_strncpy(pcVar3,"__DTOR_LIST__",0xe)" identifier (argument_list "(pcVar3,"__DTOR_LIST__",0xe)" ( identifier , (string_literal ""__DTOR_LIST__"" " string_content ") , number_literal ))) ;) }) (else_clause "else {\n    builtin_strncpy(pcVar3,"__CTOR_LIST__",0xe);\n  }" else (compound_statement "{\n    builtin_strncpy(pcVar3,"__CTOR_LIST__",0xe);\n  }" { (expression_statement "builtin_strncpy(pcVar3,"__CTOR_LIST__",0xe);" (call_expression "builtin_strncpy(pcVar3,"__CTOR_LIST__",0xe)" identifier (argument_list "(pcVar3,"__CTOR_LIST__",0xe)" ( identifier , (string_literal ""__CTOR_LIST__"" " string_content ") , number_literal ))) ;) }))) (expression_statement "lVar2 = bfd_link_hash_lookup(*(undefined8 *)(param_1 + 0x28),&local_47,1,1,1);" (assignment_expression "lVar2 = bfd_link_hash_lookup(*(undefined8 *)(param_1 + 0x28),&local_47,1,1,1)" identifier = (call_expression "bfd_link_hash_lookup(*(undefined8 *)(param_1 + 0x28),&local_47,1,1,1)" identifier (argument_list "(*(undefined8 *)(param_1 + 0x28),&local_47,1,1,1)" ( (pointer_expression "*(undefined8 *)(param_1 + 0x28)" * (cast_expression "(undefined8 *)(param_1 + 0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) , (pointer_expression "&local_47" & identifier) , number_literal , number_literal , number_literal )))) ;) (if_statement "if (lVar2 == 0) {\n    uVar4 = dcgettext(0,"%F%P: bfd_link_hash_lookup failed: %E\n",5);\n    FUN_001283c0(uVar4);\n  }" if (parenthesized_expression "(lVar2 == 0)" ( (binary_expression "lVar2 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar4 = dcgettext(0,"%F%P: bfd_link_hash_lookup failed: %E\n",5);\n    FUN_001283c0(uVar4);\n  }" { (expression_statement "uVar4 = dcgettext(0,"%F%P: bfd_link_hash_lookup failed: %E\n",5);" (assignment_expression "uVar4 = dcgettext(0,"%F%P: bfd_link_hash_lookup failed: %E\n",5)" identifier = (call_expression "dcgettext(0,"%F%P: bfd_link_hash_lookup failed: %E\n",5)" identifier (argument_list "(0,"%F%P: bfd_link_hash_lookup failed: %E\n",5)" ( number_literal , (string_literal ""%F%P: bfd_link_hash_lookup failed: %E\n"" " string_content escape_sequence ") , number_literal )))) ;) (expression_statement "FUN_001283c0(uVar4);" (call_expression "FUN_001283c0(uVar4)" identifier (argument_list "(uVar4)" ( identifier ))) ;) })) (if_statement "if (*(char *)(lVar2 + 0x18) == '\0') {\n    *(undefined1 *)(lVar2 + 0x18) = 1;\n    *(long *)(lVar2 + 0x28) = param_4;\n  }" if (parenthesized_expression "(*(char *)(lVar2 + 0x18) == '\0')" ( (binary_expression "*(char *)(lVar2 + 0x18) == '\0'" (pointer_expression "*(char *)(lVar2 + 0x18)" * (cast_expression "(char *)(lVar2 + 0x18)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x18)" ( (binary_expression "lVar2 + 0x18" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    *(undefined1 *)(lVar2 + 0x18) = 1;\n    *(long *)(lVar2 + 0x28) = param_4;\n  }" { (expression_statement "*(undefined1 *)(lVar2 + 0x18) = 1;" (assignment_expression "*(undefined1 *)(lVar2 + 0x18) = 1" (pointer_expression "*(undefined1 *)(lVar2 + 0x18)" * (cast_expression "(undefined1 *)(lVar2 + 0x18)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x18)" ( (binary_expression "lVar2 + 0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(long *)(lVar2 + 0x28) = param_4;" (assignment_expression "*(long *)(lVar2 + 0x28) = param_4" (pointer_expression "*(long *)(lVar2 + 0x28)" * (cast_expression "(long *)(lVar2 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x28)" ( (binary_expression "lVar2 + 0x28" identifier + number_literal) )))) = identifier) ;) })) (expression_statement "FUN_00121b00(lVar2,0x22b,param_3,param_5,param_6);" (call_expression "FUN_00121b00(lVar2,0x22b,param_3,param_5,param_6)" identifier (argument_list "(lVar2,0x22b,param_3,param_5,param_6)" ( identifier , number_literal , identifier , identifier , identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit "void constructor_callback\n               (bfd_link_info *info,bfd_boolean constructor,char *name,bfd *abfd,asection *section,\n               bfd_vma value)\n\n{\n  char cVar1;\n  long lVar2;\n  bfd_link_hash_entry *h;\n  char *pcVar3;\n  char set_name [15];\n  \n  if (config.warn_constructors != 0) {\n    pcVar3 = (char *)dcgettext(0,"%P: warning: global constructor %s used\n",5);\n    einfo(pcVar3,name);\n  }\n  if (config.build_constructors == 0) {\n    return;\n  }\n  lVar2 = bfd_reloc_type_lookup(info->output_bfd,0x22b);\n  if (lVar2 == 0) {\n    if ((undefined1  [232])((undefined1  [232])*info & (undefined1  [232])0x3) !=\n        (undefined1  [232])0x2) {\n      lVar2 = bfd_reloc_type_lookup(abfd,0x22b);\n      if (lVar2 != 0) goto LAB_00122e37;\n    }\n    pcVar3 = (char *)dcgettext(0,"%F%P: BFD backend error: BFD_RELOC_CTOR unsupported\n",5);\n    einfo(pcVar3);\n  }\nLAB_00122e37:\n  cVar1 = abfd->xvec->symbol_leading_char;\n  if (cVar1 == '\0') {\n    pcVar3 = set_name;\n  }\n  else {\n    pcVar3 = set_name + 1;\n    set_name[0] = cVar1;\n  }\n  if (constructor == 0) {\n    builtin_strncpy(pcVar3,"__DTOR_LIST__",0xe);\n  }\n  else {\n    builtin_strncpy(pcVar3,"__CTOR_LIST__",0xe);\n  }\n  h = (bfd_link_hash_entry *)bfd_link_hash_lookup(info->hash,set_name,1,1,1);\n  if (h == (bfd_link_hash_entry *)0x0) {\n    pcVar3 = (char *)dcgettext(0,"%F%P: bfd_link_hash_lookup failed: %E\n",5);\n    einfo(pcVar3);\n  }\n  if (h->field_0x18 == '\0') {\n    h->field_0x18 = 1;\n    (h->u).undef.abfd = abfd;\n  }\n  ldctor_add_set_entry(h,BFD_RELOC_CTOR,name,section,value);\n  return;\n}\n\n" (function_definition "void constructor_callback\n               (bfd_link_info *info,bfd_boolean constructor,char *name,bfd *abfd,asection *section,\n               bfd_vma value)\n\n{\n  char cVar1;\n  long lVar2;\n  bfd_link_hash_entry *h;\n  char *pcVar3;\n  char set_name [15];\n  \n  if (config.warn_constructors != 0) {\n    pcVar3 = (char *)dcgettext(0,"%P: warning: global constructor %s used\n",5);\n    einfo(pcVar3,name);\n  }\n  if (config.build_constructors == 0) {\n    return;\n  }\n  lVar2 = bfd_reloc_type_lookup(info->output_bfd,0x22b);\n  if (lVar2 == 0) {\n    if ((undefined1  [232])((undefined1  [232])*info & (undefined1  [232])0x3) !=\n        (undefined1  [232])0x2) {\n      lVar2 = bfd_reloc_type_lookup(abfd,0x22b);\n      if (lVar2 != 0) goto LAB_00122e37;\n    }\n    pcVar3 = (char *)dcgettext(0,"%F%P: BFD backend error: BFD_RELOC_CTOR unsupported\n",5);\n    einfo(pcVar3);\n  }\nLAB_00122e37:\n  cVar1 = abfd->xvec->symbol_leading_char;\n  if (cVar1 == '\0') {\n    pcVar3 = set_name;\n  }\n  else {\n    pcVar3 = set_name + 1;\n    set_name[0] = cVar1;\n  }\n  if (constructor == 0) {\n    builtin_strncpy(pcVar3,"__DTOR_LIST__",0xe);\n  }\n  else {\n    builtin_strncpy(pcVar3,"__CTOR_LIST__",0xe);\n  }\n  h = (bfd_link_hash_entry *)bfd_link_hash_lookup(info->hash,set_name,1,1,1);\n  if (h == (bfd_link_hash_entry *)0x0) {\n    pcVar3 = (char *)dcgettext(0,"%F%P: bfd_link_hash_lookup failed: %E\n",5);\n    einfo(pcVar3);\n  }\n  if (h->field_0x18 == '\0') {\n    h->field_0x18 = 1;\n    (h->u).undef.abfd = abfd;\n  }\n  ldctor_add_set_entry(h,BFD_RELOC_CTOR,name,section,value);\n  return;\n}" primitive_type (function_declarator "constructor_callback\n               (bfd_link_info *info,bfd_boolean constructor,char *name,bfd *abfd,asection *section,\n               bfd_vma value)" identifier (parameter_list "(bfd_link_info *info,bfd_boolean constructor,char *name,bfd *abfd,asection *section,\n               bfd_vma value)" ( (parameter_declaration "bfd_link_info *info" type_identifier (pointer_declarator "*info" * identifier)) , (parameter_declaration "bfd_boolean constructor" type_identifier identifier) , (parameter_declaration "char *name" primitive_type (pointer_declarator "*name" * 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 cVar1;\n  long lVar2;\n  bfd_link_hash_entry *h;\n  char *pcVar3;\n  char set_name [15];\n  \n  if (config.warn_constructors != 0) {\n    pcVar3 = (char *)dcgettext(0,"%P: warning: global constructor %s used\n",5);\n    einfo(pcVar3,name);\n  }\n  if (config.build_constructors == 0) {\n    return;\n  }\n  lVar2 = bfd_reloc_type_lookup(info->output_bfd,0x22b);\n  if (lVar2 == 0) {\n    if ((undefined1  [232])((undefined1  [232])*info & (undefined1  [232])0x3) !=\n        (undefined1  [232])0x2) {\n      lVar2 = bfd_reloc_type_lookup(abfd,0x22b);\n      if (lVar2 != 0) goto LAB_00122e37;\n    }\n    pcVar3 = (char *)dcgettext(0,"%F%P: BFD backend error: BFD_RELOC_CTOR unsupported\n",5);\n    einfo(pcVar3);\n  }\nLAB_00122e37:\n  cVar1 = abfd->xvec->symbol_leading_char;\n  if (cVar1 == '\0') {\n    pcVar3 = set_name;\n  }\n  else {\n    pcVar3 = set_name + 1;\n    set_name[0] = cVar1;\n  }\n  if (constructor == 0) {\n    builtin_strncpy(pcVar3,"__DTOR_LIST__",0xe);\n  }\n  else {\n    builtin_strncpy(pcVar3,"__CTOR_LIST__",0xe);\n  }\n  h = (bfd_link_hash_entry *)bfd_link_hash_lookup(info->hash,set_name,1,1,1);\n  if (h == (bfd_link_hash_entry *)0x0) {\n    pcVar3 = (char *)dcgettext(0,"%F%P: bfd_link_hash_lookup failed: %E\n",5);\n    einfo(pcVar3);\n  }\n  if (h->field_0x18 == '\0') {\n    h->field_0x18 = 1;\n    (h->u).undef.abfd = abfd;\n  }\n  ldctor_add_set_entry(h,BFD_RELOC_CTOR,name,section,value);\n  return;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "bfd_link_hash_entry *h;" type_identifier (pointer_declarator "*h" * identifier) ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "char set_name [15];" primitive_type (array_declarator "set_name [15]" identifier [ number_literal ]) ;) (if_statement "if (config.warn_constructors != 0) {\n    pcVar3 = (char *)dcgettext(0,"%P: warning: global constructor %s used\n",5);\n    einfo(pcVar3,name);\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    pcVar3 = (char *)dcgettext(0,"%P: warning: global constructor %s used\n",5);\n    einfo(pcVar3,name);\n  }" { (expression_statement "pcVar3 = (char *)dcgettext(0,"%P: warning: global constructor %s used\n",5);" (assignment_expression "pcVar3 = (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(pcVar3,name);" (call_expression "einfo(pcVar3,name)" identifier (argument_list "(pcVar3,name)" ( identifier , identifier ))) ;) })) (if_statement "if (config.build_constructors == 0) {\n    return;\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    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "lVar2 = bfd_reloc_type_lookup(info->output_bfd,0x22b);" (assignment_expression "lVar2 = bfd_reloc_type_lookup(info->output_bfd,0x22b)" identifier = (call_expression "bfd_reloc_type_lookup(info->output_bfd,0x22b)" identifier (argument_list "(info->output_bfd,0x22b)" ( (field_expression "info->output_bfd" identifier -> field_identifier) , number_literal )))) ;) (if_statement "if (lVar2 == 0) {\n    if ((undefined1  [232])((undefined1  [232])*info & (undefined1  [232])0x3) !=\n        (undefined1  [232])0x2) {\n      lVar2 = bfd_reloc_type_lookup(abfd,0x22b);\n      if (lVar2 != 0) goto LAB_00122e37;\n    }\n    pcVar3 = (char *)dcgettext(0,"%F%P: BFD backend error: BFD_RELOC_CTOR unsupported\n",5);\n    einfo(pcVar3);\n  }" if (parenthesized_expression "(lVar2 == 0)" ( (binary_expression "lVar2 == 0" identifier == number_literal) )) (compound_statement "{\n    if ((undefined1  [232])((undefined1  [232])*info & (undefined1  [232])0x3) !=\n        (undefined1  [232])0x2) {\n      lVar2 = bfd_reloc_type_lookup(abfd,0x22b);\n      if (lVar2 != 0) goto LAB_00122e37;\n    }\n    pcVar3 = (char *)dcgettext(0,"%F%P: BFD backend error: BFD_RELOC_CTOR unsupported\n",5);\n    einfo(pcVar3);\n  }" { (if_statement "if ((undefined1  [232])((undefined1  [232])*info & (undefined1  [232])0x3) !=\n        (undefined1  [232])0x2) {\n      lVar2 = bfd_reloc_type_lookup(abfd,0x22b);\n      if (lVar2 != 0) goto LAB_00122e37;\n    }" if (parenthesized_expression "((undefined1  [232])((undefined1  [232])*info & (undefined1  [232])0x3) !=\n        (undefined1  [232])0x2)" ( (binary_expression "(undefined1  [232])((undefined1  [232])*info & (undefined1  [232])0x3) !=\n        (undefined1  [232])0x2" (call_expression "(undefined1  [232])((undefined1  [232])*info & (undefined1  [232])0x3)" (parenthesized_expression "(undefined1  [232])" ( (subscript_expression "undefined1  [232]" identifier [ number_literal ]) )) (argument_list "((undefined1  [232])*info & (undefined1  [232])0x3)" ( (binary_expression "(undefined1  [232])*info & (undefined1  [232])0x3" (binary_expression "(undefined1  [232])*info" (parenthesized_expression "(undefined1  [232])" ( (subscript_expression "undefined1  [232]" identifier [ number_literal ]) )) * identifier) & (cast_expression "(undefined1  [232])0x3" ( (type_descriptor "undefined1  [232]" type_identifier (abstract_array_declarator "[232]" [ number_literal ])) ) number_literal)) ))) != (cast_expression "(undefined1  [232])0x2" ( (type_descriptor "undefined1  [232]" type_identifier (abstract_array_declarator "[232]" [ number_literal ])) ) number_literal)) )) (compound_statement "{\n      lVar2 = bfd_reloc_type_lookup(abfd,0x22b);\n      if (lVar2 != 0) goto LAB_00122e37;\n    }" { (expression_statement "lVar2 = bfd_reloc_type_lookup(abfd,0x22b);" (assignment_expression "lVar2 = bfd_reloc_type_lookup(abfd,0x22b)" identifier = (call_expression "bfd_reloc_type_lookup(abfd,0x22b)" identifier (argument_list "(abfd,0x22b)" ( identifier , number_literal )))) ;) (if_statement "if (lVar2 != 0) goto LAB_00122e37;" if (parenthesized_expression "(lVar2 != 0)" ( (binary_expression "lVar2 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00122e37;" goto statement_identifier ;)) })) (expression_statement "pcVar3 = (char *)dcgettext(0,"%F%P: BFD backend error: BFD_RELOC_CTOR unsupported\n",5);" (assignment_expression "pcVar3 = (char *)dcgettext(0,"%F%P: BFD backend error: BFD_RELOC_CTOR unsupported\n",5)" identifier = (cast_expression "(char *)dcgettext(0,"%F%P: BFD backend error: BFD_RELOC_CTOR unsupported\n",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"%F%P: BFD backend error: BFD_RELOC_CTOR unsupported\n",5)" identifier (argument_list "(0,"%F%P: BFD backend error: BFD_RELOC_CTOR unsupported\n",5)" ( number_literal , (string_literal ""%F%P: BFD backend error: BFD_RELOC_CTOR unsupported\n"" " string_content escape_sequence ") , number_literal ))))) ;) (expression_statement "einfo(pcVar3);" (call_expression "einfo(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier ))) ;) })) (labeled_statement "LAB_00122e37:\n  cVar1 = abfd->xvec->symbol_leading_char;" statement_identifier : (expression_statement "cVar1 = abfd->xvec->symbol_leading_char;" (assignment_expression "cVar1 = abfd->xvec->symbol_leading_char" identifier = (field_expression "abfd->xvec->symbol_leading_char" (field_expression "abfd->xvec" identifier -> field_identifier) -> field_identifier)) ;)) (if_statement "if (cVar1 == '\0') {\n    pcVar3 = set_name;\n  }\n  else {\n    pcVar3 = set_name + 1;\n    set_name[0] = cVar1;\n  }" if (parenthesized_expression "(cVar1 == '\0')" ( (binary_expression "cVar1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    pcVar3 = set_name;\n  }" { (expression_statement "pcVar3 = set_name;" (assignment_expression "pcVar3 = set_name" identifier = identifier) ;) }) (else_clause "else {\n    pcVar3 = set_name + 1;\n    set_name[0] = cVar1;\n  }" else (compound_statement "{\n    pcVar3 = set_name + 1;\n    set_name[0] = cVar1;\n  }" { (expression_statement "pcVar3 = set_name + 1;" (assignment_expression "pcVar3 = set_name + 1" identifier = (binary_expression "set_name + 1" identifier + number_literal)) ;) (expression_statement "set_name[0] = cVar1;" (assignment_expression "set_name[0] = cVar1" (subscript_expression "set_name[0]" identifier [ number_literal ]) = identifier) ;) }))) (if_statement "if (constructor == 0) {\n    builtin_strncpy(pcVar3,"__DTOR_LIST__",0xe);\n  }\n  else {\n    builtin_strncpy(pcVar3,"__CTOR_LIST__",0xe);\n  }" if (parenthesized_expression "(constructor == 0)" ( (binary_expression "constructor == 0" identifier == number_literal) )) (compound_statement "{\n    builtin_strncpy(pcVar3,"__DTOR_LIST__",0xe);\n  }" { (expression_statement "builtin_strncpy(pcVar3,"__DTOR_LIST__",0xe);" (call_expression "builtin_strncpy(pcVar3,"__DTOR_LIST__",0xe)" identifier (argument_list "(pcVar3,"__DTOR_LIST__",0xe)" ( identifier , (string_literal ""__DTOR_LIST__"" " string_content ") , number_literal ))) ;) }) (else_clause "else {\n    builtin_strncpy(pcVar3,"__CTOR_LIST__",0xe);\n  }" else (compound_statement "{\n    builtin_strncpy(pcVar3,"__CTOR_LIST__",0xe);\n  }" { (expression_statement "builtin_strncpy(pcVar3,"__CTOR_LIST__",0xe);" (call_expression "builtin_strncpy(pcVar3,"__CTOR_LIST__",0xe)" identifier (argument_list "(pcVar3,"__CTOR_LIST__",0xe)" ( identifier , (string_literal ""__CTOR_LIST__"" " string_content ") , number_literal ))) ;) }))) (expression_statement "h = (bfd_link_hash_entry *)bfd_link_hash_lookup(info->hash,set_name,1,1,1);" (assignment_expression "h = (bfd_link_hash_entry *)bfd_link_hash_lookup(info->hash,set_name,1,1,1)" identifier = (cast_expression "(bfd_link_hash_entry *)bfd_link_hash_lookup(info->hash,set_name,1,1,1)" ( (type_descriptor "bfd_link_hash_entry *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "bfd_link_hash_lookup(info->hash,set_name,1,1,1)" identifier (argument_list "(info->hash,set_name,1,1,1)" ( (field_expression "info->hash" identifier -> field_identifier) , identifier , number_literal , number_literal , number_literal ))))) ;) (if_statement "if (h == (bfd_link_hash_entry *)0x0) {\n    pcVar3 = (char *)dcgettext(0,"%F%P: bfd_link_hash_lookup failed: %E\n",5);\n    einfo(pcVar3);\n  }" if (parenthesized_expression "(h == (bfd_link_hash_entry *)0x0)" ( (binary_expression "h == (bfd_link_hash_entry *)0x0" identifier == (cast_expression "(bfd_link_hash_entry *)0x0" ( (type_descriptor "bfd_link_hash_entry *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    pcVar3 = (char *)dcgettext(0,"%F%P: bfd_link_hash_lookup failed: %E\n",5);\n    einfo(pcVar3);\n  }" { (expression_statement "pcVar3 = (char *)dcgettext(0,"%F%P: bfd_link_hash_lookup failed: %E\n",5);" (assignment_expression "pcVar3 = (char *)dcgettext(0,"%F%P: bfd_link_hash_lookup failed: %E\n",5)" identifier = (cast_expression "(char *)dcgettext(0,"%F%P: bfd_link_hash_lookup failed: %E\n",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"%F%P: bfd_link_hash_lookup failed: %E\n",5)" identifier (argument_list "(0,"%F%P: bfd_link_hash_lookup failed: %E\n",5)" ( number_literal , (string_literal ""%F%P: bfd_link_hash_lookup failed: %E\n"" " string_content escape_sequence ") , number_literal ))))) ;) (expression_statement "einfo(pcVar3);" (call_expression "einfo(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier ))) ;) })) (if_statement "if (h->field_0x18 == '\0') {\n    h->field_0x18 = 1;\n    (h->u).undef.abfd = abfd;\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->field_0x18 = 1;\n    (h->u).undef.abfd = abfd;\n  }" { (expression_statement "h->field_0x18 = 1;" (assignment_expression "h->field_0x18 = 1" (field_expression "h->field_0x18" identifier -> field_identifier) = number_literal) ;) (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 "ldctor_add_set_entry(h,BFD_RELOC_CTOR,name,section,value);" (call_expression "ldctor_add_set_entry(h,BFD_RELOC_CTOR,name,section,value)" identifier (argument_list "(h,BFD_RELOC_CTOR,name,section,value)" ( identifier , identifier , identifier , identifier , identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit "void FUN_00122dd0(byte *param_1,int param_2,undefined8 param_3,long param_4,undefined8 param_5,\n                 undefined8 param_6)\n\n{\n  char cVar1;\n  long lVar2;\n  char *pcVar3;\n  undefined8 uVar4;\n  char local_47;\n  char local_46 [22];\n  \n  if (DAT_002a6950 != 0) {\n    uVar4 = dcgettext(0,"%P: warning: global constructor %s used\n",5);\n    FUN_001283c0(uVar4,param_3);\n  }\n  if (DAT_002a694c == 0) {\n    return;\n  }\n  lVar2 = bfd_reloc_type_lookup(*(undefined8 *)(param_1 + 0x50),0x22b);\n  if (lVar2 == 0) {\n    if ((*param_1 & 3) != 2) {\n      lVar2 = bfd_reloc_type_lookup(param_4,0x22b);\n      if (lVar2 != 0) goto LAB_00122e37;\n    }\n    uVar4 = dcgettext(0,"%F%P: BFD backend error: BFD_RELOC_CTOR unsupported\n",5);\n    FUN_001283c0(uVar4);\n  }\nLAB_00122e37:\n  cVar1 = *(char *)(*(long *)(param_4 + 8) + 0x1c);\n  if (cVar1 == '\0') {\n    pcVar3 = &local_47;\n  }\n  else {\n    pcVar3 = local_46;\n    local_47 = cVar1;\n  }\n  if (param_2 == 0) {\n    builtin_strncpy(pcVar3,"__DTOR_LIST__",0xe);\n  }\n  else {\n    builtin_strncpy(pcVar3,"__CTOR_LIST__",0xe);\n  }\n  lVar2 = bfd_link_hash_lookup(*(undefined8 *)(param_1 + 0x28),&local_47,1,1,1);\n  if (lVar2 == 0) {\n    uVar4 = dcgettext(0,"%F%P: bfd_link_hash_lookup failed: %E\n",5);\n    FUN_001283c0(uVar4);\n  }\n  if (*(char *)(lVar2 + 0x18) == '\0') {\n    *(undefined1 *)(lVar2 + 0x18) = 1;\n    *(long *)(lVar2 + 0x28) = param_4;\n  }\n  FUN_00121b00(lVar2,0x22b,param_3,param_5,param_6);\n  return;\n}\n\n" (function_definition "void FUN_00122dd0(byte *param_1,int param_2,undefined8 param_3,long param_4,undefined8 param_5,\n                 undefined8 param_6)\n\n{\n  char cVar1;\n  long lVar2;\n  char *pcVar3;\n  undefined8 uVar4;\n  char local_47;\n  char local_46 [22];\n  \n  if (DAT_002a6950 != 0) {\n    uVar4 = dcgettext(0,"%P: warning: global constructor %s used\n",5);\n    FUN_001283c0(uVar4,param_3);\n  }\n  if (DAT_002a694c == 0) {\n    return;\n  }\n  lVar2 = bfd_reloc_type_lookup(*(undefined8 *)(param_1 + 0x50),0x22b);\n  if (lVar2 == 0) {\n    if ((*param_1 & 3) != 2) {\n      lVar2 = bfd_reloc_type_lookup(param_4,0x22b);\n      if (lVar2 != 0) goto LAB_00122e37;\n    }\n    uVar4 = dcgettext(0,"%F%P: BFD backend error: BFD_RELOC_CTOR unsupported\n",5);\n    FUN_001283c0(uVar4);\n  }\nLAB_00122e37:\n  cVar1 = *(char *)(*(long *)(param_4 + 8) + 0x1c);\n  if (cVar1 == '\0') {\n    pcVar3 = &local_47;\n  }\n  else {\n    pcVar3 = local_46;\n    local_47 = cVar1;\n  }\n  if (param_2 == 0) {\n    builtin_strncpy(pcVar3,"__DTOR_LIST__",0xe);\n  }\n  else {\n    builtin_strncpy(pcVar3,"__CTOR_LIST__",0xe);\n  }\n  lVar2 = bfd_link_hash_lookup(*(undefined8 *)(param_1 + 0x28),&local_47,1,1,1);\n  if (lVar2 == 0) {\n    uVar4 = dcgettext(0,"%F%P: bfd_link_hash_lookup failed: %E\n",5);\n    FUN_001283c0(uVar4);\n  }\n  if (*(char *)(lVar2 + 0x18) == '\0') {\n    *(undefined1 *)(lVar2 + 0x18) = 1;\n    *(long *)(lVar2 + 0x28) = param_4;\n  }\n  FUN_00121b00(lVar2,0x22b,param_3,param_5,param_6);\n  return;\n}" primitive_type (function_declarator "FUN_00122dd0(byte *param_1,int param_2,undefined8 param_3,long param_4,undefined8 param_5,\n                 undefined8 param_6)" identifier (parameter_list "(byte *param_1,int param_2,undefined8 param_3,long param_4,undefined8 param_5,\n                 undefined8 param_6)" ( (parameter_declaration "byte *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "undefined8 param_3" type_identifier identifier) , (parameter_declaration "long param_4" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined8 param_5" type_identifier identifier) , (parameter_declaration "undefined8 param_6" type_identifier identifier) ))) (compound_statement "{\n  char cVar1;\n  long lVar2;\n  char *pcVar3;\n  undefined8 uVar4;\n  char local_47;\n  char local_46 [22];\n  \n  if (DAT_002a6950 != 0) {\n    uVar4 = dcgettext(0,"%P: warning: global constructor %s used\n",5);\n    FUN_001283c0(uVar4,param_3);\n  }\n  if (DAT_002a694c == 0) {\n    return;\n  }\n  lVar2 = bfd_reloc_type_lookup(*(undefined8 *)(param_1 + 0x50),0x22b);\n  if (lVar2 == 0) {\n    if ((*param_1 & 3) != 2) {\n      lVar2 = bfd_reloc_type_lookup(param_4,0x22b);\n      if (lVar2 != 0) goto LAB_00122e37;\n    }\n    uVar4 = dcgettext(0,"%F%P: BFD backend error: BFD_RELOC_CTOR unsupported\n",5);\n    FUN_001283c0(uVar4);\n  }\nLAB_00122e37:\n  cVar1 = *(char *)(*(long *)(param_4 + 8) + 0x1c);\n  if (cVar1 == '\0') {\n    pcVar3 = &local_47;\n  }\n  else {\n    pcVar3 = local_46;\n    local_47 = cVar1;\n  }\n  if (param_2 == 0) {\n    builtin_strncpy(pcVar3,"__DTOR_LIST__",0xe);\n  }\n  else {\n    builtin_strncpy(pcVar3,"__CTOR_LIST__",0xe);\n  }\n  lVar2 = bfd_link_hash_lookup(*(undefined8 *)(param_1 + 0x28),&local_47,1,1,1);\n  if (lVar2 == 0) {\n    uVar4 = dcgettext(0,"%F%P: bfd_link_hash_lookup failed: %E\n",5);\n    FUN_001283c0(uVar4);\n  }\n  if (*(char *)(lVar2 + 0x18) == '\0') {\n    *(undefined1 *)(lVar2 + 0x18) = 1;\n    *(long *)(lVar2 + 0x28) = param_4;\n  }\n  FUN_00121b00(lVar2,0x22b,param_3,param_5,param_6);\n  return;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "undefined8 uVar4;" type_identifier identifier ;) (declaration "char local_47;" primitive_type identifier ;) (declaration "char local_46 [22];" primitive_type (array_declarator "local_46 [22]" identifier [ number_literal ]) ;) (if_statement "if (DAT_002a6950 != 0) {\n    uVar4 = dcgettext(0,"%P: warning: global constructor %s used\n",5);\n    FUN_001283c0(uVar4,param_3);\n  }" if (parenthesized_expression "(DAT_002a6950 != 0)" ( (binary_expression "DAT_002a6950 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar4 = dcgettext(0,"%P: warning: global constructor %s used\n",5);\n    FUN_001283c0(uVar4,param_3);\n  }" { (expression_statement "uVar4 = dcgettext(0,"%P: warning: global constructor %s used\n",5);" (assignment_expression "uVar4 = 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_001283c0(uVar4,param_3);" (call_expression "FUN_001283c0(uVar4,param_3)" identifier (argument_list "(uVar4,param_3)" ( identifier , identifier ))) ;) })) (if_statement "if (DAT_002a694c == 0) {\n    return;\n  }" if (parenthesized_expression "(DAT_002a694c == 0)" ( (binary_expression "DAT_002a694c == 0" identifier == number_literal) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "lVar2 = bfd_reloc_type_lookup(*(undefined8 *)(param_1 + 0x50),0x22b);" (assignment_expression "lVar2 = bfd_reloc_type_lookup(*(undefined8 *)(param_1 + 0x50),0x22b)" identifier = (call_expression "bfd_reloc_type_lookup(*(undefined8 *)(param_1 + 0x50),0x22b)" identifier (argument_list "(*(undefined8 *)(param_1 + 0x50),0x22b)" ( (pointer_expression "*(undefined8 *)(param_1 + 0x50)" * (cast_expression "(undefined8 *)(param_1 + 0x50)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) )))) , number_literal )))) ;) (if_statement "if (lVar2 == 0) {\n    if ((*param_1 & 3) != 2) {\n      lVar2 = bfd_reloc_type_lookup(param_4,0x22b);\n      if (lVar2 != 0) goto LAB_00122e37;\n    }\n    uVar4 = dcgettext(0,"%F%P: BFD backend error: BFD_RELOC_CTOR unsupported\n",5);\n    FUN_001283c0(uVar4);\n  }" if (parenthesized_expression "(lVar2 == 0)" ( (binary_expression "lVar2 == 0" identifier == number_literal) )) (compound_statement "{\n    if ((*param_1 & 3) != 2) {\n      lVar2 = bfd_reloc_type_lookup(param_4,0x22b);\n      if (lVar2 != 0) goto LAB_00122e37;\n    }\n    uVar4 = dcgettext(0,"%F%P: BFD backend error: BFD_RELOC_CTOR unsupported\n",5);\n    FUN_001283c0(uVar4);\n  }" { (if_statement "if ((*param_1 & 3) != 2) {\n      lVar2 = bfd_reloc_type_lookup(param_4,0x22b);\n      if (lVar2 != 0) goto LAB_00122e37;\n    }" if (parenthesized_expression "((*param_1 & 3) != 2)" ( (binary_expression "(*param_1 & 3) != 2" (parenthesized_expression "(*param_1 & 3)" ( (binary_expression "*param_1 & 3" (pointer_expression "*param_1" * identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n      lVar2 = bfd_reloc_type_lookup(param_4,0x22b);\n      if (lVar2 != 0) goto LAB_00122e37;\n    }" { (expression_statement "lVar2 = bfd_reloc_type_lookup(param_4,0x22b);" (assignment_expression "lVar2 = bfd_reloc_type_lookup(param_4,0x22b)" identifier = (call_expression "bfd_reloc_type_lookup(param_4,0x22b)" identifier (argument_list "(param_4,0x22b)" ( identifier , number_literal )))) ;) (if_statement "if (lVar2 != 0) goto LAB_00122e37;" if (parenthesized_expression "(lVar2 != 0)" ( (binary_expression "lVar2 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00122e37;" goto statement_identifier ;)) })) (expression_statement "uVar4 = dcgettext(0,"%F%P: BFD backend error: BFD_RELOC_CTOR unsupported\n",5);" (assignment_expression "uVar4 = dcgettext(0,"%F%P: BFD backend error: BFD_RELOC_CTOR unsupported\n",5)" identifier = (call_expression "dcgettext(0,"%F%P: BFD backend error: BFD_RELOC_CTOR unsupported\n",5)" identifier (argument_list "(0,"%F%P: BFD backend error: BFD_RELOC_CTOR unsupported\n",5)" ( number_literal , (string_literal ""%F%P: BFD backend error: BFD_RELOC_CTOR unsupported\n"" " string_content escape_sequence ") , number_literal )))) ;) (expression_statement "FUN_001283c0(uVar4);" (call_expression "FUN_001283c0(uVar4)" identifier (argument_list "(uVar4)" ( identifier ))) ;) })) (labeled_statement "LAB_00122e37:\n  cVar1 = *(char *)(*(long *)(param_4 + 8) + 0x1c);" statement_identifier : (expression_statement "cVar1 = *(char *)(*(long *)(param_4 + 8) + 0x1c);" (assignment_expression "cVar1 = *(char *)(*(long *)(param_4 + 8) + 0x1c)" identifier = (pointer_expression "*(char *)(*(long *)(param_4 + 8) + 0x1c)" * (cast_expression "(char *)(*(long *)(param_4 + 8) + 0x1c)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_4 + 8) + 0x1c)" ( (binary_expression "*(long *)(param_4 + 8) + 0x1c" (pointer_expression "*(long *)(param_4 + 8)" * (cast_expression "(long *)(param_4 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 8)" ( (binary_expression "param_4 + 8" identifier + number_literal) )))) + number_literal) ))))) ;)) (if_statement "if (cVar1 == '\0') {\n    pcVar3 = &local_47;\n  }\n  else {\n    pcVar3 = local_46;\n    local_47 = cVar1;\n  }" if (parenthesized_expression "(cVar1 == '\0')" ( (binary_expression "cVar1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    pcVar3 = &local_47;\n  }" { (expression_statement "pcVar3 = &local_47;" (assignment_expression "pcVar3 = &local_47" identifier = (pointer_expression "&local_47" & identifier)) ;) }) (else_clause "else {\n    pcVar3 = local_46;\n    local_47 = cVar1;\n  }" else (compound_statement "{\n    pcVar3 = local_46;\n    local_47 = cVar1;\n  }" { (expression_statement "pcVar3 = local_46;" (assignment_expression "pcVar3 = local_46" identifier = identifier) ;) (expression_statement "local_47 = cVar1;" (assignment_expression "local_47 = cVar1" identifier = identifier) ;) }))) (if_statement "if (param_2 == 0) {\n    builtin_strncpy(pcVar3,"__DTOR_LIST__",0xe);\n  }\n  else {\n    builtin_strncpy(pcVar3,"__CTOR_LIST__",0xe);\n  }" if (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) (compound_statement "{\n    builtin_strncpy(pcVar3,"__DTOR_LIST__",0xe);\n  }" { (expression_statement "builtin_strncpy(pcVar3,"__DTOR_LIST__",0xe);" (call_expression "builtin_strncpy(pcVar3,"__DTOR_LIST__",0xe)" identifier (argument_list "(pcVar3,"__DTOR_LIST__",0xe)" ( identifier , (string_literal ""__DTOR_LIST__"" " string_content ") , number_literal ))) ;) }) (else_clause "else {\n    builtin_strncpy(pcVar3,"__CTOR_LIST__",0xe);\n  }" else (compound_statement "{\n    builtin_strncpy(pcVar3,"__CTOR_LIST__",0xe);\n  }" { (expression_statement "builtin_strncpy(pcVar3,"__CTOR_LIST__",0xe);" (call_expression "builtin_strncpy(pcVar3,"__CTOR_LIST__",0xe)" identifier (argument_list "(pcVar3,"__CTOR_LIST__",0xe)" ( identifier , (string_literal ""__CTOR_LIST__"" " string_content ") , number_literal ))) ;) }))) (expression_statement "lVar2 = bfd_link_hash_lookup(*(undefined8 *)(param_1 + 0x28),&local_47,1,1,1);" (assignment_expression "lVar2 = bfd_link_hash_lookup(*(undefined8 *)(param_1 + 0x28),&local_47,1,1,1)" identifier = (call_expression "bfd_link_hash_lookup(*(undefined8 *)(param_1 + 0x28),&local_47,1,1,1)" identifier (argument_list "(*(undefined8 *)(param_1 + 0x28),&local_47,1,1,1)" ( (pointer_expression "*(undefined8 *)(param_1 + 0x28)" * (cast_expression "(undefined8 *)(param_1 + 0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) , (pointer_expression "&local_47" & identifier) , number_literal , number_literal , number_literal )))) ;) (if_statement "if (lVar2 == 0) {\n    uVar4 = dcgettext(0,"%F%P: bfd_link_hash_lookup failed: %E\n",5);\n    FUN_001283c0(uVar4);\n  }" if (parenthesized_expression "(lVar2 == 0)" ( (binary_expression "lVar2 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar4 = dcgettext(0,"%F%P: bfd_link_hash_lookup failed: %E\n",5);\n    FUN_001283c0(uVar4);\n  }" { (expression_statement "uVar4 = dcgettext(0,"%F%P: bfd_link_hash_lookup failed: %E\n",5);" (assignment_expression "uVar4 = dcgettext(0,"%F%P: bfd_link_hash_lookup failed: %E\n",5)" identifier = (call_expression "dcgettext(0,"%F%P: bfd_link_hash_lookup failed: %E\n",5)" identifier (argument_list "(0,"%F%P: bfd_link_hash_lookup failed: %E\n",5)" ( number_literal , (string_literal ""%F%P: bfd_link_hash_lookup failed: %E\n"" " string_content escape_sequence ") , number_literal )))) ;) (expression_statement "FUN_001283c0(uVar4);" (call_expression "FUN_001283c0(uVar4)" identifier (argument_list "(uVar4)" ( identifier ))) ;) })) (if_statement "if (*(char *)(lVar2 + 0x18) == '\0') {\n    *(undefined1 *)(lVar2 + 0x18) = 1;\n    *(long *)(lVar2 + 0x28) = param_4;\n  }" if (parenthesized_expression "(*(char *)(lVar2 + 0x18) == '\0')" ( (binary_expression "*(char *)(lVar2 + 0x18) == '\0'" (pointer_expression "*(char *)(lVar2 + 0x18)" * (cast_expression "(char *)(lVar2 + 0x18)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x18)" ( (binary_expression "lVar2 + 0x18" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    *(undefined1 *)(lVar2 + 0x18) = 1;\n    *(long *)(lVar2 + 0x28) = param_4;\n  }" { (expression_statement "*(undefined1 *)(lVar2 + 0x18) = 1;" (assignment_expression "*(undefined1 *)(lVar2 + 0x18) = 1" (pointer_expression "*(undefined1 *)(lVar2 + 0x18)" * (cast_expression "(undefined1 *)(lVar2 + 0x18)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x18)" ( (binary_expression "lVar2 + 0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(long *)(lVar2 + 0x28) = param_4;" (assignment_expression "*(long *)(lVar2 + 0x28) = param_4" (pointer_expression "*(long *)(lVar2 + 0x28)" * (cast_expression "(long *)(lVar2 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x28)" ( (binary_expression "lVar2 + 0x28" identifier + number_literal) )))) = identifier) ;) })) (expression_statement "FUN_00121b00(lVar2,0x22b,param_3,param_5,param_6);" (call_expression "FUN_00121b00(lVar2,0x22b,param_3,param_5,param_6)" identifier (argument_list "(lVar2,0x22b,param_3,param_5,param_6)" ( identifier , number_literal , identifier , identifier , identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (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 { (return_statement return ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence ") , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") , LIT ))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") , LIT ))) ;) }))) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression & IDENT) , LIT , LIT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (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 ))) ;) })) (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) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , IDENT , IDENT , IDENT ))) ;) (return_statement return ;) })))
(function_definition "void FUN_00122dd0(byte *param_1,int param_2,undefined8 param_3,long param_4,undefined8 param_5,\n                 undefined8 param_6)\n\n{\n  char cVar1;\n  long lVar2;\n  char *pcVar3;\n  undefined8 uVar4;\n  char local_47;\n  char local_46 [22];\n  \n  if (DAT_002a6950 != 0) {\n    uVar4 = dcgettext(0,"%P: warning: global constructor %s used\n",5);\n    FUN_001283c0(uVar4,param_3);\n  }\n  if (DAT_002a694c == 0) {\n    return;\n  }\n  lVar2 = bfd_reloc_type_lookup(*(undefined8 *)(param_1 + 0x50),0x22b);\n  if (lVar2 == 0) {\n    if ((*param_1 & 3) != 2) {\n      lVar2 = bfd_reloc_type_lookup(param_4,0x22b);\n      if (lVar2 != 0) goto LAB_00122e37;\n    }\n    uVar4 = dcgettext(0,"%F%P: BFD backend error: BFD_RELOC_CTOR unsupported\n",5);\n    FUN_001283c0(uVar4);\n  }\nLAB_00122e37:\n  cVar1 = *(char *)(*(long *)(param_4 + 8) + 0x1c);\n  if (cVar1 == '\0') {\n    pcVar3 = &local_47;\n  }\n  else {\n    pcVar3 = local_46;\n    local_47 = cVar1;\n  }\n  if (param_2 == 0) {\n    builtin_strncpy(pcVar3,"__DTOR_LIST__",0xe);\n  }\n  else {\n    builtin_strncpy(pcVar3,"__CTOR_LIST__",0xe);\n  }\n  lVar2 = bfd_link_hash_lookup(*(undefined8 *)(param_1 + 0x28),&local_47,1,1,1);\n  if (lVar2 == 0) {\n    uVar4 = dcgettext(0,"%F%P: bfd_link_hash_lookup failed: %E\n",5);\n    FUN_001283c0(uVar4);\n  }\n  if (*(char *)(lVar2 + 0x18) == '\0') {\n    *(undefined1 *)(lVar2 + 0x18) = 1;\n    *(long *)(lVar2 + 0x28) = param_4;\n  }\n  FUN_00121b00(lVar2,0x22b,param_3,param_5,param_6);\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00122dd0(byte *param_1,int param_2,undefined8 param_3,long param_4,undefined8 param_5,\n                 undefined8 param_6)" (identifier "FUN_00122dd0") (parameter_list "(byte *param_1,int param_2,undefined8 param_3,long param_4,undefined8 param_5,\n                 undefined8 param_6)" (( "(") (parameter_declaration "byte *param_1" (type_identifier "byte") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "undefined8 param_3" (type_identifier "undefined8") (identifier "param_3")) (, ",") (parameter_declaration "long param_4" (sized_type_specifier "long" (long "long")) (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  char cVar1;\n  long lVar2;\n  char *pcVar3;\n  undefined8 uVar4;\n  char local_47;\n  char local_46 [22];\n  \n  if (DAT_002a6950 != 0) {\n    uVar4 = dcgettext(0,"%P: warning: global constructor %s used\n",5);\n    FUN_001283c0(uVar4,param_3);\n  }\n  if (DAT_002a694c == 0) {\n    return;\n  }\n  lVar2 = bfd_reloc_type_lookup(*(undefined8 *)(param_1 + 0x50),0x22b);\n  if (lVar2 == 0) {\n    if ((*param_1 & 3) != 2) {\n      lVar2 = bfd_reloc_type_lookup(param_4,0x22b);\n      if (lVar2 != 0) goto LAB_00122e37;\n    }\n    uVar4 = dcgettext(0,"%F%P: BFD backend error: BFD_RELOC_CTOR unsupported\n",5);\n    FUN_001283c0(uVar4);\n  }\nLAB_00122e37:\n  cVar1 = *(char *)(*(long *)(param_4 + 8) + 0x1c);\n  if (cVar1 == '\0') {\n    pcVar3 = &local_47;\n  }\n  else {\n    pcVar3 = local_46;\n    local_47 = cVar1;\n  }\n  if (param_2 == 0) {\n    builtin_strncpy(pcVar3,"__DTOR_LIST__",0xe);\n  }\n  else {\n    builtin_strncpy(pcVar3,"__CTOR_LIST__",0xe);\n  }\n  lVar2 = bfd_link_hash_lookup(*(undefined8 *)(param_1 + 0x28),&local_47,1,1,1);\n  if (lVar2 == 0) {\n    uVar4 = dcgettext(0,"%F%P: bfd_link_hash_lookup failed: %E\n",5);\n    FUN_001283c0(uVar4);\n  }\n  if (*(char *)(lVar2 + 0x18) == '\0') {\n    *(undefined1 *)(lVar2 + 0x18) = 1;\n    *(long *)(lVar2 + 0x28) = param_4;\n  }\n  FUN_00121b00(lVar2,0x22b,param_3,param_5,param_6);\n  return;\n}" ({ "{") (declaration "char cVar1;" (primitive_type "char") (identifier "cVar1") (; ";")) (declaration "long lVar2;" (sized_type_specifier "long" (long "long")) (identifier "lVar2") (; ";")) (declaration "char *pcVar3;" (primitive_type "char") (pointer_declarator "*pcVar3" (* "*") (identifier "pcVar3")) (; ";")) (declaration "undefined8 uVar4;" (type_identifier "undefined8") (identifier "uVar4") (; ";")) (declaration "char local_47;" (primitive_type "char") (identifier "local_47") (; ";")) (declaration "char local_46 [22];" (primitive_type "char") (array_declarator "local_46 [22]" (identifier "local_46") ([ "[") (number_literal "22") (] "]")) (; ";")) (if_statement "if (DAT_002a6950 != 0) {\n    uVar4 = dcgettext(0,"%P: warning: global constructor %s used\n",5);\n    FUN_001283c0(uVar4,param_3);\n  }" (if "if") (parenthesized_expression "(DAT_002a6950 != 0)" (( "(") (binary_expression "DAT_002a6950 != 0" (identifier "DAT_002a6950") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    uVar4 = dcgettext(0,"%P: warning: global constructor %s used\n",5);\n    FUN_001283c0(uVar4,param_3);\n  }" ({ "{") (expression_statement "uVar4 = dcgettext(0,"%P: warning: global constructor %s used\n",5);" (assignment_expression "uVar4 = dcgettext(0,"%P: warning: global constructor %s used\n",5)" (identifier "uVar4") (= "=") (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_001283c0(uVar4,param_3);" (call_expression "FUN_001283c0(uVar4,param_3)" (identifier "FUN_001283c0") (argument_list "(uVar4,param_3)" (( "(") (identifier "uVar4") (, ",") (identifier "param_3") () ")"))) (; ";")) (} "}"))) (if_statement "if (DAT_002a694c == 0) {\n    return;\n  }" (if "if") (parenthesized_expression "(DAT_002a694c == 0)" (( "(") (binary_expression "DAT_002a694c == 0" (identifier "DAT_002a694c") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "lVar2 = bfd_reloc_type_lookup(*(undefined8 *)(param_1 + 0x50),0x22b);" (assignment_expression "lVar2 = bfd_reloc_type_lookup(*(undefined8 *)(param_1 + 0x50),0x22b)" (identifier "lVar2") (= "=") (call_expression "bfd_reloc_type_lookup(*(undefined8 *)(param_1 + 0x50),0x22b)" (identifier "bfd_reloc_type_lookup") (argument_list "(*(undefined8 *)(param_1 + 0x50),0x22b)" (( "(") (pointer_expression "*(undefined8 *)(param_1 + 0x50)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x50)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x50)" (( "(") (binary_expression "param_1 + 0x50" (identifier "param_1") (+ "+") (number_literal "0x50")) () ")")))) (, ",") (number_literal "0x22b") () ")")))) (; ";")) (if_statement "if (lVar2 == 0) {\n    if ((*param_1 & 3) != 2) {\n      lVar2 = bfd_reloc_type_lookup(param_4,0x22b);\n      if (lVar2 != 0) goto LAB_00122e37;\n    }\n    uVar4 = dcgettext(0,"%F%P: BFD backend error: BFD_RELOC_CTOR unsupported\n",5);\n    FUN_001283c0(uVar4);\n  }" (if "if") (parenthesized_expression "(lVar2 == 0)" (( "(") (binary_expression "lVar2 == 0" (identifier "lVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    if ((*param_1 & 3) != 2) {\n      lVar2 = bfd_reloc_type_lookup(param_4,0x22b);\n      if (lVar2 != 0) goto LAB_00122e37;\n    }\n    uVar4 = dcgettext(0,"%F%P: BFD backend error: BFD_RELOC_CTOR unsupported\n",5);\n    FUN_001283c0(uVar4);\n  }" ({ "{") (if_statement "if ((*param_1 & 3) != 2) {\n      lVar2 = bfd_reloc_type_lookup(param_4,0x22b);\n      if (lVar2 != 0) goto LAB_00122e37;\n    }" (if "if") (parenthesized_expression "((*param_1 & 3) != 2)" (( "(") (binary_expression "(*param_1 & 3) != 2" (parenthesized_expression "(*param_1 & 3)" (( "(") (binary_expression "*param_1 & 3" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (& "&") (number_literal "3")) () ")")) (!= "!=") (number_literal "2")) () ")")) (compound_statement "{\n      lVar2 = bfd_reloc_type_lookup(param_4,0x22b);\n      if (lVar2 != 0) goto LAB_00122e37;\n    }" ({ "{") (expression_statement "lVar2 = bfd_reloc_type_lookup(param_4,0x22b);" (assignment_expression "lVar2 = bfd_reloc_type_lookup(param_4,0x22b)" (identifier "lVar2") (= "=") (call_expression "bfd_reloc_type_lookup(param_4,0x22b)" (identifier "bfd_reloc_type_lookup") (argument_list "(param_4,0x22b)" (( "(") (identifier "param_4") (, ",") (number_literal "0x22b") () ")")))) (; ";")) (if_statement "if (lVar2 != 0) goto LAB_00122e37;" (if "if") (parenthesized_expression "(lVar2 != 0)" (( "(") (binary_expression "lVar2 != 0" (identifier "lVar2") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00122e37;" (goto "goto") (statement_identifier "LAB_00122e37") (; ";"))) (} "}"))) (expression_statement "uVar4 = dcgettext(0,"%F%P: BFD backend error: BFD_RELOC_CTOR unsupported\n",5);" (assignment_expression "uVar4 = dcgettext(0,"%F%P: BFD backend error: BFD_RELOC_CTOR unsupported\n",5)" (identifier "uVar4") (= "=") (call_expression "dcgettext(0,"%F%P: BFD backend error: BFD_RELOC_CTOR unsupported\n",5)" (identifier "dcgettext") (argument_list "(0,"%F%P: BFD backend error: BFD_RELOC_CTOR unsupported\n",5)" (( "(") (number_literal "0") (, ",") (string_literal ""%F%P: BFD backend error: BFD_RELOC_CTOR unsupported\n"" (" """) (string_content "%F%P: BFD backend error: BFD_RELOC_CTOR unsupported") (escape_sequence "\n") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "FUN_001283c0(uVar4);" (call_expression "FUN_001283c0(uVar4)" (identifier "FUN_001283c0") (argument_list "(uVar4)" (( "(") (identifier "uVar4") () ")"))) (; ";")) (} "}"))) (labeled_statement "LAB_00122e37:\n  cVar1 = *(char *)(*(long *)(param_4 + 8) + 0x1c);" (statement_identifier "LAB_00122e37") (: ":") (expression_statement "cVar1 = *(char *)(*(long *)(param_4 + 8) + 0x1c);" (assignment_expression "cVar1 = *(char *)(*(long *)(param_4 + 8) + 0x1c)" (identifier "cVar1") (= "=") (pointer_expression "*(char *)(*(long *)(param_4 + 8) + 0x1c)" (* "*") (cast_expression "(char *)(*(long *)(param_4 + 8) + 0x1c)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_4 + 8) + 0x1c)" (( "(") (binary_expression "*(long *)(param_4 + 8) + 0x1c" (pointer_expression "*(long *)(param_4 + 8)" (* "*") (cast_expression "(long *)(param_4 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + 8)" (( "(") (binary_expression "param_4 + 8" (identifier "param_4") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "0x1c")) () ")"))))) (; ";"))) (if_statement "if (cVar1 == '\0') {\n    pcVar3 = &local_47;\n  }\n  else {\n    pcVar3 = local_46;\n    local_47 = cVar1;\n  }" (if "if") (parenthesized_expression "(cVar1 == '\0')" (( "(") (binary_expression "cVar1 == '\0'" (identifier "cVar1") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    pcVar3 = &local_47;\n  }" ({ "{") (expression_statement "pcVar3 = &local_47;" (assignment_expression "pcVar3 = &local_47" (identifier "pcVar3") (= "=") (pointer_expression "&local_47" (& "&") (identifier "local_47"))) (; ";")) (} "}")) (else_clause "else {\n    pcVar3 = local_46;\n    local_47 = cVar1;\n  }" (else "else") (compound_statement "{\n    pcVar3 = local_46;\n    local_47 = cVar1;\n  }" ({ "{") (expression_statement "pcVar3 = local_46;" (assignment_expression "pcVar3 = local_46" (identifier "pcVar3") (= "=") (identifier "local_46")) (; ";")) (expression_statement "local_47 = cVar1;" (assignment_expression "local_47 = cVar1" (identifier "local_47") (= "=") (identifier "cVar1")) (; ";")) (} "}")))) (if_statement "if (param_2 == 0) {\n    builtin_strncpy(pcVar3,"__DTOR_LIST__",0xe);\n  }\n  else {\n    builtin_strncpy(pcVar3,"__CTOR_LIST__",0xe);\n  }" (if "if") (parenthesized_expression "(param_2 == 0)" (( "(") (binary_expression "param_2 == 0" (identifier "param_2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    builtin_strncpy(pcVar3,"__DTOR_LIST__",0xe);\n  }" ({ "{") (expression_statement "builtin_strncpy(pcVar3,"__DTOR_LIST__",0xe);" (call_expression "builtin_strncpy(pcVar3,"__DTOR_LIST__",0xe)" (identifier "builtin_strncpy") (argument_list "(pcVar3,"__DTOR_LIST__",0xe)" (( "(") (identifier "pcVar3") (, ",") (string_literal ""__DTOR_LIST__"" (" """) (string_content "__DTOR_LIST__") (" """)) (, ",") (number_literal "0xe") () ")"))) (; ";")) (} "}")) (else_clause "else {\n    builtin_strncpy(pcVar3,"__CTOR_LIST__",0xe);\n  }" (else "else") (compound_statement "{\n    builtin_strncpy(pcVar3,"__CTOR_LIST__",0xe);\n  }" ({ "{") (expression_statement "builtin_strncpy(pcVar3,"__CTOR_LIST__",0xe);" (call_expression "builtin_strncpy(pcVar3,"__CTOR_LIST__",0xe)" (identifier "builtin_strncpy") (argument_list "(pcVar3,"__CTOR_LIST__",0xe)" (( "(") (identifier "pcVar3") (, ",") (string_literal ""__CTOR_LIST__"" (" """) (string_content "__CTOR_LIST__") (" """)) (, ",") (number_literal "0xe") () ")"))) (; ";")) (} "}")))) (expression_statement "lVar2 = bfd_link_hash_lookup(*(undefined8 *)(param_1 + 0x28),&local_47,1,1,1);" (assignment_expression "lVar2 = bfd_link_hash_lookup(*(undefined8 *)(param_1 + 0x28),&local_47,1,1,1)" (identifier "lVar2") (= "=") (call_expression "bfd_link_hash_lookup(*(undefined8 *)(param_1 + 0x28),&local_47,1,1,1)" (identifier "bfd_link_hash_lookup") (argument_list "(*(undefined8 *)(param_1 + 0x28),&local_47,1,1,1)" (( "(") (pointer_expression "*(undefined8 *)(param_1 + 0x28)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x28)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x28)" (( "(") (binary_expression "param_1 + 0x28" (identifier "param_1") (+ "+") (number_literal "0x28")) () ")")))) (, ",") (pointer_expression "&local_47" (& "&") (identifier "local_47")) (, ",") (number_literal "1") (, ",") (number_literal "1") (, ",") (number_literal "1") () ")")))) (; ";")) (if_statement "if (lVar2 == 0) {\n    uVar4 = dcgettext(0,"%F%P: bfd_link_hash_lookup failed: %E\n",5);\n    FUN_001283c0(uVar4);\n  }" (if "if") (parenthesized_expression "(lVar2 == 0)" (( "(") (binary_expression "lVar2 == 0" (identifier "lVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    uVar4 = dcgettext(0,"%F%P: bfd_link_hash_lookup failed: %E\n",5);\n    FUN_001283c0(uVar4);\n  }" ({ "{") (expression_statement "uVar4 = dcgettext(0,"%F%P: bfd_link_hash_lookup failed: %E\n",5);" (assignment_expression "uVar4 = dcgettext(0,"%F%P: bfd_link_hash_lookup failed: %E\n",5)" (identifier "uVar4") (= "=") (call_expression "dcgettext(0,"%F%P: bfd_link_hash_lookup failed: %E\n",5)" (identifier "dcgettext") (argument_list "(0,"%F%P: bfd_link_hash_lookup failed: %E\n",5)" (( "(") (number_literal "0") (, ",") (string_literal ""%F%P: bfd_link_hash_lookup failed: %E\n"" (" """) (string_content "%F%P: bfd_link_hash_lookup failed: %E") (escape_sequence "\n") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "FUN_001283c0(uVar4);" (call_expression "FUN_001283c0(uVar4)" (identifier "FUN_001283c0") (argument_list "(uVar4)" (( "(") (identifier "uVar4") () ")"))) (; ";")) (} "}"))) (if_statement "if (*(char *)(lVar2 + 0x18) == '\0') {\n    *(undefined1 *)(lVar2 + 0x18) = 1;\n    *(long *)(lVar2 + 0x28) = param_4;\n  }" (if "if") (parenthesized_expression "(*(char *)(lVar2 + 0x18) == '\0')" (( "(") (binary_expression "*(char *)(lVar2 + 0x18) == '\0'" (pointer_expression "*(char *)(lVar2 + 0x18)" (* "*") (cast_expression "(char *)(lVar2 + 0x18)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar2 + 0x18)" (( "(") (binary_expression "lVar2 + 0x18" (identifier "lVar2") (+ "+") (number_literal "0x18")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    *(undefined1 *)(lVar2 + 0x18) = 1;\n    *(long *)(lVar2 + 0x28) = param_4;\n  }" ({ "{") (expression_statement "*(undefined1 *)(lVar2 + 0x18) = 1;" (assignment_expression "*(undefined1 *)(lVar2 + 0x18) = 1" (pointer_expression "*(undefined1 *)(lVar2 + 0x18)" (* "*") (cast_expression "(undefined1 *)(lVar2 + 0x18)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar2 + 0x18)" (( "(") (binary_expression "lVar2 + 0x18" (identifier "lVar2") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "*(long *)(lVar2 + 0x28) = param_4;" (assignment_expression "*(long *)(lVar2 + 0x28) = param_4" (pointer_expression "*(long *)(lVar2 + 0x28)" (* "*") (cast_expression "(long *)(lVar2 + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar2 + 0x28)" (( "(") (binary_expression "lVar2 + 0x28" (identifier "lVar2") (+ "+") (number_literal "0x28")) () ")")))) (= "=") (identifier "param_4")) (; ";")) (} "}"))) (expression_statement "FUN_00121b00(lVar2,0x22b,param_3,param_5,param_6);" (call_expression "FUN_00121b00(lVar2,0x22b,param_3,param_5,param_6)" (identifier "FUN_00121b00") (argument_list "(lVar2,0x22b,param_3,param_5,param_6)" (( "(") (identifier "lVar2") (, ",") (number_literal "0x22b") (, ",") (identifier "param_3") (, ",") (identifier "param_5") (, ",") (identifier "param_6") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

void function_1
               (type_1 *var_5,type_2 var_8,char *name,type_3 *abfd,type_4 *section,
               type_5 value)

{
  char var_6;
  long var_4;
  type_6 *var_11;
  char *pcVar3;
  char var_7 [15];
  
  if (config.warn_constructors != 0) {
    pcVar3 = (char *)var_1(0,"%P: warning: global constructor %s used\n",5);
    var_2(pcVar3,name);
  }
  if (config.build_constructors == 0) {
    return;
  }
  var_4 = var_3(var_5->output_bfd,0x22b);
  if (var_4 == 0) {
    if ((type_7  [232])((type_7  [232])*var_5 & (type_7  [232])0x3) !=
        (type_7  [232])0x2) {
      var_4 = var_3(abfd,0x22b);
      if (var_4 != 0) goto LAB_00122e37;
    }
    pcVar3 = (char *)var_1(0,"%F%P: BFD backend error: BFD_RELOC_CTOR unsupported\n",5);
    var_2(pcVar3);
  }
LAB_00122e37:
  var_6 = abfd->xvec->symbol_leading_char;
  if (var_6 == '\0') {
    pcVar3 = var_7;
  }
  else {
    pcVar3 = var_7 + 1;
    var_7[0] = var_6;
  }
  if (var_8 == 0) {
    var_9(pcVar3,"__DTOR_LIST__",0xe);
  }
  else {
    var_9(pcVar3,"__CTOR_LIST__",0xe);
  }
  var_11 = (type_6 *)var_10(var_5->hash,var_7,1,1,1);
  if (var_11 == (type_6 *)0x0) {
    pcVar3 = (char *)var_1(0,"%F%P: bfd_link_hash_lookup failed: %E\n",5);
    var_2(pcVar3);
  }
  if (var_11->field_0x18 == '\0') {
    var_11->field_0x18 = 1;
    (var_11->u).undef.abfd = abfd;
  }
  var_12(var_11,BFD_RELOC_CTOR,name,section,value);
  return;
}


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

void MASKED(byte *param_1,int param_2,undefined8 param_3,long param_4,undefined8 param_5,
                 undefined8 param_6)

{
  char cVar1;
  long lVar2;
  char *pcVar3;
  undefined8 uVar4;
  char local_47;
  char local_46 [22];
  
  if (DAT_002a6950 != 0) {
    uVar4 = dcgettext(0,"%P: warning: global constructor %s used\n",5);
    FUN_001283c0(uVar4,param_3);
  }
  if (DAT_002a694c == 0) {
    return;
  }
  lVar2 = bfd_reloc_type_lookup(*(undefined8 *)(param_1 + 0x50),0x22b);
  if (lVar2 == 0) {
    if ((*param_1 & 3) != 2) {
      lVar2 = bfd_reloc_type_lookup(param_4,0x22b);
      if (lVar2 != 0) goto LAB_00122e37;
    }
    uVar4 = dcgettext(0,"%F%P: BFD backend error: BFD_RELOC_CTOR unsupported\n",5);
    FUN_001283c0(uVar4);
  }
LAB_00122e37:
  cVar1 = *(char *)(*(long *)(param_4 + 8) + 0x1c);
  if (cVar1 == '\0') {
    pcVar3 = &local_47;
  }
  else {
    pcVar3 = local_46;
    local_47 = cVar1;
  }
  if (param_2 == 0) {
    builtin_strncpy(pcVar3,"__DTOR_LIST__",0xe);
  }
  else {
    builtin_strncpy(pcVar3,"__CTOR_LIST__",0xe);
  }
  lVar2 = bfd_link_hash_lookup(*(undefined8 *)(param_1 + 0x28),&local_47,1,1,1);
  if (lVar2 == 0) {
    uVar4 = dcgettext(0,"%F%P: bfd_link_hash_lookup failed: %E\n",5);
    FUN_001283c0(uVar4);
  }
  if (*(char *)(lVar2 + 0x18) == '\0') {
    *(undefined1 *)(lVar2 + 0x18) = 1;
    *(long *)(lVar2 + 0x28) = param_4;
  }
  FUN_00121b00(lVar2,0x22b,param_3,param_5,param_6);
  return;
}

