
/* DWARF original name: sized_create_gnu_hash_table<32, false> */

void gold::Dynobj::sized_create_gnu_hash_table<32,_false>
               (vector<gold::Symbol*,_std::allocator<gold::Symbol*>_> *hashed_dynsyms,
               vector<unsigned_int,_std::allocator<unsigned_int>_> *dynsym_hashvals,
               uint unhashed_dynsym_count,uchar **pphash,uint *phashlen)

{
  int *piVar1;
  pointer ppSVar2;
  pointer puVar3;
  Symbol *pSVar4;
  uint uVar5;
  byte bVar6;
  uint uVar7;
  uint uVar8;
  uint uVar9;
  void *pvVar10;
  void *pvVar11;
  uint *puVar12;
  undefined4 *puVar13;
  undefined4 *puVar14;
  uchar *puVar15;
  long lVar16;
  uint uVar17;
  int iVar18;
  long lVar19;
  uint *puVar20;
  ulong uVar21;
  pointer ppSVar22;
  uint *puVar23;
  ulong uVar24;
  ulong uVar25;
  bool bVar26;
  uint local_70;
  uint local_6c;
  uint local_40;
  
  if ((hashed_dynsyms->super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>)._M_impl.
      _M_finish ==
      (hashed_dynsyms->super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>)._M_impl.
      _M_start) {
    puVar15 = (uchar *)operator_new__(0x18);
    puVar15[0] = '\x01';
    puVar15[1] = '\0';
    puVar15[2] = '\0';
    puVar15[3] = '\0';
    *(uint *)(puVar15 + 4) = unhashed_dynsym_count;
    puVar15[8] = '\x01';
    puVar15[9] = '\0';
    puVar15[10] = '\0';
    puVar15[0xb] = '\0';
    puVar15[0xc] = '\0';
    puVar15[0xd] = '\0';
    puVar15[0xe] = '\0';
    puVar15[0xf] = '\0';
    *phashlen = 0x18;
    puVar15[0x10] = '\0';
    puVar15[0x11] = '\0';
    puVar15[0x12] = '\0';
    puVar15[0x13] = '\0';
    puVar15[0x14] = '\0';
    puVar15[0x15] = '\0';
    puVar15[0x16] = '\0';
    puVar15[0x17] = '\0';
    *pphash = puVar15;
    return;
  }
  uVar7 = compute_bucket_count(dynsym_hashvals,true);
  uVar8 = (uint)((long)(hashed_dynsyms->
                       super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>)._M_impl.
                       _M_finish -
                 (long)(hashed_dynsyms->
                       super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>)._M_impl.
                       _M_start >> 3);
  uVar9 = uVar8 >> 1;
  if (uVar9 == 0) {
LAB_0029f178:
    local_40 = 1;
    uVar24 = 4;
    uVar21 = 1;
    local_6c = 0x20;
    local_70 = 5;
LAB_0029f19a:
    puVar13 = (undefined4 *)operator_new(uVar24);
    puVar14 = puVar13;
    do {
      *puVar14 = 0;
      puVar14 = puVar14 + 1;
    } while (puVar14 != puVar13 + uVar21);
    if (uVar7 != 0) goto LAB_0029eee8;
LAB_0029f1cc:
    pvVar11 = (void *)0x0;
    pvVar10 = (void *)0x0;
    if (uVar8 == 0) goto LAB_0029efa3;
LAB_0029ef4c:
    lVar16 = 0;
    puVar3 = (dynsym_hashvals->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>).
             _M_impl._M_start;
    do {
      puVar12 = puVar3 + lVar16;
      lVar16 = lVar16 + 1;
      piVar1 = (int *)((long)pvVar10 + ((ulong)*puVar12 % (ulong)uVar7) * 4);
      *piVar1 = *piVar1 + 1;
    } while ((uint)lVar16 < uVar8);
  }
  else {
    uVar5 = 1;
    do {
      uVar17 = uVar5;
      uVar9 = uVar9 >> 1;
      uVar5 = uVar17 + 1;
    } while (uVar9 != 0);
    if (uVar17 + 1 < 3) goto LAB_0029f178;
    bVar6 = (byte)(uVar17 - 1);
    if ((uVar8 >> (uVar17 - 1 & 0x1f) & 1) == 0) {
      local_70 = uVar17 + 3;
      bVar6 = (char)uVar17 - 2;
    }
    else {
      local_70 = uVar17 + 4;
    }
    puVar13 = (undefined4 *)0x0;
    local_6c = 1 << ((byte)local_70 & 0x1f);
    local_40 = 1 << (bVar6 & 0x1f);
    uVar21 = (ulong)local_40;
    if (local_40 != 0) {
      uVar24 = uVar21 * 4;
      goto LAB_0029f19a;
    }
    if (uVar7 == 0) goto LAB_0029f1cc;
LAB_0029eee8:
    uVar24 = (ulong)uVar7 * 4;
                    /* try { // try from 0029eef8 to 0029eefc has its CatchHandler @ 0029f275 */
    pvVar10 = operator_new(uVar24);
    uVar21 = 0;
    do {
      uVar25 = uVar21;
      *(undefined4 *)((long)pvVar10 + uVar25 * 4) = 0;
      uVar21 = uVar25 + 1;
    } while ((ulong)uVar7 != uVar25 + 1);
                    /* try { // try from 0029ef21 to 0029ef25 has its CatchHandler @ 0029f27a */
    pvVar11 = operator_new(uVar24);
    uVar24 = 0;
    do {
      *(undefined4 *)((long)pvVar11 + uVar24 * 4) = 0;
      bVar26 = uVar25 != uVar24;
      uVar24 = uVar24 + 1;
    } while (bVar26);
    if (uVar8 != 0) goto LAB_0029ef4c;
  }
  if (uVar7 != 0) {
    uVar24 = 0;
    uVar9 = unhashed_dynsym_count;
    do {
      *(uint *)((long)pvVar11 + uVar24 * 4) = uVar9;
      uVar9 = uVar9 + *(int *)((long)pvVar10 + uVar24 * 4);
      bVar26 = uVar7 - 1 != uVar24;
      uVar24 = uVar24 + 1;
    } while (bVar26);
  }
LAB_0029efa3:
  uVar9 = (local_6c >> 3) + (uVar7 + 4 + uVar8) * 4;
                    /* try { // try from 0029efc3 to 0029efc7 has its CatchHandler @ 0029f27f */
  puVar12 = (uint *)operator_new__((ulong)uVar9);
  lVar16 = (long)puVar12 + (ulong)(local_6c >> 3) + 0x10;
  *puVar12 = uVar7;
  puVar12[1] = unhashed_dynsym_count;
  puVar12[2] = local_40;
  puVar12[3] = local_70;
  if (uVar7 != 0) {
    uVar24 = 0;
    do {
      iVar18 = *(int *)((long)pvVar10 + uVar24 * 4);
      if (iVar18 != 0) {
        iVar18 = *(int *)((long)pvVar11 + uVar24 * 4);
      }
      *(int *)(lVar16 + uVar24 * 4) = iVar18;
      bVar26 = uVar7 - 1 != uVar24;
      uVar24 = uVar24 + 1;
    } while (bVar26);
    lVar16 = lVar16 + ((ulong)(uVar7 - 1) + 1) * 4;
  }
  if (uVar8 != 0) {
    ppSVar22 = (hashed_dynsyms->super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>).
               _M_impl._M_start;
    puVar23 = (dynsym_hashvals->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>).
              _M_impl._M_start;
    ppSVar2 = ppSVar22 + (ulong)(uVar8 - 1) + 1;
    do {
      uVar8 = *puVar23;
      pSVar4 = *ppSVar22;
      puVar13[uVar8 >> 5 & (local_6c >> 5) - 1] =
           puVar13[uVar8 >> 5 & (local_6c >> 5) - 1] |
           1 << ((byte)(uVar8 >> ((byte)local_70 & 0x1f)) & 0x1f) | 1 << ((byte)uVar8 & 0x1f);
      lVar19 = ((ulong)uVar8 % (ulong)uVar7) * 4;
      piVar1 = (int *)((long)pvVar10 + lVar19);
      iVar18 = *piVar1;
      uVar5 = uVar8 & 0xfffffffe;
      if (iVar18 == 1) {
        uVar5 = uVar8 & 0xfffffffe | 1;
      }
      puVar20 = (uint *)(lVar19 + (long)pvVar11);
      uVar8 = *puVar20;
      *piVar1 = iVar18 + -1;
      *(uint *)(lVar16 + (ulong)((uVar8 - unhashed_dynsym_count) * 4)) = uVar5;
      if (uVar8 == 0) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0029f270 to 0029f274 has its CatchHandler @ 0029f27f */
        do_gold_unreachable("../../gold/symtab.h",0x1a2,"set_dynsym_index");
      }
      pSVar4->dynsym_index_ = uVar8;
      ppSVar22 = ppSVar22 + 1;
      puVar23 = puVar23 + 1;
      *puVar20 = uVar8 + 1;
    } while (ppSVar2 != ppSVar22);
  }
  if (local_40 != 0) {
    uVar24 = 0;
    do {
      puVar12[uVar24 + 4] = puVar13[uVar24];
      bVar26 = uVar24 != local_40 - 1;
      uVar24 = uVar24 + 1;
    } while (bVar26);
  }
  *phashlen = uVar9;
  *pphash = (uchar *)puVar12;
  if (pvVar11 != (void *)0x0) {
    operator_delete(pvVar11);
  }
  if (pvVar10 != (void *)0x0) {
    operator_delete(pvVar10);
  }
  if (puVar13 == (undefined4 *)0x0) {
    return;
  }
  operator_delete(puVar13);
  return;
}



void FUN_0029ee20(long *param_1,long *param_2,uint param_3,undefined8 *param_4,int *param_5)

{
  int *piVar1;
  long *plVar2;
  int iVar3;
  uint uVar4;
  byte bVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  long lVar9;
  long lVar10;
  uint *puVar11;
  undefined4 *puVar12;
  undefined4 *puVar13;
  long lVar14;
  uint uVar15;
  int iVar16;
  long lVar17;
  int *piVar18;
  ulong uVar19;
  uint *puVar20;
  long lVar21;
  ulong uVar22;
  bool bVar23;
  uint local_70;
  uint local_6c;
  uint local_40;
  
  if (param_1[1] == *param_1) {
    puVar12 = (undefined4 *)thunk_FUN_002d94a0(0x18);
    *puVar12 = 1;
    puVar12[1] = param_3;
    *(undefined8 *)(puVar12 + 2) = 1;
    *param_5 = 0x18;
    *(undefined8 *)(puVar12 + 4) = 0;
    *param_4 = puVar12;
    return;
  }
  uVar6 = FUN_0029a210(param_2,1);
  uVar7 = (uint)(param_1[1] - *param_1 >> 3);
  uVar8 = uVar7 >> 1;
  if (uVar8 == 0) {
LAB_0029f178:
    local_40 = 1;
    lVar9 = 4;
    uVar19 = 1;
    local_6c = 0x20;
    local_70 = 5;
LAB_0029f19a:
    puVar12 = (undefined4 *)FUN_002d94a0(lVar9);
    puVar13 = puVar12;
    do {
      *puVar13 = 0;
      puVar13 = puVar13 + 1;
    } while (puVar13 != puVar12 + uVar19);
    if (uVar6 != 0) goto LAB_0029eee8;
LAB_0029f1cc:
    lVar10 = 0;
    lVar9 = 0;
    if (uVar7 == 0) goto LAB_0029efa3;
LAB_0029ef4c:
    lVar14 = 0;
    lVar21 = *param_2;
    do {
      lVar17 = lVar14 * 4;
      lVar14 = lVar14 + 1;
      piVar1 = (int *)(lVar9 + ((ulong)*(uint *)(lVar21 + lVar17) % (ulong)uVar6) * 4);
      *piVar1 = *piVar1 + 1;
    } while ((uint)lVar14 < uVar7);
  }
  else {
    uVar4 = 1;
    do {
      uVar15 = uVar4;
      uVar8 = uVar8 >> 1;
      uVar4 = uVar15 + 1;
    } while (uVar8 != 0);
    if (uVar15 + 1 < 3) goto LAB_0029f178;
    bVar5 = (byte)(uVar15 - 1);
    if ((uVar7 >> (uVar15 - 1 & 0x1f) & 1) == 0) {
      local_70 = uVar15 + 3;
      bVar5 = (char)uVar15 - 2;
    }
    else {
      local_70 = uVar15 + 4;
    }
    puVar12 = (undefined4 *)0x0;
    local_6c = 1 << ((byte)local_70 & 0x1f);
    local_40 = 1 << (bVar5 & 0x1f);
    uVar19 = (ulong)local_40;
    if (local_40 != 0) {
      lVar9 = uVar19 * 4;
      goto LAB_0029f19a;
    }
    if (uVar6 == 0) goto LAB_0029f1cc;
LAB_0029eee8:
    lVar10 = (ulong)uVar6 * 4;
                    /* try { // try from 0029eef8 to 0029eefc has its CatchHandler @ 0029f275 */
    lVar9 = FUN_002d94a0(lVar10);
    uVar19 = 0;
    do {
      uVar22 = uVar19;
      *(undefined4 *)(lVar9 + uVar22 * 4) = 0;
      uVar19 = uVar22 + 1;
    } while ((ulong)uVar6 != uVar22 + 1);
                    /* try { // try from 0029ef21 to 0029ef25 has its CatchHandler @ 0029f27a */
    lVar10 = FUN_002d94a0(lVar10);
    uVar19 = 0;
    do {
      *(undefined4 *)(lVar10 + uVar19 * 4) = 0;
      bVar23 = uVar22 != uVar19;
      uVar19 = uVar19 + 1;
    } while (bVar23);
    if (uVar7 != 0) goto LAB_0029ef4c;
  }
  if (uVar6 != 0) {
    uVar19 = 0;
    uVar8 = param_3;
    do {
      *(uint *)(lVar10 + uVar19 * 4) = uVar8;
      uVar8 = uVar8 + *(int *)(lVar9 + uVar19 * 4);
      bVar23 = uVar6 - 1 != uVar19;
      uVar19 = uVar19 + 1;
    } while (bVar23);
  }
LAB_0029efa3:
                    /* try { // try from 0029efc3 to 0029efc7 has its CatchHandler @ 0029f27f */
  puVar11 = (uint *)thunk_FUN_002d94a0();
  lVar21 = (long)puVar11 + (ulong)(local_6c >> 3) + 0x10;
  *puVar11 = uVar6;
  puVar11[1] = param_3;
  puVar11[2] = local_40;
  puVar11[3] = local_70;
  if (uVar6 != 0) {
    uVar19 = 0;
    do {
      iVar16 = *(int *)(lVar9 + uVar19 * 4);
      if (iVar16 != 0) {
        iVar16 = *(int *)(lVar10 + uVar19 * 4);
      }
      *(int *)(lVar21 + uVar19 * 4) = iVar16;
      bVar23 = uVar6 - 1 != uVar19;
      uVar19 = uVar19 + 1;
    } while (bVar23);
    lVar21 = lVar21 + ((ulong)(uVar6 - 1) + 1) * 4;
  }
  if (uVar7 != 0) {
    param_1 = (long *)*param_1;
    puVar20 = (uint *)*param_2;
    plVar2 = param_1 + (ulong)(uVar7 - 1) + 1;
    do {
      uVar8 = *puVar20;
      lVar14 = *param_1;
      puVar12[uVar8 >> 5 & (local_6c >> 5) - 1] =
           puVar12[uVar8 >> 5 & (local_6c >> 5) - 1] |
           1 << ((byte)(uVar8 >> ((byte)local_70 & 0x1f)) & 0x1f) | 1 << ((byte)uVar8 & 0x1f);
      lVar17 = ((ulong)uVar8 % (ulong)uVar6) * 4;
      piVar1 = (int *)(lVar9 + lVar17);
      iVar16 = *piVar1;
      uVar4 = uVar8 & 0xfffffffe;
      if (iVar16 == 1) {
        uVar4 = uVar8 & 0xfffffffe | 1;
      }
      piVar18 = (int *)(lVar17 + lVar10);
      iVar3 = *piVar18;
      *piVar1 = iVar16 + -1;
      *(uint *)(lVar21 + (ulong)((iVar3 - param_3) * 4)) = uVar4;
      if (iVar3 == 0) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0029f270 to 0029f274 has its CatchHandler @ 0029f27f */
        FUN_0017c650("../../gold/symtab.h",0x1a2,"set_dynsym_index");
      }
      *(int *)(lVar14 + 0x20) = iVar3;
      param_1 = param_1 + 1;
      puVar20 = puVar20 + 1;
      *piVar18 = iVar3 + 1;
    } while (plVar2 != param_1);
  }
  if (local_40 != 0) {
    uVar19 = 0;
    do {
      puVar11[uVar19 + 4] = puVar12[uVar19];
      bVar23 = uVar19 != local_40 - 1;
      uVar19 = uVar19 + 1;
    } while (bVar23);
  }
  *param_5 = (local_6c >> 3) + (uVar6 + 4 + uVar7) * 4;
  *param_4 = puVar11;
  if (lVar10 != 0) {
    FUN_002dac70(lVar10);
  }
  if (lVar9 != 0) {
    FUN_002dac70(lVar9);
  }
  if (puVar12 == (undefined4 *)0x0) {
    return;
  }
  FUN_002dac70(puVar12);
  return;
}


PUSH R15
PUSH R14
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x48
MOV RAX,qword ptr [RDI]
MOV qword ptr [RSP + 0x18],RSI
MOV dword ptr [RSP + 0x4],EDX
MOV qword ptr [RSP + 0x28],RCX
MOV qword ptr [RSP + 0x30],R8
CMP qword ptr [RDI + 0x8],RAX
JZ 0x0029f1e8
MOV R15,RDI
MOV RDI,qword ptr [RSP + 0x18]
MOV ESI,0x1
CALL 0x0029a210
MOV dword ptr [RSP],EAX
MOV RAX,qword ptr [R15 + 0x8]
SUB RAX,qword ptr [R15]
SAR RAX,0x3
MOV qword ptr [RSP + 0x10],RAX
MOV R14D,EAX
SHR EAX,0x1
JZ 0x0029f178
MOV EDX,0x1
JMP 0x0029ee8a
MOV EDX,ECX
SHR EAX,0x1
LEA ECX,[RDX + 0x1]
JNZ 0x0029ee88
CMP ECX,0x2
JBE 0x0029f178
MOV EDI,dword ptr [RSP + 0x10]
LEA EAX,[RDX + -0x1]
BT EDI,EAX
JNC 0x0029f238
LEA EDI,[RDX + 0x4]
MOV dword ptr [RSP + 0x8],EDI
MOV EDX,0x1
MOVZX ECX,byte ptr [RSP + 0x8]
XOR EBP,EBP
MOV EDI,EDX
SHL EDI,CL
MOV ECX,EAX
SHL EDX,CL
MOV dword ptr [RSP + 0xc],EDI
MOV dword ptr [RSP + 0x38],EDX
MOV EBX,EDX
TEST EDX,EDX
JNZ 0x0029f250
MOV R12D,dword ptr [RSP]
TEST R12,R12
JZ 0x0029f1cc
NOP dword ptr [RAX]
LEA RAX,[R12*0x4]
MOV RDI,RAX
MOV qword ptr [RSP + 0x20],RAX
CALL 0x002d94a0
MOV RBX,RAX
XOR R13D,R13D
JMP 0x0029ef0b
MOV R13,RAX
LEA RAX,[R13 + 0x1]
MOV dword ptr [RBX + R13*0x4],0x0
CMP R12,RAX
JNZ 0x0029ef08
MOV RDI,qword ptr [RSP + 0x20]
CALL 0x002d94a0
MOV R12,RAX
XOR EAX,EAX
JMP 0x0029ef33
MOV RAX,RDX
MOV dword ptr [R12 + RAX*0x4],0x0
LEA RDX,[RAX + 0x1]
CMP R13,RAX
JNZ 0x0029ef30
MOV EDI,dword ptr [RSP + 0x10]
TEST EDI,EDI
JZ 0x0029ef74
MOV RAX,qword ptr [RSP + 0x18]
MOV EDI,dword ptr [RSP]
XOR ECX,ECX
MOV RSI,qword ptr [RAX]
NOP dword ptr [RAX]
MOV EAX,dword ptr [RSI + RCX*0x4]
XOR EDX,EDX
ADD RCX,0x1
DIV EDI
ADD dword ptr [RBX + RDX*0x4],0x1
CMP R14D,ECX
JA 0x0029ef60
MOV ESI,dword ptr [RSP]
TEST ESI,ESI
JZ 0x0029efa3
MOV EAX,dword ptr [RSP]
MOV EDX,dword ptr [RSP + 0x4]
LEA ESI,[RAX + -0x1]
XOR EAX,EAX
JMP 0x0029ef93
MOV RAX,RCX
MOV dword ptr [R12 + RAX*0x4],EDX
LEA RCX,[RAX + 0x1]
ADD EDX,dword ptr [RBX + RAX*0x4]
CMP RSI,RAX
JNZ 0x0029ef90
MOV R14D,dword ptr [RSP]
MOV RAX,qword ptr [RSP + 0x10]
MOV R13D,dword ptr [RSP + 0xc]
LEA EAX,[R14 + RAX*0x1 + 0x4]
SHR R13D,0x3
LEA EDI,[R13 + RAX*0x4]
MOV dword ptr [RSP + 0x3c],EDI
CALL 0x002d9440
MOV EDI,dword ptr [RSP + 0x4]
MOV qword ptr [RSP + 0x20],RAX
LEA R10,[RAX + R13*0x1 + 0x10]
MOV dword ptr [RAX],R14D
MOV dword ptr [RAX + 0x4],EDI
MOV EDI,dword ptr [RSP + 0x38]
MOV dword ptr [RAX + 0x8],EDI
MOV EDI,dword ptr [RSP + 0x8]
MOV dword ptr [RAX + 0xc],EDI
TEST R14D,R14D
JZ 0x0029f01f
MOV EAX,dword ptr [RSP]
LEA ECX,[RAX + -0x1]
XOR EAX,EAX
LEA RSI,[RCX + 0x1]
JMP 0x0029f003
MOV RAX,RDX
MOV EDX,dword ptr [RBX + RAX*0x4]
TEST EDX,EDX
JZ 0x0029f00e
MOV EDX,dword ptr [R12 + RAX*0x4]
MOV dword ptr [R10 + RAX*0x4],EDX
LEA RDX,[RAX + 0x1]
CMP RCX,RAX
JNZ 0x0029f000
LEA R10,[R10 + RSI*0x4]
MOV ECX,dword ptr [RSP + 0x10]
TEST ECX,ECX
JZ 0x0029f0f2
MOV EAX,dword ptr [RSP + 0xc]
MOV RSI,qword ptr [R15]
MOV R8D,0x1
SHR EAX,0x5
SUB EAX,0x1
MOV dword ptr [RSP + 0xc],EAX
MOV RAX,qword ptr [RSP + 0x18]
MOV RDI,qword ptr [RAX]
MOV RAX,qword ptr [RSP + 0x10]
SUB EAX,0x1
LEA R11,[RSI + RAX*0x8 + 0x8]
NOP word ptr [RAX + RAX*0x1]
MOV EAX,dword ptr [RDI]
MOVZX ECX,byte ptr [RSP + 0x8]
MOV R13D,R8D
MOV R14D,R8D
MOV R9,qword ptr [RSI]
MOV R15D,EAX
MOV EDX,EAX
SHR R15D,CL
SHR EDX,0x5
AND EDX,dword ptr [RSP + 0xc]
MOV ECX,R15D
SHL R13D,CL
MOV ECX,EAX
SHL R14D,CL
OR R13D,R14D
OR dword ptr [RBP + RDX*0x4],R13D
XOR EDX,EDX
MOV R13D,EAX
DIV dword ptr [RSP]
AND R13D,0xfffffffe
MOV EAX,R13D
OR EAX,0x1
SHL RDX,0x2
LEA R15,[RBX + RDX*0x1]
MOV R14D,dword ptr [R15]
CMP R14D,0x1
CMOVZ R13D,EAX
ADD RDX,R12
SUB R14D,0x1
MOV EAX,dword ptr [RDX]
MOV dword ptr [R15],R14D
MOV ECX,EAX
SUB ECX,dword ptr [RSP + 0x4]
SHL ECX,0x2
MOV dword ptr [R10 + RCX*0x1],R13D
TEST EAX,EAX
JZ 0x0029f25d
MOV dword ptr [R9 + 0x20],EAX
ADD RSI,0x8
ADD EAX,0x1
ADD RDI,0x4
MOV dword ptr [RDX],EAX
CMP R11,RSI
JNZ 0x0029f060
MOV EDX,dword ptr [RSP + 0x38]
TEST EDX,EDX
JZ 0x0029f124
MOV EAX,dword ptr [RSP + 0x38]
MOV RSI,qword ptr [RSP + 0x20]
LEA ECX,[RAX + -0x1]
XOR EAX,EAX
JMP 0x0029f113
MOV RAX,RDX
MOV EDX,dword ptr [RBP + RAX*0x4]
MOV dword ptr [RSI + RAX*0x4 + 0x10],EDX
LEA RDX,[RAX + 0x1]
CMP RAX,RCX
JNZ 0x0029f110
MOV RAX,qword ptr [RSP + 0x30]
MOV EDI,dword ptr [RSP + 0x3c]
MOV dword ptr [RAX],EDI
MOV RAX,qword ptr [RSP + 0x28]
MOV RDI,qword ptr [RSP + 0x20]
MOV qword ptr [RAX],RDI
TEST R12,R12
JZ 0x0029f149
MOV RDI,R12
CALL 0x002dac70
TEST RBX,RBX
JZ 0x0029f156
MOV RDI,RBX
CALL 0x002dac70
TEST RBP,RBP
JZ 0x0029f222
ADD RSP,0x48
MOV RDI,RBP
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
JMP 0x002dac70
MOV dword ptr [RSP + 0x38],0x1
MOV EDI,0x4
MOV EBX,0x1
MOV dword ptr [RSP + 0xc],0x20
MOV dword ptr [RSP + 0x8],0x5
CALL 0x002d94a0
MOV RBP,RAX
LEA RDX,[RAX + RBX*0x4]
NOP word ptr CS:[RAX + RAX*0x1]
MOV dword ptr [RAX],0x0
ADD RAX,0x4
CMP RAX,RDX
JNZ 0x0029f1b0
MOV R12D,dword ptr [RSP]
TEST R12,R12
JNZ 0x0029eee8
MOV EAX,dword ptr [RSP + 0x10]
XOR R12D,R12D
XOR EBX,EBX
TEST EAX,EAX
JNZ 0x0029ef4c
JMP 0x0029efa3
MOV EDI,0x18
CALL 0x002d9440
MOV EDI,dword ptr [RSP + 0x4]
MOV dword ptr [RAX],0x1
MOV dword ptr [RAX + 0x4],EDI
MOV RDI,qword ptr [RSP + 0x30]
MOV qword ptr [RAX + 0x8],0x1
MOV dword ptr [RDI],0x18
MOV RDI,qword ptr [RSP + 0x28]
MOV qword ptr [RAX + 0x10],0x0
MOV qword ptr [RDI],RAX
ADD RSP,0x48
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
LEA EAX,[RDX + 0x3]
MOV dword ptr [RSP + 0x8],EAX
LEA EAX,[RDX + -0x2]
JMP 0x0029eeb1
LEA RDI,[RBX*0x4]
JMP 0x0029f19a
LEA RDX,[0x38bc20]
MOV ESI,0x1a2
LEA RDI,[0x3726ed]
CALL 0x0017c650
(translation_unit "void FUN_0029ee20(long *param_1,long *param_2,uint param_3,undefined8 *param_4,int *param_5)\n\n{\n  int *piVar1;\n  long *plVar2;\n  int iVar3;\n  uint uVar4;\n  byte bVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  long lVar9;\n  long lVar10;\n  uint *puVar11;\n  undefined4 *puVar12;\n  undefined4 *puVar13;\n  long lVar14;\n  uint uVar15;\n  int iVar16;\n  long lVar17;\n  int *piVar18;\n  ulong uVar19;\n  uint *puVar20;\n  long lVar21;\n  ulong uVar22;\n  bool bVar23;\n  uint local_70;\n  uint local_6c;\n  uint local_40;\n  \n  if (param_1[1] == *param_1) {\n    puVar12 = (undefined4 *)thunk_FUN_002d94a0(0x18);\n    *puVar12 = 1;\n    puVar12[1] = param_3;\n    *(undefined8 *)(puVar12 + 2) = 1;\n    *param_5 = 0x18;\n    *(undefined8 *)(puVar12 + 4) = 0;\n    *param_4 = puVar12;\n    return;\n  }\n  uVar6 = FUN_0029a210(param_2,1);\n  uVar7 = (uint)(param_1[1] - *param_1 >> 3);\n  uVar8 = uVar7 >> 1;\n  if (uVar8 == 0) {\nLAB_0029f178:\n    local_40 = 1;\n    lVar9 = 4;\n    uVar19 = 1;\n    local_6c = 0x20;\n    local_70 = 5;\nLAB_0029f19a:\n    puVar12 = (undefined4 *)FUN_002d94a0(lVar9);\n    puVar13 = puVar12;\n    do {\n      *puVar13 = 0;\n      puVar13 = puVar13 + 1;\n    } while (puVar13 != puVar12 + uVar19);\n    if (uVar6 != 0) goto LAB_0029eee8;\nLAB_0029f1cc:\n    lVar10 = 0;\n    lVar9 = 0;\n    if (uVar7 == 0) goto LAB_0029efa3;\nLAB_0029ef4c:\n    lVar14 = 0;\n    lVar21 = *param_2;\n    do {\n      lVar17 = lVar14 * 4;\n      lVar14 = lVar14 + 1;\n      piVar1 = (int *)(lVar9 + ((ulong)*(uint *)(lVar21 + lVar17) % (ulong)uVar6) * 4);\n      *piVar1 = *piVar1 + 1;\n    } while ((uint)lVar14 < uVar7);\n  }\n  else {\n    uVar4 = 1;\n    do {\n      uVar15 = uVar4;\n      uVar8 = uVar8 >> 1;\n      uVar4 = uVar15 + 1;\n    } while (uVar8 != 0);\n    if (uVar15 + 1 < 3) goto LAB_0029f178;\n    bVar5 = (byte)(uVar15 - 1);\n    if ((uVar7 >> (uVar15 - 1 & 0x1f) & 1) == 0) {\n      local_70 = uVar15 + 3;\n      bVar5 = (char)uVar15 - 2;\n    }\n    else {\n      local_70 = uVar15 + 4;\n    }\n    puVar12 = (undefined4 *)0x0;\n    local_6c = 1 << ((byte)local_70 & 0x1f);\n    local_40 = 1 << (bVar5 & 0x1f);\n    uVar19 = (ulong)local_40;\n    if (local_40 != 0) {\n      lVar9 = uVar19 * 4;\n      goto LAB_0029f19a;\n    }\n    if (uVar6 == 0) goto LAB_0029f1cc;\nLAB_0029eee8:\n    lVar10 = (ulong)uVar6 * 4;\n                    /* try { // try from 0029eef8 to 0029eefc has its CatchHandler @ 0029f275 */\n    lVar9 = FUN_002d94a0(lVar10);\n    uVar19 = 0;\n    do {\n      uVar22 = uVar19;\n      *(undefined4 *)(lVar9 + uVar22 * 4) = 0;\n      uVar19 = uVar22 + 1;\n    } while ((ulong)uVar6 != uVar22 + 1);\n                    /* try { // try from 0029ef21 to 0029ef25 has its CatchHandler @ 0029f27a */\n    lVar10 = FUN_002d94a0(lVar10);\n    uVar19 = 0;\n    do {\n      *(undefined4 *)(lVar10 + uVar19 * 4) = 0;\n      bVar23 = uVar22 != uVar19;\n      uVar19 = uVar19 + 1;\n    } while (bVar23);\n    if (uVar7 != 0) goto LAB_0029ef4c;\n  }\n  if (uVar6 != 0) {\n    uVar19 = 0;\n    uVar8 = param_3;\n    do {\n      *(uint *)(lVar10 + uVar19 * 4) = uVar8;\n      uVar8 = uVar8 + *(int *)(lVar9 + uVar19 * 4);\n      bVar23 = uVar6 - 1 != uVar19;\n      uVar19 = uVar19 + 1;\n    } while (bVar23);\n  }\nLAB_0029efa3:\n                    /* try { // try from 0029efc3 to 0029efc7 has its CatchHandler @ 0029f27f */\n  puVar11 = (uint *)thunk_FUN_002d94a0();\n  lVar21 = (long)puVar11 + (ulong)(local_6c >> 3) + 0x10;\n  *puVar11 = uVar6;\n  puVar11[1] = param_3;\n  puVar11[2] = local_40;\n  puVar11[3] = local_70;\n  if (uVar6 != 0) {\n    uVar19 = 0;\n    do {\n      iVar16 = *(int *)(lVar9 + uVar19 * 4);\n      if (iVar16 != 0) {\n        iVar16 = *(int *)(lVar10 + uVar19 * 4);\n      }\n      *(int *)(lVar21 + uVar19 * 4) = iVar16;\n      bVar23 = uVar6 - 1 != uVar19;\n      uVar19 = uVar19 + 1;\n    } while (bVar23);\n    lVar21 = lVar21 + ((ulong)(uVar6 - 1) + 1) * 4;\n  }\n  if (uVar7 != 0) {\n    param_1 = (long *)*param_1;\n    puVar20 = (uint *)*param_2;\n    plVar2 = param_1 + (ulong)(uVar7 - 1) + 1;\n    do {\n      uVar8 = *puVar20;\n      lVar14 = *param_1;\n      puVar12[uVar8 >> 5 & (local_6c >> 5) - 1] =\n           puVar12[uVar8 >> 5 & (local_6c >> 5) - 1] |\n           1 << ((byte)(uVar8 >> ((byte)local_70 & 0x1f)) & 0x1f) | 1 << ((byte)uVar8 & 0x1f);\n      lVar17 = ((ulong)uVar8 % (ulong)uVar6) * 4;\n      piVar1 = (int *)(lVar9 + lVar17);\n      iVar16 = *piVar1;\n      uVar4 = uVar8 & 0xfffffffe;\n      if (iVar16 == 1) {\n        uVar4 = uVar8 & 0xfffffffe | 1;\n      }\n      piVar18 = (int *)(lVar17 + lVar10);\n      iVar3 = *piVar18;\n      *piVar1 = iVar16 + -1;\n      *(uint *)(lVar21 + (ulong)((iVar3 - param_3) * 4)) = uVar4;\n      if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0029f270 to 0029f274 has its CatchHandler @ 0029f27f */\n        FUN_0017c650("../../gold/symtab.h",0x1a2,"set_dynsym_index");\n      }\n      *(int *)(lVar14 + 0x20) = iVar3;\n      param_1 = param_1 + 1;\n      puVar20 = puVar20 + 1;\n      *piVar18 = iVar3 + 1;\n    } while (plVar2 != param_1);\n  }\n  if (local_40 != 0) {\n    uVar19 = 0;\n    do {\n      puVar11[uVar19 + 4] = puVar12[uVar19];\n      bVar23 = uVar19 != local_40 - 1;\n      uVar19 = uVar19 + 1;\n    } while (bVar23);\n  }\n  *param_5 = (local_6c >> 3) + (uVar6 + 4 + uVar7) * 4;\n  *param_4 = puVar11;\n  if (lVar10 != 0) {\n    FUN_002dac70(lVar10);\n  }\n  if (lVar9 != 0) {\n    FUN_002dac70(lVar9);\n  }\n  if (puVar12 == (undefined4 *)0x0) {\n    return;\n  }\n  FUN_002dac70(puVar12);\n  return;\n}\n\n" (function_definition "void FUN_0029ee20(long *param_1,long *param_2,uint param_3,undefined8 *param_4,int *param_5)\n\n{\n  int *piVar1;\n  long *plVar2;\n  int iVar3;\n  uint uVar4;\n  byte bVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  long lVar9;\n  long lVar10;\n  uint *puVar11;\n  undefined4 *puVar12;\n  undefined4 *puVar13;\n  long lVar14;\n  uint uVar15;\n  int iVar16;\n  long lVar17;\n  int *piVar18;\n  ulong uVar19;\n  uint *puVar20;\n  long lVar21;\n  ulong uVar22;\n  bool bVar23;\n  uint local_70;\n  uint local_6c;\n  uint local_40;\n  \n  if (param_1[1] == *param_1) {\n    puVar12 = (undefined4 *)thunk_FUN_002d94a0(0x18);\n    *puVar12 = 1;\n    puVar12[1] = param_3;\n    *(undefined8 *)(puVar12 + 2) = 1;\n    *param_5 = 0x18;\n    *(undefined8 *)(puVar12 + 4) = 0;\n    *param_4 = puVar12;\n    return;\n  }\n  uVar6 = FUN_0029a210(param_2,1);\n  uVar7 = (uint)(param_1[1] - *param_1 >> 3);\n  uVar8 = uVar7 >> 1;\n  if (uVar8 == 0) {\nLAB_0029f178:\n    local_40 = 1;\n    lVar9 = 4;\n    uVar19 = 1;\n    local_6c = 0x20;\n    local_70 = 5;\nLAB_0029f19a:\n    puVar12 = (undefined4 *)FUN_002d94a0(lVar9);\n    puVar13 = puVar12;\n    do {\n      *puVar13 = 0;\n      puVar13 = puVar13 + 1;\n    } while (puVar13 != puVar12 + uVar19);\n    if (uVar6 != 0) goto LAB_0029eee8;\nLAB_0029f1cc:\n    lVar10 = 0;\n    lVar9 = 0;\n    if (uVar7 == 0) goto LAB_0029efa3;\nLAB_0029ef4c:\n    lVar14 = 0;\n    lVar21 = *param_2;\n    do {\n      lVar17 = lVar14 * 4;\n      lVar14 = lVar14 + 1;\n      piVar1 = (int *)(lVar9 + ((ulong)*(uint *)(lVar21 + lVar17) % (ulong)uVar6) * 4);\n      *piVar1 = *piVar1 + 1;\n    } while ((uint)lVar14 < uVar7);\n  }\n  else {\n    uVar4 = 1;\n    do {\n      uVar15 = uVar4;\n      uVar8 = uVar8 >> 1;\n      uVar4 = uVar15 + 1;\n    } while (uVar8 != 0);\n    if (uVar15 + 1 < 3) goto LAB_0029f178;\n    bVar5 = (byte)(uVar15 - 1);\n    if ((uVar7 >> (uVar15 - 1 & 0x1f) & 1) == 0) {\n      local_70 = uVar15 + 3;\n      bVar5 = (char)uVar15 - 2;\n    }\n    else {\n      local_70 = uVar15 + 4;\n    }\n    puVar12 = (undefined4 *)0x0;\n    local_6c = 1 << ((byte)local_70 & 0x1f);\n    local_40 = 1 << (bVar5 & 0x1f);\n    uVar19 = (ulong)local_40;\n    if (local_40 != 0) {\n      lVar9 = uVar19 * 4;\n      goto LAB_0029f19a;\n    }\n    if (uVar6 == 0) goto LAB_0029f1cc;\nLAB_0029eee8:\n    lVar10 = (ulong)uVar6 * 4;\n                    /* try { // try from 0029eef8 to 0029eefc has its CatchHandler @ 0029f275 */\n    lVar9 = FUN_002d94a0(lVar10);\n    uVar19 = 0;\n    do {\n      uVar22 = uVar19;\n      *(undefined4 *)(lVar9 + uVar22 * 4) = 0;\n      uVar19 = uVar22 + 1;\n    } while ((ulong)uVar6 != uVar22 + 1);\n                    /* try { // try from 0029ef21 to 0029ef25 has its CatchHandler @ 0029f27a */\n    lVar10 = FUN_002d94a0(lVar10);\n    uVar19 = 0;\n    do {\n      *(undefined4 *)(lVar10 + uVar19 * 4) = 0;\n      bVar23 = uVar22 != uVar19;\n      uVar19 = uVar19 + 1;\n    } while (bVar23);\n    if (uVar7 != 0) goto LAB_0029ef4c;\n  }\n  if (uVar6 != 0) {\n    uVar19 = 0;\n    uVar8 = param_3;\n    do {\n      *(uint *)(lVar10 + uVar19 * 4) = uVar8;\n      uVar8 = uVar8 + *(int *)(lVar9 + uVar19 * 4);\n      bVar23 = uVar6 - 1 != uVar19;\n      uVar19 = uVar19 + 1;\n    } while (bVar23);\n  }\nLAB_0029efa3:\n                    /* try { // try from 0029efc3 to 0029efc7 has its CatchHandler @ 0029f27f */\n  puVar11 = (uint *)thunk_FUN_002d94a0();\n  lVar21 = (long)puVar11 + (ulong)(local_6c >> 3) + 0x10;\n  *puVar11 = uVar6;\n  puVar11[1] = param_3;\n  puVar11[2] = local_40;\n  puVar11[3] = local_70;\n  if (uVar6 != 0) {\n    uVar19 = 0;\n    do {\n      iVar16 = *(int *)(lVar9 + uVar19 * 4);\n      if (iVar16 != 0) {\n        iVar16 = *(int *)(lVar10 + uVar19 * 4);\n      }\n      *(int *)(lVar21 + uVar19 * 4) = iVar16;\n      bVar23 = uVar6 - 1 != uVar19;\n      uVar19 = uVar19 + 1;\n    } while (bVar23);\n    lVar21 = lVar21 + ((ulong)(uVar6 - 1) + 1) * 4;\n  }\n  if (uVar7 != 0) {\n    param_1 = (long *)*param_1;\n    puVar20 = (uint *)*param_2;\n    plVar2 = param_1 + (ulong)(uVar7 - 1) + 1;\n    do {\n      uVar8 = *puVar20;\n      lVar14 = *param_1;\n      puVar12[uVar8 >> 5 & (local_6c >> 5) - 1] =\n           puVar12[uVar8 >> 5 & (local_6c >> 5) - 1] |\n           1 << ((byte)(uVar8 >> ((byte)local_70 & 0x1f)) & 0x1f) | 1 << ((byte)uVar8 & 0x1f);\n      lVar17 = ((ulong)uVar8 % (ulong)uVar6) * 4;\n      piVar1 = (int *)(lVar9 + lVar17);\n      iVar16 = *piVar1;\n      uVar4 = uVar8 & 0xfffffffe;\n      if (iVar16 == 1) {\n        uVar4 = uVar8 & 0xfffffffe | 1;\n      }\n      piVar18 = (int *)(lVar17 + lVar10);\n      iVar3 = *piVar18;\n      *piVar1 = iVar16 + -1;\n      *(uint *)(lVar21 + (ulong)((iVar3 - param_3) * 4)) = uVar4;\n      if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0029f270 to 0029f274 has its CatchHandler @ 0029f27f */\n        FUN_0017c650("../../gold/symtab.h",0x1a2,"set_dynsym_index");\n      }\n      *(int *)(lVar14 + 0x20) = iVar3;\n      param_1 = param_1 + 1;\n      puVar20 = puVar20 + 1;\n      *piVar18 = iVar3 + 1;\n    } while (plVar2 != param_1);\n  }\n  if (local_40 != 0) {\n    uVar19 = 0;\n    do {\n      puVar11[uVar19 + 4] = puVar12[uVar19];\n      bVar23 = uVar19 != local_40 - 1;\n      uVar19 = uVar19 + 1;\n    } while (bVar23);\n  }\n  *param_5 = (local_6c >> 3) + (uVar6 + 4 + uVar7) * 4;\n  *param_4 = puVar11;\n  if (lVar10 != 0) {\n    FUN_002dac70(lVar10);\n  }\n  if (lVar9 != 0) {\n    FUN_002dac70(lVar9);\n  }\n  if (puVar12 == (undefined4 *)0x0) {\n    return;\n  }\n  FUN_002dac70(puVar12);\n  return;\n}" primitive_type (function_declarator "FUN_0029ee20(long *param_1,long *param_2,uint param_3,undefined8 *param_4,int *param_5)" identifier (parameter_list "(long *param_1,long *param_2,uint param_3,undefined8 *param_4,int *param_5)" ( (parameter_declaration "long *param_1" (sized_type_specifier "long" long) (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "long *param_2" (sized_type_specifier "long" long) (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "uint param_3" type_identifier identifier) , (parameter_declaration "undefined8 *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "int *param_5" primitive_type (pointer_declarator "*param_5" * identifier)) ))) (compound_statement "{\n  int *piVar1;\n  long *plVar2;\n  int iVar3;\n  uint uVar4;\n  byte bVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  long lVar9;\n  long lVar10;\n  uint *puVar11;\n  undefined4 *puVar12;\n  undefined4 *puVar13;\n  long lVar14;\n  uint uVar15;\n  int iVar16;\n  long lVar17;\n  int *piVar18;\n  ulong uVar19;\n  uint *puVar20;\n  long lVar21;\n  ulong uVar22;\n  bool bVar23;\n  uint local_70;\n  uint local_6c;\n  uint local_40;\n  \n  if (param_1[1] == *param_1) {\n    puVar12 = (undefined4 *)thunk_FUN_002d94a0(0x18);\n    *puVar12 = 1;\n    puVar12[1] = param_3;\n    *(undefined8 *)(puVar12 + 2) = 1;\n    *param_5 = 0x18;\n    *(undefined8 *)(puVar12 + 4) = 0;\n    *param_4 = puVar12;\n    return;\n  }\n  uVar6 = FUN_0029a210(param_2,1);\n  uVar7 = (uint)(param_1[1] - *param_1 >> 3);\n  uVar8 = uVar7 >> 1;\n  if (uVar8 == 0) {\nLAB_0029f178:\n    local_40 = 1;\n    lVar9 = 4;\n    uVar19 = 1;\n    local_6c = 0x20;\n    local_70 = 5;\nLAB_0029f19a:\n    puVar12 = (undefined4 *)FUN_002d94a0(lVar9);\n    puVar13 = puVar12;\n    do {\n      *puVar13 = 0;\n      puVar13 = puVar13 + 1;\n    } while (puVar13 != puVar12 + uVar19);\n    if (uVar6 != 0) goto LAB_0029eee8;\nLAB_0029f1cc:\n    lVar10 = 0;\n    lVar9 = 0;\n    if (uVar7 == 0) goto LAB_0029efa3;\nLAB_0029ef4c:\n    lVar14 = 0;\n    lVar21 = *param_2;\n    do {\n      lVar17 = lVar14 * 4;\n      lVar14 = lVar14 + 1;\n      piVar1 = (int *)(lVar9 + ((ulong)*(uint *)(lVar21 + lVar17) % (ulong)uVar6) * 4);\n      *piVar1 = *piVar1 + 1;\n    } while ((uint)lVar14 < uVar7);\n  }\n  else {\n    uVar4 = 1;\n    do {\n      uVar15 = uVar4;\n      uVar8 = uVar8 >> 1;\n      uVar4 = uVar15 + 1;\n    } while (uVar8 != 0);\n    if (uVar15 + 1 < 3) goto LAB_0029f178;\n    bVar5 = (byte)(uVar15 - 1);\n    if ((uVar7 >> (uVar15 - 1 & 0x1f) & 1) == 0) {\n      local_70 = uVar15 + 3;\n      bVar5 = (char)uVar15 - 2;\n    }\n    else {\n      local_70 = uVar15 + 4;\n    }\n    puVar12 = (undefined4 *)0x0;\n    local_6c = 1 << ((byte)local_70 & 0x1f);\n    local_40 = 1 << (bVar5 & 0x1f);\n    uVar19 = (ulong)local_40;\n    if (local_40 != 0) {\n      lVar9 = uVar19 * 4;\n      goto LAB_0029f19a;\n    }\n    if (uVar6 == 0) goto LAB_0029f1cc;\nLAB_0029eee8:\n    lVar10 = (ulong)uVar6 * 4;\n                    /* try { // try from 0029eef8 to 0029eefc has its CatchHandler @ 0029f275 */\n    lVar9 = FUN_002d94a0(lVar10);\n    uVar19 = 0;\n    do {\n      uVar22 = uVar19;\n      *(undefined4 *)(lVar9 + uVar22 * 4) = 0;\n      uVar19 = uVar22 + 1;\n    } while ((ulong)uVar6 != uVar22 + 1);\n                    /* try { // try from 0029ef21 to 0029ef25 has its CatchHandler @ 0029f27a */\n    lVar10 = FUN_002d94a0(lVar10);\n    uVar19 = 0;\n    do {\n      *(undefined4 *)(lVar10 + uVar19 * 4) = 0;\n      bVar23 = uVar22 != uVar19;\n      uVar19 = uVar19 + 1;\n    } while (bVar23);\n    if (uVar7 != 0) goto LAB_0029ef4c;\n  }\n  if (uVar6 != 0) {\n    uVar19 = 0;\n    uVar8 = param_3;\n    do {\n      *(uint *)(lVar10 + uVar19 * 4) = uVar8;\n      uVar8 = uVar8 + *(int *)(lVar9 + uVar19 * 4);\n      bVar23 = uVar6 - 1 != uVar19;\n      uVar19 = uVar19 + 1;\n    } while (bVar23);\n  }\nLAB_0029efa3:\n                    /* try { // try from 0029efc3 to 0029efc7 has its CatchHandler @ 0029f27f */\n  puVar11 = (uint *)thunk_FUN_002d94a0();\n  lVar21 = (long)puVar11 + (ulong)(local_6c >> 3) + 0x10;\n  *puVar11 = uVar6;\n  puVar11[1] = param_3;\n  puVar11[2] = local_40;\n  puVar11[3] = local_70;\n  if (uVar6 != 0) {\n    uVar19 = 0;\n    do {\n      iVar16 = *(int *)(lVar9 + uVar19 * 4);\n      if (iVar16 != 0) {\n        iVar16 = *(int *)(lVar10 + uVar19 * 4);\n      }\n      *(int *)(lVar21 + uVar19 * 4) = iVar16;\n      bVar23 = uVar6 - 1 != uVar19;\n      uVar19 = uVar19 + 1;\n    } while (bVar23);\n    lVar21 = lVar21 + ((ulong)(uVar6 - 1) + 1) * 4;\n  }\n  if (uVar7 != 0) {\n    param_1 = (long *)*param_1;\n    puVar20 = (uint *)*param_2;\n    plVar2 = param_1 + (ulong)(uVar7 - 1) + 1;\n    do {\n      uVar8 = *puVar20;\n      lVar14 = *param_1;\n      puVar12[uVar8 >> 5 & (local_6c >> 5) - 1] =\n           puVar12[uVar8 >> 5 & (local_6c >> 5) - 1] |\n           1 << ((byte)(uVar8 >> ((byte)local_70 & 0x1f)) & 0x1f) | 1 << ((byte)uVar8 & 0x1f);\n      lVar17 = ((ulong)uVar8 % (ulong)uVar6) * 4;\n      piVar1 = (int *)(lVar9 + lVar17);\n      iVar16 = *piVar1;\n      uVar4 = uVar8 & 0xfffffffe;\n      if (iVar16 == 1) {\n        uVar4 = uVar8 & 0xfffffffe | 1;\n      }\n      piVar18 = (int *)(lVar17 + lVar10);\n      iVar3 = *piVar18;\n      *piVar1 = iVar16 + -1;\n      *(uint *)(lVar21 + (ulong)((iVar3 - param_3) * 4)) = uVar4;\n      if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0029f270 to 0029f274 has its CatchHandler @ 0029f27f */\n        FUN_0017c650("../../gold/symtab.h",0x1a2,"set_dynsym_index");\n      }\n      *(int *)(lVar14 + 0x20) = iVar3;\n      param_1 = param_1 + 1;\n      puVar20 = puVar20 + 1;\n      *piVar18 = iVar3 + 1;\n    } while (plVar2 != param_1);\n  }\n  if (local_40 != 0) {\n    uVar19 = 0;\n    do {\n      puVar11[uVar19 + 4] = puVar12[uVar19];\n      bVar23 = uVar19 != local_40 - 1;\n      uVar19 = uVar19 + 1;\n    } while (bVar23);\n  }\n  *param_5 = (local_6c >> 3) + (uVar6 + 4 + uVar7) * 4;\n  *param_4 = puVar11;\n  if (lVar10 != 0) {\n    FUN_002dac70(lVar10);\n  }\n  if (lVar9 != 0) {\n    FUN_002dac70(lVar9);\n  }\n  if (puVar12 == (undefined4 *)0x0) {\n    return;\n  }\n  FUN_002dac70(puVar12);\n  return;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "long *plVar2;" (sized_type_specifier "long" long) (pointer_declarator "*plVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "byte bVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "long lVar9;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar10;" (sized_type_specifier "long" long) identifier ;) (declaration "uint *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "undefined4 *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "undefined4 *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "long lVar14;" (sized_type_specifier "long" long) identifier ;) (declaration "uint uVar15;" type_identifier identifier ;) (declaration "int iVar16;" primitive_type identifier ;) (declaration "long lVar17;" (sized_type_specifier "long" long) identifier ;) (declaration "int *piVar18;" primitive_type (pointer_declarator "*piVar18" * identifier) ;) (declaration "ulong uVar19;" type_identifier identifier ;) (declaration "uint *puVar20;" type_identifier (pointer_declarator "*puVar20" * identifier) ;) (declaration "long lVar21;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar22;" type_identifier identifier ;) (declaration "bool bVar23;" primitive_type identifier ;) (declaration "uint local_70;" type_identifier identifier ;) (declaration "uint local_6c;" type_identifier identifier ;) (declaration "uint local_40;" type_identifier identifier ;) (if_statement "if (param_1[1] == *param_1) {\n    puVar12 = (undefined4 *)thunk_FUN_002d94a0(0x18);\n    *puVar12 = 1;\n    puVar12[1] = param_3;\n    *(undefined8 *)(puVar12 + 2) = 1;\n    *param_5 = 0x18;\n    *(undefined8 *)(puVar12 + 4) = 0;\n    *param_4 = puVar12;\n    return;\n  }" if (parenthesized_expression "(param_1[1] == *param_1)" ( (binary_expression "param_1[1] == *param_1" (subscript_expression "param_1[1]" identifier [ number_literal ]) == (pointer_expression "*param_1" * identifier)) )) (compound_statement "{\n    puVar12 = (undefined4 *)thunk_FUN_002d94a0(0x18);\n    *puVar12 = 1;\n    puVar12[1] = param_3;\n    *(undefined8 *)(puVar12 + 2) = 1;\n    *param_5 = 0x18;\n    *(undefined8 *)(puVar12 + 4) = 0;\n    *param_4 = puVar12;\n    return;\n  }" { (expression_statement "puVar12 = (undefined4 *)thunk_FUN_002d94a0(0x18);" (assignment_expression "puVar12 = (undefined4 *)thunk_FUN_002d94a0(0x18)" identifier = (cast_expression "(undefined4 *)thunk_FUN_002d94a0(0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "thunk_FUN_002d94a0(0x18)" identifier (argument_list "(0x18)" ( number_literal ))))) ;) (expression_statement "*puVar12 = 1;" (assignment_expression "*puVar12 = 1" (pointer_expression "*puVar12" * identifier) = number_literal) ;) (expression_statement "puVar12[1] = param_3;" (assignment_expression "puVar12[1] = param_3" (subscript_expression "puVar12[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined8 *)(puVar12 + 2) = 1;" (assignment_expression "*(undefined8 *)(puVar12 + 2) = 1" (pointer_expression "*(undefined8 *)(puVar12 + 2)" * (cast_expression "(undefined8 *)(puVar12 + 2)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + 2)" ( (binary_expression "puVar12 + 2" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*param_5 = 0x18;" (assignment_expression "*param_5 = 0x18" (pointer_expression "*param_5" * identifier) = number_literal) ;) (expression_statement "*(undefined8 *)(puVar12 + 4) = 0;" (assignment_expression "*(undefined8 *)(puVar12 + 4) = 0" (pointer_expression "*(undefined8 *)(puVar12 + 4)" * (cast_expression "(undefined8 *)(puVar12 + 4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + 4)" ( (binary_expression "puVar12 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*param_4 = puVar12;" (assignment_expression "*param_4 = puVar12" (pointer_expression "*param_4" * identifier) = identifier) ;) (return_statement "return;" return ;) })) (expression_statement "uVar6 = FUN_0029a210(param_2,1);" (assignment_expression "uVar6 = FUN_0029a210(param_2,1)" identifier = (call_expression "FUN_0029a210(param_2,1)" identifier (argument_list "(param_2,1)" ( identifier , number_literal )))) ;) (expression_statement "uVar7 = (uint)(param_1[1] - *param_1 >> 3);" (assignment_expression "uVar7 = (uint)(param_1[1] - *param_1 >> 3)" identifier = (call_expression "(uint)(param_1[1] - *param_1 >> 3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_1[1] - *param_1 >> 3)" ( (binary_expression "param_1[1] - *param_1 >> 3" (binary_expression "param_1[1] - *param_1" (subscript_expression "param_1[1]" identifier [ number_literal ]) - (pointer_expression "*param_1" * identifier)) >> number_literal) )))) ;) (expression_statement "uVar8 = uVar7 >> 1;" (assignment_expression "uVar8 = uVar7 >> 1" identifier = (binary_expression "uVar7 >> 1" identifier >> number_literal)) ;) (if_statement "if (uVar8 == 0) {\nLAB_0029f178:\n    local_40 = 1;\n    lVar9 = 4;\n    uVar19 = 1;\n    local_6c = 0x20;\n    local_70 = 5;\nLAB_0029f19a:\n    puVar12 = (undefined4 *)FUN_002d94a0(lVar9);\n    puVar13 = puVar12;\n    do {\n      *puVar13 = 0;\n      puVar13 = puVar13 + 1;\n    } while (puVar13 != puVar12 + uVar19);\n    if (uVar6 != 0) goto LAB_0029eee8;\nLAB_0029f1cc:\n    lVar10 = 0;\n    lVar9 = 0;\n    if (uVar7 == 0) goto LAB_0029efa3;\nLAB_0029ef4c:\n    lVar14 = 0;\n    lVar21 = *param_2;\n    do {\n      lVar17 = lVar14 * 4;\n      lVar14 = lVar14 + 1;\n      piVar1 = (int *)(lVar9 + ((ulong)*(uint *)(lVar21 + lVar17) % (ulong)uVar6) * 4);\n      *piVar1 = *piVar1 + 1;\n    } while ((uint)lVar14 < uVar7);\n  }\n  else {\n    uVar4 = 1;\n    do {\n      uVar15 = uVar4;\n      uVar8 = uVar8 >> 1;\n      uVar4 = uVar15 + 1;\n    } while (uVar8 != 0);\n    if (uVar15 + 1 < 3) goto LAB_0029f178;\n    bVar5 = (byte)(uVar15 - 1);\n    if ((uVar7 >> (uVar15 - 1 & 0x1f) & 1) == 0) {\n      local_70 = uVar15 + 3;\n      bVar5 = (char)uVar15 - 2;\n    }\n    else {\n      local_70 = uVar15 + 4;\n    }\n    puVar12 = (undefined4 *)0x0;\n    local_6c = 1 << ((byte)local_70 & 0x1f);\n    local_40 = 1 << (bVar5 & 0x1f);\n    uVar19 = (ulong)local_40;\n    if (local_40 != 0) {\n      lVar9 = uVar19 * 4;\n      goto LAB_0029f19a;\n    }\n    if (uVar6 == 0) goto LAB_0029f1cc;\nLAB_0029eee8:\n    lVar10 = (ulong)uVar6 * 4;\n                    /* try { // try from 0029eef8 to 0029eefc has its CatchHandler @ 0029f275 */\n    lVar9 = FUN_002d94a0(lVar10);\n    uVar19 = 0;\n    do {\n      uVar22 = uVar19;\n      *(undefined4 *)(lVar9 + uVar22 * 4) = 0;\n      uVar19 = uVar22 + 1;\n    } while ((ulong)uVar6 != uVar22 + 1);\n                    /* try { // try from 0029ef21 to 0029ef25 has its CatchHandler @ 0029f27a */\n    lVar10 = FUN_002d94a0(lVar10);\n    uVar19 = 0;\n    do {\n      *(undefined4 *)(lVar10 + uVar19 * 4) = 0;\n      bVar23 = uVar22 != uVar19;\n      uVar19 = uVar19 + 1;\n    } while (bVar23);\n    if (uVar7 != 0) goto LAB_0029ef4c;\n  }" if (parenthesized_expression "(uVar8 == 0)" ( (binary_expression "uVar8 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0029f178:\n    local_40 = 1;\n    lVar9 = 4;\n    uVar19 = 1;\n    local_6c = 0x20;\n    local_70 = 5;\nLAB_0029f19a:\n    puVar12 = (undefined4 *)FUN_002d94a0(lVar9);\n    puVar13 = puVar12;\n    do {\n      *puVar13 = 0;\n      puVar13 = puVar13 + 1;\n    } while (puVar13 != puVar12 + uVar19);\n    if (uVar6 != 0) goto LAB_0029eee8;\nLAB_0029f1cc:\n    lVar10 = 0;\n    lVar9 = 0;\n    if (uVar7 == 0) goto LAB_0029efa3;\nLAB_0029ef4c:\n    lVar14 = 0;\n    lVar21 = *param_2;\n    do {\n      lVar17 = lVar14 * 4;\n      lVar14 = lVar14 + 1;\n      piVar1 = (int *)(lVar9 + ((ulong)*(uint *)(lVar21 + lVar17) % (ulong)uVar6) * 4);\n      *piVar1 = *piVar1 + 1;\n    } while ((uint)lVar14 < uVar7);\n  }" { (labeled_statement "LAB_0029f178:\n    local_40 = 1;" statement_identifier : (expression_statement "local_40 = 1;" (assignment_expression "local_40 = 1" identifier = number_literal) ;)) (expression_statement "lVar9 = 4;" (assignment_expression "lVar9 = 4" identifier = number_literal) ;) (expression_statement "uVar19 = 1;" (assignment_expression "uVar19 = 1" identifier = number_literal) ;) (expression_statement "local_6c = 0x20;" (assignment_expression "local_6c = 0x20" identifier = number_literal) ;) (expression_statement "local_70 = 5;" (assignment_expression "local_70 = 5" identifier = number_literal) ;) (labeled_statement "LAB_0029f19a:\n    puVar12 = (undefined4 *)FUN_002d94a0(lVar9);" statement_identifier : (expression_statement "puVar12 = (undefined4 *)FUN_002d94a0(lVar9);" (assignment_expression "puVar12 = (undefined4 *)FUN_002d94a0(lVar9)" identifier = (cast_expression "(undefined4 *)FUN_002d94a0(lVar9)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d94a0(lVar9)" identifier (argument_list "(lVar9)" ( identifier ))))) ;)) (expression_statement "puVar13 = puVar12;" (assignment_expression "puVar13 = puVar12" identifier = identifier) ;) (do_statement "do {\n      *puVar13 = 0;\n      puVar13 = puVar13 + 1;\n    } while (puVar13 != puVar12 + uVar19);" do (compound_statement "{\n      *puVar13 = 0;\n      puVar13 = puVar13 + 1;\n    }" { (expression_statement "*puVar13 = 0;" (assignment_expression "*puVar13 = 0" (pointer_expression "*puVar13" * identifier) = number_literal) ;) (expression_statement "puVar13 = puVar13 + 1;" (assignment_expression "puVar13 = puVar13 + 1" identifier = (binary_expression "puVar13 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar13 != puVar12 + uVar19)" ( (binary_expression "puVar13 != puVar12 + uVar19" identifier != (binary_expression "puVar12 + uVar19" identifier + identifier)) )) ;) (if_statement "if (uVar6 != 0) goto LAB_0029eee8;" if (parenthesized_expression "(uVar6 != 0)" ( (binary_expression "uVar6 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0029eee8;" goto statement_identifier ;)) (labeled_statement "LAB_0029f1cc:\n    lVar10 = 0;" statement_identifier : (expression_statement "lVar10 = 0;" (assignment_expression "lVar10 = 0" identifier = number_literal) ;)) (expression_statement "lVar9 = 0;" (assignment_expression "lVar9 = 0" identifier = number_literal) ;) (if_statement "if (uVar7 == 0) goto LAB_0029efa3;" if (parenthesized_expression "(uVar7 == 0)" ( (binary_expression "uVar7 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0029efa3;" goto statement_identifier ;)) (labeled_statement "LAB_0029ef4c:\n    lVar14 = 0;" statement_identifier : (expression_statement "lVar14 = 0;" (assignment_expression "lVar14 = 0" identifier = number_literal) ;)) (expression_statement "lVar21 = *param_2;" (assignment_expression "lVar21 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (do_statement "do {\n      lVar17 = lVar14 * 4;\n      lVar14 = lVar14 + 1;\n      piVar1 = (int *)(lVar9 + ((ulong)*(uint *)(lVar21 + lVar17) % (ulong)uVar6) * 4);\n      *piVar1 = *piVar1 + 1;\n    } while ((uint)lVar14 < uVar7);" do (compound_statement "{\n      lVar17 = lVar14 * 4;\n      lVar14 = lVar14 + 1;\n      piVar1 = (int *)(lVar9 + ((ulong)*(uint *)(lVar21 + lVar17) % (ulong)uVar6) * 4);\n      *piVar1 = *piVar1 + 1;\n    }" { (expression_statement "lVar17 = lVar14 * 4;" (assignment_expression "lVar17 = lVar14 * 4" identifier = (binary_expression "lVar14 * 4" identifier * number_literal)) ;) (expression_statement "lVar14 = lVar14 + 1;" (assignment_expression "lVar14 = lVar14 + 1" identifier = (binary_expression "lVar14 + 1" identifier + number_literal)) ;) (expression_statement "piVar1 = (int *)(lVar9 + ((ulong)*(uint *)(lVar21 + lVar17) % (ulong)uVar6) * 4);" (assignment_expression "piVar1 = (int *)(lVar9 + ((ulong)*(uint *)(lVar21 + lVar17) % (ulong)uVar6) * 4)" identifier = (cast_expression "(int *)(lVar9 + ((ulong)*(uint *)(lVar21 + lVar17) % (ulong)uVar6) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar9 + ((ulong)*(uint *)(lVar21 + lVar17) % (ulong)uVar6) * 4)" ( (binary_expression "lVar9 + ((ulong)*(uint *)(lVar21 + lVar17) % (ulong)uVar6) * 4" identifier + (binary_expression "((ulong)*(uint *)(lVar21 + lVar17) % (ulong)uVar6) * 4" (parenthesized_expression "((ulong)*(uint *)(lVar21 + lVar17) % (ulong)uVar6)" ( (binary_expression "(ulong)*(uint *)(lVar21 + lVar17) % (ulong)uVar6" (binary_expression "(ulong)*(uint *)(lVar21 + lVar17)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(uint *)(lVar21 + lVar17)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar21 + lVar17)" ( (binary_expression "lVar21 + lVar17" identifier + identifier) )))) % (cast_expression "(ulong)uVar6" ( (type_descriptor "ulong" type_identifier) ) identifier)) )) * number_literal)) )))) ;) (expression_statement "*piVar1 = *piVar1 + 1;" (assignment_expression "*piVar1 = *piVar1 + 1" (pointer_expression "*piVar1" * identifier) = (binary_expression "*piVar1 + 1" (pointer_expression "*piVar1" * identifier) + number_literal)) ;) }) while (parenthesized_expression "((uint)lVar14 < uVar7)" ( (binary_expression "(uint)lVar14 < uVar7" (cast_expression "(uint)lVar14" ( (type_descriptor "uint" type_identifier) ) identifier) < identifier) )) ;) }) (else_clause "else {\n    uVar4 = 1;\n    do {\n      uVar15 = uVar4;\n      uVar8 = uVar8 >> 1;\n      uVar4 = uVar15 + 1;\n    } while (uVar8 != 0);\n    if (uVar15 + 1 < 3) goto LAB_0029f178;\n    bVar5 = (byte)(uVar15 - 1);\n    if ((uVar7 >> (uVar15 - 1 & 0x1f) & 1) == 0) {\n      local_70 = uVar15 + 3;\n      bVar5 = (char)uVar15 - 2;\n    }\n    else {\n      local_70 = uVar15 + 4;\n    }\n    puVar12 = (undefined4 *)0x0;\n    local_6c = 1 << ((byte)local_70 & 0x1f);\n    local_40 = 1 << (bVar5 & 0x1f);\n    uVar19 = (ulong)local_40;\n    if (local_40 != 0) {\n      lVar9 = uVar19 * 4;\n      goto LAB_0029f19a;\n    }\n    if (uVar6 == 0) goto LAB_0029f1cc;\nLAB_0029eee8:\n    lVar10 = (ulong)uVar6 * 4;\n                    /* try { // try from 0029eef8 to 0029eefc has its CatchHandler @ 0029f275 */\n    lVar9 = FUN_002d94a0(lVar10);\n    uVar19 = 0;\n    do {\n      uVar22 = uVar19;\n      *(undefined4 *)(lVar9 + uVar22 * 4) = 0;\n      uVar19 = uVar22 + 1;\n    } while ((ulong)uVar6 != uVar22 + 1);\n                    /* try { // try from 0029ef21 to 0029ef25 has its CatchHandler @ 0029f27a */\n    lVar10 = FUN_002d94a0(lVar10);\n    uVar19 = 0;\n    do {\n      *(undefined4 *)(lVar10 + uVar19 * 4) = 0;\n      bVar23 = uVar22 != uVar19;\n      uVar19 = uVar19 + 1;\n    } while (bVar23);\n    if (uVar7 != 0) goto LAB_0029ef4c;\n  }" else (compound_statement "{\n    uVar4 = 1;\n    do {\n      uVar15 = uVar4;\n      uVar8 = uVar8 >> 1;\n      uVar4 = uVar15 + 1;\n    } while (uVar8 != 0);\n    if (uVar15 + 1 < 3) goto LAB_0029f178;\n    bVar5 = (byte)(uVar15 - 1);\n    if ((uVar7 >> (uVar15 - 1 & 0x1f) & 1) == 0) {\n      local_70 = uVar15 + 3;\n      bVar5 = (char)uVar15 - 2;\n    }\n    else {\n      local_70 = uVar15 + 4;\n    }\n    puVar12 = (undefined4 *)0x0;\n    local_6c = 1 << ((byte)local_70 & 0x1f);\n    local_40 = 1 << (bVar5 & 0x1f);\n    uVar19 = (ulong)local_40;\n    if (local_40 != 0) {\n      lVar9 = uVar19 * 4;\n      goto LAB_0029f19a;\n    }\n    if (uVar6 == 0) goto LAB_0029f1cc;\nLAB_0029eee8:\n    lVar10 = (ulong)uVar6 * 4;\n                    /* try { // try from 0029eef8 to 0029eefc has its CatchHandler @ 0029f275 */\n    lVar9 = FUN_002d94a0(lVar10);\n    uVar19 = 0;\n    do {\n      uVar22 = uVar19;\n      *(undefined4 *)(lVar9 + uVar22 * 4) = 0;\n      uVar19 = uVar22 + 1;\n    } while ((ulong)uVar6 != uVar22 + 1);\n                    /* try { // try from 0029ef21 to 0029ef25 has its CatchHandler @ 0029f27a */\n    lVar10 = FUN_002d94a0(lVar10);\n    uVar19 = 0;\n    do {\n      *(undefined4 *)(lVar10 + uVar19 * 4) = 0;\n      bVar23 = uVar22 != uVar19;\n      uVar19 = uVar19 + 1;\n    } while (bVar23);\n    if (uVar7 != 0) goto LAB_0029ef4c;\n  }" { (expression_statement "uVar4 = 1;" (assignment_expression "uVar4 = 1" identifier = number_literal) ;) (do_statement "do {\n      uVar15 = uVar4;\n      uVar8 = uVar8 >> 1;\n      uVar4 = uVar15 + 1;\n    } while (uVar8 != 0);" do (compound_statement "{\n      uVar15 = uVar4;\n      uVar8 = uVar8 >> 1;\n      uVar4 = uVar15 + 1;\n    }" { (expression_statement "uVar15 = uVar4;" (assignment_expression "uVar15 = uVar4" identifier = identifier) ;) (expression_statement "uVar8 = uVar8 >> 1;" (assignment_expression "uVar8 = uVar8 >> 1" identifier = (binary_expression "uVar8 >> 1" identifier >> number_literal)) ;) (expression_statement "uVar4 = uVar15 + 1;" (assignment_expression "uVar4 = uVar15 + 1" identifier = (binary_expression "uVar15 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar8 != 0)" ( (binary_expression "uVar8 != 0" identifier != number_literal) )) ;) (if_statement "if (uVar15 + 1 < 3) goto LAB_0029f178;" if (parenthesized_expression "(uVar15 + 1 < 3)" ( (binary_expression "uVar15 + 1 < 3" (binary_expression "uVar15 + 1" identifier + number_literal) < number_literal) )) (goto_statement "goto LAB_0029f178;" goto statement_identifier ;)) (expression_statement "bVar5 = (byte)(uVar15 - 1);" (assignment_expression "bVar5 = (byte)(uVar15 - 1)" identifier = (call_expression "(byte)(uVar15 - 1)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar15 - 1)" ( (binary_expression "uVar15 - 1" identifier - number_literal) )))) ;) (if_statement "if ((uVar7 >> (uVar15 - 1 & 0x1f) & 1) == 0) {\n      local_70 = uVar15 + 3;\n      bVar5 = (char)uVar15 - 2;\n    }\n    else {\n      local_70 = uVar15 + 4;\n    }" if (parenthesized_expression "((uVar7 >> (uVar15 - 1 & 0x1f) & 1) == 0)" ( (binary_expression "(uVar7 >> (uVar15 - 1 & 0x1f) & 1) == 0" (parenthesized_expression "(uVar7 >> (uVar15 - 1 & 0x1f) & 1)" ( (binary_expression "uVar7 >> (uVar15 - 1 & 0x1f) & 1" (binary_expression "uVar7 >> (uVar15 - 1 & 0x1f)" identifier >> (parenthesized_expression "(uVar15 - 1 & 0x1f)" ( (binary_expression "uVar15 - 1 & 0x1f" (binary_expression "uVar15 - 1" identifier - number_literal) & number_literal) ))) & number_literal) )) == number_literal) )) (compound_statement "{\n      local_70 = uVar15 + 3;\n      bVar5 = (char)uVar15 - 2;\n    }" { (expression_statement "local_70 = uVar15 + 3;" (assignment_expression "local_70 = uVar15 + 3" identifier = (binary_expression "uVar15 + 3" identifier + number_literal)) ;) (expression_statement "bVar5 = (char)uVar15 - 2;" (assignment_expression "bVar5 = (char)uVar15 - 2" identifier = (binary_expression "(char)uVar15 - 2" (cast_expression "(char)uVar15" ( (type_descriptor "char" primitive_type) ) identifier) - number_literal)) ;) }) (else_clause "else {\n      local_70 = uVar15 + 4;\n    }" else (compound_statement "{\n      local_70 = uVar15 + 4;\n    }" { (expression_statement "local_70 = uVar15 + 4;" (assignment_expression "local_70 = uVar15 + 4" identifier = (binary_expression "uVar15 + 4" identifier + number_literal)) ;) }))) (expression_statement "puVar12 = (undefined4 *)0x0;" (assignment_expression "puVar12 = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_6c = 1 << ((byte)local_70 & 0x1f);" (assignment_expression "local_6c = 1 << ((byte)local_70 & 0x1f)" identifier = (binary_expression "1 << ((byte)local_70 & 0x1f)" number_literal << (parenthesized_expression "((byte)local_70 & 0x1f)" ( (binary_expression "(byte)local_70 & 0x1f" (cast_expression "(byte)local_70" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) (expression_statement "local_40 = 1 << (bVar5 & 0x1f);" (assignment_expression "local_40 = 1 << (bVar5 & 0x1f)" identifier = (binary_expression "1 << (bVar5 & 0x1f)" number_literal << (parenthesized_expression "(bVar5 & 0x1f)" ( (binary_expression "bVar5 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar19 = (ulong)local_40;" (assignment_expression "uVar19 = (ulong)local_40" identifier = (cast_expression "(ulong)local_40" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (if_statement "if (local_40 != 0) {\n      lVar9 = uVar19 * 4;\n      goto LAB_0029f19a;\n    }" if (parenthesized_expression "(local_40 != 0)" ( (binary_expression "local_40 != 0" identifier != number_literal) )) (compound_statement "{\n      lVar9 = uVar19 * 4;\n      goto LAB_0029f19a;\n    }" { (expression_statement "lVar9 = uVar19 * 4;" (assignment_expression "lVar9 = uVar19 * 4" identifier = (binary_expression "uVar19 * 4" identifier * number_literal)) ;) (goto_statement "goto LAB_0029f19a;" goto statement_identifier ;) })) (if_statement "if (uVar6 == 0) goto LAB_0029f1cc;" if (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0029f1cc;" goto statement_identifier ;)) (labeled_statement "LAB_0029eee8:\n    lVar10 = (ulong)uVar6 * 4;" statement_identifier : (expression_statement "lVar10 = (ulong)uVar6 * 4;" (assignment_expression "lVar10 = (ulong)uVar6 * 4" identifier = (binary_expression "(ulong)uVar6 * 4" (cast_expression "(ulong)uVar6" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) ;)) comment (expression_statement "lVar9 = FUN_002d94a0(lVar10);" (assignment_expression "lVar9 = FUN_002d94a0(lVar10)" identifier = (call_expression "FUN_002d94a0(lVar10)" identifier (argument_list "(lVar10)" ( identifier )))) ;) (expression_statement "uVar19 = 0;" (assignment_expression "uVar19 = 0" identifier = number_literal) ;) (do_statement "do {\n      uVar22 = uVar19;\n      *(undefined4 *)(lVar9 + uVar22 * 4) = 0;\n      uVar19 = uVar22 + 1;\n    } while ((ulong)uVar6 != uVar22 + 1);" do (compound_statement "{\n      uVar22 = uVar19;\n      *(undefined4 *)(lVar9 + uVar22 * 4) = 0;\n      uVar19 = uVar22 + 1;\n    }" { (expression_statement "uVar22 = uVar19;" (assignment_expression "uVar22 = uVar19" identifier = identifier) ;) (expression_statement "*(undefined4 *)(lVar9 + uVar22 * 4) = 0;" (assignment_expression "*(undefined4 *)(lVar9 + uVar22 * 4) = 0" (pointer_expression "*(undefined4 *)(lVar9 + uVar22 * 4)" * (cast_expression "(undefined4 *)(lVar9 + uVar22 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar9 + uVar22 * 4)" ( (binary_expression "lVar9 + uVar22 * 4" identifier + (binary_expression "uVar22 * 4" identifier * number_literal)) )))) = number_literal) ;) (expression_statement "uVar19 = uVar22 + 1;" (assignment_expression "uVar19 = uVar22 + 1" identifier = (binary_expression "uVar22 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((ulong)uVar6 != uVar22 + 1)" ( (binary_expression "(ulong)uVar6 != uVar22 + 1" (cast_expression "(ulong)uVar6" ( (type_descriptor "ulong" type_identifier) ) identifier) != (binary_expression "uVar22 + 1" identifier + number_literal)) )) ;) comment (expression_statement "lVar10 = FUN_002d94a0(lVar10);" (assignment_expression "lVar10 = FUN_002d94a0(lVar10)" identifier = (call_expression "FUN_002d94a0(lVar10)" identifier (argument_list "(lVar10)" ( identifier )))) ;) (expression_statement "uVar19 = 0;" (assignment_expression "uVar19 = 0" identifier = number_literal) ;) (do_statement "do {\n      *(undefined4 *)(lVar10 + uVar19 * 4) = 0;\n      bVar23 = uVar22 != uVar19;\n      uVar19 = uVar19 + 1;\n    } while (bVar23);" do (compound_statement "{\n      *(undefined4 *)(lVar10 + uVar19 * 4) = 0;\n      bVar23 = uVar22 != uVar19;\n      uVar19 = uVar19 + 1;\n    }" { (expression_statement "*(undefined4 *)(lVar10 + uVar19 * 4) = 0;" (assignment_expression "*(undefined4 *)(lVar10 + uVar19 * 4) = 0" (pointer_expression "*(undefined4 *)(lVar10 + uVar19 * 4)" * (cast_expression "(undefined4 *)(lVar10 + uVar19 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + uVar19 * 4)" ( (binary_expression "lVar10 + uVar19 * 4" identifier + (binary_expression "uVar19 * 4" identifier * number_literal)) )))) = number_literal) ;) (expression_statement "bVar23 = uVar22 != uVar19;" (assignment_expression "bVar23 = uVar22 != uVar19" identifier = (binary_expression "uVar22 != uVar19" identifier != identifier)) ;) (expression_statement "uVar19 = uVar19 + 1;" (assignment_expression "uVar19 = uVar19 + 1" identifier = (binary_expression "uVar19 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar23)" ( identifier )) ;) (if_statement "if (uVar7 != 0) goto LAB_0029ef4c;" if (parenthesized_expression "(uVar7 != 0)" ( (binary_expression "uVar7 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0029ef4c;" goto statement_identifier ;)) }))) (if_statement "if (uVar6 != 0) {\n    uVar19 = 0;\n    uVar8 = param_3;\n    do {\n      *(uint *)(lVar10 + uVar19 * 4) = uVar8;\n      uVar8 = uVar8 + *(int *)(lVar9 + uVar19 * 4);\n      bVar23 = uVar6 - 1 != uVar19;\n      uVar19 = uVar19 + 1;\n    } while (bVar23);\n  }" if (parenthesized_expression "(uVar6 != 0)" ( (binary_expression "uVar6 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar19 = 0;\n    uVar8 = param_3;\n    do {\n      *(uint *)(lVar10 + uVar19 * 4) = uVar8;\n      uVar8 = uVar8 + *(int *)(lVar9 + uVar19 * 4);\n      bVar23 = uVar6 - 1 != uVar19;\n      uVar19 = uVar19 + 1;\n    } while (bVar23);\n  }" { (expression_statement "uVar19 = 0;" (assignment_expression "uVar19 = 0" identifier = number_literal) ;) (expression_statement "uVar8 = param_3;" (assignment_expression "uVar8 = param_3" identifier = identifier) ;) (do_statement "do {\n      *(uint *)(lVar10 + uVar19 * 4) = uVar8;\n      uVar8 = uVar8 + *(int *)(lVar9 + uVar19 * 4);\n      bVar23 = uVar6 - 1 != uVar19;\n      uVar19 = uVar19 + 1;\n    } while (bVar23);" do (compound_statement "{\n      *(uint *)(lVar10 + uVar19 * 4) = uVar8;\n      uVar8 = uVar8 + *(int *)(lVar9 + uVar19 * 4);\n      bVar23 = uVar6 - 1 != uVar19;\n      uVar19 = uVar19 + 1;\n    }" { (expression_statement "*(uint *)(lVar10 + uVar19 * 4) = uVar8;" (assignment_expression "*(uint *)(lVar10 + uVar19 * 4) = uVar8" (pointer_expression "*(uint *)(lVar10 + uVar19 * 4)" * (cast_expression "(uint *)(lVar10 + uVar19 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + uVar19 * 4)" ( (binary_expression "lVar10 + uVar19 * 4" identifier + (binary_expression "uVar19 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "uVar8 = uVar8 + *(int *)(lVar9 + uVar19 * 4);" (assignment_expression "uVar8 = uVar8 + *(int *)(lVar9 + uVar19 * 4)" identifier = (binary_expression "uVar8 + *(int *)(lVar9 + uVar19 * 4)" identifier + (pointer_expression "*(int *)(lVar9 + uVar19 * 4)" * (cast_expression "(int *)(lVar9 + uVar19 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar9 + uVar19 * 4)" ( (binary_expression "lVar9 + uVar19 * 4" identifier + (binary_expression "uVar19 * 4" identifier * number_literal)) )))))) ;) (expression_statement "bVar23 = uVar6 - 1 != uVar19;" (assignment_expression "bVar23 = uVar6 - 1 != uVar19" identifier = (binary_expression "uVar6 - 1 != uVar19" (binary_expression "uVar6 - 1" identifier - number_literal) != identifier)) ;) (expression_statement "uVar19 = uVar19 + 1;" (assignment_expression "uVar19 = uVar19 + 1" identifier = (binary_expression "uVar19 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar23)" ( identifier )) ;) })) (labeled_statement "LAB_0029efa3:\n                    /* try { // try from 0029efc3 to 0029efc7 has its CatchHandler @ 0029f27f */\n  puVar11 = (uint *)thunk_FUN_002d94a0();" statement_identifier : comment (expression_statement "puVar11 = (uint *)thunk_FUN_002d94a0();" (assignment_expression "puVar11 = (uint *)thunk_FUN_002d94a0()" identifier = (cast_expression "(uint *)thunk_FUN_002d94a0()" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "thunk_FUN_002d94a0()" identifier (argument_list "()" ( ))))) ;)) (expression_statement "lVar21 = (long)puVar11 + (ulong)(local_6c >> 3) + 0x10;" (assignment_expression "lVar21 = (long)puVar11 + (ulong)(local_6c >> 3) + 0x10" identifier = (binary_expression "(long)puVar11 + (ulong)(local_6c >> 3) + 0x10" (binary_expression "(long)puVar11 + (ulong)(local_6c >> 3)" (cast_expression "(long)puVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (call_expression "(ulong)(local_6c >> 3)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(local_6c >> 3)" ( (binary_expression "local_6c >> 3" identifier >> number_literal) )))) + number_literal)) ;) (expression_statement "*puVar11 = uVar6;" (assignment_expression "*puVar11 = uVar6" (pointer_expression "*puVar11" * identifier) = identifier) ;) (expression_statement "puVar11[1] = param_3;" (assignment_expression "puVar11[1] = param_3" (subscript_expression "puVar11[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar11[2] = local_40;" (assignment_expression "puVar11[2] = local_40" (subscript_expression "puVar11[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar11[3] = local_70;" (assignment_expression "puVar11[3] = local_70" (subscript_expression "puVar11[3]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (uVar6 != 0) {\n    uVar19 = 0;\n    do {\n      iVar16 = *(int *)(lVar9 + uVar19 * 4);\n      if (iVar16 != 0) {\n        iVar16 = *(int *)(lVar10 + uVar19 * 4);\n      }\n      *(int *)(lVar21 + uVar19 * 4) = iVar16;\n      bVar23 = uVar6 - 1 != uVar19;\n      uVar19 = uVar19 + 1;\n    } while (bVar23);\n    lVar21 = lVar21 + ((ulong)(uVar6 - 1) + 1) * 4;\n  }" if (parenthesized_expression "(uVar6 != 0)" ( (binary_expression "uVar6 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar19 = 0;\n    do {\n      iVar16 = *(int *)(lVar9 + uVar19 * 4);\n      if (iVar16 != 0) {\n        iVar16 = *(int *)(lVar10 + uVar19 * 4);\n      }\n      *(int *)(lVar21 + uVar19 * 4) = iVar16;\n      bVar23 = uVar6 - 1 != uVar19;\n      uVar19 = uVar19 + 1;\n    } while (bVar23);\n    lVar21 = lVar21 + ((ulong)(uVar6 - 1) + 1) * 4;\n  }" { (expression_statement "uVar19 = 0;" (assignment_expression "uVar19 = 0" identifier = number_literal) ;) (do_statement "do {\n      iVar16 = *(int *)(lVar9 + uVar19 * 4);\n      if (iVar16 != 0) {\n        iVar16 = *(int *)(lVar10 + uVar19 * 4);\n      }\n      *(int *)(lVar21 + uVar19 * 4) = iVar16;\n      bVar23 = uVar6 - 1 != uVar19;\n      uVar19 = uVar19 + 1;\n    } while (bVar23);" do (compound_statement "{\n      iVar16 = *(int *)(lVar9 + uVar19 * 4);\n      if (iVar16 != 0) {\n        iVar16 = *(int *)(lVar10 + uVar19 * 4);\n      }\n      *(int *)(lVar21 + uVar19 * 4) = iVar16;\n      bVar23 = uVar6 - 1 != uVar19;\n      uVar19 = uVar19 + 1;\n    }" { (expression_statement "iVar16 = *(int *)(lVar9 + uVar19 * 4);" (assignment_expression "iVar16 = *(int *)(lVar9 + uVar19 * 4)" identifier = (pointer_expression "*(int *)(lVar9 + uVar19 * 4)" * (cast_expression "(int *)(lVar9 + uVar19 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar9 + uVar19 * 4)" ( (binary_expression "lVar9 + uVar19 * 4" identifier + (binary_expression "uVar19 * 4" identifier * number_literal)) ))))) ;) (if_statement "if (iVar16 != 0) {\n        iVar16 = *(int *)(lVar10 + uVar19 * 4);\n      }" if (parenthesized_expression "(iVar16 != 0)" ( (binary_expression "iVar16 != 0" identifier != number_literal) )) (compound_statement "{\n        iVar16 = *(int *)(lVar10 + uVar19 * 4);\n      }" { (expression_statement "iVar16 = *(int *)(lVar10 + uVar19 * 4);" (assignment_expression "iVar16 = *(int *)(lVar10 + uVar19 * 4)" identifier = (pointer_expression "*(int *)(lVar10 + uVar19 * 4)" * (cast_expression "(int *)(lVar10 + uVar19 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + uVar19 * 4)" ( (binary_expression "lVar10 + uVar19 * 4" identifier + (binary_expression "uVar19 * 4" identifier * number_literal)) ))))) ;) })) (expression_statement "*(int *)(lVar21 + uVar19 * 4) = iVar16;" (assignment_expression "*(int *)(lVar21 + uVar19 * 4) = iVar16" (pointer_expression "*(int *)(lVar21 + uVar19 * 4)" * (cast_expression "(int *)(lVar21 + uVar19 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar21 + uVar19 * 4)" ( (binary_expression "lVar21 + uVar19 * 4" identifier + (binary_expression "uVar19 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "bVar23 = uVar6 - 1 != uVar19;" (assignment_expression "bVar23 = uVar6 - 1 != uVar19" identifier = (binary_expression "uVar6 - 1 != uVar19" (binary_expression "uVar6 - 1" identifier - number_literal) != identifier)) ;) (expression_statement "uVar19 = uVar19 + 1;" (assignment_expression "uVar19 = uVar19 + 1" identifier = (binary_expression "uVar19 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar23)" ( identifier )) ;) (expression_statement "lVar21 = lVar21 + ((ulong)(uVar6 - 1) + 1) * 4;" (assignment_expression "lVar21 = lVar21 + ((ulong)(uVar6 - 1) + 1) * 4" identifier = (binary_expression "lVar21 + ((ulong)(uVar6 - 1) + 1) * 4" identifier + (binary_expression "((ulong)(uVar6 - 1) + 1) * 4" (parenthesized_expression "((ulong)(uVar6 - 1) + 1)" ( (binary_expression "(ulong)(uVar6 - 1) + 1" (call_expression "(ulong)(uVar6 - 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar6 - 1)" ( (binary_expression "uVar6 - 1" identifier - number_literal) ))) + number_literal) )) * number_literal))) ;) })) (if_statement "if (uVar7 != 0) {\n    param_1 = (long *)*param_1;\n    puVar20 = (uint *)*param_2;\n    plVar2 = param_1 + (ulong)(uVar7 - 1) + 1;\n    do {\n      uVar8 = *puVar20;\n      lVar14 = *param_1;\n      puVar12[uVar8 >> 5 & (local_6c >> 5) - 1] =\n           puVar12[uVar8 >> 5 & (local_6c >> 5) - 1] |\n           1 << ((byte)(uVar8 >> ((byte)local_70 & 0x1f)) & 0x1f) | 1 << ((byte)uVar8 & 0x1f);\n      lVar17 = ((ulong)uVar8 % (ulong)uVar6) * 4;\n      piVar1 = (int *)(lVar9 + lVar17);\n      iVar16 = *piVar1;\n      uVar4 = uVar8 & 0xfffffffe;\n      if (iVar16 == 1) {\n        uVar4 = uVar8 & 0xfffffffe | 1;\n      }\n      piVar18 = (int *)(lVar17 + lVar10);\n      iVar3 = *piVar18;\n      *piVar1 = iVar16 + -1;\n      *(uint *)(lVar21 + (ulong)((iVar3 - param_3) * 4)) = uVar4;\n      if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0029f270 to 0029f274 has its CatchHandler @ 0029f27f */\n        FUN_0017c650("../../gold/symtab.h",0x1a2,"set_dynsym_index");\n      }\n      *(int *)(lVar14 + 0x20) = iVar3;\n      param_1 = param_1 + 1;\n      puVar20 = puVar20 + 1;\n      *piVar18 = iVar3 + 1;\n    } while (plVar2 != param_1);\n  }" if (parenthesized_expression "(uVar7 != 0)" ( (binary_expression "uVar7 != 0" identifier != number_literal) )) (compound_statement "{\n    param_1 = (long *)*param_1;\n    puVar20 = (uint *)*param_2;\n    plVar2 = param_1 + (ulong)(uVar7 - 1) + 1;\n    do {\n      uVar8 = *puVar20;\n      lVar14 = *param_1;\n      puVar12[uVar8 >> 5 & (local_6c >> 5) - 1] =\n           puVar12[uVar8 >> 5 & (local_6c >> 5) - 1] |\n           1 << ((byte)(uVar8 >> ((byte)local_70 & 0x1f)) & 0x1f) | 1 << ((byte)uVar8 & 0x1f);\n      lVar17 = ((ulong)uVar8 % (ulong)uVar6) * 4;\n      piVar1 = (int *)(lVar9 + lVar17);\n      iVar16 = *piVar1;\n      uVar4 = uVar8 & 0xfffffffe;\n      if (iVar16 == 1) {\n        uVar4 = uVar8 & 0xfffffffe | 1;\n      }\n      piVar18 = (int *)(lVar17 + lVar10);\n      iVar3 = *piVar18;\n      *piVar1 = iVar16 + -1;\n      *(uint *)(lVar21 + (ulong)((iVar3 - param_3) * 4)) = uVar4;\n      if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0029f270 to 0029f274 has its CatchHandler @ 0029f27f */\n        FUN_0017c650("../../gold/symtab.h",0x1a2,"set_dynsym_index");\n      }\n      *(int *)(lVar14 + 0x20) = iVar3;\n      param_1 = param_1 + 1;\n      puVar20 = puVar20 + 1;\n      *piVar18 = iVar3 + 1;\n    } while (plVar2 != param_1);\n  }" { (expression_statement "param_1 = (long *)*param_1;" (assignment_expression "param_1 = (long *)*param_1" identifier = (cast_expression "(long *)*param_1" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "puVar20 = (uint *)*param_2;" (assignment_expression "puVar20 = (uint *)*param_2" identifier = (cast_expression "(uint *)*param_2" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (expression_statement "plVar2 = param_1 + (ulong)(uVar7 - 1) + 1;" (assignment_expression "plVar2 = param_1 + (ulong)(uVar7 - 1) + 1" identifier = (binary_expression "param_1 + (ulong)(uVar7 - 1) + 1" (binary_expression "param_1 + (ulong)(uVar7 - 1)" identifier + (call_expression "(ulong)(uVar7 - 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar7 - 1)" ( (binary_expression "uVar7 - 1" identifier - number_literal) )))) + number_literal)) ;) (do_statement "do {\n      uVar8 = *puVar20;\n      lVar14 = *param_1;\n      puVar12[uVar8 >> 5 & (local_6c >> 5) - 1] =\n           puVar12[uVar8 >> 5 & (local_6c >> 5) - 1] |\n           1 << ((byte)(uVar8 >> ((byte)local_70 & 0x1f)) & 0x1f) | 1 << ((byte)uVar8 & 0x1f);\n      lVar17 = ((ulong)uVar8 % (ulong)uVar6) * 4;\n      piVar1 = (int *)(lVar9 + lVar17);\n      iVar16 = *piVar1;\n      uVar4 = uVar8 & 0xfffffffe;\n      if (iVar16 == 1) {\n        uVar4 = uVar8 & 0xfffffffe | 1;\n      }\n      piVar18 = (int *)(lVar17 + lVar10);\n      iVar3 = *piVar18;\n      *piVar1 = iVar16 + -1;\n      *(uint *)(lVar21 + (ulong)((iVar3 - param_3) * 4)) = uVar4;\n      if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0029f270 to 0029f274 has its CatchHandler @ 0029f27f */\n        FUN_0017c650("../../gold/symtab.h",0x1a2,"set_dynsym_index");\n      }\n      *(int *)(lVar14 + 0x20) = iVar3;\n      param_1 = param_1 + 1;\n      puVar20 = puVar20 + 1;\n      *piVar18 = iVar3 + 1;\n    } while (plVar2 != param_1);" do (compound_statement "{\n      uVar8 = *puVar20;\n      lVar14 = *param_1;\n      puVar12[uVar8 >> 5 & (local_6c >> 5) - 1] =\n           puVar12[uVar8 >> 5 & (local_6c >> 5) - 1] |\n           1 << ((byte)(uVar8 >> ((byte)local_70 & 0x1f)) & 0x1f) | 1 << ((byte)uVar8 & 0x1f);\n      lVar17 = ((ulong)uVar8 % (ulong)uVar6) * 4;\n      piVar1 = (int *)(lVar9 + lVar17);\n      iVar16 = *piVar1;\n      uVar4 = uVar8 & 0xfffffffe;\n      if (iVar16 == 1) {\n        uVar4 = uVar8 & 0xfffffffe | 1;\n      }\n      piVar18 = (int *)(lVar17 + lVar10);\n      iVar3 = *piVar18;\n      *piVar1 = iVar16 + -1;\n      *(uint *)(lVar21 + (ulong)((iVar3 - param_3) * 4)) = uVar4;\n      if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0029f270 to 0029f274 has its CatchHandler @ 0029f27f */\n        FUN_0017c650("../../gold/symtab.h",0x1a2,"set_dynsym_index");\n      }\n      *(int *)(lVar14 + 0x20) = iVar3;\n      param_1 = param_1 + 1;\n      puVar20 = puVar20 + 1;\n      *piVar18 = iVar3 + 1;\n    }" { (expression_statement "uVar8 = *puVar20;" (assignment_expression "uVar8 = *puVar20" identifier = (pointer_expression "*puVar20" * identifier)) ;) (expression_statement "lVar14 = *param_1;" (assignment_expression "lVar14 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "puVar12[uVar8 >> 5 & (local_6c >> 5) - 1] =\n           puVar12[uVar8 >> 5 & (local_6c >> 5) - 1] |\n           1 << ((byte)(uVar8 >> ((byte)local_70 & 0x1f)) & 0x1f) | 1 << ((byte)uVar8 & 0x1f);" (assignment_expression "puVar12[uVar8 >> 5 & (local_6c >> 5) - 1] =\n           puVar12[uVar8 >> 5 & (local_6c >> 5) - 1] |\n           1 << ((byte)(uVar8 >> ((byte)local_70 & 0x1f)) & 0x1f) | 1 << ((byte)uVar8 & 0x1f)" (subscript_expression "puVar12[uVar8 >> 5 & (local_6c >> 5) - 1]" identifier [ (binary_expression "uVar8 >> 5 & (local_6c >> 5) - 1" (binary_expression "uVar8 >> 5" identifier >> number_literal) & (binary_expression "(local_6c >> 5) - 1" (parenthesized_expression "(local_6c >> 5)" ( (binary_expression "local_6c >> 5" identifier >> number_literal) )) - number_literal)) ]) = (binary_expression "puVar12[uVar8 >> 5 & (local_6c >> 5) - 1] |\n           1 << ((byte)(uVar8 >> ((byte)local_70 & 0x1f)) & 0x1f) | 1 << ((byte)uVar8 & 0x1f)" (binary_expression "puVar12[uVar8 >> 5 & (local_6c >> 5) - 1] |\n           1 << ((byte)(uVar8 >> ((byte)local_70 & 0x1f)) & 0x1f)" (subscript_expression "puVar12[uVar8 >> 5 & (local_6c >> 5) - 1]" identifier [ (binary_expression "uVar8 >> 5 & (local_6c >> 5) - 1" (binary_expression "uVar8 >> 5" identifier >> number_literal) & (binary_expression "(local_6c >> 5) - 1" (parenthesized_expression "(local_6c >> 5)" ( (binary_expression "local_6c >> 5" identifier >> number_literal) )) - number_literal)) ]) | (binary_expression "1 << ((byte)(uVar8 >> ((byte)local_70 & 0x1f)) & 0x1f)" number_literal << (parenthesized_expression "((byte)(uVar8 >> ((byte)local_70 & 0x1f)) & 0x1f)" ( (binary_expression "(byte)(uVar8 >> ((byte)local_70 & 0x1f)) & 0x1f" (call_expression "(byte)(uVar8 >> ((byte)local_70 & 0x1f))" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar8 >> ((byte)local_70 & 0x1f))" ( (binary_expression "uVar8 >> ((byte)local_70 & 0x1f)" identifier >> (parenthesized_expression "((byte)local_70 & 0x1f)" ( (binary_expression "(byte)local_70 & 0x1f" (cast_expression "(byte)local_70" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))) & number_literal) )))) | (binary_expression "1 << ((byte)uVar8 & 0x1f)" number_literal << (parenthesized_expression "((byte)uVar8 & 0x1f)" ( (binary_expression "(byte)uVar8 & 0x1f" (cast_expression "(byte)uVar8" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))))) ;) (expression_statement "lVar17 = ((ulong)uVar8 % (ulong)uVar6) * 4;" (assignment_expression "lVar17 = ((ulong)uVar8 % (ulong)uVar6) * 4" identifier = (binary_expression "((ulong)uVar8 % (ulong)uVar6) * 4" (parenthesized_expression "((ulong)uVar8 % (ulong)uVar6)" ( (binary_expression "(ulong)uVar8 % (ulong)uVar6" (cast_expression "(ulong)uVar8" ( (type_descriptor "ulong" type_identifier) ) identifier) % (cast_expression "(ulong)uVar6" ( (type_descriptor "ulong" type_identifier) ) identifier)) )) * number_literal)) ;) (expression_statement "piVar1 = (int *)(lVar9 + lVar17);" (assignment_expression "piVar1 = (int *)(lVar9 + lVar17)" identifier = (cast_expression "(int *)(lVar9 + lVar17)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar9 + lVar17)" ( (binary_expression "lVar9 + lVar17" identifier + identifier) )))) ;) (expression_statement "iVar16 = *piVar1;" (assignment_expression "iVar16 = *piVar1" identifier = (pointer_expression "*piVar1" * identifier)) ;) (expression_statement "uVar4 = uVar8 & 0xfffffffe;" (assignment_expression "uVar4 = uVar8 & 0xfffffffe" identifier = (binary_expression "uVar8 & 0xfffffffe" identifier & number_literal)) ;) (if_statement "if (iVar16 == 1) {\n        uVar4 = uVar8 & 0xfffffffe | 1;\n      }" if (parenthesized_expression "(iVar16 == 1)" ( (binary_expression "iVar16 == 1" identifier == number_literal) )) (compound_statement "{\n        uVar4 = uVar8 & 0xfffffffe | 1;\n      }" { (expression_statement "uVar4 = uVar8 & 0xfffffffe | 1;" (assignment_expression "uVar4 = uVar8 & 0xfffffffe | 1" identifier = (binary_expression "uVar8 & 0xfffffffe | 1" (binary_expression "uVar8 & 0xfffffffe" identifier & number_literal) | number_literal)) ;) })) (expression_statement "piVar18 = (int *)(lVar17 + lVar10);" (assignment_expression "piVar18 = (int *)(lVar17 + lVar10)" identifier = (cast_expression "(int *)(lVar17 + lVar10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar17 + lVar10)" ( (binary_expression "lVar17 + lVar10" identifier + identifier) )))) ;) (expression_statement "iVar3 = *piVar18;" (assignment_expression "iVar3 = *piVar18" identifier = (pointer_expression "*piVar18" * identifier)) ;) (expression_statement "*piVar1 = iVar16 + -1;" (assignment_expression "*piVar1 = iVar16 + -1" (pointer_expression "*piVar1" * identifier) = (binary_expression "iVar16 + -1" identifier + number_literal)) ;) (expression_statement "*(uint *)(lVar21 + (ulong)((iVar3 - param_3) * 4)) = uVar4;" (assignment_expression "*(uint *)(lVar21 + (ulong)((iVar3 - param_3) * 4)) = uVar4" (pointer_expression "*(uint *)(lVar21 + (ulong)((iVar3 - param_3) * 4))" * (cast_expression "(uint *)(lVar21 + (ulong)((iVar3 - param_3) * 4))" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar21 + (ulong)((iVar3 - param_3) * 4))" ( (binary_expression "lVar21 + (ulong)((iVar3 - param_3) * 4)" identifier + (call_expression "(ulong)((iVar3 - param_3) * 4)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((iVar3 - param_3) * 4)" ( (binary_expression "(iVar3 - param_3) * 4" (parenthesized_expression "(iVar3 - param_3)" ( (binary_expression "iVar3 - param_3" identifier - identifier) )) * number_literal) )))) )))) = identifier) ;) (if_statement "if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0029f270 to 0029f274 has its CatchHandler @ 0029f27f */\n        FUN_0017c650("../../gold/symtab.h",0x1a2,"set_dynsym_index");\n      }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0029f270 to 0029f274 has its CatchHandler @ 0029f27f */\n        FUN_0017c650("../../gold/symtab.h",0x1a2,"set_dynsym_index");\n      }" { comment comment (expression_statement "FUN_0017c650("../../gold/symtab.h",0x1a2,"set_dynsym_index");" (call_expression "FUN_0017c650("../../gold/symtab.h",0x1a2,"set_dynsym_index")" identifier (argument_list "("../../gold/symtab.h",0x1a2,"set_dynsym_index")" ( (string_literal ""../../gold/symtab.h"" " string_content ") , number_literal , (string_literal ""set_dynsym_index"" " string_content ") ))) ;) })) (expression_statement "*(int *)(lVar14 + 0x20) = iVar3;" (assignment_expression "*(int *)(lVar14 + 0x20) = iVar3" (pointer_expression "*(int *)(lVar14 + 0x20)" * (cast_expression "(int *)(lVar14 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar14 + 0x20)" ( (binary_expression "lVar14 + 0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) (expression_statement "puVar20 = puVar20 + 1;" (assignment_expression "puVar20 = puVar20 + 1" identifier = (binary_expression "puVar20 + 1" identifier + number_literal)) ;) (expression_statement "*piVar18 = iVar3 + 1;" (assignment_expression "*piVar18 = iVar3 + 1" (pointer_expression "*piVar18" * identifier) = (binary_expression "iVar3 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(plVar2 != param_1)" ( (binary_expression "plVar2 != param_1" identifier != identifier) )) ;) })) (if_statement "if (local_40 != 0) {\n    uVar19 = 0;\n    do {\n      puVar11[uVar19 + 4] = puVar12[uVar19];\n      bVar23 = uVar19 != local_40 - 1;\n      uVar19 = uVar19 + 1;\n    } while (bVar23);\n  }" if (parenthesized_expression "(local_40 != 0)" ( (binary_expression "local_40 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar19 = 0;\n    do {\n      puVar11[uVar19 + 4] = puVar12[uVar19];\n      bVar23 = uVar19 != local_40 - 1;\n      uVar19 = uVar19 + 1;\n    } while (bVar23);\n  }" { (expression_statement "uVar19 = 0;" (assignment_expression "uVar19 = 0" identifier = number_literal) ;) (do_statement "do {\n      puVar11[uVar19 + 4] = puVar12[uVar19];\n      bVar23 = uVar19 != local_40 - 1;\n      uVar19 = uVar19 + 1;\n    } while (bVar23);" do (compound_statement "{\n      puVar11[uVar19 + 4] = puVar12[uVar19];\n      bVar23 = uVar19 != local_40 - 1;\n      uVar19 = uVar19 + 1;\n    }" { (expression_statement "puVar11[uVar19 + 4] = puVar12[uVar19];" (assignment_expression "puVar11[uVar19 + 4] = puVar12[uVar19]" (subscript_expression "puVar11[uVar19 + 4]" identifier [ (binary_expression "uVar19 + 4" identifier + number_literal) ]) = (subscript_expression "puVar12[uVar19]" identifier [ identifier ])) ;) (expression_statement "bVar23 = uVar19 != local_40 - 1;" (assignment_expression "bVar23 = uVar19 != local_40 - 1" identifier = (binary_expression "uVar19 != local_40 - 1" identifier != (binary_expression "local_40 - 1" identifier - number_literal))) ;) (expression_statement "uVar19 = uVar19 + 1;" (assignment_expression "uVar19 = uVar19 + 1" identifier = (binary_expression "uVar19 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar23)" ( identifier )) ;) })) (expression_statement "*param_5 = (local_6c >> 3) + (uVar6 + 4 + uVar7) * 4;" (assignment_expression "*param_5 = (local_6c >> 3) + (uVar6 + 4 + uVar7) * 4" (pointer_expression "*param_5" * identifier) = (binary_expression "(local_6c >> 3) + (uVar6 + 4 + uVar7) * 4" (parenthesized_expression "(local_6c >> 3)" ( (binary_expression "local_6c >> 3" identifier >> number_literal) )) + (binary_expression "(uVar6 + 4 + uVar7) * 4" (parenthesized_expression "(uVar6 + 4 + uVar7)" ( (binary_expression "uVar6 + 4 + uVar7" (binary_expression "uVar6 + 4" identifier + number_literal) + identifier) )) * number_literal))) ;) (expression_statement "*param_4 = puVar11;" (assignment_expression "*param_4 = puVar11" (pointer_expression "*param_4" * identifier) = identifier) ;) (if_statement "if (lVar10 != 0) {\n    FUN_002dac70(lVar10);\n  }" if (parenthesized_expression "(lVar10 != 0)" ( (binary_expression "lVar10 != 0" identifier != number_literal) )) (compound_statement "{\n    FUN_002dac70(lVar10);\n  }" { (expression_statement "FUN_002dac70(lVar10);" (call_expression "FUN_002dac70(lVar10)" identifier (argument_list "(lVar10)" ( identifier ))) ;) })) (if_statement "if (lVar9 != 0) {\n    FUN_002dac70(lVar9);\n  }" if (parenthesized_expression "(lVar9 != 0)" ( (binary_expression "lVar9 != 0" identifier != number_literal) )) (compound_statement "{\n    FUN_002dac70(lVar9);\n  }" { (expression_statement "FUN_002dac70(lVar9);" (call_expression "FUN_002dac70(lVar9)" identifier (argument_list "(lVar9)" ( identifier ))) ;) })) (if_statement "if (puVar12 == (undefined4 *)0x0) {\n    return;\n  }" if (parenthesized_expression "(puVar12 == (undefined4 *)0x0)" ( (binary_expression "puVar12 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "FUN_002dac70(puVar12);" (call_expression "FUN_002dac70(puVar12)" identifier (argument_list "(puVar12)" ( identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit "/* DWARF original name: sized_create_gnu_hash_table<32, false> */\n\nvoid gold::Dynobj::sized_create_gnu_hash_table<32,_false>\n               (vector<gold::Symbol*,_std::allocator<gold::Symbol*>_> *hashed_dynsyms,\n               vector<unsigned_int,_std::allocator<unsigned_int>_> *dynsym_hashvals,\n               uint unhashed_dynsym_count,uchar **pphash,uint *phashlen)\n\n{\n  int *piVar1;\n  pointer ppSVar2;\n  pointer puVar3;\n  Symbol *pSVar4;\n  uint uVar5;\n  byte bVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  void *pvVar10;\n  void *pvVar11;\n  uint *puVar12;\n  undefined4 *puVar13;\n  undefined4 *puVar14;\n  uchar *puVar15;\n  long lVar16;\n  uint uVar17;\n  int iVar18;\n  long lVar19;\n  uint *puVar20;\n  ulong uVar21;\n  pointer ppSVar22;\n  uint *puVar23;\n  ulong uVar24;\n  ulong uVar25;\n  bool bVar26;\n  uint local_70;\n  uint local_6c;\n  uint local_40;\n  \n  if ((hashed_dynsyms->super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>)._M_impl.\n      _M_finish ==\n      (hashed_dynsyms->super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>)._M_impl.\n      _M_start) {\n    puVar15 = (uchar *)operator_new__(0x18);\n    puVar15[0] = '\x01';\n    puVar15[1] = '\0';\n    puVar15[2] = '\0';\n    puVar15[3] = '\0';\n    *(uint *)(puVar15 + 4) = unhashed_dynsym_count;\n    puVar15[8] = '\x01';\n    puVar15[9] = '\0';\n    puVar15[10] = '\0';\n    puVar15[0xb] = '\0';\n    puVar15[0xc] = '\0';\n    puVar15[0xd] = '\0';\n    puVar15[0xe] = '\0';\n    puVar15[0xf] = '\0';\n    *phashlen = 0x18;\n    puVar15[0x10] = '\0';\n    puVar15[0x11] = '\0';\n    puVar15[0x12] = '\0';\n    puVar15[0x13] = '\0';\n    puVar15[0x14] = '\0';\n    puVar15[0x15] = '\0';\n    puVar15[0x16] = '\0';\n    puVar15[0x17] = '\0';\n    *pphash = puVar15;\n    return;\n  }\n  uVar7 = compute_bucket_count(dynsym_hashvals,true);\n  uVar8 = (uint)((long)(hashed_dynsyms->\n                       super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>)._M_impl.\n                       _M_finish -\n                 (long)(hashed_dynsyms->\n                       super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>)._M_impl.\n                       _M_start >> 3);\n  uVar9 = uVar8 >> 1;\n  if (uVar9 == 0) {\nLAB_0029f178:\n    local_40 = 1;\n    uVar24 = 4;\n    uVar21 = 1;\n    local_6c = 0x20;\n    local_70 = 5;\nLAB_0029f19a:\n    puVar13 = (undefined4 *)operator_new(uVar24);\n    puVar14 = puVar13;\n    do {\n      *puVar14 = 0;\n      puVar14 = puVar14 + 1;\n    } while (puVar14 != puVar13 + uVar21);\n    if (uVar7 != 0) goto LAB_0029eee8;\nLAB_0029f1cc:\n    pvVar11 = (void *)0x0;\n    pvVar10 = (void *)0x0;\n    if (uVar8 == 0) goto LAB_0029efa3;\nLAB_0029ef4c:\n    lVar16 = 0;\n    puVar3 = (dynsym_hashvals->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>).\n             _M_impl._M_start;\n    do {\n      puVar12 = puVar3 + lVar16;\n      lVar16 = lVar16 + 1;\n      piVar1 = (int *)((long)pvVar10 + ((ulong)*puVar12 % (ulong)uVar7) * 4);\n      *piVar1 = *piVar1 + 1;\n    } while ((uint)lVar16 < uVar8);\n  }\n  else {\n    uVar5 = 1;\n    do {\n      uVar17 = uVar5;\n      uVar9 = uVar9 >> 1;\n      uVar5 = uVar17 + 1;\n    } while (uVar9 != 0);\n    if (uVar17 + 1 < 3) goto LAB_0029f178;\n    bVar6 = (byte)(uVar17 - 1);\n    if ((uVar8 >> (uVar17 - 1 & 0x1f) & 1) == 0) {\n      local_70 = uVar17 + 3;\n      bVar6 = (char)uVar17 - 2;\n    }\n    else {\n      local_70 = uVar17 + 4;\n    }\n    puVar13 = (undefined4 *)0x0;\n    local_6c = 1 << ((byte)local_70 & 0x1f);\n    local_40 = 1 << (bVar6 & 0x1f);\n    uVar21 = (ulong)local_40;\n    if (local_40 != 0) {\n      uVar24 = uVar21 * 4;\n      goto LAB_0029f19a;\n    }\n    if (uVar7 == 0) goto LAB_0029f1cc;\nLAB_0029eee8:\n    uVar24 = (ulong)uVar7 * 4;\n                    /* try { // try from 0029eef8 to 0029eefc has its CatchHandler @ 0029f275 */\n    pvVar10 = operator_new(uVar24);\n    uVar21 = 0;\n    do {\n      uVar25 = uVar21;\n      *(undefined4 *)((long)pvVar10 + uVar25 * 4) = 0;\n      uVar21 = uVar25 + 1;\n    } while ((ulong)uVar7 != uVar25 + 1);\n                    /* try { // try from 0029ef21 to 0029ef25 has its CatchHandler @ 0029f27a */\n    pvVar11 = operator_new(uVar24);\n    uVar24 = 0;\n    do {\n      *(undefined4 *)((long)pvVar11 + uVar24 * 4) = 0;\n      bVar26 = uVar25 != uVar24;\n      uVar24 = uVar24 + 1;\n    } while (bVar26);\n    if (uVar8 != 0) goto LAB_0029ef4c;\n  }\n  if (uVar7 != 0) {\n    uVar24 = 0;\n    uVar9 = unhashed_dynsym_count;\n    do {\n      *(uint *)((long)pvVar11 + uVar24 * 4) = uVar9;\n      uVar9 = uVar9 + *(int *)((long)pvVar10 + uVar24 * 4);\n      bVar26 = uVar7 - 1 != uVar24;\n      uVar24 = uVar24 + 1;\n    } while (bVar26);\n  }\nLAB_0029efa3:\n  uVar9 = (local_6c >> 3) + (uVar7 + 4 + uVar8) * 4;\n                    /* try { // try from 0029efc3 to 0029efc7 has its CatchHandler @ 0029f27f */\n  puVar12 = (uint *)operator_new__((ulong)uVar9);\n  lVar16 = (long)puVar12 + (ulong)(local_6c >> 3) + 0x10;\n  *puVar12 = uVar7;\n  puVar12[1] = unhashed_dynsym_count;\n  puVar12[2] = local_40;\n  puVar12[3] = local_70;\n  if (uVar7 != 0) {\n    uVar24 = 0;\n    do {\n      iVar18 = *(int *)((long)pvVar10 + uVar24 * 4);\n      if (iVar18 != 0) {\n        iVar18 = *(int *)((long)pvVar11 + uVar24 * 4);\n      }\n      *(int *)(lVar16 + uVar24 * 4) = iVar18;\n      bVar26 = uVar7 - 1 != uVar24;\n      uVar24 = uVar24 + 1;\n    } while (bVar26);\n    lVar16 = lVar16 + ((ulong)(uVar7 - 1) + 1) * 4;\n  }\n  if (uVar8 != 0) {\n    ppSVar22 = (hashed_dynsyms->super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>).\n               _M_impl._M_start;\n    puVar23 = (dynsym_hashvals->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>).\n              _M_impl._M_start;\n    ppSVar2 = ppSVar22 + (ulong)(uVar8 - 1) + 1;\n    do {\n      uVar8 = *puVar23;\n      pSVar4 = *ppSVar22;\n      puVar13[uVar8 >> 5 & (local_6c >> 5) - 1] =\n           puVar13[uVar8 >> 5 & (local_6c >> 5) - 1] |\n           1 << ((byte)(uVar8 >> ((byte)local_70 & 0x1f)) & 0x1f) | 1 << ((byte)uVar8 & 0x1f);\n      lVar19 = ((ulong)uVar8 % (ulong)uVar7) * 4;\n      piVar1 = (int *)((long)pvVar10 + lVar19);\n      iVar18 = *piVar1;\n      uVar5 = uVar8 & 0xfffffffe;\n      if (iVar18 == 1) {\n        uVar5 = uVar8 & 0xfffffffe | 1;\n      }\n      puVar20 = (uint *)(lVar19 + (long)pvVar11);\n      uVar8 = *puVar20;\n      *piVar1 = iVar18 + -1;\n      *(uint *)(lVar16 + (ulong)((uVar8 - unhashed_dynsym_count) * 4)) = uVar5;\n      if (uVar8 == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0029f270 to 0029f274 has its CatchHandler @ 0029f27f */\n        do_gold_unreachable("../../gold/symtab.h",0x1a2,"set_dynsym_index");\n      }\n      pSVar4->dynsym_index_ = uVar8;\n      ppSVar22 = ppSVar22 + 1;\n      puVar23 = puVar23 + 1;\n      *puVar20 = uVar8 + 1;\n    } while (ppSVar2 != ppSVar22);\n  }\n  if (local_40 != 0) {\n    uVar24 = 0;\n    do {\n      puVar12[uVar24 + 4] = puVar13[uVar24];\n      bVar26 = uVar24 != local_40 - 1;\n      uVar24 = uVar24 + 1;\n    } while (bVar26);\n  }\n  *phashlen = uVar9;\n  *pphash = (uchar *)puVar12;\n  if (pvVar11 != (void *)0x0) {\n    operator_delete(pvVar11);\n  }\n  if (pvVar10 != (void *)0x0) {\n    operator_delete(pvVar10);\n  }\n  if (puVar13 == (undefined4 *)0x0) {\n    return;\n  }\n  operator_delete(puVar13);\n  return;\n}\n\n" comment (declaration "void gold::Dynobj::sized_create_gnu_hash_table<32,_false>\n               (vector<gold::Symbol*,_std::allocator<gold::Symbol*>_> *hashed_dynsyms,\n               vector<unsigned_int,_std::allocator<unsigned_int>_> *dynsym_hashvals,\n               uint unhashed_dynsym_count,uchar **pphash,uint *phashlen)\n\n{\n  int *piVar1;" primitive_type (ERROR "gold::Dynobj::" identifier : : identifier : :) identifier (ERROR "<32" < number_literal) , (ERROR "_false>\n               (vector<gold::Symbol*,_std::allocator<gold::Symbol*>_> *hashed_dynsyms,\n               vector<unsigned_int,_std::allocator<unsigned_int>_> *dynsym_hashvals,\n               uint unhashed_dynsym_count,uchar **pphash,uint *phashlen)\n\n{\n  int" (function_declarator "_false>\n               (vector<gold::Symbol*,_std::allocator<gold::Symbol*>_> *hashed_dynsyms,\n               vector<unsigned_int,_std::allocator<unsigned_int>_> *dynsym_hashvals,\n               uint unhashed_dynsym_count,uchar **pphash,uint *phashlen)" identifier (ERROR ">" >) (parameter_list "(vector<gold::Symbol*,_std::allocator<gold::Symbol*>_> *hashed_dynsyms,\n               vector<unsigned_int,_std::allocator<unsigned_int>_> *dynsym_hashvals,\n               uint unhashed_dynsym_count,uchar **pphash,uint *phashlen)" ( (parameter_declaration "vector<gold::Symbol*" type_identifier (ERROR "<gold::Symbol" < identifier : : identifier) (abstract_pointer_declarator "*" *)) , (parameter_declaration "_std::allocator<gold::Symbol*>_> *hashed_dynsyms" type_identifier (ERROR "::allocator<gold::Symbol*>_>" : : identifier < identifier : : identifier * > identifier >) (pointer_declarator "*hashed_dynsyms" * identifier)) , (parameter_declaration "vector<unsigned_int" type_identifier (ERROR "<" <) identifier) , (parameter_declaration "_std::allocator<unsigned_int>_> *dynsym_hashvals" type_identifier (ERROR "::allocator<unsigned_int>_>" : : identifier < identifier > identifier >) (pointer_declarator "*dynsym_hashvals" * identifier)) , (parameter_declaration "uint unhashed_dynsym_count" type_identifier identifier) , (parameter_declaration "uchar **pphash" type_identifier (pointer_declarator "**pphash" * (pointer_declarator "*pphash" * identifier))) , (parameter_declaration "uint *phashlen" type_identifier (pointer_declarator "*phashlen" * identifier)) ))) { primitive_type) (pointer_declarator "*piVar1" * identifier) ;) (declaration "pointer ppSVar2;" type_identifier identifier ;) (declaration "pointer puVar3;" type_identifier identifier ;) (declaration "Symbol *pSVar4;" type_identifier (pointer_declarator "*pSVar4" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "byte bVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "void *pvVar10;" primitive_type (pointer_declarator "*pvVar10" * identifier) ;) (declaration "void *pvVar11;" primitive_type (pointer_declarator "*pvVar11" * identifier) ;) (declaration "uint *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "undefined4 *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "undefined4 *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "uchar *puVar15;" type_identifier (pointer_declarator "*puVar15" * identifier) ;) (declaration "long lVar16;" (sized_type_specifier "long" long) identifier ;) (declaration "uint uVar17;" type_identifier identifier ;) (declaration "int iVar18;" primitive_type identifier ;) (declaration "long lVar19;" (sized_type_specifier "long" long) identifier ;) (declaration "uint *puVar20;" type_identifier (pointer_declarator "*puVar20" * identifier) ;) (declaration "ulong uVar21;" type_identifier identifier ;) (declaration "pointer ppSVar22;" type_identifier identifier ;) (declaration "uint *puVar23;" type_identifier (pointer_declarator "*puVar23" * identifier) ;) (declaration "ulong uVar24;" type_identifier identifier ;) (declaration "ulong uVar25;" type_identifier identifier ;) (declaration "bool bVar26;" primitive_type identifier ;) (declaration "uint local_70;" type_identifier identifier ;) (declaration "uint local_6c;" type_identifier identifier ;) (declaration "uint local_40;" type_identifier identifier ;) (if_statement "if ((hashed_dynsyms->super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>)._M_impl.\n      _M_finish ==\n      (hashed_dynsyms->super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>)._M_impl.\n      _M_start) {\n    puVar15 = (uchar *)operator_new__(0x18);\n    puVar15[0] = '\x01';\n    puVar15[1] = '\0';\n    puVar15[2] = '\0';\n    puVar15[3] = '\0';\n    *(uint *)(puVar15 + 4) = unhashed_dynsym_count;\n    puVar15[8] = '\x01';\n    puVar15[9] = '\0';\n    puVar15[10] = '\0';\n    puVar15[0xb] = '\0';\n    puVar15[0xc] = '\0';\n    puVar15[0xd] = '\0';\n    puVar15[0xe] = '\0';\n    puVar15[0xf] = '\0';\n    *phashlen = 0x18;\n    puVar15[0x10] = '\0';\n    puVar15[0x11] = '\0';\n    puVar15[0x12] = '\0';\n    puVar15[0x13] = '\0';\n    puVar15[0x14] = '\0';\n    puVar15[0x15] = '\0';\n    puVar15[0x16] = '\0';\n    puVar15[0x17] = '\0';\n    *pphash = puVar15;\n    return;\n  }" if (parenthesized_expression "((hashed_dynsyms->super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>)._M_impl.\n      _M_finish ==\n      (hashed_dynsyms->super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>)._M_impl.\n      _M_start)" ( (binary_expression "(hashed_dynsyms->super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>)._M_impl.\n      _M_finish ==\n      (hashed_dynsyms->super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>)._M_impl.\n      _M_start" (field_expression "(hashed_dynsyms->super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>)._M_impl.\n      _M_finish" (field_expression "(hashed_dynsyms->super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>)._M_impl" (parenthesized_expression "(hashed_dynsyms->super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>)" ( (binary_expression "hashed_dynsyms->super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>" (binary_expression "hashed_dynsyms->super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_" (binary_expression "hashed_dynsyms->super__Vector_base<gold::Symbol*,_std::allocator<gold" (binary_expression "hashed_dynsyms->super__Vector_base<gold::Symbol*,_std" (binary_expression "hashed_dynsyms->super__Vector_base<gold" (field_expression "hashed_dynsyms->super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::Symbol" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Symbol" : : identifier) * (ERROR ">" >) identifier) > identifier) )) . field_identifier) . field_identifier) == (field_expression "(hashed_dynsyms->super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>)._M_impl.\n      _M_start" (field_expression "(hashed_dynsyms->super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>)._M_impl" (parenthesized_expression "(hashed_dynsyms->super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>)" ( (binary_expression "hashed_dynsyms->super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>" (binary_expression "hashed_dynsyms->super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_" (binary_expression "hashed_dynsyms->super__Vector_base<gold::Symbol*,_std::allocator<gold" (binary_expression "hashed_dynsyms->super__Vector_base<gold::Symbol*,_std" (binary_expression "hashed_dynsyms->super__Vector_base<gold" (field_expression "hashed_dynsyms->super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::Symbol" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Symbol" : : identifier) * (ERROR ">" >) identifier) > identifier) )) . field_identifier) . field_identifier)) )) (compound_statement "{\n    puVar15 = (uchar *)operator_new__(0x18);\n    puVar15[0] = '\x01';\n    puVar15[1] = '\0';\n    puVar15[2] = '\0';\n    puVar15[3] = '\0';\n    *(uint *)(puVar15 + 4) = unhashed_dynsym_count;\n    puVar15[8] = '\x01';\n    puVar15[9] = '\0';\n    puVar15[10] = '\0';\n    puVar15[0xb] = '\0';\n    puVar15[0xc] = '\0';\n    puVar15[0xd] = '\0';\n    puVar15[0xe] = '\0';\n    puVar15[0xf] = '\0';\n    *phashlen = 0x18;\n    puVar15[0x10] = '\0';\n    puVar15[0x11] = '\0';\n    puVar15[0x12] = '\0';\n    puVar15[0x13] = '\0';\n    puVar15[0x14] = '\0';\n    puVar15[0x15] = '\0';\n    puVar15[0x16] = '\0';\n    puVar15[0x17] = '\0';\n    *pphash = puVar15;\n    return;\n  }" { (expression_statement "puVar15 = (uchar *)operator_new__(0x18);" (assignment_expression "puVar15 = (uchar *)operator_new__(0x18)" identifier = (cast_expression "(uchar *)operator_new__(0x18)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new__(0x18)" identifier (argument_list "(0x18)" ( number_literal ))))) ;) (expression_statement "puVar15[0] = '\x01';" (assignment_expression "puVar15[0] = '\x01'" (subscript_expression "puVar15[0]" identifier [ number_literal ]) = (char_literal "'\x01'" ' escape_sequence ')) ;) (expression_statement "puVar15[1] = '\0';" (assignment_expression "puVar15[1] = '\0'" (subscript_expression "puVar15[1]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "puVar15[2] = '\0';" (assignment_expression "puVar15[2] = '\0'" (subscript_expression "puVar15[2]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "puVar15[3] = '\0';" (assignment_expression "puVar15[3] = '\0'" (subscript_expression "puVar15[3]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "*(uint *)(puVar15 + 4) = unhashed_dynsym_count;" (assignment_expression "*(uint *)(puVar15 + 4) = unhashed_dynsym_count" (pointer_expression "*(uint *)(puVar15 + 4)" * (cast_expression "(uint *)(puVar15 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar15 + 4)" ( (binary_expression "puVar15 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar15[8] = '\x01';" (assignment_expression "puVar15[8] = '\x01'" (subscript_expression "puVar15[8]" identifier [ number_literal ]) = (char_literal "'\x01'" ' escape_sequence ')) ;) (expression_statement "puVar15[9] = '\0';" (assignment_expression "puVar15[9] = '\0'" (subscript_expression "puVar15[9]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "puVar15[10] = '\0';" (assignment_expression "puVar15[10] = '\0'" (subscript_expression "puVar15[10]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "puVar15[0xb] = '\0';" (assignment_expression "puVar15[0xb] = '\0'" (subscript_expression "puVar15[0xb]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "puVar15[0xc] = '\0';" (assignment_expression "puVar15[0xc] = '\0'" (subscript_expression "puVar15[0xc]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "puVar15[0xd] = '\0';" (assignment_expression "puVar15[0xd] = '\0'" (subscript_expression "puVar15[0xd]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "puVar15[0xe] = '\0';" (assignment_expression "puVar15[0xe] = '\0'" (subscript_expression "puVar15[0xe]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "puVar15[0xf] = '\0';" (assignment_expression "puVar15[0xf] = '\0'" (subscript_expression "puVar15[0xf]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "*phashlen = 0x18;" (assignment_expression "*phashlen = 0x18" (pointer_expression "*phashlen" * identifier) = number_literal) ;) (expression_statement "puVar15[0x10] = '\0';" (assignment_expression "puVar15[0x10] = '\0'" (subscript_expression "puVar15[0x10]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "puVar15[0x11] = '\0';" (assignment_expression "puVar15[0x11] = '\0'" (subscript_expression "puVar15[0x11]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "puVar15[0x12] = '\0';" (assignment_expression "puVar15[0x12] = '\0'" (subscript_expression "puVar15[0x12]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "puVar15[0x13] = '\0';" (assignment_expression "puVar15[0x13] = '\0'" (subscript_expression "puVar15[0x13]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "puVar15[0x14] = '\0';" (assignment_expression "puVar15[0x14] = '\0'" (subscript_expression "puVar15[0x14]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "puVar15[0x15] = '\0';" (assignment_expression "puVar15[0x15] = '\0'" (subscript_expression "puVar15[0x15]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "puVar15[0x16] = '\0';" (assignment_expression "puVar15[0x16] = '\0'" (subscript_expression "puVar15[0x16]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "puVar15[0x17] = '\0';" (assignment_expression "puVar15[0x17] = '\0'" (subscript_expression "puVar15[0x17]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "*pphash = puVar15;" (assignment_expression "*pphash = puVar15" (pointer_expression "*pphash" * identifier) = identifier) ;) (return_statement "return;" return ;) })) (expression_statement "uVar7 = compute_bucket_count(dynsym_hashvals,true);" (assignment_expression "uVar7 = compute_bucket_count(dynsym_hashvals,true)" identifier = (call_expression "compute_bucket_count(dynsym_hashvals,true)" identifier (argument_list "(dynsym_hashvals,true)" ( identifier , true )))) ;) (expression_statement "uVar8 = (uint)((long)(hashed_dynsyms->\n                       super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>)._M_impl.\n                       _M_finish -\n                 (long)(hashed_dynsyms->\n                       super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>)._M_impl.\n                       _M_start >> 3);" (assignment_expression "uVar8 = (uint)((long)(hashed_dynsyms->\n                       super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>)._M_impl.\n                       _M_finish -\n                 (long)(hashed_dynsyms->\n                       super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>)._M_impl.\n                       _M_start >> 3)" identifier = (call_expression "(uint)((long)(hashed_dynsyms->\n                       super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>)._M_impl.\n                       _M_finish -\n                 (long)(hashed_dynsyms->\n                       super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>)._M_impl.\n                       _M_start >> 3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((long)(hashed_dynsyms->\n                       super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>)._M_impl.\n                       _M_finish -\n                 (long)(hashed_dynsyms->\n                       super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>)._M_impl.\n                       _M_start >> 3)" ( (binary_expression "(long)(hashed_dynsyms->\n                       super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>)._M_impl.\n                       _M_finish -\n                 (long)(hashed_dynsyms->\n                       super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>)._M_impl.\n                       _M_start >> 3" (binary_expression "(long)(hashed_dynsyms->\n                       super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>)._M_impl.\n                       _M_finish -\n                 (long)(hashed_dynsyms->\n                       super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>)._M_impl.\n                       _M_start" (cast_expression "(long)(hashed_dynsyms->\n                       super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>)._M_impl.\n                       _M_finish" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "(hashed_dynsyms->\n                       super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>)._M_impl.\n                       _M_finish" (field_expression "(hashed_dynsyms->\n                       super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>)._M_impl" (parenthesized_expression "(hashed_dynsyms->\n                       super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>)" ( (binary_expression "hashed_dynsyms->\n                       super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>" (binary_expression "hashed_dynsyms->\n                       super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_" (binary_expression "hashed_dynsyms->\n                       super__Vector_base<gold::Symbol*,_std::allocator<gold" (binary_expression "hashed_dynsyms->\n                       super__Vector_base<gold::Symbol*,_std" (binary_expression "hashed_dynsyms->\n                       super__Vector_base<gold" (field_expression "hashed_dynsyms->\n                       super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::Symbol" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Symbol" : : identifier) * (ERROR ">" >) identifier) > identifier) )) . field_identifier) . field_identifier)) - (cast_expression "(long)(hashed_dynsyms->\n                       super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>)._M_impl.\n                       _M_start" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "(hashed_dynsyms->\n                       super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>)._M_impl.\n                       _M_start" (field_expression "(hashed_dynsyms->\n                       super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>)._M_impl" (parenthesized_expression "(hashed_dynsyms->\n                       super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>)" ( (binary_expression "hashed_dynsyms->\n                       super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>" (binary_expression "hashed_dynsyms->\n                       super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_" (binary_expression "hashed_dynsyms->\n                       super__Vector_base<gold::Symbol*,_std::allocator<gold" (binary_expression "hashed_dynsyms->\n                       super__Vector_base<gold::Symbol*,_std" (binary_expression "hashed_dynsyms->\n                       super__Vector_base<gold" (field_expression "hashed_dynsyms->\n                       super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::Symbol" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Symbol" : : identifier) * (ERROR ">" >) identifier) > identifier) )) . field_identifier) . field_identifier))) >> number_literal) )))) ;) (expression_statement "uVar9 = uVar8 >> 1;" (assignment_expression "uVar9 = uVar8 >> 1" identifier = (binary_expression "uVar8 >> 1" identifier >> number_literal)) ;) (if_statement "if (uVar9 == 0) {\nLAB_0029f178:\n    local_40 = 1;\n    uVar24 = 4;\n    uVar21 = 1;\n    local_6c = 0x20;\n    local_70 = 5;\nLAB_0029f19a:\n    puVar13 = (undefined4 *)operator_new(uVar24);\n    puVar14 = puVar13;\n    do {\n      *puVar14 = 0;\n      puVar14 = puVar14 + 1;\n    } while (puVar14 != puVar13 + uVar21);\n    if (uVar7 != 0) goto LAB_0029eee8;\nLAB_0029f1cc:\n    pvVar11 = (void *)0x0;\n    pvVar10 = (void *)0x0;\n    if (uVar8 == 0) goto LAB_0029efa3;\nLAB_0029ef4c:\n    lVar16 = 0;\n    puVar3 = (dynsym_hashvals->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>).\n             _M_impl._M_start;\n    do {\n      puVar12 = puVar3 + lVar16;\n      lVar16 = lVar16 + 1;\n      piVar1 = (int *)((long)pvVar10 + ((ulong)*puVar12 % (ulong)uVar7) * 4);\n      *piVar1 = *piVar1 + 1;\n    } while ((uint)lVar16 < uVar8);\n  }\n  else {\n    uVar5 = 1;\n    do {\n      uVar17 = uVar5;\n      uVar9 = uVar9 >> 1;\n      uVar5 = uVar17 + 1;\n    } while (uVar9 != 0);\n    if (uVar17 + 1 < 3) goto LAB_0029f178;\n    bVar6 = (byte)(uVar17 - 1);\n    if ((uVar8 >> (uVar17 - 1 & 0x1f) & 1) == 0) {\n      local_70 = uVar17 + 3;\n      bVar6 = (char)uVar17 - 2;\n    }\n    else {\n      local_70 = uVar17 + 4;\n    }\n    puVar13 = (undefined4 *)0x0;\n    local_6c = 1 << ((byte)local_70 & 0x1f);\n    local_40 = 1 << (bVar6 & 0x1f);\n    uVar21 = (ulong)local_40;\n    if (local_40 != 0) {\n      uVar24 = uVar21 * 4;\n      goto LAB_0029f19a;\n    }\n    if (uVar7 == 0) goto LAB_0029f1cc;\nLAB_0029eee8:\n    uVar24 = (ulong)uVar7 * 4;\n                    /* try { // try from 0029eef8 to 0029eefc has its CatchHandler @ 0029f275 */\n    pvVar10 = operator_new(uVar24);\n    uVar21 = 0;\n    do {\n      uVar25 = uVar21;\n      *(undefined4 *)((long)pvVar10 + uVar25 * 4) = 0;\n      uVar21 = uVar25 + 1;\n    } while ((ulong)uVar7 != uVar25 + 1);\n                    /* try { // try from 0029ef21 to 0029ef25 has its CatchHandler @ 0029f27a */\n    pvVar11 = operator_new(uVar24);\n    uVar24 = 0;\n    do {\n      *(undefined4 *)((long)pvVar11 + uVar24 * 4) = 0;\n      bVar26 = uVar25 != uVar24;\n      uVar24 = uVar24 + 1;\n    } while (bVar26);\n    if (uVar8 != 0) goto LAB_0029ef4c;\n  }" if (parenthesized_expression "(uVar9 == 0)" ( (binary_expression "uVar9 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0029f178:\n    local_40 = 1;\n    uVar24 = 4;\n    uVar21 = 1;\n    local_6c = 0x20;\n    local_70 = 5;\nLAB_0029f19a:\n    puVar13 = (undefined4 *)operator_new(uVar24);\n    puVar14 = puVar13;\n    do {\n      *puVar14 = 0;\n      puVar14 = puVar14 + 1;\n    } while (puVar14 != puVar13 + uVar21);\n    if (uVar7 != 0) goto LAB_0029eee8;\nLAB_0029f1cc:\n    pvVar11 = (void *)0x0;\n    pvVar10 = (void *)0x0;\n    if (uVar8 == 0) goto LAB_0029efa3;\nLAB_0029ef4c:\n    lVar16 = 0;\n    puVar3 = (dynsym_hashvals->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>).\n             _M_impl._M_start;\n    do {\n      puVar12 = puVar3 + lVar16;\n      lVar16 = lVar16 + 1;\n      piVar1 = (int *)((long)pvVar10 + ((ulong)*puVar12 % (ulong)uVar7) * 4);\n      *piVar1 = *piVar1 + 1;\n    } while ((uint)lVar16 < uVar8);\n  }" { (labeled_statement "LAB_0029f178:\n    local_40 = 1;" statement_identifier : (expression_statement "local_40 = 1;" (assignment_expression "local_40 = 1" identifier = number_literal) ;)) (expression_statement "uVar24 = 4;" (assignment_expression "uVar24 = 4" identifier = number_literal) ;) (expression_statement "uVar21 = 1;" (assignment_expression "uVar21 = 1" identifier = number_literal) ;) (expression_statement "local_6c = 0x20;" (assignment_expression "local_6c = 0x20" identifier = number_literal) ;) (expression_statement "local_70 = 5;" (assignment_expression "local_70 = 5" identifier = number_literal) ;) (labeled_statement "LAB_0029f19a:\n    puVar13 = (undefined4 *)operator_new(uVar24);" statement_identifier : (expression_statement "puVar13 = (undefined4 *)operator_new(uVar24);" (assignment_expression "puVar13 = (undefined4 *)operator_new(uVar24)" identifier = (cast_expression "(undefined4 *)operator_new(uVar24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(uVar24)" identifier (argument_list "(uVar24)" ( identifier ))))) ;)) (expression_statement "puVar14 = puVar13;" (assignment_expression "puVar14 = puVar13" identifier = identifier) ;) (do_statement "do {\n      *puVar14 = 0;\n      puVar14 = puVar14 + 1;\n    } while (puVar14 != puVar13 + uVar21);" do (compound_statement "{\n      *puVar14 = 0;\n      puVar14 = puVar14 + 1;\n    }" { (expression_statement "*puVar14 = 0;" (assignment_expression "*puVar14 = 0" (pointer_expression "*puVar14" * identifier) = number_literal) ;) (expression_statement "puVar14 = puVar14 + 1;" (assignment_expression "puVar14 = puVar14 + 1" identifier = (binary_expression "puVar14 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar14 != puVar13 + uVar21)" ( (binary_expression "puVar14 != puVar13 + uVar21" identifier != (binary_expression "puVar13 + uVar21" identifier + identifier)) )) ;) (if_statement "if (uVar7 != 0) goto LAB_0029eee8;" if (parenthesized_expression "(uVar7 != 0)" ( (binary_expression "uVar7 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0029eee8;" goto statement_identifier ;)) (labeled_statement "LAB_0029f1cc:\n    pvVar11 = (void *)0x0;" statement_identifier : (expression_statement "pvVar11 = (void *)0x0;" (assignment_expression "pvVar11 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (expression_statement "pvVar10 = (void *)0x0;" (assignment_expression "pvVar10 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (uVar8 == 0) goto LAB_0029efa3;" if (parenthesized_expression "(uVar8 == 0)" ( (binary_expression "uVar8 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0029efa3;" goto statement_identifier ;)) (labeled_statement "LAB_0029ef4c:\n    lVar16 = 0;" statement_identifier : (expression_statement "lVar16 = 0;" (assignment_expression "lVar16 = 0" identifier = number_literal) ;)) (expression_statement "puVar3 = (dynsym_hashvals->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>).\n             _M_impl._M_start;" (assignment_expression "puVar3 = (dynsym_hashvals->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>).\n             _M_impl._M_start" identifier = (field_expression "(dynsym_hashvals->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>).\n             _M_impl._M_start" (field_expression "(dynsym_hashvals->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>).\n             _M_impl" (parenthesized_expression "(dynsym_hashvals->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)" ( (ERROR "dynsym_hashvals->super__Vector_base<unsigned_int,_std::" (comma_expression "dynsym_hashvals->super__Vector_base<unsigned_int,_std" (binary_expression "dynsym_hashvals->super__Vector_base<unsigned_int" (field_expression "dynsym_hashvals->super__Vector_base" identifier -> field_identifier) < identifier) , identifier) : :) (binary_expression "allocator<unsigned_int>_>" (binary_expression "allocator<unsigned_int>_" (binary_expression "allocator<unsigned_int" identifier < identifier) > identifier) > identifier) )) . field_identifier) . field_identifier)) ;) (do_statement "do {\n      puVar12 = puVar3 + lVar16;\n      lVar16 = lVar16 + 1;\n      piVar1 = (int *)((long)pvVar10 + ((ulong)*puVar12 % (ulong)uVar7) * 4);\n      *piVar1 = *piVar1 + 1;\n    } while ((uint)lVar16 < uVar8);" do (compound_statement "{\n      puVar12 = puVar3 + lVar16;\n      lVar16 = lVar16 + 1;\n      piVar1 = (int *)((long)pvVar10 + ((ulong)*puVar12 % (ulong)uVar7) * 4);\n      *piVar1 = *piVar1 + 1;\n    }" { (expression_statement "puVar12 = puVar3 + lVar16;" (assignment_expression "puVar12 = puVar3 + lVar16" identifier = (binary_expression "puVar3 + lVar16" identifier + identifier)) ;) (expression_statement "lVar16 = lVar16 + 1;" (assignment_expression "lVar16 = lVar16 + 1" identifier = (binary_expression "lVar16 + 1" identifier + number_literal)) ;) (expression_statement "piVar1 = (int *)((long)pvVar10 + ((ulong)*puVar12 % (ulong)uVar7) * 4);" (assignment_expression "piVar1 = (int *)((long)pvVar10 + ((ulong)*puVar12 % (ulong)uVar7) * 4)" identifier = (cast_expression "(int *)((long)pvVar10 + ((ulong)*puVar12 % (ulong)uVar7) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar10 + ((ulong)*puVar12 % (ulong)uVar7) * 4)" ( (binary_expression "(long)pvVar10 + ((ulong)*puVar12 % (ulong)uVar7) * 4" (cast_expression "(long)pvVar10" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "((ulong)*puVar12 % (ulong)uVar7) * 4" (parenthesized_expression "((ulong)*puVar12 % (ulong)uVar7)" ( (binary_expression "(ulong)*puVar12 % (ulong)uVar7" (binary_expression "(ulong)*puVar12" (parenthesized_expression "(ulong)" ( identifier )) * identifier) % (cast_expression "(ulong)uVar7" ( (type_descriptor "ulong" type_identifier) ) identifier)) )) * number_literal)) )))) ;) (expression_statement "*piVar1 = *piVar1 + 1;" (assignment_expression "*piVar1 = *piVar1 + 1" (pointer_expression "*piVar1" * identifier) = (binary_expression "*piVar1 + 1" (pointer_expression "*piVar1" * identifier) + number_literal)) ;) }) while (parenthesized_expression "((uint)lVar16 < uVar8)" ( (binary_expression "(uint)lVar16 < uVar8" (cast_expression "(uint)lVar16" ( (type_descriptor "uint" type_identifier) ) identifier) < identifier) )) ;) }) (else_clause "else {\n    uVar5 = 1;\n    do {\n      uVar17 = uVar5;\n      uVar9 = uVar9 >> 1;\n      uVar5 = uVar17 + 1;\n    } while (uVar9 != 0);\n    if (uVar17 + 1 < 3) goto LAB_0029f178;\n    bVar6 = (byte)(uVar17 - 1);\n    if ((uVar8 >> (uVar17 - 1 & 0x1f) & 1) == 0) {\n      local_70 = uVar17 + 3;\n      bVar6 = (char)uVar17 - 2;\n    }\n    else {\n      local_70 = uVar17 + 4;\n    }\n    puVar13 = (undefined4 *)0x0;\n    local_6c = 1 << ((byte)local_70 & 0x1f);\n    local_40 = 1 << (bVar6 & 0x1f);\n    uVar21 = (ulong)local_40;\n    if (local_40 != 0) {\n      uVar24 = uVar21 * 4;\n      goto LAB_0029f19a;\n    }\n    if (uVar7 == 0) goto LAB_0029f1cc;\nLAB_0029eee8:\n    uVar24 = (ulong)uVar7 * 4;\n                    /* try { // try from 0029eef8 to 0029eefc has its CatchHandler @ 0029f275 */\n    pvVar10 = operator_new(uVar24);\n    uVar21 = 0;\n    do {\n      uVar25 = uVar21;\n      *(undefined4 *)((long)pvVar10 + uVar25 * 4) = 0;\n      uVar21 = uVar25 + 1;\n    } while ((ulong)uVar7 != uVar25 + 1);\n                    /* try { // try from 0029ef21 to 0029ef25 has its CatchHandler @ 0029f27a */\n    pvVar11 = operator_new(uVar24);\n    uVar24 = 0;\n    do {\n      *(undefined4 *)((long)pvVar11 + uVar24 * 4) = 0;\n      bVar26 = uVar25 != uVar24;\n      uVar24 = uVar24 + 1;\n    } while (bVar26);\n    if (uVar8 != 0) goto LAB_0029ef4c;\n  }" else (compound_statement "{\n    uVar5 = 1;\n    do {\n      uVar17 = uVar5;\n      uVar9 = uVar9 >> 1;\n      uVar5 = uVar17 + 1;\n    } while (uVar9 != 0);\n    if (uVar17 + 1 < 3) goto LAB_0029f178;\n    bVar6 = (byte)(uVar17 - 1);\n    if ((uVar8 >> (uVar17 - 1 & 0x1f) & 1) == 0) {\n      local_70 = uVar17 + 3;\n      bVar6 = (char)uVar17 - 2;\n    }\n    else {\n      local_70 = uVar17 + 4;\n    }\n    puVar13 = (undefined4 *)0x0;\n    local_6c = 1 << ((byte)local_70 & 0x1f);\n    local_40 = 1 << (bVar6 & 0x1f);\n    uVar21 = (ulong)local_40;\n    if (local_40 != 0) {\n      uVar24 = uVar21 * 4;\n      goto LAB_0029f19a;\n    }\n    if (uVar7 == 0) goto LAB_0029f1cc;\nLAB_0029eee8:\n    uVar24 = (ulong)uVar7 * 4;\n                    /* try { // try from 0029eef8 to 0029eefc has its CatchHandler @ 0029f275 */\n    pvVar10 = operator_new(uVar24);\n    uVar21 = 0;\n    do {\n      uVar25 = uVar21;\n      *(undefined4 *)((long)pvVar10 + uVar25 * 4) = 0;\n      uVar21 = uVar25 + 1;\n    } while ((ulong)uVar7 != uVar25 + 1);\n                    /* try { // try from 0029ef21 to 0029ef25 has its CatchHandler @ 0029f27a */\n    pvVar11 = operator_new(uVar24);\n    uVar24 = 0;\n    do {\n      *(undefined4 *)((long)pvVar11 + uVar24 * 4) = 0;\n      bVar26 = uVar25 != uVar24;\n      uVar24 = uVar24 + 1;\n    } while (bVar26);\n    if (uVar8 != 0) goto LAB_0029ef4c;\n  }" { (expression_statement "uVar5 = 1;" (assignment_expression "uVar5 = 1" identifier = number_literal) ;) (do_statement "do {\n      uVar17 = uVar5;\n      uVar9 = uVar9 >> 1;\n      uVar5 = uVar17 + 1;\n    } while (uVar9 != 0);" do (compound_statement "{\n      uVar17 = uVar5;\n      uVar9 = uVar9 >> 1;\n      uVar5 = uVar17 + 1;\n    }" { (expression_statement "uVar17 = uVar5;" (assignment_expression "uVar17 = uVar5" identifier = identifier) ;) (expression_statement "uVar9 = uVar9 >> 1;" (assignment_expression "uVar9 = uVar9 >> 1" identifier = (binary_expression "uVar9 >> 1" identifier >> number_literal)) ;) (expression_statement "uVar5 = uVar17 + 1;" (assignment_expression "uVar5 = uVar17 + 1" identifier = (binary_expression "uVar17 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar9 != 0)" ( (binary_expression "uVar9 != 0" identifier != number_literal) )) ;) (if_statement "if (uVar17 + 1 < 3) goto LAB_0029f178;" if (parenthesized_expression "(uVar17 + 1 < 3)" ( (binary_expression "uVar17 + 1 < 3" (binary_expression "uVar17 + 1" identifier + number_literal) < number_literal) )) (goto_statement "goto LAB_0029f178;" goto statement_identifier ;)) (expression_statement "bVar6 = (byte)(uVar17 - 1);" (assignment_expression "bVar6 = (byte)(uVar17 - 1)" identifier = (call_expression "(byte)(uVar17 - 1)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar17 - 1)" ( (binary_expression "uVar17 - 1" identifier - number_literal) )))) ;) (if_statement "if ((uVar8 >> (uVar17 - 1 & 0x1f) & 1) == 0) {\n      local_70 = uVar17 + 3;\n      bVar6 = (char)uVar17 - 2;\n    }\n    else {\n      local_70 = uVar17 + 4;\n    }" if (parenthesized_expression "((uVar8 >> (uVar17 - 1 & 0x1f) & 1) == 0)" ( (binary_expression "(uVar8 >> (uVar17 - 1 & 0x1f) & 1) == 0" (parenthesized_expression "(uVar8 >> (uVar17 - 1 & 0x1f) & 1)" ( (binary_expression "uVar8 >> (uVar17 - 1 & 0x1f) & 1" (binary_expression "uVar8 >> (uVar17 - 1 & 0x1f)" identifier >> (parenthesized_expression "(uVar17 - 1 & 0x1f)" ( (binary_expression "uVar17 - 1 & 0x1f" (binary_expression "uVar17 - 1" identifier - number_literal) & number_literal) ))) & number_literal) )) == number_literal) )) (compound_statement "{\n      local_70 = uVar17 + 3;\n      bVar6 = (char)uVar17 - 2;\n    }" { (expression_statement "local_70 = uVar17 + 3;" (assignment_expression "local_70 = uVar17 + 3" identifier = (binary_expression "uVar17 + 3" identifier + number_literal)) ;) (expression_statement "bVar6 = (char)uVar17 - 2;" (assignment_expression "bVar6 = (char)uVar17 - 2" identifier = (binary_expression "(char)uVar17 - 2" (cast_expression "(char)uVar17" ( (type_descriptor "char" primitive_type) ) identifier) - number_literal)) ;) }) (else_clause "else {\n      local_70 = uVar17 + 4;\n    }" else (compound_statement "{\n      local_70 = uVar17 + 4;\n    }" { (expression_statement "local_70 = uVar17 + 4;" (assignment_expression "local_70 = uVar17 + 4" identifier = (binary_expression "uVar17 + 4" identifier + number_literal)) ;) }))) (expression_statement "puVar13 = (undefined4 *)0x0;" (assignment_expression "puVar13 = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_6c = 1 << ((byte)local_70 & 0x1f);" (assignment_expression "local_6c = 1 << ((byte)local_70 & 0x1f)" identifier = (binary_expression "1 << ((byte)local_70 & 0x1f)" number_literal << (parenthesized_expression "((byte)local_70 & 0x1f)" ( (binary_expression "(byte)local_70 & 0x1f" (cast_expression "(byte)local_70" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) (expression_statement "local_40 = 1 << (bVar6 & 0x1f);" (assignment_expression "local_40 = 1 << (bVar6 & 0x1f)" identifier = (binary_expression "1 << (bVar6 & 0x1f)" number_literal << (parenthesized_expression "(bVar6 & 0x1f)" ( (binary_expression "bVar6 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar21 = (ulong)local_40;" (assignment_expression "uVar21 = (ulong)local_40" identifier = (cast_expression "(ulong)local_40" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (if_statement "if (local_40 != 0) {\n      uVar24 = uVar21 * 4;\n      goto LAB_0029f19a;\n    }" if (parenthesized_expression "(local_40 != 0)" ( (binary_expression "local_40 != 0" identifier != number_literal) )) (compound_statement "{\n      uVar24 = uVar21 * 4;\n      goto LAB_0029f19a;\n    }" { (expression_statement "uVar24 = uVar21 * 4;" (assignment_expression "uVar24 = uVar21 * 4" identifier = (binary_expression "uVar21 * 4" identifier * number_literal)) ;) (goto_statement "goto LAB_0029f19a;" goto statement_identifier ;) })) (if_statement "if (uVar7 == 0) goto LAB_0029f1cc;" if (parenthesized_expression "(uVar7 == 0)" ( (binary_expression "uVar7 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0029f1cc;" goto statement_identifier ;)) (labeled_statement "LAB_0029eee8:\n    uVar24 = (ulong)uVar7 * 4;" statement_identifier : (expression_statement "uVar24 = (ulong)uVar7 * 4;" (assignment_expression "uVar24 = (ulong)uVar7 * 4" identifier = (binary_expression "(ulong)uVar7 * 4" (cast_expression "(ulong)uVar7" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) ;)) comment (expression_statement "pvVar10 = operator_new(uVar24);" (assignment_expression "pvVar10 = operator_new(uVar24)" identifier = (call_expression "operator_new(uVar24)" identifier (argument_list "(uVar24)" ( identifier )))) ;) (expression_statement "uVar21 = 0;" (assignment_expression "uVar21 = 0" identifier = number_literal) ;) (do_statement "do {\n      uVar25 = uVar21;\n      *(undefined4 *)((long)pvVar10 + uVar25 * 4) = 0;\n      uVar21 = uVar25 + 1;\n    } while ((ulong)uVar7 != uVar25 + 1);" do (compound_statement "{\n      uVar25 = uVar21;\n      *(undefined4 *)((long)pvVar10 + uVar25 * 4) = 0;\n      uVar21 = uVar25 + 1;\n    }" { (expression_statement "uVar25 = uVar21;" (assignment_expression "uVar25 = uVar21" identifier = identifier) ;) (expression_statement "*(undefined4 *)((long)pvVar10 + uVar25 * 4) = 0;" (assignment_expression "*(undefined4 *)((long)pvVar10 + uVar25 * 4) = 0" (pointer_expression "*(undefined4 *)((long)pvVar10 + uVar25 * 4)" * (cast_expression "(undefined4 *)((long)pvVar10 + uVar25 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar10 + uVar25 * 4)" ( (binary_expression "(long)pvVar10 + uVar25 * 4" (cast_expression "(long)pvVar10" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "uVar25 * 4" identifier * number_literal)) )))) = number_literal) ;) (expression_statement "uVar21 = uVar25 + 1;" (assignment_expression "uVar21 = uVar25 + 1" identifier = (binary_expression "uVar25 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((ulong)uVar7 != uVar25 + 1)" ( (binary_expression "(ulong)uVar7 != uVar25 + 1" (cast_expression "(ulong)uVar7" ( (type_descriptor "ulong" type_identifier) ) identifier) != (binary_expression "uVar25 + 1" identifier + number_literal)) )) ;) comment (expression_statement "pvVar11 = operator_new(uVar24);" (assignment_expression "pvVar11 = operator_new(uVar24)" identifier = (call_expression "operator_new(uVar24)" identifier (argument_list "(uVar24)" ( identifier )))) ;) (expression_statement "uVar24 = 0;" (assignment_expression "uVar24 = 0" identifier = number_literal) ;) (do_statement "do {\n      *(undefined4 *)((long)pvVar11 + uVar24 * 4) = 0;\n      bVar26 = uVar25 != uVar24;\n      uVar24 = uVar24 + 1;\n    } while (bVar26);" do (compound_statement "{\n      *(undefined4 *)((long)pvVar11 + uVar24 * 4) = 0;\n      bVar26 = uVar25 != uVar24;\n      uVar24 = uVar24 + 1;\n    }" { (expression_statement "*(undefined4 *)((long)pvVar11 + uVar24 * 4) = 0;" (assignment_expression "*(undefined4 *)((long)pvVar11 + uVar24 * 4) = 0" (pointer_expression "*(undefined4 *)((long)pvVar11 + uVar24 * 4)" * (cast_expression "(undefined4 *)((long)pvVar11 + uVar24 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + uVar24 * 4)" ( (binary_expression "(long)pvVar11 + uVar24 * 4" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "uVar24 * 4" identifier * number_literal)) )))) = number_literal) ;) (expression_statement "bVar26 = uVar25 != uVar24;" (assignment_expression "bVar26 = uVar25 != uVar24" identifier = (binary_expression "uVar25 != uVar24" identifier != identifier)) ;) (expression_statement "uVar24 = uVar24 + 1;" (assignment_expression "uVar24 = uVar24 + 1" identifier = (binary_expression "uVar24 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar26)" ( identifier )) ;) (if_statement "if (uVar8 != 0) goto LAB_0029ef4c;" if (parenthesized_expression "(uVar8 != 0)" ( (binary_expression "uVar8 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0029ef4c;" goto statement_identifier ;)) }))) (if_statement "if (uVar7 != 0) {\n    uVar24 = 0;\n    uVar9 = unhashed_dynsym_count;\n    do {\n      *(uint *)((long)pvVar11 + uVar24 * 4) = uVar9;\n      uVar9 = uVar9 + *(int *)((long)pvVar10 + uVar24 * 4);\n      bVar26 = uVar7 - 1 != uVar24;\n      uVar24 = uVar24 + 1;\n    } while (bVar26);\n  }" if (parenthesized_expression "(uVar7 != 0)" ( (binary_expression "uVar7 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar24 = 0;\n    uVar9 = unhashed_dynsym_count;\n    do {\n      *(uint *)((long)pvVar11 + uVar24 * 4) = uVar9;\n      uVar9 = uVar9 + *(int *)((long)pvVar10 + uVar24 * 4);\n      bVar26 = uVar7 - 1 != uVar24;\n      uVar24 = uVar24 + 1;\n    } while (bVar26);\n  }" { (expression_statement "uVar24 = 0;" (assignment_expression "uVar24 = 0" identifier = number_literal) ;) (expression_statement "uVar9 = unhashed_dynsym_count;" (assignment_expression "uVar9 = unhashed_dynsym_count" identifier = identifier) ;) (do_statement "do {\n      *(uint *)((long)pvVar11 + uVar24 * 4) = uVar9;\n      uVar9 = uVar9 + *(int *)((long)pvVar10 + uVar24 * 4);\n      bVar26 = uVar7 - 1 != uVar24;\n      uVar24 = uVar24 + 1;\n    } while (bVar26);" do (compound_statement "{\n      *(uint *)((long)pvVar11 + uVar24 * 4) = uVar9;\n      uVar9 = uVar9 + *(int *)((long)pvVar10 + uVar24 * 4);\n      bVar26 = uVar7 - 1 != uVar24;\n      uVar24 = uVar24 + 1;\n    }" { (expression_statement "*(uint *)((long)pvVar11 + uVar24 * 4) = uVar9;" (assignment_expression "*(uint *)((long)pvVar11 + uVar24 * 4) = uVar9" (pointer_expression "*(uint *)((long)pvVar11 + uVar24 * 4)" * (cast_expression "(uint *)((long)pvVar11 + uVar24 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + uVar24 * 4)" ( (binary_expression "(long)pvVar11 + uVar24 * 4" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "uVar24 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "uVar9 = uVar9 + *(int *)((long)pvVar10 + uVar24 * 4);" (assignment_expression "uVar9 = uVar9 + *(int *)((long)pvVar10 + uVar24 * 4)" identifier = (binary_expression "uVar9 + *(int *)((long)pvVar10 + uVar24 * 4)" identifier + (pointer_expression "*(int *)((long)pvVar10 + uVar24 * 4)" * (cast_expression "(int *)((long)pvVar10 + uVar24 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar10 + uVar24 * 4)" ( (binary_expression "(long)pvVar10 + uVar24 * 4" (cast_expression "(long)pvVar10" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "uVar24 * 4" identifier * number_literal)) )))))) ;) (expression_statement "bVar26 = uVar7 - 1 != uVar24;" (assignment_expression "bVar26 = uVar7 - 1 != uVar24" identifier = (binary_expression "uVar7 - 1 != uVar24" (binary_expression "uVar7 - 1" identifier - number_literal) != identifier)) ;) (expression_statement "uVar24 = uVar24 + 1;" (assignment_expression "uVar24 = uVar24 + 1" identifier = (binary_expression "uVar24 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar26)" ( identifier )) ;) })) (labeled_statement "LAB_0029efa3:\n  uVar9 = (local_6c >> 3) + (uVar7 + 4 + uVar8) * 4;" statement_identifier : (expression_statement "uVar9 = (local_6c >> 3) + (uVar7 + 4 + uVar8) * 4;" (assignment_expression "uVar9 = (local_6c >> 3) + (uVar7 + 4 + uVar8) * 4" identifier = (binary_expression "(local_6c >> 3) + (uVar7 + 4 + uVar8) * 4" (parenthesized_expression "(local_6c >> 3)" ( (binary_expression "local_6c >> 3" identifier >> number_literal) )) + (binary_expression "(uVar7 + 4 + uVar8) * 4" (parenthesized_expression "(uVar7 + 4 + uVar8)" ( (binary_expression "uVar7 + 4 + uVar8" (binary_expression "uVar7 + 4" identifier + number_literal) + identifier) )) * number_literal))) ;)) comment (expression_statement "puVar12 = (uint *)operator_new__((ulong)uVar9);" (assignment_expression "puVar12 = (uint *)operator_new__((ulong)uVar9)" identifier = (cast_expression "(uint *)operator_new__((ulong)uVar9)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new__((ulong)uVar9)" identifier (argument_list "((ulong)uVar9)" ( (cast_expression "(ulong)uVar9" ( (type_descriptor "ulong" type_identifier) ) identifier) ))))) ;) (expression_statement "lVar16 = (long)puVar12 + (ulong)(local_6c >> 3) + 0x10;" (assignment_expression "lVar16 = (long)puVar12 + (ulong)(local_6c >> 3) + 0x10" identifier = (binary_expression "(long)puVar12 + (ulong)(local_6c >> 3) + 0x10" (binary_expression "(long)puVar12 + (ulong)(local_6c >> 3)" (cast_expression "(long)puVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (call_expression "(ulong)(local_6c >> 3)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(local_6c >> 3)" ( (binary_expression "local_6c >> 3" identifier >> number_literal) )))) + number_literal)) ;) (expression_statement "*puVar12 = uVar7;" (assignment_expression "*puVar12 = uVar7" (pointer_expression "*puVar12" * identifier) = identifier) ;) (expression_statement "puVar12[1] = unhashed_dynsym_count;" (assignment_expression "puVar12[1] = unhashed_dynsym_count" (subscript_expression "puVar12[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar12[2] = local_40;" (assignment_expression "puVar12[2] = local_40" (subscript_expression "puVar12[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar12[3] = local_70;" (assignment_expression "puVar12[3] = local_70" (subscript_expression "puVar12[3]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (uVar7 != 0) {\n    uVar24 = 0;\n    do {\n      iVar18 = *(int *)((long)pvVar10 + uVar24 * 4);\n      if (iVar18 != 0) {\n        iVar18 = *(int *)((long)pvVar11 + uVar24 * 4);\n      }\n      *(int *)(lVar16 + uVar24 * 4) = iVar18;\n      bVar26 = uVar7 - 1 != uVar24;\n      uVar24 = uVar24 + 1;\n    } while (bVar26);\n    lVar16 = lVar16 + ((ulong)(uVar7 - 1) + 1) * 4;\n  }" if (parenthesized_expression "(uVar7 != 0)" ( (binary_expression "uVar7 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar24 = 0;\n    do {\n      iVar18 = *(int *)((long)pvVar10 + uVar24 * 4);\n      if (iVar18 != 0) {\n        iVar18 = *(int *)((long)pvVar11 + uVar24 * 4);\n      }\n      *(int *)(lVar16 + uVar24 * 4) = iVar18;\n      bVar26 = uVar7 - 1 != uVar24;\n      uVar24 = uVar24 + 1;\n    } while (bVar26);\n    lVar16 = lVar16 + ((ulong)(uVar7 - 1) + 1) * 4;\n  }" { (expression_statement "uVar24 = 0;" (assignment_expression "uVar24 = 0" identifier = number_literal) ;) (do_statement "do {\n      iVar18 = *(int *)((long)pvVar10 + uVar24 * 4);\n      if (iVar18 != 0) {\n        iVar18 = *(int *)((long)pvVar11 + uVar24 * 4);\n      }\n      *(int *)(lVar16 + uVar24 * 4) = iVar18;\n      bVar26 = uVar7 - 1 != uVar24;\n      uVar24 = uVar24 + 1;\n    } while (bVar26);" do (compound_statement "{\n      iVar18 = *(int *)((long)pvVar10 + uVar24 * 4);\n      if (iVar18 != 0) {\n        iVar18 = *(int *)((long)pvVar11 + uVar24 * 4);\n      }\n      *(int *)(lVar16 + uVar24 * 4) = iVar18;\n      bVar26 = uVar7 - 1 != uVar24;\n      uVar24 = uVar24 + 1;\n    }" { (expression_statement "iVar18 = *(int *)((long)pvVar10 + uVar24 * 4);" (assignment_expression "iVar18 = *(int *)((long)pvVar10 + uVar24 * 4)" identifier = (pointer_expression "*(int *)((long)pvVar10 + uVar24 * 4)" * (cast_expression "(int *)((long)pvVar10 + uVar24 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar10 + uVar24 * 4)" ( (binary_expression "(long)pvVar10 + uVar24 * 4" (cast_expression "(long)pvVar10" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "uVar24 * 4" identifier * number_literal)) ))))) ;) (if_statement "if (iVar18 != 0) {\n        iVar18 = *(int *)((long)pvVar11 + uVar24 * 4);\n      }" if (parenthesized_expression "(iVar18 != 0)" ( (binary_expression "iVar18 != 0" identifier != number_literal) )) (compound_statement "{\n        iVar18 = *(int *)((long)pvVar11 + uVar24 * 4);\n      }" { (expression_statement "iVar18 = *(int *)((long)pvVar11 + uVar24 * 4);" (assignment_expression "iVar18 = *(int *)((long)pvVar11 + uVar24 * 4)" identifier = (pointer_expression "*(int *)((long)pvVar11 + uVar24 * 4)" * (cast_expression "(int *)((long)pvVar11 + uVar24 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + uVar24 * 4)" ( (binary_expression "(long)pvVar11 + uVar24 * 4" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "uVar24 * 4" identifier * number_literal)) ))))) ;) })) (expression_statement "*(int *)(lVar16 + uVar24 * 4) = iVar18;" (assignment_expression "*(int *)(lVar16 + uVar24 * 4) = iVar18" (pointer_expression "*(int *)(lVar16 + uVar24 * 4)" * (cast_expression "(int *)(lVar16 + uVar24 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar16 + uVar24 * 4)" ( (binary_expression "lVar16 + uVar24 * 4" identifier + (binary_expression "uVar24 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "bVar26 = uVar7 - 1 != uVar24;" (assignment_expression "bVar26 = uVar7 - 1 != uVar24" identifier = (binary_expression "uVar7 - 1 != uVar24" (binary_expression "uVar7 - 1" identifier - number_literal) != identifier)) ;) (expression_statement "uVar24 = uVar24 + 1;" (assignment_expression "uVar24 = uVar24 + 1" identifier = (binary_expression "uVar24 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar26)" ( identifier )) ;) (expression_statement "lVar16 = lVar16 + ((ulong)(uVar7 - 1) + 1) * 4;" (assignment_expression "lVar16 = lVar16 + ((ulong)(uVar7 - 1) + 1) * 4" identifier = (binary_expression "lVar16 + ((ulong)(uVar7 - 1) + 1) * 4" identifier + (binary_expression "((ulong)(uVar7 - 1) + 1) * 4" (parenthesized_expression "((ulong)(uVar7 - 1) + 1)" ( (binary_expression "(ulong)(uVar7 - 1) + 1" (call_expression "(ulong)(uVar7 - 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar7 - 1)" ( (binary_expression "uVar7 - 1" identifier - number_literal) ))) + number_literal) )) * number_literal))) ;) })) (if_statement "if (uVar8 != 0) {\n    ppSVar22 = (hashed_dynsyms->super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>).\n               _M_impl._M_start;\n    puVar23 = (dynsym_hashvals->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>).\n              _M_impl._M_start;\n    ppSVar2 = ppSVar22 + (ulong)(uVar8 - 1) + 1;\n    do {\n      uVar8 = *puVar23;\n      pSVar4 = *ppSVar22;\n      puVar13[uVar8 >> 5 & (local_6c >> 5) - 1] =\n           puVar13[uVar8 >> 5 & (local_6c >> 5) - 1] |\n           1 << ((byte)(uVar8 >> ((byte)local_70 & 0x1f)) & 0x1f) | 1 << ((byte)uVar8 & 0x1f);\n      lVar19 = ((ulong)uVar8 % (ulong)uVar7) * 4;\n      piVar1 = (int *)((long)pvVar10 + lVar19);\n      iVar18 = *piVar1;\n      uVar5 = uVar8 & 0xfffffffe;\n      if (iVar18 == 1) {\n        uVar5 = uVar8 & 0xfffffffe | 1;\n      }\n      puVar20 = (uint *)(lVar19 + (long)pvVar11);\n      uVar8 = *puVar20;\n      *piVar1 = iVar18 + -1;\n      *(uint *)(lVar16 + (ulong)((uVar8 - unhashed_dynsym_count) * 4)) = uVar5;\n      if (uVar8 == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0029f270 to 0029f274 has its CatchHandler @ 0029f27f */\n        do_gold_unreachable("../../gold/symtab.h",0x1a2,"set_dynsym_index");\n      }\n      pSVar4->dynsym_index_ = uVar8;\n      ppSVar22 = ppSVar22 + 1;\n      puVar23 = puVar23 + 1;\n      *puVar20 = uVar8 + 1;\n    } while (ppSVar2 != ppSVar22);\n  }" if (parenthesized_expression "(uVar8 != 0)" ( (binary_expression "uVar8 != 0" identifier != number_literal) )) (compound_statement "{\n    ppSVar22 = (hashed_dynsyms->super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>).\n               _M_impl._M_start;\n    puVar23 = (dynsym_hashvals->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>).\n              _M_impl._M_start;\n    ppSVar2 = ppSVar22 + (ulong)(uVar8 - 1) + 1;\n    do {\n      uVar8 = *puVar23;\n      pSVar4 = *ppSVar22;\n      puVar13[uVar8 >> 5 & (local_6c >> 5) - 1] =\n           puVar13[uVar8 >> 5 & (local_6c >> 5) - 1] |\n           1 << ((byte)(uVar8 >> ((byte)local_70 & 0x1f)) & 0x1f) | 1 << ((byte)uVar8 & 0x1f);\n      lVar19 = ((ulong)uVar8 % (ulong)uVar7) * 4;\n      piVar1 = (int *)((long)pvVar10 + lVar19);\n      iVar18 = *piVar1;\n      uVar5 = uVar8 & 0xfffffffe;\n      if (iVar18 == 1) {\n        uVar5 = uVar8 & 0xfffffffe | 1;\n      }\n      puVar20 = (uint *)(lVar19 + (long)pvVar11);\n      uVar8 = *puVar20;\n      *piVar1 = iVar18 + -1;\n      *(uint *)(lVar16 + (ulong)((uVar8 - unhashed_dynsym_count) * 4)) = uVar5;\n      if (uVar8 == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0029f270 to 0029f274 has its CatchHandler @ 0029f27f */\n        do_gold_unreachable("../../gold/symtab.h",0x1a2,"set_dynsym_index");\n      }\n      pSVar4->dynsym_index_ = uVar8;\n      ppSVar22 = ppSVar22 + 1;\n      puVar23 = puVar23 + 1;\n      *puVar20 = uVar8 + 1;\n    } while (ppSVar2 != ppSVar22);\n  }" { (expression_statement "ppSVar22 = (hashed_dynsyms->super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>).\n               _M_impl._M_start;" (assignment_expression "ppSVar22 = (hashed_dynsyms->super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>).\n               _M_impl._M_start" identifier = (field_expression "(hashed_dynsyms->super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>).\n               _M_impl._M_start" (field_expression "(hashed_dynsyms->super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>).\n               _M_impl" (parenthesized_expression "(hashed_dynsyms->super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>)" ( (ERROR "hashed_dynsyms->super__Vector_base<gold::Symbol*,_std::allocator<gold::" (comma_expression "hashed_dynsyms->super__Vector_base<gold::Symbol*,_std" (binary_expression "hashed_dynsyms->super__Vector_base<gold::Symbol*" (binary_expression "hashed_dynsyms->super__Vector_base<gold" (field_expression "hashed_dynsyms->super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::Symbol" : : identifier) * identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (binary_expression "Symbol*>_>" (binary_expression "Symbol*>_" identifier * (ERROR ">" >) identifier) > identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "puVar23 = (dynsym_hashvals->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>).\n              _M_impl._M_start;" (assignment_expression "puVar23 = (dynsym_hashvals->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>).\n              _M_impl._M_start" identifier = (field_expression "(dynsym_hashvals->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>).\n              _M_impl._M_start" (field_expression "(dynsym_hashvals->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>).\n              _M_impl" (parenthesized_expression "(dynsym_hashvals->super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)" ( (ERROR "dynsym_hashvals->super__Vector_base<unsigned_int,_std::" (comma_expression "dynsym_hashvals->super__Vector_base<unsigned_int,_std" (binary_expression "dynsym_hashvals->super__Vector_base<unsigned_int" (field_expression "dynsym_hashvals->super__Vector_base" identifier -> field_identifier) < identifier) , identifier) : :) (binary_expression "allocator<unsigned_int>_>" (binary_expression "allocator<unsigned_int>_" (binary_expression "allocator<unsigned_int" identifier < identifier) > identifier) > identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "ppSVar2 = ppSVar22 + (ulong)(uVar8 - 1) + 1;" (assignment_expression "ppSVar2 = ppSVar22 + (ulong)(uVar8 - 1) + 1" identifier = (binary_expression "ppSVar22 + (ulong)(uVar8 - 1) + 1" (binary_expression "ppSVar22 + (ulong)(uVar8 - 1)" identifier + (call_expression "(ulong)(uVar8 - 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar8 - 1)" ( (binary_expression "uVar8 - 1" identifier - number_literal) )))) + number_literal)) ;) (do_statement "do {\n      uVar8 = *puVar23;\n      pSVar4 = *ppSVar22;\n      puVar13[uVar8 >> 5 & (local_6c >> 5) - 1] =\n           puVar13[uVar8 >> 5 & (local_6c >> 5) - 1] |\n           1 << ((byte)(uVar8 >> ((byte)local_70 & 0x1f)) & 0x1f) | 1 << ((byte)uVar8 & 0x1f);\n      lVar19 = ((ulong)uVar8 % (ulong)uVar7) * 4;\n      piVar1 = (int *)((long)pvVar10 + lVar19);\n      iVar18 = *piVar1;\n      uVar5 = uVar8 & 0xfffffffe;\n      if (iVar18 == 1) {\n        uVar5 = uVar8 & 0xfffffffe | 1;\n      }\n      puVar20 = (uint *)(lVar19 + (long)pvVar11);\n      uVar8 = *puVar20;\n      *piVar1 = iVar18 + -1;\n      *(uint *)(lVar16 + (ulong)((uVar8 - unhashed_dynsym_count) * 4)) = uVar5;\n      if (uVar8 == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0029f270 to 0029f274 has its CatchHandler @ 0029f27f */\n        do_gold_unreachable("../../gold/symtab.h",0x1a2,"set_dynsym_index");\n      }\n      pSVar4->dynsym_index_ = uVar8;\n      ppSVar22 = ppSVar22 + 1;\n      puVar23 = puVar23 + 1;\n      *puVar20 = uVar8 + 1;\n    } while (ppSVar2 != ppSVar22);" do (compound_statement "{\n      uVar8 = *puVar23;\n      pSVar4 = *ppSVar22;\n      puVar13[uVar8 >> 5 & (local_6c >> 5) - 1] =\n           puVar13[uVar8 >> 5 & (local_6c >> 5) - 1] |\n           1 << ((byte)(uVar8 >> ((byte)local_70 & 0x1f)) & 0x1f) | 1 << ((byte)uVar8 & 0x1f);\n      lVar19 = ((ulong)uVar8 % (ulong)uVar7) * 4;\n      piVar1 = (int *)((long)pvVar10 + lVar19);\n      iVar18 = *piVar1;\n      uVar5 = uVar8 & 0xfffffffe;\n      if (iVar18 == 1) {\n        uVar5 = uVar8 & 0xfffffffe | 1;\n      }\n      puVar20 = (uint *)(lVar19 + (long)pvVar11);\n      uVar8 = *puVar20;\n      *piVar1 = iVar18 + -1;\n      *(uint *)(lVar16 + (ulong)((uVar8 - unhashed_dynsym_count) * 4)) = uVar5;\n      if (uVar8 == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0029f270 to 0029f274 has its CatchHandler @ 0029f27f */\n        do_gold_unreachable("../../gold/symtab.h",0x1a2,"set_dynsym_index");\n      }\n      pSVar4->dynsym_index_ = uVar8;\n      ppSVar22 = ppSVar22 + 1;\n      puVar23 = puVar23 + 1;\n      *puVar20 = uVar8 + 1;\n    }" { (expression_statement "uVar8 = *puVar23;" (assignment_expression "uVar8 = *puVar23" identifier = (pointer_expression "*puVar23" * identifier)) ;) (expression_statement "pSVar4 = *ppSVar22;" (assignment_expression "pSVar4 = *ppSVar22" identifier = (pointer_expression "*ppSVar22" * identifier)) ;) (expression_statement "puVar13[uVar8 >> 5 & (local_6c >> 5) - 1] =\n           puVar13[uVar8 >> 5 & (local_6c >> 5) - 1] |\n           1 << ((byte)(uVar8 >> ((byte)local_70 & 0x1f)) & 0x1f) | 1 << ((byte)uVar8 & 0x1f);" (assignment_expression "puVar13[uVar8 >> 5 & (local_6c >> 5) - 1] =\n           puVar13[uVar8 >> 5 & (local_6c >> 5) - 1] |\n           1 << ((byte)(uVar8 >> ((byte)local_70 & 0x1f)) & 0x1f) | 1 << ((byte)uVar8 & 0x1f)" (subscript_expression "puVar13[uVar8 >> 5 & (local_6c >> 5) - 1]" identifier [ (binary_expression "uVar8 >> 5 & (local_6c >> 5) - 1" (binary_expression "uVar8 >> 5" identifier >> number_literal) & (binary_expression "(local_6c >> 5) - 1" (parenthesized_expression "(local_6c >> 5)" ( (binary_expression "local_6c >> 5" identifier >> number_literal) )) - number_literal)) ]) = (binary_expression "puVar13[uVar8 >> 5 & (local_6c >> 5) - 1] |\n           1 << ((byte)(uVar8 >> ((byte)local_70 & 0x1f)) & 0x1f) | 1 << ((byte)uVar8 & 0x1f)" (binary_expression "puVar13[uVar8 >> 5 & (local_6c >> 5) - 1] |\n           1 << ((byte)(uVar8 >> ((byte)local_70 & 0x1f)) & 0x1f)" (subscript_expression "puVar13[uVar8 >> 5 & (local_6c >> 5) - 1]" identifier [ (binary_expression "uVar8 >> 5 & (local_6c >> 5) - 1" (binary_expression "uVar8 >> 5" identifier >> number_literal) & (binary_expression "(local_6c >> 5) - 1" (parenthesized_expression "(local_6c >> 5)" ( (binary_expression "local_6c >> 5" identifier >> number_literal) )) - number_literal)) ]) | (binary_expression "1 << ((byte)(uVar8 >> ((byte)local_70 & 0x1f)) & 0x1f)" number_literal << (parenthesized_expression "((byte)(uVar8 >> ((byte)local_70 & 0x1f)) & 0x1f)" ( (binary_expression "(byte)(uVar8 >> ((byte)local_70 & 0x1f)) & 0x1f" (call_expression "(byte)(uVar8 >> ((byte)local_70 & 0x1f))" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar8 >> ((byte)local_70 & 0x1f))" ( (binary_expression "uVar8 >> ((byte)local_70 & 0x1f)" identifier >> (parenthesized_expression "((byte)local_70 & 0x1f)" ( (binary_expression "(byte)local_70 & 0x1f" (cast_expression "(byte)local_70" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))) & number_literal) )))) | (binary_expression "1 << ((byte)uVar8 & 0x1f)" number_literal << (parenthesized_expression "((byte)uVar8 & 0x1f)" ( (binary_expression "(byte)uVar8 & 0x1f" (cast_expression "(byte)uVar8" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))))) ;) (expression_statement "lVar19 = ((ulong)uVar8 % (ulong)uVar7) * 4;" (assignment_expression "lVar19 = ((ulong)uVar8 % (ulong)uVar7) * 4" identifier = (binary_expression "((ulong)uVar8 % (ulong)uVar7) * 4" (parenthesized_expression "((ulong)uVar8 % (ulong)uVar7)" ( (binary_expression "(ulong)uVar8 % (ulong)uVar7" (cast_expression "(ulong)uVar8" ( (type_descriptor "ulong" type_identifier) ) identifier) % (cast_expression "(ulong)uVar7" ( (type_descriptor "ulong" type_identifier) ) identifier)) )) * number_literal)) ;) (expression_statement "piVar1 = (int *)((long)pvVar10 + lVar19);" (assignment_expression "piVar1 = (int *)((long)pvVar10 + lVar19)" identifier = (cast_expression "(int *)((long)pvVar10 + lVar19)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar10 + lVar19)" ( (binary_expression "(long)pvVar10 + lVar19" (cast_expression "(long)pvVar10" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) ;) (expression_statement "iVar18 = *piVar1;" (assignment_expression "iVar18 = *piVar1" identifier = (pointer_expression "*piVar1" * identifier)) ;) (expression_statement "uVar5 = uVar8 & 0xfffffffe;" (assignment_expression "uVar5 = uVar8 & 0xfffffffe" identifier = (binary_expression "uVar8 & 0xfffffffe" identifier & number_literal)) ;) (if_statement "if (iVar18 == 1) {\n        uVar5 = uVar8 & 0xfffffffe | 1;\n      }" if (parenthesized_expression "(iVar18 == 1)" ( (binary_expression "iVar18 == 1" identifier == number_literal) )) (compound_statement "{\n        uVar5 = uVar8 & 0xfffffffe | 1;\n      }" { (expression_statement "uVar5 = uVar8 & 0xfffffffe | 1;" (assignment_expression "uVar5 = uVar8 & 0xfffffffe | 1" identifier = (binary_expression "uVar8 & 0xfffffffe | 1" (binary_expression "uVar8 & 0xfffffffe" identifier & number_literal) | number_literal)) ;) })) (expression_statement "puVar20 = (uint *)(lVar19 + (long)pvVar11);" (assignment_expression "puVar20 = (uint *)(lVar19 + (long)pvVar11)" identifier = (cast_expression "(uint *)(lVar19 + (long)pvVar11)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar19 + (long)pvVar11)" ( (binary_expression "lVar19 + (long)pvVar11" identifier + (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )))) ;) (expression_statement "uVar8 = *puVar20;" (assignment_expression "uVar8 = *puVar20" identifier = (pointer_expression "*puVar20" * identifier)) ;) (expression_statement "*piVar1 = iVar18 + -1;" (assignment_expression "*piVar1 = iVar18 + -1" (pointer_expression "*piVar1" * identifier) = (binary_expression "iVar18 + -1" identifier + number_literal)) ;) (expression_statement "*(uint *)(lVar16 + (ulong)((uVar8 - unhashed_dynsym_count) * 4)) = uVar5;" (assignment_expression "*(uint *)(lVar16 + (ulong)((uVar8 - unhashed_dynsym_count) * 4)) = uVar5" (pointer_expression "*(uint *)(lVar16 + (ulong)((uVar8 - unhashed_dynsym_count) * 4))" * (cast_expression "(uint *)(lVar16 + (ulong)((uVar8 - unhashed_dynsym_count) * 4))" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar16 + (ulong)((uVar8 - unhashed_dynsym_count) * 4))" ( (binary_expression "lVar16 + (ulong)((uVar8 - unhashed_dynsym_count) * 4)" identifier + (call_expression "(ulong)((uVar8 - unhashed_dynsym_count) * 4)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((uVar8 - unhashed_dynsym_count) * 4)" ( (binary_expression "(uVar8 - unhashed_dynsym_count) * 4" (parenthesized_expression "(uVar8 - unhashed_dynsym_count)" ( (binary_expression "uVar8 - unhashed_dynsym_count" identifier - identifier) )) * number_literal) )))) )))) = identifier) ;) (if_statement "if (uVar8 == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0029f270 to 0029f274 has its CatchHandler @ 0029f27f */\n        do_gold_unreachable("../../gold/symtab.h",0x1a2,"set_dynsym_index");\n      }" if (parenthesized_expression "(uVar8 == 0)" ( (binary_expression "uVar8 == 0" identifier == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0029f270 to 0029f274 has its CatchHandler @ 0029f27f */\n        do_gold_unreachable("../../gold/symtab.h",0x1a2,"set_dynsym_index");\n      }" { comment comment (expression_statement "do_gold_unreachable("../../gold/symtab.h",0x1a2,"set_dynsym_index");" (call_expression "do_gold_unreachable("../../gold/symtab.h",0x1a2,"set_dynsym_index")" identifier (argument_list "("../../gold/symtab.h",0x1a2,"set_dynsym_index")" ( (string_literal ""../../gold/symtab.h"" " string_content ") , number_literal , (string_literal ""set_dynsym_index"" " string_content ") ))) ;) })) (expression_statement "pSVar4->dynsym_index_ = uVar8;" (assignment_expression "pSVar4->dynsym_index_ = uVar8" (field_expression "pSVar4->dynsym_index_" identifier -> field_identifier) = identifier) ;) (expression_statement "ppSVar22 = ppSVar22 + 1;" (assignment_expression "ppSVar22 = ppSVar22 + 1" identifier = (binary_expression "ppSVar22 + 1" identifier + number_literal)) ;) (expression_statement "puVar23 = puVar23 + 1;" (assignment_expression "puVar23 = puVar23 + 1" identifier = (binary_expression "puVar23 + 1" identifier + number_literal)) ;) (expression_statement "*puVar20 = uVar8 + 1;" (assignment_expression "*puVar20 = uVar8 + 1" (pointer_expression "*puVar20" * identifier) = (binary_expression "uVar8 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(ppSVar2 != ppSVar22)" ( (binary_expression "ppSVar2 != ppSVar22" identifier != identifier) )) ;) })) (if_statement "if (local_40 != 0) {\n    uVar24 = 0;\n    do {\n      puVar12[uVar24 + 4] = puVar13[uVar24];\n      bVar26 = uVar24 != local_40 - 1;\n      uVar24 = uVar24 + 1;\n    } while (bVar26);\n  }" if (parenthesized_expression "(local_40 != 0)" ( (binary_expression "local_40 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar24 = 0;\n    do {\n      puVar12[uVar24 + 4] = puVar13[uVar24];\n      bVar26 = uVar24 != local_40 - 1;\n      uVar24 = uVar24 + 1;\n    } while (bVar26);\n  }" { (expression_statement "uVar24 = 0;" (assignment_expression "uVar24 = 0" identifier = number_literal) ;) (do_statement "do {\n      puVar12[uVar24 + 4] = puVar13[uVar24];\n      bVar26 = uVar24 != local_40 - 1;\n      uVar24 = uVar24 + 1;\n    } while (bVar26);" do (compound_statement "{\n      puVar12[uVar24 + 4] = puVar13[uVar24];\n      bVar26 = uVar24 != local_40 - 1;\n      uVar24 = uVar24 + 1;\n    }" { (expression_statement "puVar12[uVar24 + 4] = puVar13[uVar24];" (assignment_expression "puVar12[uVar24 + 4] = puVar13[uVar24]" (subscript_expression "puVar12[uVar24 + 4]" identifier [ (binary_expression "uVar24 + 4" identifier + number_literal) ]) = (subscript_expression "puVar13[uVar24]" identifier [ identifier ])) ;) (expression_statement "bVar26 = uVar24 != local_40 - 1;" (assignment_expression "bVar26 = uVar24 != local_40 - 1" identifier = (binary_expression "uVar24 != local_40 - 1" identifier != (binary_expression "local_40 - 1" identifier - number_literal))) ;) (expression_statement "uVar24 = uVar24 + 1;" (assignment_expression "uVar24 = uVar24 + 1" identifier = (binary_expression "uVar24 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar26)" ( identifier )) ;) })) (expression_statement "*phashlen = uVar9;" (assignment_expression "*phashlen = uVar9" (pointer_expression "*phashlen" * identifier) = identifier) ;) (expression_statement "*pphash = (uchar *)puVar12;" (assignment_expression "*pphash = (uchar *)puVar12" (pointer_expression "*pphash" * identifier) = (cast_expression "(uchar *)puVar12" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (pvVar11 != (void *)0x0) {\n    operator_delete(pvVar11);\n  }" if (parenthesized_expression "(pvVar11 != (void *)0x0)" ( (binary_expression "pvVar11 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    operator_delete(pvVar11);\n  }" { (expression_statement "operator_delete(pvVar11);" (call_expression "operator_delete(pvVar11)" identifier (argument_list "(pvVar11)" ( identifier ))) ;) })) (if_statement "if (pvVar10 != (void *)0x0) {\n    operator_delete(pvVar10);\n  }" if (parenthesized_expression "(pvVar10 != (void *)0x0)" ( (binary_expression "pvVar10 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    operator_delete(pvVar10);\n  }" { (expression_statement "operator_delete(pvVar10);" (call_expression "operator_delete(pvVar10)" identifier (argument_list "(pvVar10)" ( identifier ))) ;) })) (if_statement "if (puVar13 == (undefined4 *)0x0) {\n    return;\n  }" if (parenthesized_expression "(puVar13 == (undefined4 *)0x0)" ( (binary_expression "puVar13 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "operator_delete(puVar13);" (call_expression "operator_delete(puVar13)" identifier (argument_list "(puVar13)" ( identifier ))) ;) (return_statement "return;" return ;) (ERROR "}" }))
(translation_unit "void FUN_0029ee20(long *param_1,long *param_2,uint param_3,undefined8 *param_4,int *param_5)\n\n{\n  int *piVar1;\n  long *plVar2;\n  int iVar3;\n  uint uVar4;\n  byte bVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  long lVar9;\n  long lVar10;\n  uint *puVar11;\n  undefined4 *puVar12;\n  undefined4 *puVar13;\n  long lVar14;\n  uint uVar15;\n  int iVar16;\n  long lVar17;\n  int *piVar18;\n  ulong uVar19;\n  uint *puVar20;\n  long lVar21;\n  ulong uVar22;\n  bool bVar23;\n  uint local_70;\n  uint local_6c;\n  uint local_40;\n  \n  if (param_1[1] == *param_1) {\n    puVar12 = (undefined4 *)thunk_FUN_002d94a0(0x18);\n    *puVar12 = 1;\n    puVar12[1] = param_3;\n    *(undefined8 *)(puVar12 + 2) = 1;\n    *param_5 = 0x18;\n    *(undefined8 *)(puVar12 + 4) = 0;\n    *param_4 = puVar12;\n    return;\n  }\n  uVar6 = FUN_0029a210(param_2,1);\n  uVar7 = (uint)(param_1[1] - *param_1 >> 3);\n  uVar8 = uVar7 >> 1;\n  if (uVar8 == 0) {\nLAB_0029f178:\n    local_40 = 1;\n    lVar9 = 4;\n    uVar19 = 1;\n    local_6c = 0x20;\n    local_70 = 5;\nLAB_0029f19a:\n    puVar12 = (undefined4 *)FUN_002d94a0(lVar9);\n    puVar13 = puVar12;\n    do {\n      *puVar13 = 0;\n      puVar13 = puVar13 + 1;\n    } while (puVar13 != puVar12 + uVar19);\n    if (uVar6 != 0) goto LAB_0029eee8;\nLAB_0029f1cc:\n    lVar10 = 0;\n    lVar9 = 0;\n    if (uVar7 == 0) goto LAB_0029efa3;\nLAB_0029ef4c:\n    lVar14 = 0;\n    lVar21 = *param_2;\n    do {\n      lVar17 = lVar14 * 4;\n      lVar14 = lVar14 + 1;\n      piVar1 = (int *)(lVar9 + ((ulong)*(uint *)(lVar21 + lVar17) % (ulong)uVar6) * 4);\n      *piVar1 = *piVar1 + 1;\n    } while ((uint)lVar14 < uVar7);\n  }\n  else {\n    uVar4 = 1;\n    do {\n      uVar15 = uVar4;\n      uVar8 = uVar8 >> 1;\n      uVar4 = uVar15 + 1;\n    } while (uVar8 != 0);\n    if (uVar15 + 1 < 3) goto LAB_0029f178;\n    bVar5 = (byte)(uVar15 - 1);\n    if ((uVar7 >> (uVar15 - 1 & 0x1f) & 1) == 0) {\n      local_70 = uVar15 + 3;\n      bVar5 = (char)uVar15 - 2;\n    }\n    else {\n      local_70 = uVar15 + 4;\n    }\n    puVar12 = (undefined4 *)0x0;\n    local_6c = 1 << ((byte)local_70 & 0x1f);\n    local_40 = 1 << (bVar5 & 0x1f);\n    uVar19 = (ulong)local_40;\n    if (local_40 != 0) {\n      lVar9 = uVar19 * 4;\n      goto LAB_0029f19a;\n    }\n    if (uVar6 == 0) goto LAB_0029f1cc;\nLAB_0029eee8:\n    lVar10 = (ulong)uVar6 * 4;\n                    \n    lVar9 = FUN_002d94a0(lVar10);\n    uVar19 = 0;\n    do {\n      uVar22 = uVar19;\n      *(undefined4 *)(lVar9 + uVar22 * 4) = 0;\n      uVar19 = uVar22 + 1;\n    } while ((ulong)uVar6 != uVar22 + 1);\n                    \n    lVar10 = FUN_002d94a0(lVar10);\n    uVar19 = 0;\n    do {\n      *(undefined4 *)(lVar10 + uVar19 * 4) = 0;\n      bVar23 = uVar22 != uVar19;\n      uVar19 = uVar19 + 1;\n    } while (bVar23);\n    if (uVar7 != 0) goto LAB_0029ef4c;\n  }\n  if (uVar6 != 0) {\n    uVar19 = 0;\n    uVar8 = param_3;\n    do {\n      *(uint *)(lVar10 + uVar19 * 4) = uVar8;\n      uVar8 = uVar8 + *(int *)(lVar9 + uVar19 * 4);\n      bVar23 = uVar6 - 1 != uVar19;\n      uVar19 = uVar19 + 1;\n    } while (bVar23);\n  }\nLAB_0029efa3:\n                    \n  puVar11 = (uint *)thunk_FUN_002d94a0();\n  lVar21 = (long)puVar11 + (ulong)(local_6c >> 3) + 0x10;\n  *puVar11 = uVar6;\n  puVar11[1] = param_3;\n  puVar11[2] = local_40;\n  puVar11[3] = local_70;\n  if (uVar6 != 0) {\n    uVar19 = 0;\n    do {\n      iVar16 = *(int *)(lVar9 + uVar19 * 4);\n      if (iVar16 != 0) {\n        iVar16 = *(int *)(lVar10 + uVar19 * 4);\n      }\n      *(int *)(lVar21 + uVar19 * 4) = iVar16;\n      bVar23 = uVar6 - 1 != uVar19;\n      uVar19 = uVar19 + 1;\n    } while (bVar23);\n    lVar21 = lVar21 + ((ulong)(uVar6 - 1) + 1) * 4;\n  }\n  if (uVar7 != 0) {\n    param_1 = (long *)*param_1;\n    puVar20 = (uint *)*param_2;\n    plVar2 = param_1 + (ulong)(uVar7 - 1) + 1;\n    do {\n      uVar8 = *puVar20;\n      lVar14 = *param_1;\n      puVar12[uVar8 >> 5 & (local_6c >> 5) - 1] =\n           puVar12[uVar8 >> 5 & (local_6c >> 5) - 1] |\n           1 << ((byte)(uVar8 >> ((byte)local_70 & 0x1f)) & 0x1f) | 1 << ((byte)uVar8 & 0x1f);\n      lVar17 = ((ulong)uVar8 % (ulong)uVar6) * 4;\n      piVar1 = (int *)(lVar9 + lVar17);\n      iVar16 = *piVar1;\n      uVar4 = uVar8 & 0xfffffffe;\n      if (iVar16 == 1) {\n        uVar4 = uVar8 & 0xfffffffe | 1;\n      }\n      piVar18 = (int *)(lVar17 + lVar10);\n      iVar3 = *piVar18;\n      *piVar1 = iVar16 + -1;\n      *(uint *)(lVar21 + (ulong)((iVar3 - param_3) * 4)) = uVar4;\n      if (iVar3 == 0) {\n                    \n                    \n        FUN_0017c650("../../gold/symtab.h",0x1a2,"set_dynsym_index");\n      }\n      *(int *)(lVar14 + 0x20) = iVar3;\n      param_1 = param_1 + 1;\n      puVar20 = puVar20 + 1;\n      *piVar18 = iVar3 + 1;\n    } while (plVar2 != param_1);\n  }\n  if (local_40 != 0) {\n    uVar19 = 0;\n    do {\n      puVar11[uVar19 + 4] = puVar12[uVar19];\n      bVar23 = uVar19 != local_40 - 1;\n      uVar19 = uVar19 + 1;\n    } while (bVar23);\n  }\n  *param_5 = (local_6c >> 3) + (uVar6 + 4 + uVar7) * 4;\n  *param_4 = puVar11;\n  if (lVar10 != 0) {\n    FUN_002dac70(lVar10);\n  }\n  if (lVar9 != 0) {\n    FUN_002dac70(lVar9);\n  }\n  if (puVar12 == (undefined4 *)0x0) {\n    return;\n  }\n  FUN_002dac70(puVar12);\n  return;\n}\n\n" (function_definition "void FUN_0029ee20(long *param_1,long *param_2,uint param_3,undefined8 *param_4,int *param_5)\n\n{\n  int *piVar1;\n  long *plVar2;\n  int iVar3;\n  uint uVar4;\n  byte bVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  long lVar9;\n  long lVar10;\n  uint *puVar11;\n  undefined4 *puVar12;\n  undefined4 *puVar13;\n  long lVar14;\n  uint uVar15;\n  int iVar16;\n  long lVar17;\n  int *piVar18;\n  ulong uVar19;\n  uint *puVar20;\n  long lVar21;\n  ulong uVar22;\n  bool bVar23;\n  uint local_70;\n  uint local_6c;\n  uint local_40;\n  \n  if (param_1[1] == *param_1) {\n    puVar12 = (undefined4 *)thunk_FUN_002d94a0(0x18);\n    *puVar12 = 1;\n    puVar12[1] = param_3;\n    *(undefined8 *)(puVar12 + 2) = 1;\n    *param_5 = 0x18;\n    *(undefined8 *)(puVar12 + 4) = 0;\n    *param_4 = puVar12;\n    return;\n  }\n  uVar6 = FUN_0029a210(param_2,1);\n  uVar7 = (uint)(param_1[1] - *param_1 >> 3);\n  uVar8 = uVar7 >> 1;\n  if (uVar8 == 0) {\nLAB_0029f178:\n    local_40 = 1;\n    lVar9 = 4;\n    uVar19 = 1;\n    local_6c = 0x20;\n    local_70 = 5;\nLAB_0029f19a:\n    puVar12 = (undefined4 *)FUN_002d94a0(lVar9);\n    puVar13 = puVar12;\n    do {\n      *puVar13 = 0;\n      puVar13 = puVar13 + 1;\n    } while (puVar13 != puVar12 + uVar19);\n    if (uVar6 != 0) goto LAB_0029eee8;\nLAB_0029f1cc:\n    lVar10 = 0;\n    lVar9 = 0;\n    if (uVar7 == 0) goto LAB_0029efa3;\nLAB_0029ef4c:\n    lVar14 = 0;\n    lVar21 = *param_2;\n    do {\n      lVar17 = lVar14 * 4;\n      lVar14 = lVar14 + 1;\n      piVar1 = (int *)(lVar9 + ((ulong)*(uint *)(lVar21 + lVar17) % (ulong)uVar6) * 4);\n      *piVar1 = *piVar1 + 1;\n    } while ((uint)lVar14 < uVar7);\n  }\n  else {\n    uVar4 = 1;\n    do {\n      uVar15 = uVar4;\n      uVar8 = uVar8 >> 1;\n      uVar4 = uVar15 + 1;\n    } while (uVar8 != 0);\n    if (uVar15 + 1 < 3) goto LAB_0029f178;\n    bVar5 = (byte)(uVar15 - 1);\n    if ((uVar7 >> (uVar15 - 1 & 0x1f) & 1) == 0) {\n      local_70 = uVar15 + 3;\n      bVar5 = (char)uVar15 - 2;\n    }\n    else {\n      local_70 = uVar15 + 4;\n    }\n    puVar12 = (undefined4 *)0x0;\n    local_6c = 1 << ((byte)local_70 & 0x1f);\n    local_40 = 1 << (bVar5 & 0x1f);\n    uVar19 = (ulong)local_40;\n    if (local_40 != 0) {\n      lVar9 = uVar19 * 4;\n      goto LAB_0029f19a;\n    }\n    if (uVar6 == 0) goto LAB_0029f1cc;\nLAB_0029eee8:\n    lVar10 = (ulong)uVar6 * 4;\n                    \n    lVar9 = FUN_002d94a0(lVar10);\n    uVar19 = 0;\n    do {\n      uVar22 = uVar19;\n      *(undefined4 *)(lVar9 + uVar22 * 4) = 0;\n      uVar19 = uVar22 + 1;\n    } while ((ulong)uVar6 != uVar22 + 1);\n                    \n    lVar10 = FUN_002d94a0(lVar10);\n    uVar19 = 0;\n    do {\n      *(undefined4 *)(lVar10 + uVar19 * 4) = 0;\n      bVar23 = uVar22 != uVar19;\n      uVar19 = uVar19 + 1;\n    } while (bVar23);\n    if (uVar7 != 0) goto LAB_0029ef4c;\n  }\n  if (uVar6 != 0) {\n    uVar19 = 0;\n    uVar8 = param_3;\n    do {\n      *(uint *)(lVar10 + uVar19 * 4) = uVar8;\n      uVar8 = uVar8 + *(int *)(lVar9 + uVar19 * 4);\n      bVar23 = uVar6 - 1 != uVar19;\n      uVar19 = uVar19 + 1;\n    } while (bVar23);\n  }\nLAB_0029efa3:\n                    \n  puVar11 = (uint *)thunk_FUN_002d94a0();\n  lVar21 = (long)puVar11 + (ulong)(local_6c >> 3) + 0x10;\n  *puVar11 = uVar6;\n  puVar11[1] = param_3;\n  puVar11[2] = local_40;\n  puVar11[3] = local_70;\n  if (uVar6 != 0) {\n    uVar19 = 0;\n    do {\n      iVar16 = *(int *)(lVar9 + uVar19 * 4);\n      if (iVar16 != 0) {\n        iVar16 = *(int *)(lVar10 + uVar19 * 4);\n      }\n      *(int *)(lVar21 + uVar19 * 4) = iVar16;\n      bVar23 = uVar6 - 1 != uVar19;\n      uVar19 = uVar19 + 1;\n    } while (bVar23);\n    lVar21 = lVar21 + ((ulong)(uVar6 - 1) + 1) * 4;\n  }\n  if (uVar7 != 0) {\n    param_1 = (long *)*param_1;\n    puVar20 = (uint *)*param_2;\n    plVar2 = param_1 + (ulong)(uVar7 - 1) + 1;\n    do {\n      uVar8 = *puVar20;\n      lVar14 = *param_1;\n      puVar12[uVar8 >> 5 & (local_6c >> 5) - 1] =\n           puVar12[uVar8 >> 5 & (local_6c >> 5) - 1] |\n           1 << ((byte)(uVar8 >> ((byte)local_70 & 0x1f)) & 0x1f) | 1 << ((byte)uVar8 & 0x1f);\n      lVar17 = ((ulong)uVar8 % (ulong)uVar6) * 4;\n      piVar1 = (int *)(lVar9 + lVar17);\n      iVar16 = *piVar1;\n      uVar4 = uVar8 & 0xfffffffe;\n      if (iVar16 == 1) {\n        uVar4 = uVar8 & 0xfffffffe | 1;\n      }\n      piVar18 = (int *)(lVar17 + lVar10);\n      iVar3 = *piVar18;\n      *piVar1 = iVar16 + -1;\n      *(uint *)(lVar21 + (ulong)((iVar3 - param_3) * 4)) = uVar4;\n      if (iVar3 == 0) {\n                    \n                    \n        FUN_0017c650("../../gold/symtab.h",0x1a2,"set_dynsym_index");\n      }\n      *(int *)(lVar14 + 0x20) = iVar3;\n      param_1 = param_1 + 1;\n      puVar20 = puVar20 + 1;\n      *piVar18 = iVar3 + 1;\n    } while (plVar2 != param_1);\n  }\n  if (local_40 != 0) {\n    uVar19 = 0;\n    do {\n      puVar11[uVar19 + 4] = puVar12[uVar19];\n      bVar23 = uVar19 != local_40 - 1;\n      uVar19 = uVar19 + 1;\n    } while (bVar23);\n  }\n  *param_5 = (local_6c >> 3) + (uVar6 + 4 + uVar7) * 4;\n  *param_4 = puVar11;\n  if (lVar10 != 0) {\n    FUN_002dac70(lVar10);\n  }\n  if (lVar9 != 0) {\n    FUN_002dac70(lVar9);\n  }\n  if (puVar12 == (undefined4 *)0x0) {\n    return;\n  }\n  FUN_002dac70(puVar12);\n  return;\n}" primitive_type (function_declarator "FUN_0029ee20(long *param_1,long *param_2,uint param_3,undefined8 *param_4,int *param_5)" identifier (parameter_list "(long *param_1,long *param_2,uint param_3,undefined8 *param_4,int *param_5)" ( (parameter_declaration "long *param_1" (sized_type_specifier "long" long) (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "long *param_2" (sized_type_specifier "long" long) (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "uint param_3" type_identifier identifier) , (parameter_declaration "undefined8 *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "int *param_5" primitive_type (pointer_declarator "*param_5" * identifier)) ))) (compound_statement "{\n  int *piVar1;\n  long *plVar2;\n  int iVar3;\n  uint uVar4;\n  byte bVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  long lVar9;\n  long lVar10;\n  uint *puVar11;\n  undefined4 *puVar12;\n  undefined4 *puVar13;\n  long lVar14;\n  uint uVar15;\n  int iVar16;\n  long lVar17;\n  int *piVar18;\n  ulong uVar19;\n  uint *puVar20;\n  long lVar21;\n  ulong uVar22;\n  bool bVar23;\n  uint local_70;\n  uint local_6c;\n  uint local_40;\n  \n  if (param_1[1] == *param_1) {\n    puVar12 = (undefined4 *)thunk_FUN_002d94a0(0x18);\n    *puVar12 = 1;\n    puVar12[1] = param_3;\n    *(undefined8 *)(puVar12 + 2) = 1;\n    *param_5 = 0x18;\n    *(undefined8 *)(puVar12 + 4) = 0;\n    *param_4 = puVar12;\n    return;\n  }\n  uVar6 = FUN_0029a210(param_2,1);\n  uVar7 = (uint)(param_1[1] - *param_1 >> 3);\n  uVar8 = uVar7 >> 1;\n  if (uVar8 == 0) {\nLAB_0029f178:\n    local_40 = 1;\n    lVar9 = 4;\n    uVar19 = 1;\n    local_6c = 0x20;\n    local_70 = 5;\nLAB_0029f19a:\n    puVar12 = (undefined4 *)FUN_002d94a0(lVar9);\n    puVar13 = puVar12;\n    do {\n      *puVar13 = 0;\n      puVar13 = puVar13 + 1;\n    } while (puVar13 != puVar12 + uVar19);\n    if (uVar6 != 0) goto LAB_0029eee8;\nLAB_0029f1cc:\n    lVar10 = 0;\n    lVar9 = 0;\n    if (uVar7 == 0) goto LAB_0029efa3;\nLAB_0029ef4c:\n    lVar14 = 0;\n    lVar21 = *param_2;\n    do {\n      lVar17 = lVar14 * 4;\n      lVar14 = lVar14 + 1;\n      piVar1 = (int *)(lVar9 + ((ulong)*(uint *)(lVar21 + lVar17) % (ulong)uVar6) * 4);\n      *piVar1 = *piVar1 + 1;\n    } while ((uint)lVar14 < uVar7);\n  }\n  else {\n    uVar4 = 1;\n    do {\n      uVar15 = uVar4;\n      uVar8 = uVar8 >> 1;\n      uVar4 = uVar15 + 1;\n    } while (uVar8 != 0);\n    if (uVar15 + 1 < 3) goto LAB_0029f178;\n    bVar5 = (byte)(uVar15 - 1);\n    if ((uVar7 >> (uVar15 - 1 & 0x1f) & 1) == 0) {\n      local_70 = uVar15 + 3;\n      bVar5 = (char)uVar15 - 2;\n    }\n    else {\n      local_70 = uVar15 + 4;\n    }\n    puVar12 = (undefined4 *)0x0;\n    local_6c = 1 << ((byte)local_70 & 0x1f);\n    local_40 = 1 << (bVar5 & 0x1f);\n    uVar19 = (ulong)local_40;\n    if (local_40 != 0) {\n      lVar9 = uVar19 * 4;\n      goto LAB_0029f19a;\n    }\n    if (uVar6 == 0) goto LAB_0029f1cc;\nLAB_0029eee8:\n    lVar10 = (ulong)uVar6 * 4;\n                    \n    lVar9 = FUN_002d94a0(lVar10);\n    uVar19 = 0;\n    do {\n      uVar22 = uVar19;\n      *(undefined4 *)(lVar9 + uVar22 * 4) = 0;\n      uVar19 = uVar22 + 1;\n    } while ((ulong)uVar6 != uVar22 + 1);\n                    \n    lVar10 = FUN_002d94a0(lVar10);\n    uVar19 = 0;\n    do {\n      *(undefined4 *)(lVar10 + uVar19 * 4) = 0;\n      bVar23 = uVar22 != uVar19;\n      uVar19 = uVar19 + 1;\n    } while (bVar23);\n    if (uVar7 != 0) goto LAB_0029ef4c;\n  }\n  if (uVar6 != 0) {\n    uVar19 = 0;\n    uVar8 = param_3;\n    do {\n      *(uint *)(lVar10 + uVar19 * 4) = uVar8;\n      uVar8 = uVar8 + *(int *)(lVar9 + uVar19 * 4);\n      bVar23 = uVar6 - 1 != uVar19;\n      uVar19 = uVar19 + 1;\n    } while (bVar23);\n  }\nLAB_0029efa3:\n                    \n  puVar11 = (uint *)thunk_FUN_002d94a0();\n  lVar21 = (long)puVar11 + (ulong)(local_6c >> 3) + 0x10;\n  *puVar11 = uVar6;\n  puVar11[1] = param_3;\n  puVar11[2] = local_40;\n  puVar11[3] = local_70;\n  if (uVar6 != 0) {\n    uVar19 = 0;\n    do {\n      iVar16 = *(int *)(lVar9 + uVar19 * 4);\n      if (iVar16 != 0) {\n        iVar16 = *(int *)(lVar10 + uVar19 * 4);\n      }\n      *(int *)(lVar21 + uVar19 * 4) = iVar16;\n      bVar23 = uVar6 - 1 != uVar19;\n      uVar19 = uVar19 + 1;\n    } while (bVar23);\n    lVar21 = lVar21 + ((ulong)(uVar6 - 1) + 1) * 4;\n  }\n  if (uVar7 != 0) {\n    param_1 = (long *)*param_1;\n    puVar20 = (uint *)*param_2;\n    plVar2 = param_1 + (ulong)(uVar7 - 1) + 1;\n    do {\n      uVar8 = *puVar20;\n      lVar14 = *param_1;\n      puVar12[uVar8 >> 5 & (local_6c >> 5) - 1] =\n           puVar12[uVar8 >> 5 & (local_6c >> 5) - 1] |\n           1 << ((byte)(uVar8 >> ((byte)local_70 & 0x1f)) & 0x1f) | 1 << ((byte)uVar8 & 0x1f);\n      lVar17 = ((ulong)uVar8 % (ulong)uVar6) * 4;\n      piVar1 = (int *)(lVar9 + lVar17);\n      iVar16 = *piVar1;\n      uVar4 = uVar8 & 0xfffffffe;\n      if (iVar16 == 1) {\n        uVar4 = uVar8 & 0xfffffffe | 1;\n      }\n      piVar18 = (int *)(lVar17 + lVar10);\n      iVar3 = *piVar18;\n      *piVar1 = iVar16 + -1;\n      *(uint *)(lVar21 + (ulong)((iVar3 - param_3) * 4)) = uVar4;\n      if (iVar3 == 0) {\n                    \n                    \n        FUN_0017c650("../../gold/symtab.h",0x1a2,"set_dynsym_index");\n      }\n      *(int *)(lVar14 + 0x20) = iVar3;\n      param_1 = param_1 + 1;\n      puVar20 = puVar20 + 1;\n      *piVar18 = iVar3 + 1;\n    } while (plVar2 != param_1);\n  }\n  if (local_40 != 0) {\n    uVar19 = 0;\n    do {\n      puVar11[uVar19 + 4] = puVar12[uVar19];\n      bVar23 = uVar19 != local_40 - 1;\n      uVar19 = uVar19 + 1;\n    } while (bVar23);\n  }\n  *param_5 = (local_6c >> 3) + (uVar6 + 4 + uVar7) * 4;\n  *param_4 = puVar11;\n  if (lVar10 != 0) {\n    FUN_002dac70(lVar10);\n  }\n  if (lVar9 != 0) {\n    FUN_002dac70(lVar9);\n  }\n  if (puVar12 == (undefined4 *)0x0) {\n    return;\n  }\n  FUN_002dac70(puVar12);\n  return;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "long *plVar2;" (sized_type_specifier "long" long) (pointer_declarator "*plVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "byte bVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "long lVar9;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar10;" (sized_type_specifier "long" long) identifier ;) (declaration "uint *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "undefined4 *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "undefined4 *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "long lVar14;" (sized_type_specifier "long" long) identifier ;) (declaration "uint uVar15;" type_identifier identifier ;) (declaration "int iVar16;" primitive_type identifier ;) (declaration "long lVar17;" (sized_type_specifier "long" long) identifier ;) (declaration "int *piVar18;" primitive_type (pointer_declarator "*piVar18" * identifier) ;) (declaration "ulong uVar19;" type_identifier identifier ;) (declaration "uint *puVar20;" type_identifier (pointer_declarator "*puVar20" * identifier) ;) (declaration "long lVar21;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar22;" type_identifier identifier ;) (declaration "bool bVar23;" primitive_type identifier ;) (declaration "uint local_70;" type_identifier identifier ;) (declaration "uint local_6c;" type_identifier identifier ;) (declaration "uint local_40;" type_identifier identifier ;) (if_statement "if (param_1[1] == *param_1) {\n    puVar12 = (undefined4 *)thunk_FUN_002d94a0(0x18);\n    *puVar12 = 1;\n    puVar12[1] = param_3;\n    *(undefined8 *)(puVar12 + 2) = 1;\n    *param_5 = 0x18;\n    *(undefined8 *)(puVar12 + 4) = 0;\n    *param_4 = puVar12;\n    return;\n  }" if (parenthesized_expression "(param_1[1] == *param_1)" ( (binary_expression "param_1[1] == *param_1" (subscript_expression "param_1[1]" identifier [ number_literal ]) == (pointer_expression "*param_1" * identifier)) )) (compound_statement "{\n    puVar12 = (undefined4 *)thunk_FUN_002d94a0(0x18);\n    *puVar12 = 1;\n    puVar12[1] = param_3;\n    *(undefined8 *)(puVar12 + 2) = 1;\n    *param_5 = 0x18;\n    *(undefined8 *)(puVar12 + 4) = 0;\n    *param_4 = puVar12;\n    return;\n  }" { (expression_statement "puVar12 = (undefined4 *)thunk_FUN_002d94a0(0x18);" (assignment_expression "puVar12 = (undefined4 *)thunk_FUN_002d94a0(0x18)" identifier = (cast_expression "(undefined4 *)thunk_FUN_002d94a0(0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "thunk_FUN_002d94a0(0x18)" identifier (argument_list "(0x18)" ( number_literal ))))) ;) (expression_statement "*puVar12 = 1;" (assignment_expression "*puVar12 = 1" (pointer_expression "*puVar12" * identifier) = number_literal) ;) (expression_statement "puVar12[1] = param_3;" (assignment_expression "puVar12[1] = param_3" (subscript_expression "puVar12[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined8 *)(puVar12 + 2) = 1;" (assignment_expression "*(undefined8 *)(puVar12 + 2) = 1" (pointer_expression "*(undefined8 *)(puVar12 + 2)" * (cast_expression "(undefined8 *)(puVar12 + 2)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + 2)" ( (binary_expression "puVar12 + 2" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*param_5 = 0x18;" (assignment_expression "*param_5 = 0x18" (pointer_expression "*param_5" * identifier) = number_literal) ;) (expression_statement "*(undefined8 *)(puVar12 + 4) = 0;" (assignment_expression "*(undefined8 *)(puVar12 + 4) = 0" (pointer_expression "*(undefined8 *)(puVar12 + 4)" * (cast_expression "(undefined8 *)(puVar12 + 4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + 4)" ( (binary_expression "puVar12 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*param_4 = puVar12;" (assignment_expression "*param_4 = puVar12" (pointer_expression "*param_4" * identifier) = identifier) ;) (return_statement "return;" return ;) })) (expression_statement "uVar6 = FUN_0029a210(param_2,1);" (assignment_expression "uVar6 = FUN_0029a210(param_2,1)" identifier = (call_expression "FUN_0029a210(param_2,1)" identifier (argument_list "(param_2,1)" ( identifier , number_literal )))) ;) (expression_statement "uVar7 = (uint)(param_1[1] - *param_1 >> 3);" (assignment_expression "uVar7 = (uint)(param_1[1] - *param_1 >> 3)" identifier = (call_expression "(uint)(param_1[1] - *param_1 >> 3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_1[1] - *param_1 >> 3)" ( (binary_expression "param_1[1] - *param_1 >> 3" (binary_expression "param_1[1] - *param_1" (subscript_expression "param_1[1]" identifier [ number_literal ]) - (pointer_expression "*param_1" * identifier)) >> number_literal) )))) ;) (expression_statement "uVar8 = uVar7 >> 1;" (assignment_expression "uVar8 = uVar7 >> 1" identifier = (binary_expression "uVar7 >> 1" identifier >> number_literal)) ;) (if_statement "if (uVar8 == 0) {\nLAB_0029f178:\n    local_40 = 1;\n    lVar9 = 4;\n    uVar19 = 1;\n    local_6c = 0x20;\n    local_70 = 5;\nLAB_0029f19a:\n    puVar12 = (undefined4 *)FUN_002d94a0(lVar9);\n    puVar13 = puVar12;\n    do {\n      *puVar13 = 0;\n      puVar13 = puVar13 + 1;\n    } while (puVar13 != puVar12 + uVar19);\n    if (uVar6 != 0) goto LAB_0029eee8;\nLAB_0029f1cc:\n    lVar10 = 0;\n    lVar9 = 0;\n    if (uVar7 == 0) goto LAB_0029efa3;\nLAB_0029ef4c:\n    lVar14 = 0;\n    lVar21 = *param_2;\n    do {\n      lVar17 = lVar14 * 4;\n      lVar14 = lVar14 + 1;\n      piVar1 = (int *)(lVar9 + ((ulong)*(uint *)(lVar21 + lVar17) % (ulong)uVar6) * 4);\n      *piVar1 = *piVar1 + 1;\n    } while ((uint)lVar14 < uVar7);\n  }\n  else {\n    uVar4 = 1;\n    do {\n      uVar15 = uVar4;\n      uVar8 = uVar8 >> 1;\n      uVar4 = uVar15 + 1;\n    } while (uVar8 != 0);\n    if (uVar15 + 1 < 3) goto LAB_0029f178;\n    bVar5 = (byte)(uVar15 - 1);\n    if ((uVar7 >> (uVar15 - 1 & 0x1f) & 1) == 0) {\n      local_70 = uVar15 + 3;\n      bVar5 = (char)uVar15 - 2;\n    }\n    else {\n      local_70 = uVar15 + 4;\n    }\n    puVar12 = (undefined4 *)0x0;\n    local_6c = 1 << ((byte)local_70 & 0x1f);\n    local_40 = 1 << (bVar5 & 0x1f);\n    uVar19 = (ulong)local_40;\n    if (local_40 != 0) {\n      lVar9 = uVar19 * 4;\n      goto LAB_0029f19a;\n    }\n    if (uVar6 == 0) goto LAB_0029f1cc;\nLAB_0029eee8:\n    lVar10 = (ulong)uVar6 * 4;\n                    \n    lVar9 = FUN_002d94a0(lVar10);\n    uVar19 = 0;\n    do {\n      uVar22 = uVar19;\n      *(undefined4 *)(lVar9 + uVar22 * 4) = 0;\n      uVar19 = uVar22 + 1;\n    } while ((ulong)uVar6 != uVar22 + 1);\n                    \n    lVar10 = FUN_002d94a0(lVar10);\n    uVar19 = 0;\n    do {\n      *(undefined4 *)(lVar10 + uVar19 * 4) = 0;\n      bVar23 = uVar22 != uVar19;\n      uVar19 = uVar19 + 1;\n    } while (bVar23);\n    if (uVar7 != 0) goto LAB_0029ef4c;\n  }" if (parenthesized_expression "(uVar8 == 0)" ( (binary_expression "uVar8 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0029f178:\n    local_40 = 1;\n    lVar9 = 4;\n    uVar19 = 1;\n    local_6c = 0x20;\n    local_70 = 5;\nLAB_0029f19a:\n    puVar12 = (undefined4 *)FUN_002d94a0(lVar9);\n    puVar13 = puVar12;\n    do {\n      *puVar13 = 0;\n      puVar13 = puVar13 + 1;\n    } while (puVar13 != puVar12 + uVar19);\n    if (uVar6 != 0) goto LAB_0029eee8;\nLAB_0029f1cc:\n    lVar10 = 0;\n    lVar9 = 0;\n    if (uVar7 == 0) goto LAB_0029efa3;\nLAB_0029ef4c:\n    lVar14 = 0;\n    lVar21 = *param_2;\n    do {\n      lVar17 = lVar14 * 4;\n      lVar14 = lVar14 + 1;\n      piVar1 = (int *)(lVar9 + ((ulong)*(uint *)(lVar21 + lVar17) % (ulong)uVar6) * 4);\n      *piVar1 = *piVar1 + 1;\n    } while ((uint)lVar14 < uVar7);\n  }" { (labeled_statement "LAB_0029f178:\n    local_40 = 1;" statement_identifier : (expression_statement "local_40 = 1;" (assignment_expression "local_40 = 1" identifier = number_literal) ;)) (expression_statement "lVar9 = 4;" (assignment_expression "lVar9 = 4" identifier = number_literal) ;) (expression_statement "uVar19 = 1;" (assignment_expression "uVar19 = 1" identifier = number_literal) ;) (expression_statement "local_6c = 0x20;" (assignment_expression "local_6c = 0x20" identifier = number_literal) ;) (expression_statement "local_70 = 5;" (assignment_expression "local_70 = 5" identifier = number_literal) ;) (labeled_statement "LAB_0029f19a:\n    puVar12 = (undefined4 *)FUN_002d94a0(lVar9);" statement_identifier : (expression_statement "puVar12 = (undefined4 *)FUN_002d94a0(lVar9);" (assignment_expression "puVar12 = (undefined4 *)FUN_002d94a0(lVar9)" identifier = (cast_expression "(undefined4 *)FUN_002d94a0(lVar9)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d94a0(lVar9)" identifier (argument_list "(lVar9)" ( identifier ))))) ;)) (expression_statement "puVar13 = puVar12;" (assignment_expression "puVar13 = puVar12" identifier = identifier) ;) (do_statement "do {\n      *puVar13 = 0;\n      puVar13 = puVar13 + 1;\n    } while (puVar13 != puVar12 + uVar19);" do (compound_statement "{\n      *puVar13 = 0;\n      puVar13 = puVar13 + 1;\n    }" { (expression_statement "*puVar13 = 0;" (assignment_expression "*puVar13 = 0" (pointer_expression "*puVar13" * identifier) = number_literal) ;) (expression_statement "puVar13 = puVar13 + 1;" (assignment_expression "puVar13 = puVar13 + 1" identifier = (binary_expression "puVar13 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar13 != puVar12 + uVar19)" ( (binary_expression "puVar13 != puVar12 + uVar19" identifier != (binary_expression "puVar12 + uVar19" identifier + identifier)) )) ;) (if_statement "if (uVar6 != 0) goto LAB_0029eee8;" if (parenthesized_expression "(uVar6 != 0)" ( (binary_expression "uVar6 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0029eee8;" goto statement_identifier ;)) (labeled_statement "LAB_0029f1cc:\n    lVar10 = 0;" statement_identifier : (expression_statement "lVar10 = 0;" (assignment_expression "lVar10 = 0" identifier = number_literal) ;)) (expression_statement "lVar9 = 0;" (assignment_expression "lVar9 = 0" identifier = number_literal) ;) (if_statement "if (uVar7 == 0) goto LAB_0029efa3;" if (parenthesized_expression "(uVar7 == 0)" ( (binary_expression "uVar7 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0029efa3;" goto statement_identifier ;)) (labeled_statement "LAB_0029ef4c:\n    lVar14 = 0;" statement_identifier : (expression_statement "lVar14 = 0;" (assignment_expression "lVar14 = 0" identifier = number_literal) ;)) (expression_statement "lVar21 = *param_2;" (assignment_expression "lVar21 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (do_statement "do {\n      lVar17 = lVar14 * 4;\n      lVar14 = lVar14 + 1;\n      piVar1 = (int *)(lVar9 + ((ulong)*(uint *)(lVar21 + lVar17) % (ulong)uVar6) * 4);\n      *piVar1 = *piVar1 + 1;\n    } while ((uint)lVar14 < uVar7);" do (compound_statement "{\n      lVar17 = lVar14 * 4;\n      lVar14 = lVar14 + 1;\n      piVar1 = (int *)(lVar9 + ((ulong)*(uint *)(lVar21 + lVar17) % (ulong)uVar6) * 4);\n      *piVar1 = *piVar1 + 1;\n    }" { (expression_statement "lVar17 = lVar14 * 4;" (assignment_expression "lVar17 = lVar14 * 4" identifier = (binary_expression "lVar14 * 4" identifier * number_literal)) ;) (expression_statement "lVar14 = lVar14 + 1;" (assignment_expression "lVar14 = lVar14 + 1" identifier = (binary_expression "lVar14 + 1" identifier + number_literal)) ;) (expression_statement "piVar1 = (int *)(lVar9 + ((ulong)*(uint *)(lVar21 + lVar17) % (ulong)uVar6) * 4);" (assignment_expression "piVar1 = (int *)(lVar9 + ((ulong)*(uint *)(lVar21 + lVar17) % (ulong)uVar6) * 4)" identifier = (cast_expression "(int *)(lVar9 + ((ulong)*(uint *)(lVar21 + lVar17) % (ulong)uVar6) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar9 + ((ulong)*(uint *)(lVar21 + lVar17) % (ulong)uVar6) * 4)" ( (binary_expression "lVar9 + ((ulong)*(uint *)(lVar21 + lVar17) % (ulong)uVar6) * 4" identifier + (binary_expression "((ulong)*(uint *)(lVar21 + lVar17) % (ulong)uVar6) * 4" (parenthesized_expression "((ulong)*(uint *)(lVar21 + lVar17) % (ulong)uVar6)" ( (binary_expression "(ulong)*(uint *)(lVar21 + lVar17) % (ulong)uVar6" (binary_expression "(ulong)*(uint *)(lVar21 + lVar17)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(uint *)(lVar21 + lVar17)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar21 + lVar17)" ( (binary_expression "lVar21 + lVar17" identifier + identifier) )))) % (cast_expression "(ulong)uVar6" ( (type_descriptor "ulong" type_identifier) ) identifier)) )) * number_literal)) )))) ;) (expression_statement "*piVar1 = *piVar1 + 1;" (assignment_expression "*piVar1 = *piVar1 + 1" (pointer_expression "*piVar1" * identifier) = (binary_expression "*piVar1 + 1" (pointer_expression "*piVar1" * identifier) + number_literal)) ;) }) while (parenthesized_expression "((uint)lVar14 < uVar7)" ( (binary_expression "(uint)lVar14 < uVar7" (cast_expression "(uint)lVar14" ( (type_descriptor "uint" type_identifier) ) identifier) < identifier) )) ;) }) (else_clause "else {\n    uVar4 = 1;\n    do {\n      uVar15 = uVar4;\n      uVar8 = uVar8 >> 1;\n      uVar4 = uVar15 + 1;\n    } while (uVar8 != 0);\n    if (uVar15 + 1 < 3) goto LAB_0029f178;\n    bVar5 = (byte)(uVar15 - 1);\n    if ((uVar7 >> (uVar15 - 1 & 0x1f) & 1) == 0) {\n      local_70 = uVar15 + 3;\n      bVar5 = (char)uVar15 - 2;\n    }\n    else {\n      local_70 = uVar15 + 4;\n    }\n    puVar12 = (undefined4 *)0x0;\n    local_6c = 1 << ((byte)local_70 & 0x1f);\n    local_40 = 1 << (bVar5 & 0x1f);\n    uVar19 = (ulong)local_40;\n    if (local_40 != 0) {\n      lVar9 = uVar19 * 4;\n      goto LAB_0029f19a;\n    }\n    if (uVar6 == 0) goto LAB_0029f1cc;\nLAB_0029eee8:\n    lVar10 = (ulong)uVar6 * 4;\n                    \n    lVar9 = FUN_002d94a0(lVar10);\n    uVar19 = 0;\n    do {\n      uVar22 = uVar19;\n      *(undefined4 *)(lVar9 + uVar22 * 4) = 0;\n      uVar19 = uVar22 + 1;\n    } while ((ulong)uVar6 != uVar22 + 1);\n                    \n    lVar10 = FUN_002d94a0(lVar10);\n    uVar19 = 0;\n    do {\n      *(undefined4 *)(lVar10 + uVar19 * 4) = 0;\n      bVar23 = uVar22 != uVar19;\n      uVar19 = uVar19 + 1;\n    } while (bVar23);\n    if (uVar7 != 0) goto LAB_0029ef4c;\n  }" else (compound_statement "{\n    uVar4 = 1;\n    do {\n      uVar15 = uVar4;\n      uVar8 = uVar8 >> 1;\n      uVar4 = uVar15 + 1;\n    } while (uVar8 != 0);\n    if (uVar15 + 1 < 3) goto LAB_0029f178;\n    bVar5 = (byte)(uVar15 - 1);\n    if ((uVar7 >> (uVar15 - 1 & 0x1f) & 1) == 0) {\n      local_70 = uVar15 + 3;\n      bVar5 = (char)uVar15 - 2;\n    }\n    else {\n      local_70 = uVar15 + 4;\n    }\n    puVar12 = (undefined4 *)0x0;\n    local_6c = 1 << ((byte)local_70 & 0x1f);\n    local_40 = 1 << (bVar5 & 0x1f);\n    uVar19 = (ulong)local_40;\n    if (local_40 != 0) {\n      lVar9 = uVar19 * 4;\n      goto LAB_0029f19a;\n    }\n    if (uVar6 == 0) goto LAB_0029f1cc;\nLAB_0029eee8:\n    lVar10 = (ulong)uVar6 * 4;\n                    \n    lVar9 = FUN_002d94a0(lVar10);\n    uVar19 = 0;\n    do {\n      uVar22 = uVar19;\n      *(undefined4 *)(lVar9 + uVar22 * 4) = 0;\n      uVar19 = uVar22 + 1;\n    } while ((ulong)uVar6 != uVar22 + 1);\n                    \n    lVar10 = FUN_002d94a0(lVar10);\n    uVar19 = 0;\n    do {\n      *(undefined4 *)(lVar10 + uVar19 * 4) = 0;\n      bVar23 = uVar22 != uVar19;\n      uVar19 = uVar19 + 1;\n    } while (bVar23);\n    if (uVar7 != 0) goto LAB_0029ef4c;\n  }" { (expression_statement "uVar4 = 1;" (assignment_expression "uVar4 = 1" identifier = number_literal) ;) (do_statement "do {\n      uVar15 = uVar4;\n      uVar8 = uVar8 >> 1;\n      uVar4 = uVar15 + 1;\n    } while (uVar8 != 0);" do (compound_statement "{\n      uVar15 = uVar4;\n      uVar8 = uVar8 >> 1;\n      uVar4 = uVar15 + 1;\n    }" { (expression_statement "uVar15 = uVar4;" (assignment_expression "uVar15 = uVar4" identifier = identifier) ;) (expression_statement "uVar8 = uVar8 >> 1;" (assignment_expression "uVar8 = uVar8 >> 1" identifier = (binary_expression "uVar8 >> 1" identifier >> number_literal)) ;) (expression_statement "uVar4 = uVar15 + 1;" (assignment_expression "uVar4 = uVar15 + 1" identifier = (binary_expression "uVar15 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar8 != 0)" ( (binary_expression "uVar8 != 0" identifier != number_literal) )) ;) (if_statement "if (uVar15 + 1 < 3) goto LAB_0029f178;" if (parenthesized_expression "(uVar15 + 1 < 3)" ( (binary_expression "uVar15 + 1 < 3" (binary_expression "uVar15 + 1" identifier + number_literal) < number_literal) )) (goto_statement "goto LAB_0029f178;" goto statement_identifier ;)) (expression_statement "bVar5 = (byte)(uVar15 - 1);" (assignment_expression "bVar5 = (byte)(uVar15 - 1)" identifier = (call_expression "(byte)(uVar15 - 1)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar15 - 1)" ( (binary_expression "uVar15 - 1" identifier - number_literal) )))) ;) (if_statement "if ((uVar7 >> (uVar15 - 1 & 0x1f) & 1) == 0) {\n      local_70 = uVar15 + 3;\n      bVar5 = (char)uVar15 - 2;\n    }\n    else {\n      local_70 = uVar15 + 4;\n    }" if (parenthesized_expression "((uVar7 >> (uVar15 - 1 & 0x1f) & 1) == 0)" ( (binary_expression "(uVar7 >> (uVar15 - 1 & 0x1f) & 1) == 0" (parenthesized_expression "(uVar7 >> (uVar15 - 1 & 0x1f) & 1)" ( (binary_expression "uVar7 >> (uVar15 - 1 & 0x1f) & 1" (binary_expression "uVar7 >> (uVar15 - 1 & 0x1f)" identifier >> (parenthesized_expression "(uVar15 - 1 & 0x1f)" ( (binary_expression "uVar15 - 1 & 0x1f" (binary_expression "uVar15 - 1" identifier - number_literal) & number_literal) ))) & number_literal) )) == number_literal) )) (compound_statement "{\n      local_70 = uVar15 + 3;\n      bVar5 = (char)uVar15 - 2;\n    }" { (expression_statement "local_70 = uVar15 + 3;" (assignment_expression "local_70 = uVar15 + 3" identifier = (binary_expression "uVar15 + 3" identifier + number_literal)) ;) (expression_statement "bVar5 = (char)uVar15 - 2;" (assignment_expression "bVar5 = (char)uVar15 - 2" identifier = (binary_expression "(char)uVar15 - 2" (cast_expression "(char)uVar15" ( (type_descriptor "char" primitive_type) ) identifier) - number_literal)) ;) }) (else_clause "else {\n      local_70 = uVar15 + 4;\n    }" else (compound_statement "{\n      local_70 = uVar15 + 4;\n    }" { (expression_statement "local_70 = uVar15 + 4;" (assignment_expression "local_70 = uVar15 + 4" identifier = (binary_expression "uVar15 + 4" identifier + number_literal)) ;) }))) (expression_statement "puVar12 = (undefined4 *)0x0;" (assignment_expression "puVar12 = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_6c = 1 << ((byte)local_70 & 0x1f);" (assignment_expression "local_6c = 1 << ((byte)local_70 & 0x1f)" identifier = (binary_expression "1 << ((byte)local_70 & 0x1f)" number_literal << (parenthesized_expression "((byte)local_70 & 0x1f)" ( (binary_expression "(byte)local_70 & 0x1f" (cast_expression "(byte)local_70" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) (expression_statement "local_40 = 1 << (bVar5 & 0x1f);" (assignment_expression "local_40 = 1 << (bVar5 & 0x1f)" identifier = (binary_expression "1 << (bVar5 & 0x1f)" number_literal << (parenthesized_expression "(bVar5 & 0x1f)" ( (binary_expression "bVar5 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar19 = (ulong)local_40;" (assignment_expression "uVar19 = (ulong)local_40" identifier = (cast_expression "(ulong)local_40" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (if_statement "if (local_40 != 0) {\n      lVar9 = uVar19 * 4;\n      goto LAB_0029f19a;\n    }" if (parenthesized_expression "(local_40 != 0)" ( (binary_expression "local_40 != 0" identifier != number_literal) )) (compound_statement "{\n      lVar9 = uVar19 * 4;\n      goto LAB_0029f19a;\n    }" { (expression_statement "lVar9 = uVar19 * 4;" (assignment_expression "lVar9 = uVar19 * 4" identifier = (binary_expression "uVar19 * 4" identifier * number_literal)) ;) (goto_statement "goto LAB_0029f19a;" goto statement_identifier ;) })) (if_statement "if (uVar6 == 0) goto LAB_0029f1cc;" if (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0029f1cc;" goto statement_identifier ;)) (labeled_statement "LAB_0029eee8:\n    lVar10 = (ulong)uVar6 * 4;" statement_identifier : (expression_statement "lVar10 = (ulong)uVar6 * 4;" (assignment_expression "lVar10 = (ulong)uVar6 * 4" identifier = (binary_expression "(ulong)uVar6 * 4" (cast_expression "(ulong)uVar6" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) ;)) (expression_statement "lVar9 = FUN_002d94a0(lVar10);" (assignment_expression "lVar9 = FUN_002d94a0(lVar10)" identifier = (call_expression "FUN_002d94a0(lVar10)" identifier (argument_list "(lVar10)" ( identifier )))) ;) (expression_statement "uVar19 = 0;" (assignment_expression "uVar19 = 0" identifier = number_literal) ;) (do_statement "do {\n      uVar22 = uVar19;\n      *(undefined4 *)(lVar9 + uVar22 * 4) = 0;\n      uVar19 = uVar22 + 1;\n    } while ((ulong)uVar6 != uVar22 + 1);" do (compound_statement "{\n      uVar22 = uVar19;\n      *(undefined4 *)(lVar9 + uVar22 * 4) = 0;\n      uVar19 = uVar22 + 1;\n    }" { (expression_statement "uVar22 = uVar19;" (assignment_expression "uVar22 = uVar19" identifier = identifier) ;) (expression_statement "*(undefined4 *)(lVar9 + uVar22 * 4) = 0;" (assignment_expression "*(undefined4 *)(lVar9 + uVar22 * 4) = 0" (pointer_expression "*(undefined4 *)(lVar9 + uVar22 * 4)" * (cast_expression "(undefined4 *)(lVar9 + uVar22 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar9 + uVar22 * 4)" ( (binary_expression "lVar9 + uVar22 * 4" identifier + (binary_expression "uVar22 * 4" identifier * number_literal)) )))) = number_literal) ;) (expression_statement "uVar19 = uVar22 + 1;" (assignment_expression "uVar19 = uVar22 + 1" identifier = (binary_expression "uVar22 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((ulong)uVar6 != uVar22 + 1)" ( (binary_expression "(ulong)uVar6 != uVar22 + 1" (cast_expression "(ulong)uVar6" ( (type_descriptor "ulong" type_identifier) ) identifier) != (binary_expression "uVar22 + 1" identifier + number_literal)) )) ;) (expression_statement "lVar10 = FUN_002d94a0(lVar10);" (assignment_expression "lVar10 = FUN_002d94a0(lVar10)" identifier = (call_expression "FUN_002d94a0(lVar10)" identifier (argument_list "(lVar10)" ( identifier )))) ;) (expression_statement "uVar19 = 0;" (assignment_expression "uVar19 = 0" identifier = number_literal) ;) (do_statement "do {\n      *(undefined4 *)(lVar10 + uVar19 * 4) = 0;\n      bVar23 = uVar22 != uVar19;\n      uVar19 = uVar19 + 1;\n    } while (bVar23);" do (compound_statement "{\n      *(undefined4 *)(lVar10 + uVar19 * 4) = 0;\n      bVar23 = uVar22 != uVar19;\n      uVar19 = uVar19 + 1;\n    }" { (expression_statement "*(undefined4 *)(lVar10 + uVar19 * 4) = 0;" (assignment_expression "*(undefined4 *)(lVar10 + uVar19 * 4) = 0" (pointer_expression "*(undefined4 *)(lVar10 + uVar19 * 4)" * (cast_expression "(undefined4 *)(lVar10 + uVar19 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + uVar19 * 4)" ( (binary_expression "lVar10 + uVar19 * 4" identifier + (binary_expression "uVar19 * 4" identifier * number_literal)) )))) = number_literal) ;) (expression_statement "bVar23 = uVar22 != uVar19;" (assignment_expression "bVar23 = uVar22 != uVar19" identifier = (binary_expression "uVar22 != uVar19" identifier != identifier)) ;) (expression_statement "uVar19 = uVar19 + 1;" (assignment_expression "uVar19 = uVar19 + 1" identifier = (binary_expression "uVar19 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar23)" ( identifier )) ;) (if_statement "if (uVar7 != 0) goto LAB_0029ef4c;" if (parenthesized_expression "(uVar7 != 0)" ( (binary_expression "uVar7 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0029ef4c;" goto statement_identifier ;)) }))) (if_statement "if (uVar6 != 0) {\n    uVar19 = 0;\n    uVar8 = param_3;\n    do {\n      *(uint *)(lVar10 + uVar19 * 4) = uVar8;\n      uVar8 = uVar8 + *(int *)(lVar9 + uVar19 * 4);\n      bVar23 = uVar6 - 1 != uVar19;\n      uVar19 = uVar19 + 1;\n    } while (bVar23);\n  }" if (parenthesized_expression "(uVar6 != 0)" ( (binary_expression "uVar6 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar19 = 0;\n    uVar8 = param_3;\n    do {\n      *(uint *)(lVar10 + uVar19 * 4) = uVar8;\n      uVar8 = uVar8 + *(int *)(lVar9 + uVar19 * 4);\n      bVar23 = uVar6 - 1 != uVar19;\n      uVar19 = uVar19 + 1;\n    } while (bVar23);\n  }" { (expression_statement "uVar19 = 0;" (assignment_expression "uVar19 = 0" identifier = number_literal) ;) (expression_statement "uVar8 = param_3;" (assignment_expression "uVar8 = param_3" identifier = identifier) ;) (do_statement "do {\n      *(uint *)(lVar10 + uVar19 * 4) = uVar8;\n      uVar8 = uVar8 + *(int *)(lVar9 + uVar19 * 4);\n      bVar23 = uVar6 - 1 != uVar19;\n      uVar19 = uVar19 + 1;\n    } while (bVar23);" do (compound_statement "{\n      *(uint *)(lVar10 + uVar19 * 4) = uVar8;\n      uVar8 = uVar8 + *(int *)(lVar9 + uVar19 * 4);\n      bVar23 = uVar6 - 1 != uVar19;\n      uVar19 = uVar19 + 1;\n    }" { (expression_statement "*(uint *)(lVar10 + uVar19 * 4) = uVar8;" (assignment_expression "*(uint *)(lVar10 + uVar19 * 4) = uVar8" (pointer_expression "*(uint *)(lVar10 + uVar19 * 4)" * (cast_expression "(uint *)(lVar10 + uVar19 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + uVar19 * 4)" ( (binary_expression "lVar10 + uVar19 * 4" identifier + (binary_expression "uVar19 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "uVar8 = uVar8 + *(int *)(lVar9 + uVar19 * 4);" (assignment_expression "uVar8 = uVar8 + *(int *)(lVar9 + uVar19 * 4)" identifier = (binary_expression "uVar8 + *(int *)(lVar9 + uVar19 * 4)" identifier + (pointer_expression "*(int *)(lVar9 + uVar19 * 4)" * (cast_expression "(int *)(lVar9 + uVar19 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar9 + uVar19 * 4)" ( (binary_expression "lVar9 + uVar19 * 4" identifier + (binary_expression "uVar19 * 4" identifier * number_literal)) )))))) ;) (expression_statement "bVar23 = uVar6 - 1 != uVar19;" (assignment_expression "bVar23 = uVar6 - 1 != uVar19" identifier = (binary_expression "uVar6 - 1 != uVar19" (binary_expression "uVar6 - 1" identifier - number_literal) != identifier)) ;) (expression_statement "uVar19 = uVar19 + 1;" (assignment_expression "uVar19 = uVar19 + 1" identifier = (binary_expression "uVar19 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar23)" ( identifier )) ;) })) (labeled_statement "LAB_0029efa3:\n                    \n  puVar11 = (uint *)thunk_FUN_002d94a0();" statement_identifier : (expression_statement "puVar11 = (uint *)thunk_FUN_002d94a0();" (assignment_expression "puVar11 = (uint *)thunk_FUN_002d94a0()" identifier = (cast_expression "(uint *)thunk_FUN_002d94a0()" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "thunk_FUN_002d94a0()" identifier (argument_list "()" ( ))))) ;)) (expression_statement "lVar21 = (long)puVar11 + (ulong)(local_6c >> 3) + 0x10;" (assignment_expression "lVar21 = (long)puVar11 + (ulong)(local_6c >> 3) + 0x10" identifier = (binary_expression "(long)puVar11 + (ulong)(local_6c >> 3) + 0x10" (binary_expression "(long)puVar11 + (ulong)(local_6c >> 3)" (cast_expression "(long)puVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (call_expression "(ulong)(local_6c >> 3)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(local_6c >> 3)" ( (binary_expression "local_6c >> 3" identifier >> number_literal) )))) + number_literal)) ;) (expression_statement "*puVar11 = uVar6;" (assignment_expression "*puVar11 = uVar6" (pointer_expression "*puVar11" * identifier) = identifier) ;) (expression_statement "puVar11[1] = param_3;" (assignment_expression "puVar11[1] = param_3" (subscript_expression "puVar11[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar11[2] = local_40;" (assignment_expression "puVar11[2] = local_40" (subscript_expression "puVar11[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar11[3] = local_70;" (assignment_expression "puVar11[3] = local_70" (subscript_expression "puVar11[3]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (uVar6 != 0) {\n    uVar19 = 0;\n    do {\n      iVar16 = *(int *)(lVar9 + uVar19 * 4);\n      if (iVar16 != 0) {\n        iVar16 = *(int *)(lVar10 + uVar19 * 4);\n      }\n      *(int *)(lVar21 + uVar19 * 4) = iVar16;\n      bVar23 = uVar6 - 1 != uVar19;\n      uVar19 = uVar19 + 1;\n    } while (bVar23);\n    lVar21 = lVar21 + ((ulong)(uVar6 - 1) + 1) * 4;\n  }" if (parenthesized_expression "(uVar6 != 0)" ( (binary_expression "uVar6 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar19 = 0;\n    do {\n      iVar16 = *(int *)(lVar9 + uVar19 * 4);\n      if (iVar16 != 0) {\n        iVar16 = *(int *)(lVar10 + uVar19 * 4);\n      }\n      *(int *)(lVar21 + uVar19 * 4) = iVar16;\n      bVar23 = uVar6 - 1 != uVar19;\n      uVar19 = uVar19 + 1;\n    } while (bVar23);\n    lVar21 = lVar21 + ((ulong)(uVar6 - 1) + 1) * 4;\n  }" { (expression_statement "uVar19 = 0;" (assignment_expression "uVar19 = 0" identifier = number_literal) ;) (do_statement "do {\n      iVar16 = *(int *)(lVar9 + uVar19 * 4);\n      if (iVar16 != 0) {\n        iVar16 = *(int *)(lVar10 + uVar19 * 4);\n      }\n      *(int *)(lVar21 + uVar19 * 4) = iVar16;\n      bVar23 = uVar6 - 1 != uVar19;\n      uVar19 = uVar19 + 1;\n    } while (bVar23);" do (compound_statement "{\n      iVar16 = *(int *)(lVar9 + uVar19 * 4);\n      if (iVar16 != 0) {\n        iVar16 = *(int *)(lVar10 + uVar19 * 4);\n      }\n      *(int *)(lVar21 + uVar19 * 4) = iVar16;\n      bVar23 = uVar6 - 1 != uVar19;\n      uVar19 = uVar19 + 1;\n    }" { (expression_statement "iVar16 = *(int *)(lVar9 + uVar19 * 4);" (assignment_expression "iVar16 = *(int *)(lVar9 + uVar19 * 4)" identifier = (pointer_expression "*(int *)(lVar9 + uVar19 * 4)" * (cast_expression "(int *)(lVar9 + uVar19 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar9 + uVar19 * 4)" ( (binary_expression "lVar9 + uVar19 * 4" identifier + (binary_expression "uVar19 * 4" identifier * number_literal)) ))))) ;) (if_statement "if (iVar16 != 0) {\n        iVar16 = *(int *)(lVar10 + uVar19 * 4);\n      }" if (parenthesized_expression "(iVar16 != 0)" ( (binary_expression "iVar16 != 0" identifier != number_literal) )) (compound_statement "{\n        iVar16 = *(int *)(lVar10 + uVar19 * 4);\n      }" { (expression_statement "iVar16 = *(int *)(lVar10 + uVar19 * 4);" (assignment_expression "iVar16 = *(int *)(lVar10 + uVar19 * 4)" identifier = (pointer_expression "*(int *)(lVar10 + uVar19 * 4)" * (cast_expression "(int *)(lVar10 + uVar19 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + uVar19 * 4)" ( (binary_expression "lVar10 + uVar19 * 4" identifier + (binary_expression "uVar19 * 4" identifier * number_literal)) ))))) ;) })) (expression_statement "*(int *)(lVar21 + uVar19 * 4) = iVar16;" (assignment_expression "*(int *)(lVar21 + uVar19 * 4) = iVar16" (pointer_expression "*(int *)(lVar21 + uVar19 * 4)" * (cast_expression "(int *)(lVar21 + uVar19 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar21 + uVar19 * 4)" ( (binary_expression "lVar21 + uVar19 * 4" identifier + (binary_expression "uVar19 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "bVar23 = uVar6 - 1 != uVar19;" (assignment_expression "bVar23 = uVar6 - 1 != uVar19" identifier = (binary_expression "uVar6 - 1 != uVar19" (binary_expression "uVar6 - 1" identifier - number_literal) != identifier)) ;) (expression_statement "uVar19 = uVar19 + 1;" (assignment_expression "uVar19 = uVar19 + 1" identifier = (binary_expression "uVar19 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar23)" ( identifier )) ;) (expression_statement "lVar21 = lVar21 + ((ulong)(uVar6 - 1) + 1) * 4;" (assignment_expression "lVar21 = lVar21 + ((ulong)(uVar6 - 1) + 1) * 4" identifier = (binary_expression "lVar21 + ((ulong)(uVar6 - 1) + 1) * 4" identifier + (binary_expression "((ulong)(uVar6 - 1) + 1) * 4" (parenthesized_expression "((ulong)(uVar6 - 1) + 1)" ( (binary_expression "(ulong)(uVar6 - 1) + 1" (call_expression "(ulong)(uVar6 - 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar6 - 1)" ( (binary_expression "uVar6 - 1" identifier - number_literal) ))) + number_literal) )) * number_literal))) ;) })) (if_statement "if (uVar7 != 0) {\n    param_1 = (long *)*param_1;\n    puVar20 = (uint *)*param_2;\n    plVar2 = param_1 + (ulong)(uVar7 - 1) + 1;\n    do {\n      uVar8 = *puVar20;\n      lVar14 = *param_1;\n      puVar12[uVar8 >> 5 & (local_6c >> 5) - 1] =\n           puVar12[uVar8 >> 5 & (local_6c >> 5) - 1] |\n           1 << ((byte)(uVar8 >> ((byte)local_70 & 0x1f)) & 0x1f) | 1 << ((byte)uVar8 & 0x1f);\n      lVar17 = ((ulong)uVar8 % (ulong)uVar6) * 4;\n      piVar1 = (int *)(lVar9 + lVar17);\n      iVar16 = *piVar1;\n      uVar4 = uVar8 & 0xfffffffe;\n      if (iVar16 == 1) {\n        uVar4 = uVar8 & 0xfffffffe | 1;\n      }\n      piVar18 = (int *)(lVar17 + lVar10);\n      iVar3 = *piVar18;\n      *piVar1 = iVar16 + -1;\n      *(uint *)(lVar21 + (ulong)((iVar3 - param_3) * 4)) = uVar4;\n      if (iVar3 == 0) {\n                    \n                    \n        FUN_0017c650("../../gold/symtab.h",0x1a2,"set_dynsym_index");\n      }\n      *(int *)(lVar14 + 0x20) = iVar3;\n      param_1 = param_1 + 1;\n      puVar20 = puVar20 + 1;\n      *piVar18 = iVar3 + 1;\n    } while (plVar2 != param_1);\n  }" if (parenthesized_expression "(uVar7 != 0)" ( (binary_expression "uVar7 != 0" identifier != number_literal) )) (compound_statement "{\n    param_1 = (long *)*param_1;\n    puVar20 = (uint *)*param_2;\n    plVar2 = param_1 + (ulong)(uVar7 - 1) + 1;\n    do {\n      uVar8 = *puVar20;\n      lVar14 = *param_1;\n      puVar12[uVar8 >> 5 & (local_6c >> 5) - 1] =\n           puVar12[uVar8 >> 5 & (local_6c >> 5) - 1] |\n           1 << ((byte)(uVar8 >> ((byte)local_70 & 0x1f)) & 0x1f) | 1 << ((byte)uVar8 & 0x1f);\n      lVar17 = ((ulong)uVar8 % (ulong)uVar6) * 4;\n      piVar1 = (int *)(lVar9 + lVar17);\n      iVar16 = *piVar1;\n      uVar4 = uVar8 & 0xfffffffe;\n      if (iVar16 == 1) {\n        uVar4 = uVar8 & 0xfffffffe | 1;\n      }\n      piVar18 = (int *)(lVar17 + lVar10);\n      iVar3 = *piVar18;\n      *piVar1 = iVar16 + -1;\n      *(uint *)(lVar21 + (ulong)((iVar3 - param_3) * 4)) = uVar4;\n      if (iVar3 == 0) {\n                    \n                    \n        FUN_0017c650("../../gold/symtab.h",0x1a2,"set_dynsym_index");\n      }\n      *(int *)(lVar14 + 0x20) = iVar3;\n      param_1 = param_1 + 1;\n      puVar20 = puVar20 + 1;\n      *piVar18 = iVar3 + 1;\n    } while (plVar2 != param_1);\n  }" { (expression_statement "param_1 = (long *)*param_1;" (assignment_expression "param_1 = (long *)*param_1" identifier = (cast_expression "(long *)*param_1" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "puVar20 = (uint *)*param_2;" (assignment_expression "puVar20 = (uint *)*param_2" identifier = (cast_expression "(uint *)*param_2" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (expression_statement "plVar2 = param_1 + (ulong)(uVar7 - 1) + 1;" (assignment_expression "plVar2 = param_1 + (ulong)(uVar7 - 1) + 1" identifier = (binary_expression "param_1 + (ulong)(uVar7 - 1) + 1" (binary_expression "param_1 + (ulong)(uVar7 - 1)" identifier + (call_expression "(ulong)(uVar7 - 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar7 - 1)" ( (binary_expression "uVar7 - 1" identifier - number_literal) )))) + number_literal)) ;) (do_statement "do {\n      uVar8 = *puVar20;\n      lVar14 = *param_1;\n      puVar12[uVar8 >> 5 & (local_6c >> 5) - 1] =\n           puVar12[uVar8 >> 5 & (local_6c >> 5) - 1] |\n           1 << ((byte)(uVar8 >> ((byte)local_70 & 0x1f)) & 0x1f) | 1 << ((byte)uVar8 & 0x1f);\n      lVar17 = ((ulong)uVar8 % (ulong)uVar6) * 4;\n      piVar1 = (int *)(lVar9 + lVar17);\n      iVar16 = *piVar1;\n      uVar4 = uVar8 & 0xfffffffe;\n      if (iVar16 == 1) {\n        uVar4 = uVar8 & 0xfffffffe | 1;\n      }\n      piVar18 = (int *)(lVar17 + lVar10);\n      iVar3 = *piVar18;\n      *piVar1 = iVar16 + -1;\n      *(uint *)(lVar21 + (ulong)((iVar3 - param_3) * 4)) = uVar4;\n      if (iVar3 == 0) {\n                    \n                    \n        FUN_0017c650("../../gold/symtab.h",0x1a2,"set_dynsym_index");\n      }\n      *(int *)(lVar14 + 0x20) = iVar3;\n      param_1 = param_1 + 1;\n      puVar20 = puVar20 + 1;\n      *piVar18 = iVar3 + 1;\n    } while (plVar2 != param_1);" do (compound_statement "{\n      uVar8 = *puVar20;\n      lVar14 = *param_1;\n      puVar12[uVar8 >> 5 & (local_6c >> 5) - 1] =\n           puVar12[uVar8 >> 5 & (local_6c >> 5) - 1] |\n           1 << ((byte)(uVar8 >> ((byte)local_70 & 0x1f)) & 0x1f) | 1 << ((byte)uVar8 & 0x1f);\n      lVar17 = ((ulong)uVar8 % (ulong)uVar6) * 4;\n      piVar1 = (int *)(lVar9 + lVar17);\n      iVar16 = *piVar1;\n      uVar4 = uVar8 & 0xfffffffe;\n      if (iVar16 == 1) {\n        uVar4 = uVar8 & 0xfffffffe | 1;\n      }\n      piVar18 = (int *)(lVar17 + lVar10);\n      iVar3 = *piVar18;\n      *piVar1 = iVar16 + -1;\n      *(uint *)(lVar21 + (ulong)((iVar3 - param_3) * 4)) = uVar4;\n      if (iVar3 == 0) {\n                    \n                    \n        FUN_0017c650("../../gold/symtab.h",0x1a2,"set_dynsym_index");\n      }\n      *(int *)(lVar14 + 0x20) = iVar3;\n      param_1 = param_1 + 1;\n      puVar20 = puVar20 + 1;\n      *piVar18 = iVar3 + 1;\n    }" { (expression_statement "uVar8 = *puVar20;" (assignment_expression "uVar8 = *puVar20" identifier = (pointer_expression "*puVar20" * identifier)) ;) (expression_statement "lVar14 = *param_1;" (assignment_expression "lVar14 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "puVar12[uVar8 >> 5 & (local_6c >> 5) - 1] =\n           puVar12[uVar8 >> 5 & (local_6c >> 5) - 1] |\n           1 << ((byte)(uVar8 >> ((byte)local_70 & 0x1f)) & 0x1f) | 1 << ((byte)uVar8 & 0x1f);" (assignment_expression "puVar12[uVar8 >> 5 & (local_6c >> 5) - 1] =\n           puVar12[uVar8 >> 5 & (local_6c >> 5) - 1] |\n           1 << ((byte)(uVar8 >> ((byte)local_70 & 0x1f)) & 0x1f) | 1 << ((byte)uVar8 & 0x1f)" (subscript_expression "puVar12[uVar8 >> 5 & (local_6c >> 5) - 1]" identifier [ (binary_expression "uVar8 >> 5 & (local_6c >> 5) - 1" (binary_expression "uVar8 >> 5" identifier >> number_literal) & (binary_expression "(local_6c >> 5) - 1" (parenthesized_expression "(local_6c >> 5)" ( (binary_expression "local_6c >> 5" identifier >> number_literal) )) - number_literal)) ]) = (binary_expression "puVar12[uVar8 >> 5 & (local_6c >> 5) - 1] |\n           1 << ((byte)(uVar8 >> ((byte)local_70 & 0x1f)) & 0x1f) | 1 << ((byte)uVar8 & 0x1f)" (binary_expression "puVar12[uVar8 >> 5 & (local_6c >> 5) - 1] |\n           1 << ((byte)(uVar8 >> ((byte)local_70 & 0x1f)) & 0x1f)" (subscript_expression "puVar12[uVar8 >> 5 & (local_6c >> 5) - 1]" identifier [ (binary_expression "uVar8 >> 5 & (local_6c >> 5) - 1" (binary_expression "uVar8 >> 5" identifier >> number_literal) & (binary_expression "(local_6c >> 5) - 1" (parenthesized_expression "(local_6c >> 5)" ( (binary_expression "local_6c >> 5" identifier >> number_literal) )) - number_literal)) ]) | (binary_expression "1 << ((byte)(uVar8 >> ((byte)local_70 & 0x1f)) & 0x1f)" number_literal << (parenthesized_expression "((byte)(uVar8 >> ((byte)local_70 & 0x1f)) & 0x1f)" ( (binary_expression "(byte)(uVar8 >> ((byte)local_70 & 0x1f)) & 0x1f" (call_expression "(byte)(uVar8 >> ((byte)local_70 & 0x1f))" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar8 >> ((byte)local_70 & 0x1f))" ( (binary_expression "uVar8 >> ((byte)local_70 & 0x1f)" identifier >> (parenthesized_expression "((byte)local_70 & 0x1f)" ( (binary_expression "(byte)local_70 & 0x1f" (cast_expression "(byte)local_70" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))) & number_literal) )))) | (binary_expression "1 << ((byte)uVar8 & 0x1f)" number_literal << (parenthesized_expression "((byte)uVar8 & 0x1f)" ( (binary_expression "(byte)uVar8 & 0x1f" (cast_expression "(byte)uVar8" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))))) ;) (expression_statement "lVar17 = ((ulong)uVar8 % (ulong)uVar6) * 4;" (assignment_expression "lVar17 = ((ulong)uVar8 % (ulong)uVar6) * 4" identifier = (binary_expression "((ulong)uVar8 % (ulong)uVar6) * 4" (parenthesized_expression "((ulong)uVar8 % (ulong)uVar6)" ( (binary_expression "(ulong)uVar8 % (ulong)uVar6" (cast_expression "(ulong)uVar8" ( (type_descriptor "ulong" type_identifier) ) identifier) % (cast_expression "(ulong)uVar6" ( (type_descriptor "ulong" type_identifier) ) identifier)) )) * number_literal)) ;) (expression_statement "piVar1 = (int *)(lVar9 + lVar17);" (assignment_expression "piVar1 = (int *)(lVar9 + lVar17)" identifier = (cast_expression "(int *)(lVar9 + lVar17)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar9 + lVar17)" ( (binary_expression "lVar9 + lVar17" identifier + identifier) )))) ;) (expression_statement "iVar16 = *piVar1;" (assignment_expression "iVar16 = *piVar1" identifier = (pointer_expression "*piVar1" * identifier)) ;) (expression_statement "uVar4 = uVar8 & 0xfffffffe;" (assignment_expression "uVar4 = uVar8 & 0xfffffffe" identifier = (binary_expression "uVar8 & 0xfffffffe" identifier & number_literal)) ;) (if_statement "if (iVar16 == 1) {\n        uVar4 = uVar8 & 0xfffffffe | 1;\n      }" if (parenthesized_expression "(iVar16 == 1)" ( (binary_expression "iVar16 == 1" identifier == number_literal) )) (compound_statement "{\n        uVar4 = uVar8 & 0xfffffffe | 1;\n      }" { (expression_statement "uVar4 = uVar8 & 0xfffffffe | 1;" (assignment_expression "uVar4 = uVar8 & 0xfffffffe | 1" identifier = (binary_expression "uVar8 & 0xfffffffe | 1" (binary_expression "uVar8 & 0xfffffffe" identifier & number_literal) | number_literal)) ;) })) (expression_statement "piVar18 = (int *)(lVar17 + lVar10);" (assignment_expression "piVar18 = (int *)(lVar17 + lVar10)" identifier = (cast_expression "(int *)(lVar17 + lVar10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar17 + lVar10)" ( (binary_expression "lVar17 + lVar10" identifier + identifier) )))) ;) (expression_statement "iVar3 = *piVar18;" (assignment_expression "iVar3 = *piVar18" identifier = (pointer_expression "*piVar18" * identifier)) ;) (expression_statement "*piVar1 = iVar16 + -1;" (assignment_expression "*piVar1 = iVar16 + -1" (pointer_expression "*piVar1" * identifier) = (binary_expression "iVar16 + -1" identifier + number_literal)) ;) (expression_statement "*(uint *)(lVar21 + (ulong)((iVar3 - param_3) * 4)) = uVar4;" (assignment_expression "*(uint *)(lVar21 + (ulong)((iVar3 - param_3) * 4)) = uVar4" (pointer_expression "*(uint *)(lVar21 + (ulong)((iVar3 - param_3) * 4))" * (cast_expression "(uint *)(lVar21 + (ulong)((iVar3 - param_3) * 4))" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar21 + (ulong)((iVar3 - param_3) * 4))" ( (binary_expression "lVar21 + (ulong)((iVar3 - param_3) * 4)" identifier + (call_expression "(ulong)((iVar3 - param_3) * 4)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((iVar3 - param_3) * 4)" ( (binary_expression "(iVar3 - param_3) * 4" (parenthesized_expression "(iVar3 - param_3)" ( (binary_expression "iVar3 - param_3" identifier - identifier) )) * number_literal) )))) )))) = identifier) ;) (if_statement "if (iVar3 == 0) {\n                    \n                    \n        FUN_0017c650("../../gold/symtab.h",0x1a2,"set_dynsym_index");\n      }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n                    \n                    \n        FUN_0017c650("../../gold/symtab.h",0x1a2,"set_dynsym_index");\n      }" { (expression_statement "FUN_0017c650("../../gold/symtab.h",0x1a2,"set_dynsym_index");" (call_expression "FUN_0017c650("../../gold/symtab.h",0x1a2,"set_dynsym_index")" identifier (argument_list "("../../gold/symtab.h",0x1a2,"set_dynsym_index")" ( (string_literal ""../../gold/symtab.h"" " string_content ") , number_literal , (string_literal ""set_dynsym_index"" " string_content ") ))) ;) })) (expression_statement "*(int *)(lVar14 + 0x20) = iVar3;" (assignment_expression "*(int *)(lVar14 + 0x20) = iVar3" (pointer_expression "*(int *)(lVar14 + 0x20)" * (cast_expression "(int *)(lVar14 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar14 + 0x20)" ( (binary_expression "lVar14 + 0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) (expression_statement "puVar20 = puVar20 + 1;" (assignment_expression "puVar20 = puVar20 + 1" identifier = (binary_expression "puVar20 + 1" identifier + number_literal)) ;) (expression_statement "*piVar18 = iVar3 + 1;" (assignment_expression "*piVar18 = iVar3 + 1" (pointer_expression "*piVar18" * identifier) = (binary_expression "iVar3 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(plVar2 != param_1)" ( (binary_expression "plVar2 != param_1" identifier != identifier) )) ;) })) (if_statement "if (local_40 != 0) {\n    uVar19 = 0;\n    do {\n      puVar11[uVar19 + 4] = puVar12[uVar19];\n      bVar23 = uVar19 != local_40 - 1;\n      uVar19 = uVar19 + 1;\n    } while (bVar23);\n  }" if (parenthesized_expression "(local_40 != 0)" ( (binary_expression "local_40 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar19 = 0;\n    do {\n      puVar11[uVar19 + 4] = puVar12[uVar19];\n      bVar23 = uVar19 != local_40 - 1;\n      uVar19 = uVar19 + 1;\n    } while (bVar23);\n  }" { (expression_statement "uVar19 = 0;" (assignment_expression "uVar19 = 0" identifier = number_literal) ;) (do_statement "do {\n      puVar11[uVar19 + 4] = puVar12[uVar19];\n      bVar23 = uVar19 != local_40 - 1;\n      uVar19 = uVar19 + 1;\n    } while (bVar23);" do (compound_statement "{\n      puVar11[uVar19 + 4] = puVar12[uVar19];\n      bVar23 = uVar19 != local_40 - 1;\n      uVar19 = uVar19 + 1;\n    }" { (expression_statement "puVar11[uVar19 + 4] = puVar12[uVar19];" (assignment_expression "puVar11[uVar19 + 4] = puVar12[uVar19]" (subscript_expression "puVar11[uVar19 + 4]" identifier [ (binary_expression "uVar19 + 4" identifier + number_literal) ]) = (subscript_expression "puVar12[uVar19]" identifier [ identifier ])) ;) (expression_statement "bVar23 = uVar19 != local_40 - 1;" (assignment_expression "bVar23 = uVar19 != local_40 - 1" identifier = (binary_expression "uVar19 != local_40 - 1" identifier != (binary_expression "local_40 - 1" identifier - number_literal))) ;) (expression_statement "uVar19 = uVar19 + 1;" (assignment_expression "uVar19 = uVar19 + 1" identifier = (binary_expression "uVar19 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar23)" ( identifier )) ;) })) (expression_statement "*param_5 = (local_6c >> 3) + (uVar6 + 4 + uVar7) * 4;" (assignment_expression "*param_5 = (local_6c >> 3) + (uVar6 + 4 + uVar7) * 4" (pointer_expression "*param_5" * identifier) = (binary_expression "(local_6c >> 3) + (uVar6 + 4 + uVar7) * 4" (parenthesized_expression "(local_6c >> 3)" ( (binary_expression "local_6c >> 3" identifier >> number_literal) )) + (binary_expression "(uVar6 + 4 + uVar7) * 4" (parenthesized_expression "(uVar6 + 4 + uVar7)" ( (binary_expression "uVar6 + 4 + uVar7" (binary_expression "uVar6 + 4" identifier + number_literal) + identifier) )) * number_literal))) ;) (expression_statement "*param_4 = puVar11;" (assignment_expression "*param_4 = puVar11" (pointer_expression "*param_4" * identifier) = identifier) ;) (if_statement "if (lVar10 != 0) {\n    FUN_002dac70(lVar10);\n  }" if (parenthesized_expression "(lVar10 != 0)" ( (binary_expression "lVar10 != 0" identifier != number_literal) )) (compound_statement "{\n    FUN_002dac70(lVar10);\n  }" { (expression_statement "FUN_002dac70(lVar10);" (call_expression "FUN_002dac70(lVar10)" identifier (argument_list "(lVar10)" ( identifier ))) ;) })) (if_statement "if (lVar9 != 0) {\n    FUN_002dac70(lVar9);\n  }" if (parenthesized_expression "(lVar9 != 0)" ( (binary_expression "lVar9 != 0" identifier != number_literal) )) (compound_statement "{\n    FUN_002dac70(lVar9);\n  }" { (expression_statement "FUN_002dac70(lVar9);" (call_expression "FUN_002dac70(lVar9)" identifier (argument_list "(lVar9)" ( identifier ))) ;) })) (if_statement "if (puVar12 == (undefined4 *)0x0) {\n    return;\n  }" if (parenthesized_expression "(puVar12 == (undefined4 *)0x0)" ( (binary_expression "puVar12 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "FUN_002dac70(puVar12);" (call_expression "FUN_002dac70(puVar12)" identifier (argument_list "(puVar12)" ( identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) (pointer_declarator * IDENT)) , (parameter_declaration (sized_type_specifier long) (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (pointer_expression * IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (return_statement return ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) - (pointer_expression * IDENT)) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (binary_expression IDENT + IDENT)) )) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_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 + IDENT) )))) % (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) * LIT)) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < IDENT) )) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) < LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT - LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT >> (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) & LIT) ))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression LIT << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression LIT << (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) != (binary_expression IDENT + LIT)) )) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT != IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT - LIT) != IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;)) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) )))) + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_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 + (binary_expression IDENT * LIT)) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT - LIT) != IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT - LIT) ))) + LIT) )) * LIT))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT - LIT) )))) + LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression (binary_expression IDENT >> LIT) & (binary_expression (parenthesized_expression ( (binary_expression IDENT >> LIT) )) - LIT)) ]) = (binary_expression (binary_expression (subscript_expression IDENT [ (binary_expression (binary_expression IDENT >> LIT) & (binary_expression (parenthesized_expression ( (binary_expression IDENT >> LIT) )) - LIT)) ]) | (binary_expression LIT << (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) ))) ))) & LIT) )))) | (binary_expression LIT << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) % (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) * LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (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 (binary_expression IDENT & LIT) | LIT)) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_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 + (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) * LIT) )))) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) = (subscript_expression IDENT [ IDENT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT != (binary_expression IDENT - LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (parenthesized_expression ( (binary_expression IDENT >> LIT) )) + (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) )) * LIT))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (return_statement return ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (return_statement return ;) })))
(function_definition "void FUN_0029ee20(long *param_1,long *param_2,uint param_3,undefined8 *param_4,int *param_5)\n\n{\n  int *piVar1;\n  long *plVar2;\n  int iVar3;\n  uint uVar4;\n  byte bVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  long lVar9;\n  long lVar10;\n  uint *puVar11;\n  undefined4 *puVar12;\n  undefined4 *puVar13;\n  long lVar14;\n  uint uVar15;\n  int iVar16;\n  long lVar17;\n  int *piVar18;\n  ulong uVar19;\n  uint *puVar20;\n  long lVar21;\n  ulong uVar22;\n  bool bVar23;\n  uint local_70;\n  uint local_6c;\n  uint local_40;\n  \n  if (param_1[1] == *param_1) {\n    puVar12 = (undefined4 *)thunk_FUN_002d94a0(0x18);\n    *puVar12 = 1;\n    puVar12[1] = param_3;\n    *(undefined8 *)(puVar12 + 2) = 1;\n    *param_5 = 0x18;\n    *(undefined8 *)(puVar12 + 4) = 0;\n    *param_4 = puVar12;\n    return;\n  }\n  uVar6 = FUN_0029a210(param_2,1);\n  uVar7 = (uint)(param_1[1] - *param_1 >> 3);\n  uVar8 = uVar7 >> 1;\n  if (uVar8 == 0) {\nLAB_0029f178:\n    local_40 = 1;\n    lVar9 = 4;\n    uVar19 = 1;\n    local_6c = 0x20;\n    local_70 = 5;\nLAB_0029f19a:\n    puVar12 = (undefined4 *)FUN_002d94a0(lVar9);\n    puVar13 = puVar12;\n    do {\n      *puVar13 = 0;\n      puVar13 = puVar13 + 1;\n    } while (puVar13 != puVar12 + uVar19);\n    if (uVar6 != 0) goto LAB_0029eee8;\nLAB_0029f1cc:\n    lVar10 = 0;\n    lVar9 = 0;\n    if (uVar7 == 0) goto LAB_0029efa3;\nLAB_0029ef4c:\n    lVar14 = 0;\n    lVar21 = *param_2;\n    do {\n      lVar17 = lVar14 * 4;\n      lVar14 = lVar14 + 1;\n      piVar1 = (int *)(lVar9 + ((ulong)*(uint *)(lVar21 + lVar17) % (ulong)uVar6) * 4);\n      *piVar1 = *piVar1 + 1;\n    } while ((uint)lVar14 < uVar7);\n  }\n  else {\n    uVar4 = 1;\n    do {\n      uVar15 = uVar4;\n      uVar8 = uVar8 >> 1;\n      uVar4 = uVar15 + 1;\n    } while (uVar8 != 0);\n    if (uVar15 + 1 < 3) goto LAB_0029f178;\n    bVar5 = (byte)(uVar15 - 1);\n    if ((uVar7 >> (uVar15 - 1 & 0x1f) & 1) == 0) {\n      local_70 = uVar15 + 3;\n      bVar5 = (char)uVar15 - 2;\n    }\n    else {\n      local_70 = uVar15 + 4;\n    }\n    puVar12 = (undefined4 *)0x0;\n    local_6c = 1 << ((byte)local_70 & 0x1f);\n    local_40 = 1 << (bVar5 & 0x1f);\n    uVar19 = (ulong)local_40;\n    if (local_40 != 0) {\n      lVar9 = uVar19 * 4;\n      goto LAB_0029f19a;\n    }\n    if (uVar6 == 0) goto LAB_0029f1cc;\nLAB_0029eee8:\n    lVar10 = (ulong)uVar6 * 4;\n                    \n    lVar9 = FUN_002d94a0(lVar10);\n    uVar19 = 0;\n    do {\n      uVar22 = uVar19;\n      *(undefined4 *)(lVar9 + uVar22 * 4) = 0;\n      uVar19 = uVar22 + 1;\n    } while ((ulong)uVar6 != uVar22 + 1);\n                    \n    lVar10 = FUN_002d94a0(lVar10);\n    uVar19 = 0;\n    do {\n      *(undefined4 *)(lVar10 + uVar19 * 4) = 0;\n      bVar23 = uVar22 != uVar19;\n      uVar19 = uVar19 + 1;\n    } while (bVar23);\n    if (uVar7 != 0) goto LAB_0029ef4c;\n  }\n  if (uVar6 != 0) {\n    uVar19 = 0;\n    uVar8 = param_3;\n    do {\n      *(uint *)(lVar10 + uVar19 * 4) = uVar8;\n      uVar8 = uVar8 + *(int *)(lVar9 + uVar19 * 4);\n      bVar23 = uVar6 - 1 != uVar19;\n      uVar19 = uVar19 + 1;\n    } while (bVar23);\n  }\nLAB_0029efa3:\n                    \n  puVar11 = (uint *)thunk_FUN_002d94a0();\n  lVar21 = (long)puVar11 + (ulong)(local_6c >> 3) + 0x10;\n  *puVar11 = uVar6;\n  puVar11[1] = param_3;\n  puVar11[2] = local_40;\n  puVar11[3] = local_70;\n  if (uVar6 != 0) {\n    uVar19 = 0;\n    do {\n      iVar16 = *(int *)(lVar9 + uVar19 * 4);\n      if (iVar16 != 0) {\n        iVar16 = *(int *)(lVar10 + uVar19 * 4);\n      }\n      *(int *)(lVar21 + uVar19 * 4) = iVar16;\n      bVar23 = uVar6 - 1 != uVar19;\n      uVar19 = uVar19 + 1;\n    } while (bVar23);\n    lVar21 = lVar21 + ((ulong)(uVar6 - 1) + 1) * 4;\n  }\n  if (uVar7 != 0) {\n    param_1 = (long *)*param_1;\n    puVar20 = (uint *)*param_2;\n    plVar2 = param_1 + (ulong)(uVar7 - 1) + 1;\n    do {\n      uVar8 = *puVar20;\n      lVar14 = *param_1;\n      puVar12[uVar8 >> 5 & (local_6c >> 5) - 1] =\n           puVar12[uVar8 >> 5 & (local_6c >> 5) - 1] |\n           1 << ((byte)(uVar8 >> ((byte)local_70 & 0x1f)) & 0x1f) | 1 << ((byte)uVar8 & 0x1f);\n      lVar17 = ((ulong)uVar8 % (ulong)uVar6) * 4;\n      piVar1 = (int *)(lVar9 + lVar17);\n      iVar16 = *piVar1;\n      uVar4 = uVar8 & 0xfffffffe;\n      if (iVar16 == 1) {\n        uVar4 = uVar8 & 0xfffffffe | 1;\n      }\n      piVar18 = (int *)(lVar17 + lVar10);\n      iVar3 = *piVar18;\n      *piVar1 = iVar16 + -1;\n      *(uint *)(lVar21 + (ulong)((iVar3 - param_3) * 4)) = uVar4;\n      if (iVar3 == 0) {\n                    \n                    \n        FUN_0017c650("../../gold/symtab.h",0x1a2,"set_dynsym_index");\n      }\n      *(int *)(lVar14 + 0x20) = iVar3;\n      param_1 = param_1 + 1;\n      puVar20 = puVar20 + 1;\n      *piVar18 = iVar3 + 1;\n    } while (plVar2 != param_1);\n  }\n  if (local_40 != 0) {\n    uVar19 = 0;\n    do {\n      puVar11[uVar19 + 4] = puVar12[uVar19];\n      bVar23 = uVar19 != local_40 - 1;\n      uVar19 = uVar19 + 1;\n    } while (bVar23);\n  }\n  *param_5 = (local_6c >> 3) + (uVar6 + 4 + uVar7) * 4;\n  *param_4 = puVar11;\n  if (lVar10 != 0) {\n    FUN_002dac70(lVar10);\n  }\n  if (lVar9 != 0) {\n    FUN_002dac70(lVar9);\n  }\n  if (puVar12 == (undefined4 *)0x0) {\n    return;\n  }\n  FUN_002dac70(puVar12);\n  return;\n}" (primitive_type "void") (function_declarator "FUN_0029ee20(long *param_1,long *param_2,uint param_3,undefined8 *param_4,int *param_5)" (identifier "FUN_0029ee20") (parameter_list "(long *param_1,long *param_2,uint param_3,undefined8 *param_4,int *param_5)" (( "(") (parameter_declaration "long *param_1" (sized_type_specifier "long" (long "long")) (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "long *param_2" (sized_type_specifier "long" (long "long")) (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "uint param_3" (type_identifier "uint") (identifier "param_3")) (, ",") (parameter_declaration "undefined8 *param_4" (type_identifier "undefined8") (pointer_declarator "*param_4" (* "*") (identifier "param_4"))) (, ",") (parameter_declaration "int *param_5" (primitive_type "int") (pointer_declarator "*param_5" (* "*") (identifier "param_5"))) () ")"))) (compound_statement "{\n  int *piVar1;\n  long *plVar2;\n  int iVar3;\n  uint uVar4;\n  byte bVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  long lVar9;\n  long lVar10;\n  uint *puVar11;\n  undefined4 *puVar12;\n  undefined4 *puVar13;\n  long lVar14;\n  uint uVar15;\n  int iVar16;\n  long lVar17;\n  int *piVar18;\n  ulong uVar19;\n  uint *puVar20;\n  long lVar21;\n  ulong uVar22;\n  bool bVar23;\n  uint local_70;\n  uint local_6c;\n  uint local_40;\n  \n  if (param_1[1] == *param_1) {\n    puVar12 = (undefined4 *)thunk_FUN_002d94a0(0x18);\n    *puVar12 = 1;\n    puVar12[1] = param_3;\n    *(undefined8 *)(puVar12 + 2) = 1;\n    *param_5 = 0x18;\n    *(undefined8 *)(puVar12 + 4) = 0;\n    *param_4 = puVar12;\n    return;\n  }\n  uVar6 = FUN_0029a210(param_2,1);\n  uVar7 = (uint)(param_1[1] - *param_1 >> 3);\n  uVar8 = uVar7 >> 1;\n  if (uVar8 == 0) {\nLAB_0029f178:\n    local_40 = 1;\n    lVar9 = 4;\n    uVar19 = 1;\n    local_6c = 0x20;\n    local_70 = 5;\nLAB_0029f19a:\n    puVar12 = (undefined4 *)FUN_002d94a0(lVar9);\n    puVar13 = puVar12;\n    do {\n      *puVar13 = 0;\n      puVar13 = puVar13 + 1;\n    } while (puVar13 != puVar12 + uVar19);\n    if (uVar6 != 0) goto LAB_0029eee8;\nLAB_0029f1cc:\n    lVar10 = 0;\n    lVar9 = 0;\n    if (uVar7 == 0) goto LAB_0029efa3;\nLAB_0029ef4c:\n    lVar14 = 0;\n    lVar21 = *param_2;\n    do {\n      lVar17 = lVar14 * 4;\n      lVar14 = lVar14 + 1;\n      piVar1 = (int *)(lVar9 + ((ulong)*(uint *)(lVar21 + lVar17) % (ulong)uVar6) * 4);\n      *piVar1 = *piVar1 + 1;\n    } while ((uint)lVar14 < uVar7);\n  }\n  else {\n    uVar4 = 1;\n    do {\n      uVar15 = uVar4;\n      uVar8 = uVar8 >> 1;\n      uVar4 = uVar15 + 1;\n    } while (uVar8 != 0);\n    if (uVar15 + 1 < 3) goto LAB_0029f178;\n    bVar5 = (byte)(uVar15 - 1);\n    if ((uVar7 >> (uVar15 - 1 & 0x1f) & 1) == 0) {\n      local_70 = uVar15 + 3;\n      bVar5 = (char)uVar15 - 2;\n    }\n    else {\n      local_70 = uVar15 + 4;\n    }\n    puVar12 = (undefined4 *)0x0;\n    local_6c = 1 << ((byte)local_70 & 0x1f);\n    local_40 = 1 << (bVar5 & 0x1f);\n    uVar19 = (ulong)local_40;\n    if (local_40 != 0) {\n      lVar9 = uVar19 * 4;\n      goto LAB_0029f19a;\n    }\n    if (uVar6 == 0) goto LAB_0029f1cc;\nLAB_0029eee8:\n    lVar10 = (ulong)uVar6 * 4;\n                    \n    lVar9 = FUN_002d94a0(lVar10);\n    uVar19 = 0;\n    do {\n      uVar22 = uVar19;\n      *(undefined4 *)(lVar9 + uVar22 * 4) = 0;\n      uVar19 = uVar22 + 1;\n    } while ((ulong)uVar6 != uVar22 + 1);\n                    \n    lVar10 = FUN_002d94a0(lVar10);\n    uVar19 = 0;\n    do {\n      *(undefined4 *)(lVar10 + uVar19 * 4) = 0;\n      bVar23 = uVar22 != uVar19;\n      uVar19 = uVar19 + 1;\n    } while (bVar23);\n    if (uVar7 != 0) goto LAB_0029ef4c;\n  }\n  if (uVar6 != 0) {\n    uVar19 = 0;\n    uVar8 = param_3;\n    do {\n      *(uint *)(lVar10 + uVar19 * 4) = uVar8;\n      uVar8 = uVar8 + *(int *)(lVar9 + uVar19 * 4);\n      bVar23 = uVar6 - 1 != uVar19;\n      uVar19 = uVar19 + 1;\n    } while (bVar23);\n  }\nLAB_0029efa3:\n                    \n  puVar11 = (uint *)thunk_FUN_002d94a0();\n  lVar21 = (long)puVar11 + (ulong)(local_6c >> 3) + 0x10;\n  *puVar11 = uVar6;\n  puVar11[1] = param_3;\n  puVar11[2] = local_40;\n  puVar11[3] = local_70;\n  if (uVar6 != 0) {\n    uVar19 = 0;\n    do {\n      iVar16 = *(int *)(lVar9 + uVar19 * 4);\n      if (iVar16 != 0) {\n        iVar16 = *(int *)(lVar10 + uVar19 * 4);\n      }\n      *(int *)(lVar21 + uVar19 * 4) = iVar16;\n      bVar23 = uVar6 - 1 != uVar19;\n      uVar19 = uVar19 + 1;\n    } while (bVar23);\n    lVar21 = lVar21 + ((ulong)(uVar6 - 1) + 1) * 4;\n  }\n  if (uVar7 != 0) {\n    param_1 = (long *)*param_1;\n    puVar20 = (uint *)*param_2;\n    plVar2 = param_1 + (ulong)(uVar7 - 1) + 1;\n    do {\n      uVar8 = *puVar20;\n      lVar14 = *param_1;\n      puVar12[uVar8 >> 5 & (local_6c >> 5) - 1] =\n           puVar12[uVar8 >> 5 & (local_6c >> 5) - 1] |\n           1 << ((byte)(uVar8 >> ((byte)local_70 & 0x1f)) & 0x1f) | 1 << ((byte)uVar8 & 0x1f);\n      lVar17 = ((ulong)uVar8 % (ulong)uVar6) * 4;\n      piVar1 = (int *)(lVar9 + lVar17);\n      iVar16 = *piVar1;\n      uVar4 = uVar8 & 0xfffffffe;\n      if (iVar16 == 1) {\n        uVar4 = uVar8 & 0xfffffffe | 1;\n      }\n      piVar18 = (int *)(lVar17 + lVar10);\n      iVar3 = *piVar18;\n      *piVar1 = iVar16 + -1;\n      *(uint *)(lVar21 + (ulong)((iVar3 - param_3) * 4)) = uVar4;\n      if (iVar3 == 0) {\n                    \n                    \n        FUN_0017c650("../../gold/symtab.h",0x1a2,"set_dynsym_index");\n      }\n      *(int *)(lVar14 + 0x20) = iVar3;\n      param_1 = param_1 + 1;\n      puVar20 = puVar20 + 1;\n      *piVar18 = iVar3 + 1;\n    } while (plVar2 != param_1);\n  }\n  if (local_40 != 0) {\n    uVar19 = 0;\n    do {\n      puVar11[uVar19 + 4] = puVar12[uVar19];\n      bVar23 = uVar19 != local_40 - 1;\n      uVar19 = uVar19 + 1;\n    } while (bVar23);\n  }\n  *param_5 = (local_6c >> 3) + (uVar6 + 4 + uVar7) * 4;\n  *param_4 = puVar11;\n  if (lVar10 != 0) {\n    FUN_002dac70(lVar10);\n  }\n  if (lVar9 != 0) {\n    FUN_002dac70(lVar9);\n  }\n  if (puVar12 == (undefined4 *)0x0) {\n    return;\n  }\n  FUN_002dac70(puVar12);\n  return;\n}" ({ "{") (declaration "int *piVar1;" (primitive_type "int") (pointer_declarator "*piVar1" (* "*") (identifier "piVar1")) (; ";")) (declaration "long *plVar2;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar2" (* "*") (identifier "plVar2")) (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "byte bVar5;" (type_identifier "byte") (identifier "bVar5") (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "uint uVar8;" (type_identifier "uint") (identifier "uVar8") (; ";")) (declaration "long lVar9;" (sized_type_specifier "long" (long "long")) (identifier "lVar9") (; ";")) (declaration "long lVar10;" (sized_type_specifier "long" (long "long")) (identifier "lVar10") (; ";")) (declaration "uint *puVar11;" (type_identifier "uint") (pointer_declarator "*puVar11" (* "*") (identifier "puVar11")) (; ";")) (declaration "undefined4 *puVar12;" (type_identifier "undefined4") (pointer_declarator "*puVar12" (* "*") (identifier "puVar12")) (; ";")) (declaration "undefined4 *puVar13;" (type_identifier "undefined4") (pointer_declarator "*puVar13" (* "*") (identifier "puVar13")) (; ";")) (declaration "long lVar14;" (sized_type_specifier "long" (long "long")) (identifier "lVar14") (; ";")) (declaration "uint uVar15;" (type_identifier "uint") (identifier "uVar15") (; ";")) (declaration "int iVar16;" (primitive_type "int") (identifier "iVar16") (; ";")) (declaration "long lVar17;" (sized_type_specifier "long" (long "long")) (identifier "lVar17") (; ";")) (declaration "int *piVar18;" (primitive_type "int") (pointer_declarator "*piVar18" (* "*") (identifier "piVar18")) (; ";")) (declaration "ulong uVar19;" (type_identifier "ulong") (identifier "uVar19") (; ";")) (declaration "uint *puVar20;" (type_identifier "uint") (pointer_declarator "*puVar20" (* "*") (identifier "puVar20")) (; ";")) (declaration "long lVar21;" (sized_type_specifier "long" (long "long")) (identifier "lVar21") (; ";")) (declaration "ulong uVar22;" (type_identifier "ulong") (identifier "uVar22") (; ";")) (declaration "bool bVar23;" (primitive_type "bool") (identifier "bVar23") (; ";")) (declaration "uint local_70;" (type_identifier "uint") (identifier "local_70") (; ";")) (declaration "uint local_6c;" (type_identifier "uint") (identifier "local_6c") (; ";")) (declaration "uint local_40;" (type_identifier "uint") (identifier "local_40") (; ";")) (if_statement "if (param_1[1] == *param_1) {\n    puVar12 = (undefined4 *)thunk_FUN_002d94a0(0x18);\n    *puVar12 = 1;\n    puVar12[1] = param_3;\n    *(undefined8 *)(puVar12 + 2) = 1;\n    *param_5 = 0x18;\n    *(undefined8 *)(puVar12 + 4) = 0;\n    *param_4 = puVar12;\n    return;\n  }" (if "if") (parenthesized_expression "(param_1[1] == *param_1)" (( "(") (binary_expression "param_1[1] == *param_1" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (== "==") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) () ")")) (compound_statement "{\n    puVar12 = (undefined4 *)thunk_FUN_002d94a0(0x18);\n    *puVar12 = 1;\n    puVar12[1] = param_3;\n    *(undefined8 *)(puVar12 + 2) = 1;\n    *param_5 = 0x18;\n    *(undefined8 *)(puVar12 + 4) = 0;\n    *param_4 = puVar12;\n    return;\n  }" ({ "{") (expression_statement "puVar12 = (undefined4 *)thunk_FUN_002d94a0(0x18);" (assignment_expression "puVar12 = (undefined4 *)thunk_FUN_002d94a0(0x18)" (identifier "puVar12") (= "=") (cast_expression "(undefined4 *)thunk_FUN_002d94a0(0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "thunk_FUN_002d94a0(0x18)" (identifier "thunk_FUN_002d94a0") (argument_list "(0x18)" (( "(") (number_literal "0x18") () ")"))))) (; ";")) (expression_statement "*puVar12 = 1;" (assignment_expression "*puVar12 = 1" (pointer_expression "*puVar12" (* "*") (identifier "puVar12")) (= "=") (number_literal "1")) (; ";")) (expression_statement "puVar12[1] = param_3;" (assignment_expression "puVar12[1] = param_3" (subscript_expression "puVar12[1]" (identifier "puVar12") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "param_3")) (; ";")) (expression_statement "*(undefined8 *)(puVar12 + 2) = 1;" (assignment_expression "*(undefined8 *)(puVar12 + 2) = 1" (pointer_expression "*(undefined8 *)(puVar12 + 2)" (* "*") (cast_expression "(undefined8 *)(puVar12 + 2)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar12 + 2)" (( "(") (binary_expression "puVar12 + 2" (identifier "puVar12") (+ "+") (number_literal "2")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "*param_5 = 0x18;" (assignment_expression "*param_5 = 0x18" (pointer_expression "*param_5" (* "*") (identifier "param_5")) (= "=") (number_literal "0x18")) (; ";")) (expression_statement "*(undefined8 *)(puVar12 + 4) = 0;" (assignment_expression "*(undefined8 *)(puVar12 + 4) = 0" (pointer_expression "*(undefined8 *)(puVar12 + 4)" (* "*") (cast_expression "(undefined8 *)(puVar12 + 4)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar12 + 4)" (( "(") (binary_expression "puVar12 + 4" (identifier "puVar12") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*param_4 = puVar12;" (assignment_expression "*param_4 = puVar12" (pointer_expression "*param_4" (* "*") (identifier "param_4")) (= "=") (identifier "puVar12")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "uVar6 = FUN_0029a210(param_2,1);" (assignment_expression "uVar6 = FUN_0029a210(param_2,1)" (identifier "uVar6") (= "=") (call_expression "FUN_0029a210(param_2,1)" (identifier "FUN_0029a210") (argument_list "(param_2,1)" (( "(") (identifier "param_2") (, ",") (number_literal "1") () ")")))) (; ";")) (expression_statement "uVar7 = (uint)(param_1[1] - *param_1 >> 3);" (assignment_expression "uVar7 = (uint)(param_1[1] - *param_1 >> 3)" (identifier "uVar7") (= "=") (call_expression "(uint)(param_1[1] - *param_1 >> 3)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(param_1[1] - *param_1 >> 3)" (( "(") (binary_expression "param_1[1] - *param_1 >> 3" (binary_expression "param_1[1] - *param_1" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (- "-") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (>> ">>") (number_literal "3")) () ")")))) (; ";")) (expression_statement "uVar8 = uVar7 >> 1;" (assignment_expression "uVar8 = uVar7 >> 1" (identifier "uVar8") (= "=") (binary_expression "uVar7 >> 1" (identifier "uVar7") (>> ">>") (number_literal "1"))) (; ";")) (if_statement "if (uVar8 == 0) {\nLAB_0029f178:\n    local_40 = 1;\n    lVar9 = 4;\n    uVar19 = 1;\n    local_6c = 0x20;\n    local_70 = 5;\nLAB_0029f19a:\n    puVar12 = (undefined4 *)FUN_002d94a0(lVar9);\n    puVar13 = puVar12;\n    do {\n      *puVar13 = 0;\n      puVar13 = puVar13 + 1;\n    } while (puVar13 != puVar12 + uVar19);\n    if (uVar6 != 0) goto LAB_0029eee8;\nLAB_0029f1cc:\n    lVar10 = 0;\n    lVar9 = 0;\n    if (uVar7 == 0) goto LAB_0029efa3;\nLAB_0029ef4c:\n    lVar14 = 0;\n    lVar21 = *param_2;\n    do {\n      lVar17 = lVar14 * 4;\n      lVar14 = lVar14 + 1;\n      piVar1 = (int *)(lVar9 + ((ulong)*(uint *)(lVar21 + lVar17) % (ulong)uVar6) * 4);\n      *piVar1 = *piVar1 + 1;\n    } while ((uint)lVar14 < uVar7);\n  }\n  else {\n    uVar4 = 1;\n    do {\n      uVar15 = uVar4;\n      uVar8 = uVar8 >> 1;\n      uVar4 = uVar15 + 1;\n    } while (uVar8 != 0);\n    if (uVar15 + 1 < 3) goto LAB_0029f178;\n    bVar5 = (byte)(uVar15 - 1);\n    if ((uVar7 >> (uVar15 - 1 & 0x1f) & 1) == 0) {\n      local_70 = uVar15 + 3;\n      bVar5 = (char)uVar15 - 2;\n    }\n    else {\n      local_70 = uVar15 + 4;\n    }\n    puVar12 = (undefined4 *)0x0;\n    local_6c = 1 << ((byte)local_70 & 0x1f);\n    local_40 = 1 << (bVar5 & 0x1f);\n    uVar19 = (ulong)local_40;\n    if (local_40 != 0) {\n      lVar9 = uVar19 * 4;\n      goto LAB_0029f19a;\n    }\n    if (uVar6 == 0) goto LAB_0029f1cc;\nLAB_0029eee8:\n    lVar10 = (ulong)uVar6 * 4;\n                    \n    lVar9 = FUN_002d94a0(lVar10);\n    uVar19 = 0;\n    do {\n      uVar22 = uVar19;\n      *(undefined4 *)(lVar9 + uVar22 * 4) = 0;\n      uVar19 = uVar22 + 1;\n    } while ((ulong)uVar6 != uVar22 + 1);\n                    \n    lVar10 = FUN_002d94a0(lVar10);\n    uVar19 = 0;\n    do {\n      *(undefined4 *)(lVar10 + uVar19 * 4) = 0;\n      bVar23 = uVar22 != uVar19;\n      uVar19 = uVar19 + 1;\n    } while (bVar23);\n    if (uVar7 != 0) goto LAB_0029ef4c;\n  }" (if "if") (parenthesized_expression "(uVar8 == 0)" (( "(") (binary_expression "uVar8 == 0" (identifier "uVar8") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_0029f178:\n    local_40 = 1;\n    lVar9 = 4;\n    uVar19 = 1;\n    local_6c = 0x20;\n    local_70 = 5;\nLAB_0029f19a:\n    puVar12 = (undefined4 *)FUN_002d94a0(lVar9);\n    puVar13 = puVar12;\n    do {\n      *puVar13 = 0;\n      puVar13 = puVar13 + 1;\n    } while (puVar13 != puVar12 + uVar19);\n    if (uVar6 != 0) goto LAB_0029eee8;\nLAB_0029f1cc:\n    lVar10 = 0;\n    lVar9 = 0;\n    if (uVar7 == 0) goto LAB_0029efa3;\nLAB_0029ef4c:\n    lVar14 = 0;\n    lVar21 = *param_2;\n    do {\n      lVar17 = lVar14 * 4;\n      lVar14 = lVar14 + 1;\n      piVar1 = (int *)(lVar9 + ((ulong)*(uint *)(lVar21 + lVar17) % (ulong)uVar6) * 4);\n      *piVar1 = *piVar1 + 1;\n    } while ((uint)lVar14 < uVar7);\n  }" ({ "{") (labeled_statement "LAB_0029f178:\n    local_40 = 1;" (statement_identifier "LAB_0029f178") (: ":") (expression_statement "local_40 = 1;" (assignment_expression "local_40 = 1" (identifier "local_40") (= "=") (number_literal "1")) (; ";"))) (expression_statement "lVar9 = 4;" (assignment_expression "lVar9 = 4" (identifier "lVar9") (= "=") (number_literal "4")) (; ";")) (expression_statement "uVar19 = 1;" (assignment_expression "uVar19 = 1" (identifier "uVar19") (= "=") (number_literal "1")) (; ";")) (expression_statement "local_6c = 0x20;" (assignment_expression "local_6c = 0x20" (identifier "local_6c") (= "=") (number_literal "0x20")) (; ";")) (expression_statement "local_70 = 5;" (assignment_expression "local_70 = 5" (identifier "local_70") (= "=") (number_literal "5")) (; ";")) (labeled_statement "LAB_0029f19a:\n    puVar12 = (undefined4 *)FUN_002d94a0(lVar9);" (statement_identifier "LAB_0029f19a") (: ":") (expression_statement "puVar12 = (undefined4 *)FUN_002d94a0(lVar9);" (assignment_expression "puVar12 = (undefined4 *)FUN_002d94a0(lVar9)" (identifier "puVar12") (= "=") (cast_expression "(undefined4 *)FUN_002d94a0(lVar9)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_002d94a0(lVar9)" (identifier "FUN_002d94a0") (argument_list "(lVar9)" (( "(") (identifier "lVar9") () ")"))))) (; ";"))) (expression_statement "puVar13 = puVar12;" (assignment_expression "puVar13 = puVar12" (identifier "puVar13") (= "=") (identifier "puVar12")) (; ";")) (do_statement "do {\n      *puVar13 = 0;\n      puVar13 = puVar13 + 1;\n    } while (puVar13 != puVar12 + uVar19);" (do "do") (compound_statement "{\n      *puVar13 = 0;\n      puVar13 = puVar13 + 1;\n    }" ({ "{") (expression_statement "*puVar13 = 0;" (assignment_expression "*puVar13 = 0" (pointer_expression "*puVar13" (* "*") (identifier "puVar13")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar13 = puVar13 + 1;" (assignment_expression "puVar13 = puVar13 + 1" (identifier "puVar13") (= "=") (binary_expression "puVar13 + 1" (identifier "puVar13") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar13 != puVar12 + uVar19)" (( "(") (binary_expression "puVar13 != puVar12 + uVar19" (identifier "puVar13") (!= "!=") (binary_expression "puVar12 + uVar19" (identifier "puVar12") (+ "+") (identifier "uVar19"))) () ")")) (; ";")) (if_statement "if (uVar6 != 0) goto LAB_0029eee8;" (if "if") (parenthesized_expression "(uVar6 != 0)" (( "(") (binary_expression "uVar6 != 0" (identifier "uVar6") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0029eee8;" (goto "goto") (statement_identifier "LAB_0029eee8") (; ";"))) (labeled_statement "LAB_0029f1cc:\n    lVar10 = 0;" (statement_identifier "LAB_0029f1cc") (: ":") (expression_statement "lVar10 = 0;" (assignment_expression "lVar10 = 0" (identifier "lVar10") (= "=") (number_literal "0")) (; ";"))) (expression_statement "lVar9 = 0;" (assignment_expression "lVar9 = 0" (identifier "lVar9") (= "=") (number_literal "0")) (; ";")) (if_statement "if (uVar7 == 0) goto LAB_0029efa3;" (if "if") (parenthesized_expression "(uVar7 == 0)" (( "(") (binary_expression "uVar7 == 0" (identifier "uVar7") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0029efa3;" (goto "goto") (statement_identifier "LAB_0029efa3") (; ";"))) (labeled_statement "LAB_0029ef4c:\n    lVar14 = 0;" (statement_identifier "LAB_0029ef4c") (: ":") (expression_statement "lVar14 = 0;" (assignment_expression "lVar14 = 0" (identifier "lVar14") (= "=") (number_literal "0")) (; ";"))) (expression_statement "lVar21 = *param_2;" (assignment_expression "lVar21 = *param_2" (identifier "lVar21") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (do_statement "do {\n      lVar17 = lVar14 * 4;\n      lVar14 = lVar14 + 1;\n      piVar1 = (int *)(lVar9 + ((ulong)*(uint *)(lVar21 + lVar17) % (ulong)uVar6) * 4);\n      *piVar1 = *piVar1 + 1;\n    } while ((uint)lVar14 < uVar7);" (do "do") (compound_statement "{\n      lVar17 = lVar14 * 4;\n      lVar14 = lVar14 + 1;\n      piVar1 = (int *)(lVar9 + ((ulong)*(uint *)(lVar21 + lVar17) % (ulong)uVar6) * 4);\n      *piVar1 = *piVar1 + 1;\n    }" ({ "{") (expression_statement "lVar17 = lVar14 * 4;" (assignment_expression "lVar17 = lVar14 * 4" (identifier "lVar17") (= "=") (binary_expression "lVar14 * 4" (identifier "lVar14") (* "*") (number_literal "4"))) (; ";")) (expression_statement "lVar14 = lVar14 + 1;" (assignment_expression "lVar14 = lVar14 + 1" (identifier "lVar14") (= "=") (binary_expression "lVar14 + 1" (identifier "lVar14") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar1 = (int *)(lVar9 + ((ulong)*(uint *)(lVar21 + lVar17) % (ulong)uVar6) * 4);" (assignment_expression "piVar1 = (int *)(lVar9 + ((ulong)*(uint *)(lVar21 + lVar17) % (ulong)uVar6) * 4)" (identifier "piVar1") (= "=") (cast_expression "(int *)(lVar9 + ((ulong)*(uint *)(lVar21 + lVar17) % (ulong)uVar6) * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar9 + ((ulong)*(uint *)(lVar21 + lVar17) % (ulong)uVar6) * 4)" (( "(") (binary_expression "lVar9 + ((ulong)*(uint *)(lVar21 + lVar17) % (ulong)uVar6) * 4" (identifier "lVar9") (+ "+") (binary_expression "((ulong)*(uint *)(lVar21 + lVar17) % (ulong)uVar6) * 4" (parenthesized_expression "((ulong)*(uint *)(lVar21 + lVar17) % (ulong)uVar6)" (( "(") (binary_expression "(ulong)*(uint *)(lVar21 + lVar17) % (ulong)uVar6" (binary_expression "(ulong)*(uint *)(lVar21 + lVar17)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (* "*") (cast_expression "(uint *)(lVar21 + lVar17)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar21 + lVar17)" (( "(") (binary_expression "lVar21 + lVar17" (identifier "lVar21") (+ "+") (identifier "lVar17")) () ")")))) (% "%") (cast_expression "(ulong)uVar6" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar6"))) () ")")) (* "*") (number_literal "4"))) () ")")))) (; ";")) (expression_statement "*piVar1 = *piVar1 + 1;" (assignment_expression "*piVar1 = *piVar1 + 1" (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) (= "=") (binary_expression "*piVar1 + 1" (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((uint)lVar14 < uVar7)" (( "(") (binary_expression "(uint)lVar14 < uVar7" (cast_expression "(uint)lVar14" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "lVar14")) (< "<") (identifier "uVar7")) () ")")) (; ";")) (} "}")) (else_clause "else {\n    uVar4 = 1;\n    do {\n      uVar15 = uVar4;\n      uVar8 = uVar8 >> 1;\n      uVar4 = uVar15 + 1;\n    } while (uVar8 != 0);\n    if (uVar15 + 1 < 3) goto LAB_0029f178;\n    bVar5 = (byte)(uVar15 - 1);\n    if ((uVar7 >> (uVar15 - 1 & 0x1f) & 1) == 0) {\n      local_70 = uVar15 + 3;\n      bVar5 = (char)uVar15 - 2;\n    }\n    else {\n      local_70 = uVar15 + 4;\n    }\n    puVar12 = (undefined4 *)0x0;\n    local_6c = 1 << ((byte)local_70 & 0x1f);\n    local_40 = 1 << (bVar5 & 0x1f);\n    uVar19 = (ulong)local_40;\n    if (local_40 != 0) {\n      lVar9 = uVar19 * 4;\n      goto LAB_0029f19a;\n    }\n    if (uVar6 == 0) goto LAB_0029f1cc;\nLAB_0029eee8:\n    lVar10 = (ulong)uVar6 * 4;\n                    \n    lVar9 = FUN_002d94a0(lVar10);\n    uVar19 = 0;\n    do {\n      uVar22 = uVar19;\n      *(undefined4 *)(lVar9 + uVar22 * 4) = 0;\n      uVar19 = uVar22 + 1;\n    } while ((ulong)uVar6 != uVar22 + 1);\n                    \n    lVar10 = FUN_002d94a0(lVar10);\n    uVar19 = 0;\n    do {\n      *(undefined4 *)(lVar10 + uVar19 * 4) = 0;\n      bVar23 = uVar22 != uVar19;\n      uVar19 = uVar19 + 1;\n    } while (bVar23);\n    if (uVar7 != 0) goto LAB_0029ef4c;\n  }" (else "else") (compound_statement "{\n    uVar4 = 1;\n    do {\n      uVar15 = uVar4;\n      uVar8 = uVar8 >> 1;\n      uVar4 = uVar15 + 1;\n    } while (uVar8 != 0);\n    if (uVar15 + 1 < 3) goto LAB_0029f178;\n    bVar5 = (byte)(uVar15 - 1);\n    if ((uVar7 >> (uVar15 - 1 & 0x1f) & 1) == 0) {\n      local_70 = uVar15 + 3;\n      bVar5 = (char)uVar15 - 2;\n    }\n    else {\n      local_70 = uVar15 + 4;\n    }\n    puVar12 = (undefined4 *)0x0;\n    local_6c = 1 << ((byte)local_70 & 0x1f);\n    local_40 = 1 << (bVar5 & 0x1f);\n    uVar19 = (ulong)local_40;\n    if (local_40 != 0) {\n      lVar9 = uVar19 * 4;\n      goto LAB_0029f19a;\n    }\n    if (uVar6 == 0) goto LAB_0029f1cc;\nLAB_0029eee8:\n    lVar10 = (ulong)uVar6 * 4;\n                    \n    lVar9 = FUN_002d94a0(lVar10);\n    uVar19 = 0;\n    do {\n      uVar22 = uVar19;\n      *(undefined4 *)(lVar9 + uVar22 * 4) = 0;\n      uVar19 = uVar22 + 1;\n    } while ((ulong)uVar6 != uVar22 + 1);\n                    \n    lVar10 = FUN_002d94a0(lVar10);\n    uVar19 = 0;\n    do {\n      *(undefined4 *)(lVar10 + uVar19 * 4) = 0;\n      bVar23 = uVar22 != uVar19;\n      uVar19 = uVar19 + 1;\n    } while (bVar23);\n    if (uVar7 != 0) goto LAB_0029ef4c;\n  }" ({ "{") (expression_statement "uVar4 = 1;" (assignment_expression "uVar4 = 1" (identifier "uVar4") (= "=") (number_literal "1")) (; ";")) (do_statement "do {\n      uVar15 = uVar4;\n      uVar8 = uVar8 >> 1;\n      uVar4 = uVar15 + 1;\n    } while (uVar8 != 0);" (do "do") (compound_statement "{\n      uVar15 = uVar4;\n      uVar8 = uVar8 >> 1;\n      uVar4 = uVar15 + 1;\n    }" ({ "{") (expression_statement "uVar15 = uVar4;" (assignment_expression "uVar15 = uVar4" (identifier "uVar15") (= "=") (identifier "uVar4")) (; ";")) (expression_statement "uVar8 = uVar8 >> 1;" (assignment_expression "uVar8 = uVar8 >> 1" (identifier "uVar8") (= "=") (binary_expression "uVar8 >> 1" (identifier "uVar8") (>> ">>") (number_literal "1"))) (; ";")) (expression_statement "uVar4 = uVar15 + 1;" (assignment_expression "uVar4 = uVar15 + 1" (identifier "uVar4") (= "=") (binary_expression "uVar15 + 1" (identifier "uVar15") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar8 != 0)" (( "(") (binary_expression "uVar8 != 0" (identifier "uVar8") (!= "!=") (number_literal "0")) () ")")) (; ";")) (if_statement "if (uVar15 + 1 < 3) goto LAB_0029f178;" (if "if") (parenthesized_expression "(uVar15 + 1 < 3)" (( "(") (binary_expression "uVar15 + 1 < 3" (binary_expression "uVar15 + 1" (identifier "uVar15") (+ "+") (number_literal "1")) (< "<") (number_literal "3")) () ")")) (goto_statement "goto LAB_0029f178;" (goto "goto") (statement_identifier "LAB_0029f178") (; ";"))) (expression_statement "bVar5 = (byte)(uVar15 - 1);" (assignment_expression "bVar5 = (byte)(uVar15 - 1)" (identifier "bVar5") (= "=") (call_expression "(byte)(uVar15 - 1)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(uVar15 - 1)" (( "(") (binary_expression "uVar15 - 1" (identifier "uVar15") (- "-") (number_literal "1")) () ")")))) (; ";")) (if_statement "if ((uVar7 >> (uVar15 - 1 & 0x1f) & 1) == 0) {\n      local_70 = uVar15 + 3;\n      bVar5 = (char)uVar15 - 2;\n    }\n    else {\n      local_70 = uVar15 + 4;\n    }" (if "if") (parenthesized_expression "((uVar7 >> (uVar15 - 1 & 0x1f) & 1) == 0)" (( "(") (binary_expression "(uVar7 >> (uVar15 - 1 & 0x1f) & 1) == 0" (parenthesized_expression "(uVar7 >> (uVar15 - 1 & 0x1f) & 1)" (( "(") (binary_expression "uVar7 >> (uVar15 - 1 & 0x1f) & 1" (binary_expression "uVar7 >> (uVar15 - 1 & 0x1f)" (identifier "uVar7") (>> ">>") (parenthesized_expression "(uVar15 - 1 & 0x1f)" (( "(") (binary_expression "uVar15 - 1 & 0x1f" (binary_expression "uVar15 - 1" (identifier "uVar15") (- "-") (number_literal "1")) (& "&") (number_literal "0x1f")) () ")"))) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      local_70 = uVar15 + 3;\n      bVar5 = (char)uVar15 - 2;\n    }" ({ "{") (expression_statement "local_70 = uVar15 + 3;" (assignment_expression "local_70 = uVar15 + 3" (identifier "local_70") (= "=") (binary_expression "uVar15 + 3" (identifier "uVar15") (+ "+") (number_literal "3"))) (; ";")) (expression_statement "bVar5 = (char)uVar15 - 2;" (assignment_expression "bVar5 = (char)uVar15 - 2" (identifier "bVar5") (= "=") (binary_expression "(char)uVar15 - 2" (cast_expression "(char)uVar15" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar15")) (- "-") (number_literal "2"))) (; ";")) (} "}")) (else_clause "else {\n      local_70 = uVar15 + 4;\n    }" (else "else") (compound_statement "{\n      local_70 = uVar15 + 4;\n    }" ({ "{") (expression_statement "local_70 = uVar15 + 4;" (assignment_expression "local_70 = uVar15 + 4" (identifier "local_70") (= "=") (binary_expression "uVar15 + 4" (identifier "uVar15") (+ "+") (number_literal "4"))) (; ";")) (} "}")))) (expression_statement "puVar12 = (undefined4 *)0x0;" (assignment_expression "puVar12 = (undefined4 *)0x0" (identifier "puVar12") (= "=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "local_6c = 1 << ((byte)local_70 & 0x1f);" (assignment_expression "local_6c = 1 << ((byte)local_70 & 0x1f)" (identifier "local_6c") (= "=") (binary_expression "1 << ((byte)local_70 & 0x1f)" (number_literal "1") (<< "<<") (parenthesized_expression "((byte)local_70 & 0x1f)" (( "(") (binary_expression "(byte)local_70 & 0x1f" (cast_expression "(byte)local_70" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "local_70")) (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "local_40 = 1 << (bVar5 & 0x1f);" (assignment_expression "local_40 = 1 << (bVar5 & 0x1f)" (identifier "local_40") (= "=") (binary_expression "1 << (bVar5 & 0x1f)" (number_literal "1") (<< "<<") (parenthesized_expression "(bVar5 & 0x1f)" (( "(") (binary_expression "bVar5 & 0x1f" (identifier "bVar5") (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "uVar19 = (ulong)local_40;" (assignment_expression "uVar19 = (ulong)local_40" (identifier "uVar19") (= "=") (cast_expression "(ulong)local_40" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "local_40"))) (; ";")) (if_statement "if (local_40 != 0) {\n      lVar9 = uVar19 * 4;\n      goto LAB_0029f19a;\n    }" (if "if") (parenthesized_expression "(local_40 != 0)" (( "(") (binary_expression "local_40 != 0" (identifier "local_40") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      lVar9 = uVar19 * 4;\n      goto LAB_0029f19a;\n    }" ({ "{") (expression_statement "lVar9 = uVar19 * 4;" (assignment_expression "lVar9 = uVar19 * 4" (identifier "lVar9") (= "=") (binary_expression "uVar19 * 4" (identifier "uVar19") (* "*") (number_literal "4"))) (; ";")) (goto_statement "goto LAB_0029f19a;" (goto "goto") (statement_identifier "LAB_0029f19a") (; ";")) (} "}"))) (if_statement "if (uVar6 == 0) goto LAB_0029f1cc;" (if "if") (parenthesized_expression "(uVar6 == 0)" (( "(") (binary_expression "uVar6 == 0" (identifier "uVar6") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0029f1cc;" (goto "goto") (statement_identifier "LAB_0029f1cc") (; ";"))) (labeled_statement "LAB_0029eee8:\n    lVar10 = (ulong)uVar6 * 4;" (statement_identifier "LAB_0029eee8") (: ":") (expression_statement "lVar10 = (ulong)uVar6 * 4;" (assignment_expression "lVar10 = (ulong)uVar6 * 4" (identifier "lVar10") (= "=") (binary_expression "(ulong)uVar6 * 4" (cast_expression "(ulong)uVar6" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar6")) (* "*") (number_literal "4"))) (; ";"))) (expression_statement "lVar9 = FUN_002d94a0(lVar10);" (assignment_expression "lVar9 = FUN_002d94a0(lVar10)" (identifier "lVar9") (= "=") (call_expression "FUN_002d94a0(lVar10)" (identifier "FUN_002d94a0") (argument_list "(lVar10)" (( "(") (identifier "lVar10") () ")")))) (; ";")) (expression_statement "uVar19 = 0;" (assignment_expression "uVar19 = 0" (identifier "uVar19") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n      uVar22 = uVar19;\n      *(undefined4 *)(lVar9 + uVar22 * 4) = 0;\n      uVar19 = uVar22 + 1;\n    } while ((ulong)uVar6 != uVar22 + 1);" (do "do") (compound_statement "{\n      uVar22 = uVar19;\n      *(undefined4 *)(lVar9 + uVar22 * 4) = 0;\n      uVar19 = uVar22 + 1;\n    }" ({ "{") (expression_statement "uVar22 = uVar19;" (assignment_expression "uVar22 = uVar19" (identifier "uVar22") (= "=") (identifier "uVar19")) (; ";")) (expression_statement "*(undefined4 *)(lVar9 + uVar22 * 4) = 0;" (assignment_expression "*(undefined4 *)(lVar9 + uVar22 * 4) = 0" (pointer_expression "*(undefined4 *)(lVar9 + uVar22 * 4)" (* "*") (cast_expression "(undefined4 *)(lVar9 + uVar22 * 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar9 + uVar22 * 4)" (( "(") (binary_expression "lVar9 + uVar22 * 4" (identifier "lVar9") (+ "+") (binary_expression "uVar22 * 4" (identifier "uVar22") (* "*") (number_literal "4"))) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar19 = uVar22 + 1;" (assignment_expression "uVar19 = uVar22 + 1" (identifier "uVar19") (= "=") (binary_expression "uVar22 + 1" (identifier "uVar22") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((ulong)uVar6 != uVar22 + 1)" (( "(") (binary_expression "(ulong)uVar6 != uVar22 + 1" (cast_expression "(ulong)uVar6" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar6")) (!= "!=") (binary_expression "uVar22 + 1" (identifier "uVar22") (+ "+") (number_literal "1"))) () ")")) (; ";")) (expression_statement "lVar10 = FUN_002d94a0(lVar10);" (assignment_expression "lVar10 = FUN_002d94a0(lVar10)" (identifier "lVar10") (= "=") (call_expression "FUN_002d94a0(lVar10)" (identifier "FUN_002d94a0") (argument_list "(lVar10)" (( "(") (identifier "lVar10") () ")")))) (; ";")) (expression_statement "uVar19 = 0;" (assignment_expression "uVar19 = 0" (identifier "uVar19") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n      *(undefined4 *)(lVar10 + uVar19 * 4) = 0;\n      bVar23 = uVar22 != uVar19;\n      uVar19 = uVar19 + 1;\n    } while (bVar23);" (do "do") (compound_statement "{\n      *(undefined4 *)(lVar10 + uVar19 * 4) = 0;\n      bVar23 = uVar22 != uVar19;\n      uVar19 = uVar19 + 1;\n    }" ({ "{") (expression_statement "*(undefined4 *)(lVar10 + uVar19 * 4) = 0;" (assignment_expression "*(undefined4 *)(lVar10 + uVar19 * 4) = 0" (pointer_expression "*(undefined4 *)(lVar10 + uVar19 * 4)" (* "*") (cast_expression "(undefined4 *)(lVar10 + uVar19 * 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar10 + uVar19 * 4)" (( "(") (binary_expression "lVar10 + uVar19 * 4" (identifier "lVar10") (+ "+") (binary_expression "uVar19 * 4" (identifier "uVar19") (* "*") (number_literal "4"))) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "bVar23 = uVar22 != uVar19;" (assignment_expression "bVar23 = uVar22 != uVar19" (identifier "bVar23") (= "=") (binary_expression "uVar22 != uVar19" (identifier "uVar22") (!= "!=") (identifier "uVar19"))) (; ";")) (expression_statement "uVar19 = uVar19 + 1;" (assignment_expression "uVar19 = uVar19 + 1" (identifier "uVar19") (= "=") (binary_expression "uVar19 + 1" (identifier "uVar19") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar23)" (( "(") (identifier "bVar23") () ")")) (; ";")) (if_statement "if (uVar7 != 0) goto LAB_0029ef4c;" (if "if") (parenthesized_expression "(uVar7 != 0)" (( "(") (binary_expression "uVar7 != 0" (identifier "uVar7") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0029ef4c;" (goto "goto") (statement_identifier "LAB_0029ef4c") (; ";"))) (} "}")))) (if_statement "if (uVar6 != 0) {\n    uVar19 = 0;\n    uVar8 = param_3;\n    do {\n      *(uint *)(lVar10 + uVar19 * 4) = uVar8;\n      uVar8 = uVar8 + *(int *)(lVar9 + uVar19 * 4);\n      bVar23 = uVar6 - 1 != uVar19;\n      uVar19 = uVar19 + 1;\n    } while (bVar23);\n  }" (if "if") (parenthesized_expression "(uVar6 != 0)" (( "(") (binary_expression "uVar6 != 0" (identifier "uVar6") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    uVar19 = 0;\n    uVar8 = param_3;\n    do {\n      *(uint *)(lVar10 + uVar19 * 4) = uVar8;\n      uVar8 = uVar8 + *(int *)(lVar9 + uVar19 * 4);\n      bVar23 = uVar6 - 1 != uVar19;\n      uVar19 = uVar19 + 1;\n    } while (bVar23);\n  }" ({ "{") (expression_statement "uVar19 = 0;" (assignment_expression "uVar19 = 0" (identifier "uVar19") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar8 = param_3;" (assignment_expression "uVar8 = param_3" (identifier "uVar8") (= "=") (identifier "param_3")) (; ";")) (do_statement "do {\n      *(uint *)(lVar10 + uVar19 * 4) = uVar8;\n      uVar8 = uVar8 + *(int *)(lVar9 + uVar19 * 4);\n      bVar23 = uVar6 - 1 != uVar19;\n      uVar19 = uVar19 + 1;\n    } while (bVar23);" (do "do") (compound_statement "{\n      *(uint *)(lVar10 + uVar19 * 4) = uVar8;\n      uVar8 = uVar8 + *(int *)(lVar9 + uVar19 * 4);\n      bVar23 = uVar6 - 1 != uVar19;\n      uVar19 = uVar19 + 1;\n    }" ({ "{") (expression_statement "*(uint *)(lVar10 + uVar19 * 4) = uVar8;" (assignment_expression "*(uint *)(lVar10 + uVar19 * 4) = uVar8" (pointer_expression "*(uint *)(lVar10 + uVar19 * 4)" (* "*") (cast_expression "(uint *)(lVar10 + uVar19 * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar10 + uVar19 * 4)" (( "(") (binary_expression "lVar10 + uVar19 * 4" (identifier "lVar10") (+ "+") (binary_expression "uVar19 * 4" (identifier "uVar19") (* "*") (number_literal "4"))) () ")")))) (= "=") (identifier "uVar8")) (; ";")) (expression_statement "uVar8 = uVar8 + *(int *)(lVar9 + uVar19 * 4);" (assignment_expression "uVar8 = uVar8 + *(int *)(lVar9 + uVar19 * 4)" (identifier "uVar8") (= "=") (binary_expression "uVar8 + *(int *)(lVar9 + uVar19 * 4)" (identifier "uVar8") (+ "+") (pointer_expression "*(int *)(lVar9 + uVar19 * 4)" (* "*") (cast_expression "(int *)(lVar9 + uVar19 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar9 + uVar19 * 4)" (( "(") (binary_expression "lVar9 + uVar19 * 4" (identifier "lVar9") (+ "+") (binary_expression "uVar19 * 4" (identifier "uVar19") (* "*") (number_literal "4"))) () ")")))))) (; ";")) (expression_statement "bVar23 = uVar6 - 1 != uVar19;" (assignment_expression "bVar23 = uVar6 - 1 != uVar19" (identifier "bVar23") (= "=") (binary_expression "uVar6 - 1 != uVar19" (binary_expression "uVar6 - 1" (identifier "uVar6") (- "-") (number_literal "1")) (!= "!=") (identifier "uVar19"))) (; ";")) (expression_statement "uVar19 = uVar19 + 1;" (assignment_expression "uVar19 = uVar19 + 1" (identifier "uVar19") (= "=") (binary_expression "uVar19 + 1" (identifier "uVar19") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar23)" (( "(") (identifier "bVar23") () ")")) (; ";")) (} "}"))) (labeled_statement "LAB_0029efa3:\n                    \n  puVar11 = (uint *)thunk_FUN_002d94a0();" (statement_identifier "LAB_0029efa3") (: ":") (expression_statement "puVar11 = (uint *)thunk_FUN_002d94a0();" (assignment_expression "puVar11 = (uint *)thunk_FUN_002d94a0()" (identifier "puVar11") (= "=") (cast_expression "(uint *)thunk_FUN_002d94a0()" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "thunk_FUN_002d94a0()" (identifier "thunk_FUN_002d94a0") (argument_list "()" (( "(") () ")"))))) (; ";"))) (expression_statement "lVar21 = (long)puVar11 + (ulong)(local_6c >> 3) + 0x10;" (assignment_expression "lVar21 = (long)puVar11 + (ulong)(local_6c >> 3) + 0x10" (identifier "lVar21") (= "=") (binary_expression "(long)puVar11 + (ulong)(local_6c >> 3) + 0x10" (binary_expression "(long)puVar11 + (ulong)(local_6c >> 3)" (cast_expression "(long)puVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar11")) (+ "+") (call_expression "(ulong)(local_6c >> 3)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(local_6c >> 3)" (( "(") (binary_expression "local_6c >> 3" (identifier "local_6c") (>> ">>") (number_literal "3")) () ")")))) (+ "+") (number_literal "0x10"))) (; ";")) (expression_statement "*puVar11 = uVar6;" (assignment_expression "*puVar11 = uVar6" (pointer_expression "*puVar11" (* "*") (identifier "puVar11")) (= "=") (identifier "uVar6")) (; ";")) (expression_statement "puVar11[1] = param_3;" (assignment_expression "puVar11[1] = param_3" (subscript_expression "puVar11[1]" (identifier "puVar11") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "param_3")) (; ";")) (expression_statement "puVar11[2] = local_40;" (assignment_expression "puVar11[2] = local_40" (subscript_expression "puVar11[2]" (identifier "puVar11") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "local_40")) (; ";")) (expression_statement "puVar11[3] = local_70;" (assignment_expression "puVar11[3] = local_70" (subscript_expression "puVar11[3]" (identifier "puVar11") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "local_70")) (; ";")) (if_statement "if (uVar6 != 0) {\n    uVar19 = 0;\n    do {\n      iVar16 = *(int *)(lVar9 + uVar19 * 4);\n      if (iVar16 != 0) {\n        iVar16 = *(int *)(lVar10 + uVar19 * 4);\n      }\n      *(int *)(lVar21 + uVar19 * 4) = iVar16;\n      bVar23 = uVar6 - 1 != uVar19;\n      uVar19 = uVar19 + 1;\n    } while (bVar23);\n    lVar21 = lVar21 + ((ulong)(uVar6 - 1) + 1) * 4;\n  }" (if "if") (parenthesized_expression "(uVar6 != 0)" (( "(") (binary_expression "uVar6 != 0" (identifier "uVar6") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    uVar19 = 0;\n    do {\n      iVar16 = *(int *)(lVar9 + uVar19 * 4);\n      if (iVar16 != 0) {\n        iVar16 = *(int *)(lVar10 + uVar19 * 4);\n      }\n      *(int *)(lVar21 + uVar19 * 4) = iVar16;\n      bVar23 = uVar6 - 1 != uVar19;\n      uVar19 = uVar19 + 1;\n    } while (bVar23);\n    lVar21 = lVar21 + ((ulong)(uVar6 - 1) + 1) * 4;\n  }" ({ "{") (expression_statement "uVar19 = 0;" (assignment_expression "uVar19 = 0" (identifier "uVar19") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n      iVar16 = *(int *)(lVar9 + uVar19 * 4);\n      if (iVar16 != 0) {\n        iVar16 = *(int *)(lVar10 + uVar19 * 4);\n      }\n      *(int *)(lVar21 + uVar19 * 4) = iVar16;\n      bVar23 = uVar6 - 1 != uVar19;\n      uVar19 = uVar19 + 1;\n    } while (bVar23);" (do "do") (compound_statement "{\n      iVar16 = *(int *)(lVar9 + uVar19 * 4);\n      if (iVar16 != 0) {\n        iVar16 = *(int *)(lVar10 + uVar19 * 4);\n      }\n      *(int *)(lVar21 + uVar19 * 4) = iVar16;\n      bVar23 = uVar6 - 1 != uVar19;\n      uVar19 = uVar19 + 1;\n    }" ({ "{") (expression_statement "iVar16 = *(int *)(lVar9 + uVar19 * 4);" (assignment_expression "iVar16 = *(int *)(lVar9 + uVar19 * 4)" (identifier "iVar16") (= "=") (pointer_expression "*(int *)(lVar9 + uVar19 * 4)" (* "*") (cast_expression "(int *)(lVar9 + uVar19 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar9 + uVar19 * 4)" (( "(") (binary_expression "lVar9 + uVar19 * 4" (identifier "lVar9") (+ "+") (binary_expression "uVar19 * 4" (identifier "uVar19") (* "*") (number_literal "4"))) () ")"))))) (; ";")) (if_statement "if (iVar16 != 0) {\n        iVar16 = *(int *)(lVar10 + uVar19 * 4);\n      }" (if "if") (parenthesized_expression "(iVar16 != 0)" (( "(") (binary_expression "iVar16 != 0" (identifier "iVar16") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        iVar16 = *(int *)(lVar10 + uVar19 * 4);\n      }" ({ "{") (expression_statement "iVar16 = *(int *)(lVar10 + uVar19 * 4);" (assignment_expression "iVar16 = *(int *)(lVar10 + uVar19 * 4)" (identifier "iVar16") (= "=") (pointer_expression "*(int *)(lVar10 + uVar19 * 4)" (* "*") (cast_expression "(int *)(lVar10 + uVar19 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar10 + uVar19 * 4)" (( "(") (binary_expression "lVar10 + uVar19 * 4" (identifier "lVar10") (+ "+") (binary_expression "uVar19 * 4" (identifier "uVar19") (* "*") (number_literal "4"))) () ")"))))) (; ";")) (} "}"))) (expression_statement "*(int *)(lVar21 + uVar19 * 4) = iVar16;" (assignment_expression "*(int *)(lVar21 + uVar19 * 4) = iVar16" (pointer_expression "*(int *)(lVar21 + uVar19 * 4)" (* "*") (cast_expression "(int *)(lVar21 + uVar19 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar21 + uVar19 * 4)" (( "(") (binary_expression "lVar21 + uVar19 * 4" (identifier "lVar21") (+ "+") (binary_expression "uVar19 * 4" (identifier "uVar19") (* "*") (number_literal "4"))) () ")")))) (= "=") (identifier "iVar16")) (; ";")) (expression_statement "bVar23 = uVar6 - 1 != uVar19;" (assignment_expression "bVar23 = uVar6 - 1 != uVar19" (identifier "bVar23") (= "=") (binary_expression "uVar6 - 1 != uVar19" (binary_expression "uVar6 - 1" (identifier "uVar6") (- "-") (number_literal "1")) (!= "!=") (identifier "uVar19"))) (; ";")) (expression_statement "uVar19 = uVar19 + 1;" (assignment_expression "uVar19 = uVar19 + 1" (identifier "uVar19") (= "=") (binary_expression "uVar19 + 1" (identifier "uVar19") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar23)" (( "(") (identifier "bVar23") () ")")) (; ";")) (expression_statement "lVar21 = lVar21 + ((ulong)(uVar6 - 1) + 1) * 4;" (assignment_expression "lVar21 = lVar21 + ((ulong)(uVar6 - 1) + 1) * 4" (identifier "lVar21") (= "=") (binary_expression "lVar21 + ((ulong)(uVar6 - 1) + 1) * 4" (identifier "lVar21") (+ "+") (binary_expression "((ulong)(uVar6 - 1) + 1) * 4" (parenthesized_expression "((ulong)(uVar6 - 1) + 1)" (( "(") (binary_expression "(ulong)(uVar6 - 1) + 1" (call_expression "(ulong)(uVar6 - 1)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(uVar6 - 1)" (( "(") (binary_expression "uVar6 - 1" (identifier "uVar6") (- "-") (number_literal "1")) () ")"))) (+ "+") (number_literal "1")) () ")")) (* "*") (number_literal "4")))) (; ";")) (} "}"))) (if_statement "if (uVar7 != 0) {\n    param_1 = (long *)*param_1;\n    puVar20 = (uint *)*param_2;\n    plVar2 = param_1 + (ulong)(uVar7 - 1) + 1;\n    do {\n      uVar8 = *puVar20;\n      lVar14 = *param_1;\n      puVar12[uVar8 >> 5 & (local_6c >> 5) - 1] =\n           puVar12[uVar8 >> 5 & (local_6c >> 5) - 1] |\n           1 << ((byte)(uVar8 >> ((byte)local_70 & 0x1f)) & 0x1f) | 1 << ((byte)uVar8 & 0x1f);\n      lVar17 = ((ulong)uVar8 % (ulong)uVar6) * 4;\n      piVar1 = (int *)(lVar9 + lVar17);\n      iVar16 = *piVar1;\n      uVar4 = uVar8 & 0xfffffffe;\n      if (iVar16 == 1) {\n        uVar4 = uVar8 & 0xfffffffe | 1;\n      }\n      piVar18 = (int *)(lVar17 + lVar10);\n      iVar3 = *piVar18;\n      *piVar1 = iVar16 + -1;\n      *(uint *)(lVar21 + (ulong)((iVar3 - param_3) * 4)) = uVar4;\n      if (iVar3 == 0) {\n                    \n                    \n        FUN_0017c650("../../gold/symtab.h",0x1a2,"set_dynsym_index");\n      }\n      *(int *)(lVar14 + 0x20) = iVar3;\n      param_1 = param_1 + 1;\n      puVar20 = puVar20 + 1;\n      *piVar18 = iVar3 + 1;\n    } while (plVar2 != param_1);\n  }" (if "if") (parenthesized_expression "(uVar7 != 0)" (( "(") (binary_expression "uVar7 != 0" (identifier "uVar7") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    param_1 = (long *)*param_1;\n    puVar20 = (uint *)*param_2;\n    plVar2 = param_1 + (ulong)(uVar7 - 1) + 1;\n    do {\n      uVar8 = *puVar20;\n      lVar14 = *param_1;\n      puVar12[uVar8 >> 5 & (local_6c >> 5) - 1] =\n           puVar12[uVar8 >> 5 & (local_6c >> 5) - 1] |\n           1 << ((byte)(uVar8 >> ((byte)local_70 & 0x1f)) & 0x1f) | 1 << ((byte)uVar8 & 0x1f);\n      lVar17 = ((ulong)uVar8 % (ulong)uVar6) * 4;\n      piVar1 = (int *)(lVar9 + lVar17);\n      iVar16 = *piVar1;\n      uVar4 = uVar8 & 0xfffffffe;\n      if (iVar16 == 1) {\n        uVar4 = uVar8 & 0xfffffffe | 1;\n      }\n      piVar18 = (int *)(lVar17 + lVar10);\n      iVar3 = *piVar18;\n      *piVar1 = iVar16 + -1;\n      *(uint *)(lVar21 + (ulong)((iVar3 - param_3) * 4)) = uVar4;\n      if (iVar3 == 0) {\n                    \n                    \n        FUN_0017c650("../../gold/symtab.h",0x1a2,"set_dynsym_index");\n      }\n      *(int *)(lVar14 + 0x20) = iVar3;\n      param_1 = param_1 + 1;\n      puVar20 = puVar20 + 1;\n      *piVar18 = iVar3 + 1;\n    } while (plVar2 != param_1);\n  }" ({ "{") (expression_statement "param_1 = (long *)*param_1;" (assignment_expression "param_1 = (long *)*param_1" (identifier "param_1") (= "=") (cast_expression "(long *)*param_1" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (expression_statement "puVar20 = (uint *)*param_2;" (assignment_expression "puVar20 = (uint *)*param_2" (identifier "puVar20") (= "=") (cast_expression "(uint *)*param_2" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_2" (* "*") (identifier "param_2")))) (; ";")) (expression_statement "plVar2 = param_1 + (ulong)(uVar7 - 1) + 1;" (assignment_expression "plVar2 = param_1 + (ulong)(uVar7 - 1) + 1" (identifier "plVar2") (= "=") (binary_expression "param_1 + (ulong)(uVar7 - 1) + 1" (binary_expression "param_1 + (ulong)(uVar7 - 1)" (identifier "param_1") (+ "+") (call_expression "(ulong)(uVar7 - 1)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(uVar7 - 1)" (( "(") (binary_expression "uVar7 - 1" (identifier "uVar7") (- "-") (number_literal "1")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (do_statement "do {\n      uVar8 = *puVar20;\n      lVar14 = *param_1;\n      puVar12[uVar8 >> 5 & (local_6c >> 5) - 1] =\n           puVar12[uVar8 >> 5 & (local_6c >> 5) - 1] |\n           1 << ((byte)(uVar8 >> ((byte)local_70 & 0x1f)) & 0x1f) | 1 << ((byte)uVar8 & 0x1f);\n      lVar17 = ((ulong)uVar8 % (ulong)uVar6) * 4;\n      piVar1 = (int *)(lVar9 + lVar17);\n      iVar16 = *piVar1;\n      uVar4 = uVar8 & 0xfffffffe;\n      if (iVar16 == 1) {\n        uVar4 = uVar8 & 0xfffffffe | 1;\n      }\n      piVar18 = (int *)(lVar17 + lVar10);\n      iVar3 = *piVar18;\n      *piVar1 = iVar16 + -1;\n      *(uint *)(lVar21 + (ulong)((iVar3 - param_3) * 4)) = uVar4;\n      if (iVar3 == 0) {\n                    \n                    \n        FUN_0017c650("../../gold/symtab.h",0x1a2,"set_dynsym_index");\n      }\n      *(int *)(lVar14 + 0x20) = iVar3;\n      param_1 = param_1 + 1;\n      puVar20 = puVar20 + 1;\n      *piVar18 = iVar3 + 1;\n    } while (plVar2 != param_1);" (do "do") (compound_statement "{\n      uVar8 = *puVar20;\n      lVar14 = *param_1;\n      puVar12[uVar8 >> 5 & (local_6c >> 5) - 1] =\n           puVar12[uVar8 >> 5 & (local_6c >> 5) - 1] |\n           1 << ((byte)(uVar8 >> ((byte)local_70 & 0x1f)) & 0x1f) | 1 << ((byte)uVar8 & 0x1f);\n      lVar17 = ((ulong)uVar8 % (ulong)uVar6) * 4;\n      piVar1 = (int *)(lVar9 + lVar17);\n      iVar16 = *piVar1;\n      uVar4 = uVar8 & 0xfffffffe;\n      if (iVar16 == 1) {\n        uVar4 = uVar8 & 0xfffffffe | 1;\n      }\n      piVar18 = (int *)(lVar17 + lVar10);\n      iVar3 = *piVar18;\n      *piVar1 = iVar16 + -1;\n      *(uint *)(lVar21 + (ulong)((iVar3 - param_3) * 4)) = uVar4;\n      if (iVar3 == 0) {\n                    \n                    \n        FUN_0017c650("../../gold/symtab.h",0x1a2,"set_dynsym_index");\n      }\n      *(int *)(lVar14 + 0x20) = iVar3;\n      param_1 = param_1 + 1;\n      puVar20 = puVar20 + 1;\n      *piVar18 = iVar3 + 1;\n    }" ({ "{") (expression_statement "uVar8 = *puVar20;" (assignment_expression "uVar8 = *puVar20" (identifier "uVar8") (= "=") (pointer_expression "*puVar20" (* "*") (identifier "puVar20"))) (; ";")) (expression_statement "lVar14 = *param_1;" (assignment_expression "lVar14 = *param_1" (identifier "lVar14") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "puVar12[uVar8 >> 5 & (local_6c >> 5) - 1] =\n           puVar12[uVar8 >> 5 & (local_6c >> 5) - 1] |\n           1 << ((byte)(uVar8 >> ((byte)local_70 & 0x1f)) & 0x1f) | 1 << ((byte)uVar8 & 0x1f);" (assignment_expression "puVar12[uVar8 >> 5 & (local_6c >> 5) - 1] =\n           puVar12[uVar8 >> 5 & (local_6c >> 5) - 1] |\n           1 << ((byte)(uVar8 >> ((byte)local_70 & 0x1f)) & 0x1f) | 1 << ((byte)uVar8 & 0x1f)" (subscript_expression "puVar12[uVar8 >> 5 & (local_6c >> 5) - 1]" (identifier "puVar12") ([ "[") (binary_expression "uVar8 >> 5 & (local_6c >> 5) - 1" (binary_expression "uVar8 >> 5" (identifier "uVar8") (>> ">>") (number_literal "5")) (& "&") (binary_expression "(local_6c >> 5) - 1" (parenthesized_expression "(local_6c >> 5)" (( "(") (binary_expression "local_6c >> 5" (identifier "local_6c") (>> ">>") (number_literal "5")) () ")")) (- "-") (number_literal "1"))) (] "]")) (= "=") (binary_expression "puVar12[uVar8 >> 5 & (local_6c >> 5) - 1] |\n           1 << ((byte)(uVar8 >> ((byte)local_70 & 0x1f)) & 0x1f) | 1 << ((byte)uVar8 & 0x1f)" (binary_expression "puVar12[uVar8 >> 5 & (local_6c >> 5) - 1] |\n           1 << ((byte)(uVar8 >> ((byte)local_70 & 0x1f)) & 0x1f)" (subscript_expression "puVar12[uVar8 >> 5 & (local_6c >> 5) - 1]" (identifier "puVar12") ([ "[") (binary_expression "uVar8 >> 5 & (local_6c >> 5) - 1" (binary_expression "uVar8 >> 5" (identifier "uVar8") (>> ">>") (number_literal "5")) (& "&") (binary_expression "(local_6c >> 5) - 1" (parenthesized_expression "(local_6c >> 5)" (( "(") (binary_expression "local_6c >> 5" (identifier "local_6c") (>> ">>") (number_literal "5")) () ")")) (- "-") (number_literal "1"))) (] "]")) (| "|") (binary_expression "1 << ((byte)(uVar8 >> ((byte)local_70 & 0x1f)) & 0x1f)" (number_literal "1") (<< "<<") (parenthesized_expression "((byte)(uVar8 >> ((byte)local_70 & 0x1f)) & 0x1f)" (( "(") (binary_expression "(byte)(uVar8 >> ((byte)local_70 & 0x1f)) & 0x1f" (call_expression "(byte)(uVar8 >> ((byte)local_70 & 0x1f))" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(uVar8 >> ((byte)local_70 & 0x1f))" (( "(") (binary_expression "uVar8 >> ((byte)local_70 & 0x1f)" (identifier "uVar8") (>> ">>") (parenthesized_expression "((byte)local_70 & 0x1f)" (( "(") (binary_expression "(byte)local_70 & 0x1f" (cast_expression "(byte)local_70" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "local_70")) (& "&") (number_literal "0x1f")) () ")"))) () ")"))) (& "&") (number_literal "0x1f")) () ")")))) (| "|") (binary_expression "1 << ((byte)uVar8 & 0x1f)" (number_literal "1") (<< "<<") (parenthesized_expression "((byte)uVar8 & 0x1f)" (( "(") (binary_expression "(byte)uVar8 & 0x1f" (cast_expression "(byte)uVar8" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar8")) (& "&") (number_literal "0x1f")) () ")"))))) (; ";")) (expression_statement "lVar17 = ((ulong)uVar8 % (ulong)uVar6) * 4;" (assignment_expression "lVar17 = ((ulong)uVar8 % (ulong)uVar6) * 4" (identifier "lVar17") (= "=") (binary_expression "((ulong)uVar8 % (ulong)uVar6) * 4" (parenthesized_expression "((ulong)uVar8 % (ulong)uVar6)" (( "(") (binary_expression "(ulong)uVar8 % (ulong)uVar6" (cast_expression "(ulong)uVar8" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar8")) (% "%") (cast_expression "(ulong)uVar6" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar6"))) () ")")) (* "*") (number_literal "4"))) (; ";")) (expression_statement "piVar1 = (int *)(lVar9 + lVar17);" (assignment_expression "piVar1 = (int *)(lVar9 + lVar17)" (identifier "piVar1") (= "=") (cast_expression "(int *)(lVar9 + lVar17)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar9 + lVar17)" (( "(") (binary_expression "lVar9 + lVar17" (identifier "lVar9") (+ "+") (identifier "lVar17")) () ")")))) (; ";")) (expression_statement "iVar16 = *piVar1;" (assignment_expression "iVar16 = *piVar1" (identifier "iVar16") (= "=") (pointer_expression "*piVar1" (* "*") (identifier "piVar1"))) (; ";")) (expression_statement "uVar4 = uVar8 & 0xfffffffe;" (assignment_expression "uVar4 = uVar8 & 0xfffffffe" (identifier "uVar4") (= "=") (binary_expression "uVar8 & 0xfffffffe" (identifier "uVar8") (& "&") (number_literal "0xfffffffe"))) (; ";")) (if_statement "if (iVar16 == 1) {\n        uVar4 = uVar8 & 0xfffffffe | 1;\n      }" (if "if") (parenthesized_expression "(iVar16 == 1)" (( "(") (binary_expression "iVar16 == 1" (identifier "iVar16") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n        uVar4 = uVar8 & 0xfffffffe | 1;\n      }" ({ "{") (expression_statement "uVar4 = uVar8 & 0xfffffffe | 1;" (assignment_expression "uVar4 = uVar8 & 0xfffffffe | 1" (identifier "uVar4") (= "=") (binary_expression "uVar8 & 0xfffffffe | 1" (binary_expression "uVar8 & 0xfffffffe" (identifier "uVar8") (& "&") (number_literal "0xfffffffe")) (| "|") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "piVar18 = (int *)(lVar17 + lVar10);" (assignment_expression "piVar18 = (int *)(lVar17 + lVar10)" (identifier "piVar18") (= "=") (cast_expression "(int *)(lVar17 + lVar10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar17 + lVar10)" (( "(") (binary_expression "lVar17 + lVar10" (identifier "lVar17") (+ "+") (identifier "lVar10")) () ")")))) (; ";")) (expression_statement "iVar3 = *piVar18;" (assignment_expression "iVar3 = *piVar18" (identifier "iVar3") (= "=") (pointer_expression "*piVar18" (* "*") (identifier "piVar18"))) (; ";")) (expression_statement "*piVar1 = iVar16 + -1;" (assignment_expression "*piVar1 = iVar16 + -1" (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) (= "=") (binary_expression "iVar16 + -1" (identifier "iVar16") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "*(uint *)(lVar21 + (ulong)((iVar3 - param_3) * 4)) = uVar4;" (assignment_expression "*(uint *)(lVar21 + (ulong)((iVar3 - param_3) * 4)) = uVar4" (pointer_expression "*(uint *)(lVar21 + (ulong)((iVar3 - param_3) * 4))" (* "*") (cast_expression "(uint *)(lVar21 + (ulong)((iVar3 - param_3) * 4))" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar21 + (ulong)((iVar3 - param_3) * 4))" (( "(") (binary_expression "lVar21 + (ulong)((iVar3 - param_3) * 4)" (identifier "lVar21") (+ "+") (call_expression "(ulong)((iVar3 - param_3) * 4)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "((iVar3 - param_3) * 4)" (( "(") (binary_expression "(iVar3 - param_3) * 4" (parenthesized_expression "(iVar3 - param_3)" (( "(") (binary_expression "iVar3 - param_3" (identifier "iVar3") (- "-") (identifier "param_3")) () ")")) (* "*") (number_literal "4")) () ")")))) () ")")))) (= "=") (identifier "uVar4")) (; ";")) (if_statement "if (iVar3 == 0) {\n                    \n                    \n        FUN_0017c650("../../gold/symtab.h",0x1a2,"set_dynsym_index");\n      }" (if "if") (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n                    \n        FUN_0017c650("../../gold/symtab.h",0x1a2,"set_dynsym_index");\n      }" ({ "{") (expression_statement "FUN_0017c650("../../gold/symtab.h",0x1a2,"set_dynsym_index");" (call_expression "FUN_0017c650("../../gold/symtab.h",0x1a2,"set_dynsym_index")" (identifier "FUN_0017c650") (argument_list "("../../gold/symtab.h",0x1a2,"set_dynsym_index")" (( "(") (string_literal ""../../gold/symtab.h"" (" """) (string_content "../../gold/symtab.h") (" """)) (, ",") (number_literal "0x1a2") (, ",") (string_literal ""set_dynsym_index"" (" """) (string_content "set_dynsym_index") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "*(int *)(lVar14 + 0x20) = iVar3;" (assignment_expression "*(int *)(lVar14 + 0x20) = iVar3" (pointer_expression "*(int *)(lVar14 + 0x20)" (* "*") (cast_expression "(int *)(lVar14 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar14 + 0x20)" (( "(") (binary_expression "lVar14 + 0x20" (identifier "lVar14") (+ "+") (number_literal "0x20")) () ")")))) (= "=") (identifier "iVar3")) (; ";")) (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" (identifier "param_1") (= "=") (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar20 = puVar20 + 1;" (assignment_expression "puVar20 = puVar20 + 1" (identifier "puVar20") (= "=") (binary_expression "puVar20 + 1" (identifier "puVar20") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*piVar18 = iVar3 + 1;" (assignment_expression "*piVar18 = iVar3 + 1" (pointer_expression "*piVar18" (* "*") (identifier "piVar18")) (= "=") (binary_expression "iVar3 + 1" (identifier "iVar3") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(plVar2 != param_1)" (( "(") (binary_expression "plVar2 != param_1" (identifier "plVar2") (!= "!=") (identifier "param_1")) () ")")) (; ";")) (} "}"))) (if_statement "if (local_40 != 0) {\n    uVar19 = 0;\n    do {\n      puVar11[uVar19 + 4] = puVar12[uVar19];\n      bVar23 = uVar19 != local_40 - 1;\n      uVar19 = uVar19 + 1;\n    } while (bVar23);\n  }" (if "if") (parenthesized_expression "(local_40 != 0)" (( "(") (binary_expression "local_40 != 0" (identifier "local_40") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    uVar19 = 0;\n    do {\n      puVar11[uVar19 + 4] = puVar12[uVar19];\n      bVar23 = uVar19 != local_40 - 1;\n      uVar19 = uVar19 + 1;\n    } while (bVar23);\n  }" ({ "{") (expression_statement "uVar19 = 0;" (assignment_expression "uVar19 = 0" (identifier "uVar19") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n      puVar11[uVar19 + 4] = puVar12[uVar19];\n      bVar23 = uVar19 != local_40 - 1;\n      uVar19 = uVar19 + 1;\n    } while (bVar23);" (do "do") (compound_statement "{\n      puVar11[uVar19 + 4] = puVar12[uVar19];\n      bVar23 = uVar19 != local_40 - 1;\n      uVar19 = uVar19 + 1;\n    }" ({ "{") (expression_statement "puVar11[uVar19 + 4] = puVar12[uVar19];" (assignment_expression "puVar11[uVar19 + 4] = puVar12[uVar19]" (subscript_expression "puVar11[uVar19 + 4]" (identifier "puVar11") ([ "[") (binary_expression "uVar19 + 4" (identifier "uVar19") (+ "+") (number_literal "4")) (] "]")) (= "=") (subscript_expression "puVar12[uVar19]" (identifier "puVar12") ([ "[") (identifier "uVar19") (] "]"))) (; ";")) (expression_statement "bVar23 = uVar19 != local_40 - 1;" (assignment_expression "bVar23 = uVar19 != local_40 - 1" (identifier "bVar23") (= "=") (binary_expression "uVar19 != local_40 - 1" (identifier "uVar19") (!= "!=") (binary_expression "local_40 - 1" (identifier "local_40") (- "-") (number_literal "1")))) (; ";")) (expression_statement "uVar19 = uVar19 + 1;" (assignment_expression "uVar19 = uVar19 + 1" (identifier "uVar19") (= "=") (binary_expression "uVar19 + 1" (identifier "uVar19") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar23)" (( "(") (identifier "bVar23") () ")")) (; ";")) (} "}"))) (expression_statement "*param_5 = (local_6c >> 3) + (uVar6 + 4 + uVar7) * 4;" (assignment_expression "*param_5 = (local_6c >> 3) + (uVar6 + 4 + uVar7) * 4" (pointer_expression "*param_5" (* "*") (identifier "param_5")) (= "=") (binary_expression "(local_6c >> 3) + (uVar6 + 4 + uVar7) * 4" (parenthesized_expression "(local_6c >> 3)" (( "(") (binary_expression "local_6c >> 3" (identifier "local_6c") (>> ">>") (number_literal "3")) () ")")) (+ "+") (binary_expression "(uVar6 + 4 + uVar7) * 4" (parenthesized_expression "(uVar6 + 4 + uVar7)" (( "(") (binary_expression "uVar6 + 4 + uVar7" (binary_expression "uVar6 + 4" (identifier "uVar6") (+ "+") (number_literal "4")) (+ "+") (identifier "uVar7")) () ")")) (* "*") (number_literal "4")))) (; ";")) (expression_statement "*param_4 = puVar11;" (assignment_expression "*param_4 = puVar11" (pointer_expression "*param_4" (* "*") (identifier "param_4")) (= "=") (identifier "puVar11")) (; ";")) (if_statement "if (lVar10 != 0) {\n    FUN_002dac70(lVar10);\n  }" (if "if") (parenthesized_expression "(lVar10 != 0)" (( "(") (binary_expression "lVar10 != 0" (identifier "lVar10") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    FUN_002dac70(lVar10);\n  }" ({ "{") (expression_statement "FUN_002dac70(lVar10);" (call_expression "FUN_002dac70(lVar10)" (identifier "FUN_002dac70") (argument_list "(lVar10)" (( "(") (identifier "lVar10") () ")"))) (; ";")) (} "}"))) (if_statement "if (lVar9 != 0) {\n    FUN_002dac70(lVar9);\n  }" (if "if") (parenthesized_expression "(lVar9 != 0)" (( "(") (binary_expression "lVar9 != 0" (identifier "lVar9") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    FUN_002dac70(lVar9);\n  }" ({ "{") (expression_statement "FUN_002dac70(lVar9);" (call_expression "FUN_002dac70(lVar9)" (identifier "FUN_002dac70") (argument_list "(lVar9)" (( "(") (identifier "lVar9") () ")"))) (; ";")) (} "}"))) (if_statement "if (puVar12 == (undefined4 *)0x0) {\n    return;\n  }" (if "if") (parenthesized_expression "(puVar12 == (undefined4 *)0x0)" (( "(") (binary_expression "puVar12 == (undefined4 *)0x0" (identifier "puVar12") (== "==") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "FUN_002dac70(puVar12);" (call_expression "FUN_002dac70(puVar12)" (identifier "FUN_002dac70") (argument_list "(puVar12)" (( "(") (identifier "puVar12") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* DWARF original name: sized_create_gnu_hash_table<32, false> */

void var_1::Dynobj::sized_create_gnu_hash_table<32,_false>
               (vector<var_1::type_2*,var_2::var_15<var_1::type_2*>var_3> *hashed_dynsyms,
               vector<var_16,var_2::var_15<var_16>var_3> *dynsym_hashvals,
               type_3 var_29,type_6 **pphash,type_3 *phashlen)

{
  int *piVar1;
  type_1 var_32;
  type_1 var_17;
  type_2 *pSVar4;
  type_3 uVar5;
  type_4 var_21;
  type_3 var_14;
  type_3 var_8;
  type_3 var_9;
  void *var_35;
  void *var_33;
  type_3 *var_19;
  type_5 *var_12;
  type_5 *var_11;
  type_6 *var_6;
  long var_18;
  type_3 var_20;
  int var_26;
  long var_28;
  type_3 *puVar20;
  type_7 var_13;
  type_1 var_27;
  type_3 *var_31;
  type_7 var_24;
  type_7 var_23;
  bool bVar26;
  type_3 local_70;
  type_3 var_25;
  type_3 var_22;
  
  if ((hashed_dynsyms->super__Vector_base<var_1::type_2*,var_2::var_15<var_1::type_2*>var_3>var_4)._M_impl.
      _M_finish ==
      (hashed_dynsyms->super__Vector_base<var_1::type_2*,var_2::var_15<var_1::type_2*>var_3>var_4)._M_impl.
      _M_start) {
    var_6 = (type_6 *)var_5(0x18);
    var_6[0] = '\x01';
    var_6[1] = '\0';
    var_6[2] = '\0';
    var_6[3] = '\0';
    *(type_3 *)(var_6 + 4) = var_29;
    var_6[8] = '\x01';
    var_6[9] = '\0';
    var_6[10] = '\0';
    var_6[0xb] = '\0';
    var_6[0xc] = '\0';
    var_6[0xd] = '\0';
    var_6[0xe] = '\0';
    var_6[0xf] = '\0';
    *phashlen = 0x18;
    var_6[0x10] = '\0';
    var_6[0x11] = '\0';
    var_6[0x12] = '\0';
    var_6[0x13] = '\0';
    var_6[0x14] = '\0';
    var_6[0x15] = '\0';
    var_6[0x16] = '\0';
    var_6[0x17] = '\0';
    *pphash = var_6;
    return;
  }
  var_14 = var_7(dynsym_hashvals,true);
  var_8 = (type_3)((long)(hashed_dynsyms->
                       super__Vector_base<var_1::type_2*,var_2::var_15<var_1::type_2*>var_3>var_4)._M_impl.
                       _M_finish -
                 (long)(hashed_dynsyms->
                       super__Vector_base<var_1::type_2*,var_2::var_15<var_1::type_2*>var_3>var_4)._M_impl.
                       _M_start >> 3);
  var_9 = var_8 >> 1;
  if (var_9 == 0) {
LAB_0029f178:
    var_22 = 1;
    var_24 = 4;
    var_13 = 1;
    var_25 = 0x20;
    local_70 = 5;
LAB_0029f19a:
    var_12 = (type_5 *)var_10(var_24);
    var_11 = var_12;
    do {
      *var_11 = 0;
      var_11 = var_11 + 1;
    } while (var_11 != var_12 + var_13);
    if (var_14 != 0) goto LAB_0029eee8;
LAB_0029f1cc:
    var_33 = (void *)0x0;
    var_35 = (void *)0x0;
    if (var_8 == 0) goto LAB_0029efa3;
LAB_0029ef4c:
    var_18 = 0;
    var_17 = (dynsym_hashvals->super__Vector_base<var_16,var_2::var_15<var_16>var_3>var_4).
             _M_impl._M_start;
    do {
      var_19 = var_17 + var_18;
      var_18 = var_18 + 1;
      piVar1 = (int *)((long)var_35 + ((type_7)*var_19 % (type_7)var_14) * 4);
      *piVar1 = *piVar1 + 1;
    } while ((type_3)var_18 < var_8);
  }
  else {
    uVar5 = 1;
    do {
      var_20 = uVar5;
      var_9 = var_9 >> 1;
      uVar5 = var_20 + 1;
    } while (var_9 != 0);
    if (var_20 + 1 < 3) goto LAB_0029f178;
    var_21 = (type_4)(var_20 - 1);
    if ((var_8 >> (var_20 - 1 & 0x1f) & 1) == 0) {
      local_70 = var_20 + 3;
      var_21 = (char)var_20 - 2;
    }
    else {
      local_70 = var_20 + 4;
    }
    var_12 = (type_5 *)0x0;
    var_25 = 1 << ((type_4)local_70 & 0x1f);
    var_22 = 1 << (var_21 & 0x1f);
    var_13 = (type_7)var_22;
    if (var_22 != 0) {
      var_24 = var_13 * 4;
      goto LAB_0029f19a;
    }
    if (var_14 == 0) goto LAB_0029f1cc;
LAB_0029eee8:
    var_24 = (type_7)var_14 * 4;
                    /* try { // try from 0029eef8 to 0029eefc has its CatchHandler @ 0029f275 */
    var_35 = var_10(var_24);
    var_13 = 0;
    do {
      var_23 = var_13;
      *(type_5 *)((long)var_35 + var_23 * 4) = 0;
      var_13 = var_23 + 1;
    } while ((type_7)var_14 != var_23 + 1);
                    /* try { // try from 0029ef21 to 0029ef25 has its CatchHandler @ 0029f27a */
    var_33 = var_10(var_24);
    var_24 = 0;
    do {
      *(type_5 *)((long)var_33 + var_24 * 4) = 0;
      bVar26 = var_23 != var_24;
      var_24 = var_24 + 1;
    } while (bVar26);
    if (var_8 != 0) goto LAB_0029ef4c;
  }
  if (var_14 != 0) {
    var_24 = 0;
    var_9 = var_29;
    do {
      *(type_3 *)((long)var_33 + var_24 * 4) = var_9;
      var_9 = var_9 + *(int *)((long)var_35 + var_24 * 4);
      bVar26 = var_14 - 1 != var_24;
      var_24 = var_24 + 1;
    } while (bVar26);
  }
LAB_0029efa3:
  var_9 = (var_25 >> 3) + (var_14 + 4 + var_8) * 4;
                    /* try { // try from 0029efc3 to 0029efc7 has its CatchHandler @ 0029f27f */
  var_19 = (type_3 *)var_5((type_7)var_9);
  var_18 = (long)var_19 + (type_7)(var_25 >> 3) + 0x10;
  *var_19 = var_14;
  var_19[1] = var_29;
  var_19[2] = var_22;
  var_19[3] = local_70;
  if (var_14 != 0) {
    var_24 = 0;
    do {
      var_26 = *(int *)((long)var_35 + var_24 * 4);
      if (var_26 != 0) {
        var_26 = *(int *)((long)var_33 + var_24 * 4);
      }
      *(int *)(var_18 + var_24 * 4) = var_26;
      bVar26 = var_14 - 1 != var_24;
      var_24 = var_24 + 1;
    } while (bVar26);
    var_18 = var_18 + ((type_7)(var_14 - 1) + 1) * 4;
  }
  if (var_8 != 0) {
    var_27 = (hashed_dynsyms->super__Vector_base<var_1::type_2*var_4,var_2::var_15<var_1::type_2*>var_3>var_4).
               _M_impl._M_start;
    var_31 = (dynsym_hashvals->super__Vector_base<var_16,var_2::var_15<var_16>var_3>var_4).
              _M_impl._M_start;
    var_32 = var_27 + (type_7)(var_8 - 1) + 1;
    do {
      var_8 = *var_31;
      pSVar4 = *var_27;
      var_12[var_8 >> 5 & (var_25 >> 5) - 1] =
           var_12[var_8 >> 5 & (var_25 >> 5) - 1] |
           1 << ((type_4)(var_8 >> ((type_4)local_70 & 0x1f)) & 0x1f) | 1 << ((type_4)var_8 & 0x1f);
      var_28 = ((type_7)var_8 % (type_7)var_14) * 4;
      piVar1 = (int *)((long)var_35 + var_28);
      var_26 = *piVar1;
      uVar5 = var_8 & 0xfffffffe;
      if (var_26 == 1) {
        uVar5 = var_8 & 0xfffffffe | 1;
      }
      puVar20 = (type_3 *)(var_28 + (long)var_33);
      var_8 = *puVar20;
      *piVar1 = var_26 + -1;
      *(type_3 *)(var_18 + (type_7)((var_8 - var_29) * 4)) = uVar5;
      if (var_8 == 0) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0029f270 to 0029f274 has its CatchHandler @ 0029f27f */
        var_30("../../gold/symtab.h",0x1a2,"set_dynsym_index");
      }
      pSVar4->dynsym_index_ = var_8;
      var_27 = var_27 + 1;
      var_31 = var_31 + 1;
      *puVar20 = var_8 + 1;
    } while (var_32 != var_27);
  }
  if (var_22 != 0) {
    var_24 = 0;
    do {
      var_19[var_24 + 4] = var_12[var_24];
      bVar26 = var_24 != var_22 - 1;
      var_24 = var_24 + 1;
    } while (bVar26);
  }
  *phashlen = var_9;
  *pphash = (type_6 *)var_19;
  if (var_33 != (void *)0x0) {
    var_34(var_33);
  }
  if (var_35 != (void *)0x0) {
    var_34(var_35);
  }
  if (var_12 == (type_5 *)0x0) {
    return;
  }
  var_34(var_12);
  return;
}


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

void MASKED(long *param_1,long *param_2,uint param_3,undefined8 *param_4,int *param_5)

{
  int *piVar1;
  long *plVar2;
  int iVar3;
  uint uVar4;
  byte bVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  long lVar9;
  long lVar10;
  uint *puVar11;
  undefined4 *puVar12;
  undefined4 *puVar13;
  long lVar14;
  uint uVar15;
  int iVar16;
  long lVar17;
  int *piVar18;
  ulong uVar19;
  uint *puVar20;
  long lVar21;
  ulong uVar22;
  bool bVar23;
  uint local_70;
  uint local_6c;
  uint local_40;
  
  if (param_1[1] == *param_1) {
    puVar12 = (undefined4 *)thunk_FUN_002d94a0(0x18);
    *puVar12 = 1;
    puVar12[1] = param_3;
    *(undefined8 *)(puVar12 + 2) = 1;
    *param_5 = 0x18;
    *(undefined8 *)(puVar12 + 4) = 0;
    *param_4 = puVar12;
    return;
  }
  uVar6 = FUN_0029a210(param_2,1);
  uVar7 = (uint)(param_1[1] - *param_1 >> 3);
  uVar8 = uVar7 >> 1;
  if (uVar8 == 0) {
LAB_0029f178:
    local_40 = 1;
    lVar9 = 4;
    uVar19 = 1;
    local_6c = 0x20;
    local_70 = 5;
LAB_0029f19a:
    puVar12 = (undefined4 *)FUN_002d94a0(lVar9);
    puVar13 = puVar12;
    do {
      *puVar13 = 0;
      puVar13 = puVar13 + 1;
    } while (puVar13 != puVar12 + uVar19);
    if (uVar6 != 0) goto LAB_0029eee8;
LAB_0029f1cc:
    lVar10 = 0;
    lVar9 = 0;
    if (uVar7 == 0) goto LAB_0029efa3;
LAB_0029ef4c:
    lVar14 = 0;
    lVar21 = *param_2;
    do {
      lVar17 = lVar14 * 4;
      lVar14 = lVar14 + 1;
      piVar1 = (int *)(lVar9 + ((ulong)*(uint *)(lVar21 + lVar17) % (ulong)uVar6) * 4);
      *piVar1 = *piVar1 + 1;
    } while ((uint)lVar14 < uVar7);
  }
  else {
    uVar4 = 1;
    do {
      uVar15 = uVar4;
      uVar8 = uVar8 >> 1;
      uVar4 = uVar15 + 1;
    } while (uVar8 != 0);
    if (uVar15 + 1 < 3) goto LAB_0029f178;
    bVar5 = (byte)(uVar15 - 1);
    if ((uVar7 >> (uVar15 - 1 & 0x1f) & 1) == 0) {
      local_70 = uVar15 + 3;
      bVar5 = (char)uVar15 - 2;
    }
    else {
      local_70 = uVar15 + 4;
    }
    puVar12 = (undefined4 *)0x0;
    local_6c = 1 << ((byte)local_70 & 0x1f);
    local_40 = 1 << (bVar5 & 0x1f);
    uVar19 = (ulong)local_40;
    if (local_40 != 0) {
      lVar9 = uVar19 * 4;
      goto LAB_0029f19a;
    }
    if (uVar6 == 0) goto LAB_0029f1cc;
LAB_0029eee8:
    lVar10 = (ulong)uVar6 * 4;
                    /* try { // try from 0029eef8 to 0029eefc has its CatchHandler @ 0029f275 */
    lVar9 = FUN_002d94a0(lVar10);
    uVar19 = 0;
    do {
      uVar22 = uVar19;
      *(undefined4 *)(lVar9 + uVar22 * 4) = 0;
      uVar19 = uVar22 + 1;
    } while ((ulong)uVar6 != uVar22 + 1);
                    /* try { // try from 0029ef21 to 0029ef25 has its CatchHandler @ 0029f27a */
    lVar10 = FUN_002d94a0(lVar10);
    uVar19 = 0;
    do {
      *(undefined4 *)(lVar10 + uVar19 * 4) = 0;
      bVar23 = uVar22 != uVar19;
      uVar19 = uVar19 + 1;
    } while (bVar23);
    if (uVar7 != 0) goto LAB_0029ef4c;
  }
  if (uVar6 != 0) {
    uVar19 = 0;
    uVar8 = param_3;
    do {
      *(uint *)(lVar10 + uVar19 * 4) = uVar8;
      uVar8 = uVar8 + *(int *)(lVar9 + uVar19 * 4);
      bVar23 = uVar6 - 1 != uVar19;
      uVar19 = uVar19 + 1;
    } while (bVar23);
  }
LAB_0029efa3:
                    /* try { // try from 0029efc3 to 0029efc7 has its CatchHandler @ 0029f27f */
  puVar11 = (uint *)thunk_FUN_002d94a0();
  lVar21 = (long)puVar11 + (ulong)(local_6c >> 3) + 0x10;
  *puVar11 = uVar6;
  puVar11[1] = param_3;
  puVar11[2] = local_40;
  puVar11[3] = local_70;
  if (uVar6 != 0) {
    uVar19 = 0;
    do {
      iVar16 = *(int *)(lVar9 + uVar19 * 4);
      if (iVar16 != 0) {
        iVar16 = *(int *)(lVar10 + uVar19 * 4);
      }
      *(int *)(lVar21 + uVar19 * 4) = iVar16;
      bVar23 = uVar6 - 1 != uVar19;
      uVar19 = uVar19 + 1;
    } while (bVar23);
    lVar21 = lVar21 + ((ulong)(uVar6 - 1) + 1) * 4;
  }
  if (uVar7 != 0) {
    param_1 = (long *)*param_1;
    puVar20 = (uint *)*param_2;
    plVar2 = param_1 + (ulong)(uVar7 - 1) + 1;
    do {
      uVar8 = *puVar20;
      lVar14 = *param_1;
      puVar12[uVar8 >> 5 & (local_6c >> 5) - 1] =
           puVar12[uVar8 >> 5 & (local_6c >> 5) - 1] |
           1 << ((byte)(uVar8 >> ((byte)local_70 & 0x1f)) & 0x1f) | 1 << ((byte)uVar8 & 0x1f);
      lVar17 = ((ulong)uVar8 % (ulong)uVar6) * 4;
      piVar1 = (int *)(lVar9 + lVar17);
      iVar16 = *piVar1;
      uVar4 = uVar8 & 0xfffffffe;
      if (iVar16 == 1) {
        uVar4 = uVar8 & 0xfffffffe | 1;
      }
      piVar18 = (int *)(lVar17 + lVar10);
      iVar3 = *piVar18;
      *piVar1 = iVar16 + -1;
      *(uint *)(lVar21 + (ulong)((iVar3 - param_3) * 4)) = uVar4;
      if (iVar3 == 0) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0029f270 to 0029f274 has its CatchHandler @ 0029f27f */
        FUN_0017c650("../../gold/symtab.h",0x1a2,"set_dynsym_index");
      }
      *(int *)(lVar14 + 0x20) = iVar3;
      param_1 = param_1 + 1;
      puVar20 = puVar20 + 1;
      *piVar18 = iVar3 + 1;
    } while (plVar2 != param_1);
  }
  if (local_40 != 0) {
    uVar19 = 0;
    do {
      puVar11[uVar19 + 4] = puVar12[uVar19];
      bVar23 = uVar19 != local_40 - 1;
      uVar19 = uVar19 + 1;
    } while (bVar23);
  }
  *param_5 = (local_6c >> 3) + (uVar6 + 4 + uVar7) * 4;
  *param_4 = puVar11;
  if (lVar10 != 0) {
    FUN_002dac70(lVar10);
  }
  if (lVar9 != 0) {
    FUN_002dac70(lVar9);
  }
  if (puVar12 == (undefined4 *)0x0) {
    return;
  }
  FUN_002dac70(puVar12);
  return;
}

