
/* WARNING: Type propagation algorithm not settling */
/* DWARF original prototype: void read_armap<64>(Archive * this, off_t start, section_size_type
   size) */

void __thiscall gold::Archive::read_armap<64>(Archive *this,off_t start,section_size_type size)

{
  ulong *puVar1;
  uint uVar2;
  pointer pAVar3;
  pointer pcVar4;
  _Bit_type *p_Var5;
  ulong *puVar6;
  ulong uVar7;
  ulong uVar8;
  ulong uVar9;
  size_t sVar10;
  char *format;
  long lVar11;
  _Bit_type *p_Var12;
  pointer pAVar13;
  long to;
  ulong uVar14;
  long lVar15;
  ulong uVar16;
  ulong *puVar17;
  off_t *poVar18;
  iterator __position;
  undefined4 uStack_3c;
  
  puVar6 = (ulong *)File_read::get_view(&this->input_file_->file_,0,start,size,true,false);
  uVar7 = *puVar6;
  puVar17 = puVar6 + 1;
  uVar7 = uVar7 >> 0x38 | (uVar7 & 0xff000000000000) >> 0x28 | (uVar7 & 0xff0000000000) >> 0x18 |
          (uVar7 & 0xff00000000) >> 8 | (uVar7 & 0xff000000) << 8 | (uVar7 & 0xff0000) << 0x18 |
          (uVar7 & 0xff00) << 0x28 | uVar7 << 0x38;
  puVar1 = puVar17 + uVar7;
  uVar8 = (long)puVar6 + (size - (long)puVar1);
  std::string::_M_replace
            ((string *)&this->armap_names_,0,(this->armap_names_)._M_string_length,(char *)puVar1,
             uVar8);
  pAVar3 = (this->armap_).
           super__Vector_base<gold::Archive::Armap_entry,_std::allocator<gold::Archive::Armap_entry>_>
           ._M_impl._M_finish;
  pAVar13 = (this->armap_).
            super__Vector_base<gold::Archive::Armap_entry,_std::allocator<gold::Archive::Armap_entry>_>
            ._M_impl._M_start;
  uVar9 = (long)pAVar3 - (long)pAVar13 >> 4;
  if (uVar9 < uVar7) {
    std::vector<gold::Archive::Armap_entry,_std::allocator<gold::Archive::Armap_entry>_>::
    _M_default_append(&this->armap_,uVar7 - uVar9);
  }
  else if ((uVar7 < uVar9) && (pAVar13 = pAVar13 + uVar7, pAVar3 != pAVar13)) {
    (this->armap_).
    super__Vector_base<gold::Archive::Armap_entry,_std::allocator<gold::Archive::Armap_entry>_>.
    _M_impl._M_finish = pAVar13;
  }
  if (uVar7 != 0) {
    uVar9 = 0;
    poVar18 = &((this->armap_).
                super__Vector_base<gold::Archive::Armap_entry,_std::allocator<gold::Archive::Armap_entry>_>
                ._M_impl._M_start)->file_offset;
    uVar16 = 0xffffffffffffffff;
    do {
      ((Armap_entry *)(poVar18 + -1))->name_offset = uVar9;
      uVar14 = *puVar17;
      puVar17 = puVar17 + 1;
      uVar14 = uVar14 >> 0x38 | (uVar14 & 0xff000000000000) >> 0x28 |
               (uVar14 & 0xff0000000000) >> 0x18 | (uVar14 & 0xff00000000) >> 8 |
               (uVar14 & 0xff000000) << 8 | (uVar14 & 0xff0000) << 0x18 | (uVar14 & 0xff00) << 0x28
               | uVar14 << 0x38;
      *poVar18 = uVar14;
      sVar10 = strlen((char *)((long)puVar1 + uVar9));
      uVar9 = uVar9 + 1 + sVar10;
      if (uVar14 != uVar16) {
        this->num_members_ = this->num_members_ + 1;
      }
      poVar18 = poVar18 + 2;
      uVar16 = uVar14;
    } while (puVar17 != puVar6 + uVar7 + 1);
    if (uVar8 < uVar9) {
      pcVar4 = (this->name_)._M_dataplus._M_p;
      format = (char *)gettext("%s: bad archive symbol table names");
      gold_error(format,pcVar4);
    }
  }
  p_Var5 = (this->armap_checked_).super__Bvector_base<std::allocator<bool>_>._M_impl.
           super__Bvector_impl_data._M_finish.super__Bit_iterator_base._M_p;
  p_Var12 = (this->armap_checked_).super__Bvector_base<std::allocator<bool>_>._M_impl.
            super__Bvector_impl_data._M_start.super__Bit_iterator_base._M_p;
  uVar2 = (this->armap_checked_).super__Bvector_base<std::allocator<bool>_>._M_impl.
          super__Bvector_impl_data._M_finish.super__Bit_iterator_base._M_offset;
  uVar9 = (ulong)(this->armap_checked_).super__Bvector_base<std::allocator<bool>_>._M_impl.
                 super__Bvector_impl_data._M_start.super__Bit_iterator_base._M_offset;
  uVar8 = ((ulong)uVar2 + ((long)p_Var5 - (long)p_Var12) * 8) - uVar9;
  if (uVar7 < uVar8) {
    lVar15 = uVar7 + uVar9;
    lVar11 = lVar15 + 0x3f;
    if (-1 < lVar15) {
      lVar11 = lVar15;
    }
    p_Var12 = p_Var12 + (lVar11 >> 6);
    lVar15 = lVar15 % 0x40;
    if (lVar15 < 0) {
      lVar15 = lVar15 + 0x40;
      p_Var12 = p_Var12 + -1;
    }
    (this->armap_checked_).super__Bvector_base<std::allocator<bool>_>._M_impl.
    super__Bvector_impl_data._M_finish.super__Bit_iterator_base._M_offset = (uint)lVar15;
    (this->armap_checked_).super__Bvector_base<std::allocator<bool>_>._M_impl.
    super__Bvector_impl_data._M_finish.super__Bit_iterator_base._M_p = p_Var12;
    return;
  }
  __position.super__Bit_iterator_base._12_4_ = uStack_3c;
  __position.super__Bit_iterator_base._M_offset = uVar2;
  __position.super__Bit_iterator_base._M_p = p_Var5;
  std::vector<bool,_std::allocator<bool>_>::_M_fill_insert
            (&this->armap_checked_,__position,uVar7 - uVar8,false);
  return;
}



void FUN_00237410(long param_1,undefined8 param_2,long param_3)

{
  ulong *puVar1;
  undefined8 uVar2;
  ulong *puVar3;
  ulong uVar4;
  ulong uVar5;
  ulong uVar6;
  size_t sVar7;
  undefined8 uVar8;
  long lVar9;
  ulong uVar10;
  long lVar11;
  ulong uVar12;
  ulong *puVar13;
  ulong *puVar14;
  undefined4 uStack_3c;
  
  puVar3 = (ulong *)FUN_0016b970(*(long *)(param_1 + 0x38) + 0x28,0,param_2,param_3,1,0);
  uVar4 = *puVar3;
  puVar13 = puVar3 + 1;
  uVar4 = uVar4 >> 0x38 | (uVar4 & 0xff000000000000) >> 0x28 | (uVar4 & 0xff0000000000) >> 0x18 |
          (uVar4 & 0xff00000000) >> 8 | (uVar4 & 0xff000000) << 8 | (uVar4 & 0xff0000) << 0x18 |
          (uVar4 & 0xff00) << 0x28 | uVar4 << 0x38;
  puVar1 = puVar13 + uVar4;
  uVar5 = (long)puVar3 + (param_3 - (long)puVar1);
  FUN_0027e650(param_1 + 0x58,0,*(undefined8 *)(param_1 + 0x60),puVar1,uVar5);
  uVar6 = *(long *)(param_1 + 0x48) - *(long *)(param_1 + 0x40) >> 4;
  if (uVar6 < uVar4) {
    FUN_00236ff0(param_1 + 0x40,uVar4 - uVar6);
  }
  else if ((uVar4 < uVar6) &&
          (lVar9 = *(long *)(param_1 + 0x40) + uVar4 * 0x10, *(long *)(param_1 + 0x48) != lVar9)) {
    *(long *)(param_1 + 0x48) = lVar9;
  }
  if (uVar4 != 0) {
    uVar6 = 0;
    puVar14 = (ulong *)(*(long *)(param_1 + 0x40) + 8);
    uVar12 = 0xffffffffffffffff;
    do {
      puVar14[-1] = uVar6;
      uVar10 = *puVar13;
      puVar13 = puVar13 + 1;
      uVar10 = uVar10 >> 0x38 | (uVar10 & 0xff000000000000) >> 0x28 |
               (uVar10 & 0xff0000000000) >> 0x18 | (uVar10 & 0xff00000000) >> 8 |
               (uVar10 & 0xff000000) << 8 | (uVar10 & 0xff0000) << 0x18 | (uVar10 & 0xff00) << 0x28
               | uVar10 << 0x38;
      *puVar14 = uVar10;
      sVar7 = strlen((char *)((long)puVar1 + uVar6));
      uVar6 = uVar6 + 1 + sVar7;
      if (uVar10 != uVar12) {
        *(int *)(param_1 + 0x170) = *(int *)(param_1 + 0x170) + 1;
      }
      puVar14 = puVar14 + 2;
      uVar12 = uVar10;
    } while (puVar13 != puVar3 + uVar4 + 1);
    if (uVar5 < uVar6) {
      uVar2 = *(undefined8 *)(param_1 + 0x18);
      uVar8 = gettext("%s: bad archive symbol table names");
      FUN_001690a0(uVar8,uVar2);
    }
  }
  uVar5 = ((ulong)*(uint *)(param_1 + 0xb0) +
          (*(long *)(param_1 + 0xa8) - *(long *)(param_1 + 0x98)) * 8) -
          (ulong)*(uint *)(param_1 + 0xa0);
  if (uVar4 < uVar5) {
    lVar11 = uVar4 + *(uint *)(param_1 + 0xa0);
    lVar9 = lVar11 + 0x3f;
    if (-1 < lVar11) {
      lVar9 = lVar11;
    }
    lVar9 = *(long *)(param_1 + 0x98) + (lVar9 >> 6) * 8;
    lVar11 = lVar11 % 0x40;
    if (lVar11 < 0) {
      lVar11 = lVar11 + 0x40;
      lVar9 = lVar9 + -8;
    }
    *(int *)(param_1 + 0xb0) = (int)lVar11;
    *(long *)(param_1 + 0xa8) = lVar9;
    return;
  }
  FUN_0015c0a0(param_1 + 0x98,*(long *)(param_1 + 0xa8),
               CONCAT44(uStack_3c,*(uint *)(param_1 + 0xb0)),uVar4 - uVar5,0);
  return;
}


PUSH R15
MOV RCX,RDX
MOV R15,RDI
XOR R9D,R9D
PUSH R14
MOV R8D,0x1
PUSH R13
MOV R13,RDX
MOV RDX,RSI
XOR ESI,ESI
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x58
MOV RAX,qword ptr [RDI + 0x38]
LEA RDI,[RAX + 0x28]
CALL 0x0016b970
MOV RDX,qword ptr [R15 + 0x60]
LEA RDI,[R15 + 0x58]
MOV RBX,RAX
MOV RAX,qword ptr [RAX]
LEA R12,[RBX + 0x8]
BSWAP RAX
LEA RBP,[RAX*0x8]
MOV qword ptr [RSP + 0x10],RAX
MOV R14,RAX
LEA RSI,[R12 + RBP*0x1]
LEA RAX,[RBX + R13*0x1]
SUB RAX,RSI
MOV RCX,RSI
MOV qword ptr [RSP],RSI
XOR ESI,ESI
MOV R8,RAX
MOV qword ptr [RSP + 0x18],RAX
CALL 0x0027e650
MOV RCX,qword ptr [R15 + 0x48]
MOV RDX,qword ptr [R15 + 0x40]
MOV RAX,RCX
SUB RAX,RDX
SAR RAX,0x4
CMP R14,RAX
JA 0x00237600
JC 0x002375c8
CMP qword ptr [RSP + 0x10],0x0
JZ 0x0023753e
MOV RAX,qword ptr [R15 + 0x40]
XOR R13D,R13D
LEA R14,[RAX + 0x8]
LEA RAX,[RBX + RBP*0x1 + 0x8]
MOV RBP,-0x1
MOV qword ptr [RSP + 0x8],RAX
NOP dword ptr [RAX]
MOV qword ptr [R14 + -0x8],R13
MOV RBX,qword ptr [R12]
ADD R12,0x8
MOV RAX,qword ptr [RSP]
BSWAP RBX
MOV qword ptr [R14],RBX
LEA RDI,[RAX + R13*0x1]
CALL 0x0013e490
LEA RAX,[R13 + RAX*0x1 + 0x1]
MOV R13,RAX
CMP RBX,RBP
JZ 0x0023750c
ADD dword ptr [R15 + 0x170],0x1
ADD R14,0x10
MOV RBP,RBX
CMP R12,qword ptr [RSP + 0x8]
JNZ 0x002374d8
CMP RAX,qword ptr [RSP + 0x18]
JBE 0x0023753e
MOV RBX,qword ptr [R15 + 0x18]
LEA RDI,[0x322d80]
CALL 0x0013e320
MOV RDI,RAX
MOV RSI,RBX
XOR EAX,EAX
CALL 0x001690a0
MOV RSI,qword ptr [R15 + 0xa8]
MOV RDX,qword ptr [R15 + 0x98]
MOV EAX,dword ptr [R15 + 0xb0]
MOV ECX,dword ptr [R15 + 0xa0]
MOV R8,RSI
MOV RBX,qword ptr [RSP + 0x10]
SUB R8,RDX
MOV RDI,RAX
LEA RAX,[RAX + R8*0x8]
SUB RAX,RCX
CMP RBX,RAX
JNC 0x00237620
ADD RBX,RCX
LEA RAX,[RBX + 0x3f]
MOV R13,RBX
CMOVNS RAX,RBX
SAR RAX,0x6
LEA RDX,[RDX + RAX*0x8]
MOV RAX,RBX
SAR RAX,0x3f
SHR RAX,0x3a
ADD R13,RAX
AND R13D,0x3f
SUB R13,RAX
JS 0x002375f0
MOV dword ptr [R15 + 0xb0],R13D
MOV qword ptr [R15 + 0xa8],RDX
ADD RSP,0x58
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV RAX,qword ptr [RSP + 0x10]
SHL RAX,0x4
ADD RDX,RAX
CMP RCX,RDX
JZ 0x002374a9
MOV qword ptr [R15 + 0x48],RDX
JMP 0x002374a9
ADD R13,0x40
SUB RDX,0x8
JMP 0x002375a5
MOV RSI,qword ptr [RSP + 0x10]
LEA RDI,[R15 + 0x40]
SUB RSI,RAX
CALL 0x00236ff0
JMP 0x002374a9
MOV RCX,qword ptr [RSP + 0x10]
MOV dword ptr [RSP + 0x48],EDI
XOR R8D,R8D
LEA RDI,[R15 + 0x98]
MOV RDX,qword ptr [RSP + 0x48]
ADD RSP,0x58
POP RBX
SUB RCX,RAX
POP RBP
POP R12
POP R13
POP R14
POP R15
JMP 0x0015c0a0
(translation_unit "void FUN_00237410(long param_1,undefined8 param_2,long param_3)\n\n{\n  ulong *puVar1;\n  undefined8 uVar2;\n  ulong *puVar3;\n  ulong uVar4;\n  ulong uVar5;\n  ulong uVar6;\n  size_t sVar7;\n  undefined8 uVar8;\n  long lVar9;\n  ulong uVar10;\n  long lVar11;\n  ulong uVar12;\n  ulong *puVar13;\n  ulong *puVar14;\n  undefined4 uStack_3c;\n  \n  puVar3 = (ulong *)FUN_0016b970(*(long *)(param_1 + 0x38) + 0x28,0,param_2,param_3,1,0);\n  uVar4 = *puVar3;\n  puVar13 = puVar3 + 1;\n  uVar4 = uVar4 >> 0x38 | (uVar4 & 0xff000000000000) >> 0x28 | (uVar4 & 0xff0000000000) >> 0x18 |\n          (uVar4 & 0xff00000000) >> 8 | (uVar4 & 0xff000000) << 8 | (uVar4 & 0xff0000) << 0x18 |\n          (uVar4 & 0xff00) << 0x28 | uVar4 << 0x38;\n  puVar1 = puVar13 + uVar4;\n  uVar5 = (long)puVar3 + (param_3 - (long)puVar1);\n  FUN_0027e650(param_1 + 0x58,0,*(undefined8 *)(param_1 + 0x60),puVar1,uVar5);\n  uVar6 = *(long *)(param_1 + 0x48) - *(long *)(param_1 + 0x40) >> 4;\n  if (uVar6 < uVar4) {\n    FUN_00236ff0(param_1 + 0x40,uVar4 - uVar6);\n  }\n  else if ((uVar4 < uVar6) &&\n          (lVar9 = *(long *)(param_1 + 0x40) + uVar4 * 0x10, *(long *)(param_1 + 0x48) != lVar9)) {\n    *(long *)(param_1 + 0x48) = lVar9;\n  }\n  if (uVar4 != 0) {\n    uVar6 = 0;\n    puVar14 = (ulong *)(*(long *)(param_1 + 0x40) + 8);\n    uVar12 = 0xffffffffffffffff;\n    do {\n      puVar14[-1] = uVar6;\n      uVar10 = *puVar13;\n      puVar13 = puVar13 + 1;\n      uVar10 = uVar10 >> 0x38 | (uVar10 & 0xff000000000000) >> 0x28 |\n               (uVar10 & 0xff0000000000) >> 0x18 | (uVar10 & 0xff00000000) >> 8 |\n               (uVar10 & 0xff000000) << 8 | (uVar10 & 0xff0000) << 0x18 | (uVar10 & 0xff00) << 0x28\n               | uVar10 << 0x38;\n      *puVar14 = uVar10;\n      sVar7 = strlen((char *)((long)puVar1 + uVar6));\n      uVar6 = uVar6 + 1 + sVar7;\n      if (uVar10 != uVar12) {\n        *(int *)(param_1 + 0x170) = *(int *)(param_1 + 0x170) + 1;\n      }\n      puVar14 = puVar14 + 2;\n      uVar12 = uVar10;\n    } while (puVar13 != puVar3 + uVar4 + 1);\n    if (uVar5 < uVar6) {\n      uVar2 = *(undefined8 *)(param_1 + 0x18);\n      uVar8 = gettext("%s: bad archive symbol table names");\n      FUN_001690a0(uVar8,uVar2);\n    }\n  }\n  uVar5 = ((ulong)*(uint *)(param_1 + 0xb0) +\n          (*(long *)(param_1 + 0xa8) - *(long *)(param_1 + 0x98)) * 8) -\n          (ulong)*(uint *)(param_1 + 0xa0);\n  if (uVar4 < uVar5) {\n    lVar11 = uVar4 + *(uint *)(param_1 + 0xa0);\n    lVar9 = lVar11 + 0x3f;\n    if (-1 < lVar11) {\n      lVar9 = lVar11;\n    }\n    lVar9 = *(long *)(param_1 + 0x98) + (lVar9 >> 6) * 8;\n    lVar11 = lVar11 % 0x40;\n    if (lVar11 < 0) {\n      lVar11 = lVar11 + 0x40;\n      lVar9 = lVar9 + -8;\n    }\n    *(int *)(param_1 + 0xb0) = (int)lVar11;\n    *(long *)(param_1 + 0xa8) = lVar9;\n    return;\n  }\n  FUN_0015c0a0(param_1 + 0x98,*(long *)(param_1 + 0xa8),\n               CONCAT44(uStack_3c,*(uint *)(param_1 + 0xb0)),uVar4 - uVar5,0);\n  return;\n}\n\n" (function_definition "void FUN_00237410(long param_1,undefined8 param_2,long param_3)\n\n{\n  ulong *puVar1;\n  undefined8 uVar2;\n  ulong *puVar3;\n  ulong uVar4;\n  ulong uVar5;\n  ulong uVar6;\n  size_t sVar7;\n  undefined8 uVar8;\n  long lVar9;\n  ulong uVar10;\n  long lVar11;\n  ulong uVar12;\n  ulong *puVar13;\n  ulong *puVar14;\n  undefined4 uStack_3c;\n  \n  puVar3 = (ulong *)FUN_0016b970(*(long *)(param_1 + 0x38) + 0x28,0,param_2,param_3,1,0);\n  uVar4 = *puVar3;\n  puVar13 = puVar3 + 1;\n  uVar4 = uVar4 >> 0x38 | (uVar4 & 0xff000000000000) >> 0x28 | (uVar4 & 0xff0000000000) >> 0x18 |\n          (uVar4 & 0xff00000000) >> 8 | (uVar4 & 0xff000000) << 8 | (uVar4 & 0xff0000) << 0x18 |\n          (uVar4 & 0xff00) << 0x28 | uVar4 << 0x38;\n  puVar1 = puVar13 + uVar4;\n  uVar5 = (long)puVar3 + (param_3 - (long)puVar1);\n  FUN_0027e650(param_1 + 0x58,0,*(undefined8 *)(param_1 + 0x60),puVar1,uVar5);\n  uVar6 = *(long *)(param_1 + 0x48) - *(long *)(param_1 + 0x40) >> 4;\n  if (uVar6 < uVar4) {\n    FUN_00236ff0(param_1 + 0x40,uVar4 - uVar6);\n  }\n  else if ((uVar4 < uVar6) &&\n          (lVar9 = *(long *)(param_1 + 0x40) + uVar4 * 0x10, *(long *)(param_1 + 0x48) != lVar9)) {\n    *(long *)(param_1 + 0x48) = lVar9;\n  }\n  if (uVar4 != 0) {\n    uVar6 = 0;\n    puVar14 = (ulong *)(*(long *)(param_1 + 0x40) + 8);\n    uVar12 = 0xffffffffffffffff;\n    do {\n      puVar14[-1] = uVar6;\n      uVar10 = *puVar13;\n      puVar13 = puVar13 + 1;\n      uVar10 = uVar10 >> 0x38 | (uVar10 & 0xff000000000000) >> 0x28 |\n               (uVar10 & 0xff0000000000) >> 0x18 | (uVar10 & 0xff00000000) >> 8 |\n               (uVar10 & 0xff000000) << 8 | (uVar10 & 0xff0000) << 0x18 | (uVar10 & 0xff00) << 0x28\n               | uVar10 << 0x38;\n      *puVar14 = uVar10;\n      sVar7 = strlen((char *)((long)puVar1 + uVar6));\n      uVar6 = uVar6 + 1 + sVar7;\n      if (uVar10 != uVar12) {\n        *(int *)(param_1 + 0x170) = *(int *)(param_1 + 0x170) + 1;\n      }\n      puVar14 = puVar14 + 2;\n      uVar12 = uVar10;\n    } while (puVar13 != puVar3 + uVar4 + 1);\n    if (uVar5 < uVar6) {\n      uVar2 = *(undefined8 *)(param_1 + 0x18);\n      uVar8 = gettext("%s: bad archive symbol table names");\n      FUN_001690a0(uVar8,uVar2);\n    }\n  }\n  uVar5 = ((ulong)*(uint *)(param_1 + 0xb0) +\n          (*(long *)(param_1 + 0xa8) - *(long *)(param_1 + 0x98)) * 8) -\n          (ulong)*(uint *)(param_1 + 0xa0);\n  if (uVar4 < uVar5) {\n    lVar11 = uVar4 + *(uint *)(param_1 + 0xa0);\n    lVar9 = lVar11 + 0x3f;\n    if (-1 < lVar11) {\n      lVar9 = lVar11;\n    }\n    lVar9 = *(long *)(param_1 + 0x98) + (lVar9 >> 6) * 8;\n    lVar11 = lVar11 % 0x40;\n    if (lVar11 < 0) {\n      lVar11 = lVar11 + 0x40;\n      lVar9 = lVar9 + -8;\n    }\n    *(int *)(param_1 + 0xb0) = (int)lVar11;\n    *(long *)(param_1 + 0xa8) = lVar9;\n    return;\n  }\n  FUN_0015c0a0(param_1 + 0x98,*(long *)(param_1 + 0xa8),\n               CONCAT44(uStack_3c,*(uint *)(param_1 + 0xb0)),uVar4 - uVar5,0);\n  return;\n}" primitive_type (function_declarator "FUN_00237410(long param_1,undefined8 param_2,long param_3)" identifier (parameter_list "(long param_1,undefined8 param_2,long param_3)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined8 param_2" type_identifier identifier) , (parameter_declaration "long param_3" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  ulong *puVar1;\n  undefined8 uVar2;\n  ulong *puVar3;\n  ulong uVar4;\n  ulong uVar5;\n  ulong uVar6;\n  size_t sVar7;\n  undefined8 uVar8;\n  long lVar9;\n  ulong uVar10;\n  long lVar11;\n  ulong uVar12;\n  ulong *puVar13;\n  ulong *puVar14;\n  undefined4 uStack_3c;\n  \n  puVar3 = (ulong *)FUN_0016b970(*(long *)(param_1 + 0x38) + 0x28,0,param_2,param_3,1,0);\n  uVar4 = *puVar3;\n  puVar13 = puVar3 + 1;\n  uVar4 = uVar4 >> 0x38 | (uVar4 & 0xff000000000000) >> 0x28 | (uVar4 & 0xff0000000000) >> 0x18 |\n          (uVar4 & 0xff00000000) >> 8 | (uVar4 & 0xff000000) << 8 | (uVar4 & 0xff0000) << 0x18 |\n          (uVar4 & 0xff00) << 0x28 | uVar4 << 0x38;\n  puVar1 = puVar13 + uVar4;\n  uVar5 = (long)puVar3 + (param_3 - (long)puVar1);\n  FUN_0027e650(param_1 + 0x58,0,*(undefined8 *)(param_1 + 0x60),puVar1,uVar5);\n  uVar6 = *(long *)(param_1 + 0x48) - *(long *)(param_1 + 0x40) >> 4;\n  if (uVar6 < uVar4) {\n    FUN_00236ff0(param_1 + 0x40,uVar4 - uVar6);\n  }\n  else if ((uVar4 < uVar6) &&\n          (lVar9 = *(long *)(param_1 + 0x40) + uVar4 * 0x10, *(long *)(param_1 + 0x48) != lVar9)) {\n    *(long *)(param_1 + 0x48) = lVar9;\n  }\n  if (uVar4 != 0) {\n    uVar6 = 0;\n    puVar14 = (ulong *)(*(long *)(param_1 + 0x40) + 8);\n    uVar12 = 0xffffffffffffffff;\n    do {\n      puVar14[-1] = uVar6;\n      uVar10 = *puVar13;\n      puVar13 = puVar13 + 1;\n      uVar10 = uVar10 >> 0x38 | (uVar10 & 0xff000000000000) >> 0x28 |\n               (uVar10 & 0xff0000000000) >> 0x18 | (uVar10 & 0xff00000000) >> 8 |\n               (uVar10 & 0xff000000) << 8 | (uVar10 & 0xff0000) << 0x18 | (uVar10 & 0xff00) << 0x28\n               | uVar10 << 0x38;\n      *puVar14 = uVar10;\n      sVar7 = strlen((char *)((long)puVar1 + uVar6));\n      uVar6 = uVar6 + 1 + sVar7;\n      if (uVar10 != uVar12) {\n        *(int *)(param_1 + 0x170) = *(int *)(param_1 + 0x170) + 1;\n      }\n      puVar14 = puVar14 + 2;\n      uVar12 = uVar10;\n    } while (puVar13 != puVar3 + uVar4 + 1);\n    if (uVar5 < uVar6) {\n      uVar2 = *(undefined8 *)(param_1 + 0x18);\n      uVar8 = gettext("%s: bad archive symbol table names");\n      FUN_001690a0(uVar8,uVar2);\n    }\n  }\n  uVar5 = ((ulong)*(uint *)(param_1 + 0xb0) +\n          (*(long *)(param_1 + 0xa8) - *(long *)(param_1 + 0x98)) * 8) -\n          (ulong)*(uint *)(param_1 + 0xa0);\n  if (uVar4 < uVar5) {\n    lVar11 = uVar4 + *(uint *)(param_1 + 0xa0);\n    lVar9 = lVar11 + 0x3f;\n    if (-1 < lVar11) {\n      lVar9 = lVar11;\n    }\n    lVar9 = *(long *)(param_1 + 0x98) + (lVar9 >> 6) * 8;\n    lVar11 = lVar11 % 0x40;\n    if (lVar11 < 0) {\n      lVar11 = lVar11 + 0x40;\n      lVar9 = lVar9 + -8;\n    }\n    *(int *)(param_1 + 0xb0) = (int)lVar11;\n    *(long *)(param_1 + 0xa8) = lVar9;\n    return;\n  }\n  FUN_0015c0a0(param_1 + 0x98,*(long *)(param_1 + 0xa8),\n               CONCAT44(uStack_3c,*(uint *)(param_1 + 0xb0)),uVar4 - uVar5,0);\n  return;\n}" { (declaration "ulong *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined8 uVar2;" type_identifier identifier ;) (declaration "ulong *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "ulong uVar4;" type_identifier identifier ;) (declaration "ulong uVar5;" type_identifier identifier ;) (declaration "ulong uVar6;" type_identifier identifier ;) (declaration "size_t sVar7;" primitive_type identifier ;) (declaration "undefined8 uVar8;" type_identifier identifier ;) (declaration "long lVar9;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar10;" type_identifier identifier ;) (declaration "long lVar11;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar12;" type_identifier identifier ;) (declaration "ulong *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "ulong *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "undefined4 uStack_3c;" type_identifier identifier ;) (expression_statement "puVar3 = (ulong *)FUN_0016b970(*(long *)(param_1 + 0x38) + 0x28,0,param_2,param_3,1,0);" (assignment_expression "puVar3 = (ulong *)FUN_0016b970(*(long *)(param_1 + 0x38) + 0x28,0,param_2,param_3,1,0)" identifier = (cast_expression "(ulong *)FUN_0016b970(*(long *)(param_1 + 0x38) + 0x28,0,param_2,param_3,1,0)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0016b970(*(long *)(param_1 + 0x38) + 0x28,0,param_2,param_3,1,0)" identifier (argument_list "(*(long *)(param_1 + 0x38) + 0x28,0,param_2,param_3,1,0)" ( (binary_expression "*(long *)(param_1 + 0x38) + 0x28" (pointer_expression "*(long *)(param_1 + 0x38)" * (cast_expression "(long *)(param_1 + 0x38)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) )))) + number_literal) , number_literal , identifier , identifier , number_literal , number_literal ))))) ;) (expression_statement "uVar4 = *puVar3;" (assignment_expression "uVar4 = *puVar3" identifier = (pointer_expression "*puVar3" * identifier)) ;) (expression_statement "puVar13 = puVar3 + 1;" (assignment_expression "puVar13 = puVar3 + 1" identifier = (binary_expression "puVar3 + 1" identifier + number_literal)) ;) (expression_statement "uVar4 = uVar4 >> 0x38 | (uVar4 & 0xff000000000000) >> 0x28 | (uVar4 & 0xff0000000000) >> 0x18 |\n          (uVar4 & 0xff00000000) >> 8 | (uVar4 & 0xff000000) << 8 | (uVar4 & 0xff0000) << 0x18 |\n          (uVar4 & 0xff00) << 0x28 | uVar4 << 0x38;" (assignment_expression "uVar4 = uVar4 >> 0x38 | (uVar4 & 0xff000000000000) >> 0x28 | (uVar4 & 0xff0000000000) >> 0x18 |\n          (uVar4 & 0xff00000000) >> 8 | (uVar4 & 0xff000000) << 8 | (uVar4 & 0xff0000) << 0x18 |\n          (uVar4 & 0xff00) << 0x28 | uVar4 << 0x38" identifier = (binary_expression "uVar4 >> 0x38 | (uVar4 & 0xff000000000000) >> 0x28 | (uVar4 & 0xff0000000000) >> 0x18 |\n          (uVar4 & 0xff00000000) >> 8 | (uVar4 & 0xff000000) << 8 | (uVar4 & 0xff0000) << 0x18 |\n          (uVar4 & 0xff00) << 0x28 | uVar4 << 0x38" (binary_expression "uVar4 >> 0x38 | (uVar4 & 0xff000000000000) >> 0x28 | (uVar4 & 0xff0000000000) >> 0x18 |\n          (uVar4 & 0xff00000000) >> 8 | (uVar4 & 0xff000000) << 8 | (uVar4 & 0xff0000) << 0x18 |\n          (uVar4 & 0xff00) << 0x28" (binary_expression "uVar4 >> 0x38 | (uVar4 & 0xff000000000000) >> 0x28 | (uVar4 & 0xff0000000000) >> 0x18 |\n          (uVar4 & 0xff00000000) >> 8 | (uVar4 & 0xff000000) << 8 | (uVar4 & 0xff0000) << 0x18" (binary_expression "uVar4 >> 0x38 | (uVar4 & 0xff000000000000) >> 0x28 | (uVar4 & 0xff0000000000) >> 0x18 |\n          (uVar4 & 0xff00000000) >> 8 | (uVar4 & 0xff000000) << 8" (binary_expression "uVar4 >> 0x38 | (uVar4 & 0xff000000000000) >> 0x28 | (uVar4 & 0xff0000000000) >> 0x18 |\n          (uVar4 & 0xff00000000) >> 8" (binary_expression "uVar4 >> 0x38 | (uVar4 & 0xff000000000000) >> 0x28 | (uVar4 & 0xff0000000000) >> 0x18" (binary_expression "uVar4 >> 0x38 | (uVar4 & 0xff000000000000) >> 0x28" (binary_expression "uVar4 >> 0x38" identifier >> number_literal) | (binary_expression "(uVar4 & 0xff000000000000) >> 0x28" (parenthesized_expression "(uVar4 & 0xff000000000000)" ( (binary_expression "uVar4 & 0xff000000000000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar4 & 0xff0000000000) >> 0x18" (parenthesized_expression "(uVar4 & 0xff0000000000)" ( (binary_expression "uVar4 & 0xff0000000000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar4 & 0xff00000000) >> 8" (parenthesized_expression "(uVar4 & 0xff00000000)" ( (binary_expression "uVar4 & 0xff00000000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar4 & 0xff000000) << 8" (parenthesized_expression "(uVar4 & 0xff000000)" ( (binary_expression "uVar4 & 0xff000000" identifier & number_literal) )) << number_literal)) | (binary_expression "(uVar4 & 0xff0000) << 0x18" (parenthesized_expression "(uVar4 & 0xff0000)" ( (binary_expression "uVar4 & 0xff0000" identifier & number_literal) )) << number_literal)) | (binary_expression "(uVar4 & 0xff00) << 0x28" (parenthesized_expression "(uVar4 & 0xff00)" ( (binary_expression "uVar4 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar4 << 0x38" identifier << number_literal))) ;) (expression_statement "puVar1 = puVar13 + uVar4;" (assignment_expression "puVar1 = puVar13 + uVar4" identifier = (binary_expression "puVar13 + uVar4" identifier + identifier)) ;) (expression_statement "uVar5 = (long)puVar3 + (param_3 - (long)puVar1);" (assignment_expression "uVar5 = (long)puVar3 + (param_3 - (long)puVar1)" identifier = (binary_expression "(long)puVar3 + (param_3 - (long)puVar1)" (cast_expression "(long)puVar3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "(param_3 - (long)puVar1)" ( (binary_expression "param_3 - (long)puVar1" identifier - (cast_expression "(long)puVar1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )))) ;) (expression_statement "FUN_0027e650(param_1 + 0x58,0,*(undefined8 *)(param_1 + 0x60),puVar1,uVar5);" (call_expression "FUN_0027e650(param_1 + 0x58,0,*(undefined8 *)(param_1 + 0x60),puVar1,uVar5)" identifier (argument_list "(param_1 + 0x58,0,*(undefined8 *)(param_1 + 0x60),puVar1,uVar5)" ( (binary_expression "param_1 + 0x58" identifier + number_literal) , number_literal , (pointer_expression "*(undefined8 *)(param_1 + 0x60)" * (cast_expression "(undefined8 *)(param_1 + 0x60)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x60)" ( (binary_expression "param_1 + 0x60" identifier + number_literal) )))) , identifier , identifier ))) ;) (expression_statement "uVar6 = *(long *)(param_1 + 0x48) - *(long *)(param_1 + 0x40) >> 4;" (assignment_expression "uVar6 = *(long *)(param_1 + 0x48) - *(long *)(param_1 + 0x40) >> 4" identifier = (binary_expression "*(long *)(param_1 + 0x48) - *(long *)(param_1 + 0x40) >> 4" (binary_expression "*(long *)(param_1 + 0x48) - *(long *)(param_1 + 0x40)" (pointer_expression "*(long *)(param_1 + 0x48)" * (cast_expression "(long *)(param_1 + 0x48)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) )))) - (pointer_expression "*(long *)(param_1 + 0x40)" * (cast_expression "(long *)(param_1 + 0x40)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) ))))) >> number_literal)) ;) (if_statement "if (uVar6 < uVar4) {\n    FUN_00236ff0(param_1 + 0x40,uVar4 - uVar6);\n  }\n  else if ((uVar4 < uVar6) &&\n          (lVar9 = *(long *)(param_1 + 0x40) + uVar4 * 0x10, *(long *)(param_1 + 0x48) != lVar9)) {\n    *(long *)(param_1 + 0x48) = lVar9;\n  }" if (parenthesized_expression "(uVar6 < uVar4)" ( (binary_expression "uVar6 < uVar4" identifier < identifier) )) (compound_statement "{\n    FUN_00236ff0(param_1 + 0x40,uVar4 - uVar6);\n  }" { (expression_statement "FUN_00236ff0(param_1 + 0x40,uVar4 - uVar6);" (call_expression "FUN_00236ff0(param_1 + 0x40,uVar4 - uVar6)" identifier (argument_list "(param_1 + 0x40,uVar4 - uVar6)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) , (binary_expression "uVar4 - uVar6" identifier - identifier) ))) ;) }) (else_clause "else if ((uVar4 < uVar6) &&\n          (lVar9 = *(long *)(param_1 + 0x40) + uVar4 * 0x10, *(long *)(param_1 + 0x48) != lVar9)) {\n    *(long *)(param_1 + 0x48) = lVar9;\n  }" else (if_statement "if ((uVar4 < uVar6) &&\n          (lVar9 = *(long *)(param_1 + 0x40) + uVar4 * 0x10, *(long *)(param_1 + 0x48) != lVar9)) {\n    *(long *)(param_1 + 0x48) = lVar9;\n  }" if (parenthesized_expression "((uVar4 < uVar6) &&\n          (lVar9 = *(long *)(param_1 + 0x40) + uVar4 * 0x10, *(long *)(param_1 + 0x48) != lVar9))" ( (binary_expression "(uVar4 < uVar6) &&\n          (lVar9 = *(long *)(param_1 + 0x40) + uVar4 * 0x10, *(long *)(param_1 + 0x48) != lVar9)" (parenthesized_expression "(uVar4 < uVar6)" ( (binary_expression "uVar4 < uVar6" identifier < identifier) )) && (parenthesized_expression "(lVar9 = *(long *)(param_1 + 0x40) + uVar4 * 0x10, *(long *)(param_1 + 0x48) != lVar9)" ( (comma_expression "lVar9 = *(long *)(param_1 + 0x40) + uVar4 * 0x10, *(long *)(param_1 + 0x48) != lVar9" (assignment_expression "lVar9 = *(long *)(param_1 + 0x40) + uVar4 * 0x10" identifier = (binary_expression "*(long *)(param_1 + 0x40) + uVar4 * 0x10" (pointer_expression "*(long *)(param_1 + 0x40)" * (cast_expression "(long *)(param_1 + 0x40)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) )))) + (binary_expression "uVar4 * 0x10" identifier * number_literal))) , (binary_expression "*(long *)(param_1 + 0x48) != lVar9" (pointer_expression "*(long *)(param_1 + 0x48)" * (cast_expression "(long *)(param_1 + 0x48)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) )))) != identifier)) ))) )) (compound_statement "{\n    *(long *)(param_1 + 0x48) = lVar9;\n  }" { (expression_statement "*(long *)(param_1 + 0x48) = lVar9;" (assignment_expression "*(long *)(param_1 + 0x48) = lVar9" (pointer_expression "*(long *)(param_1 + 0x48)" * (cast_expression "(long *)(param_1 + 0x48)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) )))) = identifier) ;) })))) (if_statement "if (uVar4 != 0) {\n    uVar6 = 0;\n    puVar14 = (ulong *)(*(long *)(param_1 + 0x40) + 8);\n    uVar12 = 0xffffffffffffffff;\n    do {\n      puVar14[-1] = uVar6;\n      uVar10 = *puVar13;\n      puVar13 = puVar13 + 1;\n      uVar10 = uVar10 >> 0x38 | (uVar10 & 0xff000000000000) >> 0x28 |\n               (uVar10 & 0xff0000000000) >> 0x18 | (uVar10 & 0xff00000000) >> 8 |\n               (uVar10 & 0xff000000) << 8 | (uVar10 & 0xff0000) << 0x18 | (uVar10 & 0xff00) << 0x28\n               | uVar10 << 0x38;\n      *puVar14 = uVar10;\n      sVar7 = strlen((char *)((long)puVar1 + uVar6));\n      uVar6 = uVar6 + 1 + sVar7;\n      if (uVar10 != uVar12) {\n        *(int *)(param_1 + 0x170) = *(int *)(param_1 + 0x170) + 1;\n      }\n      puVar14 = puVar14 + 2;\n      uVar12 = uVar10;\n    } while (puVar13 != puVar3 + uVar4 + 1);\n    if (uVar5 < uVar6) {\n      uVar2 = *(undefined8 *)(param_1 + 0x18);\n      uVar8 = gettext("%s: bad archive symbol table names");\n      FUN_001690a0(uVar8,uVar2);\n    }\n  }" if (parenthesized_expression "(uVar4 != 0)" ( (binary_expression "uVar4 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar6 = 0;\n    puVar14 = (ulong *)(*(long *)(param_1 + 0x40) + 8);\n    uVar12 = 0xffffffffffffffff;\n    do {\n      puVar14[-1] = uVar6;\n      uVar10 = *puVar13;\n      puVar13 = puVar13 + 1;\n      uVar10 = uVar10 >> 0x38 | (uVar10 & 0xff000000000000) >> 0x28 |\n               (uVar10 & 0xff0000000000) >> 0x18 | (uVar10 & 0xff00000000) >> 8 |\n               (uVar10 & 0xff000000) << 8 | (uVar10 & 0xff0000) << 0x18 | (uVar10 & 0xff00) << 0x28\n               | uVar10 << 0x38;\n      *puVar14 = uVar10;\n      sVar7 = strlen((char *)((long)puVar1 + uVar6));\n      uVar6 = uVar6 + 1 + sVar7;\n      if (uVar10 != uVar12) {\n        *(int *)(param_1 + 0x170) = *(int *)(param_1 + 0x170) + 1;\n      }\n      puVar14 = puVar14 + 2;\n      uVar12 = uVar10;\n    } while (puVar13 != puVar3 + uVar4 + 1);\n    if (uVar5 < uVar6) {\n      uVar2 = *(undefined8 *)(param_1 + 0x18);\n      uVar8 = gettext("%s: bad archive symbol table names");\n      FUN_001690a0(uVar8,uVar2);\n    }\n  }" { (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" identifier = number_literal) ;) (expression_statement "puVar14 = (ulong *)(*(long *)(param_1 + 0x40) + 8);" (assignment_expression "puVar14 = (ulong *)(*(long *)(param_1 + 0x40) + 8)" identifier = (cast_expression "(ulong *)(*(long *)(param_1 + 0x40) + 8)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x40) + 8)" ( (binary_expression "*(long *)(param_1 + 0x40) + 8" (pointer_expression "*(long *)(param_1 + 0x40)" * (cast_expression "(long *)(param_1 + 0x40)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "uVar12 = 0xffffffffffffffff;" (assignment_expression "uVar12 = 0xffffffffffffffff" identifier = number_literal) ;) (do_statement "do {\n      puVar14[-1] = uVar6;\n      uVar10 = *puVar13;\n      puVar13 = puVar13 + 1;\n      uVar10 = uVar10 >> 0x38 | (uVar10 & 0xff000000000000) >> 0x28 |\n               (uVar10 & 0xff0000000000) >> 0x18 | (uVar10 & 0xff00000000) >> 8 |\n               (uVar10 & 0xff000000) << 8 | (uVar10 & 0xff0000) << 0x18 | (uVar10 & 0xff00) << 0x28\n               | uVar10 << 0x38;\n      *puVar14 = uVar10;\n      sVar7 = strlen((char *)((long)puVar1 + uVar6));\n      uVar6 = uVar6 + 1 + sVar7;\n      if (uVar10 != uVar12) {\n        *(int *)(param_1 + 0x170) = *(int *)(param_1 + 0x170) + 1;\n      }\n      puVar14 = puVar14 + 2;\n      uVar12 = uVar10;\n    } while (puVar13 != puVar3 + uVar4 + 1);" do (compound_statement "{\n      puVar14[-1] = uVar6;\n      uVar10 = *puVar13;\n      puVar13 = puVar13 + 1;\n      uVar10 = uVar10 >> 0x38 | (uVar10 & 0xff000000000000) >> 0x28 |\n               (uVar10 & 0xff0000000000) >> 0x18 | (uVar10 & 0xff00000000) >> 8 |\n               (uVar10 & 0xff000000) << 8 | (uVar10 & 0xff0000) << 0x18 | (uVar10 & 0xff00) << 0x28\n               | uVar10 << 0x38;\n      *puVar14 = uVar10;\n      sVar7 = strlen((char *)((long)puVar1 + uVar6));\n      uVar6 = uVar6 + 1 + sVar7;\n      if (uVar10 != uVar12) {\n        *(int *)(param_1 + 0x170) = *(int *)(param_1 + 0x170) + 1;\n      }\n      puVar14 = puVar14 + 2;\n      uVar12 = uVar10;\n    }" { (expression_statement "puVar14[-1] = uVar6;" (assignment_expression "puVar14[-1] = uVar6" (subscript_expression "puVar14[-1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar10 = *puVar13;" (assignment_expression "uVar10 = *puVar13" identifier = (pointer_expression "*puVar13" * identifier)) ;) (expression_statement "puVar13 = puVar13 + 1;" (assignment_expression "puVar13 = puVar13 + 1" identifier = (binary_expression "puVar13 + 1" identifier + number_literal)) ;) (expression_statement "uVar10 = uVar10 >> 0x38 | (uVar10 & 0xff000000000000) >> 0x28 |\n               (uVar10 & 0xff0000000000) >> 0x18 | (uVar10 & 0xff00000000) >> 8 |\n               (uVar10 & 0xff000000) << 8 | (uVar10 & 0xff0000) << 0x18 | (uVar10 & 0xff00) << 0x28\n               | uVar10 << 0x38;" (assignment_expression "uVar10 = uVar10 >> 0x38 | (uVar10 & 0xff000000000000) >> 0x28 |\n               (uVar10 & 0xff0000000000) >> 0x18 | (uVar10 & 0xff00000000) >> 8 |\n               (uVar10 & 0xff000000) << 8 | (uVar10 & 0xff0000) << 0x18 | (uVar10 & 0xff00) << 0x28\n               | uVar10 << 0x38" identifier = (binary_expression "uVar10 >> 0x38 | (uVar10 & 0xff000000000000) >> 0x28 |\n               (uVar10 & 0xff0000000000) >> 0x18 | (uVar10 & 0xff00000000) >> 8 |\n               (uVar10 & 0xff000000) << 8 | (uVar10 & 0xff0000) << 0x18 | (uVar10 & 0xff00) << 0x28\n               | uVar10 << 0x38" (binary_expression "uVar10 >> 0x38 | (uVar10 & 0xff000000000000) >> 0x28 |\n               (uVar10 & 0xff0000000000) >> 0x18 | (uVar10 & 0xff00000000) >> 8 |\n               (uVar10 & 0xff000000) << 8 | (uVar10 & 0xff0000) << 0x18 | (uVar10 & 0xff00) << 0x28" (binary_expression "uVar10 >> 0x38 | (uVar10 & 0xff000000000000) >> 0x28 |\n               (uVar10 & 0xff0000000000) >> 0x18 | (uVar10 & 0xff00000000) >> 8 |\n               (uVar10 & 0xff000000) << 8 | (uVar10 & 0xff0000) << 0x18" (binary_expression "uVar10 >> 0x38 | (uVar10 & 0xff000000000000) >> 0x28 |\n               (uVar10 & 0xff0000000000) >> 0x18 | (uVar10 & 0xff00000000) >> 8 |\n               (uVar10 & 0xff000000) << 8" (binary_expression "uVar10 >> 0x38 | (uVar10 & 0xff000000000000) >> 0x28 |\n               (uVar10 & 0xff0000000000) >> 0x18 | (uVar10 & 0xff00000000) >> 8" (binary_expression "uVar10 >> 0x38 | (uVar10 & 0xff000000000000) >> 0x28 |\n               (uVar10 & 0xff0000000000) >> 0x18" (binary_expression "uVar10 >> 0x38 | (uVar10 & 0xff000000000000) >> 0x28" (binary_expression "uVar10 >> 0x38" identifier >> number_literal) | (binary_expression "(uVar10 & 0xff000000000000) >> 0x28" (parenthesized_expression "(uVar10 & 0xff000000000000)" ( (binary_expression "uVar10 & 0xff000000000000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar10 & 0xff0000000000) >> 0x18" (parenthesized_expression "(uVar10 & 0xff0000000000)" ( (binary_expression "uVar10 & 0xff0000000000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar10 & 0xff00000000) >> 8" (parenthesized_expression "(uVar10 & 0xff00000000)" ( (binary_expression "uVar10 & 0xff00000000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar10 & 0xff000000) << 8" (parenthesized_expression "(uVar10 & 0xff000000)" ( (binary_expression "uVar10 & 0xff000000" identifier & number_literal) )) << number_literal)) | (binary_expression "(uVar10 & 0xff0000) << 0x18" (parenthesized_expression "(uVar10 & 0xff0000)" ( (binary_expression "uVar10 & 0xff0000" identifier & number_literal) )) << number_literal)) | (binary_expression "(uVar10 & 0xff00) << 0x28" (parenthesized_expression "(uVar10 & 0xff00)" ( (binary_expression "uVar10 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar10 << 0x38" identifier << number_literal))) ;) (expression_statement "*puVar14 = uVar10;" (assignment_expression "*puVar14 = uVar10" (pointer_expression "*puVar14" * identifier) = identifier) ;) (expression_statement "sVar7 = strlen((char *)((long)puVar1 + uVar6));" (assignment_expression "sVar7 = strlen((char *)((long)puVar1 + uVar6))" identifier = (call_expression "strlen((char *)((long)puVar1 + uVar6))" identifier (argument_list "((char *)((long)puVar1 + uVar6))" ( (cast_expression "(char *)((long)puVar1 + uVar6)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar1 + uVar6)" ( (binary_expression "(long)puVar1 + uVar6" (cast_expression "(long)puVar1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) ))) )))) ;) (expression_statement "uVar6 = uVar6 + 1 + sVar7;" (assignment_expression "uVar6 = uVar6 + 1 + sVar7" identifier = (binary_expression "uVar6 + 1 + sVar7" (binary_expression "uVar6 + 1" identifier + number_literal) + identifier)) ;) (if_statement "if (uVar10 != uVar12) {\n        *(int *)(param_1 + 0x170) = *(int *)(param_1 + 0x170) + 1;\n      }" if (parenthesized_expression "(uVar10 != uVar12)" ( (binary_expression "uVar10 != uVar12" identifier != identifier) )) (compound_statement "{\n        *(int *)(param_1 + 0x170) = *(int *)(param_1 + 0x170) + 1;\n      }" { (expression_statement "*(int *)(param_1 + 0x170) = *(int *)(param_1 + 0x170) + 1;" (assignment_expression "*(int *)(param_1 + 0x170) = *(int *)(param_1 + 0x170) + 1" (pointer_expression "*(int *)(param_1 + 0x170)" * (cast_expression "(int *)(param_1 + 0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x170)" ( (binary_expression "param_1 + 0x170" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 0x170) + 1" (pointer_expression "*(int *)(param_1 + 0x170)" * (cast_expression "(int *)(param_1 + 0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x170)" ( (binary_expression "param_1 + 0x170" identifier + number_literal) )))) + number_literal)) ;) })) (expression_statement "puVar14 = puVar14 + 2;" (assignment_expression "puVar14 = puVar14 + 2" identifier = (binary_expression "puVar14 + 2" identifier + number_literal)) ;) (expression_statement "uVar12 = uVar10;" (assignment_expression "uVar12 = uVar10" identifier = identifier) ;) }) while (parenthesized_expression "(puVar13 != puVar3 + uVar4 + 1)" ( (binary_expression "puVar13 != puVar3 + uVar4 + 1" identifier != (binary_expression "puVar3 + uVar4 + 1" (binary_expression "puVar3 + uVar4" identifier + identifier) + number_literal)) )) ;) (if_statement "if (uVar5 < uVar6) {\n      uVar2 = *(undefined8 *)(param_1 + 0x18);\n      uVar8 = gettext("%s: bad archive symbol table names");\n      FUN_001690a0(uVar8,uVar2);\n    }" if (parenthesized_expression "(uVar5 < uVar6)" ( (binary_expression "uVar5 < uVar6" identifier < identifier) )) (compound_statement "{\n      uVar2 = *(undefined8 *)(param_1 + 0x18);\n      uVar8 = gettext("%s: bad archive symbol table names");\n      FUN_001690a0(uVar8,uVar2);\n    }" { (expression_statement "uVar2 = *(undefined8 *)(param_1 + 0x18);" (assignment_expression "uVar2 = *(undefined8 *)(param_1 + 0x18)" identifier = (pointer_expression "*(undefined8 *)(param_1 + 0x18)" * (cast_expression "(undefined8 *)(param_1 + 0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "uVar8 = gettext("%s: bad archive symbol table names");" (assignment_expression "uVar8 = gettext("%s: bad archive symbol table names")" identifier = (call_expression "gettext("%s: bad archive symbol table names")" identifier (argument_list "("%s: bad archive symbol table names")" ( (string_literal ""%s: bad archive symbol table names"" " string_content ") )))) ;) (expression_statement "FUN_001690a0(uVar8,uVar2);" (call_expression "FUN_001690a0(uVar8,uVar2)" identifier (argument_list "(uVar8,uVar2)" ( identifier , identifier ))) ;) })) })) (expression_statement "uVar5 = ((ulong)*(uint *)(param_1 + 0xb0) +\n          (*(long *)(param_1 + 0xa8) - *(long *)(param_1 + 0x98)) * 8) -\n          (ulong)*(uint *)(param_1 + 0xa0);" (assignment_expression "uVar5 = ((ulong)*(uint *)(param_1 + 0xb0) +\n          (*(long *)(param_1 + 0xa8) - *(long *)(param_1 + 0x98)) * 8) -\n          (ulong)*(uint *)(param_1 + 0xa0)" identifier = (binary_expression "((ulong)*(uint *)(param_1 + 0xb0) +\n          (*(long *)(param_1 + 0xa8) - *(long *)(param_1 + 0x98)) * 8) -\n          (ulong)*(uint *)(param_1 + 0xa0)" (parenthesized_expression "((ulong)*(uint *)(param_1 + 0xb0) +\n          (*(long *)(param_1 + 0xa8) - *(long *)(param_1 + 0x98)) * 8)" ( (binary_expression "(ulong)*(uint *)(param_1 + 0xb0) +\n          (*(long *)(param_1 + 0xa8) - *(long *)(param_1 + 0x98)) * 8" (binary_expression "(ulong)*(uint *)(param_1 + 0xb0)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(uint *)(param_1 + 0xb0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb0)" ( (binary_expression "param_1 + 0xb0" identifier + number_literal) )))) + (binary_expression "(*(long *)(param_1 + 0xa8) - *(long *)(param_1 + 0x98)) * 8" (parenthesized_expression "(*(long *)(param_1 + 0xa8) - *(long *)(param_1 + 0x98))" ( (binary_expression "*(long *)(param_1 + 0xa8) - *(long *)(param_1 + 0x98)" (pointer_expression "*(long *)(param_1 + 0xa8)" * (cast_expression "(long *)(param_1 + 0xa8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xa8)" ( (binary_expression "param_1 + 0xa8" identifier + number_literal) )))) - (pointer_expression "*(long *)(param_1 + 0x98)" * (cast_expression "(long *)(param_1 + 0x98)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x98)" ( (binary_expression "param_1 + 0x98" identifier + number_literal) ))))) )) * number_literal)) )) - (binary_expression "(ulong)*(uint *)(param_1 + 0xa0)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(uint *)(param_1 + 0xa0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xa0)" ( (binary_expression "param_1 + 0xa0" identifier + number_literal) )))))) ;) (if_statement "if (uVar4 < uVar5) {\n    lVar11 = uVar4 + *(uint *)(param_1 + 0xa0);\n    lVar9 = lVar11 + 0x3f;\n    if (-1 < lVar11) {\n      lVar9 = lVar11;\n    }\n    lVar9 = *(long *)(param_1 + 0x98) + (lVar9 >> 6) * 8;\n    lVar11 = lVar11 % 0x40;\n    if (lVar11 < 0) {\n      lVar11 = lVar11 + 0x40;\n      lVar9 = lVar9 + -8;\n    }\n    *(int *)(param_1 + 0xb0) = (int)lVar11;\n    *(long *)(param_1 + 0xa8) = lVar9;\n    return;\n  }" if (parenthesized_expression "(uVar4 < uVar5)" ( (binary_expression "uVar4 < uVar5" identifier < identifier) )) (compound_statement "{\n    lVar11 = uVar4 + *(uint *)(param_1 + 0xa0);\n    lVar9 = lVar11 + 0x3f;\n    if (-1 < lVar11) {\n      lVar9 = lVar11;\n    }\n    lVar9 = *(long *)(param_1 + 0x98) + (lVar9 >> 6) * 8;\n    lVar11 = lVar11 % 0x40;\n    if (lVar11 < 0) {\n      lVar11 = lVar11 + 0x40;\n      lVar9 = lVar9 + -8;\n    }\n    *(int *)(param_1 + 0xb0) = (int)lVar11;\n    *(long *)(param_1 + 0xa8) = lVar9;\n    return;\n  }" { (expression_statement "lVar11 = uVar4 + *(uint *)(param_1 + 0xa0);" (assignment_expression "lVar11 = uVar4 + *(uint *)(param_1 + 0xa0)" identifier = (binary_expression "uVar4 + *(uint *)(param_1 + 0xa0)" identifier + (pointer_expression "*(uint *)(param_1 + 0xa0)" * (cast_expression "(uint *)(param_1 + 0xa0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xa0)" ( (binary_expression "param_1 + 0xa0" identifier + number_literal) )))))) ;) (expression_statement "lVar9 = lVar11 + 0x3f;" (assignment_expression "lVar9 = lVar11 + 0x3f" identifier = (binary_expression "lVar11 + 0x3f" identifier + number_literal)) ;) (if_statement "if (-1 < lVar11) {\n      lVar9 = lVar11;\n    }" if (parenthesized_expression "(-1 < lVar11)" ( (binary_expression "-1 < lVar11" number_literal < identifier) )) (compound_statement "{\n      lVar9 = lVar11;\n    }" { (expression_statement "lVar9 = lVar11;" (assignment_expression "lVar9 = lVar11" identifier = identifier) ;) })) (expression_statement "lVar9 = *(long *)(param_1 + 0x98) + (lVar9 >> 6) * 8;" (assignment_expression "lVar9 = *(long *)(param_1 + 0x98) + (lVar9 >> 6) * 8" identifier = (binary_expression "*(long *)(param_1 + 0x98) + (lVar9 >> 6) * 8" (pointer_expression "*(long *)(param_1 + 0x98)" * (cast_expression "(long *)(param_1 + 0x98)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x98)" ( (binary_expression "param_1 + 0x98" identifier + number_literal) )))) + (binary_expression "(lVar9 >> 6) * 8" (parenthesized_expression "(lVar9 >> 6)" ( (binary_expression "lVar9 >> 6" identifier >> number_literal) )) * number_literal))) ;) (expression_statement "lVar11 = lVar11 % 0x40;" (assignment_expression "lVar11 = lVar11 % 0x40" identifier = (binary_expression "lVar11 % 0x40" identifier % number_literal)) ;) (if_statement "if (lVar11 < 0) {\n      lVar11 = lVar11 + 0x40;\n      lVar9 = lVar9 + -8;\n    }" if (parenthesized_expression "(lVar11 < 0)" ( (binary_expression "lVar11 < 0" identifier < number_literal) )) (compound_statement "{\n      lVar11 = lVar11 + 0x40;\n      lVar9 = lVar9 + -8;\n    }" { (expression_statement "lVar11 = lVar11 + 0x40;" (assignment_expression "lVar11 = lVar11 + 0x40" identifier = (binary_expression "lVar11 + 0x40" identifier + number_literal)) ;) (expression_statement "lVar9 = lVar9 + -8;" (assignment_expression "lVar9 = lVar9 + -8" identifier = (binary_expression "lVar9 + -8" identifier + number_literal)) ;) })) (expression_statement "*(int *)(param_1 + 0xb0) = (int)lVar11;" (assignment_expression "*(int *)(param_1 + 0xb0) = (int)lVar11" (pointer_expression "*(int *)(param_1 + 0xb0)" * (cast_expression "(int *)(param_1 + 0xb0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb0)" ( (binary_expression "param_1 + 0xb0" identifier + number_literal) )))) = (cast_expression "(int)lVar11" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "*(long *)(param_1 + 0xa8) = lVar9;" (assignment_expression "*(long *)(param_1 + 0xa8) = lVar9" (pointer_expression "*(long *)(param_1 + 0xa8)" * (cast_expression "(long *)(param_1 + 0xa8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xa8)" ( (binary_expression "param_1 + 0xa8" identifier + number_literal) )))) = identifier) ;) (return_statement "return;" return ;) })) (expression_statement "FUN_0015c0a0(param_1 + 0x98,*(long *)(param_1 + 0xa8),\n               CONCAT44(uStack_3c,*(uint *)(param_1 + 0xb0)),uVar4 - uVar5,0);" (call_expression "FUN_0015c0a0(param_1 + 0x98,*(long *)(param_1 + 0xa8),\n               CONCAT44(uStack_3c,*(uint *)(param_1 + 0xb0)),uVar4 - uVar5,0)" identifier (argument_list "(param_1 + 0x98,*(long *)(param_1 + 0xa8),\n               CONCAT44(uStack_3c,*(uint *)(param_1 + 0xb0)),uVar4 - uVar5,0)" ( (binary_expression "param_1 + 0x98" identifier + number_literal) , (pointer_expression "*(long *)(param_1 + 0xa8)" * (cast_expression "(long *)(param_1 + 0xa8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xa8)" ( (binary_expression "param_1 + 0xa8" identifier + number_literal) )))) , (call_expression "CONCAT44(uStack_3c,*(uint *)(param_1 + 0xb0))" identifier (argument_list "(uStack_3c,*(uint *)(param_1 + 0xb0))" ( identifier , (pointer_expression "*(uint *)(param_1 + 0xb0)" * (cast_expression "(uint *)(param_1 + 0xb0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb0)" ( (binary_expression "param_1 + 0xb0" identifier + number_literal) )))) ))) , (binary_expression "uVar4 - uVar5" identifier - identifier) , number_literal ))) ;) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Type propagation algorithm not settling */\n/* DWARF original prototype: void read_armap<64>(Archive * this, off_t start, section_size_type\n   size) */\n\nvoid __thiscall gold::Archive::read_armap<64>(Archive *this,off_t start,section_size_type size)\n\n{\n  ulong *puVar1;\n  uint uVar2;\n  pointer pAVar3;\n  pointer pcVar4;\n  _Bit_type *p_Var5;\n  ulong *puVar6;\n  ulong uVar7;\n  ulong uVar8;\n  ulong uVar9;\n  size_t sVar10;\n  char *format;\n  long lVar11;\n  _Bit_type *p_Var12;\n  pointer pAVar13;\n  long to;\n  ulong uVar14;\n  long lVar15;\n  ulong uVar16;\n  ulong *puVar17;\n  off_t *poVar18;\n  iterator __position;\n  undefined4 uStack_3c;\n  \n  puVar6 = (ulong *)File_read::get_view(&this->input_file_->file_,0,start,size,true,false);\n  uVar7 = *puVar6;\n  puVar17 = puVar6 + 1;\n  uVar7 = uVar7 >> 0x38 | (uVar7 & 0xff000000000000) >> 0x28 | (uVar7 & 0xff0000000000) >> 0x18 |\n          (uVar7 & 0xff00000000) >> 8 | (uVar7 & 0xff000000) << 8 | (uVar7 & 0xff0000) << 0x18 |\n          (uVar7 & 0xff00) << 0x28 | uVar7 << 0x38;\n  puVar1 = puVar17 + uVar7;\n  uVar8 = (long)puVar6 + (size - (long)puVar1);\n  std::string::_M_replace\n            ((string *)&this->armap_names_,0,(this->armap_names_)._M_string_length,(char *)puVar1,\n             uVar8);\n  pAVar3 = (this->armap_).\n           super__Vector_base<gold::Archive::Armap_entry,_std::allocator<gold::Archive::Armap_entry>_>\n           ._M_impl._M_finish;\n  pAVar13 = (this->armap_).\n            super__Vector_base<gold::Archive::Armap_entry,_std::allocator<gold::Archive::Armap_entry>_>\n            ._M_impl._M_start;\n  uVar9 = (long)pAVar3 - (long)pAVar13 >> 4;\n  if (uVar9 < uVar7) {\n    std::vector<gold::Archive::Armap_entry,_std::allocator<gold::Archive::Armap_entry>_>::\n    _M_default_append(&this->armap_,uVar7 - uVar9);\n  }\n  else if ((uVar7 < uVar9) && (pAVar13 = pAVar13 + uVar7, pAVar3 != pAVar13)) {\n    (this->armap_).\n    super__Vector_base<gold::Archive::Armap_entry,_std::allocator<gold::Archive::Armap_entry>_>.\n    _M_impl._M_finish = pAVar13;\n  }\n  if (uVar7 != 0) {\n    uVar9 = 0;\n    poVar18 = &((this->armap_).\n                super__Vector_base<gold::Archive::Armap_entry,_std::allocator<gold::Archive::Armap_entry>_>\n                ._M_impl._M_start)->file_offset;\n    uVar16 = 0xffffffffffffffff;\n    do {\n      ((Armap_entry *)(poVar18 + -1))->name_offset = uVar9;\n      uVar14 = *puVar17;\n      puVar17 = puVar17 + 1;\n      uVar14 = uVar14 >> 0x38 | (uVar14 & 0xff000000000000) >> 0x28 |\n               (uVar14 & 0xff0000000000) >> 0x18 | (uVar14 & 0xff00000000) >> 8 |\n               (uVar14 & 0xff000000) << 8 | (uVar14 & 0xff0000) << 0x18 | (uVar14 & 0xff00) << 0x28\n               | uVar14 << 0x38;\n      *poVar18 = uVar14;\n      sVar10 = strlen((char *)((long)puVar1 + uVar9));\n      uVar9 = uVar9 + 1 + sVar10;\n      if (uVar14 != uVar16) {\n        this->num_members_ = this->num_members_ + 1;\n      }\n      poVar18 = poVar18 + 2;\n      uVar16 = uVar14;\n    } while (puVar17 != puVar6 + uVar7 + 1);\n    if (uVar8 < uVar9) {\n      pcVar4 = (this->name_)._M_dataplus._M_p;\n      format = (char *)gettext("%s: bad archive symbol table names");\n      gold_error(format,pcVar4);\n    }\n  }\n  p_Var5 = (this->armap_checked_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n           super__Bvector_impl_data._M_finish.super__Bit_iterator_base._M_p;\n  p_Var12 = (this->armap_checked_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n            super__Bvector_impl_data._M_start.super__Bit_iterator_base._M_p;\n  uVar2 = (this->armap_checked_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n          super__Bvector_impl_data._M_finish.super__Bit_iterator_base._M_offset;\n  uVar9 = (ulong)(this->armap_checked_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n                 super__Bvector_impl_data._M_start.super__Bit_iterator_base._M_offset;\n  uVar8 = ((ulong)uVar2 + ((long)p_Var5 - (long)p_Var12) * 8) - uVar9;\n  if (uVar7 < uVar8) {\n    lVar15 = uVar7 + uVar9;\n    lVar11 = lVar15 + 0x3f;\n    if (-1 < lVar15) {\n      lVar11 = lVar15;\n    }\n    p_Var12 = p_Var12 + (lVar11 >> 6);\n    lVar15 = lVar15 % 0x40;\n    if (lVar15 < 0) {\n      lVar15 = lVar15 + 0x40;\n      p_Var12 = p_Var12 + -1;\n    }\n    (this->armap_checked_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n    super__Bvector_impl_data._M_finish.super__Bit_iterator_base._M_offset = (uint)lVar15;\n    (this->armap_checked_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n    super__Bvector_impl_data._M_finish.super__Bit_iterator_base._M_p = p_Var12;\n    return;\n  }\n  __position.super__Bit_iterator_base._12_4_ = uStack_3c;\n  __position.super__Bit_iterator_base._M_offset = uVar2;\n  __position.super__Bit_iterator_base._M_p = p_Var5;\n  std::vector<bool,_std::allocator<bool>_>::_M_fill_insert\n            (&this->armap_checked_,__position,uVar7 - uVar8,false);\n  return;\n}\n\n" comment comment (declaration "void __thiscall gold::Archive::read_armap<64>(Archive *this,off_t start,section_size_type size)\n\n{\n  ulong *puVar1;" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Archive::read_armap<64>(Archive" identifier : : identifier : : identifier < number_literal > ( identifier) (pointer_declarator "*this" * identifier) , identifier (ERROR "start" identifier) , (ERROR "section_size_type size)\n\n{\n  ulong" identifier identifier ) { identifier) (pointer_declarator "*puVar1" * identifier) ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "pointer pAVar3;" type_identifier identifier ;) (declaration "pointer pcVar4;" type_identifier identifier ;) (declaration "_Bit_type *p_Var5;" type_identifier (pointer_declarator "*p_Var5" * identifier) ;) (declaration "ulong *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "ulong uVar7;" type_identifier identifier ;) (declaration "ulong uVar8;" type_identifier identifier ;) (declaration "ulong uVar9;" type_identifier identifier ;) (declaration "size_t sVar10;" primitive_type identifier ;) (declaration "char *format;" primitive_type (pointer_declarator "*format" * identifier) ;) (declaration "long lVar11;" (sized_type_specifier "long" long) identifier ;) (declaration "_Bit_type *p_Var12;" type_identifier (pointer_declarator "*p_Var12" * identifier) ;) (declaration "pointer pAVar13;" type_identifier identifier ;) (declaration "long to;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar14;" type_identifier identifier ;) (declaration "long lVar15;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar16;" type_identifier identifier ;) (declaration "ulong *puVar17;" type_identifier (pointer_declarator "*puVar17" * identifier) ;) (declaration "off_t *poVar18;" type_identifier (pointer_declarator "*poVar18" * identifier) ;) (declaration "iterator __position;" type_identifier identifier ;) (declaration "undefined4 uStack_3c;" type_identifier identifier ;) (ERROR "puVar6 = (ulong *)File_read::" (assignment_expression "puVar6 = (ulong *)File_read" identifier = (cast_expression "(ulong *)File_read" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) : :) (expression_statement "get_view(&this->input_file_->file_,0,start,size,true,false);" (call_expression "get_view(&this->input_file_->file_,0,start,size,true,false)" identifier (argument_list "(&this->input_file_->file_,0,start,size,true,false)" ( (pointer_expression "&this->input_file_->file_" & (field_expression "this->input_file_->file_" (field_expression "this->input_file_" identifier -> field_identifier) -> field_identifier)) , number_literal , identifier , identifier , true , false ))) ;) (expression_statement "uVar7 = *puVar6;" (assignment_expression "uVar7 = *puVar6" identifier = (pointer_expression "*puVar6" * identifier)) ;) (expression_statement "puVar17 = puVar6 + 1;" (assignment_expression "puVar17 = puVar6 + 1" identifier = (binary_expression "puVar6 + 1" identifier + number_literal)) ;) (expression_statement "uVar7 = uVar7 >> 0x38 | (uVar7 & 0xff000000000000) >> 0x28 | (uVar7 & 0xff0000000000) >> 0x18 |\n          (uVar7 & 0xff00000000) >> 8 | (uVar7 & 0xff000000) << 8 | (uVar7 & 0xff0000) << 0x18 |\n          (uVar7 & 0xff00) << 0x28 | uVar7 << 0x38;" (assignment_expression "uVar7 = uVar7 >> 0x38 | (uVar7 & 0xff000000000000) >> 0x28 | (uVar7 & 0xff0000000000) >> 0x18 |\n          (uVar7 & 0xff00000000) >> 8 | (uVar7 & 0xff000000) << 8 | (uVar7 & 0xff0000) << 0x18 |\n          (uVar7 & 0xff00) << 0x28 | uVar7 << 0x38" identifier = (binary_expression "uVar7 >> 0x38 | (uVar7 & 0xff000000000000) >> 0x28 | (uVar7 & 0xff0000000000) >> 0x18 |\n          (uVar7 & 0xff00000000) >> 8 | (uVar7 & 0xff000000) << 8 | (uVar7 & 0xff0000) << 0x18 |\n          (uVar7 & 0xff00) << 0x28 | uVar7 << 0x38" (binary_expression "uVar7 >> 0x38 | (uVar7 & 0xff000000000000) >> 0x28 | (uVar7 & 0xff0000000000) >> 0x18 |\n          (uVar7 & 0xff00000000) >> 8 | (uVar7 & 0xff000000) << 8 | (uVar7 & 0xff0000) << 0x18 |\n          (uVar7 & 0xff00) << 0x28" (binary_expression "uVar7 >> 0x38 | (uVar7 & 0xff000000000000) >> 0x28 | (uVar7 & 0xff0000000000) >> 0x18 |\n          (uVar7 & 0xff00000000) >> 8 | (uVar7 & 0xff000000) << 8 | (uVar7 & 0xff0000) << 0x18" (binary_expression "uVar7 >> 0x38 | (uVar7 & 0xff000000000000) >> 0x28 | (uVar7 & 0xff0000000000) >> 0x18 |\n          (uVar7 & 0xff00000000) >> 8 | (uVar7 & 0xff000000) << 8" (binary_expression "uVar7 >> 0x38 | (uVar7 & 0xff000000000000) >> 0x28 | (uVar7 & 0xff0000000000) >> 0x18 |\n          (uVar7 & 0xff00000000) >> 8" (binary_expression "uVar7 >> 0x38 | (uVar7 & 0xff000000000000) >> 0x28 | (uVar7 & 0xff0000000000) >> 0x18" (binary_expression "uVar7 >> 0x38 | (uVar7 & 0xff000000000000) >> 0x28" (binary_expression "uVar7 >> 0x38" identifier >> number_literal) | (binary_expression "(uVar7 & 0xff000000000000) >> 0x28" (parenthesized_expression "(uVar7 & 0xff000000000000)" ( (binary_expression "uVar7 & 0xff000000000000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar7 & 0xff0000000000) >> 0x18" (parenthesized_expression "(uVar7 & 0xff0000000000)" ( (binary_expression "uVar7 & 0xff0000000000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar7 & 0xff00000000) >> 8" (parenthesized_expression "(uVar7 & 0xff00000000)" ( (binary_expression "uVar7 & 0xff00000000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar7 & 0xff000000) << 8" (parenthesized_expression "(uVar7 & 0xff000000)" ( (binary_expression "uVar7 & 0xff000000" identifier & number_literal) )) << number_literal)) | (binary_expression "(uVar7 & 0xff0000) << 0x18" (parenthesized_expression "(uVar7 & 0xff0000)" ( (binary_expression "uVar7 & 0xff0000" identifier & number_literal) )) << number_literal)) | (binary_expression "(uVar7 & 0xff00) << 0x28" (parenthesized_expression "(uVar7 & 0xff00)" ( (binary_expression "uVar7 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar7 << 0x38" identifier << number_literal))) ;) (expression_statement "puVar1 = puVar17 + uVar7;" (assignment_expression "puVar1 = puVar17 + uVar7" identifier = (binary_expression "puVar17 + uVar7" identifier + identifier)) ;) (expression_statement "uVar8 = (long)puVar6 + (size - (long)puVar1);" (assignment_expression "uVar8 = (long)puVar6 + (size - (long)puVar1)" identifier = (binary_expression "(long)puVar6 + (size - (long)puVar1)" (cast_expression "(long)puVar6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "(size - (long)puVar1)" ( (binary_expression "size - (long)puVar1" identifier - (cast_expression "(long)puVar1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )))) ;) (labeled_statement "std::string::_M_replace\n            ((string *)&this->armap_names_,0,(this->armap_names_)._M_string_length,(char *)puVar1,\n             uVar8);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_replace\n            ((string *)&this->armap_names_,0,(this->armap_names_)._M_string_length,(char *)puVar1,\n             uVar8);" statement_identifier : (ERROR ":" :) (expression_statement "_M_replace\n            ((string *)&this->armap_names_,0,(this->armap_names_)._M_string_length,(char *)puVar1,\n             uVar8);" (call_expression "_M_replace\n            ((string *)&this->armap_names_,0,(this->armap_names_)._M_string_length,(char *)puVar1,\n             uVar8)" identifier (argument_list "((string *)&this->armap_names_,0,(this->armap_names_)._M_string_length,(char *)puVar1,\n             uVar8)" ( (cast_expression "(string *)&this->armap_names_" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&this->armap_names_" & (field_expression "this->armap_names_" identifier -> field_identifier))) , number_literal , (field_expression "(this->armap_names_)._M_string_length" (parenthesized_expression "(this->armap_names_)" ( (field_expression "this->armap_names_" identifier -> field_identifier) )) . field_identifier) , (cast_expression "(char *)puVar1" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier ))) ;))) (ERROR "pAVar3 = (this->armap_).\n           super__Vector_base<gold::" (assignment_expression "pAVar3 = (this->armap_).\n           super__Vector_base<gold" identifier = (binary_expression "(this->armap_).\n           super__Vector_base<gold" (field_expression "(this->armap_).\n           super__Vector_base" (parenthesized_expression "(this->armap_)" ( (field_expression "this->armap_" identifier -> field_identifier) )) . field_identifier) < identifier)) : :) (labeled_statement "Archive::Armap_entry,_std::allocator<gold::Archive::Armap_entry>_>\n           ._M_impl._M_finish;" statement_identifier (ERROR "::Armap_entry,_std::allocator<gold:" : : (comma_expression "Armap_entry,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) :) : (labeled_statement "Archive::Armap_entry>_>\n           ._M_impl._M_finish;" statement_identifier : (ERROR ":" :) (expression_statement "Armap_entry>_>\n           ._M_impl._M_finish;" (field_expression "Armap_entry>_>\n           ._M_impl._M_finish" (field_expression "Armap_entry>_>\n           ._M_impl" (binary_expression "Armap_entry>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;))) (ERROR "pAVar13 = (this->armap_).\n            super__Vector_base<gold::" (assignment_expression "pAVar13 = (this->armap_).\n            super__Vector_base<gold" identifier = (binary_expression "(this->armap_).\n            super__Vector_base<gold" (field_expression "(this->armap_).\n            super__Vector_base" (parenthesized_expression "(this->armap_)" ( (field_expression "this->armap_" identifier -> field_identifier) )) . field_identifier) < identifier)) : :) (labeled_statement "Archive::Armap_entry,_std::allocator<gold::Archive::Armap_entry>_>\n            ._M_impl._M_start;" statement_identifier (ERROR "::Armap_entry,_std::allocator<gold:" : : (comma_expression "Armap_entry,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) :) : (labeled_statement "Archive::Armap_entry>_>\n            ._M_impl._M_start;" statement_identifier : (ERROR ":" :) (expression_statement "Armap_entry>_>\n            ._M_impl._M_start;" (field_expression "Armap_entry>_>\n            ._M_impl._M_start" (field_expression "Armap_entry>_>\n            ._M_impl" (binary_expression "Armap_entry>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;))) (expression_statement "uVar9 = (long)pAVar3 - (long)pAVar13 >> 4;" (assignment_expression "uVar9 = (long)pAVar3 - (long)pAVar13 >> 4" identifier = (binary_expression "(long)pAVar3 - (long)pAVar13 >> 4" (binary_expression "(long)pAVar3 - (long)pAVar13" (cast_expression "(long)pAVar3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)pAVar13" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) >> number_literal)) ;) (if_statement "if (uVar9 < uVar7) {\n    std::vector<gold::Archive::Armap_entry,_std::allocator<gold::Archive::Armap_entry>_>::\n    _M_default_append(&this->armap_,uVar7 - uVar9);\n  }\n  else if ((uVar7 < uVar9) && (pAVar13 = pAVar13 + uVar7, pAVar3 != pAVar13)) {\n    (this->armap_).\n    super__Vector_base<gold::Archive::Armap_entry,_std::allocator<gold::Archive::Armap_entry>_>.\n    _M_impl._M_finish = pAVar13;\n  }" if (parenthesized_expression "(uVar9 < uVar7)" ( (binary_expression "uVar9 < uVar7" identifier < identifier) )) (compound_statement "{\n    std::vector<gold::Archive::Armap_entry,_std::allocator<gold::Archive::Armap_entry>_>::\n    _M_default_append(&this->armap_,uVar7 - uVar9);\n  }" { (labeled_statement "std::vector<gold::Archive::Armap_entry,_std::allocator<gold::Archive::Armap_entry>_>::\n    _M_default_append(&this->armap_,uVar7 - uVar9);" statement_identifier (ERROR "::vector<gold:" : : (binary_expression "vector<gold" identifier < identifier) :) : (labeled_statement "Archive::Armap_entry,_std::allocator<gold::Archive::Armap_entry>_>::\n    _M_default_append(&this->armap_,uVar7 - uVar9);" statement_identifier (ERROR "::Armap_entry,_std::allocator<gold:" : : (comma_expression "Armap_entry,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) :) : (labeled_statement "Archive::Armap_entry>_>::\n    _M_default_append(&this->armap_,uVar7 - uVar9);" statement_identifier (ERROR "::Armap_entry>_>:" : : (binary_expression "Armap_entry>_" identifier > identifier) > :) : (expression_statement "_M_default_append(&this->armap_,uVar7 - uVar9);" (call_expression "_M_default_append(&this->armap_,uVar7 - uVar9)" identifier (argument_list "(&this->armap_,uVar7 - uVar9)" ( (pointer_expression "&this->armap_" & (field_expression "this->armap_" identifier -> field_identifier)) , (binary_expression "uVar7 - uVar9" identifier - identifier) ))) ;)))) }) (else_clause "else if ((uVar7 < uVar9) && (pAVar13 = pAVar13 + uVar7, pAVar3 != pAVar13)) {\n    (this->armap_).\n    super__Vector_base<gold::Archive::Armap_entry,_std::allocator<gold::Archive::Armap_entry>_>.\n    _M_impl._M_finish = pAVar13;\n  }" else (if_statement "if ((uVar7 < uVar9) && (pAVar13 = pAVar13 + uVar7, pAVar3 != pAVar13)) {\n    (this->armap_).\n    super__Vector_base<gold::Archive::Armap_entry,_std::allocator<gold::Archive::Armap_entry>_>.\n    _M_impl._M_finish = pAVar13;\n  }" if (parenthesized_expression "((uVar7 < uVar9) && (pAVar13 = pAVar13 + uVar7, pAVar3 != pAVar13))" ( (binary_expression "(uVar7 < uVar9) && (pAVar13 = pAVar13 + uVar7, pAVar3 != pAVar13)" (parenthesized_expression "(uVar7 < uVar9)" ( (binary_expression "uVar7 < uVar9" identifier < identifier) )) && (parenthesized_expression "(pAVar13 = pAVar13 + uVar7, pAVar3 != pAVar13)" ( (comma_expression "pAVar13 = pAVar13 + uVar7, pAVar3 != pAVar13" (assignment_expression "pAVar13 = pAVar13 + uVar7" identifier = (binary_expression "pAVar13 + uVar7" identifier + identifier)) , (binary_expression "pAVar3 != pAVar13" identifier != identifier)) ))) )) (compound_statement "{\n    (this->armap_).\n    super__Vector_base<gold::Archive::Armap_entry,_std::allocator<gold::Archive::Armap_entry>_>.\n    _M_impl._M_finish = pAVar13;\n  }" { (ERROR "(this->armap_).\n    super__Vector_base<gold::" (binary_expression "(this->armap_).\n    super__Vector_base<gold" (field_expression "(this->armap_).\n    super__Vector_base" (parenthesized_expression "(this->armap_)" ( (field_expression "this->armap_" identifier -> field_identifier) )) . field_identifier) < identifier) : :) (labeled_statement "Archive::Armap_entry,_std::allocator<gold::Archive::Armap_entry>_>.\n    _M_impl._M_finish = pAVar13;" statement_identifier (ERROR "::Armap_entry,_std::allocator<gold:" : : (comma_expression "Armap_entry,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) :) : (labeled_statement "Archive::Armap_entry>_>.\n    _M_impl._M_finish = pAVar13;" statement_identifier : (ERROR ":" :) (expression_statement "Armap_entry>_>.\n    _M_impl._M_finish = pAVar13;" (assignment_expression "Armap_entry>_>.\n    _M_impl._M_finish = pAVar13" (field_expression "Armap_entry>_>.\n    _M_impl._M_finish" (field_expression "Armap_entry>_>.\n    _M_impl" (binary_expression "Armap_entry>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) = identifier) ;))) })))) (if_statement "if (uVar7 != 0) {\n    uVar9 = 0;\n    poVar18 = &((this->armap_).\n                super__Vector_base<gold::Archive::Armap_entry,_std::allocator<gold::Archive::Armap_entry>_>\n                ._M_impl._M_start)->file_offset;\n    uVar16 = 0xffffffffffffffff;\n    do {\n      ((Armap_entry *)(poVar18 + -1))->name_offset = uVar9;\n      uVar14 = *puVar17;\n      puVar17 = puVar17 + 1;\n      uVar14 = uVar14 >> 0x38 | (uVar14 & 0xff000000000000) >> 0x28 |\n               (uVar14 & 0xff0000000000) >> 0x18 | (uVar14 & 0xff00000000) >> 8 |\n               (uVar14 & 0xff000000) << 8 | (uVar14 & 0xff0000) << 0x18 | (uVar14 & 0xff00) << 0x28\n               | uVar14 << 0x38;\n      *poVar18 = uVar14;\n      sVar10 = strlen((char *)((long)puVar1 + uVar9));\n      uVar9 = uVar9 + 1 + sVar10;\n      if (uVar14 != uVar16) {\n        this->num_members_ = this->num_members_ + 1;\n      }\n      poVar18 = poVar18 + 2;\n      uVar16 = uVar14;\n    } while (puVar17 != puVar6 + uVar7 + 1);\n    if (uVar8 < uVar9) {\n      pcVar4 = (this->name_)._M_dataplus._M_p;\n      format = (char *)gettext("%s: bad archive symbol table names");\n      gold_error(format,pcVar4);\n    }\n  }" if (parenthesized_expression "(uVar7 != 0)" ( (binary_expression "uVar7 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar9 = 0;\n    poVar18 = &((this->armap_).\n                super__Vector_base<gold::Archive::Armap_entry,_std::allocator<gold::Archive::Armap_entry>_>\n                ._M_impl._M_start)->file_offset;\n    uVar16 = 0xffffffffffffffff;\n    do {\n      ((Armap_entry *)(poVar18 + -1))->name_offset = uVar9;\n      uVar14 = *puVar17;\n      puVar17 = puVar17 + 1;\n      uVar14 = uVar14 >> 0x38 | (uVar14 & 0xff000000000000) >> 0x28 |\n               (uVar14 & 0xff0000000000) >> 0x18 | (uVar14 & 0xff00000000) >> 8 |\n               (uVar14 & 0xff000000) << 8 | (uVar14 & 0xff0000) << 0x18 | (uVar14 & 0xff00) << 0x28\n               | uVar14 << 0x38;\n      *poVar18 = uVar14;\n      sVar10 = strlen((char *)((long)puVar1 + uVar9));\n      uVar9 = uVar9 + 1 + sVar10;\n      if (uVar14 != uVar16) {\n        this->num_members_ = this->num_members_ + 1;\n      }\n      poVar18 = poVar18 + 2;\n      uVar16 = uVar14;\n    } while (puVar17 != puVar6 + uVar7 + 1);\n    if (uVar8 < uVar9) {\n      pcVar4 = (this->name_)._M_dataplus._M_p;\n      format = (char *)gettext("%s: bad archive symbol table names");\n      gold_error(format,pcVar4);\n    }\n  }" { (expression_statement "uVar9 = 0;" (assignment_expression "uVar9 = 0" identifier = number_literal) ;) (expression_statement "poVar18 = &((this->armap_).\n                super__Vector_base<gold::Archive::Armap_entry,_std::allocator<gold::Archive::Armap_entry>_>\n                ._M_impl._M_start)->file_offset;" (assignment_expression "poVar18 = &((this->armap_).\n                super__Vector_base<gold::Archive::Armap_entry,_std::allocator<gold::Archive::Armap_entry>_>\n                ._M_impl._M_start)->file_offset" identifier = (pointer_expression "&((this->armap_).\n                super__Vector_base<gold::Archive::Armap_entry,_std::allocator<gold::Archive::Armap_entry>_>\n                ._M_impl._M_start)->file_offset" & (field_expression "((this->armap_).\n                super__Vector_base<gold::Archive::Armap_entry,_std::allocator<gold::Archive::Armap_entry>_>\n                ._M_impl._M_start)->file_offset" (parenthesized_expression "((this->armap_).\n                super__Vector_base<gold::Archive::Armap_entry,_std::allocator<gold::Archive::Armap_entry>_>\n                ._M_impl._M_start)" ( (ERROR "(this->armap_).\n                super__Vector_base<gold::Archive::Armap_entry,_std::allocator<gold::Archive::" (comma_expression "(this->armap_).\n                super__Vector_base<gold::Archive::Armap_entry,_std" (binary_expression "(this->armap_).\n                super__Vector_base<gold" (field_expression "(this->armap_).\n                super__Vector_base" (parenthesized_expression "(this->armap_)" ( (field_expression "this->armap_" identifier -> field_identifier) )) . field_identifier) < identifier) (ERROR "::Archive::Armap_entry" : : identifier : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : identifier : :) (field_expression "Armap_entry>_>\n                ._M_impl._M_start" (field_expression "Armap_entry>_>\n                ._M_impl" (binary_expression "Armap_entry>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) )) -> field_identifier))) ;) (expression_statement "uVar16 = 0xffffffffffffffff;" (assignment_expression "uVar16 = 0xffffffffffffffff" identifier = number_literal) ;) (do_statement "do {\n      ((Armap_entry *)(poVar18 + -1))->name_offset = uVar9;\n      uVar14 = *puVar17;\n      puVar17 = puVar17 + 1;\n      uVar14 = uVar14 >> 0x38 | (uVar14 & 0xff000000000000) >> 0x28 |\n               (uVar14 & 0xff0000000000) >> 0x18 | (uVar14 & 0xff00000000) >> 8 |\n               (uVar14 & 0xff000000) << 8 | (uVar14 & 0xff0000) << 0x18 | (uVar14 & 0xff00) << 0x28\n               | uVar14 << 0x38;\n      *poVar18 = uVar14;\n      sVar10 = strlen((char *)((long)puVar1 + uVar9));\n      uVar9 = uVar9 + 1 + sVar10;\n      if (uVar14 != uVar16) {\n        this->num_members_ = this->num_members_ + 1;\n      }\n      poVar18 = poVar18 + 2;\n      uVar16 = uVar14;\n    } while (puVar17 != puVar6 + uVar7 + 1);" do (compound_statement "{\n      ((Armap_entry *)(poVar18 + -1))->name_offset = uVar9;\n      uVar14 = *puVar17;\n      puVar17 = puVar17 + 1;\n      uVar14 = uVar14 >> 0x38 | (uVar14 & 0xff000000000000) >> 0x28 |\n               (uVar14 & 0xff0000000000) >> 0x18 | (uVar14 & 0xff00000000) >> 8 |\n               (uVar14 & 0xff000000) << 8 | (uVar14 & 0xff0000) << 0x18 | (uVar14 & 0xff00) << 0x28\n               | uVar14 << 0x38;\n      *poVar18 = uVar14;\n      sVar10 = strlen((char *)((long)puVar1 + uVar9));\n      uVar9 = uVar9 + 1 + sVar10;\n      if (uVar14 != uVar16) {\n        this->num_members_ = this->num_members_ + 1;\n      }\n      poVar18 = poVar18 + 2;\n      uVar16 = uVar14;\n    }" { (expression_statement "((Armap_entry *)(poVar18 + -1))->name_offset = uVar9;" (assignment_expression "((Armap_entry *)(poVar18 + -1))->name_offset = uVar9" (field_expression "((Armap_entry *)(poVar18 + -1))->name_offset" (parenthesized_expression "((Armap_entry *)(poVar18 + -1))" ( (cast_expression "(Armap_entry *)(poVar18 + -1)" ( (type_descriptor "Armap_entry *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(poVar18 + -1)" ( (binary_expression "poVar18 + -1" identifier + number_literal) ))) )) -> field_identifier) = identifier) ;) (expression_statement "uVar14 = *puVar17;" (assignment_expression "uVar14 = *puVar17" identifier = (pointer_expression "*puVar17" * identifier)) ;) (expression_statement "puVar17 = puVar17 + 1;" (assignment_expression "puVar17 = puVar17 + 1" identifier = (binary_expression "puVar17 + 1" identifier + number_literal)) ;) (expression_statement "uVar14 = uVar14 >> 0x38 | (uVar14 & 0xff000000000000) >> 0x28 |\n               (uVar14 & 0xff0000000000) >> 0x18 | (uVar14 & 0xff00000000) >> 8 |\n               (uVar14 & 0xff000000) << 8 | (uVar14 & 0xff0000) << 0x18 | (uVar14 & 0xff00) << 0x28\n               | uVar14 << 0x38;" (assignment_expression "uVar14 = uVar14 >> 0x38 | (uVar14 & 0xff000000000000) >> 0x28 |\n               (uVar14 & 0xff0000000000) >> 0x18 | (uVar14 & 0xff00000000) >> 8 |\n               (uVar14 & 0xff000000) << 8 | (uVar14 & 0xff0000) << 0x18 | (uVar14 & 0xff00) << 0x28\n               | uVar14 << 0x38" identifier = (binary_expression "uVar14 >> 0x38 | (uVar14 & 0xff000000000000) >> 0x28 |\n               (uVar14 & 0xff0000000000) >> 0x18 | (uVar14 & 0xff00000000) >> 8 |\n               (uVar14 & 0xff000000) << 8 | (uVar14 & 0xff0000) << 0x18 | (uVar14 & 0xff00) << 0x28\n               | uVar14 << 0x38" (binary_expression "uVar14 >> 0x38 | (uVar14 & 0xff000000000000) >> 0x28 |\n               (uVar14 & 0xff0000000000) >> 0x18 | (uVar14 & 0xff00000000) >> 8 |\n               (uVar14 & 0xff000000) << 8 | (uVar14 & 0xff0000) << 0x18 | (uVar14 & 0xff00) << 0x28" (binary_expression "uVar14 >> 0x38 | (uVar14 & 0xff000000000000) >> 0x28 |\n               (uVar14 & 0xff0000000000) >> 0x18 | (uVar14 & 0xff00000000) >> 8 |\n               (uVar14 & 0xff000000) << 8 | (uVar14 & 0xff0000) << 0x18" (binary_expression "uVar14 >> 0x38 | (uVar14 & 0xff000000000000) >> 0x28 |\n               (uVar14 & 0xff0000000000) >> 0x18 | (uVar14 & 0xff00000000) >> 8 |\n               (uVar14 & 0xff000000) << 8" (binary_expression "uVar14 >> 0x38 | (uVar14 & 0xff000000000000) >> 0x28 |\n               (uVar14 & 0xff0000000000) >> 0x18 | (uVar14 & 0xff00000000) >> 8" (binary_expression "uVar14 >> 0x38 | (uVar14 & 0xff000000000000) >> 0x28 |\n               (uVar14 & 0xff0000000000) >> 0x18" (binary_expression "uVar14 >> 0x38 | (uVar14 & 0xff000000000000) >> 0x28" (binary_expression "uVar14 >> 0x38" identifier >> number_literal) | (binary_expression "(uVar14 & 0xff000000000000) >> 0x28" (parenthesized_expression "(uVar14 & 0xff000000000000)" ( (binary_expression "uVar14 & 0xff000000000000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar14 & 0xff0000000000) >> 0x18" (parenthesized_expression "(uVar14 & 0xff0000000000)" ( (binary_expression "uVar14 & 0xff0000000000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar14 & 0xff00000000) >> 8" (parenthesized_expression "(uVar14 & 0xff00000000)" ( (binary_expression "uVar14 & 0xff00000000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar14 & 0xff000000) << 8" (parenthesized_expression "(uVar14 & 0xff000000)" ( (binary_expression "uVar14 & 0xff000000" identifier & number_literal) )) << number_literal)) | (binary_expression "(uVar14 & 0xff0000) << 0x18" (parenthesized_expression "(uVar14 & 0xff0000)" ( (binary_expression "uVar14 & 0xff0000" identifier & number_literal) )) << number_literal)) | (binary_expression "(uVar14 & 0xff00) << 0x28" (parenthesized_expression "(uVar14 & 0xff00)" ( (binary_expression "uVar14 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar14 << 0x38" identifier << number_literal))) ;) (expression_statement "*poVar18 = uVar14;" (assignment_expression "*poVar18 = uVar14" (pointer_expression "*poVar18" * identifier) = identifier) ;) (expression_statement "sVar10 = strlen((char *)((long)puVar1 + uVar9));" (assignment_expression "sVar10 = strlen((char *)((long)puVar1 + uVar9))" identifier = (call_expression "strlen((char *)((long)puVar1 + uVar9))" identifier (argument_list "((char *)((long)puVar1 + uVar9))" ( (cast_expression "(char *)((long)puVar1 + uVar9)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar1 + uVar9)" ( (binary_expression "(long)puVar1 + uVar9" (cast_expression "(long)puVar1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) ))) )))) ;) (expression_statement "uVar9 = uVar9 + 1 + sVar10;" (assignment_expression "uVar9 = uVar9 + 1 + sVar10" identifier = (binary_expression "uVar9 + 1 + sVar10" (binary_expression "uVar9 + 1" identifier + number_literal) + identifier)) ;) (if_statement "if (uVar14 != uVar16) {\n        this->num_members_ = this->num_members_ + 1;\n      }" if (parenthesized_expression "(uVar14 != uVar16)" ( (binary_expression "uVar14 != uVar16" identifier != identifier) )) (compound_statement "{\n        this->num_members_ = this->num_members_ + 1;\n      }" { (expression_statement "this->num_members_ = this->num_members_ + 1;" (assignment_expression "this->num_members_ = this->num_members_ + 1" (field_expression "this->num_members_" identifier -> field_identifier) = (binary_expression "this->num_members_ + 1" (field_expression "this->num_members_" identifier -> field_identifier) + number_literal)) ;) })) (expression_statement "poVar18 = poVar18 + 2;" (assignment_expression "poVar18 = poVar18 + 2" identifier = (binary_expression "poVar18 + 2" identifier + number_literal)) ;) (expression_statement "uVar16 = uVar14;" (assignment_expression "uVar16 = uVar14" identifier = identifier) ;) }) while (parenthesized_expression "(puVar17 != puVar6 + uVar7 + 1)" ( (binary_expression "puVar17 != puVar6 + uVar7 + 1" identifier != (binary_expression "puVar6 + uVar7 + 1" (binary_expression "puVar6 + uVar7" identifier + identifier) + number_literal)) )) ;) (if_statement "if (uVar8 < uVar9) {\n      pcVar4 = (this->name_)._M_dataplus._M_p;\n      format = (char *)gettext("%s: bad archive symbol table names");\n      gold_error(format,pcVar4);\n    }" if (parenthesized_expression "(uVar8 < uVar9)" ( (binary_expression "uVar8 < uVar9" identifier < identifier) )) (compound_statement "{\n      pcVar4 = (this->name_)._M_dataplus._M_p;\n      format = (char *)gettext("%s: bad archive symbol table names");\n      gold_error(format,pcVar4);\n    }" { (expression_statement "pcVar4 = (this->name_)._M_dataplus._M_p;" (assignment_expression "pcVar4 = (this->name_)._M_dataplus._M_p" identifier = (field_expression "(this->name_)._M_dataplus._M_p" (field_expression "(this->name_)._M_dataplus" (parenthesized_expression "(this->name_)" ( (field_expression "this->name_" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "format = (char *)gettext("%s: bad archive symbol table names");" (assignment_expression "format = (char *)gettext("%s: bad archive symbol table names")" identifier = (cast_expression "(char *)gettext("%s: bad archive symbol table names")" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "gettext("%s: bad archive symbol table names")" identifier (argument_list "("%s: bad archive symbol table names")" ( (string_literal ""%s: bad archive symbol table names"" " string_content ") ))))) ;) (expression_statement "gold_error(format,pcVar4);" (call_expression "gold_error(format,pcVar4)" identifier (argument_list "(format,pcVar4)" ( identifier , identifier ))) ;) })) })) (expression_statement "p_Var5 = (this->armap_checked_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n           super__Bvector_impl_data._M_finish.super__Bit_iterator_base._M_p;" (field_expression "p_Var5 = (this->armap_checked_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n           super__Bvector_impl_data._M_finish.super__Bit_iterator_base._M_p" (field_expression "p_Var5 = (this->armap_checked_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n           super__Bvector_impl_data._M_finish.super__Bit_iterator_base" (field_expression "p_Var5 = (this->armap_checked_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n           super__Bvector_impl_data._M_finish" (field_expression "p_Var5 = (this->armap_checked_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n           super__Bvector_impl_data" (field_expression "p_Var5 = (this->armap_checked_).super__Bvector_base<std::allocator<bool>_>._M_impl" (binary_expression "p_Var5 = (this->armap_checked_).super__Bvector_base<std::allocator<bool>_" (binary_expression "p_Var5 = (this->armap_checked_).super__Bvector_base<std::allocator<bool" (assignment_expression "p_Var5 = (this->armap_checked_).super__Bvector_base<std" identifier = (binary_expression "(this->armap_checked_).super__Bvector_base<std" (field_expression "(this->armap_checked_).super__Bvector_base" (parenthesized_expression "(this->armap_checked_)" ( (field_expression "this->armap_checked_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::allocator" : : identifier) < identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) . field_identifier) . field_identifier) . field_identifier) ;) (expression_statement "p_Var12 = (this->armap_checked_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n            super__Bvector_impl_data._M_start.super__Bit_iterator_base._M_p;" (field_expression "p_Var12 = (this->armap_checked_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n            super__Bvector_impl_data._M_start.super__Bit_iterator_base._M_p" (field_expression "p_Var12 = (this->armap_checked_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n            super__Bvector_impl_data._M_start.super__Bit_iterator_base" (field_expression "p_Var12 = (this->armap_checked_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n            super__Bvector_impl_data._M_start" (field_expression "p_Var12 = (this->armap_checked_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n            super__Bvector_impl_data" (field_expression "p_Var12 = (this->armap_checked_).super__Bvector_base<std::allocator<bool>_>._M_impl" (binary_expression "p_Var12 = (this->armap_checked_).super__Bvector_base<std::allocator<bool>_" (binary_expression "p_Var12 = (this->armap_checked_).super__Bvector_base<std::allocator<bool" (assignment_expression "p_Var12 = (this->armap_checked_).super__Bvector_base<std" identifier = (binary_expression "(this->armap_checked_).super__Bvector_base<std" (field_expression "(this->armap_checked_).super__Bvector_base" (parenthesized_expression "(this->armap_checked_)" ( (field_expression "this->armap_checked_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::allocator" : : identifier) < identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) . field_identifier) . field_identifier) . field_identifier) ;) (expression_statement "uVar2 = (this->armap_checked_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n          super__Bvector_impl_data._M_finish.super__Bit_iterator_base._M_offset;" (field_expression "uVar2 = (this->armap_checked_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n          super__Bvector_impl_data._M_finish.super__Bit_iterator_base._M_offset" (field_expression "uVar2 = (this->armap_checked_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n          super__Bvector_impl_data._M_finish.super__Bit_iterator_base" (field_expression "uVar2 = (this->armap_checked_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n          super__Bvector_impl_data._M_finish" (field_expression "uVar2 = (this->armap_checked_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n          super__Bvector_impl_data" (field_expression "uVar2 = (this->armap_checked_).super__Bvector_base<std::allocator<bool>_>._M_impl" (binary_expression "uVar2 = (this->armap_checked_).super__Bvector_base<std::allocator<bool>_" (binary_expression "uVar2 = (this->armap_checked_).super__Bvector_base<std::allocator<bool" (assignment_expression "uVar2 = (this->armap_checked_).super__Bvector_base<std" identifier = (binary_expression "(this->armap_checked_).super__Bvector_base<std" (field_expression "(this->armap_checked_).super__Bvector_base" (parenthesized_expression "(this->armap_checked_)" ( (field_expression "this->armap_checked_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::allocator" : : identifier) < identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) . field_identifier) . field_identifier) . field_identifier) ;) (expression_statement "uVar9 = (ulong)(this->armap_checked_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n                 super__Bvector_impl_data._M_start.super__Bit_iterator_base._M_offset;" (field_expression "uVar9 = (ulong)(this->armap_checked_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n                 super__Bvector_impl_data._M_start.super__Bit_iterator_base._M_offset" (field_expression "uVar9 = (ulong)(this->armap_checked_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n                 super__Bvector_impl_data._M_start.super__Bit_iterator_base" (field_expression "uVar9 = (ulong)(this->armap_checked_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n                 super__Bvector_impl_data._M_start" (field_expression "uVar9 = (ulong)(this->armap_checked_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n                 super__Bvector_impl_data" (field_expression "uVar9 = (ulong)(this->armap_checked_).super__Bvector_base<std::allocator<bool>_>._M_impl" (binary_expression "uVar9 = (ulong)(this->armap_checked_).super__Bvector_base<std::allocator<bool>_" (binary_expression "uVar9 = (ulong)(this->armap_checked_).super__Bvector_base<std::allocator<bool" (assignment_expression "uVar9 = (ulong)(this->armap_checked_).super__Bvector_base<std" identifier = (binary_expression "(ulong)(this->armap_checked_).super__Bvector_base<std" (field_expression "(ulong)(this->armap_checked_).super__Bvector_base" (call_expression "(ulong)(this->armap_checked_)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(this->armap_checked_)" ( (field_expression "this->armap_checked_" identifier -> field_identifier) ))) . field_identifier) < identifier)) (ERROR "::allocator" : : identifier) < identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) . field_identifier) . field_identifier) . field_identifier) ;) (expression_statement "uVar8 = ((ulong)uVar2 + ((long)p_Var5 - (long)p_Var12) * 8) - uVar9;" (assignment_expression "uVar8 = ((ulong)uVar2 + ((long)p_Var5 - (long)p_Var12) * 8) - uVar9" identifier = (binary_expression "((ulong)uVar2 + ((long)p_Var5 - (long)p_Var12) * 8) - uVar9" (parenthesized_expression "((ulong)uVar2 + ((long)p_Var5 - (long)p_Var12) * 8)" ( (binary_expression "(ulong)uVar2 + ((long)p_Var5 - (long)p_Var12) * 8" (cast_expression "(ulong)uVar2" ( (type_descriptor "ulong" type_identifier) ) identifier) + (binary_expression "((long)p_Var5 - (long)p_Var12) * 8" (parenthesized_expression "((long)p_Var5 - (long)p_Var12)" ( (binary_expression "(long)p_Var5 - (long)p_Var12" (cast_expression "(long)p_Var5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)p_Var12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) * number_literal)) )) - identifier)) ;) (if_statement "if (uVar7 < uVar8) {\n    lVar15 = uVar7 + uVar9;\n    lVar11 = lVar15 + 0x3f;\n    if (-1 < lVar15) {\n      lVar11 = lVar15;\n    }\n    p_Var12 = p_Var12 + (lVar11 >> 6);\n    lVar15 = lVar15 % 0x40;\n    if (lVar15 < 0) {\n      lVar15 = lVar15 + 0x40;\n      p_Var12 = p_Var12 + -1;\n    }\n    (this->armap_checked_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n    super__Bvector_impl_data._M_finish.super__Bit_iterator_base._M_offset = (uint)lVar15;\n    (this->armap_checked_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n    super__Bvector_impl_data._M_finish.super__Bit_iterator_base._M_p = p_Var12;\n    return;\n  }" if (parenthesized_expression "(uVar7 < uVar8)" ( (binary_expression "uVar7 < uVar8" identifier < identifier) )) (compound_statement "{\n    lVar15 = uVar7 + uVar9;\n    lVar11 = lVar15 + 0x3f;\n    if (-1 < lVar15) {\n      lVar11 = lVar15;\n    }\n    p_Var12 = p_Var12 + (lVar11 >> 6);\n    lVar15 = lVar15 % 0x40;\n    if (lVar15 < 0) {\n      lVar15 = lVar15 + 0x40;\n      p_Var12 = p_Var12 + -1;\n    }\n    (this->armap_checked_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n    super__Bvector_impl_data._M_finish.super__Bit_iterator_base._M_offset = (uint)lVar15;\n    (this->armap_checked_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n    super__Bvector_impl_data._M_finish.super__Bit_iterator_base._M_p = p_Var12;\n    return;\n  }" { (expression_statement "lVar15 = uVar7 + uVar9;" (assignment_expression "lVar15 = uVar7 + uVar9" identifier = (binary_expression "uVar7 + uVar9" identifier + identifier)) ;) (expression_statement "lVar11 = lVar15 + 0x3f;" (assignment_expression "lVar11 = lVar15 + 0x3f" identifier = (binary_expression "lVar15 + 0x3f" identifier + number_literal)) ;) (if_statement "if (-1 < lVar15) {\n      lVar11 = lVar15;\n    }" if (parenthesized_expression "(-1 < lVar15)" ( (binary_expression "-1 < lVar15" number_literal < identifier) )) (compound_statement "{\n      lVar11 = lVar15;\n    }" { (expression_statement "lVar11 = lVar15;" (assignment_expression "lVar11 = lVar15" identifier = identifier) ;) })) (expression_statement "p_Var12 = p_Var12 + (lVar11 >> 6);" (assignment_expression "p_Var12 = p_Var12 + (lVar11 >> 6)" identifier = (binary_expression "p_Var12 + (lVar11 >> 6)" identifier + (parenthesized_expression "(lVar11 >> 6)" ( (binary_expression "lVar11 >> 6" identifier >> number_literal) )))) ;) (expression_statement "lVar15 = lVar15 % 0x40;" (assignment_expression "lVar15 = lVar15 % 0x40" identifier = (binary_expression "lVar15 % 0x40" identifier % number_literal)) ;) (if_statement "if (lVar15 < 0) {\n      lVar15 = lVar15 + 0x40;\n      p_Var12 = p_Var12 + -1;\n    }" if (parenthesized_expression "(lVar15 < 0)" ( (binary_expression "lVar15 < 0" identifier < number_literal) )) (compound_statement "{\n      lVar15 = lVar15 + 0x40;\n      p_Var12 = p_Var12 + -1;\n    }" { (expression_statement "lVar15 = lVar15 + 0x40;" (assignment_expression "lVar15 = lVar15 + 0x40" identifier = (binary_expression "lVar15 + 0x40" identifier + number_literal)) ;) (expression_statement "p_Var12 = p_Var12 + -1;" (assignment_expression "p_Var12 = p_Var12 + -1" identifier = (binary_expression "p_Var12 + -1" identifier + number_literal)) ;) })) (expression_statement "(this->armap_checked_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n    super__Bvector_impl_data._M_finish.super__Bit_iterator_base._M_offset = (uint)lVar15;" (assignment_expression "(this->armap_checked_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n    super__Bvector_impl_data._M_finish.super__Bit_iterator_base._M_offset = (uint)lVar15" (field_expression "(this->armap_checked_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n    super__Bvector_impl_data._M_finish.super__Bit_iterator_base._M_offset" (field_expression "(this->armap_checked_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n    super__Bvector_impl_data._M_finish.super__Bit_iterator_base" (field_expression "(this->armap_checked_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n    super__Bvector_impl_data._M_finish" (field_expression "(this->armap_checked_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n    super__Bvector_impl_data" (field_expression "(this->armap_checked_).super__Bvector_base<std::allocator<bool>_>._M_impl" (binary_expression "(this->armap_checked_).super__Bvector_base<std::allocator<bool>_" (binary_expression "(this->armap_checked_).super__Bvector_base<std::allocator<bool" (binary_expression "(this->armap_checked_).super__Bvector_base<std" (field_expression "(this->armap_checked_).super__Bvector_base" (parenthesized_expression "(this->armap_checked_)" ( (field_expression "this->armap_checked_" identifier -> field_identifier) )) . field_identifier) < identifier) (ERROR "::allocator" : : identifier) < identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) . field_identifier) . field_identifier) . field_identifier) = (cast_expression "(uint)lVar15" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "(this->armap_checked_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n    super__Bvector_impl_data._M_finish.super__Bit_iterator_base._M_p = p_Var12;" (assignment_expression "(this->armap_checked_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n    super__Bvector_impl_data._M_finish.super__Bit_iterator_base._M_p = p_Var12" (field_expression "(this->armap_checked_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n    super__Bvector_impl_data._M_finish.super__Bit_iterator_base._M_p" (field_expression "(this->armap_checked_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n    super__Bvector_impl_data._M_finish.super__Bit_iterator_base" (field_expression "(this->armap_checked_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n    super__Bvector_impl_data._M_finish" (field_expression "(this->armap_checked_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n    super__Bvector_impl_data" (field_expression "(this->armap_checked_).super__Bvector_base<std::allocator<bool>_>._M_impl" (binary_expression "(this->armap_checked_).super__Bvector_base<std::allocator<bool>_" (binary_expression "(this->armap_checked_).super__Bvector_base<std::allocator<bool" (binary_expression "(this->armap_checked_).super__Bvector_base<std" (field_expression "(this->armap_checked_).super__Bvector_base" (parenthesized_expression "(this->armap_checked_)" ( (field_expression "this->armap_checked_" identifier -> field_identifier) )) . field_identifier) < identifier) (ERROR "::allocator" : : identifier) < identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) . field_identifier) . field_identifier) . field_identifier) = identifier) ;) (return_statement "return;" return ;) })) (expression_statement "__position.super__Bit_iterator_base._12_4_ = uStack_3c;" (assignment_expression "__position.super__Bit_iterator_base._12_4_ = uStack_3c" (field_expression "__position.super__Bit_iterator_base._12_4_" (field_expression "__position.super__Bit_iterator_base" identifier . field_identifier) . field_identifier) = identifier) ;) (expression_statement "__position.super__Bit_iterator_base._M_offset = uVar2;" (assignment_expression "__position.super__Bit_iterator_base._M_offset = uVar2" (field_expression "__position.super__Bit_iterator_base._M_offset" (field_expression "__position.super__Bit_iterator_base" identifier . field_identifier) . field_identifier) = identifier) ;) (expression_statement "__position.super__Bit_iterator_base._M_p = p_Var5;" (assignment_expression "__position.super__Bit_iterator_base._M_p = p_Var5" (field_expression "__position.super__Bit_iterator_base._M_p" (field_expression "__position.super__Bit_iterator_base" identifier . field_identifier) . field_identifier) = identifier) ;) (labeled_statement "std::vector<bool,_std::allocator<bool>_>::_M_fill_insert\n            (&this->armap_checked_,__position,uVar7 - uVar8,false);" statement_identifier (ERROR "::vector<bool,_std::allocator<bool>_>:" : : (comma_expression "vector<bool,_std" (binary_expression "vector<bool" identifier < identifier) , identifier) : : (binary_expression "allocator<bool>_" (binary_expression "allocator<bool" identifier < identifier) > identifier) > :) : (expression_statement "_M_fill_insert\n            (&this->armap_checked_,__position,uVar7 - uVar8,false);" (call_expression "_M_fill_insert\n            (&this->armap_checked_,__position,uVar7 - uVar8,false)" identifier (argument_list "(&this->armap_checked_,__position,uVar7 - uVar8,false)" ( (pointer_expression "&this->armap_checked_" & (field_expression "this->armap_checked_" identifier -> field_identifier)) , identifier , (binary_expression "uVar7 - uVar8" identifier - identifier) , false ))) ;)) (return_statement "return;" return ;) (ERROR "}" }))
(translation_unit "void FUN_00237410(long param_1,undefined8 param_2,long param_3)\n\n{\n  ulong *puVar1;\n  undefined8 uVar2;\n  ulong *puVar3;\n  ulong uVar4;\n  ulong uVar5;\n  ulong uVar6;\n  size_t sVar7;\n  undefined8 uVar8;\n  long lVar9;\n  ulong uVar10;\n  long lVar11;\n  ulong uVar12;\n  ulong *puVar13;\n  ulong *puVar14;\n  undefined4 uStack_3c;\n  \n  puVar3 = (ulong *)FUN_0016b970(*(long *)(param_1 + 0x38) + 0x28,0,param_2,param_3,1,0);\n  uVar4 = *puVar3;\n  puVar13 = puVar3 + 1;\n  uVar4 = uVar4 >> 0x38 | (uVar4 & 0xff000000000000) >> 0x28 | (uVar4 & 0xff0000000000) >> 0x18 |\n          (uVar4 & 0xff00000000) >> 8 | (uVar4 & 0xff000000) << 8 | (uVar4 & 0xff0000) << 0x18 |\n          (uVar4 & 0xff00) << 0x28 | uVar4 << 0x38;\n  puVar1 = puVar13 + uVar4;\n  uVar5 = (long)puVar3 + (param_3 - (long)puVar1);\n  FUN_0027e650(param_1 + 0x58,0,*(undefined8 *)(param_1 + 0x60),puVar1,uVar5);\n  uVar6 = *(long *)(param_1 + 0x48) - *(long *)(param_1 + 0x40) >> 4;\n  if (uVar6 < uVar4) {\n    FUN_00236ff0(param_1 + 0x40,uVar4 - uVar6);\n  }\n  else if ((uVar4 < uVar6) &&\n          (lVar9 = *(long *)(param_1 + 0x40) + uVar4 * 0x10, *(long *)(param_1 + 0x48) != lVar9)) {\n    *(long *)(param_1 + 0x48) = lVar9;\n  }\n  if (uVar4 != 0) {\n    uVar6 = 0;\n    puVar14 = (ulong *)(*(long *)(param_1 + 0x40) + 8);\n    uVar12 = 0xffffffffffffffff;\n    do {\n      puVar14[-1] = uVar6;\n      uVar10 = *puVar13;\n      puVar13 = puVar13 + 1;\n      uVar10 = uVar10 >> 0x38 | (uVar10 & 0xff000000000000) >> 0x28 |\n               (uVar10 & 0xff0000000000) >> 0x18 | (uVar10 & 0xff00000000) >> 8 |\n               (uVar10 & 0xff000000) << 8 | (uVar10 & 0xff0000) << 0x18 | (uVar10 & 0xff00) << 0x28\n               | uVar10 << 0x38;\n      *puVar14 = uVar10;\n      sVar7 = strlen((char *)((long)puVar1 + uVar6));\n      uVar6 = uVar6 + 1 + sVar7;\n      if (uVar10 != uVar12) {\n        *(int *)(param_1 + 0x170) = *(int *)(param_1 + 0x170) + 1;\n      }\n      puVar14 = puVar14 + 2;\n      uVar12 = uVar10;\n    } while (puVar13 != puVar3 + uVar4 + 1);\n    if (uVar5 < uVar6) {\n      uVar2 = *(undefined8 *)(param_1 + 0x18);\n      uVar8 = gettext("%s: bad archive symbol table names");\n      FUN_001690a0(uVar8,uVar2);\n    }\n  }\n  uVar5 = ((ulong)*(uint *)(param_1 + 0xb0) +\n          (*(long *)(param_1 + 0xa8) - *(long *)(param_1 + 0x98)) * 8) -\n          (ulong)*(uint *)(param_1 + 0xa0);\n  if (uVar4 < uVar5) {\n    lVar11 = uVar4 + *(uint *)(param_1 + 0xa0);\n    lVar9 = lVar11 + 0x3f;\n    if (-1 < lVar11) {\n      lVar9 = lVar11;\n    }\n    lVar9 = *(long *)(param_1 + 0x98) + (lVar9 >> 6) * 8;\n    lVar11 = lVar11 % 0x40;\n    if (lVar11 < 0) {\n      lVar11 = lVar11 + 0x40;\n      lVar9 = lVar9 + -8;\n    }\n    *(int *)(param_1 + 0xb0) = (int)lVar11;\n    *(long *)(param_1 + 0xa8) = lVar9;\n    return;\n  }\n  FUN_0015c0a0(param_1 + 0x98,*(long *)(param_1 + 0xa8),\n               CONCAT44(uStack_3c,*(uint *)(param_1 + 0xb0)),uVar4 - uVar5,0);\n  return;\n}\n\n" (function_definition "void FUN_00237410(long param_1,undefined8 param_2,long param_3)\n\n{\n  ulong *puVar1;\n  undefined8 uVar2;\n  ulong *puVar3;\n  ulong uVar4;\n  ulong uVar5;\n  ulong uVar6;\n  size_t sVar7;\n  undefined8 uVar8;\n  long lVar9;\n  ulong uVar10;\n  long lVar11;\n  ulong uVar12;\n  ulong *puVar13;\n  ulong *puVar14;\n  undefined4 uStack_3c;\n  \n  puVar3 = (ulong *)FUN_0016b970(*(long *)(param_1 + 0x38) + 0x28,0,param_2,param_3,1,0);\n  uVar4 = *puVar3;\n  puVar13 = puVar3 + 1;\n  uVar4 = uVar4 >> 0x38 | (uVar4 & 0xff000000000000) >> 0x28 | (uVar4 & 0xff0000000000) >> 0x18 |\n          (uVar4 & 0xff00000000) >> 8 | (uVar4 & 0xff000000) << 8 | (uVar4 & 0xff0000) << 0x18 |\n          (uVar4 & 0xff00) << 0x28 | uVar4 << 0x38;\n  puVar1 = puVar13 + uVar4;\n  uVar5 = (long)puVar3 + (param_3 - (long)puVar1);\n  FUN_0027e650(param_1 + 0x58,0,*(undefined8 *)(param_1 + 0x60),puVar1,uVar5);\n  uVar6 = *(long *)(param_1 + 0x48) - *(long *)(param_1 + 0x40) >> 4;\n  if (uVar6 < uVar4) {\n    FUN_00236ff0(param_1 + 0x40,uVar4 - uVar6);\n  }\n  else if ((uVar4 < uVar6) &&\n          (lVar9 = *(long *)(param_1 + 0x40) + uVar4 * 0x10, *(long *)(param_1 + 0x48) != lVar9)) {\n    *(long *)(param_1 + 0x48) = lVar9;\n  }\n  if (uVar4 != 0) {\n    uVar6 = 0;\n    puVar14 = (ulong *)(*(long *)(param_1 + 0x40) + 8);\n    uVar12 = 0xffffffffffffffff;\n    do {\n      puVar14[-1] = uVar6;\n      uVar10 = *puVar13;\n      puVar13 = puVar13 + 1;\n      uVar10 = uVar10 >> 0x38 | (uVar10 & 0xff000000000000) >> 0x28 |\n               (uVar10 & 0xff0000000000) >> 0x18 | (uVar10 & 0xff00000000) >> 8 |\n               (uVar10 & 0xff000000) << 8 | (uVar10 & 0xff0000) << 0x18 | (uVar10 & 0xff00) << 0x28\n               | uVar10 << 0x38;\n      *puVar14 = uVar10;\n      sVar7 = strlen((char *)((long)puVar1 + uVar6));\n      uVar6 = uVar6 + 1 + sVar7;\n      if (uVar10 != uVar12) {\n        *(int *)(param_1 + 0x170) = *(int *)(param_1 + 0x170) + 1;\n      }\n      puVar14 = puVar14 + 2;\n      uVar12 = uVar10;\n    } while (puVar13 != puVar3 + uVar4 + 1);\n    if (uVar5 < uVar6) {\n      uVar2 = *(undefined8 *)(param_1 + 0x18);\n      uVar8 = gettext("%s: bad archive symbol table names");\n      FUN_001690a0(uVar8,uVar2);\n    }\n  }\n  uVar5 = ((ulong)*(uint *)(param_1 + 0xb0) +\n          (*(long *)(param_1 + 0xa8) - *(long *)(param_1 + 0x98)) * 8) -\n          (ulong)*(uint *)(param_1 + 0xa0);\n  if (uVar4 < uVar5) {\n    lVar11 = uVar4 + *(uint *)(param_1 + 0xa0);\n    lVar9 = lVar11 + 0x3f;\n    if (-1 < lVar11) {\n      lVar9 = lVar11;\n    }\n    lVar9 = *(long *)(param_1 + 0x98) + (lVar9 >> 6) * 8;\n    lVar11 = lVar11 % 0x40;\n    if (lVar11 < 0) {\n      lVar11 = lVar11 + 0x40;\n      lVar9 = lVar9 + -8;\n    }\n    *(int *)(param_1 + 0xb0) = (int)lVar11;\n    *(long *)(param_1 + 0xa8) = lVar9;\n    return;\n  }\n  FUN_0015c0a0(param_1 + 0x98,*(long *)(param_1 + 0xa8),\n               CONCAT44(uStack_3c,*(uint *)(param_1 + 0xb0)),uVar4 - uVar5,0);\n  return;\n}" primitive_type (function_declarator "FUN_00237410(long param_1,undefined8 param_2,long param_3)" identifier (parameter_list "(long param_1,undefined8 param_2,long param_3)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined8 param_2" type_identifier identifier) , (parameter_declaration "long param_3" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  ulong *puVar1;\n  undefined8 uVar2;\n  ulong *puVar3;\n  ulong uVar4;\n  ulong uVar5;\n  ulong uVar6;\n  size_t sVar7;\n  undefined8 uVar8;\n  long lVar9;\n  ulong uVar10;\n  long lVar11;\n  ulong uVar12;\n  ulong *puVar13;\n  ulong *puVar14;\n  undefined4 uStack_3c;\n  \n  puVar3 = (ulong *)FUN_0016b970(*(long *)(param_1 + 0x38) + 0x28,0,param_2,param_3,1,0);\n  uVar4 = *puVar3;\n  puVar13 = puVar3 + 1;\n  uVar4 = uVar4 >> 0x38 | (uVar4 & 0xff000000000000) >> 0x28 | (uVar4 & 0xff0000000000) >> 0x18 |\n          (uVar4 & 0xff00000000) >> 8 | (uVar4 & 0xff000000) << 8 | (uVar4 & 0xff0000) << 0x18 |\n          (uVar4 & 0xff00) << 0x28 | uVar4 << 0x38;\n  puVar1 = puVar13 + uVar4;\n  uVar5 = (long)puVar3 + (param_3 - (long)puVar1);\n  FUN_0027e650(param_1 + 0x58,0,*(undefined8 *)(param_1 + 0x60),puVar1,uVar5);\n  uVar6 = *(long *)(param_1 + 0x48) - *(long *)(param_1 + 0x40) >> 4;\n  if (uVar6 < uVar4) {\n    FUN_00236ff0(param_1 + 0x40,uVar4 - uVar6);\n  }\n  else if ((uVar4 < uVar6) &&\n          (lVar9 = *(long *)(param_1 + 0x40) + uVar4 * 0x10, *(long *)(param_1 + 0x48) != lVar9)) {\n    *(long *)(param_1 + 0x48) = lVar9;\n  }\n  if (uVar4 != 0) {\n    uVar6 = 0;\n    puVar14 = (ulong *)(*(long *)(param_1 + 0x40) + 8);\n    uVar12 = 0xffffffffffffffff;\n    do {\n      puVar14[-1] = uVar6;\n      uVar10 = *puVar13;\n      puVar13 = puVar13 + 1;\n      uVar10 = uVar10 >> 0x38 | (uVar10 & 0xff000000000000) >> 0x28 |\n               (uVar10 & 0xff0000000000) >> 0x18 | (uVar10 & 0xff00000000) >> 8 |\n               (uVar10 & 0xff000000) << 8 | (uVar10 & 0xff0000) << 0x18 | (uVar10 & 0xff00) << 0x28\n               | uVar10 << 0x38;\n      *puVar14 = uVar10;\n      sVar7 = strlen((char *)((long)puVar1 + uVar6));\n      uVar6 = uVar6 + 1 + sVar7;\n      if (uVar10 != uVar12) {\n        *(int *)(param_1 + 0x170) = *(int *)(param_1 + 0x170) + 1;\n      }\n      puVar14 = puVar14 + 2;\n      uVar12 = uVar10;\n    } while (puVar13 != puVar3 + uVar4 + 1);\n    if (uVar5 < uVar6) {\n      uVar2 = *(undefined8 *)(param_1 + 0x18);\n      uVar8 = gettext("%s: bad archive symbol table names");\n      FUN_001690a0(uVar8,uVar2);\n    }\n  }\n  uVar5 = ((ulong)*(uint *)(param_1 + 0xb0) +\n          (*(long *)(param_1 + 0xa8) - *(long *)(param_1 + 0x98)) * 8) -\n          (ulong)*(uint *)(param_1 + 0xa0);\n  if (uVar4 < uVar5) {\n    lVar11 = uVar4 + *(uint *)(param_1 + 0xa0);\n    lVar9 = lVar11 + 0x3f;\n    if (-1 < lVar11) {\n      lVar9 = lVar11;\n    }\n    lVar9 = *(long *)(param_1 + 0x98) + (lVar9 >> 6) * 8;\n    lVar11 = lVar11 % 0x40;\n    if (lVar11 < 0) {\n      lVar11 = lVar11 + 0x40;\n      lVar9 = lVar9 + -8;\n    }\n    *(int *)(param_1 + 0xb0) = (int)lVar11;\n    *(long *)(param_1 + 0xa8) = lVar9;\n    return;\n  }\n  FUN_0015c0a0(param_1 + 0x98,*(long *)(param_1 + 0xa8),\n               CONCAT44(uStack_3c,*(uint *)(param_1 + 0xb0)),uVar4 - uVar5,0);\n  return;\n}" { (declaration "ulong *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined8 uVar2;" type_identifier identifier ;) (declaration "ulong *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "ulong uVar4;" type_identifier identifier ;) (declaration "ulong uVar5;" type_identifier identifier ;) (declaration "ulong uVar6;" type_identifier identifier ;) (declaration "size_t sVar7;" primitive_type identifier ;) (declaration "undefined8 uVar8;" type_identifier identifier ;) (declaration "long lVar9;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar10;" type_identifier identifier ;) (declaration "long lVar11;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar12;" type_identifier identifier ;) (declaration "ulong *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "ulong *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "undefined4 uStack_3c;" type_identifier identifier ;) (expression_statement "puVar3 = (ulong *)FUN_0016b970(*(long *)(param_1 + 0x38) + 0x28,0,param_2,param_3,1,0);" (assignment_expression "puVar3 = (ulong *)FUN_0016b970(*(long *)(param_1 + 0x38) + 0x28,0,param_2,param_3,1,0)" identifier = (cast_expression "(ulong *)FUN_0016b970(*(long *)(param_1 + 0x38) + 0x28,0,param_2,param_3,1,0)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0016b970(*(long *)(param_1 + 0x38) + 0x28,0,param_2,param_3,1,0)" identifier (argument_list "(*(long *)(param_1 + 0x38) + 0x28,0,param_2,param_3,1,0)" ( (binary_expression "*(long *)(param_1 + 0x38) + 0x28" (pointer_expression "*(long *)(param_1 + 0x38)" * (cast_expression "(long *)(param_1 + 0x38)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) )))) + number_literal) , number_literal , identifier , identifier , number_literal , number_literal ))))) ;) (expression_statement "uVar4 = *puVar3;" (assignment_expression "uVar4 = *puVar3" identifier = (pointer_expression "*puVar3" * identifier)) ;) (expression_statement "puVar13 = puVar3 + 1;" (assignment_expression "puVar13 = puVar3 + 1" identifier = (binary_expression "puVar3 + 1" identifier + number_literal)) ;) (expression_statement "uVar4 = uVar4 >> 0x38 | (uVar4 & 0xff000000000000) >> 0x28 | (uVar4 & 0xff0000000000) >> 0x18 |\n          (uVar4 & 0xff00000000) >> 8 | (uVar4 & 0xff000000) << 8 | (uVar4 & 0xff0000) << 0x18 |\n          (uVar4 & 0xff00) << 0x28 | uVar4 << 0x38;" (assignment_expression "uVar4 = uVar4 >> 0x38 | (uVar4 & 0xff000000000000) >> 0x28 | (uVar4 & 0xff0000000000) >> 0x18 |\n          (uVar4 & 0xff00000000) >> 8 | (uVar4 & 0xff000000) << 8 | (uVar4 & 0xff0000) << 0x18 |\n          (uVar4 & 0xff00) << 0x28 | uVar4 << 0x38" identifier = (binary_expression "uVar4 >> 0x38 | (uVar4 & 0xff000000000000) >> 0x28 | (uVar4 & 0xff0000000000) >> 0x18 |\n          (uVar4 & 0xff00000000) >> 8 | (uVar4 & 0xff000000) << 8 | (uVar4 & 0xff0000) << 0x18 |\n          (uVar4 & 0xff00) << 0x28 | uVar4 << 0x38" (binary_expression "uVar4 >> 0x38 | (uVar4 & 0xff000000000000) >> 0x28 | (uVar4 & 0xff0000000000) >> 0x18 |\n          (uVar4 & 0xff00000000) >> 8 | (uVar4 & 0xff000000) << 8 | (uVar4 & 0xff0000) << 0x18 |\n          (uVar4 & 0xff00) << 0x28" (binary_expression "uVar4 >> 0x38 | (uVar4 & 0xff000000000000) >> 0x28 | (uVar4 & 0xff0000000000) >> 0x18 |\n          (uVar4 & 0xff00000000) >> 8 | (uVar4 & 0xff000000) << 8 | (uVar4 & 0xff0000) << 0x18" (binary_expression "uVar4 >> 0x38 | (uVar4 & 0xff000000000000) >> 0x28 | (uVar4 & 0xff0000000000) >> 0x18 |\n          (uVar4 & 0xff00000000) >> 8 | (uVar4 & 0xff000000) << 8" (binary_expression "uVar4 >> 0x38 | (uVar4 & 0xff000000000000) >> 0x28 | (uVar4 & 0xff0000000000) >> 0x18 |\n          (uVar4 & 0xff00000000) >> 8" (binary_expression "uVar4 >> 0x38 | (uVar4 & 0xff000000000000) >> 0x28 | (uVar4 & 0xff0000000000) >> 0x18" (binary_expression "uVar4 >> 0x38 | (uVar4 & 0xff000000000000) >> 0x28" (binary_expression "uVar4 >> 0x38" identifier >> number_literal) | (binary_expression "(uVar4 & 0xff000000000000) >> 0x28" (parenthesized_expression "(uVar4 & 0xff000000000000)" ( (binary_expression "uVar4 & 0xff000000000000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar4 & 0xff0000000000) >> 0x18" (parenthesized_expression "(uVar4 & 0xff0000000000)" ( (binary_expression "uVar4 & 0xff0000000000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar4 & 0xff00000000) >> 8" (parenthesized_expression "(uVar4 & 0xff00000000)" ( (binary_expression "uVar4 & 0xff00000000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar4 & 0xff000000) << 8" (parenthesized_expression "(uVar4 & 0xff000000)" ( (binary_expression "uVar4 & 0xff000000" identifier & number_literal) )) << number_literal)) | (binary_expression "(uVar4 & 0xff0000) << 0x18" (parenthesized_expression "(uVar4 & 0xff0000)" ( (binary_expression "uVar4 & 0xff0000" identifier & number_literal) )) << number_literal)) | (binary_expression "(uVar4 & 0xff00) << 0x28" (parenthesized_expression "(uVar4 & 0xff00)" ( (binary_expression "uVar4 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar4 << 0x38" identifier << number_literal))) ;) (expression_statement "puVar1 = puVar13 + uVar4;" (assignment_expression "puVar1 = puVar13 + uVar4" identifier = (binary_expression "puVar13 + uVar4" identifier + identifier)) ;) (expression_statement "uVar5 = (long)puVar3 + (param_3 - (long)puVar1);" (assignment_expression "uVar5 = (long)puVar3 + (param_3 - (long)puVar1)" identifier = (binary_expression "(long)puVar3 + (param_3 - (long)puVar1)" (cast_expression "(long)puVar3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "(param_3 - (long)puVar1)" ( (binary_expression "param_3 - (long)puVar1" identifier - (cast_expression "(long)puVar1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )))) ;) (expression_statement "FUN_0027e650(param_1 + 0x58,0,*(undefined8 *)(param_1 + 0x60),puVar1,uVar5);" (call_expression "FUN_0027e650(param_1 + 0x58,0,*(undefined8 *)(param_1 + 0x60),puVar1,uVar5)" identifier (argument_list "(param_1 + 0x58,0,*(undefined8 *)(param_1 + 0x60),puVar1,uVar5)" ( (binary_expression "param_1 + 0x58" identifier + number_literal) , number_literal , (pointer_expression "*(undefined8 *)(param_1 + 0x60)" * (cast_expression "(undefined8 *)(param_1 + 0x60)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x60)" ( (binary_expression "param_1 + 0x60" identifier + number_literal) )))) , identifier , identifier ))) ;) (expression_statement "uVar6 = *(long *)(param_1 + 0x48) - *(long *)(param_1 + 0x40) >> 4;" (assignment_expression "uVar6 = *(long *)(param_1 + 0x48) - *(long *)(param_1 + 0x40) >> 4" identifier = (binary_expression "*(long *)(param_1 + 0x48) - *(long *)(param_1 + 0x40) >> 4" (binary_expression "*(long *)(param_1 + 0x48) - *(long *)(param_1 + 0x40)" (pointer_expression "*(long *)(param_1 + 0x48)" * (cast_expression "(long *)(param_1 + 0x48)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) )))) - (pointer_expression "*(long *)(param_1 + 0x40)" * (cast_expression "(long *)(param_1 + 0x40)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) ))))) >> number_literal)) ;) (if_statement "if (uVar6 < uVar4) {\n    FUN_00236ff0(param_1 + 0x40,uVar4 - uVar6);\n  }\n  else if ((uVar4 < uVar6) &&\n          (lVar9 = *(long *)(param_1 + 0x40) + uVar4 * 0x10, *(long *)(param_1 + 0x48) != lVar9)) {\n    *(long *)(param_1 + 0x48) = lVar9;\n  }" if (parenthesized_expression "(uVar6 < uVar4)" ( (binary_expression "uVar6 < uVar4" identifier < identifier) )) (compound_statement "{\n    FUN_00236ff0(param_1 + 0x40,uVar4 - uVar6);\n  }" { (expression_statement "FUN_00236ff0(param_1 + 0x40,uVar4 - uVar6);" (call_expression "FUN_00236ff0(param_1 + 0x40,uVar4 - uVar6)" identifier (argument_list "(param_1 + 0x40,uVar4 - uVar6)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) , (binary_expression "uVar4 - uVar6" identifier - identifier) ))) ;) }) (else_clause "else if ((uVar4 < uVar6) &&\n          (lVar9 = *(long *)(param_1 + 0x40) + uVar4 * 0x10, *(long *)(param_1 + 0x48) != lVar9)) {\n    *(long *)(param_1 + 0x48) = lVar9;\n  }" else (if_statement "if ((uVar4 < uVar6) &&\n          (lVar9 = *(long *)(param_1 + 0x40) + uVar4 * 0x10, *(long *)(param_1 + 0x48) != lVar9)) {\n    *(long *)(param_1 + 0x48) = lVar9;\n  }" if (parenthesized_expression "((uVar4 < uVar6) &&\n          (lVar9 = *(long *)(param_1 + 0x40) + uVar4 * 0x10, *(long *)(param_1 + 0x48) != lVar9))" ( (binary_expression "(uVar4 < uVar6) &&\n          (lVar9 = *(long *)(param_1 + 0x40) + uVar4 * 0x10, *(long *)(param_1 + 0x48) != lVar9)" (parenthesized_expression "(uVar4 < uVar6)" ( (binary_expression "uVar4 < uVar6" identifier < identifier) )) && (parenthesized_expression "(lVar9 = *(long *)(param_1 + 0x40) + uVar4 * 0x10, *(long *)(param_1 + 0x48) != lVar9)" ( (comma_expression "lVar9 = *(long *)(param_1 + 0x40) + uVar4 * 0x10, *(long *)(param_1 + 0x48) != lVar9" (assignment_expression "lVar9 = *(long *)(param_1 + 0x40) + uVar4 * 0x10" identifier = (binary_expression "*(long *)(param_1 + 0x40) + uVar4 * 0x10" (pointer_expression "*(long *)(param_1 + 0x40)" * (cast_expression "(long *)(param_1 + 0x40)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) )))) + (binary_expression "uVar4 * 0x10" identifier * number_literal))) , (binary_expression "*(long *)(param_1 + 0x48) != lVar9" (pointer_expression "*(long *)(param_1 + 0x48)" * (cast_expression "(long *)(param_1 + 0x48)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) )))) != identifier)) ))) )) (compound_statement "{\n    *(long *)(param_1 + 0x48) = lVar9;\n  }" { (expression_statement "*(long *)(param_1 + 0x48) = lVar9;" (assignment_expression "*(long *)(param_1 + 0x48) = lVar9" (pointer_expression "*(long *)(param_1 + 0x48)" * (cast_expression "(long *)(param_1 + 0x48)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) )))) = identifier) ;) })))) (if_statement "if (uVar4 != 0) {\n    uVar6 = 0;\n    puVar14 = (ulong *)(*(long *)(param_1 + 0x40) + 8);\n    uVar12 = 0xffffffffffffffff;\n    do {\n      puVar14[-1] = uVar6;\n      uVar10 = *puVar13;\n      puVar13 = puVar13 + 1;\n      uVar10 = uVar10 >> 0x38 | (uVar10 & 0xff000000000000) >> 0x28 |\n               (uVar10 & 0xff0000000000) >> 0x18 | (uVar10 & 0xff00000000) >> 8 |\n               (uVar10 & 0xff000000) << 8 | (uVar10 & 0xff0000) << 0x18 | (uVar10 & 0xff00) << 0x28\n               | uVar10 << 0x38;\n      *puVar14 = uVar10;\n      sVar7 = strlen((char *)((long)puVar1 + uVar6));\n      uVar6 = uVar6 + 1 + sVar7;\n      if (uVar10 != uVar12) {\n        *(int *)(param_1 + 0x170) = *(int *)(param_1 + 0x170) + 1;\n      }\n      puVar14 = puVar14 + 2;\n      uVar12 = uVar10;\n    } while (puVar13 != puVar3 + uVar4 + 1);\n    if (uVar5 < uVar6) {\n      uVar2 = *(undefined8 *)(param_1 + 0x18);\n      uVar8 = gettext("%s: bad archive symbol table names");\n      FUN_001690a0(uVar8,uVar2);\n    }\n  }" if (parenthesized_expression "(uVar4 != 0)" ( (binary_expression "uVar4 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar6 = 0;\n    puVar14 = (ulong *)(*(long *)(param_1 + 0x40) + 8);\n    uVar12 = 0xffffffffffffffff;\n    do {\n      puVar14[-1] = uVar6;\n      uVar10 = *puVar13;\n      puVar13 = puVar13 + 1;\n      uVar10 = uVar10 >> 0x38 | (uVar10 & 0xff000000000000) >> 0x28 |\n               (uVar10 & 0xff0000000000) >> 0x18 | (uVar10 & 0xff00000000) >> 8 |\n               (uVar10 & 0xff000000) << 8 | (uVar10 & 0xff0000) << 0x18 | (uVar10 & 0xff00) << 0x28\n               | uVar10 << 0x38;\n      *puVar14 = uVar10;\n      sVar7 = strlen((char *)((long)puVar1 + uVar6));\n      uVar6 = uVar6 + 1 + sVar7;\n      if (uVar10 != uVar12) {\n        *(int *)(param_1 + 0x170) = *(int *)(param_1 + 0x170) + 1;\n      }\n      puVar14 = puVar14 + 2;\n      uVar12 = uVar10;\n    } while (puVar13 != puVar3 + uVar4 + 1);\n    if (uVar5 < uVar6) {\n      uVar2 = *(undefined8 *)(param_1 + 0x18);\n      uVar8 = gettext("%s: bad archive symbol table names");\n      FUN_001690a0(uVar8,uVar2);\n    }\n  }" { (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" identifier = number_literal) ;) (expression_statement "puVar14 = (ulong *)(*(long *)(param_1 + 0x40) + 8);" (assignment_expression "puVar14 = (ulong *)(*(long *)(param_1 + 0x40) + 8)" identifier = (cast_expression "(ulong *)(*(long *)(param_1 + 0x40) + 8)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x40) + 8)" ( (binary_expression "*(long *)(param_1 + 0x40) + 8" (pointer_expression "*(long *)(param_1 + 0x40)" * (cast_expression "(long *)(param_1 + 0x40)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "uVar12 = 0xffffffffffffffff;" (assignment_expression "uVar12 = 0xffffffffffffffff" identifier = number_literal) ;) (do_statement "do {\n      puVar14[-1] = uVar6;\n      uVar10 = *puVar13;\n      puVar13 = puVar13 + 1;\n      uVar10 = uVar10 >> 0x38 | (uVar10 & 0xff000000000000) >> 0x28 |\n               (uVar10 & 0xff0000000000) >> 0x18 | (uVar10 & 0xff00000000) >> 8 |\n               (uVar10 & 0xff000000) << 8 | (uVar10 & 0xff0000) << 0x18 | (uVar10 & 0xff00) << 0x28\n               | uVar10 << 0x38;\n      *puVar14 = uVar10;\n      sVar7 = strlen((char *)((long)puVar1 + uVar6));\n      uVar6 = uVar6 + 1 + sVar7;\n      if (uVar10 != uVar12) {\n        *(int *)(param_1 + 0x170) = *(int *)(param_1 + 0x170) + 1;\n      }\n      puVar14 = puVar14 + 2;\n      uVar12 = uVar10;\n    } while (puVar13 != puVar3 + uVar4 + 1);" do (compound_statement "{\n      puVar14[-1] = uVar6;\n      uVar10 = *puVar13;\n      puVar13 = puVar13 + 1;\n      uVar10 = uVar10 >> 0x38 | (uVar10 & 0xff000000000000) >> 0x28 |\n               (uVar10 & 0xff0000000000) >> 0x18 | (uVar10 & 0xff00000000) >> 8 |\n               (uVar10 & 0xff000000) << 8 | (uVar10 & 0xff0000) << 0x18 | (uVar10 & 0xff00) << 0x28\n               | uVar10 << 0x38;\n      *puVar14 = uVar10;\n      sVar7 = strlen((char *)((long)puVar1 + uVar6));\n      uVar6 = uVar6 + 1 + sVar7;\n      if (uVar10 != uVar12) {\n        *(int *)(param_1 + 0x170) = *(int *)(param_1 + 0x170) + 1;\n      }\n      puVar14 = puVar14 + 2;\n      uVar12 = uVar10;\n    }" { (expression_statement "puVar14[-1] = uVar6;" (assignment_expression "puVar14[-1] = uVar6" (subscript_expression "puVar14[-1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar10 = *puVar13;" (assignment_expression "uVar10 = *puVar13" identifier = (pointer_expression "*puVar13" * identifier)) ;) (expression_statement "puVar13 = puVar13 + 1;" (assignment_expression "puVar13 = puVar13 + 1" identifier = (binary_expression "puVar13 + 1" identifier + number_literal)) ;) (expression_statement "uVar10 = uVar10 >> 0x38 | (uVar10 & 0xff000000000000) >> 0x28 |\n               (uVar10 & 0xff0000000000) >> 0x18 | (uVar10 & 0xff00000000) >> 8 |\n               (uVar10 & 0xff000000) << 8 | (uVar10 & 0xff0000) << 0x18 | (uVar10 & 0xff00) << 0x28\n               | uVar10 << 0x38;" (assignment_expression "uVar10 = uVar10 >> 0x38 | (uVar10 & 0xff000000000000) >> 0x28 |\n               (uVar10 & 0xff0000000000) >> 0x18 | (uVar10 & 0xff00000000) >> 8 |\n               (uVar10 & 0xff000000) << 8 | (uVar10 & 0xff0000) << 0x18 | (uVar10 & 0xff00) << 0x28\n               | uVar10 << 0x38" identifier = (binary_expression "uVar10 >> 0x38 | (uVar10 & 0xff000000000000) >> 0x28 |\n               (uVar10 & 0xff0000000000) >> 0x18 | (uVar10 & 0xff00000000) >> 8 |\n               (uVar10 & 0xff000000) << 8 | (uVar10 & 0xff0000) << 0x18 | (uVar10 & 0xff00) << 0x28\n               | uVar10 << 0x38" (binary_expression "uVar10 >> 0x38 | (uVar10 & 0xff000000000000) >> 0x28 |\n               (uVar10 & 0xff0000000000) >> 0x18 | (uVar10 & 0xff00000000) >> 8 |\n               (uVar10 & 0xff000000) << 8 | (uVar10 & 0xff0000) << 0x18 | (uVar10 & 0xff00) << 0x28" (binary_expression "uVar10 >> 0x38 | (uVar10 & 0xff000000000000) >> 0x28 |\n               (uVar10 & 0xff0000000000) >> 0x18 | (uVar10 & 0xff00000000) >> 8 |\n               (uVar10 & 0xff000000) << 8 | (uVar10 & 0xff0000) << 0x18" (binary_expression "uVar10 >> 0x38 | (uVar10 & 0xff000000000000) >> 0x28 |\n               (uVar10 & 0xff0000000000) >> 0x18 | (uVar10 & 0xff00000000) >> 8 |\n               (uVar10 & 0xff000000) << 8" (binary_expression "uVar10 >> 0x38 | (uVar10 & 0xff000000000000) >> 0x28 |\n               (uVar10 & 0xff0000000000) >> 0x18 | (uVar10 & 0xff00000000) >> 8" (binary_expression "uVar10 >> 0x38 | (uVar10 & 0xff000000000000) >> 0x28 |\n               (uVar10 & 0xff0000000000) >> 0x18" (binary_expression "uVar10 >> 0x38 | (uVar10 & 0xff000000000000) >> 0x28" (binary_expression "uVar10 >> 0x38" identifier >> number_literal) | (binary_expression "(uVar10 & 0xff000000000000) >> 0x28" (parenthesized_expression "(uVar10 & 0xff000000000000)" ( (binary_expression "uVar10 & 0xff000000000000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar10 & 0xff0000000000) >> 0x18" (parenthesized_expression "(uVar10 & 0xff0000000000)" ( (binary_expression "uVar10 & 0xff0000000000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar10 & 0xff00000000) >> 8" (parenthesized_expression "(uVar10 & 0xff00000000)" ( (binary_expression "uVar10 & 0xff00000000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar10 & 0xff000000) << 8" (parenthesized_expression "(uVar10 & 0xff000000)" ( (binary_expression "uVar10 & 0xff000000" identifier & number_literal) )) << number_literal)) | (binary_expression "(uVar10 & 0xff0000) << 0x18" (parenthesized_expression "(uVar10 & 0xff0000)" ( (binary_expression "uVar10 & 0xff0000" identifier & number_literal) )) << number_literal)) | (binary_expression "(uVar10 & 0xff00) << 0x28" (parenthesized_expression "(uVar10 & 0xff00)" ( (binary_expression "uVar10 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar10 << 0x38" identifier << number_literal))) ;) (expression_statement "*puVar14 = uVar10;" (assignment_expression "*puVar14 = uVar10" (pointer_expression "*puVar14" * identifier) = identifier) ;) (expression_statement "sVar7 = strlen((char *)((long)puVar1 + uVar6));" (assignment_expression "sVar7 = strlen((char *)((long)puVar1 + uVar6))" identifier = (call_expression "strlen((char *)((long)puVar1 + uVar6))" identifier (argument_list "((char *)((long)puVar1 + uVar6))" ( (cast_expression "(char *)((long)puVar1 + uVar6)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar1 + uVar6)" ( (binary_expression "(long)puVar1 + uVar6" (cast_expression "(long)puVar1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) ))) )))) ;) (expression_statement "uVar6 = uVar6 + 1 + sVar7;" (assignment_expression "uVar6 = uVar6 + 1 + sVar7" identifier = (binary_expression "uVar6 + 1 + sVar7" (binary_expression "uVar6 + 1" identifier + number_literal) + identifier)) ;) (if_statement "if (uVar10 != uVar12) {\n        *(int *)(param_1 + 0x170) = *(int *)(param_1 + 0x170) + 1;\n      }" if (parenthesized_expression "(uVar10 != uVar12)" ( (binary_expression "uVar10 != uVar12" identifier != identifier) )) (compound_statement "{\n        *(int *)(param_1 + 0x170) = *(int *)(param_1 + 0x170) + 1;\n      }" { (expression_statement "*(int *)(param_1 + 0x170) = *(int *)(param_1 + 0x170) + 1;" (assignment_expression "*(int *)(param_1 + 0x170) = *(int *)(param_1 + 0x170) + 1" (pointer_expression "*(int *)(param_1 + 0x170)" * (cast_expression "(int *)(param_1 + 0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x170)" ( (binary_expression "param_1 + 0x170" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 0x170) + 1" (pointer_expression "*(int *)(param_1 + 0x170)" * (cast_expression "(int *)(param_1 + 0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x170)" ( (binary_expression "param_1 + 0x170" identifier + number_literal) )))) + number_literal)) ;) })) (expression_statement "puVar14 = puVar14 + 2;" (assignment_expression "puVar14 = puVar14 + 2" identifier = (binary_expression "puVar14 + 2" identifier + number_literal)) ;) (expression_statement "uVar12 = uVar10;" (assignment_expression "uVar12 = uVar10" identifier = identifier) ;) }) while (parenthesized_expression "(puVar13 != puVar3 + uVar4 + 1)" ( (binary_expression "puVar13 != puVar3 + uVar4 + 1" identifier != (binary_expression "puVar3 + uVar4 + 1" (binary_expression "puVar3 + uVar4" identifier + identifier) + number_literal)) )) ;) (if_statement "if (uVar5 < uVar6) {\n      uVar2 = *(undefined8 *)(param_1 + 0x18);\n      uVar8 = gettext("%s: bad archive symbol table names");\n      FUN_001690a0(uVar8,uVar2);\n    }" if (parenthesized_expression "(uVar5 < uVar6)" ( (binary_expression "uVar5 < uVar6" identifier < identifier) )) (compound_statement "{\n      uVar2 = *(undefined8 *)(param_1 + 0x18);\n      uVar8 = gettext("%s: bad archive symbol table names");\n      FUN_001690a0(uVar8,uVar2);\n    }" { (expression_statement "uVar2 = *(undefined8 *)(param_1 + 0x18);" (assignment_expression "uVar2 = *(undefined8 *)(param_1 + 0x18)" identifier = (pointer_expression "*(undefined8 *)(param_1 + 0x18)" * (cast_expression "(undefined8 *)(param_1 + 0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "uVar8 = gettext("%s: bad archive symbol table names");" (assignment_expression "uVar8 = gettext("%s: bad archive symbol table names")" identifier = (call_expression "gettext("%s: bad archive symbol table names")" identifier (argument_list "("%s: bad archive symbol table names")" ( (string_literal ""%s: bad archive symbol table names"" " string_content ") )))) ;) (expression_statement "FUN_001690a0(uVar8,uVar2);" (call_expression "FUN_001690a0(uVar8,uVar2)" identifier (argument_list "(uVar8,uVar2)" ( identifier , identifier ))) ;) })) })) (expression_statement "uVar5 = ((ulong)*(uint *)(param_1 + 0xb0) +\n          (*(long *)(param_1 + 0xa8) - *(long *)(param_1 + 0x98)) * 8) -\n          (ulong)*(uint *)(param_1 + 0xa0);" (assignment_expression "uVar5 = ((ulong)*(uint *)(param_1 + 0xb0) +\n          (*(long *)(param_1 + 0xa8) - *(long *)(param_1 + 0x98)) * 8) -\n          (ulong)*(uint *)(param_1 + 0xa0)" identifier = (binary_expression "((ulong)*(uint *)(param_1 + 0xb0) +\n          (*(long *)(param_1 + 0xa8) - *(long *)(param_1 + 0x98)) * 8) -\n          (ulong)*(uint *)(param_1 + 0xa0)" (parenthesized_expression "((ulong)*(uint *)(param_1 + 0xb0) +\n          (*(long *)(param_1 + 0xa8) - *(long *)(param_1 + 0x98)) * 8)" ( (binary_expression "(ulong)*(uint *)(param_1 + 0xb0) +\n          (*(long *)(param_1 + 0xa8) - *(long *)(param_1 + 0x98)) * 8" (binary_expression "(ulong)*(uint *)(param_1 + 0xb0)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(uint *)(param_1 + 0xb0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb0)" ( (binary_expression "param_1 + 0xb0" identifier + number_literal) )))) + (binary_expression "(*(long *)(param_1 + 0xa8) - *(long *)(param_1 + 0x98)) * 8" (parenthesized_expression "(*(long *)(param_1 + 0xa8) - *(long *)(param_1 + 0x98))" ( (binary_expression "*(long *)(param_1 + 0xa8) - *(long *)(param_1 + 0x98)" (pointer_expression "*(long *)(param_1 + 0xa8)" * (cast_expression "(long *)(param_1 + 0xa8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xa8)" ( (binary_expression "param_1 + 0xa8" identifier + number_literal) )))) - (pointer_expression "*(long *)(param_1 + 0x98)" * (cast_expression "(long *)(param_1 + 0x98)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x98)" ( (binary_expression "param_1 + 0x98" identifier + number_literal) ))))) )) * number_literal)) )) - (binary_expression "(ulong)*(uint *)(param_1 + 0xa0)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(uint *)(param_1 + 0xa0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xa0)" ( (binary_expression "param_1 + 0xa0" identifier + number_literal) )))))) ;) (if_statement "if (uVar4 < uVar5) {\n    lVar11 = uVar4 + *(uint *)(param_1 + 0xa0);\n    lVar9 = lVar11 + 0x3f;\n    if (-1 < lVar11) {\n      lVar9 = lVar11;\n    }\n    lVar9 = *(long *)(param_1 + 0x98) + (lVar9 >> 6) * 8;\n    lVar11 = lVar11 % 0x40;\n    if (lVar11 < 0) {\n      lVar11 = lVar11 + 0x40;\n      lVar9 = lVar9 + -8;\n    }\n    *(int *)(param_1 + 0xb0) = (int)lVar11;\n    *(long *)(param_1 + 0xa8) = lVar9;\n    return;\n  }" if (parenthesized_expression "(uVar4 < uVar5)" ( (binary_expression "uVar4 < uVar5" identifier < identifier) )) (compound_statement "{\n    lVar11 = uVar4 + *(uint *)(param_1 + 0xa0);\n    lVar9 = lVar11 + 0x3f;\n    if (-1 < lVar11) {\n      lVar9 = lVar11;\n    }\n    lVar9 = *(long *)(param_1 + 0x98) + (lVar9 >> 6) * 8;\n    lVar11 = lVar11 % 0x40;\n    if (lVar11 < 0) {\n      lVar11 = lVar11 + 0x40;\n      lVar9 = lVar9 + -8;\n    }\n    *(int *)(param_1 + 0xb0) = (int)lVar11;\n    *(long *)(param_1 + 0xa8) = lVar9;\n    return;\n  }" { (expression_statement "lVar11 = uVar4 + *(uint *)(param_1 + 0xa0);" (assignment_expression "lVar11 = uVar4 + *(uint *)(param_1 + 0xa0)" identifier = (binary_expression "uVar4 + *(uint *)(param_1 + 0xa0)" identifier + (pointer_expression "*(uint *)(param_1 + 0xa0)" * (cast_expression "(uint *)(param_1 + 0xa0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xa0)" ( (binary_expression "param_1 + 0xa0" identifier + number_literal) )))))) ;) (expression_statement "lVar9 = lVar11 + 0x3f;" (assignment_expression "lVar9 = lVar11 + 0x3f" identifier = (binary_expression "lVar11 + 0x3f" identifier + number_literal)) ;) (if_statement "if (-1 < lVar11) {\n      lVar9 = lVar11;\n    }" if (parenthesized_expression "(-1 < lVar11)" ( (binary_expression "-1 < lVar11" number_literal < identifier) )) (compound_statement "{\n      lVar9 = lVar11;\n    }" { (expression_statement "lVar9 = lVar11;" (assignment_expression "lVar9 = lVar11" identifier = identifier) ;) })) (expression_statement "lVar9 = *(long *)(param_1 + 0x98) + (lVar9 >> 6) * 8;" (assignment_expression "lVar9 = *(long *)(param_1 + 0x98) + (lVar9 >> 6) * 8" identifier = (binary_expression "*(long *)(param_1 + 0x98) + (lVar9 >> 6) * 8" (pointer_expression "*(long *)(param_1 + 0x98)" * (cast_expression "(long *)(param_1 + 0x98)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x98)" ( (binary_expression "param_1 + 0x98" identifier + number_literal) )))) + (binary_expression "(lVar9 >> 6) * 8" (parenthesized_expression "(lVar9 >> 6)" ( (binary_expression "lVar9 >> 6" identifier >> number_literal) )) * number_literal))) ;) (expression_statement "lVar11 = lVar11 % 0x40;" (assignment_expression "lVar11 = lVar11 % 0x40" identifier = (binary_expression "lVar11 % 0x40" identifier % number_literal)) ;) (if_statement "if (lVar11 < 0) {\n      lVar11 = lVar11 + 0x40;\n      lVar9 = lVar9 + -8;\n    }" if (parenthesized_expression "(lVar11 < 0)" ( (binary_expression "lVar11 < 0" identifier < number_literal) )) (compound_statement "{\n      lVar11 = lVar11 + 0x40;\n      lVar9 = lVar9 + -8;\n    }" { (expression_statement "lVar11 = lVar11 + 0x40;" (assignment_expression "lVar11 = lVar11 + 0x40" identifier = (binary_expression "lVar11 + 0x40" identifier + number_literal)) ;) (expression_statement "lVar9 = lVar9 + -8;" (assignment_expression "lVar9 = lVar9 + -8" identifier = (binary_expression "lVar9 + -8" identifier + number_literal)) ;) })) (expression_statement "*(int *)(param_1 + 0xb0) = (int)lVar11;" (assignment_expression "*(int *)(param_1 + 0xb0) = (int)lVar11" (pointer_expression "*(int *)(param_1 + 0xb0)" * (cast_expression "(int *)(param_1 + 0xb0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb0)" ( (binary_expression "param_1 + 0xb0" identifier + number_literal) )))) = (cast_expression "(int)lVar11" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "*(long *)(param_1 + 0xa8) = lVar9;" (assignment_expression "*(long *)(param_1 + 0xa8) = lVar9" (pointer_expression "*(long *)(param_1 + 0xa8)" * (cast_expression "(long *)(param_1 + 0xa8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xa8)" ( (binary_expression "param_1 + 0xa8" identifier + number_literal) )))) = identifier) ;) (return_statement "return;" return ;) })) (expression_statement "FUN_0015c0a0(param_1 + 0x98,*(long *)(param_1 + 0xa8),\n               CONCAT44(uStack_3c,*(uint *)(param_1 + 0xb0)),uVar4 - uVar5,0);" (call_expression "FUN_0015c0a0(param_1 + 0x98,*(long *)(param_1 + 0xa8),\n               CONCAT44(uStack_3c,*(uint *)(param_1 + 0xb0)),uVar4 - uVar5,0)" identifier (argument_list "(param_1 + 0x98,*(long *)(param_1 + 0xa8),\n               CONCAT44(uStack_3c,*(uint *)(param_1 + 0xb0)),uVar4 - uVar5,0)" ( (binary_expression "param_1 + 0x98" identifier + number_literal) , (pointer_expression "*(long *)(param_1 + 0xa8)" * (cast_expression "(long *)(param_1 + 0xa8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xa8)" ( (binary_expression "param_1 + 0xa8" identifier + number_literal) )))) , (call_expression "CONCAT44(uStack_3c,*(uint *)(param_1 + 0xb0))" identifier (argument_list "(uStack_3c,*(uint *)(param_1 + 0xb0))" ( identifier , (pointer_expression "*(uint *)(param_1 + 0xb0)" * (cast_expression "(uint *)(param_1 + 0xb0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb0)" ( (binary_expression "param_1 + 0xb0" identifier + number_literal) )))) ))) , (binary_expression "uVar4 - uVar5" identifier - identifier) , number_literal ))) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , LIT , IDENT , IDENT , LIT , LIT ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (binary_expression (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + (parenthesized_expression ( (binary_expression IDENT - (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) )))) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , LIT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) >> LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , (binary_expression IDENT - IDENT) ))) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < IDENT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression IDENT * LIT))) , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != IDENT)) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) })))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (binary_expression (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + IDENT) ))) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + LIT) + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (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) )))) + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (binary_expression (binary_expression IDENT + IDENT) + LIT)) )) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (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 = (call_expression IDENT (argument_list ( (string_literal " string_content ") )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) })) })) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) * LIT)) )) - (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression (parenthesized_expression ( (binary_expression IDENT >> LIT) )) * LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT % LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (return_statement return ;) })) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) , (binary_expression IDENT - IDENT) , LIT ))) ;) (return_statement return ;) })))
(function_definition "void FUN_00237410(long param_1,undefined8 param_2,long param_3)\n\n{\n  ulong *puVar1;\n  undefined8 uVar2;\n  ulong *puVar3;\n  ulong uVar4;\n  ulong uVar5;\n  ulong uVar6;\n  size_t sVar7;\n  undefined8 uVar8;\n  long lVar9;\n  ulong uVar10;\n  long lVar11;\n  ulong uVar12;\n  ulong *puVar13;\n  ulong *puVar14;\n  undefined4 uStack_3c;\n  \n  puVar3 = (ulong *)FUN_0016b970(*(long *)(param_1 + 0x38) + 0x28,0,param_2,param_3,1,0);\n  uVar4 = *puVar3;\n  puVar13 = puVar3 + 1;\n  uVar4 = uVar4 >> 0x38 | (uVar4 & 0xff000000000000) >> 0x28 | (uVar4 & 0xff0000000000) >> 0x18 |\n          (uVar4 & 0xff00000000) >> 8 | (uVar4 & 0xff000000) << 8 | (uVar4 & 0xff0000) << 0x18 |\n          (uVar4 & 0xff00) << 0x28 | uVar4 << 0x38;\n  puVar1 = puVar13 + uVar4;\n  uVar5 = (long)puVar3 + (param_3 - (long)puVar1);\n  FUN_0027e650(param_1 + 0x58,0,*(undefined8 *)(param_1 + 0x60),puVar1,uVar5);\n  uVar6 = *(long *)(param_1 + 0x48) - *(long *)(param_1 + 0x40) >> 4;\n  if (uVar6 < uVar4) {\n    FUN_00236ff0(param_1 + 0x40,uVar4 - uVar6);\n  }\n  else if ((uVar4 < uVar6) &&\n          (lVar9 = *(long *)(param_1 + 0x40) + uVar4 * 0x10, *(long *)(param_1 + 0x48) != lVar9)) {\n    *(long *)(param_1 + 0x48) = lVar9;\n  }\n  if (uVar4 != 0) {\n    uVar6 = 0;\n    puVar14 = (ulong *)(*(long *)(param_1 + 0x40) + 8);\n    uVar12 = 0xffffffffffffffff;\n    do {\n      puVar14[-1] = uVar6;\n      uVar10 = *puVar13;\n      puVar13 = puVar13 + 1;\n      uVar10 = uVar10 >> 0x38 | (uVar10 & 0xff000000000000) >> 0x28 |\n               (uVar10 & 0xff0000000000) >> 0x18 | (uVar10 & 0xff00000000) >> 8 |\n               (uVar10 & 0xff000000) << 8 | (uVar10 & 0xff0000) << 0x18 | (uVar10 & 0xff00) << 0x28\n               | uVar10 << 0x38;\n      *puVar14 = uVar10;\n      sVar7 = strlen((char *)((long)puVar1 + uVar6));\n      uVar6 = uVar6 + 1 + sVar7;\n      if (uVar10 != uVar12) {\n        *(int *)(param_1 + 0x170) = *(int *)(param_1 + 0x170) + 1;\n      }\n      puVar14 = puVar14 + 2;\n      uVar12 = uVar10;\n    } while (puVar13 != puVar3 + uVar4 + 1);\n    if (uVar5 < uVar6) {\n      uVar2 = *(undefined8 *)(param_1 + 0x18);\n      uVar8 = gettext("%s: bad archive symbol table names");\n      FUN_001690a0(uVar8,uVar2);\n    }\n  }\n  uVar5 = ((ulong)*(uint *)(param_1 + 0xb0) +\n          (*(long *)(param_1 + 0xa8) - *(long *)(param_1 + 0x98)) * 8) -\n          (ulong)*(uint *)(param_1 + 0xa0);\n  if (uVar4 < uVar5) {\n    lVar11 = uVar4 + *(uint *)(param_1 + 0xa0);\n    lVar9 = lVar11 + 0x3f;\n    if (-1 < lVar11) {\n      lVar9 = lVar11;\n    }\n    lVar9 = *(long *)(param_1 + 0x98) + (lVar9 >> 6) * 8;\n    lVar11 = lVar11 % 0x40;\n    if (lVar11 < 0) {\n      lVar11 = lVar11 + 0x40;\n      lVar9 = lVar9 + -8;\n    }\n    *(int *)(param_1 + 0xb0) = (int)lVar11;\n    *(long *)(param_1 + 0xa8) = lVar9;\n    return;\n  }\n  FUN_0015c0a0(param_1 + 0x98,*(long *)(param_1 + 0xa8),\n               CONCAT44(uStack_3c,*(uint *)(param_1 + 0xb0)),uVar4 - uVar5,0);\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00237410(long param_1,undefined8 param_2,long param_3)" (identifier "FUN_00237410") (parameter_list "(long param_1,undefined8 param_2,long param_3)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) (, ",") (parameter_declaration "undefined8 param_2" (type_identifier "undefined8") (identifier "param_2")) (, ",") (parameter_declaration "long param_3" (sized_type_specifier "long" (long "long")) (identifier "param_3")) () ")"))) (compound_statement "{\n  ulong *puVar1;\n  undefined8 uVar2;\n  ulong *puVar3;\n  ulong uVar4;\n  ulong uVar5;\n  ulong uVar6;\n  size_t sVar7;\n  undefined8 uVar8;\n  long lVar9;\n  ulong uVar10;\n  long lVar11;\n  ulong uVar12;\n  ulong *puVar13;\n  ulong *puVar14;\n  undefined4 uStack_3c;\n  \n  puVar3 = (ulong *)FUN_0016b970(*(long *)(param_1 + 0x38) + 0x28,0,param_2,param_3,1,0);\n  uVar4 = *puVar3;\n  puVar13 = puVar3 + 1;\n  uVar4 = uVar4 >> 0x38 | (uVar4 & 0xff000000000000) >> 0x28 | (uVar4 & 0xff0000000000) >> 0x18 |\n          (uVar4 & 0xff00000000) >> 8 | (uVar4 & 0xff000000) << 8 | (uVar4 & 0xff0000) << 0x18 |\n          (uVar4 & 0xff00) << 0x28 | uVar4 << 0x38;\n  puVar1 = puVar13 + uVar4;\n  uVar5 = (long)puVar3 + (param_3 - (long)puVar1);\n  FUN_0027e650(param_1 + 0x58,0,*(undefined8 *)(param_1 + 0x60),puVar1,uVar5);\n  uVar6 = *(long *)(param_1 + 0x48) - *(long *)(param_1 + 0x40) >> 4;\n  if (uVar6 < uVar4) {\n    FUN_00236ff0(param_1 + 0x40,uVar4 - uVar6);\n  }\n  else if ((uVar4 < uVar6) &&\n          (lVar9 = *(long *)(param_1 + 0x40) + uVar4 * 0x10, *(long *)(param_1 + 0x48) != lVar9)) {\n    *(long *)(param_1 + 0x48) = lVar9;\n  }\n  if (uVar4 != 0) {\n    uVar6 = 0;\n    puVar14 = (ulong *)(*(long *)(param_1 + 0x40) + 8);\n    uVar12 = 0xffffffffffffffff;\n    do {\n      puVar14[-1] = uVar6;\n      uVar10 = *puVar13;\n      puVar13 = puVar13 + 1;\n      uVar10 = uVar10 >> 0x38 | (uVar10 & 0xff000000000000) >> 0x28 |\n               (uVar10 & 0xff0000000000) >> 0x18 | (uVar10 & 0xff00000000) >> 8 |\n               (uVar10 & 0xff000000) << 8 | (uVar10 & 0xff0000) << 0x18 | (uVar10 & 0xff00) << 0x28\n               | uVar10 << 0x38;\n      *puVar14 = uVar10;\n      sVar7 = strlen((char *)((long)puVar1 + uVar6));\n      uVar6 = uVar6 + 1 + sVar7;\n      if (uVar10 != uVar12) {\n        *(int *)(param_1 + 0x170) = *(int *)(param_1 + 0x170) + 1;\n      }\n      puVar14 = puVar14 + 2;\n      uVar12 = uVar10;\n    } while (puVar13 != puVar3 + uVar4 + 1);\n    if (uVar5 < uVar6) {\n      uVar2 = *(undefined8 *)(param_1 + 0x18);\n      uVar8 = gettext("%s: bad archive symbol table names");\n      FUN_001690a0(uVar8,uVar2);\n    }\n  }\n  uVar5 = ((ulong)*(uint *)(param_1 + 0xb0) +\n          (*(long *)(param_1 + 0xa8) - *(long *)(param_1 + 0x98)) * 8) -\n          (ulong)*(uint *)(param_1 + 0xa0);\n  if (uVar4 < uVar5) {\n    lVar11 = uVar4 + *(uint *)(param_1 + 0xa0);\n    lVar9 = lVar11 + 0x3f;\n    if (-1 < lVar11) {\n      lVar9 = lVar11;\n    }\n    lVar9 = *(long *)(param_1 + 0x98) + (lVar9 >> 6) * 8;\n    lVar11 = lVar11 % 0x40;\n    if (lVar11 < 0) {\n      lVar11 = lVar11 + 0x40;\n      lVar9 = lVar9 + -8;\n    }\n    *(int *)(param_1 + 0xb0) = (int)lVar11;\n    *(long *)(param_1 + 0xa8) = lVar9;\n    return;\n  }\n  FUN_0015c0a0(param_1 + 0x98,*(long *)(param_1 + 0xa8),\n               CONCAT44(uStack_3c,*(uint *)(param_1 + 0xb0)),uVar4 - uVar5,0);\n  return;\n}" ({ "{") (declaration "ulong *puVar1;" (type_identifier "ulong") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "undefined8 uVar2;" (type_identifier "undefined8") (identifier "uVar2") (; ";")) (declaration "ulong *puVar3;" (type_identifier "ulong") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "ulong uVar4;" (type_identifier "ulong") (identifier "uVar4") (; ";")) (declaration "ulong uVar5;" (type_identifier "ulong") (identifier "uVar5") (; ";")) (declaration "ulong uVar6;" (type_identifier "ulong") (identifier "uVar6") (; ";")) (declaration "size_t sVar7;" (primitive_type "size_t") (identifier "sVar7") (; ";")) (declaration "undefined8 uVar8;" (type_identifier "undefined8") (identifier "uVar8") (; ";")) (declaration "long lVar9;" (sized_type_specifier "long" (long "long")) (identifier "lVar9") (; ";")) (declaration "ulong uVar10;" (type_identifier "ulong") (identifier "uVar10") (; ";")) (declaration "long lVar11;" (sized_type_specifier "long" (long "long")) (identifier "lVar11") (; ";")) (declaration "ulong uVar12;" (type_identifier "ulong") (identifier "uVar12") (; ";")) (declaration "ulong *puVar13;" (type_identifier "ulong") (pointer_declarator "*puVar13" (* "*") (identifier "puVar13")) (; ";")) (declaration "ulong *puVar14;" (type_identifier "ulong") (pointer_declarator "*puVar14" (* "*") (identifier "puVar14")) (; ";")) (declaration "undefined4 uStack_3c;" (type_identifier "undefined4") (identifier "uStack_3c") (; ";")) (expression_statement "puVar3 = (ulong *)FUN_0016b970(*(long *)(param_1 + 0x38) + 0x28,0,param_2,param_3,1,0);" (assignment_expression "puVar3 = (ulong *)FUN_0016b970(*(long *)(param_1 + 0x38) + 0x28,0,param_2,param_3,1,0)" (identifier "puVar3") (= "=") (cast_expression "(ulong *)FUN_0016b970(*(long *)(param_1 + 0x38) + 0x28,0,param_2,param_3,1,0)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0016b970(*(long *)(param_1 + 0x38) + 0x28,0,param_2,param_3,1,0)" (identifier "FUN_0016b970") (argument_list "(*(long *)(param_1 + 0x38) + 0x28,0,param_2,param_3,1,0)" (( "(") (binary_expression "*(long *)(param_1 + 0x38) + 0x28" (pointer_expression "*(long *)(param_1 + 0x38)" (* "*") (cast_expression "(long *)(param_1 + 0x38)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x38)" (( "(") (binary_expression "param_1 + 0x38" (identifier "param_1") (+ "+") (number_literal "0x38")) () ")")))) (+ "+") (number_literal "0x28")) (, ",") (number_literal "0") (, ",") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (number_literal "1") (, ",") (number_literal "0") () ")"))))) (; ";")) (expression_statement "uVar4 = *puVar3;" (assignment_expression "uVar4 = *puVar3" (identifier "uVar4") (= "=") (pointer_expression "*puVar3" (* "*") (identifier "puVar3"))) (; ";")) (expression_statement "puVar13 = puVar3 + 1;" (assignment_expression "puVar13 = puVar3 + 1" (identifier "puVar13") (= "=") (binary_expression "puVar3 + 1" (identifier "puVar3") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar4 = uVar4 >> 0x38 | (uVar4 & 0xff000000000000) >> 0x28 | (uVar4 & 0xff0000000000) >> 0x18 |\n          (uVar4 & 0xff00000000) >> 8 | (uVar4 & 0xff000000) << 8 | (uVar4 & 0xff0000) << 0x18 |\n          (uVar4 & 0xff00) << 0x28 | uVar4 << 0x38;" (assignment_expression "uVar4 = uVar4 >> 0x38 | (uVar4 & 0xff000000000000) >> 0x28 | (uVar4 & 0xff0000000000) >> 0x18 |\n          (uVar4 & 0xff00000000) >> 8 | (uVar4 & 0xff000000) << 8 | (uVar4 & 0xff0000) << 0x18 |\n          (uVar4 & 0xff00) << 0x28 | uVar4 << 0x38" (identifier "uVar4") (= "=") (binary_expression "uVar4 >> 0x38 | (uVar4 & 0xff000000000000) >> 0x28 | (uVar4 & 0xff0000000000) >> 0x18 |\n          (uVar4 & 0xff00000000) >> 8 | (uVar4 & 0xff000000) << 8 | (uVar4 & 0xff0000) << 0x18 |\n          (uVar4 & 0xff00) << 0x28 | uVar4 << 0x38" (binary_expression "uVar4 >> 0x38 | (uVar4 & 0xff000000000000) >> 0x28 | (uVar4 & 0xff0000000000) >> 0x18 |\n          (uVar4 & 0xff00000000) >> 8 | (uVar4 & 0xff000000) << 8 | (uVar4 & 0xff0000) << 0x18 |\n          (uVar4 & 0xff00) << 0x28" (binary_expression "uVar4 >> 0x38 | (uVar4 & 0xff000000000000) >> 0x28 | (uVar4 & 0xff0000000000) >> 0x18 |\n          (uVar4 & 0xff00000000) >> 8 | (uVar4 & 0xff000000) << 8 | (uVar4 & 0xff0000) << 0x18" (binary_expression "uVar4 >> 0x38 | (uVar4 & 0xff000000000000) >> 0x28 | (uVar4 & 0xff0000000000) >> 0x18 |\n          (uVar4 & 0xff00000000) >> 8 | (uVar4 & 0xff000000) << 8" (binary_expression "uVar4 >> 0x38 | (uVar4 & 0xff000000000000) >> 0x28 | (uVar4 & 0xff0000000000) >> 0x18 |\n          (uVar4 & 0xff00000000) >> 8" (binary_expression "uVar4 >> 0x38 | (uVar4 & 0xff000000000000) >> 0x28 | (uVar4 & 0xff0000000000) >> 0x18" (binary_expression "uVar4 >> 0x38 | (uVar4 & 0xff000000000000) >> 0x28" (binary_expression "uVar4 >> 0x38" (identifier "uVar4") (>> ">>") (number_literal "0x38")) (| "|") (binary_expression "(uVar4 & 0xff000000000000) >> 0x28" (parenthesized_expression "(uVar4 & 0xff000000000000)" (( "(") (binary_expression "uVar4 & 0xff000000000000" (identifier "uVar4") (& "&") (number_literal "0xff000000000000")) () ")")) (>> ">>") (number_literal "0x28"))) (| "|") (binary_expression "(uVar4 & 0xff0000000000) >> 0x18" (parenthesized_expression "(uVar4 & 0xff0000000000)" (( "(") (binary_expression "uVar4 & 0xff0000000000" (identifier "uVar4") (& "&") (number_literal "0xff0000000000")) () ")")) (>> ">>") (number_literal "0x18"))) (| "|") (binary_expression "(uVar4 & 0xff00000000) >> 8" (parenthesized_expression "(uVar4 & 0xff00000000)" (( "(") (binary_expression "uVar4 & 0xff00000000" (identifier "uVar4") (& "&") (number_literal "0xff00000000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar4 & 0xff000000) << 8" (parenthesized_expression "(uVar4 & 0xff000000)" (( "(") (binary_expression "uVar4 & 0xff000000" (identifier "uVar4") (& "&") (number_literal "0xff000000")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "(uVar4 & 0xff0000) << 0x18" (parenthesized_expression "(uVar4 & 0xff0000)" (( "(") (binary_expression "uVar4 & 0xff0000" (identifier "uVar4") (& "&") (number_literal "0xff0000")) () ")")) (<< "<<") (number_literal "0x18"))) (| "|") (binary_expression "(uVar4 & 0xff00) << 0x28" (parenthesized_expression "(uVar4 & 0xff00)" (( "(") (binary_expression "uVar4 & 0xff00" (identifier "uVar4") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "0x28"))) (| "|") (binary_expression "uVar4 << 0x38" (identifier "uVar4") (<< "<<") (number_literal "0x38")))) (; ";")) (expression_statement "puVar1 = puVar13 + uVar4;" (assignment_expression "puVar1 = puVar13 + uVar4" (identifier "puVar1") (= "=") (binary_expression "puVar13 + uVar4" (identifier "puVar13") (+ "+") (identifier "uVar4"))) (; ";")) (expression_statement "uVar5 = (long)puVar3 + (param_3 - (long)puVar1);" (assignment_expression "uVar5 = (long)puVar3 + (param_3 - (long)puVar1)" (identifier "uVar5") (= "=") (binary_expression "(long)puVar3 + (param_3 - (long)puVar1)" (cast_expression "(long)puVar3" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar3")) (+ "+") (parenthesized_expression "(param_3 - (long)puVar1)" (( "(") (binary_expression "param_3 - (long)puVar1" (identifier "param_3") (- "-") (cast_expression "(long)puVar1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar1"))) () ")")))) (; ";")) (expression_statement "FUN_0027e650(param_1 + 0x58,0,*(undefined8 *)(param_1 + 0x60),puVar1,uVar5);" (call_expression "FUN_0027e650(param_1 + 0x58,0,*(undefined8 *)(param_1 + 0x60),puVar1,uVar5)" (identifier "FUN_0027e650") (argument_list "(param_1 + 0x58,0,*(undefined8 *)(param_1 + 0x60),puVar1,uVar5)" (( "(") (binary_expression "param_1 + 0x58" (identifier "param_1") (+ "+") (number_literal "0x58")) (, ",") (number_literal "0") (, ",") (pointer_expression "*(undefined8 *)(param_1 + 0x60)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x60)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x60)" (( "(") (binary_expression "param_1 + 0x60" (identifier "param_1") (+ "+") (number_literal "0x60")) () ")")))) (, ",") (identifier "puVar1") (, ",") (identifier "uVar5") () ")"))) (; ";")) (expression_statement "uVar6 = *(long *)(param_1 + 0x48) - *(long *)(param_1 + 0x40) >> 4;" (assignment_expression "uVar6 = *(long *)(param_1 + 0x48) - *(long *)(param_1 + 0x40) >> 4" (identifier "uVar6") (= "=") (binary_expression "*(long *)(param_1 + 0x48) - *(long *)(param_1 + 0x40) >> 4" (binary_expression "*(long *)(param_1 + 0x48) - *(long *)(param_1 + 0x40)" (pointer_expression "*(long *)(param_1 + 0x48)" (* "*") (cast_expression "(long *)(param_1 + 0x48)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x48)" (( "(") (binary_expression "param_1 + 0x48" (identifier "param_1") (+ "+") (number_literal "0x48")) () ")")))) (- "-") (pointer_expression "*(long *)(param_1 + 0x40)" (* "*") (cast_expression "(long *)(param_1 + 0x40)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x40)" (( "(") (binary_expression "param_1 + 0x40" (identifier "param_1") (+ "+") (number_literal "0x40")) () ")"))))) (>> ">>") (number_literal "4"))) (; ";")) (if_statement "if (uVar6 < uVar4) {\n    FUN_00236ff0(param_1 + 0x40,uVar4 - uVar6);\n  }\n  else if ((uVar4 < uVar6) &&\n          (lVar9 = *(long *)(param_1 + 0x40) + uVar4 * 0x10, *(long *)(param_1 + 0x48) != lVar9)) {\n    *(long *)(param_1 + 0x48) = lVar9;\n  }" (if "if") (parenthesized_expression "(uVar6 < uVar4)" (( "(") (binary_expression "uVar6 < uVar4" (identifier "uVar6") (< "<") (identifier "uVar4")) () ")")) (compound_statement "{\n    FUN_00236ff0(param_1 + 0x40,uVar4 - uVar6);\n  }" ({ "{") (expression_statement "FUN_00236ff0(param_1 + 0x40,uVar4 - uVar6);" (call_expression "FUN_00236ff0(param_1 + 0x40,uVar4 - uVar6)" (identifier "FUN_00236ff0") (argument_list "(param_1 + 0x40,uVar4 - uVar6)" (( "(") (binary_expression "param_1 + 0x40" (identifier "param_1") (+ "+") (number_literal "0x40")) (, ",") (binary_expression "uVar4 - uVar6" (identifier "uVar4") (- "-") (identifier "uVar6")) () ")"))) (; ";")) (} "}")) (else_clause "else if ((uVar4 < uVar6) &&\n          (lVar9 = *(long *)(param_1 + 0x40) + uVar4 * 0x10, *(long *)(param_1 + 0x48) != lVar9)) {\n    *(long *)(param_1 + 0x48) = lVar9;\n  }" (else "else") (if_statement "if ((uVar4 < uVar6) &&\n          (lVar9 = *(long *)(param_1 + 0x40) + uVar4 * 0x10, *(long *)(param_1 + 0x48) != lVar9)) {\n    *(long *)(param_1 + 0x48) = lVar9;\n  }" (if "if") (parenthesized_expression "((uVar4 < uVar6) &&\n          (lVar9 = *(long *)(param_1 + 0x40) + uVar4 * 0x10, *(long *)(param_1 + 0x48) != lVar9))" (( "(") (binary_expression "(uVar4 < uVar6) &&\n          (lVar9 = *(long *)(param_1 + 0x40) + uVar4 * 0x10, *(long *)(param_1 + 0x48) != lVar9)" (parenthesized_expression "(uVar4 < uVar6)" (( "(") (binary_expression "uVar4 < uVar6" (identifier "uVar4") (< "<") (identifier "uVar6")) () ")")) (&& "&&") (parenthesized_expression "(lVar9 = *(long *)(param_1 + 0x40) + uVar4 * 0x10, *(long *)(param_1 + 0x48) != lVar9)" (( "(") (comma_expression "lVar9 = *(long *)(param_1 + 0x40) + uVar4 * 0x10, *(long *)(param_1 + 0x48) != lVar9" (assignment_expression "lVar9 = *(long *)(param_1 + 0x40) + uVar4 * 0x10" (identifier "lVar9") (= "=") (binary_expression "*(long *)(param_1 + 0x40) + uVar4 * 0x10" (pointer_expression "*(long *)(param_1 + 0x40)" (* "*") (cast_expression "(long *)(param_1 + 0x40)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x40)" (( "(") (binary_expression "param_1 + 0x40" (identifier "param_1") (+ "+") (number_literal "0x40")) () ")")))) (+ "+") (binary_expression "uVar4 * 0x10" (identifier "uVar4") (* "*") (number_literal "0x10")))) (, ",") (binary_expression "*(long *)(param_1 + 0x48) != lVar9" (pointer_expression "*(long *)(param_1 + 0x48)" (* "*") (cast_expression "(long *)(param_1 + 0x48)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x48)" (( "(") (binary_expression "param_1 + 0x48" (identifier "param_1") (+ "+") (number_literal "0x48")) () ")")))) (!= "!=") (identifier "lVar9"))) () ")"))) () ")")) (compound_statement "{\n    *(long *)(param_1 + 0x48) = lVar9;\n  }" ({ "{") (expression_statement "*(long *)(param_1 + 0x48) = lVar9;" (assignment_expression "*(long *)(param_1 + 0x48) = lVar9" (pointer_expression "*(long *)(param_1 + 0x48)" (* "*") (cast_expression "(long *)(param_1 + 0x48)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x48)" (( "(") (binary_expression "param_1 + 0x48" (identifier "param_1") (+ "+") (number_literal "0x48")) () ")")))) (= "=") (identifier "lVar9")) (; ";")) (} "}"))))) (if_statement "if (uVar4 != 0) {\n    uVar6 = 0;\n    puVar14 = (ulong *)(*(long *)(param_1 + 0x40) + 8);\n    uVar12 = 0xffffffffffffffff;\n    do {\n      puVar14[-1] = uVar6;\n      uVar10 = *puVar13;\n      puVar13 = puVar13 + 1;\n      uVar10 = uVar10 >> 0x38 | (uVar10 & 0xff000000000000) >> 0x28 |\n               (uVar10 & 0xff0000000000) >> 0x18 | (uVar10 & 0xff00000000) >> 8 |\n               (uVar10 & 0xff000000) << 8 | (uVar10 & 0xff0000) << 0x18 | (uVar10 & 0xff00) << 0x28\n               | uVar10 << 0x38;\n      *puVar14 = uVar10;\n      sVar7 = strlen((char *)((long)puVar1 + uVar6));\n      uVar6 = uVar6 + 1 + sVar7;\n      if (uVar10 != uVar12) {\n        *(int *)(param_1 + 0x170) = *(int *)(param_1 + 0x170) + 1;\n      }\n      puVar14 = puVar14 + 2;\n      uVar12 = uVar10;\n    } while (puVar13 != puVar3 + uVar4 + 1);\n    if (uVar5 < uVar6) {\n      uVar2 = *(undefined8 *)(param_1 + 0x18);\n      uVar8 = gettext("%s: bad archive symbol table names");\n      FUN_001690a0(uVar8,uVar2);\n    }\n  }" (if "if") (parenthesized_expression "(uVar4 != 0)" (( "(") (binary_expression "uVar4 != 0" (identifier "uVar4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    uVar6 = 0;\n    puVar14 = (ulong *)(*(long *)(param_1 + 0x40) + 8);\n    uVar12 = 0xffffffffffffffff;\n    do {\n      puVar14[-1] = uVar6;\n      uVar10 = *puVar13;\n      puVar13 = puVar13 + 1;\n      uVar10 = uVar10 >> 0x38 | (uVar10 & 0xff000000000000) >> 0x28 |\n               (uVar10 & 0xff0000000000) >> 0x18 | (uVar10 & 0xff00000000) >> 8 |\n               (uVar10 & 0xff000000) << 8 | (uVar10 & 0xff0000) << 0x18 | (uVar10 & 0xff00) << 0x28\n               | uVar10 << 0x38;\n      *puVar14 = uVar10;\n      sVar7 = strlen((char *)((long)puVar1 + uVar6));\n      uVar6 = uVar6 + 1 + sVar7;\n      if (uVar10 != uVar12) {\n        *(int *)(param_1 + 0x170) = *(int *)(param_1 + 0x170) + 1;\n      }\n      puVar14 = puVar14 + 2;\n      uVar12 = uVar10;\n    } while (puVar13 != puVar3 + uVar4 + 1);\n    if (uVar5 < uVar6) {\n      uVar2 = *(undefined8 *)(param_1 + 0x18);\n      uVar8 = gettext("%s: bad archive symbol table names");\n      FUN_001690a0(uVar8,uVar2);\n    }\n  }" ({ "{") (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" (identifier "uVar6") (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar14 = (ulong *)(*(long *)(param_1 + 0x40) + 8);" (assignment_expression "puVar14 = (ulong *)(*(long *)(param_1 + 0x40) + 8)" (identifier "puVar14") (= "=") (cast_expression "(ulong *)(*(long *)(param_1 + 0x40) + 8)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_1 + 0x40) + 8)" (( "(") (binary_expression "*(long *)(param_1 + 0x40) + 8" (pointer_expression "*(long *)(param_1 + 0x40)" (* "*") (cast_expression "(long *)(param_1 + 0x40)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x40)" (( "(") (binary_expression "param_1 + 0x40" (identifier "param_1") (+ "+") (number_literal "0x40")) () ")")))) (+ "+") (number_literal "8")) () ")")))) (; ";")) (expression_statement "uVar12 = 0xffffffffffffffff;" (assignment_expression "uVar12 = 0xffffffffffffffff" (identifier "uVar12") (= "=") (number_literal "0xffffffffffffffff")) (; ";")) (do_statement "do {\n      puVar14[-1] = uVar6;\n      uVar10 = *puVar13;\n      puVar13 = puVar13 + 1;\n      uVar10 = uVar10 >> 0x38 | (uVar10 & 0xff000000000000) >> 0x28 |\n               (uVar10 & 0xff0000000000) >> 0x18 | (uVar10 & 0xff00000000) >> 8 |\n               (uVar10 & 0xff000000) << 8 | (uVar10 & 0xff0000) << 0x18 | (uVar10 & 0xff00) << 0x28\n               | uVar10 << 0x38;\n      *puVar14 = uVar10;\n      sVar7 = strlen((char *)((long)puVar1 + uVar6));\n      uVar6 = uVar6 + 1 + sVar7;\n      if (uVar10 != uVar12) {\n        *(int *)(param_1 + 0x170) = *(int *)(param_1 + 0x170) + 1;\n      }\n      puVar14 = puVar14 + 2;\n      uVar12 = uVar10;\n    } while (puVar13 != puVar3 + uVar4 + 1);" (do "do") (compound_statement "{\n      puVar14[-1] = uVar6;\n      uVar10 = *puVar13;\n      puVar13 = puVar13 + 1;\n      uVar10 = uVar10 >> 0x38 | (uVar10 & 0xff000000000000) >> 0x28 |\n               (uVar10 & 0xff0000000000) >> 0x18 | (uVar10 & 0xff00000000) >> 8 |\n               (uVar10 & 0xff000000) << 8 | (uVar10 & 0xff0000) << 0x18 | (uVar10 & 0xff00) << 0x28\n               | uVar10 << 0x38;\n      *puVar14 = uVar10;\n      sVar7 = strlen((char *)((long)puVar1 + uVar6));\n      uVar6 = uVar6 + 1 + sVar7;\n      if (uVar10 != uVar12) {\n        *(int *)(param_1 + 0x170) = *(int *)(param_1 + 0x170) + 1;\n      }\n      puVar14 = puVar14 + 2;\n      uVar12 = uVar10;\n    }" ({ "{") (expression_statement "puVar14[-1] = uVar6;" (assignment_expression "puVar14[-1] = uVar6" (subscript_expression "puVar14[-1]" (identifier "puVar14") ([ "[") (number_literal "-1") (] "]")) (= "=") (identifier "uVar6")) (; ";")) (expression_statement "uVar10 = *puVar13;" (assignment_expression "uVar10 = *puVar13" (identifier "uVar10") (= "=") (pointer_expression "*puVar13" (* "*") (identifier "puVar13"))) (; ";")) (expression_statement "puVar13 = puVar13 + 1;" (assignment_expression "puVar13 = puVar13 + 1" (identifier "puVar13") (= "=") (binary_expression "puVar13 + 1" (identifier "puVar13") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar10 = uVar10 >> 0x38 | (uVar10 & 0xff000000000000) >> 0x28 |\n               (uVar10 & 0xff0000000000) >> 0x18 | (uVar10 & 0xff00000000) >> 8 |\n               (uVar10 & 0xff000000) << 8 | (uVar10 & 0xff0000) << 0x18 | (uVar10 & 0xff00) << 0x28\n               | uVar10 << 0x38;" (assignment_expression "uVar10 = uVar10 >> 0x38 | (uVar10 & 0xff000000000000) >> 0x28 |\n               (uVar10 & 0xff0000000000) >> 0x18 | (uVar10 & 0xff00000000) >> 8 |\n               (uVar10 & 0xff000000) << 8 | (uVar10 & 0xff0000) << 0x18 | (uVar10 & 0xff00) << 0x28\n               | uVar10 << 0x38" (identifier "uVar10") (= "=") (binary_expression "uVar10 >> 0x38 | (uVar10 & 0xff000000000000) >> 0x28 |\n               (uVar10 & 0xff0000000000) >> 0x18 | (uVar10 & 0xff00000000) >> 8 |\n               (uVar10 & 0xff000000) << 8 | (uVar10 & 0xff0000) << 0x18 | (uVar10 & 0xff00) << 0x28\n               | uVar10 << 0x38" (binary_expression "uVar10 >> 0x38 | (uVar10 & 0xff000000000000) >> 0x28 |\n               (uVar10 & 0xff0000000000) >> 0x18 | (uVar10 & 0xff00000000) >> 8 |\n               (uVar10 & 0xff000000) << 8 | (uVar10 & 0xff0000) << 0x18 | (uVar10 & 0xff00) << 0x28" (binary_expression "uVar10 >> 0x38 | (uVar10 & 0xff000000000000) >> 0x28 |\n               (uVar10 & 0xff0000000000) >> 0x18 | (uVar10 & 0xff00000000) >> 8 |\n               (uVar10 & 0xff000000) << 8 | (uVar10 & 0xff0000) << 0x18" (binary_expression "uVar10 >> 0x38 | (uVar10 & 0xff000000000000) >> 0x28 |\n               (uVar10 & 0xff0000000000) >> 0x18 | (uVar10 & 0xff00000000) >> 8 |\n               (uVar10 & 0xff000000) << 8" (binary_expression "uVar10 >> 0x38 | (uVar10 & 0xff000000000000) >> 0x28 |\n               (uVar10 & 0xff0000000000) >> 0x18 | (uVar10 & 0xff00000000) >> 8" (binary_expression "uVar10 >> 0x38 | (uVar10 & 0xff000000000000) >> 0x28 |\n               (uVar10 & 0xff0000000000) >> 0x18" (binary_expression "uVar10 >> 0x38 | (uVar10 & 0xff000000000000) >> 0x28" (binary_expression "uVar10 >> 0x38" (identifier "uVar10") (>> ">>") (number_literal "0x38")) (| "|") (binary_expression "(uVar10 & 0xff000000000000) >> 0x28" (parenthesized_expression "(uVar10 & 0xff000000000000)" (( "(") (binary_expression "uVar10 & 0xff000000000000" (identifier "uVar10") (& "&") (number_literal "0xff000000000000")) () ")")) (>> ">>") (number_literal "0x28"))) (| "|") (binary_expression "(uVar10 & 0xff0000000000) >> 0x18" (parenthesized_expression "(uVar10 & 0xff0000000000)" (( "(") (binary_expression "uVar10 & 0xff0000000000" (identifier "uVar10") (& "&") (number_literal "0xff0000000000")) () ")")) (>> ">>") (number_literal "0x18"))) (| "|") (binary_expression "(uVar10 & 0xff00000000) >> 8" (parenthesized_expression "(uVar10 & 0xff00000000)" (( "(") (binary_expression "uVar10 & 0xff00000000" (identifier "uVar10") (& "&") (number_literal "0xff00000000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar10 & 0xff000000) << 8" (parenthesized_expression "(uVar10 & 0xff000000)" (( "(") (binary_expression "uVar10 & 0xff000000" (identifier "uVar10") (& "&") (number_literal "0xff000000")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "(uVar10 & 0xff0000) << 0x18" (parenthesized_expression "(uVar10 & 0xff0000)" (( "(") (binary_expression "uVar10 & 0xff0000" (identifier "uVar10") (& "&") (number_literal "0xff0000")) () ")")) (<< "<<") (number_literal "0x18"))) (| "|") (binary_expression "(uVar10 & 0xff00) << 0x28" (parenthesized_expression "(uVar10 & 0xff00)" (( "(") (binary_expression "uVar10 & 0xff00" (identifier "uVar10") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "0x28"))) (| "|") (binary_expression "uVar10 << 0x38" (identifier "uVar10") (<< "<<") (number_literal "0x38")))) (; ";")) (expression_statement "*puVar14 = uVar10;" (assignment_expression "*puVar14 = uVar10" (pointer_expression "*puVar14" (* "*") (identifier "puVar14")) (= "=") (identifier "uVar10")) (; ";")) (expression_statement "sVar7 = strlen((char *)((long)puVar1 + uVar6));" (assignment_expression "sVar7 = strlen((char *)((long)puVar1 + uVar6))" (identifier "sVar7") (= "=") (call_expression "strlen((char *)((long)puVar1 + uVar6))" (identifier "strlen") (argument_list "((char *)((long)puVar1 + uVar6))" (( "(") (cast_expression "(char *)((long)puVar1 + uVar6)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar1 + uVar6)" (( "(") (binary_expression "(long)puVar1 + uVar6" (cast_expression "(long)puVar1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar1")) (+ "+") (identifier "uVar6")) () ")"))) () ")")))) (; ";")) (expression_statement "uVar6 = uVar6 + 1 + sVar7;" (assignment_expression "uVar6 = uVar6 + 1 + sVar7" (identifier "uVar6") (= "=") (binary_expression "uVar6 + 1 + sVar7" (binary_expression "uVar6 + 1" (identifier "uVar6") (+ "+") (number_literal "1")) (+ "+") (identifier "sVar7"))) (; ";")) (if_statement "if (uVar10 != uVar12) {\n        *(int *)(param_1 + 0x170) = *(int *)(param_1 + 0x170) + 1;\n      }" (if "if") (parenthesized_expression "(uVar10 != uVar12)" (( "(") (binary_expression "uVar10 != uVar12" (identifier "uVar10") (!= "!=") (identifier "uVar12")) () ")")) (compound_statement "{\n        *(int *)(param_1 + 0x170) = *(int *)(param_1 + 0x170) + 1;\n      }" ({ "{") (expression_statement "*(int *)(param_1 + 0x170) = *(int *)(param_1 + 0x170) + 1;" (assignment_expression "*(int *)(param_1 + 0x170) = *(int *)(param_1 + 0x170) + 1" (pointer_expression "*(int *)(param_1 + 0x170)" (* "*") (cast_expression "(int *)(param_1 + 0x170)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x170)" (( "(") (binary_expression "param_1 + 0x170" (identifier "param_1") (+ "+") (number_literal "0x170")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 0x170) + 1" (pointer_expression "*(int *)(param_1 + 0x170)" (* "*") (cast_expression "(int *)(param_1 + 0x170)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x170)" (( "(") (binary_expression "param_1 + 0x170" (identifier "param_1") (+ "+") (number_literal "0x170")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "puVar14 = puVar14 + 2;" (assignment_expression "puVar14 = puVar14 + 2" (identifier "puVar14") (= "=") (binary_expression "puVar14 + 2" (identifier "puVar14") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "uVar12 = uVar10;" (assignment_expression "uVar12 = uVar10" (identifier "uVar12") (= "=") (identifier "uVar10")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar13 != puVar3 + uVar4 + 1)" (( "(") (binary_expression "puVar13 != puVar3 + uVar4 + 1" (identifier "puVar13") (!= "!=") (binary_expression "puVar3 + uVar4 + 1" (binary_expression "puVar3 + uVar4" (identifier "puVar3") (+ "+") (identifier "uVar4")) (+ "+") (number_literal "1"))) () ")")) (; ";")) (if_statement "if (uVar5 < uVar6) {\n      uVar2 = *(undefined8 *)(param_1 + 0x18);\n      uVar8 = gettext("%s: bad archive symbol table names");\n      FUN_001690a0(uVar8,uVar2);\n    }" (if "if") (parenthesized_expression "(uVar5 < uVar6)" (( "(") (binary_expression "uVar5 < uVar6" (identifier "uVar5") (< "<") (identifier "uVar6")) () ")")) (compound_statement "{\n      uVar2 = *(undefined8 *)(param_1 + 0x18);\n      uVar8 = gettext("%s: bad archive symbol table names");\n      FUN_001690a0(uVar8,uVar2);\n    }" ({ "{") (expression_statement "uVar2 = *(undefined8 *)(param_1 + 0x18);" (assignment_expression "uVar2 = *(undefined8 *)(param_1 + 0x18)" (identifier "uVar2") (= "=") (pointer_expression "*(undefined8 *)(param_1 + 0x18)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x18)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (expression_statement "uVar8 = gettext("%s: bad archive symbol table names");" (assignment_expression "uVar8 = gettext("%s: bad archive symbol table names")" (identifier "uVar8") (= "=") (call_expression "gettext("%s: bad archive symbol table names")" (identifier "gettext") (argument_list "("%s: bad archive symbol table names")" (( "(") (string_literal ""%s: bad archive symbol table names"" (" """) (string_content "%s: bad archive symbol table names") (" """)) () ")")))) (; ";")) (expression_statement "FUN_001690a0(uVar8,uVar2);" (call_expression "FUN_001690a0(uVar8,uVar2)" (identifier "FUN_001690a0") (argument_list "(uVar8,uVar2)" (( "(") (identifier "uVar8") (, ",") (identifier "uVar2") () ")"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "uVar5 = ((ulong)*(uint *)(param_1 + 0xb0) +\n          (*(long *)(param_1 + 0xa8) - *(long *)(param_1 + 0x98)) * 8) -\n          (ulong)*(uint *)(param_1 + 0xa0);" (assignment_expression "uVar5 = ((ulong)*(uint *)(param_1 + 0xb0) +\n          (*(long *)(param_1 + 0xa8) - *(long *)(param_1 + 0x98)) * 8) -\n          (ulong)*(uint *)(param_1 + 0xa0)" (identifier "uVar5") (= "=") (binary_expression "((ulong)*(uint *)(param_1 + 0xb0) +\n          (*(long *)(param_1 + 0xa8) - *(long *)(param_1 + 0x98)) * 8) -\n          (ulong)*(uint *)(param_1 + 0xa0)" (parenthesized_expression "((ulong)*(uint *)(param_1 + 0xb0) +\n          (*(long *)(param_1 + 0xa8) - *(long *)(param_1 + 0x98)) * 8)" (( "(") (binary_expression "(ulong)*(uint *)(param_1 + 0xb0) +\n          (*(long *)(param_1 + 0xa8) - *(long *)(param_1 + 0x98)) * 8" (binary_expression "(ulong)*(uint *)(param_1 + 0xb0)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (* "*") (cast_expression "(uint *)(param_1 + 0xb0)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xb0)" (( "(") (binary_expression "param_1 + 0xb0" (identifier "param_1") (+ "+") (number_literal "0xb0")) () ")")))) (+ "+") (binary_expression "(*(long *)(param_1 + 0xa8) - *(long *)(param_1 + 0x98)) * 8" (parenthesized_expression "(*(long *)(param_1 + 0xa8) - *(long *)(param_1 + 0x98))" (( "(") (binary_expression "*(long *)(param_1 + 0xa8) - *(long *)(param_1 + 0x98)" (pointer_expression "*(long *)(param_1 + 0xa8)" (* "*") (cast_expression "(long *)(param_1 + 0xa8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xa8)" (( "(") (binary_expression "param_1 + 0xa8" (identifier "param_1") (+ "+") (number_literal "0xa8")) () ")")))) (- "-") (pointer_expression "*(long *)(param_1 + 0x98)" (* "*") (cast_expression "(long *)(param_1 + 0x98)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x98)" (( "(") (binary_expression "param_1 + 0x98" (identifier "param_1") (+ "+") (number_literal "0x98")) () ")"))))) () ")")) (* "*") (number_literal "8"))) () ")")) (- "-") (binary_expression "(ulong)*(uint *)(param_1 + 0xa0)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (* "*") (cast_expression "(uint *)(param_1 + 0xa0)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xa0)" (( "(") (binary_expression "param_1 + 0xa0" (identifier "param_1") (+ "+") (number_literal "0xa0")) () ")")))))) (; ";")) (if_statement "if (uVar4 < uVar5) {\n    lVar11 = uVar4 + *(uint *)(param_1 + 0xa0);\n    lVar9 = lVar11 + 0x3f;\n    if (-1 < lVar11) {\n      lVar9 = lVar11;\n    }\n    lVar9 = *(long *)(param_1 + 0x98) + (lVar9 >> 6) * 8;\n    lVar11 = lVar11 % 0x40;\n    if (lVar11 < 0) {\n      lVar11 = lVar11 + 0x40;\n      lVar9 = lVar9 + -8;\n    }\n    *(int *)(param_1 + 0xb0) = (int)lVar11;\n    *(long *)(param_1 + 0xa8) = lVar9;\n    return;\n  }" (if "if") (parenthesized_expression "(uVar4 < uVar5)" (( "(") (binary_expression "uVar4 < uVar5" (identifier "uVar4") (< "<") (identifier "uVar5")) () ")")) (compound_statement "{\n    lVar11 = uVar4 + *(uint *)(param_1 + 0xa0);\n    lVar9 = lVar11 + 0x3f;\n    if (-1 < lVar11) {\n      lVar9 = lVar11;\n    }\n    lVar9 = *(long *)(param_1 + 0x98) + (lVar9 >> 6) * 8;\n    lVar11 = lVar11 % 0x40;\n    if (lVar11 < 0) {\n      lVar11 = lVar11 + 0x40;\n      lVar9 = lVar9 + -8;\n    }\n    *(int *)(param_1 + 0xb0) = (int)lVar11;\n    *(long *)(param_1 + 0xa8) = lVar9;\n    return;\n  }" ({ "{") (expression_statement "lVar11 = uVar4 + *(uint *)(param_1 + 0xa0);" (assignment_expression "lVar11 = uVar4 + *(uint *)(param_1 + 0xa0)" (identifier "lVar11") (= "=") (binary_expression "uVar4 + *(uint *)(param_1 + 0xa0)" (identifier "uVar4") (+ "+") (pointer_expression "*(uint *)(param_1 + 0xa0)" (* "*") (cast_expression "(uint *)(param_1 + 0xa0)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xa0)" (( "(") (binary_expression "param_1 + 0xa0" (identifier "param_1") (+ "+") (number_literal "0xa0")) () ")")))))) (; ";")) (expression_statement "lVar9 = lVar11 + 0x3f;" (assignment_expression "lVar9 = lVar11 + 0x3f" (identifier "lVar9") (= "=") (binary_expression "lVar11 + 0x3f" (identifier "lVar11") (+ "+") (number_literal "0x3f"))) (; ";")) (if_statement "if (-1 < lVar11) {\n      lVar9 = lVar11;\n    }" (if "if") (parenthesized_expression "(-1 < lVar11)" (( "(") (binary_expression "-1 < lVar11" (number_literal "-1") (< "<") (identifier "lVar11")) () ")")) (compound_statement "{\n      lVar9 = lVar11;\n    }" ({ "{") (expression_statement "lVar9 = lVar11;" (assignment_expression "lVar9 = lVar11" (identifier "lVar9") (= "=") (identifier "lVar11")) (; ";")) (} "}"))) (expression_statement "lVar9 = *(long *)(param_1 + 0x98) + (lVar9 >> 6) * 8;" (assignment_expression "lVar9 = *(long *)(param_1 + 0x98) + (lVar9 >> 6) * 8" (identifier "lVar9") (= "=") (binary_expression "*(long *)(param_1 + 0x98) + (lVar9 >> 6) * 8" (pointer_expression "*(long *)(param_1 + 0x98)" (* "*") (cast_expression "(long *)(param_1 + 0x98)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x98)" (( "(") (binary_expression "param_1 + 0x98" (identifier "param_1") (+ "+") (number_literal "0x98")) () ")")))) (+ "+") (binary_expression "(lVar9 >> 6) * 8" (parenthesized_expression "(lVar9 >> 6)" (( "(") (binary_expression "lVar9 >> 6" (identifier "lVar9") (>> ">>") (number_literal "6")) () ")")) (* "*") (number_literal "8")))) (; ";")) (expression_statement "lVar11 = lVar11 % 0x40;" (assignment_expression "lVar11 = lVar11 % 0x40" (identifier "lVar11") (= "=") (binary_expression "lVar11 % 0x40" (identifier "lVar11") (% "%") (number_literal "0x40"))) (; ";")) (if_statement "if (lVar11 < 0) {\n      lVar11 = lVar11 + 0x40;\n      lVar9 = lVar9 + -8;\n    }" (if "if") (parenthesized_expression "(lVar11 < 0)" (( "(") (binary_expression "lVar11 < 0" (identifier "lVar11") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n      lVar11 = lVar11 + 0x40;\n      lVar9 = lVar9 + -8;\n    }" ({ "{") (expression_statement "lVar11 = lVar11 + 0x40;" (assignment_expression "lVar11 = lVar11 + 0x40" (identifier "lVar11") (= "=") (binary_expression "lVar11 + 0x40" (identifier "lVar11") (+ "+") (number_literal "0x40"))) (; ";")) (expression_statement "lVar9 = lVar9 + -8;" (assignment_expression "lVar9 = lVar9 + -8" (identifier "lVar9") (= "=") (binary_expression "lVar9 + -8" (identifier "lVar9") (+ "+") (number_literal "-8"))) (; ";")) (} "}"))) (expression_statement "*(int *)(param_1 + 0xb0) = (int)lVar11;" (assignment_expression "*(int *)(param_1 + 0xb0) = (int)lVar11" (pointer_expression "*(int *)(param_1 + 0xb0)" (* "*") (cast_expression "(int *)(param_1 + 0xb0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xb0)" (( "(") (binary_expression "param_1 + 0xb0" (identifier "param_1") (+ "+") (number_literal "0xb0")) () ")")))) (= "=") (cast_expression "(int)lVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar11"))) (; ";")) (expression_statement "*(long *)(param_1 + 0xa8) = lVar9;" (assignment_expression "*(long *)(param_1 + 0xa8) = lVar9" (pointer_expression "*(long *)(param_1 + 0xa8)" (* "*") (cast_expression "(long *)(param_1 + 0xa8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xa8)" (( "(") (binary_expression "param_1 + 0xa8" (identifier "param_1") (+ "+") (number_literal "0xa8")) () ")")))) (= "=") (identifier "lVar9")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "FUN_0015c0a0(param_1 + 0x98,*(long *)(param_1 + 0xa8),\n               CONCAT44(uStack_3c,*(uint *)(param_1 + 0xb0)),uVar4 - uVar5,0);" (call_expression "FUN_0015c0a0(param_1 + 0x98,*(long *)(param_1 + 0xa8),\n               CONCAT44(uStack_3c,*(uint *)(param_1 + 0xb0)),uVar4 - uVar5,0)" (identifier "FUN_0015c0a0") (argument_list "(param_1 + 0x98,*(long *)(param_1 + 0xa8),\n               CONCAT44(uStack_3c,*(uint *)(param_1 + 0xb0)),uVar4 - uVar5,0)" (( "(") (binary_expression "param_1 + 0x98" (identifier "param_1") (+ "+") (number_literal "0x98")) (, ",") (pointer_expression "*(long *)(param_1 + 0xa8)" (* "*") (cast_expression "(long *)(param_1 + 0xa8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xa8)" (( "(") (binary_expression "param_1 + 0xa8" (identifier "param_1") (+ "+") (number_literal "0xa8")) () ")")))) (, ",") (call_expression "CONCAT44(uStack_3c,*(uint *)(param_1 + 0xb0))" (identifier "CONCAT44") (argument_list "(uStack_3c,*(uint *)(param_1 + 0xb0))" (( "(") (identifier "uStack_3c") (, ",") (pointer_expression "*(uint *)(param_1 + 0xb0)" (* "*") (cast_expression "(uint *)(param_1 + 0xb0)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xb0)" (( "(") (binary_expression "param_1 + 0xb0" (identifier "param_1") (+ "+") (number_literal "0xb0")) () ")")))) () ")"))) (, ",") (binary_expression "uVar4 - uVar5" (identifier "uVar4") (- "-") (identifier "uVar5")) (, ",") (number_literal "0") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Type propagation algorithm not settling */
/* DWARF original prototype: void read_armap<64>(Archive * this, off_t start, section_size_type
   size) */

void __thiscall gold::Archive::read_armap<64>(Archive *this,type_5 start,section_size_type var_5)

{
  type_4 *puVar1;
  type_1 uVar2;
  type_2 var_12;
  type_2 pcVar4;
  type_3 *p_Var5;
  type_4 *var_2;
  type_4 var_3;
  type_4 var_18;
  type_4 var_9;
  size_t var_16;
  char *format;
  long var_25;
  type_3 *var_24;
  type_2 var_11;
  long to;
  type_4 var_14;
  long var_23;
  type_4 var_17;
  type_4 *var_4;
  type_5 *var_13;
  type_6 __position;
  type_7 uStack_3c;
  
  var_2 = (type_4 *)File_read::var_1(&this->input_file_->file_,0,start,var_5,true,false);
  var_3 = *var_2;
  var_4 = var_2 + 1;
  var_3 = var_3 >> 0x38 | (var_3 & 0xff000000000000) >> 0x28 | (var_3 & 0xff0000000000) >> 0x18 |
          (var_3 & 0xff00000000) >> 8 | (var_3 & 0xff000000) << 8 | (var_3 & 0xff0000) << 0x18 |
          (var_3 & 0xff00) << 0x28 | var_3 << 0x38;
  puVar1 = var_4 + var_3;
  var_18 = (long)var_2 + (var_5 - (long)puVar1);
  std::string::var_6
            ((type_8 *)&this->armap_names_,0,(this->armap_names_)._M_string_length,(char *)puVar1,
             var_18);
  var_12 = (this->armap_).
           super__Vector_base<gold::Archive::var_7,_std::allocator<gold::Archive::var_7>var_8>
           ._M_impl._M_finish;
  var_11 = (this->armap_).
            super__Vector_base<gold::Archive::var_7,_std::allocator<gold::Archive::var_7>var_8>
            ._M_impl._M_start;
  var_9 = (long)var_12 - (long)var_11 >> 4;
  if (var_9 < var_3) {
    std::vector<gold::Archive::var_7,_std::allocator<gold::Archive::var_7>var_8>::
    var_10(&this->armap_,var_3 - var_9);
  }
  else if ((var_3 < var_9) && (var_11 = var_11 + var_3, var_12 != var_11)) {
    (this->armap_).
    super__Vector_base<gold::Archive::var_7,_std::allocator<gold::Archive::var_7>var_8>.
    _M_impl._M_finish = var_11;
  }
  if (var_3 != 0) {
    var_9 = 0;
    var_13 = &((this->armap_).
                super__Vector_base<gold::Archive::var_7,_std::allocator<gold::Archive::var_7>var_8>
                ._M_impl._M_start)->file_offset;
    var_17 = 0xffffffffffffffff;
    do {
      ((var_7 *)(var_13 + -1))->name_offset = var_9;
      var_14 = *var_4;
      var_4 = var_4 + 1;
      var_14 = var_14 >> 0x38 | (var_14 & 0xff000000000000) >> 0x28 |
               (var_14 & 0xff0000000000) >> 0x18 | (var_14 & 0xff00000000) >> 8 |
               (var_14 & 0xff000000) << 8 | (var_14 & 0xff0000) << 0x18 | (var_14 & 0xff00) << 0x28
               | var_14 << 0x38;
      *var_13 = var_14;
      var_16 = var_15((char *)((long)puVar1 + var_9));
      var_9 = var_9 + 1 + var_16;
      if (var_14 != var_17) {
        this->num_members_ = this->num_members_ + 1;
      }
      var_13 = var_13 + 2;
      var_17 = var_14;
    } while (var_4 != var_2 + var_3 + 1);
    if (var_18 < var_9) {
      pcVar4 = (this->name_)._M_dataplus._M_p;
      format = (char *)var_19("%s: bad archive symbol table names");
      var_20(format,pcVar4);
    }
  }
  p_Var5 = (this->armap_checked_).super__Bvector_base<var_21::allocator<var_22>var_8>._M_impl.
           super__Bvector_impl_data._M_finish.super__Bit_iterator_base._M_p;
  var_24 = (this->armap_checked_).super__Bvector_base<var_21::allocator<var_22>var_8>._M_impl.
            super__Bvector_impl_data._M_start.super__Bit_iterator_base._M_p;
  uVar2 = (this->armap_checked_).super__Bvector_base<var_21::allocator<var_22>var_8>._M_impl.
          super__Bvector_impl_data._M_finish.super__Bit_iterator_base._M_offset;
  var_9 = (type_4)(this->armap_checked_).super__Bvector_base<var_21::allocator<var_22>var_8>._M_impl.
                 super__Bvector_impl_data._M_start.super__Bit_iterator_base._M_offset;
  var_18 = ((type_4)uVar2 + ((long)p_Var5 - (long)var_24) * 8) - var_9;
  if (var_3 < var_18) {
    var_23 = var_3 + var_9;
    var_25 = var_23 + 0x3f;
    if (-1 < var_23) {
      var_25 = var_23;
    }
    var_24 = var_24 + (var_25 >> 6);
    var_23 = var_23 % 0x40;
    if (var_23 < 0) {
      var_23 = var_23 + 0x40;
      var_24 = var_24 + -1;
    }
    (this->armap_checked_).super__Bvector_base<var_21::allocator<var_22>var_8>._M_impl.
    super__Bvector_impl_data._M_finish.super__Bit_iterator_base._M_offset = (type_1)var_23;
    (this->armap_checked_).super__Bvector_base<var_21::allocator<var_22>var_8>._M_impl.
    super__Bvector_impl_data._M_finish.super__Bit_iterator_base._M_p = var_24;
    return;
  }
  __position.super__Bit_iterator_base._12_4_ = uStack_3c;
  __position.super__Bit_iterator_base._M_offset = uVar2;
  __position.super__Bit_iterator_base._M_p = p_Var5;
  std::vector<var_22,_std::allocator<var_22>var_8>::var_26
            (&this->armap_checked_,__position,var_3 - var_18,false);
  return;
}


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

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

{
  ulong *puVar1;
  undefined8 uVar2;
  ulong *puVar3;
  ulong uVar4;
  ulong uVar5;
  ulong uVar6;
  size_t sVar7;
  undefined8 uVar8;
  long lVar9;
  ulong uVar10;
  long lVar11;
  ulong uVar12;
  ulong *puVar13;
  ulong *puVar14;
  undefined4 uStack_3c;
  
  puVar3 = (ulong *)FUN_0016b970(*(long *)(param_1 + 0x38) + 0x28,0,param_2,param_3,1,0);
  uVar4 = *puVar3;
  puVar13 = puVar3 + 1;
  uVar4 = uVar4 >> 0x38 | (uVar4 & 0xff000000000000) >> 0x28 | (uVar4 & 0xff0000000000) >> 0x18 |
          (uVar4 & 0xff00000000) >> 8 | (uVar4 & 0xff000000) << 8 | (uVar4 & 0xff0000) << 0x18 |
          (uVar4 & 0xff00) << 0x28 | uVar4 << 0x38;
  puVar1 = puVar13 + uVar4;
  uVar5 = (long)puVar3 + (param_3 - (long)puVar1);
  FUN_0027e650(param_1 + 0x58,0,*(undefined8 *)(param_1 + 0x60),puVar1,uVar5);
  uVar6 = *(long *)(param_1 + 0x48) - *(long *)(param_1 + 0x40) >> 4;
  if (uVar6 < uVar4) {
    FUN_00236ff0(param_1 + 0x40,uVar4 - uVar6);
  }
  else if ((uVar4 < uVar6) &&
          (lVar9 = *(long *)(param_1 + 0x40) + uVar4 * 0x10, *(long *)(param_1 + 0x48) != lVar9)) {
    *(long *)(param_1 + 0x48) = lVar9;
  }
  if (uVar4 != 0) {
    uVar6 = 0;
    puVar14 = (ulong *)(*(long *)(param_1 + 0x40) + 8);
    uVar12 = 0xffffffffffffffff;
    do {
      puVar14[-1] = uVar6;
      uVar10 = *puVar13;
      puVar13 = puVar13 + 1;
      uVar10 = uVar10 >> 0x38 | (uVar10 & 0xff000000000000) >> 0x28 |
               (uVar10 & 0xff0000000000) >> 0x18 | (uVar10 & 0xff00000000) >> 8 |
               (uVar10 & 0xff000000) << 8 | (uVar10 & 0xff0000) << 0x18 | (uVar10 & 0xff00) << 0x28
               | uVar10 << 0x38;
      *puVar14 = uVar10;
      sVar7 = strlen((char *)((long)puVar1 + uVar6));
      uVar6 = uVar6 + 1 + sVar7;
      if (uVar10 != uVar12) {
        *(int *)(param_1 + 0x170) = *(int *)(param_1 + 0x170) + 1;
      }
      puVar14 = puVar14 + 2;
      uVar12 = uVar10;
    } while (puVar13 != puVar3 + uVar4 + 1);
    if (uVar5 < uVar6) {
      uVar2 = *(undefined8 *)(param_1 + 0x18);
      uVar8 = gettext("%s: bad archive symbol table names");
      FUN_001690a0(uVar8,uVar2);
    }
  }
  uVar5 = ((ulong)*(uint *)(param_1 + 0xb0) +
          (*(long *)(param_1 + 0xa8) - *(long *)(param_1 + 0x98)) * 8) -
          (ulong)*(uint *)(param_1 + 0xa0);
  if (uVar4 < uVar5) {
    lVar11 = uVar4 + *(uint *)(param_1 + 0xa0);
    lVar9 = lVar11 + 0x3f;
    if (-1 < lVar11) {
      lVar9 = lVar11;
    }
    lVar9 = *(long *)(param_1 + 0x98) + (lVar9 >> 6) * 8;
    lVar11 = lVar11 % 0x40;
    if (lVar11 < 0) {
      lVar11 = lVar11 + 0x40;
      lVar9 = lVar9 + -8;
    }
    *(int *)(param_1 + 0xb0) = (int)lVar11;
    *(long *)(param_1 + 0xa8) = lVar9;
    return;
  }
  FUN_0015c0a0(param_1 + 0x98,*(long *)(param_1 + 0xa8),
               CONCAT44(uStack_3c,*(uint *)(param_1 + 0xb0)),uVar4 - uVar5,0);
  return;
}

