
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* DWARF original prototype: void visit_top_die(Gdb_index_info_reader * this, Dwarf_die * die) */

void __thiscall
gold::Gdb_index_info_reader::visit_top_die(Gdb_index_info_reader *this,Dwarf_die *die)

{
  uint uVar1;
  bool bVar2;
  char *pcVar3;
  pointer pcVar4;
  int64_t iVar5;
  
  clear_declarations(this);
  if ((die->abbrev_code_ == (Abbrev_code *)0x0) ||
     ((uVar1 = die->abbrev_code_->tag, uVar1 != 0x11 && (uVar1 != 0x41)))) {
    pcVar4 = (((this->super_Dwarf_info_reader).object_)->super_Object).name_._M_dataplus._M_p;
    pcVar3 = "%s: top level DIE is not DW_TAG_compile_unit or DW_TAG_type_unit";
  }
  else {
    iVar5 = Dwarf_die::int_attribute(die,0x13);
    this->cu_language_ = (uint)iVar5;
    if ((die->abbrev_code_ != (Abbrev_code *)0x0) && (die->abbrev_code_->tag == 0x11)) {
      record_cu_ranges(this,die);
    }
    bVar2 = read_pubnames_and_pubtypes(this,die);
    if (bVar2) {
      return;
    }
    uVar1 = this->cu_language_;
    if (uVar1 < 0xf) {
      bVar2 = (bool)((byte)(0x6988 >> ((byte)uVar1 & 0x1f)) & 1);
    }
    if ((1 < uVar1 - 0x22) && (bVar2 == false)) {
      if ((die->abbrev_code_ == (Abbrev_code *)0x0) || (die->abbrev_code_->tag != 0x11)) {
        dwarf_tu_nopubnames_count = dwarf_tu_nopubnames_count + 1;
      }
      else {
        dwarf_cu_nopubnames_count = dwarf_cu_nopubnames_count + 1;
      }
      visit_children(this,die,(Dwarf_die *)0x0);
      return;
    }
    pcVar4 = (((this->super_Dwarf_info_reader).object_)->super_Object).name_._M_dataplus._M_p;
    pcVar3 = "%s: --gdb-index currently supports only C and C++ languages";
  }
  pcVar3 = (char *)gettext(pcVar3);
  gold_warning(pcVar3,pcVar4);
  return;
}



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

void FUN_001c37d0(int param_1,int param_2)

{
  int iVar1;
  uint uVar2;
  char cVar3;
  byte bVar4;
  char *pcVar5;
  undefined4 uVar6;
  undefined4 uVar7;
  
  FUN_001c1430(param_1);
  if ((*(int **)(param_2 + 0x28) == (int *)0x0) ||
     ((iVar1 = **(int **)(param_2 + 0x28), iVar1 != 0x11 && (iVar1 != 0x41)))) {
    uVar7 = *(undefined4 *)(*(int *)(param_1 + 8) + 4);
    pcVar5 = "%s: top level DIE is not DW_TAG_compile_unit or DW_TAG_type_unit";
  }
  else {
    uVar7 = FUN_00058450(param_2,0x13);
    *(undefined4 *)(param_1 + 0x4cc) = uVar7;
    if ((*(int **)(param_2 + 0x28) != (int *)0x0) && (**(int **)(param_2 + 0x28) == 0x11)) {
      FUN_001c2670(param_1,param_2);
    }
    cVar3 = FUN_001c2d60(param_1,param_2);
    if (cVar3 != '\0') {
      return;
    }
    uVar2 = *(uint *)(param_1 + 0x4cc);
    bVar4 = 0;
    if (uVar2 < 0xf) {
      bVar4 = (byte)(0x6988 >> ((byte)uVar2 & 0x1f)) & 1;
    }
    if ((1 < uVar2 - 0x22) && (bVar4 == 0)) {
      if ((*(int **)(param_2 + 0x28) == (int *)0x0) || (**(int **)(param_2 + 0x28) != 0x11)) {
        DAT_003962b4 = DAT_003962b4 + 1;
      }
      else {
        DAT_003962bc = DAT_003962bc + 1;
      }
      FUN_001c3700(param_1,param_2,0);
      return;
    }
    uVar7 = *(undefined4 *)(*(int *)(param_1 + 8) + 4);
    pcVar5 = "%s: --gdb-index currently supports only C and C++ languages";
  }
  uVar6 = gettext(pcVar5);
  FUN_000654e0(uVar6,uVar7);
  return;
}


PUSH EDI
PUSH ESI
PUSH EBX
MOV ESI,dword ptr [ESP + 0x10]
CALL 0x00035840
ADD EBX,0x1cb824
MOV EDI,dword ptr [ESP + 0x14]
SUB ESP,0xc
PUSH ESI
CALL 0x001c1430
MOV EAX,dword ptr [EDI + 0x28]
ADD ESP,0x10
TEST EAX,EAX
JZ 0x001c3805
MOV EAX,dword ptr [EAX]
CMP EAX,0x11
JZ 0x001c3830
CMP EAX,0x41
JZ 0x001c3830
MOV EAX,dword ptr [ESI + 0x8]
SUB ESP,0xc
MOV ESI,dword ptr [EAX + 0x4]
LEA EAX,[EBX + 0xfff10ec4]
PUSH EAX
CALL 0x000293b0
POP EDX
POP ECX
PUSH ESI
PUSH EAX
CALL 0x000654e0
ADD ESP,0x10
POP EBX
POP ESI
POP EDI
RET
SUB ESP,0x8
PUSH 0x13
PUSH EDI
CALL 0x00058450
ADD ESP,0x10
MOV dword ptr [ESI + 0x4cc],EAX
MOV EAX,dword ptr [EDI + 0x28]
TEST EAX,EAX
JZ 0x001c3850
CMP dword ptr [EAX],0x11
JZ 0x001c3898
SUB ESP,0x8
PUSH EDI
PUSH ESI
CALL 0x001c2d60
ADD ESP,0x10
TEST AL,AL
JNZ 0x001c3826
MOV ECX,dword ptr [ESI + 0x4cc]
CMP ECX,0xe
JA 0x001c3876
MOV EAX,0x6988
SHR EAX,CL
AND EAX,0x1
SUB ECX,0x22
CMP ECX,0x1
JBE 0x001c3882
TEST AL,AL
JZ 0x001c38b0
MOV EAX,dword ptr [ESI + 0x8]
SUB ESP,0xc
MOV ESI,dword ptr [EAX + 0x4]
LEA EAX,[EBX + 0xfff10e88]
JMP 0x001c3814
SUB ESP,0x8
PUSH EDI
PUSH ESI
CALL 0x001c2670
ADD ESP,0x10
JMP 0x001c3850
MOV EAX,dword ptr [EDI + 0x28]
TEST EAX,EAX
JZ 0x001c38bc
CMP dword ptr [EAX],0x11
JZ 0x001c38d7
ADD dword ptr [EBX + 0x72b4],0x1
SUB ESP,0x4
PUSH 0x0
PUSH EDI
PUSH ESI
CALL 0x001c3700
ADD ESP,0x10
JMP 0x001c3826
ADD dword ptr [EBX + 0x72bc],0x1
JMP 0x001c38c3
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nvoid FUN_001c37d0(int param_1,int param_2)\n\n{\n  int iVar1;\n  uint uVar2;\n  char cVar3;\n  byte bVar4;\n  char *pcVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  \n  FUN_001c1430(param_1);\n  if ((*(int **)(param_2 + 0x28) == (int *)0x0) ||\n     ((iVar1 = **(int **)(param_2 + 0x28), iVar1 != 0x11 && (iVar1 != 0x41)))) {\n    uVar7 = *(undefined4 *)(*(int *)(param_1 + 8) + 4);\n    pcVar5 = "%s: top level DIE is not DW_TAG_compile_unit or DW_TAG_type_unit";\n  }\n  else {\n    uVar7 = FUN_00058450(param_2,0x13);\n    *(undefined4 *)(param_1 + 0x4cc) = uVar7;\n    if ((*(int **)(param_2 + 0x28) != (int *)0x0) && (**(int **)(param_2 + 0x28) == 0x11)) {\n      FUN_001c2670(param_1,param_2);\n    }\n    cVar3 = FUN_001c2d60(param_1,param_2);\n    if (cVar3 != '\0') {\n      return;\n    }\n    uVar2 = *(uint *)(param_1 + 0x4cc);\n    bVar4 = 0;\n    if (uVar2 < 0xf) {\n      bVar4 = (byte)(0x6988 >> ((byte)uVar2 & 0x1f)) & 1;\n    }\n    if ((1 < uVar2 - 0x22) && (bVar4 == 0)) {\n      if ((*(int **)(param_2 + 0x28) == (int *)0x0) || (**(int **)(param_2 + 0x28) != 0x11)) {\n        DAT_003962b4 = DAT_003962b4 + 1;\n      }\n      else {\n        DAT_003962bc = DAT_003962bc + 1;\n      }\n      FUN_001c3700(param_1,param_2,0);\n      return;\n    }\n    uVar7 = *(undefined4 *)(*(int *)(param_1 + 8) + 4);\n    pcVar5 = "%s: --gdb-index currently supports only C and C++ languages";\n  }\n  uVar6 = gettext(pcVar5);\n  FUN_000654e0(uVar6,uVar7);\n  return;\n}\n\n" comment (function_definition "void FUN_001c37d0(int param_1,int param_2)\n\n{\n  int iVar1;\n  uint uVar2;\n  char cVar3;\n  byte bVar4;\n  char *pcVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  \n  FUN_001c1430(param_1);\n  if ((*(int **)(param_2 + 0x28) == (int *)0x0) ||\n     ((iVar1 = **(int **)(param_2 + 0x28), iVar1 != 0x11 && (iVar1 != 0x41)))) {\n    uVar7 = *(undefined4 *)(*(int *)(param_1 + 8) + 4);\n    pcVar5 = "%s: top level DIE is not DW_TAG_compile_unit or DW_TAG_type_unit";\n  }\n  else {\n    uVar7 = FUN_00058450(param_2,0x13);\n    *(undefined4 *)(param_1 + 0x4cc) = uVar7;\n    if ((*(int **)(param_2 + 0x28) != (int *)0x0) && (**(int **)(param_2 + 0x28) == 0x11)) {\n      FUN_001c2670(param_1,param_2);\n    }\n    cVar3 = FUN_001c2d60(param_1,param_2);\n    if (cVar3 != '\0') {\n      return;\n    }\n    uVar2 = *(uint *)(param_1 + 0x4cc);\n    bVar4 = 0;\n    if (uVar2 < 0xf) {\n      bVar4 = (byte)(0x6988 >> ((byte)uVar2 & 0x1f)) & 1;\n    }\n    if ((1 < uVar2 - 0x22) && (bVar4 == 0)) {\n      if ((*(int **)(param_2 + 0x28) == (int *)0x0) || (**(int **)(param_2 + 0x28) != 0x11)) {\n        DAT_003962b4 = DAT_003962b4 + 1;\n      }\n      else {\n        DAT_003962bc = DAT_003962bc + 1;\n      }\n      FUN_001c3700(param_1,param_2,0);\n      return;\n    }\n    uVar7 = *(undefined4 *)(*(int *)(param_1 + 8) + 4);\n    pcVar5 = "%s: --gdb-index currently supports only C and C++ languages";\n  }\n  uVar6 = gettext(pcVar5);\n  FUN_000654e0(uVar6,uVar7);\n  return;\n}" primitive_type (function_declarator "FUN_001c37d0(int param_1,int param_2)" identifier (parameter_list "(int param_1,int param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  char cVar3;\n  byte bVar4;\n  char *pcVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  \n  FUN_001c1430(param_1);\n  if ((*(int **)(param_2 + 0x28) == (int *)0x0) ||\n     ((iVar1 = **(int **)(param_2 + 0x28), iVar1 != 0x11 && (iVar1 != 0x41)))) {\n    uVar7 = *(undefined4 *)(*(int *)(param_1 + 8) + 4);\n    pcVar5 = "%s: top level DIE is not DW_TAG_compile_unit or DW_TAG_type_unit";\n  }\n  else {\n    uVar7 = FUN_00058450(param_2,0x13);\n    *(undefined4 *)(param_1 + 0x4cc) = uVar7;\n    if ((*(int **)(param_2 + 0x28) != (int *)0x0) && (**(int **)(param_2 + 0x28) == 0x11)) {\n      FUN_001c2670(param_1,param_2);\n    }\n    cVar3 = FUN_001c2d60(param_1,param_2);\n    if (cVar3 != '\0') {\n      return;\n    }\n    uVar2 = *(uint *)(param_1 + 0x4cc);\n    bVar4 = 0;\n    if (uVar2 < 0xf) {\n      bVar4 = (byte)(0x6988 >> ((byte)uVar2 & 0x1f)) & 1;\n    }\n    if ((1 < uVar2 - 0x22) && (bVar4 == 0)) {\n      if ((*(int **)(param_2 + 0x28) == (int *)0x0) || (**(int **)(param_2 + 0x28) != 0x11)) {\n        DAT_003962b4 = DAT_003962b4 + 1;\n      }\n      else {\n        DAT_003962bc = DAT_003962bc + 1;\n      }\n      FUN_001c3700(param_1,param_2,0);\n      return;\n    }\n    uVar7 = *(undefined4 *)(*(int *)(param_1 + 8) + 4);\n    pcVar5 = "%s: --gdb-index currently supports only C and C++ languages";\n  }\n  uVar6 = gettext(pcVar5);\n  FUN_000654e0(uVar6,uVar7);\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "char cVar3;" primitive_type identifier ;) (declaration "byte bVar4;" type_identifier identifier ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (expression_statement "FUN_001c1430(param_1);" (call_expression "FUN_001c1430(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (if_statement "if ((*(int **)(param_2 + 0x28) == (int *)0x0) ||\n     ((iVar1 = **(int **)(param_2 + 0x28), iVar1 != 0x11 && (iVar1 != 0x41)))) {\n    uVar7 = *(undefined4 *)(*(int *)(param_1 + 8) + 4);\n    pcVar5 = "%s: top level DIE is not DW_TAG_compile_unit or DW_TAG_type_unit";\n  }\n  else {\n    uVar7 = FUN_00058450(param_2,0x13);\n    *(undefined4 *)(param_1 + 0x4cc) = uVar7;\n    if ((*(int **)(param_2 + 0x28) != (int *)0x0) && (**(int **)(param_2 + 0x28) == 0x11)) {\n      FUN_001c2670(param_1,param_2);\n    }\n    cVar3 = FUN_001c2d60(param_1,param_2);\n    if (cVar3 != '\0') {\n      return;\n    }\n    uVar2 = *(uint *)(param_1 + 0x4cc);\n    bVar4 = 0;\n    if (uVar2 < 0xf) {\n      bVar4 = (byte)(0x6988 >> ((byte)uVar2 & 0x1f)) & 1;\n    }\n    if ((1 < uVar2 - 0x22) && (bVar4 == 0)) {\n      if ((*(int **)(param_2 + 0x28) == (int *)0x0) || (**(int **)(param_2 + 0x28) != 0x11)) {\n        DAT_003962b4 = DAT_003962b4 + 1;\n      }\n      else {\n        DAT_003962bc = DAT_003962bc + 1;\n      }\n      FUN_001c3700(param_1,param_2,0);\n      return;\n    }\n    uVar7 = *(undefined4 *)(*(int *)(param_1 + 8) + 4);\n    pcVar5 = "%s: --gdb-index currently supports only C and C++ languages";\n  }" if (parenthesized_expression "((*(int **)(param_2 + 0x28) == (int *)0x0) ||\n     ((iVar1 = **(int **)(param_2 + 0x28), iVar1 != 0x11 && (iVar1 != 0x41))))" ( (binary_expression "(*(int **)(param_2 + 0x28) == (int *)0x0) ||\n     ((iVar1 = **(int **)(param_2 + 0x28), iVar1 != 0x11 && (iVar1 != 0x41)))" (parenthesized_expression "(*(int **)(param_2 + 0x28) == (int *)0x0)" ( (binary_expression "*(int **)(param_2 + 0x28) == (int *)0x0" (pointer_expression "*(int **)(param_2 + 0x28)" * (cast_expression "(int **)(param_2 + 0x28)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x28)" ( (binary_expression "param_2 + 0x28" identifier + number_literal) )))) == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "((iVar1 = **(int **)(param_2 + 0x28), iVar1 != 0x11 && (iVar1 != 0x41)))" ( (parenthesized_expression "(iVar1 = **(int **)(param_2 + 0x28), iVar1 != 0x11 && (iVar1 != 0x41))" ( (comma_expression "iVar1 = **(int **)(param_2 + 0x28), iVar1 != 0x11 && (iVar1 != 0x41)" (assignment_expression "iVar1 = **(int **)(param_2 + 0x28)" identifier = (pointer_expression "**(int **)(param_2 + 0x28)" * (pointer_expression "*(int **)(param_2 + 0x28)" * (cast_expression "(int **)(param_2 + 0x28)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x28)" ( (binary_expression "param_2 + 0x28" identifier + number_literal) )))))) , (binary_expression "iVar1 != 0x11 && (iVar1 != 0x41)" (binary_expression "iVar1 != 0x11" identifier != number_literal) && (parenthesized_expression "(iVar1 != 0x41)" ( (binary_expression "iVar1 != 0x41" identifier != number_literal) )))) )) ))) )) (compound_statement "{\n    uVar7 = *(undefined4 *)(*(int *)(param_1 + 8) + 4);\n    pcVar5 = "%s: top level DIE is not DW_TAG_compile_unit or DW_TAG_type_unit";\n  }" { (expression_statement "uVar7 = *(undefined4 *)(*(int *)(param_1 + 8) + 4);" (assignment_expression "uVar7 = *(undefined4 *)(*(int *)(param_1 + 8) + 4)" identifier = (pointer_expression "*(undefined4 *)(*(int *)(param_1 + 8) + 4)" * (cast_expression "(undefined4 *)(*(int *)(param_1 + 8) + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 8) + 4)" ( (binary_expression "*(int *)(param_1 + 8) + 4" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "pcVar5 = "%s: top level DIE is not DW_TAG_compile_unit or DW_TAG_type_unit";" (assignment_expression "pcVar5 = "%s: top level DIE is not DW_TAG_compile_unit or DW_TAG_type_unit"" identifier = (string_literal ""%s: top level DIE is not DW_TAG_compile_unit or DW_TAG_type_unit"" " string_content ")) ;) }) (else_clause "else {\n    uVar7 = FUN_00058450(param_2,0x13);\n    *(undefined4 *)(param_1 + 0x4cc) = uVar7;\n    if ((*(int **)(param_2 + 0x28) != (int *)0x0) && (**(int **)(param_2 + 0x28) == 0x11)) {\n      FUN_001c2670(param_1,param_2);\n    }\n    cVar3 = FUN_001c2d60(param_1,param_2);\n    if (cVar3 != '\0') {\n      return;\n    }\n    uVar2 = *(uint *)(param_1 + 0x4cc);\n    bVar4 = 0;\n    if (uVar2 < 0xf) {\n      bVar4 = (byte)(0x6988 >> ((byte)uVar2 & 0x1f)) & 1;\n    }\n    if ((1 < uVar2 - 0x22) && (bVar4 == 0)) {\n      if ((*(int **)(param_2 + 0x28) == (int *)0x0) || (**(int **)(param_2 + 0x28) != 0x11)) {\n        DAT_003962b4 = DAT_003962b4 + 1;\n      }\n      else {\n        DAT_003962bc = DAT_003962bc + 1;\n      }\n      FUN_001c3700(param_1,param_2,0);\n      return;\n    }\n    uVar7 = *(undefined4 *)(*(int *)(param_1 + 8) + 4);\n    pcVar5 = "%s: --gdb-index currently supports only C and C++ languages";\n  }" else (compound_statement "{\n    uVar7 = FUN_00058450(param_2,0x13);\n    *(undefined4 *)(param_1 + 0x4cc) = uVar7;\n    if ((*(int **)(param_2 + 0x28) != (int *)0x0) && (**(int **)(param_2 + 0x28) == 0x11)) {\n      FUN_001c2670(param_1,param_2);\n    }\n    cVar3 = FUN_001c2d60(param_1,param_2);\n    if (cVar3 != '\0') {\n      return;\n    }\n    uVar2 = *(uint *)(param_1 + 0x4cc);\n    bVar4 = 0;\n    if (uVar2 < 0xf) {\n      bVar4 = (byte)(0x6988 >> ((byte)uVar2 & 0x1f)) & 1;\n    }\n    if ((1 < uVar2 - 0x22) && (bVar4 == 0)) {\n      if ((*(int **)(param_2 + 0x28) == (int *)0x0) || (**(int **)(param_2 + 0x28) != 0x11)) {\n        DAT_003962b4 = DAT_003962b4 + 1;\n      }\n      else {\n        DAT_003962bc = DAT_003962bc + 1;\n      }\n      FUN_001c3700(param_1,param_2,0);\n      return;\n    }\n    uVar7 = *(undefined4 *)(*(int *)(param_1 + 8) + 4);\n    pcVar5 = "%s: --gdb-index currently supports only C and C++ languages";\n  }" { (expression_statement "uVar7 = FUN_00058450(param_2,0x13);" (assignment_expression "uVar7 = FUN_00058450(param_2,0x13)" identifier = (call_expression "FUN_00058450(param_2,0x13)" identifier (argument_list "(param_2,0x13)" ( identifier , number_literal )))) ;) (expression_statement "*(undefined4 *)(param_1 + 0x4cc) = uVar7;" (assignment_expression "*(undefined4 *)(param_1 + 0x4cc) = uVar7" (pointer_expression "*(undefined4 *)(param_1 + 0x4cc)" * (cast_expression "(undefined4 *)(param_1 + 0x4cc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4cc)" ( (binary_expression "param_1 + 0x4cc" identifier + number_literal) )))) = identifier) ;) (if_statement "if ((*(int **)(param_2 + 0x28) != (int *)0x0) && (**(int **)(param_2 + 0x28) == 0x11)) {\n      FUN_001c2670(param_1,param_2);\n    }" if (parenthesized_expression "((*(int **)(param_2 + 0x28) != (int *)0x0) && (**(int **)(param_2 + 0x28) == 0x11))" ( (binary_expression "(*(int **)(param_2 + 0x28) != (int *)0x0) && (**(int **)(param_2 + 0x28) == 0x11)" (parenthesized_expression "(*(int **)(param_2 + 0x28) != (int *)0x0)" ( (binary_expression "*(int **)(param_2 + 0x28) != (int *)0x0" (pointer_expression "*(int **)(param_2 + 0x28)" * (cast_expression "(int **)(param_2 + 0x28)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x28)" ( (binary_expression "param_2 + 0x28" identifier + number_literal) )))) != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(**(int **)(param_2 + 0x28) == 0x11)" ( (binary_expression "**(int **)(param_2 + 0x28) == 0x11" (pointer_expression "**(int **)(param_2 + 0x28)" * (pointer_expression "*(int **)(param_2 + 0x28)" * (cast_expression "(int **)(param_2 + 0x28)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x28)" ( (binary_expression "param_2 + 0x28" identifier + number_literal) ))))) == number_literal) ))) )) (compound_statement "{\n      FUN_001c2670(param_1,param_2);\n    }" { (expression_statement "FUN_001c2670(param_1,param_2);" (call_expression "FUN_001c2670(param_1,param_2)" identifier (argument_list "(param_1,param_2)" ( identifier , identifier ))) ;) })) (expression_statement "cVar3 = FUN_001c2d60(param_1,param_2);" (assignment_expression "cVar3 = FUN_001c2d60(param_1,param_2)" identifier = (call_expression "FUN_001c2d60(param_1,param_2)" identifier (argument_list "(param_1,param_2)" ( identifier , identifier )))) ;) (if_statement "if (cVar3 != '\0') {\n      return;\n    }" if (parenthesized_expression "(cVar3 != '\0')" ( (binary_expression "cVar3 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (expression_statement "uVar2 = *(uint *)(param_1 + 0x4cc);" (assignment_expression "uVar2 = *(uint *)(param_1 + 0x4cc)" identifier = (pointer_expression "*(uint *)(param_1 + 0x4cc)" * (cast_expression "(uint *)(param_1 + 0x4cc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4cc)" ( (binary_expression "param_1 + 0x4cc" identifier + number_literal) ))))) ;) (expression_statement "bVar4 = 0;" (assignment_expression "bVar4 = 0" identifier = number_literal) ;) (if_statement "if (uVar2 < 0xf) {\n      bVar4 = (byte)(0x6988 >> ((byte)uVar2 & 0x1f)) & 1;\n    }" if (parenthesized_expression "(uVar2 < 0xf)" ( (binary_expression "uVar2 < 0xf" identifier < number_literal) )) (compound_statement "{\n      bVar4 = (byte)(0x6988 >> ((byte)uVar2 & 0x1f)) & 1;\n    }" { (expression_statement "bVar4 = (byte)(0x6988 >> ((byte)uVar2 & 0x1f)) & 1;" (assignment_expression "bVar4 = (byte)(0x6988 >> ((byte)uVar2 & 0x1f)) & 1" identifier = (binary_expression "(byte)(0x6988 >> ((byte)uVar2 & 0x1f)) & 1" (call_expression "(byte)(0x6988 >> ((byte)uVar2 & 0x1f))" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(0x6988 >> ((byte)uVar2 & 0x1f))" ( (binary_expression "0x6988 >> ((byte)uVar2 & 0x1f)" number_literal >> (parenthesized_expression "((byte)uVar2 & 0x1f)" ( (binary_expression "(byte)uVar2 & 0x1f" (cast_expression "(byte)uVar2" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))) & number_literal)) ;) })) (if_statement "if ((1 < uVar2 - 0x22) && (bVar4 == 0)) {\n      if ((*(int **)(param_2 + 0x28) == (int *)0x0) || (**(int **)(param_2 + 0x28) != 0x11)) {\n        DAT_003962b4 = DAT_003962b4 + 1;\n      }\n      else {\n        DAT_003962bc = DAT_003962bc + 1;\n      }\n      FUN_001c3700(param_1,param_2,0);\n      return;\n    }" if (parenthesized_expression "((1 < uVar2 - 0x22) && (bVar4 == 0))" ( (binary_expression "(1 < uVar2 - 0x22) && (bVar4 == 0)" (parenthesized_expression "(1 < uVar2 - 0x22)" ( (binary_expression "1 < uVar2 - 0x22" number_literal < (binary_expression "uVar2 - 0x22" identifier - number_literal)) )) && (parenthesized_expression "(bVar4 == 0)" ( (binary_expression "bVar4 == 0" identifier == number_literal) ))) )) (compound_statement "{\n      if ((*(int **)(param_2 + 0x28) == (int *)0x0) || (**(int **)(param_2 + 0x28) != 0x11)) {\n        DAT_003962b4 = DAT_003962b4 + 1;\n      }\n      else {\n        DAT_003962bc = DAT_003962bc + 1;\n      }\n      FUN_001c3700(param_1,param_2,0);\n      return;\n    }" { (if_statement "if ((*(int **)(param_2 + 0x28) == (int *)0x0) || (**(int **)(param_2 + 0x28) != 0x11)) {\n        DAT_003962b4 = DAT_003962b4 + 1;\n      }\n      else {\n        DAT_003962bc = DAT_003962bc + 1;\n      }" if (parenthesized_expression "((*(int **)(param_2 + 0x28) == (int *)0x0) || (**(int **)(param_2 + 0x28) != 0x11))" ( (binary_expression "(*(int **)(param_2 + 0x28) == (int *)0x0) || (**(int **)(param_2 + 0x28) != 0x11)" (parenthesized_expression "(*(int **)(param_2 + 0x28) == (int *)0x0)" ( (binary_expression "*(int **)(param_2 + 0x28) == (int *)0x0" (pointer_expression "*(int **)(param_2 + 0x28)" * (cast_expression "(int **)(param_2 + 0x28)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x28)" ( (binary_expression "param_2 + 0x28" identifier + number_literal) )))) == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(**(int **)(param_2 + 0x28) != 0x11)" ( (binary_expression "**(int **)(param_2 + 0x28) != 0x11" (pointer_expression "**(int **)(param_2 + 0x28)" * (pointer_expression "*(int **)(param_2 + 0x28)" * (cast_expression "(int **)(param_2 + 0x28)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x28)" ( (binary_expression "param_2 + 0x28" identifier + number_literal) ))))) != number_literal) ))) )) (compound_statement "{\n        DAT_003962b4 = DAT_003962b4 + 1;\n      }" { (expression_statement "DAT_003962b4 = DAT_003962b4 + 1;" (assignment_expression "DAT_003962b4 = DAT_003962b4 + 1" identifier = (binary_expression "DAT_003962b4 + 1" identifier + number_literal)) ;) }) (else_clause "else {\n        DAT_003962bc = DAT_003962bc + 1;\n      }" else (compound_statement "{\n        DAT_003962bc = DAT_003962bc + 1;\n      }" { (expression_statement "DAT_003962bc = DAT_003962bc + 1;" (assignment_expression "DAT_003962bc = DAT_003962bc + 1" identifier = (binary_expression "DAT_003962bc + 1" identifier + number_literal)) ;) }))) (expression_statement "FUN_001c3700(param_1,param_2,0);" (call_expression "FUN_001c3700(param_1,param_2,0)" identifier (argument_list "(param_1,param_2,0)" ( identifier , identifier , number_literal ))) ;) (return_statement "return;" return ;) })) (expression_statement "uVar7 = *(undefined4 *)(*(int *)(param_1 + 8) + 4);" (assignment_expression "uVar7 = *(undefined4 *)(*(int *)(param_1 + 8) + 4)" identifier = (pointer_expression "*(undefined4 *)(*(int *)(param_1 + 8) + 4)" * (cast_expression "(undefined4 *)(*(int *)(param_1 + 8) + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 8) + 4)" ( (binary_expression "*(int *)(param_1 + 8) + 4" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "pcVar5 = "%s: --gdb-index currently supports only C and C++ languages";" (assignment_expression "pcVar5 = "%s: --gdb-index currently supports only C and C++ languages"" identifier = (string_literal ""%s: --gdb-index currently supports only C and C++ languages"" " string_content ")) ;) }))) (expression_statement "uVar6 = gettext(pcVar5);" (assignment_expression "uVar6 = gettext(pcVar5)" identifier = (call_expression "gettext(pcVar5)" identifier (argument_list "(pcVar5)" ( identifier )))) ;) (expression_statement "FUN_000654e0(uVar6,uVar7);" (call_expression "FUN_000654e0(uVar6,uVar7)" identifier (argument_list "(uVar6,uVar7)" ( identifier , identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* DWARF original prototype: void visit_top_die(Gdb_index_info_reader * this, Dwarf_die * die) */\n\nvoid __thiscall\ngold::Gdb_index_info_reader::visit_top_die(Gdb_index_info_reader *this,Dwarf_die *die)\n\n{\n  uint uVar1;\n  bool bVar2;\n  char *pcVar3;\n  pointer pcVar4;\n  int64_t iVar5;\n  \n  clear_declarations(this);\n  if ((die->abbrev_code_ == (Abbrev_code *)0x0) ||\n     ((uVar1 = die->abbrev_code_->tag, uVar1 != 0x11 && (uVar1 != 0x41)))) {\n    pcVar4 = (((this->super_Dwarf_info_reader).object_)->super_Object).name_._M_dataplus._M_p;\n    pcVar3 = "%s: top level DIE is not DW_TAG_compile_unit or DW_TAG_type_unit";\n  }\n  else {\n    iVar5 = Dwarf_die::int_attribute(die,0x13);\n    this->cu_language_ = (uint)iVar5;\n    if ((die->abbrev_code_ != (Abbrev_code *)0x0) && (die->abbrev_code_->tag == 0x11)) {\n      record_cu_ranges(this,die);\n    }\n    bVar2 = read_pubnames_and_pubtypes(this,die);\n    if (bVar2) {\n      return;\n    }\n    uVar1 = this->cu_language_;\n    if (uVar1 < 0xf) {\n      bVar2 = (bool)((byte)(0x6988 >> ((byte)uVar1 & 0x1f)) & 1);\n    }\n    if ((1 < uVar1 - 0x22) && (bVar2 == false)) {\n      if ((die->abbrev_code_ == (Abbrev_code *)0x0) || (die->abbrev_code_->tag != 0x11)) {\n        dwarf_tu_nopubnames_count = dwarf_tu_nopubnames_count + 1;\n      }\n      else {\n        dwarf_cu_nopubnames_count = dwarf_cu_nopubnames_count + 1;\n      }\n      visit_children(this,die,(Dwarf_die *)0x0);\n      return;\n    }\n    pcVar4 = (((this->super_Dwarf_info_reader).object_)->super_Object).name_._M_dataplus._M_p;\n    pcVar3 = "%s: --gdb-index currently supports only C and C++ languages";\n  }\n  pcVar3 = (char *)gettext(pcVar3);\n  gold_warning(pcVar3,pcVar4);\n  return;\n}\n\n" comment comment (function_definition "void __thiscall\ngold::Gdb_index_info_reader::visit_top_die(Gdb_index_info_reader *this,Dwarf_die *die)\n\n{\n  uint uVar1;\n  bool bVar2;\n  char *pcVar3;\n  pointer pcVar4;\n  int64_t iVar5;\n  \n  clear_declarations(this);\n  if ((die->abbrev_code_ == (Abbrev_code *)0x0) ||\n     ((uVar1 = die->abbrev_code_->tag, uVar1 != 0x11 && (uVar1 != 0x41)))) {\n    pcVar4 = (((this->super_Dwarf_info_reader).object_)->super_Object).name_._M_dataplus._M_p;\n    pcVar3 = "%s: top level DIE is not DW_TAG_compile_unit or DW_TAG_type_unit";\n  }\n  else {\n    iVar5 = Dwarf_die::int_attribute(die,0x13);\n    this->cu_language_ = (uint)iVar5;\n    if ((die->abbrev_code_ != (Abbrev_code *)0x0) && (die->abbrev_code_->tag == 0x11)) {\n      record_cu_ranges(this,die);\n    }\n    bVar2 = read_pubnames_and_pubtypes(this,die);\n    if (bVar2) {\n      return;\n    }\n    uVar1 = this->cu_language_;\n    if (uVar1 < 0xf) {\n      bVar2 = (bool)((byte)(0x6988 >> ((byte)uVar1 & 0x1f)) & 1);\n    }\n    if ((1 < uVar1 - 0x22) && (bVar2 == false)) {\n      if ((die->abbrev_code_ == (Abbrev_code *)0x0) || (die->abbrev_code_->tag != 0x11)) {\n        dwarf_tu_nopubnames_count = dwarf_tu_nopubnames_count + 1;\n      }\n      else {\n        dwarf_cu_nopubnames_count = dwarf_cu_nopubnames_count + 1;\n      }\n      visit_children(this,die,(Dwarf_die *)0x0);\n      return;\n    }\n    pcVar4 = (((this->super_Dwarf_info_reader).object_)->super_Object).name_._M_dataplus._M_p;\n    pcVar3 = "%s: --gdb-index currently supports only C and C++ languages";\n  }\n  pcVar3 = (char *)gettext(pcVar3);\n  gold_warning(pcVar3,pcVar4);\n  return;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Gdb_index_info_reader::" identifier : : identifier : :) (function_declarator "visit_top_die(Gdb_index_info_reader *this,Dwarf_die *die)" identifier (parameter_list "(Gdb_index_info_reader *this,Dwarf_die *die)" ( (parameter_declaration "Gdb_index_info_reader *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "Dwarf_die *die" type_identifier (pointer_declarator "*die" * identifier)) ))) (compound_statement "{\n  uint uVar1;\n  bool bVar2;\n  char *pcVar3;\n  pointer pcVar4;\n  int64_t iVar5;\n  \n  clear_declarations(this);\n  if ((die->abbrev_code_ == (Abbrev_code *)0x0) ||\n     ((uVar1 = die->abbrev_code_->tag, uVar1 != 0x11 && (uVar1 != 0x41)))) {\n    pcVar4 = (((this->super_Dwarf_info_reader).object_)->super_Object).name_._M_dataplus._M_p;\n    pcVar3 = "%s: top level DIE is not DW_TAG_compile_unit or DW_TAG_type_unit";\n  }\n  else {\n    iVar5 = Dwarf_die::int_attribute(die,0x13);\n    this->cu_language_ = (uint)iVar5;\n    if ((die->abbrev_code_ != (Abbrev_code *)0x0) && (die->abbrev_code_->tag == 0x11)) {\n      record_cu_ranges(this,die);\n    }\n    bVar2 = read_pubnames_and_pubtypes(this,die);\n    if (bVar2) {\n      return;\n    }\n    uVar1 = this->cu_language_;\n    if (uVar1 < 0xf) {\n      bVar2 = (bool)((byte)(0x6988 >> ((byte)uVar1 & 0x1f)) & 1);\n    }\n    if ((1 < uVar1 - 0x22) && (bVar2 == false)) {\n      if ((die->abbrev_code_ == (Abbrev_code *)0x0) || (die->abbrev_code_->tag != 0x11)) {\n        dwarf_tu_nopubnames_count = dwarf_tu_nopubnames_count + 1;\n      }\n      else {\n        dwarf_cu_nopubnames_count = dwarf_cu_nopubnames_count + 1;\n      }\n      visit_children(this,die,(Dwarf_die *)0x0);\n      return;\n    }\n    pcVar4 = (((this->super_Dwarf_info_reader).object_)->super_Object).name_._M_dataplus._M_p;\n    pcVar3 = "%s: --gdb-index currently supports only C and C++ languages";\n  }\n  pcVar3 = (char *)gettext(pcVar3);\n  gold_warning(pcVar3,pcVar4);\n  return;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "pointer pcVar4;" type_identifier identifier ;) (declaration "int64_t iVar5;" primitive_type identifier ;) (expression_statement "clear_declarations(this);" (call_expression "clear_declarations(this)" identifier (argument_list "(this)" ( identifier ))) ;) (if_statement "if ((die->abbrev_code_ == (Abbrev_code *)0x0) ||\n     ((uVar1 = die->abbrev_code_->tag, uVar1 != 0x11 && (uVar1 != 0x41)))) {\n    pcVar4 = (((this->super_Dwarf_info_reader).object_)->super_Object).name_._M_dataplus._M_p;\n    pcVar3 = "%s: top level DIE is not DW_TAG_compile_unit or DW_TAG_type_unit";\n  }\n  else {\n    iVar5 = Dwarf_die::int_attribute(die,0x13);\n    this->cu_language_ = (uint)iVar5;\n    if ((die->abbrev_code_ != (Abbrev_code *)0x0) && (die->abbrev_code_->tag == 0x11)) {\n      record_cu_ranges(this,die);\n    }\n    bVar2 = read_pubnames_and_pubtypes(this,die);\n    if (bVar2) {\n      return;\n    }\n    uVar1 = this->cu_language_;\n    if (uVar1 < 0xf) {\n      bVar2 = (bool)((byte)(0x6988 >> ((byte)uVar1 & 0x1f)) & 1);\n    }\n    if ((1 < uVar1 - 0x22) && (bVar2 == false)) {\n      if ((die->abbrev_code_ == (Abbrev_code *)0x0) || (die->abbrev_code_->tag != 0x11)) {\n        dwarf_tu_nopubnames_count = dwarf_tu_nopubnames_count + 1;\n      }\n      else {\n        dwarf_cu_nopubnames_count = dwarf_cu_nopubnames_count + 1;\n      }\n      visit_children(this,die,(Dwarf_die *)0x0);\n      return;\n    }\n    pcVar4 = (((this->super_Dwarf_info_reader).object_)->super_Object).name_._M_dataplus._M_p;\n    pcVar3 = "%s: --gdb-index currently supports only C and C++ languages";\n  }" if (parenthesized_expression "((die->abbrev_code_ == (Abbrev_code *)0x0) ||\n     ((uVar1 = die->abbrev_code_->tag, uVar1 != 0x11 && (uVar1 != 0x41))))" ( (binary_expression "(die->abbrev_code_ == (Abbrev_code *)0x0) ||\n     ((uVar1 = die->abbrev_code_->tag, uVar1 != 0x11 && (uVar1 != 0x41)))" (parenthesized_expression "(die->abbrev_code_ == (Abbrev_code *)0x0)" ( (binary_expression "die->abbrev_code_ == (Abbrev_code *)0x0" (field_expression "die->abbrev_code_" identifier -> field_identifier) == (cast_expression "(Abbrev_code *)0x0" ( (type_descriptor "Abbrev_code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "((uVar1 = die->abbrev_code_->tag, uVar1 != 0x11 && (uVar1 != 0x41)))" ( (parenthesized_expression "(uVar1 = die->abbrev_code_->tag, uVar1 != 0x11 && (uVar1 != 0x41))" ( (comma_expression "uVar1 = die->abbrev_code_->tag, uVar1 != 0x11 && (uVar1 != 0x41)" (assignment_expression "uVar1 = die->abbrev_code_->tag" identifier = (field_expression "die->abbrev_code_->tag" (field_expression "die->abbrev_code_" identifier -> field_identifier) -> field_identifier)) , (binary_expression "uVar1 != 0x11 && (uVar1 != 0x41)" (binary_expression "uVar1 != 0x11" identifier != number_literal) && (parenthesized_expression "(uVar1 != 0x41)" ( (binary_expression "uVar1 != 0x41" identifier != number_literal) )))) )) ))) )) (compound_statement "{\n    pcVar4 = (((this->super_Dwarf_info_reader).object_)->super_Object).name_._M_dataplus._M_p;\n    pcVar3 = "%s: top level DIE is not DW_TAG_compile_unit or DW_TAG_type_unit";\n  }" { (expression_statement "pcVar4 = (((this->super_Dwarf_info_reader).object_)->super_Object).name_._M_dataplus._M_p;" (assignment_expression "pcVar4 = (((this->super_Dwarf_info_reader).object_)->super_Object).name_._M_dataplus._M_p" identifier = (field_expression "(((this->super_Dwarf_info_reader).object_)->super_Object).name_._M_dataplus._M_p" (field_expression "(((this->super_Dwarf_info_reader).object_)->super_Object).name_._M_dataplus" (field_expression "(((this->super_Dwarf_info_reader).object_)->super_Object).name_" (parenthesized_expression "(((this->super_Dwarf_info_reader).object_)->super_Object)" ( (field_expression "((this->super_Dwarf_info_reader).object_)->super_Object" (parenthesized_expression "((this->super_Dwarf_info_reader).object_)" ( (field_expression "(this->super_Dwarf_info_reader).object_" (parenthesized_expression "(this->super_Dwarf_info_reader)" ( (field_expression "this->super_Dwarf_info_reader" identifier -> field_identifier) )) . field_identifier) )) -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier)) ;) (expression_statement "pcVar3 = "%s: top level DIE is not DW_TAG_compile_unit or DW_TAG_type_unit";" (assignment_expression "pcVar3 = "%s: top level DIE is not DW_TAG_compile_unit or DW_TAG_type_unit"" identifier = (string_literal ""%s: top level DIE is not DW_TAG_compile_unit or DW_TAG_type_unit"" " string_content ")) ;) }) (else_clause "else {\n    iVar5 = Dwarf_die::int_attribute(die,0x13);\n    this->cu_language_ = (uint)iVar5;\n    if ((die->abbrev_code_ != (Abbrev_code *)0x0) && (die->abbrev_code_->tag == 0x11)) {\n      record_cu_ranges(this,die);\n    }\n    bVar2 = read_pubnames_and_pubtypes(this,die);\n    if (bVar2) {\n      return;\n    }\n    uVar1 = this->cu_language_;\n    if (uVar1 < 0xf) {\n      bVar2 = (bool)((byte)(0x6988 >> ((byte)uVar1 & 0x1f)) & 1);\n    }\n    if ((1 < uVar1 - 0x22) && (bVar2 == false)) {\n      if ((die->abbrev_code_ == (Abbrev_code *)0x0) || (die->abbrev_code_->tag != 0x11)) {\n        dwarf_tu_nopubnames_count = dwarf_tu_nopubnames_count + 1;\n      }\n      else {\n        dwarf_cu_nopubnames_count = dwarf_cu_nopubnames_count + 1;\n      }\n      visit_children(this,die,(Dwarf_die *)0x0);\n      return;\n    }\n    pcVar4 = (((this->super_Dwarf_info_reader).object_)->super_Object).name_._M_dataplus._M_p;\n    pcVar3 = "%s: --gdb-index currently supports only C and C++ languages";\n  }" else (compound_statement "{\n    iVar5 = Dwarf_die::int_attribute(die,0x13);\n    this->cu_language_ = (uint)iVar5;\n    if ((die->abbrev_code_ != (Abbrev_code *)0x0) && (die->abbrev_code_->tag == 0x11)) {\n      record_cu_ranges(this,die);\n    }\n    bVar2 = read_pubnames_and_pubtypes(this,die);\n    if (bVar2) {\n      return;\n    }\n    uVar1 = this->cu_language_;\n    if (uVar1 < 0xf) {\n      bVar2 = (bool)((byte)(0x6988 >> ((byte)uVar1 & 0x1f)) & 1);\n    }\n    if ((1 < uVar1 - 0x22) && (bVar2 == false)) {\n      if ((die->abbrev_code_ == (Abbrev_code *)0x0) || (die->abbrev_code_->tag != 0x11)) {\n        dwarf_tu_nopubnames_count = dwarf_tu_nopubnames_count + 1;\n      }\n      else {\n        dwarf_cu_nopubnames_count = dwarf_cu_nopubnames_count + 1;\n      }\n      visit_children(this,die,(Dwarf_die *)0x0);\n      return;\n    }\n    pcVar4 = (((this->super_Dwarf_info_reader).object_)->super_Object).name_._M_dataplus._M_p;\n    pcVar3 = "%s: --gdb-index currently supports only C and C++ languages";\n  }" { (ERROR "iVar5 = Dwarf_die::" (assignment_expression "iVar5 = Dwarf_die" identifier = identifier) : :) (expression_statement "int_attribute(die,0x13);" (call_expression "int_attribute(die,0x13)" identifier (argument_list "(die,0x13)" ( identifier , number_literal ))) ;) (expression_statement "this->cu_language_ = (uint)iVar5;" (assignment_expression "this->cu_language_ = (uint)iVar5" (field_expression "this->cu_language_" identifier -> field_identifier) = (cast_expression "(uint)iVar5" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if ((die->abbrev_code_ != (Abbrev_code *)0x0) && (die->abbrev_code_->tag == 0x11)) {\n      record_cu_ranges(this,die);\n    }" if (parenthesized_expression "((die->abbrev_code_ != (Abbrev_code *)0x0) && (die->abbrev_code_->tag == 0x11))" ( (binary_expression "(die->abbrev_code_ != (Abbrev_code *)0x0) && (die->abbrev_code_->tag == 0x11)" (parenthesized_expression "(die->abbrev_code_ != (Abbrev_code *)0x0)" ( (binary_expression "die->abbrev_code_ != (Abbrev_code *)0x0" (field_expression "die->abbrev_code_" identifier -> field_identifier) != (cast_expression "(Abbrev_code *)0x0" ( (type_descriptor "Abbrev_code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(die->abbrev_code_->tag == 0x11)" ( (binary_expression "die->abbrev_code_->tag == 0x11" (field_expression "die->abbrev_code_->tag" (field_expression "die->abbrev_code_" identifier -> field_identifier) -> field_identifier) == number_literal) ))) )) (compound_statement "{\n      record_cu_ranges(this,die);\n    }" { (expression_statement "record_cu_ranges(this,die);" (call_expression "record_cu_ranges(this,die)" identifier (argument_list "(this,die)" ( identifier , identifier ))) ;) })) (expression_statement "bVar2 = read_pubnames_and_pubtypes(this,die);" (assignment_expression "bVar2 = read_pubnames_and_pubtypes(this,die)" identifier = (call_expression "read_pubnames_and_pubtypes(this,die)" identifier (argument_list "(this,die)" ( identifier , identifier )))) ;) (if_statement "if (bVar2) {\n      return;\n    }" if (parenthesized_expression "(bVar2)" ( identifier )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (expression_statement "uVar1 = this->cu_language_;" (assignment_expression "uVar1 = this->cu_language_" identifier = (field_expression "this->cu_language_" identifier -> field_identifier)) ;) (if_statement "if (uVar1 < 0xf) {\n      bVar2 = (bool)((byte)(0x6988 >> ((byte)uVar1 & 0x1f)) & 1);\n    }" if (parenthesized_expression "(uVar1 < 0xf)" ( (binary_expression "uVar1 < 0xf" identifier < number_literal) )) (compound_statement "{\n      bVar2 = (bool)((byte)(0x6988 >> ((byte)uVar1 & 0x1f)) & 1);\n    }" { (expression_statement "bVar2 = (bool)((byte)(0x6988 >> ((byte)uVar1 & 0x1f)) & 1);" (assignment_expression "bVar2 = (bool)((byte)(0x6988 >> ((byte)uVar1 & 0x1f)) & 1)" identifier = (cast_expression "(bool)((byte)(0x6988 >> ((byte)uVar1 & 0x1f)) & 1)" ( (type_descriptor "bool" primitive_type) ) (parenthesized_expression "((byte)(0x6988 >> ((byte)uVar1 & 0x1f)) & 1)" ( (binary_expression "(byte)(0x6988 >> ((byte)uVar1 & 0x1f)) & 1" (call_expression "(byte)(0x6988 >> ((byte)uVar1 & 0x1f))" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(0x6988 >> ((byte)uVar1 & 0x1f))" ( (binary_expression "0x6988 >> ((byte)uVar1 & 0x1f)" number_literal >> (parenthesized_expression "((byte)uVar1 & 0x1f)" ( (binary_expression "(byte)uVar1 & 0x1f" (cast_expression "(byte)uVar1" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))) & number_literal) )))) ;) })) (if_statement "if ((1 < uVar1 - 0x22) && (bVar2 == false)) {\n      if ((die->abbrev_code_ == (Abbrev_code *)0x0) || (die->abbrev_code_->tag != 0x11)) {\n        dwarf_tu_nopubnames_count = dwarf_tu_nopubnames_count + 1;\n      }\n      else {\n        dwarf_cu_nopubnames_count = dwarf_cu_nopubnames_count + 1;\n      }\n      visit_children(this,die,(Dwarf_die *)0x0);\n      return;\n    }" if (parenthesized_expression "((1 < uVar1 - 0x22) && (bVar2 == false))" ( (binary_expression "(1 < uVar1 - 0x22) && (bVar2 == false)" (parenthesized_expression "(1 < uVar1 - 0x22)" ( (binary_expression "1 < uVar1 - 0x22" number_literal < (binary_expression "uVar1 - 0x22" identifier - number_literal)) )) && (parenthesized_expression "(bVar2 == false)" ( (binary_expression "bVar2 == false" identifier == false) ))) )) (compound_statement "{\n      if ((die->abbrev_code_ == (Abbrev_code *)0x0) || (die->abbrev_code_->tag != 0x11)) {\n        dwarf_tu_nopubnames_count = dwarf_tu_nopubnames_count + 1;\n      }\n      else {\n        dwarf_cu_nopubnames_count = dwarf_cu_nopubnames_count + 1;\n      }\n      visit_children(this,die,(Dwarf_die *)0x0);\n      return;\n    }" { (if_statement "if ((die->abbrev_code_ == (Abbrev_code *)0x0) || (die->abbrev_code_->tag != 0x11)) {\n        dwarf_tu_nopubnames_count = dwarf_tu_nopubnames_count + 1;\n      }\n      else {\n        dwarf_cu_nopubnames_count = dwarf_cu_nopubnames_count + 1;\n      }" if (parenthesized_expression "((die->abbrev_code_ == (Abbrev_code *)0x0) || (die->abbrev_code_->tag != 0x11))" ( (binary_expression "(die->abbrev_code_ == (Abbrev_code *)0x0) || (die->abbrev_code_->tag != 0x11)" (parenthesized_expression "(die->abbrev_code_ == (Abbrev_code *)0x0)" ( (binary_expression "die->abbrev_code_ == (Abbrev_code *)0x0" (field_expression "die->abbrev_code_" identifier -> field_identifier) == (cast_expression "(Abbrev_code *)0x0" ( (type_descriptor "Abbrev_code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(die->abbrev_code_->tag != 0x11)" ( (binary_expression "die->abbrev_code_->tag != 0x11" (field_expression "die->abbrev_code_->tag" (field_expression "die->abbrev_code_" identifier -> field_identifier) -> field_identifier) != number_literal) ))) )) (compound_statement "{\n        dwarf_tu_nopubnames_count = dwarf_tu_nopubnames_count + 1;\n      }" { (expression_statement "dwarf_tu_nopubnames_count = dwarf_tu_nopubnames_count + 1;" (assignment_expression "dwarf_tu_nopubnames_count = dwarf_tu_nopubnames_count + 1" identifier = (binary_expression "dwarf_tu_nopubnames_count + 1" identifier + number_literal)) ;) }) (else_clause "else {\n        dwarf_cu_nopubnames_count = dwarf_cu_nopubnames_count + 1;\n      }" else (compound_statement "{\n        dwarf_cu_nopubnames_count = dwarf_cu_nopubnames_count + 1;\n      }" { (expression_statement "dwarf_cu_nopubnames_count = dwarf_cu_nopubnames_count + 1;" (assignment_expression "dwarf_cu_nopubnames_count = dwarf_cu_nopubnames_count + 1" identifier = (binary_expression "dwarf_cu_nopubnames_count + 1" identifier + number_literal)) ;) }))) (expression_statement "visit_children(this,die,(Dwarf_die *)0x0);" (call_expression "visit_children(this,die,(Dwarf_die *)0x0)" identifier (argument_list "(this,die,(Dwarf_die *)0x0)" ( identifier , identifier , (cast_expression "(Dwarf_die *)0x0" ( (type_descriptor "Dwarf_die *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ))) ;) (return_statement "return;" return ;) })) (expression_statement "pcVar4 = (((this->super_Dwarf_info_reader).object_)->super_Object).name_._M_dataplus._M_p;" (assignment_expression "pcVar4 = (((this->super_Dwarf_info_reader).object_)->super_Object).name_._M_dataplus._M_p" identifier = (field_expression "(((this->super_Dwarf_info_reader).object_)->super_Object).name_._M_dataplus._M_p" (field_expression "(((this->super_Dwarf_info_reader).object_)->super_Object).name_._M_dataplus" (field_expression "(((this->super_Dwarf_info_reader).object_)->super_Object).name_" (parenthesized_expression "(((this->super_Dwarf_info_reader).object_)->super_Object)" ( (field_expression "((this->super_Dwarf_info_reader).object_)->super_Object" (parenthesized_expression "((this->super_Dwarf_info_reader).object_)" ( (field_expression "(this->super_Dwarf_info_reader).object_" (parenthesized_expression "(this->super_Dwarf_info_reader)" ( (field_expression "this->super_Dwarf_info_reader" identifier -> field_identifier) )) . field_identifier) )) -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier)) ;) (expression_statement "pcVar3 = "%s: --gdb-index currently supports only C and C++ languages";" (assignment_expression "pcVar3 = "%s: --gdb-index currently supports only C and C++ languages"" identifier = (string_literal ""%s: --gdb-index currently supports only C and C++ languages"" " string_content ")) ;) }))) (expression_statement "pcVar3 = (char *)gettext(pcVar3);" (assignment_expression "pcVar3 = (char *)gettext(pcVar3)" identifier = (cast_expression "(char *)gettext(pcVar3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "gettext(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier ))))) ;) (expression_statement "gold_warning(pcVar3,pcVar4);" (call_expression "gold_warning(pcVar3,pcVar4)" identifier (argument_list "(pcVar3,pcVar4)" ( identifier , identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit "void FUN_001c37d0(int param_1,int param_2)\n\n{\n  int iVar1;\n  uint uVar2;\n  char cVar3;\n  byte bVar4;\n  char *pcVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  \n  FUN_001c1430(param_1);\n  if ((*(int **)(param_2 + 0x28) == (int *)0x0) ||\n     ((iVar1 = **(int **)(param_2 + 0x28), iVar1 != 0x11 && (iVar1 != 0x41)))) {\n    uVar7 = *(undefined4 *)(*(int *)(param_1 + 8) + 4);\n    pcVar5 = "%s: top level DIE is not DW_TAG_compile_unit or DW_TAG_type_unit";\n  }\n  else {\n    uVar7 = FUN_00058450(param_2,0x13);\n    *(undefined4 *)(param_1 + 0x4cc) = uVar7;\n    if ((*(int **)(param_2 + 0x28) != (int *)0x0) && (**(int **)(param_2 + 0x28) == 0x11)) {\n      FUN_001c2670(param_1,param_2);\n    }\n    cVar3 = FUN_001c2d60(param_1,param_2);\n    if (cVar3 != '\0') {\n      return;\n    }\n    uVar2 = *(uint *)(param_1 + 0x4cc);\n    bVar4 = 0;\n    if (uVar2 < 0xf) {\n      bVar4 = (byte)(0x6988 >> ((byte)uVar2 & 0x1f)) & 1;\n    }\n    if ((1 < uVar2 - 0x22) && (bVar4 == 0)) {\n      if ((*(int **)(param_2 + 0x28) == (int *)0x0) || (**(int **)(param_2 + 0x28) != 0x11)) {\n        DAT_003962b4 = DAT_003962b4 + 1;\n      }\n      else {\n        DAT_003962bc = DAT_003962bc + 1;\n      }\n      FUN_001c3700(param_1,param_2,0);\n      return;\n    }\n    uVar7 = *(undefined4 *)(*(int *)(param_1 + 8) + 4);\n    pcVar5 = "%s: --gdb-index currently supports only C and C++ languages";\n  }\n  uVar6 = gettext(pcVar5);\n  FUN_000654e0(uVar6,uVar7);\n  return;\n}\n\n" (function_definition "void FUN_001c37d0(int param_1,int param_2)\n\n{\n  int iVar1;\n  uint uVar2;\n  char cVar3;\n  byte bVar4;\n  char *pcVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  \n  FUN_001c1430(param_1);\n  if ((*(int **)(param_2 + 0x28) == (int *)0x0) ||\n     ((iVar1 = **(int **)(param_2 + 0x28), iVar1 != 0x11 && (iVar1 != 0x41)))) {\n    uVar7 = *(undefined4 *)(*(int *)(param_1 + 8) + 4);\n    pcVar5 = "%s: top level DIE is not DW_TAG_compile_unit or DW_TAG_type_unit";\n  }\n  else {\n    uVar7 = FUN_00058450(param_2,0x13);\n    *(undefined4 *)(param_1 + 0x4cc) = uVar7;\n    if ((*(int **)(param_2 + 0x28) != (int *)0x0) && (**(int **)(param_2 + 0x28) == 0x11)) {\n      FUN_001c2670(param_1,param_2);\n    }\n    cVar3 = FUN_001c2d60(param_1,param_2);\n    if (cVar3 != '\0') {\n      return;\n    }\n    uVar2 = *(uint *)(param_1 + 0x4cc);\n    bVar4 = 0;\n    if (uVar2 < 0xf) {\n      bVar4 = (byte)(0x6988 >> ((byte)uVar2 & 0x1f)) & 1;\n    }\n    if ((1 < uVar2 - 0x22) && (bVar4 == 0)) {\n      if ((*(int **)(param_2 + 0x28) == (int *)0x0) || (**(int **)(param_2 + 0x28) != 0x11)) {\n        DAT_003962b4 = DAT_003962b4 + 1;\n      }\n      else {\n        DAT_003962bc = DAT_003962bc + 1;\n      }\n      FUN_001c3700(param_1,param_2,0);\n      return;\n    }\n    uVar7 = *(undefined4 *)(*(int *)(param_1 + 8) + 4);\n    pcVar5 = "%s: --gdb-index currently supports only C and C++ languages";\n  }\n  uVar6 = gettext(pcVar5);\n  FUN_000654e0(uVar6,uVar7);\n  return;\n}" primitive_type (function_declarator "FUN_001c37d0(int param_1,int param_2)" identifier (parameter_list "(int param_1,int param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  char cVar3;\n  byte bVar4;\n  char *pcVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  \n  FUN_001c1430(param_1);\n  if ((*(int **)(param_2 + 0x28) == (int *)0x0) ||\n     ((iVar1 = **(int **)(param_2 + 0x28), iVar1 != 0x11 && (iVar1 != 0x41)))) {\n    uVar7 = *(undefined4 *)(*(int *)(param_1 + 8) + 4);\n    pcVar5 = "%s: top level DIE is not DW_TAG_compile_unit or DW_TAG_type_unit";\n  }\n  else {\n    uVar7 = FUN_00058450(param_2,0x13);\n    *(undefined4 *)(param_1 + 0x4cc) = uVar7;\n    if ((*(int **)(param_2 + 0x28) != (int *)0x0) && (**(int **)(param_2 + 0x28) == 0x11)) {\n      FUN_001c2670(param_1,param_2);\n    }\n    cVar3 = FUN_001c2d60(param_1,param_2);\n    if (cVar3 != '\0') {\n      return;\n    }\n    uVar2 = *(uint *)(param_1 + 0x4cc);\n    bVar4 = 0;\n    if (uVar2 < 0xf) {\n      bVar4 = (byte)(0x6988 >> ((byte)uVar2 & 0x1f)) & 1;\n    }\n    if ((1 < uVar2 - 0x22) && (bVar4 == 0)) {\n      if ((*(int **)(param_2 + 0x28) == (int *)0x0) || (**(int **)(param_2 + 0x28) != 0x11)) {\n        DAT_003962b4 = DAT_003962b4 + 1;\n      }\n      else {\n        DAT_003962bc = DAT_003962bc + 1;\n      }\n      FUN_001c3700(param_1,param_2,0);\n      return;\n    }\n    uVar7 = *(undefined4 *)(*(int *)(param_1 + 8) + 4);\n    pcVar5 = "%s: --gdb-index currently supports only C and C++ languages";\n  }\n  uVar6 = gettext(pcVar5);\n  FUN_000654e0(uVar6,uVar7);\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "char cVar3;" primitive_type identifier ;) (declaration "byte bVar4;" type_identifier identifier ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (expression_statement "FUN_001c1430(param_1);" (call_expression "FUN_001c1430(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (if_statement "if ((*(int **)(param_2 + 0x28) == (int *)0x0) ||\n     ((iVar1 = **(int **)(param_2 + 0x28), iVar1 != 0x11 && (iVar1 != 0x41)))) {\n    uVar7 = *(undefined4 *)(*(int *)(param_1 + 8) + 4);\n    pcVar5 = "%s: top level DIE is not DW_TAG_compile_unit or DW_TAG_type_unit";\n  }\n  else {\n    uVar7 = FUN_00058450(param_2,0x13);\n    *(undefined4 *)(param_1 + 0x4cc) = uVar7;\n    if ((*(int **)(param_2 + 0x28) != (int *)0x0) && (**(int **)(param_2 + 0x28) == 0x11)) {\n      FUN_001c2670(param_1,param_2);\n    }\n    cVar3 = FUN_001c2d60(param_1,param_2);\n    if (cVar3 != '\0') {\n      return;\n    }\n    uVar2 = *(uint *)(param_1 + 0x4cc);\n    bVar4 = 0;\n    if (uVar2 < 0xf) {\n      bVar4 = (byte)(0x6988 >> ((byte)uVar2 & 0x1f)) & 1;\n    }\n    if ((1 < uVar2 - 0x22) && (bVar4 == 0)) {\n      if ((*(int **)(param_2 + 0x28) == (int *)0x0) || (**(int **)(param_2 + 0x28) != 0x11)) {\n        DAT_003962b4 = DAT_003962b4 + 1;\n      }\n      else {\n        DAT_003962bc = DAT_003962bc + 1;\n      }\n      FUN_001c3700(param_1,param_2,0);\n      return;\n    }\n    uVar7 = *(undefined4 *)(*(int *)(param_1 + 8) + 4);\n    pcVar5 = "%s: --gdb-index currently supports only C and C++ languages";\n  }" if (parenthesized_expression "((*(int **)(param_2 + 0x28) == (int *)0x0) ||\n     ((iVar1 = **(int **)(param_2 + 0x28), iVar1 != 0x11 && (iVar1 != 0x41))))" ( (binary_expression "(*(int **)(param_2 + 0x28) == (int *)0x0) ||\n     ((iVar1 = **(int **)(param_2 + 0x28), iVar1 != 0x11 && (iVar1 != 0x41)))" (parenthesized_expression "(*(int **)(param_2 + 0x28) == (int *)0x0)" ( (binary_expression "*(int **)(param_2 + 0x28) == (int *)0x0" (pointer_expression "*(int **)(param_2 + 0x28)" * (cast_expression "(int **)(param_2 + 0x28)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x28)" ( (binary_expression "param_2 + 0x28" identifier + number_literal) )))) == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "((iVar1 = **(int **)(param_2 + 0x28), iVar1 != 0x11 && (iVar1 != 0x41)))" ( (parenthesized_expression "(iVar1 = **(int **)(param_2 + 0x28), iVar1 != 0x11 && (iVar1 != 0x41))" ( (comma_expression "iVar1 = **(int **)(param_2 + 0x28), iVar1 != 0x11 && (iVar1 != 0x41)" (assignment_expression "iVar1 = **(int **)(param_2 + 0x28)" identifier = (pointer_expression "**(int **)(param_2 + 0x28)" * (pointer_expression "*(int **)(param_2 + 0x28)" * (cast_expression "(int **)(param_2 + 0x28)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x28)" ( (binary_expression "param_2 + 0x28" identifier + number_literal) )))))) , (binary_expression "iVar1 != 0x11 && (iVar1 != 0x41)" (binary_expression "iVar1 != 0x11" identifier != number_literal) && (parenthesized_expression "(iVar1 != 0x41)" ( (binary_expression "iVar1 != 0x41" identifier != number_literal) )))) )) ))) )) (compound_statement "{\n    uVar7 = *(undefined4 *)(*(int *)(param_1 + 8) + 4);\n    pcVar5 = "%s: top level DIE is not DW_TAG_compile_unit or DW_TAG_type_unit";\n  }" { (expression_statement "uVar7 = *(undefined4 *)(*(int *)(param_1 + 8) + 4);" (assignment_expression "uVar7 = *(undefined4 *)(*(int *)(param_1 + 8) + 4)" identifier = (pointer_expression "*(undefined4 *)(*(int *)(param_1 + 8) + 4)" * (cast_expression "(undefined4 *)(*(int *)(param_1 + 8) + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 8) + 4)" ( (binary_expression "*(int *)(param_1 + 8) + 4" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "pcVar5 = "%s: top level DIE is not DW_TAG_compile_unit or DW_TAG_type_unit";" (assignment_expression "pcVar5 = "%s: top level DIE is not DW_TAG_compile_unit or DW_TAG_type_unit"" identifier = (string_literal ""%s: top level DIE is not DW_TAG_compile_unit or DW_TAG_type_unit"" " string_content ")) ;) }) (else_clause "else {\n    uVar7 = FUN_00058450(param_2,0x13);\n    *(undefined4 *)(param_1 + 0x4cc) = uVar7;\n    if ((*(int **)(param_2 + 0x28) != (int *)0x0) && (**(int **)(param_2 + 0x28) == 0x11)) {\n      FUN_001c2670(param_1,param_2);\n    }\n    cVar3 = FUN_001c2d60(param_1,param_2);\n    if (cVar3 != '\0') {\n      return;\n    }\n    uVar2 = *(uint *)(param_1 + 0x4cc);\n    bVar4 = 0;\n    if (uVar2 < 0xf) {\n      bVar4 = (byte)(0x6988 >> ((byte)uVar2 & 0x1f)) & 1;\n    }\n    if ((1 < uVar2 - 0x22) && (bVar4 == 0)) {\n      if ((*(int **)(param_2 + 0x28) == (int *)0x0) || (**(int **)(param_2 + 0x28) != 0x11)) {\n        DAT_003962b4 = DAT_003962b4 + 1;\n      }\n      else {\n        DAT_003962bc = DAT_003962bc + 1;\n      }\n      FUN_001c3700(param_1,param_2,0);\n      return;\n    }\n    uVar7 = *(undefined4 *)(*(int *)(param_1 + 8) + 4);\n    pcVar5 = "%s: --gdb-index currently supports only C and C++ languages";\n  }" else (compound_statement "{\n    uVar7 = FUN_00058450(param_2,0x13);\n    *(undefined4 *)(param_1 + 0x4cc) = uVar7;\n    if ((*(int **)(param_2 + 0x28) != (int *)0x0) && (**(int **)(param_2 + 0x28) == 0x11)) {\n      FUN_001c2670(param_1,param_2);\n    }\n    cVar3 = FUN_001c2d60(param_1,param_2);\n    if (cVar3 != '\0') {\n      return;\n    }\n    uVar2 = *(uint *)(param_1 + 0x4cc);\n    bVar4 = 0;\n    if (uVar2 < 0xf) {\n      bVar4 = (byte)(0x6988 >> ((byte)uVar2 & 0x1f)) & 1;\n    }\n    if ((1 < uVar2 - 0x22) && (bVar4 == 0)) {\n      if ((*(int **)(param_2 + 0x28) == (int *)0x0) || (**(int **)(param_2 + 0x28) != 0x11)) {\n        DAT_003962b4 = DAT_003962b4 + 1;\n      }\n      else {\n        DAT_003962bc = DAT_003962bc + 1;\n      }\n      FUN_001c3700(param_1,param_2,0);\n      return;\n    }\n    uVar7 = *(undefined4 *)(*(int *)(param_1 + 8) + 4);\n    pcVar5 = "%s: --gdb-index currently supports only C and C++ languages";\n  }" { (expression_statement "uVar7 = FUN_00058450(param_2,0x13);" (assignment_expression "uVar7 = FUN_00058450(param_2,0x13)" identifier = (call_expression "FUN_00058450(param_2,0x13)" identifier (argument_list "(param_2,0x13)" ( identifier , number_literal )))) ;) (expression_statement "*(undefined4 *)(param_1 + 0x4cc) = uVar7;" (assignment_expression "*(undefined4 *)(param_1 + 0x4cc) = uVar7" (pointer_expression "*(undefined4 *)(param_1 + 0x4cc)" * (cast_expression "(undefined4 *)(param_1 + 0x4cc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4cc)" ( (binary_expression "param_1 + 0x4cc" identifier + number_literal) )))) = identifier) ;) (if_statement "if ((*(int **)(param_2 + 0x28) != (int *)0x0) && (**(int **)(param_2 + 0x28) == 0x11)) {\n      FUN_001c2670(param_1,param_2);\n    }" if (parenthesized_expression "((*(int **)(param_2 + 0x28) != (int *)0x0) && (**(int **)(param_2 + 0x28) == 0x11))" ( (binary_expression "(*(int **)(param_2 + 0x28) != (int *)0x0) && (**(int **)(param_2 + 0x28) == 0x11)" (parenthesized_expression "(*(int **)(param_2 + 0x28) != (int *)0x0)" ( (binary_expression "*(int **)(param_2 + 0x28) != (int *)0x0" (pointer_expression "*(int **)(param_2 + 0x28)" * (cast_expression "(int **)(param_2 + 0x28)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x28)" ( (binary_expression "param_2 + 0x28" identifier + number_literal) )))) != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(**(int **)(param_2 + 0x28) == 0x11)" ( (binary_expression "**(int **)(param_2 + 0x28) == 0x11" (pointer_expression "**(int **)(param_2 + 0x28)" * (pointer_expression "*(int **)(param_2 + 0x28)" * (cast_expression "(int **)(param_2 + 0x28)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x28)" ( (binary_expression "param_2 + 0x28" identifier + number_literal) ))))) == number_literal) ))) )) (compound_statement "{\n      FUN_001c2670(param_1,param_2);\n    }" { (expression_statement "FUN_001c2670(param_1,param_2);" (call_expression "FUN_001c2670(param_1,param_2)" identifier (argument_list "(param_1,param_2)" ( identifier , identifier ))) ;) })) (expression_statement "cVar3 = FUN_001c2d60(param_1,param_2);" (assignment_expression "cVar3 = FUN_001c2d60(param_1,param_2)" identifier = (call_expression "FUN_001c2d60(param_1,param_2)" identifier (argument_list "(param_1,param_2)" ( identifier , identifier )))) ;) (if_statement "if (cVar3 != '\0') {\n      return;\n    }" if (parenthesized_expression "(cVar3 != '\0')" ( (binary_expression "cVar3 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (expression_statement "uVar2 = *(uint *)(param_1 + 0x4cc);" (assignment_expression "uVar2 = *(uint *)(param_1 + 0x4cc)" identifier = (pointer_expression "*(uint *)(param_1 + 0x4cc)" * (cast_expression "(uint *)(param_1 + 0x4cc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4cc)" ( (binary_expression "param_1 + 0x4cc" identifier + number_literal) ))))) ;) (expression_statement "bVar4 = 0;" (assignment_expression "bVar4 = 0" identifier = number_literal) ;) (if_statement "if (uVar2 < 0xf) {\n      bVar4 = (byte)(0x6988 >> ((byte)uVar2 & 0x1f)) & 1;\n    }" if (parenthesized_expression "(uVar2 < 0xf)" ( (binary_expression "uVar2 < 0xf" identifier < number_literal) )) (compound_statement "{\n      bVar4 = (byte)(0x6988 >> ((byte)uVar2 & 0x1f)) & 1;\n    }" { (expression_statement "bVar4 = (byte)(0x6988 >> ((byte)uVar2 & 0x1f)) & 1;" (assignment_expression "bVar4 = (byte)(0x6988 >> ((byte)uVar2 & 0x1f)) & 1" identifier = (binary_expression "(byte)(0x6988 >> ((byte)uVar2 & 0x1f)) & 1" (call_expression "(byte)(0x6988 >> ((byte)uVar2 & 0x1f))" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(0x6988 >> ((byte)uVar2 & 0x1f))" ( (binary_expression "0x6988 >> ((byte)uVar2 & 0x1f)" number_literal >> (parenthesized_expression "((byte)uVar2 & 0x1f)" ( (binary_expression "(byte)uVar2 & 0x1f" (cast_expression "(byte)uVar2" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))) & number_literal)) ;) })) (if_statement "if ((1 < uVar2 - 0x22) && (bVar4 == 0)) {\n      if ((*(int **)(param_2 + 0x28) == (int *)0x0) || (**(int **)(param_2 + 0x28) != 0x11)) {\n        DAT_003962b4 = DAT_003962b4 + 1;\n      }\n      else {\n        DAT_003962bc = DAT_003962bc + 1;\n      }\n      FUN_001c3700(param_1,param_2,0);\n      return;\n    }" if (parenthesized_expression "((1 < uVar2 - 0x22) && (bVar4 == 0))" ( (binary_expression "(1 < uVar2 - 0x22) && (bVar4 == 0)" (parenthesized_expression "(1 < uVar2 - 0x22)" ( (binary_expression "1 < uVar2 - 0x22" number_literal < (binary_expression "uVar2 - 0x22" identifier - number_literal)) )) && (parenthesized_expression "(bVar4 == 0)" ( (binary_expression "bVar4 == 0" identifier == number_literal) ))) )) (compound_statement "{\n      if ((*(int **)(param_2 + 0x28) == (int *)0x0) || (**(int **)(param_2 + 0x28) != 0x11)) {\n        DAT_003962b4 = DAT_003962b4 + 1;\n      }\n      else {\n        DAT_003962bc = DAT_003962bc + 1;\n      }\n      FUN_001c3700(param_1,param_2,0);\n      return;\n    }" { (if_statement "if ((*(int **)(param_2 + 0x28) == (int *)0x0) || (**(int **)(param_2 + 0x28) != 0x11)) {\n        DAT_003962b4 = DAT_003962b4 + 1;\n      }\n      else {\n        DAT_003962bc = DAT_003962bc + 1;\n      }" if (parenthesized_expression "((*(int **)(param_2 + 0x28) == (int *)0x0) || (**(int **)(param_2 + 0x28) != 0x11))" ( (binary_expression "(*(int **)(param_2 + 0x28) == (int *)0x0) || (**(int **)(param_2 + 0x28) != 0x11)" (parenthesized_expression "(*(int **)(param_2 + 0x28) == (int *)0x0)" ( (binary_expression "*(int **)(param_2 + 0x28) == (int *)0x0" (pointer_expression "*(int **)(param_2 + 0x28)" * (cast_expression "(int **)(param_2 + 0x28)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x28)" ( (binary_expression "param_2 + 0x28" identifier + number_literal) )))) == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(**(int **)(param_2 + 0x28) != 0x11)" ( (binary_expression "**(int **)(param_2 + 0x28) != 0x11" (pointer_expression "**(int **)(param_2 + 0x28)" * (pointer_expression "*(int **)(param_2 + 0x28)" * (cast_expression "(int **)(param_2 + 0x28)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x28)" ( (binary_expression "param_2 + 0x28" identifier + number_literal) ))))) != number_literal) ))) )) (compound_statement "{\n        DAT_003962b4 = DAT_003962b4 + 1;\n      }" { (expression_statement "DAT_003962b4 = DAT_003962b4 + 1;" (assignment_expression "DAT_003962b4 = DAT_003962b4 + 1" identifier = (binary_expression "DAT_003962b4 + 1" identifier + number_literal)) ;) }) (else_clause "else {\n        DAT_003962bc = DAT_003962bc + 1;\n      }" else (compound_statement "{\n        DAT_003962bc = DAT_003962bc + 1;\n      }" { (expression_statement "DAT_003962bc = DAT_003962bc + 1;" (assignment_expression "DAT_003962bc = DAT_003962bc + 1" identifier = (binary_expression "DAT_003962bc + 1" identifier + number_literal)) ;) }))) (expression_statement "FUN_001c3700(param_1,param_2,0);" (call_expression "FUN_001c3700(param_1,param_2,0)" identifier (argument_list "(param_1,param_2,0)" ( identifier , identifier , number_literal ))) ;) (return_statement "return;" return ;) })) (expression_statement "uVar7 = *(undefined4 *)(*(int *)(param_1 + 8) + 4);" (assignment_expression "uVar7 = *(undefined4 *)(*(int *)(param_1 + 8) + 4)" identifier = (pointer_expression "*(undefined4 *)(*(int *)(param_1 + 8) + 4)" * (cast_expression "(undefined4 *)(*(int *)(param_1 + 8) + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 8) + 4)" ( (binary_expression "*(int *)(param_1 + 8) + 4" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "pcVar5 = "%s: --gdb-index currently supports only C and C++ languages";" (assignment_expression "pcVar5 = "%s: --gdb-index currently supports only C and C++ languages"" identifier = (string_literal ""%s: --gdb-index currently supports only C and C++ languages"" " string_content ")) ;) }))) (expression_statement "uVar6 = gettext(pcVar5);" (assignment_expression "uVar6 = gettext(pcVar5)" identifier = (call_expression "gettext(pcVar5)" identifier (argument_list "(pcVar5)" ( identifier )))) ;) (expression_statement "FUN_000654e0(uVar6,uVar7);" (call_expression "FUN_000654e0(uVar6,uVar7)" identifier (argument_list "(uVar6,uVar7)" ( identifier , identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) || (parenthesized_expression ( (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) , (binary_expression (binary_expression IDENT != LIT) && (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) == LIT) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (return_statement return ;) })) (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 = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression LIT >> (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) ))) ))) & LIT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < (binary_expression IDENT - LIT)) )) && (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) || (parenthesized_expression ( (binary_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) != LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }))) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , LIT ))) ;) (return_statement return ;) })) (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 TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) }))) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (return_statement return ;) })))
(function_definition "void FUN_001c37d0(int param_1,int param_2)\n\n{\n  int iVar1;\n  uint uVar2;\n  char cVar3;\n  byte bVar4;\n  char *pcVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  \n  FUN_001c1430(param_1);\n  if ((*(int **)(param_2 + 0x28) == (int *)0x0) ||\n     ((iVar1 = **(int **)(param_2 + 0x28), iVar1 != 0x11 && (iVar1 != 0x41)))) {\n    uVar7 = *(undefined4 *)(*(int *)(param_1 + 8) + 4);\n    pcVar5 = "%s: top level DIE is not DW_TAG_compile_unit or DW_TAG_type_unit";\n  }\n  else {\n    uVar7 = FUN_00058450(param_2,0x13);\n    *(undefined4 *)(param_1 + 0x4cc) = uVar7;\n    if ((*(int **)(param_2 + 0x28) != (int *)0x0) && (**(int **)(param_2 + 0x28) == 0x11)) {\n      FUN_001c2670(param_1,param_2);\n    }\n    cVar3 = FUN_001c2d60(param_1,param_2);\n    if (cVar3 != '\0') {\n      return;\n    }\n    uVar2 = *(uint *)(param_1 + 0x4cc);\n    bVar4 = 0;\n    if (uVar2 < 0xf) {\n      bVar4 = (byte)(0x6988 >> ((byte)uVar2 & 0x1f)) & 1;\n    }\n    if ((1 < uVar2 - 0x22) && (bVar4 == 0)) {\n      if ((*(int **)(param_2 + 0x28) == (int *)0x0) || (**(int **)(param_2 + 0x28) != 0x11)) {\n        DAT_003962b4 = DAT_003962b4 + 1;\n      }\n      else {\n        DAT_003962bc = DAT_003962bc + 1;\n      }\n      FUN_001c3700(param_1,param_2,0);\n      return;\n    }\n    uVar7 = *(undefined4 *)(*(int *)(param_1 + 8) + 4);\n    pcVar5 = "%s: --gdb-index currently supports only C and C++ languages";\n  }\n  uVar6 = gettext(pcVar5);\n  FUN_000654e0(uVar6,uVar7);\n  return;\n}" (primitive_type "void") (function_declarator "FUN_001c37d0(int param_1,int param_2)" (identifier "FUN_001c37d0") (parameter_list "(int param_1,int param_2)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) () ")"))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  char cVar3;\n  byte bVar4;\n  char *pcVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  \n  FUN_001c1430(param_1);\n  if ((*(int **)(param_2 + 0x28) == (int *)0x0) ||\n     ((iVar1 = **(int **)(param_2 + 0x28), iVar1 != 0x11 && (iVar1 != 0x41)))) {\n    uVar7 = *(undefined4 *)(*(int *)(param_1 + 8) + 4);\n    pcVar5 = "%s: top level DIE is not DW_TAG_compile_unit or DW_TAG_type_unit";\n  }\n  else {\n    uVar7 = FUN_00058450(param_2,0x13);\n    *(undefined4 *)(param_1 + 0x4cc) = uVar7;\n    if ((*(int **)(param_2 + 0x28) != (int *)0x0) && (**(int **)(param_2 + 0x28) == 0x11)) {\n      FUN_001c2670(param_1,param_2);\n    }\n    cVar3 = FUN_001c2d60(param_1,param_2);\n    if (cVar3 != '\0') {\n      return;\n    }\n    uVar2 = *(uint *)(param_1 + 0x4cc);\n    bVar4 = 0;\n    if (uVar2 < 0xf) {\n      bVar4 = (byte)(0x6988 >> ((byte)uVar2 & 0x1f)) & 1;\n    }\n    if ((1 < uVar2 - 0x22) && (bVar4 == 0)) {\n      if ((*(int **)(param_2 + 0x28) == (int *)0x0) || (**(int **)(param_2 + 0x28) != 0x11)) {\n        DAT_003962b4 = DAT_003962b4 + 1;\n      }\n      else {\n        DAT_003962bc = DAT_003962bc + 1;\n      }\n      FUN_001c3700(param_1,param_2,0);\n      return;\n    }\n    uVar7 = *(undefined4 *)(*(int *)(param_1 + 8) + 4);\n    pcVar5 = "%s: --gdb-index currently supports only C and C++ languages";\n  }\n  uVar6 = gettext(pcVar5);\n  FUN_000654e0(uVar6,uVar7);\n  return;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "char cVar3;" (primitive_type "char") (identifier "cVar3") (; ";")) (declaration "byte bVar4;" (type_identifier "byte") (identifier "bVar4") (; ";")) (declaration "char *pcVar5;" (primitive_type "char") (pointer_declarator "*pcVar5" (* "*") (identifier "pcVar5")) (; ";")) (declaration "undefined4 uVar6;" (type_identifier "undefined4") (identifier "uVar6") (; ";")) (declaration "undefined4 uVar7;" (type_identifier "undefined4") (identifier "uVar7") (; ";")) (expression_statement "FUN_001c1430(param_1);" (call_expression "FUN_001c1430(param_1)" (identifier "FUN_001c1430") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";")) (if_statement "if ((*(int **)(param_2 + 0x28) == (int *)0x0) ||\n     ((iVar1 = **(int **)(param_2 + 0x28), iVar1 != 0x11 && (iVar1 != 0x41)))) {\n    uVar7 = *(undefined4 *)(*(int *)(param_1 + 8) + 4);\n    pcVar5 = "%s: top level DIE is not DW_TAG_compile_unit or DW_TAG_type_unit";\n  }\n  else {\n    uVar7 = FUN_00058450(param_2,0x13);\n    *(undefined4 *)(param_1 + 0x4cc) = uVar7;\n    if ((*(int **)(param_2 + 0x28) != (int *)0x0) && (**(int **)(param_2 + 0x28) == 0x11)) {\n      FUN_001c2670(param_1,param_2);\n    }\n    cVar3 = FUN_001c2d60(param_1,param_2);\n    if (cVar3 != '\0') {\n      return;\n    }\n    uVar2 = *(uint *)(param_1 + 0x4cc);\n    bVar4 = 0;\n    if (uVar2 < 0xf) {\n      bVar4 = (byte)(0x6988 >> ((byte)uVar2 & 0x1f)) & 1;\n    }\n    if ((1 < uVar2 - 0x22) && (bVar4 == 0)) {\n      if ((*(int **)(param_2 + 0x28) == (int *)0x0) || (**(int **)(param_2 + 0x28) != 0x11)) {\n        DAT_003962b4 = DAT_003962b4 + 1;\n      }\n      else {\n        DAT_003962bc = DAT_003962bc + 1;\n      }\n      FUN_001c3700(param_1,param_2,0);\n      return;\n    }\n    uVar7 = *(undefined4 *)(*(int *)(param_1 + 8) + 4);\n    pcVar5 = "%s: --gdb-index currently supports only C and C++ languages";\n  }" (if "if") (parenthesized_expression "((*(int **)(param_2 + 0x28) == (int *)0x0) ||\n     ((iVar1 = **(int **)(param_2 + 0x28), iVar1 != 0x11 && (iVar1 != 0x41))))" (( "(") (binary_expression "(*(int **)(param_2 + 0x28) == (int *)0x0) ||\n     ((iVar1 = **(int **)(param_2 + 0x28), iVar1 != 0x11 && (iVar1 != 0x41)))" (parenthesized_expression "(*(int **)(param_2 + 0x28) == (int *)0x0)" (( "(") (binary_expression "*(int **)(param_2 + 0x28) == (int *)0x0" (pointer_expression "*(int **)(param_2 + 0x28)" (* "*") (cast_expression "(int **)(param_2 + 0x28)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 0x28)" (( "(") (binary_expression "param_2 + 0x28" (identifier "param_2") (+ "+") (number_literal "0x28")) () ")")))) (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (|| "||") (parenthesized_expression "((iVar1 = **(int **)(param_2 + 0x28), iVar1 != 0x11 && (iVar1 != 0x41)))" (( "(") (parenthesized_expression "(iVar1 = **(int **)(param_2 + 0x28), iVar1 != 0x11 && (iVar1 != 0x41))" (( "(") (comma_expression "iVar1 = **(int **)(param_2 + 0x28), iVar1 != 0x11 && (iVar1 != 0x41)" (assignment_expression "iVar1 = **(int **)(param_2 + 0x28)" (identifier "iVar1") (= "=") (pointer_expression "**(int **)(param_2 + 0x28)" (* "*") (pointer_expression "*(int **)(param_2 + 0x28)" (* "*") (cast_expression "(int **)(param_2 + 0x28)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 0x28)" (( "(") (binary_expression "param_2 + 0x28" (identifier "param_2") (+ "+") (number_literal "0x28")) () ")")))))) (, ",") (binary_expression "iVar1 != 0x11 && (iVar1 != 0x41)" (binary_expression "iVar1 != 0x11" (identifier "iVar1") (!= "!=") (number_literal "0x11")) (&& "&&") (parenthesized_expression "(iVar1 != 0x41)" (( "(") (binary_expression "iVar1 != 0x41" (identifier "iVar1") (!= "!=") (number_literal "0x41")) () ")")))) () ")")) () ")"))) () ")")) (compound_statement "{\n    uVar7 = *(undefined4 *)(*(int *)(param_1 + 8) + 4);\n    pcVar5 = "%s: top level DIE is not DW_TAG_compile_unit or DW_TAG_type_unit";\n  }" ({ "{") (expression_statement "uVar7 = *(undefined4 *)(*(int *)(param_1 + 8) + 4);" (assignment_expression "uVar7 = *(undefined4 *)(*(int *)(param_1 + 8) + 4)" (identifier "uVar7") (= "=") (pointer_expression "*(undefined4 *)(*(int *)(param_1 + 8) + 4)" (* "*") (cast_expression "(undefined4 *)(*(int *)(param_1 + 8) + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 8) + 4)" (( "(") (binary_expression "*(int *)(param_1 + 8) + 4" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "pcVar5 = "%s: top level DIE is not DW_TAG_compile_unit or DW_TAG_type_unit";" (assignment_expression "pcVar5 = "%s: top level DIE is not DW_TAG_compile_unit or DW_TAG_type_unit"" (identifier "pcVar5") (= "=") (string_literal ""%s: top level DIE is not DW_TAG_compile_unit or DW_TAG_type_unit"" (" """) (string_content "%s: top level DIE is not DW_TAG_compile_unit or DW_TAG_type_unit") (" """))) (; ";")) (} "}")) (else_clause "else {\n    uVar7 = FUN_00058450(param_2,0x13);\n    *(undefined4 *)(param_1 + 0x4cc) = uVar7;\n    if ((*(int **)(param_2 + 0x28) != (int *)0x0) && (**(int **)(param_2 + 0x28) == 0x11)) {\n      FUN_001c2670(param_1,param_2);\n    }\n    cVar3 = FUN_001c2d60(param_1,param_2);\n    if (cVar3 != '\0') {\n      return;\n    }\n    uVar2 = *(uint *)(param_1 + 0x4cc);\n    bVar4 = 0;\n    if (uVar2 < 0xf) {\n      bVar4 = (byte)(0x6988 >> ((byte)uVar2 & 0x1f)) & 1;\n    }\n    if ((1 < uVar2 - 0x22) && (bVar4 == 0)) {\n      if ((*(int **)(param_2 + 0x28) == (int *)0x0) || (**(int **)(param_2 + 0x28) != 0x11)) {\n        DAT_003962b4 = DAT_003962b4 + 1;\n      }\n      else {\n        DAT_003962bc = DAT_003962bc + 1;\n      }\n      FUN_001c3700(param_1,param_2,0);\n      return;\n    }\n    uVar7 = *(undefined4 *)(*(int *)(param_1 + 8) + 4);\n    pcVar5 = "%s: --gdb-index currently supports only C and C++ languages";\n  }" (else "else") (compound_statement "{\n    uVar7 = FUN_00058450(param_2,0x13);\n    *(undefined4 *)(param_1 + 0x4cc) = uVar7;\n    if ((*(int **)(param_2 + 0x28) != (int *)0x0) && (**(int **)(param_2 + 0x28) == 0x11)) {\n      FUN_001c2670(param_1,param_2);\n    }\n    cVar3 = FUN_001c2d60(param_1,param_2);\n    if (cVar3 != '\0') {\n      return;\n    }\n    uVar2 = *(uint *)(param_1 + 0x4cc);\n    bVar4 = 0;\n    if (uVar2 < 0xf) {\n      bVar4 = (byte)(0x6988 >> ((byte)uVar2 & 0x1f)) & 1;\n    }\n    if ((1 < uVar2 - 0x22) && (bVar4 == 0)) {\n      if ((*(int **)(param_2 + 0x28) == (int *)0x0) || (**(int **)(param_2 + 0x28) != 0x11)) {\n        DAT_003962b4 = DAT_003962b4 + 1;\n      }\n      else {\n        DAT_003962bc = DAT_003962bc + 1;\n      }\n      FUN_001c3700(param_1,param_2,0);\n      return;\n    }\n    uVar7 = *(undefined4 *)(*(int *)(param_1 + 8) + 4);\n    pcVar5 = "%s: --gdb-index currently supports only C and C++ languages";\n  }" ({ "{") (expression_statement "uVar7 = FUN_00058450(param_2,0x13);" (assignment_expression "uVar7 = FUN_00058450(param_2,0x13)" (identifier "uVar7") (= "=") (call_expression "FUN_00058450(param_2,0x13)" (identifier "FUN_00058450") (argument_list "(param_2,0x13)" (( "(") (identifier "param_2") (, ",") (number_literal "0x13") () ")")))) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0x4cc) = uVar7;" (assignment_expression "*(undefined4 *)(param_1 + 0x4cc) = uVar7" (pointer_expression "*(undefined4 *)(param_1 + 0x4cc)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x4cc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x4cc)" (( "(") (binary_expression "param_1 + 0x4cc" (identifier "param_1") (+ "+") (number_literal "0x4cc")) () ")")))) (= "=") (identifier "uVar7")) (; ";")) (if_statement "if ((*(int **)(param_2 + 0x28) != (int *)0x0) && (**(int **)(param_2 + 0x28) == 0x11)) {\n      FUN_001c2670(param_1,param_2);\n    }" (if "if") (parenthesized_expression "((*(int **)(param_2 + 0x28) != (int *)0x0) && (**(int **)(param_2 + 0x28) == 0x11))" (( "(") (binary_expression "(*(int **)(param_2 + 0x28) != (int *)0x0) && (**(int **)(param_2 + 0x28) == 0x11)" (parenthesized_expression "(*(int **)(param_2 + 0x28) != (int *)0x0)" (( "(") (binary_expression "*(int **)(param_2 + 0x28) != (int *)0x0" (pointer_expression "*(int **)(param_2 + 0x28)" (* "*") (cast_expression "(int **)(param_2 + 0x28)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 0x28)" (( "(") (binary_expression "param_2 + 0x28" (identifier "param_2") (+ "+") (number_literal "0x28")) () ")")))) (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(**(int **)(param_2 + 0x28) == 0x11)" (( "(") (binary_expression "**(int **)(param_2 + 0x28) == 0x11" (pointer_expression "**(int **)(param_2 + 0x28)" (* "*") (pointer_expression "*(int **)(param_2 + 0x28)" (* "*") (cast_expression "(int **)(param_2 + 0x28)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 0x28)" (( "(") (binary_expression "param_2 + 0x28" (identifier "param_2") (+ "+") (number_literal "0x28")) () ")"))))) (== "==") (number_literal "0x11")) () ")"))) () ")")) (compound_statement "{\n      FUN_001c2670(param_1,param_2);\n    }" ({ "{") (expression_statement "FUN_001c2670(param_1,param_2);" (call_expression "FUN_001c2670(param_1,param_2)" (identifier "FUN_001c2670") (argument_list "(param_1,param_2)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") () ")"))) (; ";")) (} "}"))) (expression_statement "cVar3 = FUN_001c2d60(param_1,param_2);" (assignment_expression "cVar3 = FUN_001c2d60(param_1,param_2)" (identifier "cVar3") (= "=") (call_expression "FUN_001c2d60(param_1,param_2)" (identifier "FUN_001c2d60") (argument_list "(param_1,param_2)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") () ")")))) (; ";")) (if_statement "if (cVar3 != '\0') {\n      return;\n    }" (if "if") (parenthesized_expression "(cVar3 != '\0')" (( "(") (binary_expression "cVar3 != '\0'" (identifier "cVar3") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      return;\n    }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "uVar2 = *(uint *)(param_1 + 0x4cc);" (assignment_expression "uVar2 = *(uint *)(param_1 + 0x4cc)" (identifier "uVar2") (= "=") (pointer_expression "*(uint *)(param_1 + 0x4cc)" (* "*") (cast_expression "(uint *)(param_1 + 0x4cc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x4cc)" (( "(") (binary_expression "param_1 + 0x4cc" (identifier "param_1") (+ "+") (number_literal "0x4cc")) () ")"))))) (; ";")) (expression_statement "bVar4 = 0;" (assignment_expression "bVar4 = 0" (identifier "bVar4") (= "=") (number_literal "0")) (; ";")) (if_statement "if (uVar2 < 0xf) {\n      bVar4 = (byte)(0x6988 >> ((byte)uVar2 & 0x1f)) & 1;\n    }" (if "if") (parenthesized_expression "(uVar2 < 0xf)" (( "(") (binary_expression "uVar2 < 0xf" (identifier "uVar2") (< "<") (number_literal "0xf")) () ")")) (compound_statement "{\n      bVar4 = (byte)(0x6988 >> ((byte)uVar2 & 0x1f)) & 1;\n    }" ({ "{") (expression_statement "bVar4 = (byte)(0x6988 >> ((byte)uVar2 & 0x1f)) & 1;" (assignment_expression "bVar4 = (byte)(0x6988 >> ((byte)uVar2 & 0x1f)) & 1" (identifier "bVar4") (= "=") (binary_expression "(byte)(0x6988 >> ((byte)uVar2 & 0x1f)) & 1" (call_expression "(byte)(0x6988 >> ((byte)uVar2 & 0x1f))" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(0x6988 >> ((byte)uVar2 & 0x1f))" (( "(") (binary_expression "0x6988 >> ((byte)uVar2 & 0x1f)" (number_literal "0x6988") (>> ">>") (parenthesized_expression "((byte)uVar2 & 0x1f)" (( "(") (binary_expression "(byte)uVar2 & 0x1f" (cast_expression "(byte)uVar2" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar2")) (& "&") (number_literal "0x1f")) () ")"))) () ")"))) (& "&") (number_literal "1"))) (; ";")) (} "}"))) (if_statement "if ((1 < uVar2 - 0x22) && (bVar4 == 0)) {\n      if ((*(int **)(param_2 + 0x28) == (int *)0x0) || (**(int **)(param_2 + 0x28) != 0x11)) {\n        DAT_003962b4 = DAT_003962b4 + 1;\n      }\n      else {\n        DAT_003962bc = DAT_003962bc + 1;\n      }\n      FUN_001c3700(param_1,param_2,0);\n      return;\n    }" (if "if") (parenthesized_expression "((1 < uVar2 - 0x22) && (bVar4 == 0))" (( "(") (binary_expression "(1 < uVar2 - 0x22) && (bVar4 == 0)" (parenthesized_expression "(1 < uVar2 - 0x22)" (( "(") (binary_expression "1 < uVar2 - 0x22" (number_literal "1") (< "<") (binary_expression "uVar2 - 0x22" (identifier "uVar2") (- "-") (number_literal "0x22"))) () ")")) (&& "&&") (parenthesized_expression "(bVar4 == 0)" (( "(") (binary_expression "bVar4 == 0" (identifier "bVar4") (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n      if ((*(int **)(param_2 + 0x28) == (int *)0x0) || (**(int **)(param_2 + 0x28) != 0x11)) {\n        DAT_003962b4 = DAT_003962b4 + 1;\n      }\n      else {\n        DAT_003962bc = DAT_003962bc + 1;\n      }\n      FUN_001c3700(param_1,param_2,0);\n      return;\n    }" ({ "{") (if_statement "if ((*(int **)(param_2 + 0x28) == (int *)0x0) || (**(int **)(param_2 + 0x28) != 0x11)) {\n        DAT_003962b4 = DAT_003962b4 + 1;\n      }\n      else {\n        DAT_003962bc = DAT_003962bc + 1;\n      }" (if "if") (parenthesized_expression "((*(int **)(param_2 + 0x28) == (int *)0x0) || (**(int **)(param_2 + 0x28) != 0x11))" (( "(") (binary_expression "(*(int **)(param_2 + 0x28) == (int *)0x0) || (**(int **)(param_2 + 0x28) != 0x11)" (parenthesized_expression "(*(int **)(param_2 + 0x28) == (int *)0x0)" (( "(") (binary_expression "*(int **)(param_2 + 0x28) == (int *)0x0" (pointer_expression "*(int **)(param_2 + 0x28)" (* "*") (cast_expression "(int **)(param_2 + 0x28)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 0x28)" (( "(") (binary_expression "param_2 + 0x28" (identifier "param_2") (+ "+") (number_literal "0x28")) () ")")))) (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (|| "||") (parenthesized_expression "(**(int **)(param_2 + 0x28) != 0x11)" (( "(") (binary_expression "**(int **)(param_2 + 0x28) != 0x11" (pointer_expression "**(int **)(param_2 + 0x28)" (* "*") (pointer_expression "*(int **)(param_2 + 0x28)" (* "*") (cast_expression "(int **)(param_2 + 0x28)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 0x28)" (( "(") (binary_expression "param_2 + 0x28" (identifier "param_2") (+ "+") (number_literal "0x28")) () ")"))))) (!= "!=") (number_literal "0x11")) () ")"))) () ")")) (compound_statement "{\n        DAT_003962b4 = DAT_003962b4 + 1;\n      }" ({ "{") (expression_statement "DAT_003962b4 = DAT_003962b4 + 1;" (assignment_expression "DAT_003962b4 = DAT_003962b4 + 1" (identifier "DAT_003962b4") (= "=") (binary_expression "DAT_003962b4 + 1" (identifier "DAT_003962b4") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n        DAT_003962bc = DAT_003962bc + 1;\n      }" (else "else") (compound_statement "{\n        DAT_003962bc = DAT_003962bc + 1;\n      }" ({ "{") (expression_statement "DAT_003962bc = DAT_003962bc + 1;" (assignment_expression "DAT_003962bc = DAT_003962bc + 1" (identifier "DAT_003962bc") (= "=") (binary_expression "DAT_003962bc + 1" (identifier "DAT_003962bc") (+ "+") (number_literal "1"))) (; ";")) (} "}")))) (expression_statement "FUN_001c3700(param_1,param_2,0);" (call_expression "FUN_001c3700(param_1,param_2,0)" (identifier "FUN_001c3700") (argument_list "(param_1,param_2,0)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (number_literal "0") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "uVar7 = *(undefined4 *)(*(int *)(param_1 + 8) + 4);" (assignment_expression "uVar7 = *(undefined4 *)(*(int *)(param_1 + 8) + 4)" (identifier "uVar7") (= "=") (pointer_expression "*(undefined4 *)(*(int *)(param_1 + 8) + 4)" (* "*") (cast_expression "(undefined4 *)(*(int *)(param_1 + 8) + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 8) + 4)" (( "(") (binary_expression "*(int *)(param_1 + 8) + 4" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "pcVar5 = "%s: --gdb-index currently supports only C and C++ languages";" (assignment_expression "pcVar5 = "%s: --gdb-index currently supports only C and C++ languages"" (identifier "pcVar5") (= "=") (string_literal ""%s: --gdb-index currently supports only C and C++ languages"" (" """) (string_content "%s: --gdb-index currently supports only C and C++ languages") (" """))) (; ";")) (} "}")))) (expression_statement "uVar6 = gettext(pcVar5);" (assignment_expression "uVar6 = gettext(pcVar5)" (identifier "uVar6") (= "=") (call_expression "gettext(pcVar5)" (identifier "gettext") (argument_list "(pcVar5)" (( "(") (identifier "pcVar5") () ")")))) (; ";")) (expression_statement "FUN_000654e0(uVar6,uVar7);" (call_expression "FUN_000654e0(uVar6,uVar7)" (identifier "FUN_000654e0") (argument_list "(uVar6,uVar7)" (( "(") (identifier "uVar6") (, ",") (identifier "uVar7") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* DWARF original prototype: void visit_top_die(Gdb_index_info_reader * this, Dwarf_die * die) */

void __thiscall
gold::type_1::function_1(type_1 *this,type_2 *die)

{
  type_3 var_2;
  bool var_6;
  char *pcVar3;
  type_4 pcVar4;
  int64_t iVar5;
  
  var_1(this);
  if ((die->abbrev_code_ == (type_5 *)0x0) ||
     ((var_2 = die->abbrev_code_->tag, var_2 != 0x11 && (var_2 != 0x41)))) {
    pcVar4 = (((this->super_Dwarf_info_reader).object_)->super_Object).name_._M_dataplus._M_p;
    pcVar3 = "%s: top level DIE is not DW_TAG_compile_unit or DW_TAG_type_unit";
  }
  else {
    iVar5 = type_2::var_3(die,0x13);
    this->cu_language_ = (type_3)iVar5;
    if ((die->abbrev_code_ != (type_5 *)0x0) && (die->abbrev_code_->tag == 0x11)) {
      var_4(this,die);
    }
    var_6 = var_5(this,die);
    if (var_6) {
      return;
    }
    var_2 = this->cu_language_;
    if (var_2 < 0xf) {
      var_6 = (bool)((type_6)(0x6988 >> ((type_6)var_2 & 0x1f)) & 1);
    }
    if ((1 < var_2 - 0x22) && (var_6 == false)) {
      if ((die->abbrev_code_ == (type_5 *)0x0) || (die->abbrev_code_->tag != 0x11)) {
        var_7 = var_7 + 1;
      }
      else {
        var_8 = var_8 + 1;
      }
      var_9(this,die,(type_2 *)0x0);
      return;
    }
    pcVar4 = (((this->super_Dwarf_info_reader).object_)->super_Object).name_._M_dataplus._M_p;
    pcVar3 = "%s: --gdb-index currently supports only C and C++ languages";
  }
  pcVar3 = (char *)var_10(pcVar3);
  var_11(pcVar3,pcVar4);
  return;
}


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

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

void MASKED(int param_1,int param_2)

{
  int iVar1;
  uint uVar2;
  char cVar3;
  byte bVar4;
  char *pcVar5;
  undefined4 uVar6;
  undefined4 uVar7;
  
  FUN_001c1430(param_1);
  if ((*(int **)(param_2 + 0x28) == (int *)0x0) ||
     ((iVar1 = **(int **)(param_2 + 0x28), iVar1 != 0x11 && (iVar1 != 0x41)))) {
    uVar7 = *(undefined4 *)(*(int *)(param_1 + 8) + 4);
    pcVar5 = "%s: top level DIE is not DW_TAG_compile_unit or DW_TAG_type_unit";
  }
  else {
    uVar7 = FUN_00058450(param_2,0x13);
    *(undefined4 *)(param_1 + 0x4cc) = uVar7;
    if ((*(int **)(param_2 + 0x28) != (int *)0x0) && (**(int **)(param_2 + 0x28) == 0x11)) {
      FUN_001c2670(param_1,param_2);
    }
    cVar3 = FUN_001c2d60(param_1,param_2);
    if (cVar3 != '\0') {
      return;
    }
    uVar2 = *(uint *)(param_1 + 0x4cc);
    bVar4 = 0;
    if (uVar2 < 0xf) {
      bVar4 = (byte)(0x6988 >> ((byte)uVar2 & 0x1f)) & 1;
    }
    if ((1 < uVar2 - 0x22) && (bVar4 == 0)) {
      if ((*(int **)(param_2 + 0x28) == (int *)0x0) || (**(int **)(param_2 + 0x28) != 0x11)) {
        DAT_003962b4 = DAT_003962b4 + 1;
      }
      else {
        DAT_003962bc = DAT_003962bc + 1;
      }
      FUN_001c3700(param_1,param_2,0);
      return;
    }
    uVar7 = *(undefined4 *)(*(int *)(param_1 + 8) + 4);
    pcVar5 = "%s: --gdb-index currently supports only C and C++ languages";
  }
  uVar6 = gettext(pcVar5);
  FUN_000654e0(uVar6,uVar7);
  return;
}

