
/* DWARF original prototype: void do_read(File_read * this, off_t start, section_size_type size,
   void * p) */

void __thiscall gold::File_read::do_read(File_read *this,off_t start,section_size_type size,void *p)

{
  off_t oVar1;
  uint uVar2;
  int iVar3;
  char *pcVar4;
  undefined4 *puVar5;
  undefined4 uVar6;
  int in_a3;
  pointer pcVar7;
  int iVar8;
  
  if (this->whole_file_view_ == (View *)0x0) {
    reopen_descriptor(this);
    oVar1 = start;
    do {
      iVar8 = (int)((ulonglong)oVar1 >> 0x20);
      iVar3 = (*(code *)PTR_pread64_00436648)(this->descriptor_,(int)oVar1,iVar8);
      if (iVar3 < 0) {
        pcVar4 = (char *)(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x5afc);
        pcVar7 = (this->name_)._M_dataplus._M_p;
        puVar5 = (undefined4 *)(*(code *)PTR___errno_location_00436904)();
        uVar6 = (*(code *)PTR_strerror_004368e4)(*puVar5);
                    /* WARNING: Subroutine does not return */
        gold_fatal(pcVar4,pcVar7,uVar6);
      }
      oVar1 = CONCAT44(iVar8 - iVar3,(int)oVar1 + iVar3);
      if (iVar8 - iVar3 == 0) {
        return;
      }
      uVar2 = start._0_4_ - iVar8;
    } while (iVar3 != 0);
  }
  else {
    uVar2 = (int)this->size_ - in_a3;
    if (start._0_4_ <= uVar2) {
                    /* WARNING: Could not recover jumptable at 0x000e7560. Too many branches */
                    /* WARNING: Treating indirect jump as call */
      (*(code *)PTR_memcpy_00436788)(start._4_4_,this->whole_file_view_->data_ + in_a3,start._0_4_);
      return;
    }
  }
  pcVar4 = (char *)(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x5ae4);
                    /* WARNING: Subroutine does not return */
  gold_fatal(pcVar4,(this->name_)._M_dataplus._M_p,(int)uVar2 >> 0x1f,uVar2,0,start._0_4_,p);
}



/* gold::File_read::do_read(long long, unsigned int, void*) */

void gold::File_read::do_read(longlong param_1,uint param_2,void *param_3)

{
  longlong lVar1;
  uint uVar2;
  int iVar3;
  gold *pgVar4;
  undefined4 *puVar5;
  undefined4 uVar6;
  int in_a3;
  char *pcVar7;
  int iVar8;
  
  if (*(int *)(param_2 + 0x70) == 0) {
    reopen_descriptor((File_read *)param_2);
    lVar1 = param_1;
    do {
      iVar8 = (int)((ulonglong)lVar1 >> 0x20);
      iVar3 = (*(code *)PTR_pread64_00436648)(*(undefined4 *)(param_2 + 0x18),(int)lVar1,iVar8);
      if (iVar3 < 0) {
        pgVar4 = (gold *)(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x5afc);
        pcVar7 = *(char **)param_2;
        puVar5 = (undefined4 *)(*(code *)PTR___errno_location_00436904)();
        uVar6 = (*(code *)PTR_strerror_004368e4)(*puVar5);
                    /* WARNING: Subroutine does not return */
        gold_fatal(pgVar4,pcVar7,uVar6);
      }
      lVar1 = CONCAT44(iVar8 - iVar3,(int)lVar1 + iVar3);
      if (iVar8 - iVar3 == 0) {
        return;
      }
      uVar2 = param_1._0_4_ - iVar8;
    } while (iVar3 != 0);
  }
  else {
    uVar2 = *(int *)(param_2 + 0x2c) - in_a3;
    if (param_1._0_4_ <= uVar2) {
                    /* WARNING: Could not recover jumptable at 0x000e7560. Too many branches */
                    /* WARNING: Treating indirect jump as call */
      (*(code *)PTR_memcpy_00436788)
                (param_1._4_4_,*(int *)(*(int *)(param_2 + 0x70) + 0xc) + in_a3,param_1._0_4_);
      return;
    }
  }
  pgVar4 = (gold *)(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x5ae4);
                    /* WARNING: Subroutine does not return */
  gold_fatal(pgVar4,*(char **)param_2,(int)uVar2 >> 0x1f,uVar2,0,param_1._0_4_);
}


lui gp,0x35
addiu gp,gp,0x2d10
addu gp,gp,t9
addiu sp,sp,-0x50
lw v1,0x70(a0)
sw gp,0x20(sp)
sw s7,0x48(sp)
sw s5,0x40(sp)
or s5,a2,zero
sw s4,0x3c(sp)
or s4,a3,zero
sw s3,0x38(sp)
sw s2,0x34(sp)
or s2,a0,zero
sw ra,0x4c(sp)
sw s6,0x44(sp)
sw s1,0x30(sp)
sw s0,0x2c(sp)
lw s3,0x60(sp)
beq v1,zero,0x000e7568
_lw s7,0x64(sp)
lw v0,0x2c(a0)
subu v0,v0,a3
sltu a0,v0,s3
bne a0,zero,0x000e7604
_or s6,v0,zero
lw a1,0xc(v1)
or a2,s3,zero
lw ra,0x4c(sp)
or a0,s7,zero
lw s6,0x44(sp)
lw s7,0x48(sp)
addu a1,a1,a3
lw s5,0x40(sp)
lw s4,0x3c(sp)
lw s3,0x38(sp)
lw s2,0x34(sp)
lw s1,0x30(sp)
lw s0,0x2c(sp)
lw t9,-0x3a48(gp)
jr t9
_addiu sp,sp,0x50
lw t9,-0x7444(gp)
or s6,s3,zero
or s1,s5,zero
bal 0x000e72f4
_or s0,s4,zero
b 0x000e7590
_lw gp,0x20(sp)
beq v0,zero,0x000e7604
_subu s6,s3,s6
or s6,v1,zero
lw t9,-0x3b88(gp)
or a2,s6,zero
lw a0,0x18(s2)
or a1,s7,zero
sw s1,0x10(sp)
jalr t9
_sw s0,0x14(sp)
bltz v0,0x000e7640
_lw gp,0x20(sp)
sra v1,v0,0x1f
addu a0,s0,v0
addu s1,s1,v1
subu v1,s6,v0
sltu s0,a0,s0
addu s1,s0,s1
addu s7,s7,v0
bne v1,zero,0x000e7584
_or s0,a0,zero
lw ra,0x4c(sp)
lw s7,0x48(sp)
lw s6,0x44(sp)
lw s5,0x40(sp)
lw s4,0x3c(sp)
lw s3,0x38(sp)
lw s2,0x34(sp)
lw s1,0x30(sp)
lw s0,0x2c(sp)
jr ra
_addiu sp,sp,0x50
lw a0,-0x7e1c(gp)
lw t9,-0x39b8(gp)
jalr t9
_addiu a0,a0,-0x5ae4
sra a2,s6,0x1f
lw gp,0x20(sp)
or a3,s6,zero
lw a1,0x0(s2)
or a0,v0,zero
sw s5,0x18(sp)
sw s4,0x1c(sp)
sw s3,0x14(sp)
lw t9,-0x7e18(gp)
bal 0x000e54c4
_sw zero,0x10(sp)
lw a0,-0x7e1c(gp)
lw t9,-0x39b8(gp)
jalr t9
_addiu a0,a0,-0x5afc
lw gp,0x20(sp)
or s0,v0,zero
lw t9,-0x38cc(gp)
jalr t9
_lw s1,0x0(s2)
lw gp,0x20(sp)
lw t9,-0x38ec(gp)
jalr t9
_lw a0,0x0(v0)
or a1,s1,zero
lw gp,0x20(sp)
or a2,v0,zero
lw t9,-0x7e18(gp)
bal 0x000e54c4
_or a0,s0,zero
(translation_unit "/* gold::File_read::do_read(long long, unsigned int, void*) */\n\nvoid gold::File_read::do_read(longlong param_1,uint param_2,void *param_3)\n\n{\n  longlong lVar1;\n  uint uVar2;\n  int iVar3;\n  gold *pgVar4;\n  undefined4 *puVar5;\n  undefined4 uVar6;\n  int in_a3;\n  char *pcVar7;\n  int iVar8;\n  \n  if (*(int *)(param_2 + 0x70) == 0) {\n    reopen_descriptor((File_read *)param_2);\n    lVar1 = param_1;\n    do {\n      iVar8 = (int)((ulonglong)lVar1 >> 0x20);\n      iVar3 = (*(code *)PTR_pread64_00436648)(*(undefined4 *)(param_2 + 0x18),(int)lVar1,iVar8);\n      if (iVar3 < 0) {\n        pgVar4 = (gold *)(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x5afc);\n        pcVar7 = *(char **)param_2;\n        puVar5 = (undefined4 *)(*(code *)PTR___errno_location_00436904)();\n        uVar6 = (*(code *)PTR_strerror_004368e4)(*puVar5);\n                    /* WARNING: Subroutine does not return */\n        gold_fatal(pgVar4,pcVar7,uVar6);\n      }\n      lVar1 = CONCAT44(iVar8 - iVar3,(int)lVar1 + iVar3);\n      if (iVar8 - iVar3 == 0) {\n        return;\n      }\n      uVar2 = param_1._0_4_ - iVar8;\n    } while (iVar3 != 0);\n  }\n  else {\n    uVar2 = *(int *)(param_2 + 0x2c) - in_a3;\n    if (param_1._0_4_ <= uVar2) {\n                    /* WARNING: Could not recover jumptable at 0x000e7560. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)PTR_memcpy_00436788)\n                (param_1._4_4_,*(int *)(*(int *)(param_2 + 0x70) + 0xc) + in_a3,param_1._0_4_);\n      return;\n    }\n  }\n  pgVar4 = (gold *)(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x5ae4);\n                    /* WARNING: Subroutine does not return */\n  gold_fatal(pgVar4,*(char **)param_2,(int)uVar2 >> 0x1f,uVar2,0,param_1._0_4_);\n}\n\n" comment (function_definition "void gold::File_read::do_read(longlong param_1,uint param_2,void *param_3)\n\n{\n  longlong lVar1;\n  uint uVar2;\n  int iVar3;\n  gold *pgVar4;\n  undefined4 *puVar5;\n  undefined4 uVar6;\n  int in_a3;\n  char *pcVar7;\n  int iVar8;\n  \n  if (*(int *)(param_2 + 0x70) == 0) {\n    reopen_descriptor((File_read *)param_2);\n    lVar1 = param_1;\n    do {\n      iVar8 = (int)((ulonglong)lVar1 >> 0x20);\n      iVar3 = (*(code *)PTR_pread64_00436648)(*(undefined4 *)(param_2 + 0x18),(int)lVar1,iVar8);\n      if (iVar3 < 0) {\n        pgVar4 = (gold *)(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x5afc);\n        pcVar7 = *(char **)param_2;\n        puVar5 = (undefined4 *)(*(code *)PTR___errno_location_00436904)();\n        uVar6 = (*(code *)PTR_strerror_004368e4)(*puVar5);\n                    /* WARNING: Subroutine does not return */\n        gold_fatal(pgVar4,pcVar7,uVar6);\n      }\n      lVar1 = CONCAT44(iVar8 - iVar3,(int)lVar1 + iVar3);\n      if (iVar8 - iVar3 == 0) {\n        return;\n      }\n      uVar2 = param_1._0_4_ - iVar8;\n    } while (iVar3 != 0);\n  }\n  else {\n    uVar2 = *(int *)(param_2 + 0x2c) - in_a3;\n    if (param_1._0_4_ <= uVar2) {\n                    /* WARNING: Could not recover jumptable at 0x000e7560. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)PTR_memcpy_00436788)\n                (param_1._4_4_,*(int *)(*(int *)(param_2 + 0x70) + 0xc) + in_a3,param_1._0_4_);\n      return;\n    }\n  }\n  pgVar4 = (gold *)(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x5ae4);\n                    /* WARNING: Subroutine does not return */\n  gold_fatal(pgVar4,*(char **)param_2,(int)uVar2 >> 0x1f,uVar2,0,param_1._0_4_);\n}" primitive_type (ERROR "gold::File_read::" identifier : : identifier : :) (function_declarator "do_read(longlong param_1,uint param_2,void *param_3)" identifier (parameter_list "(longlong param_1,uint param_2,void *param_3)" ( (parameter_declaration "longlong param_1" type_identifier identifier) , (parameter_declaration "uint param_2" type_identifier identifier) , (parameter_declaration "void *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  longlong lVar1;\n  uint uVar2;\n  int iVar3;\n  gold *pgVar4;\n  undefined4 *puVar5;\n  undefined4 uVar6;\n  int in_a3;\n  char *pcVar7;\n  int iVar8;\n  \n  if (*(int *)(param_2 + 0x70) == 0) {\n    reopen_descriptor((File_read *)param_2);\n    lVar1 = param_1;\n    do {\n      iVar8 = (int)((ulonglong)lVar1 >> 0x20);\n      iVar3 = (*(code *)PTR_pread64_00436648)(*(undefined4 *)(param_2 + 0x18),(int)lVar1,iVar8);\n      if (iVar3 < 0) {\n        pgVar4 = (gold *)(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x5afc);\n        pcVar7 = *(char **)param_2;\n        puVar5 = (undefined4 *)(*(code *)PTR___errno_location_00436904)();\n        uVar6 = (*(code *)PTR_strerror_004368e4)(*puVar5);\n                    /* WARNING: Subroutine does not return */\n        gold_fatal(pgVar4,pcVar7,uVar6);\n      }\n      lVar1 = CONCAT44(iVar8 - iVar3,(int)lVar1 + iVar3);\n      if (iVar8 - iVar3 == 0) {\n        return;\n      }\n      uVar2 = param_1._0_4_ - iVar8;\n    } while (iVar3 != 0);\n  }\n  else {\n    uVar2 = *(int *)(param_2 + 0x2c) - in_a3;\n    if (param_1._0_4_ <= uVar2) {\n                    /* WARNING: Could not recover jumptable at 0x000e7560. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)PTR_memcpy_00436788)\n                (param_1._4_4_,*(int *)(*(int *)(param_2 + 0x70) + 0xc) + in_a3,param_1._0_4_);\n      return;\n    }\n  }\n  pgVar4 = (gold *)(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x5ae4);\n                    /* WARNING: Subroutine does not return */\n  gold_fatal(pgVar4,*(char **)param_2,(int)uVar2 >> 0x1f,uVar2,0,param_1._0_4_);\n}" { (declaration "longlong lVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "gold *pgVar4;" type_identifier (pointer_declarator "*pgVar4" * identifier) ;) (declaration "undefined4 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "int in_a3;" primitive_type identifier ;) (declaration "char *pcVar7;" primitive_type (pointer_declarator "*pcVar7" * identifier) ;) (declaration "int iVar8;" primitive_type identifier ;) (if_statement "if (*(int *)(param_2 + 0x70) == 0) {\n    reopen_descriptor((File_read *)param_2);\n    lVar1 = param_1;\n    do {\n      iVar8 = (int)((ulonglong)lVar1 >> 0x20);\n      iVar3 = (*(code *)PTR_pread64_00436648)(*(undefined4 *)(param_2 + 0x18),(int)lVar1,iVar8);\n      if (iVar3 < 0) {\n        pgVar4 = (gold *)(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x5afc);\n        pcVar7 = *(char **)param_2;\n        puVar5 = (undefined4 *)(*(code *)PTR___errno_location_00436904)();\n        uVar6 = (*(code *)PTR_strerror_004368e4)(*puVar5);\n                    /* WARNING: Subroutine does not return */\n        gold_fatal(pgVar4,pcVar7,uVar6);\n      }\n      lVar1 = CONCAT44(iVar8 - iVar3,(int)lVar1 + iVar3);\n      if (iVar8 - iVar3 == 0) {\n        return;\n      }\n      uVar2 = param_1._0_4_ - iVar8;\n    } while (iVar3 != 0);\n  }\n  else {\n    uVar2 = *(int *)(param_2 + 0x2c) - in_a3;\n    if (param_1._0_4_ <= uVar2) {\n                    /* WARNING: Could not recover jumptable at 0x000e7560. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)PTR_memcpy_00436788)\n                (param_1._4_4_,*(int *)(*(int *)(param_2 + 0x70) + 0xc) + in_a3,param_1._0_4_);\n      return;\n    }\n  }" if (parenthesized_expression "(*(int *)(param_2 + 0x70) == 0)" ( (binary_expression "*(int *)(param_2 + 0x70) == 0" (pointer_expression "*(int *)(param_2 + 0x70)" * (cast_expression "(int *)(param_2 + 0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x70)" ( (binary_expression "param_2 + 0x70" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    reopen_descriptor((File_read *)param_2);\n    lVar1 = param_1;\n    do {\n      iVar8 = (int)((ulonglong)lVar1 >> 0x20);\n      iVar3 = (*(code *)PTR_pread64_00436648)(*(undefined4 *)(param_2 + 0x18),(int)lVar1,iVar8);\n      if (iVar3 < 0) {\n        pgVar4 = (gold *)(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x5afc);\n        pcVar7 = *(char **)param_2;\n        puVar5 = (undefined4 *)(*(code *)PTR___errno_location_00436904)();\n        uVar6 = (*(code *)PTR_strerror_004368e4)(*puVar5);\n                    /* WARNING: Subroutine does not return */\n        gold_fatal(pgVar4,pcVar7,uVar6);\n      }\n      lVar1 = CONCAT44(iVar8 - iVar3,(int)lVar1 + iVar3);\n      if (iVar8 - iVar3 == 0) {\n        return;\n      }\n      uVar2 = param_1._0_4_ - iVar8;\n    } while (iVar3 != 0);\n  }" { (expression_statement "reopen_descriptor((File_read *)param_2);" (call_expression "reopen_descriptor((File_read *)param_2)" identifier (argument_list "((File_read *)param_2)" ( (cast_expression "(File_read *)param_2" ( (type_descriptor "File_read *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;) (expression_statement "lVar1 = param_1;" (assignment_expression "lVar1 = param_1" identifier = identifier) ;) (do_statement "do {\n      iVar8 = (int)((ulonglong)lVar1 >> 0x20);\n      iVar3 = (*(code *)PTR_pread64_00436648)(*(undefined4 *)(param_2 + 0x18),(int)lVar1,iVar8);\n      if (iVar3 < 0) {\n        pgVar4 = (gold *)(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x5afc);\n        pcVar7 = *(char **)param_2;\n        puVar5 = (undefined4 *)(*(code *)PTR___errno_location_00436904)();\n        uVar6 = (*(code *)PTR_strerror_004368e4)(*puVar5);\n                    /* WARNING: Subroutine does not return */\n        gold_fatal(pgVar4,pcVar7,uVar6);\n      }\n      lVar1 = CONCAT44(iVar8 - iVar3,(int)lVar1 + iVar3);\n      if (iVar8 - iVar3 == 0) {\n        return;\n      }\n      uVar2 = param_1._0_4_ - iVar8;\n    } while (iVar3 != 0);" do (compound_statement "{\n      iVar8 = (int)((ulonglong)lVar1 >> 0x20);\n      iVar3 = (*(code *)PTR_pread64_00436648)(*(undefined4 *)(param_2 + 0x18),(int)lVar1,iVar8);\n      if (iVar3 < 0) {\n        pgVar4 = (gold *)(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x5afc);\n        pcVar7 = *(char **)param_2;\n        puVar5 = (undefined4 *)(*(code *)PTR___errno_location_00436904)();\n        uVar6 = (*(code *)PTR_strerror_004368e4)(*puVar5);\n                    /* WARNING: Subroutine does not return */\n        gold_fatal(pgVar4,pcVar7,uVar6);\n      }\n      lVar1 = CONCAT44(iVar8 - iVar3,(int)lVar1 + iVar3);\n      if (iVar8 - iVar3 == 0) {\n        return;\n      }\n      uVar2 = param_1._0_4_ - iVar8;\n    }" { (expression_statement "iVar8 = (int)((ulonglong)lVar1 >> 0x20);" (assignment_expression "iVar8 = (int)((ulonglong)lVar1 >> 0x20)" identifier = (cast_expression "(int)((ulonglong)lVar1 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar1 >> 0x20)" ( (binary_expression "(ulonglong)lVar1 >> 0x20" (cast_expression "(ulonglong)lVar1" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "iVar3 = (*(code *)PTR_pread64_00436648)(*(undefined4 *)(param_2 + 0x18),(int)lVar1,iVar8);" (assignment_expression "iVar3 = (*(code *)PTR_pread64_00436648)(*(undefined4 *)(param_2 + 0x18),(int)lVar1,iVar8)" identifier = (call_expression "(*(code *)PTR_pread64_00436648)(*(undefined4 *)(param_2 + 0x18),(int)lVar1,iVar8)" (parenthesized_expression "(*(code *)PTR_pread64_00436648)" ( (pointer_expression "*(code *)PTR_pread64_00436648" * (cast_expression "(code *)PTR_pread64_00436648" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)(param_2 + 0x18),(int)lVar1,iVar8)" ( (pointer_expression "*(undefined4 *)(param_2 + 0x18)" * (cast_expression "(undefined4 *)(param_2 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x18)" ( (binary_expression "param_2 + 0x18" identifier + number_literal) )))) , (cast_expression "(int)lVar1" ( (type_descriptor "int" primitive_type) ) identifier) , identifier )))) ;) (if_statement "if (iVar3 < 0) {\n        pgVar4 = (gold *)(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x5afc);\n        pcVar7 = *(char **)param_2;\n        puVar5 = (undefined4 *)(*(code *)PTR___errno_location_00436904)();\n        uVar6 = (*(code *)PTR_strerror_004368e4)(*puVar5);\n                    /* WARNING: Subroutine does not return */\n        gold_fatal(pgVar4,pcVar7,uVar6);\n      }" if (parenthesized_expression "(iVar3 < 0)" ( (binary_expression "iVar3 < 0" identifier < number_literal) )) (compound_statement "{\n        pgVar4 = (gold *)(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x5afc);\n        pcVar7 = *(char **)param_2;\n        puVar5 = (undefined4 *)(*(code *)PTR___errno_location_00436904)();\n        uVar6 = (*(code *)PTR_strerror_004368e4)(*puVar5);\n                    /* WARNING: Subroutine does not return */\n        gold_fatal(pgVar4,pcVar7,uVar6);\n      }" { (expression_statement "pgVar4 = (gold *)(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x5afc);" (assignment_expression "pgVar4 = (gold *)(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x5afc)" identifier = (cast_expression "(gold *)(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x5afc)" ( (type_descriptor "gold *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x5afc)" (parenthesized_expression "(*(code *)PTR_gettext_00436818)" ( (pointer_expression "*(code *)PTR_gettext_00436818" * (cast_expression "(code *)PTR_gettext_00436818" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_s_alize_xindex_004323b4 + -0x5afc)" ( (binary_expression "PTR_s_alize_xindex_004323b4 + -0x5afc" identifier + number_literal) ))))) ;) (expression_statement "pcVar7 = *(char **)param_2;" (assignment_expression "pcVar7 = *(char **)param_2" identifier = (pointer_expression "*(char **)param_2" * (cast_expression "(char **)param_2" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "puVar5 = (undefined4 *)(*(code *)PTR___errno_location_00436904)();" (assignment_expression "puVar5 = (undefined4 *)(*(code *)PTR___errno_location_00436904)()" identifier = (cast_expression "(undefined4 *)(*(code *)PTR___errno_location_00436904)()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___errno_location_00436904)()" (parenthesized_expression "(*(code *)PTR___errno_location_00436904)" ( (pointer_expression "*(code *)PTR___errno_location_00436904" * (cast_expression "(code *)PTR___errno_location_00436904" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))))) ;) (expression_statement "uVar6 = (*(code *)PTR_strerror_004368e4)(*puVar5);" (assignment_expression "uVar6 = (*(code *)PTR_strerror_004368e4)(*puVar5)" identifier = (call_expression "(*(code *)PTR_strerror_004368e4)(*puVar5)" (parenthesized_expression "(*(code *)PTR_strerror_004368e4)" ( (pointer_expression "*(code *)PTR_strerror_004368e4" * (cast_expression "(code *)PTR_strerror_004368e4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*puVar5)" ( (pointer_expression "*puVar5" * identifier) )))) ;) comment (expression_statement "gold_fatal(pgVar4,pcVar7,uVar6);" (call_expression "gold_fatal(pgVar4,pcVar7,uVar6)" identifier (argument_list "(pgVar4,pcVar7,uVar6)" ( identifier , identifier , identifier ))) ;) })) (expression_statement "lVar1 = CONCAT44(iVar8 - iVar3,(int)lVar1 + iVar3);" (assignment_expression "lVar1 = CONCAT44(iVar8 - iVar3,(int)lVar1 + iVar3)" identifier = (call_expression "CONCAT44(iVar8 - iVar3,(int)lVar1 + iVar3)" identifier (argument_list "(iVar8 - iVar3,(int)lVar1 + iVar3)" ( (binary_expression "iVar8 - iVar3" identifier - identifier) , (binary_expression "(int)lVar1 + iVar3" (cast_expression "(int)lVar1" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (if_statement "if (iVar8 - iVar3 == 0) {\n        return;\n      }" if (parenthesized_expression "(iVar8 - iVar3 == 0)" ( (binary_expression "iVar8 - iVar3 == 0" (binary_expression "iVar8 - iVar3" identifier - identifier) == number_literal) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) (expression_statement "uVar2 = param_1._0_4_ - iVar8;" (assignment_expression "uVar2 = param_1._0_4_ - iVar8" identifier = (binary_expression "param_1._0_4_ - iVar8" (field_expression "param_1._0_4_" identifier . field_identifier) - identifier)) ;) }) while (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) ;) }) (else_clause "else {\n    uVar2 = *(int *)(param_2 + 0x2c) - in_a3;\n    if (param_1._0_4_ <= uVar2) {\n                    /* WARNING: Could not recover jumptable at 0x000e7560. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)PTR_memcpy_00436788)\n                (param_1._4_4_,*(int *)(*(int *)(param_2 + 0x70) + 0xc) + in_a3,param_1._0_4_);\n      return;\n    }\n  }" else (compound_statement "{\n    uVar2 = *(int *)(param_2 + 0x2c) - in_a3;\n    if (param_1._0_4_ <= uVar2) {\n                    /* WARNING: Could not recover jumptable at 0x000e7560. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)PTR_memcpy_00436788)\n                (param_1._4_4_,*(int *)(*(int *)(param_2 + 0x70) + 0xc) + in_a3,param_1._0_4_);\n      return;\n    }\n  }" { (expression_statement "uVar2 = *(int *)(param_2 + 0x2c) - in_a3;" (assignment_expression "uVar2 = *(int *)(param_2 + 0x2c) - in_a3" identifier = (binary_expression "*(int *)(param_2 + 0x2c) - in_a3" (pointer_expression "*(int *)(param_2 + 0x2c)" * (cast_expression "(int *)(param_2 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x2c)" ( (binary_expression "param_2 + 0x2c" identifier + number_literal) )))) - identifier)) ;) (if_statement "if (param_1._0_4_ <= uVar2) {\n                    /* WARNING: Could not recover jumptable at 0x000e7560. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)PTR_memcpy_00436788)\n                (param_1._4_4_,*(int *)(*(int *)(param_2 + 0x70) + 0xc) + in_a3,param_1._0_4_);\n      return;\n    }" if (parenthesized_expression "(param_1._0_4_ <= uVar2)" ( (binary_expression "param_1._0_4_ <= uVar2" (field_expression "param_1._0_4_" identifier . field_identifier) <= identifier) )) (compound_statement "{\n                    /* WARNING: Could not recover jumptable at 0x000e7560. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)PTR_memcpy_00436788)\n                (param_1._4_4_,*(int *)(*(int *)(param_2 + 0x70) + 0xc) + in_a3,param_1._0_4_);\n      return;\n    }" { comment comment (expression_statement "(*(code *)PTR_memcpy_00436788)\n                (param_1._4_4_,*(int *)(*(int *)(param_2 + 0x70) + 0xc) + in_a3,param_1._0_4_);" (call_expression "(*(code *)PTR_memcpy_00436788)\n                (param_1._4_4_,*(int *)(*(int *)(param_2 + 0x70) + 0xc) + in_a3,param_1._0_4_)" (parenthesized_expression "(*(code *)PTR_memcpy_00436788)" ( (pointer_expression "*(code *)PTR_memcpy_00436788" * (cast_expression "(code *)PTR_memcpy_00436788" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1._4_4_,*(int *)(*(int *)(param_2 + 0x70) + 0xc) + in_a3,param_1._0_4_)" ( (field_expression "param_1._4_4_" identifier . field_identifier) , (binary_expression "*(int *)(*(int *)(param_2 + 0x70) + 0xc) + in_a3" (pointer_expression "*(int *)(*(int *)(param_2 + 0x70) + 0xc)" * (cast_expression "(int *)(*(int *)(param_2 + 0x70) + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_2 + 0x70) + 0xc)" ( (binary_expression "*(int *)(param_2 + 0x70) + 0xc" (pointer_expression "*(int *)(param_2 + 0x70)" * (cast_expression "(int *)(param_2 + 0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x70)" ( (binary_expression "param_2 + 0x70" identifier + number_literal) )))) + number_literal) )))) + identifier) , (field_expression "param_1._0_4_" identifier . field_identifier) ))) ;) (return_statement "return;" return ;) })) }))) (expression_statement "pgVar4 = (gold *)(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x5ae4);" (assignment_expression "pgVar4 = (gold *)(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x5ae4)" identifier = (cast_expression "(gold *)(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x5ae4)" ( (type_descriptor "gold *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x5ae4)" (parenthesized_expression "(*(code *)PTR_gettext_00436818)" ( (pointer_expression "*(code *)PTR_gettext_00436818" * (cast_expression "(code *)PTR_gettext_00436818" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_s_alize_xindex_004323b4 + -0x5ae4)" ( (binary_expression "PTR_s_alize_xindex_004323b4 + -0x5ae4" identifier + number_literal) ))))) ;) comment (expression_statement "gold_fatal(pgVar4,*(char **)param_2,(int)uVar2 >> 0x1f,uVar2,0,param_1._0_4_);" (call_expression "gold_fatal(pgVar4,*(char **)param_2,(int)uVar2 >> 0x1f,uVar2,0,param_1._0_4_)" identifier (argument_list "(pgVar4,*(char **)param_2,(int)uVar2 >> 0x1f,uVar2,0,param_1._0_4_)" ( identifier , (pointer_expression "*(char **)param_2" * (cast_expression "(char **)param_2" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , (binary_expression "(int)uVar2 >> 0x1f" (cast_expression "(int)uVar2" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) , identifier , number_literal , (field_expression "param_1._0_4_" identifier . field_identifier) ))) ;) })))
(translation_unit "/* DWARF original prototype: void do_read(File_read * this, off_t start, section_size_type size,\n   void * p) */\n\nvoid __thiscall gold::File_read::do_read(File_read *this,off_t start,section_size_type size,void *p)\n\n{\n  off_t oVar1;\n  uint uVar2;\n  int iVar3;\n  char *pcVar4;\n  undefined4 *puVar5;\n  undefined4 uVar6;\n  int in_a3;\n  pointer pcVar7;\n  int iVar8;\n  \n  if (this->whole_file_view_ == (View *)0x0) {\n    reopen_descriptor(this);\n    oVar1 = start;\n    do {\n      iVar8 = (int)((ulonglong)oVar1 >> 0x20);\n      iVar3 = (*(code *)PTR_pread64_00436648)(this->descriptor_,(int)oVar1,iVar8);\n      if (iVar3 < 0) {\n        pcVar4 = (char *)(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x5afc);\n        pcVar7 = (this->name_)._M_dataplus._M_p;\n        puVar5 = (undefined4 *)(*(code *)PTR___errno_location_00436904)();\n        uVar6 = (*(code *)PTR_strerror_004368e4)(*puVar5);\n                    /* WARNING: Subroutine does not return */\n        gold_fatal(pcVar4,pcVar7,uVar6);\n      }\n      oVar1 = CONCAT44(iVar8 - iVar3,(int)oVar1 + iVar3);\n      if (iVar8 - iVar3 == 0) {\n        return;\n      }\n      uVar2 = start._0_4_ - iVar8;\n    } while (iVar3 != 0);\n  }\n  else {\n    uVar2 = (int)this->size_ - in_a3;\n    if (start._0_4_ <= uVar2) {\n                    /* WARNING: Could not recover jumptable at 0x000e7560. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)PTR_memcpy_00436788)(start._4_4_,this->whole_file_view_->data_ + in_a3,start._0_4_);\n      return;\n    }\n  }\n  pcVar4 = (char *)(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x5ae4);\n                    /* WARNING: Subroutine does not return */\n  gold_fatal(pcVar4,(this->name_)._M_dataplus._M_p,(int)uVar2 >> 0x1f,uVar2,0,start._0_4_,p);\n}\n\n" comment (function_definition "void __thiscall gold::File_read::do_read(File_read *this,off_t start,section_size_type size,void *p)\n\n{\n  off_t oVar1;\n  uint uVar2;\n  int iVar3;\n  char *pcVar4;\n  undefined4 *puVar5;\n  undefined4 uVar6;\n  int in_a3;\n  pointer pcVar7;\n  int iVar8;\n  \n  if (this->whole_file_view_ == (View *)0x0) {\n    reopen_descriptor(this);\n    oVar1 = start;\n    do {\n      iVar8 = (int)((ulonglong)oVar1 >> 0x20);\n      iVar3 = (*(code *)PTR_pread64_00436648)(this->descriptor_,(int)oVar1,iVar8);\n      if (iVar3 < 0) {\n        pcVar4 = (char *)(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x5afc);\n        pcVar7 = (this->name_)._M_dataplus._M_p;\n        puVar5 = (undefined4 *)(*(code *)PTR___errno_location_00436904)();\n        uVar6 = (*(code *)PTR_strerror_004368e4)(*puVar5);\n                    /* WARNING: Subroutine does not return */\n        gold_fatal(pcVar4,pcVar7,uVar6);\n      }\n      oVar1 = CONCAT44(iVar8 - iVar3,(int)oVar1 + iVar3);\n      if (iVar8 - iVar3 == 0) {\n        return;\n      }\n      uVar2 = start._0_4_ - iVar8;\n    } while (iVar3 != 0);\n  }\n  else {\n    uVar2 = (int)this->size_ - in_a3;\n    if (start._0_4_ <= uVar2) {\n                    /* WARNING: Could not recover jumptable at 0x000e7560. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)PTR_memcpy_00436788)(start._4_4_,this->whole_file_view_->data_ + in_a3,start._0_4_);\n      return;\n    }\n  }\n  pcVar4 = (char *)(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x5ae4);\n                    /* WARNING: Subroutine does not return */\n  gold_fatal(pcVar4,(this->name_)._M_dataplus._M_p,(int)uVar2 >> 0x1f,uVar2,0,start._0_4_,p);\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::File_read::" identifier : : identifier : :) (function_declarator "do_read(File_read *this,off_t start,section_size_type size,void *p)" identifier (parameter_list "(File_read *this,off_t start,section_size_type size,void *p)" ( (parameter_declaration "File_read *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "off_t start" type_identifier identifier) , (parameter_declaration "section_size_type size" type_identifier identifier) , (parameter_declaration "void *p" primitive_type (pointer_declarator "*p" * identifier)) ))) (compound_statement "{\n  off_t oVar1;\n  uint uVar2;\n  int iVar3;\n  char *pcVar4;\n  undefined4 *puVar5;\n  undefined4 uVar6;\n  int in_a3;\n  pointer pcVar7;\n  int iVar8;\n  \n  if (this->whole_file_view_ == (View *)0x0) {\n    reopen_descriptor(this);\n    oVar1 = start;\n    do {\n      iVar8 = (int)((ulonglong)oVar1 >> 0x20);\n      iVar3 = (*(code *)PTR_pread64_00436648)(this->descriptor_,(int)oVar1,iVar8);\n      if (iVar3 < 0) {\n        pcVar4 = (char *)(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x5afc);\n        pcVar7 = (this->name_)._M_dataplus._M_p;\n        puVar5 = (undefined4 *)(*(code *)PTR___errno_location_00436904)();\n        uVar6 = (*(code *)PTR_strerror_004368e4)(*puVar5);\n                    /* WARNING: Subroutine does not return */\n        gold_fatal(pcVar4,pcVar7,uVar6);\n      }\n      oVar1 = CONCAT44(iVar8 - iVar3,(int)oVar1 + iVar3);\n      if (iVar8 - iVar3 == 0) {\n        return;\n      }\n      uVar2 = start._0_4_ - iVar8;\n    } while (iVar3 != 0);\n  }\n  else {\n    uVar2 = (int)this->size_ - in_a3;\n    if (start._0_4_ <= uVar2) {\n                    /* WARNING: Could not recover jumptable at 0x000e7560. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)PTR_memcpy_00436788)(start._4_4_,this->whole_file_view_->data_ + in_a3,start._0_4_);\n      return;\n    }\n  }\n  pcVar4 = (char *)(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x5ae4);\n                    /* WARNING: Subroutine does not return */\n  gold_fatal(pcVar4,(this->name_)._M_dataplus._M_p,(int)uVar2 >> 0x1f,uVar2,0,start._0_4_,p);\n}" { (declaration "off_t oVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "undefined4 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "int in_a3;" primitive_type identifier ;) (declaration "pointer pcVar7;" type_identifier identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (if_statement "if (this->whole_file_view_ == (View *)0x0) {\n    reopen_descriptor(this);\n    oVar1 = start;\n    do {\n      iVar8 = (int)((ulonglong)oVar1 >> 0x20);\n      iVar3 = (*(code *)PTR_pread64_00436648)(this->descriptor_,(int)oVar1,iVar8);\n      if (iVar3 < 0) {\n        pcVar4 = (char *)(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x5afc);\n        pcVar7 = (this->name_)._M_dataplus._M_p;\n        puVar5 = (undefined4 *)(*(code *)PTR___errno_location_00436904)();\n        uVar6 = (*(code *)PTR_strerror_004368e4)(*puVar5);\n                    /* WARNING: Subroutine does not return */\n        gold_fatal(pcVar4,pcVar7,uVar6);\n      }\n      oVar1 = CONCAT44(iVar8 - iVar3,(int)oVar1 + iVar3);\n      if (iVar8 - iVar3 == 0) {\n        return;\n      }\n      uVar2 = start._0_4_ - iVar8;\n    } while (iVar3 != 0);\n  }\n  else {\n    uVar2 = (int)this->size_ - in_a3;\n    if (start._0_4_ <= uVar2) {\n                    /* WARNING: Could not recover jumptable at 0x000e7560. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)PTR_memcpy_00436788)(start._4_4_,this->whole_file_view_->data_ + in_a3,start._0_4_);\n      return;\n    }\n  }" if (parenthesized_expression "(this->whole_file_view_ == (View *)0x0)" ( (binary_expression "this->whole_file_view_ == (View *)0x0" (field_expression "this->whole_file_view_" identifier -> field_identifier) == (cast_expression "(View *)0x0" ( (type_descriptor "View *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    reopen_descriptor(this);\n    oVar1 = start;\n    do {\n      iVar8 = (int)((ulonglong)oVar1 >> 0x20);\n      iVar3 = (*(code *)PTR_pread64_00436648)(this->descriptor_,(int)oVar1,iVar8);\n      if (iVar3 < 0) {\n        pcVar4 = (char *)(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x5afc);\n        pcVar7 = (this->name_)._M_dataplus._M_p;\n        puVar5 = (undefined4 *)(*(code *)PTR___errno_location_00436904)();\n        uVar6 = (*(code *)PTR_strerror_004368e4)(*puVar5);\n                    /* WARNING: Subroutine does not return */\n        gold_fatal(pcVar4,pcVar7,uVar6);\n      }\n      oVar1 = CONCAT44(iVar8 - iVar3,(int)oVar1 + iVar3);\n      if (iVar8 - iVar3 == 0) {\n        return;\n      }\n      uVar2 = start._0_4_ - iVar8;\n    } while (iVar3 != 0);\n  }" { (expression_statement "reopen_descriptor(this);" (call_expression "reopen_descriptor(this)" identifier (argument_list "(this)" ( identifier ))) ;) (expression_statement "oVar1 = start;" (assignment_expression "oVar1 = start" identifier = identifier) ;) (do_statement "do {\n      iVar8 = (int)((ulonglong)oVar1 >> 0x20);\n      iVar3 = (*(code *)PTR_pread64_00436648)(this->descriptor_,(int)oVar1,iVar8);\n      if (iVar3 < 0) {\n        pcVar4 = (char *)(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x5afc);\n        pcVar7 = (this->name_)._M_dataplus._M_p;\n        puVar5 = (undefined4 *)(*(code *)PTR___errno_location_00436904)();\n        uVar6 = (*(code *)PTR_strerror_004368e4)(*puVar5);\n                    /* WARNING: Subroutine does not return */\n        gold_fatal(pcVar4,pcVar7,uVar6);\n      }\n      oVar1 = CONCAT44(iVar8 - iVar3,(int)oVar1 + iVar3);\n      if (iVar8 - iVar3 == 0) {\n        return;\n      }\n      uVar2 = start._0_4_ - iVar8;\n    } while (iVar3 != 0);" do (compound_statement "{\n      iVar8 = (int)((ulonglong)oVar1 >> 0x20);\n      iVar3 = (*(code *)PTR_pread64_00436648)(this->descriptor_,(int)oVar1,iVar8);\n      if (iVar3 < 0) {\n        pcVar4 = (char *)(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x5afc);\n        pcVar7 = (this->name_)._M_dataplus._M_p;\n        puVar5 = (undefined4 *)(*(code *)PTR___errno_location_00436904)();\n        uVar6 = (*(code *)PTR_strerror_004368e4)(*puVar5);\n                    /* WARNING: Subroutine does not return */\n        gold_fatal(pcVar4,pcVar7,uVar6);\n      }\n      oVar1 = CONCAT44(iVar8 - iVar3,(int)oVar1 + iVar3);\n      if (iVar8 - iVar3 == 0) {\n        return;\n      }\n      uVar2 = start._0_4_ - iVar8;\n    }" { (expression_statement "iVar8 = (int)((ulonglong)oVar1 >> 0x20);" (assignment_expression "iVar8 = (int)((ulonglong)oVar1 >> 0x20)" identifier = (cast_expression "(int)((ulonglong)oVar1 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)oVar1 >> 0x20)" ( (binary_expression "(ulonglong)oVar1 >> 0x20" (cast_expression "(ulonglong)oVar1" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "iVar3 = (*(code *)PTR_pread64_00436648)(this->descriptor_,(int)oVar1,iVar8);" (assignment_expression "iVar3 = (*(code *)PTR_pread64_00436648)(this->descriptor_,(int)oVar1,iVar8)" identifier = (call_expression "(*(code *)PTR_pread64_00436648)(this->descriptor_,(int)oVar1,iVar8)" (parenthesized_expression "(*(code *)PTR_pread64_00436648)" ( (pointer_expression "*(code *)PTR_pread64_00436648" * (cast_expression "(code *)PTR_pread64_00436648" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(this->descriptor_,(int)oVar1,iVar8)" ( (field_expression "this->descriptor_" identifier -> field_identifier) , (cast_expression "(int)oVar1" ( (type_descriptor "int" primitive_type) ) identifier) , identifier )))) ;) (if_statement "if (iVar3 < 0) {\n        pcVar4 = (char *)(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x5afc);\n        pcVar7 = (this->name_)._M_dataplus._M_p;\n        puVar5 = (undefined4 *)(*(code *)PTR___errno_location_00436904)();\n        uVar6 = (*(code *)PTR_strerror_004368e4)(*puVar5);\n                    /* WARNING: Subroutine does not return */\n        gold_fatal(pcVar4,pcVar7,uVar6);\n      }" if (parenthesized_expression "(iVar3 < 0)" ( (binary_expression "iVar3 < 0" identifier < number_literal) )) (compound_statement "{\n        pcVar4 = (char *)(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x5afc);\n        pcVar7 = (this->name_)._M_dataplus._M_p;\n        puVar5 = (undefined4 *)(*(code *)PTR___errno_location_00436904)();\n        uVar6 = (*(code *)PTR_strerror_004368e4)(*puVar5);\n                    /* WARNING: Subroutine does not return */\n        gold_fatal(pcVar4,pcVar7,uVar6);\n      }" { (expression_statement "pcVar4 = (char *)(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x5afc);" (assignment_expression "pcVar4 = (char *)(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x5afc)" identifier = (cast_expression "(char *)(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x5afc)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x5afc)" (parenthesized_expression "(*(code *)PTR_gettext_00436818)" ( (pointer_expression "*(code *)PTR_gettext_00436818" * (cast_expression "(code *)PTR_gettext_00436818" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_s_alize_xindex_004323b4 + -0x5afc)" ( (binary_expression "PTR_s_alize_xindex_004323b4 + -0x5afc" identifier + number_literal) ))))) ;) (expression_statement "pcVar7 = (this->name_)._M_dataplus._M_p;" (assignment_expression "pcVar7 = (this->name_)._M_dataplus._M_p" identifier = (field_expression "(this->name_)._M_dataplus._M_p" (field_expression "(this->name_)._M_dataplus" (parenthesized_expression "(this->name_)" ( (field_expression "this->name_" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "puVar5 = (undefined4 *)(*(code *)PTR___errno_location_00436904)();" (assignment_expression "puVar5 = (undefined4 *)(*(code *)PTR___errno_location_00436904)()" identifier = (cast_expression "(undefined4 *)(*(code *)PTR___errno_location_00436904)()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___errno_location_00436904)()" (parenthesized_expression "(*(code *)PTR___errno_location_00436904)" ( (pointer_expression "*(code *)PTR___errno_location_00436904" * (cast_expression "(code *)PTR___errno_location_00436904" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))))) ;) (expression_statement "uVar6 = (*(code *)PTR_strerror_004368e4)(*puVar5);" (assignment_expression "uVar6 = (*(code *)PTR_strerror_004368e4)(*puVar5)" identifier = (call_expression "(*(code *)PTR_strerror_004368e4)(*puVar5)" (parenthesized_expression "(*(code *)PTR_strerror_004368e4)" ( (pointer_expression "*(code *)PTR_strerror_004368e4" * (cast_expression "(code *)PTR_strerror_004368e4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*puVar5)" ( (pointer_expression "*puVar5" * identifier) )))) ;) comment (expression_statement "gold_fatal(pcVar4,pcVar7,uVar6);" (call_expression "gold_fatal(pcVar4,pcVar7,uVar6)" identifier (argument_list "(pcVar4,pcVar7,uVar6)" ( identifier , identifier , identifier ))) ;) })) (expression_statement "oVar1 = CONCAT44(iVar8 - iVar3,(int)oVar1 + iVar3);" (assignment_expression "oVar1 = CONCAT44(iVar8 - iVar3,(int)oVar1 + iVar3)" identifier = (call_expression "CONCAT44(iVar8 - iVar3,(int)oVar1 + iVar3)" identifier (argument_list "(iVar8 - iVar3,(int)oVar1 + iVar3)" ( (binary_expression "iVar8 - iVar3" identifier - identifier) , (binary_expression "(int)oVar1 + iVar3" (cast_expression "(int)oVar1" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (if_statement "if (iVar8 - iVar3 == 0) {\n        return;\n      }" if (parenthesized_expression "(iVar8 - iVar3 == 0)" ( (binary_expression "iVar8 - iVar3 == 0" (binary_expression "iVar8 - iVar3" identifier - identifier) == number_literal) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) (expression_statement "uVar2 = start._0_4_ - iVar8;" (assignment_expression "uVar2 = start._0_4_ - iVar8" identifier = (binary_expression "start._0_4_ - iVar8" (field_expression "start._0_4_" identifier . field_identifier) - identifier)) ;) }) while (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) ;) }) (else_clause "else {\n    uVar2 = (int)this->size_ - in_a3;\n    if (start._0_4_ <= uVar2) {\n                    /* WARNING: Could not recover jumptable at 0x000e7560. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)PTR_memcpy_00436788)(start._4_4_,this->whole_file_view_->data_ + in_a3,start._0_4_);\n      return;\n    }\n  }" else (compound_statement "{\n    uVar2 = (int)this->size_ - in_a3;\n    if (start._0_4_ <= uVar2) {\n                    /* WARNING: Could not recover jumptable at 0x000e7560. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)PTR_memcpy_00436788)(start._4_4_,this->whole_file_view_->data_ + in_a3,start._0_4_);\n      return;\n    }\n  }" { (expression_statement "uVar2 = (int)this->size_ - in_a3;" (assignment_expression "uVar2 = (int)this->size_ - in_a3" identifier = (binary_expression "(int)this->size_ - in_a3" (cast_expression "(int)this->size_" ( (type_descriptor "int" primitive_type) ) (field_expression "this->size_" identifier -> field_identifier)) - identifier)) ;) (if_statement "if (start._0_4_ <= uVar2) {\n                    /* WARNING: Could not recover jumptable at 0x000e7560. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)PTR_memcpy_00436788)(start._4_4_,this->whole_file_view_->data_ + in_a3,start._0_4_);\n      return;\n    }" if (parenthesized_expression "(start._0_4_ <= uVar2)" ( (binary_expression "start._0_4_ <= uVar2" (field_expression "start._0_4_" identifier . field_identifier) <= identifier) )) (compound_statement "{\n                    /* WARNING: Could not recover jumptable at 0x000e7560. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)PTR_memcpy_00436788)(start._4_4_,this->whole_file_view_->data_ + in_a3,start._0_4_);\n      return;\n    }" { comment comment (expression_statement "(*(code *)PTR_memcpy_00436788)(start._4_4_,this->whole_file_view_->data_ + in_a3,start._0_4_);" (call_expression "(*(code *)PTR_memcpy_00436788)(start._4_4_,this->whole_file_view_->data_ + in_a3,start._0_4_)" (parenthesized_expression "(*(code *)PTR_memcpy_00436788)" ( (pointer_expression "*(code *)PTR_memcpy_00436788" * (cast_expression "(code *)PTR_memcpy_00436788" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(start._4_4_,this->whole_file_view_->data_ + in_a3,start._0_4_)" ( (field_expression "start._4_4_" identifier . field_identifier) , (binary_expression "this->whole_file_view_->data_ + in_a3" (field_expression "this->whole_file_view_->data_" (field_expression "this->whole_file_view_" identifier -> field_identifier) -> field_identifier) + identifier) , (field_expression "start._0_4_" identifier . field_identifier) ))) ;) (return_statement "return;" return ;) })) }))) (expression_statement "pcVar4 = (char *)(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x5ae4);" (assignment_expression "pcVar4 = (char *)(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x5ae4)" identifier = (cast_expression "(char *)(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x5ae4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x5ae4)" (parenthesized_expression "(*(code *)PTR_gettext_00436818)" ( (pointer_expression "*(code *)PTR_gettext_00436818" * (cast_expression "(code *)PTR_gettext_00436818" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_s_alize_xindex_004323b4 + -0x5ae4)" ( (binary_expression "PTR_s_alize_xindex_004323b4 + -0x5ae4" identifier + number_literal) ))))) ;) comment (expression_statement "gold_fatal(pcVar4,(this->name_)._M_dataplus._M_p,(int)uVar2 >> 0x1f,uVar2,0,start._0_4_,p);" (call_expression "gold_fatal(pcVar4,(this->name_)._M_dataplus._M_p,(int)uVar2 >> 0x1f,uVar2,0,start._0_4_,p)" identifier (argument_list "(pcVar4,(this->name_)._M_dataplus._M_p,(int)uVar2 >> 0x1f,uVar2,0,start._0_4_,p)" ( identifier , (field_expression "(this->name_)._M_dataplus._M_p" (field_expression "(this->name_)._M_dataplus" (parenthesized_expression "(this->name_)" ( (field_expression "this->name_" identifier -> field_identifier) )) . field_identifier) . field_identifier) , (binary_expression "(int)uVar2 >> 0x1f" (cast_expression "(int)uVar2" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) , identifier , number_literal , (field_expression "start._0_4_" identifier . field_identifier) , identifier ))) ;) })))
(translation_unit "void gold::File_read::do_read(longlong param_1,uint param_2,void *param_3)\n\n{\n  longlong lVar1;\n  uint uVar2;\n  int iVar3;\n  gold *pgVar4;\n  undefined4 *puVar5;\n  undefined4 uVar6;\n  int in_a3;\n  char *pcVar7;\n  int iVar8;\n  \n  if (*(int *)(param_2 + 0x70) == 0) {\n    reopen_descriptor((File_read *)param_2);\n    lVar1 = param_1;\n    do {\n      iVar8 = (int)((ulonglong)lVar1 >> 0x20);\n      iVar3 = (*(code *)PTR_pread64_00436648)(*(undefined4 *)(param_2 + 0x18),(int)lVar1,iVar8);\n      if (iVar3 < 0) {\n        pgVar4 = (gold *)(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x5afc);\n        pcVar7 = *(char **)param_2;\n        puVar5 = (undefined4 *)(*(code *)PTR___errno_location_00436904)();\n        uVar6 = (*(code *)PTR_strerror_004368e4)(*puVar5);\n                    \n        gold_fatal(pgVar4,pcVar7,uVar6);\n      }\n      lVar1 = CONCAT44(iVar8 - iVar3,(int)lVar1 + iVar3);\n      if (iVar8 - iVar3 == 0) {\n        return;\n      }\n      uVar2 = param_1._0_4_ - iVar8;\n    } while (iVar3 != 0);\n  }\n  else {\n    uVar2 = *(int *)(param_2 + 0x2c) - in_a3;\n    if (param_1._0_4_ <= uVar2) {\n                    \n                    \n      (*(code *)PTR_memcpy_00436788)\n                (param_1._4_4_,*(int *)(*(int *)(param_2 + 0x70) + 0xc) + in_a3,param_1._0_4_);\n      return;\n    }\n  }\n  pgVar4 = (gold *)(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x5ae4);\n                    \n  gold_fatal(pgVar4,*(char **)param_2,(int)uVar2 >> 0x1f,uVar2,0,param_1._0_4_);\n}\n\n" (function_definition "void gold::File_read::do_read(longlong param_1,uint param_2,void *param_3)\n\n{\n  longlong lVar1;\n  uint uVar2;\n  int iVar3;\n  gold *pgVar4;\n  undefined4 *puVar5;\n  undefined4 uVar6;\n  int in_a3;\n  char *pcVar7;\n  int iVar8;\n  \n  if (*(int *)(param_2 + 0x70) == 0) {\n    reopen_descriptor((File_read *)param_2);\n    lVar1 = param_1;\n    do {\n      iVar8 = (int)((ulonglong)lVar1 >> 0x20);\n      iVar3 = (*(code *)PTR_pread64_00436648)(*(undefined4 *)(param_2 + 0x18),(int)lVar1,iVar8);\n      if (iVar3 < 0) {\n        pgVar4 = (gold *)(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x5afc);\n        pcVar7 = *(char **)param_2;\n        puVar5 = (undefined4 *)(*(code *)PTR___errno_location_00436904)();\n        uVar6 = (*(code *)PTR_strerror_004368e4)(*puVar5);\n                    \n        gold_fatal(pgVar4,pcVar7,uVar6);\n      }\n      lVar1 = CONCAT44(iVar8 - iVar3,(int)lVar1 + iVar3);\n      if (iVar8 - iVar3 == 0) {\n        return;\n      }\n      uVar2 = param_1._0_4_ - iVar8;\n    } while (iVar3 != 0);\n  }\n  else {\n    uVar2 = *(int *)(param_2 + 0x2c) - in_a3;\n    if (param_1._0_4_ <= uVar2) {\n                    \n                    \n      (*(code *)PTR_memcpy_00436788)\n                (param_1._4_4_,*(int *)(*(int *)(param_2 + 0x70) + 0xc) + in_a3,param_1._0_4_);\n      return;\n    }\n  }\n  pgVar4 = (gold *)(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x5ae4);\n                    \n  gold_fatal(pgVar4,*(char **)param_2,(int)uVar2 >> 0x1f,uVar2,0,param_1._0_4_);\n}" primitive_type (ERROR "gold::File_read::" identifier : : identifier : :) (function_declarator "do_read(longlong param_1,uint param_2,void *param_3)" identifier (parameter_list "(longlong param_1,uint param_2,void *param_3)" ( (parameter_declaration "longlong param_1" type_identifier identifier) , (parameter_declaration "uint param_2" type_identifier identifier) , (parameter_declaration "void *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  longlong lVar1;\n  uint uVar2;\n  int iVar3;\n  gold *pgVar4;\n  undefined4 *puVar5;\n  undefined4 uVar6;\n  int in_a3;\n  char *pcVar7;\n  int iVar8;\n  \n  if (*(int *)(param_2 + 0x70) == 0) {\n    reopen_descriptor((File_read *)param_2);\n    lVar1 = param_1;\n    do {\n      iVar8 = (int)((ulonglong)lVar1 >> 0x20);\n      iVar3 = (*(code *)PTR_pread64_00436648)(*(undefined4 *)(param_2 + 0x18),(int)lVar1,iVar8);\n      if (iVar3 < 0) {\n        pgVar4 = (gold *)(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x5afc);\n        pcVar7 = *(char **)param_2;\n        puVar5 = (undefined4 *)(*(code *)PTR___errno_location_00436904)();\n        uVar6 = (*(code *)PTR_strerror_004368e4)(*puVar5);\n                    \n        gold_fatal(pgVar4,pcVar7,uVar6);\n      }\n      lVar1 = CONCAT44(iVar8 - iVar3,(int)lVar1 + iVar3);\n      if (iVar8 - iVar3 == 0) {\n        return;\n      }\n      uVar2 = param_1._0_4_ - iVar8;\n    } while (iVar3 != 0);\n  }\n  else {\n    uVar2 = *(int *)(param_2 + 0x2c) - in_a3;\n    if (param_1._0_4_ <= uVar2) {\n                    \n                    \n      (*(code *)PTR_memcpy_00436788)\n                (param_1._4_4_,*(int *)(*(int *)(param_2 + 0x70) + 0xc) + in_a3,param_1._0_4_);\n      return;\n    }\n  }\n  pgVar4 = (gold *)(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x5ae4);\n                    \n  gold_fatal(pgVar4,*(char **)param_2,(int)uVar2 >> 0x1f,uVar2,0,param_1._0_4_);\n}" { (declaration "longlong lVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "gold *pgVar4;" type_identifier (pointer_declarator "*pgVar4" * identifier) ;) (declaration "undefined4 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "int in_a3;" primitive_type identifier ;) (declaration "char *pcVar7;" primitive_type (pointer_declarator "*pcVar7" * identifier) ;) (declaration "int iVar8;" primitive_type identifier ;) (if_statement "if (*(int *)(param_2 + 0x70) == 0) {\n    reopen_descriptor((File_read *)param_2);\n    lVar1 = param_1;\n    do {\n      iVar8 = (int)((ulonglong)lVar1 >> 0x20);\n      iVar3 = (*(code *)PTR_pread64_00436648)(*(undefined4 *)(param_2 + 0x18),(int)lVar1,iVar8);\n      if (iVar3 < 0) {\n        pgVar4 = (gold *)(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x5afc);\n        pcVar7 = *(char **)param_2;\n        puVar5 = (undefined4 *)(*(code *)PTR___errno_location_00436904)();\n        uVar6 = (*(code *)PTR_strerror_004368e4)(*puVar5);\n                    \n        gold_fatal(pgVar4,pcVar7,uVar6);\n      }\n      lVar1 = CONCAT44(iVar8 - iVar3,(int)lVar1 + iVar3);\n      if (iVar8 - iVar3 == 0) {\n        return;\n      }\n      uVar2 = param_1._0_4_ - iVar8;\n    } while (iVar3 != 0);\n  }\n  else {\n    uVar2 = *(int *)(param_2 + 0x2c) - in_a3;\n    if (param_1._0_4_ <= uVar2) {\n                    \n                    \n      (*(code *)PTR_memcpy_00436788)\n                (param_1._4_4_,*(int *)(*(int *)(param_2 + 0x70) + 0xc) + in_a3,param_1._0_4_);\n      return;\n    }\n  }" if (parenthesized_expression "(*(int *)(param_2 + 0x70) == 0)" ( (binary_expression "*(int *)(param_2 + 0x70) == 0" (pointer_expression "*(int *)(param_2 + 0x70)" * (cast_expression "(int *)(param_2 + 0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x70)" ( (binary_expression "param_2 + 0x70" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    reopen_descriptor((File_read *)param_2);\n    lVar1 = param_1;\n    do {\n      iVar8 = (int)((ulonglong)lVar1 >> 0x20);\n      iVar3 = (*(code *)PTR_pread64_00436648)(*(undefined4 *)(param_2 + 0x18),(int)lVar1,iVar8);\n      if (iVar3 < 0) {\n        pgVar4 = (gold *)(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x5afc);\n        pcVar7 = *(char **)param_2;\n        puVar5 = (undefined4 *)(*(code *)PTR___errno_location_00436904)();\n        uVar6 = (*(code *)PTR_strerror_004368e4)(*puVar5);\n                    \n        gold_fatal(pgVar4,pcVar7,uVar6);\n      }\n      lVar1 = CONCAT44(iVar8 - iVar3,(int)lVar1 + iVar3);\n      if (iVar8 - iVar3 == 0) {\n        return;\n      }\n      uVar2 = param_1._0_4_ - iVar8;\n    } while (iVar3 != 0);\n  }" { (expression_statement "reopen_descriptor((File_read *)param_2);" (call_expression "reopen_descriptor((File_read *)param_2)" identifier (argument_list "((File_read *)param_2)" ( (cast_expression "(File_read *)param_2" ( (type_descriptor "File_read *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;) (expression_statement "lVar1 = param_1;" (assignment_expression "lVar1 = param_1" identifier = identifier) ;) (do_statement "do {\n      iVar8 = (int)((ulonglong)lVar1 >> 0x20);\n      iVar3 = (*(code *)PTR_pread64_00436648)(*(undefined4 *)(param_2 + 0x18),(int)lVar1,iVar8);\n      if (iVar3 < 0) {\n        pgVar4 = (gold *)(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x5afc);\n        pcVar7 = *(char **)param_2;\n        puVar5 = (undefined4 *)(*(code *)PTR___errno_location_00436904)();\n        uVar6 = (*(code *)PTR_strerror_004368e4)(*puVar5);\n                    \n        gold_fatal(pgVar4,pcVar7,uVar6);\n      }\n      lVar1 = CONCAT44(iVar8 - iVar3,(int)lVar1 + iVar3);\n      if (iVar8 - iVar3 == 0) {\n        return;\n      }\n      uVar2 = param_1._0_4_ - iVar8;\n    } while (iVar3 != 0);" do (compound_statement "{\n      iVar8 = (int)((ulonglong)lVar1 >> 0x20);\n      iVar3 = (*(code *)PTR_pread64_00436648)(*(undefined4 *)(param_2 + 0x18),(int)lVar1,iVar8);\n      if (iVar3 < 0) {\n        pgVar4 = (gold *)(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x5afc);\n        pcVar7 = *(char **)param_2;\n        puVar5 = (undefined4 *)(*(code *)PTR___errno_location_00436904)();\n        uVar6 = (*(code *)PTR_strerror_004368e4)(*puVar5);\n                    \n        gold_fatal(pgVar4,pcVar7,uVar6);\n      }\n      lVar1 = CONCAT44(iVar8 - iVar3,(int)lVar1 + iVar3);\n      if (iVar8 - iVar3 == 0) {\n        return;\n      }\n      uVar2 = param_1._0_4_ - iVar8;\n    }" { (expression_statement "iVar8 = (int)((ulonglong)lVar1 >> 0x20);" (assignment_expression "iVar8 = (int)((ulonglong)lVar1 >> 0x20)" identifier = (cast_expression "(int)((ulonglong)lVar1 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar1 >> 0x20)" ( (binary_expression "(ulonglong)lVar1 >> 0x20" (cast_expression "(ulonglong)lVar1" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "iVar3 = (*(code *)PTR_pread64_00436648)(*(undefined4 *)(param_2 + 0x18),(int)lVar1,iVar8);" (assignment_expression "iVar3 = (*(code *)PTR_pread64_00436648)(*(undefined4 *)(param_2 + 0x18),(int)lVar1,iVar8)" identifier = (call_expression "(*(code *)PTR_pread64_00436648)(*(undefined4 *)(param_2 + 0x18),(int)lVar1,iVar8)" (parenthesized_expression "(*(code *)PTR_pread64_00436648)" ( (pointer_expression "*(code *)PTR_pread64_00436648" * (cast_expression "(code *)PTR_pread64_00436648" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)(param_2 + 0x18),(int)lVar1,iVar8)" ( (pointer_expression "*(undefined4 *)(param_2 + 0x18)" * (cast_expression "(undefined4 *)(param_2 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x18)" ( (binary_expression "param_2 + 0x18" identifier + number_literal) )))) , (cast_expression "(int)lVar1" ( (type_descriptor "int" primitive_type) ) identifier) , identifier )))) ;) (if_statement "if (iVar3 < 0) {\n        pgVar4 = (gold *)(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x5afc);\n        pcVar7 = *(char **)param_2;\n        puVar5 = (undefined4 *)(*(code *)PTR___errno_location_00436904)();\n        uVar6 = (*(code *)PTR_strerror_004368e4)(*puVar5);\n                    \n        gold_fatal(pgVar4,pcVar7,uVar6);\n      }" if (parenthesized_expression "(iVar3 < 0)" ( (binary_expression "iVar3 < 0" identifier < number_literal) )) (compound_statement "{\n        pgVar4 = (gold *)(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x5afc);\n        pcVar7 = *(char **)param_2;\n        puVar5 = (undefined4 *)(*(code *)PTR___errno_location_00436904)();\n        uVar6 = (*(code *)PTR_strerror_004368e4)(*puVar5);\n                    \n        gold_fatal(pgVar4,pcVar7,uVar6);\n      }" { (expression_statement "pgVar4 = (gold *)(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x5afc);" (assignment_expression "pgVar4 = (gold *)(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x5afc)" identifier = (cast_expression "(gold *)(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x5afc)" ( (type_descriptor "gold *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x5afc)" (parenthesized_expression "(*(code *)PTR_gettext_00436818)" ( (pointer_expression "*(code *)PTR_gettext_00436818" * (cast_expression "(code *)PTR_gettext_00436818" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_s_alize_xindex_004323b4 + -0x5afc)" ( (binary_expression "PTR_s_alize_xindex_004323b4 + -0x5afc" identifier + number_literal) ))))) ;) (expression_statement "pcVar7 = *(char **)param_2;" (assignment_expression "pcVar7 = *(char **)param_2" identifier = (pointer_expression "*(char **)param_2" * (cast_expression "(char **)param_2" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "puVar5 = (undefined4 *)(*(code *)PTR___errno_location_00436904)();" (assignment_expression "puVar5 = (undefined4 *)(*(code *)PTR___errno_location_00436904)()" identifier = (cast_expression "(undefined4 *)(*(code *)PTR___errno_location_00436904)()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___errno_location_00436904)()" (parenthesized_expression "(*(code *)PTR___errno_location_00436904)" ( (pointer_expression "*(code *)PTR___errno_location_00436904" * (cast_expression "(code *)PTR___errno_location_00436904" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))))) ;) (expression_statement "uVar6 = (*(code *)PTR_strerror_004368e4)(*puVar5);" (assignment_expression "uVar6 = (*(code *)PTR_strerror_004368e4)(*puVar5)" identifier = (call_expression "(*(code *)PTR_strerror_004368e4)(*puVar5)" (parenthesized_expression "(*(code *)PTR_strerror_004368e4)" ( (pointer_expression "*(code *)PTR_strerror_004368e4" * (cast_expression "(code *)PTR_strerror_004368e4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*puVar5)" ( (pointer_expression "*puVar5" * identifier) )))) ;) (expression_statement "gold_fatal(pgVar4,pcVar7,uVar6);" (call_expression "gold_fatal(pgVar4,pcVar7,uVar6)" identifier (argument_list "(pgVar4,pcVar7,uVar6)" ( identifier , identifier , identifier ))) ;) })) (expression_statement "lVar1 = CONCAT44(iVar8 - iVar3,(int)lVar1 + iVar3);" (assignment_expression "lVar1 = CONCAT44(iVar8 - iVar3,(int)lVar1 + iVar3)" identifier = (call_expression "CONCAT44(iVar8 - iVar3,(int)lVar1 + iVar3)" identifier (argument_list "(iVar8 - iVar3,(int)lVar1 + iVar3)" ( (binary_expression "iVar8 - iVar3" identifier - identifier) , (binary_expression "(int)lVar1 + iVar3" (cast_expression "(int)lVar1" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (if_statement "if (iVar8 - iVar3 == 0) {\n        return;\n      }" if (parenthesized_expression "(iVar8 - iVar3 == 0)" ( (binary_expression "iVar8 - iVar3 == 0" (binary_expression "iVar8 - iVar3" identifier - identifier) == number_literal) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) (expression_statement "uVar2 = param_1._0_4_ - iVar8;" (assignment_expression "uVar2 = param_1._0_4_ - iVar8" identifier = (binary_expression "param_1._0_4_ - iVar8" (field_expression "param_1._0_4_" identifier . field_identifier) - identifier)) ;) }) while (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) ;) }) (else_clause "else {\n    uVar2 = *(int *)(param_2 + 0x2c) - in_a3;\n    if (param_1._0_4_ <= uVar2) {\n                    \n                    \n      (*(code *)PTR_memcpy_00436788)\n                (param_1._4_4_,*(int *)(*(int *)(param_2 + 0x70) + 0xc) + in_a3,param_1._0_4_);\n      return;\n    }\n  }" else (compound_statement "{\n    uVar2 = *(int *)(param_2 + 0x2c) - in_a3;\n    if (param_1._0_4_ <= uVar2) {\n                    \n                    \n      (*(code *)PTR_memcpy_00436788)\n                (param_1._4_4_,*(int *)(*(int *)(param_2 + 0x70) + 0xc) + in_a3,param_1._0_4_);\n      return;\n    }\n  }" { (expression_statement "uVar2 = *(int *)(param_2 + 0x2c) - in_a3;" (assignment_expression "uVar2 = *(int *)(param_2 + 0x2c) - in_a3" identifier = (binary_expression "*(int *)(param_2 + 0x2c) - in_a3" (pointer_expression "*(int *)(param_2 + 0x2c)" * (cast_expression "(int *)(param_2 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x2c)" ( (binary_expression "param_2 + 0x2c" identifier + number_literal) )))) - identifier)) ;) (if_statement "if (param_1._0_4_ <= uVar2) {\n                    \n                    \n      (*(code *)PTR_memcpy_00436788)\n                (param_1._4_4_,*(int *)(*(int *)(param_2 + 0x70) + 0xc) + in_a3,param_1._0_4_);\n      return;\n    }" if (parenthesized_expression "(param_1._0_4_ <= uVar2)" ( (binary_expression "param_1._0_4_ <= uVar2" (field_expression "param_1._0_4_" identifier . field_identifier) <= identifier) )) (compound_statement "{\n                    \n                    \n      (*(code *)PTR_memcpy_00436788)\n                (param_1._4_4_,*(int *)(*(int *)(param_2 + 0x70) + 0xc) + in_a3,param_1._0_4_);\n      return;\n    }" { (expression_statement "(*(code *)PTR_memcpy_00436788)\n                (param_1._4_4_,*(int *)(*(int *)(param_2 + 0x70) + 0xc) + in_a3,param_1._0_4_);" (call_expression "(*(code *)PTR_memcpy_00436788)\n                (param_1._4_4_,*(int *)(*(int *)(param_2 + 0x70) + 0xc) + in_a3,param_1._0_4_)" (parenthesized_expression "(*(code *)PTR_memcpy_00436788)" ( (pointer_expression "*(code *)PTR_memcpy_00436788" * (cast_expression "(code *)PTR_memcpy_00436788" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1._4_4_,*(int *)(*(int *)(param_2 + 0x70) + 0xc) + in_a3,param_1._0_4_)" ( (field_expression "param_1._4_4_" identifier . field_identifier) , (binary_expression "*(int *)(*(int *)(param_2 + 0x70) + 0xc) + in_a3" (pointer_expression "*(int *)(*(int *)(param_2 + 0x70) + 0xc)" * (cast_expression "(int *)(*(int *)(param_2 + 0x70) + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_2 + 0x70) + 0xc)" ( (binary_expression "*(int *)(param_2 + 0x70) + 0xc" (pointer_expression "*(int *)(param_2 + 0x70)" * (cast_expression "(int *)(param_2 + 0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x70)" ( (binary_expression "param_2 + 0x70" identifier + number_literal) )))) + number_literal) )))) + identifier) , (field_expression "param_1._0_4_" identifier . field_identifier) ))) ;) (return_statement "return;" return ;) })) }))) (expression_statement "pgVar4 = (gold *)(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x5ae4);" (assignment_expression "pgVar4 = (gold *)(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x5ae4)" identifier = (cast_expression "(gold *)(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x5ae4)" ( (type_descriptor "gold *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x5ae4)" (parenthesized_expression "(*(code *)PTR_gettext_00436818)" ( (pointer_expression "*(code *)PTR_gettext_00436818" * (cast_expression "(code *)PTR_gettext_00436818" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_s_alize_xindex_004323b4 + -0x5ae4)" ( (binary_expression "PTR_s_alize_xindex_004323b4 + -0x5ae4" identifier + number_literal) ))))) ;) (expression_statement "gold_fatal(pgVar4,*(char **)param_2,(int)uVar2 >> 0x1f,uVar2,0,param_1._0_4_);" (call_expression "gold_fatal(pgVar4,*(char **)param_2,(int)uVar2 >> 0x1f,uVar2,0,param_1._0_4_)" identifier (argument_list "(pgVar4,*(char **)param_2,(int)uVar2 >> 0x1f,uVar2,0,param_1._0_4_)" ( identifier , (pointer_expression "*(char **)param_2" * (cast_expression "(char **)param_2" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , (binary_expression "(int)uVar2 >> 0x1f" (cast_expression "(int)uVar2" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) , identifier , number_literal , (field_expression "param_1._0_4_" identifier . field_identifier) ))) ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT : : IDENT : :) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (cast_expression ( (type_descriptor TYPE) ) IDENT) , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (pointer_expression * IDENT) )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT - IDENT) , (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT - IDENT) == LIT) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (field_expression IDENT . field_identifier) - IDENT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (field_expression IDENT . field_identifier) <= IDENT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (field_expression IDENT . field_identifier) , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) + IDENT) , (field_expression IDENT . field_identifier) ))) ;) (return_statement return ;) })) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT)) , (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) , IDENT , LIT , (field_expression IDENT . field_identifier) ))) ;) })))
(function_definition "void gold::File_read::do_read(longlong param_1,uint param_2,void *param_3)\n\n{\n  longlong lVar1;\n  uint uVar2;\n  int iVar3;\n  gold *pgVar4;\n  undefined4 *puVar5;\n  undefined4 uVar6;\n  int in_a3;\n  char *pcVar7;\n  int iVar8;\n  \n  if (*(int *)(param_2 + 0x70) == 0) {\n    reopen_descriptor((File_read *)param_2);\n    lVar1 = param_1;\n    do {\n      iVar8 = (int)((ulonglong)lVar1 >> 0x20);\n      iVar3 = (*(code *)PTR_pread64_00436648)(*(undefined4 *)(param_2 + 0x18),(int)lVar1,iVar8);\n      if (iVar3 < 0) {\n        pgVar4 = (gold *)(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x5afc);\n        pcVar7 = *(char **)param_2;\n        puVar5 = (undefined4 *)(*(code *)PTR___errno_location_00436904)();\n        uVar6 = (*(code *)PTR_strerror_004368e4)(*puVar5);\n                    \n        gold_fatal(pgVar4,pcVar7,uVar6);\n      }\n      lVar1 = CONCAT44(iVar8 - iVar3,(int)lVar1 + iVar3);\n      if (iVar8 - iVar3 == 0) {\n        return;\n      }\n      uVar2 = param_1._0_4_ - iVar8;\n    } while (iVar3 != 0);\n  }\n  else {\n    uVar2 = *(int *)(param_2 + 0x2c) - in_a3;\n    if (param_1._0_4_ <= uVar2) {\n                    \n                    \n      (*(code *)PTR_memcpy_00436788)\n                (param_1._4_4_,*(int *)(*(int *)(param_2 + 0x70) + 0xc) + in_a3,param_1._0_4_);\n      return;\n    }\n  }\n  pgVar4 = (gold *)(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x5ae4);\n                    \n  gold_fatal(pgVar4,*(char **)param_2,(int)uVar2 >> 0x1f,uVar2,0,param_1._0_4_);\n}" (primitive_type "void") (ERROR "gold::File_read::" (identifier "gold") (: ":") (: ":") (identifier "File_read") (: ":") (: ":")) (function_declarator "do_read(longlong param_1,uint param_2,void *param_3)" (identifier "do_read") (parameter_list "(longlong param_1,uint param_2,void *param_3)" (( "(") (parameter_declaration "longlong param_1" (type_identifier "longlong") (identifier "param_1")) (, ",") (parameter_declaration "uint param_2" (type_identifier "uint") (identifier "param_2")) (, ",") (parameter_declaration "void *param_3" (primitive_type "void") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) () ")"))) (compound_statement "{\n  longlong lVar1;\n  uint uVar2;\n  int iVar3;\n  gold *pgVar4;\n  undefined4 *puVar5;\n  undefined4 uVar6;\n  int in_a3;\n  char *pcVar7;\n  int iVar8;\n  \n  if (*(int *)(param_2 + 0x70) == 0) {\n    reopen_descriptor((File_read *)param_2);\n    lVar1 = param_1;\n    do {\n      iVar8 = (int)((ulonglong)lVar1 >> 0x20);\n      iVar3 = (*(code *)PTR_pread64_00436648)(*(undefined4 *)(param_2 + 0x18),(int)lVar1,iVar8);\n      if (iVar3 < 0) {\n        pgVar4 = (gold *)(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x5afc);\n        pcVar7 = *(char **)param_2;\n        puVar5 = (undefined4 *)(*(code *)PTR___errno_location_00436904)();\n        uVar6 = (*(code *)PTR_strerror_004368e4)(*puVar5);\n                    \n        gold_fatal(pgVar4,pcVar7,uVar6);\n      }\n      lVar1 = CONCAT44(iVar8 - iVar3,(int)lVar1 + iVar3);\n      if (iVar8 - iVar3 == 0) {\n        return;\n      }\n      uVar2 = param_1._0_4_ - iVar8;\n    } while (iVar3 != 0);\n  }\n  else {\n    uVar2 = *(int *)(param_2 + 0x2c) - in_a3;\n    if (param_1._0_4_ <= uVar2) {\n                    \n                    \n      (*(code *)PTR_memcpy_00436788)\n                (param_1._4_4_,*(int *)(*(int *)(param_2 + 0x70) + 0xc) + in_a3,param_1._0_4_);\n      return;\n    }\n  }\n  pgVar4 = (gold *)(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x5ae4);\n                    \n  gold_fatal(pgVar4,*(char **)param_2,(int)uVar2 >> 0x1f,uVar2,0,param_1._0_4_);\n}" ({ "{") (declaration "longlong lVar1;" (type_identifier "longlong") (identifier "lVar1") (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "gold *pgVar4;" (type_identifier "gold") (pointer_declarator "*pgVar4" (* "*") (identifier "pgVar4")) (; ";")) (declaration "undefined4 *puVar5;" (type_identifier "undefined4") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "undefined4 uVar6;" (type_identifier "undefined4") (identifier "uVar6") (; ";")) (declaration "int in_a3;" (primitive_type "int") (identifier "in_a3") (; ";")) (declaration "char *pcVar7;" (primitive_type "char") (pointer_declarator "*pcVar7" (* "*") (identifier "pcVar7")) (; ";")) (declaration "int iVar8;" (primitive_type "int") (identifier "iVar8") (; ";")) (if_statement "if (*(int *)(param_2 + 0x70) == 0) {\n    reopen_descriptor((File_read *)param_2);\n    lVar1 = param_1;\n    do {\n      iVar8 = (int)((ulonglong)lVar1 >> 0x20);\n      iVar3 = (*(code *)PTR_pread64_00436648)(*(undefined4 *)(param_2 + 0x18),(int)lVar1,iVar8);\n      if (iVar3 < 0) {\n        pgVar4 = (gold *)(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x5afc);\n        pcVar7 = *(char **)param_2;\n        puVar5 = (undefined4 *)(*(code *)PTR___errno_location_00436904)();\n        uVar6 = (*(code *)PTR_strerror_004368e4)(*puVar5);\n                    \n        gold_fatal(pgVar4,pcVar7,uVar6);\n      }\n      lVar1 = CONCAT44(iVar8 - iVar3,(int)lVar1 + iVar3);\n      if (iVar8 - iVar3 == 0) {\n        return;\n      }\n      uVar2 = param_1._0_4_ - iVar8;\n    } while (iVar3 != 0);\n  }\n  else {\n    uVar2 = *(int *)(param_2 + 0x2c) - in_a3;\n    if (param_1._0_4_ <= uVar2) {\n                    \n                    \n      (*(code *)PTR_memcpy_00436788)\n                (param_1._4_4_,*(int *)(*(int *)(param_2 + 0x70) + 0xc) + in_a3,param_1._0_4_);\n      return;\n    }\n  }" (if "if") (parenthesized_expression "(*(int *)(param_2 + 0x70) == 0)" (( "(") (binary_expression "*(int *)(param_2 + 0x70) == 0" (pointer_expression "*(int *)(param_2 + 0x70)" (* "*") (cast_expression "(int *)(param_2 + 0x70)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x70)" (( "(") (binary_expression "param_2 + 0x70" (identifier "param_2") (+ "+") (number_literal "0x70")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    reopen_descriptor((File_read *)param_2);\n    lVar1 = param_1;\n    do {\n      iVar8 = (int)((ulonglong)lVar1 >> 0x20);\n      iVar3 = (*(code *)PTR_pread64_00436648)(*(undefined4 *)(param_2 + 0x18),(int)lVar1,iVar8);\n      if (iVar3 < 0) {\n        pgVar4 = (gold *)(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x5afc);\n        pcVar7 = *(char **)param_2;\n        puVar5 = (undefined4 *)(*(code *)PTR___errno_location_00436904)();\n        uVar6 = (*(code *)PTR_strerror_004368e4)(*puVar5);\n                    \n        gold_fatal(pgVar4,pcVar7,uVar6);\n      }\n      lVar1 = CONCAT44(iVar8 - iVar3,(int)lVar1 + iVar3);\n      if (iVar8 - iVar3 == 0) {\n        return;\n      }\n      uVar2 = param_1._0_4_ - iVar8;\n    } while (iVar3 != 0);\n  }" ({ "{") (expression_statement "reopen_descriptor((File_read *)param_2);" (call_expression "reopen_descriptor((File_read *)param_2)" (identifier "reopen_descriptor") (argument_list "((File_read *)param_2)" (( "(") (cast_expression "(File_read *)param_2" (( "(") (type_descriptor "File_read *" (type_identifier "File_read") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_2")) () ")"))) (; ";")) (expression_statement "lVar1 = param_1;" (assignment_expression "lVar1 = param_1" (identifier "lVar1") (= "=") (identifier "param_1")) (; ";")) (do_statement "do {\n      iVar8 = (int)((ulonglong)lVar1 >> 0x20);\n      iVar3 = (*(code *)PTR_pread64_00436648)(*(undefined4 *)(param_2 + 0x18),(int)lVar1,iVar8);\n      if (iVar3 < 0) {\n        pgVar4 = (gold *)(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x5afc);\n        pcVar7 = *(char **)param_2;\n        puVar5 = (undefined4 *)(*(code *)PTR___errno_location_00436904)();\n        uVar6 = (*(code *)PTR_strerror_004368e4)(*puVar5);\n                    \n        gold_fatal(pgVar4,pcVar7,uVar6);\n      }\n      lVar1 = CONCAT44(iVar8 - iVar3,(int)lVar1 + iVar3);\n      if (iVar8 - iVar3 == 0) {\n        return;\n      }\n      uVar2 = param_1._0_4_ - iVar8;\n    } while (iVar3 != 0);" (do "do") (compound_statement "{\n      iVar8 = (int)((ulonglong)lVar1 >> 0x20);\n      iVar3 = (*(code *)PTR_pread64_00436648)(*(undefined4 *)(param_2 + 0x18),(int)lVar1,iVar8);\n      if (iVar3 < 0) {\n        pgVar4 = (gold *)(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x5afc);\n        pcVar7 = *(char **)param_2;\n        puVar5 = (undefined4 *)(*(code *)PTR___errno_location_00436904)();\n        uVar6 = (*(code *)PTR_strerror_004368e4)(*puVar5);\n                    \n        gold_fatal(pgVar4,pcVar7,uVar6);\n      }\n      lVar1 = CONCAT44(iVar8 - iVar3,(int)lVar1 + iVar3);\n      if (iVar8 - iVar3 == 0) {\n        return;\n      }\n      uVar2 = param_1._0_4_ - iVar8;\n    }" ({ "{") (expression_statement "iVar8 = (int)((ulonglong)lVar1 >> 0x20);" (assignment_expression "iVar8 = (int)((ulonglong)lVar1 >> 0x20)" (identifier "iVar8") (= "=") (cast_expression "(int)((ulonglong)lVar1 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)lVar1 >> 0x20)" (( "(") (binary_expression "(ulonglong)lVar1 >> 0x20" (cast_expression "(ulonglong)lVar1" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "lVar1")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "iVar3 = (*(code *)PTR_pread64_00436648)(*(undefined4 *)(param_2 + 0x18),(int)lVar1,iVar8);" (assignment_expression "iVar3 = (*(code *)PTR_pread64_00436648)(*(undefined4 *)(param_2 + 0x18),(int)lVar1,iVar8)" (identifier "iVar3") (= "=") (call_expression "(*(code *)PTR_pread64_00436648)(*(undefined4 *)(param_2 + 0x18),(int)lVar1,iVar8)" (parenthesized_expression "(*(code *)PTR_pread64_00436648)" (( "(") (pointer_expression "*(code *)PTR_pread64_00436648" (* "*") (cast_expression "(code *)PTR_pread64_00436648" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_pread64_00436648"))) () ")")) (argument_list "(*(undefined4 *)(param_2 + 0x18),(int)lVar1,iVar8)" (( "(") (pointer_expression "*(undefined4 *)(param_2 + 0x18)" (* "*") (cast_expression "(undefined4 *)(param_2 + 0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x18)" (( "(") (binary_expression "param_2 + 0x18" (identifier "param_2") (+ "+") (number_literal "0x18")) () ")")))) (, ",") (cast_expression "(int)lVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar1")) (, ",") (identifier "iVar8") () ")")))) (; ";")) (if_statement "if (iVar3 < 0) {\n        pgVar4 = (gold *)(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x5afc);\n        pcVar7 = *(char **)param_2;\n        puVar5 = (undefined4 *)(*(code *)PTR___errno_location_00436904)();\n        uVar6 = (*(code *)PTR_strerror_004368e4)(*puVar5);\n                    \n        gold_fatal(pgVar4,pcVar7,uVar6);\n      }" (if "if") (parenthesized_expression "(iVar3 < 0)" (( "(") (binary_expression "iVar3 < 0" (identifier "iVar3") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n        pgVar4 = (gold *)(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x5afc);\n        pcVar7 = *(char **)param_2;\n        puVar5 = (undefined4 *)(*(code *)PTR___errno_location_00436904)();\n        uVar6 = (*(code *)PTR_strerror_004368e4)(*puVar5);\n                    \n        gold_fatal(pgVar4,pcVar7,uVar6);\n      }" ({ "{") (expression_statement "pgVar4 = (gold *)(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x5afc);" (assignment_expression "pgVar4 = (gold *)(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x5afc)" (identifier "pgVar4") (= "=") (cast_expression "(gold *)(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x5afc)" (( "(") (type_descriptor "gold *" (type_identifier "gold") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x5afc)" (parenthesized_expression "(*(code *)PTR_gettext_00436818)" (( "(") (pointer_expression "*(code *)PTR_gettext_00436818" (* "*") (cast_expression "(code *)PTR_gettext_00436818" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_gettext_00436818"))) () ")")) (argument_list "(PTR_s_alize_xindex_004323b4 + -0x5afc)" (( "(") (binary_expression "PTR_s_alize_xindex_004323b4 + -0x5afc" (identifier "PTR_s_alize_xindex_004323b4") (+ "+") (number_literal "-0x5afc")) () ")"))))) (; ";")) (expression_statement "pcVar7 = *(char **)param_2;" (assignment_expression "pcVar7 = *(char **)param_2" (identifier "pcVar7") (= "=") (pointer_expression "*(char **)param_2" (* "*") (cast_expression "(char **)param_2" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "param_2")))) (; ";")) (expression_statement "puVar5 = (undefined4 *)(*(code *)PTR___errno_location_00436904)();" (assignment_expression "puVar5 = (undefined4 *)(*(code *)PTR___errno_location_00436904)()" (identifier "puVar5") (= "=") (cast_expression "(undefined4 *)(*(code *)PTR___errno_location_00436904)()" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR___errno_location_00436904)()" (parenthesized_expression "(*(code *)PTR___errno_location_00436904)" (( "(") (pointer_expression "*(code *)PTR___errno_location_00436904" (* "*") (cast_expression "(code *)PTR___errno_location_00436904" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___errno_location_00436904"))) () ")")) (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "uVar6 = (*(code *)PTR_strerror_004368e4)(*puVar5);" (assignment_expression "uVar6 = (*(code *)PTR_strerror_004368e4)(*puVar5)" (identifier "uVar6") (= "=") (call_expression "(*(code *)PTR_strerror_004368e4)(*puVar5)" (parenthesized_expression "(*(code *)PTR_strerror_004368e4)" (( "(") (pointer_expression "*(code *)PTR_strerror_004368e4" (* "*") (cast_expression "(code *)PTR_strerror_004368e4" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_strerror_004368e4"))) () ")")) (argument_list "(*puVar5)" (( "(") (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) () ")")))) (; ";")) (expression_statement "gold_fatal(pgVar4,pcVar7,uVar6);" (call_expression "gold_fatal(pgVar4,pcVar7,uVar6)" (identifier "gold_fatal") (argument_list "(pgVar4,pcVar7,uVar6)" (( "(") (identifier "pgVar4") (, ",") (identifier "pcVar7") (, ",") (identifier "uVar6") () ")"))) (; ";")) (} "}"))) (expression_statement "lVar1 = CONCAT44(iVar8 - iVar3,(int)lVar1 + iVar3);" (assignment_expression "lVar1 = CONCAT44(iVar8 - iVar3,(int)lVar1 + iVar3)" (identifier "lVar1") (= "=") (call_expression "CONCAT44(iVar8 - iVar3,(int)lVar1 + iVar3)" (identifier "CONCAT44") (argument_list "(iVar8 - iVar3,(int)lVar1 + iVar3)" (( "(") (binary_expression "iVar8 - iVar3" (identifier "iVar8") (- "-") (identifier "iVar3")) (, ",") (binary_expression "(int)lVar1 + iVar3" (cast_expression "(int)lVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar1")) (+ "+") (identifier "iVar3")) () ")")))) (; ";")) (if_statement "if (iVar8 - iVar3 == 0) {\n        return;\n      }" (if "if") (parenthesized_expression "(iVar8 - iVar3 == 0)" (( "(") (binary_expression "iVar8 - iVar3 == 0" (binary_expression "iVar8 - iVar3" (identifier "iVar8") (- "-") (identifier "iVar3")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        return;\n      }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "uVar2 = param_1._0_4_ - iVar8;" (assignment_expression "uVar2 = param_1._0_4_ - iVar8" (identifier "uVar2") (= "=") (binary_expression "param_1._0_4_ - iVar8" (field_expression "param_1._0_4_" (identifier "param_1") (. ".") (field_identifier "_0_4_")) (- "-") (identifier "iVar8"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")")) (; ";")) (} "}")) (else_clause "else {\n    uVar2 = *(int *)(param_2 + 0x2c) - in_a3;\n    if (param_1._0_4_ <= uVar2) {\n                    \n                    \n      (*(code *)PTR_memcpy_00436788)\n                (param_1._4_4_,*(int *)(*(int *)(param_2 + 0x70) + 0xc) + in_a3,param_1._0_4_);\n      return;\n    }\n  }" (else "else") (compound_statement "{\n    uVar2 = *(int *)(param_2 + 0x2c) - in_a3;\n    if (param_1._0_4_ <= uVar2) {\n                    \n                    \n      (*(code *)PTR_memcpy_00436788)\n                (param_1._4_4_,*(int *)(*(int *)(param_2 + 0x70) + 0xc) + in_a3,param_1._0_4_);\n      return;\n    }\n  }" ({ "{") (expression_statement "uVar2 = *(int *)(param_2 + 0x2c) - in_a3;" (assignment_expression "uVar2 = *(int *)(param_2 + 0x2c) - in_a3" (identifier "uVar2") (= "=") (binary_expression "*(int *)(param_2 + 0x2c) - in_a3" (pointer_expression "*(int *)(param_2 + 0x2c)" (* "*") (cast_expression "(int *)(param_2 + 0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x2c)" (( "(") (binary_expression "param_2 + 0x2c" (identifier "param_2") (+ "+") (number_literal "0x2c")) () ")")))) (- "-") (identifier "in_a3"))) (; ";")) (if_statement "if (param_1._0_4_ <= uVar2) {\n                    \n                    \n      (*(code *)PTR_memcpy_00436788)\n                (param_1._4_4_,*(int *)(*(int *)(param_2 + 0x70) + 0xc) + in_a3,param_1._0_4_);\n      return;\n    }" (if "if") (parenthesized_expression "(param_1._0_4_ <= uVar2)" (( "(") (binary_expression "param_1._0_4_ <= uVar2" (field_expression "param_1._0_4_" (identifier "param_1") (. ".") (field_identifier "_0_4_")) (<= "<=") (identifier "uVar2")) () ")")) (compound_statement "{\n                    \n                    \n      (*(code *)PTR_memcpy_00436788)\n                (param_1._4_4_,*(int *)(*(int *)(param_2 + 0x70) + 0xc) + in_a3,param_1._0_4_);\n      return;\n    }" ({ "{") (expression_statement "(*(code *)PTR_memcpy_00436788)\n                (param_1._4_4_,*(int *)(*(int *)(param_2 + 0x70) + 0xc) + in_a3,param_1._0_4_);" (call_expression "(*(code *)PTR_memcpy_00436788)\n                (param_1._4_4_,*(int *)(*(int *)(param_2 + 0x70) + 0xc) + in_a3,param_1._0_4_)" (parenthesized_expression "(*(code *)PTR_memcpy_00436788)" (( "(") (pointer_expression "*(code *)PTR_memcpy_00436788" (* "*") (cast_expression "(code *)PTR_memcpy_00436788" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_memcpy_00436788"))) () ")")) (argument_list "(param_1._4_4_,*(int *)(*(int *)(param_2 + 0x70) + 0xc) + in_a3,param_1._0_4_)" (( "(") (field_expression "param_1._4_4_" (identifier "param_1") (. ".") (field_identifier "_4_4_")) (, ",") (binary_expression "*(int *)(*(int *)(param_2 + 0x70) + 0xc) + in_a3" (pointer_expression "*(int *)(*(int *)(param_2 + 0x70) + 0xc)" (* "*") (cast_expression "(int *)(*(int *)(param_2 + 0x70) + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_2 + 0x70) + 0xc)" (( "(") (binary_expression "*(int *)(param_2 + 0x70) + 0xc" (pointer_expression "*(int *)(param_2 + 0x70)" (* "*") (cast_expression "(int *)(param_2 + 0x70)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x70)" (( "(") (binary_expression "param_2 + 0x70" (identifier "param_2") (+ "+") (number_literal "0x70")) () ")")))) (+ "+") (number_literal "0xc")) () ")")))) (+ "+") (identifier "in_a3")) (, ",") (field_expression "param_1._0_4_" (identifier "param_1") (. ".") (field_identifier "_0_4_")) () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (} "}")))) (expression_statement "pgVar4 = (gold *)(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x5ae4);" (assignment_expression "pgVar4 = (gold *)(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x5ae4)" (identifier "pgVar4") (= "=") (cast_expression "(gold *)(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x5ae4)" (( "(") (type_descriptor "gold *" (type_identifier "gold") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x5ae4)" (parenthesized_expression "(*(code *)PTR_gettext_00436818)" (( "(") (pointer_expression "*(code *)PTR_gettext_00436818" (* "*") (cast_expression "(code *)PTR_gettext_00436818" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_gettext_00436818"))) () ")")) (argument_list "(PTR_s_alize_xindex_004323b4 + -0x5ae4)" (( "(") (binary_expression "PTR_s_alize_xindex_004323b4 + -0x5ae4" (identifier "PTR_s_alize_xindex_004323b4") (+ "+") (number_literal "-0x5ae4")) () ")"))))) (; ";")) (expression_statement "gold_fatal(pgVar4,*(char **)param_2,(int)uVar2 >> 0x1f,uVar2,0,param_1._0_4_);" (call_expression "gold_fatal(pgVar4,*(char **)param_2,(int)uVar2 >> 0x1f,uVar2,0,param_1._0_4_)" (identifier "gold_fatal") (argument_list "(pgVar4,*(char **)param_2,(int)uVar2 >> 0x1f,uVar2,0,param_1._0_4_)" (( "(") (identifier "pgVar4") (, ",") (pointer_expression "*(char **)param_2" (* "*") (cast_expression "(char **)param_2" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "param_2"))) (, ",") (binary_expression "(int)uVar2 >> 0x1f" (cast_expression "(int)uVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar2")) (>> ">>") (number_literal "0x1f")) (, ",") (identifier "uVar2") (, ",") (number_literal "0") (, ",") (field_expression "param_1._0_4_" (identifier "param_1") (. ".") (field_identifier "_0_4_")) () ")"))) (; ";")) (} "}")))
(translation_unit (function_definition type: (primitive_type) (ERROR (identifier) (identifier)) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (pointer_expression argument: (identifier)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (identifier)) (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal))) consequence: (compound_statement (return_statement))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (identifier))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (identifier))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (field_expression argument: (identifier) field: (field_identifier)) (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) right: (identifier)) (field_expression argument: (identifier) field: (field_identifier))))) (return_statement)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))) (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)) (identifier) (number_literal) (field_expression argument: (identifier) field: (field_identifier))))))))

/* gold::File_read::MASKED(long long, unsigned int, void*) */

void gold::File_read::MASKED(longlong param_1,uint param_2,void *param_3)

{
  longlong lVar1;
  uint uVar2;
  int iVar3;
  gold *pgVar4;
  undefined4 *puVar5;
  undefined4 uVar6;
  int in_a3;
  char *pcVar7;
  int iVar8;
  
  if (*(int *)(param_2 + 0x70) == 0) {
    reopen_descriptor((File_read *)param_2);
    lVar1 = param_1;
    do {
      iVar8 = (int)((ulonglong)lVar1 >> 0x20);
      iVar3 = (*(code *)PTR_pread64_00436648)(*(undefined4 *)(param_2 + 0x18),(int)lVar1,iVar8);
      if (iVar3 < 0) {
        pgVar4 = (gold *)(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x5afc);
        pcVar7 = *(char **)param_2;
        puVar5 = (undefined4 *)(*(code *)PTR___errno_location_00436904)();
        uVar6 = (*(code *)PTR_strerror_004368e4)(*puVar5);
                    /* WARNING: Subroutine does not return */
        gold_fatal(pgVar4,pcVar7,uVar6);
      }
      lVar1 = CONCAT44(iVar8 - iVar3,(int)lVar1 + iVar3);
      if (iVar8 - iVar3 == 0) {
        return;
      }
      uVar2 = param_1._0_4_ - iVar8;
    } while (iVar3 != 0);
  }
  else {
    uVar2 = *(int *)(param_2 + 0x2c) - in_a3;
    if (param_1._0_4_ <= uVar2) {
                    /* WARNING: Could not recover jumptable at 0x000e7560. Too many branches */
                    /* WARNING: Treating indirect jump as call */
      (*(code *)PTR_memcpy_00436788)
                (param_1._4_4_,*(int *)(*(int *)(param_2 + 0x70) + 0xc) + in_a3,param_1._0_4_);
      return;
    }
  }
  pgVar4 = (gold *)(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x5ae4);
                    /* WARNING: Subroutine does not return */
  gold_fatal(pgVar4,*(char **)param_2,(int)uVar2 >> 0x1f,uVar2,0,param_1._0_4_);
}

