
/* WARNING: Type propagation algorithm not settling */
/* DWARF original prototype: void read_multiple(File_read * this, off_t base, Read_multiple * rm) */

void __thiscall gold::File_read::read_multiple(File_read *this,off_t base,Read_multiple *rm)

{
  _Base_ptr *pp_Var1;
  uint uVar2;
  long lVar3;
  bool bVar4;
  _Rb_tree_header *p_Var5;
  _Rb_tree_node_base *p_Var6;
  ulong start;
  void *__buf;
  ulong uVar7;
  ulong uVar8;
  long lVar9;
  long lVar10;
  pointer pRVar11;
  View *pVVar12;
  _Base_ptr p_Var13;
  pointer pRVar14;
  ulong uVar15;
  ulong uVar16;
  void *pvVar17;
  ulong uVar18;
  
  pRVar11 = (rm->
            super__Vector_base<gold::File_read::Read_multiple_entry,_std::allocator<gold::File_read::Read_multiple_entry>_>
            )._M_impl._M_start;
  uVar7 = ((long)(rm->
                 super__Vector_base<gold::File_read::Read_multiple_entry,_std::allocator<gold::File_read::Read_multiple_entry>_>
                 )._M_impl._M_finish - (long)pRVar11 >> 3) * -0x5555555555555555;
  if (uVar7 == 0) {
    return;
  }
  start = 0;
  p_Var5 = &(this->views_)._M_t._M_impl.super__Rb_tree_header;
  do {
    uVar15 = start + 1;
    pRVar14 = pRVar11 + start;
    lVar3 = pRVar14->file_offset;
    __buf = (void *)pRVar14->size;
    uVar18 = uVar15;
    if (uVar15 < uVar7) {
      lVar9 = pRVar11[start + 1].file_offset;
      if (lVar9 < lVar3 + (long)__buf) {
LAB_0034c6de:
                    /* WARNING: Subroutine does not return */
        do_gold_unreachable("../../gold/fileread.cc",0x2d5,"read_multiple");
      }
      lVar9 = lVar9 + pRVar11[start + 1].size;
      if (0x1fff < lVar9 - (lVar3 + (long)__buf)) goto LAB_0034c6c0;
      pRVar11 = pRVar11 + start + 2;
      uVar8 = uVar15;
      do {
        uVar16 = uVar8;
        lVar10 = lVar9;
        uVar8 = uVar16 + 1;
        uVar18 = uVar8;
        if ((uVar7 <= uVar8) || (uVar18 = start + 0x80, uVar8 == start + 0x80)) break;
        if (pRVar11->file_offset < lVar10) goto LAB_0034c6de;
        lVar9 = pRVar11->file_offset + pRVar11->size;
        pRVar11 = pRVar11 + 1;
        uVar18 = uVar8;
      } while (lVar9 - lVar10 < 0x2000);
      uVar8 = lVar3 + base;
      if (uVar16 == start) goto LAB_0034c6c0;
      pvVar17 = (void *)(lVar10 - lVar3);
      if ((this->size_ < (long)uVar8) || ((void *)(this->size_ - uVar8) < pvVar17)) {
                    /* WARNING: Subroutine does not return */
        do_gold_unreachable("../../gold/fileread.cc",0x150,"find_view");
      }
      pVVar12 = this->whole_file_view_;
      if (pVVar12 == (View *)0x0) {
        p_Var13 = (this->views_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent;
        lVar9 = (uVar8 & 0xffffffffffffe000) - 1;
        p_Var6 = &p_Var5->_M_header;
        if (p_Var13 != (_Rb_tree_node_base *)0x0) {
          do {
            while ((lVar9 < *(long *)(p_Var13 + 1) ||
                   ((lVar9 == *(long *)(p_Var13 + 1) && (*(int *)&p_Var13[1]._M_parent != 0))))) {
              pp_Var1 = &p_Var13->_M_left;
              p_Var6 = p_Var13;
              p_Var13 = *pp_Var1;
              if (*pp_Var1 == (_Base_ptr)0x0) goto LAB_0034c5f6;
            }
            p_Var13 = p_Var13->_M_right;
          } while (p_Var13 != (_Base_ptr)0x0);
LAB_0034c5f6:
          if ((_Rb_tree_header *)p_Var6 != p_Var5) {
            lVar9 = *(long *)(p_Var6 + 1);
            while (lVar9 <= (long)(uVar8 & 0xffffffffffffe000)) {
              pVVar12 = (View *)p_Var6[1]._M_left;
              lVar9 = pVVar12->start_;
              if ((lVar9 <= (long)uVar8) &&
                 (lVar10 + base <= (long)&((_Base_ptr)pVVar12->size_)->_M_color + lVar9)) {
                pVVar12->accessed_ = true;
                goto LAB_0034c524;
              }
              p_Var6 = (_Rb_tree_node_base *)std::_Rb_tree_increment(p_Var6);
              if (p_Var5 == (_Rb_tree_header *)p_Var6) break;
              lVar9 = *(long *)(p_Var6 + 1);
            }
          }
        }
        do_readv(this,base,rm,start,uVar18 - start);
        start = uVar18;
      }
      else {
        lVar9 = pVVar12->start_;
LAB_0034c524:
        p_Var13 = (_Base_ptr)pVVar12->data_;
        uVar2 = pVVar12->byteshift_;
        bVar4 = start < uVar18;
        start = uVar18;
        if (bVar4) {
          if (pvVar17 < __buf) {
LAB_0034c6f6:
                    /* WARNING: Subroutine does not return */
            do_gold_unreachable("../../gold/fileread.cc",0x2f1,"read_multiple");
          }
          lVar10 = 0;
          for (; memcpy(pRVar14->buffer,
                        (void *)(lVar10 + (uVar8 - lVar9) + (ulong)uVar2 + (long)p_Var13),
                        (size_t)__buf), uVar15 != uVar18; uVar15 = uVar15 + 1) {
            pRVar14 = (rm->
                      super__Vector_base<gold::File_read::Read_multiple_entry,_std::allocator<gold::File_read::Read_multiple_entry>_>
                      )._M_impl._M_start + uVar15;
            __buf = (void *)pRVar14->size;
            lVar10 = pRVar14->file_offset - lVar3;
            if (pvVar17 < (void *)((long)__buf + lVar10)) goto LAB_0034c6f6;
          }
        }
      }
    }
    else {
LAB_0034c6c0:
      read(this,(int)lVar3 + (int)base,__buf,(size_t)pRVar14->buffer);
      start = uVar18;
    }
    if (uVar7 <= start) {
      return;
    }
    pRVar11 = (rm->
              super__Vector_base<gold::File_read::Read_multiple_entry,_std::allocator<gold::File_read::Read_multiple_entry>_>
              )._M_impl._M_start;
  } while( true );
}



void FUN_0034c3e0(long param_1,long param_2,long *param_3)

{
  uint uVar1;
  long lVar2;
  bool bVar3;
  long lVar4;
  long lVar5;
  long lVar6;
  ulong uVar7;
  ulong __n;
  ulong uVar8;
  ulong uVar9;
  long lVar10;
  long *plVar11;
  long lVar12;
  long *plVar13;
  ulong uVar14;
  ulong uVar15;
  ulong uVar16;
  
  lVar12 = *param_3;
  uVar8 = (param_3[1] - lVar12 >> 3) * -0x5555555555555555;
  if (uVar8 == 0) {
    return;
  }
  uVar7 = 0;
  lVar4 = param_1 + 0x60;
  do {
    uVar14 = uVar7 + 1;
    lVar5 = uVar7 * 0x18;
    plVar13 = (long *)(lVar12 + lVar5);
    lVar2 = *plVar13;
    __n = plVar13[1];
    uVar16 = uVar14;
    if (uVar14 < uVar8) {
      plVar11 = (long *)(lVar12 + 0x18 + lVar5);
      lVar10 = *plVar11;
      if (lVar10 < (long)(lVar2 + __n)) {
LAB_0034c6de:
                    /* WARNING: Subroutine does not return */
        FUN_00352af0("../../gold/fileread.cc",0x2d5,"read_multiple");
      }
      lVar10 = lVar10 + plVar11[1];
      if (0x1fff < (long)(lVar10 - (lVar2 + __n))) goto LAB_0034c6c0;
      plVar11 = (long *)(lVar12 + 0x30 + lVar5);
      uVar9 = uVar14;
      do {
        uVar15 = uVar9;
        lVar12 = lVar10;
        uVar9 = uVar15 + 1;
        uVar16 = uVar9;
        if ((uVar8 <= uVar9) || (uVar16 = uVar7 + 0x80, uVar9 == uVar7 + 0x80)) break;
        if (*plVar11 < lVar12) goto LAB_0034c6de;
        lVar10 = *plVar11 + plVar11[1];
        plVar11 = plVar11 + 3;
        uVar16 = uVar9;
      } while (lVar10 - lVar12 < 0x2000);
      uVar9 = lVar2 + param_2;
      if (uVar15 == uVar7) goto LAB_0034c6c0;
      uVar15 = lVar12 - lVar2;
      if ((*(long *)(param_1 + 0x30) < (long)uVar9) || (*(long *)(param_1 + 0x30) - uVar9 < uVar15))
      {
                    /* WARNING: Subroutine does not return */
        FUN_00352af0("../../gold/fileread.cc",0x150,"find_view");
      }
      plVar11 = *(long **)(param_1 + 0xb0);
      if (plVar11 == (long *)0x0) {
        lVar10 = *(long *)(param_1 + 0x68);
        lVar5 = (uVar9 & 0xffffffffffffe000) - 1;
        lVar6 = lVar4;
        if (lVar10 != 0) {
          do {
            while ((lVar5 < *(long *)(lVar10 + 0x20) ||
                   ((lVar5 == *(long *)(lVar10 + 0x20) && (*(int *)(lVar10 + 0x28) != 0))))) {
              plVar11 = (long *)(lVar10 + 0x10);
              lVar6 = lVar10;
              lVar10 = *plVar11;
              if (*plVar11 == 0) goto LAB_0034c5f6;
            }
            lVar10 = *(long *)(lVar10 + 0x18);
          } while (lVar10 != 0);
LAB_0034c5f6:
          if (lVar6 != lVar4) {
            lVar5 = *(long *)(lVar6 + 0x20);
            while (lVar5 <= (long)(uVar9 & 0xffffffffffffe000)) {
              plVar11 = *(long **)(lVar6 + 0x30);
              lVar5 = *plVar11;
              if ((lVar5 <= (long)uVar9) && (lVar12 + param_2 <= plVar11[1] + lVar5)) {
                *(undefined1 *)(plVar11 + 5) = 1;
                goto LAB_0034c524;
              }
              lVar6 = thunk_FUN_0049f700(lVar6);
              if (lVar4 == lVar6) break;
              lVar5 = *(long *)(lVar6 + 0x20);
            }
          }
        }
        FUN_0034c220(param_1,param_2,param_3,uVar7,uVar16 - uVar7);
        uVar7 = uVar16;
      }
      else {
        lVar5 = *plVar11;
LAB_0034c524:
        lVar12 = plVar11[2];
        uVar1 = *(uint *)((long)plVar11 + 0x1c);
        bVar3 = uVar7 < uVar16;
        uVar7 = uVar16;
        if (bVar3) {
          if (uVar15 < __n) {
LAB_0034c6f6:
                    /* WARNING: Subroutine does not return */
            FUN_00352af0("../../gold/fileread.cc",0x2f1,"read_multiple");
          }
          lVar10 = 0;
          for (; memcpy((void *)plVar13[2],
                        (void *)(lVar10 + (uVar9 - lVar5) + (ulong)uVar1 + lVar12),__n),
              uVar14 != uVar16; uVar14 = uVar14 + 1) {
            plVar13 = (long *)(*param_3 + uVar14 * 0x18);
            __n = plVar13[1];
            lVar10 = *plVar13 - lVar2;
            if (uVar15 < __n + lVar10) goto LAB_0034c6f6;
          }
        }
      }
    }
    else {
LAB_0034c6c0:
      FUN_0034c0e0(param_1,lVar2 + param_2,__n,plVar13[2]);
      uVar7 = uVar16;
    }
    if (uVar8 <= uVar7) {
      return;
    }
    lVar12 = *param_3;
  } while( true );
}


MOV RAX,-0x5555555555555555
PUSH R15
PUSH R14
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x58
MOV R10,qword ptr [RDX]
MOV RBX,qword ptr [RDX + 0x8]
SUB RBX,R10
SAR RBX,0x3
IMUL RBX,RAX
TEST RBX,RBX
JZ 0x0034c6a1
MOV RAX,RDI
MOV qword ptr [RSP + 0x20],RSI
MOV R14,RDX
XOR ECX,ECX
ADD RAX,0x60
MOV qword ptr [RSP + 0x10],RDI
MOV qword ptr [RSP + 0x18],RAX
NOP
LEA RAX,[RCX + RCX*0x2]
LEA R12,[RCX + 0x1]
SHL RAX,0x3
MOV R13,R12
LEA R11,[R10 + RAX*0x1]
MOV RDX,qword ptr [R11]
MOV RDI,RDX
MOV qword ptr [RSP + 0x8],RDX
MOV RDX,qword ptr [R11 + 0x8]
ADD RDI,RDX
CMP R12,RBX
JNC 0x0034c6b0
LEA R9,[R10 + RAX*0x1 + 0x18]
MOV RSI,qword ptr [R9]
CMP RDI,RSI
JG 0x0034c6de
ADD RSI,qword ptr [R9 + 0x8]
MOV R9,RSI
SUB R9,RDI
CMP R9,0x1fff
JG 0x0034c6b0
LEA RDI,[R10 + RAX*0x1 + 0x30]
LEA RBP,[RCX + 0x80]
JMP 0x0034c4ca
CMP R15,RBP
JZ 0x0034c6d6
MOV RAX,qword ptr [RDI]
CMP RAX,RSI
JL 0x0034c6de
ADD RAX,qword ptr [RDI + 0x8]
ADD RDI,0x18
MOV R8,RAX
SUB R8,RSI
CMP R8,0x1fff
JG 0x0034c4d3
MOV RSI,RAX
MOV R13,R15
LEA R15,[R13 + 0x1]
CMP R15,RBX
JC 0x0034c498
MOV RBP,qword ptr [RSP + 0x8]
ADD RBP,qword ptr [RSP + 0x20]
CMP R13,RCX
JZ 0x0034c6c0
MOV RAX,qword ptr [RSP + 0x10]
MOV R13,RSI
SUB R13,qword ptr [RSP + 0x8]
MOV RAX,qword ptr [RAX + 0x30]
CMP RAX,RBP
JL 0x0034c70e
SUB RAX,RBP
CMP R13,RAX
JA 0x0034c70e
MOV RAX,qword ptr [RSP + 0x10]
MOV RDI,qword ptr [RAX + 0xb0]
TEST RDI,RDI
JZ 0x0034c5a8
MOV RSI,qword ptr [RDI]
MOV RAX,qword ptr [RDI + 0x10]
SUB RBP,RSI
MOV R9,RAX
MOV EAX,dword ptr [RDI + 0x1c]
ADD RBP,RAX
CMP R15,RCX
JBE 0x0034c591
CMP RDX,R13
JA 0x0034c6f6
MOV qword ptr [RSP + 0x28],RBX
XOR ESI,ESI
MOV RBX,R9
JMP 0x0034c578
MOV RDX,qword ptr [R14]
LEA RAX,[R12 + R12*0x2]
LEA R11,[RDX + RAX*0x8]
MOV RDX,qword ptr [R11 + 0x8]
MOV RSI,qword ptr [R11]
SUB RSI,qword ptr [RSP + 0x8]
LEA RAX,[RDX + RSI*0x1]
CMP R13,RAX
JC 0x0034c6f6
ADD R12,0x1
ADD RSI,RBP
MOV RDI,qword ptr [R11 + 0x10]
ADD RSI,RBX
CALL 0x00177aa0
CMP R12,R15
JNZ 0x0034c550
MOV RBX,qword ptr [RSP + 0x28]
CMP R15,RBX
JNC 0x0034c6a1
MOV R10,qword ptr [R14]
MOV RCX,R15
JMP 0x0034c430
MOV R8,RBP
MOV RDI,qword ptr [RAX + 0x68]
AND R8,-0x2000
LEA R10,[R8 + -0x1]
TEST RDI,RDI
JZ 0x0034c680
MOV RAX,qword ptr [RSP + 0x18]
JMP 0x0034c5e4
JNZ 0x0034c5db
MOV R9D,dword ptr [RDI + 0x28]
TEST R9D,R9D
JNZ 0x0034c5ea
MOV RDI,qword ptr [RDI + 0x18]
TEST RDI,RDI
JZ 0x0034c5f6
CMP R10,qword ptr [RDI + 0x20]
JGE 0x0034c5d0
MOV RAX,RDI
MOV RDI,qword ptr [RDI + 0x10]
TEST RDI,RDI
JNZ 0x0034c5e4
CMP RAX,qword ptr [RSP + 0x18]
JZ 0x0034c680
ADD RSI,qword ptr [RSP + 0x20]
MOV qword ptr [RSP + 0x28],RSI
CMP R8,qword ptr [RAX + 0x20]
JL 0x0034c680
MOV qword ptr [RSP + 0x38],RDX
MOV qword ptr [RSP + 0x40],R11
MOV qword ptr [RSP + 0x30],R13
MOV R13,R8
MOV qword ptr [RSP + 0x48],R12
MOV R12,RCX
MOV RDI,qword ptr [RAX + 0x30]
MOV RSI,qword ptr [RDI]
CMP RSI,RBP
JG 0x0034c668
MOV RDX,qword ptr [RDI + 0x8]
ADD RDX,RSI
CMP RDX,qword ptr [RSP + 0x28]
JL 0x0034c668
MOV RCX,R12
MOV R13,qword ptr [RSP + 0x30]
MOV RDX,qword ptr [RSP + 0x38]
MOV byte ptr [RDI + 0x28],0x1
MOV R11,qword ptr [RSP + 0x40]
MOV R12,qword ptr [RSP + 0x48]
JMP 0x0034c524
MOV RDI,RAX
CALL 0x0049f750
CMP qword ptr [RSP + 0x18],RAX
JZ 0x0034c67d
CMP R13,qword ptr [RAX + 0x20]
JGE 0x0034c62b
MOV RCX,R12
MOV R8,R15
MOV RSI,qword ptr [RSP + 0x20]
MOV RDI,qword ptr [RSP + 0x10]
MOV RDX,R14
SUB R8,RCX
CALL 0x0034c220
CMP R15,RBX
JC 0x0034c59a
ADD RSP,0x58
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV RBP,qword ptr [RSP + 0x8]
MOV R15,R12
ADD RBP,qword ptr [RSP + 0x20]
NOP dword ptr [RAX]
MOV RCX,qword ptr [R11 + 0x10]
MOV RDI,qword ptr [RSP + 0x10]
MOV RSI,RBP
CALL 0x0034c0e0
JMP 0x0034c591
MOV R15,RBP
JMP 0x0034c4d3
LEA RDX,[0x56d5e8]
MOV ESI,0x2d5
LEA RDI,[0x56d348]
CALL 0x00352af0
LEA RDX,[0x56d5e8]
MOV ESI,0x2f1
LEA RDI,[0x56d348]
CALL 0x00352af0
LEA RDX,[0x56d648]
MOV ESI,0x150
LEA RDI,[0x56d348]
CALL 0x00352af0
(translation_unit "void FUN_0034c3e0(long param_1,long param_2,long *param_3)\n\n{\n  uint uVar1;\n  long lVar2;\n  bool bVar3;\n  long lVar4;\n  long lVar5;\n  long lVar6;\n  ulong uVar7;\n  ulong __n;\n  ulong uVar8;\n  ulong uVar9;\n  long lVar10;\n  long *plVar11;\n  long lVar12;\n  long *plVar13;\n  ulong uVar14;\n  ulong uVar15;\n  ulong uVar16;\n  \n  lVar12 = *param_3;\n  uVar8 = (param_3[1] - lVar12 >> 3) * -0x5555555555555555;\n  if (uVar8 == 0) {\n    return;\n  }\n  uVar7 = 0;\n  lVar4 = param_1 + 0x60;\n  do {\n    uVar14 = uVar7 + 1;\n    lVar5 = uVar7 * 0x18;\n    plVar13 = (long *)(lVar12 + lVar5);\n    lVar2 = *plVar13;\n    __n = plVar13[1];\n    uVar16 = uVar14;\n    if (uVar14 < uVar8) {\n      plVar11 = (long *)(lVar12 + 0x18 + lVar5);\n      lVar10 = *plVar11;\n      if (lVar10 < (long)(lVar2 + __n)) {\nLAB_0034c6de:\n                    /* WARNING: Subroutine does not return */\n        FUN_00352af0("../../gold/fileread.cc",0x2d5,"read_multiple");\n      }\n      lVar10 = lVar10 + plVar11[1];\n      if (0x1fff < (long)(lVar10 - (lVar2 + __n))) goto LAB_0034c6c0;\n      plVar11 = (long *)(lVar12 + 0x30 + lVar5);\n      uVar9 = uVar14;\n      do {\n        uVar15 = uVar9;\n        lVar12 = lVar10;\n        uVar9 = uVar15 + 1;\n        uVar16 = uVar9;\n        if ((uVar8 <= uVar9) || (uVar16 = uVar7 + 0x80, uVar9 == uVar7 + 0x80)) break;\n        if (*plVar11 < lVar12) goto LAB_0034c6de;\n        lVar10 = *plVar11 + plVar11[1];\n        plVar11 = plVar11 + 3;\n        uVar16 = uVar9;\n      } while (lVar10 - lVar12 < 0x2000);\n      uVar9 = lVar2 + param_2;\n      if (uVar15 == uVar7) goto LAB_0034c6c0;\n      uVar15 = lVar12 - lVar2;\n      if ((*(long *)(param_1 + 0x30) < (long)uVar9) || (*(long *)(param_1 + 0x30) - uVar9 < uVar15))\n      {\n                    /* WARNING: Subroutine does not return */\n        FUN_00352af0("../../gold/fileread.cc",0x150,"find_view");\n      }\n      plVar11 = *(long **)(param_1 + 0xb0);\n      if (plVar11 == (long *)0x0) {\n        lVar10 = *(long *)(param_1 + 0x68);\n        lVar5 = (uVar9 & 0xffffffffffffe000) - 1;\n        lVar6 = lVar4;\n        if (lVar10 != 0) {\n          do {\n            while ((lVar5 < *(long *)(lVar10 + 0x20) ||\n                   ((lVar5 == *(long *)(lVar10 + 0x20) && (*(int *)(lVar10 + 0x28) != 0))))) {\n              plVar11 = (long *)(lVar10 + 0x10);\n              lVar6 = lVar10;\n              lVar10 = *plVar11;\n              if (*plVar11 == 0) goto LAB_0034c5f6;\n            }\n            lVar10 = *(long *)(lVar10 + 0x18);\n          } while (lVar10 != 0);\nLAB_0034c5f6:\n          if (lVar6 != lVar4) {\n            lVar5 = *(long *)(lVar6 + 0x20);\n            while (lVar5 <= (long)(uVar9 & 0xffffffffffffe000)) {\n              plVar11 = *(long **)(lVar6 + 0x30);\n              lVar5 = *plVar11;\n              if ((lVar5 <= (long)uVar9) && (lVar12 + param_2 <= plVar11[1] + lVar5)) {\n                *(undefined1 *)(plVar11 + 5) = 1;\n                goto LAB_0034c524;\n              }\n              lVar6 = thunk_FUN_0049f700(lVar6);\n              if (lVar4 == lVar6) break;\n              lVar5 = *(long *)(lVar6 + 0x20);\n            }\n          }\n        }\n        FUN_0034c220(param_1,param_2,param_3,uVar7,uVar16 - uVar7);\n        uVar7 = uVar16;\n      }\n      else {\n        lVar5 = *plVar11;\nLAB_0034c524:\n        lVar12 = plVar11[2];\n        uVar1 = *(uint *)((long)plVar11 + 0x1c);\n        bVar3 = uVar7 < uVar16;\n        uVar7 = uVar16;\n        if (bVar3) {\n          if (uVar15 < __n) {\nLAB_0034c6f6:\n                    /* WARNING: Subroutine does not return */\n            FUN_00352af0("../../gold/fileread.cc",0x2f1,"read_multiple");\n          }\n          lVar10 = 0;\n          for (; memcpy((void *)plVar13[2],\n                        (void *)(lVar10 + (uVar9 - lVar5) + (ulong)uVar1 + lVar12),__n),\n              uVar14 != uVar16; uVar14 = uVar14 + 1) {\n            plVar13 = (long *)(*param_3 + uVar14 * 0x18);\n            __n = plVar13[1];\n            lVar10 = *plVar13 - lVar2;\n            if (uVar15 < __n + lVar10) goto LAB_0034c6f6;\n          }\n        }\n      }\n    }\n    else {\nLAB_0034c6c0:\n      FUN_0034c0e0(param_1,lVar2 + param_2,__n,plVar13[2]);\n      uVar7 = uVar16;\n    }\n    if (uVar8 <= uVar7) {\n      return;\n    }\n    lVar12 = *param_3;\n  } while( true );\n}\n\n" (function_definition "void FUN_0034c3e0(long param_1,long param_2,long *param_3)\n\n{\n  uint uVar1;\n  long lVar2;\n  bool bVar3;\n  long lVar4;\n  long lVar5;\n  long lVar6;\n  ulong uVar7;\n  ulong __n;\n  ulong uVar8;\n  ulong uVar9;\n  long lVar10;\n  long *plVar11;\n  long lVar12;\n  long *plVar13;\n  ulong uVar14;\n  ulong uVar15;\n  ulong uVar16;\n  \n  lVar12 = *param_3;\n  uVar8 = (param_3[1] - lVar12 >> 3) * -0x5555555555555555;\n  if (uVar8 == 0) {\n    return;\n  }\n  uVar7 = 0;\n  lVar4 = param_1 + 0x60;\n  do {\n    uVar14 = uVar7 + 1;\n    lVar5 = uVar7 * 0x18;\n    plVar13 = (long *)(lVar12 + lVar5);\n    lVar2 = *plVar13;\n    __n = plVar13[1];\n    uVar16 = uVar14;\n    if (uVar14 < uVar8) {\n      plVar11 = (long *)(lVar12 + 0x18 + lVar5);\n      lVar10 = *plVar11;\n      if (lVar10 < (long)(lVar2 + __n)) {\nLAB_0034c6de:\n                    /* WARNING: Subroutine does not return */\n        FUN_00352af0("../../gold/fileread.cc",0x2d5,"read_multiple");\n      }\n      lVar10 = lVar10 + plVar11[1];\n      if (0x1fff < (long)(lVar10 - (lVar2 + __n))) goto LAB_0034c6c0;\n      plVar11 = (long *)(lVar12 + 0x30 + lVar5);\n      uVar9 = uVar14;\n      do {\n        uVar15 = uVar9;\n        lVar12 = lVar10;\n        uVar9 = uVar15 + 1;\n        uVar16 = uVar9;\n        if ((uVar8 <= uVar9) || (uVar16 = uVar7 + 0x80, uVar9 == uVar7 + 0x80)) break;\n        if (*plVar11 < lVar12) goto LAB_0034c6de;\n        lVar10 = *plVar11 + plVar11[1];\n        plVar11 = plVar11 + 3;\n        uVar16 = uVar9;\n      } while (lVar10 - lVar12 < 0x2000);\n      uVar9 = lVar2 + param_2;\n      if (uVar15 == uVar7) goto LAB_0034c6c0;\n      uVar15 = lVar12 - lVar2;\n      if ((*(long *)(param_1 + 0x30) < (long)uVar9) || (*(long *)(param_1 + 0x30) - uVar9 < uVar15))\n      {\n                    /* WARNING: Subroutine does not return */\n        FUN_00352af0("../../gold/fileread.cc",0x150,"find_view");\n      }\n      plVar11 = *(long **)(param_1 + 0xb0);\n      if (plVar11 == (long *)0x0) {\n        lVar10 = *(long *)(param_1 + 0x68);\n        lVar5 = (uVar9 & 0xffffffffffffe000) - 1;\n        lVar6 = lVar4;\n        if (lVar10 != 0) {\n          do {\n            while ((lVar5 < *(long *)(lVar10 + 0x20) ||\n                   ((lVar5 == *(long *)(lVar10 + 0x20) && (*(int *)(lVar10 + 0x28) != 0))))) {\n              plVar11 = (long *)(lVar10 + 0x10);\n              lVar6 = lVar10;\n              lVar10 = *plVar11;\n              if (*plVar11 == 0) goto LAB_0034c5f6;\n            }\n            lVar10 = *(long *)(lVar10 + 0x18);\n          } while (lVar10 != 0);\nLAB_0034c5f6:\n          if (lVar6 != lVar4) {\n            lVar5 = *(long *)(lVar6 + 0x20);\n            while (lVar5 <= (long)(uVar9 & 0xffffffffffffe000)) {\n              plVar11 = *(long **)(lVar6 + 0x30);\n              lVar5 = *plVar11;\n              if ((lVar5 <= (long)uVar9) && (lVar12 + param_2 <= plVar11[1] + lVar5)) {\n                *(undefined1 *)(plVar11 + 5) = 1;\n                goto LAB_0034c524;\n              }\n              lVar6 = thunk_FUN_0049f700(lVar6);\n              if (lVar4 == lVar6) break;\n              lVar5 = *(long *)(lVar6 + 0x20);\n            }\n          }\n        }\n        FUN_0034c220(param_1,param_2,param_3,uVar7,uVar16 - uVar7);\n        uVar7 = uVar16;\n      }\n      else {\n        lVar5 = *plVar11;\nLAB_0034c524:\n        lVar12 = plVar11[2];\n        uVar1 = *(uint *)((long)plVar11 + 0x1c);\n        bVar3 = uVar7 < uVar16;\n        uVar7 = uVar16;\n        if (bVar3) {\n          if (uVar15 < __n) {\nLAB_0034c6f6:\n                    /* WARNING: Subroutine does not return */\n            FUN_00352af0("../../gold/fileread.cc",0x2f1,"read_multiple");\n          }\n          lVar10 = 0;\n          for (; memcpy((void *)plVar13[2],\n                        (void *)(lVar10 + (uVar9 - lVar5) + (ulong)uVar1 + lVar12),__n),\n              uVar14 != uVar16; uVar14 = uVar14 + 1) {\n            plVar13 = (long *)(*param_3 + uVar14 * 0x18);\n            __n = plVar13[1];\n            lVar10 = *plVar13 - lVar2;\n            if (uVar15 < __n + lVar10) goto LAB_0034c6f6;\n          }\n        }\n      }\n    }\n    else {\nLAB_0034c6c0:\n      FUN_0034c0e0(param_1,lVar2 + param_2,__n,plVar13[2]);\n      uVar7 = uVar16;\n    }\n    if (uVar8 <= uVar7) {\n      return;\n    }\n    lVar12 = *param_3;\n  } while( true );\n}" primitive_type (function_declarator "FUN_0034c3e0(long param_1,long param_2,long *param_3)" identifier (parameter_list "(long param_1,long param_2,long *param_3)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long *param_3" (sized_type_specifier "long" long) (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  uint uVar1;\n  long lVar2;\n  bool bVar3;\n  long lVar4;\n  long lVar5;\n  long lVar6;\n  ulong uVar7;\n  ulong __n;\n  ulong uVar8;\n  ulong uVar9;\n  long lVar10;\n  long *plVar11;\n  long lVar12;\n  long *plVar13;\n  ulong uVar14;\n  ulong uVar15;\n  ulong uVar16;\n  \n  lVar12 = *param_3;\n  uVar8 = (param_3[1] - lVar12 >> 3) * -0x5555555555555555;\n  if (uVar8 == 0) {\n    return;\n  }\n  uVar7 = 0;\n  lVar4 = param_1 + 0x60;\n  do {\n    uVar14 = uVar7 + 1;\n    lVar5 = uVar7 * 0x18;\n    plVar13 = (long *)(lVar12 + lVar5);\n    lVar2 = *plVar13;\n    __n = plVar13[1];\n    uVar16 = uVar14;\n    if (uVar14 < uVar8) {\n      plVar11 = (long *)(lVar12 + 0x18 + lVar5);\n      lVar10 = *plVar11;\n      if (lVar10 < (long)(lVar2 + __n)) {\nLAB_0034c6de:\n                    /* WARNING: Subroutine does not return */\n        FUN_00352af0("../../gold/fileread.cc",0x2d5,"read_multiple");\n      }\n      lVar10 = lVar10 + plVar11[1];\n      if (0x1fff < (long)(lVar10 - (lVar2 + __n))) goto LAB_0034c6c0;\n      plVar11 = (long *)(lVar12 + 0x30 + lVar5);\n      uVar9 = uVar14;\n      do {\n        uVar15 = uVar9;\n        lVar12 = lVar10;\n        uVar9 = uVar15 + 1;\n        uVar16 = uVar9;\n        if ((uVar8 <= uVar9) || (uVar16 = uVar7 + 0x80, uVar9 == uVar7 + 0x80)) break;\n        if (*plVar11 < lVar12) goto LAB_0034c6de;\n        lVar10 = *plVar11 + plVar11[1];\n        plVar11 = plVar11 + 3;\n        uVar16 = uVar9;\n      } while (lVar10 - lVar12 < 0x2000);\n      uVar9 = lVar2 + param_2;\n      if (uVar15 == uVar7) goto LAB_0034c6c0;\n      uVar15 = lVar12 - lVar2;\n      if ((*(long *)(param_1 + 0x30) < (long)uVar9) || (*(long *)(param_1 + 0x30) - uVar9 < uVar15))\n      {\n                    /* WARNING: Subroutine does not return */\n        FUN_00352af0("../../gold/fileread.cc",0x150,"find_view");\n      }\n      plVar11 = *(long **)(param_1 + 0xb0);\n      if (plVar11 == (long *)0x0) {\n        lVar10 = *(long *)(param_1 + 0x68);\n        lVar5 = (uVar9 & 0xffffffffffffe000) - 1;\n        lVar6 = lVar4;\n        if (lVar10 != 0) {\n          do {\n            while ((lVar5 < *(long *)(lVar10 + 0x20) ||\n                   ((lVar5 == *(long *)(lVar10 + 0x20) && (*(int *)(lVar10 + 0x28) != 0))))) {\n              plVar11 = (long *)(lVar10 + 0x10);\n              lVar6 = lVar10;\n              lVar10 = *plVar11;\n              if (*plVar11 == 0) goto LAB_0034c5f6;\n            }\n            lVar10 = *(long *)(lVar10 + 0x18);\n          } while (lVar10 != 0);\nLAB_0034c5f6:\n          if (lVar6 != lVar4) {\n            lVar5 = *(long *)(lVar6 + 0x20);\n            while (lVar5 <= (long)(uVar9 & 0xffffffffffffe000)) {\n              plVar11 = *(long **)(lVar6 + 0x30);\n              lVar5 = *plVar11;\n              if ((lVar5 <= (long)uVar9) && (lVar12 + param_2 <= plVar11[1] + lVar5)) {\n                *(undefined1 *)(plVar11 + 5) = 1;\n                goto LAB_0034c524;\n              }\n              lVar6 = thunk_FUN_0049f700(lVar6);\n              if (lVar4 == lVar6) break;\n              lVar5 = *(long *)(lVar6 + 0x20);\n            }\n          }\n        }\n        FUN_0034c220(param_1,param_2,param_3,uVar7,uVar16 - uVar7);\n        uVar7 = uVar16;\n      }\n      else {\n        lVar5 = *plVar11;\nLAB_0034c524:\n        lVar12 = plVar11[2];\n        uVar1 = *(uint *)((long)plVar11 + 0x1c);\n        bVar3 = uVar7 < uVar16;\n        uVar7 = uVar16;\n        if (bVar3) {\n          if (uVar15 < __n) {\nLAB_0034c6f6:\n                    /* WARNING: Subroutine does not return */\n            FUN_00352af0("../../gold/fileread.cc",0x2f1,"read_multiple");\n          }\n          lVar10 = 0;\n          for (; memcpy((void *)plVar13[2],\n                        (void *)(lVar10 + (uVar9 - lVar5) + (ulong)uVar1 + lVar12),__n),\n              uVar14 != uVar16; uVar14 = uVar14 + 1) {\n            plVar13 = (long *)(*param_3 + uVar14 * 0x18);\n            __n = plVar13[1];\n            lVar10 = *plVar13 - lVar2;\n            if (uVar15 < __n + lVar10) goto LAB_0034c6f6;\n          }\n        }\n      }\n    }\n    else {\nLAB_0034c6c0:\n      FUN_0034c0e0(param_1,lVar2 + param_2,__n,plVar13[2]);\n      uVar7 = uVar16;\n    }\n    if (uVar8 <= uVar7) {\n      return;\n    }\n    lVar12 = *param_3;\n  } while( true );\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "bool bVar3;" primitive_type identifier ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar7;" type_identifier identifier ;) (declaration "ulong __n;" type_identifier identifier ;) (declaration "ulong uVar8;" type_identifier identifier ;) (declaration "ulong uVar9;" type_identifier identifier ;) (declaration "long lVar10;" (sized_type_specifier "long" long) identifier ;) (declaration "long *plVar11;" (sized_type_specifier "long" long) (pointer_declarator "*plVar11" * identifier) ;) (declaration "long lVar12;" (sized_type_specifier "long" long) identifier ;) (declaration "long *plVar13;" (sized_type_specifier "long" long) (pointer_declarator "*plVar13" * identifier) ;) (declaration "ulong uVar14;" type_identifier identifier ;) (declaration "ulong uVar15;" type_identifier identifier ;) (declaration "ulong uVar16;" type_identifier identifier ;) (expression_statement "lVar12 = *param_3;" (assignment_expression "lVar12 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;) (expression_statement "uVar8 = (param_3[1] - lVar12 >> 3) * -0x5555555555555555;" (assignment_expression "uVar8 = (param_3[1] - lVar12 >> 3) * -0x5555555555555555" identifier = (binary_expression "(param_3[1] - lVar12 >> 3) * -0x5555555555555555" (parenthesized_expression "(param_3[1] - lVar12 >> 3)" ( (binary_expression "param_3[1] - lVar12 >> 3" (binary_expression "param_3[1] - lVar12" (subscript_expression "param_3[1]" identifier [ number_literal ]) - identifier) >> number_literal) )) * number_literal)) ;) (if_statement "if (uVar8 == 0) {\n    return;\n  }" if (parenthesized_expression "(uVar8 == 0)" ( (binary_expression "uVar8 == 0" identifier == number_literal) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;) (expression_statement "lVar4 = param_1 + 0x60;" (assignment_expression "lVar4 = param_1 + 0x60" identifier = (binary_expression "param_1 + 0x60" identifier + number_literal)) ;) (do_statement "do {\n    uVar14 = uVar7 + 1;\n    lVar5 = uVar7 * 0x18;\n    plVar13 = (long *)(lVar12 + lVar5);\n    lVar2 = *plVar13;\n    __n = plVar13[1];\n    uVar16 = uVar14;\n    if (uVar14 < uVar8) {\n      plVar11 = (long *)(lVar12 + 0x18 + lVar5);\n      lVar10 = *plVar11;\n      if (lVar10 < (long)(lVar2 + __n)) {\nLAB_0034c6de:\n                    /* WARNING: Subroutine does not return */\n        FUN_00352af0("../../gold/fileread.cc",0x2d5,"read_multiple");\n      }\n      lVar10 = lVar10 + plVar11[1];\n      if (0x1fff < (long)(lVar10 - (lVar2 + __n))) goto LAB_0034c6c0;\n      plVar11 = (long *)(lVar12 + 0x30 + lVar5);\n      uVar9 = uVar14;\n      do {\n        uVar15 = uVar9;\n        lVar12 = lVar10;\n        uVar9 = uVar15 + 1;\n        uVar16 = uVar9;\n        if ((uVar8 <= uVar9) || (uVar16 = uVar7 + 0x80, uVar9 == uVar7 + 0x80)) break;\n        if (*plVar11 < lVar12) goto LAB_0034c6de;\n        lVar10 = *plVar11 + plVar11[1];\n        plVar11 = plVar11 + 3;\n        uVar16 = uVar9;\n      } while (lVar10 - lVar12 < 0x2000);\n      uVar9 = lVar2 + param_2;\n      if (uVar15 == uVar7) goto LAB_0034c6c0;\n      uVar15 = lVar12 - lVar2;\n      if ((*(long *)(param_1 + 0x30) < (long)uVar9) || (*(long *)(param_1 + 0x30) - uVar9 < uVar15))\n      {\n                    /* WARNING: Subroutine does not return */\n        FUN_00352af0("../../gold/fileread.cc",0x150,"find_view");\n      }\n      plVar11 = *(long **)(param_1 + 0xb0);\n      if (plVar11 == (long *)0x0) {\n        lVar10 = *(long *)(param_1 + 0x68);\n        lVar5 = (uVar9 & 0xffffffffffffe000) - 1;\n        lVar6 = lVar4;\n        if (lVar10 != 0) {\n          do {\n            while ((lVar5 < *(long *)(lVar10 + 0x20) ||\n                   ((lVar5 == *(long *)(lVar10 + 0x20) && (*(int *)(lVar10 + 0x28) != 0))))) {\n              plVar11 = (long *)(lVar10 + 0x10);\n              lVar6 = lVar10;\n              lVar10 = *plVar11;\n              if (*plVar11 == 0) goto LAB_0034c5f6;\n            }\n            lVar10 = *(long *)(lVar10 + 0x18);\n          } while (lVar10 != 0);\nLAB_0034c5f6:\n          if (lVar6 != lVar4) {\n            lVar5 = *(long *)(lVar6 + 0x20);\n            while (lVar5 <= (long)(uVar9 & 0xffffffffffffe000)) {\n              plVar11 = *(long **)(lVar6 + 0x30);\n              lVar5 = *plVar11;\n              if ((lVar5 <= (long)uVar9) && (lVar12 + param_2 <= plVar11[1] + lVar5)) {\n                *(undefined1 *)(plVar11 + 5) = 1;\n                goto LAB_0034c524;\n              }\n              lVar6 = thunk_FUN_0049f700(lVar6);\n              if (lVar4 == lVar6) break;\n              lVar5 = *(long *)(lVar6 + 0x20);\n            }\n          }\n        }\n        FUN_0034c220(param_1,param_2,param_3,uVar7,uVar16 - uVar7);\n        uVar7 = uVar16;\n      }\n      else {\n        lVar5 = *plVar11;\nLAB_0034c524:\n        lVar12 = plVar11[2];\n        uVar1 = *(uint *)((long)plVar11 + 0x1c);\n        bVar3 = uVar7 < uVar16;\n        uVar7 = uVar16;\n        if (bVar3) {\n          if (uVar15 < __n) {\nLAB_0034c6f6:\n                    /* WARNING: Subroutine does not return */\n            FUN_00352af0("../../gold/fileread.cc",0x2f1,"read_multiple");\n          }\n          lVar10 = 0;\n          for (; memcpy((void *)plVar13[2],\n                        (void *)(lVar10 + (uVar9 - lVar5) + (ulong)uVar1 + lVar12),__n),\n              uVar14 != uVar16; uVar14 = uVar14 + 1) {\n            plVar13 = (long *)(*param_3 + uVar14 * 0x18);\n            __n = plVar13[1];\n            lVar10 = *plVar13 - lVar2;\n            if (uVar15 < __n + lVar10) goto LAB_0034c6f6;\n          }\n        }\n      }\n    }\n    else {\nLAB_0034c6c0:\n      FUN_0034c0e0(param_1,lVar2 + param_2,__n,plVar13[2]);\n      uVar7 = uVar16;\n    }\n    if (uVar8 <= uVar7) {\n      return;\n    }\n    lVar12 = *param_3;\n  } while( true );" do (compound_statement "{\n    uVar14 = uVar7 + 1;\n    lVar5 = uVar7 * 0x18;\n    plVar13 = (long *)(lVar12 + lVar5);\n    lVar2 = *plVar13;\n    __n = plVar13[1];\n    uVar16 = uVar14;\n    if (uVar14 < uVar8) {\n      plVar11 = (long *)(lVar12 + 0x18 + lVar5);\n      lVar10 = *plVar11;\n      if (lVar10 < (long)(lVar2 + __n)) {\nLAB_0034c6de:\n                    /* WARNING: Subroutine does not return */\n        FUN_00352af0("../../gold/fileread.cc",0x2d5,"read_multiple");\n      }\n      lVar10 = lVar10 + plVar11[1];\n      if (0x1fff < (long)(lVar10 - (lVar2 + __n))) goto LAB_0034c6c0;\n      plVar11 = (long *)(lVar12 + 0x30 + lVar5);\n      uVar9 = uVar14;\n      do {\n        uVar15 = uVar9;\n        lVar12 = lVar10;\n        uVar9 = uVar15 + 1;\n        uVar16 = uVar9;\n        if ((uVar8 <= uVar9) || (uVar16 = uVar7 + 0x80, uVar9 == uVar7 + 0x80)) break;\n        if (*plVar11 < lVar12) goto LAB_0034c6de;\n        lVar10 = *plVar11 + plVar11[1];\n        plVar11 = plVar11 + 3;\n        uVar16 = uVar9;\n      } while (lVar10 - lVar12 < 0x2000);\n      uVar9 = lVar2 + param_2;\n      if (uVar15 == uVar7) goto LAB_0034c6c0;\n      uVar15 = lVar12 - lVar2;\n      if ((*(long *)(param_1 + 0x30) < (long)uVar9) || (*(long *)(param_1 + 0x30) - uVar9 < uVar15))\n      {\n                    /* WARNING: Subroutine does not return */\n        FUN_00352af0("../../gold/fileread.cc",0x150,"find_view");\n      }\n      plVar11 = *(long **)(param_1 + 0xb0);\n      if (plVar11 == (long *)0x0) {\n        lVar10 = *(long *)(param_1 + 0x68);\n        lVar5 = (uVar9 & 0xffffffffffffe000) - 1;\n        lVar6 = lVar4;\n        if (lVar10 != 0) {\n          do {\n            while ((lVar5 < *(long *)(lVar10 + 0x20) ||\n                   ((lVar5 == *(long *)(lVar10 + 0x20) && (*(int *)(lVar10 + 0x28) != 0))))) {\n              plVar11 = (long *)(lVar10 + 0x10);\n              lVar6 = lVar10;\n              lVar10 = *plVar11;\n              if (*plVar11 == 0) goto LAB_0034c5f6;\n            }\n            lVar10 = *(long *)(lVar10 + 0x18);\n          } while (lVar10 != 0);\nLAB_0034c5f6:\n          if (lVar6 != lVar4) {\n            lVar5 = *(long *)(lVar6 + 0x20);\n            while (lVar5 <= (long)(uVar9 & 0xffffffffffffe000)) {\n              plVar11 = *(long **)(lVar6 + 0x30);\n              lVar5 = *plVar11;\n              if ((lVar5 <= (long)uVar9) && (lVar12 + param_2 <= plVar11[1] + lVar5)) {\n                *(undefined1 *)(plVar11 + 5) = 1;\n                goto LAB_0034c524;\n              }\n              lVar6 = thunk_FUN_0049f700(lVar6);\n              if (lVar4 == lVar6) break;\n              lVar5 = *(long *)(lVar6 + 0x20);\n            }\n          }\n        }\n        FUN_0034c220(param_1,param_2,param_3,uVar7,uVar16 - uVar7);\n        uVar7 = uVar16;\n      }\n      else {\n        lVar5 = *plVar11;\nLAB_0034c524:\n        lVar12 = plVar11[2];\n        uVar1 = *(uint *)((long)plVar11 + 0x1c);\n        bVar3 = uVar7 < uVar16;\n        uVar7 = uVar16;\n        if (bVar3) {\n          if (uVar15 < __n) {\nLAB_0034c6f6:\n                    /* WARNING: Subroutine does not return */\n            FUN_00352af0("../../gold/fileread.cc",0x2f1,"read_multiple");\n          }\n          lVar10 = 0;\n          for (; memcpy((void *)plVar13[2],\n                        (void *)(lVar10 + (uVar9 - lVar5) + (ulong)uVar1 + lVar12),__n),\n              uVar14 != uVar16; uVar14 = uVar14 + 1) {\n            plVar13 = (long *)(*param_3 + uVar14 * 0x18);\n            __n = plVar13[1];\n            lVar10 = *plVar13 - lVar2;\n            if (uVar15 < __n + lVar10) goto LAB_0034c6f6;\n          }\n        }\n      }\n    }\n    else {\nLAB_0034c6c0:\n      FUN_0034c0e0(param_1,lVar2 + param_2,__n,plVar13[2]);\n      uVar7 = uVar16;\n    }\n    if (uVar8 <= uVar7) {\n      return;\n    }\n    lVar12 = *param_3;\n  }" { (expression_statement "uVar14 = uVar7 + 1;" (assignment_expression "uVar14 = uVar7 + 1" identifier = (binary_expression "uVar7 + 1" identifier + number_literal)) ;) (expression_statement "lVar5 = uVar7 * 0x18;" (assignment_expression "lVar5 = uVar7 * 0x18" identifier = (binary_expression "uVar7 * 0x18" identifier * number_literal)) ;) (expression_statement "plVar13 = (long *)(lVar12 + lVar5);" (assignment_expression "plVar13 = (long *)(lVar12 + lVar5)" identifier = (cast_expression "(long *)(lVar12 + lVar5)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar12 + lVar5)" ( (binary_expression "lVar12 + lVar5" identifier + identifier) )))) ;) (expression_statement "lVar2 = *plVar13;" (assignment_expression "lVar2 = *plVar13" identifier = (pointer_expression "*plVar13" * identifier)) ;) (expression_statement "__n = plVar13[1];" (assignment_expression "__n = plVar13[1]" identifier = (subscript_expression "plVar13[1]" identifier [ number_literal ])) ;) (expression_statement "uVar16 = uVar14;" (assignment_expression "uVar16 = uVar14" identifier = identifier) ;) (if_statement "if (uVar14 < uVar8) {\n      plVar11 = (long *)(lVar12 + 0x18 + lVar5);\n      lVar10 = *plVar11;\n      if (lVar10 < (long)(lVar2 + __n)) {\nLAB_0034c6de:\n                    /* WARNING: Subroutine does not return */\n        FUN_00352af0("../../gold/fileread.cc",0x2d5,"read_multiple");\n      }\n      lVar10 = lVar10 + plVar11[1];\n      if (0x1fff < (long)(lVar10 - (lVar2 + __n))) goto LAB_0034c6c0;\n      plVar11 = (long *)(lVar12 + 0x30 + lVar5);\n      uVar9 = uVar14;\n      do {\n        uVar15 = uVar9;\n        lVar12 = lVar10;\n        uVar9 = uVar15 + 1;\n        uVar16 = uVar9;\n        if ((uVar8 <= uVar9) || (uVar16 = uVar7 + 0x80, uVar9 == uVar7 + 0x80)) break;\n        if (*plVar11 < lVar12) goto LAB_0034c6de;\n        lVar10 = *plVar11 + plVar11[1];\n        plVar11 = plVar11 + 3;\n        uVar16 = uVar9;\n      } while (lVar10 - lVar12 < 0x2000);\n      uVar9 = lVar2 + param_2;\n      if (uVar15 == uVar7) goto LAB_0034c6c0;\n      uVar15 = lVar12 - lVar2;\n      if ((*(long *)(param_1 + 0x30) < (long)uVar9) || (*(long *)(param_1 + 0x30) - uVar9 < uVar15))\n      {\n                    /* WARNING: Subroutine does not return */\n        FUN_00352af0("../../gold/fileread.cc",0x150,"find_view");\n      }\n      plVar11 = *(long **)(param_1 + 0xb0);\n      if (plVar11 == (long *)0x0) {\n        lVar10 = *(long *)(param_1 + 0x68);\n        lVar5 = (uVar9 & 0xffffffffffffe000) - 1;\n        lVar6 = lVar4;\n        if (lVar10 != 0) {\n          do {\n            while ((lVar5 < *(long *)(lVar10 + 0x20) ||\n                   ((lVar5 == *(long *)(lVar10 + 0x20) && (*(int *)(lVar10 + 0x28) != 0))))) {\n              plVar11 = (long *)(lVar10 + 0x10);\n              lVar6 = lVar10;\n              lVar10 = *plVar11;\n              if (*plVar11 == 0) goto LAB_0034c5f6;\n            }\n            lVar10 = *(long *)(lVar10 + 0x18);\n          } while (lVar10 != 0);\nLAB_0034c5f6:\n          if (lVar6 != lVar4) {\n            lVar5 = *(long *)(lVar6 + 0x20);\n            while (lVar5 <= (long)(uVar9 & 0xffffffffffffe000)) {\n              plVar11 = *(long **)(lVar6 + 0x30);\n              lVar5 = *plVar11;\n              if ((lVar5 <= (long)uVar9) && (lVar12 + param_2 <= plVar11[1] + lVar5)) {\n                *(undefined1 *)(plVar11 + 5) = 1;\n                goto LAB_0034c524;\n              }\n              lVar6 = thunk_FUN_0049f700(lVar6);\n              if (lVar4 == lVar6) break;\n              lVar5 = *(long *)(lVar6 + 0x20);\n            }\n          }\n        }\n        FUN_0034c220(param_1,param_2,param_3,uVar7,uVar16 - uVar7);\n        uVar7 = uVar16;\n      }\n      else {\n        lVar5 = *plVar11;\nLAB_0034c524:\n        lVar12 = plVar11[2];\n        uVar1 = *(uint *)((long)plVar11 + 0x1c);\n        bVar3 = uVar7 < uVar16;\n        uVar7 = uVar16;\n        if (bVar3) {\n          if (uVar15 < __n) {\nLAB_0034c6f6:\n                    /* WARNING: Subroutine does not return */\n            FUN_00352af0("../../gold/fileread.cc",0x2f1,"read_multiple");\n          }\n          lVar10 = 0;\n          for (; memcpy((void *)plVar13[2],\n                        (void *)(lVar10 + (uVar9 - lVar5) + (ulong)uVar1 + lVar12),__n),\n              uVar14 != uVar16; uVar14 = uVar14 + 1) {\n            plVar13 = (long *)(*param_3 + uVar14 * 0x18);\n            __n = plVar13[1];\n            lVar10 = *plVar13 - lVar2;\n            if (uVar15 < __n + lVar10) goto LAB_0034c6f6;\n          }\n        }\n      }\n    }\n    else {\nLAB_0034c6c0:\n      FUN_0034c0e0(param_1,lVar2 + param_2,__n,plVar13[2]);\n      uVar7 = uVar16;\n    }" if (parenthesized_expression "(uVar14 < uVar8)" ( (binary_expression "uVar14 < uVar8" identifier < identifier) )) (compound_statement "{\n      plVar11 = (long *)(lVar12 + 0x18 + lVar5);\n      lVar10 = *plVar11;\n      if (lVar10 < (long)(lVar2 + __n)) {\nLAB_0034c6de:\n                    /* WARNING: Subroutine does not return */\n        FUN_00352af0("../../gold/fileread.cc",0x2d5,"read_multiple");\n      }\n      lVar10 = lVar10 + plVar11[1];\n      if (0x1fff < (long)(lVar10 - (lVar2 + __n))) goto LAB_0034c6c0;\n      plVar11 = (long *)(lVar12 + 0x30 + lVar5);\n      uVar9 = uVar14;\n      do {\n        uVar15 = uVar9;\n        lVar12 = lVar10;\n        uVar9 = uVar15 + 1;\n        uVar16 = uVar9;\n        if ((uVar8 <= uVar9) || (uVar16 = uVar7 + 0x80, uVar9 == uVar7 + 0x80)) break;\n        if (*plVar11 < lVar12) goto LAB_0034c6de;\n        lVar10 = *plVar11 + plVar11[1];\n        plVar11 = plVar11 + 3;\n        uVar16 = uVar9;\n      } while (lVar10 - lVar12 < 0x2000);\n      uVar9 = lVar2 + param_2;\n      if (uVar15 == uVar7) goto LAB_0034c6c0;\n      uVar15 = lVar12 - lVar2;\n      if ((*(long *)(param_1 + 0x30) < (long)uVar9) || (*(long *)(param_1 + 0x30) - uVar9 < uVar15))\n      {\n                    /* WARNING: Subroutine does not return */\n        FUN_00352af0("../../gold/fileread.cc",0x150,"find_view");\n      }\n      plVar11 = *(long **)(param_1 + 0xb0);\n      if (plVar11 == (long *)0x0) {\n        lVar10 = *(long *)(param_1 + 0x68);\n        lVar5 = (uVar9 & 0xffffffffffffe000) - 1;\n        lVar6 = lVar4;\n        if (lVar10 != 0) {\n          do {\n            while ((lVar5 < *(long *)(lVar10 + 0x20) ||\n                   ((lVar5 == *(long *)(lVar10 + 0x20) && (*(int *)(lVar10 + 0x28) != 0))))) {\n              plVar11 = (long *)(lVar10 + 0x10);\n              lVar6 = lVar10;\n              lVar10 = *plVar11;\n              if (*plVar11 == 0) goto LAB_0034c5f6;\n            }\n            lVar10 = *(long *)(lVar10 + 0x18);\n          } while (lVar10 != 0);\nLAB_0034c5f6:\n          if (lVar6 != lVar4) {\n            lVar5 = *(long *)(lVar6 + 0x20);\n            while (lVar5 <= (long)(uVar9 & 0xffffffffffffe000)) {\n              plVar11 = *(long **)(lVar6 + 0x30);\n              lVar5 = *plVar11;\n              if ((lVar5 <= (long)uVar9) && (lVar12 + param_2 <= plVar11[1] + lVar5)) {\n                *(undefined1 *)(plVar11 + 5) = 1;\n                goto LAB_0034c524;\n              }\n              lVar6 = thunk_FUN_0049f700(lVar6);\n              if (lVar4 == lVar6) break;\n              lVar5 = *(long *)(lVar6 + 0x20);\n            }\n          }\n        }\n        FUN_0034c220(param_1,param_2,param_3,uVar7,uVar16 - uVar7);\n        uVar7 = uVar16;\n      }\n      else {\n        lVar5 = *plVar11;\nLAB_0034c524:\n        lVar12 = plVar11[2];\n        uVar1 = *(uint *)((long)plVar11 + 0x1c);\n        bVar3 = uVar7 < uVar16;\n        uVar7 = uVar16;\n        if (bVar3) {\n          if (uVar15 < __n) {\nLAB_0034c6f6:\n                    /* WARNING: Subroutine does not return */\n            FUN_00352af0("../../gold/fileread.cc",0x2f1,"read_multiple");\n          }\n          lVar10 = 0;\n          for (; memcpy((void *)plVar13[2],\n                        (void *)(lVar10 + (uVar9 - lVar5) + (ulong)uVar1 + lVar12),__n),\n              uVar14 != uVar16; uVar14 = uVar14 + 1) {\n            plVar13 = (long *)(*param_3 + uVar14 * 0x18);\n            __n = plVar13[1];\n            lVar10 = *plVar13 - lVar2;\n            if (uVar15 < __n + lVar10) goto LAB_0034c6f6;\n          }\n        }\n      }\n    }" { (expression_statement "plVar11 = (long *)(lVar12 + 0x18 + lVar5);" (assignment_expression "plVar11 = (long *)(lVar12 + 0x18 + lVar5)" identifier = (cast_expression "(long *)(lVar12 + 0x18 + lVar5)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar12 + 0x18 + lVar5)" ( (binary_expression "lVar12 + 0x18 + lVar5" (binary_expression "lVar12 + 0x18" identifier + number_literal) + identifier) )))) ;) (expression_statement "lVar10 = *plVar11;" (assignment_expression "lVar10 = *plVar11" identifier = (pointer_expression "*plVar11" * identifier)) ;) (if_statement "if (lVar10 < (long)(lVar2 + __n)) {\nLAB_0034c6de:\n                    /* WARNING: Subroutine does not return */\n        FUN_00352af0("../../gold/fileread.cc",0x2d5,"read_multiple");\n      }" if (parenthesized_expression "(lVar10 < (long)(lVar2 + __n))" ( (binary_expression "lVar10 < (long)(lVar2 + __n)" identifier < (cast_expression "(long)(lVar2 + __n)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(lVar2 + __n)" ( (binary_expression "lVar2 + __n" identifier + identifier) )))) )) (compound_statement "{\nLAB_0034c6de:\n                    /* WARNING: Subroutine does not return */\n        FUN_00352af0("../../gold/fileread.cc",0x2d5,"read_multiple");\n      }" { (labeled_statement "LAB_0034c6de:\n                    /* WARNING: Subroutine does not return */\n        FUN_00352af0("../../gold/fileread.cc",0x2d5,"read_multiple");" statement_identifier : comment (expression_statement "FUN_00352af0("../../gold/fileread.cc",0x2d5,"read_multiple");" (call_expression "FUN_00352af0("../../gold/fileread.cc",0x2d5,"read_multiple")" identifier (argument_list "("../../gold/fileread.cc",0x2d5,"read_multiple")" ( (string_literal ""../../gold/fileread.cc"" " string_content ") , number_literal , (string_literal ""read_multiple"" " string_content ") ))) ;)) })) (expression_statement "lVar10 = lVar10 + plVar11[1];" (assignment_expression "lVar10 = lVar10 + plVar11[1]" identifier = (binary_expression "lVar10 + plVar11[1]" identifier + (subscript_expression "plVar11[1]" identifier [ number_literal ]))) ;) (if_statement "if (0x1fff < (long)(lVar10 - (lVar2 + __n))) goto LAB_0034c6c0;" if (parenthesized_expression "(0x1fff < (long)(lVar10 - (lVar2 + __n)))" ( (binary_expression "0x1fff < (long)(lVar10 - (lVar2 + __n))" number_literal < (cast_expression "(long)(lVar10 - (lVar2 + __n))" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(lVar10 - (lVar2 + __n))" ( (binary_expression "lVar10 - (lVar2 + __n)" identifier - (parenthesized_expression "(lVar2 + __n)" ( (binary_expression "lVar2 + __n" identifier + identifier) ))) )))) )) (goto_statement "goto LAB_0034c6c0;" goto statement_identifier ;)) (expression_statement "plVar11 = (long *)(lVar12 + 0x30 + lVar5);" (assignment_expression "plVar11 = (long *)(lVar12 + 0x30 + lVar5)" identifier = (cast_expression "(long *)(lVar12 + 0x30 + lVar5)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar12 + 0x30 + lVar5)" ( (binary_expression "lVar12 + 0x30 + lVar5" (binary_expression "lVar12 + 0x30" identifier + number_literal) + identifier) )))) ;) (expression_statement "uVar9 = uVar14;" (assignment_expression "uVar9 = uVar14" identifier = identifier) ;) (do_statement "do {\n        uVar15 = uVar9;\n        lVar12 = lVar10;\n        uVar9 = uVar15 + 1;\n        uVar16 = uVar9;\n        if ((uVar8 <= uVar9) || (uVar16 = uVar7 + 0x80, uVar9 == uVar7 + 0x80)) break;\n        if (*plVar11 < lVar12) goto LAB_0034c6de;\n        lVar10 = *plVar11 + plVar11[1];\n        plVar11 = plVar11 + 3;\n        uVar16 = uVar9;\n      } while (lVar10 - lVar12 < 0x2000);" do (compound_statement "{\n        uVar15 = uVar9;\n        lVar12 = lVar10;\n        uVar9 = uVar15 + 1;\n        uVar16 = uVar9;\n        if ((uVar8 <= uVar9) || (uVar16 = uVar7 + 0x80, uVar9 == uVar7 + 0x80)) break;\n        if (*plVar11 < lVar12) goto LAB_0034c6de;\n        lVar10 = *plVar11 + plVar11[1];\n        plVar11 = plVar11 + 3;\n        uVar16 = uVar9;\n      }" { (expression_statement "uVar15 = uVar9;" (assignment_expression "uVar15 = uVar9" identifier = identifier) ;) (expression_statement "lVar12 = lVar10;" (assignment_expression "lVar12 = lVar10" identifier = identifier) ;) (expression_statement "uVar9 = uVar15 + 1;" (assignment_expression "uVar9 = uVar15 + 1" identifier = (binary_expression "uVar15 + 1" identifier + number_literal)) ;) (expression_statement "uVar16 = uVar9;" (assignment_expression "uVar16 = uVar9" identifier = identifier) ;) (if_statement "if ((uVar8 <= uVar9) || (uVar16 = uVar7 + 0x80, uVar9 == uVar7 + 0x80)) break;" if (parenthesized_expression "((uVar8 <= uVar9) || (uVar16 = uVar7 + 0x80, uVar9 == uVar7 + 0x80))" ( (binary_expression "(uVar8 <= uVar9) || (uVar16 = uVar7 + 0x80, uVar9 == uVar7 + 0x80)" (parenthesized_expression "(uVar8 <= uVar9)" ( (binary_expression "uVar8 <= uVar9" identifier <= identifier) )) || (parenthesized_expression "(uVar16 = uVar7 + 0x80, uVar9 == uVar7 + 0x80)" ( (comma_expression "uVar16 = uVar7 + 0x80, uVar9 == uVar7 + 0x80" (assignment_expression "uVar16 = uVar7 + 0x80" identifier = (binary_expression "uVar7 + 0x80" identifier + number_literal)) , (binary_expression "uVar9 == uVar7 + 0x80" identifier == (binary_expression "uVar7 + 0x80" identifier + number_literal))) ))) )) (break_statement "break;" break ;)) (if_statement "if (*plVar11 < lVar12) goto LAB_0034c6de;" if (parenthesized_expression "(*plVar11 < lVar12)" ( (binary_expression "*plVar11 < lVar12" (pointer_expression "*plVar11" * identifier) < identifier) )) (goto_statement "goto LAB_0034c6de;" goto statement_identifier ;)) (expression_statement "lVar10 = *plVar11 + plVar11[1];" (assignment_expression "lVar10 = *plVar11 + plVar11[1]" identifier = (binary_expression "*plVar11 + plVar11[1]" (pointer_expression "*plVar11" * identifier) + (subscript_expression "plVar11[1]" identifier [ number_literal ]))) ;) (expression_statement "plVar11 = plVar11 + 3;" (assignment_expression "plVar11 = plVar11 + 3" identifier = (binary_expression "plVar11 + 3" identifier + number_literal)) ;) (expression_statement "uVar16 = uVar9;" (assignment_expression "uVar16 = uVar9" identifier = identifier) ;) }) while (parenthesized_expression "(lVar10 - lVar12 < 0x2000)" ( (binary_expression "lVar10 - lVar12 < 0x2000" (binary_expression "lVar10 - lVar12" identifier - identifier) < number_literal) )) ;) (expression_statement "uVar9 = lVar2 + param_2;" (assignment_expression "uVar9 = lVar2 + param_2" identifier = (binary_expression "lVar2 + param_2" identifier + identifier)) ;) (if_statement "if (uVar15 == uVar7) goto LAB_0034c6c0;" if (parenthesized_expression "(uVar15 == uVar7)" ( (binary_expression "uVar15 == uVar7" identifier == identifier) )) (goto_statement "goto LAB_0034c6c0;" goto statement_identifier ;)) (expression_statement "uVar15 = lVar12 - lVar2;" (assignment_expression "uVar15 = lVar12 - lVar2" identifier = (binary_expression "lVar12 - lVar2" identifier - identifier)) ;) (if_statement "if ((*(long *)(param_1 + 0x30) < (long)uVar9) || (*(long *)(param_1 + 0x30) - uVar9 < uVar15))\n      {\n                    /* WARNING: Subroutine does not return */\n        FUN_00352af0("../../gold/fileread.cc",0x150,"find_view");\n      }" if (parenthesized_expression "((*(long *)(param_1 + 0x30) < (long)uVar9) || (*(long *)(param_1 + 0x30) - uVar9 < uVar15))" ( (binary_expression "(*(long *)(param_1 + 0x30) < (long)uVar9) || (*(long *)(param_1 + 0x30) - uVar9 < uVar15)" (parenthesized_expression "(*(long *)(param_1 + 0x30) < (long)uVar9)" ( (binary_expression "*(long *)(param_1 + 0x30) < (long)uVar9" (pointer_expression "*(long *)(param_1 + 0x30)" * (cast_expression "(long *)(param_1 + 0x30)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) )))) < (cast_expression "(long)uVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) || (parenthesized_expression "(*(long *)(param_1 + 0x30) - uVar9 < uVar15)" ( (binary_expression "*(long *)(param_1 + 0x30) - uVar9 < uVar15" (binary_expression "*(long *)(param_1 + 0x30) - uVar9" (pointer_expression "*(long *)(param_1 + 0x30)" * (cast_expression "(long *)(param_1 + 0x30)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) )))) - identifier) < identifier) ))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n        FUN_00352af0("../../gold/fileread.cc",0x150,"find_view");\n      }" { comment (expression_statement "FUN_00352af0("../../gold/fileread.cc",0x150,"find_view");" (call_expression "FUN_00352af0("../../gold/fileread.cc",0x150,"find_view")" identifier (argument_list "("../../gold/fileread.cc",0x150,"find_view")" ( (string_literal ""../../gold/fileread.cc"" " string_content ") , number_literal , (string_literal ""find_view"" " string_content ") ))) ;) })) (expression_statement "plVar11 = *(long **)(param_1 + 0xb0);" (assignment_expression "plVar11 = *(long **)(param_1 + 0xb0)" identifier = (pointer_expression "*(long **)(param_1 + 0xb0)" * (cast_expression "(long **)(param_1 + 0xb0)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xb0)" ( (binary_expression "param_1 + 0xb0" identifier + number_literal) ))))) ;) (if_statement "if (plVar11 == (long *)0x0) {\n        lVar10 = *(long *)(param_1 + 0x68);\n        lVar5 = (uVar9 & 0xffffffffffffe000) - 1;\n        lVar6 = lVar4;\n        if (lVar10 != 0) {\n          do {\n            while ((lVar5 < *(long *)(lVar10 + 0x20) ||\n                   ((lVar5 == *(long *)(lVar10 + 0x20) && (*(int *)(lVar10 + 0x28) != 0))))) {\n              plVar11 = (long *)(lVar10 + 0x10);\n              lVar6 = lVar10;\n              lVar10 = *plVar11;\n              if (*plVar11 == 0) goto LAB_0034c5f6;\n            }\n            lVar10 = *(long *)(lVar10 + 0x18);\n          } while (lVar10 != 0);\nLAB_0034c5f6:\n          if (lVar6 != lVar4) {\n            lVar5 = *(long *)(lVar6 + 0x20);\n            while (lVar5 <= (long)(uVar9 & 0xffffffffffffe000)) {\n              plVar11 = *(long **)(lVar6 + 0x30);\n              lVar5 = *plVar11;\n              if ((lVar5 <= (long)uVar9) && (lVar12 + param_2 <= plVar11[1] + lVar5)) {\n                *(undefined1 *)(plVar11 + 5) = 1;\n                goto LAB_0034c524;\n              }\n              lVar6 = thunk_FUN_0049f700(lVar6);\n              if (lVar4 == lVar6) break;\n              lVar5 = *(long *)(lVar6 + 0x20);\n            }\n          }\n        }\n        FUN_0034c220(param_1,param_2,param_3,uVar7,uVar16 - uVar7);\n        uVar7 = uVar16;\n      }\n      else {\n        lVar5 = *plVar11;\nLAB_0034c524:\n        lVar12 = plVar11[2];\n        uVar1 = *(uint *)((long)plVar11 + 0x1c);\n        bVar3 = uVar7 < uVar16;\n        uVar7 = uVar16;\n        if (bVar3) {\n          if (uVar15 < __n) {\nLAB_0034c6f6:\n                    /* WARNING: Subroutine does not return */\n            FUN_00352af0("../../gold/fileread.cc",0x2f1,"read_multiple");\n          }\n          lVar10 = 0;\n          for (; memcpy((void *)plVar13[2],\n                        (void *)(lVar10 + (uVar9 - lVar5) + (ulong)uVar1 + lVar12),__n),\n              uVar14 != uVar16; uVar14 = uVar14 + 1) {\n            plVar13 = (long *)(*param_3 + uVar14 * 0x18);\n            __n = plVar13[1];\n            lVar10 = *plVar13 - lVar2;\n            if (uVar15 < __n + lVar10) goto LAB_0034c6f6;\n          }\n        }\n      }" if (parenthesized_expression "(plVar11 == (long *)0x0)" ( (binary_expression "plVar11 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        lVar10 = *(long *)(param_1 + 0x68);\n        lVar5 = (uVar9 & 0xffffffffffffe000) - 1;\n        lVar6 = lVar4;\n        if (lVar10 != 0) {\n          do {\n            while ((lVar5 < *(long *)(lVar10 + 0x20) ||\n                   ((lVar5 == *(long *)(lVar10 + 0x20) && (*(int *)(lVar10 + 0x28) != 0))))) {\n              plVar11 = (long *)(lVar10 + 0x10);\n              lVar6 = lVar10;\n              lVar10 = *plVar11;\n              if (*plVar11 == 0) goto LAB_0034c5f6;\n            }\n            lVar10 = *(long *)(lVar10 + 0x18);\n          } while (lVar10 != 0);\nLAB_0034c5f6:\n          if (lVar6 != lVar4) {\n            lVar5 = *(long *)(lVar6 + 0x20);\n            while (lVar5 <= (long)(uVar9 & 0xffffffffffffe000)) {\n              plVar11 = *(long **)(lVar6 + 0x30);\n              lVar5 = *plVar11;\n              if ((lVar5 <= (long)uVar9) && (lVar12 + param_2 <= plVar11[1] + lVar5)) {\n                *(undefined1 *)(plVar11 + 5) = 1;\n                goto LAB_0034c524;\n              }\n              lVar6 = thunk_FUN_0049f700(lVar6);\n              if (lVar4 == lVar6) break;\n              lVar5 = *(long *)(lVar6 + 0x20);\n            }\n          }\n        }\n        FUN_0034c220(param_1,param_2,param_3,uVar7,uVar16 - uVar7);\n        uVar7 = uVar16;\n      }" { (expression_statement "lVar10 = *(long *)(param_1 + 0x68);" (assignment_expression "lVar10 = *(long *)(param_1 + 0x68)" identifier = (pointer_expression "*(long *)(param_1 + 0x68)" * (cast_expression "(long *)(param_1 + 0x68)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x68)" ( (binary_expression "param_1 + 0x68" identifier + number_literal) ))))) ;) (expression_statement "lVar5 = (uVar9 & 0xffffffffffffe000) - 1;" (assignment_expression "lVar5 = (uVar9 & 0xffffffffffffe000) - 1" identifier = (binary_expression "(uVar9 & 0xffffffffffffe000) - 1" (parenthesized_expression "(uVar9 & 0xffffffffffffe000)" ( (binary_expression "uVar9 & 0xffffffffffffe000" identifier & number_literal) )) - number_literal)) ;) (expression_statement "lVar6 = lVar4;" (assignment_expression "lVar6 = lVar4" identifier = identifier) ;) (if_statement "if (lVar10 != 0) {\n          do {\n            while ((lVar5 < *(long *)(lVar10 + 0x20) ||\n                   ((lVar5 == *(long *)(lVar10 + 0x20) && (*(int *)(lVar10 + 0x28) != 0))))) {\n              plVar11 = (long *)(lVar10 + 0x10);\n              lVar6 = lVar10;\n              lVar10 = *plVar11;\n              if (*plVar11 == 0) goto LAB_0034c5f6;\n            }\n            lVar10 = *(long *)(lVar10 + 0x18);\n          } while (lVar10 != 0);\nLAB_0034c5f6:\n          if (lVar6 != lVar4) {\n            lVar5 = *(long *)(lVar6 + 0x20);\n            while (lVar5 <= (long)(uVar9 & 0xffffffffffffe000)) {\n              plVar11 = *(long **)(lVar6 + 0x30);\n              lVar5 = *plVar11;\n              if ((lVar5 <= (long)uVar9) && (lVar12 + param_2 <= plVar11[1] + lVar5)) {\n                *(undefined1 *)(plVar11 + 5) = 1;\n                goto LAB_0034c524;\n              }\n              lVar6 = thunk_FUN_0049f700(lVar6);\n              if (lVar4 == lVar6) break;\n              lVar5 = *(long *)(lVar6 + 0x20);\n            }\n          }\n        }" if (parenthesized_expression "(lVar10 != 0)" ( (binary_expression "lVar10 != 0" identifier != number_literal) )) (compound_statement "{\n          do {\n            while ((lVar5 < *(long *)(lVar10 + 0x20) ||\n                   ((lVar5 == *(long *)(lVar10 + 0x20) && (*(int *)(lVar10 + 0x28) != 0))))) {\n              plVar11 = (long *)(lVar10 + 0x10);\n              lVar6 = lVar10;\n              lVar10 = *plVar11;\n              if (*plVar11 == 0) goto LAB_0034c5f6;\n            }\n            lVar10 = *(long *)(lVar10 + 0x18);\n          } while (lVar10 != 0);\nLAB_0034c5f6:\n          if (lVar6 != lVar4) {\n            lVar5 = *(long *)(lVar6 + 0x20);\n            while (lVar5 <= (long)(uVar9 & 0xffffffffffffe000)) {\n              plVar11 = *(long **)(lVar6 + 0x30);\n              lVar5 = *plVar11;\n              if ((lVar5 <= (long)uVar9) && (lVar12 + param_2 <= plVar11[1] + lVar5)) {\n                *(undefined1 *)(plVar11 + 5) = 1;\n                goto LAB_0034c524;\n              }\n              lVar6 = thunk_FUN_0049f700(lVar6);\n              if (lVar4 == lVar6) break;\n              lVar5 = *(long *)(lVar6 + 0x20);\n            }\n          }\n        }" { (do_statement "do {\n            while ((lVar5 < *(long *)(lVar10 + 0x20) ||\n                   ((lVar5 == *(long *)(lVar10 + 0x20) && (*(int *)(lVar10 + 0x28) != 0))))) {\n              plVar11 = (long *)(lVar10 + 0x10);\n              lVar6 = lVar10;\n              lVar10 = *plVar11;\n              if (*plVar11 == 0) goto LAB_0034c5f6;\n            }\n            lVar10 = *(long *)(lVar10 + 0x18);\n          } while (lVar10 != 0);" do (compound_statement "{\n            while ((lVar5 < *(long *)(lVar10 + 0x20) ||\n                   ((lVar5 == *(long *)(lVar10 + 0x20) && (*(int *)(lVar10 + 0x28) != 0))))) {\n              plVar11 = (long *)(lVar10 + 0x10);\n              lVar6 = lVar10;\n              lVar10 = *plVar11;\n              if (*plVar11 == 0) goto LAB_0034c5f6;\n            }\n            lVar10 = *(long *)(lVar10 + 0x18);\n          }" { (while_statement "while ((lVar5 < *(long *)(lVar10 + 0x20) ||\n                   ((lVar5 == *(long *)(lVar10 + 0x20) && (*(int *)(lVar10 + 0x28) != 0))))) {\n              plVar11 = (long *)(lVar10 + 0x10);\n              lVar6 = lVar10;\n              lVar10 = *plVar11;\n              if (*plVar11 == 0) goto LAB_0034c5f6;\n            }" while (parenthesized_expression "((lVar5 < *(long *)(lVar10 + 0x20) ||\n                   ((lVar5 == *(long *)(lVar10 + 0x20) && (*(int *)(lVar10 + 0x28) != 0)))))" ( (parenthesized_expression "(lVar5 < *(long *)(lVar10 + 0x20) ||\n                   ((lVar5 == *(long *)(lVar10 + 0x20) && (*(int *)(lVar10 + 0x28) != 0))))" ( (binary_expression "lVar5 < *(long *)(lVar10 + 0x20) ||\n                   ((lVar5 == *(long *)(lVar10 + 0x20) && (*(int *)(lVar10 + 0x28) != 0)))" (binary_expression "lVar5 < *(long *)(lVar10 + 0x20)" identifier < (pointer_expression "*(long *)(lVar10 + 0x20)" * (cast_expression "(long *)(lVar10 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + 0x20)" ( (binary_expression "lVar10 + 0x20" identifier + number_literal) ))))) || (parenthesized_expression "((lVar5 == *(long *)(lVar10 + 0x20) && (*(int *)(lVar10 + 0x28) != 0)))" ( (parenthesized_expression "(lVar5 == *(long *)(lVar10 + 0x20) && (*(int *)(lVar10 + 0x28) != 0))" ( (binary_expression "lVar5 == *(long *)(lVar10 + 0x20) && (*(int *)(lVar10 + 0x28) != 0)" (binary_expression "lVar5 == *(long *)(lVar10 + 0x20)" identifier == (pointer_expression "*(long *)(lVar10 + 0x20)" * (cast_expression "(long *)(lVar10 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + 0x20)" ( (binary_expression "lVar10 + 0x20" identifier + number_literal) ))))) && (parenthesized_expression "(*(int *)(lVar10 + 0x28) != 0)" ( (binary_expression "*(int *)(lVar10 + 0x28) != 0" (pointer_expression "*(int *)(lVar10 + 0x28)" * (cast_expression "(int *)(lVar10 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + 0x28)" ( (binary_expression "lVar10 + 0x28" identifier + number_literal) )))) != number_literal) ))) )) ))) )) )) (compound_statement "{\n              plVar11 = (long *)(lVar10 + 0x10);\n              lVar6 = lVar10;\n              lVar10 = *plVar11;\n              if (*plVar11 == 0) goto LAB_0034c5f6;\n            }" { (expression_statement "plVar11 = (long *)(lVar10 + 0x10);" (assignment_expression "plVar11 = (long *)(lVar10 + 0x10)" identifier = (cast_expression "(long *)(lVar10 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + 0x10)" ( (binary_expression "lVar10 + 0x10" identifier + number_literal) )))) ;) (expression_statement "lVar6 = lVar10;" (assignment_expression "lVar6 = lVar10" identifier = identifier) ;) (expression_statement "lVar10 = *plVar11;" (assignment_expression "lVar10 = *plVar11" identifier = (pointer_expression "*plVar11" * identifier)) ;) (if_statement "if (*plVar11 == 0) goto LAB_0034c5f6;" if (parenthesized_expression "(*plVar11 == 0)" ( (binary_expression "*plVar11 == 0" (pointer_expression "*plVar11" * identifier) == number_literal) )) (goto_statement "goto LAB_0034c5f6;" goto statement_identifier ;)) })) (expression_statement "lVar10 = *(long *)(lVar10 + 0x18);" (assignment_expression "lVar10 = *(long *)(lVar10 + 0x18)" identifier = (pointer_expression "*(long *)(lVar10 + 0x18)" * (cast_expression "(long *)(lVar10 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + 0x18)" ( (binary_expression "lVar10 + 0x18" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "(lVar10 != 0)" ( (binary_expression "lVar10 != 0" identifier != number_literal) )) ;) (labeled_statement "LAB_0034c5f6:\n          if (lVar6 != lVar4) {\n            lVar5 = *(long *)(lVar6 + 0x20);\n            while (lVar5 <= (long)(uVar9 & 0xffffffffffffe000)) {\n              plVar11 = *(long **)(lVar6 + 0x30);\n              lVar5 = *plVar11;\n              if ((lVar5 <= (long)uVar9) && (lVar12 + param_2 <= plVar11[1] + lVar5)) {\n                *(undefined1 *)(plVar11 + 5) = 1;\n                goto LAB_0034c524;\n              }\n              lVar6 = thunk_FUN_0049f700(lVar6);\n              if (lVar4 == lVar6) break;\n              lVar5 = *(long *)(lVar6 + 0x20);\n            }\n          }" statement_identifier : (if_statement "if (lVar6 != lVar4) {\n            lVar5 = *(long *)(lVar6 + 0x20);\n            while (lVar5 <= (long)(uVar9 & 0xffffffffffffe000)) {\n              plVar11 = *(long **)(lVar6 + 0x30);\n              lVar5 = *plVar11;\n              if ((lVar5 <= (long)uVar9) && (lVar12 + param_2 <= plVar11[1] + lVar5)) {\n                *(undefined1 *)(plVar11 + 5) = 1;\n                goto LAB_0034c524;\n              }\n              lVar6 = thunk_FUN_0049f700(lVar6);\n              if (lVar4 == lVar6) break;\n              lVar5 = *(long *)(lVar6 + 0x20);\n            }\n          }" if (parenthesized_expression "(lVar6 != lVar4)" ( (binary_expression "lVar6 != lVar4" identifier != identifier) )) (compound_statement "{\n            lVar5 = *(long *)(lVar6 + 0x20);\n            while (lVar5 <= (long)(uVar9 & 0xffffffffffffe000)) {\n              plVar11 = *(long **)(lVar6 + 0x30);\n              lVar5 = *plVar11;\n              if ((lVar5 <= (long)uVar9) && (lVar12 + param_2 <= plVar11[1] + lVar5)) {\n                *(undefined1 *)(plVar11 + 5) = 1;\n                goto LAB_0034c524;\n              }\n              lVar6 = thunk_FUN_0049f700(lVar6);\n              if (lVar4 == lVar6) break;\n              lVar5 = *(long *)(lVar6 + 0x20);\n            }\n          }" { (expression_statement "lVar5 = *(long *)(lVar6 + 0x20);" (assignment_expression "lVar5 = *(long *)(lVar6 + 0x20)" identifier = (pointer_expression "*(long *)(lVar6 + 0x20)" * (cast_expression "(long *)(lVar6 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x20)" ( (binary_expression "lVar6 + 0x20" identifier + number_literal) ))))) ;) (while_statement "while (lVar5 <= (long)(uVar9 & 0xffffffffffffe000)) {\n              plVar11 = *(long **)(lVar6 + 0x30);\n              lVar5 = *plVar11;\n              if ((lVar5 <= (long)uVar9) && (lVar12 + param_2 <= plVar11[1] + lVar5)) {\n                *(undefined1 *)(plVar11 + 5) = 1;\n                goto LAB_0034c524;\n              }\n              lVar6 = thunk_FUN_0049f700(lVar6);\n              if (lVar4 == lVar6) break;\n              lVar5 = *(long *)(lVar6 + 0x20);\n            }" while (parenthesized_expression "(lVar5 <= (long)(uVar9 & 0xffffffffffffe000))" ( (binary_expression "lVar5 <= (long)(uVar9 & 0xffffffffffffe000)" identifier <= (cast_expression "(long)(uVar9 & 0xffffffffffffe000)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(uVar9 & 0xffffffffffffe000)" ( (binary_expression "uVar9 & 0xffffffffffffe000" identifier & number_literal) )))) )) (compound_statement "{\n              plVar11 = *(long **)(lVar6 + 0x30);\n              lVar5 = *plVar11;\n              if ((lVar5 <= (long)uVar9) && (lVar12 + param_2 <= plVar11[1] + lVar5)) {\n                *(undefined1 *)(plVar11 + 5) = 1;\n                goto LAB_0034c524;\n              }\n              lVar6 = thunk_FUN_0049f700(lVar6);\n              if (lVar4 == lVar6) break;\n              lVar5 = *(long *)(lVar6 + 0x20);\n            }" { (expression_statement "plVar11 = *(long **)(lVar6 + 0x30);" (assignment_expression "plVar11 = *(long **)(lVar6 + 0x30)" identifier = (pointer_expression "*(long **)(lVar6 + 0x30)" * (cast_expression "(long **)(lVar6 + 0x30)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar6 + 0x30)" ( (binary_expression "lVar6 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "lVar5 = *plVar11;" (assignment_expression "lVar5 = *plVar11" identifier = (pointer_expression "*plVar11" * identifier)) ;) (if_statement "if ((lVar5 <= (long)uVar9) && (lVar12 + param_2 <= plVar11[1] + lVar5)) {\n                *(undefined1 *)(plVar11 + 5) = 1;\n                goto LAB_0034c524;\n              }" if (parenthesized_expression "((lVar5 <= (long)uVar9) && (lVar12 + param_2 <= plVar11[1] + lVar5))" ( (binary_expression "(lVar5 <= (long)uVar9) && (lVar12 + param_2 <= plVar11[1] + lVar5)" (parenthesized_expression "(lVar5 <= (long)uVar9)" ( (binary_expression "lVar5 <= (long)uVar9" identifier <= (cast_expression "(long)uVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) && (parenthesized_expression "(lVar12 + param_2 <= plVar11[1] + lVar5)" ( (binary_expression "lVar12 + param_2 <= plVar11[1] + lVar5" (binary_expression "lVar12 + param_2" identifier + identifier) <= (binary_expression "plVar11[1] + lVar5" (subscript_expression "plVar11[1]" identifier [ number_literal ]) + identifier)) ))) )) (compound_statement "{\n                *(undefined1 *)(plVar11 + 5) = 1;\n                goto LAB_0034c524;\n              }" { (expression_statement "*(undefined1 *)(plVar11 + 5) = 1;" (assignment_expression "*(undefined1 *)(plVar11 + 5) = 1" (pointer_expression "*(undefined1 *)(plVar11 + 5)" * (cast_expression "(undefined1 *)(plVar11 + 5)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar11 + 5)" ( (binary_expression "plVar11 + 5" identifier + number_literal) )))) = number_literal) ;) (goto_statement "goto LAB_0034c524;" goto statement_identifier ;) })) (expression_statement "lVar6 = thunk_FUN_0049f700(lVar6);" (assignment_expression "lVar6 = thunk_FUN_0049f700(lVar6)" identifier = (call_expression "thunk_FUN_0049f700(lVar6)" identifier (argument_list "(lVar6)" ( identifier )))) ;) (if_statement "if (lVar4 == lVar6) break;" if (parenthesized_expression "(lVar4 == lVar6)" ( (binary_expression "lVar4 == lVar6" identifier == identifier) )) (break_statement "break;" break ;)) (expression_statement "lVar5 = *(long *)(lVar6 + 0x20);" (assignment_expression "lVar5 = *(long *)(lVar6 + 0x20)" identifier = (pointer_expression "*(long *)(lVar6 + 0x20)" * (cast_expression "(long *)(lVar6 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x20)" ( (binary_expression "lVar6 + 0x20" identifier + number_literal) ))))) ;) })) }))) })) (expression_statement "FUN_0034c220(param_1,param_2,param_3,uVar7,uVar16 - uVar7);" (call_expression "FUN_0034c220(param_1,param_2,param_3,uVar7,uVar16 - uVar7)" identifier (argument_list "(param_1,param_2,param_3,uVar7,uVar16 - uVar7)" ( identifier , identifier , identifier , identifier , (binary_expression "uVar16 - uVar7" identifier - identifier) ))) ;) (expression_statement "uVar7 = uVar16;" (assignment_expression "uVar7 = uVar16" identifier = identifier) ;) }) (else_clause "else {\n        lVar5 = *plVar11;\nLAB_0034c524:\n        lVar12 = plVar11[2];\n        uVar1 = *(uint *)((long)plVar11 + 0x1c);\n        bVar3 = uVar7 < uVar16;\n        uVar7 = uVar16;\n        if (bVar3) {\n          if (uVar15 < __n) {\nLAB_0034c6f6:\n                    /* WARNING: Subroutine does not return */\n            FUN_00352af0("../../gold/fileread.cc",0x2f1,"read_multiple");\n          }\n          lVar10 = 0;\n          for (; memcpy((void *)plVar13[2],\n                        (void *)(lVar10 + (uVar9 - lVar5) + (ulong)uVar1 + lVar12),__n),\n              uVar14 != uVar16; uVar14 = uVar14 + 1) {\n            plVar13 = (long *)(*param_3 + uVar14 * 0x18);\n            __n = plVar13[1];\n            lVar10 = *plVar13 - lVar2;\n            if (uVar15 < __n + lVar10) goto LAB_0034c6f6;\n          }\n        }\n      }" else (compound_statement "{\n        lVar5 = *plVar11;\nLAB_0034c524:\n        lVar12 = plVar11[2];\n        uVar1 = *(uint *)((long)plVar11 + 0x1c);\n        bVar3 = uVar7 < uVar16;\n        uVar7 = uVar16;\n        if (bVar3) {\n          if (uVar15 < __n) {\nLAB_0034c6f6:\n                    /* WARNING: Subroutine does not return */\n            FUN_00352af0("../../gold/fileread.cc",0x2f1,"read_multiple");\n          }\n          lVar10 = 0;\n          for (; memcpy((void *)plVar13[2],\n                        (void *)(lVar10 + (uVar9 - lVar5) + (ulong)uVar1 + lVar12),__n),\n              uVar14 != uVar16; uVar14 = uVar14 + 1) {\n            plVar13 = (long *)(*param_3 + uVar14 * 0x18);\n            __n = plVar13[1];\n            lVar10 = *plVar13 - lVar2;\n            if (uVar15 < __n + lVar10) goto LAB_0034c6f6;\n          }\n        }\n      }" { (expression_statement "lVar5 = *plVar11;" (assignment_expression "lVar5 = *plVar11" identifier = (pointer_expression "*plVar11" * identifier)) ;) (labeled_statement "LAB_0034c524:\n        lVar12 = plVar11[2];" statement_identifier : (expression_statement "lVar12 = plVar11[2];" (assignment_expression "lVar12 = plVar11[2]" identifier = (subscript_expression "plVar11[2]" identifier [ number_literal ])) ;)) (expression_statement "uVar1 = *(uint *)((long)plVar11 + 0x1c);" (assignment_expression "uVar1 = *(uint *)((long)plVar11 + 0x1c)" identifier = (pointer_expression "*(uint *)((long)plVar11 + 0x1c)" * (cast_expression "(uint *)((long)plVar11 + 0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar11 + 0x1c)" ( (binary_expression "(long)plVar11 + 0x1c" (cast_expression "(long)plVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "bVar3 = uVar7 < uVar16;" (assignment_expression "bVar3 = uVar7 < uVar16" identifier = (binary_expression "uVar7 < uVar16" identifier < identifier)) ;) (expression_statement "uVar7 = uVar16;" (assignment_expression "uVar7 = uVar16" identifier = identifier) ;) (if_statement "if (bVar3) {\n          if (uVar15 < __n) {\nLAB_0034c6f6:\n                    /* WARNING: Subroutine does not return */\n            FUN_00352af0("../../gold/fileread.cc",0x2f1,"read_multiple");\n          }\n          lVar10 = 0;\n          for (; memcpy((void *)plVar13[2],\n                        (void *)(lVar10 + (uVar9 - lVar5) + (ulong)uVar1 + lVar12),__n),\n              uVar14 != uVar16; uVar14 = uVar14 + 1) {\n            plVar13 = (long *)(*param_3 + uVar14 * 0x18);\n            __n = plVar13[1];\n            lVar10 = *plVar13 - lVar2;\n            if (uVar15 < __n + lVar10) goto LAB_0034c6f6;\n          }\n        }" if (parenthesized_expression "(bVar3)" ( identifier )) (compound_statement "{\n          if (uVar15 < __n) {\nLAB_0034c6f6:\n                    /* WARNING: Subroutine does not return */\n            FUN_00352af0("../../gold/fileread.cc",0x2f1,"read_multiple");\n          }\n          lVar10 = 0;\n          for (; memcpy((void *)plVar13[2],\n                        (void *)(lVar10 + (uVar9 - lVar5) + (ulong)uVar1 + lVar12),__n),\n              uVar14 != uVar16; uVar14 = uVar14 + 1) {\n            plVar13 = (long *)(*param_3 + uVar14 * 0x18);\n            __n = plVar13[1];\n            lVar10 = *plVar13 - lVar2;\n            if (uVar15 < __n + lVar10) goto LAB_0034c6f6;\n          }\n        }" { (if_statement "if (uVar15 < __n) {\nLAB_0034c6f6:\n                    /* WARNING: Subroutine does not return */\n            FUN_00352af0("../../gold/fileread.cc",0x2f1,"read_multiple");\n          }" if (parenthesized_expression "(uVar15 < __n)" ( (binary_expression "uVar15 < __n" identifier < identifier) )) (compound_statement "{\nLAB_0034c6f6:\n                    /* WARNING: Subroutine does not return */\n            FUN_00352af0("../../gold/fileread.cc",0x2f1,"read_multiple");\n          }" { (labeled_statement "LAB_0034c6f6:\n                    /* WARNING: Subroutine does not return */\n            FUN_00352af0("../../gold/fileread.cc",0x2f1,"read_multiple");" statement_identifier : comment (expression_statement "FUN_00352af0("../../gold/fileread.cc",0x2f1,"read_multiple");" (call_expression "FUN_00352af0("../../gold/fileread.cc",0x2f1,"read_multiple")" identifier (argument_list "("../../gold/fileread.cc",0x2f1,"read_multiple")" ( (string_literal ""../../gold/fileread.cc"" " string_content ") , number_literal , (string_literal ""read_multiple"" " string_content ") ))) ;)) })) (expression_statement "lVar10 = 0;" (assignment_expression "lVar10 = 0" identifier = number_literal) ;) (for_statement "for (; memcpy((void *)plVar13[2],\n                        (void *)(lVar10 + (uVar9 - lVar5) + (ulong)uVar1 + lVar12),__n),\n              uVar14 != uVar16; uVar14 = uVar14 + 1) {\n            plVar13 = (long *)(*param_3 + uVar14 * 0x18);\n            __n = plVar13[1];\n            lVar10 = *plVar13 - lVar2;\n            if (uVar15 < __n + lVar10) goto LAB_0034c6f6;\n          }" for ( ; (comma_expression "memcpy((void *)plVar13[2],\n                        (void *)(lVar10 + (uVar9 - lVar5) + (ulong)uVar1 + lVar12),__n),\n              uVar14 != uVar16" (call_expression "memcpy((void *)plVar13[2],\n                        (void *)(lVar10 + (uVar9 - lVar5) + (ulong)uVar1 + lVar12),__n)" identifier (argument_list "((void *)plVar13[2],\n                        (void *)(lVar10 + (uVar9 - lVar5) + (ulong)uVar1 + lVar12),__n)" ( (cast_expression "(void *)plVar13[2]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar13[2]" identifier [ number_literal ])) , (cast_expression "(void *)(lVar10 + (uVar9 - lVar5) + (ulong)uVar1 + lVar12)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + (uVar9 - lVar5) + (ulong)uVar1 + lVar12)" ( (binary_expression "lVar10 + (uVar9 - lVar5) + (ulong)uVar1 + lVar12" (binary_expression "lVar10 + (uVar9 - lVar5) + (ulong)uVar1" (binary_expression "lVar10 + (uVar9 - lVar5)" identifier + (parenthesized_expression "(uVar9 - lVar5)" ( (binary_expression "uVar9 - lVar5" identifier - identifier) ))) + (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier)) + identifier) ))) , identifier ))) , (binary_expression "uVar14 != uVar16" identifier != identifier)) ; (assignment_expression "uVar14 = uVar14 + 1" identifier = (binary_expression "uVar14 + 1" identifier + number_literal)) ) (compound_statement "{\n            plVar13 = (long *)(*param_3 + uVar14 * 0x18);\n            __n = plVar13[1];\n            lVar10 = *plVar13 - lVar2;\n            if (uVar15 < __n + lVar10) goto LAB_0034c6f6;\n          }" { (expression_statement "plVar13 = (long *)(*param_3 + uVar14 * 0x18);" (assignment_expression "plVar13 = (long *)(*param_3 + uVar14 * 0x18)" identifier = (cast_expression "(long *)(*param_3 + uVar14 * 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_3 + uVar14 * 0x18)" ( (binary_expression "*param_3 + uVar14 * 0x18" (pointer_expression "*param_3" * identifier) + (binary_expression "uVar14 * 0x18" identifier * number_literal)) )))) ;) (expression_statement "__n = plVar13[1];" (assignment_expression "__n = plVar13[1]" identifier = (subscript_expression "plVar13[1]" identifier [ number_literal ])) ;) (expression_statement "lVar10 = *plVar13 - lVar2;" (assignment_expression "lVar10 = *plVar13 - lVar2" identifier = (binary_expression "*plVar13 - lVar2" (pointer_expression "*plVar13" * identifier) - identifier)) ;) (if_statement "if (uVar15 < __n + lVar10) goto LAB_0034c6f6;" if (parenthesized_expression "(uVar15 < __n + lVar10)" ( (binary_expression "uVar15 < __n + lVar10" identifier < (binary_expression "__n + lVar10" identifier + identifier)) )) (goto_statement "goto LAB_0034c6f6;" goto statement_identifier ;)) })) })) }))) }) (else_clause "else {\nLAB_0034c6c0:\n      FUN_0034c0e0(param_1,lVar2 + param_2,__n,plVar13[2]);\n      uVar7 = uVar16;\n    }" else (compound_statement "{\nLAB_0034c6c0:\n      FUN_0034c0e0(param_1,lVar2 + param_2,__n,plVar13[2]);\n      uVar7 = uVar16;\n    }" { (labeled_statement "LAB_0034c6c0:\n      FUN_0034c0e0(param_1,lVar2 + param_2,__n,plVar13[2]);" statement_identifier : (expression_statement "FUN_0034c0e0(param_1,lVar2 + param_2,__n,plVar13[2]);" (call_expression "FUN_0034c0e0(param_1,lVar2 + param_2,__n,plVar13[2])" identifier (argument_list "(param_1,lVar2 + param_2,__n,plVar13[2])" ( identifier , (binary_expression "lVar2 + param_2" identifier + identifier) , identifier , (subscript_expression "plVar13[2]" identifier [ number_literal ]) ))) ;)) (expression_statement "uVar7 = uVar16;" (assignment_expression "uVar7 = uVar16" identifier = identifier) ;) }))) (if_statement "if (uVar8 <= uVar7) {\n      return;\n    }" if (parenthesized_expression "(uVar8 <= uVar7)" ( (binary_expression "uVar8 <= uVar7" identifier <= identifier) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (expression_statement "lVar12 = *param_3;" (assignment_expression "lVar12 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "/* WARNING: Type propagation algorithm not settling */\n/* DWARF original prototype: void read_multiple(File_read * this, off_t base, Read_multiple * rm) */\n\nvoid __thiscall gold::File_read::read_multiple(File_read *this,off_t base,Read_multiple *rm)\n\n{\n  _Base_ptr *pp_Var1;\n  uint uVar2;\n  long lVar3;\n  bool bVar4;\n  _Rb_tree_header *p_Var5;\n  _Rb_tree_node_base *p_Var6;\n  ulong start;\n  void *__buf;\n  ulong uVar7;\n  ulong uVar8;\n  long lVar9;\n  long lVar10;\n  pointer pRVar11;\n  View *pVVar12;\n  _Base_ptr p_Var13;\n  pointer pRVar14;\n  ulong uVar15;\n  ulong uVar16;\n  void *pvVar17;\n  ulong uVar18;\n  \n  pRVar11 = (rm->\n            super__Vector_base<gold::File_read::Read_multiple_entry,_std::allocator<gold::File_read::Read_multiple_entry>_>\n            )._M_impl._M_start;\n  uVar7 = ((long)(rm->\n                 super__Vector_base<gold::File_read::Read_multiple_entry,_std::allocator<gold::File_read::Read_multiple_entry>_>\n                 )._M_impl._M_finish - (long)pRVar11 >> 3) * -0x5555555555555555;\n  if (uVar7 == 0) {\n    return;\n  }\n  start = 0;\n  p_Var5 = &(this->views_)._M_t._M_impl.super__Rb_tree_header;\n  do {\n    uVar15 = start + 1;\n    pRVar14 = pRVar11 + start;\n    lVar3 = pRVar14->file_offset;\n    __buf = (void *)pRVar14->size;\n    uVar18 = uVar15;\n    if (uVar15 < uVar7) {\n      lVar9 = pRVar11[start + 1].file_offset;\n      if (lVar9 < lVar3 + (long)__buf) {\nLAB_0034c6de:\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/fileread.cc",0x2d5,"read_multiple");\n      }\n      lVar9 = lVar9 + pRVar11[start + 1].size;\n      if (0x1fff < lVar9 - (lVar3 + (long)__buf)) goto LAB_0034c6c0;\n      pRVar11 = pRVar11 + start + 2;\n      uVar8 = uVar15;\n      do {\n        uVar16 = uVar8;\n        lVar10 = lVar9;\n        uVar8 = uVar16 + 1;\n        uVar18 = uVar8;\n        if ((uVar7 <= uVar8) || (uVar18 = start + 0x80, uVar8 == start + 0x80)) break;\n        if (pRVar11->file_offset < lVar10) goto LAB_0034c6de;\n        lVar9 = pRVar11->file_offset + pRVar11->size;\n        pRVar11 = pRVar11 + 1;\n        uVar18 = uVar8;\n      } while (lVar9 - lVar10 < 0x2000);\n      uVar8 = lVar3 + base;\n      if (uVar16 == start) goto LAB_0034c6c0;\n      pvVar17 = (void *)(lVar10 - lVar3);\n      if ((this->size_ < (long)uVar8) || ((void *)(this->size_ - uVar8) < pvVar17)) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/fileread.cc",0x150,"find_view");\n      }\n      pVVar12 = this->whole_file_view_;\n      if (pVVar12 == (View *)0x0) {\n        p_Var13 = (this->views_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent;\n        lVar9 = (uVar8 & 0xffffffffffffe000) - 1;\n        p_Var6 = &p_Var5->_M_header;\n        if (p_Var13 != (_Rb_tree_node_base *)0x0) {\n          do {\n            while ((lVar9 < *(long *)(p_Var13 + 1) ||\n                   ((lVar9 == *(long *)(p_Var13 + 1) && (*(int *)&p_Var13[1]._M_parent != 0))))) {\n              pp_Var1 = &p_Var13->_M_left;\n              p_Var6 = p_Var13;\n              p_Var13 = *pp_Var1;\n              if (*pp_Var1 == (_Base_ptr)0x0) goto LAB_0034c5f6;\n            }\n            p_Var13 = p_Var13->_M_right;\n          } while (p_Var13 != (_Base_ptr)0x0);\nLAB_0034c5f6:\n          if ((_Rb_tree_header *)p_Var6 != p_Var5) {\n            lVar9 = *(long *)(p_Var6 + 1);\n            while (lVar9 <= (long)(uVar8 & 0xffffffffffffe000)) {\n              pVVar12 = (View *)p_Var6[1]._M_left;\n              lVar9 = pVVar12->start_;\n              if ((lVar9 <= (long)uVar8) &&\n                 (lVar10 + base <= (long)&((_Base_ptr)pVVar12->size_)->_M_color + lVar9)) {\n                pVVar12->accessed_ = true;\n                goto LAB_0034c524;\n              }\n              p_Var6 = (_Rb_tree_node_base *)std::_Rb_tree_increment(p_Var6);\n              if (p_Var5 == (_Rb_tree_header *)p_Var6) break;\n              lVar9 = *(long *)(p_Var6 + 1);\n            }\n          }\n        }\n        do_readv(this,base,rm,start,uVar18 - start);\n        start = uVar18;\n      }\n      else {\n        lVar9 = pVVar12->start_;\nLAB_0034c524:\n        p_Var13 = (_Base_ptr)pVVar12->data_;\n        uVar2 = pVVar12->byteshift_;\n        bVar4 = start < uVar18;\n        start = uVar18;\n        if (bVar4) {\n          if (pvVar17 < __buf) {\nLAB_0034c6f6:\n                    /* WARNING: Subroutine does not return */\n            do_gold_unreachable("../../gold/fileread.cc",0x2f1,"read_multiple");\n          }\n          lVar10 = 0;\n          for (; memcpy(pRVar14->buffer,\n                        (void *)(lVar10 + (uVar8 - lVar9) + (ulong)uVar2 + (long)p_Var13),\n                        (size_t)__buf), uVar15 != uVar18; uVar15 = uVar15 + 1) {\n            pRVar14 = (rm->\n                      super__Vector_base<gold::File_read::Read_multiple_entry,_std::allocator<gold::File_read::Read_multiple_entry>_>\n                      )._M_impl._M_start + uVar15;\n            __buf = (void *)pRVar14->size;\n            lVar10 = pRVar14->file_offset - lVar3;\n            if (pvVar17 < (void *)((long)__buf + lVar10)) goto LAB_0034c6f6;\n          }\n        }\n      }\n    }\n    else {\nLAB_0034c6c0:\n      read(this,(int)lVar3 + (int)base,__buf,(size_t)pRVar14->buffer);\n      start = uVar18;\n    }\n    if (uVar7 <= start) {\n      return;\n    }\n    pRVar11 = (rm->\n              super__Vector_base<gold::File_read::Read_multiple_entry,_std::allocator<gold::File_read::Read_multiple_entry>_>\n              )._M_impl._M_start;\n  } while( true );\n}\n\n" comment comment (function_definition "void __thiscall gold::File_read::read_multiple(File_read *this,off_t base,Read_multiple *rm)\n\n{\n  _Base_ptr *pp_Var1;\n  uint uVar2;\n  long lVar3;\n  bool bVar4;\n  _Rb_tree_header *p_Var5;\n  _Rb_tree_node_base *p_Var6;\n  ulong start;\n  void *__buf;\n  ulong uVar7;\n  ulong uVar8;\n  long lVar9;\n  long lVar10;\n  pointer pRVar11;\n  View *pVVar12;\n  _Base_ptr p_Var13;\n  pointer pRVar14;\n  ulong uVar15;\n  ulong uVar16;\n  void *pvVar17;\n  ulong uVar18;\n  \n  pRVar11 = (rm->\n            super__Vector_base<gold::File_read::Read_multiple_entry,_std::allocator<gold::File_read::Read_multiple_entry>_>\n            )._M_impl._M_start;\n  uVar7 = ((long)(rm->\n                 super__Vector_base<gold::File_read::Read_multiple_entry,_std::allocator<gold::File_read::Read_multiple_entry>_>\n                 )._M_impl._M_finish - (long)pRVar11 >> 3) * -0x5555555555555555;\n  if (uVar7 == 0) {\n    return;\n  }\n  start = 0;\n  p_Var5 = &(this->views_)._M_t._M_impl.super__Rb_tree_header;\n  do {\n    uVar15 = start + 1;\n    pRVar14 = pRVar11 + start;\n    lVar3 = pRVar14->file_offset;\n    __buf = (void *)pRVar14->size;\n    uVar18 = uVar15;\n    if (uVar15 < uVar7) {\n      lVar9 = pRVar11[start + 1].file_offset;\n      if (lVar9 < lVar3 + (long)__buf) {\nLAB_0034c6de:\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/fileread.cc",0x2d5,"read_multiple");\n      }\n      lVar9 = lVar9 + pRVar11[start + 1].size;\n      if (0x1fff < lVar9 - (lVar3 + (long)__buf)) goto LAB_0034c6c0;\n      pRVar11 = pRVar11 + start + 2;\n      uVar8 = uVar15;\n      do {\n        uVar16 = uVar8;\n        lVar10 = lVar9;\n        uVar8 = uVar16 + 1;\n        uVar18 = uVar8;\n        if ((uVar7 <= uVar8) || (uVar18 = start + 0x80, uVar8 == start + 0x80)) break;\n        if (pRVar11->file_offset < lVar10) goto LAB_0034c6de;\n        lVar9 = pRVar11->file_offset + pRVar11->size;\n        pRVar11 = pRVar11 + 1;\n        uVar18 = uVar8;\n      } while (lVar9 - lVar10 < 0x2000);\n      uVar8 = lVar3 + base;\n      if (uVar16 == start) goto LAB_0034c6c0;\n      pvVar17 = (void *)(lVar10 - lVar3);\n      if ((this->size_ < (long)uVar8) || ((void *)(this->size_ - uVar8) < pvVar17)) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/fileread.cc",0x150,"find_view");\n      }\n      pVVar12 = this->whole_file_view_;\n      if (pVVar12 == (View *)0x0) {\n        p_Var13 = (this->views_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent;\n        lVar9 = (uVar8 & 0xffffffffffffe000) - 1;\n        p_Var6 = &p_Var5->_M_header;\n        if (p_Var13 != (_Rb_tree_node_base *)0x0) {\n          do {\n            while ((lVar9 < *(long *)(p_Var13 + 1) ||\n                   ((lVar9 == *(long *)(p_Var13 + 1) && (*(int *)&p_Var13[1]._M_parent != 0))))) {\n              pp_Var1 = &p_Var13->_M_left;\n              p_Var6 = p_Var13;\n              p_Var13 = *pp_Var1;\n              if (*pp_Var1 == (_Base_ptr)0x0) goto LAB_0034c5f6;\n            }\n            p_Var13 = p_Var13->_M_right;\n          } while (p_Var13 != (_Base_ptr)0x0);\nLAB_0034c5f6:\n          if ((_Rb_tree_header *)p_Var6 != p_Var5) {\n            lVar9 = *(long *)(p_Var6 + 1);\n            while (lVar9 <= (long)(uVar8 & 0xffffffffffffe000)) {\n              pVVar12 = (View *)p_Var6[1]._M_left;\n              lVar9 = pVVar12->start_;\n              if ((lVar9 <= (long)uVar8) &&\n                 (lVar10 + base <= (long)&((_Base_ptr)pVVar12->size_)->_M_color + lVar9)) {\n                pVVar12->accessed_ = true;\n                goto LAB_0034c524;\n              }\n              p_Var6 = (_Rb_tree_node_base *)std::_Rb_tree_increment(p_Var6);\n              if (p_Var5 == (_Rb_tree_header *)p_Var6) break;\n              lVar9 = *(long *)(p_Var6 + 1);\n            }\n          }\n        }\n        do_readv(this,base,rm,start,uVar18 - start);\n        start = uVar18;\n      }\n      else {\n        lVar9 = pVVar12->start_;\nLAB_0034c524:\n        p_Var13 = (_Base_ptr)pVVar12->data_;\n        uVar2 = pVVar12->byteshift_;\n        bVar4 = start < uVar18;\n        start = uVar18;\n        if (bVar4) {\n          if (pvVar17 < __buf) {\nLAB_0034c6f6:\n                    /* WARNING: Subroutine does not return */\n            do_gold_unreachable("../../gold/fileread.cc",0x2f1,"read_multiple");\n          }\n          lVar10 = 0;\n          for (; memcpy(pRVar14->buffer,\n                        (void *)(lVar10 + (uVar8 - lVar9) + (ulong)uVar2 + (long)p_Var13),\n                        (size_t)__buf), uVar15 != uVar18; uVar15 = uVar15 + 1) {\n            pRVar14 = (rm->\n                      super__Vector_base<gold::File_read::Read_multiple_entry,_std::allocator<gold::File_read::Read_multiple_entry>_>\n                      )._M_impl._M_start + uVar15;\n            __buf = (void *)pRVar14->size;\n            lVar10 = pRVar14->file_offset - lVar3;\n            if (pvVar17 < (void *)((long)__buf + lVar10)) goto LAB_0034c6f6;\n          }\n        }\n      }\n    }\n    else {\nLAB_0034c6c0:\n      read(this,(int)lVar3 + (int)base,__buf,(size_t)pRVar14->buffer);\n      start = uVar18;\n    }\n    if (uVar7 <= start) {\n      return;\n    }\n    pRVar11 = (rm->\n              super__Vector_base<gold::File_read::Read_multiple_entry,_std::allocator<gold::File_read::Read_multiple_entry>_>\n              )._M_impl._M_start;\n  } while( true );\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::File_read::" identifier : : identifier : :) (function_declarator "read_multiple(File_read *this,off_t base,Read_multiple *rm)" identifier (parameter_list "(File_read *this,off_t base,Read_multiple *rm)" ( (parameter_declaration "File_read *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "off_t base" type_identifier identifier) , (parameter_declaration "Read_multiple *rm" type_identifier (pointer_declarator "*rm" * identifier)) ))) (compound_statement "{\n  _Base_ptr *pp_Var1;\n  uint uVar2;\n  long lVar3;\n  bool bVar4;\n  _Rb_tree_header *p_Var5;\n  _Rb_tree_node_base *p_Var6;\n  ulong start;\n  void *__buf;\n  ulong uVar7;\n  ulong uVar8;\n  long lVar9;\n  long lVar10;\n  pointer pRVar11;\n  View *pVVar12;\n  _Base_ptr p_Var13;\n  pointer pRVar14;\n  ulong uVar15;\n  ulong uVar16;\n  void *pvVar17;\n  ulong uVar18;\n  \n  pRVar11 = (rm->\n            super__Vector_base<gold::File_read::Read_multiple_entry,_std::allocator<gold::File_read::Read_multiple_entry>_>\n            )._M_impl._M_start;\n  uVar7 = ((long)(rm->\n                 super__Vector_base<gold::File_read::Read_multiple_entry,_std::allocator<gold::File_read::Read_multiple_entry>_>\n                 )._M_impl._M_finish - (long)pRVar11 >> 3) * -0x5555555555555555;\n  if (uVar7 == 0) {\n    return;\n  }\n  start = 0;\n  p_Var5 = &(this->views_)._M_t._M_impl.super__Rb_tree_header;\n  do {\n    uVar15 = start + 1;\n    pRVar14 = pRVar11 + start;\n    lVar3 = pRVar14->file_offset;\n    __buf = (void *)pRVar14->size;\n    uVar18 = uVar15;\n    if (uVar15 < uVar7) {\n      lVar9 = pRVar11[start + 1].file_offset;\n      if (lVar9 < lVar3 + (long)__buf) {\nLAB_0034c6de:\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/fileread.cc",0x2d5,"read_multiple");\n      }\n      lVar9 = lVar9 + pRVar11[start + 1].size;\n      if (0x1fff < lVar9 - (lVar3 + (long)__buf)) goto LAB_0034c6c0;\n      pRVar11 = pRVar11 + start + 2;\n      uVar8 = uVar15;\n      do {\n        uVar16 = uVar8;\n        lVar10 = lVar9;\n        uVar8 = uVar16 + 1;\n        uVar18 = uVar8;\n        if ((uVar7 <= uVar8) || (uVar18 = start + 0x80, uVar8 == start + 0x80)) break;\n        if (pRVar11->file_offset < lVar10) goto LAB_0034c6de;\n        lVar9 = pRVar11->file_offset + pRVar11->size;\n        pRVar11 = pRVar11 + 1;\n        uVar18 = uVar8;\n      } while (lVar9 - lVar10 < 0x2000);\n      uVar8 = lVar3 + base;\n      if (uVar16 == start) goto LAB_0034c6c0;\n      pvVar17 = (void *)(lVar10 - lVar3);\n      if ((this->size_ < (long)uVar8) || ((void *)(this->size_ - uVar8) < pvVar17)) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/fileread.cc",0x150,"find_view");\n      }\n      pVVar12 = this->whole_file_view_;\n      if (pVVar12 == (View *)0x0) {\n        p_Var13 = (this->views_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent;\n        lVar9 = (uVar8 & 0xffffffffffffe000) - 1;\n        p_Var6 = &p_Var5->_M_header;\n        if (p_Var13 != (_Rb_tree_node_base *)0x0) {\n          do {\n            while ((lVar9 < *(long *)(p_Var13 + 1) ||\n                   ((lVar9 == *(long *)(p_Var13 + 1) && (*(int *)&p_Var13[1]._M_parent != 0))))) {\n              pp_Var1 = &p_Var13->_M_left;\n              p_Var6 = p_Var13;\n              p_Var13 = *pp_Var1;\n              if (*pp_Var1 == (_Base_ptr)0x0) goto LAB_0034c5f6;\n            }\n            p_Var13 = p_Var13->_M_right;\n          } while (p_Var13 != (_Base_ptr)0x0);\nLAB_0034c5f6:\n          if ((_Rb_tree_header *)p_Var6 != p_Var5) {\n            lVar9 = *(long *)(p_Var6 + 1);\n            while (lVar9 <= (long)(uVar8 & 0xffffffffffffe000)) {\n              pVVar12 = (View *)p_Var6[1]._M_left;\n              lVar9 = pVVar12->start_;\n              if ((lVar9 <= (long)uVar8) &&\n                 (lVar10 + base <= (long)&((_Base_ptr)pVVar12->size_)->_M_color + lVar9)) {\n                pVVar12->accessed_ = true;\n                goto LAB_0034c524;\n              }\n              p_Var6 = (_Rb_tree_node_base *)std::_Rb_tree_increment(p_Var6);\n              if (p_Var5 == (_Rb_tree_header *)p_Var6) break;\n              lVar9 = *(long *)(p_Var6 + 1);\n            }\n          }\n        }\n        do_readv(this,base,rm,start,uVar18 - start);\n        start = uVar18;\n      }\n      else {\n        lVar9 = pVVar12->start_;\nLAB_0034c524:\n        p_Var13 = (_Base_ptr)pVVar12->data_;\n        uVar2 = pVVar12->byteshift_;\n        bVar4 = start < uVar18;\n        start = uVar18;\n        if (bVar4) {\n          if (pvVar17 < __buf) {\nLAB_0034c6f6:\n                    /* WARNING: Subroutine does not return */\n            do_gold_unreachable("../../gold/fileread.cc",0x2f1,"read_multiple");\n          }\n          lVar10 = 0;\n          for (; memcpy(pRVar14->buffer,\n                        (void *)(lVar10 + (uVar8 - lVar9) + (ulong)uVar2 + (long)p_Var13),\n                        (size_t)__buf), uVar15 != uVar18; uVar15 = uVar15 + 1) {\n            pRVar14 = (rm->\n                      super__Vector_base<gold::File_read::Read_multiple_entry,_std::allocator<gold::File_read::Read_multiple_entry>_>\n                      )._M_impl._M_start + uVar15;\n            __buf = (void *)pRVar14->size;\n            lVar10 = pRVar14->file_offset - lVar3;\n            if (pvVar17 < (void *)((long)__buf + lVar10)) goto LAB_0034c6f6;\n          }\n        }\n      }\n    }\n    else {\nLAB_0034c6c0:\n      read(this,(int)lVar3 + (int)base,__buf,(size_t)pRVar14->buffer);\n      start = uVar18;\n    }\n    if (uVar7 <= start) {\n      return;\n    }\n    pRVar11 = (rm->\n              super__Vector_base<gold::File_read::Read_multiple_entry,_std::allocator<gold::File_read::Read_multiple_entry>_>\n              )._M_impl._M_start;\n  } while( true );\n}" { (declaration "_Base_ptr *pp_Var1;" type_identifier (pointer_declarator "*pp_Var1" * identifier) ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "bool bVar4;" primitive_type identifier ;) (declaration "_Rb_tree_header *p_Var5;" type_identifier (pointer_declarator "*p_Var5" * identifier) ;) (declaration "_Rb_tree_node_base *p_Var6;" type_identifier (pointer_declarator "*p_Var6" * identifier) ;) (declaration "ulong start;" type_identifier identifier ;) (declaration "void *__buf;" primitive_type (pointer_declarator "*__buf" * identifier) ;) (declaration "ulong uVar7;" type_identifier identifier ;) (declaration "ulong uVar8;" type_identifier identifier ;) (declaration "long lVar9;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar10;" (sized_type_specifier "long" long) identifier ;) (declaration "pointer pRVar11;" type_identifier identifier ;) (declaration "View *pVVar12;" type_identifier (pointer_declarator "*pVVar12" * identifier) ;) (declaration "_Base_ptr p_Var13;" type_identifier identifier ;) (declaration "pointer pRVar14;" type_identifier identifier ;) (declaration "ulong uVar15;" type_identifier identifier ;) (declaration "ulong uVar16;" type_identifier identifier ;) (declaration "void *pvVar17;" primitive_type (pointer_declarator "*pvVar17" * identifier) ;) (declaration "ulong uVar18;" type_identifier identifier ;) (expression_statement "pRVar11 = (rm->\n            super__Vector_base<gold::File_read::Read_multiple_entry,_std::allocator<gold::File_read::Read_multiple_entry>_>\n            )._M_impl._M_start;" (assignment_expression "pRVar11 = (rm->\n            super__Vector_base<gold::File_read::Read_multiple_entry,_std::allocator<gold::File_read::Read_multiple_entry>_>\n            )._M_impl._M_start" identifier = (field_expression "(rm->\n            super__Vector_base<gold::File_read::Read_multiple_entry,_std::allocator<gold::File_read::Read_multiple_entry>_>\n            )._M_impl._M_start" (field_expression "(rm->\n            super__Vector_base<gold::File_read::Read_multiple_entry,_std::allocator<gold::File_read::Read_multiple_entry>_>\n            )._M_impl" (parenthesized_expression "(rm->\n            super__Vector_base<gold::File_read::Read_multiple_entry,_std::allocator<gold::File_read::Read_multiple_entry>_>\n            )" ( (ERROR "rm->\n            super__Vector_base<gold::File_read::Read_multiple_entry,_std::allocator<gold::File_read::" (comma_expression "rm->\n            super__Vector_base<gold::File_read::Read_multiple_entry,_std" (binary_expression "rm->\n            super__Vector_base<gold" (field_expression "rm->\n            super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::File_read::Read_multiple_entry" : : identifier : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : identifier : :) (binary_expression "Read_multiple_entry>_>" (binary_expression "Read_multiple_entry>_" identifier > identifier) > identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "uVar7 = ((long)(rm->\n                 super__Vector_base<gold::File_read::Read_multiple_entry,_std::allocator<gold::File_read::Read_multiple_entry>_>\n                 )._M_impl._M_finish - (long)pRVar11 >> 3) * -0x5555555555555555;" (assignment_expression "uVar7 = ((long)(rm->\n                 super__Vector_base<gold::File_read::Read_multiple_entry,_std::allocator<gold::File_read::Read_multiple_entry>_>\n                 )._M_impl._M_finish - (long)pRVar11 >> 3) * -0x5555555555555555" identifier = (binary_expression "((long)(rm->\n                 super__Vector_base<gold::File_read::Read_multiple_entry,_std::allocator<gold::File_read::Read_multiple_entry>_>\n                 )._M_impl._M_finish - (long)pRVar11 >> 3) * -0x5555555555555555" (parenthesized_expression "((long)(rm->\n                 super__Vector_base<gold::File_read::Read_multiple_entry,_std::allocator<gold::File_read::Read_multiple_entry>_>\n                 )._M_impl._M_finish - (long)pRVar11 >> 3)" ( (binary_expression "(long)(rm->\n                 super__Vector_base<gold::File_read::Read_multiple_entry,_std::allocator<gold::File_read::Read_multiple_entry>_>\n                 )._M_impl._M_finish - (long)pRVar11 >> 3" (binary_expression "(long)(rm->\n                 super__Vector_base<gold::File_read::Read_multiple_entry,_std::allocator<gold::File_read::Read_multiple_entry>_>\n                 )._M_impl._M_finish - (long)pRVar11" (cast_expression "(long)(rm->\n                 super__Vector_base<gold::File_read::Read_multiple_entry,_std::allocator<gold::File_read::Read_multiple_entry>_>\n                 )._M_impl._M_finish" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "(rm->\n                 super__Vector_base<gold::File_read::Read_multiple_entry,_std::allocator<gold::File_read::Read_multiple_entry>_>\n                 )._M_impl._M_finish" (field_expression "(rm->\n                 super__Vector_base<gold::File_read::Read_multiple_entry,_std::allocator<gold::File_read::Read_multiple_entry>_>\n                 )._M_impl" (parenthesized_expression "(rm->\n                 super__Vector_base<gold::File_read::Read_multiple_entry,_std::allocator<gold::File_read::Read_multiple_entry>_>\n                 )" ( (ERROR "rm->\n                 super__Vector_base<gold::File_read::Read_multiple_entry,_std::allocator<gold::File_read::" (comma_expression "rm->\n                 super__Vector_base<gold::File_read::Read_multiple_entry,_std" (binary_expression "rm->\n                 super__Vector_base<gold" (field_expression "rm->\n                 super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::File_read::Read_multiple_entry" : : identifier : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : identifier : :) (binary_expression "Read_multiple_entry>_>" (binary_expression "Read_multiple_entry>_" identifier > identifier) > identifier) )) . field_identifier) . field_identifier)) - (cast_expression "(long)pRVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) >> number_literal) )) * number_literal)) ;) (if_statement "if (uVar7 == 0) {\n    return;\n  }" if (parenthesized_expression "(uVar7 == 0)" ( (binary_expression "uVar7 == 0" identifier == number_literal) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "start = 0;" (assignment_expression "start = 0" identifier = number_literal) ;) (expression_statement "p_Var5 = &(this->views_)._M_t._M_impl.super__Rb_tree_header;" (assignment_expression "p_Var5 = &(this->views_)._M_t._M_impl.super__Rb_tree_header" identifier = (pointer_expression "&(this->views_)._M_t._M_impl.super__Rb_tree_header" & (field_expression "(this->views_)._M_t._M_impl.super__Rb_tree_header" (field_expression "(this->views_)._M_t._M_impl" (field_expression "(this->views_)._M_t" (parenthesized_expression "(this->views_)" ( (field_expression "this->views_" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier))) ;) (do_statement "do {\n    uVar15 = start + 1;\n    pRVar14 = pRVar11 + start;\n    lVar3 = pRVar14->file_offset;\n    __buf = (void *)pRVar14->size;\n    uVar18 = uVar15;\n    if (uVar15 < uVar7) {\n      lVar9 = pRVar11[start + 1].file_offset;\n      if (lVar9 < lVar3 + (long)__buf) {\nLAB_0034c6de:\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/fileread.cc",0x2d5,"read_multiple");\n      }\n      lVar9 = lVar9 + pRVar11[start + 1].size;\n      if (0x1fff < lVar9 - (lVar3 + (long)__buf)) goto LAB_0034c6c0;\n      pRVar11 = pRVar11 + start + 2;\n      uVar8 = uVar15;\n      do {\n        uVar16 = uVar8;\n        lVar10 = lVar9;\n        uVar8 = uVar16 + 1;\n        uVar18 = uVar8;\n        if ((uVar7 <= uVar8) || (uVar18 = start + 0x80, uVar8 == start + 0x80)) break;\n        if (pRVar11->file_offset < lVar10) goto LAB_0034c6de;\n        lVar9 = pRVar11->file_offset + pRVar11->size;\n        pRVar11 = pRVar11 + 1;\n        uVar18 = uVar8;\n      } while (lVar9 - lVar10 < 0x2000);\n      uVar8 = lVar3 + base;\n      if (uVar16 == start) goto LAB_0034c6c0;\n      pvVar17 = (void *)(lVar10 - lVar3);\n      if ((this->size_ < (long)uVar8) || ((void *)(this->size_ - uVar8) < pvVar17)) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/fileread.cc",0x150,"find_view");\n      }\n      pVVar12 = this->whole_file_view_;\n      if (pVVar12 == (View *)0x0) {\n        p_Var13 = (this->views_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent;\n        lVar9 = (uVar8 & 0xffffffffffffe000) - 1;\n        p_Var6 = &p_Var5->_M_header;\n        if (p_Var13 != (_Rb_tree_node_base *)0x0) {\n          do {\n            while ((lVar9 < *(long *)(p_Var13 + 1) ||\n                   ((lVar9 == *(long *)(p_Var13 + 1) && (*(int *)&p_Var13[1]._M_parent != 0))))) {\n              pp_Var1 = &p_Var13->_M_left;\n              p_Var6 = p_Var13;\n              p_Var13 = *pp_Var1;\n              if (*pp_Var1 == (_Base_ptr)0x0) goto LAB_0034c5f6;\n            }\n            p_Var13 = p_Var13->_M_right;\n          } while (p_Var13 != (_Base_ptr)0x0);\nLAB_0034c5f6:\n          if ((_Rb_tree_header *)p_Var6 != p_Var5) {\n            lVar9 = *(long *)(p_Var6 + 1);\n            while (lVar9 <= (long)(uVar8 & 0xffffffffffffe000)) {\n              pVVar12 = (View *)p_Var6[1]._M_left;\n              lVar9 = pVVar12->start_;\n              if ((lVar9 <= (long)uVar8) &&\n                 (lVar10 + base <= (long)&((_Base_ptr)pVVar12->size_)->_M_color + lVar9)) {\n                pVVar12->accessed_ = true;\n                goto LAB_0034c524;\n              }\n              p_Var6 = (_Rb_tree_node_base *)std::_Rb_tree_increment(p_Var6);\n              if (p_Var5 == (_Rb_tree_header *)p_Var6) break;\n              lVar9 = *(long *)(p_Var6 + 1);\n            }\n          }\n        }\n        do_readv(this,base,rm,start,uVar18 - start);\n        start = uVar18;\n      }\n      else {\n        lVar9 = pVVar12->start_;\nLAB_0034c524:\n        p_Var13 = (_Base_ptr)pVVar12->data_;\n        uVar2 = pVVar12->byteshift_;\n        bVar4 = start < uVar18;\n        start = uVar18;\n        if (bVar4) {\n          if (pvVar17 < __buf) {\nLAB_0034c6f6:\n                    /* WARNING: Subroutine does not return */\n            do_gold_unreachable("../../gold/fileread.cc",0x2f1,"read_multiple");\n          }\n          lVar10 = 0;\n          for (; memcpy(pRVar14->buffer,\n                        (void *)(lVar10 + (uVar8 - lVar9) + (ulong)uVar2 + (long)p_Var13),\n                        (size_t)__buf), uVar15 != uVar18; uVar15 = uVar15 + 1) {\n            pRVar14 = (rm->\n                      super__Vector_base<gold::File_read::Read_multiple_entry,_std::allocator<gold::File_read::Read_multiple_entry>_>\n                      )._M_impl._M_start + uVar15;\n            __buf = (void *)pRVar14->size;\n            lVar10 = pRVar14->file_offset - lVar3;\n            if (pvVar17 < (void *)((long)__buf + lVar10)) goto LAB_0034c6f6;\n          }\n        }\n      }\n    }\n    else {\nLAB_0034c6c0:\n      read(this,(int)lVar3 + (int)base,__buf,(size_t)pRVar14->buffer);\n      start = uVar18;\n    }\n    if (uVar7 <= start) {\n      return;\n    }\n    pRVar11 = (rm->\n              super__Vector_base<gold::File_read::Read_multiple_entry,_std::allocator<gold::File_read::Read_multiple_entry>_>\n              )._M_impl._M_start;\n  } while( true );" do (compound_statement "{\n    uVar15 = start + 1;\n    pRVar14 = pRVar11 + start;\n    lVar3 = pRVar14->file_offset;\n    __buf = (void *)pRVar14->size;\n    uVar18 = uVar15;\n    if (uVar15 < uVar7) {\n      lVar9 = pRVar11[start + 1].file_offset;\n      if (lVar9 < lVar3 + (long)__buf) {\nLAB_0034c6de:\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/fileread.cc",0x2d5,"read_multiple");\n      }\n      lVar9 = lVar9 + pRVar11[start + 1].size;\n      if (0x1fff < lVar9 - (lVar3 + (long)__buf)) goto LAB_0034c6c0;\n      pRVar11 = pRVar11 + start + 2;\n      uVar8 = uVar15;\n      do {\n        uVar16 = uVar8;\n        lVar10 = lVar9;\n        uVar8 = uVar16 + 1;\n        uVar18 = uVar8;\n        if ((uVar7 <= uVar8) || (uVar18 = start + 0x80, uVar8 == start + 0x80)) break;\n        if (pRVar11->file_offset < lVar10) goto LAB_0034c6de;\n        lVar9 = pRVar11->file_offset + pRVar11->size;\n        pRVar11 = pRVar11 + 1;\n        uVar18 = uVar8;\n      } while (lVar9 - lVar10 < 0x2000);\n      uVar8 = lVar3 + base;\n      if (uVar16 == start) goto LAB_0034c6c0;\n      pvVar17 = (void *)(lVar10 - lVar3);\n      if ((this->size_ < (long)uVar8) || ((void *)(this->size_ - uVar8) < pvVar17)) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/fileread.cc",0x150,"find_view");\n      }\n      pVVar12 = this->whole_file_view_;\n      if (pVVar12 == (View *)0x0) {\n        p_Var13 = (this->views_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent;\n        lVar9 = (uVar8 & 0xffffffffffffe000) - 1;\n        p_Var6 = &p_Var5->_M_header;\n        if (p_Var13 != (_Rb_tree_node_base *)0x0) {\n          do {\n            while ((lVar9 < *(long *)(p_Var13 + 1) ||\n                   ((lVar9 == *(long *)(p_Var13 + 1) && (*(int *)&p_Var13[1]._M_parent != 0))))) {\n              pp_Var1 = &p_Var13->_M_left;\n              p_Var6 = p_Var13;\n              p_Var13 = *pp_Var1;\n              if (*pp_Var1 == (_Base_ptr)0x0) goto LAB_0034c5f6;\n            }\n            p_Var13 = p_Var13->_M_right;\n          } while (p_Var13 != (_Base_ptr)0x0);\nLAB_0034c5f6:\n          if ((_Rb_tree_header *)p_Var6 != p_Var5) {\n            lVar9 = *(long *)(p_Var6 + 1);\n            while (lVar9 <= (long)(uVar8 & 0xffffffffffffe000)) {\n              pVVar12 = (View *)p_Var6[1]._M_left;\n              lVar9 = pVVar12->start_;\n              if ((lVar9 <= (long)uVar8) &&\n                 (lVar10 + base <= (long)&((_Base_ptr)pVVar12->size_)->_M_color + lVar9)) {\n                pVVar12->accessed_ = true;\n                goto LAB_0034c524;\n              }\n              p_Var6 = (_Rb_tree_node_base *)std::_Rb_tree_increment(p_Var6);\n              if (p_Var5 == (_Rb_tree_header *)p_Var6) break;\n              lVar9 = *(long *)(p_Var6 + 1);\n            }\n          }\n        }\n        do_readv(this,base,rm,start,uVar18 - start);\n        start = uVar18;\n      }\n      else {\n        lVar9 = pVVar12->start_;\nLAB_0034c524:\n        p_Var13 = (_Base_ptr)pVVar12->data_;\n        uVar2 = pVVar12->byteshift_;\n        bVar4 = start < uVar18;\n        start = uVar18;\n        if (bVar4) {\n          if (pvVar17 < __buf) {\nLAB_0034c6f6:\n                    /* WARNING: Subroutine does not return */\n            do_gold_unreachable("../../gold/fileread.cc",0x2f1,"read_multiple");\n          }\n          lVar10 = 0;\n          for (; memcpy(pRVar14->buffer,\n                        (void *)(lVar10 + (uVar8 - lVar9) + (ulong)uVar2 + (long)p_Var13),\n                        (size_t)__buf), uVar15 != uVar18; uVar15 = uVar15 + 1) {\n            pRVar14 = (rm->\n                      super__Vector_base<gold::File_read::Read_multiple_entry,_std::allocator<gold::File_read::Read_multiple_entry>_>\n                      )._M_impl._M_start + uVar15;\n            __buf = (void *)pRVar14->size;\n            lVar10 = pRVar14->file_offset - lVar3;\n            if (pvVar17 < (void *)((long)__buf + lVar10)) goto LAB_0034c6f6;\n          }\n        }\n      }\n    }\n    else {\nLAB_0034c6c0:\n      read(this,(int)lVar3 + (int)base,__buf,(size_t)pRVar14->buffer);\n      start = uVar18;\n    }\n    if (uVar7 <= start) {\n      return;\n    }\n    pRVar11 = (rm->\n              super__Vector_base<gold::File_read::Read_multiple_entry,_std::allocator<gold::File_read::Read_multiple_entry>_>\n              )._M_impl._M_start;\n  }" { (expression_statement "uVar15 = start + 1;" (assignment_expression "uVar15 = start + 1" identifier = (binary_expression "start + 1" identifier + number_literal)) ;) (expression_statement "pRVar14 = pRVar11 + start;" (assignment_expression "pRVar14 = pRVar11 + start" identifier = (binary_expression "pRVar11 + start" identifier + identifier)) ;) (expression_statement "lVar3 = pRVar14->file_offset;" (assignment_expression "lVar3 = pRVar14->file_offset" identifier = (field_expression "pRVar14->file_offset" identifier -> field_identifier)) ;) (expression_statement "__buf = (void *)pRVar14->size;" (assignment_expression "__buf = (void *)pRVar14->size" identifier = (cast_expression "(void *)pRVar14->size" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (field_expression "pRVar14->size" identifier -> field_identifier))) ;) (expression_statement "uVar18 = uVar15;" (assignment_expression "uVar18 = uVar15" identifier = identifier) ;) (if_statement "if (uVar15 < uVar7) {\n      lVar9 = pRVar11[start + 1].file_offset;\n      if (lVar9 < lVar3 + (long)__buf) {\nLAB_0034c6de:\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/fileread.cc",0x2d5,"read_multiple");\n      }\n      lVar9 = lVar9 + pRVar11[start + 1].size;\n      if (0x1fff < lVar9 - (lVar3 + (long)__buf)) goto LAB_0034c6c0;\n      pRVar11 = pRVar11 + start + 2;\n      uVar8 = uVar15;\n      do {\n        uVar16 = uVar8;\n        lVar10 = lVar9;\n        uVar8 = uVar16 + 1;\n        uVar18 = uVar8;\n        if ((uVar7 <= uVar8) || (uVar18 = start + 0x80, uVar8 == start + 0x80)) break;\n        if (pRVar11->file_offset < lVar10) goto LAB_0034c6de;\n        lVar9 = pRVar11->file_offset + pRVar11->size;\n        pRVar11 = pRVar11 + 1;\n        uVar18 = uVar8;\n      } while (lVar9 - lVar10 < 0x2000);\n      uVar8 = lVar3 + base;\n      if (uVar16 == start) goto LAB_0034c6c0;\n      pvVar17 = (void *)(lVar10 - lVar3);\n      if ((this->size_ < (long)uVar8) || ((void *)(this->size_ - uVar8) < pvVar17)) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/fileread.cc",0x150,"find_view");\n      }\n      pVVar12 = this->whole_file_view_;\n      if (pVVar12 == (View *)0x0) {\n        p_Var13 = (this->views_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent;\n        lVar9 = (uVar8 & 0xffffffffffffe000) - 1;\n        p_Var6 = &p_Var5->_M_header;\n        if (p_Var13 != (_Rb_tree_node_base *)0x0) {\n          do {\n            while ((lVar9 < *(long *)(p_Var13 + 1) ||\n                   ((lVar9 == *(long *)(p_Var13 + 1) && (*(int *)&p_Var13[1]._M_parent != 0))))) {\n              pp_Var1 = &p_Var13->_M_left;\n              p_Var6 = p_Var13;\n              p_Var13 = *pp_Var1;\n              if (*pp_Var1 == (_Base_ptr)0x0) goto LAB_0034c5f6;\n            }\n            p_Var13 = p_Var13->_M_right;\n          } while (p_Var13 != (_Base_ptr)0x0);\nLAB_0034c5f6:\n          if ((_Rb_tree_header *)p_Var6 != p_Var5) {\n            lVar9 = *(long *)(p_Var6 + 1);\n            while (lVar9 <= (long)(uVar8 & 0xffffffffffffe000)) {\n              pVVar12 = (View *)p_Var6[1]._M_left;\n              lVar9 = pVVar12->start_;\n              if ((lVar9 <= (long)uVar8) &&\n                 (lVar10 + base <= (long)&((_Base_ptr)pVVar12->size_)->_M_color + lVar9)) {\n                pVVar12->accessed_ = true;\n                goto LAB_0034c524;\n              }\n              p_Var6 = (_Rb_tree_node_base *)std::_Rb_tree_increment(p_Var6);\n              if (p_Var5 == (_Rb_tree_header *)p_Var6) break;\n              lVar9 = *(long *)(p_Var6 + 1);\n            }\n          }\n        }\n        do_readv(this,base,rm,start,uVar18 - start);\n        start = uVar18;\n      }\n      else {\n        lVar9 = pVVar12->start_;\nLAB_0034c524:\n        p_Var13 = (_Base_ptr)pVVar12->data_;\n        uVar2 = pVVar12->byteshift_;\n        bVar4 = start < uVar18;\n        start = uVar18;\n        if (bVar4) {\n          if (pvVar17 < __buf) {\nLAB_0034c6f6:\n                    /* WARNING: Subroutine does not return */\n            do_gold_unreachable("../../gold/fileread.cc",0x2f1,"read_multiple");\n          }\n          lVar10 = 0;\n          for (; memcpy(pRVar14->buffer,\n                        (void *)(lVar10 + (uVar8 - lVar9) + (ulong)uVar2 + (long)p_Var13),\n                        (size_t)__buf), uVar15 != uVar18; uVar15 = uVar15 + 1) {\n            pRVar14 = (rm->\n                      super__Vector_base<gold::File_read::Read_multiple_entry,_std::allocator<gold::File_read::Read_multiple_entry>_>\n                      )._M_impl._M_start + uVar15;\n            __buf = (void *)pRVar14->size;\n            lVar10 = pRVar14->file_offset - lVar3;\n            if (pvVar17 < (void *)((long)__buf + lVar10)) goto LAB_0034c6f6;\n          }\n        }\n      }\n    }\n    else {\nLAB_0034c6c0:\n      read(this,(int)lVar3 + (int)base,__buf,(size_t)pRVar14->buffer);\n      start = uVar18;\n    }" if (parenthesized_expression "(uVar15 < uVar7)" ( (binary_expression "uVar15 < uVar7" identifier < identifier) )) (compound_statement "{\n      lVar9 = pRVar11[start + 1].file_offset;\n      if (lVar9 < lVar3 + (long)__buf) {\nLAB_0034c6de:\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/fileread.cc",0x2d5,"read_multiple");\n      }\n      lVar9 = lVar9 + pRVar11[start + 1].size;\n      if (0x1fff < lVar9 - (lVar3 + (long)__buf)) goto LAB_0034c6c0;\n      pRVar11 = pRVar11 + start + 2;\n      uVar8 = uVar15;\n      do {\n        uVar16 = uVar8;\n        lVar10 = lVar9;\n        uVar8 = uVar16 + 1;\n        uVar18 = uVar8;\n        if ((uVar7 <= uVar8) || (uVar18 = start + 0x80, uVar8 == start + 0x80)) break;\n        if (pRVar11->file_offset < lVar10) goto LAB_0034c6de;\n        lVar9 = pRVar11->file_offset + pRVar11->size;\n        pRVar11 = pRVar11 + 1;\n        uVar18 = uVar8;\n      } while (lVar9 - lVar10 < 0x2000);\n      uVar8 = lVar3 + base;\n      if (uVar16 == start) goto LAB_0034c6c0;\n      pvVar17 = (void *)(lVar10 - lVar3);\n      if ((this->size_ < (long)uVar8) || ((void *)(this->size_ - uVar8) < pvVar17)) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/fileread.cc",0x150,"find_view");\n      }\n      pVVar12 = this->whole_file_view_;\n      if (pVVar12 == (View *)0x0) {\n        p_Var13 = (this->views_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent;\n        lVar9 = (uVar8 & 0xffffffffffffe000) - 1;\n        p_Var6 = &p_Var5->_M_header;\n        if (p_Var13 != (_Rb_tree_node_base *)0x0) {\n          do {\n            while ((lVar9 < *(long *)(p_Var13 + 1) ||\n                   ((lVar9 == *(long *)(p_Var13 + 1) && (*(int *)&p_Var13[1]._M_parent != 0))))) {\n              pp_Var1 = &p_Var13->_M_left;\n              p_Var6 = p_Var13;\n              p_Var13 = *pp_Var1;\n              if (*pp_Var1 == (_Base_ptr)0x0) goto LAB_0034c5f6;\n            }\n            p_Var13 = p_Var13->_M_right;\n          } while (p_Var13 != (_Base_ptr)0x0);\nLAB_0034c5f6:\n          if ((_Rb_tree_header *)p_Var6 != p_Var5) {\n            lVar9 = *(long *)(p_Var6 + 1);\n            while (lVar9 <= (long)(uVar8 & 0xffffffffffffe000)) {\n              pVVar12 = (View *)p_Var6[1]._M_left;\n              lVar9 = pVVar12->start_;\n              if ((lVar9 <= (long)uVar8) &&\n                 (lVar10 + base <= (long)&((_Base_ptr)pVVar12->size_)->_M_color + lVar9)) {\n                pVVar12->accessed_ = true;\n                goto LAB_0034c524;\n              }\n              p_Var6 = (_Rb_tree_node_base *)std::_Rb_tree_increment(p_Var6);\n              if (p_Var5 == (_Rb_tree_header *)p_Var6) break;\n              lVar9 = *(long *)(p_Var6 + 1);\n            }\n          }\n        }\n        do_readv(this,base,rm,start,uVar18 - start);\n        start = uVar18;\n      }\n      else {\n        lVar9 = pVVar12->start_;\nLAB_0034c524:\n        p_Var13 = (_Base_ptr)pVVar12->data_;\n        uVar2 = pVVar12->byteshift_;\n        bVar4 = start < uVar18;\n        start = uVar18;\n        if (bVar4) {\n          if (pvVar17 < __buf) {\nLAB_0034c6f6:\n                    /* WARNING: Subroutine does not return */\n            do_gold_unreachable("../../gold/fileread.cc",0x2f1,"read_multiple");\n          }\n          lVar10 = 0;\n          for (; memcpy(pRVar14->buffer,\n                        (void *)(lVar10 + (uVar8 - lVar9) + (ulong)uVar2 + (long)p_Var13),\n                        (size_t)__buf), uVar15 != uVar18; uVar15 = uVar15 + 1) {\n            pRVar14 = (rm->\n                      super__Vector_base<gold::File_read::Read_multiple_entry,_std::allocator<gold::File_read::Read_multiple_entry>_>\n                      )._M_impl._M_start + uVar15;\n            __buf = (void *)pRVar14->size;\n            lVar10 = pRVar14->file_offset - lVar3;\n            if (pvVar17 < (void *)((long)__buf + lVar10)) goto LAB_0034c6f6;\n          }\n        }\n      }\n    }" { (expression_statement "lVar9 = pRVar11[start + 1].file_offset;" (assignment_expression "lVar9 = pRVar11[start + 1].file_offset" identifier = (field_expression "pRVar11[start + 1].file_offset" (subscript_expression "pRVar11[start + 1]" identifier [ (binary_expression "start + 1" identifier + number_literal) ]) . field_identifier)) ;) (if_statement "if (lVar9 < lVar3 + (long)__buf) {\nLAB_0034c6de:\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/fileread.cc",0x2d5,"read_multiple");\n      }" if (parenthesized_expression "(lVar9 < lVar3 + (long)__buf)" ( (binary_expression "lVar9 < lVar3 + (long)__buf" identifier < (binary_expression "lVar3 + (long)__buf" identifier + (cast_expression "(long)__buf" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) )) (compound_statement "{\nLAB_0034c6de:\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/fileread.cc",0x2d5,"read_multiple");\n      }" { (labeled_statement "LAB_0034c6de:\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/fileread.cc",0x2d5,"read_multiple");" statement_identifier : comment (expression_statement "do_gold_unreachable("../../gold/fileread.cc",0x2d5,"read_multiple");" (call_expression "do_gold_unreachable("../../gold/fileread.cc",0x2d5,"read_multiple")" identifier (argument_list "("../../gold/fileread.cc",0x2d5,"read_multiple")" ( (string_literal ""../../gold/fileread.cc"" " string_content ") , number_literal , (string_literal ""read_multiple"" " string_content ") ))) ;)) })) (expression_statement "lVar9 = lVar9 + pRVar11[start + 1].size;" (assignment_expression "lVar9 = lVar9 + pRVar11[start + 1].size" identifier = (binary_expression "lVar9 + pRVar11[start + 1].size" identifier + (field_expression "pRVar11[start + 1].size" (subscript_expression "pRVar11[start + 1]" identifier [ (binary_expression "start + 1" identifier + number_literal) ]) . field_identifier))) ;) (if_statement "if (0x1fff < lVar9 - (lVar3 + (long)__buf)) goto LAB_0034c6c0;" if (parenthesized_expression "(0x1fff < lVar9 - (lVar3 + (long)__buf))" ( (binary_expression "0x1fff < lVar9 - (lVar3 + (long)__buf)" number_literal < (binary_expression "lVar9 - (lVar3 + (long)__buf)" identifier - (parenthesized_expression "(lVar3 + (long)__buf)" ( (binary_expression "lVar3 + (long)__buf" identifier + (cast_expression "(long)__buf" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )))) )) (goto_statement "goto LAB_0034c6c0;" goto statement_identifier ;)) (expression_statement "pRVar11 = pRVar11 + start + 2;" (assignment_expression "pRVar11 = pRVar11 + start + 2" identifier = (binary_expression "pRVar11 + start + 2" (binary_expression "pRVar11 + start" identifier + identifier) + number_literal)) ;) (expression_statement "uVar8 = uVar15;" (assignment_expression "uVar8 = uVar15" identifier = identifier) ;) (do_statement "do {\n        uVar16 = uVar8;\n        lVar10 = lVar9;\n        uVar8 = uVar16 + 1;\n        uVar18 = uVar8;\n        if ((uVar7 <= uVar8) || (uVar18 = start + 0x80, uVar8 == start + 0x80)) break;\n        if (pRVar11->file_offset < lVar10) goto LAB_0034c6de;\n        lVar9 = pRVar11->file_offset + pRVar11->size;\n        pRVar11 = pRVar11 + 1;\n        uVar18 = uVar8;\n      } while (lVar9 - lVar10 < 0x2000);" do (compound_statement "{\n        uVar16 = uVar8;\n        lVar10 = lVar9;\n        uVar8 = uVar16 + 1;\n        uVar18 = uVar8;\n        if ((uVar7 <= uVar8) || (uVar18 = start + 0x80, uVar8 == start + 0x80)) break;\n        if (pRVar11->file_offset < lVar10) goto LAB_0034c6de;\n        lVar9 = pRVar11->file_offset + pRVar11->size;\n        pRVar11 = pRVar11 + 1;\n        uVar18 = uVar8;\n      }" { (expression_statement "uVar16 = uVar8;" (assignment_expression "uVar16 = uVar8" identifier = identifier) ;) (expression_statement "lVar10 = lVar9;" (assignment_expression "lVar10 = lVar9" identifier = identifier) ;) (expression_statement "uVar8 = uVar16 + 1;" (assignment_expression "uVar8 = uVar16 + 1" identifier = (binary_expression "uVar16 + 1" identifier + number_literal)) ;) (expression_statement "uVar18 = uVar8;" (assignment_expression "uVar18 = uVar8" identifier = identifier) ;) (if_statement "if ((uVar7 <= uVar8) || (uVar18 = start + 0x80, uVar8 == start + 0x80)) break;" if (parenthesized_expression "((uVar7 <= uVar8) || (uVar18 = start + 0x80, uVar8 == start + 0x80))" ( (binary_expression "(uVar7 <= uVar8) || (uVar18 = start + 0x80, uVar8 == start + 0x80)" (parenthesized_expression "(uVar7 <= uVar8)" ( (binary_expression "uVar7 <= uVar8" identifier <= identifier) )) || (parenthesized_expression "(uVar18 = start + 0x80, uVar8 == start + 0x80)" ( (comma_expression "uVar18 = start + 0x80, uVar8 == start + 0x80" (assignment_expression "uVar18 = start + 0x80" identifier = (binary_expression "start + 0x80" identifier + number_literal)) , (binary_expression "uVar8 == start + 0x80" identifier == (binary_expression "start + 0x80" identifier + number_literal))) ))) )) (break_statement "break;" break ;)) (if_statement "if (pRVar11->file_offset < lVar10) goto LAB_0034c6de;" if (parenthesized_expression "(pRVar11->file_offset < lVar10)" ( (binary_expression "pRVar11->file_offset < lVar10" (field_expression "pRVar11->file_offset" identifier -> field_identifier) < identifier) )) (goto_statement "goto LAB_0034c6de;" goto statement_identifier ;)) (expression_statement "lVar9 = pRVar11->file_offset + pRVar11->size;" (assignment_expression "lVar9 = pRVar11->file_offset + pRVar11->size" identifier = (binary_expression "pRVar11->file_offset + pRVar11->size" (field_expression "pRVar11->file_offset" identifier -> field_identifier) + (field_expression "pRVar11->size" identifier -> field_identifier))) ;) (expression_statement "pRVar11 = pRVar11 + 1;" (assignment_expression "pRVar11 = pRVar11 + 1" identifier = (binary_expression "pRVar11 + 1" identifier + number_literal)) ;) (expression_statement "uVar18 = uVar8;" (assignment_expression "uVar18 = uVar8" identifier = identifier) ;) }) while (parenthesized_expression "(lVar9 - lVar10 < 0x2000)" ( (binary_expression "lVar9 - lVar10 < 0x2000" (binary_expression "lVar9 - lVar10" identifier - identifier) < number_literal) )) ;) (expression_statement "uVar8 = lVar3 + base;" (assignment_expression "uVar8 = lVar3 + base" identifier = (binary_expression "lVar3 + base" identifier + identifier)) ;) (if_statement "if (uVar16 == start) goto LAB_0034c6c0;" if (parenthesized_expression "(uVar16 == start)" ( (binary_expression "uVar16 == start" identifier == identifier) )) (goto_statement "goto LAB_0034c6c0;" goto statement_identifier ;)) (expression_statement "pvVar17 = (void *)(lVar10 - lVar3);" (assignment_expression "pvVar17 = (void *)(lVar10 - lVar3)" identifier = (cast_expression "(void *)(lVar10 - lVar3)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 - lVar3)" ( (binary_expression "lVar10 - lVar3" identifier - identifier) )))) ;) (if_statement "if ((this->size_ < (long)uVar8) || ((void *)(this->size_ - uVar8) < pvVar17)) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/fileread.cc",0x150,"find_view");\n      }" if (parenthesized_expression "((this->size_ < (long)uVar8) || ((void *)(this->size_ - uVar8) < pvVar17))" ( (binary_expression "(this->size_ < (long)uVar8) || ((void *)(this->size_ - uVar8) < pvVar17)" (parenthesized_expression "(this->size_ < (long)uVar8)" ( (binary_expression "this->size_ < (long)uVar8" (field_expression "this->size_" identifier -> field_identifier) < (cast_expression "(long)uVar8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) || (parenthesized_expression "((void *)(this->size_ - uVar8) < pvVar17)" ( (binary_expression "(void *)(this->size_ - uVar8) < pvVar17" (cast_expression "(void *)(this->size_ - uVar8)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this->size_ - uVar8)" ( (binary_expression "this->size_ - uVar8" (field_expression "this->size_" identifier -> field_identifier) - identifier) ))) < identifier) ))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/fileread.cc",0x150,"find_view");\n      }" { comment (expression_statement "do_gold_unreachable("../../gold/fileread.cc",0x150,"find_view");" (call_expression "do_gold_unreachable("../../gold/fileread.cc",0x150,"find_view")" identifier (argument_list "("../../gold/fileread.cc",0x150,"find_view")" ( (string_literal ""../../gold/fileread.cc"" " string_content ") , number_literal , (string_literal ""find_view"" " string_content ") ))) ;) })) (expression_statement "pVVar12 = this->whole_file_view_;" (assignment_expression "pVVar12 = this->whole_file_view_" identifier = (field_expression "this->whole_file_view_" identifier -> field_identifier)) ;) (if_statement "if (pVVar12 == (View *)0x0) {\n        p_Var13 = (this->views_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent;\n        lVar9 = (uVar8 & 0xffffffffffffe000) - 1;\n        p_Var6 = &p_Var5->_M_header;\n        if (p_Var13 != (_Rb_tree_node_base *)0x0) {\n          do {\n            while ((lVar9 < *(long *)(p_Var13 + 1) ||\n                   ((lVar9 == *(long *)(p_Var13 + 1) && (*(int *)&p_Var13[1]._M_parent != 0))))) {\n              pp_Var1 = &p_Var13->_M_left;\n              p_Var6 = p_Var13;\n              p_Var13 = *pp_Var1;\n              if (*pp_Var1 == (_Base_ptr)0x0) goto LAB_0034c5f6;\n            }\n            p_Var13 = p_Var13->_M_right;\n          } while (p_Var13 != (_Base_ptr)0x0);\nLAB_0034c5f6:\n          if ((_Rb_tree_header *)p_Var6 != p_Var5) {\n            lVar9 = *(long *)(p_Var6 + 1);\n            while (lVar9 <= (long)(uVar8 & 0xffffffffffffe000)) {\n              pVVar12 = (View *)p_Var6[1]._M_left;\n              lVar9 = pVVar12->start_;\n              if ((lVar9 <= (long)uVar8) &&\n                 (lVar10 + base <= (long)&((_Base_ptr)pVVar12->size_)->_M_color + lVar9)) {\n                pVVar12->accessed_ = true;\n                goto LAB_0034c524;\n              }\n              p_Var6 = (_Rb_tree_node_base *)std::_Rb_tree_increment(p_Var6);\n              if (p_Var5 == (_Rb_tree_header *)p_Var6) break;\n              lVar9 = *(long *)(p_Var6 + 1);\n            }\n          }\n        }\n        do_readv(this,base,rm,start,uVar18 - start);\n        start = uVar18;\n      }\n      else {\n        lVar9 = pVVar12->start_;\nLAB_0034c524:\n        p_Var13 = (_Base_ptr)pVVar12->data_;\n        uVar2 = pVVar12->byteshift_;\n        bVar4 = start < uVar18;\n        start = uVar18;\n        if (bVar4) {\n          if (pvVar17 < __buf) {\nLAB_0034c6f6:\n                    /* WARNING: Subroutine does not return */\n            do_gold_unreachable("../../gold/fileread.cc",0x2f1,"read_multiple");\n          }\n          lVar10 = 0;\n          for (; memcpy(pRVar14->buffer,\n                        (void *)(lVar10 + (uVar8 - lVar9) + (ulong)uVar2 + (long)p_Var13),\n                        (size_t)__buf), uVar15 != uVar18; uVar15 = uVar15 + 1) {\n            pRVar14 = (rm->\n                      super__Vector_base<gold::File_read::Read_multiple_entry,_std::allocator<gold::File_read::Read_multiple_entry>_>\n                      )._M_impl._M_start + uVar15;\n            __buf = (void *)pRVar14->size;\n            lVar10 = pRVar14->file_offset - lVar3;\n            if (pvVar17 < (void *)((long)__buf + lVar10)) goto LAB_0034c6f6;\n          }\n        }\n      }" if (parenthesized_expression "(pVVar12 == (View *)0x0)" ( (binary_expression "pVVar12 == (View *)0x0" identifier == (cast_expression "(View *)0x0" ( (type_descriptor "View *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        p_Var13 = (this->views_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent;\n        lVar9 = (uVar8 & 0xffffffffffffe000) - 1;\n        p_Var6 = &p_Var5->_M_header;\n        if (p_Var13 != (_Rb_tree_node_base *)0x0) {\n          do {\n            while ((lVar9 < *(long *)(p_Var13 + 1) ||\n                   ((lVar9 == *(long *)(p_Var13 + 1) && (*(int *)&p_Var13[1]._M_parent != 0))))) {\n              pp_Var1 = &p_Var13->_M_left;\n              p_Var6 = p_Var13;\n              p_Var13 = *pp_Var1;\n              if (*pp_Var1 == (_Base_ptr)0x0) goto LAB_0034c5f6;\n            }\n            p_Var13 = p_Var13->_M_right;\n          } while (p_Var13 != (_Base_ptr)0x0);\nLAB_0034c5f6:\n          if ((_Rb_tree_header *)p_Var6 != p_Var5) {\n            lVar9 = *(long *)(p_Var6 + 1);\n            while (lVar9 <= (long)(uVar8 & 0xffffffffffffe000)) {\n              pVVar12 = (View *)p_Var6[1]._M_left;\n              lVar9 = pVVar12->start_;\n              if ((lVar9 <= (long)uVar8) &&\n                 (lVar10 + base <= (long)&((_Base_ptr)pVVar12->size_)->_M_color + lVar9)) {\n                pVVar12->accessed_ = true;\n                goto LAB_0034c524;\n              }\n              p_Var6 = (_Rb_tree_node_base *)std::_Rb_tree_increment(p_Var6);\n              if (p_Var5 == (_Rb_tree_header *)p_Var6) break;\n              lVar9 = *(long *)(p_Var6 + 1);\n            }\n          }\n        }\n        do_readv(this,base,rm,start,uVar18 - start);\n        start = uVar18;\n      }" { (expression_statement "p_Var13 = (this->views_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent;" (assignment_expression "p_Var13 = (this->views_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent" identifier = (field_expression "(this->views_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent" (field_expression "(this->views_)._M_t._M_impl.super__Rb_tree_header._M_header" (field_expression "(this->views_)._M_t._M_impl.super__Rb_tree_header" (field_expression "(this->views_)._M_t._M_impl" (field_expression "(this->views_)._M_t" (parenthesized_expression "(this->views_)" ( (field_expression "this->views_" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) . field_identifier) . field_identifier)) ;) (expression_statement "lVar9 = (uVar8 & 0xffffffffffffe000) - 1;" (assignment_expression "lVar9 = (uVar8 & 0xffffffffffffe000) - 1" identifier = (binary_expression "(uVar8 & 0xffffffffffffe000) - 1" (parenthesized_expression "(uVar8 & 0xffffffffffffe000)" ( (binary_expression "uVar8 & 0xffffffffffffe000" identifier & number_literal) )) - number_literal)) ;) (expression_statement "p_Var6 = &p_Var5->_M_header;" (assignment_expression "p_Var6 = &p_Var5->_M_header" identifier = (pointer_expression "&p_Var5->_M_header" & (field_expression "p_Var5->_M_header" identifier -> field_identifier))) ;) (if_statement "if (p_Var13 != (_Rb_tree_node_base *)0x0) {\n          do {\n            while ((lVar9 < *(long *)(p_Var13 + 1) ||\n                   ((lVar9 == *(long *)(p_Var13 + 1) && (*(int *)&p_Var13[1]._M_parent != 0))))) {\n              pp_Var1 = &p_Var13->_M_left;\n              p_Var6 = p_Var13;\n              p_Var13 = *pp_Var1;\n              if (*pp_Var1 == (_Base_ptr)0x0) goto LAB_0034c5f6;\n            }\n            p_Var13 = p_Var13->_M_right;\n          } while (p_Var13 != (_Base_ptr)0x0);\nLAB_0034c5f6:\n          if ((_Rb_tree_header *)p_Var6 != p_Var5) {\n            lVar9 = *(long *)(p_Var6 + 1);\n            while (lVar9 <= (long)(uVar8 & 0xffffffffffffe000)) {\n              pVVar12 = (View *)p_Var6[1]._M_left;\n              lVar9 = pVVar12->start_;\n              if ((lVar9 <= (long)uVar8) &&\n                 (lVar10 + base <= (long)&((_Base_ptr)pVVar12->size_)->_M_color + lVar9)) {\n                pVVar12->accessed_ = true;\n                goto LAB_0034c524;\n              }\n              p_Var6 = (_Rb_tree_node_base *)std::_Rb_tree_increment(p_Var6);\n              if (p_Var5 == (_Rb_tree_header *)p_Var6) break;\n              lVar9 = *(long *)(p_Var6 + 1);\n            }\n          }\n        }" if (parenthesized_expression "(p_Var13 != (_Rb_tree_node_base *)0x0)" ( (binary_expression "p_Var13 != (_Rb_tree_node_base *)0x0" identifier != (cast_expression "(_Rb_tree_node_base *)0x0" ( (type_descriptor "_Rb_tree_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          do {\n            while ((lVar9 < *(long *)(p_Var13 + 1) ||\n                   ((lVar9 == *(long *)(p_Var13 + 1) && (*(int *)&p_Var13[1]._M_parent != 0))))) {\n              pp_Var1 = &p_Var13->_M_left;\n              p_Var6 = p_Var13;\n              p_Var13 = *pp_Var1;\n              if (*pp_Var1 == (_Base_ptr)0x0) goto LAB_0034c5f6;\n            }\n            p_Var13 = p_Var13->_M_right;\n          } while (p_Var13 != (_Base_ptr)0x0);\nLAB_0034c5f6:\n          if ((_Rb_tree_header *)p_Var6 != p_Var5) {\n            lVar9 = *(long *)(p_Var6 + 1);\n            while (lVar9 <= (long)(uVar8 & 0xffffffffffffe000)) {\n              pVVar12 = (View *)p_Var6[1]._M_left;\n              lVar9 = pVVar12->start_;\n              if ((lVar9 <= (long)uVar8) &&\n                 (lVar10 + base <= (long)&((_Base_ptr)pVVar12->size_)->_M_color + lVar9)) {\n                pVVar12->accessed_ = true;\n                goto LAB_0034c524;\n              }\n              p_Var6 = (_Rb_tree_node_base *)std::_Rb_tree_increment(p_Var6);\n              if (p_Var5 == (_Rb_tree_header *)p_Var6) break;\n              lVar9 = *(long *)(p_Var6 + 1);\n            }\n          }\n        }" { (do_statement "do {\n            while ((lVar9 < *(long *)(p_Var13 + 1) ||\n                   ((lVar9 == *(long *)(p_Var13 + 1) && (*(int *)&p_Var13[1]._M_parent != 0))))) {\n              pp_Var1 = &p_Var13->_M_left;\n              p_Var6 = p_Var13;\n              p_Var13 = *pp_Var1;\n              if (*pp_Var1 == (_Base_ptr)0x0) goto LAB_0034c5f6;\n            }\n            p_Var13 = p_Var13->_M_right;\n          } while (p_Var13 != (_Base_ptr)0x0);" do (compound_statement "{\n            while ((lVar9 < *(long *)(p_Var13 + 1) ||\n                   ((lVar9 == *(long *)(p_Var13 + 1) && (*(int *)&p_Var13[1]._M_parent != 0))))) {\n              pp_Var1 = &p_Var13->_M_left;\n              p_Var6 = p_Var13;\n              p_Var13 = *pp_Var1;\n              if (*pp_Var1 == (_Base_ptr)0x0) goto LAB_0034c5f6;\n            }\n            p_Var13 = p_Var13->_M_right;\n          }" { (while_statement "while ((lVar9 < *(long *)(p_Var13 + 1) ||\n                   ((lVar9 == *(long *)(p_Var13 + 1) && (*(int *)&p_Var13[1]._M_parent != 0))))) {\n              pp_Var1 = &p_Var13->_M_left;\n              p_Var6 = p_Var13;\n              p_Var13 = *pp_Var1;\n              if (*pp_Var1 == (_Base_ptr)0x0) goto LAB_0034c5f6;\n            }" while (parenthesized_expression "((lVar9 < *(long *)(p_Var13 + 1) ||\n                   ((lVar9 == *(long *)(p_Var13 + 1) && (*(int *)&p_Var13[1]._M_parent != 0)))))" ( (parenthesized_expression "(lVar9 < *(long *)(p_Var13 + 1) ||\n                   ((lVar9 == *(long *)(p_Var13 + 1) && (*(int *)&p_Var13[1]._M_parent != 0))))" ( (binary_expression "lVar9 < *(long *)(p_Var13 + 1) ||\n                   ((lVar9 == *(long *)(p_Var13 + 1) && (*(int *)&p_Var13[1]._M_parent != 0)))" (binary_expression "lVar9 < *(long *)(p_Var13 + 1)" identifier < (pointer_expression "*(long *)(p_Var13 + 1)" * (cast_expression "(long *)(p_Var13 + 1)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var13 + 1)" ( (binary_expression "p_Var13 + 1" identifier + number_literal) ))))) || (parenthesized_expression "((lVar9 == *(long *)(p_Var13 + 1) && (*(int *)&p_Var13[1]._M_parent != 0)))" ( (parenthesized_expression "(lVar9 == *(long *)(p_Var13 + 1) && (*(int *)&p_Var13[1]._M_parent != 0))" ( (binary_expression "lVar9 == *(long *)(p_Var13 + 1) && (*(int *)&p_Var13[1]._M_parent != 0)" (binary_expression "lVar9 == *(long *)(p_Var13 + 1)" identifier == (pointer_expression "*(long *)(p_Var13 + 1)" * (cast_expression "(long *)(p_Var13 + 1)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var13 + 1)" ( (binary_expression "p_Var13 + 1" identifier + number_literal) ))))) && (parenthesized_expression "(*(int *)&p_Var13[1]._M_parent != 0)" ( (binary_expression "*(int *)&p_Var13[1]._M_parent != 0" (pointer_expression "*(int *)&p_Var13[1]._M_parent" * (cast_expression "(int *)&p_Var13[1]._M_parent" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&p_Var13[1]._M_parent" & (field_expression "p_Var13[1]._M_parent" (subscript_expression "p_Var13[1]" identifier [ number_literal ]) . field_identifier)))) != number_literal) ))) )) ))) )) )) (compound_statement "{\n              pp_Var1 = &p_Var13->_M_left;\n              p_Var6 = p_Var13;\n              p_Var13 = *pp_Var1;\n              if (*pp_Var1 == (_Base_ptr)0x0) goto LAB_0034c5f6;\n            }" { (expression_statement "pp_Var1 = &p_Var13->_M_left;" (assignment_expression "pp_Var1 = &p_Var13->_M_left" identifier = (pointer_expression "&p_Var13->_M_left" & (field_expression "p_Var13->_M_left" identifier -> field_identifier))) ;) (expression_statement "p_Var6 = p_Var13;" (assignment_expression "p_Var6 = p_Var13" identifier = identifier) ;) (expression_statement "p_Var13 = *pp_Var1;" (assignment_expression "p_Var13 = *pp_Var1" identifier = (pointer_expression "*pp_Var1" * identifier)) ;) (if_statement "if (*pp_Var1 == (_Base_ptr)0x0) goto LAB_0034c5f6;" if (parenthesized_expression "(*pp_Var1 == (_Base_ptr)0x0)" ( (binary_expression "*pp_Var1 == (_Base_ptr)0x0" (pointer_expression "*pp_Var1" * identifier) == (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) )) (goto_statement "goto LAB_0034c5f6;" goto statement_identifier ;)) })) (expression_statement "p_Var13 = p_Var13->_M_right;" (assignment_expression "p_Var13 = p_Var13->_M_right" identifier = (field_expression "p_Var13->_M_right" identifier -> field_identifier)) ;) }) while (parenthesized_expression "(p_Var13 != (_Base_ptr)0x0)" ( (binary_expression "p_Var13 != (_Base_ptr)0x0" identifier != (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) )) ;) (labeled_statement "LAB_0034c5f6:\n          if ((_Rb_tree_header *)p_Var6 != p_Var5) {\n            lVar9 = *(long *)(p_Var6 + 1);\n            while (lVar9 <= (long)(uVar8 & 0xffffffffffffe000)) {\n              pVVar12 = (View *)p_Var6[1]._M_left;\n              lVar9 = pVVar12->start_;\n              if ((lVar9 <= (long)uVar8) &&\n                 (lVar10 + base <= (long)&((_Base_ptr)pVVar12->size_)->_M_color + lVar9)) {\n                pVVar12->accessed_ = true;\n                goto LAB_0034c524;\n              }\n              p_Var6 = (_Rb_tree_node_base *)std::_Rb_tree_increment(p_Var6);\n              if (p_Var5 == (_Rb_tree_header *)p_Var6) break;\n              lVar9 = *(long *)(p_Var6 + 1);\n            }\n          }" statement_identifier : (if_statement "if ((_Rb_tree_header *)p_Var6 != p_Var5) {\n            lVar9 = *(long *)(p_Var6 + 1);\n            while (lVar9 <= (long)(uVar8 & 0xffffffffffffe000)) {\n              pVVar12 = (View *)p_Var6[1]._M_left;\n              lVar9 = pVVar12->start_;\n              if ((lVar9 <= (long)uVar8) &&\n                 (lVar10 + base <= (long)&((_Base_ptr)pVVar12->size_)->_M_color + lVar9)) {\n                pVVar12->accessed_ = true;\n                goto LAB_0034c524;\n              }\n              p_Var6 = (_Rb_tree_node_base *)std::_Rb_tree_increment(p_Var6);\n              if (p_Var5 == (_Rb_tree_header *)p_Var6) break;\n              lVar9 = *(long *)(p_Var6 + 1);\n            }\n          }" if (parenthesized_expression "((_Rb_tree_header *)p_Var6 != p_Var5)" ( (binary_expression "(_Rb_tree_header *)p_Var6 != p_Var5" (cast_expression "(_Rb_tree_header *)p_Var6" ( (type_descriptor "_Rb_tree_header *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) != identifier) )) (compound_statement "{\n            lVar9 = *(long *)(p_Var6 + 1);\n            while (lVar9 <= (long)(uVar8 & 0xffffffffffffe000)) {\n              pVVar12 = (View *)p_Var6[1]._M_left;\n              lVar9 = pVVar12->start_;\n              if ((lVar9 <= (long)uVar8) &&\n                 (lVar10 + base <= (long)&((_Base_ptr)pVVar12->size_)->_M_color + lVar9)) {\n                pVVar12->accessed_ = true;\n                goto LAB_0034c524;\n              }\n              p_Var6 = (_Rb_tree_node_base *)std::_Rb_tree_increment(p_Var6);\n              if (p_Var5 == (_Rb_tree_header *)p_Var6) break;\n              lVar9 = *(long *)(p_Var6 + 1);\n            }\n          }" { (expression_statement "lVar9 = *(long *)(p_Var6 + 1);" (assignment_expression "lVar9 = *(long *)(p_Var6 + 1)" identifier = (pointer_expression "*(long *)(p_Var6 + 1)" * (cast_expression "(long *)(p_Var6 + 1)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var6 + 1)" ( (binary_expression "p_Var6 + 1" identifier + number_literal) ))))) ;) (while_statement "while (lVar9 <= (long)(uVar8 & 0xffffffffffffe000)) {\n              pVVar12 = (View *)p_Var6[1]._M_left;\n              lVar9 = pVVar12->start_;\n              if ((lVar9 <= (long)uVar8) &&\n                 (lVar10 + base <= (long)&((_Base_ptr)pVVar12->size_)->_M_color + lVar9)) {\n                pVVar12->accessed_ = true;\n                goto LAB_0034c524;\n              }\n              p_Var6 = (_Rb_tree_node_base *)std::_Rb_tree_increment(p_Var6);\n              if (p_Var5 == (_Rb_tree_header *)p_Var6) break;\n              lVar9 = *(long *)(p_Var6 + 1);\n            }" while (parenthesized_expression "(lVar9 <= (long)(uVar8 & 0xffffffffffffe000))" ( (binary_expression "lVar9 <= (long)(uVar8 & 0xffffffffffffe000)" identifier <= (cast_expression "(long)(uVar8 & 0xffffffffffffe000)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(uVar8 & 0xffffffffffffe000)" ( (binary_expression "uVar8 & 0xffffffffffffe000" identifier & number_literal) )))) )) (compound_statement "{\n              pVVar12 = (View *)p_Var6[1]._M_left;\n              lVar9 = pVVar12->start_;\n              if ((lVar9 <= (long)uVar8) &&\n                 (lVar10 + base <= (long)&((_Base_ptr)pVVar12->size_)->_M_color + lVar9)) {\n                pVVar12->accessed_ = true;\n                goto LAB_0034c524;\n              }\n              p_Var6 = (_Rb_tree_node_base *)std::_Rb_tree_increment(p_Var6);\n              if (p_Var5 == (_Rb_tree_header *)p_Var6) break;\n              lVar9 = *(long *)(p_Var6 + 1);\n            }" { (expression_statement "pVVar12 = (View *)p_Var6[1]._M_left;" (assignment_expression "pVVar12 = (View *)p_Var6[1]._M_left" identifier = (cast_expression "(View *)p_Var6[1]._M_left" ( (type_descriptor "View *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "p_Var6[1]._M_left" (subscript_expression "p_Var6[1]" identifier [ number_literal ]) . field_identifier))) ;) (expression_statement "lVar9 = pVVar12->start_;" (assignment_expression "lVar9 = pVVar12->start_" identifier = (field_expression "pVVar12->start_" identifier -> field_identifier)) ;) (if_statement "if ((lVar9 <= (long)uVar8) &&\n                 (lVar10 + base <= (long)&((_Base_ptr)pVVar12->size_)->_M_color + lVar9)) {\n                pVVar12->accessed_ = true;\n                goto LAB_0034c524;\n              }" if (parenthesized_expression "((lVar9 <= (long)uVar8) &&\n                 (lVar10 + base <= (long)&((_Base_ptr)pVVar12->size_)->_M_color + lVar9))" ( (binary_expression "(lVar9 <= (long)uVar8) &&\n                 (lVar10 + base <= (long)&((_Base_ptr)pVVar12->size_)->_M_color + lVar9)" (parenthesized_expression "(lVar9 <= (long)uVar8)" ( (binary_expression "lVar9 <= (long)uVar8" identifier <= (cast_expression "(long)uVar8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) && (parenthesized_expression "(lVar10 + base <= (long)&((_Base_ptr)pVVar12->size_)->_M_color + lVar9)" ( (binary_expression "lVar10 + base <= (long)&((_Base_ptr)pVVar12->size_)->_M_color + lVar9" (binary_expression "lVar10 + base" identifier + identifier) <= (binary_expression "(long)&((_Base_ptr)pVVar12->size_)->_M_color + lVar9" (cast_expression "(long)&((_Base_ptr)pVVar12->size_)->_M_color" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&((_Base_ptr)pVVar12->size_)->_M_color" & (field_expression "((_Base_ptr)pVVar12->size_)->_M_color" (parenthesized_expression "((_Base_ptr)pVVar12->size_)" ( (cast_expression "(_Base_ptr)pVVar12->size_" ( (type_descriptor "_Base_ptr" type_identifier) ) (field_expression "pVVar12->size_" identifier -> field_identifier)) )) -> field_identifier))) + identifier)) ))) )) (compound_statement "{\n                pVVar12->accessed_ = true;\n                goto LAB_0034c524;\n              }" { (expression_statement "pVVar12->accessed_ = true;" (assignment_expression "pVVar12->accessed_ = true" (field_expression "pVVar12->accessed_" identifier -> field_identifier) = true) ;) (goto_statement "goto LAB_0034c524;" goto statement_identifier ;) })) (ERROR "p_Var6 = (_Rb_tree_node_base *)std::" (assignment_expression "p_Var6 = (_Rb_tree_node_base *)std" identifier = (cast_expression "(_Rb_tree_node_base *)std" ( (type_descriptor "_Rb_tree_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) : :) (expression_statement "_Rb_tree_increment(p_Var6);" (call_expression "_Rb_tree_increment(p_Var6)" identifier (argument_list "(p_Var6)" ( identifier ))) ;) (if_statement "if (p_Var5 == (_Rb_tree_header *)p_Var6) break;" if (parenthesized_expression "(p_Var5 == (_Rb_tree_header *)p_Var6)" ( (binary_expression "p_Var5 == (_Rb_tree_header *)p_Var6" identifier == (cast_expression "(_Rb_tree_header *)p_Var6" ( (type_descriptor "_Rb_tree_header *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (break_statement "break;" break ;)) (expression_statement "lVar9 = *(long *)(p_Var6 + 1);" (assignment_expression "lVar9 = *(long *)(p_Var6 + 1)" identifier = (pointer_expression "*(long *)(p_Var6 + 1)" * (cast_expression "(long *)(p_Var6 + 1)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var6 + 1)" ( (binary_expression "p_Var6 + 1" identifier + number_literal) ))))) ;) })) }))) })) (expression_statement "do_readv(this,base,rm,start,uVar18 - start);" (call_expression "do_readv(this,base,rm,start,uVar18 - start)" identifier (argument_list "(this,base,rm,start,uVar18 - start)" ( identifier , identifier , identifier , identifier , (binary_expression "uVar18 - start" identifier - identifier) ))) ;) (expression_statement "start = uVar18;" (assignment_expression "start = uVar18" identifier = identifier) ;) }) (else_clause "else {\n        lVar9 = pVVar12->start_;\nLAB_0034c524:\n        p_Var13 = (_Base_ptr)pVVar12->data_;\n        uVar2 = pVVar12->byteshift_;\n        bVar4 = start < uVar18;\n        start = uVar18;\n        if (bVar4) {\n          if (pvVar17 < __buf) {\nLAB_0034c6f6:\n                    /* WARNING: Subroutine does not return */\n            do_gold_unreachable("../../gold/fileread.cc",0x2f1,"read_multiple");\n          }\n          lVar10 = 0;\n          for (; memcpy(pRVar14->buffer,\n                        (void *)(lVar10 + (uVar8 - lVar9) + (ulong)uVar2 + (long)p_Var13),\n                        (size_t)__buf), uVar15 != uVar18; uVar15 = uVar15 + 1) {\n            pRVar14 = (rm->\n                      super__Vector_base<gold::File_read::Read_multiple_entry,_std::allocator<gold::File_read::Read_multiple_entry>_>\n                      )._M_impl._M_start + uVar15;\n            __buf = (void *)pRVar14->size;\n            lVar10 = pRVar14->file_offset - lVar3;\n            if (pvVar17 < (void *)((long)__buf + lVar10)) goto LAB_0034c6f6;\n          }\n        }\n      }" else (compound_statement "{\n        lVar9 = pVVar12->start_;\nLAB_0034c524:\n        p_Var13 = (_Base_ptr)pVVar12->data_;\n        uVar2 = pVVar12->byteshift_;\n        bVar4 = start < uVar18;\n        start = uVar18;\n        if (bVar4) {\n          if (pvVar17 < __buf) {\nLAB_0034c6f6:\n                    /* WARNING: Subroutine does not return */\n            do_gold_unreachable("../../gold/fileread.cc",0x2f1,"read_multiple");\n          }\n          lVar10 = 0;\n          for (; memcpy(pRVar14->buffer,\n                        (void *)(lVar10 + (uVar8 - lVar9) + (ulong)uVar2 + (long)p_Var13),\n                        (size_t)__buf), uVar15 != uVar18; uVar15 = uVar15 + 1) {\n            pRVar14 = (rm->\n                      super__Vector_base<gold::File_read::Read_multiple_entry,_std::allocator<gold::File_read::Read_multiple_entry>_>\n                      )._M_impl._M_start + uVar15;\n            __buf = (void *)pRVar14->size;\n            lVar10 = pRVar14->file_offset - lVar3;\n            if (pvVar17 < (void *)((long)__buf + lVar10)) goto LAB_0034c6f6;\n          }\n        }\n      }" { (expression_statement "lVar9 = pVVar12->start_;" (assignment_expression "lVar9 = pVVar12->start_" identifier = (field_expression "pVVar12->start_" identifier -> field_identifier)) ;) (labeled_statement "LAB_0034c524:\n        p_Var13 = (_Base_ptr)pVVar12->data_;" statement_identifier : (expression_statement "p_Var13 = (_Base_ptr)pVVar12->data_;" (assignment_expression "p_Var13 = (_Base_ptr)pVVar12->data_" identifier = (cast_expression "(_Base_ptr)pVVar12->data_" ( (type_descriptor "_Base_ptr" type_identifier) ) (field_expression "pVVar12->data_" identifier -> field_identifier))) ;)) (expression_statement "uVar2 = pVVar12->byteshift_;" (assignment_expression "uVar2 = pVVar12->byteshift_" identifier = (field_expression "pVVar12->byteshift_" identifier -> field_identifier)) ;) (expression_statement "bVar4 = start < uVar18;" (assignment_expression "bVar4 = start < uVar18" identifier = (binary_expression "start < uVar18" identifier < identifier)) ;) (expression_statement "start = uVar18;" (assignment_expression "start = uVar18" identifier = identifier) ;) (if_statement "if (bVar4) {\n          if (pvVar17 < __buf) {\nLAB_0034c6f6:\n                    /* WARNING: Subroutine does not return */\n            do_gold_unreachable("../../gold/fileread.cc",0x2f1,"read_multiple");\n          }\n          lVar10 = 0;\n          for (; memcpy(pRVar14->buffer,\n                        (void *)(lVar10 + (uVar8 - lVar9) + (ulong)uVar2 + (long)p_Var13),\n                        (size_t)__buf), uVar15 != uVar18; uVar15 = uVar15 + 1) {\n            pRVar14 = (rm->\n                      super__Vector_base<gold::File_read::Read_multiple_entry,_std::allocator<gold::File_read::Read_multiple_entry>_>\n                      )._M_impl._M_start + uVar15;\n            __buf = (void *)pRVar14->size;\n            lVar10 = pRVar14->file_offset - lVar3;\n            if (pvVar17 < (void *)((long)__buf + lVar10)) goto LAB_0034c6f6;\n          }\n        }" if (parenthesized_expression "(bVar4)" ( identifier )) (compound_statement "{\n          if (pvVar17 < __buf) {\nLAB_0034c6f6:\n                    /* WARNING: Subroutine does not return */\n            do_gold_unreachable("../../gold/fileread.cc",0x2f1,"read_multiple");\n          }\n          lVar10 = 0;\n          for (; memcpy(pRVar14->buffer,\n                        (void *)(lVar10 + (uVar8 - lVar9) + (ulong)uVar2 + (long)p_Var13),\n                        (size_t)__buf), uVar15 != uVar18; uVar15 = uVar15 + 1) {\n            pRVar14 = (rm->\n                      super__Vector_base<gold::File_read::Read_multiple_entry,_std::allocator<gold::File_read::Read_multiple_entry>_>\n                      )._M_impl._M_start + uVar15;\n            __buf = (void *)pRVar14->size;\n            lVar10 = pRVar14->file_offset - lVar3;\n            if (pvVar17 < (void *)((long)__buf + lVar10)) goto LAB_0034c6f6;\n          }\n        }" { (if_statement "if (pvVar17 < __buf) {\nLAB_0034c6f6:\n                    /* WARNING: Subroutine does not return */\n            do_gold_unreachable("../../gold/fileread.cc",0x2f1,"read_multiple");\n          }" if (parenthesized_expression "(pvVar17 < __buf)" ( (binary_expression "pvVar17 < __buf" identifier < identifier) )) (compound_statement "{\nLAB_0034c6f6:\n                    /* WARNING: Subroutine does not return */\n            do_gold_unreachable("../../gold/fileread.cc",0x2f1,"read_multiple");\n          }" { (labeled_statement "LAB_0034c6f6:\n                    /* WARNING: Subroutine does not return */\n            do_gold_unreachable("../../gold/fileread.cc",0x2f1,"read_multiple");" statement_identifier : comment (expression_statement "do_gold_unreachable("../../gold/fileread.cc",0x2f1,"read_multiple");" (call_expression "do_gold_unreachable("../../gold/fileread.cc",0x2f1,"read_multiple")" identifier (argument_list "("../../gold/fileread.cc",0x2f1,"read_multiple")" ( (string_literal ""../../gold/fileread.cc"" " string_content ") , number_literal , (string_literal ""read_multiple"" " string_content ") ))) ;)) })) (expression_statement "lVar10 = 0;" (assignment_expression "lVar10 = 0" identifier = number_literal) ;) (for_statement "for (; memcpy(pRVar14->buffer,\n                        (void *)(lVar10 + (uVar8 - lVar9) + (ulong)uVar2 + (long)p_Var13),\n                        (size_t)__buf), uVar15 != uVar18; uVar15 = uVar15 + 1) {\n            pRVar14 = (rm->\n                      super__Vector_base<gold::File_read::Read_multiple_entry,_std::allocator<gold::File_read::Read_multiple_entry>_>\n                      )._M_impl._M_start + uVar15;\n            __buf = (void *)pRVar14->size;\n            lVar10 = pRVar14->file_offset - lVar3;\n            if (pvVar17 < (void *)((long)__buf + lVar10)) goto LAB_0034c6f6;\n          }" for ( ; (comma_expression "memcpy(pRVar14->buffer,\n                        (void *)(lVar10 + (uVar8 - lVar9) + (ulong)uVar2 + (long)p_Var13),\n                        (size_t)__buf), uVar15 != uVar18" (call_expression "memcpy(pRVar14->buffer,\n                        (void *)(lVar10 + (uVar8 - lVar9) + (ulong)uVar2 + (long)p_Var13),\n                        (size_t)__buf)" identifier (argument_list "(pRVar14->buffer,\n                        (void *)(lVar10 + (uVar8 - lVar9) + (ulong)uVar2 + (long)p_Var13),\n                        (size_t)__buf)" ( (field_expression "pRVar14->buffer" identifier -> field_identifier) , (cast_expression "(void *)(lVar10 + (uVar8 - lVar9) + (ulong)uVar2 + (long)p_Var13)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + (uVar8 - lVar9) + (ulong)uVar2 + (long)p_Var13)" ( (binary_expression "lVar10 + (uVar8 - lVar9) + (ulong)uVar2 + (long)p_Var13" (binary_expression "lVar10 + (uVar8 - lVar9) + (ulong)uVar2" (binary_expression "lVar10 + (uVar8 - lVar9)" identifier + (parenthesized_expression "(uVar8 - lVar9)" ( (binary_expression "uVar8 - lVar9" identifier - identifier) ))) + (cast_expression "(ulong)uVar2" ( (type_descriptor "ulong" type_identifier) ) identifier)) + (cast_expression "(long)p_Var13" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ))) , (cast_expression "(size_t)__buf" ( (type_descriptor "size_t" primitive_type) ) identifier) ))) , (binary_expression "uVar15 != uVar18" identifier != identifier)) ; (assignment_expression "uVar15 = uVar15 + 1" identifier = (binary_expression "uVar15 + 1" identifier + number_literal)) ) (compound_statement "{\n            pRVar14 = (rm->\n                      super__Vector_base<gold::File_read::Read_multiple_entry,_std::allocator<gold::File_read::Read_multiple_entry>_>\n                      )._M_impl._M_start + uVar15;\n            __buf = (void *)pRVar14->size;\n            lVar10 = pRVar14->file_offset - lVar3;\n            if (pvVar17 < (void *)((long)__buf + lVar10)) goto LAB_0034c6f6;\n          }" { (expression_statement "pRVar14 = (rm->\n                      super__Vector_base<gold::File_read::Read_multiple_entry,_std::allocator<gold::File_read::Read_multiple_entry>_>\n                      )._M_impl._M_start + uVar15;" (assignment_expression "pRVar14 = (rm->\n                      super__Vector_base<gold::File_read::Read_multiple_entry,_std::allocator<gold::File_read::Read_multiple_entry>_>\n                      )._M_impl._M_start + uVar15" identifier = (binary_expression "(rm->\n                      super__Vector_base<gold::File_read::Read_multiple_entry,_std::allocator<gold::File_read::Read_multiple_entry>_>\n                      )._M_impl._M_start + uVar15" (field_expression "(rm->\n                      super__Vector_base<gold::File_read::Read_multiple_entry,_std::allocator<gold::File_read::Read_multiple_entry>_>\n                      )._M_impl._M_start" (field_expression "(rm->\n                      super__Vector_base<gold::File_read::Read_multiple_entry,_std::allocator<gold::File_read::Read_multiple_entry>_>\n                      )._M_impl" (parenthesized_expression "(rm->\n                      super__Vector_base<gold::File_read::Read_multiple_entry,_std::allocator<gold::File_read::Read_multiple_entry>_>\n                      )" ( (ERROR "rm->\n                      super__Vector_base<gold::File_read::Read_multiple_entry,_std::allocator<gold::File_read::" (comma_expression "rm->\n                      super__Vector_base<gold::File_read::Read_multiple_entry,_std" (binary_expression "rm->\n                      super__Vector_base<gold" (field_expression "rm->\n                      super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::File_read::Read_multiple_entry" : : identifier : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : identifier : :) (binary_expression "Read_multiple_entry>_>" (binary_expression "Read_multiple_entry>_" identifier > identifier) > identifier) )) . field_identifier) . field_identifier) + identifier)) ;) (expression_statement "__buf = (void *)pRVar14->size;" (assignment_expression "__buf = (void *)pRVar14->size" identifier = (cast_expression "(void *)pRVar14->size" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (field_expression "pRVar14->size" identifier -> field_identifier))) ;) (expression_statement "lVar10 = pRVar14->file_offset - lVar3;" (assignment_expression "lVar10 = pRVar14->file_offset - lVar3" identifier = (binary_expression "pRVar14->file_offset - lVar3" (field_expression "pRVar14->file_offset" identifier -> field_identifier) - identifier)) ;) (if_statement "if (pvVar17 < (void *)((long)__buf + lVar10)) goto LAB_0034c6f6;" if (parenthesized_expression "(pvVar17 < (void *)((long)__buf + lVar10))" ( (binary_expression "pvVar17 < (void *)((long)__buf + lVar10)" identifier < (cast_expression "(void *)((long)__buf + lVar10)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)__buf + lVar10)" ( (binary_expression "(long)__buf + lVar10" (cast_expression "(long)__buf" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) )) (goto_statement "goto LAB_0034c6f6;" goto statement_identifier ;)) })) })) }))) }) (else_clause "else {\nLAB_0034c6c0:\n      read(this,(int)lVar3 + (int)base,__buf,(size_t)pRVar14->buffer);\n      start = uVar18;\n    }" else (compound_statement "{\nLAB_0034c6c0:\n      read(this,(int)lVar3 + (int)base,__buf,(size_t)pRVar14->buffer);\n      start = uVar18;\n    }" { (labeled_statement "LAB_0034c6c0:\n      read(this,(int)lVar3 + (int)base,__buf,(size_t)pRVar14->buffer);" statement_identifier : (expression_statement "read(this,(int)lVar3 + (int)base,__buf,(size_t)pRVar14->buffer);" (call_expression "read(this,(int)lVar3 + (int)base,__buf,(size_t)pRVar14->buffer)" identifier (argument_list "(this,(int)lVar3 + (int)base,__buf,(size_t)pRVar14->buffer)" ( identifier , (binary_expression "(int)lVar3 + (int)base" (cast_expression "(int)lVar3" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)base" ( (type_descriptor "int" primitive_type) ) identifier)) , identifier , (cast_expression "(size_t)pRVar14->buffer" ( (type_descriptor "size_t" primitive_type) ) (field_expression "pRVar14->buffer" identifier -> field_identifier)) ))) ;)) (expression_statement "start = uVar18;" (assignment_expression "start = uVar18" identifier = identifier) ;) }))) (if_statement "if (uVar7 <= start) {\n      return;\n    }" if (parenthesized_expression "(uVar7 <= start)" ( (binary_expression "uVar7 <= start" identifier <= identifier) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (expression_statement "pRVar11 = (rm->\n              super__Vector_base<gold::File_read::Read_multiple_entry,_std::allocator<gold::File_read::Read_multiple_entry>_>\n              )._M_impl._M_start;" (assignment_expression "pRVar11 = (rm->\n              super__Vector_base<gold::File_read::Read_multiple_entry,_std::allocator<gold::File_read::Read_multiple_entry>_>\n              )._M_impl._M_start" identifier = (field_expression "(rm->\n              super__Vector_base<gold::File_read::Read_multiple_entry,_std::allocator<gold::File_read::Read_multiple_entry>_>\n              )._M_impl._M_start" (field_expression "(rm->\n              super__Vector_base<gold::File_read::Read_multiple_entry,_std::allocator<gold::File_read::Read_multiple_entry>_>\n              )._M_impl" (parenthesized_expression "(rm->\n              super__Vector_base<gold::File_read::Read_multiple_entry,_std::allocator<gold::File_read::Read_multiple_entry>_>\n              )" ( (ERROR "rm->\n              super__Vector_base<gold::File_read::Read_multiple_entry,_std::allocator<gold::File_read::" (comma_expression "rm->\n              super__Vector_base<gold::File_read::Read_multiple_entry,_std" (binary_expression "rm->\n              super__Vector_base<gold" (field_expression "rm->\n              super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::File_read::Read_multiple_entry" : : identifier : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : identifier : :) (binary_expression "Read_multiple_entry>_>" (binary_expression "Read_multiple_entry>_" identifier > identifier) > identifier) )) . field_identifier) . field_identifier)) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "void FUN_0034c3e0(long param_1,long param_2,long *param_3)\n\n{\n  uint uVar1;\n  long lVar2;\n  bool bVar3;\n  long lVar4;\n  long lVar5;\n  long lVar6;\n  ulong uVar7;\n  ulong __n;\n  ulong uVar8;\n  ulong uVar9;\n  long lVar10;\n  long *plVar11;\n  long lVar12;\n  long *plVar13;\n  ulong uVar14;\n  ulong uVar15;\n  ulong uVar16;\n  \n  lVar12 = *param_3;\n  uVar8 = (param_3[1] - lVar12 >> 3) * -0x5555555555555555;\n  if (uVar8 == 0) {\n    return;\n  }\n  uVar7 = 0;\n  lVar4 = param_1 + 0x60;\n  do {\n    uVar14 = uVar7 + 1;\n    lVar5 = uVar7 * 0x18;\n    plVar13 = (long *)(lVar12 + lVar5);\n    lVar2 = *plVar13;\n    __n = plVar13[1];\n    uVar16 = uVar14;\n    if (uVar14 < uVar8) {\n      plVar11 = (long *)(lVar12 + 0x18 + lVar5);\n      lVar10 = *plVar11;\n      if (lVar10 < (long)(lVar2 + __n)) {\nLAB_0034c6de:\n                    \n        FUN_00352af0("../../gold/fileread.cc",0x2d5,"read_multiple");\n      }\n      lVar10 = lVar10 + plVar11[1];\n      if (0x1fff < (long)(lVar10 - (lVar2 + __n))) goto LAB_0034c6c0;\n      plVar11 = (long *)(lVar12 + 0x30 + lVar5);\n      uVar9 = uVar14;\n      do {\n        uVar15 = uVar9;\n        lVar12 = lVar10;\n        uVar9 = uVar15 + 1;\n        uVar16 = uVar9;\n        if ((uVar8 <= uVar9) || (uVar16 = uVar7 + 0x80, uVar9 == uVar7 + 0x80)) break;\n        if (*plVar11 < lVar12) goto LAB_0034c6de;\n        lVar10 = *plVar11 + plVar11[1];\n        plVar11 = plVar11 + 3;\n        uVar16 = uVar9;\n      } while (lVar10 - lVar12 < 0x2000);\n      uVar9 = lVar2 + param_2;\n      if (uVar15 == uVar7) goto LAB_0034c6c0;\n      uVar15 = lVar12 - lVar2;\n      if ((*(long *)(param_1 + 0x30) < (long)uVar9) || (*(long *)(param_1 + 0x30) - uVar9 < uVar15))\n      {\n                    \n        FUN_00352af0("../../gold/fileread.cc",0x150,"find_view");\n      }\n      plVar11 = *(long **)(param_1 + 0xb0);\n      if (plVar11 == (long *)0x0) {\n        lVar10 = *(long *)(param_1 + 0x68);\n        lVar5 = (uVar9 & 0xffffffffffffe000) - 1;\n        lVar6 = lVar4;\n        if (lVar10 != 0) {\n          do {\n            while ((lVar5 < *(long *)(lVar10 + 0x20) ||\n                   ((lVar5 == *(long *)(lVar10 + 0x20) && (*(int *)(lVar10 + 0x28) != 0))))) {\n              plVar11 = (long *)(lVar10 + 0x10);\n              lVar6 = lVar10;\n              lVar10 = *plVar11;\n              if (*plVar11 == 0) goto LAB_0034c5f6;\n            }\n            lVar10 = *(long *)(lVar10 + 0x18);\n          } while (lVar10 != 0);\nLAB_0034c5f6:\n          if (lVar6 != lVar4) {\n            lVar5 = *(long *)(lVar6 + 0x20);\n            while (lVar5 <= (long)(uVar9 & 0xffffffffffffe000)) {\n              plVar11 = *(long **)(lVar6 + 0x30);\n              lVar5 = *plVar11;\n              if ((lVar5 <= (long)uVar9) && (lVar12 + param_2 <= plVar11[1] + lVar5)) {\n                *(undefined1 *)(plVar11 + 5) = 1;\n                goto LAB_0034c524;\n              }\n              lVar6 = thunk_FUN_0049f700(lVar6);\n              if (lVar4 == lVar6) break;\n              lVar5 = *(long *)(lVar6 + 0x20);\n            }\n          }\n        }\n        FUN_0034c220(param_1,param_2,param_3,uVar7,uVar16 - uVar7);\n        uVar7 = uVar16;\n      }\n      else {\n        lVar5 = *plVar11;\nLAB_0034c524:\n        lVar12 = plVar11[2];\n        uVar1 = *(uint *)((long)plVar11 + 0x1c);\n        bVar3 = uVar7 < uVar16;\n        uVar7 = uVar16;\n        if (bVar3) {\n          if (uVar15 < __n) {\nLAB_0034c6f6:\n                    \n            FUN_00352af0("../../gold/fileread.cc",0x2f1,"read_multiple");\n          }\n          lVar10 = 0;\n          for (; memcpy((void *)plVar13[2],\n                        (void *)(lVar10 + (uVar9 - lVar5) + (ulong)uVar1 + lVar12),__n),\n              uVar14 != uVar16; uVar14 = uVar14 + 1) {\n            plVar13 = (long *)(*param_3 + uVar14 * 0x18);\n            __n = plVar13[1];\n            lVar10 = *plVar13 - lVar2;\n            if (uVar15 < __n + lVar10) goto LAB_0034c6f6;\n          }\n        }\n      }\n    }\n    else {\nLAB_0034c6c0:\n      FUN_0034c0e0(param_1,lVar2 + param_2,__n,plVar13[2]);\n      uVar7 = uVar16;\n    }\n    if (uVar8 <= uVar7) {\n      return;\n    }\n    lVar12 = *param_3;\n  } while( true );\n}\n\n" (function_definition "void FUN_0034c3e0(long param_1,long param_2,long *param_3)\n\n{\n  uint uVar1;\n  long lVar2;\n  bool bVar3;\n  long lVar4;\n  long lVar5;\n  long lVar6;\n  ulong uVar7;\n  ulong __n;\n  ulong uVar8;\n  ulong uVar9;\n  long lVar10;\n  long *plVar11;\n  long lVar12;\n  long *plVar13;\n  ulong uVar14;\n  ulong uVar15;\n  ulong uVar16;\n  \n  lVar12 = *param_3;\n  uVar8 = (param_3[1] - lVar12 >> 3) * -0x5555555555555555;\n  if (uVar8 == 0) {\n    return;\n  }\n  uVar7 = 0;\n  lVar4 = param_1 + 0x60;\n  do {\n    uVar14 = uVar7 + 1;\n    lVar5 = uVar7 * 0x18;\n    plVar13 = (long *)(lVar12 + lVar5);\n    lVar2 = *plVar13;\n    __n = plVar13[1];\n    uVar16 = uVar14;\n    if (uVar14 < uVar8) {\n      plVar11 = (long *)(lVar12 + 0x18 + lVar5);\n      lVar10 = *plVar11;\n      if (lVar10 < (long)(lVar2 + __n)) {\nLAB_0034c6de:\n                    \n        FUN_00352af0("../../gold/fileread.cc",0x2d5,"read_multiple");\n      }\n      lVar10 = lVar10 + plVar11[1];\n      if (0x1fff < (long)(lVar10 - (lVar2 + __n))) goto LAB_0034c6c0;\n      plVar11 = (long *)(lVar12 + 0x30 + lVar5);\n      uVar9 = uVar14;\n      do {\n        uVar15 = uVar9;\n        lVar12 = lVar10;\n        uVar9 = uVar15 + 1;\n        uVar16 = uVar9;\n        if ((uVar8 <= uVar9) || (uVar16 = uVar7 + 0x80, uVar9 == uVar7 + 0x80)) break;\n        if (*plVar11 < lVar12) goto LAB_0034c6de;\n        lVar10 = *plVar11 + plVar11[1];\n        plVar11 = plVar11 + 3;\n        uVar16 = uVar9;\n      } while (lVar10 - lVar12 < 0x2000);\n      uVar9 = lVar2 + param_2;\n      if (uVar15 == uVar7) goto LAB_0034c6c0;\n      uVar15 = lVar12 - lVar2;\n      if ((*(long *)(param_1 + 0x30) < (long)uVar9) || (*(long *)(param_1 + 0x30) - uVar9 < uVar15))\n      {\n                    \n        FUN_00352af0("../../gold/fileread.cc",0x150,"find_view");\n      }\n      plVar11 = *(long **)(param_1 + 0xb0);\n      if (plVar11 == (long *)0x0) {\n        lVar10 = *(long *)(param_1 + 0x68);\n        lVar5 = (uVar9 & 0xffffffffffffe000) - 1;\n        lVar6 = lVar4;\n        if (lVar10 != 0) {\n          do {\n            while ((lVar5 < *(long *)(lVar10 + 0x20) ||\n                   ((lVar5 == *(long *)(lVar10 + 0x20) && (*(int *)(lVar10 + 0x28) != 0))))) {\n              plVar11 = (long *)(lVar10 + 0x10);\n              lVar6 = lVar10;\n              lVar10 = *plVar11;\n              if (*plVar11 == 0) goto LAB_0034c5f6;\n            }\n            lVar10 = *(long *)(lVar10 + 0x18);\n          } while (lVar10 != 0);\nLAB_0034c5f6:\n          if (lVar6 != lVar4) {\n            lVar5 = *(long *)(lVar6 + 0x20);\n            while (lVar5 <= (long)(uVar9 & 0xffffffffffffe000)) {\n              plVar11 = *(long **)(lVar6 + 0x30);\n              lVar5 = *plVar11;\n              if ((lVar5 <= (long)uVar9) && (lVar12 + param_2 <= plVar11[1] + lVar5)) {\n                *(undefined1 *)(plVar11 + 5) = 1;\n                goto LAB_0034c524;\n              }\n              lVar6 = thunk_FUN_0049f700(lVar6);\n              if (lVar4 == lVar6) break;\n              lVar5 = *(long *)(lVar6 + 0x20);\n            }\n          }\n        }\n        FUN_0034c220(param_1,param_2,param_3,uVar7,uVar16 - uVar7);\n        uVar7 = uVar16;\n      }\n      else {\n        lVar5 = *plVar11;\nLAB_0034c524:\n        lVar12 = plVar11[2];\n        uVar1 = *(uint *)((long)plVar11 + 0x1c);\n        bVar3 = uVar7 < uVar16;\n        uVar7 = uVar16;\n        if (bVar3) {\n          if (uVar15 < __n) {\nLAB_0034c6f6:\n                    \n            FUN_00352af0("../../gold/fileread.cc",0x2f1,"read_multiple");\n          }\n          lVar10 = 0;\n          for (; memcpy((void *)plVar13[2],\n                        (void *)(lVar10 + (uVar9 - lVar5) + (ulong)uVar1 + lVar12),__n),\n              uVar14 != uVar16; uVar14 = uVar14 + 1) {\n            plVar13 = (long *)(*param_3 + uVar14 * 0x18);\n            __n = plVar13[1];\n            lVar10 = *plVar13 - lVar2;\n            if (uVar15 < __n + lVar10) goto LAB_0034c6f6;\n          }\n        }\n      }\n    }\n    else {\nLAB_0034c6c0:\n      FUN_0034c0e0(param_1,lVar2 + param_2,__n,plVar13[2]);\n      uVar7 = uVar16;\n    }\n    if (uVar8 <= uVar7) {\n      return;\n    }\n    lVar12 = *param_3;\n  } while( true );\n}" primitive_type (function_declarator "FUN_0034c3e0(long param_1,long param_2,long *param_3)" identifier (parameter_list "(long param_1,long param_2,long *param_3)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long *param_3" (sized_type_specifier "long" long) (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  uint uVar1;\n  long lVar2;\n  bool bVar3;\n  long lVar4;\n  long lVar5;\n  long lVar6;\n  ulong uVar7;\n  ulong __n;\n  ulong uVar8;\n  ulong uVar9;\n  long lVar10;\n  long *plVar11;\n  long lVar12;\n  long *plVar13;\n  ulong uVar14;\n  ulong uVar15;\n  ulong uVar16;\n  \n  lVar12 = *param_3;\n  uVar8 = (param_3[1] - lVar12 >> 3) * -0x5555555555555555;\n  if (uVar8 == 0) {\n    return;\n  }\n  uVar7 = 0;\n  lVar4 = param_1 + 0x60;\n  do {\n    uVar14 = uVar7 + 1;\n    lVar5 = uVar7 * 0x18;\n    plVar13 = (long *)(lVar12 + lVar5);\n    lVar2 = *plVar13;\n    __n = plVar13[1];\n    uVar16 = uVar14;\n    if (uVar14 < uVar8) {\n      plVar11 = (long *)(lVar12 + 0x18 + lVar5);\n      lVar10 = *plVar11;\n      if (lVar10 < (long)(lVar2 + __n)) {\nLAB_0034c6de:\n                    \n        FUN_00352af0("../../gold/fileread.cc",0x2d5,"read_multiple");\n      }\n      lVar10 = lVar10 + plVar11[1];\n      if (0x1fff < (long)(lVar10 - (lVar2 + __n))) goto LAB_0034c6c0;\n      plVar11 = (long *)(lVar12 + 0x30 + lVar5);\n      uVar9 = uVar14;\n      do {\n        uVar15 = uVar9;\n        lVar12 = lVar10;\n        uVar9 = uVar15 + 1;\n        uVar16 = uVar9;\n        if ((uVar8 <= uVar9) || (uVar16 = uVar7 + 0x80, uVar9 == uVar7 + 0x80)) break;\n        if (*plVar11 < lVar12) goto LAB_0034c6de;\n        lVar10 = *plVar11 + plVar11[1];\n        plVar11 = plVar11 + 3;\n        uVar16 = uVar9;\n      } while (lVar10 - lVar12 < 0x2000);\n      uVar9 = lVar2 + param_2;\n      if (uVar15 == uVar7) goto LAB_0034c6c0;\n      uVar15 = lVar12 - lVar2;\n      if ((*(long *)(param_1 + 0x30) < (long)uVar9) || (*(long *)(param_1 + 0x30) - uVar9 < uVar15))\n      {\n                    \n        FUN_00352af0("../../gold/fileread.cc",0x150,"find_view");\n      }\n      plVar11 = *(long **)(param_1 + 0xb0);\n      if (plVar11 == (long *)0x0) {\n        lVar10 = *(long *)(param_1 + 0x68);\n        lVar5 = (uVar9 & 0xffffffffffffe000) - 1;\n        lVar6 = lVar4;\n        if (lVar10 != 0) {\n          do {\n            while ((lVar5 < *(long *)(lVar10 + 0x20) ||\n                   ((lVar5 == *(long *)(lVar10 + 0x20) && (*(int *)(lVar10 + 0x28) != 0))))) {\n              plVar11 = (long *)(lVar10 + 0x10);\n              lVar6 = lVar10;\n              lVar10 = *plVar11;\n              if (*plVar11 == 0) goto LAB_0034c5f6;\n            }\n            lVar10 = *(long *)(lVar10 + 0x18);\n          } while (lVar10 != 0);\nLAB_0034c5f6:\n          if (lVar6 != lVar4) {\n            lVar5 = *(long *)(lVar6 + 0x20);\n            while (lVar5 <= (long)(uVar9 & 0xffffffffffffe000)) {\n              plVar11 = *(long **)(lVar6 + 0x30);\n              lVar5 = *plVar11;\n              if ((lVar5 <= (long)uVar9) && (lVar12 + param_2 <= plVar11[1] + lVar5)) {\n                *(undefined1 *)(plVar11 + 5) = 1;\n                goto LAB_0034c524;\n              }\n              lVar6 = thunk_FUN_0049f700(lVar6);\n              if (lVar4 == lVar6) break;\n              lVar5 = *(long *)(lVar6 + 0x20);\n            }\n          }\n        }\n        FUN_0034c220(param_1,param_2,param_3,uVar7,uVar16 - uVar7);\n        uVar7 = uVar16;\n      }\n      else {\n        lVar5 = *plVar11;\nLAB_0034c524:\n        lVar12 = plVar11[2];\n        uVar1 = *(uint *)((long)plVar11 + 0x1c);\n        bVar3 = uVar7 < uVar16;\n        uVar7 = uVar16;\n        if (bVar3) {\n          if (uVar15 < __n) {\nLAB_0034c6f6:\n                    \n            FUN_00352af0("../../gold/fileread.cc",0x2f1,"read_multiple");\n          }\n          lVar10 = 0;\n          for (; memcpy((void *)plVar13[2],\n                        (void *)(lVar10 + (uVar9 - lVar5) + (ulong)uVar1 + lVar12),__n),\n              uVar14 != uVar16; uVar14 = uVar14 + 1) {\n            plVar13 = (long *)(*param_3 + uVar14 * 0x18);\n            __n = plVar13[1];\n            lVar10 = *plVar13 - lVar2;\n            if (uVar15 < __n + lVar10) goto LAB_0034c6f6;\n          }\n        }\n      }\n    }\n    else {\nLAB_0034c6c0:\n      FUN_0034c0e0(param_1,lVar2 + param_2,__n,plVar13[2]);\n      uVar7 = uVar16;\n    }\n    if (uVar8 <= uVar7) {\n      return;\n    }\n    lVar12 = *param_3;\n  } while( true );\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "bool bVar3;" primitive_type identifier ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar7;" type_identifier identifier ;) (declaration "ulong __n;" type_identifier identifier ;) (declaration "ulong uVar8;" type_identifier identifier ;) (declaration "ulong uVar9;" type_identifier identifier ;) (declaration "long lVar10;" (sized_type_specifier "long" long) identifier ;) (declaration "long *plVar11;" (sized_type_specifier "long" long) (pointer_declarator "*plVar11" * identifier) ;) (declaration "long lVar12;" (sized_type_specifier "long" long) identifier ;) (declaration "long *plVar13;" (sized_type_specifier "long" long) (pointer_declarator "*plVar13" * identifier) ;) (declaration "ulong uVar14;" type_identifier identifier ;) (declaration "ulong uVar15;" type_identifier identifier ;) (declaration "ulong uVar16;" type_identifier identifier ;) (expression_statement "lVar12 = *param_3;" (assignment_expression "lVar12 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;) (expression_statement "uVar8 = (param_3[1] - lVar12 >> 3) * -0x5555555555555555;" (assignment_expression "uVar8 = (param_3[1] - lVar12 >> 3) * -0x5555555555555555" identifier = (binary_expression "(param_3[1] - lVar12 >> 3) * -0x5555555555555555" (parenthesized_expression "(param_3[1] - lVar12 >> 3)" ( (binary_expression "param_3[1] - lVar12 >> 3" (binary_expression "param_3[1] - lVar12" (subscript_expression "param_3[1]" identifier [ number_literal ]) - identifier) >> number_literal) )) * number_literal)) ;) (if_statement "if (uVar8 == 0) {\n    return;\n  }" if (parenthesized_expression "(uVar8 == 0)" ( (binary_expression "uVar8 == 0" identifier == number_literal) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;) (expression_statement "lVar4 = param_1 + 0x60;" (assignment_expression "lVar4 = param_1 + 0x60" identifier = (binary_expression "param_1 + 0x60" identifier + number_literal)) ;) (do_statement "do {\n    uVar14 = uVar7 + 1;\n    lVar5 = uVar7 * 0x18;\n    plVar13 = (long *)(lVar12 + lVar5);\n    lVar2 = *plVar13;\n    __n = plVar13[1];\n    uVar16 = uVar14;\n    if (uVar14 < uVar8) {\n      plVar11 = (long *)(lVar12 + 0x18 + lVar5);\n      lVar10 = *plVar11;\n      if (lVar10 < (long)(lVar2 + __n)) {\nLAB_0034c6de:\n                    \n        FUN_00352af0("../../gold/fileread.cc",0x2d5,"read_multiple");\n      }\n      lVar10 = lVar10 + plVar11[1];\n      if (0x1fff < (long)(lVar10 - (lVar2 + __n))) goto LAB_0034c6c0;\n      plVar11 = (long *)(lVar12 + 0x30 + lVar5);\n      uVar9 = uVar14;\n      do {\n        uVar15 = uVar9;\n        lVar12 = lVar10;\n        uVar9 = uVar15 + 1;\n        uVar16 = uVar9;\n        if ((uVar8 <= uVar9) || (uVar16 = uVar7 + 0x80, uVar9 == uVar7 + 0x80)) break;\n        if (*plVar11 < lVar12) goto LAB_0034c6de;\n        lVar10 = *plVar11 + plVar11[1];\n        plVar11 = plVar11 + 3;\n        uVar16 = uVar9;\n      } while (lVar10 - lVar12 < 0x2000);\n      uVar9 = lVar2 + param_2;\n      if (uVar15 == uVar7) goto LAB_0034c6c0;\n      uVar15 = lVar12 - lVar2;\n      if ((*(long *)(param_1 + 0x30) < (long)uVar9) || (*(long *)(param_1 + 0x30) - uVar9 < uVar15))\n      {\n                    \n        FUN_00352af0("../../gold/fileread.cc",0x150,"find_view");\n      }\n      plVar11 = *(long **)(param_1 + 0xb0);\n      if (plVar11 == (long *)0x0) {\n        lVar10 = *(long *)(param_1 + 0x68);\n        lVar5 = (uVar9 & 0xffffffffffffe000) - 1;\n        lVar6 = lVar4;\n        if (lVar10 != 0) {\n          do {\n            while ((lVar5 < *(long *)(lVar10 + 0x20) ||\n                   ((lVar5 == *(long *)(lVar10 + 0x20) && (*(int *)(lVar10 + 0x28) != 0))))) {\n              plVar11 = (long *)(lVar10 + 0x10);\n              lVar6 = lVar10;\n              lVar10 = *plVar11;\n              if (*plVar11 == 0) goto LAB_0034c5f6;\n            }\n            lVar10 = *(long *)(lVar10 + 0x18);\n          } while (lVar10 != 0);\nLAB_0034c5f6:\n          if (lVar6 != lVar4) {\n            lVar5 = *(long *)(lVar6 + 0x20);\n            while (lVar5 <= (long)(uVar9 & 0xffffffffffffe000)) {\n              plVar11 = *(long **)(lVar6 + 0x30);\n              lVar5 = *plVar11;\n              if ((lVar5 <= (long)uVar9) && (lVar12 + param_2 <= plVar11[1] + lVar5)) {\n                *(undefined1 *)(plVar11 + 5) = 1;\n                goto LAB_0034c524;\n              }\n              lVar6 = thunk_FUN_0049f700(lVar6);\n              if (lVar4 == lVar6) break;\n              lVar5 = *(long *)(lVar6 + 0x20);\n            }\n          }\n        }\n        FUN_0034c220(param_1,param_2,param_3,uVar7,uVar16 - uVar7);\n        uVar7 = uVar16;\n      }\n      else {\n        lVar5 = *plVar11;\nLAB_0034c524:\n        lVar12 = plVar11[2];\n        uVar1 = *(uint *)((long)plVar11 + 0x1c);\n        bVar3 = uVar7 < uVar16;\n        uVar7 = uVar16;\n        if (bVar3) {\n          if (uVar15 < __n) {\nLAB_0034c6f6:\n                    \n            FUN_00352af0("../../gold/fileread.cc",0x2f1,"read_multiple");\n          }\n          lVar10 = 0;\n          for (; memcpy((void *)plVar13[2],\n                        (void *)(lVar10 + (uVar9 - lVar5) + (ulong)uVar1 + lVar12),__n),\n              uVar14 != uVar16; uVar14 = uVar14 + 1) {\n            plVar13 = (long *)(*param_3 + uVar14 * 0x18);\n            __n = plVar13[1];\n            lVar10 = *plVar13 - lVar2;\n            if (uVar15 < __n + lVar10) goto LAB_0034c6f6;\n          }\n        }\n      }\n    }\n    else {\nLAB_0034c6c0:\n      FUN_0034c0e0(param_1,lVar2 + param_2,__n,plVar13[2]);\n      uVar7 = uVar16;\n    }\n    if (uVar8 <= uVar7) {\n      return;\n    }\n    lVar12 = *param_3;\n  } while( true );" do (compound_statement "{\n    uVar14 = uVar7 + 1;\n    lVar5 = uVar7 * 0x18;\n    plVar13 = (long *)(lVar12 + lVar5);\n    lVar2 = *plVar13;\n    __n = plVar13[1];\n    uVar16 = uVar14;\n    if (uVar14 < uVar8) {\n      plVar11 = (long *)(lVar12 + 0x18 + lVar5);\n      lVar10 = *plVar11;\n      if (lVar10 < (long)(lVar2 + __n)) {\nLAB_0034c6de:\n                    \n        FUN_00352af0("../../gold/fileread.cc",0x2d5,"read_multiple");\n      }\n      lVar10 = lVar10 + plVar11[1];\n      if (0x1fff < (long)(lVar10 - (lVar2 + __n))) goto LAB_0034c6c0;\n      plVar11 = (long *)(lVar12 + 0x30 + lVar5);\n      uVar9 = uVar14;\n      do {\n        uVar15 = uVar9;\n        lVar12 = lVar10;\n        uVar9 = uVar15 + 1;\n        uVar16 = uVar9;\n        if ((uVar8 <= uVar9) || (uVar16 = uVar7 + 0x80, uVar9 == uVar7 + 0x80)) break;\n        if (*plVar11 < lVar12) goto LAB_0034c6de;\n        lVar10 = *plVar11 + plVar11[1];\n        plVar11 = plVar11 + 3;\n        uVar16 = uVar9;\n      } while (lVar10 - lVar12 < 0x2000);\n      uVar9 = lVar2 + param_2;\n      if (uVar15 == uVar7) goto LAB_0034c6c0;\n      uVar15 = lVar12 - lVar2;\n      if ((*(long *)(param_1 + 0x30) < (long)uVar9) || (*(long *)(param_1 + 0x30) - uVar9 < uVar15))\n      {\n                    \n        FUN_00352af0("../../gold/fileread.cc",0x150,"find_view");\n      }\n      plVar11 = *(long **)(param_1 + 0xb0);\n      if (plVar11 == (long *)0x0) {\n        lVar10 = *(long *)(param_1 + 0x68);\n        lVar5 = (uVar9 & 0xffffffffffffe000) - 1;\n        lVar6 = lVar4;\n        if (lVar10 != 0) {\n          do {\n            while ((lVar5 < *(long *)(lVar10 + 0x20) ||\n                   ((lVar5 == *(long *)(lVar10 + 0x20) && (*(int *)(lVar10 + 0x28) != 0))))) {\n              plVar11 = (long *)(lVar10 + 0x10);\n              lVar6 = lVar10;\n              lVar10 = *plVar11;\n              if (*plVar11 == 0) goto LAB_0034c5f6;\n            }\n            lVar10 = *(long *)(lVar10 + 0x18);\n          } while (lVar10 != 0);\nLAB_0034c5f6:\n          if (lVar6 != lVar4) {\n            lVar5 = *(long *)(lVar6 + 0x20);\n            while (lVar5 <= (long)(uVar9 & 0xffffffffffffe000)) {\n              plVar11 = *(long **)(lVar6 + 0x30);\n              lVar5 = *plVar11;\n              if ((lVar5 <= (long)uVar9) && (lVar12 + param_2 <= plVar11[1] + lVar5)) {\n                *(undefined1 *)(plVar11 + 5) = 1;\n                goto LAB_0034c524;\n              }\n              lVar6 = thunk_FUN_0049f700(lVar6);\n              if (lVar4 == lVar6) break;\n              lVar5 = *(long *)(lVar6 + 0x20);\n            }\n          }\n        }\n        FUN_0034c220(param_1,param_2,param_3,uVar7,uVar16 - uVar7);\n        uVar7 = uVar16;\n      }\n      else {\n        lVar5 = *plVar11;\nLAB_0034c524:\n        lVar12 = plVar11[2];\n        uVar1 = *(uint *)((long)plVar11 + 0x1c);\n        bVar3 = uVar7 < uVar16;\n        uVar7 = uVar16;\n        if (bVar3) {\n          if (uVar15 < __n) {\nLAB_0034c6f6:\n                    \n            FUN_00352af0("../../gold/fileread.cc",0x2f1,"read_multiple");\n          }\n          lVar10 = 0;\n          for (; memcpy((void *)plVar13[2],\n                        (void *)(lVar10 + (uVar9 - lVar5) + (ulong)uVar1 + lVar12),__n),\n              uVar14 != uVar16; uVar14 = uVar14 + 1) {\n            plVar13 = (long *)(*param_3 + uVar14 * 0x18);\n            __n = plVar13[1];\n            lVar10 = *plVar13 - lVar2;\n            if (uVar15 < __n + lVar10) goto LAB_0034c6f6;\n          }\n        }\n      }\n    }\n    else {\nLAB_0034c6c0:\n      FUN_0034c0e0(param_1,lVar2 + param_2,__n,plVar13[2]);\n      uVar7 = uVar16;\n    }\n    if (uVar8 <= uVar7) {\n      return;\n    }\n    lVar12 = *param_3;\n  }" { (expression_statement "uVar14 = uVar7 + 1;" (assignment_expression "uVar14 = uVar7 + 1" identifier = (binary_expression "uVar7 + 1" identifier + number_literal)) ;) (expression_statement "lVar5 = uVar7 * 0x18;" (assignment_expression "lVar5 = uVar7 * 0x18" identifier = (binary_expression "uVar7 * 0x18" identifier * number_literal)) ;) (expression_statement "plVar13 = (long *)(lVar12 + lVar5);" (assignment_expression "plVar13 = (long *)(lVar12 + lVar5)" identifier = (cast_expression "(long *)(lVar12 + lVar5)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar12 + lVar5)" ( (binary_expression "lVar12 + lVar5" identifier + identifier) )))) ;) (expression_statement "lVar2 = *plVar13;" (assignment_expression "lVar2 = *plVar13" identifier = (pointer_expression "*plVar13" * identifier)) ;) (expression_statement "__n = plVar13[1];" (assignment_expression "__n = plVar13[1]" identifier = (subscript_expression "plVar13[1]" identifier [ number_literal ])) ;) (expression_statement "uVar16 = uVar14;" (assignment_expression "uVar16 = uVar14" identifier = identifier) ;) (if_statement "if (uVar14 < uVar8) {\n      plVar11 = (long *)(lVar12 + 0x18 + lVar5);\n      lVar10 = *plVar11;\n      if (lVar10 < (long)(lVar2 + __n)) {\nLAB_0034c6de:\n                    \n        FUN_00352af0("../../gold/fileread.cc",0x2d5,"read_multiple");\n      }\n      lVar10 = lVar10 + plVar11[1];\n      if (0x1fff < (long)(lVar10 - (lVar2 + __n))) goto LAB_0034c6c0;\n      plVar11 = (long *)(lVar12 + 0x30 + lVar5);\n      uVar9 = uVar14;\n      do {\n        uVar15 = uVar9;\n        lVar12 = lVar10;\n        uVar9 = uVar15 + 1;\n        uVar16 = uVar9;\n        if ((uVar8 <= uVar9) || (uVar16 = uVar7 + 0x80, uVar9 == uVar7 + 0x80)) break;\n        if (*plVar11 < lVar12) goto LAB_0034c6de;\n        lVar10 = *plVar11 + plVar11[1];\n        plVar11 = plVar11 + 3;\n        uVar16 = uVar9;\n      } while (lVar10 - lVar12 < 0x2000);\n      uVar9 = lVar2 + param_2;\n      if (uVar15 == uVar7) goto LAB_0034c6c0;\n      uVar15 = lVar12 - lVar2;\n      if ((*(long *)(param_1 + 0x30) < (long)uVar9) || (*(long *)(param_1 + 0x30) - uVar9 < uVar15))\n      {\n                    \n        FUN_00352af0("../../gold/fileread.cc",0x150,"find_view");\n      }\n      plVar11 = *(long **)(param_1 + 0xb0);\n      if (plVar11 == (long *)0x0) {\n        lVar10 = *(long *)(param_1 + 0x68);\n        lVar5 = (uVar9 & 0xffffffffffffe000) - 1;\n        lVar6 = lVar4;\n        if (lVar10 != 0) {\n          do {\n            while ((lVar5 < *(long *)(lVar10 + 0x20) ||\n                   ((lVar5 == *(long *)(lVar10 + 0x20) && (*(int *)(lVar10 + 0x28) != 0))))) {\n              plVar11 = (long *)(lVar10 + 0x10);\n              lVar6 = lVar10;\n              lVar10 = *plVar11;\n              if (*plVar11 == 0) goto LAB_0034c5f6;\n            }\n            lVar10 = *(long *)(lVar10 + 0x18);\n          } while (lVar10 != 0);\nLAB_0034c5f6:\n          if (lVar6 != lVar4) {\n            lVar5 = *(long *)(lVar6 + 0x20);\n            while (lVar5 <= (long)(uVar9 & 0xffffffffffffe000)) {\n              plVar11 = *(long **)(lVar6 + 0x30);\n              lVar5 = *plVar11;\n              if ((lVar5 <= (long)uVar9) && (lVar12 + param_2 <= plVar11[1] + lVar5)) {\n                *(undefined1 *)(plVar11 + 5) = 1;\n                goto LAB_0034c524;\n              }\n              lVar6 = thunk_FUN_0049f700(lVar6);\n              if (lVar4 == lVar6) break;\n              lVar5 = *(long *)(lVar6 + 0x20);\n            }\n          }\n        }\n        FUN_0034c220(param_1,param_2,param_3,uVar7,uVar16 - uVar7);\n        uVar7 = uVar16;\n      }\n      else {\n        lVar5 = *plVar11;\nLAB_0034c524:\n        lVar12 = plVar11[2];\n        uVar1 = *(uint *)((long)plVar11 + 0x1c);\n        bVar3 = uVar7 < uVar16;\n        uVar7 = uVar16;\n        if (bVar3) {\n          if (uVar15 < __n) {\nLAB_0034c6f6:\n                    \n            FUN_00352af0("../../gold/fileread.cc",0x2f1,"read_multiple");\n          }\n          lVar10 = 0;\n          for (; memcpy((void *)plVar13[2],\n                        (void *)(lVar10 + (uVar9 - lVar5) + (ulong)uVar1 + lVar12),__n),\n              uVar14 != uVar16; uVar14 = uVar14 + 1) {\n            plVar13 = (long *)(*param_3 + uVar14 * 0x18);\n            __n = plVar13[1];\n            lVar10 = *plVar13 - lVar2;\n            if (uVar15 < __n + lVar10) goto LAB_0034c6f6;\n          }\n        }\n      }\n    }\n    else {\nLAB_0034c6c0:\n      FUN_0034c0e0(param_1,lVar2 + param_2,__n,plVar13[2]);\n      uVar7 = uVar16;\n    }" if (parenthesized_expression "(uVar14 < uVar8)" ( (binary_expression "uVar14 < uVar8" identifier < identifier) )) (compound_statement "{\n      plVar11 = (long *)(lVar12 + 0x18 + lVar5);\n      lVar10 = *plVar11;\n      if (lVar10 < (long)(lVar2 + __n)) {\nLAB_0034c6de:\n                    \n        FUN_00352af0("../../gold/fileread.cc",0x2d5,"read_multiple");\n      }\n      lVar10 = lVar10 + plVar11[1];\n      if (0x1fff < (long)(lVar10 - (lVar2 + __n))) goto LAB_0034c6c0;\n      plVar11 = (long *)(lVar12 + 0x30 + lVar5);\n      uVar9 = uVar14;\n      do {\n        uVar15 = uVar9;\n        lVar12 = lVar10;\n        uVar9 = uVar15 + 1;\n        uVar16 = uVar9;\n        if ((uVar8 <= uVar9) || (uVar16 = uVar7 + 0x80, uVar9 == uVar7 + 0x80)) break;\n        if (*plVar11 < lVar12) goto LAB_0034c6de;\n        lVar10 = *plVar11 + plVar11[1];\n        plVar11 = plVar11 + 3;\n        uVar16 = uVar9;\n      } while (lVar10 - lVar12 < 0x2000);\n      uVar9 = lVar2 + param_2;\n      if (uVar15 == uVar7) goto LAB_0034c6c0;\n      uVar15 = lVar12 - lVar2;\n      if ((*(long *)(param_1 + 0x30) < (long)uVar9) || (*(long *)(param_1 + 0x30) - uVar9 < uVar15))\n      {\n                    \n        FUN_00352af0("../../gold/fileread.cc",0x150,"find_view");\n      }\n      plVar11 = *(long **)(param_1 + 0xb0);\n      if (plVar11 == (long *)0x0) {\n        lVar10 = *(long *)(param_1 + 0x68);\n        lVar5 = (uVar9 & 0xffffffffffffe000) - 1;\n        lVar6 = lVar4;\n        if (lVar10 != 0) {\n          do {\n            while ((lVar5 < *(long *)(lVar10 + 0x20) ||\n                   ((lVar5 == *(long *)(lVar10 + 0x20) && (*(int *)(lVar10 + 0x28) != 0))))) {\n              plVar11 = (long *)(lVar10 + 0x10);\n              lVar6 = lVar10;\n              lVar10 = *plVar11;\n              if (*plVar11 == 0) goto LAB_0034c5f6;\n            }\n            lVar10 = *(long *)(lVar10 + 0x18);\n          } while (lVar10 != 0);\nLAB_0034c5f6:\n          if (lVar6 != lVar4) {\n            lVar5 = *(long *)(lVar6 + 0x20);\n            while (lVar5 <= (long)(uVar9 & 0xffffffffffffe000)) {\n              plVar11 = *(long **)(lVar6 + 0x30);\n              lVar5 = *plVar11;\n              if ((lVar5 <= (long)uVar9) && (lVar12 + param_2 <= plVar11[1] + lVar5)) {\n                *(undefined1 *)(plVar11 + 5) = 1;\n                goto LAB_0034c524;\n              }\n              lVar6 = thunk_FUN_0049f700(lVar6);\n              if (lVar4 == lVar6) break;\n              lVar5 = *(long *)(lVar6 + 0x20);\n            }\n          }\n        }\n        FUN_0034c220(param_1,param_2,param_3,uVar7,uVar16 - uVar7);\n        uVar7 = uVar16;\n      }\n      else {\n        lVar5 = *plVar11;\nLAB_0034c524:\n        lVar12 = plVar11[2];\n        uVar1 = *(uint *)((long)plVar11 + 0x1c);\n        bVar3 = uVar7 < uVar16;\n        uVar7 = uVar16;\n        if (bVar3) {\n          if (uVar15 < __n) {\nLAB_0034c6f6:\n                    \n            FUN_00352af0("../../gold/fileread.cc",0x2f1,"read_multiple");\n          }\n          lVar10 = 0;\n          for (; memcpy((void *)plVar13[2],\n                        (void *)(lVar10 + (uVar9 - lVar5) + (ulong)uVar1 + lVar12),__n),\n              uVar14 != uVar16; uVar14 = uVar14 + 1) {\n            plVar13 = (long *)(*param_3 + uVar14 * 0x18);\n            __n = plVar13[1];\n            lVar10 = *plVar13 - lVar2;\n            if (uVar15 < __n + lVar10) goto LAB_0034c6f6;\n          }\n        }\n      }\n    }" { (expression_statement "plVar11 = (long *)(lVar12 + 0x18 + lVar5);" (assignment_expression "plVar11 = (long *)(lVar12 + 0x18 + lVar5)" identifier = (cast_expression "(long *)(lVar12 + 0x18 + lVar5)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar12 + 0x18 + lVar5)" ( (binary_expression "lVar12 + 0x18 + lVar5" (binary_expression "lVar12 + 0x18" identifier + number_literal) + identifier) )))) ;) (expression_statement "lVar10 = *plVar11;" (assignment_expression "lVar10 = *plVar11" identifier = (pointer_expression "*plVar11" * identifier)) ;) (if_statement "if (lVar10 < (long)(lVar2 + __n)) {\nLAB_0034c6de:\n                    \n        FUN_00352af0("../../gold/fileread.cc",0x2d5,"read_multiple");\n      }" if (parenthesized_expression "(lVar10 < (long)(lVar2 + __n))" ( (binary_expression "lVar10 < (long)(lVar2 + __n)" identifier < (cast_expression "(long)(lVar2 + __n)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(lVar2 + __n)" ( (binary_expression "lVar2 + __n" identifier + identifier) )))) )) (compound_statement "{\nLAB_0034c6de:\n                    \n        FUN_00352af0("../../gold/fileread.cc",0x2d5,"read_multiple");\n      }" { (labeled_statement "LAB_0034c6de:\n                    \n        FUN_00352af0("../../gold/fileread.cc",0x2d5,"read_multiple");" statement_identifier : (expression_statement "FUN_00352af0("../../gold/fileread.cc",0x2d5,"read_multiple");" (call_expression "FUN_00352af0("../../gold/fileread.cc",0x2d5,"read_multiple")" identifier (argument_list "("../../gold/fileread.cc",0x2d5,"read_multiple")" ( (string_literal ""../../gold/fileread.cc"" " string_content ") , number_literal , (string_literal ""read_multiple"" " string_content ") ))) ;)) })) (expression_statement "lVar10 = lVar10 + plVar11[1];" (assignment_expression "lVar10 = lVar10 + plVar11[1]" identifier = (binary_expression "lVar10 + plVar11[1]" identifier + (subscript_expression "plVar11[1]" identifier [ number_literal ]))) ;) (if_statement "if (0x1fff < (long)(lVar10 - (lVar2 + __n))) goto LAB_0034c6c0;" if (parenthesized_expression "(0x1fff < (long)(lVar10 - (lVar2 + __n)))" ( (binary_expression "0x1fff < (long)(lVar10 - (lVar2 + __n))" number_literal < (cast_expression "(long)(lVar10 - (lVar2 + __n))" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(lVar10 - (lVar2 + __n))" ( (binary_expression "lVar10 - (lVar2 + __n)" identifier - (parenthesized_expression "(lVar2 + __n)" ( (binary_expression "lVar2 + __n" identifier + identifier) ))) )))) )) (goto_statement "goto LAB_0034c6c0;" goto statement_identifier ;)) (expression_statement "plVar11 = (long *)(lVar12 + 0x30 + lVar5);" (assignment_expression "plVar11 = (long *)(lVar12 + 0x30 + lVar5)" identifier = (cast_expression "(long *)(lVar12 + 0x30 + lVar5)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar12 + 0x30 + lVar5)" ( (binary_expression "lVar12 + 0x30 + lVar5" (binary_expression "lVar12 + 0x30" identifier + number_literal) + identifier) )))) ;) (expression_statement "uVar9 = uVar14;" (assignment_expression "uVar9 = uVar14" identifier = identifier) ;) (do_statement "do {\n        uVar15 = uVar9;\n        lVar12 = lVar10;\n        uVar9 = uVar15 + 1;\n        uVar16 = uVar9;\n        if ((uVar8 <= uVar9) || (uVar16 = uVar7 + 0x80, uVar9 == uVar7 + 0x80)) break;\n        if (*plVar11 < lVar12) goto LAB_0034c6de;\n        lVar10 = *plVar11 + plVar11[1];\n        plVar11 = plVar11 + 3;\n        uVar16 = uVar9;\n      } while (lVar10 - lVar12 < 0x2000);" do (compound_statement "{\n        uVar15 = uVar9;\n        lVar12 = lVar10;\n        uVar9 = uVar15 + 1;\n        uVar16 = uVar9;\n        if ((uVar8 <= uVar9) || (uVar16 = uVar7 + 0x80, uVar9 == uVar7 + 0x80)) break;\n        if (*plVar11 < lVar12) goto LAB_0034c6de;\n        lVar10 = *plVar11 + plVar11[1];\n        plVar11 = plVar11 + 3;\n        uVar16 = uVar9;\n      }" { (expression_statement "uVar15 = uVar9;" (assignment_expression "uVar15 = uVar9" identifier = identifier) ;) (expression_statement "lVar12 = lVar10;" (assignment_expression "lVar12 = lVar10" identifier = identifier) ;) (expression_statement "uVar9 = uVar15 + 1;" (assignment_expression "uVar9 = uVar15 + 1" identifier = (binary_expression "uVar15 + 1" identifier + number_literal)) ;) (expression_statement "uVar16 = uVar9;" (assignment_expression "uVar16 = uVar9" identifier = identifier) ;) (if_statement "if ((uVar8 <= uVar9) || (uVar16 = uVar7 + 0x80, uVar9 == uVar7 + 0x80)) break;" if (parenthesized_expression "((uVar8 <= uVar9) || (uVar16 = uVar7 + 0x80, uVar9 == uVar7 + 0x80))" ( (binary_expression "(uVar8 <= uVar9) || (uVar16 = uVar7 + 0x80, uVar9 == uVar7 + 0x80)" (parenthesized_expression "(uVar8 <= uVar9)" ( (binary_expression "uVar8 <= uVar9" identifier <= identifier) )) || (parenthesized_expression "(uVar16 = uVar7 + 0x80, uVar9 == uVar7 + 0x80)" ( (comma_expression "uVar16 = uVar7 + 0x80, uVar9 == uVar7 + 0x80" (assignment_expression "uVar16 = uVar7 + 0x80" identifier = (binary_expression "uVar7 + 0x80" identifier + number_literal)) , (binary_expression "uVar9 == uVar7 + 0x80" identifier == (binary_expression "uVar7 + 0x80" identifier + number_literal))) ))) )) (break_statement "break;" break ;)) (if_statement "if (*plVar11 < lVar12) goto LAB_0034c6de;" if (parenthesized_expression "(*plVar11 < lVar12)" ( (binary_expression "*plVar11 < lVar12" (pointer_expression "*plVar11" * identifier) < identifier) )) (goto_statement "goto LAB_0034c6de;" goto statement_identifier ;)) (expression_statement "lVar10 = *plVar11 + plVar11[1];" (assignment_expression "lVar10 = *plVar11 + plVar11[1]" identifier = (binary_expression "*plVar11 + plVar11[1]" (pointer_expression "*plVar11" * identifier) + (subscript_expression "plVar11[1]" identifier [ number_literal ]))) ;) (expression_statement "plVar11 = plVar11 + 3;" (assignment_expression "plVar11 = plVar11 + 3" identifier = (binary_expression "plVar11 + 3" identifier + number_literal)) ;) (expression_statement "uVar16 = uVar9;" (assignment_expression "uVar16 = uVar9" identifier = identifier) ;) }) while (parenthesized_expression "(lVar10 - lVar12 < 0x2000)" ( (binary_expression "lVar10 - lVar12 < 0x2000" (binary_expression "lVar10 - lVar12" identifier - identifier) < number_literal) )) ;) (expression_statement "uVar9 = lVar2 + param_2;" (assignment_expression "uVar9 = lVar2 + param_2" identifier = (binary_expression "lVar2 + param_2" identifier + identifier)) ;) (if_statement "if (uVar15 == uVar7) goto LAB_0034c6c0;" if (parenthesized_expression "(uVar15 == uVar7)" ( (binary_expression "uVar15 == uVar7" identifier == identifier) )) (goto_statement "goto LAB_0034c6c0;" goto statement_identifier ;)) (expression_statement "uVar15 = lVar12 - lVar2;" (assignment_expression "uVar15 = lVar12 - lVar2" identifier = (binary_expression "lVar12 - lVar2" identifier - identifier)) ;) (if_statement "if ((*(long *)(param_1 + 0x30) < (long)uVar9) || (*(long *)(param_1 + 0x30) - uVar9 < uVar15))\n      {\n                    \n        FUN_00352af0("../../gold/fileread.cc",0x150,"find_view");\n      }" if (parenthesized_expression "((*(long *)(param_1 + 0x30) < (long)uVar9) || (*(long *)(param_1 + 0x30) - uVar9 < uVar15))" ( (binary_expression "(*(long *)(param_1 + 0x30) < (long)uVar9) || (*(long *)(param_1 + 0x30) - uVar9 < uVar15)" (parenthesized_expression "(*(long *)(param_1 + 0x30) < (long)uVar9)" ( (binary_expression "*(long *)(param_1 + 0x30) < (long)uVar9" (pointer_expression "*(long *)(param_1 + 0x30)" * (cast_expression "(long *)(param_1 + 0x30)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) )))) < (cast_expression "(long)uVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) || (parenthesized_expression "(*(long *)(param_1 + 0x30) - uVar9 < uVar15)" ( (binary_expression "*(long *)(param_1 + 0x30) - uVar9 < uVar15" (binary_expression "*(long *)(param_1 + 0x30) - uVar9" (pointer_expression "*(long *)(param_1 + 0x30)" * (cast_expression "(long *)(param_1 + 0x30)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) )))) - identifier) < identifier) ))) )) (compound_statement "{\n                    \n        FUN_00352af0("../../gold/fileread.cc",0x150,"find_view");\n      }" { (expression_statement "FUN_00352af0("../../gold/fileread.cc",0x150,"find_view");" (call_expression "FUN_00352af0("../../gold/fileread.cc",0x150,"find_view")" identifier (argument_list "("../../gold/fileread.cc",0x150,"find_view")" ( (string_literal ""../../gold/fileread.cc"" " string_content ") , number_literal , (string_literal ""find_view"" " string_content ") ))) ;) })) (expression_statement "plVar11 = *(long **)(param_1 + 0xb0);" (assignment_expression "plVar11 = *(long **)(param_1 + 0xb0)" identifier = (pointer_expression "*(long **)(param_1 + 0xb0)" * (cast_expression "(long **)(param_1 + 0xb0)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xb0)" ( (binary_expression "param_1 + 0xb0" identifier + number_literal) ))))) ;) (if_statement "if (plVar11 == (long *)0x0) {\n        lVar10 = *(long *)(param_1 + 0x68);\n        lVar5 = (uVar9 & 0xffffffffffffe000) - 1;\n        lVar6 = lVar4;\n        if (lVar10 != 0) {\n          do {\n            while ((lVar5 < *(long *)(lVar10 + 0x20) ||\n                   ((lVar5 == *(long *)(lVar10 + 0x20) && (*(int *)(lVar10 + 0x28) != 0))))) {\n              plVar11 = (long *)(lVar10 + 0x10);\n              lVar6 = lVar10;\n              lVar10 = *plVar11;\n              if (*plVar11 == 0) goto LAB_0034c5f6;\n            }\n            lVar10 = *(long *)(lVar10 + 0x18);\n          } while (lVar10 != 0);\nLAB_0034c5f6:\n          if (lVar6 != lVar4) {\n            lVar5 = *(long *)(lVar6 + 0x20);\n            while (lVar5 <= (long)(uVar9 & 0xffffffffffffe000)) {\n              plVar11 = *(long **)(lVar6 + 0x30);\n              lVar5 = *plVar11;\n              if ((lVar5 <= (long)uVar9) && (lVar12 + param_2 <= plVar11[1] + lVar5)) {\n                *(undefined1 *)(plVar11 + 5) = 1;\n                goto LAB_0034c524;\n              }\n              lVar6 = thunk_FUN_0049f700(lVar6);\n              if (lVar4 == lVar6) break;\n              lVar5 = *(long *)(lVar6 + 0x20);\n            }\n          }\n        }\n        FUN_0034c220(param_1,param_2,param_3,uVar7,uVar16 - uVar7);\n        uVar7 = uVar16;\n      }\n      else {\n        lVar5 = *plVar11;\nLAB_0034c524:\n        lVar12 = plVar11[2];\n        uVar1 = *(uint *)((long)plVar11 + 0x1c);\n        bVar3 = uVar7 < uVar16;\n        uVar7 = uVar16;\n        if (bVar3) {\n          if (uVar15 < __n) {\nLAB_0034c6f6:\n                    \n            FUN_00352af0("../../gold/fileread.cc",0x2f1,"read_multiple");\n          }\n          lVar10 = 0;\n          for (; memcpy((void *)plVar13[2],\n                        (void *)(lVar10 + (uVar9 - lVar5) + (ulong)uVar1 + lVar12),__n),\n              uVar14 != uVar16; uVar14 = uVar14 + 1) {\n            plVar13 = (long *)(*param_3 + uVar14 * 0x18);\n            __n = plVar13[1];\n            lVar10 = *plVar13 - lVar2;\n            if (uVar15 < __n + lVar10) goto LAB_0034c6f6;\n          }\n        }\n      }" if (parenthesized_expression "(plVar11 == (long *)0x0)" ( (binary_expression "plVar11 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        lVar10 = *(long *)(param_1 + 0x68);\n        lVar5 = (uVar9 & 0xffffffffffffe000) - 1;\n        lVar6 = lVar4;\n        if (lVar10 != 0) {\n          do {\n            while ((lVar5 < *(long *)(lVar10 + 0x20) ||\n                   ((lVar5 == *(long *)(lVar10 + 0x20) && (*(int *)(lVar10 + 0x28) != 0))))) {\n              plVar11 = (long *)(lVar10 + 0x10);\n              lVar6 = lVar10;\n              lVar10 = *plVar11;\n              if (*plVar11 == 0) goto LAB_0034c5f6;\n            }\n            lVar10 = *(long *)(lVar10 + 0x18);\n          } while (lVar10 != 0);\nLAB_0034c5f6:\n          if (lVar6 != lVar4) {\n            lVar5 = *(long *)(lVar6 + 0x20);\n            while (lVar5 <= (long)(uVar9 & 0xffffffffffffe000)) {\n              plVar11 = *(long **)(lVar6 + 0x30);\n              lVar5 = *plVar11;\n              if ((lVar5 <= (long)uVar9) && (lVar12 + param_2 <= plVar11[1] + lVar5)) {\n                *(undefined1 *)(plVar11 + 5) = 1;\n                goto LAB_0034c524;\n              }\n              lVar6 = thunk_FUN_0049f700(lVar6);\n              if (lVar4 == lVar6) break;\n              lVar5 = *(long *)(lVar6 + 0x20);\n            }\n          }\n        }\n        FUN_0034c220(param_1,param_2,param_3,uVar7,uVar16 - uVar7);\n        uVar7 = uVar16;\n      }" { (expression_statement "lVar10 = *(long *)(param_1 + 0x68);" (assignment_expression "lVar10 = *(long *)(param_1 + 0x68)" identifier = (pointer_expression "*(long *)(param_1 + 0x68)" * (cast_expression "(long *)(param_1 + 0x68)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x68)" ( (binary_expression "param_1 + 0x68" identifier + number_literal) ))))) ;) (expression_statement "lVar5 = (uVar9 & 0xffffffffffffe000) - 1;" (assignment_expression "lVar5 = (uVar9 & 0xffffffffffffe000) - 1" identifier = (binary_expression "(uVar9 & 0xffffffffffffe000) - 1" (parenthesized_expression "(uVar9 & 0xffffffffffffe000)" ( (binary_expression "uVar9 & 0xffffffffffffe000" identifier & number_literal) )) - number_literal)) ;) (expression_statement "lVar6 = lVar4;" (assignment_expression "lVar6 = lVar4" identifier = identifier) ;) (if_statement "if (lVar10 != 0) {\n          do {\n            while ((lVar5 < *(long *)(lVar10 + 0x20) ||\n                   ((lVar5 == *(long *)(lVar10 + 0x20) && (*(int *)(lVar10 + 0x28) != 0))))) {\n              plVar11 = (long *)(lVar10 + 0x10);\n              lVar6 = lVar10;\n              lVar10 = *plVar11;\n              if (*plVar11 == 0) goto LAB_0034c5f6;\n            }\n            lVar10 = *(long *)(lVar10 + 0x18);\n          } while (lVar10 != 0);\nLAB_0034c5f6:\n          if (lVar6 != lVar4) {\n            lVar5 = *(long *)(lVar6 + 0x20);\n            while (lVar5 <= (long)(uVar9 & 0xffffffffffffe000)) {\n              plVar11 = *(long **)(lVar6 + 0x30);\n              lVar5 = *plVar11;\n              if ((lVar5 <= (long)uVar9) && (lVar12 + param_2 <= plVar11[1] + lVar5)) {\n                *(undefined1 *)(plVar11 + 5) = 1;\n                goto LAB_0034c524;\n              }\n              lVar6 = thunk_FUN_0049f700(lVar6);\n              if (lVar4 == lVar6) break;\n              lVar5 = *(long *)(lVar6 + 0x20);\n            }\n          }\n        }" if (parenthesized_expression "(lVar10 != 0)" ( (binary_expression "lVar10 != 0" identifier != number_literal) )) (compound_statement "{\n          do {\n            while ((lVar5 < *(long *)(lVar10 + 0x20) ||\n                   ((lVar5 == *(long *)(lVar10 + 0x20) && (*(int *)(lVar10 + 0x28) != 0))))) {\n              plVar11 = (long *)(lVar10 + 0x10);\n              lVar6 = lVar10;\n              lVar10 = *plVar11;\n              if (*plVar11 == 0) goto LAB_0034c5f6;\n            }\n            lVar10 = *(long *)(lVar10 + 0x18);\n          } while (lVar10 != 0);\nLAB_0034c5f6:\n          if (lVar6 != lVar4) {\n            lVar5 = *(long *)(lVar6 + 0x20);\n            while (lVar5 <= (long)(uVar9 & 0xffffffffffffe000)) {\n              plVar11 = *(long **)(lVar6 + 0x30);\n              lVar5 = *plVar11;\n              if ((lVar5 <= (long)uVar9) && (lVar12 + param_2 <= plVar11[1] + lVar5)) {\n                *(undefined1 *)(plVar11 + 5) = 1;\n                goto LAB_0034c524;\n              }\n              lVar6 = thunk_FUN_0049f700(lVar6);\n              if (lVar4 == lVar6) break;\n              lVar5 = *(long *)(lVar6 + 0x20);\n            }\n          }\n        }" { (do_statement "do {\n            while ((lVar5 < *(long *)(lVar10 + 0x20) ||\n                   ((lVar5 == *(long *)(lVar10 + 0x20) && (*(int *)(lVar10 + 0x28) != 0))))) {\n              plVar11 = (long *)(lVar10 + 0x10);\n              lVar6 = lVar10;\n              lVar10 = *plVar11;\n              if (*plVar11 == 0) goto LAB_0034c5f6;\n            }\n            lVar10 = *(long *)(lVar10 + 0x18);\n          } while (lVar10 != 0);" do (compound_statement "{\n            while ((lVar5 < *(long *)(lVar10 + 0x20) ||\n                   ((lVar5 == *(long *)(lVar10 + 0x20) && (*(int *)(lVar10 + 0x28) != 0))))) {\n              plVar11 = (long *)(lVar10 + 0x10);\n              lVar6 = lVar10;\n              lVar10 = *plVar11;\n              if (*plVar11 == 0) goto LAB_0034c5f6;\n            }\n            lVar10 = *(long *)(lVar10 + 0x18);\n          }" { (while_statement "while ((lVar5 < *(long *)(lVar10 + 0x20) ||\n                   ((lVar5 == *(long *)(lVar10 + 0x20) && (*(int *)(lVar10 + 0x28) != 0))))) {\n              plVar11 = (long *)(lVar10 + 0x10);\n              lVar6 = lVar10;\n              lVar10 = *plVar11;\n              if (*plVar11 == 0) goto LAB_0034c5f6;\n            }" while (parenthesized_expression "((lVar5 < *(long *)(lVar10 + 0x20) ||\n                   ((lVar5 == *(long *)(lVar10 + 0x20) && (*(int *)(lVar10 + 0x28) != 0)))))" ( (parenthesized_expression "(lVar5 < *(long *)(lVar10 + 0x20) ||\n                   ((lVar5 == *(long *)(lVar10 + 0x20) && (*(int *)(lVar10 + 0x28) != 0))))" ( (binary_expression "lVar5 < *(long *)(lVar10 + 0x20) ||\n                   ((lVar5 == *(long *)(lVar10 + 0x20) && (*(int *)(lVar10 + 0x28) != 0)))" (binary_expression "lVar5 < *(long *)(lVar10 + 0x20)" identifier < (pointer_expression "*(long *)(lVar10 + 0x20)" * (cast_expression "(long *)(lVar10 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + 0x20)" ( (binary_expression "lVar10 + 0x20" identifier + number_literal) ))))) || (parenthesized_expression "((lVar5 == *(long *)(lVar10 + 0x20) && (*(int *)(lVar10 + 0x28) != 0)))" ( (parenthesized_expression "(lVar5 == *(long *)(lVar10 + 0x20) && (*(int *)(lVar10 + 0x28) != 0))" ( (binary_expression "lVar5 == *(long *)(lVar10 + 0x20) && (*(int *)(lVar10 + 0x28) != 0)" (binary_expression "lVar5 == *(long *)(lVar10 + 0x20)" identifier == (pointer_expression "*(long *)(lVar10 + 0x20)" * (cast_expression "(long *)(lVar10 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + 0x20)" ( (binary_expression "lVar10 + 0x20" identifier + number_literal) ))))) && (parenthesized_expression "(*(int *)(lVar10 + 0x28) != 0)" ( (binary_expression "*(int *)(lVar10 + 0x28) != 0" (pointer_expression "*(int *)(lVar10 + 0x28)" * (cast_expression "(int *)(lVar10 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + 0x28)" ( (binary_expression "lVar10 + 0x28" identifier + number_literal) )))) != number_literal) ))) )) ))) )) )) (compound_statement "{\n              plVar11 = (long *)(lVar10 + 0x10);\n              lVar6 = lVar10;\n              lVar10 = *plVar11;\n              if (*plVar11 == 0) goto LAB_0034c5f6;\n            }" { (expression_statement "plVar11 = (long *)(lVar10 + 0x10);" (assignment_expression "plVar11 = (long *)(lVar10 + 0x10)" identifier = (cast_expression "(long *)(lVar10 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + 0x10)" ( (binary_expression "lVar10 + 0x10" identifier + number_literal) )))) ;) (expression_statement "lVar6 = lVar10;" (assignment_expression "lVar6 = lVar10" identifier = identifier) ;) (expression_statement "lVar10 = *plVar11;" (assignment_expression "lVar10 = *plVar11" identifier = (pointer_expression "*plVar11" * identifier)) ;) (if_statement "if (*plVar11 == 0) goto LAB_0034c5f6;" if (parenthesized_expression "(*plVar11 == 0)" ( (binary_expression "*plVar11 == 0" (pointer_expression "*plVar11" * identifier) == number_literal) )) (goto_statement "goto LAB_0034c5f6;" goto statement_identifier ;)) })) (expression_statement "lVar10 = *(long *)(lVar10 + 0x18);" (assignment_expression "lVar10 = *(long *)(lVar10 + 0x18)" identifier = (pointer_expression "*(long *)(lVar10 + 0x18)" * (cast_expression "(long *)(lVar10 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + 0x18)" ( (binary_expression "lVar10 + 0x18" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "(lVar10 != 0)" ( (binary_expression "lVar10 != 0" identifier != number_literal) )) ;) (labeled_statement "LAB_0034c5f6:\n          if (lVar6 != lVar4) {\n            lVar5 = *(long *)(lVar6 + 0x20);\n            while (lVar5 <= (long)(uVar9 & 0xffffffffffffe000)) {\n              plVar11 = *(long **)(lVar6 + 0x30);\n              lVar5 = *plVar11;\n              if ((lVar5 <= (long)uVar9) && (lVar12 + param_2 <= plVar11[1] + lVar5)) {\n                *(undefined1 *)(plVar11 + 5) = 1;\n                goto LAB_0034c524;\n              }\n              lVar6 = thunk_FUN_0049f700(lVar6);\n              if (lVar4 == lVar6) break;\n              lVar5 = *(long *)(lVar6 + 0x20);\n            }\n          }" statement_identifier : (if_statement "if (lVar6 != lVar4) {\n            lVar5 = *(long *)(lVar6 + 0x20);\n            while (lVar5 <= (long)(uVar9 & 0xffffffffffffe000)) {\n              plVar11 = *(long **)(lVar6 + 0x30);\n              lVar5 = *plVar11;\n              if ((lVar5 <= (long)uVar9) && (lVar12 + param_2 <= plVar11[1] + lVar5)) {\n                *(undefined1 *)(plVar11 + 5) = 1;\n                goto LAB_0034c524;\n              }\n              lVar6 = thunk_FUN_0049f700(lVar6);\n              if (lVar4 == lVar6) break;\n              lVar5 = *(long *)(lVar6 + 0x20);\n            }\n          }" if (parenthesized_expression "(lVar6 != lVar4)" ( (binary_expression "lVar6 != lVar4" identifier != identifier) )) (compound_statement "{\n            lVar5 = *(long *)(lVar6 + 0x20);\n            while (lVar5 <= (long)(uVar9 & 0xffffffffffffe000)) {\n              plVar11 = *(long **)(lVar6 + 0x30);\n              lVar5 = *plVar11;\n              if ((lVar5 <= (long)uVar9) && (lVar12 + param_2 <= plVar11[1] + lVar5)) {\n                *(undefined1 *)(plVar11 + 5) = 1;\n                goto LAB_0034c524;\n              }\n              lVar6 = thunk_FUN_0049f700(lVar6);\n              if (lVar4 == lVar6) break;\n              lVar5 = *(long *)(lVar6 + 0x20);\n            }\n          }" { (expression_statement "lVar5 = *(long *)(lVar6 + 0x20);" (assignment_expression "lVar5 = *(long *)(lVar6 + 0x20)" identifier = (pointer_expression "*(long *)(lVar6 + 0x20)" * (cast_expression "(long *)(lVar6 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x20)" ( (binary_expression "lVar6 + 0x20" identifier + number_literal) ))))) ;) (while_statement "while (lVar5 <= (long)(uVar9 & 0xffffffffffffe000)) {\n              plVar11 = *(long **)(lVar6 + 0x30);\n              lVar5 = *plVar11;\n              if ((lVar5 <= (long)uVar9) && (lVar12 + param_2 <= plVar11[1] + lVar5)) {\n                *(undefined1 *)(plVar11 + 5) = 1;\n                goto LAB_0034c524;\n              }\n              lVar6 = thunk_FUN_0049f700(lVar6);\n              if (lVar4 == lVar6) break;\n              lVar5 = *(long *)(lVar6 + 0x20);\n            }" while (parenthesized_expression "(lVar5 <= (long)(uVar9 & 0xffffffffffffe000))" ( (binary_expression "lVar5 <= (long)(uVar9 & 0xffffffffffffe000)" identifier <= (cast_expression "(long)(uVar9 & 0xffffffffffffe000)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(uVar9 & 0xffffffffffffe000)" ( (binary_expression "uVar9 & 0xffffffffffffe000" identifier & number_literal) )))) )) (compound_statement "{\n              plVar11 = *(long **)(lVar6 + 0x30);\n              lVar5 = *plVar11;\n              if ((lVar5 <= (long)uVar9) && (lVar12 + param_2 <= plVar11[1] + lVar5)) {\n                *(undefined1 *)(plVar11 + 5) = 1;\n                goto LAB_0034c524;\n              }\n              lVar6 = thunk_FUN_0049f700(lVar6);\n              if (lVar4 == lVar6) break;\n              lVar5 = *(long *)(lVar6 + 0x20);\n            }" { (expression_statement "plVar11 = *(long **)(lVar6 + 0x30);" (assignment_expression "plVar11 = *(long **)(lVar6 + 0x30)" identifier = (pointer_expression "*(long **)(lVar6 + 0x30)" * (cast_expression "(long **)(lVar6 + 0x30)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar6 + 0x30)" ( (binary_expression "lVar6 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "lVar5 = *plVar11;" (assignment_expression "lVar5 = *plVar11" identifier = (pointer_expression "*plVar11" * identifier)) ;) (if_statement "if ((lVar5 <= (long)uVar9) && (lVar12 + param_2 <= plVar11[1] + lVar5)) {\n                *(undefined1 *)(plVar11 + 5) = 1;\n                goto LAB_0034c524;\n              }" if (parenthesized_expression "((lVar5 <= (long)uVar9) && (lVar12 + param_2 <= plVar11[1] + lVar5))" ( (binary_expression "(lVar5 <= (long)uVar9) && (lVar12 + param_2 <= plVar11[1] + lVar5)" (parenthesized_expression "(lVar5 <= (long)uVar9)" ( (binary_expression "lVar5 <= (long)uVar9" identifier <= (cast_expression "(long)uVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) && (parenthesized_expression "(lVar12 + param_2 <= plVar11[1] + lVar5)" ( (binary_expression "lVar12 + param_2 <= plVar11[1] + lVar5" (binary_expression "lVar12 + param_2" identifier + identifier) <= (binary_expression "plVar11[1] + lVar5" (subscript_expression "plVar11[1]" identifier [ number_literal ]) + identifier)) ))) )) (compound_statement "{\n                *(undefined1 *)(plVar11 + 5) = 1;\n                goto LAB_0034c524;\n              }" { (expression_statement "*(undefined1 *)(plVar11 + 5) = 1;" (assignment_expression "*(undefined1 *)(plVar11 + 5) = 1" (pointer_expression "*(undefined1 *)(plVar11 + 5)" * (cast_expression "(undefined1 *)(plVar11 + 5)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar11 + 5)" ( (binary_expression "plVar11 + 5" identifier + number_literal) )))) = number_literal) ;) (goto_statement "goto LAB_0034c524;" goto statement_identifier ;) })) (expression_statement "lVar6 = thunk_FUN_0049f700(lVar6);" (assignment_expression "lVar6 = thunk_FUN_0049f700(lVar6)" identifier = (call_expression "thunk_FUN_0049f700(lVar6)" identifier (argument_list "(lVar6)" ( identifier )))) ;) (if_statement "if (lVar4 == lVar6) break;" if (parenthesized_expression "(lVar4 == lVar6)" ( (binary_expression "lVar4 == lVar6" identifier == identifier) )) (break_statement "break;" break ;)) (expression_statement "lVar5 = *(long *)(lVar6 + 0x20);" (assignment_expression "lVar5 = *(long *)(lVar6 + 0x20)" identifier = (pointer_expression "*(long *)(lVar6 + 0x20)" * (cast_expression "(long *)(lVar6 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x20)" ( (binary_expression "lVar6 + 0x20" identifier + number_literal) ))))) ;) })) }))) })) (expression_statement "FUN_0034c220(param_1,param_2,param_3,uVar7,uVar16 - uVar7);" (call_expression "FUN_0034c220(param_1,param_2,param_3,uVar7,uVar16 - uVar7)" identifier (argument_list "(param_1,param_2,param_3,uVar7,uVar16 - uVar7)" ( identifier , identifier , identifier , identifier , (binary_expression "uVar16 - uVar7" identifier - identifier) ))) ;) (expression_statement "uVar7 = uVar16;" (assignment_expression "uVar7 = uVar16" identifier = identifier) ;) }) (else_clause "else {\n        lVar5 = *plVar11;\nLAB_0034c524:\n        lVar12 = plVar11[2];\n        uVar1 = *(uint *)((long)plVar11 + 0x1c);\n        bVar3 = uVar7 < uVar16;\n        uVar7 = uVar16;\n        if (bVar3) {\n          if (uVar15 < __n) {\nLAB_0034c6f6:\n                    \n            FUN_00352af0("../../gold/fileread.cc",0x2f1,"read_multiple");\n          }\n          lVar10 = 0;\n          for (; memcpy((void *)plVar13[2],\n                        (void *)(lVar10 + (uVar9 - lVar5) + (ulong)uVar1 + lVar12),__n),\n              uVar14 != uVar16; uVar14 = uVar14 + 1) {\n            plVar13 = (long *)(*param_3 + uVar14 * 0x18);\n            __n = plVar13[1];\n            lVar10 = *plVar13 - lVar2;\n            if (uVar15 < __n + lVar10) goto LAB_0034c6f6;\n          }\n        }\n      }" else (compound_statement "{\n        lVar5 = *plVar11;\nLAB_0034c524:\n        lVar12 = plVar11[2];\n        uVar1 = *(uint *)((long)plVar11 + 0x1c);\n        bVar3 = uVar7 < uVar16;\n        uVar7 = uVar16;\n        if (bVar3) {\n          if (uVar15 < __n) {\nLAB_0034c6f6:\n                    \n            FUN_00352af0("../../gold/fileread.cc",0x2f1,"read_multiple");\n          }\n          lVar10 = 0;\n          for (; memcpy((void *)plVar13[2],\n                        (void *)(lVar10 + (uVar9 - lVar5) + (ulong)uVar1 + lVar12),__n),\n              uVar14 != uVar16; uVar14 = uVar14 + 1) {\n            plVar13 = (long *)(*param_3 + uVar14 * 0x18);\n            __n = plVar13[1];\n            lVar10 = *plVar13 - lVar2;\n            if (uVar15 < __n + lVar10) goto LAB_0034c6f6;\n          }\n        }\n      }" { (expression_statement "lVar5 = *plVar11;" (assignment_expression "lVar5 = *plVar11" identifier = (pointer_expression "*plVar11" * identifier)) ;) (labeled_statement "LAB_0034c524:\n        lVar12 = plVar11[2];" statement_identifier : (expression_statement "lVar12 = plVar11[2];" (assignment_expression "lVar12 = plVar11[2]" identifier = (subscript_expression "plVar11[2]" identifier [ number_literal ])) ;)) (expression_statement "uVar1 = *(uint *)((long)plVar11 + 0x1c);" (assignment_expression "uVar1 = *(uint *)((long)plVar11 + 0x1c)" identifier = (pointer_expression "*(uint *)((long)plVar11 + 0x1c)" * (cast_expression "(uint *)((long)plVar11 + 0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar11 + 0x1c)" ( (binary_expression "(long)plVar11 + 0x1c" (cast_expression "(long)plVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "bVar3 = uVar7 < uVar16;" (assignment_expression "bVar3 = uVar7 < uVar16" identifier = (binary_expression "uVar7 < uVar16" identifier < identifier)) ;) (expression_statement "uVar7 = uVar16;" (assignment_expression "uVar7 = uVar16" identifier = identifier) ;) (if_statement "if (bVar3) {\n          if (uVar15 < __n) {\nLAB_0034c6f6:\n                    \n            FUN_00352af0("../../gold/fileread.cc",0x2f1,"read_multiple");\n          }\n          lVar10 = 0;\n          for (; memcpy((void *)plVar13[2],\n                        (void *)(lVar10 + (uVar9 - lVar5) + (ulong)uVar1 + lVar12),__n),\n              uVar14 != uVar16; uVar14 = uVar14 + 1) {\n            plVar13 = (long *)(*param_3 + uVar14 * 0x18);\n            __n = plVar13[1];\n            lVar10 = *plVar13 - lVar2;\n            if (uVar15 < __n + lVar10) goto LAB_0034c6f6;\n          }\n        }" if (parenthesized_expression "(bVar3)" ( identifier )) (compound_statement "{\n          if (uVar15 < __n) {\nLAB_0034c6f6:\n                    \n            FUN_00352af0("../../gold/fileread.cc",0x2f1,"read_multiple");\n          }\n          lVar10 = 0;\n          for (; memcpy((void *)plVar13[2],\n                        (void *)(lVar10 + (uVar9 - lVar5) + (ulong)uVar1 + lVar12),__n),\n              uVar14 != uVar16; uVar14 = uVar14 + 1) {\n            plVar13 = (long *)(*param_3 + uVar14 * 0x18);\n            __n = plVar13[1];\n            lVar10 = *plVar13 - lVar2;\n            if (uVar15 < __n + lVar10) goto LAB_0034c6f6;\n          }\n        }" { (if_statement "if (uVar15 < __n) {\nLAB_0034c6f6:\n                    \n            FUN_00352af0("../../gold/fileread.cc",0x2f1,"read_multiple");\n          }" if (parenthesized_expression "(uVar15 < __n)" ( (binary_expression "uVar15 < __n" identifier < identifier) )) (compound_statement "{\nLAB_0034c6f6:\n                    \n            FUN_00352af0("../../gold/fileread.cc",0x2f1,"read_multiple");\n          }" { (labeled_statement "LAB_0034c6f6:\n                    \n            FUN_00352af0("../../gold/fileread.cc",0x2f1,"read_multiple");" statement_identifier : (expression_statement "FUN_00352af0("../../gold/fileread.cc",0x2f1,"read_multiple");" (call_expression "FUN_00352af0("../../gold/fileread.cc",0x2f1,"read_multiple")" identifier (argument_list "("../../gold/fileread.cc",0x2f1,"read_multiple")" ( (string_literal ""../../gold/fileread.cc"" " string_content ") , number_literal , (string_literal ""read_multiple"" " string_content ") ))) ;)) })) (expression_statement "lVar10 = 0;" (assignment_expression "lVar10 = 0" identifier = number_literal) ;) (for_statement "for (; memcpy((void *)plVar13[2],\n                        (void *)(lVar10 + (uVar9 - lVar5) + (ulong)uVar1 + lVar12),__n),\n              uVar14 != uVar16; uVar14 = uVar14 + 1) {\n            plVar13 = (long *)(*param_3 + uVar14 * 0x18);\n            __n = plVar13[1];\n            lVar10 = *plVar13 - lVar2;\n            if (uVar15 < __n + lVar10) goto LAB_0034c6f6;\n          }" for ( ; (comma_expression "memcpy((void *)plVar13[2],\n                        (void *)(lVar10 + (uVar9 - lVar5) + (ulong)uVar1 + lVar12),__n),\n              uVar14 != uVar16" (call_expression "memcpy((void *)plVar13[2],\n                        (void *)(lVar10 + (uVar9 - lVar5) + (ulong)uVar1 + lVar12),__n)" identifier (argument_list "((void *)plVar13[2],\n                        (void *)(lVar10 + (uVar9 - lVar5) + (ulong)uVar1 + lVar12),__n)" ( (cast_expression "(void *)plVar13[2]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar13[2]" identifier [ number_literal ])) , (cast_expression "(void *)(lVar10 + (uVar9 - lVar5) + (ulong)uVar1 + lVar12)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + (uVar9 - lVar5) + (ulong)uVar1 + lVar12)" ( (binary_expression "lVar10 + (uVar9 - lVar5) + (ulong)uVar1 + lVar12" (binary_expression "lVar10 + (uVar9 - lVar5) + (ulong)uVar1" (binary_expression "lVar10 + (uVar9 - lVar5)" identifier + (parenthesized_expression "(uVar9 - lVar5)" ( (binary_expression "uVar9 - lVar5" identifier - identifier) ))) + (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier)) + identifier) ))) , identifier ))) , (binary_expression "uVar14 != uVar16" identifier != identifier)) ; (assignment_expression "uVar14 = uVar14 + 1" identifier = (binary_expression "uVar14 + 1" identifier + number_literal)) ) (compound_statement "{\n            plVar13 = (long *)(*param_3 + uVar14 * 0x18);\n            __n = plVar13[1];\n            lVar10 = *plVar13 - lVar2;\n            if (uVar15 < __n + lVar10) goto LAB_0034c6f6;\n          }" { (expression_statement "plVar13 = (long *)(*param_3 + uVar14 * 0x18);" (assignment_expression "plVar13 = (long *)(*param_3 + uVar14 * 0x18)" identifier = (cast_expression "(long *)(*param_3 + uVar14 * 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_3 + uVar14 * 0x18)" ( (binary_expression "*param_3 + uVar14 * 0x18" (pointer_expression "*param_3" * identifier) + (binary_expression "uVar14 * 0x18" identifier * number_literal)) )))) ;) (expression_statement "__n = plVar13[1];" (assignment_expression "__n = plVar13[1]" identifier = (subscript_expression "plVar13[1]" identifier [ number_literal ])) ;) (expression_statement "lVar10 = *plVar13 - lVar2;" (assignment_expression "lVar10 = *plVar13 - lVar2" identifier = (binary_expression "*plVar13 - lVar2" (pointer_expression "*plVar13" * identifier) - identifier)) ;) (if_statement "if (uVar15 < __n + lVar10) goto LAB_0034c6f6;" if (parenthesized_expression "(uVar15 < __n + lVar10)" ( (binary_expression "uVar15 < __n + lVar10" identifier < (binary_expression "__n + lVar10" identifier + identifier)) )) (goto_statement "goto LAB_0034c6f6;" goto statement_identifier ;)) })) })) }))) }) (else_clause "else {\nLAB_0034c6c0:\n      FUN_0034c0e0(param_1,lVar2 + param_2,__n,plVar13[2]);\n      uVar7 = uVar16;\n    }" else (compound_statement "{\nLAB_0034c6c0:\n      FUN_0034c0e0(param_1,lVar2 + param_2,__n,plVar13[2]);\n      uVar7 = uVar16;\n    }" { (labeled_statement "LAB_0034c6c0:\n      FUN_0034c0e0(param_1,lVar2 + param_2,__n,plVar13[2]);" statement_identifier : (expression_statement "FUN_0034c0e0(param_1,lVar2 + param_2,__n,plVar13[2]);" (call_expression "FUN_0034c0e0(param_1,lVar2 + param_2,__n,plVar13[2])" identifier (argument_list "(param_1,lVar2 + param_2,__n,plVar13[2])" ( identifier , (binary_expression "lVar2 + param_2" identifier + identifier) , identifier , (subscript_expression "plVar13[2]" identifier [ number_literal ]) ))) ;)) (expression_statement "uVar7 = uVar16;" (assignment_expression "uVar7 = uVar16" identifier = identifier) ;) }))) (if_statement "if (uVar8 <= uVar7) {\n      return;\n    }" if (parenthesized_expression "(uVar8 <= uVar7)" ( (binary_expression "uVar8 <= uVar7" identifier <= identifier) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (expression_statement "lVar12 = *param_3;" (assignment_expression "lVar12 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration (sized_type_specifier long) (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) - IDENT) >> LIT) )) * LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;)) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (parenthesized_expression ( (binary_expression IDENT - (parenthesized_expression ( (binary_expression IDENT + IDENT) ))) )))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT + LIT)) , (binary_expression IDENT == (binary_expression IDENT + LIT))) ))) )) (break_statement break ;)) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) < IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) + (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT - IDENT) < LIT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) )) || (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - IDENT) < IDENT) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) - LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT < (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) && (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 (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (while_statement while (parenthesized_expression ( (binary_expression IDENT <= (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (parenthesized_expression ( (binary_expression IDENT & LIT) )))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT <= (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) )) && (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) <= (binary_expression (subscript_expression IDENT [ LIT ]) + IDENT)) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) }))) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , (binary_expression IDENT - IDENT) ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT < IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;)) })) (expression_statement (assignment_expression IDENT = LIT) ;) (for_statement for ( ; (comma_expression (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT + (parenthesized_expression ( (binary_expression IDENT - IDENT) ))) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) + IDENT) ))) , IDENT ))) , (binary_expression IDENT != IDENT)) ; (assignment_expression IDENT = (binary_expression IDENT + LIT)) ) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + (binary_expression IDENT * LIT)) )))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (binary_expression IDENT + IDENT)) )) (goto_statement goto statement_identifier ;)) })) })) }))) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + IDENT) , IDENT , (subscript_expression IDENT [ LIT ]) ))) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) }) while (parenthesized_expression ( BOOL )) ;) })))
(function_definition "void FUN_0034c3e0(long param_1,long param_2,long *param_3)\n\n{\n  uint uVar1;\n  long lVar2;\n  bool bVar3;\n  long lVar4;\n  long lVar5;\n  long lVar6;\n  ulong uVar7;\n  ulong __n;\n  ulong uVar8;\n  ulong uVar9;\n  long lVar10;\n  long *plVar11;\n  long lVar12;\n  long *plVar13;\n  ulong uVar14;\n  ulong uVar15;\n  ulong uVar16;\n  \n  lVar12 = *param_3;\n  uVar8 = (param_3[1] - lVar12 >> 3) * -0x5555555555555555;\n  if (uVar8 == 0) {\n    return;\n  }\n  uVar7 = 0;\n  lVar4 = param_1 + 0x60;\n  do {\n    uVar14 = uVar7 + 1;\n    lVar5 = uVar7 * 0x18;\n    plVar13 = (long *)(lVar12 + lVar5);\n    lVar2 = *plVar13;\n    __n = plVar13[1];\n    uVar16 = uVar14;\n    if (uVar14 < uVar8) {\n      plVar11 = (long *)(lVar12 + 0x18 + lVar5);\n      lVar10 = *plVar11;\n      if (lVar10 < (long)(lVar2 + __n)) {\nLAB_0034c6de:\n                    \n        FUN_00352af0("../../gold/fileread.cc",0x2d5,"read_multiple");\n      }\n      lVar10 = lVar10 + plVar11[1];\n      if (0x1fff < (long)(lVar10 - (lVar2 + __n))) goto LAB_0034c6c0;\n      plVar11 = (long *)(lVar12 + 0x30 + lVar5);\n      uVar9 = uVar14;\n      do {\n        uVar15 = uVar9;\n        lVar12 = lVar10;\n        uVar9 = uVar15 + 1;\n        uVar16 = uVar9;\n        if ((uVar8 <= uVar9) || (uVar16 = uVar7 + 0x80, uVar9 == uVar7 + 0x80)) break;\n        if (*plVar11 < lVar12) goto LAB_0034c6de;\n        lVar10 = *plVar11 + plVar11[1];\n        plVar11 = plVar11 + 3;\n        uVar16 = uVar9;\n      } while (lVar10 - lVar12 < 0x2000);\n      uVar9 = lVar2 + param_2;\n      if (uVar15 == uVar7) goto LAB_0034c6c0;\n      uVar15 = lVar12 - lVar2;\n      if ((*(long *)(param_1 + 0x30) < (long)uVar9) || (*(long *)(param_1 + 0x30) - uVar9 < uVar15))\n      {\n                    \n        FUN_00352af0("../../gold/fileread.cc",0x150,"find_view");\n      }\n      plVar11 = *(long **)(param_1 + 0xb0);\n      if (plVar11 == (long *)0x0) {\n        lVar10 = *(long *)(param_1 + 0x68);\n        lVar5 = (uVar9 & 0xffffffffffffe000) - 1;\n        lVar6 = lVar4;\n        if (lVar10 != 0) {\n          do {\n            while ((lVar5 < *(long *)(lVar10 + 0x20) ||\n                   ((lVar5 == *(long *)(lVar10 + 0x20) && (*(int *)(lVar10 + 0x28) != 0))))) {\n              plVar11 = (long *)(lVar10 + 0x10);\n              lVar6 = lVar10;\n              lVar10 = *plVar11;\n              if (*plVar11 == 0) goto LAB_0034c5f6;\n            }\n            lVar10 = *(long *)(lVar10 + 0x18);\n          } while (lVar10 != 0);\nLAB_0034c5f6:\n          if (lVar6 != lVar4) {\n            lVar5 = *(long *)(lVar6 + 0x20);\n            while (lVar5 <= (long)(uVar9 & 0xffffffffffffe000)) {\n              plVar11 = *(long **)(lVar6 + 0x30);\n              lVar5 = *plVar11;\n              if ((lVar5 <= (long)uVar9) && (lVar12 + param_2 <= plVar11[1] + lVar5)) {\n                *(undefined1 *)(plVar11 + 5) = 1;\n                goto LAB_0034c524;\n              }\n              lVar6 = thunk_FUN_0049f700(lVar6);\n              if (lVar4 == lVar6) break;\n              lVar5 = *(long *)(lVar6 + 0x20);\n            }\n          }\n        }\n        FUN_0034c220(param_1,param_2,param_3,uVar7,uVar16 - uVar7);\n        uVar7 = uVar16;\n      }\n      else {\n        lVar5 = *plVar11;\nLAB_0034c524:\n        lVar12 = plVar11[2];\n        uVar1 = *(uint *)((long)plVar11 + 0x1c);\n        bVar3 = uVar7 < uVar16;\n        uVar7 = uVar16;\n        if (bVar3) {\n          if (uVar15 < __n) {\nLAB_0034c6f6:\n                    \n            FUN_00352af0("../../gold/fileread.cc",0x2f1,"read_multiple");\n          }\n          lVar10 = 0;\n          for (; memcpy((void *)plVar13[2],\n                        (void *)(lVar10 + (uVar9 - lVar5) + (ulong)uVar1 + lVar12),__n),\n              uVar14 != uVar16; uVar14 = uVar14 + 1) {\n            plVar13 = (long *)(*param_3 + uVar14 * 0x18);\n            __n = plVar13[1];\n            lVar10 = *plVar13 - lVar2;\n            if (uVar15 < __n + lVar10) goto LAB_0034c6f6;\n          }\n        }\n      }\n    }\n    else {\nLAB_0034c6c0:\n      FUN_0034c0e0(param_1,lVar2 + param_2,__n,plVar13[2]);\n      uVar7 = uVar16;\n    }\n    if (uVar8 <= uVar7) {\n      return;\n    }\n    lVar12 = *param_3;\n  } while( true );\n}" (primitive_type "void") (function_declarator "FUN_0034c3e0(long param_1,long param_2,long *param_3)" (identifier "FUN_0034c3e0") (parameter_list "(long param_1,long param_2,long *param_3)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) (, ",") (parameter_declaration "long param_2" (sized_type_specifier "long" (long "long")) (identifier "param_2")) (, ",") (parameter_declaration "long *param_3" (sized_type_specifier "long" (long "long")) (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) () ")"))) (compound_statement "{\n  uint uVar1;\n  long lVar2;\n  bool bVar3;\n  long lVar4;\n  long lVar5;\n  long lVar6;\n  ulong uVar7;\n  ulong __n;\n  ulong uVar8;\n  ulong uVar9;\n  long lVar10;\n  long *plVar11;\n  long lVar12;\n  long *plVar13;\n  ulong uVar14;\n  ulong uVar15;\n  ulong uVar16;\n  \n  lVar12 = *param_3;\n  uVar8 = (param_3[1] - lVar12 >> 3) * -0x5555555555555555;\n  if (uVar8 == 0) {\n    return;\n  }\n  uVar7 = 0;\n  lVar4 = param_1 + 0x60;\n  do {\n    uVar14 = uVar7 + 1;\n    lVar5 = uVar7 * 0x18;\n    plVar13 = (long *)(lVar12 + lVar5);\n    lVar2 = *plVar13;\n    __n = plVar13[1];\n    uVar16 = uVar14;\n    if (uVar14 < uVar8) {\n      plVar11 = (long *)(lVar12 + 0x18 + lVar5);\n      lVar10 = *plVar11;\n      if (lVar10 < (long)(lVar2 + __n)) {\nLAB_0034c6de:\n                    \n        FUN_00352af0("../../gold/fileread.cc",0x2d5,"read_multiple");\n      }\n      lVar10 = lVar10 + plVar11[1];\n      if (0x1fff < (long)(lVar10 - (lVar2 + __n))) goto LAB_0034c6c0;\n      plVar11 = (long *)(lVar12 + 0x30 + lVar5);\n      uVar9 = uVar14;\n      do {\n        uVar15 = uVar9;\n        lVar12 = lVar10;\n        uVar9 = uVar15 + 1;\n        uVar16 = uVar9;\n        if ((uVar8 <= uVar9) || (uVar16 = uVar7 + 0x80, uVar9 == uVar7 + 0x80)) break;\n        if (*plVar11 < lVar12) goto LAB_0034c6de;\n        lVar10 = *plVar11 + plVar11[1];\n        plVar11 = plVar11 + 3;\n        uVar16 = uVar9;\n      } while (lVar10 - lVar12 < 0x2000);\n      uVar9 = lVar2 + param_2;\n      if (uVar15 == uVar7) goto LAB_0034c6c0;\n      uVar15 = lVar12 - lVar2;\n      if ((*(long *)(param_1 + 0x30) < (long)uVar9) || (*(long *)(param_1 + 0x30) - uVar9 < uVar15))\n      {\n                    \n        FUN_00352af0("../../gold/fileread.cc",0x150,"find_view");\n      }\n      plVar11 = *(long **)(param_1 + 0xb0);\n      if (plVar11 == (long *)0x0) {\n        lVar10 = *(long *)(param_1 + 0x68);\n        lVar5 = (uVar9 & 0xffffffffffffe000) - 1;\n        lVar6 = lVar4;\n        if (lVar10 != 0) {\n          do {\n            while ((lVar5 < *(long *)(lVar10 + 0x20) ||\n                   ((lVar5 == *(long *)(lVar10 + 0x20) && (*(int *)(lVar10 + 0x28) != 0))))) {\n              plVar11 = (long *)(lVar10 + 0x10);\n              lVar6 = lVar10;\n              lVar10 = *plVar11;\n              if (*plVar11 == 0) goto LAB_0034c5f6;\n            }\n            lVar10 = *(long *)(lVar10 + 0x18);\n          } while (lVar10 != 0);\nLAB_0034c5f6:\n          if (lVar6 != lVar4) {\n            lVar5 = *(long *)(lVar6 + 0x20);\n            while (lVar5 <= (long)(uVar9 & 0xffffffffffffe000)) {\n              plVar11 = *(long **)(lVar6 + 0x30);\n              lVar5 = *plVar11;\n              if ((lVar5 <= (long)uVar9) && (lVar12 + param_2 <= plVar11[1] + lVar5)) {\n                *(undefined1 *)(plVar11 + 5) = 1;\n                goto LAB_0034c524;\n              }\n              lVar6 = thunk_FUN_0049f700(lVar6);\n              if (lVar4 == lVar6) break;\n              lVar5 = *(long *)(lVar6 + 0x20);\n            }\n          }\n        }\n        FUN_0034c220(param_1,param_2,param_3,uVar7,uVar16 - uVar7);\n        uVar7 = uVar16;\n      }\n      else {\n        lVar5 = *plVar11;\nLAB_0034c524:\n        lVar12 = plVar11[2];\n        uVar1 = *(uint *)((long)plVar11 + 0x1c);\n        bVar3 = uVar7 < uVar16;\n        uVar7 = uVar16;\n        if (bVar3) {\n          if (uVar15 < __n) {\nLAB_0034c6f6:\n                    \n            FUN_00352af0("../../gold/fileread.cc",0x2f1,"read_multiple");\n          }\n          lVar10 = 0;\n          for (; memcpy((void *)plVar13[2],\n                        (void *)(lVar10 + (uVar9 - lVar5) + (ulong)uVar1 + lVar12),__n),\n              uVar14 != uVar16; uVar14 = uVar14 + 1) {\n            plVar13 = (long *)(*param_3 + uVar14 * 0x18);\n            __n = plVar13[1];\n            lVar10 = *plVar13 - lVar2;\n            if (uVar15 < __n + lVar10) goto LAB_0034c6f6;\n          }\n        }\n      }\n    }\n    else {\nLAB_0034c6c0:\n      FUN_0034c0e0(param_1,lVar2 + param_2,__n,plVar13[2]);\n      uVar7 = uVar16;\n    }\n    if (uVar8 <= uVar7) {\n      return;\n    }\n    lVar12 = *param_3;\n  } while( true );\n}" ({ "{") (declaration "uint uVar1;" (type_identifier "uint") (identifier "uVar1") (; ";")) (declaration "long lVar2;" (sized_type_specifier "long" (long "long")) (identifier "lVar2") (; ";")) (declaration "bool bVar3;" (primitive_type "bool") (identifier "bVar3") (; ";")) (declaration "long lVar4;" (sized_type_specifier "long" (long "long")) (identifier "lVar4") (; ";")) (declaration "long lVar5;" (sized_type_specifier "long" (long "long")) (identifier "lVar5") (; ";")) (declaration "long lVar6;" (sized_type_specifier "long" (long "long")) (identifier "lVar6") (; ";")) (declaration "ulong uVar7;" (type_identifier "ulong") (identifier "uVar7") (; ";")) (declaration "ulong __n;" (type_identifier "ulong") (identifier "__n") (; ";")) (declaration "ulong uVar8;" (type_identifier "ulong") (identifier "uVar8") (; ";")) (declaration "ulong uVar9;" (type_identifier "ulong") (identifier "uVar9") (; ";")) (declaration "long lVar10;" (sized_type_specifier "long" (long "long")) (identifier "lVar10") (; ";")) (declaration "long *plVar11;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar11" (* "*") (identifier "plVar11")) (; ";")) (declaration "long lVar12;" (sized_type_specifier "long" (long "long")) (identifier "lVar12") (; ";")) (declaration "long *plVar13;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar13" (* "*") (identifier "plVar13")) (; ";")) (declaration "ulong uVar14;" (type_identifier "ulong") (identifier "uVar14") (; ";")) (declaration "ulong uVar15;" (type_identifier "ulong") (identifier "uVar15") (; ";")) (declaration "ulong uVar16;" (type_identifier "ulong") (identifier "uVar16") (; ";")) (expression_statement "lVar12 = *param_3;" (assignment_expression "lVar12 = *param_3" (identifier "lVar12") (= "=") (pointer_expression "*param_3" (* "*") (identifier "param_3"))) (; ";")) (expression_statement "uVar8 = (param_3[1] - lVar12 >> 3) * -0x5555555555555555;" (assignment_expression "uVar8 = (param_3[1] - lVar12 >> 3) * -0x5555555555555555" (identifier "uVar8") (= "=") (binary_expression "(param_3[1] - lVar12 >> 3) * -0x5555555555555555" (parenthesized_expression "(param_3[1] - lVar12 >> 3)" (( "(") (binary_expression "param_3[1] - lVar12 >> 3" (binary_expression "param_3[1] - lVar12" (subscript_expression "param_3[1]" (identifier "param_3") ([ "[") (number_literal "1") (] "]")) (- "-") (identifier "lVar12")) (>> ">>") (number_literal "3")) () ")")) (* "*") (number_literal "-0x5555555555555555"))) (; ";")) (if_statement "if (uVar8 == 0) {\n    return;\n  }" (if "if") (parenthesized_expression "(uVar8 == 0)" (( "(") (binary_expression "uVar8 == 0" (identifier "uVar8") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" (identifier "uVar7") (= "=") (number_literal "0")) (; ";")) (expression_statement "lVar4 = param_1 + 0x60;" (assignment_expression "lVar4 = param_1 + 0x60" (identifier "lVar4") (= "=") (binary_expression "param_1 + 0x60" (identifier "param_1") (+ "+") (number_literal "0x60"))) (; ";")) (do_statement "do {\n    uVar14 = uVar7 + 1;\n    lVar5 = uVar7 * 0x18;\n    plVar13 = (long *)(lVar12 + lVar5);\n    lVar2 = *plVar13;\n    __n = plVar13[1];\n    uVar16 = uVar14;\n    if (uVar14 < uVar8) {\n      plVar11 = (long *)(lVar12 + 0x18 + lVar5);\n      lVar10 = *plVar11;\n      if (lVar10 < (long)(lVar2 + __n)) {\nLAB_0034c6de:\n                    \n        FUN_00352af0("../../gold/fileread.cc",0x2d5,"read_multiple");\n      }\n      lVar10 = lVar10 + plVar11[1];\n      if (0x1fff < (long)(lVar10 - (lVar2 + __n))) goto LAB_0034c6c0;\n      plVar11 = (long *)(lVar12 + 0x30 + lVar5);\n      uVar9 = uVar14;\n      do {\n        uVar15 = uVar9;\n        lVar12 = lVar10;\n        uVar9 = uVar15 + 1;\n        uVar16 = uVar9;\n        if ((uVar8 <= uVar9) || (uVar16 = uVar7 + 0x80, uVar9 == uVar7 + 0x80)) break;\n        if (*plVar11 < lVar12) goto LAB_0034c6de;\n        lVar10 = *plVar11 + plVar11[1];\n        plVar11 = plVar11 + 3;\n        uVar16 = uVar9;\n      } while (lVar10 - lVar12 < 0x2000);\n      uVar9 = lVar2 + param_2;\n      if (uVar15 == uVar7) goto LAB_0034c6c0;\n      uVar15 = lVar12 - lVar2;\n      if ((*(long *)(param_1 + 0x30) < (long)uVar9) || (*(long *)(param_1 + 0x30) - uVar9 < uVar15))\n      {\n                    \n        FUN_00352af0("../../gold/fileread.cc",0x150,"find_view");\n      }\n      plVar11 = *(long **)(param_1 + 0xb0);\n      if (plVar11 == (long *)0x0) {\n        lVar10 = *(long *)(param_1 + 0x68);\n        lVar5 = (uVar9 & 0xffffffffffffe000) - 1;\n        lVar6 = lVar4;\n        if (lVar10 != 0) {\n          do {\n            while ((lVar5 < *(long *)(lVar10 + 0x20) ||\n                   ((lVar5 == *(long *)(lVar10 + 0x20) && (*(int *)(lVar10 + 0x28) != 0))))) {\n              plVar11 = (long *)(lVar10 + 0x10);\n              lVar6 = lVar10;\n              lVar10 = *plVar11;\n              if (*plVar11 == 0) goto LAB_0034c5f6;\n            }\n            lVar10 = *(long *)(lVar10 + 0x18);\n          } while (lVar10 != 0);\nLAB_0034c5f6:\n          if (lVar6 != lVar4) {\n            lVar5 = *(long *)(lVar6 + 0x20);\n            while (lVar5 <= (long)(uVar9 & 0xffffffffffffe000)) {\n              plVar11 = *(long **)(lVar6 + 0x30);\n              lVar5 = *plVar11;\n              if ((lVar5 <= (long)uVar9) && (lVar12 + param_2 <= plVar11[1] + lVar5)) {\n                *(undefined1 *)(plVar11 + 5) = 1;\n                goto LAB_0034c524;\n              }\n              lVar6 = thunk_FUN_0049f700(lVar6);\n              if (lVar4 == lVar6) break;\n              lVar5 = *(long *)(lVar6 + 0x20);\n            }\n          }\n        }\n        FUN_0034c220(param_1,param_2,param_3,uVar7,uVar16 - uVar7);\n        uVar7 = uVar16;\n      }\n      else {\n        lVar5 = *plVar11;\nLAB_0034c524:\n        lVar12 = plVar11[2];\n        uVar1 = *(uint *)((long)plVar11 + 0x1c);\n        bVar3 = uVar7 < uVar16;\n        uVar7 = uVar16;\n        if (bVar3) {\n          if (uVar15 < __n) {\nLAB_0034c6f6:\n                    \n            FUN_00352af0("../../gold/fileread.cc",0x2f1,"read_multiple");\n          }\n          lVar10 = 0;\n          for (; memcpy((void *)plVar13[2],\n                        (void *)(lVar10 + (uVar9 - lVar5) + (ulong)uVar1 + lVar12),__n),\n              uVar14 != uVar16; uVar14 = uVar14 + 1) {\n            plVar13 = (long *)(*param_3 + uVar14 * 0x18);\n            __n = plVar13[1];\n            lVar10 = *plVar13 - lVar2;\n            if (uVar15 < __n + lVar10) goto LAB_0034c6f6;\n          }\n        }\n      }\n    }\n    else {\nLAB_0034c6c0:\n      FUN_0034c0e0(param_1,lVar2 + param_2,__n,plVar13[2]);\n      uVar7 = uVar16;\n    }\n    if (uVar8 <= uVar7) {\n      return;\n    }\n    lVar12 = *param_3;\n  } while( true );" (do "do") (compound_statement "{\n    uVar14 = uVar7 + 1;\n    lVar5 = uVar7 * 0x18;\n    plVar13 = (long *)(lVar12 + lVar5);\n    lVar2 = *plVar13;\n    __n = plVar13[1];\n    uVar16 = uVar14;\n    if (uVar14 < uVar8) {\n      plVar11 = (long *)(lVar12 + 0x18 + lVar5);\n      lVar10 = *plVar11;\n      if (lVar10 < (long)(lVar2 + __n)) {\nLAB_0034c6de:\n                    \n        FUN_00352af0("../../gold/fileread.cc",0x2d5,"read_multiple");\n      }\n      lVar10 = lVar10 + plVar11[1];\n      if (0x1fff < (long)(lVar10 - (lVar2 + __n))) goto LAB_0034c6c0;\n      plVar11 = (long *)(lVar12 + 0x30 + lVar5);\n      uVar9 = uVar14;\n      do {\n        uVar15 = uVar9;\n        lVar12 = lVar10;\n        uVar9 = uVar15 + 1;\n        uVar16 = uVar9;\n        if ((uVar8 <= uVar9) || (uVar16 = uVar7 + 0x80, uVar9 == uVar7 + 0x80)) break;\n        if (*plVar11 < lVar12) goto LAB_0034c6de;\n        lVar10 = *plVar11 + plVar11[1];\n        plVar11 = plVar11 + 3;\n        uVar16 = uVar9;\n      } while (lVar10 - lVar12 < 0x2000);\n      uVar9 = lVar2 + param_2;\n      if (uVar15 == uVar7) goto LAB_0034c6c0;\n      uVar15 = lVar12 - lVar2;\n      if ((*(long *)(param_1 + 0x30) < (long)uVar9) || (*(long *)(param_1 + 0x30) - uVar9 < uVar15))\n      {\n                    \n        FUN_00352af0("../../gold/fileread.cc",0x150,"find_view");\n      }\n      plVar11 = *(long **)(param_1 + 0xb0);\n      if (plVar11 == (long *)0x0) {\n        lVar10 = *(long *)(param_1 + 0x68);\n        lVar5 = (uVar9 & 0xffffffffffffe000) - 1;\n        lVar6 = lVar4;\n        if (lVar10 != 0) {\n          do {\n            while ((lVar5 < *(long *)(lVar10 + 0x20) ||\n                   ((lVar5 == *(long *)(lVar10 + 0x20) && (*(int *)(lVar10 + 0x28) != 0))))) {\n              plVar11 = (long *)(lVar10 + 0x10);\n              lVar6 = lVar10;\n              lVar10 = *plVar11;\n              if (*plVar11 == 0) goto LAB_0034c5f6;\n            }\n            lVar10 = *(long *)(lVar10 + 0x18);\n          } while (lVar10 != 0);\nLAB_0034c5f6:\n          if (lVar6 != lVar4) {\n            lVar5 = *(long *)(lVar6 + 0x20);\n            while (lVar5 <= (long)(uVar9 & 0xffffffffffffe000)) {\n              plVar11 = *(long **)(lVar6 + 0x30);\n              lVar5 = *plVar11;\n              if ((lVar5 <= (long)uVar9) && (lVar12 + param_2 <= plVar11[1] + lVar5)) {\n                *(undefined1 *)(plVar11 + 5) = 1;\n                goto LAB_0034c524;\n              }\n              lVar6 = thunk_FUN_0049f700(lVar6);\n              if (lVar4 == lVar6) break;\n              lVar5 = *(long *)(lVar6 + 0x20);\n            }\n          }\n        }\n        FUN_0034c220(param_1,param_2,param_3,uVar7,uVar16 - uVar7);\n        uVar7 = uVar16;\n      }\n      else {\n        lVar5 = *plVar11;\nLAB_0034c524:\n        lVar12 = plVar11[2];\n        uVar1 = *(uint *)((long)plVar11 + 0x1c);\n        bVar3 = uVar7 < uVar16;\n        uVar7 = uVar16;\n        if (bVar3) {\n          if (uVar15 < __n) {\nLAB_0034c6f6:\n                    \n            FUN_00352af0("../../gold/fileread.cc",0x2f1,"read_multiple");\n          }\n          lVar10 = 0;\n          for (; memcpy((void *)plVar13[2],\n                        (void *)(lVar10 + (uVar9 - lVar5) + (ulong)uVar1 + lVar12),__n),\n              uVar14 != uVar16; uVar14 = uVar14 + 1) {\n            plVar13 = (long *)(*param_3 + uVar14 * 0x18);\n            __n = plVar13[1];\n            lVar10 = *plVar13 - lVar2;\n            if (uVar15 < __n + lVar10) goto LAB_0034c6f6;\n          }\n        }\n      }\n    }\n    else {\nLAB_0034c6c0:\n      FUN_0034c0e0(param_1,lVar2 + param_2,__n,plVar13[2]);\n      uVar7 = uVar16;\n    }\n    if (uVar8 <= uVar7) {\n      return;\n    }\n    lVar12 = *param_3;\n  }" ({ "{") (expression_statement "uVar14 = uVar7 + 1;" (assignment_expression "uVar14 = uVar7 + 1" (identifier "uVar14") (= "=") (binary_expression "uVar7 + 1" (identifier "uVar7") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "lVar5 = uVar7 * 0x18;" (assignment_expression "lVar5 = uVar7 * 0x18" (identifier "lVar5") (= "=") (binary_expression "uVar7 * 0x18" (identifier "uVar7") (* "*") (number_literal "0x18"))) (; ";")) (expression_statement "plVar13 = (long *)(lVar12 + lVar5);" (assignment_expression "plVar13 = (long *)(lVar12 + lVar5)" (identifier "plVar13") (= "=") (cast_expression "(long *)(lVar12 + lVar5)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar12 + lVar5)" (( "(") (binary_expression "lVar12 + lVar5" (identifier "lVar12") (+ "+") (identifier "lVar5")) () ")")))) (; ";")) (expression_statement "lVar2 = *plVar13;" (assignment_expression "lVar2 = *plVar13" (identifier "lVar2") (= "=") (pointer_expression "*plVar13" (* "*") (identifier "plVar13"))) (; ";")) (expression_statement "__n = plVar13[1];" (assignment_expression "__n = plVar13[1]" (identifier "__n") (= "=") (subscript_expression "plVar13[1]" (identifier "plVar13") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "uVar16 = uVar14;" (assignment_expression "uVar16 = uVar14" (identifier "uVar16") (= "=") (identifier "uVar14")) (; ";")) (if_statement "if (uVar14 < uVar8) {\n      plVar11 = (long *)(lVar12 + 0x18 + lVar5);\n      lVar10 = *plVar11;\n      if (lVar10 < (long)(lVar2 + __n)) {\nLAB_0034c6de:\n                    \n        FUN_00352af0("../../gold/fileread.cc",0x2d5,"read_multiple");\n      }\n      lVar10 = lVar10 + plVar11[1];\n      if (0x1fff < (long)(lVar10 - (lVar2 + __n))) goto LAB_0034c6c0;\n      plVar11 = (long *)(lVar12 + 0x30 + lVar5);\n      uVar9 = uVar14;\n      do {\n        uVar15 = uVar9;\n        lVar12 = lVar10;\n        uVar9 = uVar15 + 1;\n        uVar16 = uVar9;\n        if ((uVar8 <= uVar9) || (uVar16 = uVar7 + 0x80, uVar9 == uVar7 + 0x80)) break;\n        if (*plVar11 < lVar12) goto LAB_0034c6de;\n        lVar10 = *plVar11 + plVar11[1];\n        plVar11 = plVar11 + 3;\n        uVar16 = uVar9;\n      } while (lVar10 - lVar12 < 0x2000);\n      uVar9 = lVar2 + param_2;\n      if (uVar15 == uVar7) goto LAB_0034c6c0;\n      uVar15 = lVar12 - lVar2;\n      if ((*(long *)(param_1 + 0x30) < (long)uVar9) || (*(long *)(param_1 + 0x30) - uVar9 < uVar15))\n      {\n                    \n        FUN_00352af0("../../gold/fileread.cc",0x150,"find_view");\n      }\n      plVar11 = *(long **)(param_1 + 0xb0);\n      if (plVar11 == (long *)0x0) {\n        lVar10 = *(long *)(param_1 + 0x68);\n        lVar5 = (uVar9 & 0xffffffffffffe000) - 1;\n        lVar6 = lVar4;\n        if (lVar10 != 0) {\n          do {\n            while ((lVar5 < *(long *)(lVar10 + 0x20) ||\n                   ((lVar5 == *(long *)(lVar10 + 0x20) && (*(int *)(lVar10 + 0x28) != 0))))) {\n              plVar11 = (long *)(lVar10 + 0x10);\n              lVar6 = lVar10;\n              lVar10 = *plVar11;\n              if (*plVar11 == 0) goto LAB_0034c5f6;\n            }\n            lVar10 = *(long *)(lVar10 + 0x18);\n          } while (lVar10 != 0);\nLAB_0034c5f6:\n          if (lVar6 != lVar4) {\n            lVar5 = *(long *)(lVar6 + 0x20);\n            while (lVar5 <= (long)(uVar9 & 0xffffffffffffe000)) {\n              plVar11 = *(long **)(lVar6 + 0x30);\n              lVar5 = *plVar11;\n              if ((lVar5 <= (long)uVar9) && (lVar12 + param_2 <= plVar11[1] + lVar5)) {\n                *(undefined1 *)(plVar11 + 5) = 1;\n                goto LAB_0034c524;\n              }\n              lVar6 = thunk_FUN_0049f700(lVar6);\n              if (lVar4 == lVar6) break;\n              lVar5 = *(long *)(lVar6 + 0x20);\n            }\n          }\n        }\n        FUN_0034c220(param_1,param_2,param_3,uVar7,uVar16 - uVar7);\n        uVar7 = uVar16;\n      }\n      else {\n        lVar5 = *plVar11;\nLAB_0034c524:\n        lVar12 = plVar11[2];\n        uVar1 = *(uint *)((long)plVar11 + 0x1c);\n        bVar3 = uVar7 < uVar16;\n        uVar7 = uVar16;\n        if (bVar3) {\n          if (uVar15 < __n) {\nLAB_0034c6f6:\n                    \n            FUN_00352af0("../../gold/fileread.cc",0x2f1,"read_multiple");\n          }\n          lVar10 = 0;\n          for (; memcpy((void *)plVar13[2],\n                        (void *)(lVar10 + (uVar9 - lVar5) + (ulong)uVar1 + lVar12),__n),\n              uVar14 != uVar16; uVar14 = uVar14 + 1) {\n            plVar13 = (long *)(*param_3 + uVar14 * 0x18);\n            __n = plVar13[1];\n            lVar10 = *plVar13 - lVar2;\n            if (uVar15 < __n + lVar10) goto LAB_0034c6f6;\n          }\n        }\n      }\n    }\n    else {\nLAB_0034c6c0:\n      FUN_0034c0e0(param_1,lVar2 + param_2,__n,plVar13[2]);\n      uVar7 = uVar16;\n    }" (if "if") (parenthesized_expression "(uVar14 < uVar8)" (( "(") (binary_expression "uVar14 < uVar8" (identifier "uVar14") (< "<") (identifier "uVar8")) () ")")) (compound_statement "{\n      plVar11 = (long *)(lVar12 + 0x18 + lVar5);\n      lVar10 = *plVar11;\n      if (lVar10 < (long)(lVar2 + __n)) {\nLAB_0034c6de:\n                    \n        FUN_00352af0("../../gold/fileread.cc",0x2d5,"read_multiple");\n      }\n      lVar10 = lVar10 + plVar11[1];\n      if (0x1fff < (long)(lVar10 - (lVar2 + __n))) goto LAB_0034c6c0;\n      plVar11 = (long *)(lVar12 + 0x30 + lVar5);\n      uVar9 = uVar14;\n      do {\n        uVar15 = uVar9;\n        lVar12 = lVar10;\n        uVar9 = uVar15 + 1;\n        uVar16 = uVar9;\n        if ((uVar8 <= uVar9) || (uVar16 = uVar7 + 0x80, uVar9 == uVar7 + 0x80)) break;\n        if (*plVar11 < lVar12) goto LAB_0034c6de;\n        lVar10 = *plVar11 + plVar11[1];\n        plVar11 = plVar11 + 3;\n        uVar16 = uVar9;\n      } while (lVar10 - lVar12 < 0x2000);\n      uVar9 = lVar2 + param_2;\n      if (uVar15 == uVar7) goto LAB_0034c6c0;\n      uVar15 = lVar12 - lVar2;\n      if ((*(long *)(param_1 + 0x30) < (long)uVar9) || (*(long *)(param_1 + 0x30) - uVar9 < uVar15))\n      {\n                    \n        FUN_00352af0("../../gold/fileread.cc",0x150,"find_view");\n      }\n      plVar11 = *(long **)(param_1 + 0xb0);\n      if (plVar11 == (long *)0x0) {\n        lVar10 = *(long *)(param_1 + 0x68);\n        lVar5 = (uVar9 & 0xffffffffffffe000) - 1;\n        lVar6 = lVar4;\n        if (lVar10 != 0) {\n          do {\n            while ((lVar5 < *(long *)(lVar10 + 0x20) ||\n                   ((lVar5 == *(long *)(lVar10 + 0x20) && (*(int *)(lVar10 + 0x28) != 0))))) {\n              plVar11 = (long *)(lVar10 + 0x10);\n              lVar6 = lVar10;\n              lVar10 = *plVar11;\n              if (*plVar11 == 0) goto LAB_0034c5f6;\n            }\n            lVar10 = *(long *)(lVar10 + 0x18);\n          } while (lVar10 != 0);\nLAB_0034c5f6:\n          if (lVar6 != lVar4) {\n            lVar5 = *(long *)(lVar6 + 0x20);\n            while (lVar5 <= (long)(uVar9 & 0xffffffffffffe000)) {\n              plVar11 = *(long **)(lVar6 + 0x30);\n              lVar5 = *plVar11;\n              if ((lVar5 <= (long)uVar9) && (lVar12 + param_2 <= plVar11[1] + lVar5)) {\n                *(undefined1 *)(plVar11 + 5) = 1;\n                goto LAB_0034c524;\n              }\n              lVar6 = thunk_FUN_0049f700(lVar6);\n              if (lVar4 == lVar6) break;\n              lVar5 = *(long *)(lVar6 + 0x20);\n            }\n          }\n        }\n        FUN_0034c220(param_1,param_2,param_3,uVar7,uVar16 - uVar7);\n        uVar7 = uVar16;\n      }\n      else {\n        lVar5 = *plVar11;\nLAB_0034c524:\n        lVar12 = plVar11[2];\n        uVar1 = *(uint *)((long)plVar11 + 0x1c);\n        bVar3 = uVar7 < uVar16;\n        uVar7 = uVar16;\n        if (bVar3) {\n          if (uVar15 < __n) {\nLAB_0034c6f6:\n                    \n            FUN_00352af0("../../gold/fileread.cc",0x2f1,"read_multiple");\n          }\n          lVar10 = 0;\n          for (; memcpy((void *)plVar13[2],\n                        (void *)(lVar10 + (uVar9 - lVar5) + (ulong)uVar1 + lVar12),__n),\n              uVar14 != uVar16; uVar14 = uVar14 + 1) {\n            plVar13 = (long *)(*param_3 + uVar14 * 0x18);\n            __n = plVar13[1];\n            lVar10 = *plVar13 - lVar2;\n            if (uVar15 < __n + lVar10) goto LAB_0034c6f6;\n          }\n        }\n      }\n    }" ({ "{") (expression_statement "plVar11 = (long *)(lVar12 + 0x18 + lVar5);" (assignment_expression "plVar11 = (long *)(lVar12 + 0x18 + lVar5)" (identifier "plVar11") (= "=") (cast_expression "(long *)(lVar12 + 0x18 + lVar5)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar12 + 0x18 + lVar5)" (( "(") (binary_expression "lVar12 + 0x18 + lVar5" (binary_expression "lVar12 + 0x18" (identifier "lVar12") (+ "+") (number_literal "0x18")) (+ "+") (identifier "lVar5")) () ")")))) (; ";")) (expression_statement "lVar10 = *plVar11;" (assignment_expression "lVar10 = *plVar11" (identifier "lVar10") (= "=") (pointer_expression "*plVar11" (* "*") (identifier "plVar11"))) (; ";")) (if_statement "if (lVar10 < (long)(lVar2 + __n)) {\nLAB_0034c6de:\n                    \n        FUN_00352af0("../../gold/fileread.cc",0x2d5,"read_multiple");\n      }" (if "if") (parenthesized_expression "(lVar10 < (long)(lVar2 + __n))" (( "(") (binary_expression "lVar10 < (long)(lVar2 + __n)" (identifier "lVar10") (< "<") (cast_expression "(long)(lVar2 + __n)" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (parenthesized_expression "(lVar2 + __n)" (( "(") (binary_expression "lVar2 + __n" (identifier "lVar2") (+ "+") (identifier "__n")) () ")")))) () ")")) (compound_statement "{\nLAB_0034c6de:\n                    \n        FUN_00352af0("../../gold/fileread.cc",0x2d5,"read_multiple");\n      }" ({ "{") (labeled_statement "LAB_0034c6de:\n                    \n        FUN_00352af0("../../gold/fileread.cc",0x2d5,"read_multiple");" (statement_identifier "LAB_0034c6de") (: ":") (expression_statement "FUN_00352af0("../../gold/fileread.cc",0x2d5,"read_multiple");" (call_expression "FUN_00352af0("../../gold/fileread.cc",0x2d5,"read_multiple")" (identifier "FUN_00352af0") (argument_list "("../../gold/fileread.cc",0x2d5,"read_multiple")" (( "(") (string_literal ""../../gold/fileread.cc"" (" """) (string_content "../../gold/fileread.cc") (" """)) (, ",") (number_literal "0x2d5") (, ",") (string_literal ""read_multiple"" (" """) (string_content "read_multiple") (" """)) () ")"))) (; ";"))) (} "}"))) (expression_statement "lVar10 = lVar10 + plVar11[1];" (assignment_expression "lVar10 = lVar10 + plVar11[1]" (identifier "lVar10") (= "=") (binary_expression "lVar10 + plVar11[1]" (identifier "lVar10") (+ "+") (subscript_expression "plVar11[1]" (identifier "plVar11") ([ "[") (number_literal "1") (] "]")))) (; ";")) (if_statement "if (0x1fff < (long)(lVar10 - (lVar2 + __n))) goto LAB_0034c6c0;" (if "if") (parenthesized_expression "(0x1fff < (long)(lVar10 - (lVar2 + __n)))" (( "(") (binary_expression "0x1fff < (long)(lVar10 - (lVar2 + __n))" (number_literal "0x1fff") (< "<") (cast_expression "(long)(lVar10 - (lVar2 + __n))" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (parenthesized_expression "(lVar10 - (lVar2 + __n))" (( "(") (binary_expression "lVar10 - (lVar2 + __n)" (identifier "lVar10") (- "-") (parenthesized_expression "(lVar2 + __n)" (( "(") (binary_expression "lVar2 + __n" (identifier "lVar2") (+ "+") (identifier "__n")) () ")"))) () ")")))) () ")")) (goto_statement "goto LAB_0034c6c0;" (goto "goto") (statement_identifier "LAB_0034c6c0") (; ";"))) (expression_statement "plVar11 = (long *)(lVar12 + 0x30 + lVar5);" (assignment_expression "plVar11 = (long *)(lVar12 + 0x30 + lVar5)" (identifier "plVar11") (= "=") (cast_expression "(long *)(lVar12 + 0x30 + lVar5)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar12 + 0x30 + lVar5)" (( "(") (binary_expression "lVar12 + 0x30 + lVar5" (binary_expression "lVar12 + 0x30" (identifier "lVar12") (+ "+") (number_literal "0x30")) (+ "+") (identifier "lVar5")) () ")")))) (; ";")) (expression_statement "uVar9 = uVar14;" (assignment_expression "uVar9 = uVar14" (identifier "uVar9") (= "=") (identifier "uVar14")) (; ";")) (do_statement "do {\n        uVar15 = uVar9;\n        lVar12 = lVar10;\n        uVar9 = uVar15 + 1;\n        uVar16 = uVar9;\n        if ((uVar8 <= uVar9) || (uVar16 = uVar7 + 0x80, uVar9 == uVar7 + 0x80)) break;\n        if (*plVar11 < lVar12) goto LAB_0034c6de;\n        lVar10 = *plVar11 + plVar11[1];\n        plVar11 = plVar11 + 3;\n        uVar16 = uVar9;\n      } while (lVar10 - lVar12 < 0x2000);" (do "do") (compound_statement "{\n        uVar15 = uVar9;\n        lVar12 = lVar10;\n        uVar9 = uVar15 + 1;\n        uVar16 = uVar9;\n        if ((uVar8 <= uVar9) || (uVar16 = uVar7 + 0x80, uVar9 == uVar7 + 0x80)) break;\n        if (*plVar11 < lVar12) goto LAB_0034c6de;\n        lVar10 = *plVar11 + plVar11[1];\n        plVar11 = plVar11 + 3;\n        uVar16 = uVar9;\n      }" ({ "{") (expression_statement "uVar15 = uVar9;" (assignment_expression "uVar15 = uVar9" (identifier "uVar15") (= "=") (identifier "uVar9")) (; ";")) (expression_statement "lVar12 = lVar10;" (assignment_expression "lVar12 = lVar10" (identifier "lVar12") (= "=") (identifier "lVar10")) (; ";")) (expression_statement "uVar9 = uVar15 + 1;" (assignment_expression "uVar9 = uVar15 + 1" (identifier "uVar9") (= "=") (binary_expression "uVar15 + 1" (identifier "uVar15") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar16 = uVar9;" (assignment_expression "uVar16 = uVar9" (identifier "uVar16") (= "=") (identifier "uVar9")) (; ";")) (if_statement "if ((uVar8 <= uVar9) || (uVar16 = uVar7 + 0x80, uVar9 == uVar7 + 0x80)) break;" (if "if") (parenthesized_expression "((uVar8 <= uVar9) || (uVar16 = uVar7 + 0x80, uVar9 == uVar7 + 0x80))" (( "(") (binary_expression "(uVar8 <= uVar9) || (uVar16 = uVar7 + 0x80, uVar9 == uVar7 + 0x80)" (parenthesized_expression "(uVar8 <= uVar9)" (( "(") (binary_expression "uVar8 <= uVar9" (identifier "uVar8") (<= "<=") (identifier "uVar9")) () ")")) (|| "||") (parenthesized_expression "(uVar16 = uVar7 + 0x80, uVar9 == uVar7 + 0x80)" (( "(") (comma_expression "uVar16 = uVar7 + 0x80, uVar9 == uVar7 + 0x80" (assignment_expression "uVar16 = uVar7 + 0x80" (identifier "uVar16") (= "=") (binary_expression "uVar7 + 0x80" (identifier "uVar7") (+ "+") (number_literal "0x80"))) (, ",") (binary_expression "uVar9 == uVar7 + 0x80" (identifier "uVar9") (== "==") (binary_expression "uVar7 + 0x80" (identifier "uVar7") (+ "+") (number_literal "0x80")))) () ")"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (if_statement "if (*plVar11 < lVar12) goto LAB_0034c6de;" (if "if") (parenthesized_expression "(*plVar11 < lVar12)" (( "(") (binary_expression "*plVar11 < lVar12" (pointer_expression "*plVar11" (* "*") (identifier "plVar11")) (< "<") (identifier "lVar12")) () ")")) (goto_statement "goto LAB_0034c6de;" (goto "goto") (statement_identifier "LAB_0034c6de") (; ";"))) (expression_statement "lVar10 = *plVar11 + plVar11[1];" (assignment_expression "lVar10 = *plVar11 + plVar11[1]" (identifier "lVar10") (= "=") (binary_expression "*plVar11 + plVar11[1]" (pointer_expression "*plVar11" (* "*") (identifier "plVar11")) (+ "+") (subscript_expression "plVar11[1]" (identifier "plVar11") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "plVar11 = plVar11 + 3;" (assignment_expression "plVar11 = plVar11 + 3" (identifier "plVar11") (= "=") (binary_expression "plVar11 + 3" (identifier "plVar11") (+ "+") (number_literal "3"))) (; ";")) (expression_statement "uVar16 = uVar9;" (assignment_expression "uVar16 = uVar9" (identifier "uVar16") (= "=") (identifier "uVar9")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(lVar10 - lVar12 < 0x2000)" (( "(") (binary_expression "lVar10 - lVar12 < 0x2000" (binary_expression "lVar10 - lVar12" (identifier "lVar10") (- "-") (identifier "lVar12")) (< "<") (number_literal "0x2000")) () ")")) (; ";")) (expression_statement "uVar9 = lVar2 + param_2;" (assignment_expression "uVar9 = lVar2 + param_2" (identifier "uVar9") (= "=") (binary_expression "lVar2 + param_2" (identifier "lVar2") (+ "+") (identifier "param_2"))) (; ";")) (if_statement "if (uVar15 == uVar7) goto LAB_0034c6c0;" (if "if") (parenthesized_expression "(uVar15 == uVar7)" (( "(") (binary_expression "uVar15 == uVar7" (identifier "uVar15") (== "==") (identifier "uVar7")) () ")")) (goto_statement "goto LAB_0034c6c0;" (goto "goto") (statement_identifier "LAB_0034c6c0") (; ";"))) (expression_statement "uVar15 = lVar12 - lVar2;" (assignment_expression "uVar15 = lVar12 - lVar2" (identifier "uVar15") (= "=") (binary_expression "lVar12 - lVar2" (identifier "lVar12") (- "-") (identifier "lVar2"))) (; ";")) (if_statement "if ((*(long *)(param_1 + 0x30) < (long)uVar9) || (*(long *)(param_1 + 0x30) - uVar9 < uVar15))\n      {\n                    \n        FUN_00352af0("../../gold/fileread.cc",0x150,"find_view");\n      }" (if "if") (parenthesized_expression "((*(long *)(param_1 + 0x30) < (long)uVar9) || (*(long *)(param_1 + 0x30) - uVar9 < uVar15))" (( "(") (binary_expression "(*(long *)(param_1 + 0x30) < (long)uVar9) || (*(long *)(param_1 + 0x30) - uVar9 < uVar15)" (parenthesized_expression "(*(long *)(param_1 + 0x30) < (long)uVar9)" (( "(") (binary_expression "*(long *)(param_1 + 0x30) < (long)uVar9" (pointer_expression "*(long *)(param_1 + 0x30)" (* "*") (cast_expression "(long *)(param_1 + 0x30)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x30)" (( "(") (binary_expression "param_1 + 0x30" (identifier "param_1") (+ "+") (number_literal "0x30")) () ")")))) (< "<") (cast_expression "(long)uVar9" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "uVar9"))) () ")")) (|| "||") (parenthesized_expression "(*(long *)(param_1 + 0x30) - uVar9 < uVar15)" (( "(") (binary_expression "*(long *)(param_1 + 0x30) - uVar9 < uVar15" (binary_expression "*(long *)(param_1 + 0x30) - uVar9" (pointer_expression "*(long *)(param_1 + 0x30)" (* "*") (cast_expression "(long *)(param_1 + 0x30)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x30)" (( "(") (binary_expression "param_1 + 0x30" (identifier "param_1") (+ "+") (number_literal "0x30")) () ")")))) (- "-") (identifier "uVar9")) (< "<") (identifier "uVar15")) () ")"))) () ")")) (compound_statement "{\n                    \n        FUN_00352af0("../../gold/fileread.cc",0x150,"find_view");\n      }" ({ "{") (expression_statement "FUN_00352af0("../../gold/fileread.cc",0x150,"find_view");" (call_expression "FUN_00352af0("../../gold/fileread.cc",0x150,"find_view")" (identifier "FUN_00352af0") (argument_list "("../../gold/fileread.cc",0x150,"find_view")" (( "(") (string_literal ""../../gold/fileread.cc"" (" """) (string_content "../../gold/fileread.cc") (" """)) (, ",") (number_literal "0x150") (, ",") (string_literal ""find_view"" (" """) (string_content "find_view") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "plVar11 = *(long **)(param_1 + 0xb0);" (assignment_expression "plVar11 = *(long **)(param_1 + 0xb0)" (identifier "plVar11") (= "=") (pointer_expression "*(long **)(param_1 + 0xb0)" (* "*") (cast_expression "(long **)(param_1 + 0xb0)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0xb0)" (( "(") (binary_expression "param_1 + 0xb0" (identifier "param_1") (+ "+") (number_literal "0xb0")) () ")"))))) (; ";")) (if_statement "if (plVar11 == (long *)0x0) {\n        lVar10 = *(long *)(param_1 + 0x68);\n        lVar5 = (uVar9 & 0xffffffffffffe000) - 1;\n        lVar6 = lVar4;\n        if (lVar10 != 0) {\n          do {\n            while ((lVar5 < *(long *)(lVar10 + 0x20) ||\n                   ((lVar5 == *(long *)(lVar10 + 0x20) && (*(int *)(lVar10 + 0x28) != 0))))) {\n              plVar11 = (long *)(lVar10 + 0x10);\n              lVar6 = lVar10;\n              lVar10 = *plVar11;\n              if (*plVar11 == 0) goto LAB_0034c5f6;\n            }\n            lVar10 = *(long *)(lVar10 + 0x18);\n          } while (lVar10 != 0);\nLAB_0034c5f6:\n          if (lVar6 != lVar4) {\n            lVar5 = *(long *)(lVar6 + 0x20);\n            while (lVar5 <= (long)(uVar9 & 0xffffffffffffe000)) {\n              plVar11 = *(long **)(lVar6 + 0x30);\n              lVar5 = *plVar11;\n              if ((lVar5 <= (long)uVar9) && (lVar12 + param_2 <= plVar11[1] + lVar5)) {\n                *(undefined1 *)(plVar11 + 5) = 1;\n                goto LAB_0034c524;\n              }\n              lVar6 = thunk_FUN_0049f700(lVar6);\n              if (lVar4 == lVar6) break;\n              lVar5 = *(long *)(lVar6 + 0x20);\n            }\n          }\n        }\n        FUN_0034c220(param_1,param_2,param_3,uVar7,uVar16 - uVar7);\n        uVar7 = uVar16;\n      }\n      else {\n        lVar5 = *plVar11;\nLAB_0034c524:\n        lVar12 = plVar11[2];\n        uVar1 = *(uint *)((long)plVar11 + 0x1c);\n        bVar3 = uVar7 < uVar16;\n        uVar7 = uVar16;\n        if (bVar3) {\n          if (uVar15 < __n) {\nLAB_0034c6f6:\n                    \n            FUN_00352af0("../../gold/fileread.cc",0x2f1,"read_multiple");\n          }\n          lVar10 = 0;\n          for (; memcpy((void *)plVar13[2],\n                        (void *)(lVar10 + (uVar9 - lVar5) + (ulong)uVar1 + lVar12),__n),\n              uVar14 != uVar16; uVar14 = uVar14 + 1) {\n            plVar13 = (long *)(*param_3 + uVar14 * 0x18);\n            __n = plVar13[1];\n            lVar10 = *plVar13 - lVar2;\n            if (uVar15 < __n + lVar10) goto LAB_0034c6f6;\n          }\n        }\n      }" (if "if") (parenthesized_expression "(plVar11 == (long *)0x0)" (( "(") (binary_expression "plVar11 == (long *)0x0" (identifier "plVar11") (== "==") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        lVar10 = *(long *)(param_1 + 0x68);\n        lVar5 = (uVar9 & 0xffffffffffffe000) - 1;\n        lVar6 = lVar4;\n        if (lVar10 != 0) {\n          do {\n            while ((lVar5 < *(long *)(lVar10 + 0x20) ||\n                   ((lVar5 == *(long *)(lVar10 + 0x20) && (*(int *)(lVar10 + 0x28) != 0))))) {\n              plVar11 = (long *)(lVar10 + 0x10);\n              lVar6 = lVar10;\n              lVar10 = *plVar11;\n              if (*plVar11 == 0) goto LAB_0034c5f6;\n            }\n            lVar10 = *(long *)(lVar10 + 0x18);\n          } while (lVar10 != 0);\nLAB_0034c5f6:\n          if (lVar6 != lVar4) {\n            lVar5 = *(long *)(lVar6 + 0x20);\n            while (lVar5 <= (long)(uVar9 & 0xffffffffffffe000)) {\n              plVar11 = *(long **)(lVar6 + 0x30);\n              lVar5 = *plVar11;\n              if ((lVar5 <= (long)uVar9) && (lVar12 + param_2 <= plVar11[1] + lVar5)) {\n                *(undefined1 *)(plVar11 + 5) = 1;\n                goto LAB_0034c524;\n              }\n              lVar6 = thunk_FUN_0049f700(lVar6);\n              if (lVar4 == lVar6) break;\n              lVar5 = *(long *)(lVar6 + 0x20);\n            }\n          }\n        }\n        FUN_0034c220(param_1,param_2,param_3,uVar7,uVar16 - uVar7);\n        uVar7 = uVar16;\n      }" ({ "{") (expression_statement "lVar10 = *(long *)(param_1 + 0x68);" (assignment_expression "lVar10 = *(long *)(param_1 + 0x68)" (identifier "lVar10") (= "=") (pointer_expression "*(long *)(param_1 + 0x68)" (* "*") (cast_expression "(long *)(param_1 + 0x68)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x68)" (( "(") (binary_expression "param_1 + 0x68" (identifier "param_1") (+ "+") (number_literal "0x68")) () ")"))))) (; ";")) (expression_statement "lVar5 = (uVar9 & 0xffffffffffffe000) - 1;" (assignment_expression "lVar5 = (uVar9 & 0xffffffffffffe000) - 1" (identifier "lVar5") (= "=") (binary_expression "(uVar9 & 0xffffffffffffe000) - 1" (parenthesized_expression "(uVar9 & 0xffffffffffffe000)" (( "(") (binary_expression "uVar9 & 0xffffffffffffe000" (identifier "uVar9") (& "&") (number_literal "0xffffffffffffe000")) () ")")) (- "-") (number_literal "1"))) (; ";")) (expression_statement "lVar6 = lVar4;" (assignment_expression "lVar6 = lVar4" (identifier "lVar6") (= "=") (identifier "lVar4")) (; ";")) (if_statement "if (lVar10 != 0) {\n          do {\n            while ((lVar5 < *(long *)(lVar10 + 0x20) ||\n                   ((lVar5 == *(long *)(lVar10 + 0x20) && (*(int *)(lVar10 + 0x28) != 0))))) {\n              plVar11 = (long *)(lVar10 + 0x10);\n              lVar6 = lVar10;\n              lVar10 = *plVar11;\n              if (*plVar11 == 0) goto LAB_0034c5f6;\n            }\n            lVar10 = *(long *)(lVar10 + 0x18);\n          } while (lVar10 != 0);\nLAB_0034c5f6:\n          if (lVar6 != lVar4) {\n            lVar5 = *(long *)(lVar6 + 0x20);\n            while (lVar5 <= (long)(uVar9 & 0xffffffffffffe000)) {\n              plVar11 = *(long **)(lVar6 + 0x30);\n              lVar5 = *plVar11;\n              if ((lVar5 <= (long)uVar9) && (lVar12 + param_2 <= plVar11[1] + lVar5)) {\n                *(undefined1 *)(plVar11 + 5) = 1;\n                goto LAB_0034c524;\n              }\n              lVar6 = thunk_FUN_0049f700(lVar6);\n              if (lVar4 == lVar6) break;\n              lVar5 = *(long *)(lVar6 + 0x20);\n            }\n          }\n        }" (if "if") (parenthesized_expression "(lVar10 != 0)" (( "(") (binary_expression "lVar10 != 0" (identifier "lVar10") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          do {\n            while ((lVar5 < *(long *)(lVar10 + 0x20) ||\n                   ((lVar5 == *(long *)(lVar10 + 0x20) && (*(int *)(lVar10 + 0x28) != 0))))) {\n              plVar11 = (long *)(lVar10 + 0x10);\n              lVar6 = lVar10;\n              lVar10 = *plVar11;\n              if (*plVar11 == 0) goto LAB_0034c5f6;\n            }\n            lVar10 = *(long *)(lVar10 + 0x18);\n          } while (lVar10 != 0);\nLAB_0034c5f6:\n          if (lVar6 != lVar4) {\n            lVar5 = *(long *)(lVar6 + 0x20);\n            while (lVar5 <= (long)(uVar9 & 0xffffffffffffe000)) {\n              plVar11 = *(long **)(lVar6 + 0x30);\n              lVar5 = *plVar11;\n              if ((lVar5 <= (long)uVar9) && (lVar12 + param_2 <= plVar11[1] + lVar5)) {\n                *(undefined1 *)(plVar11 + 5) = 1;\n                goto LAB_0034c524;\n              }\n              lVar6 = thunk_FUN_0049f700(lVar6);\n              if (lVar4 == lVar6) break;\n              lVar5 = *(long *)(lVar6 + 0x20);\n            }\n          }\n        }" ({ "{") (do_statement "do {\n            while ((lVar5 < *(long *)(lVar10 + 0x20) ||\n                   ((lVar5 == *(long *)(lVar10 + 0x20) && (*(int *)(lVar10 + 0x28) != 0))))) {\n              plVar11 = (long *)(lVar10 + 0x10);\n              lVar6 = lVar10;\n              lVar10 = *plVar11;\n              if (*plVar11 == 0) goto LAB_0034c5f6;\n            }\n            lVar10 = *(long *)(lVar10 + 0x18);\n          } while (lVar10 != 0);" (do "do") (compound_statement "{\n            while ((lVar5 < *(long *)(lVar10 + 0x20) ||\n                   ((lVar5 == *(long *)(lVar10 + 0x20) && (*(int *)(lVar10 + 0x28) != 0))))) {\n              plVar11 = (long *)(lVar10 + 0x10);\n              lVar6 = lVar10;\n              lVar10 = *plVar11;\n              if (*plVar11 == 0) goto LAB_0034c5f6;\n            }\n            lVar10 = *(long *)(lVar10 + 0x18);\n          }" ({ "{") (while_statement "while ((lVar5 < *(long *)(lVar10 + 0x20) ||\n                   ((lVar5 == *(long *)(lVar10 + 0x20) && (*(int *)(lVar10 + 0x28) != 0))))) {\n              plVar11 = (long *)(lVar10 + 0x10);\n              lVar6 = lVar10;\n              lVar10 = *plVar11;\n              if (*plVar11 == 0) goto LAB_0034c5f6;\n            }" (while "while") (parenthesized_expression "((lVar5 < *(long *)(lVar10 + 0x20) ||\n                   ((lVar5 == *(long *)(lVar10 + 0x20) && (*(int *)(lVar10 + 0x28) != 0)))))" (( "(") (parenthesized_expression "(lVar5 < *(long *)(lVar10 + 0x20) ||\n                   ((lVar5 == *(long *)(lVar10 + 0x20) && (*(int *)(lVar10 + 0x28) != 0))))" (( "(") (binary_expression "lVar5 < *(long *)(lVar10 + 0x20) ||\n                   ((lVar5 == *(long *)(lVar10 + 0x20) && (*(int *)(lVar10 + 0x28) != 0)))" (binary_expression "lVar5 < *(long *)(lVar10 + 0x20)" (identifier "lVar5") (< "<") (pointer_expression "*(long *)(lVar10 + 0x20)" (* "*") (cast_expression "(long *)(lVar10 + 0x20)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar10 + 0x20)" (( "(") (binary_expression "lVar10 + 0x20" (identifier "lVar10") (+ "+") (number_literal "0x20")) () ")"))))) (|| "||") (parenthesized_expression "((lVar5 == *(long *)(lVar10 + 0x20) && (*(int *)(lVar10 + 0x28) != 0)))" (( "(") (parenthesized_expression "(lVar5 == *(long *)(lVar10 + 0x20) && (*(int *)(lVar10 + 0x28) != 0))" (( "(") (binary_expression "lVar5 == *(long *)(lVar10 + 0x20) && (*(int *)(lVar10 + 0x28) != 0)" (binary_expression "lVar5 == *(long *)(lVar10 + 0x20)" (identifier "lVar5") (== "==") (pointer_expression "*(long *)(lVar10 + 0x20)" (* "*") (cast_expression "(long *)(lVar10 + 0x20)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar10 + 0x20)" (( "(") (binary_expression "lVar10 + 0x20" (identifier "lVar10") (+ "+") (number_literal "0x20")) () ")"))))) (&& "&&") (parenthesized_expression "(*(int *)(lVar10 + 0x28) != 0)" (( "(") (binary_expression "*(int *)(lVar10 + 0x28) != 0" (pointer_expression "*(int *)(lVar10 + 0x28)" (* "*") (cast_expression "(int *)(lVar10 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar10 + 0x28)" (( "(") (binary_expression "lVar10 + 0x28" (identifier "lVar10") (+ "+") (number_literal "0x28")) () ")")))) (!= "!=") (number_literal "0")) () ")"))) () ")")) () ")"))) () ")")) () ")")) (compound_statement "{\n              plVar11 = (long *)(lVar10 + 0x10);\n              lVar6 = lVar10;\n              lVar10 = *plVar11;\n              if (*plVar11 == 0) goto LAB_0034c5f6;\n            }" ({ "{") (expression_statement "plVar11 = (long *)(lVar10 + 0x10);" (assignment_expression "plVar11 = (long *)(lVar10 + 0x10)" (identifier "plVar11") (= "=") (cast_expression "(long *)(lVar10 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar10 + 0x10)" (( "(") (binary_expression "lVar10 + 0x10" (identifier "lVar10") (+ "+") (number_literal "0x10")) () ")")))) (; ";")) (expression_statement "lVar6 = lVar10;" (assignment_expression "lVar6 = lVar10" (identifier "lVar6") (= "=") (identifier "lVar10")) (; ";")) (expression_statement "lVar10 = *plVar11;" (assignment_expression "lVar10 = *plVar11" (identifier "lVar10") (= "=") (pointer_expression "*plVar11" (* "*") (identifier "plVar11"))) (; ";")) (if_statement "if (*plVar11 == 0) goto LAB_0034c5f6;" (if "if") (parenthesized_expression "(*plVar11 == 0)" (( "(") (binary_expression "*plVar11 == 0" (pointer_expression "*plVar11" (* "*") (identifier "plVar11")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0034c5f6;" (goto "goto") (statement_identifier "LAB_0034c5f6") (; ";"))) (} "}"))) (expression_statement "lVar10 = *(long *)(lVar10 + 0x18);" (assignment_expression "lVar10 = *(long *)(lVar10 + 0x18)" (identifier "lVar10") (= "=") (pointer_expression "*(long *)(lVar10 + 0x18)" (* "*") (cast_expression "(long *)(lVar10 + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar10 + 0x18)" (( "(") (binary_expression "lVar10 + 0x18" (identifier "lVar10") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(lVar10 != 0)" (( "(") (binary_expression "lVar10 != 0" (identifier "lVar10") (!= "!=") (number_literal "0")) () ")")) (; ";")) (labeled_statement "LAB_0034c5f6:\n          if (lVar6 != lVar4) {\n            lVar5 = *(long *)(lVar6 + 0x20);\n            while (lVar5 <= (long)(uVar9 & 0xffffffffffffe000)) {\n              plVar11 = *(long **)(lVar6 + 0x30);\n              lVar5 = *plVar11;\n              if ((lVar5 <= (long)uVar9) && (lVar12 + param_2 <= plVar11[1] + lVar5)) {\n                *(undefined1 *)(plVar11 + 5) = 1;\n                goto LAB_0034c524;\n              }\n              lVar6 = thunk_FUN_0049f700(lVar6);\n              if (lVar4 == lVar6) break;\n              lVar5 = *(long *)(lVar6 + 0x20);\n            }\n          }" (statement_identifier "LAB_0034c5f6") (: ":") (if_statement "if (lVar6 != lVar4) {\n            lVar5 = *(long *)(lVar6 + 0x20);\n            while (lVar5 <= (long)(uVar9 & 0xffffffffffffe000)) {\n              plVar11 = *(long **)(lVar6 + 0x30);\n              lVar5 = *plVar11;\n              if ((lVar5 <= (long)uVar9) && (lVar12 + param_2 <= plVar11[1] + lVar5)) {\n                *(undefined1 *)(plVar11 + 5) = 1;\n                goto LAB_0034c524;\n              }\n              lVar6 = thunk_FUN_0049f700(lVar6);\n              if (lVar4 == lVar6) break;\n              lVar5 = *(long *)(lVar6 + 0x20);\n            }\n          }" (if "if") (parenthesized_expression "(lVar6 != lVar4)" (( "(") (binary_expression "lVar6 != lVar4" (identifier "lVar6") (!= "!=") (identifier "lVar4")) () ")")) (compound_statement "{\n            lVar5 = *(long *)(lVar6 + 0x20);\n            while (lVar5 <= (long)(uVar9 & 0xffffffffffffe000)) {\n              plVar11 = *(long **)(lVar6 + 0x30);\n              lVar5 = *plVar11;\n              if ((lVar5 <= (long)uVar9) && (lVar12 + param_2 <= plVar11[1] + lVar5)) {\n                *(undefined1 *)(plVar11 + 5) = 1;\n                goto LAB_0034c524;\n              }\n              lVar6 = thunk_FUN_0049f700(lVar6);\n              if (lVar4 == lVar6) break;\n              lVar5 = *(long *)(lVar6 + 0x20);\n            }\n          }" ({ "{") (expression_statement "lVar5 = *(long *)(lVar6 + 0x20);" (assignment_expression "lVar5 = *(long *)(lVar6 + 0x20)" (identifier "lVar5") (= "=") (pointer_expression "*(long *)(lVar6 + 0x20)" (* "*") (cast_expression "(long *)(lVar6 + 0x20)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar6 + 0x20)" (( "(") (binary_expression "lVar6 + 0x20" (identifier "lVar6") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (while_statement "while (lVar5 <= (long)(uVar9 & 0xffffffffffffe000)) {\n              plVar11 = *(long **)(lVar6 + 0x30);\n              lVar5 = *plVar11;\n              if ((lVar5 <= (long)uVar9) && (lVar12 + param_2 <= plVar11[1] + lVar5)) {\n                *(undefined1 *)(plVar11 + 5) = 1;\n                goto LAB_0034c524;\n              }\n              lVar6 = thunk_FUN_0049f700(lVar6);\n              if (lVar4 == lVar6) break;\n              lVar5 = *(long *)(lVar6 + 0x20);\n            }" (while "while") (parenthesized_expression "(lVar5 <= (long)(uVar9 & 0xffffffffffffe000))" (( "(") (binary_expression "lVar5 <= (long)(uVar9 & 0xffffffffffffe000)" (identifier "lVar5") (<= "<=") (cast_expression "(long)(uVar9 & 0xffffffffffffe000)" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (parenthesized_expression "(uVar9 & 0xffffffffffffe000)" (( "(") (binary_expression "uVar9 & 0xffffffffffffe000" (identifier "uVar9") (& "&") (number_literal "0xffffffffffffe000")) () ")")))) () ")")) (compound_statement "{\n              plVar11 = *(long **)(lVar6 + 0x30);\n              lVar5 = *plVar11;\n              if ((lVar5 <= (long)uVar9) && (lVar12 + param_2 <= plVar11[1] + lVar5)) {\n                *(undefined1 *)(plVar11 + 5) = 1;\n                goto LAB_0034c524;\n              }\n              lVar6 = thunk_FUN_0049f700(lVar6);\n              if (lVar4 == lVar6) break;\n              lVar5 = *(long *)(lVar6 + 0x20);\n            }" ({ "{") (expression_statement "plVar11 = *(long **)(lVar6 + 0x30);" (assignment_expression "plVar11 = *(long **)(lVar6 + 0x30)" (identifier "plVar11") (= "=") (pointer_expression "*(long **)(lVar6 + 0x30)" (* "*") (cast_expression "(long **)(lVar6 + 0x30)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar6 + 0x30)" (( "(") (binary_expression "lVar6 + 0x30" (identifier "lVar6") (+ "+") (number_literal "0x30")) () ")"))))) (; ";")) (expression_statement "lVar5 = *plVar11;" (assignment_expression "lVar5 = *plVar11" (identifier "lVar5") (= "=") (pointer_expression "*plVar11" (* "*") (identifier "plVar11"))) (; ";")) (if_statement "if ((lVar5 <= (long)uVar9) && (lVar12 + param_2 <= plVar11[1] + lVar5)) {\n                *(undefined1 *)(plVar11 + 5) = 1;\n                goto LAB_0034c524;\n              }" (if "if") (parenthesized_expression "((lVar5 <= (long)uVar9) && (lVar12 + param_2 <= plVar11[1] + lVar5))" (( "(") (binary_expression "(lVar5 <= (long)uVar9) && (lVar12 + param_2 <= plVar11[1] + lVar5)" (parenthesized_expression "(lVar5 <= (long)uVar9)" (( "(") (binary_expression "lVar5 <= (long)uVar9" (identifier "lVar5") (<= "<=") (cast_expression "(long)uVar9" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "uVar9"))) () ")")) (&& "&&") (parenthesized_expression "(lVar12 + param_2 <= plVar11[1] + lVar5)" (( "(") (binary_expression "lVar12 + param_2 <= plVar11[1] + lVar5" (binary_expression "lVar12 + param_2" (identifier "lVar12") (+ "+") (identifier "param_2")) (<= "<=") (binary_expression "plVar11[1] + lVar5" (subscript_expression "plVar11[1]" (identifier "plVar11") ([ "[") (number_literal "1") (] "]")) (+ "+") (identifier "lVar5"))) () ")"))) () ")")) (compound_statement "{\n                *(undefined1 *)(plVar11 + 5) = 1;\n                goto LAB_0034c524;\n              }" ({ "{") (expression_statement "*(undefined1 *)(plVar11 + 5) = 1;" (assignment_expression "*(undefined1 *)(plVar11 + 5) = 1" (pointer_expression "*(undefined1 *)(plVar11 + 5)" (* "*") (cast_expression "(undefined1 *)(plVar11 + 5)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(plVar11 + 5)" (( "(") (binary_expression "plVar11 + 5" (identifier "plVar11") (+ "+") (number_literal "5")) () ")")))) (= "=") (number_literal "1")) (; ";")) (goto_statement "goto LAB_0034c524;" (goto "goto") (statement_identifier "LAB_0034c524") (; ";")) (} "}"))) (expression_statement "lVar6 = thunk_FUN_0049f700(lVar6);" (assignment_expression "lVar6 = thunk_FUN_0049f700(lVar6)" (identifier "lVar6") (= "=") (call_expression "thunk_FUN_0049f700(lVar6)" (identifier "thunk_FUN_0049f700") (argument_list "(lVar6)" (( "(") (identifier "lVar6") () ")")))) (; ";")) (if_statement "if (lVar4 == lVar6) break;" (if "if") (parenthesized_expression "(lVar4 == lVar6)" (( "(") (binary_expression "lVar4 == lVar6" (identifier "lVar4") (== "==") (identifier "lVar6")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "lVar5 = *(long *)(lVar6 + 0x20);" (assignment_expression "lVar5 = *(long *)(lVar6 + 0x20)" (identifier "lVar5") (= "=") (pointer_expression "*(long *)(lVar6 + 0x20)" (* "*") (cast_expression "(long *)(lVar6 + 0x20)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar6 + 0x20)" (( "(") (binary_expression "lVar6 + 0x20" (identifier "lVar6") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (} "}"))) (} "}")))) (} "}"))) (expression_statement "FUN_0034c220(param_1,param_2,param_3,uVar7,uVar16 - uVar7);" (call_expression "FUN_0034c220(param_1,param_2,param_3,uVar7,uVar16 - uVar7)" (identifier "FUN_0034c220") (argument_list "(param_1,param_2,param_3,uVar7,uVar16 - uVar7)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (identifier "uVar7") (, ",") (binary_expression "uVar16 - uVar7" (identifier "uVar16") (- "-") (identifier "uVar7")) () ")"))) (; ";")) (expression_statement "uVar7 = uVar16;" (assignment_expression "uVar7 = uVar16" (identifier "uVar7") (= "=") (identifier "uVar16")) (; ";")) (} "}")) (else_clause "else {\n        lVar5 = *plVar11;\nLAB_0034c524:\n        lVar12 = plVar11[2];\n        uVar1 = *(uint *)((long)plVar11 + 0x1c);\n        bVar3 = uVar7 < uVar16;\n        uVar7 = uVar16;\n        if (bVar3) {\n          if (uVar15 < __n) {\nLAB_0034c6f6:\n                    \n            FUN_00352af0("../../gold/fileread.cc",0x2f1,"read_multiple");\n          }\n          lVar10 = 0;\n          for (; memcpy((void *)plVar13[2],\n                        (void *)(lVar10 + (uVar9 - lVar5) + (ulong)uVar1 + lVar12),__n),\n              uVar14 != uVar16; uVar14 = uVar14 + 1) {\n            plVar13 = (long *)(*param_3 + uVar14 * 0x18);\n            __n = plVar13[1];\n            lVar10 = *plVar13 - lVar2;\n            if (uVar15 < __n + lVar10) goto LAB_0034c6f6;\n          }\n        }\n      }" (else "else") (compound_statement "{\n        lVar5 = *plVar11;\nLAB_0034c524:\n        lVar12 = plVar11[2];\n        uVar1 = *(uint *)((long)plVar11 + 0x1c);\n        bVar3 = uVar7 < uVar16;\n        uVar7 = uVar16;\n        if (bVar3) {\n          if (uVar15 < __n) {\nLAB_0034c6f6:\n                    \n            FUN_00352af0("../../gold/fileread.cc",0x2f1,"read_multiple");\n          }\n          lVar10 = 0;\n          for (; memcpy((void *)plVar13[2],\n                        (void *)(lVar10 + (uVar9 - lVar5) + (ulong)uVar1 + lVar12),__n),\n              uVar14 != uVar16; uVar14 = uVar14 + 1) {\n            plVar13 = (long *)(*param_3 + uVar14 * 0x18);\n            __n = plVar13[1];\n            lVar10 = *plVar13 - lVar2;\n            if (uVar15 < __n + lVar10) goto LAB_0034c6f6;\n          }\n        }\n      }" ({ "{") (expression_statement "lVar5 = *plVar11;" (assignment_expression "lVar5 = *plVar11" (identifier "lVar5") (= "=") (pointer_expression "*plVar11" (* "*") (identifier "plVar11"))) (; ";")) (labeled_statement "LAB_0034c524:\n        lVar12 = plVar11[2];" (statement_identifier "LAB_0034c524") (: ":") (expression_statement "lVar12 = plVar11[2];" (assignment_expression "lVar12 = plVar11[2]" (identifier "lVar12") (= "=") (subscript_expression "plVar11[2]" (identifier "plVar11") ([ "[") (number_literal "2") (] "]"))) (; ";"))) (expression_statement "uVar1 = *(uint *)((long)plVar11 + 0x1c);" (assignment_expression "uVar1 = *(uint *)((long)plVar11 + 0x1c)" (identifier "uVar1") (= "=") (pointer_expression "*(uint *)((long)plVar11 + 0x1c)" (* "*") (cast_expression "(uint *)((long)plVar11 + 0x1c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)plVar11 + 0x1c)" (( "(") (binary_expression "(long)plVar11 + 0x1c" (cast_expression "(long)plVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "plVar11")) (+ "+") (number_literal "0x1c")) () ")"))))) (; ";")) (expression_statement "bVar3 = uVar7 < uVar16;" (assignment_expression "bVar3 = uVar7 < uVar16" (identifier "bVar3") (= "=") (binary_expression "uVar7 < uVar16" (identifier "uVar7") (< "<") (identifier "uVar16"))) (; ";")) (expression_statement "uVar7 = uVar16;" (assignment_expression "uVar7 = uVar16" (identifier "uVar7") (= "=") (identifier "uVar16")) (; ";")) (if_statement "if (bVar3) {\n          if (uVar15 < __n) {\nLAB_0034c6f6:\n                    \n            FUN_00352af0("../../gold/fileread.cc",0x2f1,"read_multiple");\n          }\n          lVar10 = 0;\n          for (; memcpy((void *)plVar13[2],\n                        (void *)(lVar10 + (uVar9 - lVar5) + (ulong)uVar1 + lVar12),__n),\n              uVar14 != uVar16; uVar14 = uVar14 + 1) {\n            plVar13 = (long *)(*param_3 + uVar14 * 0x18);\n            __n = plVar13[1];\n            lVar10 = *plVar13 - lVar2;\n            if (uVar15 < __n + lVar10) goto LAB_0034c6f6;\n          }\n        }" (if "if") (parenthesized_expression "(bVar3)" (( "(") (identifier "bVar3") () ")")) (compound_statement "{\n          if (uVar15 < __n) {\nLAB_0034c6f6:\n                    \n            FUN_00352af0("../../gold/fileread.cc",0x2f1,"read_multiple");\n          }\n          lVar10 = 0;\n          for (; memcpy((void *)plVar13[2],\n                        (void *)(lVar10 + (uVar9 - lVar5) + (ulong)uVar1 + lVar12),__n),\n              uVar14 != uVar16; uVar14 = uVar14 + 1) {\n            plVar13 = (long *)(*param_3 + uVar14 * 0x18);\n            __n = plVar13[1];\n            lVar10 = *plVar13 - lVar2;\n            if (uVar15 < __n + lVar10) goto LAB_0034c6f6;\n          }\n        }" ({ "{") (if_statement "if (uVar15 < __n) {\nLAB_0034c6f6:\n                    \n            FUN_00352af0("../../gold/fileread.cc",0x2f1,"read_multiple");\n          }" (if "if") (parenthesized_expression "(uVar15 < __n)" (( "(") (binary_expression "uVar15 < __n" (identifier "uVar15") (< "<") (identifier "__n")) () ")")) (compound_statement "{\nLAB_0034c6f6:\n                    \n            FUN_00352af0("../../gold/fileread.cc",0x2f1,"read_multiple");\n          }" ({ "{") (labeled_statement "LAB_0034c6f6:\n                    \n            FUN_00352af0("../../gold/fileread.cc",0x2f1,"read_multiple");" (statement_identifier "LAB_0034c6f6") (: ":") (expression_statement "FUN_00352af0("../../gold/fileread.cc",0x2f1,"read_multiple");" (call_expression "FUN_00352af0("../../gold/fileread.cc",0x2f1,"read_multiple")" (identifier "FUN_00352af0") (argument_list "("../../gold/fileread.cc",0x2f1,"read_multiple")" (( "(") (string_literal ""../../gold/fileread.cc"" (" """) (string_content "../../gold/fileread.cc") (" """)) (, ",") (number_literal "0x2f1") (, ",") (string_literal ""read_multiple"" (" """) (string_content "read_multiple") (" """)) () ")"))) (; ";"))) (} "}"))) (expression_statement "lVar10 = 0;" (assignment_expression "lVar10 = 0" (identifier "lVar10") (= "=") (number_literal "0")) (; ";")) (for_statement "for (; memcpy((void *)plVar13[2],\n                        (void *)(lVar10 + (uVar9 - lVar5) + (ulong)uVar1 + lVar12),__n),\n              uVar14 != uVar16; uVar14 = uVar14 + 1) {\n            plVar13 = (long *)(*param_3 + uVar14 * 0x18);\n            __n = plVar13[1];\n            lVar10 = *plVar13 - lVar2;\n            if (uVar15 < __n + lVar10) goto LAB_0034c6f6;\n          }" (for "for") (( "(") (; ";") (comma_expression "memcpy((void *)plVar13[2],\n                        (void *)(lVar10 + (uVar9 - lVar5) + (ulong)uVar1 + lVar12),__n),\n              uVar14 != uVar16" (call_expression "memcpy((void *)plVar13[2],\n                        (void *)(lVar10 + (uVar9 - lVar5) + (ulong)uVar1 + lVar12),__n)" (identifier "memcpy") (argument_list "((void *)plVar13[2],\n                        (void *)(lVar10 + (uVar9 - lVar5) + (ulong)uVar1 + lVar12),__n)" (( "(") (cast_expression "(void *)plVar13[2]" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "plVar13[2]" (identifier "plVar13") ([ "[") (number_literal "2") (] "]"))) (, ",") (cast_expression "(void *)(lVar10 + (uVar9 - lVar5) + (ulong)uVar1 + lVar12)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar10 + (uVar9 - lVar5) + (ulong)uVar1 + lVar12)" (( "(") (binary_expression "lVar10 + (uVar9 - lVar5) + (ulong)uVar1 + lVar12" (binary_expression "lVar10 + (uVar9 - lVar5) + (ulong)uVar1" (binary_expression "lVar10 + (uVar9 - lVar5)" (identifier "lVar10") (+ "+") (parenthesized_expression "(uVar9 - lVar5)" (( "(") (binary_expression "uVar9 - lVar5" (identifier "uVar9") (- "-") (identifier "lVar5")) () ")"))) (+ "+") (cast_expression "(ulong)uVar1" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar1"))) (+ "+") (identifier "lVar12")) () ")"))) (, ",") (identifier "__n") () ")"))) (, ",") (binary_expression "uVar14 != uVar16" (identifier "uVar14") (!= "!=") (identifier "uVar16"))) (; ";") (assignment_expression "uVar14 = uVar14 + 1" (identifier "uVar14") (= "=") (binary_expression "uVar14 + 1" (identifier "uVar14") (+ "+") (number_literal "1"))) () ")") (compound_statement "{\n            plVar13 = (long *)(*param_3 + uVar14 * 0x18);\n            __n = plVar13[1];\n            lVar10 = *plVar13 - lVar2;\n            if (uVar15 < __n + lVar10) goto LAB_0034c6f6;\n          }" ({ "{") (expression_statement "plVar13 = (long *)(*param_3 + uVar14 * 0x18);" (assignment_expression "plVar13 = (long *)(*param_3 + uVar14 * 0x18)" (identifier "plVar13") (= "=") (cast_expression "(long *)(*param_3 + uVar14 * 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_3 + uVar14 * 0x18)" (( "(") (binary_expression "*param_3 + uVar14 * 0x18" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (+ "+") (binary_expression "uVar14 * 0x18" (identifier "uVar14") (* "*") (number_literal "0x18"))) () ")")))) (; ";")) (expression_statement "__n = plVar13[1];" (assignment_expression "__n = plVar13[1]" (identifier "__n") (= "=") (subscript_expression "plVar13[1]" (identifier "plVar13") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "lVar10 = *plVar13 - lVar2;" (assignment_expression "lVar10 = *plVar13 - lVar2" (identifier "lVar10") (= "=") (binary_expression "*plVar13 - lVar2" (pointer_expression "*plVar13" (* "*") (identifier "plVar13")) (- "-") (identifier "lVar2"))) (; ";")) (if_statement "if (uVar15 < __n + lVar10) goto LAB_0034c6f6;" (if "if") (parenthesized_expression "(uVar15 < __n + lVar10)" (( "(") (binary_expression "uVar15 < __n + lVar10" (identifier "uVar15") (< "<") (binary_expression "__n + lVar10" (identifier "__n") (+ "+") (identifier "lVar10"))) () ")")) (goto_statement "goto LAB_0034c6f6;" (goto "goto") (statement_identifier "LAB_0034c6f6") (; ";"))) (} "}"))) (} "}"))) (} "}")))) (} "}")) (else_clause "else {\nLAB_0034c6c0:\n      FUN_0034c0e0(param_1,lVar2 + param_2,__n,plVar13[2]);\n      uVar7 = uVar16;\n    }" (else "else") (compound_statement "{\nLAB_0034c6c0:\n      FUN_0034c0e0(param_1,lVar2 + param_2,__n,plVar13[2]);\n      uVar7 = uVar16;\n    }" ({ "{") (labeled_statement "LAB_0034c6c0:\n      FUN_0034c0e0(param_1,lVar2 + param_2,__n,plVar13[2]);" (statement_identifier "LAB_0034c6c0") (: ":") (expression_statement "FUN_0034c0e0(param_1,lVar2 + param_2,__n,plVar13[2]);" (call_expression "FUN_0034c0e0(param_1,lVar2 + param_2,__n,plVar13[2])" (identifier "FUN_0034c0e0") (argument_list "(param_1,lVar2 + param_2,__n,plVar13[2])" (( "(") (identifier "param_1") (, ",") (binary_expression "lVar2 + param_2" (identifier "lVar2") (+ "+") (identifier "param_2")) (, ",") (identifier "__n") (, ",") (subscript_expression "plVar13[2]" (identifier "plVar13") ([ "[") (number_literal "2") (] "]")) () ")"))) (; ";"))) (expression_statement "uVar7 = uVar16;" (assignment_expression "uVar7 = uVar16" (identifier "uVar7") (= "=") (identifier "uVar16")) (; ";")) (} "}")))) (if_statement "if (uVar8 <= uVar7) {\n      return;\n    }" (if "if") (parenthesized_expression "(uVar8 <= uVar7)" (( "(") (binary_expression "uVar8 <= uVar7" (identifier "uVar8") (<= "<=") (identifier "uVar7")) () ")")) (compound_statement "{\n      return;\n    }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "lVar12 = *param_3;" (assignment_expression "lVar12 = *param_3" (identifier "lVar12") (= "=") (pointer_expression "*param_3" (* "*") (identifier "param_3"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}")))

/* WARNING: Type propagation algorithm not settling */
/* DWARF original prototype: void read_multiple(File_read * this, off_t base, Read_multiple * rm) */

void __thiscall gold::type_1::function_1(type_1 *this,type_2 var_14,type_3 *rm)

{
  type_4 *pp_Var1;
  type_5 uVar2;
  long var_9;
  bool bVar4;
  type_6 *var_18;
  type_7 *var_19;
  type_8 var_5;
  void *var_23;
  type_8 var_4;
  type_8 var_12;
  long var_8;
  long var_13;
  type_9 var_6;
  type_10 *var_16;
  type_4 var_17;
  type_9 pRVar14;
  type_8 var_7;
  type_8 var_11;
  void *var_15;
  type_8 var_22;
  
  var_6 = (rm->
            super__Vector_base<gold::type_1::var_1,_std::allocator<gold::type_1::var_1>var_2>var_3
            )._M_impl._M_start;
  var_4 = ((long)(rm->
                 super__Vector_base<gold::type_1::var_1,_std::allocator<gold::type_1::var_1>var_2>var_3
                 )._M_impl._M_finish - (long)var_6 >> 3) * -0x5555555555555555;
  if (var_4 == 0) {
    return;
  }
  var_5 = 0;
  var_18 = &(this->views_)._M_t._M_impl.super__Rb_tree_header;
  do {
    var_7 = var_5 + 1;
    pRVar14 = var_6 + var_5;
    var_9 = pRVar14->file_offset;
    var_23 = (void *)pRVar14->size;
    var_22 = var_7;
    if (var_7 < var_4) {
      var_8 = var_6[var_5 + 1].file_offset;
      if (var_8 < var_9 + (long)var_23) {
LAB_0034c6de:
                    /* WARNING: Subroutine does not return */
        var_10("../../gold/fileread.cc",0x2d5,"read_multiple");
      }
      var_8 = var_8 + var_6[var_5 + 1].size;
      if (0x1fff < var_8 - (var_9 + (long)var_23)) goto LAB_0034c6c0;
      var_6 = var_6 + var_5 + 2;
      var_12 = var_7;
      do {
        var_11 = var_12;
        var_13 = var_8;
        var_12 = var_11 + 1;
        var_22 = var_12;
        if ((var_4 <= var_12) || (var_22 = var_5 + 0x80, var_12 == var_5 + 0x80)) break;
        if (var_6->file_offset < var_13) goto LAB_0034c6de;
        var_8 = var_6->file_offset + var_6->size;
        var_6 = var_6 + 1;
        var_22 = var_12;
      } while (var_8 - var_13 < 0x2000);
      var_12 = var_9 + var_14;
      if (var_11 == var_5) goto LAB_0034c6c0;
      var_15 = (void *)(var_13 - var_9);
      if ((this->size_ < (long)var_12) || ((void *)(this->size_ - var_12) < var_15)) {
                    /* WARNING: Subroutine does not return */
        var_10("../../gold/fileread.cc",0x150,"find_view");
      }
      var_16 = this->whole_file_view_;
      if (var_16 == (type_10 *)0x0) {
        var_17 = (this->views_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent;
        var_8 = (var_12 & 0xffffffffffffe000) - 1;
        var_19 = &var_18->_M_header;
        if (var_17 != (type_7 *)0x0) {
          do {
            while ((var_8 < *(long *)(var_17 + 1) ||
                   ((var_8 == *(long *)(var_17 + 1) && (*(int *)&var_17[1]._M_parent != 0))))) {
              pp_Var1 = &var_17->_M_left;
              var_19 = var_17;
              var_17 = *pp_Var1;
              if (*pp_Var1 == (type_4)0x0) goto LAB_0034c5f6;
            }
            var_17 = var_17->_M_right;
          } while (var_17 != (type_4)0x0);
LAB_0034c5f6:
          if ((type_6 *)var_19 != var_18) {
            var_8 = *(long *)(var_19 + 1);
            while (var_8 <= (long)(var_12 & 0xffffffffffffe000)) {
              var_16 = (type_10 *)var_19[1]._M_left;
              var_8 = var_16->start_;
              if ((var_8 <= (long)var_12) &&
                 (var_13 + var_14 <= (long)&((type_4)var_16->size_)->_M_color + var_8)) {
                var_16->accessed_ = true;
                goto LAB_0034c524;
              }
              var_19 = (type_7 *)std::var_20(var_19);
              if (var_18 == (type_6 *)var_19) break;
              var_8 = *(long *)(var_19 + 1);
            }
          }
        }
        var_21(this,var_14,rm,var_5,var_22 - var_5);
        var_5 = var_22;
      }
      else {
        var_8 = var_16->start_;
LAB_0034c524:
        var_17 = (type_4)var_16->data_;
        uVar2 = var_16->byteshift_;
        bVar4 = var_5 < var_22;
        var_5 = var_22;
        if (bVar4) {
          if (var_15 < var_23) {
LAB_0034c6f6:
                    /* WARNING: Subroutine does not return */
            var_10("../../gold/fileread.cc",0x2f1,"read_multiple");
          }
          var_13 = 0;
          for (; var_24(pRVar14->buffer,
                        (void *)(var_13 + (var_12 - var_8) + (type_8)uVar2 + (long)var_17),
                        (size_t)var_23), var_7 != var_22; var_7 = var_7 + 1) {
            pRVar14 = (rm->
                      super__Vector_base<gold::type_1::var_1,_std::allocator<gold::type_1::var_1>var_2>var_3
                      )._M_impl._M_start + var_7;
            var_23 = (void *)pRVar14->size;
            var_13 = pRVar14->file_offset - var_9;
            if (var_15 < (void *)((long)var_23 + var_13)) goto LAB_0034c6f6;
          }
        }
      }
    }
    else {
LAB_0034c6c0:
      var_25(this,(int)var_9 + (int)var_14,var_23,(size_t)pRVar14->buffer);
      var_5 = var_22;
    }
    if (var_4 <= var_5) {
      return;
    }
    var_6 = (rm->
              super__Vector_base<gold::type_1::var_1,_std::allocator<gold::type_1::var_1>var_2>var_3
              )._M_impl._M_start;
  } while( true );
}


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

void MASKED(long param_1,long param_2,long *param_3)

{
  uint uVar1;
  long lVar2;
  bool bVar3;
  long lVar4;
  long lVar5;
  long lVar6;
  ulong uVar7;
  ulong __n;
  ulong uVar8;
  ulong uVar9;
  long lVar10;
  long *plVar11;
  long lVar12;
  long *plVar13;
  ulong uVar14;
  ulong uVar15;
  ulong uVar16;
  
  lVar12 = *param_3;
  uVar8 = (param_3[1] - lVar12 >> 3) * -0x5555555555555555;
  if (uVar8 == 0) {
    return;
  }
  uVar7 = 0;
  lVar4 = param_1 + 0x60;
  do {
    uVar14 = uVar7 + 1;
    lVar5 = uVar7 * 0x18;
    plVar13 = (long *)(lVar12 + lVar5);
    lVar2 = *plVar13;
    __n = plVar13[1];
    uVar16 = uVar14;
    if (uVar14 < uVar8) {
      plVar11 = (long *)(lVar12 + 0x18 + lVar5);
      lVar10 = *plVar11;
      if (lVar10 < (long)(lVar2 + __n)) {
LAB_0034c6de:
                    /* WARNING: Subroutine does not return */
        FUN_00352af0("../../gold/fileread.cc",0x2d5,"read_multiple");
      }
      lVar10 = lVar10 + plVar11[1];
      if (0x1fff < (long)(lVar10 - (lVar2 + __n))) goto LAB_0034c6c0;
      plVar11 = (long *)(lVar12 + 0x30 + lVar5);
      uVar9 = uVar14;
      do {
        uVar15 = uVar9;
        lVar12 = lVar10;
        uVar9 = uVar15 + 1;
        uVar16 = uVar9;
        if ((uVar8 <= uVar9) || (uVar16 = uVar7 + 0x80, uVar9 == uVar7 + 0x80)) break;
        if (*plVar11 < lVar12) goto LAB_0034c6de;
        lVar10 = *plVar11 + plVar11[1];
        plVar11 = plVar11 + 3;
        uVar16 = uVar9;
      } while (lVar10 - lVar12 < 0x2000);
      uVar9 = lVar2 + param_2;
      if (uVar15 == uVar7) goto LAB_0034c6c0;
      uVar15 = lVar12 - lVar2;
      if ((*(long *)(param_1 + 0x30) < (long)uVar9) || (*(long *)(param_1 + 0x30) - uVar9 < uVar15))
      {
                    /* WARNING: Subroutine does not return */
        FUN_00352af0("../../gold/fileread.cc",0x150,"find_view");
      }
      plVar11 = *(long **)(param_1 + 0xb0);
      if (plVar11 == (long *)0x0) {
        lVar10 = *(long *)(param_1 + 0x68);
        lVar5 = (uVar9 & 0xffffffffffffe000) - 1;
        lVar6 = lVar4;
        if (lVar10 != 0) {
          do {
            while ((lVar5 < *(long *)(lVar10 + 0x20) ||
                   ((lVar5 == *(long *)(lVar10 + 0x20) && (*(int *)(lVar10 + 0x28) != 0))))) {
              plVar11 = (long *)(lVar10 + 0x10);
              lVar6 = lVar10;
              lVar10 = *plVar11;
              if (*plVar11 == 0) goto LAB_0034c5f6;
            }
            lVar10 = *(long *)(lVar10 + 0x18);
          } while (lVar10 != 0);
LAB_0034c5f6:
          if (lVar6 != lVar4) {
            lVar5 = *(long *)(lVar6 + 0x20);
            while (lVar5 <= (long)(uVar9 & 0xffffffffffffe000)) {
              plVar11 = *(long **)(lVar6 + 0x30);
              lVar5 = *plVar11;
              if ((lVar5 <= (long)uVar9) && (lVar12 + param_2 <= plVar11[1] + lVar5)) {
                *(undefined1 *)(plVar11 + 5) = 1;
                goto LAB_0034c524;
              }
              lVar6 = thunk_FUN_0049f700(lVar6);
              if (lVar4 == lVar6) break;
              lVar5 = *(long *)(lVar6 + 0x20);
            }
          }
        }
        FUN_0034c220(param_1,param_2,param_3,uVar7,uVar16 - uVar7);
        uVar7 = uVar16;
      }
      else {
        lVar5 = *plVar11;
LAB_0034c524:
        lVar12 = plVar11[2];
        uVar1 = *(uint *)((long)plVar11 + 0x1c);
        bVar3 = uVar7 < uVar16;
        uVar7 = uVar16;
        if (bVar3) {
          if (uVar15 < __n) {
LAB_0034c6f6:
                    /* WARNING: Subroutine does not return */
            FUN_00352af0("../../gold/fileread.cc",0x2f1,"read_multiple");
          }
          lVar10 = 0;
          for (; memcpy((void *)plVar13[2],
                        (void *)(lVar10 + (uVar9 - lVar5) + (ulong)uVar1 + lVar12),__n),
              uVar14 != uVar16; uVar14 = uVar14 + 1) {
            plVar13 = (long *)(*param_3 + uVar14 * 0x18);
            __n = plVar13[1];
            lVar10 = *plVar13 - lVar2;
            if (uVar15 < __n + lVar10) goto LAB_0034c6f6;
          }
        }
      }
    }
    else {
LAB_0034c6c0:
      FUN_0034c0e0(param_1,lVar2 + param_2,__n,plVar13[2]);
      uVar7 = uVar16;
    }
    if (uVar8 <= uVar7) {
      return;
    }
    lVar12 = *param_3;
  } while( true );
}

