
/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* DWARF original prototype: View * make_view(File_read * this, off_t start, section_size_type size,
   uint byteshift, bool cache) */

View * __thiscall
gold::File_read::make_view
          (File_read *this,off_t start,section_size_type size,uint byteshift,bool cache)

{
  uint uVar1;
  int iVar2;
  int iVar3;
  uchar *__s;
  View *v;
  uint uVar4;
  int iVar5;
  Data_ownership DVar6;
  uint uVar7;
  uint uVar8;
  uchar *p;
  
  if (size == 0) {
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable("../../gold/fileread.cc",0x1da,"make_view");
  }
  uVar1 = (uint)this->size_;
  iVar2 = *(int *)((int)&this->size_ + 4);
  if (((SBORROW4(iVar2,start._4_4_) != SBORROW4(iVar2 - start._4_4_,(uint)(uVar1 < (uint)start))) !=
       (int)((iVar2 - start._4_4_) - (uint)(uVar1 < (uint)start)) < 0) ||
     ((iVar2 - start._4_4_) - (uint)(uVar1 < (uint)start) < (uint)(uVar1 - (uint)start < size))) {
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable("../../gold/fileread.cc",0x1dd,"make_view");
  }
  uVar8 = (uint)start & 0xffffe000;
  uVar7 = size + ((uint)start - uVar8) + 0x1fff;
  uVar4 = uVar7 & 0xffffe000;
  iVar5 = start._4_4_ + (uint)CARRY4(uVar4,uVar8);
  uVar4 = (uint)(uVar4 + uVar8 < uVar1);
  iVar3 = iVar5 - iVar2;
  if ((SBORROW4(iVar5,iVar2) != SBORROW4(iVar3,uVar4)) == (int)(iVar3 - uVar4) < 0) {
    uVar7 = uVar1 - uVar8;
    if (uVar7 < size) {
                    /* WARNING: Subroutine does not return */
      do_gold_unreachable("../../gold/fileread.cc",0x1e6,"make_view");
    }
  }
  else {
    uVar7 = uVar7 & 0xffffe000;
  }
  if (byteshift == 0) {
    reopen_descriptor(this);
    __s = (uchar *)mmap64((void *)0x0,uVar7,1,2,this->descriptor_,start & 0xffffffffffffe000);
    if (__s != (uchar *)0xffffffff) {
      DVar6 = DATA_MMAPPED;
      this->mapped_bytes_ = this->mapped_bytes_ + uVar7;
      goto LAB_000681de;
    }
    __s = (uchar *)malloc(uVar7);
    p = __s;
    if (__s == (uchar *)0x0) goto LAB_00068311;
  }
  else {
    __s = (uchar *)malloc(byteshift + uVar7);
    if (__s == (uchar *)0x0) {
LAB_00068311:
                    /* WARNING: Subroutine does not return */
      gold_nomem();
    }
    memset(__s,0,byteshift);
    p = __s + byteshift;
  }
  DVar6 = DATA_ALLOCATED_ARRAY;
  do_read(this,start & 0xffffffffffffe000,uVar7,p);
LAB_000681de:
  v = (View *)operator_new(0x24);
  v->size_ = uVar7;
  *(uint *)&v->start_ = uVar8;
  v->data_ = __s;
  v->byteshift_ = byteshift;
  v->data_ownership_ = DVar6;
  *(int *)((int)&v->start_ + 4) = start._4_4_;
  v->lock_count_ = 0;
  v->cache_ = cache;
  v->accessed_ = true;
  add_view(this,v);
  return v;
}



/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */

uint * FUN_000680c0(int param_1,uint param_2,uint param_3,uint param_4,size_t param_5,
                   undefined1 param_6)

{
  uint uVar1;
  int iVar2;
  void *__s;
  uint *puVar3;
  int iVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  void *pvVar9;
  
  if (param_4 == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_00069d00("../../gold/fileread.cc",0x1da,"make_view");
  }
  uVar5 = *(uint *)(param_1 + 0x24);
  uVar1 = *(uint *)(param_1 + 0x28);
  uVar6 = uVar1;
  if (((SBORROW4(uVar1,param_3) != SBORROW4(uVar1 - param_3,(uint)(uVar5 < param_2))) !=
       (int)((uVar1 - param_3) - (uint)(uVar5 < param_2)) < 0) ||
     (uVar6 = uVar5 - param_2, (uVar1 - param_3) - (uint)(uVar5 < param_2) < (uint)(uVar6 < param_4)
     )) {
                    /* WARNING: Subroutine does not return */
    FUN_00069d00("../../gold/fileread.cc",0x1dd,"make_view",uVar6);
  }
  uVar8 = param_2 & 0xffffe000;
  uVar7 = param_4 + (param_2 - uVar8) + 0x1fff;
  uVar6 = uVar7 & 0xffffe000;
  iVar4 = param_3 + CARRY4(uVar6,uVar8);
  uVar6 = (uint)(uVar6 + uVar8 < uVar5);
  iVar2 = iVar4 - uVar1;
  if ((SBORROW4(iVar4,uVar1) != SBORROW4(iVar2,uVar6)) == (int)(iVar2 - uVar6) < 0) {
    uVar7 = uVar5 - uVar8;
    if (uVar7 < param_4) {
                    /* WARNING: Subroutine does not return */
      FUN_00069d00("../../gold/fileread.cc",0x1e6,"make_view",param_3);
    }
  }
  else {
    uVar7 = uVar7 & 0xffffe000;
  }
  if (param_5 == 0) {
    FUN_00066930(param_1);
    __s = mmap64((void *)0x0,uVar7,1,2,*(int *)(param_1 + 0x18),
                 CONCAT44(param_3,param_2) & 0xffffffffffffe000);
    if (__s != (void *)0xffffffff) {
      uVar5 = 2;
      *(int *)(param_1 + 100) = *(int *)(param_1 + 100) + uVar7;
      goto LAB_000681de;
    }
    __s = malloc(uVar7);
    pvVar9 = __s;
    if (__s == (void *)0x0) goto LAB_00068311;
  }
  else {
    __s = malloc(param_5 + uVar7);
    if (__s == (void *)0x0) {
LAB_00068311:
                    /* WARNING: Subroutine does not return */
      FUN_00069cb0();
    }
    memset(__s,0,param_5);
    pvVar9 = (void *)(param_5 + (int)__s);
  }
  uVar5 = 1;
  FUN_00066a90(param_1,uVar8,param_3,uVar7,pvVar9);
LAB_000681de:
  puVar3 = (uint *)FUN_001e5210(0x24);
  puVar3[2] = uVar7;
  *puVar3 = uVar8;
  puVar3[3] = (uint)__s;
  puVar3[5] = param_5;
  puVar3[7] = uVar5;
  puVar3[1] = param_3;
  puVar3[4] = 0;
  *(undefined1 *)(puVar3 + 6) = param_6;
  *(undefined1 *)(puVar3 + 8) = 1;
  FUN_00067e20(param_1,puVar3);
  return puVar3;
}


CALL 0x000559e6
ADD EAX,0x326f3b
PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
SUB ESP,0x2c
MOV ECX,dword ptr [ESP + 0x54]
MOV EBP,dword ptr [ESP + 0x4c]
MOV dword ptr [ESP + 0x18],EAX
MOV EDX,dword ptr [ESP + 0x48]
MOV EAX,dword ptr [ESP + 0x44]
MOV dword ptr [ESP + 0x1c],ECX
TEST EBP,EBP
JZ 0x000682f4
MOV ECX,dword ptr [ESP + 0x40]
MOV EBX,dword ptr [ECX + 0x24]
MOV ESI,dword ptr [ECX + 0x28]
CMP EBX,EAX
MOV ECX,ESI
MOV dword ptr [ESP + 0x8],EBX
SBB ECX,EDX
MOV dword ptr [ESP + 0xc],ESI
JL 0x000682d7
MOV EDI,ESI
MOV ESI,EBX
MOV dword ptr [ESP + 0x14],0x0
SUB ESI,EAX
MOV dword ptr [ESP + 0x10],EBP
SBB EDI,EDX
CMP ESI,EBP
MOV EBX,EDI
SBB EBX,dword ptr [ESP + 0x14]
JC 0x000682d7
MOV EDI,EAX
MOV ESI,dword ptr [ESP + 0x10]
MOV dword ptr [ESP + 0x4],EDX
AND EDI,0xffffe000
MOV EBX,dword ptr [ESP + 0x4]
MOV dword ptr [ESP],EDI
SUB EAX,dword ptr [ESP]
ADD ESI,EAX
ADD ESI,0x1fff
XOR EDX,EDX
MOV ECX,ESI
AND ECX,0xffffe000
MOV EAX,ECX
MOV ECX,dword ptr [ESP]
ADD EAX,ECX
ADC EDX,EBX
CMP EAX,dword ptr [ESP + 0x8]
MOV EAX,EDX
SBB EAX,dword ptr [ESP + 0xc]
JGE 0x00068238
AND ESI,0xffffe000
MOV ECX,dword ptr [ESP + 0x50]
TEST ECX,ECX
JZ 0x00068268
SUB ESP,0xc
MOV EAX,dword ptr [ESP + 0x5c]
ADD EAX,ESI
PUSH EAX
MOV EBX,dword ptr [ESP + 0x28]
CALL 0x000297a0
ADD ESP,0x10
MOV EDI,EAX
TEST EAX,EAX
JZ 0x00068311
SUB ESP,0x4
PUSH dword ptr [ESP + 0x54]
PUSH 0x0
PUSH EAX
MOV EBX,dword ptr [ESP + 0x28]
CALL 0x000292f0
MOV EAX,dword ptr [ESP + 0x60]
ADD EAX,EDI
MOV dword ptr [ESP],EAX
PUSH ESI
MOV EBP,0x1
PUSH dword ptr [ESP + 0x18]
PUSH dword ptr [ESP + 0x18]
PUSH dword ptr [ESP + 0x5c]
CALL 0x00066a90
ADD ESP,0x20
SUB ESP,0xc
PUSH 0x24
MOV EBX,dword ptr [ESP + 0x28]
CALL 0x001e5210
MOV EDX,dword ptr [ESP + 0x14]
MOV EBX,EAX
MOV EAX,dword ptr [ESP + 0x10]
MOV dword ptr [EBX + 0x8],ESI
MOV dword ptr [EBX],EAX
MOV EAX,dword ptr [ESP + 0x60]
MOV dword ptr [EBX + 0xc],EDI
MOV dword ptr [EBX + 0x14],EAX
MOVZX EAX,byte ptr [ESP + 0x2c]
MOV dword ptr [EBX + 0x1c],EBP
MOV dword ptr [EBX + 0x4],EDX
MOV dword ptr [EBX + 0x10],0x0
MOV byte ptr [EBX + 0x18],AL
MOV byte ptr [EBX + 0x20],0x1
POP EAX
POP EDX
PUSH EBX
PUSH dword ptr [ESP + 0x4c]
CALL 0x00067e20
ADD ESP,0x3c
MOV EAX,EBX
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EAX,dword ptr [ESP + 0x8]
SUB EAX,ECX
MOV ESI,EAX
CMP EBP,EAX
JBE 0x0006817c
PUSH EBX
MOV EBX,dword ptr [ESP + 0x1c]
LEA EAX,[EBX + 0xffef8634]
PUSH EAX
LEA EAX,[EBX + 0xffef8354]
PUSH 0x1e6
PUSH EAX
CALL 0x00069d00
SUB ESP,0xc
PUSH dword ptr [ESP + 0x4c]
CALL 0x00066930
ADD ESP,0xc
PUSH dword ptr [ESP + 0x8]
PUSH dword ptr [ESP + 0x8]
MOV EAX,dword ptr [ESP + 0x4c]
PUSH dword ptr [EAX + 0x18]
PUSH 0x2
PUSH 0x1
PUSH ESI
PUSH 0x0
MOV EBX,dword ptr [ESP + 0x38]
CALL 0x00029a50
ADD ESP,0x20
MOV EDI,EAX
CMP EAX,-0x1
JZ 0x000682b8
MOV EAX,dword ptr [ESP + 0x40]
MOV EBP,0x2
ADD dword ptr [EAX + 0x64],ESI
JMP 0x000681de
SUB ESP,0xc
PUSH ESI
MOV EBX,dword ptr [ESP + 0x28]
CALL 0x000297a0
ADD ESP,0x10
MOV EDI,EAX
TEST EAX,EAX
JZ 0x00068311
SUB ESP,0xc
PUSH EAX
JMP 0x000681c4
PUSH ESI
MOV EBX,dword ptr [ESP + 0x1c]
LEA EAX,[EBX + 0xffef8634]
PUSH EAX
LEA EAX,[EBX + 0xffef8354]
PUSH 0x1dd
PUSH EAX
CALL 0x00069d00
PUSH EDI
MOV EBX,dword ptr [ESP + 0x1c]
LEA EAX,[EBX + 0xffef8634]
PUSH EAX
LEA EAX,[EBX + 0xffef8354]
PUSH 0x1da
PUSH EAX
CALL 0x00069d00
MOV EBX,dword ptr [ESP + 0x18]
CALL 0x00069cb0
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n\nuint * FUN_000680c0(int param_1,uint param_2,uint param_3,uint param_4,size_t param_5,\n                   undefined1 param_6)\n\n{\n  uint uVar1;\n  int iVar2;\n  void *__s;\n  uint *puVar3;\n  int iVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  void *pvVar9;\n  \n  if (param_4 == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00069d00("../../gold/fileread.cc",0x1da,"make_view");\n  }\n  uVar5 = *(uint *)(param_1 + 0x24);\n  uVar1 = *(uint *)(param_1 + 0x28);\n  uVar6 = uVar1;\n  if (((SBORROW4(uVar1,param_3) != SBORROW4(uVar1 - param_3,(uint)(uVar5 < param_2))) !=\n       (int)((uVar1 - param_3) - (uint)(uVar5 < param_2)) < 0) ||\n     (uVar6 = uVar5 - param_2, (uVar1 - param_3) - (uint)(uVar5 < param_2) < (uint)(uVar6 < param_4)\n     )) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00069d00("../../gold/fileread.cc",0x1dd,"make_view",uVar6);\n  }\n  uVar8 = param_2 & 0xffffe000;\n  uVar7 = param_4 + (param_2 - uVar8) + 0x1fff;\n  uVar6 = uVar7 & 0xffffe000;\n  iVar4 = param_3 + CARRY4(uVar6,uVar8);\n  uVar6 = (uint)(uVar6 + uVar8 < uVar5);\n  iVar2 = iVar4 - uVar1;\n  if ((SBORROW4(iVar4,uVar1) != SBORROW4(iVar2,uVar6)) == (int)(iVar2 - uVar6) < 0) {\n    uVar7 = uVar5 - uVar8;\n    if (uVar7 < param_4) {\n                    /* WARNING: Subroutine does not return */\n      FUN_00069d00("../../gold/fileread.cc",0x1e6,"make_view",param_3);\n    }\n  }\n  else {\n    uVar7 = uVar7 & 0xffffe000;\n  }\n  if (param_5 == 0) {\n    FUN_00066930(param_1);\n    __s = mmap64((void *)0x0,uVar7,1,2,*(int *)(param_1 + 0x18),\n                 CONCAT44(param_3,param_2) & 0xffffffffffffe000);\n    if (__s != (void *)0xffffffff) {\n      uVar5 = 2;\n      *(int *)(param_1 + 100) = *(int *)(param_1 + 100) + uVar7;\n      goto LAB_000681de;\n    }\n    __s = malloc(uVar7);\n    pvVar9 = __s;\n    if (__s == (void *)0x0) goto LAB_00068311;\n  }\n  else {\n    __s = malloc(param_5 + uVar7);\n    if (__s == (void *)0x0) {\nLAB_00068311:\n                    /* WARNING: Subroutine does not return */\n      FUN_00069cb0();\n    }\n    memset(__s,0,param_5);\n    pvVar9 = (void *)(param_5 + (int)__s);\n  }\n  uVar5 = 1;\n  FUN_00066a90(param_1,uVar8,param_3,uVar7,pvVar9);\nLAB_000681de:\n  puVar3 = (uint *)FUN_001e5210(0x24);\n  puVar3[2] = uVar7;\n  *puVar3 = uVar8;\n  puVar3[3] = (uint)__s;\n  puVar3[5] = param_5;\n  puVar3[7] = uVar5;\n  puVar3[1] = param_3;\n  puVar3[4] = 0;\n  *(undefined1 *)(puVar3 + 6) = param_6;\n  *(undefined1 *)(puVar3 + 8) = 1;\n  FUN_00067e20(param_1,puVar3);\n  return puVar3;\n}\n\n" comment (function_definition "uint * FUN_000680c0(int param_1,uint param_2,uint param_3,uint param_4,size_t param_5,\n                   undefined1 param_6)\n\n{\n  uint uVar1;\n  int iVar2;\n  void *__s;\n  uint *puVar3;\n  int iVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  void *pvVar9;\n  \n  if (param_4 == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00069d00("../../gold/fileread.cc",0x1da,"make_view");\n  }\n  uVar5 = *(uint *)(param_1 + 0x24);\n  uVar1 = *(uint *)(param_1 + 0x28);\n  uVar6 = uVar1;\n  if (((SBORROW4(uVar1,param_3) != SBORROW4(uVar1 - param_3,(uint)(uVar5 < param_2))) !=\n       (int)((uVar1 - param_3) - (uint)(uVar5 < param_2)) < 0) ||\n     (uVar6 = uVar5 - param_2, (uVar1 - param_3) - (uint)(uVar5 < param_2) < (uint)(uVar6 < param_4)\n     )) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00069d00("../../gold/fileread.cc",0x1dd,"make_view",uVar6);\n  }\n  uVar8 = param_2 & 0xffffe000;\n  uVar7 = param_4 + (param_2 - uVar8) + 0x1fff;\n  uVar6 = uVar7 & 0xffffe000;\n  iVar4 = param_3 + CARRY4(uVar6,uVar8);\n  uVar6 = (uint)(uVar6 + uVar8 < uVar5);\n  iVar2 = iVar4 - uVar1;\n  if ((SBORROW4(iVar4,uVar1) != SBORROW4(iVar2,uVar6)) == (int)(iVar2 - uVar6) < 0) {\n    uVar7 = uVar5 - uVar8;\n    if (uVar7 < param_4) {\n                    /* WARNING: Subroutine does not return */\n      FUN_00069d00("../../gold/fileread.cc",0x1e6,"make_view",param_3);\n    }\n  }\n  else {\n    uVar7 = uVar7 & 0xffffe000;\n  }\n  if (param_5 == 0) {\n    FUN_00066930(param_1);\n    __s = mmap64((void *)0x0,uVar7,1,2,*(int *)(param_1 + 0x18),\n                 CONCAT44(param_3,param_2) & 0xffffffffffffe000);\n    if (__s != (void *)0xffffffff) {\n      uVar5 = 2;\n      *(int *)(param_1 + 100) = *(int *)(param_1 + 100) + uVar7;\n      goto LAB_000681de;\n    }\n    __s = malloc(uVar7);\n    pvVar9 = __s;\n    if (__s == (void *)0x0) goto LAB_00068311;\n  }\n  else {\n    __s = malloc(param_5 + uVar7);\n    if (__s == (void *)0x0) {\nLAB_00068311:\n                    /* WARNING: Subroutine does not return */\n      FUN_00069cb0();\n    }\n    memset(__s,0,param_5);\n    pvVar9 = (void *)(param_5 + (int)__s);\n  }\n  uVar5 = 1;\n  FUN_00066a90(param_1,uVar8,param_3,uVar7,pvVar9);\nLAB_000681de:\n  puVar3 = (uint *)FUN_001e5210(0x24);\n  puVar3[2] = uVar7;\n  *puVar3 = uVar8;\n  puVar3[3] = (uint)__s;\n  puVar3[5] = param_5;\n  puVar3[7] = uVar5;\n  puVar3[1] = param_3;\n  puVar3[4] = 0;\n  *(undefined1 *)(puVar3 + 6) = param_6;\n  *(undefined1 *)(puVar3 + 8) = 1;\n  FUN_00067e20(param_1,puVar3);\n  return puVar3;\n}" type_identifier (pointer_declarator "* FUN_000680c0(int param_1,uint param_2,uint param_3,uint param_4,size_t param_5,\n                   undefined1 param_6)" * (function_declarator "FUN_000680c0(int param_1,uint param_2,uint param_3,uint param_4,size_t param_5,\n                   undefined1 param_6)" identifier (parameter_list "(int param_1,uint param_2,uint param_3,uint param_4,size_t param_5,\n                   undefined1 param_6)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "uint param_2" type_identifier identifier) , (parameter_declaration "uint param_3" type_identifier identifier) , (parameter_declaration "uint param_4" type_identifier identifier) , (parameter_declaration "size_t param_5" primitive_type identifier) , (parameter_declaration "undefined1 param_6" type_identifier identifier) )))) (compound_statement "{\n  uint uVar1;\n  int iVar2;\n  void *__s;\n  uint *puVar3;\n  int iVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  void *pvVar9;\n  \n  if (param_4 == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00069d00("../../gold/fileread.cc",0x1da,"make_view");\n  }\n  uVar5 = *(uint *)(param_1 + 0x24);\n  uVar1 = *(uint *)(param_1 + 0x28);\n  uVar6 = uVar1;\n  if (((SBORROW4(uVar1,param_3) != SBORROW4(uVar1 - param_3,(uint)(uVar5 < param_2))) !=\n       (int)((uVar1 - param_3) - (uint)(uVar5 < param_2)) < 0) ||\n     (uVar6 = uVar5 - param_2, (uVar1 - param_3) - (uint)(uVar5 < param_2) < (uint)(uVar6 < param_4)\n     )) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00069d00("../../gold/fileread.cc",0x1dd,"make_view",uVar6);\n  }\n  uVar8 = param_2 & 0xffffe000;\n  uVar7 = param_4 + (param_2 - uVar8) + 0x1fff;\n  uVar6 = uVar7 & 0xffffe000;\n  iVar4 = param_3 + CARRY4(uVar6,uVar8);\n  uVar6 = (uint)(uVar6 + uVar8 < uVar5);\n  iVar2 = iVar4 - uVar1;\n  if ((SBORROW4(iVar4,uVar1) != SBORROW4(iVar2,uVar6)) == (int)(iVar2 - uVar6) < 0) {\n    uVar7 = uVar5 - uVar8;\n    if (uVar7 < param_4) {\n                    /* WARNING: Subroutine does not return */\n      FUN_00069d00("../../gold/fileread.cc",0x1e6,"make_view",param_3);\n    }\n  }\n  else {\n    uVar7 = uVar7 & 0xffffe000;\n  }\n  if (param_5 == 0) {\n    FUN_00066930(param_1);\n    __s = mmap64((void *)0x0,uVar7,1,2,*(int *)(param_1 + 0x18),\n                 CONCAT44(param_3,param_2) & 0xffffffffffffe000);\n    if (__s != (void *)0xffffffff) {\n      uVar5 = 2;\n      *(int *)(param_1 + 100) = *(int *)(param_1 + 100) + uVar7;\n      goto LAB_000681de;\n    }\n    __s = malloc(uVar7);\n    pvVar9 = __s;\n    if (__s == (void *)0x0) goto LAB_00068311;\n  }\n  else {\n    __s = malloc(param_5 + uVar7);\n    if (__s == (void *)0x0) {\nLAB_00068311:\n                    /* WARNING: Subroutine does not return */\n      FUN_00069cb0();\n    }\n    memset(__s,0,param_5);\n    pvVar9 = (void *)(param_5 + (int)__s);\n  }\n  uVar5 = 1;\n  FUN_00066a90(param_1,uVar8,param_3,uVar7,pvVar9);\nLAB_000681de:\n  puVar3 = (uint *)FUN_001e5210(0x24);\n  puVar3[2] = uVar7;\n  *puVar3 = uVar8;\n  puVar3[3] = (uint)__s;\n  puVar3[5] = param_5;\n  puVar3[7] = uVar5;\n  puVar3[1] = param_3;\n  puVar3[4] = 0;\n  *(undefined1 *)(puVar3 + 6) = param_6;\n  *(undefined1 *)(puVar3 + 8) = 1;\n  FUN_00067e20(param_1,puVar3);\n  return puVar3;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "void *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "uint *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "void *pvVar9;" primitive_type (pointer_declarator "*pvVar9" * identifier) ;) (if_statement "if (param_4 == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00069d00("../../gold/fileread.cc",0x1da,"make_view");\n  }" if (parenthesized_expression "(param_4 == 0)" ( (binary_expression "param_4 == 0" identifier == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_00069d00("../../gold/fileread.cc",0x1da,"make_view");\n  }" { comment (expression_statement "FUN_00069d00("../../gold/fileread.cc",0x1da,"make_view");" (call_expression "FUN_00069d00("../../gold/fileread.cc",0x1da,"make_view")" identifier (argument_list "("../../gold/fileread.cc",0x1da,"make_view")" ( (string_literal ""../../gold/fileread.cc"" " string_content ") , number_literal , (string_literal ""make_view"" " string_content ") ))) ;) })) (expression_statement "uVar5 = *(uint *)(param_1 + 0x24);" (assignment_expression "uVar5 = *(uint *)(param_1 + 0x24)" identifier = (pointer_expression "*(uint *)(param_1 + 0x24)" * (cast_expression "(uint *)(param_1 + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x24)" ( (binary_expression "param_1 + 0x24" identifier + number_literal) ))))) ;) (expression_statement "uVar1 = *(uint *)(param_1 + 0x28);" (assignment_expression "uVar1 = *(uint *)(param_1 + 0x28)" identifier = (pointer_expression "*(uint *)(param_1 + 0x28)" * (cast_expression "(uint *)(param_1 + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "uVar6 = uVar1;" (assignment_expression "uVar6 = uVar1" identifier = identifier) ;) (if_statement "if (((SBORROW4(uVar1,param_3) != SBORROW4(uVar1 - param_3,(uint)(uVar5 < param_2))) !=\n       (int)((uVar1 - param_3) - (uint)(uVar5 < param_2)) < 0) ||\n     (uVar6 = uVar5 - param_2, (uVar1 - param_3) - (uint)(uVar5 < param_2) < (uint)(uVar6 < param_4)\n     )) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00069d00("../../gold/fileread.cc",0x1dd,"make_view",uVar6);\n  }" if (parenthesized_expression "(((SBORROW4(uVar1,param_3) != SBORROW4(uVar1 - param_3,(uint)(uVar5 < param_2))) !=\n       (int)((uVar1 - param_3) - (uint)(uVar5 < param_2)) < 0) ||\n     (uVar6 = uVar5 - param_2, (uVar1 - param_3) - (uint)(uVar5 < param_2) < (uint)(uVar6 < param_4)\n     ))" ( (binary_expression "((SBORROW4(uVar1,param_3) != SBORROW4(uVar1 - param_3,(uint)(uVar5 < param_2))) !=\n       (int)((uVar1 - param_3) - (uint)(uVar5 < param_2)) < 0) ||\n     (uVar6 = uVar5 - param_2, (uVar1 - param_3) - (uint)(uVar5 < param_2) < (uint)(uVar6 < param_4)\n     )" (parenthesized_expression "((SBORROW4(uVar1,param_3) != SBORROW4(uVar1 - param_3,(uint)(uVar5 < param_2))) !=\n       (int)((uVar1 - param_3) - (uint)(uVar5 < param_2)) < 0)" ( (binary_expression "(SBORROW4(uVar1,param_3) != SBORROW4(uVar1 - param_3,(uint)(uVar5 < param_2))) !=\n       (int)((uVar1 - param_3) - (uint)(uVar5 < param_2)) < 0" (parenthesized_expression "(SBORROW4(uVar1,param_3) != SBORROW4(uVar1 - param_3,(uint)(uVar5 < param_2)))" ( (binary_expression "SBORROW4(uVar1,param_3) != SBORROW4(uVar1 - param_3,(uint)(uVar5 < param_2))" (call_expression "SBORROW4(uVar1,param_3)" identifier (argument_list "(uVar1,param_3)" ( identifier , identifier ))) != (call_expression "SBORROW4(uVar1 - param_3,(uint)(uVar5 < param_2))" identifier (argument_list "(uVar1 - param_3,(uint)(uVar5 < param_2))" ( (binary_expression "uVar1 - param_3" identifier - identifier) , (call_expression "(uint)(uVar5 < param_2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar5 < param_2)" ( (binary_expression "uVar5 < param_2" identifier < identifier) ))) )))) )) != (binary_expression "(int)((uVar1 - param_3) - (uint)(uVar5 < param_2)) < 0" (cast_expression "(int)((uVar1 - param_3) - (uint)(uVar5 < param_2))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((uVar1 - param_3) - (uint)(uVar5 < param_2))" ( (binary_expression "(uVar1 - param_3) - (uint)(uVar5 < param_2)" (parenthesized_expression "(uVar1 - param_3)" ( (binary_expression "uVar1 - param_3" identifier - identifier) )) - (call_expression "(uint)(uVar5 < param_2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar5 < param_2)" ( (binary_expression "uVar5 < param_2" identifier < identifier) )))) ))) < number_literal)) )) || (parenthesized_expression "(uVar6 = uVar5 - param_2, (uVar1 - param_3) - (uint)(uVar5 < param_2) < (uint)(uVar6 < param_4)\n     )" ( (comma_expression "uVar6 = uVar5 - param_2, (uVar1 - param_3) - (uint)(uVar5 < param_2) < (uint)(uVar6 < param_4)" (assignment_expression "uVar6 = uVar5 - param_2" identifier = (binary_expression "uVar5 - param_2" identifier - identifier)) , (binary_expression "(uVar1 - param_3) - (uint)(uVar5 < param_2) < (uint)(uVar6 < param_4)" (binary_expression "(uVar1 - param_3) - (uint)(uVar5 < param_2)" (parenthesized_expression "(uVar1 - param_3)" ( (binary_expression "uVar1 - param_3" identifier - identifier) )) - (call_expression "(uint)(uVar5 < param_2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar5 < param_2)" ( (binary_expression "uVar5 < param_2" identifier < identifier) )))) < (call_expression "(uint)(uVar6 < param_4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar6 < param_4)" ( (binary_expression "uVar6 < param_4" identifier < identifier) ))))) ))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_00069d00("../../gold/fileread.cc",0x1dd,"make_view",uVar6);\n  }" { comment (expression_statement "FUN_00069d00("../../gold/fileread.cc",0x1dd,"make_view",uVar6);" (call_expression "FUN_00069d00("../../gold/fileread.cc",0x1dd,"make_view",uVar6)" identifier (argument_list "("../../gold/fileread.cc",0x1dd,"make_view",uVar6)" ( (string_literal ""../../gold/fileread.cc"" " string_content ") , number_literal , (string_literal ""make_view"" " string_content ") , identifier ))) ;) })) (expression_statement "uVar8 = param_2 & 0xffffe000;" (assignment_expression "uVar8 = param_2 & 0xffffe000" identifier = (binary_expression "param_2 & 0xffffe000" identifier & number_literal)) ;) (expression_statement "uVar7 = param_4 + (param_2 - uVar8) + 0x1fff;" (assignment_expression "uVar7 = param_4 + (param_2 - uVar8) + 0x1fff" identifier = (binary_expression "param_4 + (param_2 - uVar8) + 0x1fff" (binary_expression "param_4 + (param_2 - uVar8)" identifier + (parenthesized_expression "(param_2 - uVar8)" ( (binary_expression "param_2 - uVar8" identifier - identifier) ))) + number_literal)) ;) (expression_statement "uVar6 = uVar7 & 0xffffe000;" (assignment_expression "uVar6 = uVar7 & 0xffffe000" identifier = (binary_expression "uVar7 & 0xffffe000" identifier & number_literal)) ;) (expression_statement "iVar4 = param_3 + CARRY4(uVar6,uVar8);" (assignment_expression "iVar4 = param_3 + CARRY4(uVar6,uVar8)" identifier = (binary_expression "param_3 + CARRY4(uVar6,uVar8)" identifier + (call_expression "CARRY4(uVar6,uVar8)" identifier (argument_list "(uVar6,uVar8)" ( identifier , identifier ))))) ;) (expression_statement "uVar6 = (uint)(uVar6 + uVar8 < uVar5);" (assignment_expression "uVar6 = (uint)(uVar6 + uVar8 < uVar5)" identifier = (call_expression "(uint)(uVar6 + uVar8 < uVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar6 + uVar8 < uVar5)" ( (binary_expression "uVar6 + uVar8 < uVar5" (binary_expression "uVar6 + uVar8" identifier + identifier) < identifier) )))) ;) (expression_statement "iVar2 = iVar4 - uVar1;" (assignment_expression "iVar2 = iVar4 - uVar1" identifier = (binary_expression "iVar4 - uVar1" identifier - identifier)) ;) (if_statement "if ((SBORROW4(iVar4,uVar1) != SBORROW4(iVar2,uVar6)) == (int)(iVar2 - uVar6) < 0) {\n    uVar7 = uVar5 - uVar8;\n    if (uVar7 < param_4) {\n                    /* WARNING: Subroutine does not return */\n      FUN_00069d00("../../gold/fileread.cc",0x1e6,"make_view",param_3);\n    }\n  }\n  else {\n    uVar7 = uVar7 & 0xffffe000;\n  }" if (parenthesized_expression "((SBORROW4(iVar4,uVar1) != SBORROW4(iVar2,uVar6)) == (int)(iVar2 - uVar6) < 0)" ( (binary_expression "(SBORROW4(iVar4,uVar1) != SBORROW4(iVar2,uVar6)) == (int)(iVar2 - uVar6) < 0" (parenthesized_expression "(SBORROW4(iVar4,uVar1) != SBORROW4(iVar2,uVar6))" ( (binary_expression "SBORROW4(iVar4,uVar1) != SBORROW4(iVar2,uVar6)" (call_expression "SBORROW4(iVar4,uVar1)" identifier (argument_list "(iVar4,uVar1)" ( identifier , identifier ))) != (call_expression "SBORROW4(iVar2,uVar6)" identifier (argument_list "(iVar2,uVar6)" ( identifier , identifier )))) )) == (binary_expression "(int)(iVar2 - uVar6) < 0" (cast_expression "(int)(iVar2 - uVar6)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar2 - uVar6)" ( (binary_expression "iVar2 - uVar6" identifier - identifier) ))) < number_literal)) )) (compound_statement "{\n    uVar7 = uVar5 - uVar8;\n    if (uVar7 < param_4) {\n                    /* WARNING: Subroutine does not return */\n      FUN_00069d00("../../gold/fileread.cc",0x1e6,"make_view",param_3);\n    }\n  }" { (expression_statement "uVar7 = uVar5 - uVar8;" (assignment_expression "uVar7 = uVar5 - uVar8" identifier = (binary_expression "uVar5 - uVar8" identifier - identifier)) ;) (if_statement "if (uVar7 < param_4) {\n                    /* WARNING: Subroutine does not return */\n      FUN_00069d00("../../gold/fileread.cc",0x1e6,"make_view",param_3);\n    }" if (parenthesized_expression "(uVar7 < param_4)" ( (binary_expression "uVar7 < param_4" identifier < identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      FUN_00069d00("../../gold/fileread.cc",0x1e6,"make_view",param_3);\n    }" { comment (expression_statement "FUN_00069d00("../../gold/fileread.cc",0x1e6,"make_view",param_3);" (call_expression "FUN_00069d00("../../gold/fileread.cc",0x1e6,"make_view",param_3)" identifier (argument_list "("../../gold/fileread.cc",0x1e6,"make_view",param_3)" ( (string_literal ""../../gold/fileread.cc"" " string_content ") , number_literal , (string_literal ""make_view"" " string_content ") , identifier ))) ;) })) }) (else_clause "else {\n    uVar7 = uVar7 & 0xffffe000;\n  }" else (compound_statement "{\n    uVar7 = uVar7 & 0xffffe000;\n  }" { (expression_statement "uVar7 = uVar7 & 0xffffe000;" (assignment_expression "uVar7 = uVar7 & 0xffffe000" identifier = (binary_expression "uVar7 & 0xffffe000" identifier & number_literal)) ;) }))) (if_statement "if (param_5 == 0) {\n    FUN_00066930(param_1);\n    __s = mmap64((void *)0x0,uVar7,1,2,*(int *)(param_1 + 0x18),\n                 CONCAT44(param_3,param_2) & 0xffffffffffffe000);\n    if (__s != (void *)0xffffffff) {\n      uVar5 = 2;\n      *(int *)(param_1 + 100) = *(int *)(param_1 + 100) + uVar7;\n      goto LAB_000681de;\n    }\n    __s = malloc(uVar7);\n    pvVar9 = __s;\n    if (__s == (void *)0x0) goto LAB_00068311;\n  }\n  else {\n    __s = malloc(param_5 + uVar7);\n    if (__s == (void *)0x0) {\nLAB_00068311:\n                    /* WARNING: Subroutine does not return */\n      FUN_00069cb0();\n    }\n    memset(__s,0,param_5);\n    pvVar9 = (void *)(param_5 + (int)__s);\n  }" if (parenthesized_expression "(param_5 == 0)" ( (binary_expression "param_5 == 0" identifier == number_literal) )) (compound_statement "{\n    FUN_00066930(param_1);\n    __s = mmap64((void *)0x0,uVar7,1,2,*(int *)(param_1 + 0x18),\n                 CONCAT44(param_3,param_2) & 0xffffffffffffe000);\n    if (__s != (void *)0xffffffff) {\n      uVar5 = 2;\n      *(int *)(param_1 + 100) = *(int *)(param_1 + 100) + uVar7;\n      goto LAB_000681de;\n    }\n    __s = malloc(uVar7);\n    pvVar9 = __s;\n    if (__s == (void *)0x0) goto LAB_00068311;\n  }" { (expression_statement "FUN_00066930(param_1);" (call_expression "FUN_00066930(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (expression_statement "__s = mmap64((void *)0x0,uVar7,1,2,*(int *)(param_1 + 0x18),\n                 CONCAT44(param_3,param_2) & 0xffffffffffffe000);" (assignment_expression "__s = mmap64((void *)0x0,uVar7,1,2,*(int *)(param_1 + 0x18),\n                 CONCAT44(param_3,param_2) & 0xffffffffffffe000)" identifier = (call_expression "mmap64((void *)0x0,uVar7,1,2,*(int *)(param_1 + 0x18),\n                 CONCAT44(param_3,param_2) & 0xffffffffffffe000)" identifier (argument_list "((void *)0x0,uVar7,1,2,*(int *)(param_1 + 0x18),\n                 CONCAT44(param_3,param_2) & 0xffffffffffffe000)" ( (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) , identifier , number_literal , number_literal , (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) , (binary_expression "CONCAT44(param_3,param_2) & 0xffffffffffffe000" (call_expression "CONCAT44(param_3,param_2)" identifier (argument_list "(param_3,param_2)" ( identifier , identifier ))) & number_literal) )))) ;) (if_statement "if (__s != (void *)0xffffffff) {\n      uVar5 = 2;\n      *(int *)(param_1 + 100) = *(int *)(param_1 + 100) + uVar7;\n      goto LAB_000681de;\n    }" if (parenthesized_expression "(__s != (void *)0xffffffff)" ( (binary_expression "__s != (void *)0xffffffff" identifier != (cast_expression "(void *)0xffffffff" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      uVar5 = 2;\n      *(int *)(param_1 + 100) = *(int *)(param_1 + 100) + uVar7;\n      goto LAB_000681de;\n    }" { (expression_statement "uVar5 = 2;" (assignment_expression "uVar5 = 2" identifier = number_literal) ;) (expression_statement "*(int *)(param_1 + 100) = *(int *)(param_1 + 100) + uVar7;" (assignment_expression "*(int *)(param_1 + 100) = *(int *)(param_1 + 100) + uVar7" (pointer_expression "*(int *)(param_1 + 100)" * (cast_expression "(int *)(param_1 + 100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 100)" ( (binary_expression "param_1 + 100" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 100) + uVar7" (pointer_expression "*(int *)(param_1 + 100)" * (cast_expression "(int *)(param_1 + 100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 100)" ( (binary_expression "param_1 + 100" identifier + number_literal) )))) + identifier)) ;) (goto_statement "goto LAB_000681de;" goto statement_identifier ;) })) (expression_statement "__s = malloc(uVar7);" (assignment_expression "__s = malloc(uVar7)" identifier = (call_expression "malloc(uVar7)" identifier (argument_list "(uVar7)" ( identifier )))) ;) (expression_statement "pvVar9 = __s;" (assignment_expression "pvVar9 = __s" identifier = identifier) ;) (if_statement "if (__s == (void *)0x0) goto LAB_00068311;" if (parenthesized_expression "(__s == (void *)0x0)" ( (binary_expression "__s == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00068311;" goto statement_identifier ;)) }) (else_clause "else {\n    __s = malloc(param_5 + uVar7);\n    if (__s == (void *)0x0) {\nLAB_00068311:\n                    /* WARNING: Subroutine does not return */\n      FUN_00069cb0();\n    }\n    memset(__s,0,param_5);\n    pvVar9 = (void *)(param_5 + (int)__s);\n  }" else (compound_statement "{\n    __s = malloc(param_5 + uVar7);\n    if (__s == (void *)0x0) {\nLAB_00068311:\n                    /* WARNING: Subroutine does not return */\n      FUN_00069cb0();\n    }\n    memset(__s,0,param_5);\n    pvVar9 = (void *)(param_5 + (int)__s);\n  }" { (expression_statement "__s = malloc(param_5 + uVar7);" (assignment_expression "__s = malloc(param_5 + uVar7)" identifier = (call_expression "malloc(param_5 + uVar7)" identifier (argument_list "(param_5 + uVar7)" ( (binary_expression "param_5 + uVar7" identifier + identifier) )))) ;) (if_statement "if (__s == (void *)0x0) {\nLAB_00068311:\n                    /* WARNING: Subroutine does not return */\n      FUN_00069cb0();\n    }" if (parenthesized_expression "(__s == (void *)0x0)" ( (binary_expression "__s == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_00068311:\n                    /* WARNING: Subroutine does not return */\n      FUN_00069cb0();\n    }" { (labeled_statement "LAB_00068311:\n                    /* WARNING: Subroutine does not return */\n      FUN_00069cb0();" statement_identifier : comment (expression_statement "FUN_00069cb0();" (call_expression "FUN_00069cb0()" identifier (argument_list "()" ( ))) ;)) })) (expression_statement "memset(__s,0,param_5);" (call_expression "memset(__s,0,param_5)" identifier (argument_list "(__s,0,param_5)" ( identifier , number_literal , identifier ))) ;) (expression_statement "pvVar9 = (void *)(param_5 + (int)__s);" (assignment_expression "pvVar9 = (void *)(param_5 + (int)__s)" identifier = (cast_expression "(void *)(param_5 + (int)__s)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + (int)__s)" ( (binary_expression "param_5 + (int)__s" identifier + (cast_expression "(int)__s" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) }))) (expression_statement "uVar5 = 1;" (assignment_expression "uVar5 = 1" identifier = number_literal) ;) (expression_statement "FUN_00066a90(param_1,uVar8,param_3,uVar7,pvVar9);" (call_expression "FUN_00066a90(param_1,uVar8,param_3,uVar7,pvVar9)" identifier (argument_list "(param_1,uVar8,param_3,uVar7,pvVar9)" ( identifier , identifier , identifier , identifier , identifier ))) ;) (labeled_statement "LAB_000681de:\n  puVar3 = (uint *)FUN_001e5210(0x24);" statement_identifier : (expression_statement "puVar3 = (uint *)FUN_001e5210(0x24);" (assignment_expression "puVar3 = (uint *)FUN_001e5210(0x24)" identifier = (cast_expression "(uint *)FUN_001e5210(0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001e5210(0x24)" identifier (argument_list "(0x24)" ( number_literal ))))) ;)) (expression_statement "puVar3[2] = uVar7;" (assignment_expression "puVar3[2] = uVar7" (subscript_expression "puVar3[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*puVar3 = uVar8;" (assignment_expression "*puVar3 = uVar8" (pointer_expression "*puVar3" * identifier) = identifier) ;) (expression_statement "puVar3[3] = (uint)__s;" (assignment_expression "puVar3[3] = (uint)__s" (subscript_expression "puVar3[3]" identifier [ number_literal ]) = (cast_expression "(uint)__s" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "puVar3[5] = param_5;" (assignment_expression "puVar3[5] = param_5" (subscript_expression "puVar3[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar3[7] = uVar5;" (assignment_expression "puVar3[7] = uVar5" (subscript_expression "puVar3[7]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar3[1] = param_3;" (assignment_expression "puVar3[1] = param_3" (subscript_expression "puVar3[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar3[4] = 0;" (assignment_expression "puVar3[4] = 0" (subscript_expression "puVar3[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)(puVar3 + 6) = param_6;" (assignment_expression "*(undefined1 *)(puVar3 + 6) = param_6" (pointer_expression "*(undefined1 *)(puVar3 + 6)" * (cast_expression "(undefined1 *)(puVar3 + 6)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 6)" ( (binary_expression "puVar3 + 6" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 *)(puVar3 + 8) = 1;" (assignment_expression "*(undefined1 *)(puVar3 + 8) = 1" (pointer_expression "*(undefined1 *)(puVar3 + 8)" * (cast_expression "(undefined1 *)(puVar3 + 8)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 8)" ( (binary_expression "puVar3 + 8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00067e20(param_1,puVar3);" (call_expression "FUN_00067e20(param_1,puVar3)" identifier (argument_list "(param_1,puVar3)" ( identifier , identifier ))) ;) (return_statement "return puVar3;" return identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n/* DWARF original prototype: View * make_view(File_read * this, off_t start, section_size_type size,\n   uint byteshift, bool cache) */\n\nView * __thiscall\ngold::File_read::make_view\n          (File_read *this,off_t start,section_size_type size,uint byteshift,bool cache)\n\n{\n  uint uVar1;\n  int iVar2;\n  int iVar3;\n  uchar *__s;\n  View *v;\n  uint uVar4;\n  int iVar5;\n  Data_ownership DVar6;\n  uint uVar7;\n  uint uVar8;\n  uchar *p;\n  \n  if (size == 0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/fileread.cc",0x1da,"make_view");\n  }\n  uVar1 = (uint)this->size_;\n  iVar2 = *(int *)((int)&this->size_ + 4);\n  if (((SBORROW4(iVar2,start._4_4_) != SBORROW4(iVar2 - start._4_4_,(uint)(uVar1 < (uint)start))) !=\n       (int)((iVar2 - start._4_4_) - (uint)(uVar1 < (uint)start)) < 0) ||\n     ((iVar2 - start._4_4_) - (uint)(uVar1 < (uint)start) < (uint)(uVar1 - (uint)start < size))) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/fileread.cc",0x1dd,"make_view");\n  }\n  uVar8 = (uint)start & 0xffffe000;\n  uVar7 = size + ((uint)start - uVar8) + 0x1fff;\n  uVar4 = uVar7 & 0xffffe000;\n  iVar5 = start._4_4_ + (uint)CARRY4(uVar4,uVar8);\n  uVar4 = (uint)(uVar4 + uVar8 < uVar1);\n  iVar3 = iVar5 - iVar2;\n  if ((SBORROW4(iVar5,iVar2) != SBORROW4(iVar3,uVar4)) == (int)(iVar3 - uVar4) < 0) {\n    uVar7 = uVar1 - uVar8;\n    if (uVar7 < size) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/fileread.cc",0x1e6,"make_view");\n    }\n  }\n  else {\n    uVar7 = uVar7 & 0xffffe000;\n  }\n  if (byteshift == 0) {\n    reopen_descriptor(this);\n    __s = (uchar *)mmap64((void *)0x0,uVar7,1,2,this->descriptor_,start & 0xffffffffffffe000);\n    if (__s != (uchar *)0xffffffff) {\n      DVar6 = DATA_MMAPPED;\n      this->mapped_bytes_ = this->mapped_bytes_ + uVar7;\n      goto LAB_000681de;\n    }\n    __s = (uchar *)malloc(uVar7);\n    p = __s;\n    if (__s == (uchar *)0x0) goto LAB_00068311;\n  }\n  else {\n    __s = (uchar *)malloc(byteshift + uVar7);\n    if (__s == (uchar *)0x0) {\nLAB_00068311:\n                    /* WARNING: Subroutine does not return */\n      gold_nomem();\n    }\n    memset(__s,0,byteshift);\n    p = __s + byteshift;\n  }\n  DVar6 = DATA_ALLOCATED_ARRAY;\n  do_read(this,start & 0xffffffffffffe000,uVar7,p);\nLAB_000681de:\n  v = (View *)operator_new(0x24);\n  v->size_ = uVar7;\n  *(uint *)&v->start_ = uVar8;\n  v->data_ = __s;\n  v->byteshift_ = byteshift;\n  v->data_ownership_ = DVar6;\n  *(int *)((int)&v->start_ + 4) = start._4_4_;\n  v->lock_count_ = 0;\n  v->cache_ = cache;\n  v->accessed_ = true;\n  add_view(this,v);\n  return v;\n}\n\n" comment comment (ERROR "View * __thiscall\ngold::File_read::make_view\n          (File_read *this,off_t start,section_size_type size,uint byteshift,bool cache)" (binary_expression "View * __thiscall\ngold::File_read::make_view\n          (File_read *this,off_t start,section_size_type size,uint byteshift,bool cache)" identifier * (call_expression "__thiscall\ngold::File_read::make_view\n          (File_read *this,off_t start,section_size_type size,uint byteshift,bool cache)" identifier (ERROR "gold::File_read::make_view" identifier : : identifier : : identifier) (argument_list "(File_read *this,off_t start,section_size_type size,uint byteshift,bool cache)" ( (binary_expression "File_read *this" identifier * identifier) , identifier (ERROR "start" identifier) , identifier (ERROR "size" identifier) , (ERROR "uint" identifier) identifier , (ERROR "bool" identifier) identifier ))))) (compound_statement "{\n  uint uVar1;\n  int iVar2;\n  int iVar3;\n  uchar *__s;\n  View *v;\n  uint uVar4;\n  int iVar5;\n  Data_ownership DVar6;\n  uint uVar7;\n  uint uVar8;\n  uchar *p;\n  \n  if (size == 0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/fileread.cc",0x1da,"make_view");\n  }\n  uVar1 = (uint)this->size_;\n  iVar2 = *(int *)((int)&this->size_ + 4);\n  if (((SBORROW4(iVar2,start._4_4_) != SBORROW4(iVar2 - start._4_4_,(uint)(uVar1 < (uint)start))) !=\n       (int)((iVar2 - start._4_4_) - (uint)(uVar1 < (uint)start)) < 0) ||\n     ((iVar2 - start._4_4_) - (uint)(uVar1 < (uint)start) < (uint)(uVar1 - (uint)start < size))) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/fileread.cc",0x1dd,"make_view");\n  }\n  uVar8 = (uint)start & 0xffffe000;\n  uVar7 = size + ((uint)start - uVar8) + 0x1fff;\n  uVar4 = uVar7 & 0xffffe000;\n  iVar5 = start._4_4_ + (uint)CARRY4(uVar4,uVar8);\n  uVar4 = (uint)(uVar4 + uVar8 < uVar1);\n  iVar3 = iVar5 - iVar2;\n  if ((SBORROW4(iVar5,iVar2) != SBORROW4(iVar3,uVar4)) == (int)(iVar3 - uVar4) < 0) {\n    uVar7 = uVar1 - uVar8;\n    if (uVar7 < size) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/fileread.cc",0x1e6,"make_view");\n    }\n  }\n  else {\n    uVar7 = uVar7 & 0xffffe000;\n  }\n  if (byteshift == 0) {\n    reopen_descriptor(this);\n    __s = (uchar *)mmap64((void *)0x0,uVar7,1,2,this->descriptor_,start & 0xffffffffffffe000);\n    if (__s != (uchar *)0xffffffff) {\n      DVar6 = DATA_MMAPPED;\n      this->mapped_bytes_ = this->mapped_bytes_ + uVar7;\n      goto LAB_000681de;\n    }\n    __s = (uchar *)malloc(uVar7);\n    p = __s;\n    if (__s == (uchar *)0x0) goto LAB_00068311;\n  }\n  else {\n    __s = (uchar *)malloc(byteshift + uVar7);\n    if (__s == (uchar *)0x0) {\nLAB_00068311:\n                    /* WARNING: Subroutine does not return */\n      gold_nomem();\n    }\n    memset(__s,0,byteshift);\n    p = __s + byteshift;\n  }\n  DVar6 = DATA_ALLOCATED_ARRAY;\n  do_read(this,start & 0xffffffffffffe000,uVar7,p);\nLAB_000681de:\n  v = (View *)operator_new(0x24);\n  v->size_ = uVar7;\n  *(uint *)&v->start_ = uVar8;\n  v->data_ = __s;\n  v->byteshift_ = byteshift;\n  v->data_ownership_ = DVar6;\n  *(int *)((int)&v->start_ + 4) = start._4_4_;\n  v->lock_count_ = 0;\n  v->cache_ = cache;\n  v->accessed_ = true;\n  add_view(this,v);\n  return v;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uchar *__s;" type_identifier (pointer_declarator "*__s" * identifier) ;) (declaration "View *v;" type_identifier (pointer_declarator "*v" * identifier) ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "Data_ownership DVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "uchar *p;" type_identifier (pointer_declarator "*p" * identifier) ;) (if_statement "if (size == 0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/fileread.cc",0x1da,"make_view");\n  }" if (parenthesized_expression "(size == 0)" ( (binary_expression "size == 0" identifier == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/fileread.cc",0x1da,"make_view");\n  }" { comment (expression_statement "do_gold_unreachable("../../gold/fileread.cc",0x1da,"make_view");" (call_expression "do_gold_unreachable("../../gold/fileread.cc",0x1da,"make_view")" identifier (argument_list "("../../gold/fileread.cc",0x1da,"make_view")" ( (string_literal ""../../gold/fileread.cc"" " string_content ") , number_literal , (string_literal ""make_view"" " string_content ") ))) ;) })) (expression_statement "uVar1 = (uint)this->size_;" (assignment_expression "uVar1 = (uint)this->size_" identifier = (cast_expression "(uint)this->size_" ( (type_descriptor "uint" type_identifier) ) (field_expression "this->size_" identifier -> field_identifier))) ;) (expression_statement "iVar2 = *(int *)((int)&this->size_ + 4);" (assignment_expression "iVar2 = *(int *)((int)&this->size_ + 4)" identifier = (pointer_expression "*(int *)((int)&this->size_ + 4)" * (cast_expression "(int *)((int)&this->size_ + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&this->size_ + 4)" ( (binary_expression "(int)&this->size_ + 4" (cast_expression "(int)&this->size_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&this->size_" & (field_expression "this->size_" identifier -> field_identifier))) + number_literal) ))))) ;) (if_statement "if (((SBORROW4(iVar2,start._4_4_) != SBORROW4(iVar2 - start._4_4_,(uint)(uVar1 < (uint)start))) !=\n       (int)((iVar2 - start._4_4_) - (uint)(uVar1 < (uint)start)) < 0) ||\n     ((iVar2 - start._4_4_) - (uint)(uVar1 < (uint)start) < (uint)(uVar1 - (uint)start < size))) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/fileread.cc",0x1dd,"make_view");\n  }" if (parenthesized_expression "(((SBORROW4(iVar2,start._4_4_) != SBORROW4(iVar2 - start._4_4_,(uint)(uVar1 < (uint)start))) !=\n       (int)((iVar2 - start._4_4_) - (uint)(uVar1 < (uint)start)) < 0) ||\n     ((iVar2 - start._4_4_) - (uint)(uVar1 < (uint)start) < (uint)(uVar1 - (uint)start < size)))" ( (binary_expression "((SBORROW4(iVar2,start._4_4_) != SBORROW4(iVar2 - start._4_4_,(uint)(uVar1 < (uint)start))) !=\n       (int)((iVar2 - start._4_4_) - (uint)(uVar1 < (uint)start)) < 0) ||\n     ((iVar2 - start._4_4_) - (uint)(uVar1 < (uint)start) < (uint)(uVar1 - (uint)start < size))" (parenthesized_expression "((SBORROW4(iVar2,start._4_4_) != SBORROW4(iVar2 - start._4_4_,(uint)(uVar1 < (uint)start))) !=\n       (int)((iVar2 - start._4_4_) - (uint)(uVar1 < (uint)start)) < 0)" ( (binary_expression "(SBORROW4(iVar2,start._4_4_) != SBORROW4(iVar2 - start._4_4_,(uint)(uVar1 < (uint)start))) !=\n       (int)((iVar2 - start._4_4_) - (uint)(uVar1 < (uint)start)) < 0" (parenthesized_expression "(SBORROW4(iVar2,start._4_4_) != SBORROW4(iVar2 - start._4_4_,(uint)(uVar1 < (uint)start)))" ( (binary_expression "SBORROW4(iVar2,start._4_4_) != SBORROW4(iVar2 - start._4_4_,(uint)(uVar1 < (uint)start))" (call_expression "SBORROW4(iVar2,start._4_4_)" identifier (argument_list "(iVar2,start._4_4_)" ( identifier , (field_expression "start._4_4_" identifier . field_identifier) ))) != (call_expression "SBORROW4(iVar2 - start._4_4_,(uint)(uVar1 < (uint)start))" identifier (argument_list "(iVar2 - start._4_4_,(uint)(uVar1 < (uint)start))" ( (binary_expression "iVar2 - start._4_4_" identifier - (field_expression "start._4_4_" identifier . field_identifier)) , (call_expression "(uint)(uVar1 < (uint)start)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar1 < (uint)start)" ( (binary_expression "uVar1 < (uint)start" identifier < (cast_expression "(uint)start" ( (type_descriptor "uint" type_identifier) ) identifier)) ))) )))) )) != (binary_expression "(int)((iVar2 - start._4_4_) - (uint)(uVar1 < (uint)start)) < 0" (cast_expression "(int)((iVar2 - start._4_4_) - (uint)(uVar1 < (uint)start))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((iVar2 - start._4_4_) - (uint)(uVar1 < (uint)start))" ( (binary_expression "(iVar2 - start._4_4_) - (uint)(uVar1 < (uint)start)" (parenthesized_expression "(iVar2 - start._4_4_)" ( (binary_expression "iVar2 - start._4_4_" identifier - (field_expression "start._4_4_" identifier . field_identifier)) )) - (call_expression "(uint)(uVar1 < (uint)start)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar1 < (uint)start)" ( (binary_expression "uVar1 < (uint)start" identifier < (cast_expression "(uint)start" ( (type_descriptor "uint" type_identifier) ) identifier)) )))) ))) < number_literal)) )) || (parenthesized_expression "((iVar2 - start._4_4_) - (uint)(uVar1 < (uint)start) < (uint)(uVar1 - (uint)start < size))" ( (binary_expression "(iVar2 - start._4_4_) - (uint)(uVar1 < (uint)start) < (uint)(uVar1 - (uint)start < size)" (binary_expression "(iVar2 - start._4_4_) - (uint)(uVar1 < (uint)start)" (parenthesized_expression "(iVar2 - start._4_4_)" ( (binary_expression "iVar2 - start._4_4_" identifier - (field_expression "start._4_4_" identifier . field_identifier)) )) - (call_expression "(uint)(uVar1 < (uint)start)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar1 < (uint)start)" ( (binary_expression "uVar1 < (uint)start" identifier < (cast_expression "(uint)start" ( (type_descriptor "uint" type_identifier) ) identifier)) )))) < (call_expression "(uint)(uVar1 - (uint)start < size)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar1 - (uint)start < size)" ( (binary_expression "uVar1 - (uint)start < size" (binary_expression "uVar1 - (uint)start" identifier - (cast_expression "(uint)start" ( (type_descriptor "uint" type_identifier) ) identifier)) < identifier) )))) ))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/fileread.cc",0x1dd,"make_view");\n  }" { comment (expression_statement "do_gold_unreachable("../../gold/fileread.cc",0x1dd,"make_view");" (call_expression "do_gold_unreachable("../../gold/fileread.cc",0x1dd,"make_view")" identifier (argument_list "("../../gold/fileread.cc",0x1dd,"make_view")" ( (string_literal ""../../gold/fileread.cc"" " string_content ") , number_literal , (string_literal ""make_view"" " string_content ") ))) ;) })) (expression_statement "uVar8 = (uint)start & 0xffffe000;" (assignment_expression "uVar8 = (uint)start & 0xffffe000" identifier = (binary_expression "(uint)start & 0xffffe000" (cast_expression "(uint)start" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "uVar7 = size + ((uint)start - uVar8) + 0x1fff;" (assignment_expression "uVar7 = size + ((uint)start - uVar8) + 0x1fff" identifier = (binary_expression "size + ((uint)start - uVar8) + 0x1fff" (binary_expression "size + ((uint)start - uVar8)" identifier + (parenthesized_expression "((uint)start - uVar8)" ( (binary_expression "(uint)start - uVar8" (cast_expression "(uint)start" ( (type_descriptor "uint" type_identifier) ) identifier) - identifier) ))) + number_literal)) ;) (expression_statement "uVar4 = uVar7 & 0xffffe000;" (assignment_expression "uVar4 = uVar7 & 0xffffe000" identifier = (binary_expression "uVar7 & 0xffffe000" identifier & number_literal)) ;) (expression_statement "iVar5 = start._4_4_ + (uint)CARRY4(uVar4,uVar8);" (assignment_expression "iVar5 = start._4_4_ + (uint)CARRY4(uVar4,uVar8)" identifier = (binary_expression "start._4_4_ + (uint)CARRY4(uVar4,uVar8)" (field_expression "start._4_4_" identifier . field_identifier) + (cast_expression "(uint)CARRY4(uVar4,uVar8)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar4,uVar8)" identifier (argument_list "(uVar4,uVar8)" ( identifier , identifier )))))) ;) (expression_statement "uVar4 = (uint)(uVar4 + uVar8 < uVar1);" (assignment_expression "uVar4 = (uint)(uVar4 + uVar8 < uVar1)" identifier = (call_expression "(uint)(uVar4 + uVar8 < uVar1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar4 + uVar8 < uVar1)" ( (binary_expression "uVar4 + uVar8 < uVar1" (binary_expression "uVar4 + uVar8" identifier + identifier) < identifier) )))) ;) (expression_statement "iVar3 = iVar5 - iVar2;" (assignment_expression "iVar3 = iVar5 - iVar2" identifier = (binary_expression "iVar5 - iVar2" identifier - identifier)) ;) (if_statement "if ((SBORROW4(iVar5,iVar2) != SBORROW4(iVar3,uVar4)) == (int)(iVar3 - uVar4) < 0) {\n    uVar7 = uVar1 - uVar8;\n    if (uVar7 < size) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/fileread.cc",0x1e6,"make_view");\n    }\n  }\n  else {\n    uVar7 = uVar7 & 0xffffe000;\n  }" if (parenthesized_expression "((SBORROW4(iVar5,iVar2) != SBORROW4(iVar3,uVar4)) == (int)(iVar3 - uVar4) < 0)" ( (binary_expression "(SBORROW4(iVar5,iVar2) != SBORROW4(iVar3,uVar4)) == (int)(iVar3 - uVar4) < 0" (parenthesized_expression "(SBORROW4(iVar5,iVar2) != SBORROW4(iVar3,uVar4))" ( (binary_expression "SBORROW4(iVar5,iVar2) != SBORROW4(iVar3,uVar4)" (call_expression "SBORROW4(iVar5,iVar2)" identifier (argument_list "(iVar5,iVar2)" ( identifier , identifier ))) != (call_expression "SBORROW4(iVar3,uVar4)" identifier (argument_list "(iVar3,uVar4)" ( identifier , identifier )))) )) == (binary_expression "(int)(iVar3 - uVar4) < 0" (cast_expression "(int)(iVar3 - uVar4)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar3 - uVar4)" ( (binary_expression "iVar3 - uVar4" identifier - identifier) ))) < number_literal)) )) (compound_statement "{\n    uVar7 = uVar1 - uVar8;\n    if (uVar7 < size) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/fileread.cc",0x1e6,"make_view");\n    }\n  }" { (expression_statement "uVar7 = uVar1 - uVar8;" (assignment_expression "uVar7 = uVar1 - uVar8" identifier = (binary_expression "uVar1 - uVar8" identifier - identifier)) ;) (if_statement "if (uVar7 < size) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/fileread.cc",0x1e6,"make_view");\n    }" if (parenthesized_expression "(uVar7 < size)" ( (binary_expression "uVar7 < size" identifier < identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/fileread.cc",0x1e6,"make_view");\n    }" { comment (expression_statement "do_gold_unreachable("../../gold/fileread.cc",0x1e6,"make_view");" (call_expression "do_gold_unreachable("../../gold/fileread.cc",0x1e6,"make_view")" identifier (argument_list "("../../gold/fileread.cc",0x1e6,"make_view")" ( (string_literal ""../../gold/fileread.cc"" " string_content ") , number_literal , (string_literal ""make_view"" " string_content ") ))) ;) })) }) (else_clause "else {\n    uVar7 = uVar7 & 0xffffe000;\n  }" else (compound_statement "{\n    uVar7 = uVar7 & 0xffffe000;\n  }" { (expression_statement "uVar7 = uVar7 & 0xffffe000;" (assignment_expression "uVar7 = uVar7 & 0xffffe000" identifier = (binary_expression "uVar7 & 0xffffe000" identifier & number_literal)) ;) }))) (if_statement "if (byteshift == 0) {\n    reopen_descriptor(this);\n    __s = (uchar *)mmap64((void *)0x0,uVar7,1,2,this->descriptor_,start & 0xffffffffffffe000);\n    if (__s != (uchar *)0xffffffff) {\n      DVar6 = DATA_MMAPPED;\n      this->mapped_bytes_ = this->mapped_bytes_ + uVar7;\n      goto LAB_000681de;\n    }\n    __s = (uchar *)malloc(uVar7);\n    p = __s;\n    if (__s == (uchar *)0x0) goto LAB_00068311;\n  }\n  else {\n    __s = (uchar *)malloc(byteshift + uVar7);\n    if (__s == (uchar *)0x0) {\nLAB_00068311:\n                    /* WARNING: Subroutine does not return */\n      gold_nomem();\n    }\n    memset(__s,0,byteshift);\n    p = __s + byteshift;\n  }" if (parenthesized_expression "(byteshift == 0)" ( (binary_expression "byteshift == 0" identifier == number_literal) )) (compound_statement "{\n    reopen_descriptor(this);\n    __s = (uchar *)mmap64((void *)0x0,uVar7,1,2,this->descriptor_,start & 0xffffffffffffe000);\n    if (__s != (uchar *)0xffffffff) {\n      DVar6 = DATA_MMAPPED;\n      this->mapped_bytes_ = this->mapped_bytes_ + uVar7;\n      goto LAB_000681de;\n    }\n    __s = (uchar *)malloc(uVar7);\n    p = __s;\n    if (__s == (uchar *)0x0) goto LAB_00068311;\n  }" { (expression_statement "reopen_descriptor(this);" (call_expression "reopen_descriptor(this)" identifier (argument_list "(this)" ( identifier ))) ;) (expression_statement "__s = (uchar *)mmap64((void *)0x0,uVar7,1,2,this->descriptor_,start & 0xffffffffffffe000);" (assignment_expression "__s = (uchar *)mmap64((void *)0x0,uVar7,1,2,this->descriptor_,start & 0xffffffffffffe000)" identifier = (cast_expression "(uchar *)mmap64((void *)0x0,uVar7,1,2,this->descriptor_,start & 0xffffffffffffe000)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "mmap64((void *)0x0,uVar7,1,2,this->descriptor_,start & 0xffffffffffffe000)" identifier (argument_list "((void *)0x0,uVar7,1,2,this->descriptor_,start & 0xffffffffffffe000)" ( (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) , identifier , number_literal , number_literal , (field_expression "this->descriptor_" identifier -> field_identifier) , (binary_expression "start & 0xffffffffffffe000" identifier & number_literal) ))))) ;) (if_statement "if (__s != (uchar *)0xffffffff) {\n      DVar6 = DATA_MMAPPED;\n      this->mapped_bytes_ = this->mapped_bytes_ + uVar7;\n      goto LAB_000681de;\n    }" if (parenthesized_expression "(__s != (uchar *)0xffffffff)" ( (binary_expression "__s != (uchar *)0xffffffff" identifier != (cast_expression "(uchar *)0xffffffff" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      DVar6 = DATA_MMAPPED;\n      this->mapped_bytes_ = this->mapped_bytes_ + uVar7;\n      goto LAB_000681de;\n    }" { (expression_statement "DVar6 = DATA_MMAPPED;" (assignment_expression "DVar6 = DATA_MMAPPED" identifier = identifier) ;) (expression_statement "this->mapped_bytes_ = this->mapped_bytes_ + uVar7;" (assignment_expression "this->mapped_bytes_ = this->mapped_bytes_ + uVar7" (field_expression "this->mapped_bytes_" identifier -> field_identifier) = (binary_expression "this->mapped_bytes_ + uVar7" (field_expression "this->mapped_bytes_" identifier -> field_identifier) + identifier)) ;) (goto_statement "goto LAB_000681de;" goto statement_identifier ;) })) (expression_statement "__s = (uchar *)malloc(uVar7);" (assignment_expression "__s = (uchar *)malloc(uVar7)" identifier = (cast_expression "(uchar *)malloc(uVar7)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "malloc(uVar7)" identifier (argument_list "(uVar7)" ( identifier ))))) ;) (expression_statement "p = __s;" (assignment_expression "p = __s" identifier = identifier) ;) (if_statement "if (__s == (uchar *)0x0) goto LAB_00068311;" if (parenthesized_expression "(__s == (uchar *)0x0)" ( (binary_expression "__s == (uchar *)0x0" identifier == (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00068311;" goto statement_identifier ;)) }) (else_clause "else {\n    __s = (uchar *)malloc(byteshift + uVar7);\n    if (__s == (uchar *)0x0) {\nLAB_00068311:\n                    /* WARNING: Subroutine does not return */\n      gold_nomem();\n    }\n    memset(__s,0,byteshift);\n    p = __s + byteshift;\n  }" else (compound_statement "{\n    __s = (uchar *)malloc(byteshift + uVar7);\n    if (__s == (uchar *)0x0) {\nLAB_00068311:\n                    /* WARNING: Subroutine does not return */\n      gold_nomem();\n    }\n    memset(__s,0,byteshift);\n    p = __s + byteshift;\n  }" { (expression_statement "__s = (uchar *)malloc(byteshift + uVar7);" (assignment_expression "__s = (uchar *)malloc(byteshift + uVar7)" identifier = (cast_expression "(uchar *)malloc(byteshift + uVar7)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "malloc(byteshift + uVar7)" identifier (argument_list "(byteshift + uVar7)" ( (binary_expression "byteshift + uVar7" identifier + identifier) ))))) ;) (if_statement "if (__s == (uchar *)0x0) {\nLAB_00068311:\n                    /* WARNING: Subroutine does not return */\n      gold_nomem();\n    }" if (parenthesized_expression "(__s == (uchar *)0x0)" ( (binary_expression "__s == (uchar *)0x0" identifier == (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_00068311:\n                    /* WARNING: Subroutine does not return */\n      gold_nomem();\n    }" { (labeled_statement "LAB_00068311:\n                    /* WARNING: Subroutine does not return */\n      gold_nomem();" statement_identifier : comment (expression_statement "gold_nomem();" (call_expression "gold_nomem()" identifier (argument_list "()" ( ))) ;)) })) (expression_statement "memset(__s,0,byteshift);" (call_expression "memset(__s,0,byteshift)" identifier (argument_list "(__s,0,byteshift)" ( identifier , number_literal , identifier ))) ;) (expression_statement "p = __s + byteshift;" (assignment_expression "p = __s + byteshift" identifier = (binary_expression "__s + byteshift" identifier + identifier)) ;) }))) (expression_statement "DVar6 = DATA_ALLOCATED_ARRAY;" (assignment_expression "DVar6 = DATA_ALLOCATED_ARRAY" identifier = identifier) ;) (expression_statement "do_read(this,start & 0xffffffffffffe000,uVar7,p);" (call_expression "do_read(this,start & 0xffffffffffffe000,uVar7,p)" identifier (argument_list "(this,start & 0xffffffffffffe000,uVar7,p)" ( identifier , (binary_expression "start & 0xffffffffffffe000" identifier & number_literal) , identifier , identifier ))) ;) (labeled_statement "LAB_000681de:\n  v = (View *)operator_new(0x24);" statement_identifier : (expression_statement "v = (View *)operator_new(0x24);" (assignment_expression "v = (View *)operator_new(0x24)" identifier = (cast_expression "(View *)operator_new(0x24)" ( (type_descriptor "View *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0x24)" identifier (argument_list "(0x24)" ( number_literal ))))) ;)) (expression_statement "v->size_ = uVar7;" (assignment_expression "v->size_ = uVar7" (field_expression "v->size_" identifier -> field_identifier) = identifier) ;) (expression_statement "*(uint *)&v->start_ = uVar8;" (assignment_expression "*(uint *)&v->start_ = uVar8" (pointer_expression "*(uint *)&v->start_" * (cast_expression "(uint *)&v->start_" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&v->start_" & (field_expression "v->start_" identifier -> field_identifier)))) = identifier) ;) (expression_statement "v->data_ = __s;" (assignment_expression "v->data_ = __s" (field_expression "v->data_" identifier -> field_identifier) = identifier) ;) (expression_statement "v->byteshift_ = byteshift;" (assignment_expression "v->byteshift_ = byteshift" (field_expression "v->byteshift_" identifier -> field_identifier) = identifier) ;) (expression_statement "v->data_ownership_ = DVar6;" (assignment_expression "v->data_ownership_ = DVar6" (field_expression "v->data_ownership_" identifier -> field_identifier) = identifier) ;) (expression_statement "*(int *)((int)&v->start_ + 4) = start._4_4_;" (assignment_expression "*(int *)((int)&v->start_ + 4) = start._4_4_" (pointer_expression "*(int *)((int)&v->start_ + 4)" * (cast_expression "(int *)((int)&v->start_ + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&v->start_ + 4)" ( (binary_expression "(int)&v->start_ + 4" (cast_expression "(int)&v->start_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&v->start_" & (field_expression "v->start_" identifier -> field_identifier))) + number_literal) )))) = (field_expression "start._4_4_" identifier . field_identifier)) ;) (expression_statement "v->lock_count_ = 0;" (assignment_expression "v->lock_count_ = 0" (field_expression "v->lock_count_" identifier -> field_identifier) = number_literal) ;) (expression_statement "v->cache_ = cache;" (assignment_expression "v->cache_ = cache" (field_expression "v->cache_" identifier -> field_identifier) = identifier) ;) (expression_statement "v->accessed_ = true;" (assignment_expression "v->accessed_ = true" (field_expression "v->accessed_" identifier -> field_identifier) = true) ;) (expression_statement "add_view(this,v);" (call_expression "add_view(this,v)" identifier (argument_list "(this,v)" ( identifier , identifier ))) ;) (return_statement "return v;" return identifier ;) }))
(translation_unit "uint * FUN_000680c0(int param_1,uint param_2,uint param_3,uint param_4,size_t param_5,\n                   undefined1 param_6)\n\n{\n  uint uVar1;\n  int iVar2;\n  void *__s;\n  uint *puVar3;\n  int iVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  void *pvVar9;\n  \n  if (param_4 == 0) {\n                    \n    FUN_00069d00("../../gold/fileread.cc",0x1da,"make_view");\n  }\n  uVar5 = *(uint *)(param_1 + 0x24);\n  uVar1 = *(uint *)(param_1 + 0x28);\n  uVar6 = uVar1;\n  if (((SBORROW4(uVar1,param_3) != SBORROW4(uVar1 - param_3,(uint)(uVar5 < param_2))) !=\n       (int)((uVar1 - param_3) - (uint)(uVar5 < param_2)) < 0) ||\n     (uVar6 = uVar5 - param_2, (uVar1 - param_3) - (uint)(uVar5 < param_2) < (uint)(uVar6 < param_4)\n     )) {\n                    \n    FUN_00069d00("../../gold/fileread.cc",0x1dd,"make_view",uVar6);\n  }\n  uVar8 = param_2 & 0xffffe000;\n  uVar7 = param_4 + (param_2 - uVar8) + 0x1fff;\n  uVar6 = uVar7 & 0xffffe000;\n  iVar4 = param_3 + CARRY4(uVar6,uVar8);\n  uVar6 = (uint)(uVar6 + uVar8 < uVar5);\n  iVar2 = iVar4 - uVar1;\n  if ((SBORROW4(iVar4,uVar1) != SBORROW4(iVar2,uVar6)) == (int)(iVar2 - uVar6) < 0) {\n    uVar7 = uVar5 - uVar8;\n    if (uVar7 < param_4) {\n                    \n      FUN_00069d00("../../gold/fileread.cc",0x1e6,"make_view",param_3);\n    }\n  }\n  else {\n    uVar7 = uVar7 & 0xffffe000;\n  }\n  if (param_5 == 0) {\n    FUN_00066930(param_1);\n    __s = mmap64((void *)0x0,uVar7,1,2,*(int *)(param_1 + 0x18),\n                 CONCAT44(param_3,param_2) & 0xffffffffffffe000);\n    if (__s != (void *)0xffffffff) {\n      uVar5 = 2;\n      *(int *)(param_1 + 100) = *(int *)(param_1 + 100) + uVar7;\n      goto LAB_000681de;\n    }\n    __s = malloc(uVar7);\n    pvVar9 = __s;\n    if (__s == (void *)0x0) goto LAB_00068311;\n  }\n  else {\n    __s = malloc(param_5 + uVar7);\n    if (__s == (void *)0x0) {\nLAB_00068311:\n                    \n      FUN_00069cb0();\n    }\n    memset(__s,0,param_5);\n    pvVar9 = (void *)(param_5 + (int)__s);\n  }\n  uVar5 = 1;\n  FUN_00066a90(param_1,uVar8,param_3,uVar7,pvVar9);\nLAB_000681de:\n  puVar3 = (uint *)FUN_001e5210(0x24);\n  puVar3[2] = uVar7;\n  *puVar3 = uVar8;\n  puVar3[3] = (uint)__s;\n  puVar3[5] = param_5;\n  puVar3[7] = uVar5;\n  puVar3[1] = param_3;\n  puVar3[4] = 0;\n  *(undefined1 *)(puVar3 + 6) = param_6;\n  *(undefined1 *)(puVar3 + 8) = 1;\n  FUN_00067e20(param_1,puVar3);\n  return puVar3;\n}\n\n" (function_definition "uint * FUN_000680c0(int param_1,uint param_2,uint param_3,uint param_4,size_t param_5,\n                   undefined1 param_6)\n\n{\n  uint uVar1;\n  int iVar2;\n  void *__s;\n  uint *puVar3;\n  int iVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  void *pvVar9;\n  \n  if (param_4 == 0) {\n                    \n    FUN_00069d00("../../gold/fileread.cc",0x1da,"make_view");\n  }\n  uVar5 = *(uint *)(param_1 + 0x24);\n  uVar1 = *(uint *)(param_1 + 0x28);\n  uVar6 = uVar1;\n  if (((SBORROW4(uVar1,param_3) != SBORROW4(uVar1 - param_3,(uint)(uVar5 < param_2))) !=\n       (int)((uVar1 - param_3) - (uint)(uVar5 < param_2)) < 0) ||\n     (uVar6 = uVar5 - param_2, (uVar1 - param_3) - (uint)(uVar5 < param_2) < (uint)(uVar6 < param_4)\n     )) {\n                    \n    FUN_00069d00("../../gold/fileread.cc",0x1dd,"make_view",uVar6);\n  }\n  uVar8 = param_2 & 0xffffe000;\n  uVar7 = param_4 + (param_2 - uVar8) + 0x1fff;\n  uVar6 = uVar7 & 0xffffe000;\n  iVar4 = param_3 + CARRY4(uVar6,uVar8);\n  uVar6 = (uint)(uVar6 + uVar8 < uVar5);\n  iVar2 = iVar4 - uVar1;\n  if ((SBORROW4(iVar4,uVar1) != SBORROW4(iVar2,uVar6)) == (int)(iVar2 - uVar6) < 0) {\n    uVar7 = uVar5 - uVar8;\n    if (uVar7 < param_4) {\n                    \n      FUN_00069d00("../../gold/fileread.cc",0x1e6,"make_view",param_3);\n    }\n  }\n  else {\n    uVar7 = uVar7 & 0xffffe000;\n  }\n  if (param_5 == 0) {\n    FUN_00066930(param_1);\n    __s = mmap64((void *)0x0,uVar7,1,2,*(int *)(param_1 + 0x18),\n                 CONCAT44(param_3,param_2) & 0xffffffffffffe000);\n    if (__s != (void *)0xffffffff) {\n      uVar5 = 2;\n      *(int *)(param_1 + 100) = *(int *)(param_1 + 100) + uVar7;\n      goto LAB_000681de;\n    }\n    __s = malloc(uVar7);\n    pvVar9 = __s;\n    if (__s == (void *)0x0) goto LAB_00068311;\n  }\n  else {\n    __s = malloc(param_5 + uVar7);\n    if (__s == (void *)0x0) {\nLAB_00068311:\n                    \n      FUN_00069cb0();\n    }\n    memset(__s,0,param_5);\n    pvVar9 = (void *)(param_5 + (int)__s);\n  }\n  uVar5 = 1;\n  FUN_00066a90(param_1,uVar8,param_3,uVar7,pvVar9);\nLAB_000681de:\n  puVar3 = (uint *)FUN_001e5210(0x24);\n  puVar3[2] = uVar7;\n  *puVar3 = uVar8;\n  puVar3[3] = (uint)__s;\n  puVar3[5] = param_5;\n  puVar3[7] = uVar5;\n  puVar3[1] = param_3;\n  puVar3[4] = 0;\n  *(undefined1 *)(puVar3 + 6) = param_6;\n  *(undefined1 *)(puVar3 + 8) = 1;\n  FUN_00067e20(param_1,puVar3);\n  return puVar3;\n}" type_identifier (pointer_declarator "* FUN_000680c0(int param_1,uint param_2,uint param_3,uint param_4,size_t param_5,\n                   undefined1 param_6)" * (function_declarator "FUN_000680c0(int param_1,uint param_2,uint param_3,uint param_4,size_t param_5,\n                   undefined1 param_6)" identifier (parameter_list "(int param_1,uint param_2,uint param_3,uint param_4,size_t param_5,\n                   undefined1 param_6)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "uint param_2" type_identifier identifier) , (parameter_declaration "uint param_3" type_identifier identifier) , (parameter_declaration "uint param_4" type_identifier identifier) , (parameter_declaration "size_t param_5" primitive_type identifier) , (parameter_declaration "undefined1 param_6" type_identifier identifier) )))) (compound_statement "{\n  uint uVar1;\n  int iVar2;\n  void *__s;\n  uint *puVar3;\n  int iVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  void *pvVar9;\n  \n  if (param_4 == 0) {\n                    \n    FUN_00069d00("../../gold/fileread.cc",0x1da,"make_view");\n  }\n  uVar5 = *(uint *)(param_1 + 0x24);\n  uVar1 = *(uint *)(param_1 + 0x28);\n  uVar6 = uVar1;\n  if (((SBORROW4(uVar1,param_3) != SBORROW4(uVar1 - param_3,(uint)(uVar5 < param_2))) !=\n       (int)((uVar1 - param_3) - (uint)(uVar5 < param_2)) < 0) ||\n     (uVar6 = uVar5 - param_2, (uVar1 - param_3) - (uint)(uVar5 < param_2) < (uint)(uVar6 < param_4)\n     )) {\n                    \n    FUN_00069d00("../../gold/fileread.cc",0x1dd,"make_view",uVar6);\n  }\n  uVar8 = param_2 & 0xffffe000;\n  uVar7 = param_4 + (param_2 - uVar8) + 0x1fff;\n  uVar6 = uVar7 & 0xffffe000;\n  iVar4 = param_3 + CARRY4(uVar6,uVar8);\n  uVar6 = (uint)(uVar6 + uVar8 < uVar5);\n  iVar2 = iVar4 - uVar1;\n  if ((SBORROW4(iVar4,uVar1) != SBORROW4(iVar2,uVar6)) == (int)(iVar2 - uVar6) < 0) {\n    uVar7 = uVar5 - uVar8;\n    if (uVar7 < param_4) {\n                    \n      FUN_00069d00("../../gold/fileread.cc",0x1e6,"make_view",param_3);\n    }\n  }\n  else {\n    uVar7 = uVar7 & 0xffffe000;\n  }\n  if (param_5 == 0) {\n    FUN_00066930(param_1);\n    __s = mmap64((void *)0x0,uVar7,1,2,*(int *)(param_1 + 0x18),\n                 CONCAT44(param_3,param_2) & 0xffffffffffffe000);\n    if (__s != (void *)0xffffffff) {\n      uVar5 = 2;\n      *(int *)(param_1 + 100) = *(int *)(param_1 + 100) + uVar7;\n      goto LAB_000681de;\n    }\n    __s = malloc(uVar7);\n    pvVar9 = __s;\n    if (__s == (void *)0x0) goto LAB_00068311;\n  }\n  else {\n    __s = malloc(param_5 + uVar7);\n    if (__s == (void *)0x0) {\nLAB_00068311:\n                    \n      FUN_00069cb0();\n    }\n    memset(__s,0,param_5);\n    pvVar9 = (void *)(param_5 + (int)__s);\n  }\n  uVar5 = 1;\n  FUN_00066a90(param_1,uVar8,param_3,uVar7,pvVar9);\nLAB_000681de:\n  puVar3 = (uint *)FUN_001e5210(0x24);\n  puVar3[2] = uVar7;\n  *puVar3 = uVar8;\n  puVar3[3] = (uint)__s;\n  puVar3[5] = param_5;\n  puVar3[7] = uVar5;\n  puVar3[1] = param_3;\n  puVar3[4] = 0;\n  *(undefined1 *)(puVar3 + 6) = param_6;\n  *(undefined1 *)(puVar3 + 8) = 1;\n  FUN_00067e20(param_1,puVar3);\n  return puVar3;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "void *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "uint *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "void *pvVar9;" primitive_type (pointer_declarator "*pvVar9" * identifier) ;) (if_statement "if (param_4 == 0) {\n                    \n    FUN_00069d00("../../gold/fileread.cc",0x1da,"make_view");\n  }" if (parenthesized_expression "(param_4 == 0)" ( (binary_expression "param_4 == 0" identifier == number_literal) )) (compound_statement "{\n                    \n    FUN_00069d00("../../gold/fileread.cc",0x1da,"make_view");\n  }" { (expression_statement "FUN_00069d00("../../gold/fileread.cc",0x1da,"make_view");" (call_expression "FUN_00069d00("../../gold/fileread.cc",0x1da,"make_view")" identifier (argument_list "("../../gold/fileread.cc",0x1da,"make_view")" ( (string_literal ""../../gold/fileread.cc"" " string_content ") , number_literal , (string_literal ""make_view"" " string_content ") ))) ;) })) (expression_statement "uVar5 = *(uint *)(param_1 + 0x24);" (assignment_expression "uVar5 = *(uint *)(param_1 + 0x24)" identifier = (pointer_expression "*(uint *)(param_1 + 0x24)" * (cast_expression "(uint *)(param_1 + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x24)" ( (binary_expression "param_1 + 0x24" identifier + number_literal) ))))) ;) (expression_statement "uVar1 = *(uint *)(param_1 + 0x28);" (assignment_expression "uVar1 = *(uint *)(param_1 + 0x28)" identifier = (pointer_expression "*(uint *)(param_1 + 0x28)" * (cast_expression "(uint *)(param_1 + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "uVar6 = uVar1;" (assignment_expression "uVar6 = uVar1" identifier = identifier) ;) (if_statement "if (((SBORROW4(uVar1,param_3) != SBORROW4(uVar1 - param_3,(uint)(uVar5 < param_2))) !=\n       (int)((uVar1 - param_3) - (uint)(uVar5 < param_2)) < 0) ||\n     (uVar6 = uVar5 - param_2, (uVar1 - param_3) - (uint)(uVar5 < param_2) < (uint)(uVar6 < param_4)\n     )) {\n                    \n    FUN_00069d00("../../gold/fileread.cc",0x1dd,"make_view",uVar6);\n  }" if (parenthesized_expression "(((SBORROW4(uVar1,param_3) != SBORROW4(uVar1 - param_3,(uint)(uVar5 < param_2))) !=\n       (int)((uVar1 - param_3) - (uint)(uVar5 < param_2)) < 0) ||\n     (uVar6 = uVar5 - param_2, (uVar1 - param_3) - (uint)(uVar5 < param_2) < (uint)(uVar6 < param_4)\n     ))" ( (binary_expression "((SBORROW4(uVar1,param_3) != SBORROW4(uVar1 - param_3,(uint)(uVar5 < param_2))) !=\n       (int)((uVar1 - param_3) - (uint)(uVar5 < param_2)) < 0) ||\n     (uVar6 = uVar5 - param_2, (uVar1 - param_3) - (uint)(uVar5 < param_2) < (uint)(uVar6 < param_4)\n     )" (parenthesized_expression "((SBORROW4(uVar1,param_3) != SBORROW4(uVar1 - param_3,(uint)(uVar5 < param_2))) !=\n       (int)((uVar1 - param_3) - (uint)(uVar5 < param_2)) < 0)" ( (binary_expression "(SBORROW4(uVar1,param_3) != SBORROW4(uVar1 - param_3,(uint)(uVar5 < param_2))) !=\n       (int)((uVar1 - param_3) - (uint)(uVar5 < param_2)) < 0" (parenthesized_expression "(SBORROW4(uVar1,param_3) != SBORROW4(uVar1 - param_3,(uint)(uVar5 < param_2)))" ( (binary_expression "SBORROW4(uVar1,param_3) != SBORROW4(uVar1 - param_3,(uint)(uVar5 < param_2))" (call_expression "SBORROW4(uVar1,param_3)" identifier (argument_list "(uVar1,param_3)" ( identifier , identifier ))) != (call_expression "SBORROW4(uVar1 - param_3,(uint)(uVar5 < param_2))" identifier (argument_list "(uVar1 - param_3,(uint)(uVar5 < param_2))" ( (binary_expression "uVar1 - param_3" identifier - identifier) , (call_expression "(uint)(uVar5 < param_2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar5 < param_2)" ( (binary_expression "uVar5 < param_2" identifier < identifier) ))) )))) )) != (binary_expression "(int)((uVar1 - param_3) - (uint)(uVar5 < param_2)) < 0" (cast_expression "(int)((uVar1 - param_3) - (uint)(uVar5 < param_2))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((uVar1 - param_3) - (uint)(uVar5 < param_2))" ( (binary_expression "(uVar1 - param_3) - (uint)(uVar5 < param_2)" (parenthesized_expression "(uVar1 - param_3)" ( (binary_expression "uVar1 - param_3" identifier - identifier) )) - (call_expression "(uint)(uVar5 < param_2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar5 < param_2)" ( (binary_expression "uVar5 < param_2" identifier < identifier) )))) ))) < number_literal)) )) || (parenthesized_expression "(uVar6 = uVar5 - param_2, (uVar1 - param_3) - (uint)(uVar5 < param_2) < (uint)(uVar6 < param_4)\n     )" ( (comma_expression "uVar6 = uVar5 - param_2, (uVar1 - param_3) - (uint)(uVar5 < param_2) < (uint)(uVar6 < param_4)" (assignment_expression "uVar6 = uVar5 - param_2" identifier = (binary_expression "uVar5 - param_2" identifier - identifier)) , (binary_expression "(uVar1 - param_3) - (uint)(uVar5 < param_2) < (uint)(uVar6 < param_4)" (binary_expression "(uVar1 - param_3) - (uint)(uVar5 < param_2)" (parenthesized_expression "(uVar1 - param_3)" ( (binary_expression "uVar1 - param_3" identifier - identifier) )) - (call_expression "(uint)(uVar5 < param_2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar5 < param_2)" ( (binary_expression "uVar5 < param_2" identifier < identifier) )))) < (call_expression "(uint)(uVar6 < param_4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar6 < param_4)" ( (binary_expression "uVar6 < param_4" identifier < identifier) ))))) ))) )) (compound_statement "{\n                    \n    FUN_00069d00("../../gold/fileread.cc",0x1dd,"make_view",uVar6);\n  }" { (expression_statement "FUN_00069d00("../../gold/fileread.cc",0x1dd,"make_view",uVar6);" (call_expression "FUN_00069d00("../../gold/fileread.cc",0x1dd,"make_view",uVar6)" identifier (argument_list "("../../gold/fileread.cc",0x1dd,"make_view",uVar6)" ( (string_literal ""../../gold/fileread.cc"" " string_content ") , number_literal , (string_literal ""make_view"" " string_content ") , identifier ))) ;) })) (expression_statement "uVar8 = param_2 & 0xffffe000;" (assignment_expression "uVar8 = param_2 & 0xffffe000" identifier = (binary_expression "param_2 & 0xffffe000" identifier & number_literal)) ;) (expression_statement "uVar7 = param_4 + (param_2 - uVar8) + 0x1fff;" (assignment_expression "uVar7 = param_4 + (param_2 - uVar8) + 0x1fff" identifier = (binary_expression "param_4 + (param_2 - uVar8) + 0x1fff" (binary_expression "param_4 + (param_2 - uVar8)" identifier + (parenthesized_expression "(param_2 - uVar8)" ( (binary_expression "param_2 - uVar8" identifier - identifier) ))) + number_literal)) ;) (expression_statement "uVar6 = uVar7 & 0xffffe000;" (assignment_expression "uVar6 = uVar7 & 0xffffe000" identifier = (binary_expression "uVar7 & 0xffffe000" identifier & number_literal)) ;) (expression_statement "iVar4 = param_3 + CARRY4(uVar6,uVar8);" (assignment_expression "iVar4 = param_3 + CARRY4(uVar6,uVar8)" identifier = (binary_expression "param_3 + CARRY4(uVar6,uVar8)" identifier + (call_expression "CARRY4(uVar6,uVar8)" identifier (argument_list "(uVar6,uVar8)" ( identifier , identifier ))))) ;) (expression_statement "uVar6 = (uint)(uVar6 + uVar8 < uVar5);" (assignment_expression "uVar6 = (uint)(uVar6 + uVar8 < uVar5)" identifier = (call_expression "(uint)(uVar6 + uVar8 < uVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar6 + uVar8 < uVar5)" ( (binary_expression "uVar6 + uVar8 < uVar5" (binary_expression "uVar6 + uVar8" identifier + identifier) < identifier) )))) ;) (expression_statement "iVar2 = iVar4 - uVar1;" (assignment_expression "iVar2 = iVar4 - uVar1" identifier = (binary_expression "iVar4 - uVar1" identifier - identifier)) ;) (if_statement "if ((SBORROW4(iVar4,uVar1) != SBORROW4(iVar2,uVar6)) == (int)(iVar2 - uVar6) < 0) {\n    uVar7 = uVar5 - uVar8;\n    if (uVar7 < param_4) {\n                    \n      FUN_00069d00("../../gold/fileread.cc",0x1e6,"make_view",param_3);\n    }\n  }\n  else {\n    uVar7 = uVar7 & 0xffffe000;\n  }" if (parenthesized_expression "((SBORROW4(iVar4,uVar1) != SBORROW4(iVar2,uVar6)) == (int)(iVar2 - uVar6) < 0)" ( (binary_expression "(SBORROW4(iVar4,uVar1) != SBORROW4(iVar2,uVar6)) == (int)(iVar2 - uVar6) < 0" (parenthesized_expression "(SBORROW4(iVar4,uVar1) != SBORROW4(iVar2,uVar6))" ( (binary_expression "SBORROW4(iVar4,uVar1) != SBORROW4(iVar2,uVar6)" (call_expression "SBORROW4(iVar4,uVar1)" identifier (argument_list "(iVar4,uVar1)" ( identifier , identifier ))) != (call_expression "SBORROW4(iVar2,uVar6)" identifier (argument_list "(iVar2,uVar6)" ( identifier , identifier )))) )) == (binary_expression "(int)(iVar2 - uVar6) < 0" (cast_expression "(int)(iVar2 - uVar6)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar2 - uVar6)" ( (binary_expression "iVar2 - uVar6" identifier - identifier) ))) < number_literal)) )) (compound_statement "{\n    uVar7 = uVar5 - uVar8;\n    if (uVar7 < param_4) {\n                    \n      FUN_00069d00("../../gold/fileread.cc",0x1e6,"make_view",param_3);\n    }\n  }" { (expression_statement "uVar7 = uVar5 - uVar8;" (assignment_expression "uVar7 = uVar5 - uVar8" identifier = (binary_expression "uVar5 - uVar8" identifier - identifier)) ;) (if_statement "if (uVar7 < param_4) {\n                    \n      FUN_00069d00("../../gold/fileread.cc",0x1e6,"make_view",param_3);\n    }" if (parenthesized_expression "(uVar7 < param_4)" ( (binary_expression "uVar7 < param_4" identifier < identifier) )) (compound_statement "{\n                    \n      FUN_00069d00("../../gold/fileread.cc",0x1e6,"make_view",param_3);\n    }" { (expression_statement "FUN_00069d00("../../gold/fileread.cc",0x1e6,"make_view",param_3);" (call_expression "FUN_00069d00("../../gold/fileread.cc",0x1e6,"make_view",param_3)" identifier (argument_list "("../../gold/fileread.cc",0x1e6,"make_view",param_3)" ( (string_literal ""../../gold/fileread.cc"" " string_content ") , number_literal , (string_literal ""make_view"" " string_content ") , identifier ))) ;) })) }) (else_clause "else {\n    uVar7 = uVar7 & 0xffffe000;\n  }" else (compound_statement "{\n    uVar7 = uVar7 & 0xffffe000;\n  }" { (expression_statement "uVar7 = uVar7 & 0xffffe000;" (assignment_expression "uVar7 = uVar7 & 0xffffe000" identifier = (binary_expression "uVar7 & 0xffffe000" identifier & number_literal)) ;) }))) (if_statement "if (param_5 == 0) {\n    FUN_00066930(param_1);\n    __s = mmap64((void *)0x0,uVar7,1,2,*(int *)(param_1 + 0x18),\n                 CONCAT44(param_3,param_2) & 0xffffffffffffe000);\n    if (__s != (void *)0xffffffff) {\n      uVar5 = 2;\n      *(int *)(param_1 + 100) = *(int *)(param_1 + 100) + uVar7;\n      goto LAB_000681de;\n    }\n    __s = malloc(uVar7);\n    pvVar9 = __s;\n    if (__s == (void *)0x0) goto LAB_00068311;\n  }\n  else {\n    __s = malloc(param_5 + uVar7);\n    if (__s == (void *)0x0) {\nLAB_00068311:\n                    \n      FUN_00069cb0();\n    }\n    memset(__s,0,param_5);\n    pvVar9 = (void *)(param_5 + (int)__s);\n  }" if (parenthesized_expression "(param_5 == 0)" ( (binary_expression "param_5 == 0" identifier == number_literal) )) (compound_statement "{\n    FUN_00066930(param_1);\n    __s = mmap64((void *)0x0,uVar7,1,2,*(int *)(param_1 + 0x18),\n                 CONCAT44(param_3,param_2) & 0xffffffffffffe000);\n    if (__s != (void *)0xffffffff) {\n      uVar5 = 2;\n      *(int *)(param_1 + 100) = *(int *)(param_1 + 100) + uVar7;\n      goto LAB_000681de;\n    }\n    __s = malloc(uVar7);\n    pvVar9 = __s;\n    if (__s == (void *)0x0) goto LAB_00068311;\n  }" { (expression_statement "FUN_00066930(param_1);" (call_expression "FUN_00066930(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (expression_statement "__s = mmap64((void *)0x0,uVar7,1,2,*(int *)(param_1 + 0x18),\n                 CONCAT44(param_3,param_2) & 0xffffffffffffe000);" (assignment_expression "__s = mmap64((void *)0x0,uVar7,1,2,*(int *)(param_1 + 0x18),\n                 CONCAT44(param_3,param_2) & 0xffffffffffffe000)" identifier = (call_expression "mmap64((void *)0x0,uVar7,1,2,*(int *)(param_1 + 0x18),\n                 CONCAT44(param_3,param_2) & 0xffffffffffffe000)" identifier (argument_list "((void *)0x0,uVar7,1,2,*(int *)(param_1 + 0x18),\n                 CONCAT44(param_3,param_2) & 0xffffffffffffe000)" ( (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) , identifier , number_literal , number_literal , (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) , (binary_expression "CONCAT44(param_3,param_2) & 0xffffffffffffe000" (call_expression "CONCAT44(param_3,param_2)" identifier (argument_list "(param_3,param_2)" ( identifier , identifier ))) & number_literal) )))) ;) (if_statement "if (__s != (void *)0xffffffff) {\n      uVar5 = 2;\n      *(int *)(param_1 + 100) = *(int *)(param_1 + 100) + uVar7;\n      goto LAB_000681de;\n    }" if (parenthesized_expression "(__s != (void *)0xffffffff)" ( (binary_expression "__s != (void *)0xffffffff" identifier != (cast_expression "(void *)0xffffffff" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      uVar5 = 2;\n      *(int *)(param_1 + 100) = *(int *)(param_1 + 100) + uVar7;\n      goto LAB_000681de;\n    }" { (expression_statement "uVar5 = 2;" (assignment_expression "uVar5 = 2" identifier = number_literal) ;) (expression_statement "*(int *)(param_1 + 100) = *(int *)(param_1 + 100) + uVar7;" (assignment_expression "*(int *)(param_1 + 100) = *(int *)(param_1 + 100) + uVar7" (pointer_expression "*(int *)(param_1 + 100)" * (cast_expression "(int *)(param_1 + 100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 100)" ( (binary_expression "param_1 + 100" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 100) + uVar7" (pointer_expression "*(int *)(param_1 + 100)" * (cast_expression "(int *)(param_1 + 100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 100)" ( (binary_expression "param_1 + 100" identifier + number_literal) )))) + identifier)) ;) (goto_statement "goto LAB_000681de;" goto statement_identifier ;) })) (expression_statement "__s = malloc(uVar7);" (assignment_expression "__s = malloc(uVar7)" identifier = (call_expression "malloc(uVar7)" identifier (argument_list "(uVar7)" ( identifier )))) ;) (expression_statement "pvVar9 = __s;" (assignment_expression "pvVar9 = __s" identifier = identifier) ;) (if_statement "if (__s == (void *)0x0) goto LAB_00068311;" if (parenthesized_expression "(__s == (void *)0x0)" ( (binary_expression "__s == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00068311;" goto statement_identifier ;)) }) (else_clause "else {\n    __s = malloc(param_5 + uVar7);\n    if (__s == (void *)0x0) {\nLAB_00068311:\n                    \n      FUN_00069cb0();\n    }\n    memset(__s,0,param_5);\n    pvVar9 = (void *)(param_5 + (int)__s);\n  }" else (compound_statement "{\n    __s = malloc(param_5 + uVar7);\n    if (__s == (void *)0x0) {\nLAB_00068311:\n                    \n      FUN_00069cb0();\n    }\n    memset(__s,0,param_5);\n    pvVar9 = (void *)(param_5 + (int)__s);\n  }" { (expression_statement "__s = malloc(param_5 + uVar7);" (assignment_expression "__s = malloc(param_5 + uVar7)" identifier = (call_expression "malloc(param_5 + uVar7)" identifier (argument_list "(param_5 + uVar7)" ( (binary_expression "param_5 + uVar7" identifier + identifier) )))) ;) (if_statement "if (__s == (void *)0x0) {\nLAB_00068311:\n                    \n      FUN_00069cb0();\n    }" if (parenthesized_expression "(__s == (void *)0x0)" ( (binary_expression "__s == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_00068311:\n                    \n      FUN_00069cb0();\n    }" { (labeled_statement "LAB_00068311:\n                    \n      FUN_00069cb0();" statement_identifier : (expression_statement "FUN_00069cb0();" (call_expression "FUN_00069cb0()" identifier (argument_list "()" ( ))) ;)) })) (expression_statement "memset(__s,0,param_5);" (call_expression "memset(__s,0,param_5)" identifier (argument_list "(__s,0,param_5)" ( identifier , number_literal , identifier ))) ;) (expression_statement "pvVar9 = (void *)(param_5 + (int)__s);" (assignment_expression "pvVar9 = (void *)(param_5 + (int)__s)" identifier = (cast_expression "(void *)(param_5 + (int)__s)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + (int)__s)" ( (binary_expression "param_5 + (int)__s" identifier + (cast_expression "(int)__s" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) }))) (expression_statement "uVar5 = 1;" (assignment_expression "uVar5 = 1" identifier = number_literal) ;) (expression_statement "FUN_00066a90(param_1,uVar8,param_3,uVar7,pvVar9);" (call_expression "FUN_00066a90(param_1,uVar8,param_3,uVar7,pvVar9)" identifier (argument_list "(param_1,uVar8,param_3,uVar7,pvVar9)" ( identifier , identifier , identifier , identifier , identifier ))) ;) (labeled_statement "LAB_000681de:\n  puVar3 = (uint *)FUN_001e5210(0x24);" statement_identifier : (expression_statement "puVar3 = (uint *)FUN_001e5210(0x24);" (assignment_expression "puVar3 = (uint *)FUN_001e5210(0x24)" identifier = (cast_expression "(uint *)FUN_001e5210(0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001e5210(0x24)" identifier (argument_list "(0x24)" ( number_literal ))))) ;)) (expression_statement "puVar3[2] = uVar7;" (assignment_expression "puVar3[2] = uVar7" (subscript_expression "puVar3[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*puVar3 = uVar8;" (assignment_expression "*puVar3 = uVar8" (pointer_expression "*puVar3" * identifier) = identifier) ;) (expression_statement "puVar3[3] = (uint)__s;" (assignment_expression "puVar3[3] = (uint)__s" (subscript_expression "puVar3[3]" identifier [ number_literal ]) = (cast_expression "(uint)__s" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "puVar3[5] = param_5;" (assignment_expression "puVar3[5] = param_5" (subscript_expression "puVar3[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar3[7] = uVar5;" (assignment_expression "puVar3[7] = uVar5" (subscript_expression "puVar3[7]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar3[1] = param_3;" (assignment_expression "puVar3[1] = param_3" (subscript_expression "puVar3[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar3[4] = 0;" (assignment_expression "puVar3[4] = 0" (subscript_expression "puVar3[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)(puVar3 + 6) = param_6;" (assignment_expression "*(undefined1 *)(puVar3 + 6) = param_6" (pointer_expression "*(undefined1 *)(puVar3 + 6)" * (cast_expression "(undefined1 *)(puVar3 + 6)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 6)" ( (binary_expression "puVar3 + 6" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 *)(puVar3 + 8) = 1;" (assignment_expression "*(undefined1 *)(puVar3 + 8) = 1" (pointer_expression "*(undefined1 *)(puVar3 + 8)" * (cast_expression "(undefined1 *)(puVar3 + 8)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 8)" ( (binary_expression "puVar3 + 8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00067e20(param_1,puVar3);" (call_expression "FUN_00067e20(param_1,puVar3)" identifier (argument_list "(param_1,puVar3)" ( identifier , identifier ))) ;) (return_statement "return puVar3;" return identifier ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) )))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (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 TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (call_expression IDENT (argument_list ( IDENT , IDENT ))) != (call_expression IDENT (argument_list ( (binary_expression IDENT - IDENT) , (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))) )))) )) != (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) )))) ))) < LIT)) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT - IDENT)) , (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) )))) < (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))))) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") , IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (parenthesized_expression ( (binary_expression IDENT - IDENT) ))) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (call_expression IDENT (argument_list ( IDENT , IDENT ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression IDENT + IDENT) < IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (call_expression IDENT (argument_list ( IDENT , IDENT ))) != (call_expression IDENT (argument_list ( IDENT , IDENT )))) )) == (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT - IDENT) ))) < LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") , IDENT ))) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) , IDENT , LIT , LIT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (binary_expression (call_expression IDENT (argument_list ( IDENT , IDENT ))) & LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + IDENT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( ))) ;)) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) }))) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT ))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (return_statement return IDENT ;) })))
(function_definition "uint * FUN_000680c0(int param_1,uint param_2,uint param_3,uint param_4,size_t param_5,\n                   undefined1 param_6)\n\n{\n  uint uVar1;\n  int iVar2;\n  void *__s;\n  uint *puVar3;\n  int iVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  void *pvVar9;\n  \n  if (param_4 == 0) {\n                    \n    FUN_00069d00("../../gold/fileread.cc",0x1da,"make_view");\n  }\n  uVar5 = *(uint *)(param_1 + 0x24);\n  uVar1 = *(uint *)(param_1 + 0x28);\n  uVar6 = uVar1;\n  if (((SBORROW4(uVar1,param_3) != SBORROW4(uVar1 - param_3,(uint)(uVar5 < param_2))) !=\n       (int)((uVar1 - param_3) - (uint)(uVar5 < param_2)) < 0) ||\n     (uVar6 = uVar5 - param_2, (uVar1 - param_3) - (uint)(uVar5 < param_2) < (uint)(uVar6 < param_4)\n     )) {\n                    \n    FUN_00069d00("../../gold/fileread.cc",0x1dd,"make_view",uVar6);\n  }\n  uVar8 = param_2 & 0xffffe000;\n  uVar7 = param_4 + (param_2 - uVar8) + 0x1fff;\n  uVar6 = uVar7 & 0xffffe000;\n  iVar4 = param_3 + CARRY4(uVar6,uVar8);\n  uVar6 = (uint)(uVar6 + uVar8 < uVar5);\n  iVar2 = iVar4 - uVar1;\n  if ((SBORROW4(iVar4,uVar1) != SBORROW4(iVar2,uVar6)) == (int)(iVar2 - uVar6) < 0) {\n    uVar7 = uVar5 - uVar8;\n    if (uVar7 < param_4) {\n                    \n      FUN_00069d00("../../gold/fileread.cc",0x1e6,"make_view",param_3);\n    }\n  }\n  else {\n    uVar7 = uVar7 & 0xffffe000;\n  }\n  if (param_5 == 0) {\n    FUN_00066930(param_1);\n    __s = mmap64((void *)0x0,uVar7,1,2,*(int *)(param_1 + 0x18),\n                 CONCAT44(param_3,param_2) & 0xffffffffffffe000);\n    if (__s != (void *)0xffffffff) {\n      uVar5 = 2;\n      *(int *)(param_1 + 100) = *(int *)(param_1 + 100) + uVar7;\n      goto LAB_000681de;\n    }\n    __s = malloc(uVar7);\n    pvVar9 = __s;\n    if (__s == (void *)0x0) goto LAB_00068311;\n  }\n  else {\n    __s = malloc(param_5 + uVar7);\n    if (__s == (void *)0x0) {\nLAB_00068311:\n                    \n      FUN_00069cb0();\n    }\n    memset(__s,0,param_5);\n    pvVar9 = (void *)(param_5 + (int)__s);\n  }\n  uVar5 = 1;\n  FUN_00066a90(param_1,uVar8,param_3,uVar7,pvVar9);\nLAB_000681de:\n  puVar3 = (uint *)FUN_001e5210(0x24);\n  puVar3[2] = uVar7;\n  *puVar3 = uVar8;\n  puVar3[3] = (uint)__s;\n  puVar3[5] = param_5;\n  puVar3[7] = uVar5;\n  puVar3[1] = param_3;\n  puVar3[4] = 0;\n  *(undefined1 *)(puVar3 + 6) = param_6;\n  *(undefined1 *)(puVar3 + 8) = 1;\n  FUN_00067e20(param_1,puVar3);\n  return puVar3;\n}" (type_identifier "uint") (pointer_declarator "* FUN_000680c0(int param_1,uint param_2,uint param_3,uint param_4,size_t param_5,\n                   undefined1 param_6)" (* "*") (function_declarator "FUN_000680c0(int param_1,uint param_2,uint param_3,uint param_4,size_t param_5,\n                   undefined1 param_6)" (identifier "FUN_000680c0") (parameter_list "(int param_1,uint param_2,uint param_3,uint param_4,size_t param_5,\n                   undefined1 param_6)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "uint param_2" (type_identifier "uint") (identifier "param_2")) (, ",") (parameter_declaration "uint param_3" (type_identifier "uint") (identifier "param_3")) (, ",") (parameter_declaration "uint param_4" (type_identifier "uint") (identifier "param_4")) (, ",") (parameter_declaration "size_t param_5" (primitive_type "size_t") (identifier "param_5")) (, ",") (parameter_declaration "undefined1 param_6" (type_identifier "undefined1") (identifier "param_6")) () ")")))) (compound_statement "{\n  uint uVar1;\n  int iVar2;\n  void *__s;\n  uint *puVar3;\n  int iVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  void *pvVar9;\n  \n  if (param_4 == 0) {\n                    \n    FUN_00069d00("../../gold/fileread.cc",0x1da,"make_view");\n  }\n  uVar5 = *(uint *)(param_1 + 0x24);\n  uVar1 = *(uint *)(param_1 + 0x28);\n  uVar6 = uVar1;\n  if (((SBORROW4(uVar1,param_3) != SBORROW4(uVar1 - param_3,(uint)(uVar5 < param_2))) !=\n       (int)((uVar1 - param_3) - (uint)(uVar5 < param_2)) < 0) ||\n     (uVar6 = uVar5 - param_2, (uVar1 - param_3) - (uint)(uVar5 < param_2) < (uint)(uVar6 < param_4)\n     )) {\n                    \n    FUN_00069d00("../../gold/fileread.cc",0x1dd,"make_view",uVar6);\n  }\n  uVar8 = param_2 & 0xffffe000;\n  uVar7 = param_4 + (param_2 - uVar8) + 0x1fff;\n  uVar6 = uVar7 & 0xffffe000;\n  iVar4 = param_3 + CARRY4(uVar6,uVar8);\n  uVar6 = (uint)(uVar6 + uVar8 < uVar5);\n  iVar2 = iVar4 - uVar1;\n  if ((SBORROW4(iVar4,uVar1) != SBORROW4(iVar2,uVar6)) == (int)(iVar2 - uVar6) < 0) {\n    uVar7 = uVar5 - uVar8;\n    if (uVar7 < param_4) {\n                    \n      FUN_00069d00("../../gold/fileread.cc",0x1e6,"make_view",param_3);\n    }\n  }\n  else {\n    uVar7 = uVar7 & 0xffffe000;\n  }\n  if (param_5 == 0) {\n    FUN_00066930(param_1);\n    __s = mmap64((void *)0x0,uVar7,1,2,*(int *)(param_1 + 0x18),\n                 CONCAT44(param_3,param_2) & 0xffffffffffffe000);\n    if (__s != (void *)0xffffffff) {\n      uVar5 = 2;\n      *(int *)(param_1 + 100) = *(int *)(param_1 + 100) + uVar7;\n      goto LAB_000681de;\n    }\n    __s = malloc(uVar7);\n    pvVar9 = __s;\n    if (__s == (void *)0x0) goto LAB_00068311;\n  }\n  else {\n    __s = malloc(param_5 + uVar7);\n    if (__s == (void *)0x0) {\nLAB_00068311:\n                    \n      FUN_00069cb0();\n    }\n    memset(__s,0,param_5);\n    pvVar9 = (void *)(param_5 + (int)__s);\n  }\n  uVar5 = 1;\n  FUN_00066a90(param_1,uVar8,param_3,uVar7,pvVar9);\nLAB_000681de:\n  puVar3 = (uint *)FUN_001e5210(0x24);\n  puVar3[2] = uVar7;\n  *puVar3 = uVar8;\n  puVar3[3] = (uint)__s;\n  puVar3[5] = param_5;\n  puVar3[7] = uVar5;\n  puVar3[1] = param_3;\n  puVar3[4] = 0;\n  *(undefined1 *)(puVar3 + 6) = param_6;\n  *(undefined1 *)(puVar3 + 8) = 1;\n  FUN_00067e20(param_1,puVar3);\n  return puVar3;\n}" ({ "{") (declaration "uint uVar1;" (type_identifier "uint") (identifier "uVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "void *__s;" (primitive_type "void") (pointer_declarator "*__s" (* "*") (identifier "__s")) (; ";")) (declaration "uint *puVar3;" (type_identifier "uint") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "uint uVar8;" (type_identifier "uint") (identifier "uVar8") (; ";")) (declaration "void *pvVar9;" (primitive_type "void") (pointer_declarator "*pvVar9" (* "*") (identifier "pvVar9")) (; ";")) (if_statement "if (param_4 == 0) {\n                    \n    FUN_00069d00("../../gold/fileread.cc",0x1da,"make_view");\n  }" (if "if") (parenthesized_expression "(param_4 == 0)" (( "(") (binary_expression "param_4 == 0" (identifier "param_4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    FUN_00069d00("../../gold/fileread.cc",0x1da,"make_view");\n  }" ({ "{") (expression_statement "FUN_00069d00("../../gold/fileread.cc",0x1da,"make_view");" (call_expression "FUN_00069d00("../../gold/fileread.cc",0x1da,"make_view")" (identifier "FUN_00069d00") (argument_list "("../../gold/fileread.cc",0x1da,"make_view")" (( "(") (string_literal ""../../gold/fileread.cc"" (" """) (string_content "../../gold/fileread.cc") (" """)) (, ",") (number_literal "0x1da") (, ",") (string_literal ""make_view"" (" """) (string_content "make_view") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "uVar5 = *(uint *)(param_1 + 0x24);" (assignment_expression "uVar5 = *(uint *)(param_1 + 0x24)" (identifier "uVar5") (= "=") (pointer_expression "*(uint *)(param_1 + 0x24)" (* "*") (cast_expression "(uint *)(param_1 + 0x24)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x24)" (( "(") (binary_expression "param_1 + 0x24" (identifier "param_1") (+ "+") (number_literal "0x24")) () ")"))))) (; ";")) (expression_statement "uVar1 = *(uint *)(param_1 + 0x28);" (assignment_expression "uVar1 = *(uint *)(param_1 + 0x28)" (identifier "uVar1") (= "=") (pointer_expression "*(uint *)(param_1 + 0x28)" (* "*") (cast_expression "(uint *)(param_1 + 0x28)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x28)" (( "(") (binary_expression "param_1 + 0x28" (identifier "param_1") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (expression_statement "uVar6 = uVar1;" (assignment_expression "uVar6 = uVar1" (identifier "uVar6") (= "=") (identifier "uVar1")) (; ";")) (if_statement "if (((SBORROW4(uVar1,param_3) != SBORROW4(uVar1 - param_3,(uint)(uVar5 < param_2))) !=\n       (int)((uVar1 - param_3) - (uint)(uVar5 < param_2)) < 0) ||\n     (uVar6 = uVar5 - param_2, (uVar1 - param_3) - (uint)(uVar5 < param_2) < (uint)(uVar6 < param_4)\n     )) {\n                    \n    FUN_00069d00("../../gold/fileread.cc",0x1dd,"make_view",uVar6);\n  }" (if "if") (parenthesized_expression "(((SBORROW4(uVar1,param_3) != SBORROW4(uVar1 - param_3,(uint)(uVar5 < param_2))) !=\n       (int)((uVar1 - param_3) - (uint)(uVar5 < param_2)) < 0) ||\n     (uVar6 = uVar5 - param_2, (uVar1 - param_3) - (uint)(uVar5 < param_2) < (uint)(uVar6 < param_4)\n     ))" (( "(") (binary_expression "((SBORROW4(uVar1,param_3) != SBORROW4(uVar1 - param_3,(uint)(uVar5 < param_2))) !=\n       (int)((uVar1 - param_3) - (uint)(uVar5 < param_2)) < 0) ||\n     (uVar6 = uVar5 - param_2, (uVar1 - param_3) - (uint)(uVar5 < param_2) < (uint)(uVar6 < param_4)\n     )" (parenthesized_expression "((SBORROW4(uVar1,param_3) != SBORROW4(uVar1 - param_3,(uint)(uVar5 < param_2))) !=\n       (int)((uVar1 - param_3) - (uint)(uVar5 < param_2)) < 0)" (( "(") (binary_expression "(SBORROW4(uVar1,param_3) != SBORROW4(uVar1 - param_3,(uint)(uVar5 < param_2))) !=\n       (int)((uVar1 - param_3) - (uint)(uVar5 < param_2)) < 0" (parenthesized_expression "(SBORROW4(uVar1,param_3) != SBORROW4(uVar1 - param_3,(uint)(uVar5 < param_2)))" (( "(") (binary_expression "SBORROW4(uVar1,param_3) != SBORROW4(uVar1 - param_3,(uint)(uVar5 < param_2))" (call_expression "SBORROW4(uVar1,param_3)" (identifier "SBORROW4") (argument_list "(uVar1,param_3)" (( "(") (identifier "uVar1") (, ",") (identifier "param_3") () ")"))) (!= "!=") (call_expression "SBORROW4(uVar1 - param_3,(uint)(uVar5 < param_2))" (identifier "SBORROW4") (argument_list "(uVar1 - param_3,(uint)(uVar5 < param_2))" (( "(") (binary_expression "uVar1 - param_3" (identifier "uVar1") (- "-") (identifier "param_3")) (, ",") (call_expression "(uint)(uVar5 < param_2)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar5 < param_2)" (( "(") (binary_expression "uVar5 < param_2" (identifier "uVar5") (< "<") (identifier "param_2")) () ")"))) () ")")))) () ")")) (!= "!=") (binary_expression "(int)((uVar1 - param_3) - (uint)(uVar5 < param_2)) < 0" (cast_expression "(int)((uVar1 - param_3) - (uint)(uVar5 < param_2))" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((uVar1 - param_3) - (uint)(uVar5 < param_2))" (( "(") (binary_expression "(uVar1 - param_3) - (uint)(uVar5 < param_2)" (parenthesized_expression "(uVar1 - param_3)" (( "(") (binary_expression "uVar1 - param_3" (identifier "uVar1") (- "-") (identifier "param_3")) () ")")) (- "-") (call_expression "(uint)(uVar5 < param_2)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar5 < param_2)" (( "(") (binary_expression "uVar5 < param_2" (identifier "uVar5") (< "<") (identifier "param_2")) () ")")))) () ")"))) (< "<") (number_literal "0"))) () ")")) (|| "||") (parenthesized_expression "(uVar6 = uVar5 - param_2, (uVar1 - param_3) - (uint)(uVar5 < param_2) < (uint)(uVar6 < param_4)\n     )" (( "(") (comma_expression "uVar6 = uVar5 - param_2, (uVar1 - param_3) - (uint)(uVar5 < param_2) < (uint)(uVar6 < param_4)" (assignment_expression "uVar6 = uVar5 - param_2" (identifier "uVar6") (= "=") (binary_expression "uVar5 - param_2" (identifier "uVar5") (- "-") (identifier "param_2"))) (, ",") (binary_expression "(uVar1 - param_3) - (uint)(uVar5 < param_2) < (uint)(uVar6 < param_4)" (binary_expression "(uVar1 - param_3) - (uint)(uVar5 < param_2)" (parenthesized_expression "(uVar1 - param_3)" (( "(") (binary_expression "uVar1 - param_3" (identifier "uVar1") (- "-") (identifier "param_3")) () ")")) (- "-") (call_expression "(uint)(uVar5 < param_2)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar5 < param_2)" (( "(") (binary_expression "uVar5 < param_2" (identifier "uVar5") (< "<") (identifier "param_2")) () ")")))) (< "<") (call_expression "(uint)(uVar6 < param_4)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar6 < param_4)" (( "(") (binary_expression "uVar6 < param_4" (identifier "uVar6") (< "<") (identifier "param_4")) () ")"))))) () ")"))) () ")")) (compound_statement "{\n                    \n    FUN_00069d00("../../gold/fileread.cc",0x1dd,"make_view",uVar6);\n  }" ({ "{") (expression_statement "FUN_00069d00("../../gold/fileread.cc",0x1dd,"make_view",uVar6);" (call_expression "FUN_00069d00("../../gold/fileread.cc",0x1dd,"make_view",uVar6)" (identifier "FUN_00069d00") (argument_list "("../../gold/fileread.cc",0x1dd,"make_view",uVar6)" (( "(") (string_literal ""../../gold/fileread.cc"" (" """) (string_content "../../gold/fileread.cc") (" """)) (, ",") (number_literal "0x1dd") (, ",") (string_literal ""make_view"" (" """) (string_content "make_view") (" """)) (, ",") (identifier "uVar6") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar8 = param_2 & 0xffffe000;" (assignment_expression "uVar8 = param_2 & 0xffffe000" (identifier "uVar8") (= "=") (binary_expression "param_2 & 0xffffe000" (identifier "param_2") (& "&") (number_literal "0xffffe000"))) (; ";")) (expression_statement "uVar7 = param_4 + (param_2 - uVar8) + 0x1fff;" (assignment_expression "uVar7 = param_4 + (param_2 - uVar8) + 0x1fff" (identifier "uVar7") (= "=") (binary_expression "param_4 + (param_2 - uVar8) + 0x1fff" (binary_expression "param_4 + (param_2 - uVar8)" (identifier "param_4") (+ "+") (parenthesized_expression "(param_2 - uVar8)" (( "(") (binary_expression "param_2 - uVar8" (identifier "param_2") (- "-") (identifier "uVar8")) () ")"))) (+ "+") (number_literal "0x1fff"))) (; ";")) (expression_statement "uVar6 = uVar7 & 0xffffe000;" (assignment_expression "uVar6 = uVar7 & 0xffffe000" (identifier "uVar6") (= "=") (binary_expression "uVar7 & 0xffffe000" (identifier "uVar7") (& "&") (number_literal "0xffffe000"))) (; ";")) (expression_statement "iVar4 = param_3 + CARRY4(uVar6,uVar8);" (assignment_expression "iVar4 = param_3 + CARRY4(uVar6,uVar8)" (identifier "iVar4") (= "=") (binary_expression "param_3 + CARRY4(uVar6,uVar8)" (identifier "param_3") (+ "+") (call_expression "CARRY4(uVar6,uVar8)" (identifier "CARRY4") (argument_list "(uVar6,uVar8)" (( "(") (identifier "uVar6") (, ",") (identifier "uVar8") () ")"))))) (; ";")) (expression_statement "uVar6 = (uint)(uVar6 + uVar8 < uVar5);" (assignment_expression "uVar6 = (uint)(uVar6 + uVar8 < uVar5)" (identifier "uVar6") (= "=") (call_expression "(uint)(uVar6 + uVar8 < uVar5)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar6 + uVar8 < uVar5)" (( "(") (binary_expression "uVar6 + uVar8 < uVar5" (binary_expression "uVar6 + uVar8" (identifier "uVar6") (+ "+") (identifier "uVar8")) (< "<") (identifier "uVar5")) () ")")))) (; ";")) (expression_statement "iVar2 = iVar4 - uVar1;" (assignment_expression "iVar2 = iVar4 - uVar1" (identifier "iVar2") (= "=") (binary_expression "iVar4 - uVar1" (identifier "iVar4") (- "-") (identifier "uVar1"))) (; ";")) (if_statement "if ((SBORROW4(iVar4,uVar1) != SBORROW4(iVar2,uVar6)) == (int)(iVar2 - uVar6) < 0) {\n    uVar7 = uVar5 - uVar8;\n    if (uVar7 < param_4) {\n                    \n      FUN_00069d00("../../gold/fileread.cc",0x1e6,"make_view",param_3);\n    }\n  }\n  else {\n    uVar7 = uVar7 & 0xffffe000;\n  }" (if "if") (parenthesized_expression "((SBORROW4(iVar4,uVar1) != SBORROW4(iVar2,uVar6)) == (int)(iVar2 - uVar6) < 0)" (( "(") (binary_expression "(SBORROW4(iVar4,uVar1) != SBORROW4(iVar2,uVar6)) == (int)(iVar2 - uVar6) < 0" (parenthesized_expression "(SBORROW4(iVar4,uVar1) != SBORROW4(iVar2,uVar6))" (( "(") (binary_expression "SBORROW4(iVar4,uVar1) != SBORROW4(iVar2,uVar6)" (call_expression "SBORROW4(iVar4,uVar1)" (identifier "SBORROW4") (argument_list "(iVar4,uVar1)" (( "(") (identifier "iVar4") (, ",") (identifier "uVar1") () ")"))) (!= "!=") (call_expression "SBORROW4(iVar2,uVar6)" (identifier "SBORROW4") (argument_list "(iVar2,uVar6)" (( "(") (identifier "iVar2") (, ",") (identifier "uVar6") () ")")))) () ")")) (== "==") (binary_expression "(int)(iVar2 - uVar6) < 0" (cast_expression "(int)(iVar2 - uVar6)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(iVar2 - uVar6)" (( "(") (binary_expression "iVar2 - uVar6" (identifier "iVar2") (- "-") (identifier "uVar6")) () ")"))) (< "<") (number_literal "0"))) () ")")) (compound_statement "{\n    uVar7 = uVar5 - uVar8;\n    if (uVar7 < param_4) {\n                    \n      FUN_00069d00("../../gold/fileread.cc",0x1e6,"make_view",param_3);\n    }\n  }" ({ "{") (expression_statement "uVar7 = uVar5 - uVar8;" (assignment_expression "uVar7 = uVar5 - uVar8" (identifier "uVar7") (= "=") (binary_expression "uVar5 - uVar8" (identifier "uVar5") (- "-") (identifier "uVar8"))) (; ";")) (if_statement "if (uVar7 < param_4) {\n                    \n      FUN_00069d00("../../gold/fileread.cc",0x1e6,"make_view",param_3);\n    }" (if "if") (parenthesized_expression "(uVar7 < param_4)" (( "(") (binary_expression "uVar7 < param_4" (identifier "uVar7") (< "<") (identifier "param_4")) () ")")) (compound_statement "{\n                    \n      FUN_00069d00("../../gold/fileread.cc",0x1e6,"make_view",param_3);\n    }" ({ "{") (expression_statement "FUN_00069d00("../../gold/fileread.cc",0x1e6,"make_view",param_3);" (call_expression "FUN_00069d00("../../gold/fileread.cc",0x1e6,"make_view",param_3)" (identifier "FUN_00069d00") (argument_list "("../../gold/fileread.cc",0x1e6,"make_view",param_3)" (( "(") (string_literal ""../../gold/fileread.cc"" (" """) (string_content "../../gold/fileread.cc") (" """)) (, ",") (number_literal "0x1e6") (, ",") (string_literal ""make_view"" (" """) (string_content "make_view") (" """)) (, ",") (identifier "param_3") () ")"))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    uVar7 = uVar7 & 0xffffe000;\n  }" (else "else") (compound_statement "{\n    uVar7 = uVar7 & 0xffffe000;\n  }" ({ "{") (expression_statement "uVar7 = uVar7 & 0xffffe000;" (assignment_expression "uVar7 = uVar7 & 0xffffe000" (identifier "uVar7") (= "=") (binary_expression "uVar7 & 0xffffe000" (identifier "uVar7") (& "&") (number_literal "0xffffe000"))) (; ";")) (} "}")))) (if_statement "if (param_5 == 0) {\n    FUN_00066930(param_1);\n    __s = mmap64((void *)0x0,uVar7,1,2,*(int *)(param_1 + 0x18),\n                 CONCAT44(param_3,param_2) & 0xffffffffffffe000);\n    if (__s != (void *)0xffffffff) {\n      uVar5 = 2;\n      *(int *)(param_1 + 100) = *(int *)(param_1 + 100) + uVar7;\n      goto LAB_000681de;\n    }\n    __s = malloc(uVar7);\n    pvVar9 = __s;\n    if (__s == (void *)0x0) goto LAB_00068311;\n  }\n  else {\n    __s = malloc(param_5 + uVar7);\n    if (__s == (void *)0x0) {\nLAB_00068311:\n                    \n      FUN_00069cb0();\n    }\n    memset(__s,0,param_5);\n    pvVar9 = (void *)(param_5 + (int)__s);\n  }" (if "if") (parenthesized_expression "(param_5 == 0)" (( "(") (binary_expression "param_5 == 0" (identifier "param_5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    FUN_00066930(param_1);\n    __s = mmap64((void *)0x0,uVar7,1,2,*(int *)(param_1 + 0x18),\n                 CONCAT44(param_3,param_2) & 0xffffffffffffe000);\n    if (__s != (void *)0xffffffff) {\n      uVar5 = 2;\n      *(int *)(param_1 + 100) = *(int *)(param_1 + 100) + uVar7;\n      goto LAB_000681de;\n    }\n    __s = malloc(uVar7);\n    pvVar9 = __s;\n    if (__s == (void *)0x0) goto LAB_00068311;\n  }" ({ "{") (expression_statement "FUN_00066930(param_1);" (call_expression "FUN_00066930(param_1)" (identifier "FUN_00066930") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";")) (expression_statement "__s = mmap64((void *)0x0,uVar7,1,2,*(int *)(param_1 + 0x18),\n                 CONCAT44(param_3,param_2) & 0xffffffffffffe000);" (assignment_expression "__s = mmap64((void *)0x0,uVar7,1,2,*(int *)(param_1 + 0x18),\n                 CONCAT44(param_3,param_2) & 0xffffffffffffe000)" (identifier "__s") (= "=") (call_expression "mmap64((void *)0x0,uVar7,1,2,*(int *)(param_1 + 0x18),\n                 CONCAT44(param_3,param_2) & 0xffffffffffffe000)" (identifier "mmap64") (argument_list "((void *)0x0,uVar7,1,2,*(int *)(param_1 + 0x18),\n                 CONCAT44(param_3,param_2) & 0xffffffffffffe000)" (( "(") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (, ",") (identifier "uVar7") (, ",") (number_literal "1") (, ",") (number_literal "2") (, ",") (pointer_expression "*(int *)(param_1 + 0x18)" (* "*") (cast_expression "(int *)(param_1 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (, ",") (binary_expression "CONCAT44(param_3,param_2) & 0xffffffffffffe000" (call_expression "CONCAT44(param_3,param_2)" (identifier "CONCAT44") (argument_list "(param_3,param_2)" (( "(") (identifier "param_3") (, ",") (identifier "param_2") () ")"))) (& "&") (number_literal "0xffffffffffffe000")) () ")")))) (; ";")) (if_statement "if (__s != (void *)0xffffffff) {\n      uVar5 = 2;\n      *(int *)(param_1 + 100) = *(int *)(param_1 + 100) + uVar7;\n      goto LAB_000681de;\n    }" (if "if") (parenthesized_expression "(__s != (void *)0xffffffff)" (( "(") (binary_expression "__s != (void *)0xffffffff" (identifier "__s") (!= "!=") (cast_expression "(void *)0xffffffff" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xffffffff"))) () ")")) (compound_statement "{\n      uVar5 = 2;\n      *(int *)(param_1 + 100) = *(int *)(param_1 + 100) + uVar7;\n      goto LAB_000681de;\n    }" ({ "{") (expression_statement "uVar5 = 2;" (assignment_expression "uVar5 = 2" (identifier "uVar5") (= "=") (number_literal "2")) (; ";")) (expression_statement "*(int *)(param_1 + 100) = *(int *)(param_1 + 100) + uVar7;" (assignment_expression "*(int *)(param_1 + 100) = *(int *)(param_1 + 100) + uVar7" (pointer_expression "*(int *)(param_1 + 100)" (* "*") (cast_expression "(int *)(param_1 + 100)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 100)" (( "(") (binary_expression "param_1 + 100" (identifier "param_1") (+ "+") (number_literal "100")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 100) + uVar7" (pointer_expression "*(int *)(param_1 + 100)" (* "*") (cast_expression "(int *)(param_1 + 100)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 100)" (( "(") (binary_expression "param_1 + 100" (identifier "param_1") (+ "+") (number_literal "100")) () ")")))) (+ "+") (identifier "uVar7"))) (; ";")) (goto_statement "goto LAB_000681de;" (goto "goto") (statement_identifier "LAB_000681de") (; ";")) (} "}"))) (expression_statement "__s = malloc(uVar7);" (assignment_expression "__s = malloc(uVar7)" (identifier "__s") (= "=") (call_expression "malloc(uVar7)" (identifier "malloc") (argument_list "(uVar7)" (( "(") (identifier "uVar7") () ")")))) (; ";")) (expression_statement "pvVar9 = __s;" (assignment_expression "pvVar9 = __s" (identifier "pvVar9") (= "=") (identifier "__s")) (; ";")) (if_statement "if (__s == (void *)0x0) goto LAB_00068311;" (if "if") (parenthesized_expression "(__s == (void *)0x0)" (( "(") (binary_expression "__s == (void *)0x0" (identifier "__s") (== "==") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_00068311;" (goto "goto") (statement_identifier "LAB_00068311") (; ";"))) (} "}")) (else_clause "else {\n    __s = malloc(param_5 + uVar7);\n    if (__s == (void *)0x0) {\nLAB_00068311:\n                    \n      FUN_00069cb0();\n    }\n    memset(__s,0,param_5);\n    pvVar9 = (void *)(param_5 + (int)__s);\n  }" (else "else") (compound_statement "{\n    __s = malloc(param_5 + uVar7);\n    if (__s == (void *)0x0) {\nLAB_00068311:\n                    \n      FUN_00069cb0();\n    }\n    memset(__s,0,param_5);\n    pvVar9 = (void *)(param_5 + (int)__s);\n  }" ({ "{") (expression_statement "__s = malloc(param_5 + uVar7);" (assignment_expression "__s = malloc(param_5 + uVar7)" (identifier "__s") (= "=") (call_expression "malloc(param_5 + uVar7)" (identifier "malloc") (argument_list "(param_5 + uVar7)" (( "(") (binary_expression "param_5 + uVar7" (identifier "param_5") (+ "+") (identifier "uVar7")) () ")")))) (; ";")) (if_statement "if (__s == (void *)0x0) {\nLAB_00068311:\n                    \n      FUN_00069cb0();\n    }" (if "if") (parenthesized_expression "(__s == (void *)0x0)" (( "(") (binary_expression "__s == (void *)0x0" (identifier "__s") (== "==") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\nLAB_00068311:\n                    \n      FUN_00069cb0();\n    }" ({ "{") (labeled_statement "LAB_00068311:\n                    \n      FUN_00069cb0();" (statement_identifier "LAB_00068311") (: ":") (expression_statement "FUN_00069cb0();" (call_expression "FUN_00069cb0()" (identifier "FUN_00069cb0") (argument_list "()" (( "(") () ")"))) (; ";"))) (} "}"))) (expression_statement "memset(__s,0,param_5);" (call_expression "memset(__s,0,param_5)" (identifier "memset") (argument_list "(__s,0,param_5)" (( "(") (identifier "__s") (, ",") (number_literal "0") (, ",") (identifier "param_5") () ")"))) (; ";")) (expression_statement "pvVar9 = (void *)(param_5 + (int)__s);" (assignment_expression "pvVar9 = (void *)(param_5 + (int)__s)" (identifier "pvVar9") (= "=") (cast_expression "(void *)(param_5 + (int)__s)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + (int)__s)" (( "(") (binary_expression "param_5 + (int)__s" (identifier "param_5") (+ "+") (cast_expression "(int)__s" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "__s"))) () ")")))) (; ";")) (} "}")))) (expression_statement "uVar5 = 1;" (assignment_expression "uVar5 = 1" (identifier "uVar5") (= "=") (number_literal "1")) (; ";")) (expression_statement "FUN_00066a90(param_1,uVar8,param_3,uVar7,pvVar9);" (call_expression "FUN_00066a90(param_1,uVar8,param_3,uVar7,pvVar9)" (identifier "FUN_00066a90") (argument_list "(param_1,uVar8,param_3,uVar7,pvVar9)" (( "(") (identifier "param_1") (, ",") (identifier "uVar8") (, ",") (identifier "param_3") (, ",") (identifier "uVar7") (, ",") (identifier "pvVar9") () ")"))) (; ";")) (labeled_statement "LAB_000681de:\n  puVar3 = (uint *)FUN_001e5210(0x24);" (statement_identifier "LAB_000681de") (: ":") (expression_statement "puVar3 = (uint *)FUN_001e5210(0x24);" (assignment_expression "puVar3 = (uint *)FUN_001e5210(0x24)" (identifier "puVar3") (= "=") (cast_expression "(uint *)FUN_001e5210(0x24)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_001e5210(0x24)" (identifier "FUN_001e5210") (argument_list "(0x24)" (( "(") (number_literal "0x24") () ")"))))) (; ";"))) (expression_statement "puVar3[2] = uVar7;" (assignment_expression "puVar3[2] = uVar7" (subscript_expression "puVar3[2]" (identifier "puVar3") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "uVar7")) (; ";")) (expression_statement "*puVar3 = uVar8;" (assignment_expression "*puVar3 = uVar8" (pointer_expression "*puVar3" (* "*") (identifier "puVar3")) (= "=") (identifier "uVar8")) (; ";")) (expression_statement "puVar3[3] = (uint)__s;" (assignment_expression "puVar3[3] = (uint)__s" (subscript_expression "puVar3[3]" (identifier "puVar3") ([ "[") (number_literal "3") (] "]")) (= "=") (cast_expression "(uint)__s" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "__s"))) (; ";")) (expression_statement "puVar3[5] = param_5;" (assignment_expression "puVar3[5] = param_5" (subscript_expression "puVar3[5]" (identifier "puVar3") ([ "[") (number_literal "5") (] "]")) (= "=") (identifier "param_5")) (; ";")) (expression_statement "puVar3[7] = uVar5;" (assignment_expression "puVar3[7] = uVar5" (subscript_expression "puVar3[7]" (identifier "puVar3") ([ "[") (number_literal "7") (] "]")) (= "=") (identifier "uVar5")) (; ";")) (expression_statement "puVar3[1] = param_3;" (assignment_expression "puVar3[1] = param_3" (subscript_expression "puVar3[1]" (identifier "puVar3") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "param_3")) (; ";")) (expression_statement "puVar3[4] = 0;" (assignment_expression "puVar3[4] = 0" (subscript_expression "puVar3[4]" (identifier "puVar3") ([ "[") (number_literal "4") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)(puVar3 + 6) = param_6;" (assignment_expression "*(undefined1 *)(puVar3 + 6) = param_6" (pointer_expression "*(undefined1 *)(puVar3 + 6)" (* "*") (cast_expression "(undefined1 *)(puVar3 + 6)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + 6)" (( "(") (binary_expression "puVar3 + 6" (identifier "puVar3") (+ "+") (number_literal "6")) () ")")))) (= "=") (identifier "param_6")) (; ";")) (expression_statement "*(undefined1 *)(puVar3 + 8) = 1;" (assignment_expression "*(undefined1 *)(puVar3 + 8) = 1" (pointer_expression "*(undefined1 *)(puVar3 + 8)" (* "*") (cast_expression "(undefined1 *)(puVar3 + 8)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + 8)" (( "(") (binary_expression "puVar3 + 8" (identifier "puVar3") (+ "+") (number_literal "8")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "FUN_00067e20(param_1,puVar3);" (call_expression "FUN_00067e20(param_1,puVar3)" (identifier "FUN_00067e20") (argument_list "(param_1,puVar3)" (( "(") (identifier "param_1") (, ",") (identifier "puVar3") () ")"))) (; ";")) (return_statement "return puVar3;" (return "return") (identifier "puVar3") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* DWARF original prototype: View * make_view(File_read * this, off_t start, section_size_type size,
   uint byteshift, bool cache) */

type_3 * __thiscall
gold::File_read::make_view
          (File_read *this,off_t var_15,section_size_type var_1,type_1 var_12,bool cache)

{
  type_1 var_5;
  int var_4;
  int var_11;
  type_2 *var_16;
  type_3 *v;
  type_1 var_9;
  int var_10;
  type_4 DVar6;
  type_1 var_7;
  type_1 var_6;
  type_2 *p;
  
  if (var_1 == 0) {
                    /* WARNING: Subroutine does not return */
    var_2("../../gold/fileread.cc",0x1da,"make_view");
  }
  var_5 = (type_1)this->size_;
  var_4 = *(int *)((int)&this->size_ + 4);
  if (((var_3(var_4,var_15._4_4_) != var_3(var_4 - var_15._4_4_,(type_1)(var_5 < (type_1)var_15))) !=
       (int)((var_4 - var_15._4_4_) - (type_1)(var_5 < (type_1)var_15)) < 0) ||
     ((var_4 - var_15._4_4_) - (type_1)(var_5 < (type_1)var_15) < (type_1)(var_5 - (type_1)var_15 < var_1))) {
                    /* WARNING: Subroutine does not return */
    var_2("../../gold/fileread.cc",0x1dd,"make_view");
  }
  var_6 = (type_1)var_15 & 0xffffe000;
  var_7 = var_1 + ((type_1)var_15 - var_6) + 0x1fff;
  var_9 = var_7 & 0xffffe000;
  var_10 = var_15._4_4_ + (type_1)var_8(var_9,var_6);
  var_9 = (type_1)(var_9 + var_6 < var_5);
  var_11 = var_10 - var_4;
  if ((var_3(var_10,var_4) != var_3(var_11,var_9)) == (int)(var_11 - var_9) < 0) {
    var_7 = var_5 - var_6;
    if (var_7 < var_1) {
                    /* WARNING: Subroutine does not return */
      var_2("../../gold/fileread.cc",0x1e6,"make_view");
    }
  }
  else {
    var_7 = var_7 & 0xffffe000;
  }
  if (var_12 == 0) {
    var_13(this);
    var_16 = (type_2 *)var_14((void *)0x0,var_7,1,2,this->descriptor_,var_15 & 0xffffffffffffe000);
    if (var_16 != (type_2 *)0xffffffff) {
      DVar6 = DATA_MMAPPED;
      this->mapped_bytes_ = this->mapped_bytes_ + var_7;
      goto LAB_000681de;
    }
    var_16 = (type_2 *)var_17(var_7);
    p = var_16;
    if (var_16 == (type_2 *)0x0) goto LAB_00068311;
  }
  else {
    var_16 = (type_2 *)var_17(var_12 + var_7);
    if (var_16 == (type_2 *)0x0) {
LAB_00068311:
                    /* WARNING: Subroutine does not return */
      var_18();
    }
    var_19(var_16,0,var_12);
    p = var_16 + var_12;
  }
  DVar6 = DATA_ALLOCATED_ARRAY;
  var_20(this,var_15 & 0xffffffffffffe000,var_7,p);
LAB_000681de:
  v = (type_3 *)var_21(0x24);
  v->size_ = var_7;
  *(type_1 *)&v->start_ = var_6;
  v->data_ = var_16;
  v->byteshift_ = var_12;
  v->data_ownership_ = DVar6;
  *(int *)((int)&v->start_ + 4) = var_15._4_4_;
  v->lock_count_ = 0;
  v->cache_ = cache;
  v->accessed_ = true;
  var_22(this,v);
  return v;
}


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

/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */

uint * MASKED(int param_1,uint param_2,uint param_3,uint param_4,size_t param_5,
                   undefined1 param_6)

{
  uint uVar1;
  int iVar2;
  void *__s;
  uint *puVar3;
  int iVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  void *pvVar9;
  
  if (param_4 == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_00069d00("../../gold/fileread.cc",0x1da,"make_view");
  }
  uVar5 = *(uint *)(param_1 + 0x24);
  uVar1 = *(uint *)(param_1 + 0x28);
  uVar6 = uVar1;
  if (((SBORROW4(uVar1,param_3) != SBORROW4(uVar1 - param_3,(uint)(uVar5 < param_2))) !=
       (int)((uVar1 - param_3) - (uint)(uVar5 < param_2)) < 0) ||
     (uVar6 = uVar5 - param_2, (uVar1 - param_3) - (uint)(uVar5 < param_2) < (uint)(uVar6 < param_4)
     )) {
                    /* WARNING: Subroutine does not return */
    FUN_00069d00("../../gold/fileread.cc",0x1dd,"make_view",uVar6);
  }
  uVar8 = param_2 & 0xffffe000;
  uVar7 = param_4 + (param_2 - uVar8) + 0x1fff;
  uVar6 = uVar7 & 0xffffe000;
  iVar4 = param_3 + CARRY4(uVar6,uVar8);
  uVar6 = (uint)(uVar6 + uVar8 < uVar5);
  iVar2 = iVar4 - uVar1;
  if ((SBORROW4(iVar4,uVar1) != SBORROW4(iVar2,uVar6)) == (int)(iVar2 - uVar6) < 0) {
    uVar7 = uVar5 - uVar8;
    if (uVar7 < param_4) {
                    /* WARNING: Subroutine does not return */
      FUN_00069d00("../../gold/fileread.cc",0x1e6,"make_view",param_3);
    }
  }
  else {
    uVar7 = uVar7 & 0xffffe000;
  }
  if (param_5 == 0) {
    FUN_00066930(param_1);
    __s = mmap64((void *)0x0,uVar7,1,2,*(int *)(param_1 + 0x18),
                 CONCAT44(param_3,param_2) & 0xffffffffffffe000);
    if (__s != (void *)0xffffffff) {
      uVar5 = 2;
      *(int *)(param_1 + 100) = *(int *)(param_1 + 100) + uVar7;
      goto LAB_000681de;
    }
    __s = malloc(uVar7);
    pvVar9 = __s;
    if (__s == (void *)0x0) goto LAB_00068311;
  }
  else {
    __s = malloc(param_5 + uVar7);
    if (__s == (void *)0x0) {
LAB_00068311:
                    /* WARNING: Subroutine does not return */
      FUN_00069cb0();
    }
    memset(__s,0,param_5);
    pvVar9 = (void *)(param_5 + (int)__s);
  }
  uVar5 = 1;
  FUN_00066a90(param_1,uVar8,param_3,uVar7,pvVar9);
LAB_000681de:
  puVar3 = (uint *)FUN_001e5210(0x24);
  puVar3[2] = uVar7;
  *puVar3 = uVar8;
  puVar3[3] = (uint)__s;
  puVar3[5] = param_5;
  puVar3[7] = uVar5;
  puVar3[1] = param_3;
  puVar3[4] = 0;
  *(undefined1 *)(puVar3 + 6) = param_6;
  *(undefined1 *)(puVar3 + 8) = 1;
  FUN_00067e20(param_1,puVar3);
  return puVar3;
}

