
/* DWARF original prototype: bool read_pubnames_and_pubtypes(Gdb_index_info_reader * this, Dwarf_die
   * die) */

bool __thiscall
gold::Gdb_index_info_reader::read_pubnames_and_pubtypes(Gdb_index_info_reader *this,Dwarf_die *die)

{
  Relobj *pRVar1;
  bool bVar2;
  bool bVar3;
  off_t oVar4;
  off_t oVar5;
  uint64_t uVar6;
  char *pcVar7;
  Gdb_index *pGVar8;
  uint shndx;
  
  if (((die->abbrev_code_ == (Abbrev_code *)0x0) || (die->abbrev_code_->tag != 0x41)) ||
     (pcVar7 = Dwarf_die::string_attribute(die,0x2130), pcVar7 == (char *)0x0)) {
    oVar4 = Dwarf_die::ref_attribute(die,0x10,&shndx);
    oVar5 = Dwarf_die::ref_attribute(die,0x2134,&shndx);
    uVar6 = Dwarf_die::uint_attribute(die,0x2134);
    if ((oVar5 == -1) && ((int)uVar6 == 0)) {
      if (((die->abbrev_code_ == (Abbrev_code *)0x0) || (die->abbrev_code_->tag != 0x41)) ||
         ((this->gdb_index_->pubnames_object_ != (this->super_Dwarf_info_reader).object_ ||
          (oVar4 != this->gdb_index_->stmt_list_offset_)))) {
        return false;
      }
    }
    else {
      pGVar8 = this->gdb_index_;
      pRVar1 = (this->super_Dwarf_info_reader).object_;
      if ((pGVar8->pubnames_object_ != pRVar1) || (oVar4 != pGVar8->stmt_list_offset_)) {
        pGVar8->stmt_list_offset_ = oVar4;
        oVar4 = (this->super_Dwarf_info_reader).cu_offset_;
        pGVar8->pubnames_object_ = pRVar1;
        oVar4 = Gdb_index::find_pubname_offset(pGVar8,oVar4);
        bVar2 = read_pubtable(this,pGVar8->pubnames_table_,oVar4);
        pGVar8 = this->gdb_index_;
        oVar4 = Gdb_index::find_pubtype_offset(pGVar8,(this->super_Dwarf_info_reader).cu_offset_);
        bVar3 = read_pubtable(this,pGVar8->pubtypes_table_,oVar4);
        return bVar3 || bVar2;
      }
    }
  }
  return true;
}



uint FUN_0018daa0(long param_1,long param_2)

{
  long lVar1;
  int iVar2;
  uint uVar3;
  uint uVar4;
  long lVar5;
  long lVar6;
  undefined8 uVar7;
  undefined1 local_2c [12];
  
  if (((*(int **)(param_2 + 0x30) == (int *)0x0) || (**(int **)(param_2 + 0x30) != 0x41)) ||
     (lVar5 = FUN_002b8660(param_2,0x2130), lVar5 == 0)) {
    lVar5 = FUN_002b8730(param_2,0x10,local_2c);
    lVar6 = FUN_002b8730(param_2,0x2134,local_2c);
    iVar2 = FUN_002b86e0(param_2,0x2134);
    if ((lVar6 == -1) && (iVar2 == 0)) {
      if (((*(int **)(param_2 + 0x30) == (int *)0x0) || (**(int **)(param_2 + 0x30) != 0x41)) ||
         ((*(long *)(*(long *)(param_1 + 0x940) + 0x1e8) != *(long *)(param_1 + 0x10) ||
          (lVar5 != *(long *)(*(long *)(param_1 + 0x940) + 0x1f0))))) {
        return 0;
      }
    }
    else {
      lVar6 = *(long *)(param_1 + 0x940);
      lVar1 = *(long *)(param_1 + 0x10);
      if ((*(long *)(lVar6 + 0x1e8) != lVar1) || (lVar5 != *(long *)(lVar6 + 0x1f0))) {
        *(long *)(lVar6 + 0x1f0) = lVar5;
        uVar7 = *(undefined8 *)(param_1 + 0x50);
        *(long *)(lVar6 + 0x1e8) = lVar1;
        uVar7 = FUN_0018cf30(lVar6,uVar7);
        uVar3 = FUN_0018da10(param_1,*(undefined8 *)(lVar6 + 0xa8),uVar7);
        lVar5 = *(long *)(param_1 + 0x940);
        uVar7 = FUN_0018cfa0(lVar5,*(undefined8 *)(param_1 + 0x50));
        uVar4 = FUN_0018da10(param_1,*(undefined8 *)(lVar5 + 0xb0),uVar7);
        return uVar4 | uVar3;
      }
    }
  }
  return 1;
}


PUSH R13
PUSH R12
PUSH RBP
MOV RBP,RDI
PUSH RBX
MOV RBX,RSI
SUB RSP,0x18
MOV RAX,qword ptr [RSI + 0x30]
TEST RAX,RAX
JZ 0x0018dac2
CMP dword ptr [RAX],0x41
JZ 0x0018dbd0
LEA R12,[RSP + 0xc]
MOV ESI,0x10
MOV RDI,RBX
MOV RDX,R12
CALL 0x002b8730
MOV RDX,R12
MOV ESI,0x2134
MOV RDI,RBX
MOV R13,RAX
CALL 0x002b8730
MOV ESI,0x2134
MOV RDI,RBX
MOV R12,RAX
CALL 0x002b86e0
CMP R12,-0x1
JNZ 0x0018db58
TEST EAX,EAX
JNZ 0x0018db58
MOV RDX,qword ptr [RBX + 0x30]
XOR EAX,EAX
TEST RDX,RDX
JZ 0x0018dbc5
CMP dword ptr [RDX],0x41
JNZ 0x0018dbc5
MOV RDX,qword ptr [RBP + 0x940]
MOV RCX,qword ptr [RBP + 0x10]
CMP qword ptr [RDX + 0x1e8],RCX
JNZ 0x0018dbc5
CMP R13,qword ptr [RDX + 0x1f0]
JNZ 0x0018dbc5
ADD RSP,0x18
MOV EAX,0x1
POP RBX
POP RBP
POP R12
POP R13
RET
MOV R11,qword ptr [RBP + 0x940]
MOV RAX,qword ptr [RBP + 0x10]
CMP qword ptr [R11 + 0x1e8],RAX
JZ 0x0018dbf0
MOV qword ptr [R11 + 0x1f0],R13
MOV RSI,qword ptr [RBP + 0x50]
MOV RDI,R11
MOV qword ptr [R11 + 0x1e8],RAX
CALL 0x0018cf30
MOV RDI,RBP
MOV RSI,qword ptr [R11 + 0xa8]
MOV RDX,RAX
CALL 0x0018da10
MOV R11,qword ptr [RBP + 0x940]
MOV RSI,qword ptr [RBP + 0x50]
MOV EBX,EAX
MOV RDI,R11
CALL 0x0018cfa0
MOV RDI,RBP
MOV RSI,qword ptr [R11 + 0xb0]
MOV RDX,RAX
CALL 0x0018da10
OR EAX,EBX
ADD RSP,0x18
POP RBX
POP RBP
POP R12
POP R13
RET
MOV ESI,0x2130
MOV RDI,RBX
CALL 0x002b8660
TEST RAX,RAX
JNZ 0x0018db41
JMP 0x0018dac2
CMP R13,qword ptr [R11 + 0x1f0]
JNZ 0x0018db70
JMP 0x0018db41
(translation_unit "uint FUN_0018daa0(long param_1,long param_2)\n\n{\n  long lVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  long lVar5;\n  long lVar6;\n  undefined8 uVar7;\n  undefined1 local_2c [12];\n  \n  if (((*(int **)(param_2 + 0x30) == (int *)0x0) || (**(int **)(param_2 + 0x30) != 0x41)) ||\n     (lVar5 = FUN_002b8660(param_2,0x2130), lVar5 == 0)) {\n    lVar5 = FUN_002b8730(param_2,0x10,local_2c);\n    lVar6 = FUN_002b8730(param_2,0x2134,local_2c);\n    iVar2 = FUN_002b86e0(param_2,0x2134);\n    if ((lVar6 == -1) && (iVar2 == 0)) {\n      if (((*(int **)(param_2 + 0x30) == (int *)0x0) || (**(int **)(param_2 + 0x30) != 0x41)) ||\n         ((*(long *)(*(long *)(param_1 + 0x940) + 0x1e8) != *(long *)(param_1 + 0x10) ||\n          (lVar5 != *(long *)(*(long *)(param_1 + 0x940) + 0x1f0))))) {\n        return 0;\n      }\n    }\n    else {\n      lVar6 = *(long *)(param_1 + 0x940);\n      lVar1 = *(long *)(param_1 + 0x10);\n      if ((*(long *)(lVar6 + 0x1e8) != lVar1) || (lVar5 != *(long *)(lVar6 + 0x1f0))) {\n        *(long *)(lVar6 + 0x1f0) = lVar5;\n        uVar7 = *(undefined8 *)(param_1 + 0x50);\n        *(long *)(lVar6 + 0x1e8) = lVar1;\n        uVar7 = FUN_0018cf30(lVar6,uVar7);\n        uVar3 = FUN_0018da10(param_1,*(undefined8 *)(lVar6 + 0xa8),uVar7);\n        lVar5 = *(long *)(param_1 + 0x940);\n        uVar7 = FUN_0018cfa0(lVar5,*(undefined8 *)(param_1 + 0x50));\n        uVar4 = FUN_0018da10(param_1,*(undefined8 *)(lVar5 + 0xb0),uVar7);\n        return uVar4 | uVar3;\n      }\n    }\n  }\n  return 1;\n}\n\n" (function_definition "uint FUN_0018daa0(long param_1,long param_2)\n\n{\n  long lVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  long lVar5;\n  long lVar6;\n  undefined8 uVar7;\n  undefined1 local_2c [12];\n  \n  if (((*(int **)(param_2 + 0x30) == (int *)0x0) || (**(int **)(param_2 + 0x30) != 0x41)) ||\n     (lVar5 = FUN_002b8660(param_2,0x2130), lVar5 == 0)) {\n    lVar5 = FUN_002b8730(param_2,0x10,local_2c);\n    lVar6 = FUN_002b8730(param_2,0x2134,local_2c);\n    iVar2 = FUN_002b86e0(param_2,0x2134);\n    if ((lVar6 == -1) && (iVar2 == 0)) {\n      if (((*(int **)(param_2 + 0x30) == (int *)0x0) || (**(int **)(param_2 + 0x30) != 0x41)) ||\n         ((*(long *)(*(long *)(param_1 + 0x940) + 0x1e8) != *(long *)(param_1 + 0x10) ||\n          (lVar5 != *(long *)(*(long *)(param_1 + 0x940) + 0x1f0))))) {\n        return 0;\n      }\n    }\n    else {\n      lVar6 = *(long *)(param_1 + 0x940);\n      lVar1 = *(long *)(param_1 + 0x10);\n      if ((*(long *)(lVar6 + 0x1e8) != lVar1) || (lVar5 != *(long *)(lVar6 + 0x1f0))) {\n        *(long *)(lVar6 + 0x1f0) = lVar5;\n        uVar7 = *(undefined8 *)(param_1 + 0x50);\n        *(long *)(lVar6 + 0x1e8) = lVar1;\n        uVar7 = FUN_0018cf30(lVar6,uVar7);\n        uVar3 = FUN_0018da10(param_1,*(undefined8 *)(lVar6 + 0xa8),uVar7);\n        lVar5 = *(long *)(param_1 + 0x940);\n        uVar7 = FUN_0018cfa0(lVar5,*(undefined8 *)(param_1 + 0x50));\n        uVar4 = FUN_0018da10(param_1,*(undefined8 *)(lVar5 + 0xb0),uVar7);\n        return uVar4 | uVar3;\n      }\n    }\n  }\n  return 1;\n}" type_identifier (function_declarator "FUN_0018daa0(long param_1,long param_2)" identifier (parameter_list "(long param_1,long param_2)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  long lVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  long lVar5;\n  long lVar6;\n  undefined8 uVar7;\n  undefined1 local_2c [12];\n  \n  if (((*(int **)(param_2 + 0x30) == (int *)0x0) || (**(int **)(param_2 + 0x30) != 0x41)) ||\n     (lVar5 = FUN_002b8660(param_2,0x2130), lVar5 == 0)) {\n    lVar5 = FUN_002b8730(param_2,0x10,local_2c);\n    lVar6 = FUN_002b8730(param_2,0x2134,local_2c);\n    iVar2 = FUN_002b86e0(param_2,0x2134);\n    if ((lVar6 == -1) && (iVar2 == 0)) {\n      if (((*(int **)(param_2 + 0x30) == (int *)0x0) || (**(int **)(param_2 + 0x30) != 0x41)) ||\n         ((*(long *)(*(long *)(param_1 + 0x940) + 0x1e8) != *(long *)(param_1 + 0x10) ||\n          (lVar5 != *(long *)(*(long *)(param_1 + 0x940) + 0x1f0))))) {\n        return 0;\n      }\n    }\n    else {\n      lVar6 = *(long *)(param_1 + 0x940);\n      lVar1 = *(long *)(param_1 + 0x10);\n      if ((*(long *)(lVar6 + 0x1e8) != lVar1) || (lVar5 != *(long *)(lVar6 + 0x1f0))) {\n        *(long *)(lVar6 + 0x1f0) = lVar5;\n        uVar7 = *(undefined8 *)(param_1 + 0x50);\n        *(long *)(lVar6 + 0x1e8) = lVar1;\n        uVar7 = FUN_0018cf30(lVar6,uVar7);\n        uVar3 = FUN_0018da10(param_1,*(undefined8 *)(lVar6 + 0xa8),uVar7);\n        lVar5 = *(long *)(param_1 + 0x940);\n        uVar7 = FUN_0018cfa0(lVar5,*(undefined8 *)(param_1 + 0x50));\n        uVar4 = FUN_0018da10(param_1,*(undefined8 *)(lVar5 + 0xb0),uVar7);\n        return uVar4 | uVar3;\n      }\n    }\n  }\n  return 1;\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 uVar7;" type_identifier identifier ;) (declaration "undefined1 local_2c [12];" type_identifier (array_declarator "local_2c [12]" identifier [ number_literal ]) ;) (if_statement "if (((*(int **)(param_2 + 0x30) == (int *)0x0) || (**(int **)(param_2 + 0x30) != 0x41)) ||\n     (lVar5 = FUN_002b8660(param_2,0x2130), lVar5 == 0)) {\n    lVar5 = FUN_002b8730(param_2,0x10,local_2c);\n    lVar6 = FUN_002b8730(param_2,0x2134,local_2c);\n    iVar2 = FUN_002b86e0(param_2,0x2134);\n    if ((lVar6 == -1) && (iVar2 == 0)) {\n      if (((*(int **)(param_2 + 0x30) == (int *)0x0) || (**(int **)(param_2 + 0x30) != 0x41)) ||\n         ((*(long *)(*(long *)(param_1 + 0x940) + 0x1e8) != *(long *)(param_1 + 0x10) ||\n          (lVar5 != *(long *)(*(long *)(param_1 + 0x940) + 0x1f0))))) {\n        return 0;\n      }\n    }\n    else {\n      lVar6 = *(long *)(param_1 + 0x940);\n      lVar1 = *(long *)(param_1 + 0x10);\n      if ((*(long *)(lVar6 + 0x1e8) != lVar1) || (lVar5 != *(long *)(lVar6 + 0x1f0))) {\n        *(long *)(lVar6 + 0x1f0) = lVar5;\n        uVar7 = *(undefined8 *)(param_1 + 0x50);\n        *(long *)(lVar6 + 0x1e8) = lVar1;\n        uVar7 = FUN_0018cf30(lVar6,uVar7);\n        uVar3 = FUN_0018da10(param_1,*(undefined8 *)(lVar6 + 0xa8),uVar7);\n        lVar5 = *(long *)(param_1 + 0x940);\n        uVar7 = FUN_0018cfa0(lVar5,*(undefined8 *)(param_1 + 0x50));\n        uVar4 = FUN_0018da10(param_1,*(undefined8 *)(lVar5 + 0xb0),uVar7);\n        return uVar4 | uVar3;\n      }\n    }\n  }" if (parenthesized_expression "(((*(int **)(param_2 + 0x30) == (int *)0x0) || (**(int **)(param_2 + 0x30) != 0x41)) ||\n     (lVar5 = FUN_002b8660(param_2,0x2130), lVar5 == 0))" ( (binary_expression "((*(int **)(param_2 + 0x30) == (int *)0x0) || (**(int **)(param_2 + 0x30) != 0x41)) ||\n     (lVar5 = FUN_002b8660(param_2,0x2130), lVar5 == 0)" (parenthesized_expression "((*(int **)(param_2 + 0x30) == (int *)0x0) || (**(int **)(param_2 + 0x30) != 0x41))" ( (binary_expression "(*(int **)(param_2 + 0x30) == (int *)0x0) || (**(int **)(param_2 + 0x30) != 0x41)" (parenthesized_expression "(*(int **)(param_2 + 0x30) == (int *)0x0)" ( (binary_expression "*(int **)(param_2 + 0x30) == (int *)0x0" (pointer_expression "*(int **)(param_2 + 0x30)" * (cast_expression "(int **)(param_2 + 0x30)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x30)" ( (binary_expression "param_2 + 0x30" identifier + number_literal) )))) == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(**(int **)(param_2 + 0x30) != 0x41)" ( (binary_expression "**(int **)(param_2 + 0x30) != 0x41" (pointer_expression "**(int **)(param_2 + 0x30)" * (pointer_expression "*(int **)(param_2 + 0x30)" * (cast_expression "(int **)(param_2 + 0x30)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x30)" ( (binary_expression "param_2 + 0x30" identifier + number_literal) ))))) != number_literal) ))) )) || (parenthesized_expression "(lVar5 = FUN_002b8660(param_2,0x2130), lVar5 == 0)" ( (comma_expression "lVar5 = FUN_002b8660(param_2,0x2130), lVar5 == 0" (assignment_expression "lVar5 = FUN_002b8660(param_2,0x2130)" identifier = (call_expression "FUN_002b8660(param_2,0x2130)" identifier (argument_list "(param_2,0x2130)" ( identifier , number_literal )))) , (binary_expression "lVar5 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n    lVar5 = FUN_002b8730(param_2,0x10,local_2c);\n    lVar6 = FUN_002b8730(param_2,0x2134,local_2c);\n    iVar2 = FUN_002b86e0(param_2,0x2134);\n    if ((lVar6 == -1) && (iVar2 == 0)) {\n      if (((*(int **)(param_2 + 0x30) == (int *)0x0) || (**(int **)(param_2 + 0x30) != 0x41)) ||\n         ((*(long *)(*(long *)(param_1 + 0x940) + 0x1e8) != *(long *)(param_1 + 0x10) ||\n          (lVar5 != *(long *)(*(long *)(param_1 + 0x940) + 0x1f0))))) {\n        return 0;\n      }\n    }\n    else {\n      lVar6 = *(long *)(param_1 + 0x940);\n      lVar1 = *(long *)(param_1 + 0x10);\n      if ((*(long *)(lVar6 + 0x1e8) != lVar1) || (lVar5 != *(long *)(lVar6 + 0x1f0))) {\n        *(long *)(lVar6 + 0x1f0) = lVar5;\n        uVar7 = *(undefined8 *)(param_1 + 0x50);\n        *(long *)(lVar6 + 0x1e8) = lVar1;\n        uVar7 = FUN_0018cf30(lVar6,uVar7);\n        uVar3 = FUN_0018da10(param_1,*(undefined8 *)(lVar6 + 0xa8),uVar7);\n        lVar5 = *(long *)(param_1 + 0x940);\n        uVar7 = FUN_0018cfa0(lVar5,*(undefined8 *)(param_1 + 0x50));\n        uVar4 = FUN_0018da10(param_1,*(undefined8 *)(lVar5 + 0xb0),uVar7);\n        return uVar4 | uVar3;\n      }\n    }\n  }" { (expression_statement "lVar5 = FUN_002b8730(param_2,0x10,local_2c);" (assignment_expression "lVar5 = FUN_002b8730(param_2,0x10,local_2c)" identifier = (call_expression "FUN_002b8730(param_2,0x10,local_2c)" identifier (argument_list "(param_2,0x10,local_2c)" ( identifier , number_literal , identifier )))) ;) (expression_statement "lVar6 = FUN_002b8730(param_2,0x2134,local_2c);" (assignment_expression "lVar6 = FUN_002b8730(param_2,0x2134,local_2c)" identifier = (call_expression "FUN_002b8730(param_2,0x2134,local_2c)" identifier (argument_list "(param_2,0x2134,local_2c)" ( identifier , number_literal , identifier )))) ;) (expression_statement "iVar2 = FUN_002b86e0(param_2,0x2134);" (assignment_expression "iVar2 = FUN_002b86e0(param_2,0x2134)" identifier = (call_expression "FUN_002b86e0(param_2,0x2134)" identifier (argument_list "(param_2,0x2134)" ( identifier , number_literal )))) ;) (if_statement "if ((lVar6 == -1) && (iVar2 == 0)) {\n      if (((*(int **)(param_2 + 0x30) == (int *)0x0) || (**(int **)(param_2 + 0x30) != 0x41)) ||\n         ((*(long *)(*(long *)(param_1 + 0x940) + 0x1e8) != *(long *)(param_1 + 0x10) ||\n          (lVar5 != *(long *)(*(long *)(param_1 + 0x940) + 0x1f0))))) {\n        return 0;\n      }\n    }\n    else {\n      lVar6 = *(long *)(param_1 + 0x940);\n      lVar1 = *(long *)(param_1 + 0x10);\n      if ((*(long *)(lVar6 + 0x1e8) != lVar1) || (lVar5 != *(long *)(lVar6 + 0x1f0))) {\n        *(long *)(lVar6 + 0x1f0) = lVar5;\n        uVar7 = *(undefined8 *)(param_1 + 0x50);\n        *(long *)(lVar6 + 0x1e8) = lVar1;\n        uVar7 = FUN_0018cf30(lVar6,uVar7);\n        uVar3 = FUN_0018da10(param_1,*(undefined8 *)(lVar6 + 0xa8),uVar7);\n        lVar5 = *(long *)(param_1 + 0x940);\n        uVar7 = FUN_0018cfa0(lVar5,*(undefined8 *)(param_1 + 0x50));\n        uVar4 = FUN_0018da10(param_1,*(undefined8 *)(lVar5 + 0xb0),uVar7);\n        return uVar4 | uVar3;\n      }\n    }" if (parenthesized_expression "((lVar6 == -1) && (iVar2 == 0))" ( (binary_expression "(lVar6 == -1) && (iVar2 == 0)" (parenthesized_expression "(lVar6 == -1)" ( (binary_expression "lVar6 == -1" identifier == number_literal) )) && (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) ))) )) (compound_statement "{\n      if (((*(int **)(param_2 + 0x30) == (int *)0x0) || (**(int **)(param_2 + 0x30) != 0x41)) ||\n         ((*(long *)(*(long *)(param_1 + 0x940) + 0x1e8) != *(long *)(param_1 + 0x10) ||\n          (lVar5 != *(long *)(*(long *)(param_1 + 0x940) + 0x1f0))))) {\n        return 0;\n      }\n    }" { (if_statement "if (((*(int **)(param_2 + 0x30) == (int *)0x0) || (**(int **)(param_2 + 0x30) != 0x41)) ||\n         ((*(long *)(*(long *)(param_1 + 0x940) + 0x1e8) != *(long *)(param_1 + 0x10) ||\n          (lVar5 != *(long *)(*(long *)(param_1 + 0x940) + 0x1f0))))) {\n        return 0;\n      }" if (parenthesized_expression "(((*(int **)(param_2 + 0x30) == (int *)0x0) || (**(int **)(param_2 + 0x30) != 0x41)) ||\n         ((*(long *)(*(long *)(param_1 + 0x940) + 0x1e8) != *(long *)(param_1 + 0x10) ||\n          (lVar5 != *(long *)(*(long *)(param_1 + 0x940) + 0x1f0)))))" ( (binary_expression "((*(int **)(param_2 + 0x30) == (int *)0x0) || (**(int **)(param_2 + 0x30) != 0x41)) ||\n         ((*(long *)(*(long *)(param_1 + 0x940) + 0x1e8) != *(long *)(param_1 + 0x10) ||\n          (lVar5 != *(long *)(*(long *)(param_1 + 0x940) + 0x1f0))))" (parenthesized_expression "((*(int **)(param_2 + 0x30) == (int *)0x0) || (**(int **)(param_2 + 0x30) != 0x41))" ( (binary_expression "(*(int **)(param_2 + 0x30) == (int *)0x0) || (**(int **)(param_2 + 0x30) != 0x41)" (parenthesized_expression "(*(int **)(param_2 + 0x30) == (int *)0x0)" ( (binary_expression "*(int **)(param_2 + 0x30) == (int *)0x0" (pointer_expression "*(int **)(param_2 + 0x30)" * (cast_expression "(int **)(param_2 + 0x30)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x30)" ( (binary_expression "param_2 + 0x30" identifier + number_literal) )))) == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(**(int **)(param_2 + 0x30) != 0x41)" ( (binary_expression "**(int **)(param_2 + 0x30) != 0x41" (pointer_expression "**(int **)(param_2 + 0x30)" * (pointer_expression "*(int **)(param_2 + 0x30)" * (cast_expression "(int **)(param_2 + 0x30)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x30)" ( (binary_expression "param_2 + 0x30" identifier + number_literal) ))))) != number_literal) ))) )) || (parenthesized_expression "((*(long *)(*(long *)(param_1 + 0x940) + 0x1e8) != *(long *)(param_1 + 0x10) ||\n          (lVar5 != *(long *)(*(long *)(param_1 + 0x940) + 0x1f0))))" ( (parenthesized_expression "(*(long *)(*(long *)(param_1 + 0x940) + 0x1e8) != *(long *)(param_1 + 0x10) ||\n          (lVar5 != *(long *)(*(long *)(param_1 + 0x940) + 0x1f0)))" ( (binary_expression "*(long *)(*(long *)(param_1 + 0x940) + 0x1e8) != *(long *)(param_1 + 0x10) ||\n          (lVar5 != *(long *)(*(long *)(param_1 + 0x940) + 0x1f0))" (binary_expression "*(long *)(*(long *)(param_1 + 0x940) + 0x1e8) != *(long *)(param_1 + 0x10)" (pointer_expression "*(long *)(*(long *)(param_1 + 0x940) + 0x1e8)" * (cast_expression "(long *)(*(long *)(param_1 + 0x940) + 0x1e8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x940) + 0x1e8)" ( (binary_expression "*(long *)(param_1 + 0x940) + 0x1e8" (pointer_expression "*(long *)(param_1 + 0x940)" * (cast_expression "(long *)(param_1 + 0x940)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x940)" ( (binary_expression "param_1 + 0x940" identifier + number_literal) )))) + number_literal) )))) != (pointer_expression "*(long *)(param_1 + 0x10)" * (cast_expression "(long *)(param_1 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) || (parenthesized_expression "(lVar5 != *(long *)(*(long *)(param_1 + 0x940) + 0x1f0))" ( (binary_expression "lVar5 != *(long *)(*(long *)(param_1 + 0x940) + 0x1f0)" identifier != (pointer_expression "*(long *)(*(long *)(param_1 + 0x940) + 0x1f0)" * (cast_expression "(long *)(*(long *)(param_1 + 0x940) + 0x1f0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x940) + 0x1f0)" ( (binary_expression "*(long *)(param_1 + 0x940) + 0x1f0" (pointer_expression "*(long *)(param_1 + 0x940)" * (cast_expression "(long *)(param_1 + 0x940)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x940)" ( (binary_expression "param_1 + 0x940" identifier + number_literal) )))) + number_literal) ))))) ))) )) ))) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) }) (else_clause "else {\n      lVar6 = *(long *)(param_1 + 0x940);\n      lVar1 = *(long *)(param_1 + 0x10);\n      if ((*(long *)(lVar6 + 0x1e8) != lVar1) || (lVar5 != *(long *)(lVar6 + 0x1f0))) {\n        *(long *)(lVar6 + 0x1f0) = lVar5;\n        uVar7 = *(undefined8 *)(param_1 + 0x50);\n        *(long *)(lVar6 + 0x1e8) = lVar1;\n        uVar7 = FUN_0018cf30(lVar6,uVar7);\n        uVar3 = FUN_0018da10(param_1,*(undefined8 *)(lVar6 + 0xa8),uVar7);\n        lVar5 = *(long *)(param_1 + 0x940);\n        uVar7 = FUN_0018cfa0(lVar5,*(undefined8 *)(param_1 + 0x50));\n        uVar4 = FUN_0018da10(param_1,*(undefined8 *)(lVar5 + 0xb0),uVar7);\n        return uVar4 | uVar3;\n      }\n    }" else (compound_statement "{\n      lVar6 = *(long *)(param_1 + 0x940);\n      lVar1 = *(long *)(param_1 + 0x10);\n      if ((*(long *)(lVar6 + 0x1e8) != lVar1) || (lVar5 != *(long *)(lVar6 + 0x1f0))) {\n        *(long *)(lVar6 + 0x1f0) = lVar5;\n        uVar7 = *(undefined8 *)(param_1 + 0x50);\n        *(long *)(lVar6 + 0x1e8) = lVar1;\n        uVar7 = FUN_0018cf30(lVar6,uVar7);\n        uVar3 = FUN_0018da10(param_1,*(undefined8 *)(lVar6 + 0xa8),uVar7);\n        lVar5 = *(long *)(param_1 + 0x940);\n        uVar7 = FUN_0018cfa0(lVar5,*(undefined8 *)(param_1 + 0x50));\n        uVar4 = FUN_0018da10(param_1,*(undefined8 *)(lVar5 + 0xb0),uVar7);\n        return uVar4 | uVar3;\n      }\n    }" { (expression_statement "lVar6 = *(long *)(param_1 + 0x940);" (assignment_expression "lVar6 = *(long *)(param_1 + 0x940)" identifier = (pointer_expression "*(long *)(param_1 + 0x940)" * (cast_expression "(long *)(param_1 + 0x940)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x940)" ( (binary_expression "param_1 + 0x940" identifier + number_literal) ))))) ;) (expression_statement "lVar1 = *(long *)(param_1 + 0x10);" (assignment_expression "lVar1 = *(long *)(param_1 + 0x10)" identifier = (pointer_expression "*(long *)(param_1 + 0x10)" * (cast_expression "(long *)(param_1 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;) (if_statement "if ((*(long *)(lVar6 + 0x1e8) != lVar1) || (lVar5 != *(long *)(lVar6 + 0x1f0))) {\n        *(long *)(lVar6 + 0x1f0) = lVar5;\n        uVar7 = *(undefined8 *)(param_1 + 0x50);\n        *(long *)(lVar6 + 0x1e8) = lVar1;\n        uVar7 = FUN_0018cf30(lVar6,uVar7);\n        uVar3 = FUN_0018da10(param_1,*(undefined8 *)(lVar6 + 0xa8),uVar7);\n        lVar5 = *(long *)(param_1 + 0x940);\n        uVar7 = FUN_0018cfa0(lVar5,*(undefined8 *)(param_1 + 0x50));\n        uVar4 = FUN_0018da10(param_1,*(undefined8 *)(lVar5 + 0xb0),uVar7);\n        return uVar4 | uVar3;\n      }" if (parenthesized_expression "((*(long *)(lVar6 + 0x1e8) != lVar1) || (lVar5 != *(long *)(lVar6 + 0x1f0)))" ( (binary_expression "(*(long *)(lVar6 + 0x1e8) != lVar1) || (lVar5 != *(long *)(lVar6 + 0x1f0))" (parenthesized_expression "(*(long *)(lVar6 + 0x1e8) != lVar1)" ( (binary_expression "*(long *)(lVar6 + 0x1e8) != lVar1" (pointer_expression "*(long *)(lVar6 + 0x1e8)" * (cast_expression "(long *)(lVar6 + 0x1e8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x1e8)" ( (binary_expression "lVar6 + 0x1e8" identifier + number_literal) )))) != identifier) )) || (parenthesized_expression "(lVar5 != *(long *)(lVar6 + 0x1f0))" ( (binary_expression "lVar5 != *(long *)(lVar6 + 0x1f0)" identifier != (pointer_expression "*(long *)(lVar6 + 0x1f0)" * (cast_expression "(long *)(lVar6 + 0x1f0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x1f0)" ( (binary_expression "lVar6 + 0x1f0" identifier + number_literal) ))))) ))) )) (compound_statement "{\n        *(long *)(lVar6 + 0x1f0) = lVar5;\n        uVar7 = *(undefined8 *)(param_1 + 0x50);\n        *(long *)(lVar6 + 0x1e8) = lVar1;\n        uVar7 = FUN_0018cf30(lVar6,uVar7);\n        uVar3 = FUN_0018da10(param_1,*(undefined8 *)(lVar6 + 0xa8),uVar7);\n        lVar5 = *(long *)(param_1 + 0x940);\n        uVar7 = FUN_0018cfa0(lVar5,*(undefined8 *)(param_1 + 0x50));\n        uVar4 = FUN_0018da10(param_1,*(undefined8 *)(lVar5 + 0xb0),uVar7);\n        return uVar4 | uVar3;\n      }" { (expression_statement "*(long *)(lVar6 + 0x1f0) = lVar5;" (assignment_expression "*(long *)(lVar6 + 0x1f0) = lVar5" (pointer_expression "*(long *)(lVar6 + 0x1f0)" * (cast_expression "(long *)(lVar6 + 0x1f0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x1f0)" ( (binary_expression "lVar6 + 0x1f0" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar7 = *(undefined8 *)(param_1 + 0x50);" (assignment_expression "uVar7 = *(undefined8 *)(param_1 + 0x50)" identifier = (pointer_expression "*(undefined8 *)(param_1 + 0x50)" * (cast_expression "(undefined8 *)(param_1 + 0x50)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) ))))) ;) (expression_statement "*(long *)(lVar6 + 0x1e8) = lVar1;" (assignment_expression "*(long *)(lVar6 + 0x1e8) = lVar1" (pointer_expression "*(long *)(lVar6 + 0x1e8)" * (cast_expression "(long *)(lVar6 + 0x1e8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x1e8)" ( (binary_expression "lVar6 + 0x1e8" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar7 = FUN_0018cf30(lVar6,uVar7);" (assignment_expression "uVar7 = FUN_0018cf30(lVar6,uVar7)" identifier = (call_expression "FUN_0018cf30(lVar6,uVar7)" identifier (argument_list "(lVar6,uVar7)" ( identifier , identifier )))) ;) (expression_statement "uVar3 = FUN_0018da10(param_1,*(undefined8 *)(lVar6 + 0xa8),uVar7);" (assignment_expression "uVar3 = FUN_0018da10(param_1,*(undefined8 *)(lVar6 + 0xa8),uVar7)" identifier = (call_expression "FUN_0018da10(param_1,*(undefined8 *)(lVar6 + 0xa8),uVar7)" identifier (argument_list "(param_1,*(undefined8 *)(lVar6 + 0xa8),uVar7)" ( identifier , (pointer_expression "*(undefined8 *)(lVar6 + 0xa8)" * (cast_expression "(undefined8 *)(lVar6 + 0xa8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0xa8)" ( (binary_expression "lVar6 + 0xa8" identifier + number_literal) )))) , identifier )))) ;) (expression_statement "lVar5 = *(long *)(param_1 + 0x940);" (assignment_expression "lVar5 = *(long *)(param_1 + 0x940)" identifier = (pointer_expression "*(long *)(param_1 + 0x940)" * (cast_expression "(long *)(param_1 + 0x940)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x940)" ( (binary_expression "param_1 + 0x940" identifier + number_literal) ))))) ;) (expression_statement "uVar7 = FUN_0018cfa0(lVar5,*(undefined8 *)(param_1 + 0x50));" (assignment_expression "uVar7 = FUN_0018cfa0(lVar5,*(undefined8 *)(param_1 + 0x50))" identifier = (call_expression "FUN_0018cfa0(lVar5,*(undefined8 *)(param_1 + 0x50))" identifier (argument_list "(lVar5,*(undefined8 *)(param_1 + 0x50))" ( identifier , (pointer_expression "*(undefined8 *)(param_1 + 0x50)" * (cast_expression "(undefined8 *)(param_1 + 0x50)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) )))) )))) ;) (expression_statement "uVar4 = FUN_0018da10(param_1,*(undefined8 *)(lVar5 + 0xb0),uVar7);" (assignment_expression "uVar4 = FUN_0018da10(param_1,*(undefined8 *)(lVar5 + 0xb0),uVar7)" identifier = (call_expression "FUN_0018da10(param_1,*(undefined8 *)(lVar5 + 0xb0),uVar7)" identifier (argument_list "(param_1,*(undefined8 *)(lVar5 + 0xb0),uVar7)" ( identifier , (pointer_expression "*(undefined8 *)(lVar5 + 0xb0)" * (cast_expression "(undefined8 *)(lVar5 + 0xb0)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0xb0)" ( (binary_expression "lVar5 + 0xb0" identifier + number_literal) )))) , identifier )))) ;) (return_statement "return uVar4 | uVar3;" return (binary_expression "uVar4 | uVar3" identifier | identifier) ;) })) }))) })) (return_statement "return 1;" return number_literal ;) })))
(translation_unit "/* DWARF original prototype: bool read_pubnames_and_pubtypes(Gdb_index_info_reader * this, Dwarf_die\n   * die) */\n\nbool __thiscall\ngold::Gdb_index_info_reader::read_pubnames_and_pubtypes(Gdb_index_info_reader *this,Dwarf_die *die)\n\n{\n  Relobj *pRVar1;\n  bool bVar2;\n  bool bVar3;\n  off_t oVar4;\n  off_t oVar5;\n  uint64_t uVar6;\n  char *pcVar7;\n  Gdb_index *pGVar8;\n  uint shndx;\n  \n  if (((die->abbrev_code_ == (Abbrev_code *)0x0) || (die->abbrev_code_->tag != 0x41)) ||\n     (pcVar7 = Dwarf_die::string_attribute(die,0x2130), pcVar7 == (char *)0x0)) {\n    oVar4 = Dwarf_die::ref_attribute(die,0x10,&shndx);\n    oVar5 = Dwarf_die::ref_attribute(die,0x2134,&shndx);\n    uVar6 = Dwarf_die::uint_attribute(die,0x2134);\n    if ((oVar5 == -1) && ((int)uVar6 == 0)) {\n      if (((die->abbrev_code_ == (Abbrev_code *)0x0) || (die->abbrev_code_->tag != 0x41)) ||\n         ((this->gdb_index_->pubnames_object_ != (this->super_Dwarf_info_reader).object_ ||\n          (oVar4 != this->gdb_index_->stmt_list_offset_)))) {\n        return false;\n      }\n    }\n    else {\n      pGVar8 = this->gdb_index_;\n      pRVar1 = (this->super_Dwarf_info_reader).object_;\n      if ((pGVar8->pubnames_object_ != pRVar1) || (oVar4 != pGVar8->stmt_list_offset_)) {\n        pGVar8->stmt_list_offset_ = oVar4;\n        oVar4 = (this->super_Dwarf_info_reader).cu_offset_;\n        pGVar8->pubnames_object_ = pRVar1;\n        oVar4 = Gdb_index::find_pubname_offset(pGVar8,oVar4);\n        bVar2 = read_pubtable(this,pGVar8->pubnames_table_,oVar4);\n        pGVar8 = this->gdb_index_;\n        oVar4 = Gdb_index::find_pubtype_offset(pGVar8,(this->super_Dwarf_info_reader).cu_offset_);\n        bVar3 = read_pubtable(this,pGVar8->pubtypes_table_,oVar4);\n        return bVar3 || bVar2;\n      }\n    }\n  }\n  return true;\n}\n\n" comment (function_definition "bool __thiscall\ngold::Gdb_index_info_reader::read_pubnames_and_pubtypes(Gdb_index_info_reader *this,Dwarf_die *die)\n\n{\n  Relobj *pRVar1;\n  bool bVar2;\n  bool bVar3;\n  off_t oVar4;\n  off_t oVar5;\n  uint64_t uVar6;\n  char *pcVar7;\n  Gdb_index *pGVar8;\n  uint shndx;\n  \n  if (((die->abbrev_code_ == (Abbrev_code *)0x0) || (die->abbrev_code_->tag != 0x41)) ||\n     (pcVar7 = Dwarf_die::string_attribute(die,0x2130), pcVar7 == (char *)0x0)) {\n    oVar4 = Dwarf_die::ref_attribute(die,0x10,&shndx);\n    oVar5 = Dwarf_die::ref_attribute(die,0x2134,&shndx);\n    uVar6 = Dwarf_die::uint_attribute(die,0x2134);\n    if ((oVar5 == -1) && ((int)uVar6 == 0)) {\n      if (((die->abbrev_code_ == (Abbrev_code *)0x0) || (die->abbrev_code_->tag != 0x41)) ||\n         ((this->gdb_index_->pubnames_object_ != (this->super_Dwarf_info_reader).object_ ||\n          (oVar4 != this->gdb_index_->stmt_list_offset_)))) {\n        return false;\n      }\n    }\n    else {\n      pGVar8 = this->gdb_index_;\n      pRVar1 = (this->super_Dwarf_info_reader).object_;\n      if ((pGVar8->pubnames_object_ != pRVar1) || (oVar4 != pGVar8->stmt_list_offset_)) {\n        pGVar8->stmt_list_offset_ = oVar4;\n        oVar4 = (this->super_Dwarf_info_reader).cu_offset_;\n        pGVar8->pubnames_object_ = pRVar1;\n        oVar4 = Gdb_index::find_pubname_offset(pGVar8,oVar4);\n        bVar2 = read_pubtable(this,pGVar8->pubnames_table_,oVar4);\n        pGVar8 = this->gdb_index_;\n        oVar4 = Gdb_index::find_pubtype_offset(pGVar8,(this->super_Dwarf_info_reader).cu_offset_);\n        bVar3 = read_pubtable(this,pGVar8->pubtypes_table_,oVar4);\n        return bVar3 || bVar2;\n      }\n    }\n  }\n  return true;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Gdb_index_info_reader::" identifier : : identifier : :) (function_declarator "read_pubnames_and_pubtypes(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  Relobj *pRVar1;\n  bool bVar2;\n  bool bVar3;\n  off_t oVar4;\n  off_t oVar5;\n  uint64_t uVar6;\n  char *pcVar7;\n  Gdb_index *pGVar8;\n  uint shndx;\n  \n  if (((die->abbrev_code_ == (Abbrev_code *)0x0) || (die->abbrev_code_->tag != 0x41)) ||\n     (pcVar7 = Dwarf_die::string_attribute(die,0x2130), pcVar7 == (char *)0x0)) {\n    oVar4 = Dwarf_die::ref_attribute(die,0x10,&shndx);\n    oVar5 = Dwarf_die::ref_attribute(die,0x2134,&shndx);\n    uVar6 = Dwarf_die::uint_attribute(die,0x2134);\n    if ((oVar5 == -1) && ((int)uVar6 == 0)) {\n      if (((die->abbrev_code_ == (Abbrev_code *)0x0) || (die->abbrev_code_->tag != 0x41)) ||\n         ((this->gdb_index_->pubnames_object_ != (this->super_Dwarf_info_reader).object_ ||\n          (oVar4 != this->gdb_index_->stmt_list_offset_)))) {\n        return false;\n      }\n    }\n    else {\n      pGVar8 = this->gdb_index_;\n      pRVar1 = (this->super_Dwarf_info_reader).object_;\n      if ((pGVar8->pubnames_object_ != pRVar1) || (oVar4 != pGVar8->stmt_list_offset_)) {\n        pGVar8->stmt_list_offset_ = oVar4;\n        oVar4 = (this->super_Dwarf_info_reader).cu_offset_;\n        pGVar8->pubnames_object_ = pRVar1;\n        oVar4 = Gdb_index::find_pubname_offset(pGVar8,oVar4);\n        bVar2 = read_pubtable(this,pGVar8->pubnames_table_,oVar4);\n        pGVar8 = this->gdb_index_;\n        oVar4 = Gdb_index::find_pubtype_offset(pGVar8,(this->super_Dwarf_info_reader).cu_offset_);\n        bVar3 = read_pubtable(this,pGVar8->pubtypes_table_,oVar4);\n        return bVar3 || bVar2;\n      }\n    }\n  }\n  return true;\n}" { (declaration "Relobj *pRVar1;" type_identifier (pointer_declarator "*pRVar1" * identifier) ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "bool bVar3;" primitive_type identifier ;) (declaration "off_t oVar4;" type_identifier identifier ;) (declaration "off_t oVar5;" type_identifier identifier ;) (declaration "uint64_t uVar6;" primitive_type identifier ;) (declaration "char *pcVar7;" primitive_type (pointer_declarator "*pcVar7" * identifier) ;) (declaration "Gdb_index *pGVar8;" type_identifier (pointer_declarator "*pGVar8" * identifier) ;) (declaration "uint shndx;" type_identifier identifier ;) (if_statement "if (((die->abbrev_code_ == (Abbrev_code *)0x0) || (die->abbrev_code_->tag != 0x41)) ||\n     (pcVar7 = Dwarf_die::string_attribute(die,0x2130), pcVar7 == (char *)0x0)) {\n    oVar4 = Dwarf_die::ref_attribute(die,0x10,&shndx);\n    oVar5 = Dwarf_die::ref_attribute(die,0x2134,&shndx);\n    uVar6 = Dwarf_die::uint_attribute(die,0x2134);\n    if ((oVar5 == -1) && ((int)uVar6 == 0)) {\n      if (((die->abbrev_code_ == (Abbrev_code *)0x0) || (die->abbrev_code_->tag != 0x41)) ||\n         ((this->gdb_index_->pubnames_object_ != (this->super_Dwarf_info_reader).object_ ||\n          (oVar4 != this->gdb_index_->stmt_list_offset_)))) {\n        return false;\n      }\n    }\n    else {\n      pGVar8 = this->gdb_index_;\n      pRVar1 = (this->super_Dwarf_info_reader).object_;\n      if ((pGVar8->pubnames_object_ != pRVar1) || (oVar4 != pGVar8->stmt_list_offset_)) {\n        pGVar8->stmt_list_offset_ = oVar4;\n        oVar4 = (this->super_Dwarf_info_reader).cu_offset_;\n        pGVar8->pubnames_object_ = pRVar1;\n        oVar4 = Gdb_index::find_pubname_offset(pGVar8,oVar4);\n        bVar2 = read_pubtable(this,pGVar8->pubnames_table_,oVar4);\n        pGVar8 = this->gdb_index_;\n        oVar4 = Gdb_index::find_pubtype_offset(pGVar8,(this->super_Dwarf_info_reader).cu_offset_);\n        bVar3 = read_pubtable(this,pGVar8->pubtypes_table_,oVar4);\n        return bVar3 || bVar2;\n      }\n    }\n  }" if (parenthesized_expression "(((die->abbrev_code_ == (Abbrev_code *)0x0) || (die->abbrev_code_->tag != 0x41)) ||\n     (pcVar7 = Dwarf_die::string_attribute(die,0x2130), pcVar7 == (char *)0x0))" ( (binary_expression "((die->abbrev_code_ == (Abbrev_code *)0x0) || (die->abbrev_code_->tag != 0x41)) ||\n     (pcVar7 = Dwarf_die::string_attribute(die,0x2130), pcVar7 == (char *)0x0)" (parenthesized_expression "((die->abbrev_code_ == (Abbrev_code *)0x0) || (die->abbrev_code_->tag != 0x41))" ( (binary_expression "(die->abbrev_code_ == (Abbrev_code *)0x0) || (die->abbrev_code_->tag != 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 "(die->abbrev_code_->tag != 0x41)" ( (binary_expression "die->abbrev_code_->tag != 0x41" (field_expression "die->abbrev_code_->tag" (field_expression "die->abbrev_code_" identifier -> field_identifier) -> field_identifier) != number_literal) ))) )) || (parenthesized_expression "(pcVar7 = Dwarf_die::string_attribute(die,0x2130), pcVar7 == (char *)0x0)" ( (ERROR "pcVar7 = Dwarf_die::" (assignment_expression "pcVar7 = Dwarf_die" identifier = identifier) : :) (comma_expression "string_attribute(die,0x2130), pcVar7 == (char *)0x0" (call_expression "string_attribute(die,0x2130)" identifier (argument_list "(die,0x2130)" ( identifier , number_literal ))) , (binary_expression "pcVar7 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n    oVar4 = Dwarf_die::ref_attribute(die,0x10,&shndx);\n    oVar5 = Dwarf_die::ref_attribute(die,0x2134,&shndx);\n    uVar6 = Dwarf_die::uint_attribute(die,0x2134);\n    if ((oVar5 == -1) && ((int)uVar6 == 0)) {\n      if (((die->abbrev_code_ == (Abbrev_code *)0x0) || (die->abbrev_code_->tag != 0x41)) ||\n         ((this->gdb_index_->pubnames_object_ != (this->super_Dwarf_info_reader).object_ ||\n          (oVar4 != this->gdb_index_->stmt_list_offset_)))) {\n        return false;\n      }\n    }\n    else {\n      pGVar8 = this->gdb_index_;\n      pRVar1 = (this->super_Dwarf_info_reader).object_;\n      if ((pGVar8->pubnames_object_ != pRVar1) || (oVar4 != pGVar8->stmt_list_offset_)) {\n        pGVar8->stmt_list_offset_ = oVar4;\n        oVar4 = (this->super_Dwarf_info_reader).cu_offset_;\n        pGVar8->pubnames_object_ = pRVar1;\n        oVar4 = Gdb_index::find_pubname_offset(pGVar8,oVar4);\n        bVar2 = read_pubtable(this,pGVar8->pubnames_table_,oVar4);\n        pGVar8 = this->gdb_index_;\n        oVar4 = Gdb_index::find_pubtype_offset(pGVar8,(this->super_Dwarf_info_reader).cu_offset_);\n        bVar3 = read_pubtable(this,pGVar8->pubtypes_table_,oVar4);\n        return bVar3 || bVar2;\n      }\n    }\n  }" { (ERROR "oVar4 = Dwarf_die::" (assignment_expression "oVar4 = Dwarf_die" identifier = identifier) : :) (expression_statement "ref_attribute(die,0x10,&shndx);" (call_expression "ref_attribute(die,0x10,&shndx)" identifier (argument_list "(die,0x10,&shndx)" ( identifier , number_literal , (pointer_expression "&shndx" & identifier) ))) ;) (ERROR "oVar5 = Dwarf_die::" (assignment_expression "oVar5 = Dwarf_die" identifier = identifier) : :) (expression_statement "ref_attribute(die,0x2134,&shndx);" (call_expression "ref_attribute(die,0x2134,&shndx)" identifier (argument_list "(die,0x2134,&shndx)" ( identifier , number_literal , (pointer_expression "&shndx" & identifier) ))) ;) (ERROR "uVar6 = Dwarf_die::" (assignment_expression "uVar6 = Dwarf_die" identifier = identifier) : :) (expression_statement "uint_attribute(die,0x2134);" (call_expression "uint_attribute(die,0x2134)" identifier (argument_list "(die,0x2134)" ( identifier , number_literal ))) ;) (if_statement "if ((oVar5 == -1) && ((int)uVar6 == 0)) {\n      if (((die->abbrev_code_ == (Abbrev_code *)0x0) || (die->abbrev_code_->tag != 0x41)) ||\n         ((this->gdb_index_->pubnames_object_ != (this->super_Dwarf_info_reader).object_ ||\n          (oVar4 != this->gdb_index_->stmt_list_offset_)))) {\n        return false;\n      }\n    }\n    else {\n      pGVar8 = this->gdb_index_;\n      pRVar1 = (this->super_Dwarf_info_reader).object_;\n      if ((pGVar8->pubnames_object_ != pRVar1) || (oVar4 != pGVar8->stmt_list_offset_)) {\n        pGVar8->stmt_list_offset_ = oVar4;\n        oVar4 = (this->super_Dwarf_info_reader).cu_offset_;\n        pGVar8->pubnames_object_ = pRVar1;\n        oVar4 = Gdb_index::find_pubname_offset(pGVar8,oVar4);\n        bVar2 = read_pubtable(this,pGVar8->pubnames_table_,oVar4);\n        pGVar8 = this->gdb_index_;\n        oVar4 = Gdb_index::find_pubtype_offset(pGVar8,(this->super_Dwarf_info_reader).cu_offset_);\n        bVar3 = read_pubtable(this,pGVar8->pubtypes_table_,oVar4);\n        return bVar3 || bVar2;\n      }\n    }" if (parenthesized_expression "((oVar5 == -1) && ((int)uVar6 == 0))" ( (binary_expression "(oVar5 == -1) && ((int)uVar6 == 0)" (parenthesized_expression "(oVar5 == -1)" ( (binary_expression "oVar5 == -1" identifier == number_literal) )) && (parenthesized_expression "((int)uVar6 == 0)" ( (binary_expression "(int)uVar6 == 0" (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier) == number_literal) ))) )) (compound_statement "{\n      if (((die->abbrev_code_ == (Abbrev_code *)0x0) || (die->abbrev_code_->tag != 0x41)) ||\n         ((this->gdb_index_->pubnames_object_ != (this->super_Dwarf_info_reader).object_ ||\n          (oVar4 != this->gdb_index_->stmt_list_offset_)))) {\n        return false;\n      }\n    }" { (if_statement "if (((die->abbrev_code_ == (Abbrev_code *)0x0) || (die->abbrev_code_->tag != 0x41)) ||\n         ((this->gdb_index_->pubnames_object_ != (this->super_Dwarf_info_reader).object_ ||\n          (oVar4 != this->gdb_index_->stmt_list_offset_)))) {\n        return false;\n      }" if (parenthesized_expression "(((die->abbrev_code_ == (Abbrev_code *)0x0) || (die->abbrev_code_->tag != 0x41)) ||\n         ((this->gdb_index_->pubnames_object_ != (this->super_Dwarf_info_reader).object_ ||\n          (oVar4 != this->gdb_index_->stmt_list_offset_))))" ( (binary_expression "((die->abbrev_code_ == (Abbrev_code *)0x0) || (die->abbrev_code_->tag != 0x41)) ||\n         ((this->gdb_index_->pubnames_object_ != (this->super_Dwarf_info_reader).object_ ||\n          (oVar4 != this->gdb_index_->stmt_list_offset_)))" (parenthesized_expression "((die->abbrev_code_ == (Abbrev_code *)0x0) || (die->abbrev_code_->tag != 0x41))" ( (binary_expression "(die->abbrev_code_ == (Abbrev_code *)0x0) || (die->abbrev_code_->tag != 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 "(die->abbrev_code_->tag != 0x41)" ( (binary_expression "die->abbrev_code_->tag != 0x41" (field_expression "die->abbrev_code_->tag" (field_expression "die->abbrev_code_" identifier -> field_identifier) -> field_identifier) != number_literal) ))) )) || (parenthesized_expression "((this->gdb_index_->pubnames_object_ != (this->super_Dwarf_info_reader).object_ ||\n          (oVar4 != this->gdb_index_->stmt_list_offset_)))" ( (parenthesized_expression "(this->gdb_index_->pubnames_object_ != (this->super_Dwarf_info_reader).object_ ||\n          (oVar4 != this->gdb_index_->stmt_list_offset_))" ( (binary_expression "this->gdb_index_->pubnames_object_ != (this->super_Dwarf_info_reader).object_ ||\n          (oVar4 != this->gdb_index_->stmt_list_offset_)" (binary_expression "this->gdb_index_->pubnames_object_ != (this->super_Dwarf_info_reader).object_" (field_expression "this->gdb_index_->pubnames_object_" (field_expression "this->gdb_index_" identifier -> field_identifier) -> field_identifier) != (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)) || (parenthesized_expression "(oVar4 != this->gdb_index_->stmt_list_offset_)" ( (binary_expression "oVar4 != this->gdb_index_->stmt_list_offset_" identifier != (field_expression "this->gdb_index_->stmt_list_offset_" (field_expression "this->gdb_index_" identifier -> field_identifier) -> field_identifier)) ))) )) ))) )) (compound_statement "{\n        return false;\n      }" { (return_statement "return false;" return false ;) })) }) (else_clause "else {\n      pGVar8 = this->gdb_index_;\n      pRVar1 = (this->super_Dwarf_info_reader).object_;\n      if ((pGVar8->pubnames_object_ != pRVar1) || (oVar4 != pGVar8->stmt_list_offset_)) {\n        pGVar8->stmt_list_offset_ = oVar4;\n        oVar4 = (this->super_Dwarf_info_reader).cu_offset_;\n        pGVar8->pubnames_object_ = pRVar1;\n        oVar4 = Gdb_index::find_pubname_offset(pGVar8,oVar4);\n        bVar2 = read_pubtable(this,pGVar8->pubnames_table_,oVar4);\n        pGVar8 = this->gdb_index_;\n        oVar4 = Gdb_index::find_pubtype_offset(pGVar8,(this->super_Dwarf_info_reader).cu_offset_);\n        bVar3 = read_pubtable(this,pGVar8->pubtypes_table_,oVar4);\n        return bVar3 || bVar2;\n      }\n    }" else (compound_statement "{\n      pGVar8 = this->gdb_index_;\n      pRVar1 = (this->super_Dwarf_info_reader).object_;\n      if ((pGVar8->pubnames_object_ != pRVar1) || (oVar4 != pGVar8->stmt_list_offset_)) {\n        pGVar8->stmt_list_offset_ = oVar4;\n        oVar4 = (this->super_Dwarf_info_reader).cu_offset_;\n        pGVar8->pubnames_object_ = pRVar1;\n        oVar4 = Gdb_index::find_pubname_offset(pGVar8,oVar4);\n        bVar2 = read_pubtable(this,pGVar8->pubnames_table_,oVar4);\n        pGVar8 = this->gdb_index_;\n        oVar4 = Gdb_index::find_pubtype_offset(pGVar8,(this->super_Dwarf_info_reader).cu_offset_);\n        bVar3 = read_pubtable(this,pGVar8->pubtypes_table_,oVar4);\n        return bVar3 || bVar2;\n      }\n    }" { (expression_statement "pGVar8 = this->gdb_index_;" (assignment_expression "pGVar8 = this->gdb_index_" identifier = (field_expression "this->gdb_index_" identifier -> field_identifier)) ;) (expression_statement "pRVar1 = (this->super_Dwarf_info_reader).object_;" (assignment_expression "pRVar1 = (this->super_Dwarf_info_reader).object_" identifier = (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)) ;) (if_statement "if ((pGVar8->pubnames_object_ != pRVar1) || (oVar4 != pGVar8->stmt_list_offset_)) {\n        pGVar8->stmt_list_offset_ = oVar4;\n        oVar4 = (this->super_Dwarf_info_reader).cu_offset_;\n        pGVar8->pubnames_object_ = pRVar1;\n        oVar4 = Gdb_index::find_pubname_offset(pGVar8,oVar4);\n        bVar2 = read_pubtable(this,pGVar8->pubnames_table_,oVar4);\n        pGVar8 = this->gdb_index_;\n        oVar4 = Gdb_index::find_pubtype_offset(pGVar8,(this->super_Dwarf_info_reader).cu_offset_);\n        bVar3 = read_pubtable(this,pGVar8->pubtypes_table_,oVar4);\n        return bVar3 || bVar2;\n      }" if (parenthesized_expression "((pGVar8->pubnames_object_ != pRVar1) || (oVar4 != pGVar8->stmt_list_offset_))" ( (binary_expression "(pGVar8->pubnames_object_ != pRVar1) || (oVar4 != pGVar8->stmt_list_offset_)" (parenthesized_expression "(pGVar8->pubnames_object_ != pRVar1)" ( (binary_expression "pGVar8->pubnames_object_ != pRVar1" (field_expression "pGVar8->pubnames_object_" identifier -> field_identifier) != identifier) )) || (parenthesized_expression "(oVar4 != pGVar8->stmt_list_offset_)" ( (binary_expression "oVar4 != pGVar8->stmt_list_offset_" identifier != (field_expression "pGVar8->stmt_list_offset_" identifier -> field_identifier)) ))) )) (compound_statement "{\n        pGVar8->stmt_list_offset_ = oVar4;\n        oVar4 = (this->super_Dwarf_info_reader).cu_offset_;\n        pGVar8->pubnames_object_ = pRVar1;\n        oVar4 = Gdb_index::find_pubname_offset(pGVar8,oVar4);\n        bVar2 = read_pubtable(this,pGVar8->pubnames_table_,oVar4);\n        pGVar8 = this->gdb_index_;\n        oVar4 = Gdb_index::find_pubtype_offset(pGVar8,(this->super_Dwarf_info_reader).cu_offset_);\n        bVar3 = read_pubtable(this,pGVar8->pubtypes_table_,oVar4);\n        return bVar3 || bVar2;\n      }" { (expression_statement "pGVar8->stmt_list_offset_ = oVar4;" (assignment_expression "pGVar8->stmt_list_offset_ = oVar4" (field_expression "pGVar8->stmt_list_offset_" identifier -> field_identifier) = identifier) ;) (expression_statement "oVar4 = (this->super_Dwarf_info_reader).cu_offset_;" (assignment_expression "oVar4 = (this->super_Dwarf_info_reader).cu_offset_" identifier = (field_expression "(this->super_Dwarf_info_reader).cu_offset_" (parenthesized_expression "(this->super_Dwarf_info_reader)" ( (field_expression "this->super_Dwarf_info_reader" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "pGVar8->pubnames_object_ = pRVar1;" (assignment_expression "pGVar8->pubnames_object_ = pRVar1" (field_expression "pGVar8->pubnames_object_" identifier -> field_identifier) = identifier) ;) (ERROR "oVar4 = Gdb_index::" (assignment_expression "oVar4 = Gdb_index" identifier = identifier) : :) (expression_statement "find_pubname_offset(pGVar8,oVar4);" (call_expression "find_pubname_offset(pGVar8,oVar4)" identifier (argument_list "(pGVar8,oVar4)" ( identifier , identifier ))) ;) (expression_statement "bVar2 = read_pubtable(this,pGVar8->pubnames_table_,oVar4);" (assignment_expression "bVar2 = read_pubtable(this,pGVar8->pubnames_table_,oVar4)" identifier = (call_expression "read_pubtable(this,pGVar8->pubnames_table_,oVar4)" identifier (argument_list "(this,pGVar8->pubnames_table_,oVar4)" ( identifier , (field_expression "pGVar8->pubnames_table_" identifier -> field_identifier) , identifier )))) ;) (expression_statement "pGVar8 = this->gdb_index_;" (assignment_expression "pGVar8 = this->gdb_index_" identifier = (field_expression "this->gdb_index_" identifier -> field_identifier)) ;) (ERROR "oVar4 = Gdb_index::" (assignment_expression "oVar4 = Gdb_index" identifier = identifier) : :) (expression_statement "find_pubtype_offset(pGVar8,(this->super_Dwarf_info_reader).cu_offset_);" (call_expression "find_pubtype_offset(pGVar8,(this->super_Dwarf_info_reader).cu_offset_)" identifier (argument_list "(pGVar8,(this->super_Dwarf_info_reader).cu_offset_)" ( identifier , (field_expression "(this->super_Dwarf_info_reader).cu_offset_" (parenthesized_expression "(this->super_Dwarf_info_reader)" ( (field_expression "this->super_Dwarf_info_reader" identifier -> field_identifier) )) . field_identifier) ))) ;) (expression_statement "bVar3 = read_pubtable(this,pGVar8->pubtypes_table_,oVar4);" (assignment_expression "bVar3 = read_pubtable(this,pGVar8->pubtypes_table_,oVar4)" identifier = (call_expression "read_pubtable(this,pGVar8->pubtypes_table_,oVar4)" identifier (argument_list "(this,pGVar8->pubtypes_table_,oVar4)" ( identifier , (field_expression "pGVar8->pubtypes_table_" identifier -> field_identifier) , identifier )))) ;) (return_statement "return bVar3 || bVar2;" return (binary_expression "bVar3 || bVar2" identifier || identifier) ;) })) }))) })) (return_statement "return true;" return true ;) })))
(translation_unit "uint FUN_0018daa0(long param_1,long param_2)\n\n{\n  long lVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  long lVar5;\n  long lVar6;\n  undefined8 uVar7;\n  undefined1 local_2c [12];\n  \n  if (((*(int **)(param_2 + 0x30) == (int *)0x0) || (**(int **)(param_2 + 0x30) != 0x41)) ||\n     (lVar5 = FUN_002b8660(param_2,0x2130), lVar5 == 0)) {\n    lVar5 = FUN_002b8730(param_2,0x10,local_2c);\n    lVar6 = FUN_002b8730(param_2,0x2134,local_2c);\n    iVar2 = FUN_002b86e0(param_2,0x2134);\n    if ((lVar6 == -1) && (iVar2 == 0)) {\n      if (((*(int **)(param_2 + 0x30) == (int *)0x0) || (**(int **)(param_2 + 0x30) != 0x41)) ||\n         ((*(long *)(*(long *)(param_1 + 0x940) + 0x1e8) != *(long *)(param_1 + 0x10) ||\n          (lVar5 != *(long *)(*(long *)(param_1 + 0x940) + 0x1f0))))) {\n        return 0;\n      }\n    }\n    else {\n      lVar6 = *(long *)(param_1 + 0x940);\n      lVar1 = *(long *)(param_1 + 0x10);\n      if ((*(long *)(lVar6 + 0x1e8) != lVar1) || (lVar5 != *(long *)(lVar6 + 0x1f0))) {\n        *(long *)(lVar6 + 0x1f0) = lVar5;\n        uVar7 = *(undefined8 *)(param_1 + 0x50);\n        *(long *)(lVar6 + 0x1e8) = lVar1;\n        uVar7 = FUN_0018cf30(lVar6,uVar7);\n        uVar3 = FUN_0018da10(param_1,*(undefined8 *)(lVar6 + 0xa8),uVar7);\n        lVar5 = *(long *)(param_1 + 0x940);\n        uVar7 = FUN_0018cfa0(lVar5,*(undefined8 *)(param_1 + 0x50));\n        uVar4 = FUN_0018da10(param_1,*(undefined8 *)(lVar5 + 0xb0),uVar7);\n        return uVar4 | uVar3;\n      }\n    }\n  }\n  return 1;\n}\n\n" (function_definition "uint FUN_0018daa0(long param_1,long param_2)\n\n{\n  long lVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  long lVar5;\n  long lVar6;\n  undefined8 uVar7;\n  undefined1 local_2c [12];\n  \n  if (((*(int **)(param_2 + 0x30) == (int *)0x0) || (**(int **)(param_2 + 0x30) != 0x41)) ||\n     (lVar5 = FUN_002b8660(param_2,0x2130), lVar5 == 0)) {\n    lVar5 = FUN_002b8730(param_2,0x10,local_2c);\n    lVar6 = FUN_002b8730(param_2,0x2134,local_2c);\n    iVar2 = FUN_002b86e0(param_2,0x2134);\n    if ((lVar6 == -1) && (iVar2 == 0)) {\n      if (((*(int **)(param_2 + 0x30) == (int *)0x0) || (**(int **)(param_2 + 0x30) != 0x41)) ||\n         ((*(long *)(*(long *)(param_1 + 0x940) + 0x1e8) != *(long *)(param_1 + 0x10) ||\n          (lVar5 != *(long *)(*(long *)(param_1 + 0x940) + 0x1f0))))) {\n        return 0;\n      }\n    }\n    else {\n      lVar6 = *(long *)(param_1 + 0x940);\n      lVar1 = *(long *)(param_1 + 0x10);\n      if ((*(long *)(lVar6 + 0x1e8) != lVar1) || (lVar5 != *(long *)(lVar6 + 0x1f0))) {\n        *(long *)(lVar6 + 0x1f0) = lVar5;\n        uVar7 = *(undefined8 *)(param_1 + 0x50);\n        *(long *)(lVar6 + 0x1e8) = lVar1;\n        uVar7 = FUN_0018cf30(lVar6,uVar7);\n        uVar3 = FUN_0018da10(param_1,*(undefined8 *)(lVar6 + 0xa8),uVar7);\n        lVar5 = *(long *)(param_1 + 0x940);\n        uVar7 = FUN_0018cfa0(lVar5,*(undefined8 *)(param_1 + 0x50));\n        uVar4 = FUN_0018da10(param_1,*(undefined8 *)(lVar5 + 0xb0),uVar7);\n        return uVar4 | uVar3;\n      }\n    }\n  }\n  return 1;\n}" type_identifier (function_declarator "FUN_0018daa0(long param_1,long param_2)" identifier (parameter_list "(long param_1,long param_2)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  long lVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  long lVar5;\n  long lVar6;\n  undefined8 uVar7;\n  undefined1 local_2c [12];\n  \n  if (((*(int **)(param_2 + 0x30) == (int *)0x0) || (**(int **)(param_2 + 0x30) != 0x41)) ||\n     (lVar5 = FUN_002b8660(param_2,0x2130), lVar5 == 0)) {\n    lVar5 = FUN_002b8730(param_2,0x10,local_2c);\n    lVar6 = FUN_002b8730(param_2,0x2134,local_2c);\n    iVar2 = FUN_002b86e0(param_2,0x2134);\n    if ((lVar6 == -1) && (iVar2 == 0)) {\n      if (((*(int **)(param_2 + 0x30) == (int *)0x0) || (**(int **)(param_2 + 0x30) != 0x41)) ||\n         ((*(long *)(*(long *)(param_1 + 0x940) + 0x1e8) != *(long *)(param_1 + 0x10) ||\n          (lVar5 != *(long *)(*(long *)(param_1 + 0x940) + 0x1f0))))) {\n        return 0;\n      }\n    }\n    else {\n      lVar6 = *(long *)(param_1 + 0x940);\n      lVar1 = *(long *)(param_1 + 0x10);\n      if ((*(long *)(lVar6 + 0x1e8) != lVar1) || (lVar5 != *(long *)(lVar6 + 0x1f0))) {\n        *(long *)(lVar6 + 0x1f0) = lVar5;\n        uVar7 = *(undefined8 *)(param_1 + 0x50);\n        *(long *)(lVar6 + 0x1e8) = lVar1;\n        uVar7 = FUN_0018cf30(lVar6,uVar7);\n        uVar3 = FUN_0018da10(param_1,*(undefined8 *)(lVar6 + 0xa8),uVar7);\n        lVar5 = *(long *)(param_1 + 0x940);\n        uVar7 = FUN_0018cfa0(lVar5,*(undefined8 *)(param_1 + 0x50));\n        uVar4 = FUN_0018da10(param_1,*(undefined8 *)(lVar5 + 0xb0),uVar7);\n        return uVar4 | uVar3;\n      }\n    }\n  }\n  return 1;\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 uVar7;" type_identifier identifier ;) (declaration "undefined1 local_2c [12];" type_identifier (array_declarator "local_2c [12]" identifier [ number_literal ]) ;) (if_statement "if (((*(int **)(param_2 + 0x30) == (int *)0x0) || (**(int **)(param_2 + 0x30) != 0x41)) ||\n     (lVar5 = FUN_002b8660(param_2,0x2130), lVar5 == 0)) {\n    lVar5 = FUN_002b8730(param_2,0x10,local_2c);\n    lVar6 = FUN_002b8730(param_2,0x2134,local_2c);\n    iVar2 = FUN_002b86e0(param_2,0x2134);\n    if ((lVar6 == -1) && (iVar2 == 0)) {\n      if (((*(int **)(param_2 + 0x30) == (int *)0x0) || (**(int **)(param_2 + 0x30) != 0x41)) ||\n         ((*(long *)(*(long *)(param_1 + 0x940) + 0x1e8) != *(long *)(param_1 + 0x10) ||\n          (lVar5 != *(long *)(*(long *)(param_1 + 0x940) + 0x1f0))))) {\n        return 0;\n      }\n    }\n    else {\n      lVar6 = *(long *)(param_1 + 0x940);\n      lVar1 = *(long *)(param_1 + 0x10);\n      if ((*(long *)(lVar6 + 0x1e8) != lVar1) || (lVar5 != *(long *)(lVar6 + 0x1f0))) {\n        *(long *)(lVar6 + 0x1f0) = lVar5;\n        uVar7 = *(undefined8 *)(param_1 + 0x50);\n        *(long *)(lVar6 + 0x1e8) = lVar1;\n        uVar7 = FUN_0018cf30(lVar6,uVar7);\n        uVar3 = FUN_0018da10(param_1,*(undefined8 *)(lVar6 + 0xa8),uVar7);\n        lVar5 = *(long *)(param_1 + 0x940);\n        uVar7 = FUN_0018cfa0(lVar5,*(undefined8 *)(param_1 + 0x50));\n        uVar4 = FUN_0018da10(param_1,*(undefined8 *)(lVar5 + 0xb0),uVar7);\n        return uVar4 | uVar3;\n      }\n    }\n  }" if (parenthesized_expression "(((*(int **)(param_2 + 0x30) == (int *)0x0) || (**(int **)(param_2 + 0x30) != 0x41)) ||\n     (lVar5 = FUN_002b8660(param_2,0x2130), lVar5 == 0))" ( (binary_expression "((*(int **)(param_2 + 0x30) == (int *)0x0) || (**(int **)(param_2 + 0x30) != 0x41)) ||\n     (lVar5 = FUN_002b8660(param_2,0x2130), lVar5 == 0)" (parenthesized_expression "((*(int **)(param_2 + 0x30) == (int *)0x0) || (**(int **)(param_2 + 0x30) != 0x41))" ( (binary_expression "(*(int **)(param_2 + 0x30) == (int *)0x0) || (**(int **)(param_2 + 0x30) != 0x41)" (parenthesized_expression "(*(int **)(param_2 + 0x30) == (int *)0x0)" ( (binary_expression "*(int **)(param_2 + 0x30) == (int *)0x0" (pointer_expression "*(int **)(param_2 + 0x30)" * (cast_expression "(int **)(param_2 + 0x30)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x30)" ( (binary_expression "param_2 + 0x30" identifier + number_literal) )))) == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(**(int **)(param_2 + 0x30) != 0x41)" ( (binary_expression "**(int **)(param_2 + 0x30) != 0x41" (pointer_expression "**(int **)(param_2 + 0x30)" * (pointer_expression "*(int **)(param_2 + 0x30)" * (cast_expression "(int **)(param_2 + 0x30)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x30)" ( (binary_expression "param_2 + 0x30" identifier + number_literal) ))))) != number_literal) ))) )) || (parenthesized_expression "(lVar5 = FUN_002b8660(param_2,0x2130), lVar5 == 0)" ( (comma_expression "lVar5 = FUN_002b8660(param_2,0x2130), lVar5 == 0" (assignment_expression "lVar5 = FUN_002b8660(param_2,0x2130)" identifier = (call_expression "FUN_002b8660(param_2,0x2130)" identifier (argument_list "(param_2,0x2130)" ( identifier , number_literal )))) , (binary_expression "lVar5 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n    lVar5 = FUN_002b8730(param_2,0x10,local_2c);\n    lVar6 = FUN_002b8730(param_2,0x2134,local_2c);\n    iVar2 = FUN_002b86e0(param_2,0x2134);\n    if ((lVar6 == -1) && (iVar2 == 0)) {\n      if (((*(int **)(param_2 + 0x30) == (int *)0x0) || (**(int **)(param_2 + 0x30) != 0x41)) ||\n         ((*(long *)(*(long *)(param_1 + 0x940) + 0x1e8) != *(long *)(param_1 + 0x10) ||\n          (lVar5 != *(long *)(*(long *)(param_1 + 0x940) + 0x1f0))))) {\n        return 0;\n      }\n    }\n    else {\n      lVar6 = *(long *)(param_1 + 0x940);\n      lVar1 = *(long *)(param_1 + 0x10);\n      if ((*(long *)(lVar6 + 0x1e8) != lVar1) || (lVar5 != *(long *)(lVar6 + 0x1f0))) {\n        *(long *)(lVar6 + 0x1f0) = lVar5;\n        uVar7 = *(undefined8 *)(param_1 + 0x50);\n        *(long *)(lVar6 + 0x1e8) = lVar1;\n        uVar7 = FUN_0018cf30(lVar6,uVar7);\n        uVar3 = FUN_0018da10(param_1,*(undefined8 *)(lVar6 + 0xa8),uVar7);\n        lVar5 = *(long *)(param_1 + 0x940);\n        uVar7 = FUN_0018cfa0(lVar5,*(undefined8 *)(param_1 + 0x50));\n        uVar4 = FUN_0018da10(param_1,*(undefined8 *)(lVar5 + 0xb0),uVar7);\n        return uVar4 | uVar3;\n      }\n    }\n  }" { (expression_statement "lVar5 = FUN_002b8730(param_2,0x10,local_2c);" (assignment_expression "lVar5 = FUN_002b8730(param_2,0x10,local_2c)" identifier = (call_expression "FUN_002b8730(param_2,0x10,local_2c)" identifier (argument_list "(param_2,0x10,local_2c)" ( identifier , number_literal , identifier )))) ;) (expression_statement "lVar6 = FUN_002b8730(param_2,0x2134,local_2c);" (assignment_expression "lVar6 = FUN_002b8730(param_2,0x2134,local_2c)" identifier = (call_expression "FUN_002b8730(param_2,0x2134,local_2c)" identifier (argument_list "(param_2,0x2134,local_2c)" ( identifier , number_literal , identifier )))) ;) (expression_statement "iVar2 = FUN_002b86e0(param_2,0x2134);" (assignment_expression "iVar2 = FUN_002b86e0(param_2,0x2134)" identifier = (call_expression "FUN_002b86e0(param_2,0x2134)" identifier (argument_list "(param_2,0x2134)" ( identifier , number_literal )))) ;) (if_statement "if ((lVar6 == -1) && (iVar2 == 0)) {\n      if (((*(int **)(param_2 + 0x30) == (int *)0x0) || (**(int **)(param_2 + 0x30) != 0x41)) ||\n         ((*(long *)(*(long *)(param_1 + 0x940) + 0x1e8) != *(long *)(param_1 + 0x10) ||\n          (lVar5 != *(long *)(*(long *)(param_1 + 0x940) + 0x1f0))))) {\n        return 0;\n      }\n    }\n    else {\n      lVar6 = *(long *)(param_1 + 0x940);\n      lVar1 = *(long *)(param_1 + 0x10);\n      if ((*(long *)(lVar6 + 0x1e8) != lVar1) || (lVar5 != *(long *)(lVar6 + 0x1f0))) {\n        *(long *)(lVar6 + 0x1f0) = lVar5;\n        uVar7 = *(undefined8 *)(param_1 + 0x50);\n        *(long *)(lVar6 + 0x1e8) = lVar1;\n        uVar7 = FUN_0018cf30(lVar6,uVar7);\n        uVar3 = FUN_0018da10(param_1,*(undefined8 *)(lVar6 + 0xa8),uVar7);\n        lVar5 = *(long *)(param_1 + 0x940);\n        uVar7 = FUN_0018cfa0(lVar5,*(undefined8 *)(param_1 + 0x50));\n        uVar4 = FUN_0018da10(param_1,*(undefined8 *)(lVar5 + 0xb0),uVar7);\n        return uVar4 | uVar3;\n      }\n    }" if (parenthesized_expression "((lVar6 == -1) && (iVar2 == 0))" ( (binary_expression "(lVar6 == -1) && (iVar2 == 0)" (parenthesized_expression "(lVar6 == -1)" ( (binary_expression "lVar6 == -1" identifier == number_literal) )) && (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) ))) )) (compound_statement "{\n      if (((*(int **)(param_2 + 0x30) == (int *)0x0) || (**(int **)(param_2 + 0x30) != 0x41)) ||\n         ((*(long *)(*(long *)(param_1 + 0x940) + 0x1e8) != *(long *)(param_1 + 0x10) ||\n          (lVar5 != *(long *)(*(long *)(param_1 + 0x940) + 0x1f0))))) {\n        return 0;\n      }\n    }" { (if_statement "if (((*(int **)(param_2 + 0x30) == (int *)0x0) || (**(int **)(param_2 + 0x30) != 0x41)) ||\n         ((*(long *)(*(long *)(param_1 + 0x940) + 0x1e8) != *(long *)(param_1 + 0x10) ||\n          (lVar5 != *(long *)(*(long *)(param_1 + 0x940) + 0x1f0))))) {\n        return 0;\n      }" if (parenthesized_expression "(((*(int **)(param_2 + 0x30) == (int *)0x0) || (**(int **)(param_2 + 0x30) != 0x41)) ||\n         ((*(long *)(*(long *)(param_1 + 0x940) + 0x1e8) != *(long *)(param_1 + 0x10) ||\n          (lVar5 != *(long *)(*(long *)(param_1 + 0x940) + 0x1f0)))))" ( (binary_expression "((*(int **)(param_2 + 0x30) == (int *)0x0) || (**(int **)(param_2 + 0x30) != 0x41)) ||\n         ((*(long *)(*(long *)(param_1 + 0x940) + 0x1e8) != *(long *)(param_1 + 0x10) ||\n          (lVar5 != *(long *)(*(long *)(param_1 + 0x940) + 0x1f0))))" (parenthesized_expression "((*(int **)(param_2 + 0x30) == (int *)0x0) || (**(int **)(param_2 + 0x30) != 0x41))" ( (binary_expression "(*(int **)(param_2 + 0x30) == (int *)0x0) || (**(int **)(param_2 + 0x30) != 0x41)" (parenthesized_expression "(*(int **)(param_2 + 0x30) == (int *)0x0)" ( (binary_expression "*(int **)(param_2 + 0x30) == (int *)0x0" (pointer_expression "*(int **)(param_2 + 0x30)" * (cast_expression "(int **)(param_2 + 0x30)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x30)" ( (binary_expression "param_2 + 0x30" identifier + number_literal) )))) == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(**(int **)(param_2 + 0x30) != 0x41)" ( (binary_expression "**(int **)(param_2 + 0x30) != 0x41" (pointer_expression "**(int **)(param_2 + 0x30)" * (pointer_expression "*(int **)(param_2 + 0x30)" * (cast_expression "(int **)(param_2 + 0x30)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x30)" ( (binary_expression "param_2 + 0x30" identifier + number_literal) ))))) != number_literal) ))) )) || (parenthesized_expression "((*(long *)(*(long *)(param_1 + 0x940) + 0x1e8) != *(long *)(param_1 + 0x10) ||\n          (lVar5 != *(long *)(*(long *)(param_1 + 0x940) + 0x1f0))))" ( (parenthesized_expression "(*(long *)(*(long *)(param_1 + 0x940) + 0x1e8) != *(long *)(param_1 + 0x10) ||\n          (lVar5 != *(long *)(*(long *)(param_1 + 0x940) + 0x1f0)))" ( (binary_expression "*(long *)(*(long *)(param_1 + 0x940) + 0x1e8) != *(long *)(param_1 + 0x10) ||\n          (lVar5 != *(long *)(*(long *)(param_1 + 0x940) + 0x1f0))" (binary_expression "*(long *)(*(long *)(param_1 + 0x940) + 0x1e8) != *(long *)(param_1 + 0x10)" (pointer_expression "*(long *)(*(long *)(param_1 + 0x940) + 0x1e8)" * (cast_expression "(long *)(*(long *)(param_1 + 0x940) + 0x1e8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x940) + 0x1e8)" ( (binary_expression "*(long *)(param_1 + 0x940) + 0x1e8" (pointer_expression "*(long *)(param_1 + 0x940)" * (cast_expression "(long *)(param_1 + 0x940)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x940)" ( (binary_expression "param_1 + 0x940" identifier + number_literal) )))) + number_literal) )))) != (pointer_expression "*(long *)(param_1 + 0x10)" * (cast_expression "(long *)(param_1 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) || (parenthesized_expression "(lVar5 != *(long *)(*(long *)(param_1 + 0x940) + 0x1f0))" ( (binary_expression "lVar5 != *(long *)(*(long *)(param_1 + 0x940) + 0x1f0)" identifier != (pointer_expression "*(long *)(*(long *)(param_1 + 0x940) + 0x1f0)" * (cast_expression "(long *)(*(long *)(param_1 + 0x940) + 0x1f0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x940) + 0x1f0)" ( (binary_expression "*(long *)(param_1 + 0x940) + 0x1f0" (pointer_expression "*(long *)(param_1 + 0x940)" * (cast_expression "(long *)(param_1 + 0x940)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x940)" ( (binary_expression "param_1 + 0x940" identifier + number_literal) )))) + number_literal) ))))) ))) )) ))) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) }) (else_clause "else {\n      lVar6 = *(long *)(param_1 + 0x940);\n      lVar1 = *(long *)(param_1 + 0x10);\n      if ((*(long *)(lVar6 + 0x1e8) != lVar1) || (lVar5 != *(long *)(lVar6 + 0x1f0))) {\n        *(long *)(lVar6 + 0x1f0) = lVar5;\n        uVar7 = *(undefined8 *)(param_1 + 0x50);\n        *(long *)(lVar6 + 0x1e8) = lVar1;\n        uVar7 = FUN_0018cf30(lVar6,uVar7);\n        uVar3 = FUN_0018da10(param_1,*(undefined8 *)(lVar6 + 0xa8),uVar7);\n        lVar5 = *(long *)(param_1 + 0x940);\n        uVar7 = FUN_0018cfa0(lVar5,*(undefined8 *)(param_1 + 0x50));\n        uVar4 = FUN_0018da10(param_1,*(undefined8 *)(lVar5 + 0xb0),uVar7);\n        return uVar4 | uVar3;\n      }\n    }" else (compound_statement "{\n      lVar6 = *(long *)(param_1 + 0x940);\n      lVar1 = *(long *)(param_1 + 0x10);\n      if ((*(long *)(lVar6 + 0x1e8) != lVar1) || (lVar5 != *(long *)(lVar6 + 0x1f0))) {\n        *(long *)(lVar6 + 0x1f0) = lVar5;\n        uVar7 = *(undefined8 *)(param_1 + 0x50);\n        *(long *)(lVar6 + 0x1e8) = lVar1;\n        uVar7 = FUN_0018cf30(lVar6,uVar7);\n        uVar3 = FUN_0018da10(param_1,*(undefined8 *)(lVar6 + 0xa8),uVar7);\n        lVar5 = *(long *)(param_1 + 0x940);\n        uVar7 = FUN_0018cfa0(lVar5,*(undefined8 *)(param_1 + 0x50));\n        uVar4 = FUN_0018da10(param_1,*(undefined8 *)(lVar5 + 0xb0),uVar7);\n        return uVar4 | uVar3;\n      }\n    }" { (expression_statement "lVar6 = *(long *)(param_1 + 0x940);" (assignment_expression "lVar6 = *(long *)(param_1 + 0x940)" identifier = (pointer_expression "*(long *)(param_1 + 0x940)" * (cast_expression "(long *)(param_1 + 0x940)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x940)" ( (binary_expression "param_1 + 0x940" identifier + number_literal) ))))) ;) (expression_statement "lVar1 = *(long *)(param_1 + 0x10);" (assignment_expression "lVar1 = *(long *)(param_1 + 0x10)" identifier = (pointer_expression "*(long *)(param_1 + 0x10)" * (cast_expression "(long *)(param_1 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;) (if_statement "if ((*(long *)(lVar6 + 0x1e8) != lVar1) || (lVar5 != *(long *)(lVar6 + 0x1f0))) {\n        *(long *)(lVar6 + 0x1f0) = lVar5;\n        uVar7 = *(undefined8 *)(param_1 + 0x50);\n        *(long *)(lVar6 + 0x1e8) = lVar1;\n        uVar7 = FUN_0018cf30(lVar6,uVar7);\n        uVar3 = FUN_0018da10(param_1,*(undefined8 *)(lVar6 + 0xa8),uVar7);\n        lVar5 = *(long *)(param_1 + 0x940);\n        uVar7 = FUN_0018cfa0(lVar5,*(undefined8 *)(param_1 + 0x50));\n        uVar4 = FUN_0018da10(param_1,*(undefined8 *)(lVar5 + 0xb0),uVar7);\n        return uVar4 | uVar3;\n      }" if (parenthesized_expression "((*(long *)(lVar6 + 0x1e8) != lVar1) || (lVar5 != *(long *)(lVar6 + 0x1f0)))" ( (binary_expression "(*(long *)(lVar6 + 0x1e8) != lVar1) || (lVar5 != *(long *)(lVar6 + 0x1f0))" (parenthesized_expression "(*(long *)(lVar6 + 0x1e8) != lVar1)" ( (binary_expression "*(long *)(lVar6 + 0x1e8) != lVar1" (pointer_expression "*(long *)(lVar6 + 0x1e8)" * (cast_expression "(long *)(lVar6 + 0x1e8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x1e8)" ( (binary_expression "lVar6 + 0x1e8" identifier + number_literal) )))) != identifier) )) || (parenthesized_expression "(lVar5 != *(long *)(lVar6 + 0x1f0))" ( (binary_expression "lVar5 != *(long *)(lVar6 + 0x1f0)" identifier != (pointer_expression "*(long *)(lVar6 + 0x1f0)" * (cast_expression "(long *)(lVar6 + 0x1f0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x1f0)" ( (binary_expression "lVar6 + 0x1f0" identifier + number_literal) ))))) ))) )) (compound_statement "{\n        *(long *)(lVar6 + 0x1f0) = lVar5;\n        uVar7 = *(undefined8 *)(param_1 + 0x50);\n        *(long *)(lVar6 + 0x1e8) = lVar1;\n        uVar7 = FUN_0018cf30(lVar6,uVar7);\n        uVar3 = FUN_0018da10(param_1,*(undefined8 *)(lVar6 + 0xa8),uVar7);\n        lVar5 = *(long *)(param_1 + 0x940);\n        uVar7 = FUN_0018cfa0(lVar5,*(undefined8 *)(param_1 + 0x50));\n        uVar4 = FUN_0018da10(param_1,*(undefined8 *)(lVar5 + 0xb0),uVar7);\n        return uVar4 | uVar3;\n      }" { (expression_statement "*(long *)(lVar6 + 0x1f0) = lVar5;" (assignment_expression "*(long *)(lVar6 + 0x1f0) = lVar5" (pointer_expression "*(long *)(lVar6 + 0x1f0)" * (cast_expression "(long *)(lVar6 + 0x1f0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x1f0)" ( (binary_expression "lVar6 + 0x1f0" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar7 = *(undefined8 *)(param_1 + 0x50);" (assignment_expression "uVar7 = *(undefined8 *)(param_1 + 0x50)" identifier = (pointer_expression "*(undefined8 *)(param_1 + 0x50)" * (cast_expression "(undefined8 *)(param_1 + 0x50)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) ))))) ;) (expression_statement "*(long *)(lVar6 + 0x1e8) = lVar1;" (assignment_expression "*(long *)(lVar6 + 0x1e8) = lVar1" (pointer_expression "*(long *)(lVar6 + 0x1e8)" * (cast_expression "(long *)(lVar6 + 0x1e8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x1e8)" ( (binary_expression "lVar6 + 0x1e8" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar7 = FUN_0018cf30(lVar6,uVar7);" (assignment_expression "uVar7 = FUN_0018cf30(lVar6,uVar7)" identifier = (call_expression "FUN_0018cf30(lVar6,uVar7)" identifier (argument_list "(lVar6,uVar7)" ( identifier , identifier )))) ;) (expression_statement "uVar3 = FUN_0018da10(param_1,*(undefined8 *)(lVar6 + 0xa8),uVar7);" (assignment_expression "uVar3 = FUN_0018da10(param_1,*(undefined8 *)(lVar6 + 0xa8),uVar7)" identifier = (call_expression "FUN_0018da10(param_1,*(undefined8 *)(lVar6 + 0xa8),uVar7)" identifier (argument_list "(param_1,*(undefined8 *)(lVar6 + 0xa8),uVar7)" ( identifier , (pointer_expression "*(undefined8 *)(lVar6 + 0xa8)" * (cast_expression "(undefined8 *)(lVar6 + 0xa8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0xa8)" ( (binary_expression "lVar6 + 0xa8" identifier + number_literal) )))) , identifier )))) ;) (expression_statement "lVar5 = *(long *)(param_1 + 0x940);" (assignment_expression "lVar5 = *(long *)(param_1 + 0x940)" identifier = (pointer_expression "*(long *)(param_1 + 0x940)" * (cast_expression "(long *)(param_1 + 0x940)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x940)" ( (binary_expression "param_1 + 0x940" identifier + number_literal) ))))) ;) (expression_statement "uVar7 = FUN_0018cfa0(lVar5,*(undefined8 *)(param_1 + 0x50));" (assignment_expression "uVar7 = FUN_0018cfa0(lVar5,*(undefined8 *)(param_1 + 0x50))" identifier = (call_expression "FUN_0018cfa0(lVar5,*(undefined8 *)(param_1 + 0x50))" identifier (argument_list "(lVar5,*(undefined8 *)(param_1 + 0x50))" ( identifier , (pointer_expression "*(undefined8 *)(param_1 + 0x50)" * (cast_expression "(undefined8 *)(param_1 + 0x50)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) )))) )))) ;) (expression_statement "uVar4 = FUN_0018da10(param_1,*(undefined8 *)(lVar5 + 0xb0),uVar7);" (assignment_expression "uVar4 = FUN_0018da10(param_1,*(undefined8 *)(lVar5 + 0xb0),uVar7)" identifier = (call_expression "FUN_0018da10(param_1,*(undefined8 *)(lVar5 + 0xb0),uVar7)" identifier (argument_list "(param_1,*(undefined8 *)(lVar5 + 0xb0),uVar7)" ( identifier , (pointer_expression "*(undefined8 *)(lVar5 + 0xb0)" * (cast_expression "(undefined8 *)(lVar5 + 0xb0)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0xb0)" ( (binary_expression "lVar5 + 0xb0" identifier + number_literal) )))) , identifier )))) ;) (return_statement "return uVar4 | uVar3;" return (binary_expression "uVar4 | uVar3" identifier | identifier) ;) })) }))) })) (return_statement "return 1;" return number_literal ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) ))) (compound_statement { (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (if_statement if (parenthesized_expression ( (binary_expression (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) ))) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) , (binary_expression IDENT == LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (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) ))) )) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) != (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) || (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ))) )) ))) )) (compound_statement { (return_statement return LIT ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != IDENT) )) || (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT )))) ;) (return_statement return (binary_expression IDENT | IDENT) ;) })) }))) })) (return_statement return LIT ;) })))
(function_definition "uint FUN_0018daa0(long param_1,long param_2)\n\n{\n  long lVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  long lVar5;\n  long lVar6;\n  undefined8 uVar7;\n  undefined1 local_2c [12];\n  \n  if (((*(int **)(param_2 + 0x30) == (int *)0x0) || (**(int **)(param_2 + 0x30) != 0x41)) ||\n     (lVar5 = FUN_002b8660(param_2,0x2130), lVar5 == 0)) {\n    lVar5 = FUN_002b8730(param_2,0x10,local_2c);\n    lVar6 = FUN_002b8730(param_2,0x2134,local_2c);\n    iVar2 = FUN_002b86e0(param_2,0x2134);\n    if ((lVar6 == -1) && (iVar2 == 0)) {\n      if (((*(int **)(param_2 + 0x30) == (int *)0x0) || (**(int **)(param_2 + 0x30) != 0x41)) ||\n         ((*(long *)(*(long *)(param_1 + 0x940) + 0x1e8) != *(long *)(param_1 + 0x10) ||\n          (lVar5 != *(long *)(*(long *)(param_1 + 0x940) + 0x1f0))))) {\n        return 0;\n      }\n    }\n    else {\n      lVar6 = *(long *)(param_1 + 0x940);\n      lVar1 = *(long *)(param_1 + 0x10);\n      if ((*(long *)(lVar6 + 0x1e8) != lVar1) || (lVar5 != *(long *)(lVar6 + 0x1f0))) {\n        *(long *)(lVar6 + 0x1f0) = lVar5;\n        uVar7 = *(undefined8 *)(param_1 + 0x50);\n        *(long *)(lVar6 + 0x1e8) = lVar1;\n        uVar7 = FUN_0018cf30(lVar6,uVar7);\n        uVar3 = FUN_0018da10(param_1,*(undefined8 *)(lVar6 + 0xa8),uVar7);\n        lVar5 = *(long *)(param_1 + 0x940);\n        uVar7 = FUN_0018cfa0(lVar5,*(undefined8 *)(param_1 + 0x50));\n        uVar4 = FUN_0018da10(param_1,*(undefined8 *)(lVar5 + 0xb0),uVar7);\n        return uVar4 | uVar3;\n      }\n    }\n  }\n  return 1;\n}" (type_identifier "uint") (function_declarator "FUN_0018daa0(long param_1,long param_2)" (identifier "FUN_0018daa0") (parameter_list "(long param_1,long param_2)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) (, ",") (parameter_declaration "long param_2" (sized_type_specifier "long" (long "long")) (identifier "param_2")) () ")"))) (compound_statement "{\n  long lVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  long lVar5;\n  long lVar6;\n  undefined8 uVar7;\n  undefined1 local_2c [12];\n  \n  if (((*(int **)(param_2 + 0x30) == (int *)0x0) || (**(int **)(param_2 + 0x30) != 0x41)) ||\n     (lVar5 = FUN_002b8660(param_2,0x2130), lVar5 == 0)) {\n    lVar5 = FUN_002b8730(param_2,0x10,local_2c);\n    lVar6 = FUN_002b8730(param_2,0x2134,local_2c);\n    iVar2 = FUN_002b86e0(param_2,0x2134);\n    if ((lVar6 == -1) && (iVar2 == 0)) {\n      if (((*(int **)(param_2 + 0x30) == (int *)0x0) || (**(int **)(param_2 + 0x30) != 0x41)) ||\n         ((*(long *)(*(long *)(param_1 + 0x940) + 0x1e8) != *(long *)(param_1 + 0x10) ||\n          (lVar5 != *(long *)(*(long *)(param_1 + 0x940) + 0x1f0))))) {\n        return 0;\n      }\n    }\n    else {\n      lVar6 = *(long *)(param_1 + 0x940);\n      lVar1 = *(long *)(param_1 + 0x10);\n      if ((*(long *)(lVar6 + 0x1e8) != lVar1) || (lVar5 != *(long *)(lVar6 + 0x1f0))) {\n        *(long *)(lVar6 + 0x1f0) = lVar5;\n        uVar7 = *(undefined8 *)(param_1 + 0x50);\n        *(long *)(lVar6 + 0x1e8) = lVar1;\n        uVar7 = FUN_0018cf30(lVar6,uVar7);\n        uVar3 = FUN_0018da10(param_1,*(undefined8 *)(lVar6 + 0xa8),uVar7);\n        lVar5 = *(long *)(param_1 + 0x940);\n        uVar7 = FUN_0018cfa0(lVar5,*(undefined8 *)(param_1 + 0x50));\n        uVar4 = FUN_0018da10(param_1,*(undefined8 *)(lVar5 + 0xb0),uVar7);\n        return uVar4 | uVar3;\n      }\n    }\n  }\n  return 1;\n}" ({ "{") (declaration "long lVar1;" (sized_type_specifier "long" (long "long")) (identifier "lVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "long lVar5;" (sized_type_specifier "long" (long "long")) (identifier "lVar5") (; ";")) (declaration "long lVar6;" (sized_type_specifier "long" (long "long")) (identifier "lVar6") (; ";")) (declaration "undefined8 uVar7;" (type_identifier "undefined8") (identifier "uVar7") (; ";")) (declaration "undefined1 local_2c [12];" (type_identifier "undefined1") (array_declarator "local_2c [12]" (identifier "local_2c") ([ "[") (number_literal "12") (] "]")) (; ";")) (if_statement "if (((*(int **)(param_2 + 0x30) == (int *)0x0) || (**(int **)(param_2 + 0x30) != 0x41)) ||\n     (lVar5 = FUN_002b8660(param_2,0x2130), lVar5 == 0)) {\n    lVar5 = FUN_002b8730(param_2,0x10,local_2c);\n    lVar6 = FUN_002b8730(param_2,0x2134,local_2c);\n    iVar2 = FUN_002b86e0(param_2,0x2134);\n    if ((lVar6 == -1) && (iVar2 == 0)) {\n      if (((*(int **)(param_2 + 0x30) == (int *)0x0) || (**(int **)(param_2 + 0x30) != 0x41)) ||\n         ((*(long *)(*(long *)(param_1 + 0x940) + 0x1e8) != *(long *)(param_1 + 0x10) ||\n          (lVar5 != *(long *)(*(long *)(param_1 + 0x940) + 0x1f0))))) {\n        return 0;\n      }\n    }\n    else {\n      lVar6 = *(long *)(param_1 + 0x940);\n      lVar1 = *(long *)(param_1 + 0x10);\n      if ((*(long *)(lVar6 + 0x1e8) != lVar1) || (lVar5 != *(long *)(lVar6 + 0x1f0))) {\n        *(long *)(lVar6 + 0x1f0) = lVar5;\n        uVar7 = *(undefined8 *)(param_1 + 0x50);\n        *(long *)(lVar6 + 0x1e8) = lVar1;\n        uVar7 = FUN_0018cf30(lVar6,uVar7);\n        uVar3 = FUN_0018da10(param_1,*(undefined8 *)(lVar6 + 0xa8),uVar7);\n        lVar5 = *(long *)(param_1 + 0x940);\n        uVar7 = FUN_0018cfa0(lVar5,*(undefined8 *)(param_1 + 0x50));\n        uVar4 = FUN_0018da10(param_1,*(undefined8 *)(lVar5 + 0xb0),uVar7);\n        return uVar4 | uVar3;\n      }\n    }\n  }" (if "if") (parenthesized_expression "(((*(int **)(param_2 + 0x30) == (int *)0x0) || (**(int **)(param_2 + 0x30) != 0x41)) ||\n     (lVar5 = FUN_002b8660(param_2,0x2130), lVar5 == 0))" (( "(") (binary_expression "((*(int **)(param_2 + 0x30) == (int *)0x0) || (**(int **)(param_2 + 0x30) != 0x41)) ||\n     (lVar5 = FUN_002b8660(param_2,0x2130), lVar5 == 0)" (parenthesized_expression "((*(int **)(param_2 + 0x30) == (int *)0x0) || (**(int **)(param_2 + 0x30) != 0x41))" (( "(") (binary_expression "(*(int **)(param_2 + 0x30) == (int *)0x0) || (**(int **)(param_2 + 0x30) != 0x41)" (parenthesized_expression "(*(int **)(param_2 + 0x30) == (int *)0x0)" (( "(") (binary_expression "*(int **)(param_2 + 0x30) == (int *)0x0" (pointer_expression "*(int **)(param_2 + 0x30)" (* "*") (cast_expression "(int **)(param_2 + 0x30)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 0x30)" (( "(") (binary_expression "param_2 + 0x30" (identifier "param_2") (+ "+") (number_literal "0x30")) () ")")))) (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (|| "||") (parenthesized_expression "(**(int **)(param_2 + 0x30) != 0x41)" (( "(") (binary_expression "**(int **)(param_2 + 0x30) != 0x41" (pointer_expression "**(int **)(param_2 + 0x30)" (* "*") (pointer_expression "*(int **)(param_2 + 0x30)" (* "*") (cast_expression "(int **)(param_2 + 0x30)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 0x30)" (( "(") (binary_expression "param_2 + 0x30" (identifier "param_2") (+ "+") (number_literal "0x30")) () ")"))))) (!= "!=") (number_literal "0x41")) () ")"))) () ")")) (|| "||") (parenthesized_expression "(lVar5 = FUN_002b8660(param_2,0x2130), lVar5 == 0)" (( "(") (comma_expression "lVar5 = FUN_002b8660(param_2,0x2130), lVar5 == 0" (assignment_expression "lVar5 = FUN_002b8660(param_2,0x2130)" (identifier "lVar5") (= "=") (call_expression "FUN_002b8660(param_2,0x2130)" (identifier "FUN_002b8660") (argument_list "(param_2,0x2130)" (( "(") (identifier "param_2") (, ",") (number_literal "0x2130") () ")")))) (, ",") (binary_expression "lVar5 == 0" (identifier "lVar5") (== "==") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n    lVar5 = FUN_002b8730(param_2,0x10,local_2c);\n    lVar6 = FUN_002b8730(param_2,0x2134,local_2c);\n    iVar2 = FUN_002b86e0(param_2,0x2134);\n    if ((lVar6 == -1) && (iVar2 == 0)) {\n      if (((*(int **)(param_2 + 0x30) == (int *)0x0) || (**(int **)(param_2 + 0x30) != 0x41)) ||\n         ((*(long *)(*(long *)(param_1 + 0x940) + 0x1e8) != *(long *)(param_1 + 0x10) ||\n          (lVar5 != *(long *)(*(long *)(param_1 + 0x940) + 0x1f0))))) {\n        return 0;\n      }\n    }\n    else {\n      lVar6 = *(long *)(param_1 + 0x940);\n      lVar1 = *(long *)(param_1 + 0x10);\n      if ((*(long *)(lVar6 + 0x1e8) != lVar1) || (lVar5 != *(long *)(lVar6 + 0x1f0))) {\n        *(long *)(lVar6 + 0x1f0) = lVar5;\n        uVar7 = *(undefined8 *)(param_1 + 0x50);\n        *(long *)(lVar6 + 0x1e8) = lVar1;\n        uVar7 = FUN_0018cf30(lVar6,uVar7);\n        uVar3 = FUN_0018da10(param_1,*(undefined8 *)(lVar6 + 0xa8),uVar7);\n        lVar5 = *(long *)(param_1 + 0x940);\n        uVar7 = FUN_0018cfa0(lVar5,*(undefined8 *)(param_1 + 0x50));\n        uVar4 = FUN_0018da10(param_1,*(undefined8 *)(lVar5 + 0xb0),uVar7);\n        return uVar4 | uVar3;\n      }\n    }\n  }" ({ "{") (expression_statement "lVar5 = FUN_002b8730(param_2,0x10,local_2c);" (assignment_expression "lVar5 = FUN_002b8730(param_2,0x10,local_2c)" (identifier "lVar5") (= "=") (call_expression "FUN_002b8730(param_2,0x10,local_2c)" (identifier "FUN_002b8730") (argument_list "(param_2,0x10,local_2c)" (( "(") (identifier "param_2") (, ",") (number_literal "0x10") (, ",") (identifier "local_2c") () ")")))) (; ";")) (expression_statement "lVar6 = FUN_002b8730(param_2,0x2134,local_2c);" (assignment_expression "lVar6 = FUN_002b8730(param_2,0x2134,local_2c)" (identifier "lVar6") (= "=") (call_expression "FUN_002b8730(param_2,0x2134,local_2c)" (identifier "FUN_002b8730") (argument_list "(param_2,0x2134,local_2c)" (( "(") (identifier "param_2") (, ",") (number_literal "0x2134") (, ",") (identifier "local_2c") () ")")))) (; ";")) (expression_statement "iVar2 = FUN_002b86e0(param_2,0x2134);" (assignment_expression "iVar2 = FUN_002b86e0(param_2,0x2134)" (identifier "iVar2") (= "=") (call_expression "FUN_002b86e0(param_2,0x2134)" (identifier "FUN_002b86e0") (argument_list "(param_2,0x2134)" (( "(") (identifier "param_2") (, ",") (number_literal "0x2134") () ")")))) (; ";")) (if_statement "if ((lVar6 == -1) && (iVar2 == 0)) {\n      if (((*(int **)(param_2 + 0x30) == (int *)0x0) || (**(int **)(param_2 + 0x30) != 0x41)) ||\n         ((*(long *)(*(long *)(param_1 + 0x940) + 0x1e8) != *(long *)(param_1 + 0x10) ||\n          (lVar5 != *(long *)(*(long *)(param_1 + 0x940) + 0x1f0))))) {\n        return 0;\n      }\n    }\n    else {\n      lVar6 = *(long *)(param_1 + 0x940);\n      lVar1 = *(long *)(param_1 + 0x10);\n      if ((*(long *)(lVar6 + 0x1e8) != lVar1) || (lVar5 != *(long *)(lVar6 + 0x1f0))) {\n        *(long *)(lVar6 + 0x1f0) = lVar5;\n        uVar7 = *(undefined8 *)(param_1 + 0x50);\n        *(long *)(lVar6 + 0x1e8) = lVar1;\n        uVar7 = FUN_0018cf30(lVar6,uVar7);\n        uVar3 = FUN_0018da10(param_1,*(undefined8 *)(lVar6 + 0xa8),uVar7);\n        lVar5 = *(long *)(param_1 + 0x940);\n        uVar7 = FUN_0018cfa0(lVar5,*(undefined8 *)(param_1 + 0x50));\n        uVar4 = FUN_0018da10(param_1,*(undefined8 *)(lVar5 + 0xb0),uVar7);\n        return uVar4 | uVar3;\n      }\n    }" (if "if") (parenthesized_expression "((lVar6 == -1) && (iVar2 == 0))" (( "(") (binary_expression "(lVar6 == -1) && (iVar2 == 0)" (parenthesized_expression "(lVar6 == -1)" (( "(") (binary_expression "lVar6 == -1" (identifier "lVar6") (== "==") (number_literal "-1")) () ")")) (&& "&&") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n      if (((*(int **)(param_2 + 0x30) == (int *)0x0) || (**(int **)(param_2 + 0x30) != 0x41)) ||\n         ((*(long *)(*(long *)(param_1 + 0x940) + 0x1e8) != *(long *)(param_1 + 0x10) ||\n          (lVar5 != *(long *)(*(long *)(param_1 + 0x940) + 0x1f0))))) {\n        return 0;\n      }\n    }" ({ "{") (if_statement "if (((*(int **)(param_2 + 0x30) == (int *)0x0) || (**(int **)(param_2 + 0x30) != 0x41)) ||\n         ((*(long *)(*(long *)(param_1 + 0x940) + 0x1e8) != *(long *)(param_1 + 0x10) ||\n          (lVar5 != *(long *)(*(long *)(param_1 + 0x940) + 0x1f0))))) {\n        return 0;\n      }" (if "if") (parenthesized_expression "(((*(int **)(param_2 + 0x30) == (int *)0x0) || (**(int **)(param_2 + 0x30) != 0x41)) ||\n         ((*(long *)(*(long *)(param_1 + 0x940) + 0x1e8) != *(long *)(param_1 + 0x10) ||\n          (lVar5 != *(long *)(*(long *)(param_1 + 0x940) + 0x1f0)))))" (( "(") (binary_expression "((*(int **)(param_2 + 0x30) == (int *)0x0) || (**(int **)(param_2 + 0x30) != 0x41)) ||\n         ((*(long *)(*(long *)(param_1 + 0x940) + 0x1e8) != *(long *)(param_1 + 0x10) ||\n          (lVar5 != *(long *)(*(long *)(param_1 + 0x940) + 0x1f0))))" (parenthesized_expression "((*(int **)(param_2 + 0x30) == (int *)0x0) || (**(int **)(param_2 + 0x30) != 0x41))" (( "(") (binary_expression "(*(int **)(param_2 + 0x30) == (int *)0x0) || (**(int **)(param_2 + 0x30) != 0x41)" (parenthesized_expression "(*(int **)(param_2 + 0x30) == (int *)0x0)" (( "(") (binary_expression "*(int **)(param_2 + 0x30) == (int *)0x0" (pointer_expression "*(int **)(param_2 + 0x30)" (* "*") (cast_expression "(int **)(param_2 + 0x30)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 0x30)" (( "(") (binary_expression "param_2 + 0x30" (identifier "param_2") (+ "+") (number_literal "0x30")) () ")")))) (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (|| "||") (parenthesized_expression "(**(int **)(param_2 + 0x30) != 0x41)" (( "(") (binary_expression "**(int **)(param_2 + 0x30) != 0x41" (pointer_expression "**(int **)(param_2 + 0x30)" (* "*") (pointer_expression "*(int **)(param_2 + 0x30)" (* "*") (cast_expression "(int **)(param_2 + 0x30)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 0x30)" (( "(") (binary_expression "param_2 + 0x30" (identifier "param_2") (+ "+") (number_literal "0x30")) () ")"))))) (!= "!=") (number_literal "0x41")) () ")"))) () ")")) (|| "||") (parenthesized_expression "((*(long *)(*(long *)(param_1 + 0x940) + 0x1e8) != *(long *)(param_1 + 0x10) ||\n          (lVar5 != *(long *)(*(long *)(param_1 + 0x940) + 0x1f0))))" (( "(") (parenthesized_expression "(*(long *)(*(long *)(param_1 + 0x940) + 0x1e8) != *(long *)(param_1 + 0x10) ||\n          (lVar5 != *(long *)(*(long *)(param_1 + 0x940) + 0x1f0)))" (( "(") (binary_expression "*(long *)(*(long *)(param_1 + 0x940) + 0x1e8) != *(long *)(param_1 + 0x10) ||\n          (lVar5 != *(long *)(*(long *)(param_1 + 0x940) + 0x1f0))" (binary_expression "*(long *)(*(long *)(param_1 + 0x940) + 0x1e8) != *(long *)(param_1 + 0x10)" (pointer_expression "*(long *)(*(long *)(param_1 + 0x940) + 0x1e8)" (* "*") (cast_expression "(long *)(*(long *)(param_1 + 0x940) + 0x1e8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_1 + 0x940) + 0x1e8)" (( "(") (binary_expression "*(long *)(param_1 + 0x940) + 0x1e8" (pointer_expression "*(long *)(param_1 + 0x940)" (* "*") (cast_expression "(long *)(param_1 + 0x940)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x940)" (( "(") (binary_expression "param_1 + 0x940" (identifier "param_1") (+ "+") (number_literal "0x940")) () ")")))) (+ "+") (number_literal "0x1e8")) () ")")))) (!= "!=") (pointer_expression "*(long *)(param_1 + 0x10)" (* "*") (cast_expression "(long *)(param_1 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")"))))) (|| "||") (parenthesized_expression "(lVar5 != *(long *)(*(long *)(param_1 + 0x940) + 0x1f0))" (( "(") (binary_expression "lVar5 != *(long *)(*(long *)(param_1 + 0x940) + 0x1f0)" (identifier "lVar5") (!= "!=") (pointer_expression "*(long *)(*(long *)(param_1 + 0x940) + 0x1f0)" (* "*") (cast_expression "(long *)(*(long *)(param_1 + 0x940) + 0x1f0)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_1 + 0x940) + 0x1f0)" (( "(") (binary_expression "*(long *)(param_1 + 0x940) + 0x1f0" (pointer_expression "*(long *)(param_1 + 0x940)" (* "*") (cast_expression "(long *)(param_1 + 0x940)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x940)" (( "(") (binary_expression "param_1 + 0x940" (identifier "param_1") (+ "+") (number_literal "0x940")) () ")")))) (+ "+") (number_literal "0x1f0")) () ")"))))) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n        return 0;\n      }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n      lVar6 = *(long *)(param_1 + 0x940);\n      lVar1 = *(long *)(param_1 + 0x10);\n      if ((*(long *)(lVar6 + 0x1e8) != lVar1) || (lVar5 != *(long *)(lVar6 + 0x1f0))) {\n        *(long *)(lVar6 + 0x1f0) = lVar5;\n        uVar7 = *(undefined8 *)(param_1 + 0x50);\n        *(long *)(lVar6 + 0x1e8) = lVar1;\n        uVar7 = FUN_0018cf30(lVar6,uVar7);\n        uVar3 = FUN_0018da10(param_1,*(undefined8 *)(lVar6 + 0xa8),uVar7);\n        lVar5 = *(long *)(param_1 + 0x940);\n        uVar7 = FUN_0018cfa0(lVar5,*(undefined8 *)(param_1 + 0x50));\n        uVar4 = FUN_0018da10(param_1,*(undefined8 *)(lVar5 + 0xb0),uVar7);\n        return uVar4 | uVar3;\n      }\n    }" (else "else") (compound_statement "{\n      lVar6 = *(long *)(param_1 + 0x940);\n      lVar1 = *(long *)(param_1 + 0x10);\n      if ((*(long *)(lVar6 + 0x1e8) != lVar1) || (lVar5 != *(long *)(lVar6 + 0x1f0))) {\n        *(long *)(lVar6 + 0x1f0) = lVar5;\n        uVar7 = *(undefined8 *)(param_1 + 0x50);\n        *(long *)(lVar6 + 0x1e8) = lVar1;\n        uVar7 = FUN_0018cf30(lVar6,uVar7);\n        uVar3 = FUN_0018da10(param_1,*(undefined8 *)(lVar6 + 0xa8),uVar7);\n        lVar5 = *(long *)(param_1 + 0x940);\n        uVar7 = FUN_0018cfa0(lVar5,*(undefined8 *)(param_1 + 0x50));\n        uVar4 = FUN_0018da10(param_1,*(undefined8 *)(lVar5 + 0xb0),uVar7);\n        return uVar4 | uVar3;\n      }\n    }" ({ "{") (expression_statement "lVar6 = *(long *)(param_1 + 0x940);" (assignment_expression "lVar6 = *(long *)(param_1 + 0x940)" (identifier "lVar6") (= "=") (pointer_expression "*(long *)(param_1 + 0x940)" (* "*") (cast_expression "(long *)(param_1 + 0x940)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x940)" (( "(") (binary_expression "param_1 + 0x940" (identifier "param_1") (+ "+") (number_literal "0x940")) () ")"))))) (; ";")) (expression_statement "lVar1 = *(long *)(param_1 + 0x10);" (assignment_expression "lVar1 = *(long *)(param_1 + 0x10)" (identifier "lVar1") (= "=") (pointer_expression "*(long *)(param_1 + 0x10)" (* "*") (cast_expression "(long *)(param_1 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (if_statement "if ((*(long *)(lVar6 + 0x1e8) != lVar1) || (lVar5 != *(long *)(lVar6 + 0x1f0))) {\n        *(long *)(lVar6 + 0x1f0) = lVar5;\n        uVar7 = *(undefined8 *)(param_1 + 0x50);\n        *(long *)(lVar6 + 0x1e8) = lVar1;\n        uVar7 = FUN_0018cf30(lVar6,uVar7);\n        uVar3 = FUN_0018da10(param_1,*(undefined8 *)(lVar6 + 0xa8),uVar7);\n        lVar5 = *(long *)(param_1 + 0x940);\n        uVar7 = FUN_0018cfa0(lVar5,*(undefined8 *)(param_1 + 0x50));\n        uVar4 = FUN_0018da10(param_1,*(undefined8 *)(lVar5 + 0xb0),uVar7);\n        return uVar4 | uVar3;\n      }" (if "if") (parenthesized_expression "((*(long *)(lVar6 + 0x1e8) != lVar1) || (lVar5 != *(long *)(lVar6 + 0x1f0)))" (( "(") (binary_expression "(*(long *)(lVar6 + 0x1e8) != lVar1) || (lVar5 != *(long *)(lVar6 + 0x1f0))" (parenthesized_expression "(*(long *)(lVar6 + 0x1e8) != lVar1)" (( "(") (binary_expression "*(long *)(lVar6 + 0x1e8) != lVar1" (pointer_expression "*(long *)(lVar6 + 0x1e8)" (* "*") (cast_expression "(long *)(lVar6 + 0x1e8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar6 + 0x1e8)" (( "(") (binary_expression "lVar6 + 0x1e8" (identifier "lVar6") (+ "+") (number_literal "0x1e8")) () ")")))) (!= "!=") (identifier "lVar1")) () ")")) (|| "||") (parenthesized_expression "(lVar5 != *(long *)(lVar6 + 0x1f0))" (( "(") (binary_expression "lVar5 != *(long *)(lVar6 + 0x1f0)" (identifier "lVar5") (!= "!=") (pointer_expression "*(long *)(lVar6 + 0x1f0)" (* "*") (cast_expression "(long *)(lVar6 + 0x1f0)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar6 + 0x1f0)" (( "(") (binary_expression "lVar6 + 0x1f0" (identifier "lVar6") (+ "+") (number_literal "0x1f0")) () ")"))))) () ")"))) () ")")) (compound_statement "{\n        *(long *)(lVar6 + 0x1f0) = lVar5;\n        uVar7 = *(undefined8 *)(param_1 + 0x50);\n        *(long *)(lVar6 + 0x1e8) = lVar1;\n        uVar7 = FUN_0018cf30(lVar6,uVar7);\n        uVar3 = FUN_0018da10(param_1,*(undefined8 *)(lVar6 + 0xa8),uVar7);\n        lVar5 = *(long *)(param_1 + 0x940);\n        uVar7 = FUN_0018cfa0(lVar5,*(undefined8 *)(param_1 + 0x50));\n        uVar4 = FUN_0018da10(param_1,*(undefined8 *)(lVar5 + 0xb0),uVar7);\n        return uVar4 | uVar3;\n      }" ({ "{") (expression_statement "*(long *)(lVar6 + 0x1f0) = lVar5;" (assignment_expression "*(long *)(lVar6 + 0x1f0) = lVar5" (pointer_expression "*(long *)(lVar6 + 0x1f0)" (* "*") (cast_expression "(long *)(lVar6 + 0x1f0)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar6 + 0x1f0)" (( "(") (binary_expression "lVar6 + 0x1f0" (identifier "lVar6") (+ "+") (number_literal "0x1f0")) () ")")))) (= "=") (identifier "lVar5")) (; ";")) (expression_statement "uVar7 = *(undefined8 *)(param_1 + 0x50);" (assignment_expression "uVar7 = *(undefined8 *)(param_1 + 0x50)" (identifier "uVar7") (= "=") (pointer_expression "*(undefined8 *)(param_1 + 0x50)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x50)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x50)" (( "(") (binary_expression "param_1 + 0x50" (identifier "param_1") (+ "+") (number_literal "0x50")) () ")"))))) (; ";")) (expression_statement "*(long *)(lVar6 + 0x1e8) = lVar1;" (assignment_expression "*(long *)(lVar6 + 0x1e8) = lVar1" (pointer_expression "*(long *)(lVar6 + 0x1e8)" (* "*") (cast_expression "(long *)(lVar6 + 0x1e8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar6 + 0x1e8)" (( "(") (binary_expression "lVar6 + 0x1e8" (identifier "lVar6") (+ "+") (number_literal "0x1e8")) () ")")))) (= "=") (identifier "lVar1")) (; ";")) (expression_statement "uVar7 = FUN_0018cf30(lVar6,uVar7);" (assignment_expression "uVar7 = FUN_0018cf30(lVar6,uVar7)" (identifier "uVar7") (= "=") (call_expression "FUN_0018cf30(lVar6,uVar7)" (identifier "FUN_0018cf30") (argument_list "(lVar6,uVar7)" (( "(") (identifier "lVar6") (, ",") (identifier "uVar7") () ")")))) (; ";")) (expression_statement "uVar3 = FUN_0018da10(param_1,*(undefined8 *)(lVar6 + 0xa8),uVar7);" (assignment_expression "uVar3 = FUN_0018da10(param_1,*(undefined8 *)(lVar6 + 0xa8),uVar7)" (identifier "uVar3") (= "=") (call_expression "FUN_0018da10(param_1,*(undefined8 *)(lVar6 + 0xa8),uVar7)" (identifier "FUN_0018da10") (argument_list "(param_1,*(undefined8 *)(lVar6 + 0xa8),uVar7)" (( "(") (identifier "param_1") (, ",") (pointer_expression "*(undefined8 *)(lVar6 + 0xa8)" (* "*") (cast_expression "(undefined8 *)(lVar6 + 0xa8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar6 + 0xa8)" (( "(") (binary_expression "lVar6 + 0xa8" (identifier "lVar6") (+ "+") (number_literal "0xa8")) () ")")))) (, ",") (identifier "uVar7") () ")")))) (; ";")) (expression_statement "lVar5 = *(long *)(param_1 + 0x940);" (assignment_expression "lVar5 = *(long *)(param_1 + 0x940)" (identifier "lVar5") (= "=") (pointer_expression "*(long *)(param_1 + 0x940)" (* "*") (cast_expression "(long *)(param_1 + 0x940)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x940)" (( "(") (binary_expression "param_1 + 0x940" (identifier "param_1") (+ "+") (number_literal "0x940")) () ")"))))) (; ";")) (expression_statement "uVar7 = FUN_0018cfa0(lVar5,*(undefined8 *)(param_1 + 0x50));" (assignment_expression "uVar7 = FUN_0018cfa0(lVar5,*(undefined8 *)(param_1 + 0x50))" (identifier "uVar7") (= "=") (call_expression "FUN_0018cfa0(lVar5,*(undefined8 *)(param_1 + 0x50))" (identifier "FUN_0018cfa0") (argument_list "(lVar5,*(undefined8 *)(param_1 + 0x50))" (( "(") (identifier "lVar5") (, ",") (pointer_expression "*(undefined8 *)(param_1 + 0x50)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x50)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x50)" (( "(") (binary_expression "param_1 + 0x50" (identifier "param_1") (+ "+") (number_literal "0x50")) () ")")))) () ")")))) (; ";")) (expression_statement "uVar4 = FUN_0018da10(param_1,*(undefined8 *)(lVar5 + 0xb0),uVar7);" (assignment_expression "uVar4 = FUN_0018da10(param_1,*(undefined8 *)(lVar5 + 0xb0),uVar7)" (identifier "uVar4") (= "=") (call_expression "FUN_0018da10(param_1,*(undefined8 *)(lVar5 + 0xb0),uVar7)" (identifier "FUN_0018da10") (argument_list "(param_1,*(undefined8 *)(lVar5 + 0xb0),uVar7)" (( "(") (identifier "param_1") (, ",") (pointer_expression "*(undefined8 *)(lVar5 + 0xb0)" (* "*") (cast_expression "(undefined8 *)(lVar5 + 0xb0)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar5 + 0xb0)" (( "(") (binary_expression "lVar5 + 0xb0" (identifier "lVar5") (+ "+") (number_literal "0xb0")) () ")")))) (, ",") (identifier "uVar7") () ")")))) (; ";")) (return_statement "return uVar4 | uVar3;" (return "return") (binary_expression "uVar4 | uVar3" (identifier "uVar4") (| "|") (identifier "uVar3")) (; ";")) (} "}"))) (} "}")))) (} "}"))) (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}")))

/* DWARF original prototype: bool read_pubnames_and_pubtypes(Gdb_index_info_reader * this, Dwarf_die
   * die) */

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

{
  type_3 *var_7;
  bool var_12;
  bool var_11;
  type_4 var_6;
  type_4 var_5;
  uint64_t uVar6;
  char *var_2;
  type_5 *pGVar8;
  type_6 shndx;
  
  if (((die->abbrev_code_ == (type_7 *)0x0) || (die->abbrev_code_->tag != 0x41)) ||
     (var_2 = type_2::var_1(die,0x2130), var_2 == (char *)0x0)) {
    var_6 = type_2::var_3(die,0x10,&shndx);
    var_5 = type_2::var_3(die,0x2134,&shndx);
    uVar6 = type_2::var_4(die,0x2134);
    if ((var_5 == -1) && ((int)uVar6 == 0)) {
      if (((die->abbrev_code_ == (type_7 *)0x0) || (die->abbrev_code_->tag != 0x41)) ||
         ((this->gdb_index_->pubnames_object_ != (this->super_Dwarf_info_reader).object_ ||
          (var_6 != this->gdb_index_->stmt_list_offset_)))) {
        return false;
      }
    }
    else {
      pGVar8 = this->gdb_index_;
      var_7 = (this->super_Dwarf_info_reader).object_;
      if ((pGVar8->pubnames_object_ != var_7) || (var_6 != pGVar8->stmt_list_offset_)) {
        pGVar8->stmt_list_offset_ = var_6;
        var_6 = (this->super_Dwarf_info_reader).cu_offset_;
        pGVar8->pubnames_object_ = var_7;
        var_6 = type_5::var_8(pGVar8,var_6);
        var_12 = var_9(this,pGVar8->pubnames_table_,var_6);
        pGVar8 = this->gdb_index_;
        var_6 = type_5::var_10(pGVar8,(this->super_Dwarf_info_reader).cu_offset_);
        var_11 = var_9(this,pGVar8->pubtypes_table_,var_6);
        return var_11 || var_12;
      }
    }
  }
  return true;
}


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

uint MASKED(long param_1,long param_2)

{
  long lVar1;
  int iVar2;
  uint uVar3;
  uint uVar4;
  long lVar5;
  long lVar6;
  undefined8 uVar7;
  undefined1 local_2c [12];
  
  if (((*(int **)(param_2 + 0x30) == (int *)0x0) || (**(int **)(param_2 + 0x30) != 0x41)) ||
     (lVar5 = FUN_002b8660(param_2,0x2130), lVar5 == 0)) {
    lVar5 = FUN_002b8730(param_2,0x10,local_2c);
    lVar6 = FUN_002b8730(param_2,0x2134,local_2c);
    iVar2 = FUN_002b86e0(param_2,0x2134);
    if ((lVar6 == -1) && (iVar2 == 0)) {
      if (((*(int **)(param_2 + 0x30) == (int *)0x0) || (**(int **)(param_2 + 0x30) != 0x41)) ||
         ((*(long *)(*(long *)(param_1 + 0x940) + 0x1e8) != *(long *)(param_1 + 0x10) ||
          (lVar5 != *(long *)(*(long *)(param_1 + 0x940) + 0x1f0))))) {
        return 0;
      }
    }
    else {
      lVar6 = *(long *)(param_1 + 0x940);
      lVar1 = *(long *)(param_1 + 0x10);
      if ((*(long *)(lVar6 + 0x1e8) != lVar1) || (lVar5 != *(long *)(lVar6 + 0x1f0))) {
        *(long *)(lVar6 + 0x1f0) = lVar5;
        uVar7 = *(undefined8 *)(param_1 + 0x50);
        *(long *)(lVar6 + 0x1e8) = lVar1;
        uVar7 = FUN_0018cf30(lVar6,uVar7);
        uVar3 = FUN_0018da10(param_1,*(undefined8 *)(lVar6 + 0xa8),uVar7);
        lVar5 = *(long *)(param_1 + 0x940);
        uVar7 = FUN_0018cfa0(lVar5,*(undefined8 *)(param_1 + 0x50));
        uVar4 = FUN_0018da10(param_1,*(undefined8 *)(lVar5 + 0xb0),uVar7);
        return uVar4 | uVar3;
      }
    }
  }
  return 1;
}

