
void * delpos234_internal(tree234 *t,int index)

{
  node234 **ppnVar1;
  node234 *pnVar2;
  int iVar3;
  int iVar4;
  node234_conflict *pnVar5;
  node234_conflict *pnVar6;
  long lVar7;
  node234_conflict *pnVar8;
  int iVar9;
  long lVar10;
  node234 *pnVar11;
  void *pvVar12;
  node234 *pnVar13;
  node234_conflict *ptr;
  void *pvVar14;
  uint local_54;
  long local_50;
  
  iVar9 = -1;
  pvVar14 = (void *)0x0;
  pnVar5 = t->root;
LAB_0012f7e4:
  while (ptr = pnVar5, ptr != (node234_conflict *)0x0) {
    if (index < ptr->counts[0]) goto LAB_0012f7d1;
    index = index - (ptr->counts[0] + 1);
    if (index < 0) {
      iVar9 = 0;
LAB_0012fdee:
      if (pvVar14 == (void *)0x0) goto LAB_0012fdf7;
      goto LAB_0012fa63;
    }
    if (index < ptr->counts[1]) {
      local_54 = 1;
    }
    else {
      index = index - (ptr->counts[1] + 1);
      if (index < 0) {
        iVar9 = 1;
        goto LAB_0012fdee;
      }
      if (index < ptr->counts[2]) {
        local_54 = 2;
      }
      else {
        index = index - (ptr->counts[2] + 1);
        if (index < 0) {
          iVar9 = 2;
          goto LAB_0012fdee;
        }
        local_54 = 3;
      }
    }
    lVar7 = (long)(int)local_54;
    ppnVar1 = ptr->kids + lVar7 + -1;
    pnVar5 = ppnVar1[1];
    if (pnVar5->elems[1] == (void *)0x0) {
      pnVar8 = *ppnVar1;
      if (pnVar8->elems[1] == (void *)0x0) {
        if (local_54 < 3) {
          local_50 = (long)(int)local_54;
          pnVar11 = ((node234_conflict *)(ptr->kids + local_50 + -1))->kids[1];
          pnVar8 = (node234_conflict *)(ptr->kids + local_50 + -1);
          if (pnVar11 == (node234 *)0x0) goto LAB_0012f905;
          goto LAB_0012fe3f;
        }
        goto LAB_0012f905;
      }
      pvVar12 = pnVar8->elems[2];
      pnVar5->kids[2] = pnVar5->kids[1];
      pnVar5->counts[2] = pnVar5->counts[1];
      pnVar5->elems[1] = pnVar5->elems[0];
      pnVar5->kids[1] = pnVar5->kids[0];
      pnVar5->counts[1] = pnVar5->counts[0];
      pnVar5->elems[0] = ppnVar1[6];
      lVar10 = (long)(int)((pvVar12 != (void *)0x0) + 1);
      pnVar11 = pnVar8->kids[lVar10 + 1];
      pnVar5->kids[0] = pnVar11;
      pnVar5->counts[0] = pnVar8->counts[lVar10 + 1];
      if (pnVar11 != (node234 *)0x0) {
        pnVar11->parent = pnVar5;
      }
      ppnVar1[6] = (node234 *)pnVar8->elems[lVar10];
      pnVar8->kids[lVar10 + 1] = (node234 *)0x0;
      pnVar8->counts[lVar10 + 1] = 0;
      pnVar8->elems[lVar10] = (void *)0x0;
      iVar3 = countnode234(pnVar5);
      ptr->counts[lVar7] = iVar3;
      iVar3 = ptr->counts[lVar7 + -1];
      iVar4 = countnode234(pnVar8);
      ptr->counts[lVar7 + -1] = iVar4;
      index = (index + iVar3) - iVar4;
    }
  }
  if (pvVar14 == (void *)0x0) {
LAB_0012fdf7:
    pvVar14 = ptr->elems[iVar9];
  }
  if (iVar9 == -1) {
    return (void *)0x0;
  }
LAB_0012fa63:
  pnVar5 = ptr->parent;
  if (pnVar5 == (node234_conflict *)0x0) {
    if (ptr->elems[1] == (void *)0x0) {
      if (ptr->kids[0] == (node234 *)0x0) {
        safefree(ptr);
        t->root = (node234_conflict *)0x0;
        return pvVar14;
      }
    }
    else if (ptr->kids[0] == (node234 *)0x0) {
      pnVar5 = (node234_conflict *)0x0;
      if (1 < iVar9) {
        ptr->elems[iVar9] = (void *)0x0;
        return pvVar14;
      }
      goto LAB_0012fbac;
    }
  }
  else if ((ptr->kids[0] == (node234 *)0x0) && (ptr->elems[1] != (void *)0x0))
  goto code_r0x0012fc20;
  pnVar5 = ptr->kids[iVar9];
  pnVar8 = pnVar5;
  if (pnVar5->elems[1] == (void *)0x0) {
    pnVar11 = ptr->kids[(long)iVar9 + 1];
    pnVar2 = pnVar11;
    if (pnVar11->elems[1] == (void *)0x0) {
      pnVar5->elems[1] = ptr->elems[iVar9];
      pnVar2 = pnVar11->kids[0];
      pnVar5->kids[2] = pnVar2;
      pnVar5->counts[2] = pnVar11->counts[0];
      if (pnVar2 != (node234 *)0x0) {
        pnVar2->parent = pnVar5;
      }
      pnVar5->elems[2] = pnVar11->elems[0];
      pnVar2 = pnVar11->kids[1];
      pnVar5->kids[3] = pnVar2;
      pnVar5->counts[3] = pnVar11->counts[1];
      if (pnVar2 != (node234 *)0x0) {
        pnVar2->parent = pnVar5;
      }
      safefree(pnVar11);
      iVar3 = countnode234(pnVar5);
      ptr->counts[iVar9] = iVar3;
      iVar3 = iVar9;
      if ((iVar9 < 2) && (pvVar12 = ptr->elems[(long)iVar9 + 1], pvVar12 != (void *)0x0)) {
        lVar7 = (long)(iVar9 + 1);
        do {
          iVar3 = (int)lVar7;
          ptr->elems[lVar7 + -1] = pvVar12;
          ptr->kids[lVar7] = ptr->kids[lVar7 + 1];
          ptr->counts[lVar7] = ptr->counts[lVar7 + 1];
          if (1 < iVar3) break;
          pvVar12 = ptr->elems[lVar7 + 1];
          lVar7 = lVar7 + 1;
        } while (pvVar12 != (void *)0x0);
      }
      ptr->elems[iVar3] = (void *)0x0;
      ptr->kids[(long)iVar3 + 1] = (node234 *)0x0;
      ptr->counts[iVar3 + 1] = 0;
      if (ptr->elems[0] == (void *)0x0) {
        t->root = pnVar5;
        pnVar5->parent = (node234_conflict *)0x0;
        safefree(ptr);
      }
      index = pnVar5->counts[1] + pnVar5->counts[0] + 1;
    }
    else {
      do {
        pnVar13 = pnVar2;
        pnVar2 = pnVar13->kids[0];
      } while (pnVar2 != (node234 *)0x0);
      ptr->elems[iVar9] = pnVar13->elems[0];
      index = 0;
      pnVar5 = pnVar11;
    }
  }
  else {
    while (pnVar6 = pnVar8, pnVar6->kids[0] != (node234 *)0x0) {
      pnVar8 = pnVar6->kids[3];
      if (((pnVar6->kids[3] == (node234 *)0x0) &&
          (pnVar8 = pnVar6->kids[2], pnVar6->kids[2] == (node234 *)0x0)) &&
         (pnVar8 = pnVar6->kids[1], pnVar6->kids[1] == (node234 *)0x0)) {
        pnVar8 = pnVar6->kids[0];
      }
    }
    pvVar12 = pnVar6->elems[2];
    if ((pvVar12 == (void *)0x0) && (pvVar12 = pnVar6->elems[1], pvVar12 == (void *)0x0)) {
      pvVar12 = pnVar6->elems[0];
    }
    ptr->elems[iVar9] = pvVar12;
    index = ptr->counts[iVar9] + -1;
  }
  goto LAB_0012f7e4;
LAB_0012f7d1:
  pnVar5 = ptr->kids[0];
  if (pnVar5->elems[1] == (void *)0x0) {
    pnVar11 = ptr->kids[1];
    local_50 = 0;
    local_54 = 0;
    pnVar8 = ptr;
    if (pnVar11 != (node234 *)0x0) {
LAB_0012fe3f:
      if (pnVar11->elems[1] != (void *)0x0) {
        pnVar5->elems[1] = pnVar8->elems[0];
        pnVar2 = pnVar11->kids[0];
        pnVar5->kids[2] = pnVar2;
        pnVar5->counts[2] = pnVar11->counts[0];
        if (pnVar2 != (node234 *)0x0) {
          pnVar2->parent = pnVar5;
        }
        pnVar8->elems[0] = pnVar11->elems[0];
        pnVar11->kids[0] = pnVar11->kids[1];
        pnVar11->counts[0] = pnVar11->counts[1];
        pvVar12 = pnVar11->elems[1];
        if (pvVar12 != (void *)0x0) {
          pnVar11->kids[1] = pnVar11->kids[2];
          pnVar11->counts[1] = pnVar11->counts[2];
          pnVar11->elems[0] = pvVar12;
          pvVar12 = pnVar11->elems[2];
          if (pvVar12 == (void *)0x0) {
            pvVar12 = (void *)0x1;
          }
          else {
            pnVar11->kids[2] = pnVar11->kids[3];
            pnVar11->counts[2] = pnVar11->counts[3];
            pnVar11->elems[1] = pvVar12;
            pvVar12 = (void *)0x2;
          }
        }
        iVar3 = (int)pvVar12;
        pnVar11->kids[(long)iVar3 + 1] = (node234 *)0x0;
        pnVar11->counts[iVar3 + 1] = 0;
        pnVar11->elems[iVar3] = (void *)0x0;
        iVar3 = countnode234(pnVar5);
        ptr->counts[local_50] = iVar3;
        iVar3 = countnode234(pnVar11);
        ptr->counts[local_50 + 1] = iVar3;
        goto LAB_0012f7e4;
      }
      if (local_54 != 0) {
LAB_0012f905:
        local_54 = local_54 - 1;
        index = index + 1 + ptr->counts[(int)local_54];
      }
    }
    pnVar11 = ptr->kids[(int)local_54];
    pnVar5 = ptr->kids[(long)(int)local_54 + 1];
    pnVar5->kids[3] = pnVar5->kids[1];
    pnVar5->counts[3] = pnVar5->counts[1];
    pnVar5->elems[2] = pnVar5->elems[0];
    pnVar5->kids[2] = pnVar5->kids[0];
    pnVar5->counts[2] = pnVar5->counts[0];
    pnVar5->elems[1] = ptr->elems[(int)local_54];
    pnVar2 = pnVar11->kids[1];
    pnVar5->kids[1] = pnVar2;
    pnVar5->counts[1] = pnVar11->counts[1];
    if (pnVar2 != (node234 *)0x0) {
      pnVar2->parent = pnVar5;
    }
    pnVar5->elems[0] = pnVar11->elems[0];
    pnVar2 = pnVar11->kids[0];
    pnVar5->kids[0] = pnVar2;
    pnVar5->counts[0] = pnVar11->counts[0];
    if (pnVar2 != (node234 *)0x0) {
      pnVar2->parent = pnVar5;
    }
    iVar3 = countnode234(pnVar5);
    ptr->counts[(int)(local_54 + 1)] = iVar3;
    safefree(pnVar11);
    if ((int)local_54 < 3) {
      pnVar11 = ptr->kids[(long)(int)local_54 + 1];
      if (pnVar11 != (node234 *)0x0) {
        lVar7 = (long)(int)(local_54 + 1);
        do {
          local_54 = (uint)lVar7;
          ptr->kids[lVar7 + -1] = pnVar11;
          ptr->counts[lVar7 + -1] = ptr->counts[lVar7];
          pvVar12 = (void *)0x0;
          if ((int)(local_54 - 1) < 2) {
            pvVar12 = ptr->elems[lVar7];
          }
          ptr->elems[lVar7 + -1] = pvVar12;
          if (2 < (int)local_54) goto LAB_0012fd6d;
          pnVar11 = ptr->kids[lVar7 + 1];
          lVar7 = lVar7 + 1;
        } while (pnVar11 != (node234 *)0x0);
      }
      lVar7 = (long)(int)local_54;
      ptr->kids[lVar7] = (node234 *)0x0;
      ptr->counts[lVar7] = 0;
      ptr->elems[lVar7] = (void *)0x0;
    }
    else {
LAB_0012fd6d:
      ptr->kids[(int)local_54] = (node234 *)0x0;
      ptr->counts[(int)local_54] = 0;
    }
    if (ptr->elems[0] == (void *)0x0) {
      t->root = pnVar5;
      pnVar5->parent = (node234_conflict *)0x0;
      safefree(ptr);
    }
  }
  goto LAB_0012f7e4;
code_r0x0012fc20:
  if (iVar9 < 2) {
LAB_0012fbac:
    pvVar12 = ptr->elems[iVar9 + 1];
    if (pvVar12 != (void *)0x0) {
      lVar7 = (long)(iVar9 + 1);
      do {
        iVar9 = (int)lVar7;
        ptr->elems[lVar7 + -1] = pvVar12;
        if (1 < iVar9) break;
        pvVar12 = ptr->elems[lVar7 + 1];
        lVar7 = lVar7 + 1;
      } while (pvVar12 != (void *)0x0);
    }
    ptr->elems[iVar9] = (void *)0x0;
    if (pnVar5 == (node234_conflict *)0x0) {
      return pvVar14;
    }
  }
  else {
    ptr->elems[iVar9] = (void *)0x0;
  }
  do {
    iVar9 = 0;
    if ((pnVar5->kids[0] != ptr) && (iVar9 = 1, pnVar5->kids[1] != ptr)) {
      iVar9 = (pnVar5->kids[2] != ptr) + 2;
    }
    pnVar5->counts[iVar9] = pnVar5->counts[iVar9] + -1;
    ptr = ptr->parent;
    pnVar5 = ptr->parent;
  } while (pnVar5 != (node234_conflict *)0x0);
  return pvVar14;
}



long FUN_0012f7ab(undefined8 *param_1,int param_2)

{
  int *piVar1;
  undefined8 *puVar2;
  undefined4 uVar3;
  int iVar4;
  long *plVar5;
  long lVar6;
  long *plVar7;
  long lVar8;
  int iVar9;
  long lVar10;
  long lVar11;
  long *plVar12;
  long *plVar13;
  int iVar14;
  long lVar15;
  uint local_54;
  long local_50;
  
  iVar9 = -1;
  lVar15 = 0;
  plVar13 = (long *)*param_1;
LAB_0012f7e4:
  while (plVar12 = plVar13, plVar12 != (long *)0x0) {
    if (param_2 < (int)plVar12[5]) goto LAB_0012f7d1;
    param_2 = param_2 - ((int)plVar12[5] + 1);
    if (param_2 < 0) {
      iVar9 = 0;
LAB_0012fdee:
      if (lVar15 == 0) goto LAB_0012fdf7;
      goto LAB_0012fa63;
    }
    if (param_2 < *(int *)((long)plVar12 + 0x2c)) {
      local_54 = 1;
    }
    else {
      param_2 = param_2 - (*(int *)((long)plVar12 + 0x2c) + 1);
      if (param_2 < 0) {
        iVar9 = 1;
        goto LAB_0012fdee;
      }
      if (param_2 < (int)plVar12[6]) {
        local_54 = 2;
      }
      else {
        param_2 = param_2 - ((int)plVar12[6] + 1);
        if (param_2 < 0) {
          iVar9 = 2;
          goto LAB_0012fdee;
        }
        local_54 = 3;
      }
    }
    lVar6 = (long)(int)local_54;
    plVar7 = plVar12 + lVar6;
    plVar13 = (long *)plVar7[1];
    if (plVar13[8] == 0) {
      lVar8 = *plVar7;
      if (*(long *)(lVar8 + 0x40) == 0) {
        if (local_54 < 3) {
          local_50 = (long)(int)local_54;
          lVar6 = (plVar12 + local_50)[2];
          plVar7 = plVar12 + local_50;
          if (lVar6 == 0) goto LAB_0012f905;
          goto LAB_0012fe3f;
        }
        goto LAB_0012f905;
      }
      lVar11 = *(long *)(lVar8 + 0x48);
      plVar13[3] = plVar13[2];
      *(undefined4 *)(plVar13 + 6) = *(undefined4 *)((long)plVar13 + 0x2c);
      plVar13[8] = plVar13[7];
      plVar13[2] = plVar13[1];
      *(int *)((long)plVar13 + 0x2c) = (int)plVar13[5];
      plVar13[7] = plVar7[6];
      lVar10 = (long)(int)((lVar11 != 0) + 1);
      lVar11 = lVar8 + lVar10 * 8;
      puVar2 = *(undefined8 **)(lVar11 + 0x10);
      plVar13[1] = (long)puVar2;
      lVar10 = lVar8 + lVar10 * 4;
      *(undefined4 *)(plVar13 + 5) = *(undefined4 *)(lVar10 + 0x2c);
      if (puVar2 != (undefined8 *)0x0) {
        *puVar2 = plVar13;
      }
      plVar7[6] = *(long *)(lVar11 + 0x38);
      *(undefined8 *)(lVar11 + 0x10) = 0;
      *(undefined4 *)(lVar10 + 0x2c) = 0;
      *(undefined8 *)(lVar11 + 0x38) = 0;
      uVar3 = FUN_0012ef67(plVar13);
      *(undefined4 *)((long)plVar12 + lVar6 * 4 + 0x28) = uVar3;
      iVar14 = *(int *)((long)plVar12 + lVar6 * 4 + 0x24);
      iVar4 = FUN_0012ef67(lVar8);
      *(int *)((long)plVar12 + lVar6 * 4 + 0x24) = iVar4;
      param_2 = (param_2 + iVar14) - iVar4;
    }
  }
  if (lVar15 == 0) {
LAB_0012fdf7:
    lVar15 = plVar12[(long)iVar9 + 7];
  }
  if (iVar9 == -1) {
    return 0;
  }
LAB_0012fa63:
  lVar6 = *plVar12;
  if (lVar6 == 0) {
    if (plVar12[8] == 0) {
      if (plVar12[1] == 0) {
        FUN_0010c4d3(plVar12);
        *param_1 = 0;
        return lVar15;
      }
    }
    else if (plVar12[1] == 0) {
      lVar6 = 0;
      if (1 < iVar9) {
        plVar12[(long)iVar9 + 7] = 0;
        return lVar15;
      }
      goto LAB_0012fbac;
    }
  }
  else if ((plVar12[1] == 0) && (plVar12[8] != 0)) goto code_r0x0012fc20;
  plVar13 = (long *)plVar12[(long)iVar9 + 1];
  plVar7 = plVar13;
  if (plVar13[8] == 0) {
    plVar7 = (long *)plVar12[(long)iVar9 + 2];
    plVar5 = plVar7;
    if (plVar7[8] == 0) {
      plVar13[8] = plVar12[(long)iVar9 + 7];
      puVar2 = (undefined8 *)plVar7[1];
      plVar13[3] = (long)puVar2;
      *(int *)(plVar13 + 6) = (int)plVar7[5];
      if (puVar2 != (undefined8 *)0x0) {
        *puVar2 = plVar13;
      }
      plVar13[9] = plVar7[7];
      puVar2 = (undefined8 *)plVar7[2];
      plVar13[4] = (long)puVar2;
      *(undefined4 *)((long)plVar13 + 0x34) = *(undefined4 *)((long)plVar7 + 0x2c);
      if (puVar2 != (undefined8 *)0x0) {
        *puVar2 = plVar13;
      }
      FUN_0010c4d3();
      uVar3 = FUN_0012ef67(plVar13);
      *(undefined4 *)((long)plVar12 + (long)iVar9 * 4 + 0x28) = uVar3;
      iVar14 = iVar9;
      if ((iVar9 < 2) && (lVar6 = plVar12[(long)iVar9 + 8], lVar6 != 0)) {
        lVar8 = (long)(iVar9 + 1);
        do {
          iVar14 = (int)lVar8;
          plVar12[lVar8 + 6] = lVar6;
          plVar12[lVar8 + 1] = plVar12[lVar8 + 2];
          *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28) =
               *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x2c);
          if (1 < iVar14) break;
          lVar6 = plVar12[lVar8 + 8];
          lVar8 = lVar8 + 1;
        } while (lVar6 != 0);
      }
      plVar12[(long)iVar14 + 7] = 0;
      plVar12[(long)iVar14 + 2] = 0;
      *(undefined4 *)((long)plVar12 + (long)(iVar14 + 1) * 4 + 0x28) = 0;
      if (plVar12[7] == 0) {
        *param_1 = plVar13;
        *plVar13 = 0;
        FUN_0010c4d3(plVar12);
      }
      param_2 = *(int *)((long)plVar13 + 0x2c) + (int)plVar13[5] + 1;
    }
    else {
      do {
        plVar13 = plVar5;
        plVar5 = (long *)plVar13[1];
      } while (plVar5 != (long *)0x0);
      plVar12[(long)iVar9 + 7] = plVar13[7];
      param_2 = 0;
      plVar13 = plVar7;
    }
  }
  else {
    while (plVar5 = plVar7, (long *)plVar5[1] != (long *)0x0) {
      plVar7 = (long *)plVar5[4];
      if ((((long *)plVar5[4] == (long *)0x0) &&
          (plVar7 = (long *)plVar5[3], (long *)plVar5[3] == (long *)0x0)) &&
         (plVar7 = (long *)plVar5[2], (long *)plVar5[2] == (long *)0x0)) {
        plVar7 = (long *)plVar5[1];
      }
    }
    lVar6 = plVar5[9];
    if ((lVar6 == 0) && (lVar6 = plVar5[8], lVar6 == 0)) {
      lVar6 = plVar5[7];
    }
    plVar12[(long)iVar9 + 7] = lVar6;
    param_2 = *(int *)((long)plVar12 + (long)iVar9 * 4 + 0x28) + -1;
  }
  goto LAB_0012f7e4;
LAB_0012f7d1:
  plVar13 = (long *)plVar12[1];
  if (plVar13[8] == 0) {
    lVar6 = plVar12[2];
    local_50 = 0;
    local_54 = 0;
    plVar7 = plVar12;
    if (lVar6 != 0) {
LAB_0012fe3f:
      if (*(long *)(lVar6 + 0x40) != 0) {
        plVar13[8] = plVar7[7];
        puVar2 = *(undefined8 **)(lVar6 + 8);
        plVar13[3] = (long)puVar2;
        *(undefined4 *)(plVar13 + 6) = *(undefined4 *)(lVar6 + 0x28);
        if (puVar2 != (undefined8 *)0x0) {
          *puVar2 = plVar13;
        }
        plVar7[7] = *(long *)(lVar6 + 0x38);
        *(undefined8 *)(lVar6 + 8) = *(undefined8 *)(lVar6 + 0x10);
        *(undefined4 *)(lVar6 + 0x28) = *(undefined4 *)(lVar6 + 0x2c);
        lVar8 = *(long *)(lVar6 + 0x40);
        if (lVar8 != 0) {
          *(undefined8 *)(lVar6 + 0x10) = *(undefined8 *)(lVar6 + 0x18);
          *(undefined4 *)(lVar6 + 0x2c) = *(undefined4 *)(lVar6 + 0x30);
          *(long *)(lVar6 + 0x38) = lVar8;
          if (*(long *)(lVar6 + 0x48) == 0) {
            lVar8 = 1;
          }
          else {
            *(undefined8 *)(lVar6 + 0x18) = *(undefined8 *)(lVar6 + 0x20);
            *(undefined4 *)(lVar6 + 0x30) = *(undefined4 *)(lVar6 + 0x34);
            *(long *)(lVar6 + 0x40) = *(long *)(lVar6 + 0x48);
            lVar8 = 2;
          }
        }
        lVar11 = lVar6 + (long)(int)lVar8 * 8;
        *(undefined8 *)(lVar11 + 0x10) = 0;
        *(undefined4 *)(lVar6 + 0x28 + (long)((int)lVar8 + 1) * 4) = 0;
        *(undefined8 *)(lVar11 + 0x38) = 0;
        uVar3 = FUN_0012ef67(plVar13);
        *(undefined4 *)((long)plVar12 + local_50 * 4 + 0x28) = uVar3;
        uVar3 = FUN_0012ef67(lVar6);
        *(undefined4 *)((long)plVar12 + local_50 * 4 + 0x2c) = uVar3;
        goto LAB_0012f7e4;
      }
      if (local_54 != 0) {
LAB_0012f905:
        local_54 = local_54 - 1;
        param_2 = param_2 + 1 + *(int *)((long)plVar12 + (long)(int)local_54 * 4 + 0x28);
      }
    }
    lVar6 = plVar12[(long)(int)local_54 + 1];
    plVar13 = (long *)plVar12[(long)(int)local_54 + 2];
    plVar13[4] = plVar13[2];
    *(undefined4 *)((long)plVar13 + 0x34) = *(undefined4 *)((long)plVar13 + 0x2c);
    plVar13[9] = plVar13[7];
    plVar13[3] = plVar13[1];
    *(int *)(plVar13 + 6) = (int)plVar13[5];
    plVar13[8] = plVar12[(long)(int)local_54 + 7];
    puVar2 = *(undefined8 **)(lVar6 + 0x10);
    plVar13[2] = (long)puVar2;
    *(undefined4 *)((long)plVar13 + 0x2c) = *(undefined4 *)(lVar6 + 0x2c);
    if (puVar2 != (undefined8 *)0x0) {
      *puVar2 = plVar13;
    }
    plVar13[7] = *(long *)(lVar6 + 0x38);
    puVar2 = *(undefined8 **)(lVar6 + 8);
    plVar13[1] = (long)puVar2;
    *(undefined4 *)(plVar13 + 5) = *(undefined4 *)(lVar6 + 0x28);
    if (puVar2 != (undefined8 *)0x0) {
      *puVar2 = plVar13;
    }
    uVar3 = FUN_0012ef67(plVar13);
    *(undefined4 *)((long)plVar12 + (long)(int)(local_54 + 1) * 4 + 0x28) = uVar3;
    FUN_0010c4d3(lVar6);
    if ((int)local_54 < 3) {
      lVar6 = plVar12[(long)(int)local_54 + 2];
      if (lVar6 != 0) {
        lVar8 = (long)(int)(local_54 + 1);
        do {
          local_54 = (uint)lVar8;
          plVar12[lVar8] = lVar6;
          *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x24) =
               *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28);
          lVar6 = 0;
          if ((int)(local_54 - 1) < 2) {
            lVar6 = plVar12[lVar8 + 7];
          }
          plVar12[lVar8 + 6] = lVar6;
          if (2 < (int)local_54) goto LAB_0012fd6d;
          lVar6 = plVar12[lVar8 + 2];
          lVar8 = lVar8 + 1;
        } while (lVar6 != 0);
      }
      lVar6 = (long)(int)local_54;
      plVar12[lVar6 + 1] = 0;
      *(undefined4 *)((long)plVar12 + lVar6 * 4 + 0x28) = 0;
      plVar12[lVar6 + 7] = 0;
    }
    else {
LAB_0012fd6d:
      plVar12[(long)(int)local_54 + 1] = 0;
      *(undefined4 *)((long)plVar12 + (long)(int)local_54 * 4 + 0x28) = 0;
    }
    if (plVar12[7] == 0) {
      *param_1 = plVar13;
      *plVar13 = 0;
      FUN_0010c4d3(plVar12);
    }
  }
  goto LAB_0012f7e4;
code_r0x0012fc20:
  if (iVar9 < 2) {
LAB_0012fbac:
    lVar8 = plVar12[(long)(iVar9 + 1) + 7];
    if (lVar8 != 0) {
      lVar11 = (long)(iVar9 + 1);
      do {
        iVar9 = (int)lVar11;
        plVar12[lVar11 + 6] = lVar8;
        if (1 < iVar9) break;
        lVar8 = plVar12[lVar11 + 8];
        lVar11 = lVar11 + 1;
      } while (lVar8 != 0);
    }
    plVar12[(long)iVar9 + 7] = 0;
    if (lVar6 == 0) {
      return lVar15;
    }
  }
  else {
    plVar12[(long)iVar9 + 7] = 0;
  }
  do {
    iVar9 = 0;
    if ((*(long **)(lVar6 + 8) != plVar12) && (iVar9 = 1, *(long **)(lVar6 + 0x10) != plVar12)) {
      iVar9 = (*(long **)(lVar6 + 0x18) != plVar12) + 2;
    }
    piVar1 = (int *)(lVar6 + 0x28 + (long)iVar9 * 4);
    *piVar1 = *piVar1 + -1;
    plVar12 = (long *)*plVar12;
    lVar6 = *plVar12;
  } while (lVar6 != 0);
  return lVar15;
}


PUSH R15
PUSH R14
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x28
MOV qword ptr [RSP + 0x18],RDI
MOV EBP,ESI
MOV RBX,qword ptr [RDI]
MOV R13D,0xffffffff
MOV R15D,0x0
JMP 0x0012f7e4
MOV R12,qword ptr [RBX + 0x8]
CMP qword ptr [R12 + 0x40],0x0
JZ 0x0012fe1e
MOV RBX,R12
TEST RBX,RBX
JZ 0x0012fa50
MOV EAX,dword ptr [RBX + 0x28]
CMP EAX,EBP
JG 0x0012f7d1
ADD EAX,0x1
SUB EBP,EAX
JS 0x0012fde8
MOV EAX,dword ptr [RBX + 0x2c]
CMP EAX,EBP
JG 0x0012fdb0
ADD EAX,0x1
SUB EBP,EAX
JS 0x0012fe04
MOV EAX,dword ptr [RBX + 0x30]
CMP EAX,EBP
JG 0x0012fdde
ADD EAX,0x1
SUB EBP,EAX
JS 0x0012fe0c
MOV dword ptr [RSP + 0x4],0x3
JMP 0x0012fdb8
MOV R14,qword ptr [RAX]
CMP qword ptr [R14 + 0x40],0x0
JZ 0x0012fd85
CMP qword ptr [R14 + 0x48],0x0
SETNZ DL
MOVZX EDX,DL
ADD EDX,0x1
MOV RCX,qword ptr [R12 + 0x10]
MOV qword ptr [R12 + 0x18],RCX
MOV ECX,dword ptr [R12 + 0x2c]
MOV dword ptr [R12 + 0x30],ECX
MOV RCX,qword ptr [R12 + 0x38]
MOV qword ptr [R12 + 0x40],RCX
MOV RCX,qword ptr [R12 + 0x8]
MOV qword ptr [R12 + 0x10],RCX
MOV ECX,dword ptr [R12 + 0x28]
MOV dword ptr [R12 + 0x2c],ECX
MOV RCX,qword ptr [RAX + 0x30]
MOV qword ptr [R12 + 0x38],RCX
MOVSXD RDX,EDX
LEA RCX,[R14 + RDX*0x8]
MOV RSI,qword ptr [RCX + 0x10]
MOV qword ptr [R12 + 0x8],RSI
LEA RDX,[R14 + RDX*0x4]
MOV EDI,dword ptr [RDX + 0x2c]
MOV dword ptr [R12 + 0x28],EDI
TEST RSI,RSI
JZ 0x0012f8b3
MOV qword ptr [RSI],R12
MOV RSI,qword ptr [RCX + 0x38]
MOV qword ptr [RAX + 0x30],RSI
MOV qword ptr [RCX + 0x10],0x0
MOV dword ptr [RDX + 0x2c],0x0
MOV qword ptr [RCX + 0x38],0x0
MOV RDI,R12
CALL 0x0012ef67
MOV RSI,qword ptr [RSP + 0x8]
LEA RBX,[RBX + RSI*0x4]
MOV dword ptr [RBX + 0x28],EAX
ADD EBP,dword ptr [RBX + 0x24]
MOV RDI,R14
CALL 0x0012ef67
MOV dword ptr [RBX + 0x24],EAX
SUB EBP,EAX
MOV RBX,R12
JMP 0x0012f7e4
CMP dword ptr [RSP + 0x4],0x0
JLE 0x0012f918
SUB dword ptr [RSP + 0x4],0x1
MOV EAX,dword ptr [RSP + 0x4]
CDQE
MOV EAX,dword ptr [RBX + RAX*0x4 + 0x28]
LEA EBP,[RBP + RAX*0x1 + 0x1]
MOV EDI,dword ptr [RSP + 0x4]
MOVSXD RAX,EDI
LEA RSI,[RBX + RAX*0x8]
MOV qword ptr [RSP + 0x10],RSI
MOV R14,qword ptr [RSI + 0x8]
LEA EAX,[RDI + 0x1]
MOV dword ptr [RSP + 0x8],EAX
MOV R12,qword ptr [RSI + 0x10]
MOV RAX,qword ptr [R12 + 0x10]
MOV qword ptr [R12 + 0x20],RAX
MOV EAX,dword ptr [R12 + 0x2c]
MOV dword ptr [R12 + 0x34],EAX
MOV RAX,qword ptr [R12 + 0x38]
MOV qword ptr [R12 + 0x48],RAX
MOV RAX,qword ptr [R12 + 0x8]
MOV qword ptr [R12 + 0x18],RAX
MOV EAX,dword ptr [R12 + 0x28]
MOV dword ptr [R12 + 0x30],EAX
MOV RAX,qword ptr [RSI + 0x38]
MOV qword ptr [R12 + 0x40],RAX
MOV RAX,qword ptr [R14 + 0x10]
MOV qword ptr [R12 + 0x10],RAX
MOV EDX,dword ptr [R14 + 0x2c]
MOV dword ptr [R12 + 0x2c],EDX
TEST RAX,RAX
JZ 0x0012f98c
MOV qword ptr [RAX],R12
MOV RAX,qword ptr [R14 + 0x38]
MOV qword ptr [R12 + 0x38],RAX
MOV RAX,qword ptr [R14 + 0x8]
MOV qword ptr [R12 + 0x8],RAX
MOV EDX,dword ptr [R14 + 0x28]
MOV dword ptr [R12 + 0x28],EDX
TEST RAX,RAX
JZ 0x0012f9af
MOV qword ptr [RAX],R12
MOV RDI,R12
CALL 0x0012ef67
MOVSXD RDX,dword ptr [RSP + 0x8]
MOV dword ptr [RBX + RDX*0x4 + 0x28],EAX
MOV RDI,R14
CALL 0x0010c4d3
CMP dword ptr [RSP + 0x4],0x2
JG 0x0012fd6d
MOV RAX,qword ptr [RSP + 0x10]
MOV RDX,qword ptr [RAX + 0x10]
TEST RDX,RDX
JZ 0x0012fd39
MOVSXD RAX,dword ptr [RSP + 0x8]
JMP 0x0012fa0c
MOV qword ptr [RBX + RAX*0x8 + 0x30],RDX
CMP EAX,0x2
JG 0x0012fd6d
ADD RAX,0x1
MOV RDX,qword ptr [RBX + RAX*0x8 + 0x8]
TEST RDX,RDX
JZ 0x0012fd39
MOV dword ptr [RSP + 0x4],EAX
MOV qword ptr [RBX + RAX*0x8],RDX
MOV EDX,dword ptr [RBX + RAX*0x4 + 0x28]
MOV dword ptr [RBX + RAX*0x4 + 0x24],EDX
LEA ECX,[RAX + -0x1]
MOV EDX,0x0
CMP ECX,0x1
JG 0x0012f9ec
MOV RDX,qword ptr [RBX + RAX*0x8 + 0x38]
JMP 0x0012f9ec
MOV RAX,qword ptr [RSP + 0x18]
MOV qword ptr [RAX],R12
MOV qword ptr [R12],0x0
MOV RDI,RBX
CALL 0x0010c4d3
MOV RBX,R12
JMP 0x0012f7e4
TEST R15,R15
JZ 0x0012fdf7
CMP R13D,-0x1
JZ 0x0012fd21
MOV RAX,qword ptr [RBX]
TEST RAX,RAX
JZ 0x0012fb8e
CMP qword ptr [RBX + 0x8],0x0
JZ 0x0012fc15
MOVSXD RAX,R13D
LEA RBP,[RBX + RAX*0x8]
MOV R12,qword ptr [RBP + 0x8]
CMP qword ptr [R12 + 0x40],0x0
JNZ 0x0012fc8b
LEA R14D,[R13 + 0x1]
MOV RDI,qword ptr [RBP + 0x10]
MOV RDX,RDI
CMP qword ptr [RDI + 0x40],0x0
JNZ 0x0012fcd6
MOV RAX,qword ptr [RBP + 0x38]
MOV qword ptr [R12 + 0x40],RAX
MOV RAX,qword ptr [RDI + 0x8]
MOV qword ptr [R12 + 0x18],RAX
MOV EDX,dword ptr [RDI + 0x28]
MOV dword ptr [R12 + 0x30],EDX
TEST RAX,RAX
JZ 0x0012fac9
MOV qword ptr [RAX],R12
MOV RAX,qword ptr [RDI + 0x38]
MOV qword ptr [R12 + 0x48],RAX
MOV RAX,qword ptr [RDI + 0x10]
MOV qword ptr [R12 + 0x20],RAX
MOV EDX,dword ptr [RDI + 0x2c]
MOV dword ptr [R12 + 0x34],EDX
TEST RAX,RAX
JZ 0x0012faeb
MOV qword ptr [RAX],R12
CALL 0x0010c4d3
MOV RDI,R12
CALL 0x0012ef67
MOVSXD RDX,R13D
MOV dword ptr [RBX + RDX*0x4 + 0x28],EAX
CMP R13D,0x1
JG 0x0012fcf4
MOV RAX,qword ptr [RBP + 0x40]
TEST RAX,RAX
JZ 0x0012fcfc
MOVSXD R14,R14D
MOV EDX,R14D
MOV qword ptr [RBX + R14*0x8 + 0x30],RAX
MOV RAX,qword ptr [RBX + R14*0x8 + 0x10]
MOV qword ptr [RBX + R14*0x8 + 0x8],RAX
MOV EAX,dword ptr [RBX + R14*0x4 + 0x2c]
MOV dword ptr [RBX + R14*0x4 + 0x28],EAX
CMP R14D,0x1
JG 0x0012fb49
ADD R14,0x1
MOV RAX,qword ptr [RBX + R14*0x8 + 0x38]
TEST RAX,RAX
JNZ 0x0012fb19
MOVSXD RAX,EDX
LEA RAX,[RBX + RAX*0x8]
MOV qword ptr [RAX + 0x38],0x0
MOV qword ptr [RAX + 0x10],0x0
ADD EDX,0x1
MOVSXD RDX,EDX
MOV dword ptr [RBX + RDX*0x4 + 0x28],0x0
CMP qword ptr [RBX + 0x38],0x0
JZ 0x0012fd04
MOV EBP,dword ptr [R12 + 0x2c]
ADD EBP,dword ptr [R12 + 0x28]
ADD EBP,0x1
MOV RBX,R12
JMP 0x0012f7e4
CMP qword ptr [RBX + 0x40],0x0
JZ 0x0012fbf1
MOV RAX,qword ptr [RBX + 0x8]
TEST RAX,RAX
JNZ 0x0012fa7a
CMP R13D,0x1
JG 0x0012ff14
LEA EDX,[R13 + 0x1]
MOVSXD RCX,EDX
MOV RCX,qword ptr [RBX + RCX*0x8 + 0x38]
TEST RCX,RCX
JZ 0x0012fbdb
MOVSXD RDX,EDX
MOV R13D,EDX
MOV qword ptr [RBX + RDX*0x8 + 0x30],RCX
CMP EDX,0x1
JG 0x0012fbdb
ADD RDX,0x1
MOV RCX,qword ptr [RBX + RDX*0x8 + 0x38]
TEST RCX,RCX
JNZ 0x0012fbc0
MOVSXD R13,R13D
MOV qword ptr [RBX + R13*0x8 + 0x38],0x0
TEST RAX,RAX
JNZ 0x0012fc4b
JMP 0x0012fd27
CMP qword ptr [RBX + 0x8],0x0
JNZ 0x0012fa7a
MOV RDI,RBX
CALL 0x0010c4d3
MOV RAX,qword ptr [RSP + 0x18]
MOV qword ptr [RAX],0x0
JMP 0x0012fd27
CMP qword ptr [RBX + 0x40],0x0
JZ 0x0012fa7a
CMP R13D,0x1
JLE 0x0012fbac
MOVSXD R13,R13D
MOV qword ptr [RBX + R13*0x8 + 0x38],0x0
JMP 0x0012fc4b
MOVSXD RDX,EDX
SUB dword ptr [RAX + RDX*0x4 + 0x28],0x1
MOV RBX,qword ptr [RBX]
MOV RAX,qword ptr [RBX]
TEST RAX,RAX
JZ 0x0012fd27
MOV EDX,0x0
CMP qword ptr [RAX + 0x8],RBX
JZ 0x0012fc34
MOV EDX,0x1
CMP qword ptr [RAX + 0x10],RBX
JZ 0x0012fc34
CMP qword ptr [RAX + 0x18],RBX
SETNZ DL
MOVZX EDX,DL
ADD EDX,0x2
JMP 0x0012fc34
MOV RDX,qword ptr [RAX + 0x18]
TEST RDX,RDX
JZ 0x0012fc7e
MOV RAX,RDX
JMP 0x0012fc8e
MOV RAX,qword ptr [RAX + 0x10]
TEST RAX,RAX
CMOVZ RAX,RCX
JMP 0x0012fc8e
MOV RAX,R12
MOV RCX,qword ptr [RAX + 0x8]
TEST RCX,RCX
JZ 0x0012fca5
MOV RDX,qword ptr [RAX + 0x20]
TEST RDX,RDX
JZ 0x0012fc70
MOV RAX,RDX
JMP 0x0012fc8e
MOV RDX,qword ptr [RAX + 0x48]
TEST RDX,RDX
JZ 0x0012fcc4
MOV qword ptr [RBP + 0x38],RDX
MOVSXD RAX,R13D
MOV EBP,dword ptr [RBX + RAX*0x4 + 0x28]
SUB EBP,0x1
MOV RBX,R12
JMP 0x0012f7e4
MOV RDX,qword ptr [RAX + 0x40]
TEST RDX,RDX
JNZ 0x0012fcae
MOV RDX,qword ptr [RAX + 0x38]
JMP 0x0012fcae
MOV RDX,RAX
MOV RAX,qword ptr [RDX + 0x8]
TEST RAX,RAX
JNZ 0x0012fcd3
MOV RAX,qword ptr [RDX + 0x38]
MOV qword ptr [RBP + 0x38],RAX
MOV RBX,RDI
MOV EBP,0x0
JMP 0x0012f7e4
MOV EDX,R13D
JMP 0x0012fb49
MOV EDX,R13D
JMP 0x0012fb49
MOV RAX,qword ptr [RSP + 0x18]
MOV qword ptr [RAX],R12
MOV qword ptr [R12],0x0
MOV RDI,RBX
CALL 0x0010c4d3
JMP 0x0012fb79
MOV R15D,0x0
MOV RAX,R15
ADD RSP,0x28
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOVSXD RDX,dword ptr [RSP + 0x4]
LEA RAX,[RBX + RDX*0x8]
MOV qword ptr [RAX + 0x8],0x0
MOV dword ptr [RBX + RDX*0x4 + 0x28],0x0
MOV qword ptr [RAX + 0x38],0x0
CMP qword ptr [RBX + 0x38],0x0
JZ 0x0012fa30
MOV RBX,R12
JMP 0x0012f7e4
MOVSXD RAX,dword ptr [RSP + 0x4]
MOV qword ptr [RBX + RAX*0x8 + 0x8],0x0
MOV dword ptr [RBX + RAX*0x4 + 0x28],0x0
JMP 0x0012fd5a
CMP dword ptr [RSP + 0x4],0x2
JG 0x0012f905
MOVSXD RAX,dword ptr [RSP + 0x4]
MOV qword ptr [RSP + 0x8],RAX
LEA RAX,[RBX + RAX*0x8]
MOV R14,qword ptr [RAX + 0x10]
TEST R14,R14
JNZ 0x0012fe3f
JMP 0x0012f905
MOV dword ptr [RSP + 0x4],0x1
MOVSXD RAX,dword ptr [RSP + 0x4]
MOV qword ptr [RSP + 0x8],RAX
LEA RAX,[RBX + RAX*0x8]
MOV R12,qword ptr [RAX + 0x8]
CMP qword ptr [R12 + 0x40],0x0
JZ 0x0012f838
MOV RBX,R12
JMP 0x0012f7e4
MOV dword ptr [RSP + 0x4],0x2
JMP 0x0012fdb8
MOV R13D,0x0
TEST R15,R15
JNZ 0x0012fa63
MOVSXD RAX,R13D
MOV R15,qword ptr [RBX + RAX*0x8 + 0x38]
JMP 0x0012fa59
MOV R13D,0x1
JMP 0x0012fdee
MOV R13D,0x2
JMP 0x0012fdee
MOV EAX,0x1
JMP 0x0012fec8
MOV R14,qword ptr [RBX + 0x10]
MOV RAX,RBX
MOV qword ptr [RSP + 0x8],0x0
MOV dword ptr [RSP + 0x4],0x0
TEST R14,R14
JZ 0x0012f918
CMP qword ptr [R14 + 0x40],0x0
JZ 0x0012f8fe
MOV RDX,qword ptr [RAX + 0x38]
MOV qword ptr [R12 + 0x40],RDX
MOV RDX,qword ptr [R14 + 0x8]
MOV qword ptr [R12 + 0x18],RDX
MOV ECX,dword ptr [R14 + 0x28]
MOV dword ptr [R12 + 0x30],ECX
TEST RDX,RDX
JZ 0x0012fe6d
MOV qword ptr [RDX],R12
MOV RDX,qword ptr [R14 + 0x38]
MOV qword ptr [RAX + 0x38],RDX
MOV RAX,qword ptr [R14 + 0x10]
MOV qword ptr [R14 + 0x8],RAX
MOV EAX,dword ptr [R14 + 0x2c]
MOV dword ptr [R14 + 0x28],EAX
MOV RAX,qword ptr [R14 + 0x40]
TEST RAX,RAX
JZ 0x0012fec8
MOV RDX,qword ptr [R14 + 0x18]
MOV qword ptr [R14 + 0x10],RDX
MOV EDX,dword ptr [R14 + 0x30]
MOV dword ptr [R14 + 0x2c],EDX
MOV qword ptr [R14 + 0x38],RAX
MOV RAX,qword ptr [R14 + 0x48]
TEST RAX,RAX
JZ 0x0012fe14
MOV RDX,qword ptr [R14 + 0x20]
MOV qword ptr [R14 + 0x18],RDX
MOV EDX,dword ptr [R14 + 0x34]
MOV dword ptr [R14 + 0x30],EDX
MOV qword ptr [R14 + 0x40],RAX
MOV EAX,0x2
MOVSXD RDX,EAX
LEA RDX,[R14 + RDX*0x8]
MOV qword ptr [RDX + 0x10],0x0
ADD EAX,0x1
CDQE
MOV dword ptr [R14 + RAX*0x4 + 0x28],0x0
MOV qword ptr [RDX + 0x38],0x0
MOV RDI,R12
CALL 0x0012ef67
MOV RSI,qword ptr [RSP + 0x8]
LEA RBX,[RBX + RSI*0x4]
MOV dword ptr [RBX + 0x28],EAX
MOV RDI,R14
CALL 0x0012ef67
MOV dword ptr [RBX + 0x2c],EAX
MOV RBX,R12
JMP 0x0012f7e4
MOVSXD R13,R13D
MOV qword ptr [RBX + R13*0x8 + 0x38],0x0
JMP 0x0012fd27
(translation_unit "long FUN_0012f7ab(undefined8 *param_1,int param_2)\n\n{\n  int *piVar1;\n  undefined8 *puVar2;\n  undefined4 uVar3;\n  int iVar4;\n  long *plVar5;\n  long lVar6;\n  long *plVar7;\n  long lVar8;\n  int iVar9;\n  long lVar10;\n  long lVar11;\n  long *plVar12;\n  long *plVar13;\n  int iVar14;\n  long lVar15;\n  uint local_54;\n  long local_50;\n  \n  iVar9 = -1;\n  lVar15 = 0;\n  plVar13 = (long *)*param_1;\nLAB_0012f7e4:\n  while (plVar12 = plVar13, plVar12 != (long *)0x0) {\n    if (param_2 < (int)plVar12[5]) goto LAB_0012f7d1;\n    param_2 = param_2 - ((int)plVar12[5] + 1);\n    if (param_2 < 0) {\n      iVar9 = 0;\nLAB_0012fdee:\n      if (lVar15 == 0) goto LAB_0012fdf7;\n      goto LAB_0012fa63;\n    }\n    if (param_2 < *(int *)((long)plVar12 + 0x2c)) {\n      local_54 = 1;\n    }\n    else {\n      param_2 = param_2 - (*(int *)((long)plVar12 + 0x2c) + 1);\n      if (param_2 < 0) {\n        iVar9 = 1;\n        goto LAB_0012fdee;\n      }\n      if (param_2 < (int)plVar12[6]) {\n        local_54 = 2;\n      }\n      else {\n        param_2 = param_2 - ((int)plVar12[6] + 1);\n        if (param_2 < 0) {\n          iVar9 = 2;\n          goto LAB_0012fdee;\n        }\n        local_54 = 3;\n      }\n    }\n    lVar6 = (long)(int)local_54;\n    plVar7 = plVar12 + lVar6;\n    plVar13 = (long *)plVar7[1];\n    if (plVar13[8] == 0) {\n      lVar8 = *plVar7;\n      if (*(long *)(lVar8 + 0x40) == 0) {\n        if (local_54 < 3) {\n          local_50 = (long)(int)local_54;\n          lVar6 = (plVar12 + local_50)[2];\n          plVar7 = plVar12 + local_50;\n          if (lVar6 == 0) goto LAB_0012f905;\n          goto LAB_0012fe3f;\n        }\n        goto LAB_0012f905;\n      }\n      lVar11 = *(long *)(lVar8 + 0x48);\n      plVar13[3] = plVar13[2];\n      *(undefined4 *)(plVar13 + 6) = *(undefined4 *)((long)plVar13 + 0x2c);\n      plVar13[8] = plVar13[7];\n      plVar13[2] = plVar13[1];\n      *(int *)((long)plVar13 + 0x2c) = (int)plVar13[5];\n      plVar13[7] = plVar7[6];\n      lVar10 = (long)(int)((lVar11 != 0) + 1);\n      lVar11 = lVar8 + lVar10 * 8;\n      puVar2 = *(undefined8 **)(lVar11 + 0x10);\n      plVar13[1] = (long)puVar2;\n      lVar10 = lVar8 + lVar10 * 4;\n      *(undefined4 *)(plVar13 + 5) = *(undefined4 *)(lVar10 + 0x2c);\n      if (puVar2 != (undefined8 *)0x0) {\n        *puVar2 = plVar13;\n      }\n      plVar7[6] = *(long *)(lVar11 + 0x38);\n      *(undefined8 *)(lVar11 + 0x10) = 0;\n      *(undefined4 *)(lVar10 + 0x2c) = 0;\n      *(undefined8 *)(lVar11 + 0x38) = 0;\n      uVar3 = FUN_0012ef67(plVar13);\n      *(undefined4 *)((long)plVar12 + lVar6 * 4 + 0x28) = uVar3;\n      iVar14 = *(int *)((long)plVar12 + lVar6 * 4 + 0x24);\n      iVar4 = FUN_0012ef67(lVar8);\n      *(int *)((long)plVar12 + lVar6 * 4 + 0x24) = iVar4;\n      param_2 = (param_2 + iVar14) - iVar4;\n    }\n  }\n  if (lVar15 == 0) {\nLAB_0012fdf7:\n    lVar15 = plVar12[(long)iVar9 + 7];\n  }\n  if (iVar9 == -1) {\n    return 0;\n  }\nLAB_0012fa63:\n  lVar6 = *plVar12;\n  if (lVar6 == 0) {\n    if (plVar12[8] == 0) {\n      if (plVar12[1] == 0) {\n        FUN_0010c4d3(plVar12);\n        *param_1 = 0;\n        return lVar15;\n      }\n    }\n    else if (plVar12[1] == 0) {\n      lVar6 = 0;\n      if (1 < iVar9) {\n        plVar12[(long)iVar9 + 7] = 0;\n        return lVar15;\n      }\n      goto LAB_0012fbac;\n    }\n  }\n  else if ((plVar12[1] == 0) && (plVar12[8] != 0)) goto code_r0x0012fc20;\n  plVar13 = (long *)plVar12[(long)iVar9 + 1];\n  plVar7 = plVar13;\n  if (plVar13[8] == 0) {\n    plVar7 = (long *)plVar12[(long)iVar9 + 2];\n    plVar5 = plVar7;\n    if (plVar7[8] == 0) {\n      plVar13[8] = plVar12[(long)iVar9 + 7];\n      puVar2 = (undefined8 *)plVar7[1];\n      plVar13[3] = (long)puVar2;\n      *(int *)(plVar13 + 6) = (int)plVar7[5];\n      if (puVar2 != (undefined8 *)0x0) {\n        *puVar2 = plVar13;\n      }\n      plVar13[9] = plVar7[7];\n      puVar2 = (undefined8 *)plVar7[2];\n      plVar13[4] = (long)puVar2;\n      *(undefined4 *)((long)plVar13 + 0x34) = *(undefined4 *)((long)plVar7 + 0x2c);\n      if (puVar2 != (undefined8 *)0x0) {\n        *puVar2 = plVar13;\n      }\n      FUN_0010c4d3();\n      uVar3 = FUN_0012ef67(plVar13);\n      *(undefined4 *)((long)plVar12 + (long)iVar9 * 4 + 0x28) = uVar3;\n      iVar14 = iVar9;\n      if ((iVar9 < 2) && (lVar6 = plVar12[(long)iVar9 + 8], lVar6 != 0)) {\n        lVar8 = (long)(iVar9 + 1);\n        do {\n          iVar14 = (int)lVar8;\n          plVar12[lVar8 + 6] = lVar6;\n          plVar12[lVar8 + 1] = plVar12[lVar8 + 2];\n          *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28) =\n               *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x2c);\n          if (1 < iVar14) break;\n          lVar6 = plVar12[lVar8 + 8];\n          lVar8 = lVar8 + 1;\n        } while (lVar6 != 0);\n      }\n      plVar12[(long)iVar14 + 7] = 0;\n      plVar12[(long)iVar14 + 2] = 0;\n      *(undefined4 *)((long)plVar12 + (long)(iVar14 + 1) * 4 + 0x28) = 0;\n      if (plVar12[7] == 0) {\n        *param_1 = plVar13;\n        *plVar13 = 0;\n        FUN_0010c4d3(plVar12);\n      }\n      param_2 = *(int *)((long)plVar13 + 0x2c) + (int)plVar13[5] + 1;\n    }\n    else {\n      do {\n        plVar13 = plVar5;\n        plVar5 = (long *)plVar13[1];\n      } while (plVar5 != (long *)0x0);\n      plVar12[(long)iVar9 + 7] = plVar13[7];\n      param_2 = 0;\n      plVar13 = plVar7;\n    }\n  }\n  else {\n    while (plVar5 = plVar7, (long *)plVar5[1] != (long *)0x0) {\n      plVar7 = (long *)plVar5[4];\n      if ((((long *)plVar5[4] == (long *)0x0) &&\n          (plVar7 = (long *)plVar5[3], (long *)plVar5[3] == (long *)0x0)) &&\n         (plVar7 = (long *)plVar5[2], (long *)plVar5[2] == (long *)0x0)) {\n        plVar7 = (long *)plVar5[1];\n      }\n    }\n    lVar6 = plVar5[9];\n    if ((lVar6 == 0) && (lVar6 = plVar5[8], lVar6 == 0)) {\n      lVar6 = plVar5[7];\n    }\n    plVar12[(long)iVar9 + 7] = lVar6;\n    param_2 = *(int *)((long)plVar12 + (long)iVar9 * 4 + 0x28) + -1;\n  }\n  goto LAB_0012f7e4;\nLAB_0012f7d1:\n  plVar13 = (long *)plVar12[1];\n  if (plVar13[8] == 0) {\n    lVar6 = plVar12[2];\n    local_50 = 0;\n    local_54 = 0;\n    plVar7 = plVar12;\n    if (lVar6 != 0) {\nLAB_0012fe3f:\n      if (*(long *)(lVar6 + 0x40) != 0) {\n        plVar13[8] = plVar7[7];\n        puVar2 = *(undefined8 **)(lVar6 + 8);\n        plVar13[3] = (long)puVar2;\n        *(undefined4 *)(plVar13 + 6) = *(undefined4 *)(lVar6 + 0x28);\n        if (puVar2 != (undefined8 *)0x0) {\n          *puVar2 = plVar13;\n        }\n        plVar7[7] = *(long *)(lVar6 + 0x38);\n        *(undefined8 *)(lVar6 + 8) = *(undefined8 *)(lVar6 + 0x10);\n        *(undefined4 *)(lVar6 + 0x28) = *(undefined4 *)(lVar6 + 0x2c);\n        lVar8 = *(long *)(lVar6 + 0x40);\n        if (lVar8 != 0) {\n          *(undefined8 *)(lVar6 + 0x10) = *(undefined8 *)(lVar6 + 0x18);\n          *(undefined4 *)(lVar6 + 0x2c) = *(undefined4 *)(lVar6 + 0x30);\n          *(long *)(lVar6 + 0x38) = lVar8;\n          if (*(long *)(lVar6 + 0x48) == 0) {\n            lVar8 = 1;\n          }\n          else {\n            *(undefined8 *)(lVar6 + 0x18) = *(undefined8 *)(lVar6 + 0x20);\n            *(undefined4 *)(lVar6 + 0x30) = *(undefined4 *)(lVar6 + 0x34);\n            *(long *)(lVar6 + 0x40) = *(long *)(lVar6 + 0x48);\n            lVar8 = 2;\n          }\n        }\n        lVar11 = lVar6 + (long)(int)lVar8 * 8;\n        *(undefined8 *)(lVar11 + 0x10) = 0;\n        *(undefined4 *)(lVar6 + 0x28 + (long)((int)lVar8 + 1) * 4) = 0;\n        *(undefined8 *)(lVar11 + 0x38) = 0;\n        uVar3 = FUN_0012ef67(plVar13);\n        *(undefined4 *)((long)plVar12 + local_50 * 4 + 0x28) = uVar3;\n        uVar3 = FUN_0012ef67(lVar6);\n        *(undefined4 *)((long)plVar12 + local_50 * 4 + 0x2c) = uVar3;\n        goto LAB_0012f7e4;\n      }\n      if (local_54 != 0) {\nLAB_0012f905:\n        local_54 = local_54 - 1;\n        param_2 = param_2 + 1 + *(int *)((long)plVar12 + (long)(int)local_54 * 4 + 0x28);\n      }\n    }\n    lVar6 = plVar12[(long)(int)local_54 + 1];\n    plVar13 = (long *)plVar12[(long)(int)local_54 + 2];\n    plVar13[4] = plVar13[2];\n    *(undefined4 *)((long)plVar13 + 0x34) = *(undefined4 *)((long)plVar13 + 0x2c);\n    plVar13[9] = plVar13[7];\n    plVar13[3] = plVar13[1];\n    *(int *)(plVar13 + 6) = (int)plVar13[5];\n    plVar13[8] = plVar12[(long)(int)local_54 + 7];\n    puVar2 = *(undefined8 **)(lVar6 + 0x10);\n    plVar13[2] = (long)puVar2;\n    *(undefined4 *)((long)plVar13 + 0x2c) = *(undefined4 *)(lVar6 + 0x2c);\n    if (puVar2 != (undefined8 *)0x0) {\n      *puVar2 = plVar13;\n    }\n    plVar13[7] = *(long *)(lVar6 + 0x38);\n    puVar2 = *(undefined8 **)(lVar6 + 8);\n    plVar13[1] = (long)puVar2;\n    *(undefined4 *)(plVar13 + 5) = *(undefined4 *)(lVar6 + 0x28);\n    if (puVar2 != (undefined8 *)0x0) {\n      *puVar2 = plVar13;\n    }\n    uVar3 = FUN_0012ef67(plVar13);\n    *(undefined4 *)((long)plVar12 + (long)(int)(local_54 + 1) * 4 + 0x28) = uVar3;\n    FUN_0010c4d3(lVar6);\n    if ((int)local_54 < 3) {\n      lVar6 = plVar12[(long)(int)local_54 + 2];\n      if (lVar6 != 0) {\n        lVar8 = (long)(int)(local_54 + 1);\n        do {\n          local_54 = (uint)lVar8;\n          plVar12[lVar8] = lVar6;\n          *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x24) =\n               *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28);\n          lVar6 = 0;\n          if ((int)(local_54 - 1) < 2) {\n            lVar6 = plVar12[lVar8 + 7];\n          }\n          plVar12[lVar8 + 6] = lVar6;\n          if (2 < (int)local_54) goto LAB_0012fd6d;\n          lVar6 = plVar12[lVar8 + 2];\n          lVar8 = lVar8 + 1;\n        } while (lVar6 != 0);\n      }\n      lVar6 = (long)(int)local_54;\n      plVar12[lVar6 + 1] = 0;\n      *(undefined4 *)((long)plVar12 + lVar6 * 4 + 0x28) = 0;\n      plVar12[lVar6 + 7] = 0;\n    }\n    else {\nLAB_0012fd6d:\n      plVar12[(long)(int)local_54 + 1] = 0;\n      *(undefined4 *)((long)plVar12 + (long)(int)local_54 * 4 + 0x28) = 0;\n    }\n    if (plVar12[7] == 0) {\n      *param_1 = plVar13;\n      *plVar13 = 0;\n      FUN_0010c4d3(plVar12);\n    }\n  }\n  goto LAB_0012f7e4;\ncode_r0x0012fc20:\n  if (iVar9 < 2) {\nLAB_0012fbac:\n    lVar8 = plVar12[(long)(iVar9 + 1) + 7];\n    if (lVar8 != 0) {\n      lVar11 = (long)(iVar9 + 1);\n      do {\n        iVar9 = (int)lVar11;\n        plVar12[lVar11 + 6] = lVar8;\n        if (1 < iVar9) break;\n        lVar8 = plVar12[lVar11 + 8];\n        lVar11 = lVar11 + 1;\n      } while (lVar8 != 0);\n    }\n    plVar12[(long)iVar9 + 7] = 0;\n    if (lVar6 == 0) {\n      return lVar15;\n    }\n  }\n  else {\n    plVar12[(long)iVar9 + 7] = 0;\n  }\n  do {\n    iVar9 = 0;\n    if ((*(long **)(lVar6 + 8) != plVar12) && (iVar9 = 1, *(long **)(lVar6 + 0x10) != plVar12)) {\n      iVar9 = (*(long **)(lVar6 + 0x18) != plVar12) + 2;\n    }\n    piVar1 = (int *)(lVar6 + 0x28 + (long)iVar9 * 4);\n    *piVar1 = *piVar1 + -1;\n    plVar12 = (long *)*plVar12;\n    lVar6 = *plVar12;\n  } while (lVar6 != 0);\n  return lVar15;\n}\n\n" (function_definition "long FUN_0012f7ab(undefined8 *param_1,int param_2)\n\n{\n  int *piVar1;\n  undefined8 *puVar2;\n  undefined4 uVar3;\n  int iVar4;\n  long *plVar5;\n  long lVar6;\n  long *plVar7;\n  long lVar8;\n  int iVar9;\n  long lVar10;\n  long lVar11;\n  long *plVar12;\n  long *plVar13;\n  int iVar14;\n  long lVar15;\n  uint local_54;\n  long local_50;\n  \n  iVar9 = -1;\n  lVar15 = 0;\n  plVar13 = (long *)*param_1;\nLAB_0012f7e4:\n  while (plVar12 = plVar13, plVar12 != (long *)0x0) {\n    if (param_2 < (int)plVar12[5]) goto LAB_0012f7d1;\n    param_2 = param_2 - ((int)plVar12[5] + 1);\n    if (param_2 < 0) {\n      iVar9 = 0;\nLAB_0012fdee:\n      if (lVar15 == 0) goto LAB_0012fdf7;\n      goto LAB_0012fa63;\n    }\n    if (param_2 < *(int *)((long)plVar12 + 0x2c)) {\n      local_54 = 1;\n    }\n    else {\n      param_2 = param_2 - (*(int *)((long)plVar12 + 0x2c) + 1);\n      if (param_2 < 0) {\n        iVar9 = 1;\n        goto LAB_0012fdee;\n      }\n      if (param_2 < (int)plVar12[6]) {\n        local_54 = 2;\n      }\n      else {\n        param_2 = param_2 - ((int)plVar12[6] + 1);\n        if (param_2 < 0) {\n          iVar9 = 2;\n          goto LAB_0012fdee;\n        }\n        local_54 = 3;\n      }\n    }\n    lVar6 = (long)(int)local_54;\n    plVar7 = plVar12 + lVar6;\n    plVar13 = (long *)plVar7[1];\n    if (plVar13[8] == 0) {\n      lVar8 = *plVar7;\n      if (*(long *)(lVar8 + 0x40) == 0) {\n        if (local_54 < 3) {\n          local_50 = (long)(int)local_54;\n          lVar6 = (plVar12 + local_50)[2];\n          plVar7 = plVar12 + local_50;\n          if (lVar6 == 0) goto LAB_0012f905;\n          goto LAB_0012fe3f;\n        }\n        goto LAB_0012f905;\n      }\n      lVar11 = *(long *)(lVar8 + 0x48);\n      plVar13[3] = plVar13[2];\n      *(undefined4 *)(plVar13 + 6) = *(undefined4 *)((long)plVar13 + 0x2c);\n      plVar13[8] = plVar13[7];\n      plVar13[2] = plVar13[1];\n      *(int *)((long)plVar13 + 0x2c) = (int)plVar13[5];\n      plVar13[7] = plVar7[6];\n      lVar10 = (long)(int)((lVar11 != 0) + 1);\n      lVar11 = lVar8 + lVar10 * 8;\n      puVar2 = *(undefined8 **)(lVar11 + 0x10);\n      plVar13[1] = (long)puVar2;\n      lVar10 = lVar8 + lVar10 * 4;\n      *(undefined4 *)(plVar13 + 5) = *(undefined4 *)(lVar10 + 0x2c);\n      if (puVar2 != (undefined8 *)0x0) {\n        *puVar2 = plVar13;\n      }\n      plVar7[6] = *(long *)(lVar11 + 0x38);\n      *(undefined8 *)(lVar11 + 0x10) = 0;\n      *(undefined4 *)(lVar10 + 0x2c) = 0;\n      *(undefined8 *)(lVar11 + 0x38) = 0;\n      uVar3 = FUN_0012ef67(plVar13);\n      *(undefined4 *)((long)plVar12 + lVar6 * 4 + 0x28) = uVar3;\n      iVar14 = *(int *)((long)plVar12 + lVar6 * 4 + 0x24);\n      iVar4 = FUN_0012ef67(lVar8);\n      *(int *)((long)plVar12 + lVar6 * 4 + 0x24) = iVar4;\n      param_2 = (param_2 + iVar14) - iVar4;\n    }\n  }\n  if (lVar15 == 0) {\nLAB_0012fdf7:\n    lVar15 = plVar12[(long)iVar9 + 7];\n  }\n  if (iVar9 == -1) {\n    return 0;\n  }\nLAB_0012fa63:\n  lVar6 = *plVar12;\n  if (lVar6 == 0) {\n    if (plVar12[8] == 0) {\n      if (plVar12[1] == 0) {\n        FUN_0010c4d3(plVar12);\n        *param_1 = 0;\n        return lVar15;\n      }\n    }\n    else if (plVar12[1] == 0) {\n      lVar6 = 0;\n      if (1 < iVar9) {\n        plVar12[(long)iVar9 + 7] = 0;\n        return lVar15;\n      }\n      goto LAB_0012fbac;\n    }\n  }\n  else if ((plVar12[1] == 0) && (plVar12[8] != 0)) goto code_r0x0012fc20;\n  plVar13 = (long *)plVar12[(long)iVar9 + 1];\n  plVar7 = plVar13;\n  if (plVar13[8] == 0) {\n    plVar7 = (long *)plVar12[(long)iVar9 + 2];\n    plVar5 = plVar7;\n    if (plVar7[8] == 0) {\n      plVar13[8] = plVar12[(long)iVar9 + 7];\n      puVar2 = (undefined8 *)plVar7[1];\n      plVar13[3] = (long)puVar2;\n      *(int *)(plVar13 + 6) = (int)plVar7[5];\n      if (puVar2 != (undefined8 *)0x0) {\n        *puVar2 = plVar13;\n      }\n      plVar13[9] = plVar7[7];\n      puVar2 = (undefined8 *)plVar7[2];\n      plVar13[4] = (long)puVar2;\n      *(undefined4 *)((long)plVar13 + 0x34) = *(undefined4 *)((long)plVar7 + 0x2c);\n      if (puVar2 != (undefined8 *)0x0) {\n        *puVar2 = plVar13;\n      }\n      FUN_0010c4d3();\n      uVar3 = FUN_0012ef67(plVar13);\n      *(undefined4 *)((long)plVar12 + (long)iVar9 * 4 + 0x28) = uVar3;\n      iVar14 = iVar9;\n      if ((iVar9 < 2) && (lVar6 = plVar12[(long)iVar9 + 8], lVar6 != 0)) {\n        lVar8 = (long)(iVar9 + 1);\n        do {\n          iVar14 = (int)lVar8;\n          plVar12[lVar8 + 6] = lVar6;\n          plVar12[lVar8 + 1] = plVar12[lVar8 + 2];\n          *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28) =\n               *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x2c);\n          if (1 < iVar14) break;\n          lVar6 = plVar12[lVar8 + 8];\n          lVar8 = lVar8 + 1;\n        } while (lVar6 != 0);\n      }\n      plVar12[(long)iVar14 + 7] = 0;\n      plVar12[(long)iVar14 + 2] = 0;\n      *(undefined4 *)((long)plVar12 + (long)(iVar14 + 1) * 4 + 0x28) = 0;\n      if (plVar12[7] == 0) {\n        *param_1 = plVar13;\n        *plVar13 = 0;\n        FUN_0010c4d3(plVar12);\n      }\n      param_2 = *(int *)((long)plVar13 + 0x2c) + (int)plVar13[5] + 1;\n    }\n    else {\n      do {\n        plVar13 = plVar5;\n        plVar5 = (long *)plVar13[1];\n      } while (plVar5 != (long *)0x0);\n      plVar12[(long)iVar9 + 7] = plVar13[7];\n      param_2 = 0;\n      plVar13 = plVar7;\n    }\n  }\n  else {\n    while (plVar5 = plVar7, (long *)plVar5[1] != (long *)0x0) {\n      plVar7 = (long *)plVar5[4];\n      if ((((long *)plVar5[4] == (long *)0x0) &&\n          (plVar7 = (long *)plVar5[3], (long *)plVar5[3] == (long *)0x0)) &&\n         (plVar7 = (long *)plVar5[2], (long *)plVar5[2] == (long *)0x0)) {\n        plVar7 = (long *)plVar5[1];\n      }\n    }\n    lVar6 = plVar5[9];\n    if ((lVar6 == 0) && (lVar6 = plVar5[8], lVar6 == 0)) {\n      lVar6 = plVar5[7];\n    }\n    plVar12[(long)iVar9 + 7] = lVar6;\n    param_2 = *(int *)((long)plVar12 + (long)iVar9 * 4 + 0x28) + -1;\n  }\n  goto LAB_0012f7e4;\nLAB_0012f7d1:\n  plVar13 = (long *)plVar12[1];\n  if (plVar13[8] == 0) {\n    lVar6 = plVar12[2];\n    local_50 = 0;\n    local_54 = 0;\n    plVar7 = plVar12;\n    if (lVar6 != 0) {\nLAB_0012fe3f:\n      if (*(long *)(lVar6 + 0x40) != 0) {\n        plVar13[8] = plVar7[7];\n        puVar2 = *(undefined8 **)(lVar6 + 8);\n        plVar13[3] = (long)puVar2;\n        *(undefined4 *)(plVar13 + 6) = *(undefined4 *)(lVar6 + 0x28);\n        if (puVar2 != (undefined8 *)0x0) {\n          *puVar2 = plVar13;\n        }\n        plVar7[7] = *(long *)(lVar6 + 0x38);\n        *(undefined8 *)(lVar6 + 8) = *(undefined8 *)(lVar6 + 0x10);\n        *(undefined4 *)(lVar6 + 0x28) = *(undefined4 *)(lVar6 + 0x2c);\n        lVar8 = *(long *)(lVar6 + 0x40);\n        if (lVar8 != 0) {\n          *(undefined8 *)(lVar6 + 0x10) = *(undefined8 *)(lVar6 + 0x18);\n          *(undefined4 *)(lVar6 + 0x2c) = *(undefined4 *)(lVar6 + 0x30);\n          *(long *)(lVar6 + 0x38) = lVar8;\n          if (*(long *)(lVar6 + 0x48) == 0) {\n            lVar8 = 1;\n          }\n          else {\n            *(undefined8 *)(lVar6 + 0x18) = *(undefined8 *)(lVar6 + 0x20);\n            *(undefined4 *)(lVar6 + 0x30) = *(undefined4 *)(lVar6 + 0x34);\n            *(long *)(lVar6 + 0x40) = *(long *)(lVar6 + 0x48);\n            lVar8 = 2;\n          }\n        }\n        lVar11 = lVar6 + (long)(int)lVar8 * 8;\n        *(undefined8 *)(lVar11 + 0x10) = 0;\n        *(undefined4 *)(lVar6 + 0x28 + (long)((int)lVar8 + 1) * 4) = 0;\n        *(undefined8 *)(lVar11 + 0x38) = 0;\n        uVar3 = FUN_0012ef67(plVar13);\n        *(undefined4 *)((long)plVar12 + local_50 * 4 + 0x28) = uVar3;\n        uVar3 = FUN_0012ef67(lVar6);\n        *(undefined4 *)((long)plVar12 + local_50 * 4 + 0x2c) = uVar3;\n        goto LAB_0012f7e4;\n      }\n      if (local_54 != 0) {\nLAB_0012f905:\n        local_54 = local_54 - 1;\n        param_2 = param_2 + 1 + *(int *)((long)plVar12 + (long)(int)local_54 * 4 + 0x28);\n      }\n    }\n    lVar6 = plVar12[(long)(int)local_54 + 1];\n    plVar13 = (long *)plVar12[(long)(int)local_54 + 2];\n    plVar13[4] = plVar13[2];\n    *(undefined4 *)((long)plVar13 + 0x34) = *(undefined4 *)((long)plVar13 + 0x2c);\n    plVar13[9] = plVar13[7];\n    plVar13[3] = plVar13[1];\n    *(int *)(plVar13 + 6) = (int)plVar13[5];\n    plVar13[8] = plVar12[(long)(int)local_54 + 7];\n    puVar2 = *(undefined8 **)(lVar6 + 0x10);\n    plVar13[2] = (long)puVar2;\n    *(undefined4 *)((long)plVar13 + 0x2c) = *(undefined4 *)(lVar6 + 0x2c);\n    if (puVar2 != (undefined8 *)0x0) {\n      *puVar2 = plVar13;\n    }\n    plVar13[7] = *(long *)(lVar6 + 0x38);\n    puVar2 = *(undefined8 **)(lVar6 + 8);\n    plVar13[1] = (long)puVar2;\n    *(undefined4 *)(plVar13 + 5) = *(undefined4 *)(lVar6 + 0x28);\n    if (puVar2 != (undefined8 *)0x0) {\n      *puVar2 = plVar13;\n    }\n    uVar3 = FUN_0012ef67(plVar13);\n    *(undefined4 *)((long)plVar12 + (long)(int)(local_54 + 1) * 4 + 0x28) = uVar3;\n    FUN_0010c4d3(lVar6);\n    if ((int)local_54 < 3) {\n      lVar6 = plVar12[(long)(int)local_54 + 2];\n      if (lVar6 != 0) {\n        lVar8 = (long)(int)(local_54 + 1);\n        do {\n          local_54 = (uint)lVar8;\n          plVar12[lVar8] = lVar6;\n          *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x24) =\n               *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28);\n          lVar6 = 0;\n          if ((int)(local_54 - 1) < 2) {\n            lVar6 = plVar12[lVar8 + 7];\n          }\n          plVar12[lVar8 + 6] = lVar6;\n          if (2 < (int)local_54) goto LAB_0012fd6d;\n          lVar6 = plVar12[lVar8 + 2];\n          lVar8 = lVar8 + 1;\n        } while (lVar6 != 0);\n      }\n      lVar6 = (long)(int)local_54;\n      plVar12[lVar6 + 1] = 0;\n      *(undefined4 *)((long)plVar12 + lVar6 * 4 + 0x28) = 0;\n      plVar12[lVar6 + 7] = 0;\n    }\n    else {\nLAB_0012fd6d:\n      plVar12[(long)(int)local_54 + 1] = 0;\n      *(undefined4 *)((long)plVar12 + (long)(int)local_54 * 4 + 0x28) = 0;\n    }\n    if (plVar12[7] == 0) {\n      *param_1 = plVar13;\n      *plVar13 = 0;\n      FUN_0010c4d3(plVar12);\n    }\n  }\n  goto LAB_0012f7e4;\ncode_r0x0012fc20:\n  if (iVar9 < 2) {\nLAB_0012fbac:\n    lVar8 = plVar12[(long)(iVar9 + 1) + 7];\n    if (lVar8 != 0) {\n      lVar11 = (long)(iVar9 + 1);\n      do {\n        iVar9 = (int)lVar11;\n        plVar12[lVar11 + 6] = lVar8;\n        if (1 < iVar9) break;\n        lVar8 = plVar12[lVar11 + 8];\n        lVar11 = lVar11 + 1;\n      } while (lVar8 != 0);\n    }\n    plVar12[(long)iVar9 + 7] = 0;\n    if (lVar6 == 0) {\n      return lVar15;\n    }\n  }\n  else {\n    plVar12[(long)iVar9 + 7] = 0;\n  }\n  do {\n    iVar9 = 0;\n    if ((*(long **)(lVar6 + 8) != plVar12) && (iVar9 = 1, *(long **)(lVar6 + 0x10) != plVar12)) {\n      iVar9 = (*(long **)(lVar6 + 0x18) != plVar12) + 2;\n    }\n    piVar1 = (int *)(lVar6 + 0x28 + (long)iVar9 * 4);\n    *piVar1 = *piVar1 + -1;\n    plVar12 = (long *)*plVar12;\n    lVar6 = *plVar12;\n  } while (lVar6 != 0);\n  return lVar15;\n}" (sized_type_specifier "long" long) (function_declarator "FUN_0012f7ab(undefined8 *param_1,int param_2)" identifier (parameter_list "(undefined8 *param_1,int param_2)" ( (parameter_declaration "undefined8 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) ))) (compound_statement "{\n  int *piVar1;\n  undefined8 *puVar2;\n  undefined4 uVar3;\n  int iVar4;\n  long *plVar5;\n  long lVar6;\n  long *plVar7;\n  long lVar8;\n  int iVar9;\n  long lVar10;\n  long lVar11;\n  long *plVar12;\n  long *plVar13;\n  int iVar14;\n  long lVar15;\n  uint local_54;\n  long local_50;\n  \n  iVar9 = -1;\n  lVar15 = 0;\n  plVar13 = (long *)*param_1;\nLAB_0012f7e4:\n  while (plVar12 = plVar13, plVar12 != (long *)0x0) {\n    if (param_2 < (int)plVar12[5]) goto LAB_0012f7d1;\n    param_2 = param_2 - ((int)plVar12[5] + 1);\n    if (param_2 < 0) {\n      iVar9 = 0;\nLAB_0012fdee:\n      if (lVar15 == 0) goto LAB_0012fdf7;\n      goto LAB_0012fa63;\n    }\n    if (param_2 < *(int *)((long)plVar12 + 0x2c)) {\n      local_54 = 1;\n    }\n    else {\n      param_2 = param_2 - (*(int *)((long)plVar12 + 0x2c) + 1);\n      if (param_2 < 0) {\n        iVar9 = 1;\n        goto LAB_0012fdee;\n      }\n      if (param_2 < (int)plVar12[6]) {\n        local_54 = 2;\n      }\n      else {\n        param_2 = param_2 - ((int)plVar12[6] + 1);\n        if (param_2 < 0) {\n          iVar9 = 2;\n          goto LAB_0012fdee;\n        }\n        local_54 = 3;\n      }\n    }\n    lVar6 = (long)(int)local_54;\n    plVar7 = plVar12 + lVar6;\n    plVar13 = (long *)plVar7[1];\n    if (plVar13[8] == 0) {\n      lVar8 = *plVar7;\n      if (*(long *)(lVar8 + 0x40) == 0) {\n        if (local_54 < 3) {\n          local_50 = (long)(int)local_54;\n          lVar6 = (plVar12 + local_50)[2];\n          plVar7 = plVar12 + local_50;\n          if (lVar6 == 0) goto LAB_0012f905;\n          goto LAB_0012fe3f;\n        }\n        goto LAB_0012f905;\n      }\n      lVar11 = *(long *)(lVar8 + 0x48);\n      plVar13[3] = plVar13[2];\n      *(undefined4 *)(plVar13 + 6) = *(undefined4 *)((long)plVar13 + 0x2c);\n      plVar13[8] = plVar13[7];\n      plVar13[2] = plVar13[1];\n      *(int *)((long)plVar13 + 0x2c) = (int)plVar13[5];\n      plVar13[7] = plVar7[6];\n      lVar10 = (long)(int)((lVar11 != 0) + 1);\n      lVar11 = lVar8 + lVar10 * 8;\n      puVar2 = *(undefined8 **)(lVar11 + 0x10);\n      plVar13[1] = (long)puVar2;\n      lVar10 = lVar8 + lVar10 * 4;\n      *(undefined4 *)(plVar13 + 5) = *(undefined4 *)(lVar10 + 0x2c);\n      if (puVar2 != (undefined8 *)0x0) {\n        *puVar2 = plVar13;\n      }\n      plVar7[6] = *(long *)(lVar11 + 0x38);\n      *(undefined8 *)(lVar11 + 0x10) = 0;\n      *(undefined4 *)(lVar10 + 0x2c) = 0;\n      *(undefined8 *)(lVar11 + 0x38) = 0;\n      uVar3 = FUN_0012ef67(plVar13);\n      *(undefined4 *)((long)plVar12 + lVar6 * 4 + 0x28) = uVar3;\n      iVar14 = *(int *)((long)plVar12 + lVar6 * 4 + 0x24);\n      iVar4 = FUN_0012ef67(lVar8);\n      *(int *)((long)plVar12 + lVar6 * 4 + 0x24) = iVar4;\n      param_2 = (param_2 + iVar14) - iVar4;\n    }\n  }\n  if (lVar15 == 0) {\nLAB_0012fdf7:\n    lVar15 = plVar12[(long)iVar9 + 7];\n  }\n  if (iVar9 == -1) {\n    return 0;\n  }\nLAB_0012fa63:\n  lVar6 = *plVar12;\n  if (lVar6 == 0) {\n    if (plVar12[8] == 0) {\n      if (plVar12[1] == 0) {\n        FUN_0010c4d3(plVar12);\n        *param_1 = 0;\n        return lVar15;\n      }\n    }\n    else if (plVar12[1] == 0) {\n      lVar6 = 0;\n      if (1 < iVar9) {\n        plVar12[(long)iVar9 + 7] = 0;\n        return lVar15;\n      }\n      goto LAB_0012fbac;\n    }\n  }\n  else if ((plVar12[1] == 0) && (plVar12[8] != 0)) goto code_r0x0012fc20;\n  plVar13 = (long *)plVar12[(long)iVar9 + 1];\n  plVar7 = plVar13;\n  if (plVar13[8] == 0) {\n    plVar7 = (long *)plVar12[(long)iVar9 + 2];\n    plVar5 = plVar7;\n    if (plVar7[8] == 0) {\n      plVar13[8] = plVar12[(long)iVar9 + 7];\n      puVar2 = (undefined8 *)plVar7[1];\n      plVar13[3] = (long)puVar2;\n      *(int *)(plVar13 + 6) = (int)plVar7[5];\n      if (puVar2 != (undefined8 *)0x0) {\n        *puVar2 = plVar13;\n      }\n      plVar13[9] = plVar7[7];\n      puVar2 = (undefined8 *)plVar7[2];\n      plVar13[4] = (long)puVar2;\n      *(undefined4 *)((long)plVar13 + 0x34) = *(undefined4 *)((long)plVar7 + 0x2c);\n      if (puVar2 != (undefined8 *)0x0) {\n        *puVar2 = plVar13;\n      }\n      FUN_0010c4d3();\n      uVar3 = FUN_0012ef67(plVar13);\n      *(undefined4 *)((long)plVar12 + (long)iVar9 * 4 + 0x28) = uVar3;\n      iVar14 = iVar9;\n      if ((iVar9 < 2) && (lVar6 = plVar12[(long)iVar9 + 8], lVar6 != 0)) {\n        lVar8 = (long)(iVar9 + 1);\n        do {\n          iVar14 = (int)lVar8;\n          plVar12[lVar8 + 6] = lVar6;\n          plVar12[lVar8 + 1] = plVar12[lVar8 + 2];\n          *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28) =\n               *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x2c);\n          if (1 < iVar14) break;\n          lVar6 = plVar12[lVar8 + 8];\n          lVar8 = lVar8 + 1;\n        } while (lVar6 != 0);\n      }\n      plVar12[(long)iVar14 + 7] = 0;\n      plVar12[(long)iVar14 + 2] = 0;\n      *(undefined4 *)((long)plVar12 + (long)(iVar14 + 1) * 4 + 0x28) = 0;\n      if (plVar12[7] == 0) {\n        *param_1 = plVar13;\n        *plVar13 = 0;\n        FUN_0010c4d3(plVar12);\n      }\n      param_2 = *(int *)((long)plVar13 + 0x2c) + (int)plVar13[5] + 1;\n    }\n    else {\n      do {\n        plVar13 = plVar5;\n        plVar5 = (long *)plVar13[1];\n      } while (plVar5 != (long *)0x0);\n      plVar12[(long)iVar9 + 7] = plVar13[7];\n      param_2 = 0;\n      plVar13 = plVar7;\n    }\n  }\n  else {\n    while (plVar5 = plVar7, (long *)plVar5[1] != (long *)0x0) {\n      plVar7 = (long *)plVar5[4];\n      if ((((long *)plVar5[4] == (long *)0x0) &&\n          (plVar7 = (long *)plVar5[3], (long *)plVar5[3] == (long *)0x0)) &&\n         (plVar7 = (long *)plVar5[2], (long *)plVar5[2] == (long *)0x0)) {\n        plVar7 = (long *)plVar5[1];\n      }\n    }\n    lVar6 = plVar5[9];\n    if ((lVar6 == 0) && (lVar6 = plVar5[8], lVar6 == 0)) {\n      lVar6 = plVar5[7];\n    }\n    plVar12[(long)iVar9 + 7] = lVar6;\n    param_2 = *(int *)((long)plVar12 + (long)iVar9 * 4 + 0x28) + -1;\n  }\n  goto LAB_0012f7e4;\nLAB_0012f7d1:\n  plVar13 = (long *)plVar12[1];\n  if (plVar13[8] == 0) {\n    lVar6 = plVar12[2];\n    local_50 = 0;\n    local_54 = 0;\n    plVar7 = plVar12;\n    if (lVar6 != 0) {\nLAB_0012fe3f:\n      if (*(long *)(lVar6 + 0x40) != 0) {\n        plVar13[8] = plVar7[7];\n        puVar2 = *(undefined8 **)(lVar6 + 8);\n        plVar13[3] = (long)puVar2;\n        *(undefined4 *)(plVar13 + 6) = *(undefined4 *)(lVar6 + 0x28);\n        if (puVar2 != (undefined8 *)0x0) {\n          *puVar2 = plVar13;\n        }\n        plVar7[7] = *(long *)(lVar6 + 0x38);\n        *(undefined8 *)(lVar6 + 8) = *(undefined8 *)(lVar6 + 0x10);\n        *(undefined4 *)(lVar6 + 0x28) = *(undefined4 *)(lVar6 + 0x2c);\n        lVar8 = *(long *)(lVar6 + 0x40);\n        if (lVar8 != 0) {\n          *(undefined8 *)(lVar6 + 0x10) = *(undefined8 *)(lVar6 + 0x18);\n          *(undefined4 *)(lVar6 + 0x2c) = *(undefined4 *)(lVar6 + 0x30);\n          *(long *)(lVar6 + 0x38) = lVar8;\n          if (*(long *)(lVar6 + 0x48) == 0) {\n            lVar8 = 1;\n          }\n          else {\n            *(undefined8 *)(lVar6 + 0x18) = *(undefined8 *)(lVar6 + 0x20);\n            *(undefined4 *)(lVar6 + 0x30) = *(undefined4 *)(lVar6 + 0x34);\n            *(long *)(lVar6 + 0x40) = *(long *)(lVar6 + 0x48);\n            lVar8 = 2;\n          }\n        }\n        lVar11 = lVar6 + (long)(int)lVar8 * 8;\n        *(undefined8 *)(lVar11 + 0x10) = 0;\n        *(undefined4 *)(lVar6 + 0x28 + (long)((int)lVar8 + 1) * 4) = 0;\n        *(undefined8 *)(lVar11 + 0x38) = 0;\n        uVar3 = FUN_0012ef67(plVar13);\n        *(undefined4 *)((long)plVar12 + local_50 * 4 + 0x28) = uVar3;\n        uVar3 = FUN_0012ef67(lVar6);\n        *(undefined4 *)((long)plVar12 + local_50 * 4 + 0x2c) = uVar3;\n        goto LAB_0012f7e4;\n      }\n      if (local_54 != 0) {\nLAB_0012f905:\n        local_54 = local_54 - 1;\n        param_2 = param_2 + 1 + *(int *)((long)plVar12 + (long)(int)local_54 * 4 + 0x28);\n      }\n    }\n    lVar6 = plVar12[(long)(int)local_54 + 1];\n    plVar13 = (long *)plVar12[(long)(int)local_54 + 2];\n    plVar13[4] = plVar13[2];\n    *(undefined4 *)((long)plVar13 + 0x34) = *(undefined4 *)((long)plVar13 + 0x2c);\n    plVar13[9] = plVar13[7];\n    plVar13[3] = plVar13[1];\n    *(int *)(plVar13 + 6) = (int)plVar13[5];\n    plVar13[8] = plVar12[(long)(int)local_54 + 7];\n    puVar2 = *(undefined8 **)(lVar6 + 0x10);\n    plVar13[2] = (long)puVar2;\n    *(undefined4 *)((long)plVar13 + 0x2c) = *(undefined4 *)(lVar6 + 0x2c);\n    if (puVar2 != (undefined8 *)0x0) {\n      *puVar2 = plVar13;\n    }\n    plVar13[7] = *(long *)(lVar6 + 0x38);\n    puVar2 = *(undefined8 **)(lVar6 + 8);\n    plVar13[1] = (long)puVar2;\n    *(undefined4 *)(plVar13 + 5) = *(undefined4 *)(lVar6 + 0x28);\n    if (puVar2 != (undefined8 *)0x0) {\n      *puVar2 = plVar13;\n    }\n    uVar3 = FUN_0012ef67(plVar13);\n    *(undefined4 *)((long)plVar12 + (long)(int)(local_54 + 1) * 4 + 0x28) = uVar3;\n    FUN_0010c4d3(lVar6);\n    if ((int)local_54 < 3) {\n      lVar6 = plVar12[(long)(int)local_54 + 2];\n      if (lVar6 != 0) {\n        lVar8 = (long)(int)(local_54 + 1);\n        do {\n          local_54 = (uint)lVar8;\n          plVar12[lVar8] = lVar6;\n          *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x24) =\n               *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28);\n          lVar6 = 0;\n          if ((int)(local_54 - 1) < 2) {\n            lVar6 = plVar12[lVar8 + 7];\n          }\n          plVar12[lVar8 + 6] = lVar6;\n          if (2 < (int)local_54) goto LAB_0012fd6d;\n          lVar6 = plVar12[lVar8 + 2];\n          lVar8 = lVar8 + 1;\n        } while (lVar6 != 0);\n      }\n      lVar6 = (long)(int)local_54;\n      plVar12[lVar6 + 1] = 0;\n      *(undefined4 *)((long)plVar12 + lVar6 * 4 + 0x28) = 0;\n      plVar12[lVar6 + 7] = 0;\n    }\n    else {\nLAB_0012fd6d:\n      plVar12[(long)(int)local_54 + 1] = 0;\n      *(undefined4 *)((long)plVar12 + (long)(int)local_54 * 4 + 0x28) = 0;\n    }\n    if (plVar12[7] == 0) {\n      *param_1 = plVar13;\n      *plVar13 = 0;\n      FUN_0010c4d3(plVar12);\n    }\n  }\n  goto LAB_0012f7e4;\ncode_r0x0012fc20:\n  if (iVar9 < 2) {\nLAB_0012fbac:\n    lVar8 = plVar12[(long)(iVar9 + 1) + 7];\n    if (lVar8 != 0) {\n      lVar11 = (long)(iVar9 + 1);\n      do {\n        iVar9 = (int)lVar11;\n        plVar12[lVar11 + 6] = lVar8;\n        if (1 < iVar9) break;\n        lVar8 = plVar12[lVar11 + 8];\n        lVar11 = lVar11 + 1;\n      } while (lVar8 != 0);\n    }\n    plVar12[(long)iVar9 + 7] = 0;\n    if (lVar6 == 0) {\n      return lVar15;\n    }\n  }\n  else {\n    plVar12[(long)iVar9 + 7] = 0;\n  }\n  do {\n    iVar9 = 0;\n    if ((*(long **)(lVar6 + 8) != plVar12) && (iVar9 = 1, *(long **)(lVar6 + 0x10) != plVar12)) {\n      iVar9 = (*(long **)(lVar6 + 0x18) != plVar12) + 2;\n    }\n    piVar1 = (int *)(lVar6 + 0x28 + (long)iVar9 * 4);\n    *piVar1 = *piVar1 + -1;\n    plVar12 = (long *)*plVar12;\n    lVar6 = *plVar12;\n  } while (lVar6 != 0);\n  return lVar15;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "undefined8 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "long *plVar5;" (sized_type_specifier "long" long) (pointer_declarator "*plVar5" * identifier) ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "long *plVar7;" (sized_type_specifier "long" long) (pointer_declarator "*plVar7" * identifier) ;) (declaration "long lVar8;" (sized_type_specifier "long" long) identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "long lVar10;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar11;" (sized_type_specifier "long" long) identifier ;) (declaration "long *plVar12;" (sized_type_specifier "long" long) (pointer_declarator "*plVar12" * identifier) ;) (declaration "long *plVar13;" (sized_type_specifier "long" long) (pointer_declarator "*plVar13" * identifier) ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "long lVar15;" (sized_type_specifier "long" long) identifier ;) (declaration "uint local_54;" type_identifier identifier ;) (declaration "long local_50;" (sized_type_specifier "long" long) identifier ;) (expression_statement "iVar9 = -1;" (assignment_expression "iVar9 = -1" identifier = number_literal) ;) (expression_statement "lVar15 = 0;" (assignment_expression "lVar15 = 0" identifier = number_literal) ;) (expression_statement "plVar13 = (long *)*param_1;" (assignment_expression "plVar13 = (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))) ;) (labeled_statement "LAB_0012f7e4:\n  while (plVar12 = plVar13, plVar12 != (long *)0x0) {\n    if (param_2 < (int)plVar12[5]) goto LAB_0012f7d1;\n    param_2 = param_2 - ((int)plVar12[5] + 1);\n    if (param_2 < 0) {\n      iVar9 = 0;\nLAB_0012fdee:\n      if (lVar15 == 0) goto LAB_0012fdf7;\n      goto LAB_0012fa63;\n    }\n    if (param_2 < *(int *)((long)plVar12 + 0x2c)) {\n      local_54 = 1;\n    }\n    else {\n      param_2 = param_2 - (*(int *)((long)plVar12 + 0x2c) + 1);\n      if (param_2 < 0) {\n        iVar9 = 1;\n        goto LAB_0012fdee;\n      }\n      if (param_2 < (int)plVar12[6]) {\n        local_54 = 2;\n      }\n      else {\n        param_2 = param_2 - ((int)plVar12[6] + 1);\n        if (param_2 < 0) {\n          iVar9 = 2;\n          goto LAB_0012fdee;\n        }\n        local_54 = 3;\n      }\n    }\n    lVar6 = (long)(int)local_54;\n    plVar7 = plVar12 + lVar6;\n    plVar13 = (long *)plVar7[1];\n    if (plVar13[8] == 0) {\n      lVar8 = *plVar7;\n      if (*(long *)(lVar8 + 0x40) == 0) {\n        if (local_54 < 3) {\n          local_50 = (long)(int)local_54;\n          lVar6 = (plVar12 + local_50)[2];\n          plVar7 = plVar12 + local_50;\n          if (lVar6 == 0) goto LAB_0012f905;\n          goto LAB_0012fe3f;\n        }\n        goto LAB_0012f905;\n      }\n      lVar11 = *(long *)(lVar8 + 0x48);\n      plVar13[3] = plVar13[2];\n      *(undefined4 *)(plVar13 + 6) = *(undefined4 *)((long)plVar13 + 0x2c);\n      plVar13[8] = plVar13[7];\n      plVar13[2] = plVar13[1];\n      *(int *)((long)plVar13 + 0x2c) = (int)plVar13[5];\n      plVar13[7] = plVar7[6];\n      lVar10 = (long)(int)((lVar11 != 0) + 1);\n      lVar11 = lVar8 + lVar10 * 8;\n      puVar2 = *(undefined8 **)(lVar11 + 0x10);\n      plVar13[1] = (long)puVar2;\n      lVar10 = lVar8 + lVar10 * 4;\n      *(undefined4 *)(plVar13 + 5) = *(undefined4 *)(lVar10 + 0x2c);\n      if (puVar2 != (undefined8 *)0x0) {\n        *puVar2 = plVar13;\n      }\n      plVar7[6] = *(long *)(lVar11 + 0x38);\n      *(undefined8 *)(lVar11 + 0x10) = 0;\n      *(undefined4 *)(lVar10 + 0x2c) = 0;\n      *(undefined8 *)(lVar11 + 0x38) = 0;\n      uVar3 = FUN_0012ef67(plVar13);\n      *(undefined4 *)((long)plVar12 + lVar6 * 4 + 0x28) = uVar3;\n      iVar14 = *(int *)((long)plVar12 + lVar6 * 4 + 0x24);\n      iVar4 = FUN_0012ef67(lVar8);\n      *(int *)((long)plVar12 + lVar6 * 4 + 0x24) = iVar4;\n      param_2 = (param_2 + iVar14) - iVar4;\n    }\n  }" statement_identifier : (while_statement "while (plVar12 = plVar13, plVar12 != (long *)0x0) {\n    if (param_2 < (int)plVar12[5]) goto LAB_0012f7d1;\n    param_2 = param_2 - ((int)plVar12[5] + 1);\n    if (param_2 < 0) {\n      iVar9 = 0;\nLAB_0012fdee:\n      if (lVar15 == 0) goto LAB_0012fdf7;\n      goto LAB_0012fa63;\n    }\n    if (param_2 < *(int *)((long)plVar12 + 0x2c)) {\n      local_54 = 1;\n    }\n    else {\n      param_2 = param_2 - (*(int *)((long)plVar12 + 0x2c) + 1);\n      if (param_2 < 0) {\n        iVar9 = 1;\n        goto LAB_0012fdee;\n      }\n      if (param_2 < (int)plVar12[6]) {\n        local_54 = 2;\n      }\n      else {\n        param_2 = param_2 - ((int)plVar12[6] + 1);\n        if (param_2 < 0) {\n          iVar9 = 2;\n          goto LAB_0012fdee;\n        }\n        local_54 = 3;\n      }\n    }\n    lVar6 = (long)(int)local_54;\n    plVar7 = plVar12 + lVar6;\n    plVar13 = (long *)plVar7[1];\n    if (plVar13[8] == 0) {\n      lVar8 = *plVar7;\n      if (*(long *)(lVar8 + 0x40) == 0) {\n        if (local_54 < 3) {\n          local_50 = (long)(int)local_54;\n          lVar6 = (plVar12 + local_50)[2];\n          plVar7 = plVar12 + local_50;\n          if (lVar6 == 0) goto LAB_0012f905;\n          goto LAB_0012fe3f;\n        }\n        goto LAB_0012f905;\n      }\n      lVar11 = *(long *)(lVar8 + 0x48);\n      plVar13[3] = plVar13[2];\n      *(undefined4 *)(plVar13 + 6) = *(undefined4 *)((long)plVar13 + 0x2c);\n      plVar13[8] = plVar13[7];\n      plVar13[2] = plVar13[1];\n      *(int *)((long)plVar13 + 0x2c) = (int)plVar13[5];\n      plVar13[7] = plVar7[6];\n      lVar10 = (long)(int)((lVar11 != 0) + 1);\n      lVar11 = lVar8 + lVar10 * 8;\n      puVar2 = *(undefined8 **)(lVar11 + 0x10);\n      plVar13[1] = (long)puVar2;\n      lVar10 = lVar8 + lVar10 * 4;\n      *(undefined4 *)(plVar13 + 5) = *(undefined4 *)(lVar10 + 0x2c);\n      if (puVar2 != (undefined8 *)0x0) {\n        *puVar2 = plVar13;\n      }\n      plVar7[6] = *(long *)(lVar11 + 0x38);\n      *(undefined8 *)(lVar11 + 0x10) = 0;\n      *(undefined4 *)(lVar10 + 0x2c) = 0;\n      *(undefined8 *)(lVar11 + 0x38) = 0;\n      uVar3 = FUN_0012ef67(plVar13);\n      *(undefined4 *)((long)plVar12 + lVar6 * 4 + 0x28) = uVar3;\n      iVar14 = *(int *)((long)plVar12 + lVar6 * 4 + 0x24);\n      iVar4 = FUN_0012ef67(lVar8);\n      *(int *)((long)plVar12 + lVar6 * 4 + 0x24) = iVar4;\n      param_2 = (param_2 + iVar14) - iVar4;\n    }\n  }" while (parenthesized_expression "(plVar12 = plVar13, plVar12 != (long *)0x0)" ( (comma_expression "plVar12 = plVar13, plVar12 != (long *)0x0" (assignment_expression "plVar12 = plVar13" identifier = identifier) , (binary_expression "plVar12 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal))) )) (compound_statement "{\n    if (param_2 < (int)plVar12[5]) goto LAB_0012f7d1;\n    param_2 = param_2 - ((int)plVar12[5] + 1);\n    if (param_2 < 0) {\n      iVar9 = 0;\nLAB_0012fdee:\n      if (lVar15 == 0) goto LAB_0012fdf7;\n      goto LAB_0012fa63;\n    }\n    if (param_2 < *(int *)((long)plVar12 + 0x2c)) {\n      local_54 = 1;\n    }\n    else {\n      param_2 = param_2 - (*(int *)((long)plVar12 + 0x2c) + 1);\n      if (param_2 < 0) {\n        iVar9 = 1;\n        goto LAB_0012fdee;\n      }\n      if (param_2 < (int)plVar12[6]) {\n        local_54 = 2;\n      }\n      else {\n        param_2 = param_2 - ((int)plVar12[6] + 1);\n        if (param_2 < 0) {\n          iVar9 = 2;\n          goto LAB_0012fdee;\n        }\n        local_54 = 3;\n      }\n    }\n    lVar6 = (long)(int)local_54;\n    plVar7 = plVar12 + lVar6;\n    plVar13 = (long *)plVar7[1];\n    if (plVar13[8] == 0) {\n      lVar8 = *plVar7;\n      if (*(long *)(lVar8 + 0x40) == 0) {\n        if (local_54 < 3) {\n          local_50 = (long)(int)local_54;\n          lVar6 = (plVar12 + local_50)[2];\n          plVar7 = plVar12 + local_50;\n          if (lVar6 == 0) goto LAB_0012f905;\n          goto LAB_0012fe3f;\n        }\n        goto LAB_0012f905;\n      }\n      lVar11 = *(long *)(lVar8 + 0x48);\n      plVar13[3] = plVar13[2];\n      *(undefined4 *)(plVar13 + 6) = *(undefined4 *)((long)plVar13 + 0x2c);\n      plVar13[8] = plVar13[7];\n      plVar13[2] = plVar13[1];\n      *(int *)((long)plVar13 + 0x2c) = (int)plVar13[5];\n      plVar13[7] = plVar7[6];\n      lVar10 = (long)(int)((lVar11 != 0) + 1);\n      lVar11 = lVar8 + lVar10 * 8;\n      puVar2 = *(undefined8 **)(lVar11 + 0x10);\n      plVar13[1] = (long)puVar2;\n      lVar10 = lVar8 + lVar10 * 4;\n      *(undefined4 *)(plVar13 + 5) = *(undefined4 *)(lVar10 + 0x2c);\n      if (puVar2 != (undefined8 *)0x0) {\n        *puVar2 = plVar13;\n      }\n      plVar7[6] = *(long *)(lVar11 + 0x38);\n      *(undefined8 *)(lVar11 + 0x10) = 0;\n      *(undefined4 *)(lVar10 + 0x2c) = 0;\n      *(undefined8 *)(lVar11 + 0x38) = 0;\n      uVar3 = FUN_0012ef67(plVar13);\n      *(undefined4 *)((long)plVar12 + lVar6 * 4 + 0x28) = uVar3;\n      iVar14 = *(int *)((long)plVar12 + lVar6 * 4 + 0x24);\n      iVar4 = FUN_0012ef67(lVar8);\n      *(int *)((long)plVar12 + lVar6 * 4 + 0x24) = iVar4;\n      param_2 = (param_2 + iVar14) - iVar4;\n    }\n  }" { (if_statement "if (param_2 < (int)plVar12[5]) goto LAB_0012f7d1;" if (parenthesized_expression "(param_2 < (int)plVar12[5])" ( (binary_expression "param_2 < (int)plVar12[5]" identifier < (cast_expression "(int)plVar12[5]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "plVar12[5]" identifier [ number_literal ]))) )) (goto_statement "goto LAB_0012f7d1;" goto statement_identifier ;)) (expression_statement "param_2 = param_2 - ((int)plVar12[5] + 1);" (assignment_expression "param_2 = param_2 - ((int)plVar12[5] + 1)" identifier = (binary_expression "param_2 - ((int)plVar12[5] + 1)" identifier - (parenthesized_expression "((int)plVar12[5] + 1)" ( (binary_expression "(int)plVar12[5] + 1" (cast_expression "(int)plVar12[5]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "plVar12[5]" identifier [ number_literal ])) + number_literal) )))) ;) (if_statement "if (param_2 < 0) {\n      iVar9 = 0;\nLAB_0012fdee:\n      if (lVar15 == 0) goto LAB_0012fdf7;\n      goto LAB_0012fa63;\n    }" if (parenthesized_expression "(param_2 < 0)" ( (binary_expression "param_2 < 0" identifier < number_literal) )) (compound_statement "{\n      iVar9 = 0;\nLAB_0012fdee:\n      if (lVar15 == 0) goto LAB_0012fdf7;\n      goto LAB_0012fa63;\n    }" { (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" identifier = number_literal) ;) (labeled_statement "LAB_0012fdee:\n      if (lVar15 == 0) goto LAB_0012fdf7;" statement_identifier : (if_statement "if (lVar15 == 0) goto LAB_0012fdf7;" if (parenthesized_expression "(lVar15 == 0)" ( (binary_expression "lVar15 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0012fdf7;" goto statement_identifier ;))) (goto_statement "goto LAB_0012fa63;" goto statement_identifier ;) })) (if_statement "if (param_2 < *(int *)((long)plVar12 + 0x2c)) {\n      local_54 = 1;\n    }\n    else {\n      param_2 = param_2 - (*(int *)((long)plVar12 + 0x2c) + 1);\n      if (param_2 < 0) {\n        iVar9 = 1;\n        goto LAB_0012fdee;\n      }\n      if (param_2 < (int)plVar12[6]) {\n        local_54 = 2;\n      }\n      else {\n        param_2 = param_2 - ((int)plVar12[6] + 1);\n        if (param_2 < 0) {\n          iVar9 = 2;\n          goto LAB_0012fdee;\n        }\n        local_54 = 3;\n      }\n    }" if (parenthesized_expression "(param_2 < *(int *)((long)plVar12 + 0x2c))" ( (binary_expression "param_2 < *(int *)((long)plVar12 + 0x2c)" identifier < (pointer_expression "*(int *)((long)plVar12 + 0x2c)" * (cast_expression "(int *)((long)plVar12 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar12 + 0x2c)" ( (binary_expression "(long)plVar12 + 0x2c" (cast_expression "(long)plVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) )) (compound_statement "{\n      local_54 = 1;\n    }" { (expression_statement "local_54 = 1;" (assignment_expression "local_54 = 1" identifier = number_literal) ;) }) (else_clause "else {\n      param_2 = param_2 - (*(int *)((long)plVar12 + 0x2c) + 1);\n      if (param_2 < 0) {\n        iVar9 = 1;\n        goto LAB_0012fdee;\n      }\n      if (param_2 < (int)plVar12[6]) {\n        local_54 = 2;\n      }\n      else {\n        param_2 = param_2 - ((int)plVar12[6] + 1);\n        if (param_2 < 0) {\n          iVar9 = 2;\n          goto LAB_0012fdee;\n        }\n        local_54 = 3;\n      }\n    }" else (compound_statement "{\n      param_2 = param_2 - (*(int *)((long)plVar12 + 0x2c) + 1);\n      if (param_2 < 0) {\n        iVar9 = 1;\n        goto LAB_0012fdee;\n      }\n      if (param_2 < (int)plVar12[6]) {\n        local_54 = 2;\n      }\n      else {\n        param_2 = param_2 - ((int)plVar12[6] + 1);\n        if (param_2 < 0) {\n          iVar9 = 2;\n          goto LAB_0012fdee;\n        }\n        local_54 = 3;\n      }\n    }" { (expression_statement "param_2 = param_2 - (*(int *)((long)plVar12 + 0x2c) + 1);" (assignment_expression "param_2 = param_2 - (*(int *)((long)plVar12 + 0x2c) + 1)" identifier = (binary_expression "param_2 - (*(int *)((long)plVar12 + 0x2c) + 1)" identifier - (parenthesized_expression "(*(int *)((long)plVar12 + 0x2c) + 1)" ( (binary_expression "*(int *)((long)plVar12 + 0x2c) + 1" (pointer_expression "*(int *)((long)plVar12 + 0x2c)" * (cast_expression "(int *)((long)plVar12 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar12 + 0x2c)" ( (binary_expression "(long)plVar12 + 0x2c" (cast_expression "(long)plVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) + number_literal) )))) ;) (if_statement "if (param_2 < 0) {\n        iVar9 = 1;\n        goto LAB_0012fdee;\n      }" if (parenthesized_expression "(param_2 < 0)" ( (binary_expression "param_2 < 0" identifier < number_literal) )) (compound_statement "{\n        iVar9 = 1;\n        goto LAB_0012fdee;\n      }" { (expression_statement "iVar9 = 1;" (assignment_expression "iVar9 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_0012fdee;" goto statement_identifier ;) })) (if_statement "if (param_2 < (int)plVar12[6]) {\n        local_54 = 2;\n      }\n      else {\n        param_2 = param_2 - ((int)plVar12[6] + 1);\n        if (param_2 < 0) {\n          iVar9 = 2;\n          goto LAB_0012fdee;\n        }\n        local_54 = 3;\n      }" if (parenthesized_expression "(param_2 < (int)plVar12[6])" ( (binary_expression "param_2 < (int)plVar12[6]" identifier < (cast_expression "(int)plVar12[6]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "plVar12[6]" identifier [ number_literal ]))) )) (compound_statement "{\n        local_54 = 2;\n      }" { (expression_statement "local_54 = 2;" (assignment_expression "local_54 = 2" identifier = number_literal) ;) }) (else_clause "else {\n        param_2 = param_2 - ((int)plVar12[6] + 1);\n        if (param_2 < 0) {\n          iVar9 = 2;\n          goto LAB_0012fdee;\n        }\n        local_54 = 3;\n      }" else (compound_statement "{\n        param_2 = param_2 - ((int)plVar12[6] + 1);\n        if (param_2 < 0) {\n          iVar9 = 2;\n          goto LAB_0012fdee;\n        }\n        local_54 = 3;\n      }" { (expression_statement "param_2 = param_2 - ((int)plVar12[6] + 1);" (assignment_expression "param_2 = param_2 - ((int)plVar12[6] + 1)" identifier = (binary_expression "param_2 - ((int)plVar12[6] + 1)" identifier - (parenthesized_expression "((int)plVar12[6] + 1)" ( (binary_expression "(int)plVar12[6] + 1" (cast_expression "(int)plVar12[6]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "plVar12[6]" identifier [ number_literal ])) + number_literal) )))) ;) (if_statement "if (param_2 < 0) {\n          iVar9 = 2;\n          goto LAB_0012fdee;\n        }" if (parenthesized_expression "(param_2 < 0)" ( (binary_expression "param_2 < 0" identifier < number_literal) )) (compound_statement "{\n          iVar9 = 2;\n          goto LAB_0012fdee;\n        }" { (expression_statement "iVar9 = 2;" (assignment_expression "iVar9 = 2" identifier = number_literal) ;) (goto_statement "goto LAB_0012fdee;" goto statement_identifier ;) })) (expression_statement "local_54 = 3;" (assignment_expression "local_54 = 3" identifier = number_literal) ;) }))) }))) (expression_statement "lVar6 = (long)(int)local_54;" (assignment_expression "lVar6 = (long)(int)local_54" identifier = (cast_expression "(long)(int)local_54" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (cast_expression "(int)local_54" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "plVar7 = plVar12 + lVar6;" (assignment_expression "plVar7 = plVar12 + lVar6" identifier = (binary_expression "plVar12 + lVar6" identifier + identifier)) ;) (expression_statement "plVar13 = (long *)plVar7[1];" (assignment_expression "plVar13 = (long *)plVar7[1]" identifier = (cast_expression "(long *)plVar7[1]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar7[1]" identifier [ number_literal ]))) ;) (if_statement "if (plVar13[8] == 0) {\n      lVar8 = *plVar7;\n      if (*(long *)(lVar8 + 0x40) == 0) {\n        if (local_54 < 3) {\n          local_50 = (long)(int)local_54;\n          lVar6 = (plVar12 + local_50)[2];\n          plVar7 = plVar12 + local_50;\n          if (lVar6 == 0) goto LAB_0012f905;\n          goto LAB_0012fe3f;\n        }\n        goto LAB_0012f905;\n      }\n      lVar11 = *(long *)(lVar8 + 0x48);\n      plVar13[3] = plVar13[2];\n      *(undefined4 *)(plVar13 + 6) = *(undefined4 *)((long)plVar13 + 0x2c);\n      plVar13[8] = plVar13[7];\n      plVar13[2] = plVar13[1];\n      *(int *)((long)plVar13 + 0x2c) = (int)plVar13[5];\n      plVar13[7] = plVar7[6];\n      lVar10 = (long)(int)((lVar11 != 0) + 1);\n      lVar11 = lVar8 + lVar10 * 8;\n      puVar2 = *(undefined8 **)(lVar11 + 0x10);\n      plVar13[1] = (long)puVar2;\n      lVar10 = lVar8 + lVar10 * 4;\n      *(undefined4 *)(plVar13 + 5) = *(undefined4 *)(lVar10 + 0x2c);\n      if (puVar2 != (undefined8 *)0x0) {\n        *puVar2 = plVar13;\n      }\n      plVar7[6] = *(long *)(lVar11 + 0x38);\n      *(undefined8 *)(lVar11 + 0x10) = 0;\n      *(undefined4 *)(lVar10 + 0x2c) = 0;\n      *(undefined8 *)(lVar11 + 0x38) = 0;\n      uVar3 = FUN_0012ef67(plVar13);\n      *(undefined4 *)((long)plVar12 + lVar6 * 4 + 0x28) = uVar3;\n      iVar14 = *(int *)((long)plVar12 + lVar6 * 4 + 0x24);\n      iVar4 = FUN_0012ef67(lVar8);\n      *(int *)((long)plVar12 + lVar6 * 4 + 0x24) = iVar4;\n      param_2 = (param_2 + iVar14) - iVar4;\n    }" if (parenthesized_expression "(plVar13[8] == 0)" ( (binary_expression "plVar13[8] == 0" (subscript_expression "plVar13[8]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      lVar8 = *plVar7;\n      if (*(long *)(lVar8 + 0x40) == 0) {\n        if (local_54 < 3) {\n          local_50 = (long)(int)local_54;\n          lVar6 = (plVar12 + local_50)[2];\n          plVar7 = plVar12 + local_50;\n          if (lVar6 == 0) goto LAB_0012f905;\n          goto LAB_0012fe3f;\n        }\n        goto LAB_0012f905;\n      }\n      lVar11 = *(long *)(lVar8 + 0x48);\n      plVar13[3] = plVar13[2];\n      *(undefined4 *)(plVar13 + 6) = *(undefined4 *)((long)plVar13 + 0x2c);\n      plVar13[8] = plVar13[7];\n      plVar13[2] = plVar13[1];\n      *(int *)((long)plVar13 + 0x2c) = (int)plVar13[5];\n      plVar13[7] = plVar7[6];\n      lVar10 = (long)(int)((lVar11 != 0) + 1);\n      lVar11 = lVar8 + lVar10 * 8;\n      puVar2 = *(undefined8 **)(lVar11 + 0x10);\n      plVar13[1] = (long)puVar2;\n      lVar10 = lVar8 + lVar10 * 4;\n      *(undefined4 *)(plVar13 + 5) = *(undefined4 *)(lVar10 + 0x2c);\n      if (puVar2 != (undefined8 *)0x0) {\n        *puVar2 = plVar13;\n      }\n      plVar7[6] = *(long *)(lVar11 + 0x38);\n      *(undefined8 *)(lVar11 + 0x10) = 0;\n      *(undefined4 *)(lVar10 + 0x2c) = 0;\n      *(undefined8 *)(lVar11 + 0x38) = 0;\n      uVar3 = FUN_0012ef67(plVar13);\n      *(undefined4 *)((long)plVar12 + lVar6 * 4 + 0x28) = uVar3;\n      iVar14 = *(int *)((long)plVar12 + lVar6 * 4 + 0x24);\n      iVar4 = FUN_0012ef67(lVar8);\n      *(int *)((long)plVar12 + lVar6 * 4 + 0x24) = iVar4;\n      param_2 = (param_2 + iVar14) - iVar4;\n    }" { (expression_statement "lVar8 = *plVar7;" (assignment_expression "lVar8 = *plVar7" identifier = (pointer_expression "*plVar7" * identifier)) ;) (if_statement "if (*(long *)(lVar8 + 0x40) == 0) {\n        if (local_54 < 3) {\n          local_50 = (long)(int)local_54;\n          lVar6 = (plVar12 + local_50)[2];\n          plVar7 = plVar12 + local_50;\n          if (lVar6 == 0) goto LAB_0012f905;\n          goto LAB_0012fe3f;\n        }\n        goto LAB_0012f905;\n      }" if (parenthesized_expression "(*(long *)(lVar8 + 0x40) == 0)" ( (binary_expression "*(long *)(lVar8 + 0x40) == 0" (pointer_expression "*(long *)(lVar8 + 0x40)" * (cast_expression "(long *)(lVar8 + 0x40)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x40)" ( (binary_expression "lVar8 + 0x40" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n        if (local_54 < 3) {\n          local_50 = (long)(int)local_54;\n          lVar6 = (plVar12 + local_50)[2];\n          plVar7 = plVar12 + local_50;\n          if (lVar6 == 0) goto LAB_0012f905;\n          goto LAB_0012fe3f;\n        }\n        goto LAB_0012f905;\n      }" { (if_statement "if (local_54 < 3) {\n          local_50 = (long)(int)local_54;\n          lVar6 = (plVar12 + local_50)[2];\n          plVar7 = plVar12 + local_50;\n          if (lVar6 == 0) goto LAB_0012f905;\n          goto LAB_0012fe3f;\n        }" if (parenthesized_expression "(local_54 < 3)" ( (binary_expression "local_54 < 3" identifier < number_literal) )) (compound_statement "{\n          local_50 = (long)(int)local_54;\n          lVar6 = (plVar12 + local_50)[2];\n          plVar7 = plVar12 + local_50;\n          if (lVar6 == 0) goto LAB_0012f905;\n          goto LAB_0012fe3f;\n        }" { (expression_statement "local_50 = (long)(int)local_54;" (assignment_expression "local_50 = (long)(int)local_54" identifier = (cast_expression "(long)(int)local_54" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (cast_expression "(int)local_54" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "lVar6 = (plVar12 + local_50)[2];" (assignment_expression "lVar6 = (plVar12 + local_50)[2]" identifier = (subscript_expression "(plVar12 + local_50)[2]" (parenthesized_expression "(plVar12 + local_50)" ( (binary_expression "plVar12 + local_50" identifier + identifier) )) [ number_literal ])) ;) (expression_statement "plVar7 = plVar12 + local_50;" (assignment_expression "plVar7 = plVar12 + local_50" identifier = (binary_expression "plVar12 + local_50" identifier + identifier)) ;) (if_statement "if (lVar6 == 0) goto LAB_0012f905;" if (parenthesized_expression "(lVar6 == 0)" ( (binary_expression "lVar6 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0012f905;" goto statement_identifier ;)) (goto_statement "goto LAB_0012fe3f;" goto statement_identifier ;) })) (goto_statement "goto LAB_0012f905;" goto statement_identifier ;) })) (expression_statement "lVar11 = *(long *)(lVar8 + 0x48);" (assignment_expression "lVar11 = *(long *)(lVar8 + 0x48)" identifier = (pointer_expression "*(long *)(lVar8 + 0x48)" * (cast_expression "(long *)(lVar8 + 0x48)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x48)" ( (binary_expression "lVar8 + 0x48" identifier + number_literal) ))))) ;) (expression_statement "plVar13[3] = plVar13[2];" (assignment_expression "plVar13[3] = plVar13[2]" (subscript_expression "plVar13[3]" identifier [ number_literal ]) = (subscript_expression "plVar13[2]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)(plVar13 + 6) = *(undefined4 *)((long)plVar13 + 0x2c);" (assignment_expression "*(undefined4 *)(plVar13 + 6) = *(undefined4 *)((long)plVar13 + 0x2c)" (pointer_expression "*(undefined4 *)(plVar13 + 6)" * (cast_expression "(undefined4 *)(plVar13 + 6)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar13 + 6)" ( (binary_expression "plVar13 + 6" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)((long)plVar13 + 0x2c)" * (cast_expression "(undefined4 *)((long)plVar13 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar13 + 0x2c)" ( (binary_expression "(long)plVar13 + 0x2c" (cast_expression "(long)plVar13" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "plVar13[8] = plVar13[7];" (assignment_expression "plVar13[8] = plVar13[7]" (subscript_expression "plVar13[8]" identifier [ number_literal ]) = (subscript_expression "plVar13[7]" identifier [ number_literal ])) ;) (expression_statement "plVar13[2] = plVar13[1];" (assignment_expression "plVar13[2] = plVar13[1]" (subscript_expression "plVar13[2]" identifier [ number_literal ]) = (subscript_expression "plVar13[1]" identifier [ number_literal ])) ;) (expression_statement "*(int *)((long)plVar13 + 0x2c) = (int)plVar13[5];" (assignment_expression "*(int *)((long)plVar13 + 0x2c) = (int)plVar13[5]" (pointer_expression "*(int *)((long)plVar13 + 0x2c)" * (cast_expression "(int *)((long)plVar13 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar13 + 0x2c)" ( (binary_expression "(long)plVar13 + 0x2c" (cast_expression "(long)plVar13" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (cast_expression "(int)plVar13[5]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "plVar13[5]" identifier [ number_literal ]))) ;) (expression_statement "plVar13[7] = plVar7[6];" (assignment_expression "plVar13[7] = plVar7[6]" (subscript_expression "plVar13[7]" identifier [ number_literal ]) = (subscript_expression "plVar7[6]" identifier [ number_literal ])) ;) (expression_statement "lVar10 = (long)(int)((lVar11 != 0) + 1);" (assignment_expression "lVar10 = (long)(int)((lVar11 != 0) + 1)" identifier = (cast_expression "(long)(int)((lVar11 != 0) + 1)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (cast_expression "(int)((lVar11 != 0) + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((lVar11 != 0) + 1)" ( (binary_expression "(lVar11 != 0) + 1" (parenthesized_expression "(lVar11 != 0)" ( (binary_expression "lVar11 != 0" identifier != number_literal) )) + number_literal) ))))) ;) (expression_statement "lVar11 = lVar8 + lVar10 * 8;" (assignment_expression "lVar11 = lVar8 + lVar10 * 8" identifier = (binary_expression "lVar8 + lVar10 * 8" identifier + (binary_expression "lVar10 * 8" identifier * number_literal))) ;) (expression_statement "puVar2 = *(undefined8 **)(lVar11 + 0x10);" (assignment_expression "puVar2 = *(undefined8 **)(lVar11 + 0x10)" identifier = (pointer_expression "*(undefined8 **)(lVar11 + 0x10)" * (cast_expression "(undefined8 **)(lVar11 + 0x10)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar11 + 0x10)" ( (binary_expression "lVar11 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "plVar13[1] = (long)puVar2;" (assignment_expression "plVar13[1] = (long)puVar2" (subscript_expression "plVar13[1]" identifier [ number_literal ]) = (cast_expression "(long)puVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "lVar10 = lVar8 + lVar10 * 4;" (assignment_expression "lVar10 = lVar8 + lVar10 * 4" identifier = (binary_expression "lVar8 + lVar10 * 4" identifier + (binary_expression "lVar10 * 4" identifier * number_literal))) ;) (expression_statement "*(undefined4 *)(plVar13 + 5) = *(undefined4 *)(lVar10 + 0x2c);" (assignment_expression "*(undefined4 *)(plVar13 + 5) = *(undefined4 *)(lVar10 + 0x2c)" (pointer_expression "*(undefined4 *)(plVar13 + 5)" * (cast_expression "(undefined4 *)(plVar13 + 5)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar13 + 5)" ( (binary_expression "plVar13 + 5" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(lVar10 + 0x2c)" * (cast_expression "(undefined4 *)(lVar10 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + 0x2c)" ( (binary_expression "lVar10 + 0x2c" identifier + number_literal) ))))) ;) (if_statement "if (puVar2 != (undefined8 *)0x0) {\n        *puVar2 = plVar13;\n      }" if (parenthesized_expression "(puVar2 != (undefined8 *)0x0)" ( (binary_expression "puVar2 != (undefined8 *)0x0" identifier != (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        *puVar2 = plVar13;\n      }" { (expression_statement "*puVar2 = plVar13;" (assignment_expression "*puVar2 = plVar13" (pointer_expression "*puVar2" * identifier) = identifier) ;) })) (expression_statement "plVar7[6] = *(long *)(lVar11 + 0x38);" (assignment_expression "plVar7[6] = *(long *)(lVar11 + 0x38)" (subscript_expression "plVar7[6]" identifier [ number_literal ]) = (pointer_expression "*(long *)(lVar11 + 0x38)" * (cast_expression "(long *)(lVar11 + 0x38)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar11 + 0x38)" ( (binary_expression "lVar11 + 0x38" identifier + number_literal) ))))) ;) (expression_statement "*(undefined8 *)(lVar11 + 0x10) = 0;" (assignment_expression "*(undefined8 *)(lVar11 + 0x10) = 0" (pointer_expression "*(undefined8 *)(lVar11 + 0x10)" * (cast_expression "(undefined8 *)(lVar11 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar11 + 0x10)" ( (binary_expression "lVar11 + 0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(lVar10 + 0x2c) = 0;" (assignment_expression "*(undefined4 *)(lVar10 + 0x2c) = 0" (pointer_expression "*(undefined4 *)(lVar10 + 0x2c)" * (cast_expression "(undefined4 *)(lVar10 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + 0x2c)" ( (binary_expression "lVar10 + 0x2c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(lVar11 + 0x38) = 0;" (assignment_expression "*(undefined8 *)(lVar11 + 0x38) = 0" (pointer_expression "*(undefined8 *)(lVar11 + 0x38)" * (cast_expression "(undefined8 *)(lVar11 + 0x38)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar11 + 0x38)" ( (binary_expression "lVar11 + 0x38" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar3 = FUN_0012ef67(plVar13);" (assignment_expression "uVar3 = FUN_0012ef67(plVar13)" identifier = (call_expression "FUN_0012ef67(plVar13)" identifier (argument_list "(plVar13)" ( identifier )))) ;) (expression_statement "*(undefined4 *)((long)plVar12 + lVar6 * 4 + 0x28) = uVar3;" (assignment_expression "*(undefined4 *)((long)plVar12 + lVar6 * 4 + 0x28) = uVar3" (pointer_expression "*(undefined4 *)((long)plVar12 + lVar6 * 4 + 0x28)" * (cast_expression "(undefined4 *)((long)plVar12 + lVar6 * 4 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar12 + lVar6 * 4 + 0x28)" ( (binary_expression "(long)plVar12 + lVar6 * 4 + 0x28" (binary_expression "(long)plVar12 + lVar6 * 4" (cast_expression "(long)plVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "lVar6 * 4" identifier * number_literal)) + number_literal) )))) = identifier) ;) (expression_statement "iVar14 = *(int *)((long)plVar12 + lVar6 * 4 + 0x24);" (assignment_expression "iVar14 = *(int *)((long)plVar12 + lVar6 * 4 + 0x24)" identifier = (pointer_expression "*(int *)((long)plVar12 + lVar6 * 4 + 0x24)" * (cast_expression "(int *)((long)plVar12 + lVar6 * 4 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar12 + lVar6 * 4 + 0x24)" ( (binary_expression "(long)plVar12 + lVar6 * 4 + 0x24" (binary_expression "(long)plVar12 + lVar6 * 4" (cast_expression "(long)plVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "lVar6 * 4" identifier * number_literal)) + number_literal) ))))) ;) (expression_statement "iVar4 = FUN_0012ef67(lVar8);" (assignment_expression "iVar4 = FUN_0012ef67(lVar8)" identifier = (call_expression "FUN_0012ef67(lVar8)" identifier (argument_list "(lVar8)" ( identifier )))) ;) (expression_statement "*(int *)((long)plVar12 + lVar6 * 4 + 0x24) = iVar4;" (assignment_expression "*(int *)((long)plVar12 + lVar6 * 4 + 0x24) = iVar4" (pointer_expression "*(int *)((long)plVar12 + lVar6 * 4 + 0x24)" * (cast_expression "(int *)((long)plVar12 + lVar6 * 4 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar12 + lVar6 * 4 + 0x24)" ( (binary_expression "(long)plVar12 + lVar6 * 4 + 0x24" (binary_expression "(long)plVar12 + lVar6 * 4" (cast_expression "(long)plVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "lVar6 * 4" identifier * number_literal)) + number_literal) )))) = identifier) ;) (expression_statement "param_2 = (param_2 + iVar14) - iVar4;" (assignment_expression "param_2 = (param_2 + iVar14) - iVar4" identifier = (binary_expression "(param_2 + iVar14) - iVar4" (parenthesized_expression "(param_2 + iVar14)" ( (binary_expression "param_2 + iVar14" identifier + identifier) )) - identifier)) ;) })) }))) (if_statement "if (lVar15 == 0) {\nLAB_0012fdf7:\n    lVar15 = plVar12[(long)iVar9 + 7];\n  }" if (parenthesized_expression "(lVar15 == 0)" ( (binary_expression "lVar15 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0012fdf7:\n    lVar15 = plVar12[(long)iVar9 + 7];\n  }" { (labeled_statement "LAB_0012fdf7:\n    lVar15 = plVar12[(long)iVar9 + 7];" statement_identifier : (expression_statement "lVar15 = plVar12[(long)iVar9 + 7];" (assignment_expression "lVar15 = plVar12[(long)iVar9 + 7]" identifier = (subscript_expression "plVar12[(long)iVar9 + 7]" identifier [ (binary_expression "(long)iVar9 + 7" (cast_expression "(long)iVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ])) ;)) })) (if_statement "if (iVar9 == -1) {\n    return 0;\n  }" if (parenthesized_expression "(iVar9 == -1)" ( (binary_expression "iVar9 == -1" identifier == number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (labeled_statement "LAB_0012fa63:\n  lVar6 = *plVar12;" statement_identifier : (expression_statement "lVar6 = *plVar12;" (assignment_expression "lVar6 = *plVar12" identifier = (pointer_expression "*plVar12" * identifier)) ;)) (if_statement "if (lVar6 == 0) {\n    if (plVar12[8] == 0) {\n      if (plVar12[1] == 0) {\n        FUN_0010c4d3(plVar12);\n        *param_1 = 0;\n        return lVar15;\n      }\n    }\n    else if (plVar12[1] == 0) {\n      lVar6 = 0;\n      if (1 < iVar9) {\n        plVar12[(long)iVar9 + 7] = 0;\n        return lVar15;\n      }\n      goto LAB_0012fbac;\n    }\n  }\n  else if ((plVar12[1] == 0) && (plVar12[8] != 0)) goto code_r0x0012fc20;" if (parenthesized_expression "(lVar6 == 0)" ( (binary_expression "lVar6 == 0" identifier == number_literal) )) (compound_statement "{\n    if (plVar12[8] == 0) {\n      if (plVar12[1] == 0) {\n        FUN_0010c4d3(plVar12);\n        *param_1 = 0;\n        return lVar15;\n      }\n    }\n    else if (plVar12[1] == 0) {\n      lVar6 = 0;\n      if (1 < iVar9) {\n        plVar12[(long)iVar9 + 7] = 0;\n        return lVar15;\n      }\n      goto LAB_0012fbac;\n    }\n  }" { (if_statement "if (plVar12[8] == 0) {\n      if (plVar12[1] == 0) {\n        FUN_0010c4d3(plVar12);\n        *param_1 = 0;\n        return lVar15;\n      }\n    }\n    else if (plVar12[1] == 0) {\n      lVar6 = 0;\n      if (1 < iVar9) {\n        plVar12[(long)iVar9 + 7] = 0;\n        return lVar15;\n      }\n      goto LAB_0012fbac;\n    }" if (parenthesized_expression "(plVar12[8] == 0)" ( (binary_expression "plVar12[8] == 0" (subscript_expression "plVar12[8]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      if (plVar12[1] == 0) {\n        FUN_0010c4d3(plVar12);\n        *param_1 = 0;\n        return lVar15;\n      }\n    }" { (if_statement "if (plVar12[1] == 0) {\n        FUN_0010c4d3(plVar12);\n        *param_1 = 0;\n        return lVar15;\n      }" if (parenthesized_expression "(plVar12[1] == 0)" ( (binary_expression "plVar12[1] == 0" (subscript_expression "plVar12[1]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n        FUN_0010c4d3(plVar12);\n        *param_1 = 0;\n        return lVar15;\n      }" { (expression_statement "FUN_0010c4d3(plVar12);" (call_expression "FUN_0010c4d3(plVar12)" identifier (argument_list "(plVar12)" ( identifier ))) ;) (expression_statement "*param_1 = 0;" (assignment_expression "*param_1 = 0" (pointer_expression "*param_1" * identifier) = number_literal) ;) (return_statement "return lVar15;" return identifier ;) })) }) (else_clause "else if (plVar12[1] == 0) {\n      lVar6 = 0;\n      if (1 < iVar9) {\n        plVar12[(long)iVar9 + 7] = 0;\n        return lVar15;\n      }\n      goto LAB_0012fbac;\n    }" else (if_statement "if (plVar12[1] == 0) {\n      lVar6 = 0;\n      if (1 < iVar9) {\n        plVar12[(long)iVar9 + 7] = 0;\n        return lVar15;\n      }\n      goto LAB_0012fbac;\n    }" if (parenthesized_expression "(plVar12[1] == 0)" ( (binary_expression "plVar12[1] == 0" (subscript_expression "plVar12[1]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      lVar6 = 0;\n      if (1 < iVar9) {\n        plVar12[(long)iVar9 + 7] = 0;\n        return lVar15;\n      }\n      goto LAB_0012fbac;\n    }" { (expression_statement "lVar6 = 0;" (assignment_expression "lVar6 = 0" identifier = number_literal) ;) (if_statement "if (1 < iVar9) {\n        plVar12[(long)iVar9 + 7] = 0;\n        return lVar15;\n      }" if (parenthesized_expression "(1 < iVar9)" ( (binary_expression "1 < iVar9" number_literal < identifier) )) (compound_statement "{\n        plVar12[(long)iVar9 + 7] = 0;\n        return lVar15;\n      }" { (expression_statement "plVar12[(long)iVar9 + 7] = 0;" (assignment_expression "plVar12[(long)iVar9 + 7] = 0" (subscript_expression "plVar12[(long)iVar9 + 7]" identifier [ (binary_expression "(long)iVar9 + 7" (cast_expression "(long)iVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ]) = number_literal) ;) (return_statement "return lVar15;" return identifier ;) })) (goto_statement "goto LAB_0012fbac;" goto statement_identifier ;) })))) }) (else_clause "else if ((plVar12[1] == 0) && (plVar12[8] != 0)) goto code_r0x0012fc20;" else (if_statement "if ((plVar12[1] == 0) && (plVar12[8] != 0)) goto code_r0x0012fc20;" if (parenthesized_expression "((plVar12[1] == 0) && (plVar12[8] != 0))" ( (binary_expression "(plVar12[1] == 0) && (plVar12[8] != 0)" (parenthesized_expression "(plVar12[1] == 0)" ( (binary_expression "plVar12[1] == 0" (subscript_expression "plVar12[1]" identifier [ number_literal ]) == number_literal) )) && (parenthesized_expression "(plVar12[8] != 0)" ( (binary_expression "plVar12[8] != 0" (subscript_expression "plVar12[8]" identifier [ number_literal ]) != number_literal) ))) )) (goto_statement "goto code_r0x0012fc20;" goto statement_identifier ;)))) (expression_statement "plVar13 = (long *)plVar12[(long)iVar9 + 1];" (assignment_expression "plVar13 = (long *)plVar12[(long)iVar9 + 1]" identifier = (cast_expression "(long *)plVar12[(long)iVar9 + 1]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar12[(long)iVar9 + 1]" identifier [ (binary_expression "(long)iVar9 + 1" (cast_expression "(long)iVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ]))) ;) (expression_statement "plVar7 = plVar13;" (assignment_expression "plVar7 = plVar13" identifier = identifier) ;) (if_statement "if (plVar13[8] == 0) {\n    plVar7 = (long *)plVar12[(long)iVar9 + 2];\n    plVar5 = plVar7;\n    if (plVar7[8] == 0) {\n      plVar13[8] = plVar12[(long)iVar9 + 7];\n      puVar2 = (undefined8 *)plVar7[1];\n      plVar13[3] = (long)puVar2;\n      *(int *)(plVar13 + 6) = (int)plVar7[5];\n      if (puVar2 != (undefined8 *)0x0) {\n        *puVar2 = plVar13;\n      }\n      plVar13[9] = plVar7[7];\n      puVar2 = (undefined8 *)plVar7[2];\n      plVar13[4] = (long)puVar2;\n      *(undefined4 *)((long)plVar13 + 0x34) = *(undefined4 *)((long)plVar7 + 0x2c);\n      if (puVar2 != (undefined8 *)0x0) {\n        *puVar2 = plVar13;\n      }\n      FUN_0010c4d3();\n      uVar3 = FUN_0012ef67(plVar13);\n      *(undefined4 *)((long)plVar12 + (long)iVar9 * 4 + 0x28) = uVar3;\n      iVar14 = iVar9;\n      if ((iVar9 < 2) && (lVar6 = plVar12[(long)iVar9 + 8], lVar6 != 0)) {\n        lVar8 = (long)(iVar9 + 1);\n        do {\n          iVar14 = (int)lVar8;\n          plVar12[lVar8 + 6] = lVar6;\n          plVar12[lVar8 + 1] = plVar12[lVar8 + 2];\n          *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28) =\n               *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x2c);\n          if (1 < iVar14) break;\n          lVar6 = plVar12[lVar8 + 8];\n          lVar8 = lVar8 + 1;\n        } while (lVar6 != 0);\n      }\n      plVar12[(long)iVar14 + 7] = 0;\n      plVar12[(long)iVar14 + 2] = 0;\n      *(undefined4 *)((long)plVar12 + (long)(iVar14 + 1) * 4 + 0x28) = 0;\n      if (plVar12[7] == 0) {\n        *param_1 = plVar13;\n        *plVar13 = 0;\n        FUN_0010c4d3(plVar12);\n      }\n      param_2 = *(int *)((long)plVar13 + 0x2c) + (int)plVar13[5] + 1;\n    }\n    else {\n      do {\n        plVar13 = plVar5;\n        plVar5 = (long *)plVar13[1];\n      } while (plVar5 != (long *)0x0);\n      plVar12[(long)iVar9 + 7] = plVar13[7];\n      param_2 = 0;\n      plVar13 = plVar7;\n    }\n  }\n  else {\n    while (plVar5 = plVar7, (long *)plVar5[1] != (long *)0x0) {\n      plVar7 = (long *)plVar5[4];\n      if ((((long *)plVar5[4] == (long *)0x0) &&\n          (plVar7 = (long *)plVar5[3], (long *)plVar5[3] == (long *)0x0)) &&\n         (plVar7 = (long *)plVar5[2], (long *)plVar5[2] == (long *)0x0)) {\n        plVar7 = (long *)plVar5[1];\n      }\n    }\n    lVar6 = plVar5[9];\n    if ((lVar6 == 0) && (lVar6 = plVar5[8], lVar6 == 0)) {\n      lVar6 = plVar5[7];\n    }\n    plVar12[(long)iVar9 + 7] = lVar6;\n    param_2 = *(int *)((long)plVar12 + (long)iVar9 * 4 + 0x28) + -1;\n  }" if (parenthesized_expression "(plVar13[8] == 0)" ( (binary_expression "plVar13[8] == 0" (subscript_expression "plVar13[8]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n    plVar7 = (long *)plVar12[(long)iVar9 + 2];\n    plVar5 = plVar7;\n    if (plVar7[8] == 0) {\n      plVar13[8] = plVar12[(long)iVar9 + 7];\n      puVar2 = (undefined8 *)plVar7[1];\n      plVar13[3] = (long)puVar2;\n      *(int *)(plVar13 + 6) = (int)plVar7[5];\n      if (puVar2 != (undefined8 *)0x0) {\n        *puVar2 = plVar13;\n      }\n      plVar13[9] = plVar7[7];\n      puVar2 = (undefined8 *)plVar7[2];\n      plVar13[4] = (long)puVar2;\n      *(undefined4 *)((long)plVar13 + 0x34) = *(undefined4 *)((long)plVar7 + 0x2c);\n      if (puVar2 != (undefined8 *)0x0) {\n        *puVar2 = plVar13;\n      }\n      FUN_0010c4d3();\n      uVar3 = FUN_0012ef67(plVar13);\n      *(undefined4 *)((long)plVar12 + (long)iVar9 * 4 + 0x28) = uVar3;\n      iVar14 = iVar9;\n      if ((iVar9 < 2) && (lVar6 = plVar12[(long)iVar9 + 8], lVar6 != 0)) {\n        lVar8 = (long)(iVar9 + 1);\n        do {\n          iVar14 = (int)lVar8;\n          plVar12[lVar8 + 6] = lVar6;\n          plVar12[lVar8 + 1] = plVar12[lVar8 + 2];\n          *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28) =\n               *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x2c);\n          if (1 < iVar14) break;\n          lVar6 = plVar12[lVar8 + 8];\n          lVar8 = lVar8 + 1;\n        } while (lVar6 != 0);\n      }\n      plVar12[(long)iVar14 + 7] = 0;\n      plVar12[(long)iVar14 + 2] = 0;\n      *(undefined4 *)((long)plVar12 + (long)(iVar14 + 1) * 4 + 0x28) = 0;\n      if (plVar12[7] == 0) {\n        *param_1 = plVar13;\n        *plVar13 = 0;\n        FUN_0010c4d3(plVar12);\n      }\n      param_2 = *(int *)((long)plVar13 + 0x2c) + (int)plVar13[5] + 1;\n    }\n    else {\n      do {\n        plVar13 = plVar5;\n        plVar5 = (long *)plVar13[1];\n      } while (plVar5 != (long *)0x0);\n      plVar12[(long)iVar9 + 7] = plVar13[7];\n      param_2 = 0;\n      plVar13 = plVar7;\n    }\n  }" { (expression_statement "plVar7 = (long *)plVar12[(long)iVar9 + 2];" (assignment_expression "plVar7 = (long *)plVar12[(long)iVar9 + 2]" identifier = (cast_expression "(long *)plVar12[(long)iVar9 + 2]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar12[(long)iVar9 + 2]" identifier [ (binary_expression "(long)iVar9 + 2" (cast_expression "(long)iVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ]))) ;) (expression_statement "plVar5 = plVar7;" (assignment_expression "plVar5 = plVar7" identifier = identifier) ;) (if_statement "if (plVar7[8] == 0) {\n      plVar13[8] = plVar12[(long)iVar9 + 7];\n      puVar2 = (undefined8 *)plVar7[1];\n      plVar13[3] = (long)puVar2;\n      *(int *)(plVar13 + 6) = (int)plVar7[5];\n      if (puVar2 != (undefined8 *)0x0) {\n        *puVar2 = plVar13;\n      }\n      plVar13[9] = plVar7[7];\n      puVar2 = (undefined8 *)plVar7[2];\n      plVar13[4] = (long)puVar2;\n      *(undefined4 *)((long)plVar13 + 0x34) = *(undefined4 *)((long)plVar7 + 0x2c);\n      if (puVar2 != (undefined8 *)0x0) {\n        *puVar2 = plVar13;\n      }\n      FUN_0010c4d3();\n      uVar3 = FUN_0012ef67(plVar13);\n      *(undefined4 *)((long)plVar12 + (long)iVar9 * 4 + 0x28) = uVar3;\n      iVar14 = iVar9;\n      if ((iVar9 < 2) && (lVar6 = plVar12[(long)iVar9 + 8], lVar6 != 0)) {\n        lVar8 = (long)(iVar9 + 1);\n        do {\n          iVar14 = (int)lVar8;\n          plVar12[lVar8 + 6] = lVar6;\n          plVar12[lVar8 + 1] = plVar12[lVar8 + 2];\n          *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28) =\n               *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x2c);\n          if (1 < iVar14) break;\n          lVar6 = plVar12[lVar8 + 8];\n          lVar8 = lVar8 + 1;\n        } while (lVar6 != 0);\n      }\n      plVar12[(long)iVar14 + 7] = 0;\n      plVar12[(long)iVar14 + 2] = 0;\n      *(undefined4 *)((long)plVar12 + (long)(iVar14 + 1) * 4 + 0x28) = 0;\n      if (plVar12[7] == 0) {\n        *param_1 = plVar13;\n        *plVar13 = 0;\n        FUN_0010c4d3(plVar12);\n      }\n      param_2 = *(int *)((long)plVar13 + 0x2c) + (int)plVar13[5] + 1;\n    }\n    else {\n      do {\n        plVar13 = plVar5;\n        plVar5 = (long *)plVar13[1];\n      } while (plVar5 != (long *)0x0);\n      plVar12[(long)iVar9 + 7] = plVar13[7];\n      param_2 = 0;\n      plVar13 = plVar7;\n    }" if (parenthesized_expression "(plVar7[8] == 0)" ( (binary_expression "plVar7[8] == 0" (subscript_expression "plVar7[8]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      plVar13[8] = plVar12[(long)iVar9 + 7];\n      puVar2 = (undefined8 *)plVar7[1];\n      plVar13[3] = (long)puVar2;\n      *(int *)(plVar13 + 6) = (int)plVar7[5];\n      if (puVar2 != (undefined8 *)0x0) {\n        *puVar2 = plVar13;\n      }\n      plVar13[9] = plVar7[7];\n      puVar2 = (undefined8 *)plVar7[2];\n      plVar13[4] = (long)puVar2;\n      *(undefined4 *)((long)plVar13 + 0x34) = *(undefined4 *)((long)plVar7 + 0x2c);\n      if (puVar2 != (undefined8 *)0x0) {\n        *puVar2 = plVar13;\n      }\n      FUN_0010c4d3();\n      uVar3 = FUN_0012ef67(plVar13);\n      *(undefined4 *)((long)plVar12 + (long)iVar9 * 4 + 0x28) = uVar3;\n      iVar14 = iVar9;\n      if ((iVar9 < 2) && (lVar6 = plVar12[(long)iVar9 + 8], lVar6 != 0)) {\n        lVar8 = (long)(iVar9 + 1);\n        do {\n          iVar14 = (int)lVar8;\n          plVar12[lVar8 + 6] = lVar6;\n          plVar12[lVar8 + 1] = plVar12[lVar8 + 2];\n          *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28) =\n               *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x2c);\n          if (1 < iVar14) break;\n          lVar6 = plVar12[lVar8 + 8];\n          lVar8 = lVar8 + 1;\n        } while (lVar6 != 0);\n      }\n      plVar12[(long)iVar14 + 7] = 0;\n      plVar12[(long)iVar14 + 2] = 0;\n      *(undefined4 *)((long)plVar12 + (long)(iVar14 + 1) * 4 + 0x28) = 0;\n      if (plVar12[7] == 0) {\n        *param_1 = plVar13;\n        *plVar13 = 0;\n        FUN_0010c4d3(plVar12);\n      }\n      param_2 = *(int *)((long)plVar13 + 0x2c) + (int)plVar13[5] + 1;\n    }" { (expression_statement "plVar13[8] = plVar12[(long)iVar9 + 7];" (assignment_expression "plVar13[8] = plVar12[(long)iVar9 + 7]" (subscript_expression "plVar13[8]" identifier [ number_literal ]) = (subscript_expression "plVar12[(long)iVar9 + 7]" identifier [ (binary_expression "(long)iVar9 + 7" (cast_expression "(long)iVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ])) ;) (expression_statement "puVar2 = (undefined8 *)plVar7[1];" (assignment_expression "puVar2 = (undefined8 *)plVar7[1]" identifier = (cast_expression "(undefined8 *)plVar7[1]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar7[1]" identifier [ number_literal ]))) ;) (expression_statement "plVar13[3] = (long)puVar2;" (assignment_expression "plVar13[3] = (long)puVar2" (subscript_expression "plVar13[3]" identifier [ number_literal ]) = (cast_expression "(long)puVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "*(int *)(plVar13 + 6) = (int)plVar7[5];" (assignment_expression "*(int *)(plVar13 + 6) = (int)plVar7[5]" (pointer_expression "*(int *)(plVar13 + 6)" * (cast_expression "(int *)(plVar13 + 6)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar13 + 6)" ( (binary_expression "plVar13 + 6" identifier + number_literal) )))) = (cast_expression "(int)plVar7[5]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "plVar7[5]" identifier [ number_literal ]))) ;) (if_statement "if (puVar2 != (undefined8 *)0x0) {\n        *puVar2 = plVar13;\n      }" if (parenthesized_expression "(puVar2 != (undefined8 *)0x0)" ( (binary_expression "puVar2 != (undefined8 *)0x0" identifier != (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        *puVar2 = plVar13;\n      }" { (expression_statement "*puVar2 = plVar13;" (assignment_expression "*puVar2 = plVar13" (pointer_expression "*puVar2" * identifier) = identifier) ;) })) (expression_statement "plVar13[9] = plVar7[7];" (assignment_expression "plVar13[9] = plVar7[7]" (subscript_expression "plVar13[9]" identifier [ number_literal ]) = (subscript_expression "plVar7[7]" identifier [ number_literal ])) ;) (expression_statement "puVar2 = (undefined8 *)plVar7[2];" (assignment_expression "puVar2 = (undefined8 *)plVar7[2]" identifier = (cast_expression "(undefined8 *)plVar7[2]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar7[2]" identifier [ number_literal ]))) ;) (expression_statement "plVar13[4] = (long)puVar2;" (assignment_expression "plVar13[4] = (long)puVar2" (subscript_expression "plVar13[4]" identifier [ number_literal ]) = (cast_expression "(long)puVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "*(undefined4 *)((long)plVar13 + 0x34) = *(undefined4 *)((long)plVar7 + 0x2c);" (assignment_expression "*(undefined4 *)((long)plVar13 + 0x34) = *(undefined4 *)((long)plVar7 + 0x2c)" (pointer_expression "*(undefined4 *)((long)plVar13 + 0x34)" * (cast_expression "(undefined4 *)((long)plVar13 + 0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar13 + 0x34)" ( (binary_expression "(long)plVar13 + 0x34" (cast_expression "(long)plVar13" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (pointer_expression "*(undefined4 *)((long)plVar7 + 0x2c)" * (cast_expression "(undefined4 *)((long)plVar7 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar7 + 0x2c)" ( (binary_expression "(long)plVar7 + 0x2c" (cast_expression "(long)plVar7" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (if_statement "if (puVar2 != (undefined8 *)0x0) {\n        *puVar2 = plVar13;\n      }" if (parenthesized_expression "(puVar2 != (undefined8 *)0x0)" ( (binary_expression "puVar2 != (undefined8 *)0x0" identifier != (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        *puVar2 = plVar13;\n      }" { (expression_statement "*puVar2 = plVar13;" (assignment_expression "*puVar2 = plVar13" (pointer_expression "*puVar2" * identifier) = identifier) ;) })) (expression_statement "FUN_0010c4d3();" (call_expression "FUN_0010c4d3()" identifier (argument_list "()" ( ))) ;) (expression_statement "uVar3 = FUN_0012ef67(plVar13);" (assignment_expression "uVar3 = FUN_0012ef67(plVar13)" identifier = (call_expression "FUN_0012ef67(plVar13)" identifier (argument_list "(plVar13)" ( identifier )))) ;) (expression_statement "*(undefined4 *)((long)plVar12 + (long)iVar9 * 4 + 0x28) = uVar3;" (assignment_expression "*(undefined4 *)((long)plVar12 + (long)iVar9 * 4 + 0x28) = uVar3" (pointer_expression "*(undefined4 *)((long)plVar12 + (long)iVar9 * 4 + 0x28)" * (cast_expression "(undefined4 *)((long)plVar12 + (long)iVar9 * 4 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar12 + (long)iVar9 * 4 + 0x28)" ( (binary_expression "(long)plVar12 + (long)iVar9 * 4 + 0x28" (binary_expression "(long)plVar12 + (long)iVar9 * 4" (cast_expression "(long)plVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "(long)iVar9 * 4" (cast_expression "(long)iVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal)) + number_literal) )))) = identifier) ;) (expression_statement "iVar14 = iVar9;" (assignment_expression "iVar14 = iVar9" identifier = identifier) ;) (if_statement "if ((iVar9 < 2) && (lVar6 = plVar12[(long)iVar9 + 8], lVar6 != 0)) {\n        lVar8 = (long)(iVar9 + 1);\n        do {\n          iVar14 = (int)lVar8;\n          plVar12[lVar8 + 6] = lVar6;\n          plVar12[lVar8 + 1] = plVar12[lVar8 + 2];\n          *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28) =\n               *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x2c);\n          if (1 < iVar14) break;\n          lVar6 = plVar12[lVar8 + 8];\n          lVar8 = lVar8 + 1;\n        } while (lVar6 != 0);\n      }" if (parenthesized_expression "((iVar9 < 2) && (lVar6 = plVar12[(long)iVar9 + 8], lVar6 != 0))" ( (binary_expression "(iVar9 < 2) && (lVar6 = plVar12[(long)iVar9 + 8], lVar6 != 0)" (parenthesized_expression "(iVar9 < 2)" ( (binary_expression "iVar9 < 2" identifier < number_literal) )) && (parenthesized_expression "(lVar6 = plVar12[(long)iVar9 + 8], lVar6 != 0)" ( (comma_expression "lVar6 = plVar12[(long)iVar9 + 8], lVar6 != 0" (assignment_expression "lVar6 = plVar12[(long)iVar9 + 8]" identifier = (subscript_expression "plVar12[(long)iVar9 + 8]" identifier [ (binary_expression "(long)iVar9 + 8" (cast_expression "(long)iVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ])) , (binary_expression "lVar6 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n        lVar8 = (long)(iVar9 + 1);\n        do {\n          iVar14 = (int)lVar8;\n          plVar12[lVar8 + 6] = lVar6;\n          plVar12[lVar8 + 1] = plVar12[lVar8 + 2];\n          *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28) =\n               *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x2c);\n          if (1 < iVar14) break;\n          lVar6 = plVar12[lVar8 + 8];\n          lVar8 = lVar8 + 1;\n        } while (lVar6 != 0);\n      }" { (expression_statement "lVar8 = (long)(iVar9 + 1);" (assignment_expression "lVar8 = (long)(iVar9 + 1)" identifier = (cast_expression "(long)(iVar9 + 1)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(iVar9 + 1)" ( (binary_expression "iVar9 + 1" identifier + number_literal) )))) ;) (do_statement "do {\n          iVar14 = (int)lVar8;\n          plVar12[lVar8 + 6] = lVar6;\n          plVar12[lVar8 + 1] = plVar12[lVar8 + 2];\n          *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28) =\n               *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x2c);\n          if (1 < iVar14) break;\n          lVar6 = plVar12[lVar8 + 8];\n          lVar8 = lVar8 + 1;\n        } while (lVar6 != 0);" do (compound_statement "{\n          iVar14 = (int)lVar8;\n          plVar12[lVar8 + 6] = lVar6;\n          plVar12[lVar8 + 1] = plVar12[lVar8 + 2];\n          *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28) =\n               *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x2c);\n          if (1 < iVar14) break;\n          lVar6 = plVar12[lVar8 + 8];\n          lVar8 = lVar8 + 1;\n        }" { (expression_statement "iVar14 = (int)lVar8;" (assignment_expression "iVar14 = (int)lVar8" identifier = (cast_expression "(int)lVar8" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "plVar12[lVar8 + 6] = lVar6;" (assignment_expression "plVar12[lVar8 + 6] = lVar6" (subscript_expression "plVar12[lVar8 + 6]" identifier [ (binary_expression "lVar8 + 6" identifier + number_literal) ]) = identifier) ;) (expression_statement "plVar12[lVar8 + 1] = plVar12[lVar8 + 2];" (assignment_expression "plVar12[lVar8 + 1] = plVar12[lVar8 + 2]" (subscript_expression "plVar12[lVar8 + 1]" identifier [ (binary_expression "lVar8 + 1" identifier + number_literal) ]) = (subscript_expression "plVar12[lVar8 + 2]" identifier [ (binary_expression "lVar8 + 2" identifier + number_literal) ])) ;) (expression_statement "*(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28) =\n               *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x2c);" (assignment_expression "*(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28) =\n               *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x2c)" (pointer_expression "*(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28)" * (cast_expression "(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar12 + lVar8 * 4 + 0x28)" ( (binary_expression "(long)plVar12 + lVar8 * 4 + 0x28" (binary_expression "(long)plVar12 + lVar8 * 4" (cast_expression "(long)plVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "lVar8 * 4" identifier * number_literal)) + number_literal) )))) = (pointer_expression "*(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x2c)" * (cast_expression "(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar12 + lVar8 * 4 + 0x2c)" ( (binary_expression "(long)plVar12 + lVar8 * 4 + 0x2c" (binary_expression "(long)plVar12 + lVar8 * 4" (cast_expression "(long)plVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "lVar8 * 4" identifier * number_literal)) + number_literal) ))))) ;) (if_statement "if (1 < iVar14) break;" if (parenthesized_expression "(1 < iVar14)" ( (binary_expression "1 < iVar14" number_literal < identifier) )) (break_statement "break;" break ;)) (expression_statement "lVar6 = plVar12[lVar8 + 8];" (assignment_expression "lVar6 = plVar12[lVar8 + 8]" identifier = (subscript_expression "plVar12[lVar8 + 8]" identifier [ (binary_expression "lVar8 + 8" identifier + number_literal) ])) ;) (expression_statement "lVar8 = lVar8 + 1;" (assignment_expression "lVar8 = lVar8 + 1" identifier = (binary_expression "lVar8 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar6 != 0)" ( (binary_expression "lVar6 != 0" identifier != number_literal) )) ;) })) (expression_statement "plVar12[(long)iVar14 + 7] = 0;" (assignment_expression "plVar12[(long)iVar14 + 7] = 0" (subscript_expression "plVar12[(long)iVar14 + 7]" identifier [ (binary_expression "(long)iVar14 + 7" (cast_expression "(long)iVar14" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ]) = number_literal) ;) (expression_statement "plVar12[(long)iVar14 + 2] = 0;" (assignment_expression "plVar12[(long)iVar14 + 2] = 0" (subscript_expression "plVar12[(long)iVar14 + 2]" identifier [ (binary_expression "(long)iVar14 + 2" (cast_expression "(long)iVar14" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ]) = number_literal) ;) (expression_statement "*(undefined4 *)((long)plVar12 + (long)(iVar14 + 1) * 4 + 0x28) = 0;" (assignment_expression "*(undefined4 *)((long)plVar12 + (long)(iVar14 + 1) * 4 + 0x28) = 0" (pointer_expression "*(undefined4 *)((long)plVar12 + (long)(iVar14 + 1) * 4 + 0x28)" * (cast_expression "(undefined4 *)((long)plVar12 + (long)(iVar14 + 1) * 4 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar12 + (long)(iVar14 + 1) * 4 + 0x28)" ( (binary_expression "(long)plVar12 + (long)(iVar14 + 1) * 4 + 0x28" (binary_expression "(long)plVar12 + (long)(iVar14 + 1) * 4" (cast_expression "(long)plVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "(long)(iVar14 + 1) * 4" (cast_expression "(long)(iVar14 + 1)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(iVar14 + 1)" ( (binary_expression "iVar14 + 1" identifier + number_literal) ))) * number_literal)) + number_literal) )))) = number_literal) ;) (if_statement "if (plVar12[7] == 0) {\n        *param_1 = plVar13;\n        *plVar13 = 0;\n        FUN_0010c4d3(plVar12);\n      }" if (parenthesized_expression "(plVar12[7] == 0)" ( (binary_expression "plVar12[7] == 0" (subscript_expression "plVar12[7]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n        *param_1 = plVar13;\n        *plVar13 = 0;\n        FUN_0010c4d3(plVar12);\n      }" { (expression_statement "*param_1 = plVar13;" (assignment_expression "*param_1 = plVar13" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "*plVar13 = 0;" (assignment_expression "*plVar13 = 0" (pointer_expression "*plVar13" * identifier) = number_literal) ;) (expression_statement "FUN_0010c4d3(plVar12);" (call_expression "FUN_0010c4d3(plVar12)" identifier (argument_list "(plVar12)" ( identifier ))) ;) })) (expression_statement "param_2 = *(int *)((long)plVar13 + 0x2c) + (int)plVar13[5] + 1;" (assignment_expression "param_2 = *(int *)((long)plVar13 + 0x2c) + (int)plVar13[5] + 1" identifier = (binary_expression "*(int *)((long)plVar13 + 0x2c) + (int)plVar13[5] + 1" (binary_expression "*(int *)((long)plVar13 + 0x2c) + (int)plVar13[5]" (pointer_expression "*(int *)((long)plVar13 + 0x2c)" * (cast_expression "(int *)((long)plVar13 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar13 + 0x2c)" ( (binary_expression "(long)plVar13 + 0x2c" (cast_expression "(long)plVar13" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) + (cast_expression "(int)plVar13[5]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "plVar13[5]" identifier [ number_literal ]))) + number_literal)) ;) }) (else_clause "else {\n      do {\n        plVar13 = plVar5;\n        plVar5 = (long *)plVar13[1];\n      } while (plVar5 != (long *)0x0);\n      plVar12[(long)iVar9 + 7] = plVar13[7];\n      param_2 = 0;\n      plVar13 = plVar7;\n    }" else (compound_statement "{\n      do {\n        plVar13 = plVar5;\n        plVar5 = (long *)plVar13[1];\n      } while (plVar5 != (long *)0x0);\n      plVar12[(long)iVar9 + 7] = plVar13[7];\n      param_2 = 0;\n      plVar13 = plVar7;\n    }" { (do_statement "do {\n        plVar13 = plVar5;\n        plVar5 = (long *)plVar13[1];\n      } while (plVar5 != (long *)0x0);" do (compound_statement "{\n        plVar13 = plVar5;\n        plVar5 = (long *)plVar13[1];\n      }" { (expression_statement "plVar13 = plVar5;" (assignment_expression "plVar13 = plVar5" identifier = identifier) ;) (expression_statement "plVar5 = (long *)plVar13[1];" (assignment_expression "plVar5 = (long *)plVar13[1]" identifier = (cast_expression "(long *)plVar13[1]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar13[1]" identifier [ number_literal ]))) ;) }) while (parenthesized_expression "(plVar5 != (long *)0x0)" ( (binary_expression "plVar5 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "plVar12[(long)iVar9 + 7] = plVar13[7];" (assignment_expression "plVar12[(long)iVar9 + 7] = plVar13[7]" (subscript_expression "plVar12[(long)iVar9 + 7]" identifier [ (binary_expression "(long)iVar9 + 7" (cast_expression "(long)iVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ]) = (subscript_expression "plVar13[7]" identifier [ number_literal ])) ;) (expression_statement "param_2 = 0;" (assignment_expression "param_2 = 0" identifier = number_literal) ;) (expression_statement "plVar13 = plVar7;" (assignment_expression "plVar13 = plVar7" identifier = identifier) ;) }))) }) (else_clause "else {\n    while (plVar5 = plVar7, (long *)plVar5[1] != (long *)0x0) {\n      plVar7 = (long *)plVar5[4];\n      if ((((long *)plVar5[4] == (long *)0x0) &&\n          (plVar7 = (long *)plVar5[3], (long *)plVar5[3] == (long *)0x0)) &&\n         (plVar7 = (long *)plVar5[2], (long *)plVar5[2] == (long *)0x0)) {\n        plVar7 = (long *)plVar5[1];\n      }\n    }\n    lVar6 = plVar5[9];\n    if ((lVar6 == 0) && (lVar6 = plVar5[8], lVar6 == 0)) {\n      lVar6 = plVar5[7];\n    }\n    plVar12[(long)iVar9 + 7] = lVar6;\n    param_2 = *(int *)((long)plVar12 + (long)iVar9 * 4 + 0x28) + -1;\n  }" else (compound_statement "{\n    while (plVar5 = plVar7, (long *)plVar5[1] != (long *)0x0) {\n      plVar7 = (long *)plVar5[4];\n      if ((((long *)plVar5[4] == (long *)0x0) &&\n          (plVar7 = (long *)plVar5[3], (long *)plVar5[3] == (long *)0x0)) &&\n         (plVar7 = (long *)plVar5[2], (long *)plVar5[2] == (long *)0x0)) {\n        plVar7 = (long *)plVar5[1];\n      }\n    }\n    lVar6 = plVar5[9];\n    if ((lVar6 == 0) && (lVar6 = plVar5[8], lVar6 == 0)) {\n      lVar6 = plVar5[7];\n    }\n    plVar12[(long)iVar9 + 7] = lVar6;\n    param_2 = *(int *)((long)plVar12 + (long)iVar9 * 4 + 0x28) + -1;\n  }" { (while_statement "while (plVar5 = plVar7, (long *)plVar5[1] != (long *)0x0) {\n      plVar7 = (long *)plVar5[4];\n      if ((((long *)plVar5[4] == (long *)0x0) &&\n          (plVar7 = (long *)plVar5[3], (long *)plVar5[3] == (long *)0x0)) &&\n         (plVar7 = (long *)plVar5[2], (long *)plVar5[2] == (long *)0x0)) {\n        plVar7 = (long *)plVar5[1];\n      }\n    }" while (parenthesized_expression "(plVar5 = plVar7, (long *)plVar5[1] != (long *)0x0)" ( (comma_expression "plVar5 = plVar7, (long *)plVar5[1] != (long *)0x0" (assignment_expression "plVar5 = plVar7" identifier = identifier) , (binary_expression "(long *)plVar5[1] != (long *)0x0" (cast_expression "(long *)plVar5[1]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar5[1]" identifier [ number_literal ])) != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal))) )) (compound_statement "{\n      plVar7 = (long *)plVar5[4];\n      if ((((long *)plVar5[4] == (long *)0x0) &&\n          (plVar7 = (long *)plVar5[3], (long *)plVar5[3] == (long *)0x0)) &&\n         (plVar7 = (long *)plVar5[2], (long *)plVar5[2] == (long *)0x0)) {\n        plVar7 = (long *)plVar5[1];\n      }\n    }" { (expression_statement "plVar7 = (long *)plVar5[4];" (assignment_expression "plVar7 = (long *)plVar5[4]" identifier = (cast_expression "(long *)plVar5[4]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar5[4]" identifier [ number_literal ]))) ;) (if_statement "if ((((long *)plVar5[4] == (long *)0x0) &&\n          (plVar7 = (long *)plVar5[3], (long *)plVar5[3] == (long *)0x0)) &&\n         (plVar7 = (long *)plVar5[2], (long *)plVar5[2] == (long *)0x0)) {\n        plVar7 = (long *)plVar5[1];\n      }" if (parenthesized_expression "((((long *)plVar5[4] == (long *)0x0) &&\n          (plVar7 = (long *)plVar5[3], (long *)plVar5[3] == (long *)0x0)) &&\n         (plVar7 = (long *)plVar5[2], (long *)plVar5[2] == (long *)0x0))" ( (binary_expression "(((long *)plVar5[4] == (long *)0x0) &&\n          (plVar7 = (long *)plVar5[3], (long *)plVar5[3] == (long *)0x0)) &&\n         (plVar7 = (long *)plVar5[2], (long *)plVar5[2] == (long *)0x0)" (parenthesized_expression "(((long *)plVar5[4] == (long *)0x0) &&\n          (plVar7 = (long *)plVar5[3], (long *)plVar5[3] == (long *)0x0))" ( (binary_expression "((long *)plVar5[4] == (long *)0x0) &&\n          (plVar7 = (long *)plVar5[3], (long *)plVar5[3] == (long *)0x0)" (parenthesized_expression "((long *)plVar5[4] == (long *)0x0)" ( (binary_expression "(long *)plVar5[4] == (long *)0x0" (cast_expression "(long *)plVar5[4]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar5[4]" identifier [ number_literal ])) == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(plVar7 = (long *)plVar5[3], (long *)plVar5[3] == (long *)0x0)" ( (comma_expression "plVar7 = (long *)plVar5[3], (long *)plVar5[3] == (long *)0x0" (assignment_expression "plVar7 = (long *)plVar5[3]" identifier = (cast_expression "(long *)plVar5[3]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar5[3]" identifier [ number_literal ]))) , (binary_expression "(long *)plVar5[3] == (long *)0x0" (cast_expression "(long *)plVar5[3]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar5[3]" identifier [ number_literal ])) == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) && (parenthesized_expression "(plVar7 = (long *)plVar5[2], (long *)plVar5[2] == (long *)0x0)" ( (comma_expression "plVar7 = (long *)plVar5[2], (long *)plVar5[2] == (long *)0x0" (assignment_expression "plVar7 = (long *)plVar5[2]" identifier = (cast_expression "(long *)plVar5[2]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar5[2]" identifier [ number_literal ]))) , (binary_expression "(long *)plVar5[2] == (long *)0x0" (cast_expression "(long *)plVar5[2]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar5[2]" identifier [ number_literal ])) == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n        plVar7 = (long *)plVar5[1];\n      }" { (expression_statement "plVar7 = (long *)plVar5[1];" (assignment_expression "plVar7 = (long *)plVar5[1]" identifier = (cast_expression "(long *)plVar5[1]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar5[1]" identifier [ number_literal ]))) ;) })) })) (expression_statement "lVar6 = plVar5[9];" (assignment_expression "lVar6 = plVar5[9]" identifier = (subscript_expression "plVar5[9]" identifier [ number_literal ])) ;) (if_statement "if ((lVar6 == 0) && (lVar6 = plVar5[8], lVar6 == 0)) {\n      lVar6 = plVar5[7];\n    }" if (parenthesized_expression "((lVar6 == 0) && (lVar6 = plVar5[8], lVar6 == 0))" ( (binary_expression "(lVar6 == 0) && (lVar6 = plVar5[8], lVar6 == 0)" (parenthesized_expression "(lVar6 == 0)" ( (binary_expression "lVar6 == 0" identifier == number_literal) )) && (parenthesized_expression "(lVar6 = plVar5[8], lVar6 == 0)" ( (comma_expression "lVar6 = plVar5[8], lVar6 == 0" (assignment_expression "lVar6 = plVar5[8]" identifier = (subscript_expression "plVar5[8]" identifier [ number_literal ])) , (binary_expression "lVar6 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n      lVar6 = plVar5[7];\n    }" { (expression_statement "lVar6 = plVar5[7];" (assignment_expression "lVar6 = plVar5[7]" identifier = (subscript_expression "plVar5[7]" identifier [ number_literal ])) ;) })) (expression_statement "plVar12[(long)iVar9 + 7] = lVar6;" (assignment_expression "plVar12[(long)iVar9 + 7] = lVar6" (subscript_expression "plVar12[(long)iVar9 + 7]" identifier [ (binary_expression "(long)iVar9 + 7" (cast_expression "(long)iVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ]) = identifier) ;) (expression_statement "param_2 = *(int *)((long)plVar12 + (long)iVar9 * 4 + 0x28) + -1;" (assignment_expression "param_2 = *(int *)((long)plVar12 + (long)iVar9 * 4 + 0x28) + -1" identifier = (binary_expression "*(int *)((long)plVar12 + (long)iVar9 * 4 + 0x28) + -1" (pointer_expression "*(int *)((long)plVar12 + (long)iVar9 * 4 + 0x28)" * (cast_expression "(int *)((long)plVar12 + (long)iVar9 * 4 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar12 + (long)iVar9 * 4 + 0x28)" ( (binary_expression "(long)plVar12 + (long)iVar9 * 4 + 0x28" (binary_expression "(long)plVar12 + (long)iVar9 * 4" (cast_expression "(long)plVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "(long)iVar9 * 4" (cast_expression "(long)iVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal)) + number_literal) )))) + number_literal)) ;) }))) (goto_statement "goto LAB_0012f7e4;" goto statement_identifier ;) (labeled_statement "LAB_0012f7d1:\n  plVar13 = (long *)plVar12[1];" statement_identifier : (expression_statement "plVar13 = (long *)plVar12[1];" (assignment_expression "plVar13 = (long *)plVar12[1]" identifier = (cast_expression "(long *)plVar12[1]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar12[1]" identifier [ number_literal ]))) ;)) (if_statement "if (plVar13[8] == 0) {\n    lVar6 = plVar12[2];\n    local_50 = 0;\n    local_54 = 0;\n    plVar7 = plVar12;\n    if (lVar6 != 0) {\nLAB_0012fe3f:\n      if (*(long *)(lVar6 + 0x40) != 0) {\n        plVar13[8] = plVar7[7];\n        puVar2 = *(undefined8 **)(lVar6 + 8);\n        plVar13[3] = (long)puVar2;\n        *(undefined4 *)(plVar13 + 6) = *(undefined4 *)(lVar6 + 0x28);\n        if (puVar2 != (undefined8 *)0x0) {\n          *puVar2 = plVar13;\n        }\n        plVar7[7] = *(long *)(lVar6 + 0x38);\n        *(undefined8 *)(lVar6 + 8) = *(undefined8 *)(lVar6 + 0x10);\n        *(undefined4 *)(lVar6 + 0x28) = *(undefined4 *)(lVar6 + 0x2c);\n        lVar8 = *(long *)(lVar6 + 0x40);\n        if (lVar8 != 0) {\n          *(undefined8 *)(lVar6 + 0x10) = *(undefined8 *)(lVar6 + 0x18);\n          *(undefined4 *)(lVar6 + 0x2c) = *(undefined4 *)(lVar6 + 0x30);\n          *(long *)(lVar6 + 0x38) = lVar8;\n          if (*(long *)(lVar6 + 0x48) == 0) {\n            lVar8 = 1;\n          }\n          else {\n            *(undefined8 *)(lVar6 + 0x18) = *(undefined8 *)(lVar6 + 0x20);\n            *(undefined4 *)(lVar6 + 0x30) = *(undefined4 *)(lVar6 + 0x34);\n            *(long *)(lVar6 + 0x40) = *(long *)(lVar6 + 0x48);\n            lVar8 = 2;\n          }\n        }\n        lVar11 = lVar6 + (long)(int)lVar8 * 8;\n        *(undefined8 *)(lVar11 + 0x10) = 0;\n        *(undefined4 *)(lVar6 + 0x28 + (long)((int)lVar8 + 1) * 4) = 0;\n        *(undefined8 *)(lVar11 + 0x38) = 0;\n        uVar3 = FUN_0012ef67(plVar13);\n        *(undefined4 *)((long)plVar12 + local_50 * 4 + 0x28) = uVar3;\n        uVar3 = FUN_0012ef67(lVar6);\n        *(undefined4 *)((long)plVar12 + local_50 * 4 + 0x2c) = uVar3;\n        goto LAB_0012f7e4;\n      }\n      if (local_54 != 0) {\nLAB_0012f905:\n        local_54 = local_54 - 1;\n        param_2 = param_2 + 1 + *(int *)((long)plVar12 + (long)(int)local_54 * 4 + 0x28);\n      }\n    }\n    lVar6 = plVar12[(long)(int)local_54 + 1];\n    plVar13 = (long *)plVar12[(long)(int)local_54 + 2];\n    plVar13[4] = plVar13[2];\n    *(undefined4 *)((long)plVar13 + 0x34) = *(undefined4 *)((long)plVar13 + 0x2c);\n    plVar13[9] = plVar13[7];\n    plVar13[3] = plVar13[1];\n    *(int *)(plVar13 + 6) = (int)plVar13[5];\n    plVar13[8] = plVar12[(long)(int)local_54 + 7];\n    puVar2 = *(undefined8 **)(lVar6 + 0x10);\n    plVar13[2] = (long)puVar2;\n    *(undefined4 *)((long)plVar13 + 0x2c) = *(undefined4 *)(lVar6 + 0x2c);\n    if (puVar2 != (undefined8 *)0x0) {\n      *puVar2 = plVar13;\n    }\n    plVar13[7] = *(long *)(lVar6 + 0x38);\n    puVar2 = *(undefined8 **)(lVar6 + 8);\n    plVar13[1] = (long)puVar2;\n    *(undefined4 *)(plVar13 + 5) = *(undefined4 *)(lVar6 + 0x28);\n    if (puVar2 != (undefined8 *)0x0) {\n      *puVar2 = plVar13;\n    }\n    uVar3 = FUN_0012ef67(plVar13);\n    *(undefined4 *)((long)plVar12 + (long)(int)(local_54 + 1) * 4 + 0x28) = uVar3;\n    FUN_0010c4d3(lVar6);\n    if ((int)local_54 < 3) {\n      lVar6 = plVar12[(long)(int)local_54 + 2];\n      if (lVar6 != 0) {\n        lVar8 = (long)(int)(local_54 + 1);\n        do {\n          local_54 = (uint)lVar8;\n          plVar12[lVar8] = lVar6;\n          *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x24) =\n               *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28);\n          lVar6 = 0;\n          if ((int)(local_54 - 1) < 2) {\n            lVar6 = plVar12[lVar8 + 7];\n          }\n          plVar12[lVar8 + 6] = lVar6;\n          if (2 < (int)local_54) goto LAB_0012fd6d;\n          lVar6 = plVar12[lVar8 + 2];\n          lVar8 = lVar8 + 1;\n        } while (lVar6 != 0);\n      }\n      lVar6 = (long)(int)local_54;\n      plVar12[lVar6 + 1] = 0;\n      *(undefined4 *)((long)plVar12 + lVar6 * 4 + 0x28) = 0;\n      plVar12[lVar6 + 7] = 0;\n    }\n    else {\nLAB_0012fd6d:\n      plVar12[(long)(int)local_54 + 1] = 0;\n      *(undefined4 *)((long)plVar12 + (long)(int)local_54 * 4 + 0x28) = 0;\n    }\n    if (plVar12[7] == 0) {\n      *param_1 = plVar13;\n      *plVar13 = 0;\n      FUN_0010c4d3(plVar12);\n    }\n  }" if (parenthesized_expression "(plVar13[8] == 0)" ( (binary_expression "plVar13[8] == 0" (subscript_expression "plVar13[8]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n    lVar6 = plVar12[2];\n    local_50 = 0;\n    local_54 = 0;\n    plVar7 = plVar12;\n    if (lVar6 != 0) {\nLAB_0012fe3f:\n      if (*(long *)(lVar6 + 0x40) != 0) {\n        plVar13[8] = plVar7[7];\n        puVar2 = *(undefined8 **)(lVar6 + 8);\n        plVar13[3] = (long)puVar2;\n        *(undefined4 *)(plVar13 + 6) = *(undefined4 *)(lVar6 + 0x28);\n        if (puVar2 != (undefined8 *)0x0) {\n          *puVar2 = plVar13;\n        }\n        plVar7[7] = *(long *)(lVar6 + 0x38);\n        *(undefined8 *)(lVar6 + 8) = *(undefined8 *)(lVar6 + 0x10);\n        *(undefined4 *)(lVar6 + 0x28) = *(undefined4 *)(lVar6 + 0x2c);\n        lVar8 = *(long *)(lVar6 + 0x40);\n        if (lVar8 != 0) {\n          *(undefined8 *)(lVar6 + 0x10) = *(undefined8 *)(lVar6 + 0x18);\n          *(undefined4 *)(lVar6 + 0x2c) = *(undefined4 *)(lVar6 + 0x30);\n          *(long *)(lVar6 + 0x38) = lVar8;\n          if (*(long *)(lVar6 + 0x48) == 0) {\n            lVar8 = 1;\n          }\n          else {\n            *(undefined8 *)(lVar6 + 0x18) = *(undefined8 *)(lVar6 + 0x20);\n            *(undefined4 *)(lVar6 + 0x30) = *(undefined4 *)(lVar6 + 0x34);\n            *(long *)(lVar6 + 0x40) = *(long *)(lVar6 + 0x48);\n            lVar8 = 2;\n          }\n        }\n        lVar11 = lVar6 + (long)(int)lVar8 * 8;\n        *(undefined8 *)(lVar11 + 0x10) = 0;\n        *(undefined4 *)(lVar6 + 0x28 + (long)((int)lVar8 + 1) * 4) = 0;\n        *(undefined8 *)(lVar11 + 0x38) = 0;\n        uVar3 = FUN_0012ef67(plVar13);\n        *(undefined4 *)((long)plVar12 + local_50 * 4 + 0x28) = uVar3;\n        uVar3 = FUN_0012ef67(lVar6);\n        *(undefined4 *)((long)plVar12 + local_50 * 4 + 0x2c) = uVar3;\n        goto LAB_0012f7e4;\n      }\n      if (local_54 != 0) {\nLAB_0012f905:\n        local_54 = local_54 - 1;\n        param_2 = param_2 + 1 + *(int *)((long)plVar12 + (long)(int)local_54 * 4 + 0x28);\n      }\n    }\n    lVar6 = plVar12[(long)(int)local_54 + 1];\n    plVar13 = (long *)plVar12[(long)(int)local_54 + 2];\n    plVar13[4] = plVar13[2];\n    *(undefined4 *)((long)plVar13 + 0x34) = *(undefined4 *)((long)plVar13 + 0x2c);\n    plVar13[9] = plVar13[7];\n    plVar13[3] = plVar13[1];\n    *(int *)(plVar13 + 6) = (int)plVar13[5];\n    plVar13[8] = plVar12[(long)(int)local_54 + 7];\n    puVar2 = *(undefined8 **)(lVar6 + 0x10);\n    plVar13[2] = (long)puVar2;\n    *(undefined4 *)((long)plVar13 + 0x2c) = *(undefined4 *)(lVar6 + 0x2c);\n    if (puVar2 != (undefined8 *)0x0) {\n      *puVar2 = plVar13;\n    }\n    plVar13[7] = *(long *)(lVar6 + 0x38);\n    puVar2 = *(undefined8 **)(lVar6 + 8);\n    plVar13[1] = (long)puVar2;\n    *(undefined4 *)(plVar13 + 5) = *(undefined4 *)(lVar6 + 0x28);\n    if (puVar2 != (undefined8 *)0x0) {\n      *puVar2 = plVar13;\n    }\n    uVar3 = FUN_0012ef67(plVar13);\n    *(undefined4 *)((long)plVar12 + (long)(int)(local_54 + 1) * 4 + 0x28) = uVar3;\n    FUN_0010c4d3(lVar6);\n    if ((int)local_54 < 3) {\n      lVar6 = plVar12[(long)(int)local_54 + 2];\n      if (lVar6 != 0) {\n        lVar8 = (long)(int)(local_54 + 1);\n        do {\n          local_54 = (uint)lVar8;\n          plVar12[lVar8] = lVar6;\n          *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x24) =\n               *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28);\n          lVar6 = 0;\n          if ((int)(local_54 - 1) < 2) {\n            lVar6 = plVar12[lVar8 + 7];\n          }\n          plVar12[lVar8 + 6] = lVar6;\n          if (2 < (int)local_54) goto LAB_0012fd6d;\n          lVar6 = plVar12[lVar8 + 2];\n          lVar8 = lVar8 + 1;\n        } while (lVar6 != 0);\n      }\n      lVar6 = (long)(int)local_54;\n      plVar12[lVar6 + 1] = 0;\n      *(undefined4 *)((long)plVar12 + lVar6 * 4 + 0x28) = 0;\n      plVar12[lVar6 + 7] = 0;\n    }\n    else {\nLAB_0012fd6d:\n      plVar12[(long)(int)local_54 + 1] = 0;\n      *(undefined4 *)((long)plVar12 + (long)(int)local_54 * 4 + 0x28) = 0;\n    }\n    if (plVar12[7] == 0) {\n      *param_1 = plVar13;\n      *plVar13 = 0;\n      FUN_0010c4d3(plVar12);\n    }\n  }" { (expression_statement "lVar6 = plVar12[2];" (assignment_expression "lVar6 = plVar12[2]" identifier = (subscript_expression "plVar12[2]" identifier [ number_literal ])) ;) (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" identifier = number_literal) ;) (expression_statement "local_54 = 0;" (assignment_expression "local_54 = 0" identifier = number_literal) ;) (expression_statement "plVar7 = plVar12;" (assignment_expression "plVar7 = plVar12" identifier = identifier) ;) (if_statement "if (lVar6 != 0) {\nLAB_0012fe3f:\n      if (*(long *)(lVar6 + 0x40) != 0) {\n        plVar13[8] = plVar7[7];\n        puVar2 = *(undefined8 **)(lVar6 + 8);\n        plVar13[3] = (long)puVar2;\n        *(undefined4 *)(plVar13 + 6) = *(undefined4 *)(lVar6 + 0x28);\n        if (puVar2 != (undefined8 *)0x0) {\n          *puVar2 = plVar13;\n        }\n        plVar7[7] = *(long *)(lVar6 + 0x38);\n        *(undefined8 *)(lVar6 + 8) = *(undefined8 *)(lVar6 + 0x10);\n        *(undefined4 *)(lVar6 + 0x28) = *(undefined4 *)(lVar6 + 0x2c);\n        lVar8 = *(long *)(lVar6 + 0x40);\n        if (lVar8 != 0) {\n          *(undefined8 *)(lVar6 + 0x10) = *(undefined8 *)(lVar6 + 0x18);\n          *(undefined4 *)(lVar6 + 0x2c) = *(undefined4 *)(lVar6 + 0x30);\n          *(long *)(lVar6 + 0x38) = lVar8;\n          if (*(long *)(lVar6 + 0x48) == 0) {\n            lVar8 = 1;\n          }\n          else {\n            *(undefined8 *)(lVar6 + 0x18) = *(undefined8 *)(lVar6 + 0x20);\n            *(undefined4 *)(lVar6 + 0x30) = *(undefined4 *)(lVar6 + 0x34);\n            *(long *)(lVar6 + 0x40) = *(long *)(lVar6 + 0x48);\n            lVar8 = 2;\n          }\n        }\n        lVar11 = lVar6 + (long)(int)lVar8 * 8;\n        *(undefined8 *)(lVar11 + 0x10) = 0;\n        *(undefined4 *)(lVar6 + 0x28 + (long)((int)lVar8 + 1) * 4) = 0;\n        *(undefined8 *)(lVar11 + 0x38) = 0;\n        uVar3 = FUN_0012ef67(plVar13);\n        *(undefined4 *)((long)plVar12 + local_50 * 4 + 0x28) = uVar3;\n        uVar3 = FUN_0012ef67(lVar6);\n        *(undefined4 *)((long)plVar12 + local_50 * 4 + 0x2c) = uVar3;\n        goto LAB_0012f7e4;\n      }\n      if (local_54 != 0) {\nLAB_0012f905:\n        local_54 = local_54 - 1;\n        param_2 = param_2 + 1 + *(int *)((long)plVar12 + (long)(int)local_54 * 4 + 0x28);\n      }\n    }" if (parenthesized_expression "(lVar6 != 0)" ( (binary_expression "lVar6 != 0" identifier != number_literal) )) (compound_statement "{\nLAB_0012fe3f:\n      if (*(long *)(lVar6 + 0x40) != 0) {\n        plVar13[8] = plVar7[7];\n        puVar2 = *(undefined8 **)(lVar6 + 8);\n        plVar13[3] = (long)puVar2;\n        *(undefined4 *)(plVar13 + 6) = *(undefined4 *)(lVar6 + 0x28);\n        if (puVar2 != (undefined8 *)0x0) {\n          *puVar2 = plVar13;\n        }\n        plVar7[7] = *(long *)(lVar6 + 0x38);\n        *(undefined8 *)(lVar6 + 8) = *(undefined8 *)(lVar6 + 0x10);\n        *(undefined4 *)(lVar6 + 0x28) = *(undefined4 *)(lVar6 + 0x2c);\n        lVar8 = *(long *)(lVar6 + 0x40);\n        if (lVar8 != 0) {\n          *(undefined8 *)(lVar6 + 0x10) = *(undefined8 *)(lVar6 + 0x18);\n          *(undefined4 *)(lVar6 + 0x2c) = *(undefined4 *)(lVar6 + 0x30);\n          *(long *)(lVar6 + 0x38) = lVar8;\n          if (*(long *)(lVar6 + 0x48) == 0) {\n            lVar8 = 1;\n          }\n          else {\n            *(undefined8 *)(lVar6 + 0x18) = *(undefined8 *)(lVar6 + 0x20);\n            *(undefined4 *)(lVar6 + 0x30) = *(undefined4 *)(lVar6 + 0x34);\n            *(long *)(lVar6 + 0x40) = *(long *)(lVar6 + 0x48);\n            lVar8 = 2;\n          }\n        }\n        lVar11 = lVar6 + (long)(int)lVar8 * 8;\n        *(undefined8 *)(lVar11 + 0x10) = 0;\n        *(undefined4 *)(lVar6 + 0x28 + (long)((int)lVar8 + 1) * 4) = 0;\n        *(undefined8 *)(lVar11 + 0x38) = 0;\n        uVar3 = FUN_0012ef67(plVar13);\n        *(undefined4 *)((long)plVar12 + local_50 * 4 + 0x28) = uVar3;\n        uVar3 = FUN_0012ef67(lVar6);\n        *(undefined4 *)((long)plVar12 + local_50 * 4 + 0x2c) = uVar3;\n        goto LAB_0012f7e4;\n      }\n      if (local_54 != 0) {\nLAB_0012f905:\n        local_54 = local_54 - 1;\n        param_2 = param_2 + 1 + *(int *)((long)plVar12 + (long)(int)local_54 * 4 + 0x28);\n      }\n    }" { (labeled_statement "LAB_0012fe3f:\n      if (*(long *)(lVar6 + 0x40) != 0) {\n        plVar13[8] = plVar7[7];\n        puVar2 = *(undefined8 **)(lVar6 + 8);\n        plVar13[3] = (long)puVar2;\n        *(undefined4 *)(plVar13 + 6) = *(undefined4 *)(lVar6 + 0x28);\n        if (puVar2 != (undefined8 *)0x0) {\n          *puVar2 = plVar13;\n        }\n        plVar7[7] = *(long *)(lVar6 + 0x38);\n        *(undefined8 *)(lVar6 + 8) = *(undefined8 *)(lVar6 + 0x10);\n        *(undefined4 *)(lVar6 + 0x28) = *(undefined4 *)(lVar6 + 0x2c);\n        lVar8 = *(long *)(lVar6 + 0x40);\n        if (lVar8 != 0) {\n          *(undefined8 *)(lVar6 + 0x10) = *(undefined8 *)(lVar6 + 0x18);\n          *(undefined4 *)(lVar6 + 0x2c) = *(undefined4 *)(lVar6 + 0x30);\n          *(long *)(lVar6 + 0x38) = lVar8;\n          if (*(long *)(lVar6 + 0x48) == 0) {\n            lVar8 = 1;\n          }\n          else {\n            *(undefined8 *)(lVar6 + 0x18) = *(undefined8 *)(lVar6 + 0x20);\n            *(undefined4 *)(lVar6 + 0x30) = *(undefined4 *)(lVar6 + 0x34);\n            *(long *)(lVar6 + 0x40) = *(long *)(lVar6 + 0x48);\n            lVar8 = 2;\n          }\n        }\n        lVar11 = lVar6 + (long)(int)lVar8 * 8;\n        *(undefined8 *)(lVar11 + 0x10) = 0;\n        *(undefined4 *)(lVar6 + 0x28 + (long)((int)lVar8 + 1) * 4) = 0;\n        *(undefined8 *)(lVar11 + 0x38) = 0;\n        uVar3 = FUN_0012ef67(plVar13);\n        *(undefined4 *)((long)plVar12 + local_50 * 4 + 0x28) = uVar3;\n        uVar3 = FUN_0012ef67(lVar6);\n        *(undefined4 *)((long)plVar12 + local_50 * 4 + 0x2c) = uVar3;\n        goto LAB_0012f7e4;\n      }" statement_identifier : (if_statement "if (*(long *)(lVar6 + 0x40) != 0) {\n        plVar13[8] = plVar7[7];\n        puVar2 = *(undefined8 **)(lVar6 + 8);\n        plVar13[3] = (long)puVar2;\n        *(undefined4 *)(plVar13 + 6) = *(undefined4 *)(lVar6 + 0x28);\n        if (puVar2 != (undefined8 *)0x0) {\n          *puVar2 = plVar13;\n        }\n        plVar7[7] = *(long *)(lVar6 + 0x38);\n        *(undefined8 *)(lVar6 + 8) = *(undefined8 *)(lVar6 + 0x10);\n        *(undefined4 *)(lVar6 + 0x28) = *(undefined4 *)(lVar6 + 0x2c);\n        lVar8 = *(long *)(lVar6 + 0x40);\n        if (lVar8 != 0) {\n          *(undefined8 *)(lVar6 + 0x10) = *(undefined8 *)(lVar6 + 0x18);\n          *(undefined4 *)(lVar6 + 0x2c) = *(undefined4 *)(lVar6 + 0x30);\n          *(long *)(lVar6 + 0x38) = lVar8;\n          if (*(long *)(lVar6 + 0x48) == 0) {\n            lVar8 = 1;\n          }\n          else {\n            *(undefined8 *)(lVar6 + 0x18) = *(undefined8 *)(lVar6 + 0x20);\n            *(undefined4 *)(lVar6 + 0x30) = *(undefined4 *)(lVar6 + 0x34);\n            *(long *)(lVar6 + 0x40) = *(long *)(lVar6 + 0x48);\n            lVar8 = 2;\n          }\n        }\n        lVar11 = lVar6 + (long)(int)lVar8 * 8;\n        *(undefined8 *)(lVar11 + 0x10) = 0;\n        *(undefined4 *)(lVar6 + 0x28 + (long)((int)lVar8 + 1) * 4) = 0;\n        *(undefined8 *)(lVar11 + 0x38) = 0;\n        uVar3 = FUN_0012ef67(plVar13);\n        *(undefined4 *)((long)plVar12 + local_50 * 4 + 0x28) = uVar3;\n        uVar3 = FUN_0012ef67(lVar6);\n        *(undefined4 *)((long)plVar12 + local_50 * 4 + 0x2c) = uVar3;\n        goto LAB_0012f7e4;\n      }" if (parenthesized_expression "(*(long *)(lVar6 + 0x40) != 0)" ( (binary_expression "*(long *)(lVar6 + 0x40) != 0" (pointer_expression "*(long *)(lVar6 + 0x40)" * (cast_expression "(long *)(lVar6 + 0x40)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x40)" ( (binary_expression "lVar6 + 0x40" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n        plVar13[8] = plVar7[7];\n        puVar2 = *(undefined8 **)(lVar6 + 8);\n        plVar13[3] = (long)puVar2;\n        *(undefined4 *)(plVar13 + 6) = *(undefined4 *)(lVar6 + 0x28);\n        if (puVar2 != (undefined8 *)0x0) {\n          *puVar2 = plVar13;\n        }\n        plVar7[7] = *(long *)(lVar6 + 0x38);\n        *(undefined8 *)(lVar6 + 8) = *(undefined8 *)(lVar6 + 0x10);\n        *(undefined4 *)(lVar6 + 0x28) = *(undefined4 *)(lVar6 + 0x2c);\n        lVar8 = *(long *)(lVar6 + 0x40);\n        if (lVar8 != 0) {\n          *(undefined8 *)(lVar6 + 0x10) = *(undefined8 *)(lVar6 + 0x18);\n          *(undefined4 *)(lVar6 + 0x2c) = *(undefined4 *)(lVar6 + 0x30);\n          *(long *)(lVar6 + 0x38) = lVar8;\n          if (*(long *)(lVar6 + 0x48) == 0) {\n            lVar8 = 1;\n          }\n          else {\n            *(undefined8 *)(lVar6 + 0x18) = *(undefined8 *)(lVar6 + 0x20);\n            *(undefined4 *)(lVar6 + 0x30) = *(undefined4 *)(lVar6 + 0x34);\n            *(long *)(lVar6 + 0x40) = *(long *)(lVar6 + 0x48);\n            lVar8 = 2;\n          }\n        }\n        lVar11 = lVar6 + (long)(int)lVar8 * 8;\n        *(undefined8 *)(lVar11 + 0x10) = 0;\n        *(undefined4 *)(lVar6 + 0x28 + (long)((int)lVar8 + 1) * 4) = 0;\n        *(undefined8 *)(lVar11 + 0x38) = 0;\n        uVar3 = FUN_0012ef67(plVar13);\n        *(undefined4 *)((long)plVar12 + local_50 * 4 + 0x28) = uVar3;\n        uVar3 = FUN_0012ef67(lVar6);\n        *(undefined4 *)((long)plVar12 + local_50 * 4 + 0x2c) = uVar3;\n        goto LAB_0012f7e4;\n      }" { (expression_statement "plVar13[8] = plVar7[7];" (assignment_expression "plVar13[8] = plVar7[7]" (subscript_expression "plVar13[8]" identifier [ number_literal ]) = (subscript_expression "plVar7[7]" identifier [ number_literal ])) ;) (expression_statement "puVar2 = *(undefined8 **)(lVar6 + 8);" (assignment_expression "puVar2 = *(undefined8 **)(lVar6 + 8)" identifier = (pointer_expression "*(undefined8 **)(lVar6 + 8)" * (cast_expression "(undefined8 **)(lVar6 + 8)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar6 + 8)" ( (binary_expression "lVar6 + 8" identifier + number_literal) ))))) ;) (expression_statement "plVar13[3] = (long)puVar2;" (assignment_expression "plVar13[3] = (long)puVar2" (subscript_expression "plVar13[3]" identifier [ number_literal ]) = (cast_expression "(long)puVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "*(undefined4 *)(plVar13 + 6) = *(undefined4 *)(lVar6 + 0x28);" (assignment_expression "*(undefined4 *)(plVar13 + 6) = *(undefined4 *)(lVar6 + 0x28)" (pointer_expression "*(undefined4 *)(plVar13 + 6)" * (cast_expression "(undefined4 *)(plVar13 + 6)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar13 + 6)" ( (binary_expression "plVar13 + 6" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(lVar6 + 0x28)" * (cast_expression "(undefined4 *)(lVar6 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x28)" ( (binary_expression "lVar6 + 0x28" identifier + number_literal) ))))) ;) (if_statement "if (puVar2 != (undefined8 *)0x0) {\n          *puVar2 = plVar13;\n        }" if (parenthesized_expression "(puVar2 != (undefined8 *)0x0)" ( (binary_expression "puVar2 != (undefined8 *)0x0" identifier != (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          *puVar2 = plVar13;\n        }" { (expression_statement "*puVar2 = plVar13;" (assignment_expression "*puVar2 = plVar13" (pointer_expression "*puVar2" * identifier) = identifier) ;) })) (expression_statement "plVar7[7] = *(long *)(lVar6 + 0x38);" (assignment_expression "plVar7[7] = *(long *)(lVar6 + 0x38)" (subscript_expression "plVar7[7]" identifier [ number_literal ]) = (pointer_expression "*(long *)(lVar6 + 0x38)" * (cast_expression "(long *)(lVar6 + 0x38)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x38)" ( (binary_expression "lVar6 + 0x38" identifier + number_literal) ))))) ;) (expression_statement "*(undefined8 *)(lVar6 + 8) = *(undefined8 *)(lVar6 + 0x10);" (assignment_expression "*(undefined8 *)(lVar6 + 8) = *(undefined8 *)(lVar6 + 0x10)" (pointer_expression "*(undefined8 *)(lVar6 + 8)" * (cast_expression "(undefined8 *)(lVar6 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 8)" ( (binary_expression "lVar6 + 8" identifier + number_literal) )))) = (pointer_expression "*(undefined8 *)(lVar6 + 0x10)" * (cast_expression "(undefined8 *)(lVar6 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x10)" ( (binary_expression "lVar6 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(lVar6 + 0x28) = *(undefined4 *)(lVar6 + 0x2c);" (assignment_expression "*(undefined4 *)(lVar6 + 0x28) = *(undefined4 *)(lVar6 + 0x2c)" (pointer_expression "*(undefined4 *)(lVar6 + 0x28)" * (cast_expression "(undefined4 *)(lVar6 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x28)" ( (binary_expression "lVar6 + 0x28" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(lVar6 + 0x2c)" * (cast_expression "(undefined4 *)(lVar6 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x2c)" ( (binary_expression "lVar6 + 0x2c" identifier + number_literal) ))))) ;) (expression_statement "lVar8 = *(long *)(lVar6 + 0x40);" (assignment_expression "lVar8 = *(long *)(lVar6 + 0x40)" identifier = (pointer_expression "*(long *)(lVar6 + 0x40)" * (cast_expression "(long *)(lVar6 + 0x40)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x40)" ( (binary_expression "lVar6 + 0x40" identifier + number_literal) ))))) ;) (if_statement "if (lVar8 != 0) {\n          *(undefined8 *)(lVar6 + 0x10) = *(undefined8 *)(lVar6 + 0x18);\n          *(undefined4 *)(lVar6 + 0x2c) = *(undefined4 *)(lVar6 + 0x30);\n          *(long *)(lVar6 + 0x38) = lVar8;\n          if (*(long *)(lVar6 + 0x48) == 0) {\n            lVar8 = 1;\n          }\n          else {\n            *(undefined8 *)(lVar6 + 0x18) = *(undefined8 *)(lVar6 + 0x20);\n            *(undefined4 *)(lVar6 + 0x30) = *(undefined4 *)(lVar6 + 0x34);\n            *(long *)(lVar6 + 0x40) = *(long *)(lVar6 + 0x48);\n            lVar8 = 2;\n          }\n        }" if (parenthesized_expression "(lVar8 != 0)" ( (binary_expression "lVar8 != 0" identifier != number_literal) )) (compound_statement "{\n          *(undefined8 *)(lVar6 + 0x10) = *(undefined8 *)(lVar6 + 0x18);\n          *(undefined4 *)(lVar6 + 0x2c) = *(undefined4 *)(lVar6 + 0x30);\n          *(long *)(lVar6 + 0x38) = lVar8;\n          if (*(long *)(lVar6 + 0x48) == 0) {\n            lVar8 = 1;\n          }\n          else {\n            *(undefined8 *)(lVar6 + 0x18) = *(undefined8 *)(lVar6 + 0x20);\n            *(undefined4 *)(lVar6 + 0x30) = *(undefined4 *)(lVar6 + 0x34);\n            *(long *)(lVar6 + 0x40) = *(long *)(lVar6 + 0x48);\n            lVar8 = 2;\n          }\n        }" { (expression_statement "*(undefined8 *)(lVar6 + 0x10) = *(undefined8 *)(lVar6 + 0x18);" (assignment_expression "*(undefined8 *)(lVar6 + 0x10) = *(undefined8 *)(lVar6 + 0x18)" (pointer_expression "*(undefined8 *)(lVar6 + 0x10)" * (cast_expression "(undefined8 *)(lVar6 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x10)" ( (binary_expression "lVar6 + 0x10" identifier + number_literal) )))) = (pointer_expression "*(undefined8 *)(lVar6 + 0x18)" * (cast_expression "(undefined8 *)(lVar6 + 0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x18)" ( (binary_expression "lVar6 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(lVar6 + 0x2c) = *(undefined4 *)(lVar6 + 0x30);" (assignment_expression "*(undefined4 *)(lVar6 + 0x2c) = *(undefined4 *)(lVar6 + 0x30)" (pointer_expression "*(undefined4 *)(lVar6 + 0x2c)" * (cast_expression "(undefined4 *)(lVar6 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x2c)" ( (binary_expression "lVar6 + 0x2c" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(lVar6 + 0x30)" * (cast_expression "(undefined4 *)(lVar6 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x30)" ( (binary_expression "lVar6 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "*(long *)(lVar6 + 0x38) = lVar8;" (assignment_expression "*(long *)(lVar6 + 0x38) = lVar8" (pointer_expression "*(long *)(lVar6 + 0x38)" * (cast_expression "(long *)(lVar6 + 0x38)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x38)" ( (binary_expression "lVar6 + 0x38" identifier + number_literal) )))) = identifier) ;) (if_statement "if (*(long *)(lVar6 + 0x48) == 0) {\n            lVar8 = 1;\n          }\n          else {\n            *(undefined8 *)(lVar6 + 0x18) = *(undefined8 *)(lVar6 + 0x20);\n            *(undefined4 *)(lVar6 + 0x30) = *(undefined4 *)(lVar6 + 0x34);\n            *(long *)(lVar6 + 0x40) = *(long *)(lVar6 + 0x48);\n            lVar8 = 2;\n          }" if (parenthesized_expression "(*(long *)(lVar6 + 0x48) == 0)" ( (binary_expression "*(long *)(lVar6 + 0x48) == 0" (pointer_expression "*(long *)(lVar6 + 0x48)" * (cast_expression "(long *)(lVar6 + 0x48)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x48)" ( (binary_expression "lVar6 + 0x48" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n            lVar8 = 1;\n          }" { (expression_statement "lVar8 = 1;" (assignment_expression "lVar8 = 1" identifier = number_literal) ;) }) (else_clause "else {\n            *(undefined8 *)(lVar6 + 0x18) = *(undefined8 *)(lVar6 + 0x20);\n            *(undefined4 *)(lVar6 + 0x30) = *(undefined4 *)(lVar6 + 0x34);\n            *(long *)(lVar6 + 0x40) = *(long *)(lVar6 + 0x48);\n            lVar8 = 2;\n          }" else (compound_statement "{\n            *(undefined8 *)(lVar6 + 0x18) = *(undefined8 *)(lVar6 + 0x20);\n            *(undefined4 *)(lVar6 + 0x30) = *(undefined4 *)(lVar6 + 0x34);\n            *(long *)(lVar6 + 0x40) = *(long *)(lVar6 + 0x48);\n            lVar8 = 2;\n          }" { (expression_statement "*(undefined8 *)(lVar6 + 0x18) = *(undefined8 *)(lVar6 + 0x20);" (assignment_expression "*(undefined8 *)(lVar6 + 0x18) = *(undefined8 *)(lVar6 + 0x20)" (pointer_expression "*(undefined8 *)(lVar6 + 0x18)" * (cast_expression "(undefined8 *)(lVar6 + 0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x18)" ( (binary_expression "lVar6 + 0x18" identifier + number_literal) )))) = (pointer_expression "*(undefined8 *)(lVar6 + 0x20)" * (cast_expression "(undefined8 *)(lVar6 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x20)" ( (binary_expression "lVar6 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(lVar6 + 0x30) = *(undefined4 *)(lVar6 + 0x34);" (assignment_expression "*(undefined4 *)(lVar6 + 0x30) = *(undefined4 *)(lVar6 + 0x34)" (pointer_expression "*(undefined4 *)(lVar6 + 0x30)" * (cast_expression "(undefined4 *)(lVar6 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x30)" ( (binary_expression "lVar6 + 0x30" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(lVar6 + 0x34)" * (cast_expression "(undefined4 *)(lVar6 + 0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x34)" ( (binary_expression "lVar6 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "*(long *)(lVar6 + 0x40) = *(long *)(lVar6 + 0x48);" (assignment_expression "*(long *)(lVar6 + 0x40) = *(long *)(lVar6 + 0x48)" (pointer_expression "*(long *)(lVar6 + 0x40)" * (cast_expression "(long *)(lVar6 + 0x40)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x40)" ( (binary_expression "lVar6 + 0x40" identifier + number_literal) )))) = (pointer_expression "*(long *)(lVar6 + 0x48)" * (cast_expression "(long *)(lVar6 + 0x48)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x48)" ( (binary_expression "lVar6 + 0x48" identifier + number_literal) ))))) ;) (expression_statement "lVar8 = 2;" (assignment_expression "lVar8 = 2" identifier = number_literal) ;) }))) })) (expression_statement "lVar11 = lVar6 + (long)(int)lVar8 * 8;" (assignment_expression "lVar11 = lVar6 + (long)(int)lVar8 * 8" identifier = (binary_expression "lVar6 + (long)(int)lVar8 * 8" identifier + (binary_expression "(long)(int)lVar8 * 8" (cast_expression "(long)(int)lVar8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (cast_expression "(int)lVar8" ( (type_descriptor "int" primitive_type) ) identifier)) * number_literal))) ;) (expression_statement "*(undefined8 *)(lVar11 + 0x10) = 0;" (assignment_expression "*(undefined8 *)(lVar11 + 0x10) = 0" (pointer_expression "*(undefined8 *)(lVar11 + 0x10)" * (cast_expression "(undefined8 *)(lVar11 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar11 + 0x10)" ( (binary_expression "lVar11 + 0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(lVar6 + 0x28 + (long)((int)lVar8 + 1) * 4) = 0;" (assignment_expression "*(undefined4 *)(lVar6 + 0x28 + (long)((int)lVar8 + 1) * 4) = 0" (pointer_expression "*(undefined4 *)(lVar6 + 0x28 + (long)((int)lVar8 + 1) * 4)" * (cast_expression "(undefined4 *)(lVar6 + 0x28 + (long)((int)lVar8 + 1) * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x28 + (long)((int)lVar8 + 1) * 4)" ( (binary_expression "lVar6 + 0x28 + (long)((int)lVar8 + 1) * 4" (binary_expression "lVar6 + 0x28" identifier + number_literal) + (binary_expression "(long)((int)lVar8 + 1) * 4" (cast_expression "(long)((int)lVar8 + 1)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "((int)lVar8 + 1)" ( (binary_expression "(int)lVar8 + 1" (cast_expression "(int)lVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) * number_literal)) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(lVar11 + 0x38) = 0;" (assignment_expression "*(undefined8 *)(lVar11 + 0x38) = 0" (pointer_expression "*(undefined8 *)(lVar11 + 0x38)" * (cast_expression "(undefined8 *)(lVar11 + 0x38)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar11 + 0x38)" ( (binary_expression "lVar11 + 0x38" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar3 = FUN_0012ef67(plVar13);" (assignment_expression "uVar3 = FUN_0012ef67(plVar13)" identifier = (call_expression "FUN_0012ef67(plVar13)" identifier (argument_list "(plVar13)" ( identifier )))) ;) (expression_statement "*(undefined4 *)((long)plVar12 + local_50 * 4 + 0x28) = uVar3;" (assignment_expression "*(undefined4 *)((long)plVar12 + local_50 * 4 + 0x28) = uVar3" (pointer_expression "*(undefined4 *)((long)plVar12 + local_50 * 4 + 0x28)" * (cast_expression "(undefined4 *)((long)plVar12 + local_50 * 4 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar12 + local_50 * 4 + 0x28)" ( (binary_expression "(long)plVar12 + local_50 * 4 + 0x28" (binary_expression "(long)plVar12 + local_50 * 4" (cast_expression "(long)plVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "local_50 * 4" identifier * number_literal)) + number_literal) )))) = identifier) ;) (expression_statement "uVar3 = FUN_0012ef67(lVar6);" (assignment_expression "uVar3 = FUN_0012ef67(lVar6)" identifier = (call_expression "FUN_0012ef67(lVar6)" identifier (argument_list "(lVar6)" ( identifier )))) ;) (expression_statement "*(undefined4 *)((long)plVar12 + local_50 * 4 + 0x2c) = uVar3;" (assignment_expression "*(undefined4 *)((long)plVar12 + local_50 * 4 + 0x2c) = uVar3" (pointer_expression "*(undefined4 *)((long)plVar12 + local_50 * 4 + 0x2c)" * (cast_expression "(undefined4 *)((long)plVar12 + local_50 * 4 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar12 + local_50 * 4 + 0x2c)" ( (binary_expression "(long)plVar12 + local_50 * 4 + 0x2c" (binary_expression "(long)plVar12 + local_50 * 4" (cast_expression "(long)plVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "local_50 * 4" identifier * number_literal)) + number_literal) )))) = identifier) ;) (goto_statement "goto LAB_0012f7e4;" goto statement_identifier ;) }))) (if_statement "if (local_54 != 0) {\nLAB_0012f905:\n        local_54 = local_54 - 1;\n        param_2 = param_2 + 1 + *(int *)((long)plVar12 + (long)(int)local_54 * 4 + 0x28);\n      }" if (parenthesized_expression "(local_54 != 0)" ( (binary_expression "local_54 != 0" identifier != number_literal) )) (compound_statement "{\nLAB_0012f905:\n        local_54 = local_54 - 1;\n        param_2 = param_2 + 1 + *(int *)((long)plVar12 + (long)(int)local_54 * 4 + 0x28);\n      }" { (labeled_statement "LAB_0012f905:\n        local_54 = local_54 - 1;" statement_identifier : (expression_statement "local_54 = local_54 - 1;" (assignment_expression "local_54 = local_54 - 1" identifier = (binary_expression "local_54 - 1" identifier - number_literal)) ;)) (expression_statement "param_2 = param_2 + 1 + *(int *)((long)plVar12 + (long)(int)local_54 * 4 + 0x28);" (assignment_expression "param_2 = param_2 + 1 + *(int *)((long)plVar12 + (long)(int)local_54 * 4 + 0x28)" identifier = (binary_expression "param_2 + 1 + *(int *)((long)plVar12 + (long)(int)local_54 * 4 + 0x28)" (binary_expression "param_2 + 1" identifier + number_literal) + (pointer_expression "*(int *)((long)plVar12 + (long)(int)local_54 * 4 + 0x28)" * (cast_expression "(int *)((long)plVar12 + (long)(int)local_54 * 4 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar12 + (long)(int)local_54 * 4 + 0x28)" ( (binary_expression "(long)plVar12 + (long)(int)local_54 * 4 + 0x28" (binary_expression "(long)plVar12 + (long)(int)local_54 * 4" (cast_expression "(long)plVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "(long)(int)local_54 * 4" (cast_expression "(long)(int)local_54" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (cast_expression "(int)local_54" ( (type_descriptor "int" primitive_type) ) identifier)) * number_literal)) + number_literal) )))))) ;) })) })) (expression_statement "lVar6 = plVar12[(long)(int)local_54 + 1];" (assignment_expression "lVar6 = plVar12[(long)(int)local_54 + 1]" identifier = (subscript_expression "plVar12[(long)(int)local_54 + 1]" identifier [ (binary_expression "(long)(int)local_54 + 1" (cast_expression "(long)(int)local_54" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (cast_expression "(int)local_54" ( (type_descriptor "int" primitive_type) ) identifier)) + number_literal) ])) ;) (expression_statement "plVar13 = (long *)plVar12[(long)(int)local_54 + 2];" (assignment_expression "plVar13 = (long *)plVar12[(long)(int)local_54 + 2]" identifier = (cast_expression "(long *)plVar12[(long)(int)local_54 + 2]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar12[(long)(int)local_54 + 2]" identifier [ (binary_expression "(long)(int)local_54 + 2" (cast_expression "(long)(int)local_54" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (cast_expression "(int)local_54" ( (type_descriptor "int" primitive_type) ) identifier)) + number_literal) ]))) ;) (expression_statement "plVar13[4] = plVar13[2];" (assignment_expression "plVar13[4] = plVar13[2]" (subscript_expression "plVar13[4]" identifier [ number_literal ]) = (subscript_expression "plVar13[2]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)((long)plVar13 + 0x34) = *(undefined4 *)((long)plVar13 + 0x2c);" (assignment_expression "*(undefined4 *)((long)plVar13 + 0x34) = *(undefined4 *)((long)plVar13 + 0x2c)" (pointer_expression "*(undefined4 *)((long)plVar13 + 0x34)" * (cast_expression "(undefined4 *)((long)plVar13 + 0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar13 + 0x34)" ( (binary_expression "(long)plVar13 + 0x34" (cast_expression "(long)plVar13" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (pointer_expression "*(undefined4 *)((long)plVar13 + 0x2c)" * (cast_expression "(undefined4 *)((long)plVar13 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar13 + 0x2c)" ( (binary_expression "(long)plVar13 + 0x2c" (cast_expression "(long)plVar13" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "plVar13[9] = plVar13[7];" (assignment_expression "plVar13[9] = plVar13[7]" (subscript_expression "plVar13[9]" identifier [ number_literal ]) = (subscript_expression "plVar13[7]" identifier [ number_literal ])) ;) (expression_statement "plVar13[3] = plVar13[1];" (assignment_expression "plVar13[3] = plVar13[1]" (subscript_expression "plVar13[3]" identifier [ number_literal ]) = (subscript_expression "plVar13[1]" identifier [ number_literal ])) ;) (expression_statement "*(int *)(plVar13 + 6) = (int)plVar13[5];" (assignment_expression "*(int *)(plVar13 + 6) = (int)plVar13[5]" (pointer_expression "*(int *)(plVar13 + 6)" * (cast_expression "(int *)(plVar13 + 6)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar13 + 6)" ( (binary_expression "plVar13 + 6" identifier + number_literal) )))) = (cast_expression "(int)plVar13[5]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "plVar13[5]" identifier [ number_literal ]))) ;) (expression_statement "plVar13[8] = plVar12[(long)(int)local_54 + 7];" (assignment_expression "plVar13[8] = plVar12[(long)(int)local_54 + 7]" (subscript_expression "plVar13[8]" identifier [ number_literal ]) = (subscript_expression "plVar12[(long)(int)local_54 + 7]" identifier [ (binary_expression "(long)(int)local_54 + 7" (cast_expression "(long)(int)local_54" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (cast_expression "(int)local_54" ( (type_descriptor "int" primitive_type) ) identifier)) + number_literal) ])) ;) (expression_statement "puVar2 = *(undefined8 **)(lVar6 + 0x10);" (assignment_expression "puVar2 = *(undefined8 **)(lVar6 + 0x10)" identifier = (pointer_expression "*(undefined8 **)(lVar6 + 0x10)" * (cast_expression "(undefined8 **)(lVar6 + 0x10)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar6 + 0x10)" ( (binary_expression "lVar6 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "plVar13[2] = (long)puVar2;" (assignment_expression "plVar13[2] = (long)puVar2" (subscript_expression "plVar13[2]" identifier [ number_literal ]) = (cast_expression "(long)puVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "*(undefined4 *)((long)plVar13 + 0x2c) = *(undefined4 *)(lVar6 + 0x2c);" (assignment_expression "*(undefined4 *)((long)plVar13 + 0x2c) = *(undefined4 *)(lVar6 + 0x2c)" (pointer_expression "*(undefined4 *)((long)plVar13 + 0x2c)" * (cast_expression "(undefined4 *)((long)plVar13 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar13 + 0x2c)" ( (binary_expression "(long)plVar13 + 0x2c" (cast_expression "(long)plVar13" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (pointer_expression "*(undefined4 *)(lVar6 + 0x2c)" * (cast_expression "(undefined4 *)(lVar6 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x2c)" ( (binary_expression "lVar6 + 0x2c" identifier + number_literal) ))))) ;) (if_statement "if (puVar2 != (undefined8 *)0x0) {\n      *puVar2 = plVar13;\n    }" if (parenthesized_expression "(puVar2 != (undefined8 *)0x0)" ( (binary_expression "puVar2 != (undefined8 *)0x0" identifier != (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      *puVar2 = plVar13;\n    }" { (expression_statement "*puVar2 = plVar13;" (assignment_expression "*puVar2 = plVar13" (pointer_expression "*puVar2" * identifier) = identifier) ;) })) (expression_statement "plVar13[7] = *(long *)(lVar6 + 0x38);" (assignment_expression "plVar13[7] = *(long *)(lVar6 + 0x38)" (subscript_expression "plVar13[7]" identifier [ number_literal ]) = (pointer_expression "*(long *)(lVar6 + 0x38)" * (cast_expression "(long *)(lVar6 + 0x38)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x38)" ( (binary_expression "lVar6 + 0x38" identifier + number_literal) ))))) ;) (expression_statement "puVar2 = *(undefined8 **)(lVar6 + 8);" (assignment_expression "puVar2 = *(undefined8 **)(lVar6 + 8)" identifier = (pointer_expression "*(undefined8 **)(lVar6 + 8)" * (cast_expression "(undefined8 **)(lVar6 + 8)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar6 + 8)" ( (binary_expression "lVar6 + 8" identifier + number_literal) ))))) ;) (expression_statement "plVar13[1] = (long)puVar2;" (assignment_expression "plVar13[1] = (long)puVar2" (subscript_expression "plVar13[1]" identifier [ number_literal ]) = (cast_expression "(long)puVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "*(undefined4 *)(plVar13 + 5) = *(undefined4 *)(lVar6 + 0x28);" (assignment_expression "*(undefined4 *)(plVar13 + 5) = *(undefined4 *)(lVar6 + 0x28)" (pointer_expression "*(undefined4 *)(plVar13 + 5)" * (cast_expression "(undefined4 *)(plVar13 + 5)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar13 + 5)" ( (binary_expression "plVar13 + 5" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(lVar6 + 0x28)" * (cast_expression "(undefined4 *)(lVar6 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x28)" ( (binary_expression "lVar6 + 0x28" identifier + number_literal) ))))) ;) (if_statement "if (puVar2 != (undefined8 *)0x0) {\n      *puVar2 = plVar13;\n    }" if (parenthesized_expression "(puVar2 != (undefined8 *)0x0)" ( (binary_expression "puVar2 != (undefined8 *)0x0" identifier != (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      *puVar2 = plVar13;\n    }" { (expression_statement "*puVar2 = plVar13;" (assignment_expression "*puVar2 = plVar13" (pointer_expression "*puVar2" * identifier) = identifier) ;) })) (expression_statement "uVar3 = FUN_0012ef67(plVar13);" (assignment_expression "uVar3 = FUN_0012ef67(plVar13)" identifier = (call_expression "FUN_0012ef67(plVar13)" identifier (argument_list "(plVar13)" ( identifier )))) ;) (expression_statement "*(undefined4 *)((long)plVar12 + (long)(int)(local_54 + 1) * 4 + 0x28) = uVar3;" (assignment_expression "*(undefined4 *)((long)plVar12 + (long)(int)(local_54 + 1) * 4 + 0x28) = uVar3" (pointer_expression "*(undefined4 *)((long)plVar12 + (long)(int)(local_54 + 1) * 4 + 0x28)" * (cast_expression "(undefined4 *)((long)plVar12 + (long)(int)(local_54 + 1) * 4 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar12 + (long)(int)(local_54 + 1) * 4 + 0x28)" ( (binary_expression "(long)plVar12 + (long)(int)(local_54 + 1) * 4 + 0x28" (binary_expression "(long)plVar12 + (long)(int)(local_54 + 1) * 4" (cast_expression "(long)plVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "(long)(int)(local_54 + 1) * 4" (cast_expression "(long)(int)(local_54 + 1)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (cast_expression "(int)(local_54 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(local_54 + 1)" ( (binary_expression "local_54 + 1" identifier + number_literal) )))) * number_literal)) + number_literal) )))) = identifier) ;) (expression_statement "FUN_0010c4d3(lVar6);" (call_expression "FUN_0010c4d3(lVar6)" identifier (argument_list "(lVar6)" ( identifier ))) ;) (if_statement "if ((int)local_54 < 3) {\n      lVar6 = plVar12[(long)(int)local_54 + 2];\n      if (lVar6 != 0) {\n        lVar8 = (long)(int)(local_54 + 1);\n        do {\n          local_54 = (uint)lVar8;\n          plVar12[lVar8] = lVar6;\n          *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x24) =\n               *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28);\n          lVar6 = 0;\n          if ((int)(local_54 - 1) < 2) {\n            lVar6 = plVar12[lVar8 + 7];\n          }\n          plVar12[lVar8 + 6] = lVar6;\n          if (2 < (int)local_54) goto LAB_0012fd6d;\n          lVar6 = plVar12[lVar8 + 2];\n          lVar8 = lVar8 + 1;\n        } while (lVar6 != 0);\n      }\n      lVar6 = (long)(int)local_54;\n      plVar12[lVar6 + 1] = 0;\n      *(undefined4 *)((long)plVar12 + lVar6 * 4 + 0x28) = 0;\n      plVar12[lVar6 + 7] = 0;\n    }\n    else {\nLAB_0012fd6d:\n      plVar12[(long)(int)local_54 + 1] = 0;\n      *(undefined4 *)((long)plVar12 + (long)(int)local_54 * 4 + 0x28) = 0;\n    }" if (parenthesized_expression "((int)local_54 < 3)" ( (binary_expression "(int)local_54 < 3" (cast_expression "(int)local_54" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      lVar6 = plVar12[(long)(int)local_54 + 2];\n      if (lVar6 != 0) {\n        lVar8 = (long)(int)(local_54 + 1);\n        do {\n          local_54 = (uint)lVar8;\n          plVar12[lVar8] = lVar6;\n          *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x24) =\n               *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28);\n          lVar6 = 0;\n          if ((int)(local_54 - 1) < 2) {\n            lVar6 = plVar12[lVar8 + 7];\n          }\n          plVar12[lVar8 + 6] = lVar6;\n          if (2 < (int)local_54) goto LAB_0012fd6d;\n          lVar6 = plVar12[lVar8 + 2];\n          lVar8 = lVar8 + 1;\n        } while (lVar6 != 0);\n      }\n      lVar6 = (long)(int)local_54;\n      plVar12[lVar6 + 1] = 0;\n      *(undefined4 *)((long)plVar12 + lVar6 * 4 + 0x28) = 0;\n      plVar12[lVar6 + 7] = 0;\n    }" { (expression_statement "lVar6 = plVar12[(long)(int)local_54 + 2];" (assignment_expression "lVar6 = plVar12[(long)(int)local_54 + 2]" identifier = (subscript_expression "plVar12[(long)(int)local_54 + 2]" identifier [ (binary_expression "(long)(int)local_54 + 2" (cast_expression "(long)(int)local_54" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (cast_expression "(int)local_54" ( (type_descriptor "int" primitive_type) ) identifier)) + number_literal) ])) ;) (if_statement "if (lVar6 != 0) {\n        lVar8 = (long)(int)(local_54 + 1);\n        do {\n          local_54 = (uint)lVar8;\n          plVar12[lVar8] = lVar6;\n          *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x24) =\n               *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28);\n          lVar6 = 0;\n          if ((int)(local_54 - 1) < 2) {\n            lVar6 = plVar12[lVar8 + 7];\n          }\n          plVar12[lVar8 + 6] = lVar6;\n          if (2 < (int)local_54) goto LAB_0012fd6d;\n          lVar6 = plVar12[lVar8 + 2];\n          lVar8 = lVar8 + 1;\n        } while (lVar6 != 0);\n      }" if (parenthesized_expression "(lVar6 != 0)" ( (binary_expression "lVar6 != 0" identifier != number_literal) )) (compound_statement "{\n        lVar8 = (long)(int)(local_54 + 1);\n        do {\n          local_54 = (uint)lVar8;\n          plVar12[lVar8] = lVar6;\n          *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x24) =\n               *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28);\n          lVar6 = 0;\n          if ((int)(local_54 - 1) < 2) {\n            lVar6 = plVar12[lVar8 + 7];\n          }\n          plVar12[lVar8 + 6] = lVar6;\n          if (2 < (int)local_54) goto LAB_0012fd6d;\n          lVar6 = plVar12[lVar8 + 2];\n          lVar8 = lVar8 + 1;\n        } while (lVar6 != 0);\n      }" { (expression_statement "lVar8 = (long)(int)(local_54 + 1);" (assignment_expression "lVar8 = (long)(int)(local_54 + 1)" identifier = (cast_expression "(long)(int)(local_54 + 1)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (cast_expression "(int)(local_54 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(local_54 + 1)" ( (binary_expression "local_54 + 1" identifier + number_literal) ))))) ;) (do_statement "do {\n          local_54 = (uint)lVar8;\n          plVar12[lVar8] = lVar6;\n          *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x24) =\n               *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28);\n          lVar6 = 0;\n          if ((int)(local_54 - 1) < 2) {\n            lVar6 = plVar12[lVar8 + 7];\n          }\n          plVar12[lVar8 + 6] = lVar6;\n          if (2 < (int)local_54) goto LAB_0012fd6d;\n          lVar6 = plVar12[lVar8 + 2];\n          lVar8 = lVar8 + 1;\n        } while (lVar6 != 0);" do (compound_statement "{\n          local_54 = (uint)lVar8;\n          plVar12[lVar8] = lVar6;\n          *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x24) =\n               *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28);\n          lVar6 = 0;\n          if ((int)(local_54 - 1) < 2) {\n            lVar6 = plVar12[lVar8 + 7];\n          }\n          plVar12[lVar8 + 6] = lVar6;\n          if (2 < (int)local_54) goto LAB_0012fd6d;\n          lVar6 = plVar12[lVar8 + 2];\n          lVar8 = lVar8 + 1;\n        }" { (expression_statement "local_54 = (uint)lVar8;" (assignment_expression "local_54 = (uint)lVar8" identifier = (cast_expression "(uint)lVar8" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "plVar12[lVar8] = lVar6;" (assignment_expression "plVar12[lVar8] = lVar6" (subscript_expression "plVar12[lVar8]" identifier [ identifier ]) = identifier) ;) (expression_statement "*(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x24) =\n               *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28);" (assignment_expression "*(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x24) =\n               *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28)" (pointer_expression "*(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x24)" * (cast_expression "(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar12 + lVar8 * 4 + 0x24)" ( (binary_expression "(long)plVar12 + lVar8 * 4 + 0x24" (binary_expression "(long)plVar12 + lVar8 * 4" (cast_expression "(long)plVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "lVar8 * 4" identifier * number_literal)) + number_literal) )))) = (pointer_expression "*(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28)" * (cast_expression "(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar12 + lVar8 * 4 + 0x28)" ( (binary_expression "(long)plVar12 + lVar8 * 4 + 0x28" (binary_expression "(long)plVar12 + lVar8 * 4" (cast_expression "(long)plVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "lVar8 * 4" identifier * number_literal)) + number_literal) ))))) ;) (expression_statement "lVar6 = 0;" (assignment_expression "lVar6 = 0" identifier = number_literal) ;) (if_statement "if ((int)(local_54 - 1) < 2) {\n            lVar6 = plVar12[lVar8 + 7];\n          }" if (parenthesized_expression "((int)(local_54 - 1) < 2)" ( (binary_expression "(int)(local_54 - 1) < 2" (cast_expression "(int)(local_54 - 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(local_54 - 1)" ( (binary_expression "local_54 - 1" identifier - number_literal) ))) < number_literal) )) (compound_statement "{\n            lVar6 = plVar12[lVar8 + 7];\n          }" { (expression_statement "lVar6 = plVar12[lVar8 + 7];" (assignment_expression "lVar6 = plVar12[lVar8 + 7]" identifier = (subscript_expression "plVar12[lVar8 + 7]" identifier [ (binary_expression "lVar8 + 7" identifier + number_literal) ])) ;) })) (expression_statement "plVar12[lVar8 + 6] = lVar6;" (assignment_expression "plVar12[lVar8 + 6] = lVar6" (subscript_expression "plVar12[lVar8 + 6]" identifier [ (binary_expression "lVar8 + 6" identifier + number_literal) ]) = identifier) ;) (if_statement "if (2 < (int)local_54) goto LAB_0012fd6d;" if (parenthesized_expression "(2 < (int)local_54)" ( (binary_expression "2 < (int)local_54" number_literal < (cast_expression "(int)local_54" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_0012fd6d;" goto statement_identifier ;)) (expression_statement "lVar6 = plVar12[lVar8 + 2];" (assignment_expression "lVar6 = plVar12[lVar8 + 2]" identifier = (subscript_expression "plVar12[lVar8 + 2]" identifier [ (binary_expression "lVar8 + 2" identifier + number_literal) ])) ;) (expression_statement "lVar8 = lVar8 + 1;" (assignment_expression "lVar8 = lVar8 + 1" identifier = (binary_expression "lVar8 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar6 != 0)" ( (binary_expression "lVar6 != 0" identifier != number_literal) )) ;) })) (expression_statement "lVar6 = (long)(int)local_54;" (assignment_expression "lVar6 = (long)(int)local_54" identifier = (cast_expression "(long)(int)local_54" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (cast_expression "(int)local_54" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "plVar12[lVar6 + 1] = 0;" (assignment_expression "plVar12[lVar6 + 1] = 0" (subscript_expression "plVar12[lVar6 + 1]" identifier [ (binary_expression "lVar6 + 1" identifier + number_literal) ]) = number_literal) ;) (expression_statement "*(undefined4 *)((long)plVar12 + lVar6 * 4 + 0x28) = 0;" (assignment_expression "*(undefined4 *)((long)plVar12 + lVar6 * 4 + 0x28) = 0" (pointer_expression "*(undefined4 *)((long)plVar12 + lVar6 * 4 + 0x28)" * (cast_expression "(undefined4 *)((long)plVar12 + lVar6 * 4 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar12 + lVar6 * 4 + 0x28)" ( (binary_expression "(long)plVar12 + lVar6 * 4 + 0x28" (binary_expression "(long)plVar12 + lVar6 * 4" (cast_expression "(long)plVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "lVar6 * 4" identifier * number_literal)) + number_literal) )))) = number_literal) ;) (expression_statement "plVar12[lVar6 + 7] = 0;" (assignment_expression "plVar12[lVar6 + 7] = 0" (subscript_expression "plVar12[lVar6 + 7]" identifier [ (binary_expression "lVar6 + 7" identifier + number_literal) ]) = number_literal) ;) }) (else_clause "else {\nLAB_0012fd6d:\n      plVar12[(long)(int)local_54 + 1] = 0;\n      *(undefined4 *)((long)plVar12 + (long)(int)local_54 * 4 + 0x28) = 0;\n    }" else (compound_statement "{\nLAB_0012fd6d:\n      plVar12[(long)(int)local_54 + 1] = 0;\n      *(undefined4 *)((long)plVar12 + (long)(int)local_54 * 4 + 0x28) = 0;\n    }" { (labeled_statement "LAB_0012fd6d:\n      plVar12[(long)(int)local_54 + 1] = 0;" statement_identifier : (expression_statement "plVar12[(long)(int)local_54 + 1] = 0;" (assignment_expression "plVar12[(long)(int)local_54 + 1] = 0" (subscript_expression "plVar12[(long)(int)local_54 + 1]" identifier [ (binary_expression "(long)(int)local_54 + 1" (cast_expression "(long)(int)local_54" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (cast_expression "(int)local_54" ( (type_descriptor "int" primitive_type) ) identifier)) + number_literal) ]) = number_literal) ;)) (expression_statement "*(undefined4 *)((long)plVar12 + (long)(int)local_54 * 4 + 0x28) = 0;" (assignment_expression "*(undefined4 *)((long)plVar12 + (long)(int)local_54 * 4 + 0x28) = 0" (pointer_expression "*(undefined4 *)((long)plVar12 + (long)(int)local_54 * 4 + 0x28)" * (cast_expression "(undefined4 *)((long)plVar12 + (long)(int)local_54 * 4 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar12 + (long)(int)local_54 * 4 + 0x28)" ( (binary_expression "(long)plVar12 + (long)(int)local_54 * 4 + 0x28" (binary_expression "(long)plVar12 + (long)(int)local_54 * 4" (cast_expression "(long)plVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "(long)(int)local_54 * 4" (cast_expression "(long)(int)local_54" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (cast_expression "(int)local_54" ( (type_descriptor "int" primitive_type) ) identifier)) * number_literal)) + number_literal) )))) = number_literal) ;) }))) (if_statement "if (plVar12[7] == 0) {\n      *param_1 = plVar13;\n      *plVar13 = 0;\n      FUN_0010c4d3(plVar12);\n    }" if (parenthesized_expression "(plVar12[7] == 0)" ( (binary_expression "plVar12[7] == 0" (subscript_expression "plVar12[7]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      *param_1 = plVar13;\n      *plVar13 = 0;\n      FUN_0010c4d3(plVar12);\n    }" { (expression_statement "*param_1 = plVar13;" (assignment_expression "*param_1 = plVar13" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "*plVar13 = 0;" (assignment_expression "*plVar13 = 0" (pointer_expression "*plVar13" * identifier) = number_literal) ;) (expression_statement "FUN_0010c4d3(plVar12);" (call_expression "FUN_0010c4d3(plVar12)" identifier (argument_list "(plVar12)" ( identifier ))) ;) })) })) (goto_statement "goto LAB_0012f7e4;" goto statement_identifier ;) (labeled_statement "code_r0x0012fc20:\n  if (iVar9 < 2) {\nLAB_0012fbac:\n    lVar8 = plVar12[(long)(iVar9 + 1) + 7];\n    if (lVar8 != 0) {\n      lVar11 = (long)(iVar9 + 1);\n      do {\n        iVar9 = (int)lVar11;\n        plVar12[lVar11 + 6] = lVar8;\n        if (1 < iVar9) break;\n        lVar8 = plVar12[lVar11 + 8];\n        lVar11 = lVar11 + 1;\n      } while (lVar8 != 0);\n    }\n    plVar12[(long)iVar9 + 7] = 0;\n    if (lVar6 == 0) {\n      return lVar15;\n    }\n  }\n  else {\n    plVar12[(long)iVar9 + 7] = 0;\n  }" statement_identifier : (if_statement "if (iVar9 < 2) {\nLAB_0012fbac:\n    lVar8 = plVar12[(long)(iVar9 + 1) + 7];\n    if (lVar8 != 0) {\n      lVar11 = (long)(iVar9 + 1);\n      do {\n        iVar9 = (int)lVar11;\n        plVar12[lVar11 + 6] = lVar8;\n        if (1 < iVar9) break;\n        lVar8 = plVar12[lVar11 + 8];\n        lVar11 = lVar11 + 1;\n      } while (lVar8 != 0);\n    }\n    plVar12[(long)iVar9 + 7] = 0;\n    if (lVar6 == 0) {\n      return lVar15;\n    }\n  }\n  else {\n    plVar12[(long)iVar9 + 7] = 0;\n  }" if (parenthesized_expression "(iVar9 < 2)" ( (binary_expression "iVar9 < 2" identifier < number_literal) )) (compound_statement "{\nLAB_0012fbac:\n    lVar8 = plVar12[(long)(iVar9 + 1) + 7];\n    if (lVar8 != 0) {\n      lVar11 = (long)(iVar9 + 1);\n      do {\n        iVar9 = (int)lVar11;\n        plVar12[lVar11 + 6] = lVar8;\n        if (1 < iVar9) break;\n        lVar8 = plVar12[lVar11 + 8];\n        lVar11 = lVar11 + 1;\n      } while (lVar8 != 0);\n    }\n    plVar12[(long)iVar9 + 7] = 0;\n    if (lVar6 == 0) {\n      return lVar15;\n    }\n  }" { (labeled_statement "LAB_0012fbac:\n    lVar8 = plVar12[(long)(iVar9 + 1) + 7];" statement_identifier : (expression_statement "lVar8 = plVar12[(long)(iVar9 + 1) + 7];" (assignment_expression "lVar8 = plVar12[(long)(iVar9 + 1) + 7]" identifier = (subscript_expression "plVar12[(long)(iVar9 + 1) + 7]" identifier [ (binary_expression "(long)(iVar9 + 1) + 7" (cast_expression "(long)(iVar9 + 1)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(iVar9 + 1)" ( (binary_expression "iVar9 + 1" identifier + number_literal) ))) + number_literal) ])) ;)) (if_statement "if (lVar8 != 0) {\n      lVar11 = (long)(iVar9 + 1);\n      do {\n        iVar9 = (int)lVar11;\n        plVar12[lVar11 + 6] = lVar8;\n        if (1 < iVar9) break;\n        lVar8 = plVar12[lVar11 + 8];\n        lVar11 = lVar11 + 1;\n      } while (lVar8 != 0);\n    }" if (parenthesized_expression "(lVar8 != 0)" ( (binary_expression "lVar8 != 0" identifier != number_literal) )) (compound_statement "{\n      lVar11 = (long)(iVar9 + 1);\n      do {\n        iVar9 = (int)lVar11;\n        plVar12[lVar11 + 6] = lVar8;\n        if (1 < iVar9) break;\n        lVar8 = plVar12[lVar11 + 8];\n        lVar11 = lVar11 + 1;\n      } while (lVar8 != 0);\n    }" { (expression_statement "lVar11 = (long)(iVar9 + 1);" (assignment_expression "lVar11 = (long)(iVar9 + 1)" identifier = (cast_expression "(long)(iVar9 + 1)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(iVar9 + 1)" ( (binary_expression "iVar9 + 1" identifier + number_literal) )))) ;) (do_statement "do {\n        iVar9 = (int)lVar11;\n        plVar12[lVar11 + 6] = lVar8;\n        if (1 < iVar9) break;\n        lVar8 = plVar12[lVar11 + 8];\n        lVar11 = lVar11 + 1;\n      } while (lVar8 != 0);" do (compound_statement "{\n        iVar9 = (int)lVar11;\n        plVar12[lVar11 + 6] = lVar8;\n        if (1 < iVar9) break;\n        lVar8 = plVar12[lVar11 + 8];\n        lVar11 = lVar11 + 1;\n      }" { (expression_statement "iVar9 = (int)lVar11;" (assignment_expression "iVar9 = (int)lVar11" identifier = (cast_expression "(int)lVar11" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "plVar12[lVar11 + 6] = lVar8;" (assignment_expression "plVar12[lVar11 + 6] = lVar8" (subscript_expression "plVar12[lVar11 + 6]" identifier [ (binary_expression "lVar11 + 6" identifier + number_literal) ]) = identifier) ;) (if_statement "if (1 < iVar9) break;" if (parenthesized_expression "(1 < iVar9)" ( (binary_expression "1 < iVar9" number_literal < identifier) )) (break_statement "break;" break ;)) (expression_statement "lVar8 = plVar12[lVar11 + 8];" (assignment_expression "lVar8 = plVar12[lVar11 + 8]" identifier = (subscript_expression "plVar12[lVar11 + 8]" identifier [ (binary_expression "lVar11 + 8" identifier + number_literal) ])) ;) (expression_statement "lVar11 = lVar11 + 1;" (assignment_expression "lVar11 = lVar11 + 1" identifier = (binary_expression "lVar11 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar8 != 0)" ( (binary_expression "lVar8 != 0" identifier != number_literal) )) ;) })) (expression_statement "plVar12[(long)iVar9 + 7] = 0;" (assignment_expression "plVar12[(long)iVar9 + 7] = 0" (subscript_expression "plVar12[(long)iVar9 + 7]" identifier [ (binary_expression "(long)iVar9 + 7" (cast_expression "(long)iVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ]) = number_literal) ;) (if_statement "if (lVar6 == 0) {\n      return lVar15;\n    }" if (parenthesized_expression "(lVar6 == 0)" ( (binary_expression "lVar6 == 0" identifier == number_literal) )) (compound_statement "{\n      return lVar15;\n    }" { (return_statement "return lVar15;" return identifier ;) })) }) (else_clause "else {\n    plVar12[(long)iVar9 + 7] = 0;\n  }" else (compound_statement "{\n    plVar12[(long)iVar9 + 7] = 0;\n  }" { (expression_statement "plVar12[(long)iVar9 + 7] = 0;" (assignment_expression "plVar12[(long)iVar9 + 7] = 0" (subscript_expression "plVar12[(long)iVar9 + 7]" identifier [ (binary_expression "(long)iVar9 + 7" (cast_expression "(long)iVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ]) = number_literal) ;) })))) (do_statement "do {\n    iVar9 = 0;\n    if ((*(long **)(lVar6 + 8) != plVar12) && (iVar9 = 1, *(long **)(lVar6 + 0x10) != plVar12)) {\n      iVar9 = (*(long **)(lVar6 + 0x18) != plVar12) + 2;\n    }\n    piVar1 = (int *)(lVar6 + 0x28 + (long)iVar9 * 4);\n    *piVar1 = *piVar1 + -1;\n    plVar12 = (long *)*plVar12;\n    lVar6 = *plVar12;\n  } while (lVar6 != 0);" do (compound_statement "{\n    iVar9 = 0;\n    if ((*(long **)(lVar6 + 8) != plVar12) && (iVar9 = 1, *(long **)(lVar6 + 0x10) != plVar12)) {\n      iVar9 = (*(long **)(lVar6 + 0x18) != plVar12) + 2;\n    }\n    piVar1 = (int *)(lVar6 + 0x28 + (long)iVar9 * 4);\n    *piVar1 = *piVar1 + -1;\n    plVar12 = (long *)*plVar12;\n    lVar6 = *plVar12;\n  }" { (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" identifier = number_literal) ;) (if_statement "if ((*(long **)(lVar6 + 8) != plVar12) && (iVar9 = 1, *(long **)(lVar6 + 0x10) != plVar12)) {\n      iVar9 = (*(long **)(lVar6 + 0x18) != plVar12) + 2;\n    }" if (parenthesized_expression "((*(long **)(lVar6 + 8) != plVar12) && (iVar9 = 1, *(long **)(lVar6 + 0x10) != plVar12))" ( (binary_expression "(*(long **)(lVar6 + 8) != plVar12) && (iVar9 = 1, *(long **)(lVar6 + 0x10) != plVar12)" (parenthesized_expression "(*(long **)(lVar6 + 8) != plVar12)" ( (binary_expression "*(long **)(lVar6 + 8) != plVar12" (pointer_expression "*(long **)(lVar6 + 8)" * (cast_expression "(long **)(lVar6 + 8)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar6 + 8)" ( (binary_expression "lVar6 + 8" identifier + number_literal) )))) != identifier) )) && (parenthesized_expression "(iVar9 = 1, *(long **)(lVar6 + 0x10) != plVar12)" ( (comma_expression "iVar9 = 1, *(long **)(lVar6 + 0x10) != plVar12" (assignment_expression "iVar9 = 1" identifier = number_literal) , (binary_expression "*(long **)(lVar6 + 0x10) != plVar12" (pointer_expression "*(long **)(lVar6 + 0x10)" * (cast_expression "(long **)(lVar6 + 0x10)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar6 + 0x10)" ( (binary_expression "lVar6 + 0x10" identifier + number_literal) )))) != identifier)) ))) )) (compound_statement "{\n      iVar9 = (*(long **)(lVar6 + 0x18) != plVar12) + 2;\n    }" { (expression_statement "iVar9 = (*(long **)(lVar6 + 0x18) != plVar12) + 2;" (assignment_expression "iVar9 = (*(long **)(lVar6 + 0x18) != plVar12) + 2" identifier = (binary_expression "(*(long **)(lVar6 + 0x18) != plVar12) + 2" (parenthesized_expression "(*(long **)(lVar6 + 0x18) != plVar12)" ( (binary_expression "*(long **)(lVar6 + 0x18) != plVar12" (pointer_expression "*(long **)(lVar6 + 0x18)" * (cast_expression "(long **)(lVar6 + 0x18)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar6 + 0x18)" ( (binary_expression "lVar6 + 0x18" identifier + number_literal) )))) != identifier) )) + number_literal)) ;) })) (expression_statement "piVar1 = (int *)(lVar6 + 0x28 + (long)iVar9 * 4);" (assignment_expression "piVar1 = (int *)(lVar6 + 0x28 + (long)iVar9 * 4)" identifier = (cast_expression "(int *)(lVar6 + 0x28 + (long)iVar9 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x28 + (long)iVar9 * 4)" ( (binary_expression "lVar6 + 0x28 + (long)iVar9 * 4" (binary_expression "lVar6 + 0x28" identifier + number_literal) + (binary_expression "(long)iVar9 * 4" (cast_expression "(long)iVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) 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)) ;) (expression_statement "plVar12 = (long *)*plVar12;" (assignment_expression "plVar12 = (long *)*plVar12" identifier = (cast_expression "(long *)*plVar12" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar12" * identifier))) ;) (expression_statement "lVar6 = *plVar12;" (assignment_expression "lVar6 = *plVar12" identifier = (pointer_expression "*plVar12" * identifier)) ;) }) while (parenthesized_expression "(lVar6 != 0)" ( (binary_expression "lVar6 != 0" identifier != number_literal) )) ;) (return_statement "return lVar15;" return identifier ;) })))
(translation_unit "void * delpos234_internal(tree234 *t,int index)\n\n{\n  node234 **ppnVar1;\n  node234 *pnVar2;\n  int iVar3;\n  int iVar4;\n  node234_conflict *pnVar5;\n  node234_conflict *pnVar6;\n  long lVar7;\n  node234_conflict *pnVar8;\n  int iVar9;\n  long lVar10;\n  node234 *pnVar11;\n  void *pvVar12;\n  node234 *pnVar13;\n  node234_conflict *ptr;\n  void *pvVar14;\n  uint local_54;\n  long local_50;\n  \n  iVar9 = -1;\n  pvVar14 = (void *)0x0;\n  pnVar5 = t->root;\nLAB_0012f7e4:\n  while (ptr = pnVar5, ptr != (node234_conflict *)0x0) {\n    if (index < ptr->counts[0]) goto LAB_0012f7d1;\n    index = index - (ptr->counts[0] + 1);\n    if (index < 0) {\n      iVar9 = 0;\nLAB_0012fdee:\n      if (pvVar14 == (void *)0x0) goto LAB_0012fdf7;\n      goto LAB_0012fa63;\n    }\n    if (index < ptr->counts[1]) {\n      local_54 = 1;\n    }\n    else {\n      index = index - (ptr->counts[1] + 1);\n      if (index < 0) {\n        iVar9 = 1;\n        goto LAB_0012fdee;\n      }\n      if (index < ptr->counts[2]) {\n        local_54 = 2;\n      }\n      else {\n        index = index - (ptr->counts[2] + 1);\n        if (index < 0) {\n          iVar9 = 2;\n          goto LAB_0012fdee;\n        }\n        local_54 = 3;\n      }\n    }\n    lVar7 = (long)(int)local_54;\n    ppnVar1 = ptr->kids + lVar7 + -1;\n    pnVar5 = ppnVar1[1];\n    if (pnVar5->elems[1] == (void *)0x0) {\n      pnVar8 = *ppnVar1;\n      if (pnVar8->elems[1] == (void *)0x0) {\n        if (local_54 < 3) {\n          local_50 = (long)(int)local_54;\n          pnVar11 = ((node234_conflict *)(ptr->kids + local_50 + -1))->kids[1];\n          pnVar8 = (node234_conflict *)(ptr->kids + local_50 + -1);\n          if (pnVar11 == (node234 *)0x0) goto LAB_0012f905;\n          goto LAB_0012fe3f;\n        }\n        goto LAB_0012f905;\n      }\n      pvVar12 = pnVar8->elems[2];\n      pnVar5->kids[2] = pnVar5->kids[1];\n      pnVar5->counts[2] = pnVar5->counts[1];\n      pnVar5->elems[1] = pnVar5->elems[0];\n      pnVar5->kids[1] = pnVar5->kids[0];\n      pnVar5->counts[1] = pnVar5->counts[0];\n      pnVar5->elems[0] = ppnVar1[6];\n      lVar10 = (long)(int)((pvVar12 != (void *)0x0) + 1);\n      pnVar11 = pnVar8->kids[lVar10 + 1];\n      pnVar5->kids[0] = pnVar11;\n      pnVar5->counts[0] = pnVar8->counts[lVar10 + 1];\n      if (pnVar11 != (node234 *)0x0) {\n        pnVar11->parent = pnVar5;\n      }\n      ppnVar1[6] = (node234 *)pnVar8->elems[lVar10];\n      pnVar8->kids[lVar10 + 1] = (node234 *)0x0;\n      pnVar8->counts[lVar10 + 1] = 0;\n      pnVar8->elems[lVar10] = (void *)0x0;\n      iVar3 = countnode234(pnVar5);\n      ptr->counts[lVar7] = iVar3;\n      iVar3 = ptr->counts[lVar7 + -1];\n      iVar4 = countnode234(pnVar8);\n      ptr->counts[lVar7 + -1] = iVar4;\n      index = (index + iVar3) - iVar4;\n    }\n  }\n  if (pvVar14 == (void *)0x0) {\nLAB_0012fdf7:\n    pvVar14 = ptr->elems[iVar9];\n  }\n  if (iVar9 == -1) {\n    return (void *)0x0;\n  }\nLAB_0012fa63:\n  pnVar5 = ptr->parent;\n  if (pnVar5 == (node234_conflict *)0x0) {\n    if (ptr->elems[1] == (void *)0x0) {\n      if (ptr->kids[0] == (node234 *)0x0) {\n        safefree(ptr);\n        t->root = (node234_conflict *)0x0;\n        return pvVar14;\n      }\n    }\n    else if (ptr->kids[0] == (node234 *)0x0) {\n      pnVar5 = (node234_conflict *)0x0;\n      if (1 < iVar9) {\n        ptr->elems[iVar9] = (void *)0x0;\n        return pvVar14;\n      }\n      goto LAB_0012fbac;\n    }\n  }\n  else if ((ptr->kids[0] == (node234 *)0x0) && (ptr->elems[1] != (void *)0x0))\n  goto code_r0x0012fc20;\n  pnVar5 = ptr->kids[iVar9];\n  pnVar8 = pnVar5;\n  if (pnVar5->elems[1] == (void *)0x0) {\n    pnVar11 = ptr->kids[(long)iVar9 + 1];\n    pnVar2 = pnVar11;\n    if (pnVar11->elems[1] == (void *)0x0) {\n      pnVar5->elems[1] = ptr->elems[iVar9];\n      pnVar2 = pnVar11->kids[0];\n      pnVar5->kids[2] = pnVar2;\n      pnVar5->counts[2] = pnVar11->counts[0];\n      if (pnVar2 != (node234 *)0x0) {\n        pnVar2->parent = pnVar5;\n      }\n      pnVar5->elems[2] = pnVar11->elems[0];\n      pnVar2 = pnVar11->kids[1];\n      pnVar5->kids[3] = pnVar2;\n      pnVar5->counts[3] = pnVar11->counts[1];\n      if (pnVar2 != (node234 *)0x0) {\n        pnVar2->parent = pnVar5;\n      }\n      safefree(pnVar11);\n      iVar3 = countnode234(pnVar5);\n      ptr->counts[iVar9] = iVar3;\n      iVar3 = iVar9;\n      if ((iVar9 < 2) && (pvVar12 = ptr->elems[(long)iVar9 + 1], pvVar12 != (void *)0x0)) {\n        lVar7 = (long)(iVar9 + 1);\n        do {\n          iVar3 = (int)lVar7;\n          ptr->elems[lVar7 + -1] = pvVar12;\n          ptr->kids[lVar7] = ptr->kids[lVar7 + 1];\n          ptr->counts[lVar7] = ptr->counts[lVar7 + 1];\n          if (1 < iVar3) break;\n          pvVar12 = ptr->elems[lVar7 + 1];\n          lVar7 = lVar7 + 1;\n        } while (pvVar12 != (void *)0x0);\n      }\n      ptr->elems[iVar3] = (void *)0x0;\n      ptr->kids[(long)iVar3 + 1] = (node234 *)0x0;\n      ptr->counts[iVar3 + 1] = 0;\n      if (ptr->elems[0] == (void *)0x0) {\n        t->root = pnVar5;\n        pnVar5->parent = (node234_conflict *)0x0;\n        safefree(ptr);\n      }\n      index = pnVar5->counts[1] + pnVar5->counts[0] + 1;\n    }\n    else {\n      do {\n        pnVar13 = pnVar2;\n        pnVar2 = pnVar13->kids[0];\n      } while (pnVar2 != (node234 *)0x0);\n      ptr->elems[iVar9] = pnVar13->elems[0];\n      index = 0;\n      pnVar5 = pnVar11;\n    }\n  }\n  else {\n    while (pnVar6 = pnVar8, pnVar6->kids[0] != (node234 *)0x0) {\n      pnVar8 = pnVar6->kids[3];\n      if (((pnVar6->kids[3] == (node234 *)0x0) &&\n          (pnVar8 = pnVar6->kids[2], pnVar6->kids[2] == (node234 *)0x0)) &&\n         (pnVar8 = pnVar6->kids[1], pnVar6->kids[1] == (node234 *)0x0)) {\n        pnVar8 = pnVar6->kids[0];\n      }\n    }\n    pvVar12 = pnVar6->elems[2];\n    if ((pvVar12 == (void *)0x0) && (pvVar12 = pnVar6->elems[1], pvVar12 == (void *)0x0)) {\n      pvVar12 = pnVar6->elems[0];\n    }\n    ptr->elems[iVar9] = pvVar12;\n    index = ptr->counts[iVar9] + -1;\n  }\n  goto LAB_0012f7e4;\nLAB_0012f7d1:\n  pnVar5 = ptr->kids[0];\n  if (pnVar5->elems[1] == (void *)0x0) {\n    pnVar11 = ptr->kids[1];\n    local_50 = 0;\n    local_54 = 0;\n    pnVar8 = ptr;\n    if (pnVar11 != (node234 *)0x0) {\nLAB_0012fe3f:\n      if (pnVar11->elems[1] != (void *)0x0) {\n        pnVar5->elems[1] = pnVar8->elems[0];\n        pnVar2 = pnVar11->kids[0];\n        pnVar5->kids[2] = pnVar2;\n        pnVar5->counts[2] = pnVar11->counts[0];\n        if (pnVar2 != (node234 *)0x0) {\n          pnVar2->parent = pnVar5;\n        }\n        pnVar8->elems[0] = pnVar11->elems[0];\n        pnVar11->kids[0] = pnVar11->kids[1];\n        pnVar11->counts[0] = pnVar11->counts[1];\n        pvVar12 = pnVar11->elems[1];\n        if (pvVar12 != (void *)0x0) {\n          pnVar11->kids[1] = pnVar11->kids[2];\n          pnVar11->counts[1] = pnVar11->counts[2];\n          pnVar11->elems[0] = pvVar12;\n          pvVar12 = pnVar11->elems[2];\n          if (pvVar12 == (void *)0x0) {\n            pvVar12 = (void *)0x1;\n          }\n          else {\n            pnVar11->kids[2] = pnVar11->kids[3];\n            pnVar11->counts[2] = pnVar11->counts[3];\n            pnVar11->elems[1] = pvVar12;\n            pvVar12 = (void *)0x2;\n          }\n        }\n        iVar3 = (int)pvVar12;\n        pnVar11->kids[(long)iVar3 + 1] = (node234 *)0x0;\n        pnVar11->counts[iVar3 + 1] = 0;\n        pnVar11->elems[iVar3] = (void *)0x0;\n        iVar3 = countnode234(pnVar5);\n        ptr->counts[local_50] = iVar3;\n        iVar3 = countnode234(pnVar11);\n        ptr->counts[local_50 + 1] = iVar3;\n        goto LAB_0012f7e4;\n      }\n      if (local_54 != 0) {\nLAB_0012f905:\n        local_54 = local_54 - 1;\n        index = index + 1 + ptr->counts[(int)local_54];\n      }\n    }\n    pnVar11 = ptr->kids[(int)local_54];\n    pnVar5 = ptr->kids[(long)(int)local_54 + 1];\n    pnVar5->kids[3] = pnVar5->kids[1];\n    pnVar5->counts[3] = pnVar5->counts[1];\n    pnVar5->elems[2] = pnVar5->elems[0];\n    pnVar5->kids[2] = pnVar5->kids[0];\n    pnVar5->counts[2] = pnVar5->counts[0];\n    pnVar5->elems[1] = ptr->elems[(int)local_54];\n    pnVar2 = pnVar11->kids[1];\n    pnVar5->kids[1] = pnVar2;\n    pnVar5->counts[1] = pnVar11->counts[1];\n    if (pnVar2 != (node234 *)0x0) {\n      pnVar2->parent = pnVar5;\n    }\n    pnVar5->elems[0] = pnVar11->elems[0];\n    pnVar2 = pnVar11->kids[0];\n    pnVar5->kids[0] = pnVar2;\n    pnVar5->counts[0] = pnVar11->counts[0];\n    if (pnVar2 != (node234 *)0x0) {\n      pnVar2->parent = pnVar5;\n    }\n    iVar3 = countnode234(pnVar5);\n    ptr->counts[(int)(local_54 + 1)] = iVar3;\n    safefree(pnVar11);\n    if ((int)local_54 < 3) {\n      pnVar11 = ptr->kids[(long)(int)local_54 + 1];\n      if (pnVar11 != (node234 *)0x0) {\n        lVar7 = (long)(int)(local_54 + 1);\n        do {\n          local_54 = (uint)lVar7;\n          ptr->kids[lVar7 + -1] = pnVar11;\n          ptr->counts[lVar7 + -1] = ptr->counts[lVar7];\n          pvVar12 = (void *)0x0;\n          if ((int)(local_54 - 1) < 2) {\n            pvVar12 = ptr->elems[lVar7];\n          }\n          ptr->elems[lVar7 + -1] = pvVar12;\n          if (2 < (int)local_54) goto LAB_0012fd6d;\n          pnVar11 = ptr->kids[lVar7 + 1];\n          lVar7 = lVar7 + 1;\n        } while (pnVar11 != (node234 *)0x0);\n      }\n      lVar7 = (long)(int)local_54;\n      ptr->kids[lVar7] = (node234 *)0x0;\n      ptr->counts[lVar7] = 0;\n      ptr->elems[lVar7] = (void *)0x0;\n    }\n    else {\nLAB_0012fd6d:\n      ptr->kids[(int)local_54] = (node234 *)0x0;\n      ptr->counts[(int)local_54] = 0;\n    }\n    if (ptr->elems[0] == (void *)0x0) {\n      t->root = pnVar5;\n      pnVar5->parent = (node234_conflict *)0x0;\n      safefree(ptr);\n    }\n  }\n  goto LAB_0012f7e4;\ncode_r0x0012fc20:\n  if (iVar9 < 2) {\nLAB_0012fbac:\n    pvVar12 = ptr->elems[iVar9 + 1];\n    if (pvVar12 != (void *)0x0) {\n      lVar7 = (long)(iVar9 + 1);\n      do {\n        iVar9 = (int)lVar7;\n        ptr->elems[lVar7 + -1] = pvVar12;\n        if (1 < iVar9) break;\n        pvVar12 = ptr->elems[lVar7 + 1];\n        lVar7 = lVar7 + 1;\n      } while (pvVar12 != (void *)0x0);\n    }\n    ptr->elems[iVar9] = (void *)0x0;\n    if (pnVar5 == (node234_conflict *)0x0) {\n      return pvVar14;\n    }\n  }\n  else {\n    ptr->elems[iVar9] = (void *)0x0;\n  }\n  do {\n    iVar9 = 0;\n    if ((pnVar5->kids[0] != ptr) && (iVar9 = 1, pnVar5->kids[1] != ptr)) {\n      iVar9 = (pnVar5->kids[2] != ptr) + 2;\n    }\n    pnVar5->counts[iVar9] = pnVar5->counts[iVar9] + -1;\n    ptr = ptr->parent;\n    pnVar5 = ptr->parent;\n  } while (pnVar5 != (node234_conflict *)0x0);\n  return pvVar14;\n}\n\n" (function_definition "void * delpos234_internal(tree234 *t,int index)\n\n{\n  node234 **ppnVar1;\n  node234 *pnVar2;\n  int iVar3;\n  int iVar4;\n  node234_conflict *pnVar5;\n  node234_conflict *pnVar6;\n  long lVar7;\n  node234_conflict *pnVar8;\n  int iVar9;\n  long lVar10;\n  node234 *pnVar11;\n  void *pvVar12;\n  node234 *pnVar13;\n  node234_conflict *ptr;\n  void *pvVar14;\n  uint local_54;\n  long local_50;\n  \n  iVar9 = -1;\n  pvVar14 = (void *)0x0;\n  pnVar5 = t->root;\nLAB_0012f7e4:\n  while (ptr = pnVar5, ptr != (node234_conflict *)0x0) {\n    if (index < ptr->counts[0]) goto LAB_0012f7d1;\n    index = index - (ptr->counts[0] + 1);\n    if (index < 0) {\n      iVar9 = 0;\nLAB_0012fdee:\n      if (pvVar14 == (void *)0x0) goto LAB_0012fdf7;\n      goto LAB_0012fa63;\n    }\n    if (index < ptr->counts[1]) {\n      local_54 = 1;\n    }\n    else {\n      index = index - (ptr->counts[1] + 1);\n      if (index < 0) {\n        iVar9 = 1;\n        goto LAB_0012fdee;\n      }\n      if (index < ptr->counts[2]) {\n        local_54 = 2;\n      }\n      else {\n        index = index - (ptr->counts[2] + 1);\n        if (index < 0) {\n          iVar9 = 2;\n          goto LAB_0012fdee;\n        }\n        local_54 = 3;\n      }\n    }\n    lVar7 = (long)(int)local_54;\n    ppnVar1 = ptr->kids + lVar7 + -1;\n    pnVar5 = ppnVar1[1];\n    if (pnVar5->elems[1] == (void *)0x0) {\n      pnVar8 = *ppnVar1;\n      if (pnVar8->elems[1] == (void *)0x0) {\n        if (local_54 < 3) {\n          local_50 = (long)(int)local_54;\n          pnVar11 = ((node234_conflict *)(ptr->kids + local_50 + -1))->kids[1];\n          pnVar8 = (node234_conflict *)(ptr->kids + local_50 + -1);\n          if (pnVar11 == (node234 *)0x0) goto LAB_0012f905;\n          goto LAB_0012fe3f;\n        }\n        goto LAB_0012f905;\n      }\n      pvVar12 = pnVar8->elems[2];\n      pnVar5->kids[2] = pnVar5->kids[1];\n      pnVar5->counts[2] = pnVar5->counts[1];\n      pnVar5->elems[1] = pnVar5->elems[0];\n      pnVar5->kids[1] = pnVar5->kids[0];\n      pnVar5->counts[1] = pnVar5->counts[0];\n      pnVar5->elems[0] = ppnVar1[6];\n      lVar10 = (long)(int)((pvVar12 != (void *)0x0) + 1);\n      pnVar11 = pnVar8->kids[lVar10 + 1];\n      pnVar5->kids[0] = pnVar11;\n      pnVar5->counts[0] = pnVar8->counts[lVar10 + 1];\n      if (pnVar11 != (node234 *)0x0) {\n        pnVar11->parent = pnVar5;\n      }\n      ppnVar1[6] = (node234 *)pnVar8->elems[lVar10];\n      pnVar8->kids[lVar10 + 1] = (node234 *)0x0;\n      pnVar8->counts[lVar10 + 1] = 0;\n      pnVar8->elems[lVar10] = (void *)0x0;\n      iVar3 = countnode234(pnVar5);\n      ptr->counts[lVar7] = iVar3;\n      iVar3 = ptr->counts[lVar7 + -1];\n      iVar4 = countnode234(pnVar8);\n      ptr->counts[lVar7 + -1] = iVar4;\n      index = (index + iVar3) - iVar4;\n    }\n  }\n  if (pvVar14 == (void *)0x0) {\nLAB_0012fdf7:\n    pvVar14 = ptr->elems[iVar9];\n  }\n  if (iVar9 == -1) {\n    return (void *)0x0;\n  }\nLAB_0012fa63:\n  pnVar5 = ptr->parent;\n  if (pnVar5 == (node234_conflict *)0x0) {\n    if (ptr->elems[1] == (void *)0x0) {\n      if (ptr->kids[0] == (node234 *)0x0) {\n        safefree(ptr);\n        t->root = (node234_conflict *)0x0;\n        return pvVar14;\n      }\n    }\n    else if (ptr->kids[0] == (node234 *)0x0) {\n      pnVar5 = (node234_conflict *)0x0;\n      if (1 < iVar9) {\n        ptr->elems[iVar9] = (void *)0x0;\n        return pvVar14;\n      }\n      goto LAB_0012fbac;\n    }\n  }\n  else if ((ptr->kids[0] == (node234 *)0x0) && (ptr->elems[1] != (void *)0x0))\n  goto code_r0x0012fc20;\n  pnVar5 = ptr->kids[iVar9];\n  pnVar8 = pnVar5;\n  if (pnVar5->elems[1] == (void *)0x0) {\n    pnVar11 = ptr->kids[(long)iVar9 + 1];\n    pnVar2 = pnVar11;\n    if (pnVar11->elems[1] == (void *)0x0) {\n      pnVar5->elems[1] = ptr->elems[iVar9];\n      pnVar2 = pnVar11->kids[0];\n      pnVar5->kids[2] = pnVar2;\n      pnVar5->counts[2] = pnVar11->counts[0];\n      if (pnVar2 != (node234 *)0x0) {\n        pnVar2->parent = pnVar5;\n      }\n      pnVar5->elems[2] = pnVar11->elems[0];\n      pnVar2 = pnVar11->kids[1];\n      pnVar5->kids[3] = pnVar2;\n      pnVar5->counts[3] = pnVar11->counts[1];\n      if (pnVar2 != (node234 *)0x0) {\n        pnVar2->parent = pnVar5;\n      }\n      safefree(pnVar11);\n      iVar3 = countnode234(pnVar5);\n      ptr->counts[iVar9] = iVar3;\n      iVar3 = iVar9;\n      if ((iVar9 < 2) && (pvVar12 = ptr->elems[(long)iVar9 + 1], pvVar12 != (void *)0x0)) {\n        lVar7 = (long)(iVar9 + 1);\n        do {\n          iVar3 = (int)lVar7;\n          ptr->elems[lVar7 + -1] = pvVar12;\n          ptr->kids[lVar7] = ptr->kids[lVar7 + 1];\n          ptr->counts[lVar7] = ptr->counts[lVar7 + 1];\n          if (1 < iVar3) break;\n          pvVar12 = ptr->elems[lVar7 + 1];\n          lVar7 = lVar7 + 1;\n        } while (pvVar12 != (void *)0x0);\n      }\n      ptr->elems[iVar3] = (void *)0x0;\n      ptr->kids[(long)iVar3 + 1] = (node234 *)0x0;\n      ptr->counts[iVar3 + 1] = 0;\n      if (ptr->elems[0] == (void *)0x0) {\n        t->root = pnVar5;\n        pnVar5->parent = (node234_conflict *)0x0;\n        safefree(ptr);\n      }\n      index = pnVar5->counts[1] + pnVar5->counts[0] + 1;\n    }\n    else {\n      do {\n        pnVar13 = pnVar2;\n        pnVar2 = pnVar13->kids[0];\n      } while (pnVar2 != (node234 *)0x0);\n      ptr->elems[iVar9] = pnVar13->elems[0];\n      index = 0;\n      pnVar5 = pnVar11;\n    }\n  }\n  else {\n    while (pnVar6 = pnVar8, pnVar6->kids[0] != (node234 *)0x0) {\n      pnVar8 = pnVar6->kids[3];\n      if (((pnVar6->kids[3] == (node234 *)0x0) &&\n          (pnVar8 = pnVar6->kids[2], pnVar6->kids[2] == (node234 *)0x0)) &&\n         (pnVar8 = pnVar6->kids[1], pnVar6->kids[1] == (node234 *)0x0)) {\n        pnVar8 = pnVar6->kids[0];\n      }\n    }\n    pvVar12 = pnVar6->elems[2];\n    if ((pvVar12 == (void *)0x0) && (pvVar12 = pnVar6->elems[1], pvVar12 == (void *)0x0)) {\n      pvVar12 = pnVar6->elems[0];\n    }\n    ptr->elems[iVar9] = pvVar12;\n    index = ptr->counts[iVar9] + -1;\n  }\n  goto LAB_0012f7e4;\nLAB_0012f7d1:\n  pnVar5 = ptr->kids[0];\n  if (pnVar5->elems[1] == (void *)0x0) {\n    pnVar11 = ptr->kids[1];\n    local_50 = 0;\n    local_54 = 0;\n    pnVar8 = ptr;\n    if (pnVar11 != (node234 *)0x0) {\nLAB_0012fe3f:\n      if (pnVar11->elems[1] != (void *)0x0) {\n        pnVar5->elems[1] = pnVar8->elems[0];\n        pnVar2 = pnVar11->kids[0];\n        pnVar5->kids[2] = pnVar2;\n        pnVar5->counts[2] = pnVar11->counts[0];\n        if (pnVar2 != (node234 *)0x0) {\n          pnVar2->parent = pnVar5;\n        }\n        pnVar8->elems[0] = pnVar11->elems[0];\n        pnVar11->kids[0] = pnVar11->kids[1];\n        pnVar11->counts[0] = pnVar11->counts[1];\n        pvVar12 = pnVar11->elems[1];\n        if (pvVar12 != (void *)0x0) {\n          pnVar11->kids[1] = pnVar11->kids[2];\n          pnVar11->counts[1] = pnVar11->counts[2];\n          pnVar11->elems[0] = pvVar12;\n          pvVar12 = pnVar11->elems[2];\n          if (pvVar12 == (void *)0x0) {\n            pvVar12 = (void *)0x1;\n          }\n          else {\n            pnVar11->kids[2] = pnVar11->kids[3];\n            pnVar11->counts[2] = pnVar11->counts[3];\n            pnVar11->elems[1] = pvVar12;\n            pvVar12 = (void *)0x2;\n          }\n        }\n        iVar3 = (int)pvVar12;\n        pnVar11->kids[(long)iVar3 + 1] = (node234 *)0x0;\n        pnVar11->counts[iVar3 + 1] = 0;\n        pnVar11->elems[iVar3] = (void *)0x0;\n        iVar3 = countnode234(pnVar5);\n        ptr->counts[local_50] = iVar3;\n        iVar3 = countnode234(pnVar11);\n        ptr->counts[local_50 + 1] = iVar3;\n        goto LAB_0012f7e4;\n      }\n      if (local_54 != 0) {\nLAB_0012f905:\n        local_54 = local_54 - 1;\n        index = index + 1 + ptr->counts[(int)local_54];\n      }\n    }\n    pnVar11 = ptr->kids[(int)local_54];\n    pnVar5 = ptr->kids[(long)(int)local_54 + 1];\n    pnVar5->kids[3] = pnVar5->kids[1];\n    pnVar5->counts[3] = pnVar5->counts[1];\n    pnVar5->elems[2] = pnVar5->elems[0];\n    pnVar5->kids[2] = pnVar5->kids[0];\n    pnVar5->counts[2] = pnVar5->counts[0];\n    pnVar5->elems[1] = ptr->elems[(int)local_54];\n    pnVar2 = pnVar11->kids[1];\n    pnVar5->kids[1] = pnVar2;\n    pnVar5->counts[1] = pnVar11->counts[1];\n    if (pnVar2 != (node234 *)0x0) {\n      pnVar2->parent = pnVar5;\n    }\n    pnVar5->elems[0] = pnVar11->elems[0];\n    pnVar2 = pnVar11->kids[0];\n    pnVar5->kids[0] = pnVar2;\n    pnVar5->counts[0] = pnVar11->counts[0];\n    if (pnVar2 != (node234 *)0x0) {\n      pnVar2->parent = pnVar5;\n    }\n    iVar3 = countnode234(pnVar5);\n    ptr->counts[(int)(local_54 + 1)] = iVar3;\n    safefree(pnVar11);\n    if ((int)local_54 < 3) {\n      pnVar11 = ptr->kids[(long)(int)local_54 + 1];\n      if (pnVar11 != (node234 *)0x0) {\n        lVar7 = (long)(int)(local_54 + 1);\n        do {\n          local_54 = (uint)lVar7;\n          ptr->kids[lVar7 + -1] = pnVar11;\n          ptr->counts[lVar7 + -1] = ptr->counts[lVar7];\n          pvVar12 = (void *)0x0;\n          if ((int)(local_54 - 1) < 2) {\n            pvVar12 = ptr->elems[lVar7];\n          }\n          ptr->elems[lVar7 + -1] = pvVar12;\n          if (2 < (int)local_54) goto LAB_0012fd6d;\n          pnVar11 = ptr->kids[lVar7 + 1];\n          lVar7 = lVar7 + 1;\n        } while (pnVar11 != (node234 *)0x0);\n      }\n      lVar7 = (long)(int)local_54;\n      ptr->kids[lVar7] = (node234 *)0x0;\n      ptr->counts[lVar7] = 0;\n      ptr->elems[lVar7] = (void *)0x0;\n    }\n    else {\nLAB_0012fd6d:\n      ptr->kids[(int)local_54] = (node234 *)0x0;\n      ptr->counts[(int)local_54] = 0;\n    }\n    if (ptr->elems[0] == (void *)0x0) {\n      t->root = pnVar5;\n      pnVar5->parent = (node234_conflict *)0x0;\n      safefree(ptr);\n    }\n  }\n  goto LAB_0012f7e4;\ncode_r0x0012fc20:\n  if (iVar9 < 2) {\nLAB_0012fbac:\n    pvVar12 = ptr->elems[iVar9 + 1];\n    if (pvVar12 != (void *)0x0) {\n      lVar7 = (long)(iVar9 + 1);\n      do {\n        iVar9 = (int)lVar7;\n        ptr->elems[lVar7 + -1] = pvVar12;\n        if (1 < iVar9) break;\n        pvVar12 = ptr->elems[lVar7 + 1];\n        lVar7 = lVar7 + 1;\n      } while (pvVar12 != (void *)0x0);\n    }\n    ptr->elems[iVar9] = (void *)0x0;\n    if (pnVar5 == (node234_conflict *)0x0) {\n      return pvVar14;\n    }\n  }\n  else {\n    ptr->elems[iVar9] = (void *)0x0;\n  }\n  do {\n    iVar9 = 0;\n    if ((pnVar5->kids[0] != ptr) && (iVar9 = 1, pnVar5->kids[1] != ptr)) {\n      iVar9 = (pnVar5->kids[2] != ptr) + 2;\n    }\n    pnVar5->counts[iVar9] = pnVar5->counts[iVar9] + -1;\n    ptr = ptr->parent;\n    pnVar5 = ptr->parent;\n  } while (pnVar5 != (node234_conflict *)0x0);\n  return pvVar14;\n}" primitive_type (pointer_declarator "* delpos234_internal(tree234 *t,int index)" * (function_declarator "delpos234_internal(tree234 *t,int index)" identifier (parameter_list "(tree234 *t,int index)" ( (parameter_declaration "tree234 *t" type_identifier (pointer_declarator "*t" * identifier)) , (parameter_declaration "int index" primitive_type identifier) )))) (compound_statement "{\n  node234 **ppnVar1;\n  node234 *pnVar2;\n  int iVar3;\n  int iVar4;\n  node234_conflict *pnVar5;\n  node234_conflict *pnVar6;\n  long lVar7;\n  node234_conflict *pnVar8;\n  int iVar9;\n  long lVar10;\n  node234 *pnVar11;\n  void *pvVar12;\n  node234 *pnVar13;\n  node234_conflict *ptr;\n  void *pvVar14;\n  uint local_54;\n  long local_50;\n  \n  iVar9 = -1;\n  pvVar14 = (void *)0x0;\n  pnVar5 = t->root;\nLAB_0012f7e4:\n  while (ptr = pnVar5, ptr != (node234_conflict *)0x0) {\n    if (index < ptr->counts[0]) goto LAB_0012f7d1;\n    index = index - (ptr->counts[0] + 1);\n    if (index < 0) {\n      iVar9 = 0;\nLAB_0012fdee:\n      if (pvVar14 == (void *)0x0) goto LAB_0012fdf7;\n      goto LAB_0012fa63;\n    }\n    if (index < ptr->counts[1]) {\n      local_54 = 1;\n    }\n    else {\n      index = index - (ptr->counts[1] + 1);\n      if (index < 0) {\n        iVar9 = 1;\n        goto LAB_0012fdee;\n      }\n      if (index < ptr->counts[2]) {\n        local_54 = 2;\n      }\n      else {\n        index = index - (ptr->counts[2] + 1);\n        if (index < 0) {\n          iVar9 = 2;\n          goto LAB_0012fdee;\n        }\n        local_54 = 3;\n      }\n    }\n    lVar7 = (long)(int)local_54;\n    ppnVar1 = ptr->kids + lVar7 + -1;\n    pnVar5 = ppnVar1[1];\n    if (pnVar5->elems[1] == (void *)0x0) {\n      pnVar8 = *ppnVar1;\n      if (pnVar8->elems[1] == (void *)0x0) {\n        if (local_54 < 3) {\n          local_50 = (long)(int)local_54;\n          pnVar11 = ((node234_conflict *)(ptr->kids + local_50 + -1))->kids[1];\n          pnVar8 = (node234_conflict *)(ptr->kids + local_50 + -1);\n          if (pnVar11 == (node234 *)0x0) goto LAB_0012f905;\n          goto LAB_0012fe3f;\n        }\n        goto LAB_0012f905;\n      }\n      pvVar12 = pnVar8->elems[2];\n      pnVar5->kids[2] = pnVar5->kids[1];\n      pnVar5->counts[2] = pnVar5->counts[1];\n      pnVar5->elems[1] = pnVar5->elems[0];\n      pnVar5->kids[1] = pnVar5->kids[0];\n      pnVar5->counts[1] = pnVar5->counts[0];\n      pnVar5->elems[0] = ppnVar1[6];\n      lVar10 = (long)(int)((pvVar12 != (void *)0x0) + 1);\n      pnVar11 = pnVar8->kids[lVar10 + 1];\n      pnVar5->kids[0] = pnVar11;\n      pnVar5->counts[0] = pnVar8->counts[lVar10 + 1];\n      if (pnVar11 != (node234 *)0x0) {\n        pnVar11->parent = pnVar5;\n      }\n      ppnVar1[6] = (node234 *)pnVar8->elems[lVar10];\n      pnVar8->kids[lVar10 + 1] = (node234 *)0x0;\n      pnVar8->counts[lVar10 + 1] = 0;\n      pnVar8->elems[lVar10] = (void *)0x0;\n      iVar3 = countnode234(pnVar5);\n      ptr->counts[lVar7] = iVar3;\n      iVar3 = ptr->counts[lVar7 + -1];\n      iVar4 = countnode234(pnVar8);\n      ptr->counts[lVar7 + -1] = iVar4;\n      index = (index + iVar3) - iVar4;\n    }\n  }\n  if (pvVar14 == (void *)0x0) {\nLAB_0012fdf7:\n    pvVar14 = ptr->elems[iVar9];\n  }\n  if (iVar9 == -1) {\n    return (void *)0x0;\n  }\nLAB_0012fa63:\n  pnVar5 = ptr->parent;\n  if (pnVar5 == (node234_conflict *)0x0) {\n    if (ptr->elems[1] == (void *)0x0) {\n      if (ptr->kids[0] == (node234 *)0x0) {\n        safefree(ptr);\n        t->root = (node234_conflict *)0x0;\n        return pvVar14;\n      }\n    }\n    else if (ptr->kids[0] == (node234 *)0x0) {\n      pnVar5 = (node234_conflict *)0x0;\n      if (1 < iVar9) {\n        ptr->elems[iVar9] = (void *)0x0;\n        return pvVar14;\n      }\n      goto LAB_0012fbac;\n    }\n  }\n  else if ((ptr->kids[0] == (node234 *)0x0) && (ptr->elems[1] != (void *)0x0))\n  goto code_r0x0012fc20;\n  pnVar5 = ptr->kids[iVar9];\n  pnVar8 = pnVar5;\n  if (pnVar5->elems[1] == (void *)0x0) {\n    pnVar11 = ptr->kids[(long)iVar9 + 1];\n    pnVar2 = pnVar11;\n    if (pnVar11->elems[1] == (void *)0x0) {\n      pnVar5->elems[1] = ptr->elems[iVar9];\n      pnVar2 = pnVar11->kids[0];\n      pnVar5->kids[2] = pnVar2;\n      pnVar5->counts[2] = pnVar11->counts[0];\n      if (pnVar2 != (node234 *)0x0) {\n        pnVar2->parent = pnVar5;\n      }\n      pnVar5->elems[2] = pnVar11->elems[0];\n      pnVar2 = pnVar11->kids[1];\n      pnVar5->kids[3] = pnVar2;\n      pnVar5->counts[3] = pnVar11->counts[1];\n      if (pnVar2 != (node234 *)0x0) {\n        pnVar2->parent = pnVar5;\n      }\n      safefree(pnVar11);\n      iVar3 = countnode234(pnVar5);\n      ptr->counts[iVar9] = iVar3;\n      iVar3 = iVar9;\n      if ((iVar9 < 2) && (pvVar12 = ptr->elems[(long)iVar9 + 1], pvVar12 != (void *)0x0)) {\n        lVar7 = (long)(iVar9 + 1);\n        do {\n          iVar3 = (int)lVar7;\n          ptr->elems[lVar7 + -1] = pvVar12;\n          ptr->kids[lVar7] = ptr->kids[lVar7 + 1];\n          ptr->counts[lVar7] = ptr->counts[lVar7 + 1];\n          if (1 < iVar3) break;\n          pvVar12 = ptr->elems[lVar7 + 1];\n          lVar7 = lVar7 + 1;\n        } while (pvVar12 != (void *)0x0);\n      }\n      ptr->elems[iVar3] = (void *)0x0;\n      ptr->kids[(long)iVar3 + 1] = (node234 *)0x0;\n      ptr->counts[iVar3 + 1] = 0;\n      if (ptr->elems[0] == (void *)0x0) {\n        t->root = pnVar5;\n        pnVar5->parent = (node234_conflict *)0x0;\n        safefree(ptr);\n      }\n      index = pnVar5->counts[1] + pnVar5->counts[0] + 1;\n    }\n    else {\n      do {\n        pnVar13 = pnVar2;\n        pnVar2 = pnVar13->kids[0];\n      } while (pnVar2 != (node234 *)0x0);\n      ptr->elems[iVar9] = pnVar13->elems[0];\n      index = 0;\n      pnVar5 = pnVar11;\n    }\n  }\n  else {\n    while (pnVar6 = pnVar8, pnVar6->kids[0] != (node234 *)0x0) {\n      pnVar8 = pnVar6->kids[3];\n      if (((pnVar6->kids[3] == (node234 *)0x0) &&\n          (pnVar8 = pnVar6->kids[2], pnVar6->kids[2] == (node234 *)0x0)) &&\n         (pnVar8 = pnVar6->kids[1], pnVar6->kids[1] == (node234 *)0x0)) {\n        pnVar8 = pnVar6->kids[0];\n      }\n    }\n    pvVar12 = pnVar6->elems[2];\n    if ((pvVar12 == (void *)0x0) && (pvVar12 = pnVar6->elems[1], pvVar12 == (void *)0x0)) {\n      pvVar12 = pnVar6->elems[0];\n    }\n    ptr->elems[iVar9] = pvVar12;\n    index = ptr->counts[iVar9] + -1;\n  }\n  goto LAB_0012f7e4;\nLAB_0012f7d1:\n  pnVar5 = ptr->kids[0];\n  if (pnVar5->elems[1] == (void *)0x0) {\n    pnVar11 = ptr->kids[1];\n    local_50 = 0;\n    local_54 = 0;\n    pnVar8 = ptr;\n    if (pnVar11 != (node234 *)0x0) {\nLAB_0012fe3f:\n      if (pnVar11->elems[1] != (void *)0x0) {\n        pnVar5->elems[1] = pnVar8->elems[0];\n        pnVar2 = pnVar11->kids[0];\n        pnVar5->kids[2] = pnVar2;\n        pnVar5->counts[2] = pnVar11->counts[0];\n        if (pnVar2 != (node234 *)0x0) {\n          pnVar2->parent = pnVar5;\n        }\n        pnVar8->elems[0] = pnVar11->elems[0];\n        pnVar11->kids[0] = pnVar11->kids[1];\n        pnVar11->counts[0] = pnVar11->counts[1];\n        pvVar12 = pnVar11->elems[1];\n        if (pvVar12 != (void *)0x0) {\n          pnVar11->kids[1] = pnVar11->kids[2];\n          pnVar11->counts[1] = pnVar11->counts[2];\n          pnVar11->elems[0] = pvVar12;\n          pvVar12 = pnVar11->elems[2];\n          if (pvVar12 == (void *)0x0) {\n            pvVar12 = (void *)0x1;\n          }\n          else {\n            pnVar11->kids[2] = pnVar11->kids[3];\n            pnVar11->counts[2] = pnVar11->counts[3];\n            pnVar11->elems[1] = pvVar12;\n            pvVar12 = (void *)0x2;\n          }\n        }\n        iVar3 = (int)pvVar12;\n        pnVar11->kids[(long)iVar3 + 1] = (node234 *)0x0;\n        pnVar11->counts[iVar3 + 1] = 0;\n        pnVar11->elems[iVar3] = (void *)0x0;\n        iVar3 = countnode234(pnVar5);\n        ptr->counts[local_50] = iVar3;\n        iVar3 = countnode234(pnVar11);\n        ptr->counts[local_50 + 1] = iVar3;\n        goto LAB_0012f7e4;\n      }\n      if (local_54 != 0) {\nLAB_0012f905:\n        local_54 = local_54 - 1;\n        index = index + 1 + ptr->counts[(int)local_54];\n      }\n    }\n    pnVar11 = ptr->kids[(int)local_54];\n    pnVar5 = ptr->kids[(long)(int)local_54 + 1];\n    pnVar5->kids[3] = pnVar5->kids[1];\n    pnVar5->counts[3] = pnVar5->counts[1];\n    pnVar5->elems[2] = pnVar5->elems[0];\n    pnVar5->kids[2] = pnVar5->kids[0];\n    pnVar5->counts[2] = pnVar5->counts[0];\n    pnVar5->elems[1] = ptr->elems[(int)local_54];\n    pnVar2 = pnVar11->kids[1];\n    pnVar5->kids[1] = pnVar2;\n    pnVar5->counts[1] = pnVar11->counts[1];\n    if (pnVar2 != (node234 *)0x0) {\n      pnVar2->parent = pnVar5;\n    }\n    pnVar5->elems[0] = pnVar11->elems[0];\n    pnVar2 = pnVar11->kids[0];\n    pnVar5->kids[0] = pnVar2;\n    pnVar5->counts[0] = pnVar11->counts[0];\n    if (pnVar2 != (node234 *)0x0) {\n      pnVar2->parent = pnVar5;\n    }\n    iVar3 = countnode234(pnVar5);\n    ptr->counts[(int)(local_54 + 1)] = iVar3;\n    safefree(pnVar11);\n    if ((int)local_54 < 3) {\n      pnVar11 = ptr->kids[(long)(int)local_54 + 1];\n      if (pnVar11 != (node234 *)0x0) {\n        lVar7 = (long)(int)(local_54 + 1);\n        do {\n          local_54 = (uint)lVar7;\n          ptr->kids[lVar7 + -1] = pnVar11;\n          ptr->counts[lVar7 + -1] = ptr->counts[lVar7];\n          pvVar12 = (void *)0x0;\n          if ((int)(local_54 - 1) < 2) {\n            pvVar12 = ptr->elems[lVar7];\n          }\n          ptr->elems[lVar7 + -1] = pvVar12;\n          if (2 < (int)local_54) goto LAB_0012fd6d;\n          pnVar11 = ptr->kids[lVar7 + 1];\n          lVar7 = lVar7 + 1;\n        } while (pnVar11 != (node234 *)0x0);\n      }\n      lVar7 = (long)(int)local_54;\n      ptr->kids[lVar7] = (node234 *)0x0;\n      ptr->counts[lVar7] = 0;\n      ptr->elems[lVar7] = (void *)0x0;\n    }\n    else {\nLAB_0012fd6d:\n      ptr->kids[(int)local_54] = (node234 *)0x0;\n      ptr->counts[(int)local_54] = 0;\n    }\n    if (ptr->elems[0] == (void *)0x0) {\n      t->root = pnVar5;\n      pnVar5->parent = (node234_conflict *)0x0;\n      safefree(ptr);\n    }\n  }\n  goto LAB_0012f7e4;\ncode_r0x0012fc20:\n  if (iVar9 < 2) {\nLAB_0012fbac:\n    pvVar12 = ptr->elems[iVar9 + 1];\n    if (pvVar12 != (void *)0x0) {\n      lVar7 = (long)(iVar9 + 1);\n      do {\n        iVar9 = (int)lVar7;\n        ptr->elems[lVar7 + -1] = pvVar12;\n        if (1 < iVar9) break;\n        pvVar12 = ptr->elems[lVar7 + 1];\n        lVar7 = lVar7 + 1;\n      } while (pvVar12 != (void *)0x0);\n    }\n    ptr->elems[iVar9] = (void *)0x0;\n    if (pnVar5 == (node234_conflict *)0x0) {\n      return pvVar14;\n    }\n  }\n  else {\n    ptr->elems[iVar9] = (void *)0x0;\n  }\n  do {\n    iVar9 = 0;\n    if ((pnVar5->kids[0] != ptr) && (iVar9 = 1, pnVar5->kids[1] != ptr)) {\n      iVar9 = (pnVar5->kids[2] != ptr) + 2;\n    }\n    pnVar5->counts[iVar9] = pnVar5->counts[iVar9] + -1;\n    ptr = ptr->parent;\n    pnVar5 = ptr->parent;\n  } while (pnVar5 != (node234_conflict *)0x0);\n  return pvVar14;\n}" { (declaration "node234 **ppnVar1;" type_identifier (pointer_declarator "**ppnVar1" * (pointer_declarator "*ppnVar1" * identifier)) ;) (declaration "node234 *pnVar2;" type_identifier (pointer_declarator "*pnVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "node234_conflict *pnVar5;" type_identifier (pointer_declarator "*pnVar5" * identifier) ;) (declaration "node234_conflict *pnVar6;" type_identifier (pointer_declarator "*pnVar6" * identifier) ;) (declaration "long lVar7;" (sized_type_specifier "long" long) identifier ;) (declaration "node234_conflict *pnVar8;" type_identifier (pointer_declarator "*pnVar8" * identifier) ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "long lVar10;" (sized_type_specifier "long" long) identifier ;) (declaration "node234 *pnVar11;" type_identifier (pointer_declarator "*pnVar11" * identifier) ;) (declaration "void *pvVar12;" primitive_type (pointer_declarator "*pvVar12" * identifier) ;) (declaration "node234 *pnVar13;" type_identifier (pointer_declarator "*pnVar13" * identifier) ;) (declaration "node234_conflict *ptr;" type_identifier (pointer_declarator "*ptr" * identifier) ;) (declaration "void *pvVar14;" primitive_type (pointer_declarator "*pvVar14" * identifier) ;) (declaration "uint local_54;" type_identifier identifier ;) (declaration "long local_50;" (sized_type_specifier "long" long) identifier ;) (expression_statement "iVar9 = -1;" (assignment_expression "iVar9 = -1" identifier = number_literal) ;) (expression_statement "pvVar14 = (void *)0x0;" (assignment_expression "pvVar14 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pnVar5 = t->root;" (assignment_expression "pnVar5 = t->root" identifier = (field_expression "t->root" identifier -> field_identifier)) ;) (labeled_statement "LAB_0012f7e4:\n  while (ptr = pnVar5, ptr != (node234_conflict *)0x0) {\n    if (index < ptr->counts[0]) goto LAB_0012f7d1;\n    index = index - (ptr->counts[0] + 1);\n    if (index < 0) {\n      iVar9 = 0;\nLAB_0012fdee:\n      if (pvVar14 == (void *)0x0) goto LAB_0012fdf7;\n      goto LAB_0012fa63;\n    }\n    if (index < ptr->counts[1]) {\n      local_54 = 1;\n    }\n    else {\n      index = index - (ptr->counts[1] + 1);\n      if (index < 0) {\n        iVar9 = 1;\n        goto LAB_0012fdee;\n      }\n      if (index < ptr->counts[2]) {\n        local_54 = 2;\n      }\n      else {\n        index = index - (ptr->counts[2] + 1);\n        if (index < 0) {\n          iVar9 = 2;\n          goto LAB_0012fdee;\n        }\n        local_54 = 3;\n      }\n    }\n    lVar7 = (long)(int)local_54;\n    ppnVar1 = ptr->kids + lVar7 + -1;\n    pnVar5 = ppnVar1[1];\n    if (pnVar5->elems[1] == (void *)0x0) {\n      pnVar8 = *ppnVar1;\n      if (pnVar8->elems[1] == (void *)0x0) {\n        if (local_54 < 3) {\n          local_50 = (long)(int)local_54;\n          pnVar11 = ((node234_conflict *)(ptr->kids + local_50 + -1))->kids[1];\n          pnVar8 = (node234_conflict *)(ptr->kids + local_50 + -1);\n          if (pnVar11 == (node234 *)0x0) goto LAB_0012f905;\n          goto LAB_0012fe3f;\n        }\n        goto LAB_0012f905;\n      }\n      pvVar12 = pnVar8->elems[2];\n      pnVar5->kids[2] = pnVar5->kids[1];\n      pnVar5->counts[2] = pnVar5->counts[1];\n      pnVar5->elems[1] = pnVar5->elems[0];\n      pnVar5->kids[1] = pnVar5->kids[0];\n      pnVar5->counts[1] = pnVar5->counts[0];\n      pnVar5->elems[0] = ppnVar1[6];\n      lVar10 = (long)(int)((pvVar12 != (void *)0x0) + 1);\n      pnVar11 = pnVar8->kids[lVar10 + 1];\n      pnVar5->kids[0] = pnVar11;\n      pnVar5->counts[0] = pnVar8->counts[lVar10 + 1];\n      if (pnVar11 != (node234 *)0x0) {\n        pnVar11->parent = pnVar5;\n      }\n      ppnVar1[6] = (node234 *)pnVar8->elems[lVar10];\n      pnVar8->kids[lVar10 + 1] = (node234 *)0x0;\n      pnVar8->counts[lVar10 + 1] = 0;\n      pnVar8->elems[lVar10] = (void *)0x0;\n      iVar3 = countnode234(pnVar5);\n      ptr->counts[lVar7] = iVar3;\n      iVar3 = ptr->counts[lVar7 + -1];\n      iVar4 = countnode234(pnVar8);\n      ptr->counts[lVar7 + -1] = iVar4;\n      index = (index + iVar3) - iVar4;\n    }\n  }" statement_identifier : (while_statement "while (ptr = pnVar5, ptr != (node234_conflict *)0x0) {\n    if (index < ptr->counts[0]) goto LAB_0012f7d1;\n    index = index - (ptr->counts[0] + 1);\n    if (index < 0) {\n      iVar9 = 0;\nLAB_0012fdee:\n      if (pvVar14 == (void *)0x0) goto LAB_0012fdf7;\n      goto LAB_0012fa63;\n    }\n    if (index < ptr->counts[1]) {\n      local_54 = 1;\n    }\n    else {\n      index = index - (ptr->counts[1] + 1);\n      if (index < 0) {\n        iVar9 = 1;\n        goto LAB_0012fdee;\n      }\n      if (index < ptr->counts[2]) {\n        local_54 = 2;\n      }\n      else {\n        index = index - (ptr->counts[2] + 1);\n        if (index < 0) {\n          iVar9 = 2;\n          goto LAB_0012fdee;\n        }\n        local_54 = 3;\n      }\n    }\n    lVar7 = (long)(int)local_54;\n    ppnVar1 = ptr->kids + lVar7 + -1;\n    pnVar5 = ppnVar1[1];\n    if (pnVar5->elems[1] == (void *)0x0) {\n      pnVar8 = *ppnVar1;\n      if (pnVar8->elems[1] == (void *)0x0) {\n        if (local_54 < 3) {\n          local_50 = (long)(int)local_54;\n          pnVar11 = ((node234_conflict *)(ptr->kids + local_50 + -1))->kids[1];\n          pnVar8 = (node234_conflict *)(ptr->kids + local_50 + -1);\n          if (pnVar11 == (node234 *)0x0) goto LAB_0012f905;\n          goto LAB_0012fe3f;\n        }\n        goto LAB_0012f905;\n      }\n      pvVar12 = pnVar8->elems[2];\n      pnVar5->kids[2] = pnVar5->kids[1];\n      pnVar5->counts[2] = pnVar5->counts[1];\n      pnVar5->elems[1] = pnVar5->elems[0];\n      pnVar5->kids[1] = pnVar5->kids[0];\n      pnVar5->counts[1] = pnVar5->counts[0];\n      pnVar5->elems[0] = ppnVar1[6];\n      lVar10 = (long)(int)((pvVar12 != (void *)0x0) + 1);\n      pnVar11 = pnVar8->kids[lVar10 + 1];\n      pnVar5->kids[0] = pnVar11;\n      pnVar5->counts[0] = pnVar8->counts[lVar10 + 1];\n      if (pnVar11 != (node234 *)0x0) {\n        pnVar11->parent = pnVar5;\n      }\n      ppnVar1[6] = (node234 *)pnVar8->elems[lVar10];\n      pnVar8->kids[lVar10 + 1] = (node234 *)0x0;\n      pnVar8->counts[lVar10 + 1] = 0;\n      pnVar8->elems[lVar10] = (void *)0x0;\n      iVar3 = countnode234(pnVar5);\n      ptr->counts[lVar7] = iVar3;\n      iVar3 = ptr->counts[lVar7 + -1];\n      iVar4 = countnode234(pnVar8);\n      ptr->counts[lVar7 + -1] = iVar4;\n      index = (index + iVar3) - iVar4;\n    }\n  }" while (parenthesized_expression "(ptr = pnVar5, ptr != (node234_conflict *)0x0)" ( (comma_expression "ptr = pnVar5, ptr != (node234_conflict *)0x0" (assignment_expression "ptr = pnVar5" identifier = identifier) , (binary_expression "ptr != (node234_conflict *)0x0" identifier != (cast_expression "(node234_conflict *)0x0" ( (type_descriptor "node234_conflict *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) )) (compound_statement "{\n    if (index < ptr->counts[0]) goto LAB_0012f7d1;\n    index = index - (ptr->counts[0] + 1);\n    if (index < 0) {\n      iVar9 = 0;\nLAB_0012fdee:\n      if (pvVar14 == (void *)0x0) goto LAB_0012fdf7;\n      goto LAB_0012fa63;\n    }\n    if (index < ptr->counts[1]) {\n      local_54 = 1;\n    }\n    else {\n      index = index - (ptr->counts[1] + 1);\n      if (index < 0) {\n        iVar9 = 1;\n        goto LAB_0012fdee;\n      }\n      if (index < ptr->counts[2]) {\n        local_54 = 2;\n      }\n      else {\n        index = index - (ptr->counts[2] + 1);\n        if (index < 0) {\n          iVar9 = 2;\n          goto LAB_0012fdee;\n        }\n        local_54 = 3;\n      }\n    }\n    lVar7 = (long)(int)local_54;\n    ppnVar1 = ptr->kids + lVar7 + -1;\n    pnVar5 = ppnVar1[1];\n    if (pnVar5->elems[1] == (void *)0x0) {\n      pnVar8 = *ppnVar1;\n      if (pnVar8->elems[1] == (void *)0x0) {\n        if (local_54 < 3) {\n          local_50 = (long)(int)local_54;\n          pnVar11 = ((node234_conflict *)(ptr->kids + local_50 + -1))->kids[1];\n          pnVar8 = (node234_conflict *)(ptr->kids + local_50 + -1);\n          if (pnVar11 == (node234 *)0x0) goto LAB_0012f905;\n          goto LAB_0012fe3f;\n        }\n        goto LAB_0012f905;\n      }\n      pvVar12 = pnVar8->elems[2];\n      pnVar5->kids[2] = pnVar5->kids[1];\n      pnVar5->counts[2] = pnVar5->counts[1];\n      pnVar5->elems[1] = pnVar5->elems[0];\n      pnVar5->kids[1] = pnVar5->kids[0];\n      pnVar5->counts[1] = pnVar5->counts[0];\n      pnVar5->elems[0] = ppnVar1[6];\n      lVar10 = (long)(int)((pvVar12 != (void *)0x0) + 1);\n      pnVar11 = pnVar8->kids[lVar10 + 1];\n      pnVar5->kids[0] = pnVar11;\n      pnVar5->counts[0] = pnVar8->counts[lVar10 + 1];\n      if (pnVar11 != (node234 *)0x0) {\n        pnVar11->parent = pnVar5;\n      }\n      ppnVar1[6] = (node234 *)pnVar8->elems[lVar10];\n      pnVar8->kids[lVar10 + 1] = (node234 *)0x0;\n      pnVar8->counts[lVar10 + 1] = 0;\n      pnVar8->elems[lVar10] = (void *)0x0;\n      iVar3 = countnode234(pnVar5);\n      ptr->counts[lVar7] = iVar3;\n      iVar3 = ptr->counts[lVar7 + -1];\n      iVar4 = countnode234(pnVar8);\n      ptr->counts[lVar7 + -1] = iVar4;\n      index = (index + iVar3) - iVar4;\n    }\n  }" { (if_statement "if (index < ptr->counts[0]) goto LAB_0012f7d1;" if (parenthesized_expression "(index < ptr->counts[0])" ( (binary_expression "index < ptr->counts[0]" identifier < (subscript_expression "ptr->counts[0]" (field_expression "ptr->counts" identifier -> field_identifier) [ number_literal ])) )) (goto_statement "goto LAB_0012f7d1;" goto statement_identifier ;)) (expression_statement "index = index - (ptr->counts[0] + 1);" (assignment_expression "index = index - (ptr->counts[0] + 1)" identifier = (binary_expression "index - (ptr->counts[0] + 1)" identifier - (parenthesized_expression "(ptr->counts[0] + 1)" ( (binary_expression "ptr->counts[0] + 1" (subscript_expression "ptr->counts[0]" (field_expression "ptr->counts" identifier -> field_identifier) [ number_literal ]) + number_literal) )))) ;) (if_statement "if (index < 0) {\n      iVar9 = 0;\nLAB_0012fdee:\n      if (pvVar14 == (void *)0x0) goto LAB_0012fdf7;\n      goto LAB_0012fa63;\n    }" if (parenthesized_expression "(index < 0)" ( (binary_expression "index < 0" identifier < number_literal) )) (compound_statement "{\n      iVar9 = 0;\nLAB_0012fdee:\n      if (pvVar14 == (void *)0x0) goto LAB_0012fdf7;\n      goto LAB_0012fa63;\n    }" { (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" identifier = number_literal) ;) (labeled_statement "LAB_0012fdee:\n      if (pvVar14 == (void *)0x0) goto LAB_0012fdf7;" statement_identifier : (if_statement "if (pvVar14 == (void *)0x0) goto LAB_0012fdf7;" if (parenthesized_expression "(pvVar14 == (void *)0x0)" ( (binary_expression "pvVar14 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0012fdf7;" goto statement_identifier ;))) (goto_statement "goto LAB_0012fa63;" goto statement_identifier ;) })) (if_statement "if (index < ptr->counts[1]) {\n      local_54 = 1;\n    }\n    else {\n      index = index - (ptr->counts[1] + 1);\n      if (index < 0) {\n        iVar9 = 1;\n        goto LAB_0012fdee;\n      }\n      if (index < ptr->counts[2]) {\n        local_54 = 2;\n      }\n      else {\n        index = index - (ptr->counts[2] + 1);\n        if (index < 0) {\n          iVar9 = 2;\n          goto LAB_0012fdee;\n        }\n        local_54 = 3;\n      }\n    }" if (parenthesized_expression "(index < ptr->counts[1])" ( (binary_expression "index < ptr->counts[1]" identifier < (subscript_expression "ptr->counts[1]" (field_expression "ptr->counts" identifier -> field_identifier) [ number_literal ])) )) (compound_statement "{\n      local_54 = 1;\n    }" { (expression_statement "local_54 = 1;" (assignment_expression "local_54 = 1" identifier = number_literal) ;) }) (else_clause "else {\n      index = index - (ptr->counts[1] + 1);\n      if (index < 0) {\n        iVar9 = 1;\n        goto LAB_0012fdee;\n      }\n      if (index < ptr->counts[2]) {\n        local_54 = 2;\n      }\n      else {\n        index = index - (ptr->counts[2] + 1);\n        if (index < 0) {\n          iVar9 = 2;\n          goto LAB_0012fdee;\n        }\n        local_54 = 3;\n      }\n    }" else (compound_statement "{\n      index = index - (ptr->counts[1] + 1);\n      if (index < 0) {\n        iVar9 = 1;\n        goto LAB_0012fdee;\n      }\n      if (index < ptr->counts[2]) {\n        local_54 = 2;\n      }\n      else {\n        index = index - (ptr->counts[2] + 1);\n        if (index < 0) {\n          iVar9 = 2;\n          goto LAB_0012fdee;\n        }\n        local_54 = 3;\n      }\n    }" { (expression_statement "index = index - (ptr->counts[1] + 1);" (assignment_expression "index = index - (ptr->counts[1] + 1)" identifier = (binary_expression "index - (ptr->counts[1] + 1)" identifier - (parenthesized_expression "(ptr->counts[1] + 1)" ( (binary_expression "ptr->counts[1] + 1" (subscript_expression "ptr->counts[1]" (field_expression "ptr->counts" identifier -> field_identifier) [ number_literal ]) + number_literal) )))) ;) (if_statement "if (index < 0) {\n        iVar9 = 1;\n        goto LAB_0012fdee;\n      }" if (parenthesized_expression "(index < 0)" ( (binary_expression "index < 0" identifier < number_literal) )) (compound_statement "{\n        iVar9 = 1;\n        goto LAB_0012fdee;\n      }" { (expression_statement "iVar9 = 1;" (assignment_expression "iVar9 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_0012fdee;" goto statement_identifier ;) })) (if_statement "if (index < ptr->counts[2]) {\n        local_54 = 2;\n      }\n      else {\n        index = index - (ptr->counts[2] + 1);\n        if (index < 0) {\n          iVar9 = 2;\n          goto LAB_0012fdee;\n        }\n        local_54 = 3;\n      }" if (parenthesized_expression "(index < ptr->counts[2])" ( (binary_expression "index < ptr->counts[2]" identifier < (subscript_expression "ptr->counts[2]" (field_expression "ptr->counts" identifier -> field_identifier) [ number_literal ])) )) (compound_statement "{\n        local_54 = 2;\n      }" { (expression_statement "local_54 = 2;" (assignment_expression "local_54 = 2" identifier = number_literal) ;) }) (else_clause "else {\n        index = index - (ptr->counts[2] + 1);\n        if (index < 0) {\n          iVar9 = 2;\n          goto LAB_0012fdee;\n        }\n        local_54 = 3;\n      }" else (compound_statement "{\n        index = index - (ptr->counts[2] + 1);\n        if (index < 0) {\n          iVar9 = 2;\n          goto LAB_0012fdee;\n        }\n        local_54 = 3;\n      }" { (expression_statement "index = index - (ptr->counts[2] + 1);" (assignment_expression "index = index - (ptr->counts[2] + 1)" identifier = (binary_expression "index - (ptr->counts[2] + 1)" identifier - (parenthesized_expression "(ptr->counts[2] + 1)" ( (binary_expression "ptr->counts[2] + 1" (subscript_expression "ptr->counts[2]" (field_expression "ptr->counts" identifier -> field_identifier) [ number_literal ]) + number_literal) )))) ;) (if_statement "if (index < 0) {\n          iVar9 = 2;\n          goto LAB_0012fdee;\n        }" if (parenthesized_expression "(index < 0)" ( (binary_expression "index < 0" identifier < number_literal) )) (compound_statement "{\n          iVar9 = 2;\n          goto LAB_0012fdee;\n        }" { (expression_statement "iVar9 = 2;" (assignment_expression "iVar9 = 2" identifier = number_literal) ;) (goto_statement "goto LAB_0012fdee;" goto statement_identifier ;) })) (expression_statement "local_54 = 3;" (assignment_expression "local_54 = 3" identifier = number_literal) ;) }))) }))) (expression_statement "lVar7 = (long)(int)local_54;" (assignment_expression "lVar7 = (long)(int)local_54" identifier = (cast_expression "(long)(int)local_54" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (cast_expression "(int)local_54" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "ppnVar1 = ptr->kids + lVar7 + -1;" (assignment_expression "ppnVar1 = ptr->kids + lVar7 + -1" identifier = (binary_expression "ptr->kids + lVar7 + -1" (binary_expression "ptr->kids + lVar7" (field_expression "ptr->kids" identifier -> field_identifier) + identifier) + number_literal)) ;) (expression_statement "pnVar5 = ppnVar1[1];" (assignment_expression "pnVar5 = ppnVar1[1]" identifier = (subscript_expression "ppnVar1[1]" identifier [ number_literal ])) ;) (if_statement "if (pnVar5->elems[1] == (void *)0x0) {\n      pnVar8 = *ppnVar1;\n      if (pnVar8->elems[1] == (void *)0x0) {\n        if (local_54 < 3) {\n          local_50 = (long)(int)local_54;\n          pnVar11 = ((node234_conflict *)(ptr->kids + local_50 + -1))->kids[1];\n          pnVar8 = (node234_conflict *)(ptr->kids + local_50 + -1);\n          if (pnVar11 == (node234 *)0x0) goto LAB_0012f905;\n          goto LAB_0012fe3f;\n        }\n        goto LAB_0012f905;\n      }\n      pvVar12 = pnVar8->elems[2];\n      pnVar5->kids[2] = pnVar5->kids[1];\n      pnVar5->counts[2] = pnVar5->counts[1];\n      pnVar5->elems[1] = pnVar5->elems[0];\n      pnVar5->kids[1] = pnVar5->kids[0];\n      pnVar5->counts[1] = pnVar5->counts[0];\n      pnVar5->elems[0] = ppnVar1[6];\n      lVar10 = (long)(int)((pvVar12 != (void *)0x0) + 1);\n      pnVar11 = pnVar8->kids[lVar10 + 1];\n      pnVar5->kids[0] = pnVar11;\n      pnVar5->counts[0] = pnVar8->counts[lVar10 + 1];\n      if (pnVar11 != (node234 *)0x0) {\n        pnVar11->parent = pnVar5;\n      }\n      ppnVar1[6] = (node234 *)pnVar8->elems[lVar10];\n      pnVar8->kids[lVar10 + 1] = (node234 *)0x0;\n      pnVar8->counts[lVar10 + 1] = 0;\n      pnVar8->elems[lVar10] = (void *)0x0;\n      iVar3 = countnode234(pnVar5);\n      ptr->counts[lVar7] = iVar3;\n      iVar3 = ptr->counts[lVar7 + -1];\n      iVar4 = countnode234(pnVar8);\n      ptr->counts[lVar7 + -1] = iVar4;\n      index = (index + iVar3) - iVar4;\n    }" if (parenthesized_expression "(pnVar5->elems[1] == (void *)0x0)" ( (binary_expression "pnVar5->elems[1] == (void *)0x0" (subscript_expression "pnVar5->elems[1]" (field_expression "pnVar5->elems" identifier -> field_identifier) [ number_literal ]) == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      pnVar8 = *ppnVar1;\n      if (pnVar8->elems[1] == (void *)0x0) {\n        if (local_54 < 3) {\n          local_50 = (long)(int)local_54;\n          pnVar11 = ((node234_conflict *)(ptr->kids + local_50 + -1))->kids[1];\n          pnVar8 = (node234_conflict *)(ptr->kids + local_50 + -1);\n          if (pnVar11 == (node234 *)0x0) goto LAB_0012f905;\n          goto LAB_0012fe3f;\n        }\n        goto LAB_0012f905;\n      }\n      pvVar12 = pnVar8->elems[2];\n      pnVar5->kids[2] = pnVar5->kids[1];\n      pnVar5->counts[2] = pnVar5->counts[1];\n      pnVar5->elems[1] = pnVar5->elems[0];\n      pnVar5->kids[1] = pnVar5->kids[0];\n      pnVar5->counts[1] = pnVar5->counts[0];\n      pnVar5->elems[0] = ppnVar1[6];\n      lVar10 = (long)(int)((pvVar12 != (void *)0x0) + 1);\n      pnVar11 = pnVar8->kids[lVar10 + 1];\n      pnVar5->kids[0] = pnVar11;\n      pnVar5->counts[0] = pnVar8->counts[lVar10 + 1];\n      if (pnVar11 != (node234 *)0x0) {\n        pnVar11->parent = pnVar5;\n      }\n      ppnVar1[6] = (node234 *)pnVar8->elems[lVar10];\n      pnVar8->kids[lVar10 + 1] = (node234 *)0x0;\n      pnVar8->counts[lVar10 + 1] = 0;\n      pnVar8->elems[lVar10] = (void *)0x0;\n      iVar3 = countnode234(pnVar5);\n      ptr->counts[lVar7] = iVar3;\n      iVar3 = ptr->counts[lVar7 + -1];\n      iVar4 = countnode234(pnVar8);\n      ptr->counts[lVar7 + -1] = iVar4;\n      index = (index + iVar3) - iVar4;\n    }" { (expression_statement "pnVar8 = *ppnVar1;" (assignment_expression "pnVar8 = *ppnVar1" identifier = (pointer_expression "*ppnVar1" * identifier)) ;) (if_statement "if (pnVar8->elems[1] == (void *)0x0) {\n        if (local_54 < 3) {\n          local_50 = (long)(int)local_54;\n          pnVar11 = ((node234_conflict *)(ptr->kids + local_50 + -1))->kids[1];\n          pnVar8 = (node234_conflict *)(ptr->kids + local_50 + -1);\n          if (pnVar11 == (node234 *)0x0) goto LAB_0012f905;\n          goto LAB_0012fe3f;\n        }\n        goto LAB_0012f905;\n      }" if (parenthesized_expression "(pnVar8->elems[1] == (void *)0x0)" ( (binary_expression "pnVar8->elems[1] == (void *)0x0" (subscript_expression "pnVar8->elems[1]" (field_expression "pnVar8->elems" identifier -> field_identifier) [ number_literal ]) == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        if (local_54 < 3) {\n          local_50 = (long)(int)local_54;\n          pnVar11 = ((node234_conflict *)(ptr->kids + local_50 + -1))->kids[1];\n          pnVar8 = (node234_conflict *)(ptr->kids + local_50 + -1);\n          if (pnVar11 == (node234 *)0x0) goto LAB_0012f905;\n          goto LAB_0012fe3f;\n        }\n        goto LAB_0012f905;\n      }" { (if_statement "if (local_54 < 3) {\n          local_50 = (long)(int)local_54;\n          pnVar11 = ((node234_conflict *)(ptr->kids + local_50 + -1))->kids[1];\n          pnVar8 = (node234_conflict *)(ptr->kids + local_50 + -1);\n          if (pnVar11 == (node234 *)0x0) goto LAB_0012f905;\n          goto LAB_0012fe3f;\n        }" if (parenthesized_expression "(local_54 < 3)" ( (binary_expression "local_54 < 3" identifier < number_literal) )) (compound_statement "{\n          local_50 = (long)(int)local_54;\n          pnVar11 = ((node234_conflict *)(ptr->kids + local_50 + -1))->kids[1];\n          pnVar8 = (node234_conflict *)(ptr->kids + local_50 + -1);\n          if (pnVar11 == (node234 *)0x0) goto LAB_0012f905;\n          goto LAB_0012fe3f;\n        }" { (expression_statement "local_50 = (long)(int)local_54;" (assignment_expression "local_50 = (long)(int)local_54" identifier = (cast_expression "(long)(int)local_54" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (cast_expression "(int)local_54" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "pnVar11 = ((node234_conflict *)(ptr->kids + local_50 + -1))->kids[1];" (assignment_expression "pnVar11 = ((node234_conflict *)(ptr->kids + local_50 + -1))->kids[1]" identifier = (subscript_expression "((node234_conflict *)(ptr->kids + local_50 + -1))->kids[1]" (field_expression "((node234_conflict *)(ptr->kids + local_50 + -1))->kids" (parenthesized_expression "((node234_conflict *)(ptr->kids + local_50 + -1))" ( (cast_expression "(node234_conflict *)(ptr->kids + local_50 + -1)" ( (type_descriptor "node234_conflict *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(ptr->kids + local_50 + -1)" ( (binary_expression "ptr->kids + local_50 + -1" (binary_expression "ptr->kids + local_50" (field_expression "ptr->kids" identifier -> field_identifier) + identifier) + number_literal) ))) )) -> field_identifier) [ number_literal ])) ;) (expression_statement "pnVar8 = (node234_conflict *)(ptr->kids + local_50 + -1);" (assignment_expression "pnVar8 = (node234_conflict *)(ptr->kids + local_50 + -1)" identifier = (cast_expression "(node234_conflict *)(ptr->kids + local_50 + -1)" ( (type_descriptor "node234_conflict *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(ptr->kids + local_50 + -1)" ( (binary_expression "ptr->kids + local_50 + -1" (binary_expression "ptr->kids + local_50" (field_expression "ptr->kids" identifier -> field_identifier) + identifier) + number_literal) )))) ;) (if_statement "if (pnVar11 == (node234 *)0x0) goto LAB_0012f905;" if (parenthesized_expression "(pnVar11 == (node234 *)0x0)" ( (binary_expression "pnVar11 == (node234 *)0x0" identifier == (cast_expression "(node234 *)0x0" ( (type_descriptor "node234 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0012f905;" goto statement_identifier ;)) (goto_statement "goto LAB_0012fe3f;" goto statement_identifier ;) })) (goto_statement "goto LAB_0012f905;" goto statement_identifier ;) })) (expression_statement "pvVar12 = pnVar8->elems[2];" (assignment_expression "pvVar12 = pnVar8->elems[2]" identifier = (subscript_expression "pnVar8->elems[2]" (field_expression "pnVar8->elems" identifier -> field_identifier) [ number_literal ])) ;) (expression_statement "pnVar5->kids[2] = pnVar5->kids[1];" (assignment_expression "pnVar5->kids[2] = pnVar5->kids[1]" (subscript_expression "pnVar5->kids[2]" (field_expression "pnVar5->kids" identifier -> field_identifier) [ number_literal ]) = (subscript_expression "pnVar5->kids[1]" (field_expression "pnVar5->kids" identifier -> field_identifier) [ number_literal ])) ;) (expression_statement "pnVar5->counts[2] = pnVar5->counts[1];" (assignment_expression "pnVar5->counts[2] = pnVar5->counts[1]" (subscript_expression "pnVar5->counts[2]" (field_expression "pnVar5->counts" identifier -> field_identifier) [ number_literal ]) = (subscript_expression "pnVar5->counts[1]" (field_expression "pnVar5->counts" identifier -> field_identifier) [ number_literal ])) ;) (expression_statement "pnVar5->elems[1] = pnVar5->elems[0];" (assignment_expression "pnVar5->elems[1] = pnVar5->elems[0]" (subscript_expression "pnVar5->elems[1]" (field_expression "pnVar5->elems" identifier -> field_identifier) [ number_literal ]) = (subscript_expression "pnVar5->elems[0]" (field_expression "pnVar5->elems" identifier -> field_identifier) [ number_literal ])) ;) (expression_statement "pnVar5->kids[1] = pnVar5->kids[0];" (assignment_expression "pnVar5->kids[1] = pnVar5->kids[0]" (subscript_expression "pnVar5->kids[1]" (field_expression "pnVar5->kids" identifier -> field_identifier) [ number_literal ]) = (subscript_expression "pnVar5->kids[0]" (field_expression "pnVar5->kids" identifier -> field_identifier) [ number_literal ])) ;) (expression_statement "pnVar5->counts[1] = pnVar5->counts[0];" (assignment_expression "pnVar5->counts[1] = pnVar5->counts[0]" (subscript_expression "pnVar5->counts[1]" (field_expression "pnVar5->counts" identifier -> field_identifier) [ number_literal ]) = (subscript_expression "pnVar5->counts[0]" (field_expression "pnVar5->counts" identifier -> field_identifier) [ number_literal ])) ;) (expression_statement "pnVar5->elems[0] = ppnVar1[6];" (assignment_expression "pnVar5->elems[0] = ppnVar1[6]" (subscript_expression "pnVar5->elems[0]" (field_expression "pnVar5->elems" identifier -> field_identifier) [ number_literal ]) = (subscript_expression "ppnVar1[6]" identifier [ number_literal ])) ;) (expression_statement "lVar10 = (long)(int)((pvVar12 != (void *)0x0) + 1);" (assignment_expression "lVar10 = (long)(int)((pvVar12 != (void *)0x0) + 1)" identifier = (cast_expression "(long)(int)((pvVar12 != (void *)0x0) + 1)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (cast_expression "(int)((pvVar12 != (void *)0x0) + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((pvVar12 != (void *)0x0) + 1)" ( (binary_expression "(pvVar12 != (void *)0x0) + 1" (parenthesized_expression "(pvVar12 != (void *)0x0)" ( (binary_expression "pvVar12 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) + number_literal) ))))) ;) (expression_statement "pnVar11 = pnVar8->kids[lVar10 + 1];" (assignment_expression "pnVar11 = pnVar8->kids[lVar10 + 1]" identifier = (subscript_expression "pnVar8->kids[lVar10 + 1]" (field_expression "pnVar8->kids" identifier -> field_identifier) [ (binary_expression "lVar10 + 1" identifier + number_literal) ])) ;) (expression_statement "pnVar5->kids[0] = pnVar11;" (assignment_expression "pnVar5->kids[0] = pnVar11" (subscript_expression "pnVar5->kids[0]" (field_expression "pnVar5->kids" identifier -> field_identifier) [ number_literal ]) = identifier) ;) (expression_statement "pnVar5->counts[0] = pnVar8->counts[lVar10 + 1];" (assignment_expression "pnVar5->counts[0] = pnVar8->counts[lVar10 + 1]" (subscript_expression "pnVar5->counts[0]" (field_expression "pnVar5->counts" identifier -> field_identifier) [ number_literal ]) = (subscript_expression "pnVar8->counts[lVar10 + 1]" (field_expression "pnVar8->counts" identifier -> field_identifier) [ (binary_expression "lVar10 + 1" identifier + number_literal) ])) ;) (if_statement "if (pnVar11 != (node234 *)0x0) {\n        pnVar11->parent = pnVar5;\n      }" if (parenthesized_expression "(pnVar11 != (node234 *)0x0)" ( (binary_expression "pnVar11 != (node234 *)0x0" identifier != (cast_expression "(node234 *)0x0" ( (type_descriptor "node234 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        pnVar11->parent = pnVar5;\n      }" { (expression_statement "pnVar11->parent = pnVar5;" (assignment_expression "pnVar11->parent = pnVar5" (field_expression "pnVar11->parent" identifier -> field_identifier) = identifier) ;) })) (expression_statement "ppnVar1[6] = (node234 *)pnVar8->elems[lVar10];" (assignment_expression "ppnVar1[6] = (node234 *)pnVar8->elems[lVar10]" (subscript_expression "ppnVar1[6]" identifier [ number_literal ]) = (cast_expression "(node234 *)pnVar8->elems[lVar10]" ( (type_descriptor "node234 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "pnVar8->elems[lVar10]" (field_expression "pnVar8->elems" identifier -> field_identifier) [ identifier ]))) ;) (expression_statement "pnVar8->kids[lVar10 + 1] = (node234 *)0x0;" (assignment_expression "pnVar8->kids[lVar10 + 1] = (node234 *)0x0" (subscript_expression "pnVar8->kids[lVar10 + 1]" (field_expression "pnVar8->kids" identifier -> field_identifier) [ (binary_expression "lVar10 + 1" identifier + number_literal) ]) = (cast_expression "(node234 *)0x0" ( (type_descriptor "node234 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pnVar8->counts[lVar10 + 1] = 0;" (assignment_expression "pnVar8->counts[lVar10 + 1] = 0" (subscript_expression "pnVar8->counts[lVar10 + 1]" (field_expression "pnVar8->counts" identifier -> field_identifier) [ (binary_expression "lVar10 + 1" identifier + number_literal) ]) = number_literal) ;) (expression_statement "pnVar8->elems[lVar10] = (void *)0x0;" (assignment_expression "pnVar8->elems[lVar10] = (void *)0x0" (subscript_expression "pnVar8->elems[lVar10]" (field_expression "pnVar8->elems" identifier -> field_identifier) [ identifier ]) = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar3 = countnode234(pnVar5);" (assignment_expression "iVar3 = countnode234(pnVar5)" identifier = (call_expression "countnode234(pnVar5)" identifier (argument_list "(pnVar5)" ( identifier )))) ;) (expression_statement "ptr->counts[lVar7] = iVar3;" (assignment_expression "ptr->counts[lVar7] = iVar3" (subscript_expression "ptr->counts[lVar7]" (field_expression "ptr->counts" identifier -> field_identifier) [ identifier ]) = identifier) ;) (expression_statement "iVar3 = ptr->counts[lVar7 + -1];" (assignment_expression "iVar3 = ptr->counts[lVar7 + -1]" identifier = (subscript_expression "ptr->counts[lVar7 + -1]" (field_expression "ptr->counts" identifier -> field_identifier) [ (binary_expression "lVar7 + -1" identifier + number_literal) ])) ;) (expression_statement "iVar4 = countnode234(pnVar8);" (assignment_expression "iVar4 = countnode234(pnVar8)" identifier = (call_expression "countnode234(pnVar8)" identifier (argument_list "(pnVar8)" ( identifier )))) ;) (expression_statement "ptr->counts[lVar7 + -1] = iVar4;" (assignment_expression "ptr->counts[lVar7 + -1] = iVar4" (subscript_expression "ptr->counts[lVar7 + -1]" (field_expression "ptr->counts" identifier -> field_identifier) [ (binary_expression "lVar7 + -1" identifier + number_literal) ]) = identifier) ;) (expression_statement "index = (index + iVar3) - iVar4;" (assignment_expression "index = (index + iVar3) - iVar4" identifier = (binary_expression "(index + iVar3) - iVar4" (parenthesized_expression "(index + iVar3)" ( (binary_expression "index + iVar3" identifier + identifier) )) - identifier)) ;) })) }))) (if_statement "if (pvVar14 == (void *)0x0) {\nLAB_0012fdf7:\n    pvVar14 = ptr->elems[iVar9];\n  }" if (parenthesized_expression "(pvVar14 == (void *)0x0)" ( (binary_expression "pvVar14 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_0012fdf7:\n    pvVar14 = ptr->elems[iVar9];\n  }" { (labeled_statement "LAB_0012fdf7:\n    pvVar14 = ptr->elems[iVar9];" statement_identifier : (expression_statement "pvVar14 = ptr->elems[iVar9];" (assignment_expression "pvVar14 = ptr->elems[iVar9]" identifier = (subscript_expression "ptr->elems[iVar9]" (field_expression "ptr->elems" identifier -> field_identifier) [ identifier ])) ;)) })) (if_statement "if (iVar9 == -1) {\n    return (void *)0x0;\n  }" if (parenthesized_expression "(iVar9 == -1)" ( (binary_expression "iVar9 == -1" identifier == number_literal) )) (compound_statement "{\n    return (void *)0x0;\n  }" { (return_statement "return (void *)0x0;" return (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (labeled_statement "LAB_0012fa63:\n  pnVar5 = ptr->parent;" statement_identifier : (expression_statement "pnVar5 = ptr->parent;" (assignment_expression "pnVar5 = ptr->parent" identifier = (field_expression "ptr->parent" identifier -> field_identifier)) ;)) (if_statement "if (pnVar5 == (node234_conflict *)0x0) {\n    if (ptr->elems[1] == (void *)0x0) {\n      if (ptr->kids[0] == (node234 *)0x0) {\n        safefree(ptr);\n        t->root = (node234_conflict *)0x0;\n        return pvVar14;\n      }\n    }\n    else if (ptr->kids[0] == (node234 *)0x0) {\n      pnVar5 = (node234_conflict *)0x0;\n      if (1 < iVar9) {\n        ptr->elems[iVar9] = (void *)0x0;\n        return pvVar14;\n      }\n      goto LAB_0012fbac;\n    }\n  }\n  else if ((ptr->kids[0] == (node234 *)0x0) && (ptr->elems[1] != (void *)0x0))\n  goto code_r0x0012fc20;" if (parenthesized_expression "(pnVar5 == (node234_conflict *)0x0)" ( (binary_expression "pnVar5 == (node234_conflict *)0x0" identifier == (cast_expression "(node234_conflict *)0x0" ( (type_descriptor "node234_conflict *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (ptr->elems[1] == (void *)0x0) {\n      if (ptr->kids[0] == (node234 *)0x0) {\n        safefree(ptr);\n        t->root = (node234_conflict *)0x0;\n        return pvVar14;\n      }\n    }\n    else if (ptr->kids[0] == (node234 *)0x0) {\n      pnVar5 = (node234_conflict *)0x0;\n      if (1 < iVar9) {\n        ptr->elems[iVar9] = (void *)0x0;\n        return pvVar14;\n      }\n      goto LAB_0012fbac;\n    }\n  }" { (if_statement "if (ptr->elems[1] == (void *)0x0) {\n      if (ptr->kids[0] == (node234 *)0x0) {\n        safefree(ptr);\n        t->root = (node234_conflict *)0x0;\n        return pvVar14;\n      }\n    }\n    else if (ptr->kids[0] == (node234 *)0x0) {\n      pnVar5 = (node234_conflict *)0x0;\n      if (1 < iVar9) {\n        ptr->elems[iVar9] = (void *)0x0;\n        return pvVar14;\n      }\n      goto LAB_0012fbac;\n    }" if (parenthesized_expression "(ptr->elems[1] == (void *)0x0)" ( (binary_expression "ptr->elems[1] == (void *)0x0" (subscript_expression "ptr->elems[1]" (field_expression "ptr->elems" identifier -> field_identifier) [ number_literal ]) == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      if (ptr->kids[0] == (node234 *)0x0) {\n        safefree(ptr);\n        t->root = (node234_conflict *)0x0;\n        return pvVar14;\n      }\n    }" { (if_statement "if (ptr->kids[0] == (node234 *)0x0) {\n        safefree(ptr);\n        t->root = (node234_conflict *)0x0;\n        return pvVar14;\n      }" if (parenthesized_expression "(ptr->kids[0] == (node234 *)0x0)" ( (binary_expression "ptr->kids[0] == (node234 *)0x0" (subscript_expression "ptr->kids[0]" (field_expression "ptr->kids" identifier -> field_identifier) [ number_literal ]) == (cast_expression "(node234 *)0x0" ( (type_descriptor "node234 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        safefree(ptr);\n        t->root = (node234_conflict *)0x0;\n        return pvVar14;\n      }" { (expression_statement "safefree(ptr);" (call_expression "safefree(ptr)" identifier (argument_list "(ptr)" ( identifier ))) ;) (expression_statement "t->root = (node234_conflict *)0x0;" (assignment_expression "t->root = (node234_conflict *)0x0" (field_expression "t->root" identifier -> field_identifier) = (cast_expression "(node234_conflict *)0x0" ( (type_descriptor "node234_conflict *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (return_statement "return pvVar14;" return identifier ;) })) }) (else_clause "else if (ptr->kids[0] == (node234 *)0x0) {\n      pnVar5 = (node234_conflict *)0x0;\n      if (1 < iVar9) {\n        ptr->elems[iVar9] = (void *)0x0;\n        return pvVar14;\n      }\n      goto LAB_0012fbac;\n    }" else (if_statement "if (ptr->kids[0] == (node234 *)0x0) {\n      pnVar5 = (node234_conflict *)0x0;\n      if (1 < iVar9) {\n        ptr->elems[iVar9] = (void *)0x0;\n        return pvVar14;\n      }\n      goto LAB_0012fbac;\n    }" if (parenthesized_expression "(ptr->kids[0] == (node234 *)0x0)" ( (binary_expression "ptr->kids[0] == (node234 *)0x0" (subscript_expression "ptr->kids[0]" (field_expression "ptr->kids" identifier -> field_identifier) [ number_literal ]) == (cast_expression "(node234 *)0x0" ( (type_descriptor "node234 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      pnVar5 = (node234_conflict *)0x0;\n      if (1 < iVar9) {\n        ptr->elems[iVar9] = (void *)0x0;\n        return pvVar14;\n      }\n      goto LAB_0012fbac;\n    }" { (expression_statement "pnVar5 = (node234_conflict *)0x0;" (assignment_expression "pnVar5 = (node234_conflict *)0x0" identifier = (cast_expression "(node234_conflict *)0x0" ( (type_descriptor "node234_conflict *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (1 < iVar9) {\n        ptr->elems[iVar9] = (void *)0x0;\n        return pvVar14;\n      }" if (parenthesized_expression "(1 < iVar9)" ( (binary_expression "1 < iVar9" number_literal < identifier) )) (compound_statement "{\n        ptr->elems[iVar9] = (void *)0x0;\n        return pvVar14;\n      }" { (expression_statement "ptr->elems[iVar9] = (void *)0x0;" (assignment_expression "ptr->elems[iVar9] = (void *)0x0" (subscript_expression "ptr->elems[iVar9]" (field_expression "ptr->elems" identifier -> field_identifier) [ identifier ]) = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (return_statement "return pvVar14;" return identifier ;) })) (goto_statement "goto LAB_0012fbac;" goto statement_identifier ;) })))) }) (else_clause "else if ((ptr->kids[0] == (node234 *)0x0) && (ptr->elems[1] != (void *)0x0))\n  goto code_r0x0012fc20;" else (if_statement "if ((ptr->kids[0] == (node234 *)0x0) && (ptr->elems[1] != (void *)0x0))\n  goto code_r0x0012fc20;" if (parenthesized_expression "((ptr->kids[0] == (node234 *)0x0) && (ptr->elems[1] != (void *)0x0))" ( (binary_expression "(ptr->kids[0] == (node234 *)0x0) && (ptr->elems[1] != (void *)0x0)" (parenthesized_expression "(ptr->kids[0] == (node234 *)0x0)" ( (binary_expression "ptr->kids[0] == (node234 *)0x0" (subscript_expression "ptr->kids[0]" (field_expression "ptr->kids" identifier -> field_identifier) [ number_literal ]) == (cast_expression "(node234 *)0x0" ( (type_descriptor "node234 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(ptr->elems[1] != (void *)0x0)" ( (binary_expression "ptr->elems[1] != (void *)0x0" (subscript_expression "ptr->elems[1]" (field_expression "ptr->elems" identifier -> field_identifier) [ number_literal ]) != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (goto_statement "goto code_r0x0012fc20;" goto statement_identifier ;)))) (expression_statement "pnVar5 = ptr->kids[iVar9];" (assignment_expression "pnVar5 = ptr->kids[iVar9]" identifier = (subscript_expression "ptr->kids[iVar9]" (field_expression "ptr->kids" identifier -> field_identifier) [ identifier ])) ;) (expression_statement "pnVar8 = pnVar5;" (assignment_expression "pnVar8 = pnVar5" identifier = identifier) ;) (if_statement "if (pnVar5->elems[1] == (void *)0x0) {\n    pnVar11 = ptr->kids[(long)iVar9 + 1];\n    pnVar2 = pnVar11;\n    if (pnVar11->elems[1] == (void *)0x0) {\n      pnVar5->elems[1] = ptr->elems[iVar9];\n      pnVar2 = pnVar11->kids[0];\n      pnVar5->kids[2] = pnVar2;\n      pnVar5->counts[2] = pnVar11->counts[0];\n      if (pnVar2 != (node234 *)0x0) {\n        pnVar2->parent = pnVar5;\n      }\n      pnVar5->elems[2] = pnVar11->elems[0];\n      pnVar2 = pnVar11->kids[1];\n      pnVar5->kids[3] = pnVar2;\n      pnVar5->counts[3] = pnVar11->counts[1];\n      if (pnVar2 != (node234 *)0x0) {\n        pnVar2->parent = pnVar5;\n      }\n      safefree(pnVar11);\n      iVar3 = countnode234(pnVar5);\n      ptr->counts[iVar9] = iVar3;\n      iVar3 = iVar9;\n      if ((iVar9 < 2) && (pvVar12 = ptr->elems[(long)iVar9 + 1], pvVar12 != (void *)0x0)) {\n        lVar7 = (long)(iVar9 + 1);\n        do {\n          iVar3 = (int)lVar7;\n          ptr->elems[lVar7 + -1] = pvVar12;\n          ptr->kids[lVar7] = ptr->kids[lVar7 + 1];\n          ptr->counts[lVar7] = ptr->counts[lVar7 + 1];\n          if (1 < iVar3) break;\n          pvVar12 = ptr->elems[lVar7 + 1];\n          lVar7 = lVar7 + 1;\n        } while (pvVar12 != (void *)0x0);\n      }\n      ptr->elems[iVar3] = (void *)0x0;\n      ptr->kids[(long)iVar3 + 1] = (node234 *)0x0;\n      ptr->counts[iVar3 + 1] = 0;\n      if (ptr->elems[0] == (void *)0x0) {\n        t->root = pnVar5;\n        pnVar5->parent = (node234_conflict *)0x0;\n        safefree(ptr);\n      }\n      index = pnVar5->counts[1] + pnVar5->counts[0] + 1;\n    }\n    else {\n      do {\n        pnVar13 = pnVar2;\n        pnVar2 = pnVar13->kids[0];\n      } while (pnVar2 != (node234 *)0x0);\n      ptr->elems[iVar9] = pnVar13->elems[0];\n      index = 0;\n      pnVar5 = pnVar11;\n    }\n  }\n  else {\n    while (pnVar6 = pnVar8, pnVar6->kids[0] != (node234 *)0x0) {\n      pnVar8 = pnVar6->kids[3];\n      if (((pnVar6->kids[3] == (node234 *)0x0) &&\n          (pnVar8 = pnVar6->kids[2], pnVar6->kids[2] == (node234 *)0x0)) &&\n         (pnVar8 = pnVar6->kids[1], pnVar6->kids[1] == (node234 *)0x0)) {\n        pnVar8 = pnVar6->kids[0];\n      }\n    }\n    pvVar12 = pnVar6->elems[2];\n    if ((pvVar12 == (void *)0x0) && (pvVar12 = pnVar6->elems[1], pvVar12 == (void *)0x0)) {\n      pvVar12 = pnVar6->elems[0];\n    }\n    ptr->elems[iVar9] = pvVar12;\n    index = ptr->counts[iVar9] + -1;\n  }" if (parenthesized_expression "(pnVar5->elems[1] == (void *)0x0)" ( (binary_expression "pnVar5->elems[1] == (void *)0x0" (subscript_expression "pnVar5->elems[1]" (field_expression "pnVar5->elems" identifier -> field_identifier) [ number_literal ]) == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    pnVar11 = ptr->kids[(long)iVar9 + 1];\n    pnVar2 = pnVar11;\n    if (pnVar11->elems[1] == (void *)0x0) {\n      pnVar5->elems[1] = ptr->elems[iVar9];\n      pnVar2 = pnVar11->kids[0];\n      pnVar5->kids[2] = pnVar2;\n      pnVar5->counts[2] = pnVar11->counts[0];\n      if (pnVar2 != (node234 *)0x0) {\n        pnVar2->parent = pnVar5;\n      }\n      pnVar5->elems[2] = pnVar11->elems[0];\n      pnVar2 = pnVar11->kids[1];\n      pnVar5->kids[3] = pnVar2;\n      pnVar5->counts[3] = pnVar11->counts[1];\n      if (pnVar2 != (node234 *)0x0) {\n        pnVar2->parent = pnVar5;\n      }\n      safefree(pnVar11);\n      iVar3 = countnode234(pnVar5);\n      ptr->counts[iVar9] = iVar3;\n      iVar3 = iVar9;\n      if ((iVar9 < 2) && (pvVar12 = ptr->elems[(long)iVar9 + 1], pvVar12 != (void *)0x0)) {\n        lVar7 = (long)(iVar9 + 1);\n        do {\n          iVar3 = (int)lVar7;\n          ptr->elems[lVar7 + -1] = pvVar12;\n          ptr->kids[lVar7] = ptr->kids[lVar7 + 1];\n          ptr->counts[lVar7] = ptr->counts[lVar7 + 1];\n          if (1 < iVar3) break;\n          pvVar12 = ptr->elems[lVar7 + 1];\n          lVar7 = lVar7 + 1;\n        } while (pvVar12 != (void *)0x0);\n      }\n      ptr->elems[iVar3] = (void *)0x0;\n      ptr->kids[(long)iVar3 + 1] = (node234 *)0x0;\n      ptr->counts[iVar3 + 1] = 0;\n      if (ptr->elems[0] == (void *)0x0) {\n        t->root = pnVar5;\n        pnVar5->parent = (node234_conflict *)0x0;\n        safefree(ptr);\n      }\n      index = pnVar5->counts[1] + pnVar5->counts[0] + 1;\n    }\n    else {\n      do {\n        pnVar13 = pnVar2;\n        pnVar2 = pnVar13->kids[0];\n      } while (pnVar2 != (node234 *)0x0);\n      ptr->elems[iVar9] = pnVar13->elems[0];\n      index = 0;\n      pnVar5 = pnVar11;\n    }\n  }" { (expression_statement "pnVar11 = ptr->kids[(long)iVar9 + 1];" (assignment_expression "pnVar11 = ptr->kids[(long)iVar9 + 1]" identifier = (subscript_expression "ptr->kids[(long)iVar9 + 1]" (field_expression "ptr->kids" identifier -> field_identifier) [ (binary_expression "(long)iVar9 + 1" (cast_expression "(long)iVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ])) ;) (expression_statement "pnVar2 = pnVar11;" (assignment_expression "pnVar2 = pnVar11" identifier = identifier) ;) (if_statement "if (pnVar11->elems[1] == (void *)0x0) {\n      pnVar5->elems[1] = ptr->elems[iVar9];\n      pnVar2 = pnVar11->kids[0];\n      pnVar5->kids[2] = pnVar2;\n      pnVar5->counts[2] = pnVar11->counts[0];\n      if (pnVar2 != (node234 *)0x0) {\n        pnVar2->parent = pnVar5;\n      }\n      pnVar5->elems[2] = pnVar11->elems[0];\n      pnVar2 = pnVar11->kids[1];\n      pnVar5->kids[3] = pnVar2;\n      pnVar5->counts[3] = pnVar11->counts[1];\n      if (pnVar2 != (node234 *)0x0) {\n        pnVar2->parent = pnVar5;\n      }\n      safefree(pnVar11);\n      iVar3 = countnode234(pnVar5);\n      ptr->counts[iVar9] = iVar3;\n      iVar3 = iVar9;\n      if ((iVar9 < 2) && (pvVar12 = ptr->elems[(long)iVar9 + 1], pvVar12 != (void *)0x0)) {\n        lVar7 = (long)(iVar9 + 1);\n        do {\n          iVar3 = (int)lVar7;\n          ptr->elems[lVar7 + -1] = pvVar12;\n          ptr->kids[lVar7] = ptr->kids[lVar7 + 1];\n          ptr->counts[lVar7] = ptr->counts[lVar7 + 1];\n          if (1 < iVar3) break;\n          pvVar12 = ptr->elems[lVar7 + 1];\n          lVar7 = lVar7 + 1;\n        } while (pvVar12 != (void *)0x0);\n      }\n      ptr->elems[iVar3] = (void *)0x0;\n      ptr->kids[(long)iVar3 + 1] = (node234 *)0x0;\n      ptr->counts[iVar3 + 1] = 0;\n      if (ptr->elems[0] == (void *)0x0) {\n        t->root = pnVar5;\n        pnVar5->parent = (node234_conflict *)0x0;\n        safefree(ptr);\n      }\n      index = pnVar5->counts[1] + pnVar5->counts[0] + 1;\n    }\n    else {\n      do {\n        pnVar13 = pnVar2;\n        pnVar2 = pnVar13->kids[0];\n      } while (pnVar2 != (node234 *)0x0);\n      ptr->elems[iVar9] = pnVar13->elems[0];\n      index = 0;\n      pnVar5 = pnVar11;\n    }" if (parenthesized_expression "(pnVar11->elems[1] == (void *)0x0)" ( (binary_expression "pnVar11->elems[1] == (void *)0x0" (subscript_expression "pnVar11->elems[1]" (field_expression "pnVar11->elems" identifier -> field_identifier) [ number_literal ]) == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      pnVar5->elems[1] = ptr->elems[iVar9];\n      pnVar2 = pnVar11->kids[0];\n      pnVar5->kids[2] = pnVar2;\n      pnVar5->counts[2] = pnVar11->counts[0];\n      if (pnVar2 != (node234 *)0x0) {\n        pnVar2->parent = pnVar5;\n      }\n      pnVar5->elems[2] = pnVar11->elems[0];\n      pnVar2 = pnVar11->kids[1];\n      pnVar5->kids[3] = pnVar2;\n      pnVar5->counts[3] = pnVar11->counts[1];\n      if (pnVar2 != (node234 *)0x0) {\n        pnVar2->parent = pnVar5;\n      }\n      safefree(pnVar11);\n      iVar3 = countnode234(pnVar5);\n      ptr->counts[iVar9] = iVar3;\n      iVar3 = iVar9;\n      if ((iVar9 < 2) && (pvVar12 = ptr->elems[(long)iVar9 + 1], pvVar12 != (void *)0x0)) {\n        lVar7 = (long)(iVar9 + 1);\n        do {\n          iVar3 = (int)lVar7;\n          ptr->elems[lVar7 + -1] = pvVar12;\n          ptr->kids[lVar7] = ptr->kids[lVar7 + 1];\n          ptr->counts[lVar7] = ptr->counts[lVar7 + 1];\n          if (1 < iVar3) break;\n          pvVar12 = ptr->elems[lVar7 + 1];\n          lVar7 = lVar7 + 1;\n        } while (pvVar12 != (void *)0x0);\n      }\n      ptr->elems[iVar3] = (void *)0x0;\n      ptr->kids[(long)iVar3 + 1] = (node234 *)0x0;\n      ptr->counts[iVar3 + 1] = 0;\n      if (ptr->elems[0] == (void *)0x0) {\n        t->root = pnVar5;\n        pnVar5->parent = (node234_conflict *)0x0;\n        safefree(ptr);\n      }\n      index = pnVar5->counts[1] + pnVar5->counts[0] + 1;\n    }" { (expression_statement "pnVar5->elems[1] = ptr->elems[iVar9];" (assignment_expression "pnVar5->elems[1] = ptr->elems[iVar9]" (subscript_expression "pnVar5->elems[1]" (field_expression "pnVar5->elems" identifier -> field_identifier) [ number_literal ]) = (subscript_expression "ptr->elems[iVar9]" (field_expression "ptr->elems" identifier -> field_identifier) [ identifier ])) ;) (expression_statement "pnVar2 = pnVar11->kids[0];" (assignment_expression "pnVar2 = pnVar11->kids[0]" identifier = (subscript_expression "pnVar11->kids[0]" (field_expression "pnVar11->kids" identifier -> field_identifier) [ number_literal ])) ;) (expression_statement "pnVar5->kids[2] = pnVar2;" (assignment_expression "pnVar5->kids[2] = pnVar2" (subscript_expression "pnVar5->kids[2]" (field_expression "pnVar5->kids" identifier -> field_identifier) [ number_literal ]) = identifier) ;) (expression_statement "pnVar5->counts[2] = pnVar11->counts[0];" (assignment_expression "pnVar5->counts[2] = pnVar11->counts[0]" (subscript_expression "pnVar5->counts[2]" (field_expression "pnVar5->counts" identifier -> field_identifier) [ number_literal ]) = (subscript_expression "pnVar11->counts[0]" (field_expression "pnVar11->counts" identifier -> field_identifier) [ number_literal ])) ;) (if_statement "if (pnVar2 != (node234 *)0x0) {\n        pnVar2->parent = pnVar5;\n      }" if (parenthesized_expression "(pnVar2 != (node234 *)0x0)" ( (binary_expression "pnVar2 != (node234 *)0x0" identifier != (cast_expression "(node234 *)0x0" ( (type_descriptor "node234 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        pnVar2->parent = pnVar5;\n      }" { (expression_statement "pnVar2->parent = pnVar5;" (assignment_expression "pnVar2->parent = pnVar5" (field_expression "pnVar2->parent" identifier -> field_identifier) = identifier) ;) })) (expression_statement "pnVar5->elems[2] = pnVar11->elems[0];" (assignment_expression "pnVar5->elems[2] = pnVar11->elems[0]" (subscript_expression "pnVar5->elems[2]" (field_expression "pnVar5->elems" identifier -> field_identifier) [ number_literal ]) = (subscript_expression "pnVar11->elems[0]" (field_expression "pnVar11->elems" identifier -> field_identifier) [ number_literal ])) ;) (expression_statement "pnVar2 = pnVar11->kids[1];" (assignment_expression "pnVar2 = pnVar11->kids[1]" identifier = (subscript_expression "pnVar11->kids[1]" (field_expression "pnVar11->kids" identifier -> field_identifier) [ number_literal ])) ;) (expression_statement "pnVar5->kids[3] = pnVar2;" (assignment_expression "pnVar5->kids[3] = pnVar2" (subscript_expression "pnVar5->kids[3]" (field_expression "pnVar5->kids" identifier -> field_identifier) [ number_literal ]) = identifier) ;) (expression_statement "pnVar5->counts[3] = pnVar11->counts[1];" (assignment_expression "pnVar5->counts[3] = pnVar11->counts[1]" (subscript_expression "pnVar5->counts[3]" (field_expression "pnVar5->counts" identifier -> field_identifier) [ number_literal ]) = (subscript_expression "pnVar11->counts[1]" (field_expression "pnVar11->counts" identifier -> field_identifier) [ number_literal ])) ;) (if_statement "if (pnVar2 != (node234 *)0x0) {\n        pnVar2->parent = pnVar5;\n      }" if (parenthesized_expression "(pnVar2 != (node234 *)0x0)" ( (binary_expression "pnVar2 != (node234 *)0x0" identifier != (cast_expression "(node234 *)0x0" ( (type_descriptor "node234 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        pnVar2->parent = pnVar5;\n      }" { (expression_statement "pnVar2->parent = pnVar5;" (assignment_expression "pnVar2->parent = pnVar5" (field_expression "pnVar2->parent" identifier -> field_identifier) = identifier) ;) })) (expression_statement "safefree(pnVar11);" (call_expression "safefree(pnVar11)" identifier (argument_list "(pnVar11)" ( identifier ))) ;) (expression_statement "iVar3 = countnode234(pnVar5);" (assignment_expression "iVar3 = countnode234(pnVar5)" identifier = (call_expression "countnode234(pnVar5)" identifier (argument_list "(pnVar5)" ( identifier )))) ;) (expression_statement "ptr->counts[iVar9] = iVar3;" (assignment_expression "ptr->counts[iVar9] = iVar3" (subscript_expression "ptr->counts[iVar9]" (field_expression "ptr->counts" identifier -> field_identifier) [ identifier ]) = identifier) ;) (expression_statement "iVar3 = iVar9;" (assignment_expression "iVar3 = iVar9" identifier = identifier) ;) (if_statement "if ((iVar9 < 2) && (pvVar12 = ptr->elems[(long)iVar9 + 1], pvVar12 != (void *)0x0)) {\n        lVar7 = (long)(iVar9 + 1);\n        do {\n          iVar3 = (int)lVar7;\n          ptr->elems[lVar7 + -1] = pvVar12;\n          ptr->kids[lVar7] = ptr->kids[lVar7 + 1];\n          ptr->counts[lVar7] = ptr->counts[lVar7 + 1];\n          if (1 < iVar3) break;\n          pvVar12 = ptr->elems[lVar7 + 1];\n          lVar7 = lVar7 + 1;\n        } while (pvVar12 != (void *)0x0);\n      }" if (parenthesized_expression "((iVar9 < 2) && (pvVar12 = ptr->elems[(long)iVar9 + 1], pvVar12 != (void *)0x0))" ( (binary_expression "(iVar9 < 2) && (pvVar12 = ptr->elems[(long)iVar9 + 1], pvVar12 != (void *)0x0)" (parenthesized_expression "(iVar9 < 2)" ( (binary_expression "iVar9 < 2" identifier < number_literal) )) && (parenthesized_expression "(pvVar12 = ptr->elems[(long)iVar9 + 1], pvVar12 != (void *)0x0)" ( (comma_expression "pvVar12 = ptr->elems[(long)iVar9 + 1], pvVar12 != (void *)0x0" (assignment_expression "pvVar12 = ptr->elems[(long)iVar9 + 1]" identifier = (subscript_expression "ptr->elems[(long)iVar9 + 1]" (field_expression "ptr->elems" identifier -> field_identifier) [ (binary_expression "(long)iVar9 + 1" (cast_expression "(long)iVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ])) , (binary_expression "pvVar12 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n        lVar7 = (long)(iVar9 + 1);\n        do {\n          iVar3 = (int)lVar7;\n          ptr->elems[lVar7 + -1] = pvVar12;\n          ptr->kids[lVar7] = ptr->kids[lVar7 + 1];\n          ptr->counts[lVar7] = ptr->counts[lVar7 + 1];\n          if (1 < iVar3) break;\n          pvVar12 = ptr->elems[lVar7 + 1];\n          lVar7 = lVar7 + 1;\n        } while (pvVar12 != (void *)0x0);\n      }" { (expression_statement "lVar7 = (long)(iVar9 + 1);" (assignment_expression "lVar7 = (long)(iVar9 + 1)" identifier = (cast_expression "(long)(iVar9 + 1)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(iVar9 + 1)" ( (binary_expression "iVar9 + 1" identifier + number_literal) )))) ;) (do_statement "do {\n          iVar3 = (int)lVar7;\n          ptr->elems[lVar7 + -1] = pvVar12;\n          ptr->kids[lVar7] = ptr->kids[lVar7 + 1];\n          ptr->counts[lVar7] = ptr->counts[lVar7 + 1];\n          if (1 < iVar3) break;\n          pvVar12 = ptr->elems[lVar7 + 1];\n          lVar7 = lVar7 + 1;\n        } while (pvVar12 != (void *)0x0);" do (compound_statement "{\n          iVar3 = (int)lVar7;\n          ptr->elems[lVar7 + -1] = pvVar12;\n          ptr->kids[lVar7] = ptr->kids[lVar7 + 1];\n          ptr->counts[lVar7] = ptr->counts[lVar7 + 1];\n          if (1 < iVar3) break;\n          pvVar12 = ptr->elems[lVar7 + 1];\n          lVar7 = lVar7 + 1;\n        }" { (expression_statement "iVar3 = (int)lVar7;" (assignment_expression "iVar3 = (int)lVar7" identifier = (cast_expression "(int)lVar7" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "ptr->elems[lVar7 + -1] = pvVar12;" (assignment_expression "ptr->elems[lVar7 + -1] = pvVar12" (subscript_expression "ptr->elems[lVar7 + -1]" (field_expression "ptr->elems" identifier -> field_identifier) [ (binary_expression "lVar7 + -1" identifier + number_literal) ]) = identifier) ;) (expression_statement "ptr->kids[lVar7] = ptr->kids[lVar7 + 1];" (assignment_expression "ptr->kids[lVar7] = ptr->kids[lVar7 + 1]" (subscript_expression "ptr->kids[lVar7]" (field_expression "ptr->kids" identifier -> field_identifier) [ identifier ]) = (subscript_expression "ptr->kids[lVar7 + 1]" (field_expression "ptr->kids" identifier -> field_identifier) [ (binary_expression "lVar7 + 1" identifier + number_literal) ])) ;) (expression_statement "ptr->counts[lVar7] = ptr->counts[lVar7 + 1];" (assignment_expression "ptr->counts[lVar7] = ptr->counts[lVar7 + 1]" (subscript_expression "ptr->counts[lVar7]" (field_expression "ptr->counts" identifier -> field_identifier) [ identifier ]) = (subscript_expression "ptr->counts[lVar7 + 1]" (field_expression "ptr->counts" identifier -> field_identifier) [ (binary_expression "lVar7 + 1" identifier + number_literal) ])) ;) (if_statement "if (1 < iVar3) break;" if (parenthesized_expression "(1 < iVar3)" ( (binary_expression "1 < iVar3" number_literal < identifier) )) (break_statement "break;" break ;)) (expression_statement "pvVar12 = ptr->elems[lVar7 + 1];" (assignment_expression "pvVar12 = ptr->elems[lVar7 + 1]" identifier = (subscript_expression "ptr->elems[lVar7 + 1]" (field_expression "ptr->elems" identifier -> field_identifier) [ (binary_expression "lVar7 + 1" identifier + number_literal) ])) ;) (expression_statement "lVar7 = lVar7 + 1;" (assignment_expression "lVar7 = lVar7 + 1" identifier = (binary_expression "lVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(pvVar12 != (void *)0x0)" ( (binary_expression "pvVar12 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) })) (expression_statement "ptr->elems[iVar3] = (void *)0x0;" (assignment_expression "ptr->elems[iVar3] = (void *)0x0" (subscript_expression "ptr->elems[iVar3]" (field_expression "ptr->elems" identifier -> field_identifier) [ identifier ]) = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "ptr->kids[(long)iVar3 + 1] = (node234 *)0x0;" (assignment_expression "ptr->kids[(long)iVar3 + 1] = (node234 *)0x0" (subscript_expression "ptr->kids[(long)iVar3 + 1]" (field_expression "ptr->kids" identifier -> field_identifier) [ (binary_expression "(long)iVar3 + 1" (cast_expression "(long)iVar3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ]) = (cast_expression "(node234 *)0x0" ( (type_descriptor "node234 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "ptr->counts[iVar3 + 1] = 0;" (assignment_expression "ptr->counts[iVar3 + 1] = 0" (subscript_expression "ptr->counts[iVar3 + 1]" (field_expression "ptr->counts" identifier -> field_identifier) [ (binary_expression "iVar3 + 1" identifier + number_literal) ]) = number_literal) ;) (if_statement "if (ptr->elems[0] == (void *)0x0) {\n        t->root = pnVar5;\n        pnVar5->parent = (node234_conflict *)0x0;\n        safefree(ptr);\n      }" if (parenthesized_expression "(ptr->elems[0] == (void *)0x0)" ( (binary_expression "ptr->elems[0] == (void *)0x0" (subscript_expression "ptr->elems[0]" (field_expression "ptr->elems" identifier -> field_identifier) [ number_literal ]) == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        t->root = pnVar5;\n        pnVar5->parent = (node234_conflict *)0x0;\n        safefree(ptr);\n      }" { (expression_statement "t->root = pnVar5;" (assignment_expression "t->root = pnVar5" (field_expression "t->root" identifier -> field_identifier) = identifier) ;) (expression_statement "pnVar5->parent = (node234_conflict *)0x0;" (assignment_expression "pnVar5->parent = (node234_conflict *)0x0" (field_expression "pnVar5->parent" identifier -> field_identifier) = (cast_expression "(node234_conflict *)0x0" ( (type_descriptor "node234_conflict *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "safefree(ptr);" (call_expression "safefree(ptr)" identifier (argument_list "(ptr)" ( identifier ))) ;) })) (expression_statement "index = pnVar5->counts[1] + pnVar5->counts[0] + 1;" (assignment_expression "index = pnVar5->counts[1] + pnVar5->counts[0] + 1" identifier = (binary_expression "pnVar5->counts[1] + pnVar5->counts[0] + 1" (binary_expression "pnVar5->counts[1] + pnVar5->counts[0]" (subscript_expression "pnVar5->counts[1]" (field_expression "pnVar5->counts" identifier -> field_identifier) [ number_literal ]) + (subscript_expression "pnVar5->counts[0]" (field_expression "pnVar5->counts" identifier -> field_identifier) [ number_literal ])) + number_literal)) ;) }) (else_clause "else {\n      do {\n        pnVar13 = pnVar2;\n        pnVar2 = pnVar13->kids[0];\n      } while (pnVar2 != (node234 *)0x0);\n      ptr->elems[iVar9] = pnVar13->elems[0];\n      index = 0;\n      pnVar5 = pnVar11;\n    }" else (compound_statement "{\n      do {\n        pnVar13 = pnVar2;\n        pnVar2 = pnVar13->kids[0];\n      } while (pnVar2 != (node234 *)0x0);\n      ptr->elems[iVar9] = pnVar13->elems[0];\n      index = 0;\n      pnVar5 = pnVar11;\n    }" { (do_statement "do {\n        pnVar13 = pnVar2;\n        pnVar2 = pnVar13->kids[0];\n      } while (pnVar2 != (node234 *)0x0);" do (compound_statement "{\n        pnVar13 = pnVar2;\n        pnVar2 = pnVar13->kids[0];\n      }" { (expression_statement "pnVar13 = pnVar2;" (assignment_expression "pnVar13 = pnVar2" identifier = identifier) ;) (expression_statement "pnVar2 = pnVar13->kids[0];" (assignment_expression "pnVar2 = pnVar13->kids[0]" identifier = (subscript_expression "pnVar13->kids[0]" (field_expression "pnVar13->kids" identifier -> field_identifier) [ number_literal ])) ;) }) while (parenthesized_expression "(pnVar2 != (node234 *)0x0)" ( (binary_expression "pnVar2 != (node234 *)0x0" identifier != (cast_expression "(node234 *)0x0" ( (type_descriptor "node234 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "ptr->elems[iVar9] = pnVar13->elems[0];" (assignment_expression "ptr->elems[iVar9] = pnVar13->elems[0]" (subscript_expression "ptr->elems[iVar9]" (field_expression "ptr->elems" identifier -> field_identifier) [ identifier ]) = (subscript_expression "pnVar13->elems[0]" (field_expression "pnVar13->elems" identifier -> field_identifier) [ number_literal ])) ;) (expression_statement "index = 0;" (assignment_expression "index = 0" identifier = number_literal) ;) (expression_statement "pnVar5 = pnVar11;" (assignment_expression "pnVar5 = pnVar11" identifier = identifier) ;) }))) }) (else_clause "else {\n    while (pnVar6 = pnVar8, pnVar6->kids[0] != (node234 *)0x0) {\n      pnVar8 = pnVar6->kids[3];\n      if (((pnVar6->kids[3] == (node234 *)0x0) &&\n          (pnVar8 = pnVar6->kids[2], pnVar6->kids[2] == (node234 *)0x0)) &&\n         (pnVar8 = pnVar6->kids[1], pnVar6->kids[1] == (node234 *)0x0)) {\n        pnVar8 = pnVar6->kids[0];\n      }\n    }\n    pvVar12 = pnVar6->elems[2];\n    if ((pvVar12 == (void *)0x0) && (pvVar12 = pnVar6->elems[1], pvVar12 == (void *)0x0)) {\n      pvVar12 = pnVar6->elems[0];\n    }\n    ptr->elems[iVar9] = pvVar12;\n    index = ptr->counts[iVar9] + -1;\n  }" else (compound_statement "{\n    while (pnVar6 = pnVar8, pnVar6->kids[0] != (node234 *)0x0) {\n      pnVar8 = pnVar6->kids[3];\n      if (((pnVar6->kids[3] == (node234 *)0x0) &&\n          (pnVar8 = pnVar6->kids[2], pnVar6->kids[2] == (node234 *)0x0)) &&\n         (pnVar8 = pnVar6->kids[1], pnVar6->kids[1] == (node234 *)0x0)) {\n        pnVar8 = pnVar6->kids[0];\n      }\n    }\n    pvVar12 = pnVar6->elems[2];\n    if ((pvVar12 == (void *)0x0) && (pvVar12 = pnVar6->elems[1], pvVar12 == (void *)0x0)) {\n      pvVar12 = pnVar6->elems[0];\n    }\n    ptr->elems[iVar9] = pvVar12;\n    index = ptr->counts[iVar9] + -1;\n  }" { (while_statement "while (pnVar6 = pnVar8, pnVar6->kids[0] != (node234 *)0x0) {\n      pnVar8 = pnVar6->kids[3];\n      if (((pnVar6->kids[3] == (node234 *)0x0) &&\n          (pnVar8 = pnVar6->kids[2], pnVar6->kids[2] == (node234 *)0x0)) &&\n         (pnVar8 = pnVar6->kids[1], pnVar6->kids[1] == (node234 *)0x0)) {\n        pnVar8 = pnVar6->kids[0];\n      }\n    }" while (parenthesized_expression "(pnVar6 = pnVar8, pnVar6->kids[0] != (node234 *)0x0)" ( (comma_expression "pnVar6 = pnVar8, pnVar6->kids[0] != (node234 *)0x0" (assignment_expression "pnVar6 = pnVar8" identifier = identifier) , (binary_expression "pnVar6->kids[0] != (node234 *)0x0" (subscript_expression "pnVar6->kids[0]" (field_expression "pnVar6->kids" identifier -> field_identifier) [ number_literal ]) != (cast_expression "(node234 *)0x0" ( (type_descriptor "node234 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) )) (compound_statement "{\n      pnVar8 = pnVar6->kids[3];\n      if (((pnVar6->kids[3] == (node234 *)0x0) &&\n          (pnVar8 = pnVar6->kids[2], pnVar6->kids[2] == (node234 *)0x0)) &&\n         (pnVar8 = pnVar6->kids[1], pnVar6->kids[1] == (node234 *)0x0)) {\n        pnVar8 = pnVar6->kids[0];\n      }\n    }" { (expression_statement "pnVar8 = pnVar6->kids[3];" (assignment_expression "pnVar8 = pnVar6->kids[3]" identifier = (subscript_expression "pnVar6->kids[3]" (field_expression "pnVar6->kids" identifier -> field_identifier) [ number_literal ])) ;) (if_statement "if (((pnVar6->kids[3] == (node234 *)0x0) &&\n          (pnVar8 = pnVar6->kids[2], pnVar6->kids[2] == (node234 *)0x0)) &&\n         (pnVar8 = pnVar6->kids[1], pnVar6->kids[1] == (node234 *)0x0)) {\n        pnVar8 = pnVar6->kids[0];\n      }" if (parenthesized_expression "(((pnVar6->kids[3] == (node234 *)0x0) &&\n          (pnVar8 = pnVar6->kids[2], pnVar6->kids[2] == (node234 *)0x0)) &&\n         (pnVar8 = pnVar6->kids[1], pnVar6->kids[1] == (node234 *)0x0))" ( (binary_expression "((pnVar6->kids[3] == (node234 *)0x0) &&\n          (pnVar8 = pnVar6->kids[2], pnVar6->kids[2] == (node234 *)0x0)) &&\n         (pnVar8 = pnVar6->kids[1], pnVar6->kids[1] == (node234 *)0x0)" (parenthesized_expression "((pnVar6->kids[3] == (node234 *)0x0) &&\n          (pnVar8 = pnVar6->kids[2], pnVar6->kids[2] == (node234 *)0x0))" ( (binary_expression "(pnVar6->kids[3] == (node234 *)0x0) &&\n          (pnVar8 = pnVar6->kids[2], pnVar6->kids[2] == (node234 *)0x0)" (parenthesized_expression "(pnVar6->kids[3] == (node234 *)0x0)" ( (binary_expression "pnVar6->kids[3] == (node234 *)0x0" (subscript_expression "pnVar6->kids[3]" (field_expression "pnVar6->kids" identifier -> field_identifier) [ number_literal ]) == (cast_expression "(node234 *)0x0" ( (type_descriptor "node234 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(pnVar8 = pnVar6->kids[2], pnVar6->kids[2] == (node234 *)0x0)" ( (comma_expression "pnVar8 = pnVar6->kids[2], pnVar6->kids[2] == (node234 *)0x0" (assignment_expression "pnVar8 = pnVar6->kids[2]" identifier = (subscript_expression "pnVar6->kids[2]" (field_expression "pnVar6->kids" identifier -> field_identifier) [ number_literal ])) , (binary_expression "pnVar6->kids[2] == (node234 *)0x0" (subscript_expression "pnVar6->kids[2]" (field_expression "pnVar6->kids" identifier -> field_identifier) [ number_literal ]) == (cast_expression "(node234 *)0x0" ( (type_descriptor "node234 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) && (parenthesized_expression "(pnVar8 = pnVar6->kids[1], pnVar6->kids[1] == (node234 *)0x0)" ( (comma_expression "pnVar8 = pnVar6->kids[1], pnVar6->kids[1] == (node234 *)0x0" (assignment_expression "pnVar8 = pnVar6->kids[1]" identifier = (subscript_expression "pnVar6->kids[1]" (field_expression "pnVar6->kids" identifier -> field_identifier) [ number_literal ])) , (binary_expression "pnVar6->kids[1] == (node234 *)0x0" (subscript_expression "pnVar6->kids[1]" (field_expression "pnVar6->kids" identifier -> field_identifier) [ number_literal ]) == (cast_expression "(node234 *)0x0" ( (type_descriptor "node234 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n        pnVar8 = pnVar6->kids[0];\n      }" { (expression_statement "pnVar8 = pnVar6->kids[0];" (assignment_expression "pnVar8 = pnVar6->kids[0]" identifier = (subscript_expression "pnVar6->kids[0]" (field_expression "pnVar6->kids" identifier -> field_identifier) [ number_literal ])) ;) })) })) (expression_statement "pvVar12 = pnVar6->elems[2];" (assignment_expression "pvVar12 = pnVar6->elems[2]" identifier = (subscript_expression "pnVar6->elems[2]" (field_expression "pnVar6->elems" identifier -> field_identifier) [ number_literal ])) ;) (if_statement "if ((pvVar12 == (void *)0x0) && (pvVar12 = pnVar6->elems[1], pvVar12 == (void *)0x0)) {\n      pvVar12 = pnVar6->elems[0];\n    }" if (parenthesized_expression "((pvVar12 == (void *)0x0) && (pvVar12 = pnVar6->elems[1], pvVar12 == (void *)0x0))" ( (binary_expression "(pvVar12 == (void *)0x0) && (pvVar12 = pnVar6->elems[1], pvVar12 == (void *)0x0)" (parenthesized_expression "(pvVar12 == (void *)0x0)" ( (binary_expression "pvVar12 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(pvVar12 = pnVar6->elems[1], pvVar12 == (void *)0x0)" ( (comma_expression "pvVar12 = pnVar6->elems[1], pvVar12 == (void *)0x0" (assignment_expression "pvVar12 = pnVar6->elems[1]" identifier = (subscript_expression "pnVar6->elems[1]" (field_expression "pnVar6->elems" identifier -> field_identifier) [ number_literal ])) , (binary_expression "pvVar12 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n      pvVar12 = pnVar6->elems[0];\n    }" { (expression_statement "pvVar12 = pnVar6->elems[0];" (assignment_expression "pvVar12 = pnVar6->elems[0]" identifier = (subscript_expression "pnVar6->elems[0]" (field_expression "pnVar6->elems" identifier -> field_identifier) [ number_literal ])) ;) })) (expression_statement "ptr->elems[iVar9] = pvVar12;" (assignment_expression "ptr->elems[iVar9] = pvVar12" (subscript_expression "ptr->elems[iVar9]" (field_expression "ptr->elems" identifier -> field_identifier) [ identifier ]) = identifier) ;) (expression_statement "index = ptr->counts[iVar9] + -1;" (assignment_expression "index = ptr->counts[iVar9] + -1" identifier = (binary_expression "ptr->counts[iVar9] + -1" (subscript_expression "ptr->counts[iVar9]" (field_expression "ptr->counts" identifier -> field_identifier) [ identifier ]) + number_literal)) ;) }))) (goto_statement "goto LAB_0012f7e4;" goto statement_identifier ;) (labeled_statement "LAB_0012f7d1:\n  pnVar5 = ptr->kids[0];" statement_identifier : (expression_statement "pnVar5 = ptr->kids[0];" (assignment_expression "pnVar5 = ptr->kids[0]" identifier = (subscript_expression "ptr->kids[0]" (field_expression "ptr->kids" identifier -> field_identifier) [ number_literal ])) ;)) (if_statement "if (pnVar5->elems[1] == (void *)0x0) {\n    pnVar11 = ptr->kids[1];\n    local_50 = 0;\n    local_54 = 0;\n    pnVar8 = ptr;\n    if (pnVar11 != (node234 *)0x0) {\nLAB_0012fe3f:\n      if (pnVar11->elems[1] != (void *)0x0) {\n        pnVar5->elems[1] = pnVar8->elems[0];\n        pnVar2 = pnVar11->kids[0];\n        pnVar5->kids[2] = pnVar2;\n        pnVar5->counts[2] = pnVar11->counts[0];\n        if (pnVar2 != (node234 *)0x0) {\n          pnVar2->parent = pnVar5;\n        }\n        pnVar8->elems[0] = pnVar11->elems[0];\n        pnVar11->kids[0] = pnVar11->kids[1];\n        pnVar11->counts[0] = pnVar11->counts[1];\n        pvVar12 = pnVar11->elems[1];\n        if (pvVar12 != (void *)0x0) {\n          pnVar11->kids[1] = pnVar11->kids[2];\n          pnVar11->counts[1] = pnVar11->counts[2];\n          pnVar11->elems[0] = pvVar12;\n          pvVar12 = pnVar11->elems[2];\n          if (pvVar12 == (void *)0x0) {\n            pvVar12 = (void *)0x1;\n          }\n          else {\n            pnVar11->kids[2] = pnVar11->kids[3];\n            pnVar11->counts[2] = pnVar11->counts[3];\n            pnVar11->elems[1] = pvVar12;\n            pvVar12 = (void *)0x2;\n          }\n        }\n        iVar3 = (int)pvVar12;\n        pnVar11->kids[(long)iVar3 + 1] = (node234 *)0x0;\n        pnVar11->counts[iVar3 + 1] = 0;\n        pnVar11->elems[iVar3] = (void *)0x0;\n        iVar3 = countnode234(pnVar5);\n        ptr->counts[local_50] = iVar3;\n        iVar3 = countnode234(pnVar11);\n        ptr->counts[local_50 + 1] = iVar3;\n        goto LAB_0012f7e4;\n      }\n      if (local_54 != 0) {\nLAB_0012f905:\n        local_54 = local_54 - 1;\n        index = index + 1 + ptr->counts[(int)local_54];\n      }\n    }\n    pnVar11 = ptr->kids[(int)local_54];\n    pnVar5 = ptr->kids[(long)(int)local_54 + 1];\n    pnVar5->kids[3] = pnVar5->kids[1];\n    pnVar5->counts[3] = pnVar5->counts[1];\n    pnVar5->elems[2] = pnVar5->elems[0];\n    pnVar5->kids[2] = pnVar5->kids[0];\n    pnVar5->counts[2] = pnVar5->counts[0];\n    pnVar5->elems[1] = ptr->elems[(int)local_54];\n    pnVar2 = pnVar11->kids[1];\n    pnVar5->kids[1] = pnVar2;\n    pnVar5->counts[1] = pnVar11->counts[1];\n    if (pnVar2 != (node234 *)0x0) {\n      pnVar2->parent = pnVar5;\n    }\n    pnVar5->elems[0] = pnVar11->elems[0];\n    pnVar2 = pnVar11->kids[0];\n    pnVar5->kids[0] = pnVar2;\n    pnVar5->counts[0] = pnVar11->counts[0];\n    if (pnVar2 != (node234 *)0x0) {\n      pnVar2->parent = pnVar5;\n    }\n    iVar3 = countnode234(pnVar5);\n    ptr->counts[(int)(local_54 + 1)] = iVar3;\n    safefree(pnVar11);\n    if ((int)local_54 < 3) {\n      pnVar11 = ptr->kids[(long)(int)local_54 + 1];\n      if (pnVar11 != (node234 *)0x0) {\n        lVar7 = (long)(int)(local_54 + 1);\n        do {\n          local_54 = (uint)lVar7;\n          ptr->kids[lVar7 + -1] = pnVar11;\n          ptr->counts[lVar7 + -1] = ptr->counts[lVar7];\n          pvVar12 = (void *)0x0;\n          if ((int)(local_54 - 1) < 2) {\n            pvVar12 = ptr->elems[lVar7];\n          }\n          ptr->elems[lVar7 + -1] = pvVar12;\n          if (2 < (int)local_54) goto LAB_0012fd6d;\n          pnVar11 = ptr->kids[lVar7 + 1];\n          lVar7 = lVar7 + 1;\n        } while (pnVar11 != (node234 *)0x0);\n      }\n      lVar7 = (long)(int)local_54;\n      ptr->kids[lVar7] = (node234 *)0x0;\n      ptr->counts[lVar7] = 0;\n      ptr->elems[lVar7] = (void *)0x0;\n    }\n    else {\nLAB_0012fd6d:\n      ptr->kids[(int)local_54] = (node234 *)0x0;\n      ptr->counts[(int)local_54] = 0;\n    }\n    if (ptr->elems[0] == (void *)0x0) {\n      t->root = pnVar5;\n      pnVar5->parent = (node234_conflict *)0x0;\n      safefree(ptr);\n    }\n  }" if (parenthesized_expression "(pnVar5->elems[1] == (void *)0x0)" ( (binary_expression "pnVar5->elems[1] == (void *)0x0" (subscript_expression "pnVar5->elems[1]" (field_expression "pnVar5->elems" identifier -> field_identifier) [ number_literal ]) == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    pnVar11 = ptr->kids[1];\n    local_50 = 0;\n    local_54 = 0;\n    pnVar8 = ptr;\n    if (pnVar11 != (node234 *)0x0) {\nLAB_0012fe3f:\n      if (pnVar11->elems[1] != (void *)0x0) {\n        pnVar5->elems[1] = pnVar8->elems[0];\n        pnVar2 = pnVar11->kids[0];\n        pnVar5->kids[2] = pnVar2;\n        pnVar5->counts[2] = pnVar11->counts[0];\n        if (pnVar2 != (node234 *)0x0) {\n          pnVar2->parent = pnVar5;\n        }\n        pnVar8->elems[0] = pnVar11->elems[0];\n        pnVar11->kids[0] = pnVar11->kids[1];\n        pnVar11->counts[0] = pnVar11->counts[1];\n        pvVar12 = pnVar11->elems[1];\n        if (pvVar12 != (void *)0x0) {\n          pnVar11->kids[1] = pnVar11->kids[2];\n          pnVar11->counts[1] = pnVar11->counts[2];\n          pnVar11->elems[0] = pvVar12;\n          pvVar12 = pnVar11->elems[2];\n          if (pvVar12 == (void *)0x0) {\n            pvVar12 = (void *)0x1;\n          }\n          else {\n            pnVar11->kids[2] = pnVar11->kids[3];\n            pnVar11->counts[2] = pnVar11->counts[3];\n            pnVar11->elems[1] = pvVar12;\n            pvVar12 = (void *)0x2;\n          }\n        }\n        iVar3 = (int)pvVar12;\n        pnVar11->kids[(long)iVar3 + 1] = (node234 *)0x0;\n        pnVar11->counts[iVar3 + 1] = 0;\n        pnVar11->elems[iVar3] = (void *)0x0;\n        iVar3 = countnode234(pnVar5);\n        ptr->counts[local_50] = iVar3;\n        iVar3 = countnode234(pnVar11);\n        ptr->counts[local_50 + 1] = iVar3;\n        goto LAB_0012f7e4;\n      }\n      if (local_54 != 0) {\nLAB_0012f905:\n        local_54 = local_54 - 1;\n        index = index + 1 + ptr->counts[(int)local_54];\n      }\n    }\n    pnVar11 = ptr->kids[(int)local_54];\n    pnVar5 = ptr->kids[(long)(int)local_54 + 1];\n    pnVar5->kids[3] = pnVar5->kids[1];\n    pnVar5->counts[3] = pnVar5->counts[1];\n    pnVar5->elems[2] = pnVar5->elems[0];\n    pnVar5->kids[2] = pnVar5->kids[0];\n    pnVar5->counts[2] = pnVar5->counts[0];\n    pnVar5->elems[1] = ptr->elems[(int)local_54];\n    pnVar2 = pnVar11->kids[1];\n    pnVar5->kids[1] = pnVar2;\n    pnVar5->counts[1] = pnVar11->counts[1];\n    if (pnVar2 != (node234 *)0x0) {\n      pnVar2->parent = pnVar5;\n    }\n    pnVar5->elems[0] = pnVar11->elems[0];\n    pnVar2 = pnVar11->kids[0];\n    pnVar5->kids[0] = pnVar2;\n    pnVar5->counts[0] = pnVar11->counts[0];\n    if (pnVar2 != (node234 *)0x0) {\n      pnVar2->parent = pnVar5;\n    }\n    iVar3 = countnode234(pnVar5);\n    ptr->counts[(int)(local_54 + 1)] = iVar3;\n    safefree(pnVar11);\n    if ((int)local_54 < 3) {\n      pnVar11 = ptr->kids[(long)(int)local_54 + 1];\n      if (pnVar11 != (node234 *)0x0) {\n        lVar7 = (long)(int)(local_54 + 1);\n        do {\n          local_54 = (uint)lVar7;\n          ptr->kids[lVar7 + -1] = pnVar11;\n          ptr->counts[lVar7 + -1] = ptr->counts[lVar7];\n          pvVar12 = (void *)0x0;\n          if ((int)(local_54 - 1) < 2) {\n            pvVar12 = ptr->elems[lVar7];\n          }\n          ptr->elems[lVar7 + -1] = pvVar12;\n          if (2 < (int)local_54) goto LAB_0012fd6d;\n          pnVar11 = ptr->kids[lVar7 + 1];\n          lVar7 = lVar7 + 1;\n        } while (pnVar11 != (node234 *)0x0);\n      }\n      lVar7 = (long)(int)local_54;\n      ptr->kids[lVar7] = (node234 *)0x0;\n      ptr->counts[lVar7] = 0;\n      ptr->elems[lVar7] = (void *)0x0;\n    }\n    else {\nLAB_0012fd6d:\n      ptr->kids[(int)local_54] = (node234 *)0x0;\n      ptr->counts[(int)local_54] = 0;\n    }\n    if (ptr->elems[0] == (void *)0x0) {\n      t->root = pnVar5;\n      pnVar5->parent = (node234_conflict *)0x0;\n      safefree(ptr);\n    }\n  }" { (expression_statement "pnVar11 = ptr->kids[1];" (assignment_expression "pnVar11 = ptr->kids[1]" identifier = (subscript_expression "ptr->kids[1]" (field_expression "ptr->kids" identifier -> field_identifier) [ number_literal ])) ;) (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" identifier = number_literal) ;) (expression_statement "local_54 = 0;" (assignment_expression "local_54 = 0" identifier = number_literal) ;) (expression_statement "pnVar8 = ptr;" (assignment_expression "pnVar8 = ptr" identifier = identifier) ;) (if_statement "if (pnVar11 != (node234 *)0x0) {\nLAB_0012fe3f:\n      if (pnVar11->elems[1] != (void *)0x0) {\n        pnVar5->elems[1] = pnVar8->elems[0];\n        pnVar2 = pnVar11->kids[0];\n        pnVar5->kids[2] = pnVar2;\n        pnVar5->counts[2] = pnVar11->counts[0];\n        if (pnVar2 != (node234 *)0x0) {\n          pnVar2->parent = pnVar5;\n        }\n        pnVar8->elems[0] = pnVar11->elems[0];\n        pnVar11->kids[0] = pnVar11->kids[1];\n        pnVar11->counts[0] = pnVar11->counts[1];\n        pvVar12 = pnVar11->elems[1];\n        if (pvVar12 != (void *)0x0) {\n          pnVar11->kids[1] = pnVar11->kids[2];\n          pnVar11->counts[1] = pnVar11->counts[2];\n          pnVar11->elems[0] = pvVar12;\n          pvVar12 = pnVar11->elems[2];\n          if (pvVar12 == (void *)0x0) {\n            pvVar12 = (void *)0x1;\n          }\n          else {\n            pnVar11->kids[2] = pnVar11->kids[3];\n            pnVar11->counts[2] = pnVar11->counts[3];\n            pnVar11->elems[1] = pvVar12;\n            pvVar12 = (void *)0x2;\n          }\n        }\n        iVar3 = (int)pvVar12;\n        pnVar11->kids[(long)iVar3 + 1] = (node234 *)0x0;\n        pnVar11->counts[iVar3 + 1] = 0;\n        pnVar11->elems[iVar3] = (void *)0x0;\n        iVar3 = countnode234(pnVar5);\n        ptr->counts[local_50] = iVar3;\n        iVar3 = countnode234(pnVar11);\n        ptr->counts[local_50 + 1] = iVar3;\n        goto LAB_0012f7e4;\n      }\n      if (local_54 != 0) {\nLAB_0012f905:\n        local_54 = local_54 - 1;\n        index = index + 1 + ptr->counts[(int)local_54];\n      }\n    }" if (parenthesized_expression "(pnVar11 != (node234 *)0x0)" ( (binary_expression "pnVar11 != (node234 *)0x0" identifier != (cast_expression "(node234 *)0x0" ( (type_descriptor "node234 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_0012fe3f:\n      if (pnVar11->elems[1] != (void *)0x0) {\n        pnVar5->elems[1] = pnVar8->elems[0];\n        pnVar2 = pnVar11->kids[0];\n        pnVar5->kids[2] = pnVar2;\n        pnVar5->counts[2] = pnVar11->counts[0];\n        if (pnVar2 != (node234 *)0x0) {\n          pnVar2->parent = pnVar5;\n        }\n        pnVar8->elems[0] = pnVar11->elems[0];\n        pnVar11->kids[0] = pnVar11->kids[1];\n        pnVar11->counts[0] = pnVar11->counts[1];\n        pvVar12 = pnVar11->elems[1];\n        if (pvVar12 != (void *)0x0) {\n          pnVar11->kids[1] = pnVar11->kids[2];\n          pnVar11->counts[1] = pnVar11->counts[2];\n          pnVar11->elems[0] = pvVar12;\n          pvVar12 = pnVar11->elems[2];\n          if (pvVar12 == (void *)0x0) {\n            pvVar12 = (void *)0x1;\n          }\n          else {\n            pnVar11->kids[2] = pnVar11->kids[3];\n            pnVar11->counts[2] = pnVar11->counts[3];\n            pnVar11->elems[1] = pvVar12;\n            pvVar12 = (void *)0x2;\n          }\n        }\n        iVar3 = (int)pvVar12;\n        pnVar11->kids[(long)iVar3 + 1] = (node234 *)0x0;\n        pnVar11->counts[iVar3 + 1] = 0;\n        pnVar11->elems[iVar3] = (void *)0x0;\n        iVar3 = countnode234(pnVar5);\n        ptr->counts[local_50] = iVar3;\n        iVar3 = countnode234(pnVar11);\n        ptr->counts[local_50 + 1] = iVar3;\n        goto LAB_0012f7e4;\n      }\n      if (local_54 != 0) {\nLAB_0012f905:\n        local_54 = local_54 - 1;\n        index = index + 1 + ptr->counts[(int)local_54];\n      }\n    }" { (labeled_statement "LAB_0012fe3f:\n      if (pnVar11->elems[1] != (void *)0x0) {\n        pnVar5->elems[1] = pnVar8->elems[0];\n        pnVar2 = pnVar11->kids[0];\n        pnVar5->kids[2] = pnVar2;\n        pnVar5->counts[2] = pnVar11->counts[0];\n        if (pnVar2 != (node234 *)0x0) {\n          pnVar2->parent = pnVar5;\n        }\n        pnVar8->elems[0] = pnVar11->elems[0];\n        pnVar11->kids[0] = pnVar11->kids[1];\n        pnVar11->counts[0] = pnVar11->counts[1];\n        pvVar12 = pnVar11->elems[1];\n        if (pvVar12 != (void *)0x0) {\n          pnVar11->kids[1] = pnVar11->kids[2];\n          pnVar11->counts[1] = pnVar11->counts[2];\n          pnVar11->elems[0] = pvVar12;\n          pvVar12 = pnVar11->elems[2];\n          if (pvVar12 == (void *)0x0) {\n            pvVar12 = (void *)0x1;\n          }\n          else {\n            pnVar11->kids[2] = pnVar11->kids[3];\n            pnVar11->counts[2] = pnVar11->counts[3];\n            pnVar11->elems[1] = pvVar12;\n            pvVar12 = (void *)0x2;\n          }\n        }\n        iVar3 = (int)pvVar12;\n        pnVar11->kids[(long)iVar3 + 1] = (node234 *)0x0;\n        pnVar11->counts[iVar3 + 1] = 0;\n        pnVar11->elems[iVar3] = (void *)0x0;\n        iVar3 = countnode234(pnVar5);\n        ptr->counts[local_50] = iVar3;\n        iVar3 = countnode234(pnVar11);\n        ptr->counts[local_50 + 1] = iVar3;\n        goto LAB_0012f7e4;\n      }" statement_identifier : (if_statement "if (pnVar11->elems[1] != (void *)0x0) {\n        pnVar5->elems[1] = pnVar8->elems[0];\n        pnVar2 = pnVar11->kids[0];\n        pnVar5->kids[2] = pnVar2;\n        pnVar5->counts[2] = pnVar11->counts[0];\n        if (pnVar2 != (node234 *)0x0) {\n          pnVar2->parent = pnVar5;\n        }\n        pnVar8->elems[0] = pnVar11->elems[0];\n        pnVar11->kids[0] = pnVar11->kids[1];\n        pnVar11->counts[0] = pnVar11->counts[1];\n        pvVar12 = pnVar11->elems[1];\n        if (pvVar12 != (void *)0x0) {\n          pnVar11->kids[1] = pnVar11->kids[2];\n          pnVar11->counts[1] = pnVar11->counts[2];\n          pnVar11->elems[0] = pvVar12;\n          pvVar12 = pnVar11->elems[2];\n          if (pvVar12 == (void *)0x0) {\n            pvVar12 = (void *)0x1;\n          }\n          else {\n            pnVar11->kids[2] = pnVar11->kids[3];\n            pnVar11->counts[2] = pnVar11->counts[3];\n            pnVar11->elems[1] = pvVar12;\n            pvVar12 = (void *)0x2;\n          }\n        }\n        iVar3 = (int)pvVar12;\n        pnVar11->kids[(long)iVar3 + 1] = (node234 *)0x0;\n        pnVar11->counts[iVar3 + 1] = 0;\n        pnVar11->elems[iVar3] = (void *)0x0;\n        iVar3 = countnode234(pnVar5);\n        ptr->counts[local_50] = iVar3;\n        iVar3 = countnode234(pnVar11);\n        ptr->counts[local_50 + 1] = iVar3;\n        goto LAB_0012f7e4;\n      }" if (parenthesized_expression "(pnVar11->elems[1] != (void *)0x0)" ( (binary_expression "pnVar11->elems[1] != (void *)0x0" (subscript_expression "pnVar11->elems[1]" (field_expression "pnVar11->elems" identifier -> field_identifier) [ number_literal ]) != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        pnVar5->elems[1] = pnVar8->elems[0];\n        pnVar2 = pnVar11->kids[0];\n        pnVar5->kids[2] = pnVar2;\n        pnVar5->counts[2] = pnVar11->counts[0];\n        if (pnVar2 != (node234 *)0x0) {\n          pnVar2->parent = pnVar5;\n        }\n        pnVar8->elems[0] = pnVar11->elems[0];\n        pnVar11->kids[0] = pnVar11->kids[1];\n        pnVar11->counts[0] = pnVar11->counts[1];\n        pvVar12 = pnVar11->elems[1];\n        if (pvVar12 != (void *)0x0) {\n          pnVar11->kids[1] = pnVar11->kids[2];\n          pnVar11->counts[1] = pnVar11->counts[2];\n          pnVar11->elems[0] = pvVar12;\n          pvVar12 = pnVar11->elems[2];\n          if (pvVar12 == (void *)0x0) {\n            pvVar12 = (void *)0x1;\n          }\n          else {\n            pnVar11->kids[2] = pnVar11->kids[3];\n            pnVar11->counts[2] = pnVar11->counts[3];\n            pnVar11->elems[1] = pvVar12;\n            pvVar12 = (void *)0x2;\n          }\n        }\n        iVar3 = (int)pvVar12;\n        pnVar11->kids[(long)iVar3 + 1] = (node234 *)0x0;\n        pnVar11->counts[iVar3 + 1] = 0;\n        pnVar11->elems[iVar3] = (void *)0x0;\n        iVar3 = countnode234(pnVar5);\n        ptr->counts[local_50] = iVar3;\n        iVar3 = countnode234(pnVar11);\n        ptr->counts[local_50 + 1] = iVar3;\n        goto LAB_0012f7e4;\n      }" { (expression_statement "pnVar5->elems[1] = pnVar8->elems[0];" (assignment_expression "pnVar5->elems[1] = pnVar8->elems[0]" (subscript_expression "pnVar5->elems[1]" (field_expression "pnVar5->elems" identifier -> field_identifier) [ number_literal ]) = (subscript_expression "pnVar8->elems[0]" (field_expression "pnVar8->elems" identifier -> field_identifier) [ number_literal ])) ;) (expression_statement "pnVar2 = pnVar11->kids[0];" (assignment_expression "pnVar2 = pnVar11->kids[0]" identifier = (subscript_expression "pnVar11->kids[0]" (field_expression "pnVar11->kids" identifier -> field_identifier) [ number_literal ])) ;) (expression_statement "pnVar5->kids[2] = pnVar2;" (assignment_expression "pnVar5->kids[2] = pnVar2" (subscript_expression "pnVar5->kids[2]" (field_expression "pnVar5->kids" identifier -> field_identifier) [ number_literal ]) = identifier) ;) (expression_statement "pnVar5->counts[2] = pnVar11->counts[0];" (assignment_expression "pnVar5->counts[2] = pnVar11->counts[0]" (subscript_expression "pnVar5->counts[2]" (field_expression "pnVar5->counts" identifier -> field_identifier) [ number_literal ]) = (subscript_expression "pnVar11->counts[0]" (field_expression "pnVar11->counts" identifier -> field_identifier) [ number_literal ])) ;) (if_statement "if (pnVar2 != (node234 *)0x0) {\n          pnVar2->parent = pnVar5;\n        }" if (parenthesized_expression "(pnVar2 != (node234 *)0x0)" ( (binary_expression "pnVar2 != (node234 *)0x0" identifier != (cast_expression "(node234 *)0x0" ( (type_descriptor "node234 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          pnVar2->parent = pnVar5;\n        }" { (expression_statement "pnVar2->parent = pnVar5;" (assignment_expression "pnVar2->parent = pnVar5" (field_expression "pnVar2->parent" identifier -> field_identifier) = identifier) ;) })) (expression_statement "pnVar8->elems[0] = pnVar11->elems[0];" (assignment_expression "pnVar8->elems[0] = pnVar11->elems[0]" (subscript_expression "pnVar8->elems[0]" (field_expression "pnVar8->elems" identifier -> field_identifier) [ number_literal ]) = (subscript_expression "pnVar11->elems[0]" (field_expression "pnVar11->elems" identifier -> field_identifier) [ number_literal ])) ;) (expression_statement "pnVar11->kids[0] = pnVar11->kids[1];" (assignment_expression "pnVar11->kids[0] = pnVar11->kids[1]" (subscript_expression "pnVar11->kids[0]" (field_expression "pnVar11->kids" identifier -> field_identifier) [ number_literal ]) = (subscript_expression "pnVar11->kids[1]" (field_expression "pnVar11->kids" identifier -> field_identifier) [ number_literal ])) ;) (expression_statement "pnVar11->counts[0] = pnVar11->counts[1];" (assignment_expression "pnVar11->counts[0] = pnVar11->counts[1]" (subscript_expression "pnVar11->counts[0]" (field_expression "pnVar11->counts" identifier -> field_identifier) [ number_literal ]) = (subscript_expression "pnVar11->counts[1]" (field_expression "pnVar11->counts" identifier -> field_identifier) [ number_literal ])) ;) (expression_statement "pvVar12 = pnVar11->elems[1];" (assignment_expression "pvVar12 = pnVar11->elems[1]" identifier = (subscript_expression "pnVar11->elems[1]" (field_expression "pnVar11->elems" identifier -> field_identifier) [ number_literal ])) ;) (if_statement "if (pvVar12 != (void *)0x0) {\n          pnVar11->kids[1] = pnVar11->kids[2];\n          pnVar11->counts[1] = pnVar11->counts[2];\n          pnVar11->elems[0] = pvVar12;\n          pvVar12 = pnVar11->elems[2];\n          if (pvVar12 == (void *)0x0) {\n            pvVar12 = (void *)0x1;\n          }\n          else {\n            pnVar11->kids[2] = pnVar11->kids[3];\n            pnVar11->counts[2] = pnVar11->counts[3];\n            pnVar11->elems[1] = pvVar12;\n            pvVar12 = (void *)0x2;\n          }\n        }" if (parenthesized_expression "(pvVar12 != (void *)0x0)" ( (binary_expression "pvVar12 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          pnVar11->kids[1] = pnVar11->kids[2];\n          pnVar11->counts[1] = pnVar11->counts[2];\n          pnVar11->elems[0] = pvVar12;\n          pvVar12 = pnVar11->elems[2];\n          if (pvVar12 == (void *)0x0) {\n            pvVar12 = (void *)0x1;\n          }\n          else {\n            pnVar11->kids[2] = pnVar11->kids[3];\n            pnVar11->counts[2] = pnVar11->counts[3];\n            pnVar11->elems[1] = pvVar12;\n            pvVar12 = (void *)0x2;\n          }\n        }" { (expression_statement "pnVar11->kids[1] = pnVar11->kids[2];" (assignment_expression "pnVar11->kids[1] = pnVar11->kids[2]" (subscript_expression "pnVar11->kids[1]" (field_expression "pnVar11->kids" identifier -> field_identifier) [ number_literal ]) = (subscript_expression "pnVar11->kids[2]" (field_expression "pnVar11->kids" identifier -> field_identifier) [ number_literal ])) ;) (expression_statement "pnVar11->counts[1] = pnVar11->counts[2];" (assignment_expression "pnVar11->counts[1] = pnVar11->counts[2]" (subscript_expression "pnVar11->counts[1]" (field_expression "pnVar11->counts" identifier -> field_identifier) [ number_literal ]) = (subscript_expression "pnVar11->counts[2]" (field_expression "pnVar11->counts" identifier -> field_identifier) [ number_literal ])) ;) (expression_statement "pnVar11->elems[0] = pvVar12;" (assignment_expression "pnVar11->elems[0] = pvVar12" (subscript_expression "pnVar11->elems[0]" (field_expression "pnVar11->elems" identifier -> field_identifier) [ number_literal ]) = identifier) ;) (expression_statement "pvVar12 = pnVar11->elems[2];" (assignment_expression "pvVar12 = pnVar11->elems[2]" identifier = (subscript_expression "pnVar11->elems[2]" (field_expression "pnVar11->elems" identifier -> field_identifier) [ number_literal ])) ;) (if_statement "if (pvVar12 == (void *)0x0) {\n            pvVar12 = (void *)0x1;\n          }\n          else {\n            pnVar11->kids[2] = pnVar11->kids[3];\n            pnVar11->counts[2] = pnVar11->counts[3];\n            pnVar11->elems[1] = pvVar12;\n            pvVar12 = (void *)0x2;\n          }" if (parenthesized_expression "(pvVar12 == (void *)0x0)" ( (binary_expression "pvVar12 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            pvVar12 = (void *)0x1;\n          }" { (expression_statement "pvVar12 = (void *)0x1;" (assignment_expression "pvVar12 = (void *)0x1" identifier = (cast_expression "(void *)0x1" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n            pnVar11->kids[2] = pnVar11->kids[3];\n            pnVar11->counts[2] = pnVar11->counts[3];\n            pnVar11->elems[1] = pvVar12;\n            pvVar12 = (void *)0x2;\n          }" else (compound_statement "{\n            pnVar11->kids[2] = pnVar11->kids[3];\n            pnVar11->counts[2] = pnVar11->counts[3];\n            pnVar11->elems[1] = pvVar12;\n            pvVar12 = (void *)0x2;\n          }" { (expression_statement "pnVar11->kids[2] = pnVar11->kids[3];" (assignment_expression "pnVar11->kids[2] = pnVar11->kids[3]" (subscript_expression "pnVar11->kids[2]" (field_expression "pnVar11->kids" identifier -> field_identifier) [ number_literal ]) = (subscript_expression "pnVar11->kids[3]" (field_expression "pnVar11->kids" identifier -> field_identifier) [ number_literal ])) ;) (expression_statement "pnVar11->counts[2] = pnVar11->counts[3];" (assignment_expression "pnVar11->counts[2] = pnVar11->counts[3]" (subscript_expression "pnVar11->counts[2]" (field_expression "pnVar11->counts" identifier -> field_identifier) [ number_literal ]) = (subscript_expression "pnVar11->counts[3]" (field_expression "pnVar11->counts" identifier -> field_identifier) [ number_literal ])) ;) (expression_statement "pnVar11->elems[1] = pvVar12;" (assignment_expression "pnVar11->elems[1] = pvVar12" (subscript_expression "pnVar11->elems[1]" (field_expression "pnVar11->elems" identifier -> field_identifier) [ number_literal ]) = identifier) ;) (expression_statement "pvVar12 = (void *)0x2;" (assignment_expression "pvVar12 = (void *)0x2" identifier = (cast_expression "(void *)0x2" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) })) (expression_statement "iVar3 = (int)pvVar12;" (assignment_expression "iVar3 = (int)pvVar12" identifier = (cast_expression "(int)pvVar12" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "pnVar11->kids[(long)iVar3 + 1] = (node234 *)0x0;" (assignment_expression "pnVar11->kids[(long)iVar3 + 1] = (node234 *)0x0" (subscript_expression "pnVar11->kids[(long)iVar3 + 1]" (field_expression "pnVar11->kids" identifier -> field_identifier) [ (binary_expression "(long)iVar3 + 1" (cast_expression "(long)iVar3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ]) = (cast_expression "(node234 *)0x0" ( (type_descriptor "node234 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pnVar11->counts[iVar3 + 1] = 0;" (assignment_expression "pnVar11->counts[iVar3 + 1] = 0" (subscript_expression "pnVar11->counts[iVar3 + 1]" (field_expression "pnVar11->counts" identifier -> field_identifier) [ (binary_expression "iVar3 + 1" identifier + number_literal) ]) = number_literal) ;) (expression_statement "pnVar11->elems[iVar3] = (void *)0x0;" (assignment_expression "pnVar11->elems[iVar3] = (void *)0x0" (subscript_expression "pnVar11->elems[iVar3]" (field_expression "pnVar11->elems" identifier -> field_identifier) [ identifier ]) = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar3 = countnode234(pnVar5);" (assignment_expression "iVar3 = countnode234(pnVar5)" identifier = (call_expression "countnode234(pnVar5)" identifier (argument_list "(pnVar5)" ( identifier )))) ;) (expression_statement "ptr->counts[local_50] = iVar3;" (assignment_expression "ptr->counts[local_50] = iVar3" (subscript_expression "ptr->counts[local_50]" (field_expression "ptr->counts" identifier -> field_identifier) [ identifier ]) = identifier) ;) (expression_statement "iVar3 = countnode234(pnVar11);" (assignment_expression "iVar3 = countnode234(pnVar11)" identifier = (call_expression "countnode234(pnVar11)" identifier (argument_list "(pnVar11)" ( identifier )))) ;) (expression_statement "ptr->counts[local_50 + 1] = iVar3;" (assignment_expression "ptr->counts[local_50 + 1] = iVar3" (subscript_expression "ptr->counts[local_50 + 1]" (field_expression "ptr->counts" identifier -> field_identifier) [ (binary_expression "local_50 + 1" identifier + number_literal) ]) = identifier) ;) (goto_statement "goto LAB_0012f7e4;" goto statement_identifier ;) }))) (if_statement "if (local_54 != 0) {\nLAB_0012f905:\n        local_54 = local_54 - 1;\n        index = index + 1 + ptr->counts[(int)local_54];\n      }" if (parenthesized_expression "(local_54 != 0)" ( (binary_expression "local_54 != 0" identifier != number_literal) )) (compound_statement "{\nLAB_0012f905:\n        local_54 = local_54 - 1;\n        index = index + 1 + ptr->counts[(int)local_54];\n      }" { (labeled_statement "LAB_0012f905:\n        local_54 = local_54 - 1;" statement_identifier : (expression_statement "local_54 = local_54 - 1;" (assignment_expression "local_54 = local_54 - 1" identifier = (binary_expression "local_54 - 1" identifier - number_literal)) ;)) (expression_statement "index = index + 1 + ptr->counts[(int)local_54];" (assignment_expression "index = index + 1 + ptr->counts[(int)local_54]" identifier = (binary_expression "index + 1 + ptr->counts[(int)local_54]" (binary_expression "index + 1" identifier + number_literal) + (subscript_expression "ptr->counts[(int)local_54]" (field_expression "ptr->counts" identifier -> field_identifier) [ (cast_expression "(int)local_54" ( (type_descriptor "int" primitive_type) ) identifier) ]))) ;) })) })) (expression_statement "pnVar11 = ptr->kids[(int)local_54];" (assignment_expression "pnVar11 = ptr->kids[(int)local_54]" identifier = (subscript_expression "ptr->kids[(int)local_54]" (field_expression "ptr->kids" identifier -> field_identifier) [ (cast_expression "(int)local_54" ( (type_descriptor "int" primitive_type) ) identifier) ])) ;) (expression_statement "pnVar5 = ptr->kids[(long)(int)local_54 + 1];" (assignment_expression "pnVar5 = ptr->kids[(long)(int)local_54 + 1]" identifier = (subscript_expression "ptr->kids[(long)(int)local_54 + 1]" (field_expression "ptr->kids" identifier -> field_identifier) [ (binary_expression "(long)(int)local_54 + 1" (cast_expression "(long)(int)local_54" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (cast_expression "(int)local_54" ( (type_descriptor "int" primitive_type) ) identifier)) + number_literal) ])) ;) (expression_statement "pnVar5->kids[3] = pnVar5->kids[1];" (assignment_expression "pnVar5->kids[3] = pnVar5->kids[1]" (subscript_expression "pnVar5->kids[3]" (field_expression "pnVar5->kids" identifier -> field_identifier) [ number_literal ]) = (subscript_expression "pnVar5->kids[1]" (field_expression "pnVar5->kids" identifier -> field_identifier) [ number_literal ])) ;) (expression_statement "pnVar5->counts[3] = pnVar5->counts[1];" (assignment_expression "pnVar5->counts[3] = pnVar5->counts[1]" (subscript_expression "pnVar5->counts[3]" (field_expression "pnVar5->counts" identifier -> field_identifier) [ number_literal ]) = (subscript_expression "pnVar5->counts[1]" (field_expression "pnVar5->counts" identifier -> field_identifier) [ number_literal ])) ;) (expression_statement "pnVar5->elems[2] = pnVar5->elems[0];" (assignment_expression "pnVar5->elems[2] = pnVar5->elems[0]" (subscript_expression "pnVar5->elems[2]" (field_expression "pnVar5->elems" identifier -> field_identifier) [ number_literal ]) = (subscript_expression "pnVar5->elems[0]" (field_expression "pnVar5->elems" identifier -> field_identifier) [ number_literal ])) ;) (expression_statement "pnVar5->kids[2] = pnVar5->kids[0];" (assignment_expression "pnVar5->kids[2] = pnVar5->kids[0]" (subscript_expression "pnVar5->kids[2]" (field_expression "pnVar5->kids" identifier -> field_identifier) [ number_literal ]) = (subscript_expression "pnVar5->kids[0]" (field_expression "pnVar5->kids" identifier -> field_identifier) [ number_literal ])) ;) (expression_statement "pnVar5->counts[2] = pnVar5->counts[0];" (assignment_expression "pnVar5->counts[2] = pnVar5->counts[0]" (subscript_expression "pnVar5->counts[2]" (field_expression "pnVar5->counts" identifier -> field_identifier) [ number_literal ]) = (subscript_expression "pnVar5->counts[0]" (field_expression "pnVar5->counts" identifier -> field_identifier) [ number_literal ])) ;) (expression_statement "pnVar5->elems[1] = ptr->elems[(int)local_54];" (assignment_expression "pnVar5->elems[1] = ptr->elems[(int)local_54]" (subscript_expression "pnVar5->elems[1]" (field_expression "pnVar5->elems" identifier -> field_identifier) [ number_literal ]) = (subscript_expression "ptr->elems[(int)local_54]" (field_expression "ptr->elems" identifier -> field_identifier) [ (cast_expression "(int)local_54" ( (type_descriptor "int" primitive_type) ) identifier) ])) ;) (expression_statement "pnVar2 = pnVar11->kids[1];" (assignment_expression "pnVar2 = pnVar11->kids[1]" identifier = (subscript_expression "pnVar11->kids[1]" (field_expression "pnVar11->kids" identifier -> field_identifier) [ number_literal ])) ;) (expression_statement "pnVar5->kids[1] = pnVar2;" (assignment_expression "pnVar5->kids[1] = pnVar2" (subscript_expression "pnVar5->kids[1]" (field_expression "pnVar5->kids" identifier -> field_identifier) [ number_literal ]) = identifier) ;) (expression_statement "pnVar5->counts[1] = pnVar11->counts[1];" (assignment_expression "pnVar5->counts[1] = pnVar11->counts[1]" (subscript_expression "pnVar5->counts[1]" (field_expression "pnVar5->counts" identifier -> field_identifier) [ number_literal ]) = (subscript_expression "pnVar11->counts[1]" (field_expression "pnVar11->counts" identifier -> field_identifier) [ number_literal ])) ;) (if_statement "if (pnVar2 != (node234 *)0x0) {\n      pnVar2->parent = pnVar5;\n    }" if (parenthesized_expression "(pnVar2 != (node234 *)0x0)" ( (binary_expression "pnVar2 != (node234 *)0x0" identifier != (cast_expression "(node234 *)0x0" ( (type_descriptor "node234 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      pnVar2->parent = pnVar5;\n    }" { (expression_statement "pnVar2->parent = pnVar5;" (assignment_expression "pnVar2->parent = pnVar5" (field_expression "pnVar2->parent" identifier -> field_identifier) = identifier) ;) })) (expression_statement "pnVar5->elems[0] = pnVar11->elems[0];" (assignment_expression "pnVar5->elems[0] = pnVar11->elems[0]" (subscript_expression "pnVar5->elems[0]" (field_expression "pnVar5->elems" identifier -> field_identifier) [ number_literal ]) = (subscript_expression "pnVar11->elems[0]" (field_expression "pnVar11->elems" identifier -> field_identifier) [ number_literal ])) ;) (expression_statement "pnVar2 = pnVar11->kids[0];" (assignment_expression "pnVar2 = pnVar11->kids[0]" identifier = (subscript_expression "pnVar11->kids[0]" (field_expression "pnVar11->kids" identifier -> field_identifier) [ number_literal ])) ;) (expression_statement "pnVar5->kids[0] = pnVar2;" (assignment_expression "pnVar5->kids[0] = pnVar2" (subscript_expression "pnVar5->kids[0]" (field_expression "pnVar5->kids" identifier -> field_identifier) [ number_literal ]) = identifier) ;) (expression_statement "pnVar5->counts[0] = pnVar11->counts[0];" (assignment_expression "pnVar5->counts[0] = pnVar11->counts[0]" (subscript_expression "pnVar5->counts[0]" (field_expression "pnVar5->counts" identifier -> field_identifier) [ number_literal ]) = (subscript_expression "pnVar11->counts[0]" (field_expression "pnVar11->counts" identifier -> field_identifier) [ number_literal ])) ;) (if_statement "if (pnVar2 != (node234 *)0x0) {\n      pnVar2->parent = pnVar5;\n    }" if (parenthesized_expression "(pnVar2 != (node234 *)0x0)" ( (binary_expression "pnVar2 != (node234 *)0x0" identifier != (cast_expression "(node234 *)0x0" ( (type_descriptor "node234 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      pnVar2->parent = pnVar5;\n    }" { (expression_statement "pnVar2->parent = pnVar5;" (assignment_expression "pnVar2->parent = pnVar5" (field_expression "pnVar2->parent" identifier -> field_identifier) = identifier) ;) })) (expression_statement "iVar3 = countnode234(pnVar5);" (assignment_expression "iVar3 = countnode234(pnVar5)" identifier = (call_expression "countnode234(pnVar5)" identifier (argument_list "(pnVar5)" ( identifier )))) ;) (expression_statement "ptr->counts[(int)(local_54 + 1)] = iVar3;" (assignment_expression "ptr->counts[(int)(local_54 + 1)] = iVar3" (subscript_expression "ptr->counts[(int)(local_54 + 1)]" (field_expression "ptr->counts" identifier -> field_identifier) [ (cast_expression "(int)(local_54 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(local_54 + 1)" ( (binary_expression "local_54 + 1" identifier + number_literal) ))) ]) = identifier) ;) (expression_statement "safefree(pnVar11);" (call_expression "safefree(pnVar11)" identifier (argument_list "(pnVar11)" ( identifier ))) ;) (if_statement "if ((int)local_54 < 3) {\n      pnVar11 = ptr->kids[(long)(int)local_54 + 1];\n      if (pnVar11 != (node234 *)0x0) {\n        lVar7 = (long)(int)(local_54 + 1);\n        do {\n          local_54 = (uint)lVar7;\n          ptr->kids[lVar7 + -1] = pnVar11;\n          ptr->counts[lVar7 + -1] = ptr->counts[lVar7];\n          pvVar12 = (void *)0x0;\n          if ((int)(local_54 - 1) < 2) {\n            pvVar12 = ptr->elems[lVar7];\n          }\n          ptr->elems[lVar7 + -1] = pvVar12;\n          if (2 < (int)local_54) goto LAB_0012fd6d;\n          pnVar11 = ptr->kids[lVar7 + 1];\n          lVar7 = lVar7 + 1;\n        } while (pnVar11 != (node234 *)0x0);\n      }\n      lVar7 = (long)(int)local_54;\n      ptr->kids[lVar7] = (node234 *)0x0;\n      ptr->counts[lVar7] = 0;\n      ptr->elems[lVar7] = (void *)0x0;\n    }\n    else {\nLAB_0012fd6d:\n      ptr->kids[(int)local_54] = (node234 *)0x0;\n      ptr->counts[(int)local_54] = 0;\n    }" if (parenthesized_expression "((int)local_54 < 3)" ( (binary_expression "(int)local_54 < 3" (cast_expression "(int)local_54" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      pnVar11 = ptr->kids[(long)(int)local_54 + 1];\n      if (pnVar11 != (node234 *)0x0) {\n        lVar7 = (long)(int)(local_54 + 1);\n        do {\n          local_54 = (uint)lVar7;\n          ptr->kids[lVar7 + -1] = pnVar11;\n          ptr->counts[lVar7 + -1] = ptr->counts[lVar7];\n          pvVar12 = (void *)0x0;\n          if ((int)(local_54 - 1) < 2) {\n            pvVar12 = ptr->elems[lVar7];\n          }\n          ptr->elems[lVar7 + -1] = pvVar12;\n          if (2 < (int)local_54) goto LAB_0012fd6d;\n          pnVar11 = ptr->kids[lVar7 + 1];\n          lVar7 = lVar7 + 1;\n        } while (pnVar11 != (node234 *)0x0);\n      }\n      lVar7 = (long)(int)local_54;\n      ptr->kids[lVar7] = (node234 *)0x0;\n      ptr->counts[lVar7] = 0;\n      ptr->elems[lVar7] = (void *)0x0;\n    }" { (expression_statement "pnVar11 = ptr->kids[(long)(int)local_54 + 1];" (assignment_expression "pnVar11 = ptr->kids[(long)(int)local_54 + 1]" identifier = (subscript_expression "ptr->kids[(long)(int)local_54 + 1]" (field_expression "ptr->kids" identifier -> field_identifier) [ (binary_expression "(long)(int)local_54 + 1" (cast_expression "(long)(int)local_54" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (cast_expression "(int)local_54" ( (type_descriptor "int" primitive_type) ) identifier)) + number_literal) ])) ;) (if_statement "if (pnVar11 != (node234 *)0x0) {\n        lVar7 = (long)(int)(local_54 + 1);\n        do {\n          local_54 = (uint)lVar7;\n          ptr->kids[lVar7 + -1] = pnVar11;\n          ptr->counts[lVar7 + -1] = ptr->counts[lVar7];\n          pvVar12 = (void *)0x0;\n          if ((int)(local_54 - 1) < 2) {\n            pvVar12 = ptr->elems[lVar7];\n          }\n          ptr->elems[lVar7 + -1] = pvVar12;\n          if (2 < (int)local_54) goto LAB_0012fd6d;\n          pnVar11 = ptr->kids[lVar7 + 1];\n          lVar7 = lVar7 + 1;\n        } while (pnVar11 != (node234 *)0x0);\n      }" if (parenthesized_expression "(pnVar11 != (node234 *)0x0)" ( (binary_expression "pnVar11 != (node234 *)0x0" identifier != (cast_expression "(node234 *)0x0" ( (type_descriptor "node234 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        lVar7 = (long)(int)(local_54 + 1);\n        do {\n          local_54 = (uint)lVar7;\n          ptr->kids[lVar7 + -1] = pnVar11;\n          ptr->counts[lVar7 + -1] = ptr->counts[lVar7];\n          pvVar12 = (void *)0x0;\n          if ((int)(local_54 - 1) < 2) {\n            pvVar12 = ptr->elems[lVar7];\n          }\n          ptr->elems[lVar7 + -1] = pvVar12;\n          if (2 < (int)local_54) goto LAB_0012fd6d;\n          pnVar11 = ptr->kids[lVar7 + 1];\n          lVar7 = lVar7 + 1;\n        } while (pnVar11 != (node234 *)0x0);\n      }" { (expression_statement "lVar7 = (long)(int)(local_54 + 1);" (assignment_expression "lVar7 = (long)(int)(local_54 + 1)" identifier = (cast_expression "(long)(int)(local_54 + 1)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (cast_expression "(int)(local_54 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(local_54 + 1)" ( (binary_expression "local_54 + 1" identifier + number_literal) ))))) ;) (do_statement "do {\n          local_54 = (uint)lVar7;\n          ptr->kids[lVar7 + -1] = pnVar11;\n          ptr->counts[lVar7 + -1] = ptr->counts[lVar7];\n          pvVar12 = (void *)0x0;\n          if ((int)(local_54 - 1) < 2) {\n            pvVar12 = ptr->elems[lVar7];\n          }\n          ptr->elems[lVar7 + -1] = pvVar12;\n          if (2 < (int)local_54) goto LAB_0012fd6d;\n          pnVar11 = ptr->kids[lVar7 + 1];\n          lVar7 = lVar7 + 1;\n        } while (pnVar11 != (node234 *)0x0);" do (compound_statement "{\n          local_54 = (uint)lVar7;\n          ptr->kids[lVar7 + -1] = pnVar11;\n          ptr->counts[lVar7 + -1] = ptr->counts[lVar7];\n          pvVar12 = (void *)0x0;\n          if ((int)(local_54 - 1) < 2) {\n            pvVar12 = ptr->elems[lVar7];\n          }\n          ptr->elems[lVar7 + -1] = pvVar12;\n          if (2 < (int)local_54) goto LAB_0012fd6d;\n          pnVar11 = ptr->kids[lVar7 + 1];\n          lVar7 = lVar7 + 1;\n        }" { (expression_statement "local_54 = (uint)lVar7;" (assignment_expression "local_54 = (uint)lVar7" identifier = (cast_expression "(uint)lVar7" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "ptr->kids[lVar7 + -1] = pnVar11;" (assignment_expression "ptr->kids[lVar7 + -1] = pnVar11" (subscript_expression "ptr->kids[lVar7 + -1]" (field_expression "ptr->kids" identifier -> field_identifier) [ (binary_expression "lVar7 + -1" identifier + number_literal) ]) = identifier) ;) (expression_statement "ptr->counts[lVar7 + -1] = ptr->counts[lVar7];" (assignment_expression "ptr->counts[lVar7 + -1] = ptr->counts[lVar7]" (subscript_expression "ptr->counts[lVar7 + -1]" (field_expression "ptr->counts" identifier -> field_identifier) [ (binary_expression "lVar7 + -1" identifier + number_literal) ]) = (subscript_expression "ptr->counts[lVar7]" (field_expression "ptr->counts" identifier -> field_identifier) [ identifier ])) ;) (expression_statement "pvVar12 = (void *)0x0;" (assignment_expression "pvVar12 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if ((int)(local_54 - 1) < 2) {\n            pvVar12 = ptr->elems[lVar7];\n          }" if (parenthesized_expression "((int)(local_54 - 1) < 2)" ( (binary_expression "(int)(local_54 - 1) < 2" (cast_expression "(int)(local_54 - 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(local_54 - 1)" ( (binary_expression "local_54 - 1" identifier - number_literal) ))) < number_literal) )) (compound_statement "{\n            pvVar12 = ptr->elems[lVar7];\n          }" { (expression_statement "pvVar12 = ptr->elems[lVar7];" (assignment_expression "pvVar12 = ptr->elems[lVar7]" identifier = (subscript_expression "ptr->elems[lVar7]" (field_expression "ptr->elems" identifier -> field_identifier) [ identifier ])) ;) })) (expression_statement "ptr->elems[lVar7 + -1] = pvVar12;" (assignment_expression "ptr->elems[lVar7 + -1] = pvVar12" (subscript_expression "ptr->elems[lVar7 + -1]" (field_expression "ptr->elems" identifier -> field_identifier) [ (binary_expression "lVar7 + -1" identifier + number_literal) ]) = identifier) ;) (if_statement "if (2 < (int)local_54) goto LAB_0012fd6d;" if (parenthesized_expression "(2 < (int)local_54)" ( (binary_expression "2 < (int)local_54" number_literal < (cast_expression "(int)local_54" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_0012fd6d;" goto statement_identifier ;)) (expression_statement "pnVar11 = ptr->kids[lVar7 + 1];" (assignment_expression "pnVar11 = ptr->kids[lVar7 + 1]" identifier = (subscript_expression "ptr->kids[lVar7 + 1]" (field_expression "ptr->kids" identifier -> field_identifier) [ (binary_expression "lVar7 + 1" identifier + number_literal) ])) ;) (expression_statement "lVar7 = lVar7 + 1;" (assignment_expression "lVar7 = lVar7 + 1" identifier = (binary_expression "lVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(pnVar11 != (node234 *)0x0)" ( (binary_expression "pnVar11 != (node234 *)0x0" identifier != (cast_expression "(node234 *)0x0" ( (type_descriptor "node234 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) })) (expression_statement "lVar7 = (long)(int)local_54;" (assignment_expression "lVar7 = (long)(int)local_54" identifier = (cast_expression "(long)(int)local_54" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (cast_expression "(int)local_54" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "ptr->kids[lVar7] = (node234 *)0x0;" (assignment_expression "ptr->kids[lVar7] = (node234 *)0x0" (subscript_expression "ptr->kids[lVar7]" (field_expression "ptr->kids" identifier -> field_identifier) [ identifier ]) = (cast_expression "(node234 *)0x0" ( (type_descriptor "node234 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "ptr->counts[lVar7] = 0;" (assignment_expression "ptr->counts[lVar7] = 0" (subscript_expression "ptr->counts[lVar7]" (field_expression "ptr->counts" identifier -> field_identifier) [ identifier ]) = number_literal) ;) (expression_statement "ptr->elems[lVar7] = (void *)0x0;" (assignment_expression "ptr->elems[lVar7] = (void *)0x0" (subscript_expression "ptr->elems[lVar7]" (field_expression "ptr->elems" identifier -> field_identifier) [ identifier ]) = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\nLAB_0012fd6d:\n      ptr->kids[(int)local_54] = (node234 *)0x0;\n      ptr->counts[(int)local_54] = 0;\n    }" else (compound_statement "{\nLAB_0012fd6d:\n      ptr->kids[(int)local_54] = (node234 *)0x0;\n      ptr->counts[(int)local_54] = 0;\n    }" { (labeled_statement "LAB_0012fd6d:\n      ptr->kids[(int)local_54] = (node234 *)0x0;" statement_identifier : (expression_statement "ptr->kids[(int)local_54] = (node234 *)0x0;" (assignment_expression "ptr->kids[(int)local_54] = (node234 *)0x0" (subscript_expression "ptr->kids[(int)local_54]" (field_expression "ptr->kids" identifier -> field_identifier) [ (cast_expression "(int)local_54" ( (type_descriptor "int" primitive_type) ) identifier) ]) = (cast_expression "(node234 *)0x0" ( (type_descriptor "node234 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (expression_statement "ptr->counts[(int)local_54] = 0;" (assignment_expression "ptr->counts[(int)local_54] = 0" (subscript_expression "ptr->counts[(int)local_54]" (field_expression "ptr->counts" identifier -> field_identifier) [ (cast_expression "(int)local_54" ( (type_descriptor "int" primitive_type) ) identifier) ]) = number_literal) ;) }))) (if_statement "if (ptr->elems[0] == (void *)0x0) {\n      t->root = pnVar5;\n      pnVar5->parent = (node234_conflict *)0x0;\n      safefree(ptr);\n    }" if (parenthesized_expression "(ptr->elems[0] == (void *)0x0)" ( (binary_expression "ptr->elems[0] == (void *)0x0" (subscript_expression "ptr->elems[0]" (field_expression "ptr->elems" identifier -> field_identifier) [ number_literal ]) == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      t->root = pnVar5;\n      pnVar5->parent = (node234_conflict *)0x0;\n      safefree(ptr);\n    }" { (expression_statement "t->root = pnVar5;" (assignment_expression "t->root = pnVar5" (field_expression "t->root" identifier -> field_identifier) = identifier) ;) (expression_statement "pnVar5->parent = (node234_conflict *)0x0;" (assignment_expression "pnVar5->parent = (node234_conflict *)0x0" (field_expression "pnVar5->parent" identifier -> field_identifier) = (cast_expression "(node234_conflict *)0x0" ( (type_descriptor "node234_conflict *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "safefree(ptr);" (call_expression "safefree(ptr)" identifier (argument_list "(ptr)" ( identifier ))) ;) })) })) (goto_statement "goto LAB_0012f7e4;" goto statement_identifier ;) (labeled_statement "code_r0x0012fc20:\n  if (iVar9 < 2) {\nLAB_0012fbac:\n    pvVar12 = ptr->elems[iVar9 + 1];\n    if (pvVar12 != (void *)0x0) {\n      lVar7 = (long)(iVar9 + 1);\n      do {\n        iVar9 = (int)lVar7;\n        ptr->elems[lVar7 + -1] = pvVar12;\n        if (1 < iVar9) break;\n        pvVar12 = ptr->elems[lVar7 + 1];\n        lVar7 = lVar7 + 1;\n      } while (pvVar12 != (void *)0x0);\n    }\n    ptr->elems[iVar9] = (void *)0x0;\n    if (pnVar5 == (node234_conflict *)0x0) {\n      return pvVar14;\n    }\n  }\n  else {\n    ptr->elems[iVar9] = (void *)0x0;\n  }" statement_identifier : (if_statement "if (iVar9 < 2) {\nLAB_0012fbac:\n    pvVar12 = ptr->elems[iVar9 + 1];\n    if (pvVar12 != (void *)0x0) {\n      lVar7 = (long)(iVar9 + 1);\n      do {\n        iVar9 = (int)lVar7;\n        ptr->elems[lVar7 + -1] = pvVar12;\n        if (1 < iVar9) break;\n        pvVar12 = ptr->elems[lVar7 + 1];\n        lVar7 = lVar7 + 1;\n      } while (pvVar12 != (void *)0x0);\n    }\n    ptr->elems[iVar9] = (void *)0x0;\n    if (pnVar5 == (node234_conflict *)0x0) {\n      return pvVar14;\n    }\n  }\n  else {\n    ptr->elems[iVar9] = (void *)0x0;\n  }" if (parenthesized_expression "(iVar9 < 2)" ( (binary_expression "iVar9 < 2" identifier < number_literal) )) (compound_statement "{\nLAB_0012fbac:\n    pvVar12 = ptr->elems[iVar9 + 1];\n    if (pvVar12 != (void *)0x0) {\n      lVar7 = (long)(iVar9 + 1);\n      do {\n        iVar9 = (int)lVar7;\n        ptr->elems[lVar7 + -1] = pvVar12;\n        if (1 < iVar9) break;\n        pvVar12 = ptr->elems[lVar7 + 1];\n        lVar7 = lVar7 + 1;\n      } while (pvVar12 != (void *)0x0);\n    }\n    ptr->elems[iVar9] = (void *)0x0;\n    if (pnVar5 == (node234_conflict *)0x0) {\n      return pvVar14;\n    }\n  }" { (labeled_statement "LAB_0012fbac:\n    pvVar12 = ptr->elems[iVar9 + 1];" statement_identifier : (expression_statement "pvVar12 = ptr->elems[iVar9 + 1];" (assignment_expression "pvVar12 = ptr->elems[iVar9 + 1]" identifier = (subscript_expression "ptr->elems[iVar9 + 1]" (field_expression "ptr->elems" identifier -> field_identifier) [ (binary_expression "iVar9 + 1" identifier + number_literal) ])) ;)) (if_statement "if (pvVar12 != (void *)0x0) {\n      lVar7 = (long)(iVar9 + 1);\n      do {\n        iVar9 = (int)lVar7;\n        ptr->elems[lVar7 + -1] = pvVar12;\n        if (1 < iVar9) break;\n        pvVar12 = ptr->elems[lVar7 + 1];\n        lVar7 = lVar7 + 1;\n      } while (pvVar12 != (void *)0x0);\n    }" if (parenthesized_expression "(pvVar12 != (void *)0x0)" ( (binary_expression "pvVar12 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      lVar7 = (long)(iVar9 + 1);\n      do {\n        iVar9 = (int)lVar7;\n        ptr->elems[lVar7 + -1] = pvVar12;\n        if (1 < iVar9) break;\n        pvVar12 = ptr->elems[lVar7 + 1];\n        lVar7 = lVar7 + 1;\n      } while (pvVar12 != (void *)0x0);\n    }" { (expression_statement "lVar7 = (long)(iVar9 + 1);" (assignment_expression "lVar7 = (long)(iVar9 + 1)" identifier = (cast_expression "(long)(iVar9 + 1)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(iVar9 + 1)" ( (binary_expression "iVar9 + 1" identifier + number_literal) )))) ;) (do_statement "do {\n        iVar9 = (int)lVar7;\n        ptr->elems[lVar7 + -1] = pvVar12;\n        if (1 < iVar9) break;\n        pvVar12 = ptr->elems[lVar7 + 1];\n        lVar7 = lVar7 + 1;\n      } while (pvVar12 != (void *)0x0);" do (compound_statement "{\n        iVar9 = (int)lVar7;\n        ptr->elems[lVar7 + -1] = pvVar12;\n        if (1 < iVar9) break;\n        pvVar12 = ptr->elems[lVar7 + 1];\n        lVar7 = lVar7 + 1;\n      }" { (expression_statement "iVar9 = (int)lVar7;" (assignment_expression "iVar9 = (int)lVar7" identifier = (cast_expression "(int)lVar7" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "ptr->elems[lVar7 + -1] = pvVar12;" (assignment_expression "ptr->elems[lVar7 + -1] = pvVar12" (subscript_expression "ptr->elems[lVar7 + -1]" (field_expression "ptr->elems" identifier -> field_identifier) [ (binary_expression "lVar7 + -1" identifier + number_literal) ]) = identifier) ;) (if_statement "if (1 < iVar9) break;" if (parenthesized_expression "(1 < iVar9)" ( (binary_expression "1 < iVar9" number_literal < identifier) )) (break_statement "break;" break ;)) (expression_statement "pvVar12 = ptr->elems[lVar7 + 1];" (assignment_expression "pvVar12 = ptr->elems[lVar7 + 1]" identifier = (subscript_expression "ptr->elems[lVar7 + 1]" (field_expression "ptr->elems" identifier -> field_identifier) [ (binary_expression "lVar7 + 1" identifier + number_literal) ])) ;) (expression_statement "lVar7 = lVar7 + 1;" (assignment_expression "lVar7 = lVar7 + 1" identifier = (binary_expression "lVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(pvVar12 != (void *)0x0)" ( (binary_expression "pvVar12 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) })) (expression_statement "ptr->elems[iVar9] = (void *)0x0;" (assignment_expression "ptr->elems[iVar9] = (void *)0x0" (subscript_expression "ptr->elems[iVar9]" (field_expression "ptr->elems" identifier -> field_identifier) [ identifier ]) = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (pnVar5 == (node234_conflict *)0x0) {\n      return pvVar14;\n    }" if (parenthesized_expression "(pnVar5 == (node234_conflict *)0x0)" ( (binary_expression "pnVar5 == (node234_conflict *)0x0" identifier == (cast_expression "(node234_conflict *)0x0" ( (type_descriptor "node234_conflict *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return pvVar14;\n    }" { (return_statement "return pvVar14;" return identifier ;) })) }) (else_clause "else {\n    ptr->elems[iVar9] = (void *)0x0;\n  }" else (compound_statement "{\n    ptr->elems[iVar9] = (void *)0x0;\n  }" { (expression_statement "ptr->elems[iVar9] = (void *)0x0;" (assignment_expression "ptr->elems[iVar9] = (void *)0x0" (subscript_expression "ptr->elems[iVar9]" (field_expression "ptr->elems" identifier -> field_identifier) [ identifier ]) = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })))) (do_statement "do {\n    iVar9 = 0;\n    if ((pnVar5->kids[0] != ptr) && (iVar9 = 1, pnVar5->kids[1] != ptr)) {\n      iVar9 = (pnVar5->kids[2] != ptr) + 2;\n    }\n    pnVar5->counts[iVar9] = pnVar5->counts[iVar9] + -1;\n    ptr = ptr->parent;\n    pnVar5 = ptr->parent;\n  } while (pnVar5 != (node234_conflict *)0x0);" do (compound_statement "{\n    iVar9 = 0;\n    if ((pnVar5->kids[0] != ptr) && (iVar9 = 1, pnVar5->kids[1] != ptr)) {\n      iVar9 = (pnVar5->kids[2] != ptr) + 2;\n    }\n    pnVar5->counts[iVar9] = pnVar5->counts[iVar9] + -1;\n    ptr = ptr->parent;\n    pnVar5 = ptr->parent;\n  }" { (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" identifier = number_literal) ;) (if_statement "if ((pnVar5->kids[0] != ptr) && (iVar9 = 1, pnVar5->kids[1] != ptr)) {\n      iVar9 = (pnVar5->kids[2] != ptr) + 2;\n    }" if (parenthesized_expression "((pnVar5->kids[0] != ptr) && (iVar9 = 1, pnVar5->kids[1] != ptr))" ( (binary_expression "(pnVar5->kids[0] != ptr) && (iVar9 = 1, pnVar5->kids[1] != ptr)" (parenthesized_expression "(pnVar5->kids[0] != ptr)" ( (binary_expression "pnVar5->kids[0] != ptr" (subscript_expression "pnVar5->kids[0]" (field_expression "pnVar5->kids" identifier -> field_identifier) [ number_literal ]) != identifier) )) && (parenthesized_expression "(iVar9 = 1, pnVar5->kids[1] != ptr)" ( (comma_expression "iVar9 = 1, pnVar5->kids[1] != ptr" (assignment_expression "iVar9 = 1" identifier = number_literal) , (binary_expression "pnVar5->kids[1] != ptr" (subscript_expression "pnVar5->kids[1]" (field_expression "pnVar5->kids" identifier -> field_identifier) [ number_literal ]) != identifier)) ))) )) (compound_statement "{\n      iVar9 = (pnVar5->kids[2] != ptr) + 2;\n    }" { (expression_statement "iVar9 = (pnVar5->kids[2] != ptr) + 2;" (assignment_expression "iVar9 = (pnVar5->kids[2] != ptr) + 2" identifier = (binary_expression "(pnVar5->kids[2] != ptr) + 2" (parenthesized_expression "(pnVar5->kids[2] != ptr)" ( (binary_expression "pnVar5->kids[2] != ptr" (subscript_expression "pnVar5->kids[2]" (field_expression "pnVar5->kids" identifier -> field_identifier) [ number_literal ]) != identifier) )) + number_literal)) ;) })) (expression_statement "pnVar5->counts[iVar9] = pnVar5->counts[iVar9] + -1;" (assignment_expression "pnVar5->counts[iVar9] = pnVar5->counts[iVar9] + -1" (subscript_expression "pnVar5->counts[iVar9]" (field_expression "pnVar5->counts" identifier -> field_identifier) [ identifier ]) = (binary_expression "pnVar5->counts[iVar9] + -1" (subscript_expression "pnVar5->counts[iVar9]" (field_expression "pnVar5->counts" identifier -> field_identifier) [ identifier ]) + number_literal)) ;) (expression_statement "ptr = ptr->parent;" (assignment_expression "ptr = ptr->parent" identifier = (field_expression "ptr->parent" identifier -> field_identifier)) ;) (expression_statement "pnVar5 = ptr->parent;" (assignment_expression "pnVar5 = ptr->parent" identifier = (field_expression "ptr->parent" identifier -> field_identifier)) ;) }) while (parenthesized_expression "(pnVar5 != (node234_conflict *)0x0)" ( (binary_expression "pnVar5 != (node234_conflict *)0x0" identifier != (cast_expression "(node234_conflict *)0x0" ( (type_descriptor "node234_conflict *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (return_statement "return pvVar14;" return identifier ;) })))
(translation_unit "long FUN_0012f7ab(undefined8 *param_1,int param_2)\n\n{\n  int *piVar1;\n  undefined8 *puVar2;\n  undefined4 uVar3;\n  int iVar4;\n  long *plVar5;\n  long lVar6;\n  long *plVar7;\n  long lVar8;\n  int iVar9;\n  long lVar10;\n  long lVar11;\n  long *plVar12;\n  long *plVar13;\n  int iVar14;\n  long lVar15;\n  uint local_54;\n  long local_50;\n  \n  iVar9 = -1;\n  lVar15 = 0;\n  plVar13 = (long *)*param_1;\nLAB_0012f7e4:\n  while (plVar12 = plVar13, plVar12 != (long *)0x0) {\n    if (param_2 < (int)plVar12[5]) goto LAB_0012f7d1;\n    param_2 = param_2 - ((int)plVar12[5] + 1);\n    if (param_2 < 0) {\n      iVar9 = 0;\nLAB_0012fdee:\n      if (lVar15 == 0) goto LAB_0012fdf7;\n      goto LAB_0012fa63;\n    }\n    if (param_2 < *(int *)((long)plVar12 + 0x2c)) {\n      local_54 = 1;\n    }\n    else {\n      param_2 = param_2 - (*(int *)((long)plVar12 + 0x2c) + 1);\n      if (param_2 < 0) {\n        iVar9 = 1;\n        goto LAB_0012fdee;\n      }\n      if (param_2 < (int)plVar12[6]) {\n        local_54 = 2;\n      }\n      else {\n        param_2 = param_2 - ((int)plVar12[6] + 1);\n        if (param_2 < 0) {\n          iVar9 = 2;\n          goto LAB_0012fdee;\n        }\n        local_54 = 3;\n      }\n    }\n    lVar6 = (long)(int)local_54;\n    plVar7 = plVar12 + lVar6;\n    plVar13 = (long *)plVar7[1];\n    if (plVar13[8] == 0) {\n      lVar8 = *plVar7;\n      if (*(long *)(lVar8 + 0x40) == 0) {\n        if (local_54 < 3) {\n          local_50 = (long)(int)local_54;\n          lVar6 = (plVar12 + local_50)[2];\n          plVar7 = plVar12 + local_50;\n          if (lVar6 == 0) goto LAB_0012f905;\n          goto LAB_0012fe3f;\n        }\n        goto LAB_0012f905;\n      }\n      lVar11 = *(long *)(lVar8 + 0x48);\n      plVar13[3] = plVar13[2];\n      *(undefined4 *)(plVar13 + 6) = *(undefined4 *)((long)plVar13 + 0x2c);\n      plVar13[8] = plVar13[7];\n      plVar13[2] = plVar13[1];\n      *(int *)((long)plVar13 + 0x2c) = (int)plVar13[5];\n      plVar13[7] = plVar7[6];\n      lVar10 = (long)(int)((lVar11 != 0) + 1);\n      lVar11 = lVar8 + lVar10 * 8;\n      puVar2 = *(undefined8 **)(lVar11 + 0x10);\n      plVar13[1] = (long)puVar2;\n      lVar10 = lVar8 + lVar10 * 4;\n      *(undefined4 *)(plVar13 + 5) = *(undefined4 *)(lVar10 + 0x2c);\n      if (puVar2 != (undefined8 *)0x0) {\n        *puVar2 = plVar13;\n      }\n      plVar7[6] = *(long *)(lVar11 + 0x38);\n      *(undefined8 *)(lVar11 + 0x10) = 0;\n      *(undefined4 *)(lVar10 + 0x2c) = 0;\n      *(undefined8 *)(lVar11 + 0x38) = 0;\n      uVar3 = FUN_0012ef67(plVar13);\n      *(undefined4 *)((long)plVar12 + lVar6 * 4 + 0x28) = uVar3;\n      iVar14 = *(int *)((long)plVar12 + lVar6 * 4 + 0x24);\n      iVar4 = FUN_0012ef67(lVar8);\n      *(int *)((long)plVar12 + lVar6 * 4 + 0x24) = iVar4;\n      param_2 = (param_2 + iVar14) - iVar4;\n    }\n  }\n  if (lVar15 == 0) {\nLAB_0012fdf7:\n    lVar15 = plVar12[(long)iVar9 + 7];\n  }\n  if (iVar9 == -1) {\n    return 0;\n  }\nLAB_0012fa63:\n  lVar6 = *plVar12;\n  if (lVar6 == 0) {\n    if (plVar12[8] == 0) {\n      if (plVar12[1] == 0) {\n        FUN_0010c4d3(plVar12);\n        *param_1 = 0;\n        return lVar15;\n      }\n    }\n    else if (plVar12[1] == 0) {\n      lVar6 = 0;\n      if (1 < iVar9) {\n        plVar12[(long)iVar9 + 7] = 0;\n        return lVar15;\n      }\n      goto LAB_0012fbac;\n    }\n  }\n  else if ((plVar12[1] == 0) && (plVar12[8] != 0)) goto code_r0x0012fc20;\n  plVar13 = (long *)plVar12[(long)iVar9 + 1];\n  plVar7 = plVar13;\n  if (plVar13[8] == 0) {\n    plVar7 = (long *)plVar12[(long)iVar9 + 2];\n    plVar5 = plVar7;\n    if (plVar7[8] == 0) {\n      plVar13[8] = plVar12[(long)iVar9 + 7];\n      puVar2 = (undefined8 *)plVar7[1];\n      plVar13[3] = (long)puVar2;\n      *(int *)(plVar13 + 6) = (int)plVar7[5];\n      if (puVar2 != (undefined8 *)0x0) {\n        *puVar2 = plVar13;\n      }\n      plVar13[9] = plVar7[7];\n      puVar2 = (undefined8 *)plVar7[2];\n      plVar13[4] = (long)puVar2;\n      *(undefined4 *)((long)plVar13 + 0x34) = *(undefined4 *)((long)plVar7 + 0x2c);\n      if (puVar2 != (undefined8 *)0x0) {\n        *puVar2 = plVar13;\n      }\n      FUN_0010c4d3();\n      uVar3 = FUN_0012ef67(plVar13);\n      *(undefined4 *)((long)plVar12 + (long)iVar9 * 4 + 0x28) = uVar3;\n      iVar14 = iVar9;\n      if ((iVar9 < 2) && (lVar6 = plVar12[(long)iVar9 + 8], lVar6 != 0)) {\n        lVar8 = (long)(iVar9 + 1);\n        do {\n          iVar14 = (int)lVar8;\n          plVar12[lVar8 + 6] = lVar6;\n          plVar12[lVar8 + 1] = plVar12[lVar8 + 2];\n          *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28) =\n               *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x2c);\n          if (1 < iVar14) break;\n          lVar6 = plVar12[lVar8 + 8];\n          lVar8 = lVar8 + 1;\n        } while (lVar6 != 0);\n      }\n      plVar12[(long)iVar14 + 7] = 0;\n      plVar12[(long)iVar14 + 2] = 0;\n      *(undefined4 *)((long)plVar12 + (long)(iVar14 + 1) * 4 + 0x28) = 0;\n      if (plVar12[7] == 0) {\n        *param_1 = plVar13;\n        *plVar13 = 0;\n        FUN_0010c4d3(plVar12);\n      }\n      param_2 = *(int *)((long)plVar13 + 0x2c) + (int)plVar13[5] + 1;\n    }\n    else {\n      do {\n        plVar13 = plVar5;\n        plVar5 = (long *)plVar13[1];\n      } while (plVar5 != (long *)0x0);\n      plVar12[(long)iVar9 + 7] = plVar13[7];\n      param_2 = 0;\n      plVar13 = plVar7;\n    }\n  }\n  else {\n    while (plVar5 = plVar7, (long *)plVar5[1] != (long *)0x0) {\n      plVar7 = (long *)plVar5[4];\n      if ((((long *)plVar5[4] == (long *)0x0) &&\n          (plVar7 = (long *)plVar5[3], (long *)plVar5[3] == (long *)0x0)) &&\n         (plVar7 = (long *)plVar5[2], (long *)plVar5[2] == (long *)0x0)) {\n        plVar7 = (long *)plVar5[1];\n      }\n    }\n    lVar6 = plVar5[9];\n    if ((lVar6 == 0) && (lVar6 = plVar5[8], lVar6 == 0)) {\n      lVar6 = plVar5[7];\n    }\n    plVar12[(long)iVar9 + 7] = lVar6;\n    param_2 = *(int *)((long)plVar12 + (long)iVar9 * 4 + 0x28) + -1;\n  }\n  goto LAB_0012f7e4;\nLAB_0012f7d1:\n  plVar13 = (long *)plVar12[1];\n  if (plVar13[8] == 0) {\n    lVar6 = plVar12[2];\n    local_50 = 0;\n    local_54 = 0;\n    plVar7 = plVar12;\n    if (lVar6 != 0) {\nLAB_0012fe3f:\n      if (*(long *)(lVar6 + 0x40) != 0) {\n        plVar13[8] = plVar7[7];\n        puVar2 = *(undefined8 **)(lVar6 + 8);\n        plVar13[3] = (long)puVar2;\n        *(undefined4 *)(plVar13 + 6) = *(undefined4 *)(lVar6 + 0x28);\n        if (puVar2 != (undefined8 *)0x0) {\n          *puVar2 = plVar13;\n        }\n        plVar7[7] = *(long *)(lVar6 + 0x38);\n        *(undefined8 *)(lVar6 + 8) = *(undefined8 *)(lVar6 + 0x10);\n        *(undefined4 *)(lVar6 + 0x28) = *(undefined4 *)(lVar6 + 0x2c);\n        lVar8 = *(long *)(lVar6 + 0x40);\n        if (lVar8 != 0) {\n          *(undefined8 *)(lVar6 + 0x10) = *(undefined8 *)(lVar6 + 0x18);\n          *(undefined4 *)(lVar6 + 0x2c) = *(undefined4 *)(lVar6 + 0x30);\n          *(long *)(lVar6 + 0x38) = lVar8;\n          if (*(long *)(lVar6 + 0x48) == 0) {\n            lVar8 = 1;\n          }\n          else {\n            *(undefined8 *)(lVar6 + 0x18) = *(undefined8 *)(lVar6 + 0x20);\n            *(undefined4 *)(lVar6 + 0x30) = *(undefined4 *)(lVar6 + 0x34);\n            *(long *)(lVar6 + 0x40) = *(long *)(lVar6 + 0x48);\n            lVar8 = 2;\n          }\n        }\n        lVar11 = lVar6 + (long)(int)lVar8 * 8;\n        *(undefined8 *)(lVar11 + 0x10) = 0;\n        *(undefined4 *)(lVar6 + 0x28 + (long)((int)lVar8 + 1) * 4) = 0;\n        *(undefined8 *)(lVar11 + 0x38) = 0;\n        uVar3 = FUN_0012ef67(plVar13);\n        *(undefined4 *)((long)plVar12 + local_50 * 4 + 0x28) = uVar3;\n        uVar3 = FUN_0012ef67(lVar6);\n        *(undefined4 *)((long)plVar12 + local_50 * 4 + 0x2c) = uVar3;\n        goto LAB_0012f7e4;\n      }\n      if (local_54 != 0) {\nLAB_0012f905:\n        local_54 = local_54 - 1;\n        param_2 = param_2 + 1 + *(int *)((long)plVar12 + (long)(int)local_54 * 4 + 0x28);\n      }\n    }\n    lVar6 = plVar12[(long)(int)local_54 + 1];\n    plVar13 = (long *)plVar12[(long)(int)local_54 + 2];\n    plVar13[4] = plVar13[2];\n    *(undefined4 *)((long)plVar13 + 0x34) = *(undefined4 *)((long)plVar13 + 0x2c);\n    plVar13[9] = plVar13[7];\n    plVar13[3] = plVar13[1];\n    *(int *)(plVar13 + 6) = (int)plVar13[5];\n    plVar13[8] = plVar12[(long)(int)local_54 + 7];\n    puVar2 = *(undefined8 **)(lVar6 + 0x10);\n    plVar13[2] = (long)puVar2;\n    *(undefined4 *)((long)plVar13 + 0x2c) = *(undefined4 *)(lVar6 + 0x2c);\n    if (puVar2 != (undefined8 *)0x0) {\n      *puVar2 = plVar13;\n    }\n    plVar13[7] = *(long *)(lVar6 + 0x38);\n    puVar2 = *(undefined8 **)(lVar6 + 8);\n    plVar13[1] = (long)puVar2;\n    *(undefined4 *)(plVar13 + 5) = *(undefined4 *)(lVar6 + 0x28);\n    if (puVar2 != (undefined8 *)0x0) {\n      *puVar2 = plVar13;\n    }\n    uVar3 = FUN_0012ef67(plVar13);\n    *(undefined4 *)((long)plVar12 + (long)(int)(local_54 + 1) * 4 + 0x28) = uVar3;\n    FUN_0010c4d3(lVar6);\n    if ((int)local_54 < 3) {\n      lVar6 = plVar12[(long)(int)local_54 + 2];\n      if (lVar6 != 0) {\n        lVar8 = (long)(int)(local_54 + 1);\n        do {\n          local_54 = (uint)lVar8;\n          plVar12[lVar8] = lVar6;\n          *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x24) =\n               *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28);\n          lVar6 = 0;\n          if ((int)(local_54 - 1) < 2) {\n            lVar6 = plVar12[lVar8 + 7];\n          }\n          plVar12[lVar8 + 6] = lVar6;\n          if (2 < (int)local_54) goto LAB_0012fd6d;\n          lVar6 = plVar12[lVar8 + 2];\n          lVar8 = lVar8 + 1;\n        } while (lVar6 != 0);\n      }\n      lVar6 = (long)(int)local_54;\n      plVar12[lVar6 + 1] = 0;\n      *(undefined4 *)((long)plVar12 + lVar6 * 4 + 0x28) = 0;\n      plVar12[lVar6 + 7] = 0;\n    }\n    else {\nLAB_0012fd6d:\n      plVar12[(long)(int)local_54 + 1] = 0;\n      *(undefined4 *)((long)plVar12 + (long)(int)local_54 * 4 + 0x28) = 0;\n    }\n    if (plVar12[7] == 0) {\n      *param_1 = plVar13;\n      *plVar13 = 0;\n      FUN_0010c4d3(plVar12);\n    }\n  }\n  goto LAB_0012f7e4;\ncode_r0x0012fc20:\n  if (iVar9 < 2) {\nLAB_0012fbac:\n    lVar8 = plVar12[(long)(iVar9 + 1) + 7];\n    if (lVar8 != 0) {\n      lVar11 = (long)(iVar9 + 1);\n      do {\n        iVar9 = (int)lVar11;\n        plVar12[lVar11 + 6] = lVar8;\n        if (1 < iVar9) break;\n        lVar8 = plVar12[lVar11 + 8];\n        lVar11 = lVar11 + 1;\n      } while (lVar8 != 0);\n    }\n    plVar12[(long)iVar9 + 7] = 0;\n    if (lVar6 == 0) {\n      return lVar15;\n    }\n  }\n  else {\n    plVar12[(long)iVar9 + 7] = 0;\n  }\n  do {\n    iVar9 = 0;\n    if ((*(long **)(lVar6 + 8) != plVar12) && (iVar9 = 1, *(long **)(lVar6 + 0x10) != plVar12)) {\n      iVar9 = (*(long **)(lVar6 + 0x18) != plVar12) + 2;\n    }\n    piVar1 = (int *)(lVar6 + 0x28 + (long)iVar9 * 4);\n    *piVar1 = *piVar1 + -1;\n    plVar12 = (long *)*plVar12;\n    lVar6 = *plVar12;\n  } while (lVar6 != 0);\n  return lVar15;\n}\n\n" (function_definition "long FUN_0012f7ab(undefined8 *param_1,int param_2)\n\n{\n  int *piVar1;\n  undefined8 *puVar2;\n  undefined4 uVar3;\n  int iVar4;\n  long *plVar5;\n  long lVar6;\n  long *plVar7;\n  long lVar8;\n  int iVar9;\n  long lVar10;\n  long lVar11;\n  long *plVar12;\n  long *plVar13;\n  int iVar14;\n  long lVar15;\n  uint local_54;\n  long local_50;\n  \n  iVar9 = -1;\n  lVar15 = 0;\n  plVar13 = (long *)*param_1;\nLAB_0012f7e4:\n  while (plVar12 = plVar13, plVar12 != (long *)0x0) {\n    if (param_2 < (int)plVar12[5]) goto LAB_0012f7d1;\n    param_2 = param_2 - ((int)plVar12[5] + 1);\n    if (param_2 < 0) {\n      iVar9 = 0;\nLAB_0012fdee:\n      if (lVar15 == 0) goto LAB_0012fdf7;\n      goto LAB_0012fa63;\n    }\n    if (param_2 < *(int *)((long)plVar12 + 0x2c)) {\n      local_54 = 1;\n    }\n    else {\n      param_2 = param_2 - (*(int *)((long)plVar12 + 0x2c) + 1);\n      if (param_2 < 0) {\n        iVar9 = 1;\n        goto LAB_0012fdee;\n      }\n      if (param_2 < (int)plVar12[6]) {\n        local_54 = 2;\n      }\n      else {\n        param_2 = param_2 - ((int)plVar12[6] + 1);\n        if (param_2 < 0) {\n          iVar9 = 2;\n          goto LAB_0012fdee;\n        }\n        local_54 = 3;\n      }\n    }\n    lVar6 = (long)(int)local_54;\n    plVar7 = plVar12 + lVar6;\n    plVar13 = (long *)plVar7[1];\n    if (plVar13[8] == 0) {\n      lVar8 = *plVar7;\n      if (*(long *)(lVar8 + 0x40) == 0) {\n        if (local_54 < 3) {\n          local_50 = (long)(int)local_54;\n          lVar6 = (plVar12 + local_50)[2];\n          plVar7 = plVar12 + local_50;\n          if (lVar6 == 0) goto LAB_0012f905;\n          goto LAB_0012fe3f;\n        }\n        goto LAB_0012f905;\n      }\n      lVar11 = *(long *)(lVar8 + 0x48);\n      plVar13[3] = plVar13[2];\n      *(undefined4 *)(plVar13 + 6) = *(undefined4 *)((long)plVar13 + 0x2c);\n      plVar13[8] = plVar13[7];\n      plVar13[2] = plVar13[1];\n      *(int *)((long)plVar13 + 0x2c) = (int)plVar13[5];\n      plVar13[7] = plVar7[6];\n      lVar10 = (long)(int)((lVar11 != 0) + 1);\n      lVar11 = lVar8 + lVar10 * 8;\n      puVar2 = *(undefined8 **)(lVar11 + 0x10);\n      plVar13[1] = (long)puVar2;\n      lVar10 = lVar8 + lVar10 * 4;\n      *(undefined4 *)(plVar13 + 5) = *(undefined4 *)(lVar10 + 0x2c);\n      if (puVar2 != (undefined8 *)0x0) {\n        *puVar2 = plVar13;\n      }\n      plVar7[6] = *(long *)(lVar11 + 0x38);\n      *(undefined8 *)(lVar11 + 0x10) = 0;\n      *(undefined4 *)(lVar10 + 0x2c) = 0;\n      *(undefined8 *)(lVar11 + 0x38) = 0;\n      uVar3 = FUN_0012ef67(plVar13);\n      *(undefined4 *)((long)plVar12 + lVar6 * 4 + 0x28) = uVar3;\n      iVar14 = *(int *)((long)plVar12 + lVar6 * 4 + 0x24);\n      iVar4 = FUN_0012ef67(lVar8);\n      *(int *)((long)plVar12 + lVar6 * 4 + 0x24) = iVar4;\n      param_2 = (param_2 + iVar14) - iVar4;\n    }\n  }\n  if (lVar15 == 0) {\nLAB_0012fdf7:\n    lVar15 = plVar12[(long)iVar9 + 7];\n  }\n  if (iVar9 == -1) {\n    return 0;\n  }\nLAB_0012fa63:\n  lVar6 = *plVar12;\n  if (lVar6 == 0) {\n    if (plVar12[8] == 0) {\n      if (plVar12[1] == 0) {\n        FUN_0010c4d3(plVar12);\n        *param_1 = 0;\n        return lVar15;\n      }\n    }\n    else if (plVar12[1] == 0) {\n      lVar6 = 0;\n      if (1 < iVar9) {\n        plVar12[(long)iVar9 + 7] = 0;\n        return lVar15;\n      }\n      goto LAB_0012fbac;\n    }\n  }\n  else if ((plVar12[1] == 0) && (plVar12[8] != 0)) goto code_r0x0012fc20;\n  plVar13 = (long *)plVar12[(long)iVar9 + 1];\n  plVar7 = plVar13;\n  if (plVar13[8] == 0) {\n    plVar7 = (long *)plVar12[(long)iVar9 + 2];\n    plVar5 = plVar7;\n    if (plVar7[8] == 0) {\n      plVar13[8] = plVar12[(long)iVar9 + 7];\n      puVar2 = (undefined8 *)plVar7[1];\n      plVar13[3] = (long)puVar2;\n      *(int *)(plVar13 + 6) = (int)plVar7[5];\n      if (puVar2 != (undefined8 *)0x0) {\n        *puVar2 = plVar13;\n      }\n      plVar13[9] = plVar7[7];\n      puVar2 = (undefined8 *)plVar7[2];\n      plVar13[4] = (long)puVar2;\n      *(undefined4 *)((long)plVar13 + 0x34) = *(undefined4 *)((long)plVar7 + 0x2c);\n      if (puVar2 != (undefined8 *)0x0) {\n        *puVar2 = plVar13;\n      }\n      FUN_0010c4d3();\n      uVar3 = FUN_0012ef67(plVar13);\n      *(undefined4 *)((long)plVar12 + (long)iVar9 * 4 + 0x28) = uVar3;\n      iVar14 = iVar9;\n      if ((iVar9 < 2) && (lVar6 = plVar12[(long)iVar9 + 8], lVar6 != 0)) {\n        lVar8 = (long)(iVar9 + 1);\n        do {\n          iVar14 = (int)lVar8;\n          plVar12[lVar8 + 6] = lVar6;\n          plVar12[lVar8 + 1] = plVar12[lVar8 + 2];\n          *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28) =\n               *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x2c);\n          if (1 < iVar14) break;\n          lVar6 = plVar12[lVar8 + 8];\n          lVar8 = lVar8 + 1;\n        } while (lVar6 != 0);\n      }\n      plVar12[(long)iVar14 + 7] = 0;\n      plVar12[(long)iVar14 + 2] = 0;\n      *(undefined4 *)((long)plVar12 + (long)(iVar14 + 1) * 4 + 0x28) = 0;\n      if (plVar12[7] == 0) {\n        *param_1 = plVar13;\n        *plVar13 = 0;\n        FUN_0010c4d3(plVar12);\n      }\n      param_2 = *(int *)((long)plVar13 + 0x2c) + (int)plVar13[5] + 1;\n    }\n    else {\n      do {\n        plVar13 = plVar5;\n        plVar5 = (long *)plVar13[1];\n      } while (plVar5 != (long *)0x0);\n      plVar12[(long)iVar9 + 7] = plVar13[7];\n      param_2 = 0;\n      plVar13 = plVar7;\n    }\n  }\n  else {\n    while (plVar5 = plVar7, (long *)plVar5[1] != (long *)0x0) {\n      plVar7 = (long *)plVar5[4];\n      if ((((long *)plVar5[4] == (long *)0x0) &&\n          (plVar7 = (long *)plVar5[3], (long *)plVar5[3] == (long *)0x0)) &&\n         (plVar7 = (long *)plVar5[2], (long *)plVar5[2] == (long *)0x0)) {\n        plVar7 = (long *)plVar5[1];\n      }\n    }\n    lVar6 = plVar5[9];\n    if ((lVar6 == 0) && (lVar6 = plVar5[8], lVar6 == 0)) {\n      lVar6 = plVar5[7];\n    }\n    plVar12[(long)iVar9 + 7] = lVar6;\n    param_2 = *(int *)((long)plVar12 + (long)iVar9 * 4 + 0x28) + -1;\n  }\n  goto LAB_0012f7e4;\nLAB_0012f7d1:\n  plVar13 = (long *)plVar12[1];\n  if (plVar13[8] == 0) {\n    lVar6 = plVar12[2];\n    local_50 = 0;\n    local_54 = 0;\n    plVar7 = plVar12;\n    if (lVar6 != 0) {\nLAB_0012fe3f:\n      if (*(long *)(lVar6 + 0x40) != 0) {\n        plVar13[8] = plVar7[7];\n        puVar2 = *(undefined8 **)(lVar6 + 8);\n        plVar13[3] = (long)puVar2;\n        *(undefined4 *)(plVar13 + 6) = *(undefined4 *)(lVar6 + 0x28);\n        if (puVar2 != (undefined8 *)0x0) {\n          *puVar2 = plVar13;\n        }\n        plVar7[7] = *(long *)(lVar6 + 0x38);\n        *(undefined8 *)(lVar6 + 8) = *(undefined8 *)(lVar6 + 0x10);\n        *(undefined4 *)(lVar6 + 0x28) = *(undefined4 *)(lVar6 + 0x2c);\n        lVar8 = *(long *)(lVar6 + 0x40);\n        if (lVar8 != 0) {\n          *(undefined8 *)(lVar6 + 0x10) = *(undefined8 *)(lVar6 + 0x18);\n          *(undefined4 *)(lVar6 + 0x2c) = *(undefined4 *)(lVar6 + 0x30);\n          *(long *)(lVar6 + 0x38) = lVar8;\n          if (*(long *)(lVar6 + 0x48) == 0) {\n            lVar8 = 1;\n          }\n          else {\n            *(undefined8 *)(lVar6 + 0x18) = *(undefined8 *)(lVar6 + 0x20);\n            *(undefined4 *)(lVar6 + 0x30) = *(undefined4 *)(lVar6 + 0x34);\n            *(long *)(lVar6 + 0x40) = *(long *)(lVar6 + 0x48);\n            lVar8 = 2;\n          }\n        }\n        lVar11 = lVar6 + (long)(int)lVar8 * 8;\n        *(undefined8 *)(lVar11 + 0x10) = 0;\n        *(undefined4 *)(lVar6 + 0x28 + (long)((int)lVar8 + 1) * 4) = 0;\n        *(undefined8 *)(lVar11 + 0x38) = 0;\n        uVar3 = FUN_0012ef67(plVar13);\n        *(undefined4 *)((long)plVar12 + local_50 * 4 + 0x28) = uVar3;\n        uVar3 = FUN_0012ef67(lVar6);\n        *(undefined4 *)((long)plVar12 + local_50 * 4 + 0x2c) = uVar3;\n        goto LAB_0012f7e4;\n      }\n      if (local_54 != 0) {\nLAB_0012f905:\n        local_54 = local_54 - 1;\n        param_2 = param_2 + 1 + *(int *)((long)plVar12 + (long)(int)local_54 * 4 + 0x28);\n      }\n    }\n    lVar6 = plVar12[(long)(int)local_54 + 1];\n    plVar13 = (long *)plVar12[(long)(int)local_54 + 2];\n    plVar13[4] = plVar13[2];\n    *(undefined4 *)((long)plVar13 + 0x34) = *(undefined4 *)((long)plVar13 + 0x2c);\n    plVar13[9] = plVar13[7];\n    plVar13[3] = plVar13[1];\n    *(int *)(plVar13 + 6) = (int)plVar13[5];\n    plVar13[8] = plVar12[(long)(int)local_54 + 7];\n    puVar2 = *(undefined8 **)(lVar6 + 0x10);\n    plVar13[2] = (long)puVar2;\n    *(undefined4 *)((long)plVar13 + 0x2c) = *(undefined4 *)(lVar6 + 0x2c);\n    if (puVar2 != (undefined8 *)0x0) {\n      *puVar2 = plVar13;\n    }\n    plVar13[7] = *(long *)(lVar6 + 0x38);\n    puVar2 = *(undefined8 **)(lVar6 + 8);\n    plVar13[1] = (long)puVar2;\n    *(undefined4 *)(plVar13 + 5) = *(undefined4 *)(lVar6 + 0x28);\n    if (puVar2 != (undefined8 *)0x0) {\n      *puVar2 = plVar13;\n    }\n    uVar3 = FUN_0012ef67(plVar13);\n    *(undefined4 *)((long)plVar12 + (long)(int)(local_54 + 1) * 4 + 0x28) = uVar3;\n    FUN_0010c4d3(lVar6);\n    if ((int)local_54 < 3) {\n      lVar6 = plVar12[(long)(int)local_54 + 2];\n      if (lVar6 != 0) {\n        lVar8 = (long)(int)(local_54 + 1);\n        do {\n          local_54 = (uint)lVar8;\n          plVar12[lVar8] = lVar6;\n          *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x24) =\n               *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28);\n          lVar6 = 0;\n          if ((int)(local_54 - 1) < 2) {\n            lVar6 = plVar12[lVar8 + 7];\n          }\n          plVar12[lVar8 + 6] = lVar6;\n          if (2 < (int)local_54) goto LAB_0012fd6d;\n          lVar6 = plVar12[lVar8 + 2];\n          lVar8 = lVar8 + 1;\n        } while (lVar6 != 0);\n      }\n      lVar6 = (long)(int)local_54;\n      plVar12[lVar6 + 1] = 0;\n      *(undefined4 *)((long)plVar12 + lVar6 * 4 + 0x28) = 0;\n      plVar12[lVar6 + 7] = 0;\n    }\n    else {\nLAB_0012fd6d:\n      plVar12[(long)(int)local_54 + 1] = 0;\n      *(undefined4 *)((long)plVar12 + (long)(int)local_54 * 4 + 0x28) = 0;\n    }\n    if (plVar12[7] == 0) {\n      *param_1 = plVar13;\n      *plVar13 = 0;\n      FUN_0010c4d3(plVar12);\n    }\n  }\n  goto LAB_0012f7e4;\ncode_r0x0012fc20:\n  if (iVar9 < 2) {\nLAB_0012fbac:\n    lVar8 = plVar12[(long)(iVar9 + 1) + 7];\n    if (lVar8 != 0) {\n      lVar11 = (long)(iVar9 + 1);\n      do {\n        iVar9 = (int)lVar11;\n        plVar12[lVar11 + 6] = lVar8;\n        if (1 < iVar9) break;\n        lVar8 = plVar12[lVar11 + 8];\n        lVar11 = lVar11 + 1;\n      } while (lVar8 != 0);\n    }\n    plVar12[(long)iVar9 + 7] = 0;\n    if (lVar6 == 0) {\n      return lVar15;\n    }\n  }\n  else {\n    plVar12[(long)iVar9 + 7] = 0;\n  }\n  do {\n    iVar9 = 0;\n    if ((*(long **)(lVar6 + 8) != plVar12) && (iVar9 = 1, *(long **)(lVar6 + 0x10) != plVar12)) {\n      iVar9 = (*(long **)(lVar6 + 0x18) != plVar12) + 2;\n    }\n    piVar1 = (int *)(lVar6 + 0x28 + (long)iVar9 * 4);\n    *piVar1 = *piVar1 + -1;\n    plVar12 = (long *)*plVar12;\n    lVar6 = *plVar12;\n  } while (lVar6 != 0);\n  return lVar15;\n}" (sized_type_specifier "long" long) (function_declarator "FUN_0012f7ab(undefined8 *param_1,int param_2)" identifier (parameter_list "(undefined8 *param_1,int param_2)" ( (parameter_declaration "undefined8 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) ))) (compound_statement "{\n  int *piVar1;\n  undefined8 *puVar2;\n  undefined4 uVar3;\n  int iVar4;\n  long *plVar5;\n  long lVar6;\n  long *plVar7;\n  long lVar8;\n  int iVar9;\n  long lVar10;\n  long lVar11;\n  long *plVar12;\n  long *plVar13;\n  int iVar14;\n  long lVar15;\n  uint local_54;\n  long local_50;\n  \n  iVar9 = -1;\n  lVar15 = 0;\n  plVar13 = (long *)*param_1;\nLAB_0012f7e4:\n  while (plVar12 = plVar13, plVar12 != (long *)0x0) {\n    if (param_2 < (int)plVar12[5]) goto LAB_0012f7d1;\n    param_2 = param_2 - ((int)plVar12[5] + 1);\n    if (param_2 < 0) {\n      iVar9 = 0;\nLAB_0012fdee:\n      if (lVar15 == 0) goto LAB_0012fdf7;\n      goto LAB_0012fa63;\n    }\n    if (param_2 < *(int *)((long)plVar12 + 0x2c)) {\n      local_54 = 1;\n    }\n    else {\n      param_2 = param_2 - (*(int *)((long)plVar12 + 0x2c) + 1);\n      if (param_2 < 0) {\n        iVar9 = 1;\n        goto LAB_0012fdee;\n      }\n      if (param_2 < (int)plVar12[6]) {\n        local_54 = 2;\n      }\n      else {\n        param_2 = param_2 - ((int)plVar12[6] + 1);\n        if (param_2 < 0) {\n          iVar9 = 2;\n          goto LAB_0012fdee;\n        }\n        local_54 = 3;\n      }\n    }\n    lVar6 = (long)(int)local_54;\n    plVar7 = plVar12 + lVar6;\n    plVar13 = (long *)plVar7[1];\n    if (plVar13[8] == 0) {\n      lVar8 = *plVar7;\n      if (*(long *)(lVar8 + 0x40) == 0) {\n        if (local_54 < 3) {\n          local_50 = (long)(int)local_54;\n          lVar6 = (plVar12 + local_50)[2];\n          plVar7 = plVar12 + local_50;\n          if (lVar6 == 0) goto LAB_0012f905;\n          goto LAB_0012fe3f;\n        }\n        goto LAB_0012f905;\n      }\n      lVar11 = *(long *)(lVar8 + 0x48);\n      plVar13[3] = plVar13[2];\n      *(undefined4 *)(plVar13 + 6) = *(undefined4 *)((long)plVar13 + 0x2c);\n      plVar13[8] = plVar13[7];\n      plVar13[2] = plVar13[1];\n      *(int *)((long)plVar13 + 0x2c) = (int)plVar13[5];\n      plVar13[7] = plVar7[6];\n      lVar10 = (long)(int)((lVar11 != 0) + 1);\n      lVar11 = lVar8 + lVar10 * 8;\n      puVar2 = *(undefined8 **)(lVar11 + 0x10);\n      plVar13[1] = (long)puVar2;\n      lVar10 = lVar8 + lVar10 * 4;\n      *(undefined4 *)(plVar13 + 5) = *(undefined4 *)(lVar10 + 0x2c);\n      if (puVar2 != (undefined8 *)0x0) {\n        *puVar2 = plVar13;\n      }\n      plVar7[6] = *(long *)(lVar11 + 0x38);\n      *(undefined8 *)(lVar11 + 0x10) = 0;\n      *(undefined4 *)(lVar10 + 0x2c) = 0;\n      *(undefined8 *)(lVar11 + 0x38) = 0;\n      uVar3 = FUN_0012ef67(plVar13);\n      *(undefined4 *)((long)plVar12 + lVar6 * 4 + 0x28) = uVar3;\n      iVar14 = *(int *)((long)plVar12 + lVar6 * 4 + 0x24);\n      iVar4 = FUN_0012ef67(lVar8);\n      *(int *)((long)plVar12 + lVar6 * 4 + 0x24) = iVar4;\n      param_2 = (param_2 + iVar14) - iVar4;\n    }\n  }\n  if (lVar15 == 0) {\nLAB_0012fdf7:\n    lVar15 = plVar12[(long)iVar9 + 7];\n  }\n  if (iVar9 == -1) {\n    return 0;\n  }\nLAB_0012fa63:\n  lVar6 = *plVar12;\n  if (lVar6 == 0) {\n    if (plVar12[8] == 0) {\n      if (plVar12[1] == 0) {\n        FUN_0010c4d3(plVar12);\n        *param_1 = 0;\n        return lVar15;\n      }\n    }\n    else if (plVar12[1] == 0) {\n      lVar6 = 0;\n      if (1 < iVar9) {\n        plVar12[(long)iVar9 + 7] = 0;\n        return lVar15;\n      }\n      goto LAB_0012fbac;\n    }\n  }\n  else if ((plVar12[1] == 0) && (plVar12[8] != 0)) goto code_r0x0012fc20;\n  plVar13 = (long *)plVar12[(long)iVar9 + 1];\n  plVar7 = plVar13;\n  if (plVar13[8] == 0) {\n    plVar7 = (long *)plVar12[(long)iVar9 + 2];\n    plVar5 = plVar7;\n    if (plVar7[8] == 0) {\n      plVar13[8] = plVar12[(long)iVar9 + 7];\n      puVar2 = (undefined8 *)plVar7[1];\n      plVar13[3] = (long)puVar2;\n      *(int *)(plVar13 + 6) = (int)plVar7[5];\n      if (puVar2 != (undefined8 *)0x0) {\n        *puVar2 = plVar13;\n      }\n      plVar13[9] = plVar7[7];\n      puVar2 = (undefined8 *)plVar7[2];\n      plVar13[4] = (long)puVar2;\n      *(undefined4 *)((long)plVar13 + 0x34) = *(undefined4 *)((long)plVar7 + 0x2c);\n      if (puVar2 != (undefined8 *)0x0) {\n        *puVar2 = plVar13;\n      }\n      FUN_0010c4d3();\n      uVar3 = FUN_0012ef67(plVar13);\n      *(undefined4 *)((long)plVar12 + (long)iVar9 * 4 + 0x28) = uVar3;\n      iVar14 = iVar9;\n      if ((iVar9 < 2) && (lVar6 = plVar12[(long)iVar9 + 8], lVar6 != 0)) {\n        lVar8 = (long)(iVar9 + 1);\n        do {\n          iVar14 = (int)lVar8;\n          plVar12[lVar8 + 6] = lVar6;\n          plVar12[lVar8 + 1] = plVar12[lVar8 + 2];\n          *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28) =\n               *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x2c);\n          if (1 < iVar14) break;\n          lVar6 = plVar12[lVar8 + 8];\n          lVar8 = lVar8 + 1;\n        } while (lVar6 != 0);\n      }\n      plVar12[(long)iVar14 + 7] = 0;\n      plVar12[(long)iVar14 + 2] = 0;\n      *(undefined4 *)((long)plVar12 + (long)(iVar14 + 1) * 4 + 0x28) = 0;\n      if (plVar12[7] == 0) {\n        *param_1 = plVar13;\n        *plVar13 = 0;\n        FUN_0010c4d3(plVar12);\n      }\n      param_2 = *(int *)((long)plVar13 + 0x2c) + (int)plVar13[5] + 1;\n    }\n    else {\n      do {\n        plVar13 = plVar5;\n        plVar5 = (long *)plVar13[1];\n      } while (plVar5 != (long *)0x0);\n      plVar12[(long)iVar9 + 7] = plVar13[7];\n      param_2 = 0;\n      plVar13 = plVar7;\n    }\n  }\n  else {\n    while (plVar5 = plVar7, (long *)plVar5[1] != (long *)0x0) {\n      plVar7 = (long *)plVar5[4];\n      if ((((long *)plVar5[4] == (long *)0x0) &&\n          (plVar7 = (long *)plVar5[3], (long *)plVar5[3] == (long *)0x0)) &&\n         (plVar7 = (long *)plVar5[2], (long *)plVar5[2] == (long *)0x0)) {\n        plVar7 = (long *)plVar5[1];\n      }\n    }\n    lVar6 = plVar5[9];\n    if ((lVar6 == 0) && (lVar6 = plVar5[8], lVar6 == 0)) {\n      lVar6 = plVar5[7];\n    }\n    plVar12[(long)iVar9 + 7] = lVar6;\n    param_2 = *(int *)((long)plVar12 + (long)iVar9 * 4 + 0x28) + -1;\n  }\n  goto LAB_0012f7e4;\nLAB_0012f7d1:\n  plVar13 = (long *)plVar12[1];\n  if (plVar13[8] == 0) {\n    lVar6 = plVar12[2];\n    local_50 = 0;\n    local_54 = 0;\n    plVar7 = plVar12;\n    if (lVar6 != 0) {\nLAB_0012fe3f:\n      if (*(long *)(lVar6 + 0x40) != 0) {\n        plVar13[8] = plVar7[7];\n        puVar2 = *(undefined8 **)(lVar6 + 8);\n        plVar13[3] = (long)puVar2;\n        *(undefined4 *)(plVar13 + 6) = *(undefined4 *)(lVar6 + 0x28);\n        if (puVar2 != (undefined8 *)0x0) {\n          *puVar2 = plVar13;\n        }\n        plVar7[7] = *(long *)(lVar6 + 0x38);\n        *(undefined8 *)(lVar6 + 8) = *(undefined8 *)(lVar6 + 0x10);\n        *(undefined4 *)(lVar6 + 0x28) = *(undefined4 *)(lVar6 + 0x2c);\n        lVar8 = *(long *)(lVar6 + 0x40);\n        if (lVar8 != 0) {\n          *(undefined8 *)(lVar6 + 0x10) = *(undefined8 *)(lVar6 + 0x18);\n          *(undefined4 *)(lVar6 + 0x2c) = *(undefined4 *)(lVar6 + 0x30);\n          *(long *)(lVar6 + 0x38) = lVar8;\n          if (*(long *)(lVar6 + 0x48) == 0) {\n            lVar8 = 1;\n          }\n          else {\n            *(undefined8 *)(lVar6 + 0x18) = *(undefined8 *)(lVar6 + 0x20);\n            *(undefined4 *)(lVar6 + 0x30) = *(undefined4 *)(lVar6 + 0x34);\n            *(long *)(lVar6 + 0x40) = *(long *)(lVar6 + 0x48);\n            lVar8 = 2;\n          }\n        }\n        lVar11 = lVar6 + (long)(int)lVar8 * 8;\n        *(undefined8 *)(lVar11 + 0x10) = 0;\n        *(undefined4 *)(lVar6 + 0x28 + (long)((int)lVar8 + 1) * 4) = 0;\n        *(undefined8 *)(lVar11 + 0x38) = 0;\n        uVar3 = FUN_0012ef67(plVar13);\n        *(undefined4 *)((long)plVar12 + local_50 * 4 + 0x28) = uVar3;\n        uVar3 = FUN_0012ef67(lVar6);\n        *(undefined4 *)((long)plVar12 + local_50 * 4 + 0x2c) = uVar3;\n        goto LAB_0012f7e4;\n      }\n      if (local_54 != 0) {\nLAB_0012f905:\n        local_54 = local_54 - 1;\n        param_2 = param_2 + 1 + *(int *)((long)plVar12 + (long)(int)local_54 * 4 + 0x28);\n      }\n    }\n    lVar6 = plVar12[(long)(int)local_54 + 1];\n    plVar13 = (long *)plVar12[(long)(int)local_54 + 2];\n    plVar13[4] = plVar13[2];\n    *(undefined4 *)((long)plVar13 + 0x34) = *(undefined4 *)((long)plVar13 + 0x2c);\n    plVar13[9] = plVar13[7];\n    plVar13[3] = plVar13[1];\n    *(int *)(plVar13 + 6) = (int)plVar13[5];\n    plVar13[8] = plVar12[(long)(int)local_54 + 7];\n    puVar2 = *(undefined8 **)(lVar6 + 0x10);\n    plVar13[2] = (long)puVar2;\n    *(undefined4 *)((long)plVar13 + 0x2c) = *(undefined4 *)(lVar6 + 0x2c);\n    if (puVar2 != (undefined8 *)0x0) {\n      *puVar2 = plVar13;\n    }\n    plVar13[7] = *(long *)(lVar6 + 0x38);\n    puVar2 = *(undefined8 **)(lVar6 + 8);\n    plVar13[1] = (long)puVar2;\n    *(undefined4 *)(plVar13 + 5) = *(undefined4 *)(lVar6 + 0x28);\n    if (puVar2 != (undefined8 *)0x0) {\n      *puVar2 = plVar13;\n    }\n    uVar3 = FUN_0012ef67(plVar13);\n    *(undefined4 *)((long)plVar12 + (long)(int)(local_54 + 1) * 4 + 0x28) = uVar3;\n    FUN_0010c4d3(lVar6);\n    if ((int)local_54 < 3) {\n      lVar6 = plVar12[(long)(int)local_54 + 2];\n      if (lVar6 != 0) {\n        lVar8 = (long)(int)(local_54 + 1);\n        do {\n          local_54 = (uint)lVar8;\n          plVar12[lVar8] = lVar6;\n          *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x24) =\n               *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28);\n          lVar6 = 0;\n          if ((int)(local_54 - 1) < 2) {\n            lVar6 = plVar12[lVar8 + 7];\n          }\n          plVar12[lVar8 + 6] = lVar6;\n          if (2 < (int)local_54) goto LAB_0012fd6d;\n          lVar6 = plVar12[lVar8 + 2];\n          lVar8 = lVar8 + 1;\n        } while (lVar6 != 0);\n      }\n      lVar6 = (long)(int)local_54;\n      plVar12[lVar6 + 1] = 0;\n      *(undefined4 *)((long)plVar12 + lVar6 * 4 + 0x28) = 0;\n      plVar12[lVar6 + 7] = 0;\n    }\n    else {\nLAB_0012fd6d:\n      plVar12[(long)(int)local_54 + 1] = 0;\n      *(undefined4 *)((long)plVar12 + (long)(int)local_54 * 4 + 0x28) = 0;\n    }\n    if (plVar12[7] == 0) {\n      *param_1 = plVar13;\n      *plVar13 = 0;\n      FUN_0010c4d3(plVar12);\n    }\n  }\n  goto LAB_0012f7e4;\ncode_r0x0012fc20:\n  if (iVar9 < 2) {\nLAB_0012fbac:\n    lVar8 = plVar12[(long)(iVar9 + 1) + 7];\n    if (lVar8 != 0) {\n      lVar11 = (long)(iVar9 + 1);\n      do {\n        iVar9 = (int)lVar11;\n        plVar12[lVar11 + 6] = lVar8;\n        if (1 < iVar9) break;\n        lVar8 = plVar12[lVar11 + 8];\n        lVar11 = lVar11 + 1;\n      } while (lVar8 != 0);\n    }\n    plVar12[(long)iVar9 + 7] = 0;\n    if (lVar6 == 0) {\n      return lVar15;\n    }\n  }\n  else {\n    plVar12[(long)iVar9 + 7] = 0;\n  }\n  do {\n    iVar9 = 0;\n    if ((*(long **)(lVar6 + 8) != plVar12) && (iVar9 = 1, *(long **)(lVar6 + 0x10) != plVar12)) {\n      iVar9 = (*(long **)(lVar6 + 0x18) != plVar12) + 2;\n    }\n    piVar1 = (int *)(lVar6 + 0x28 + (long)iVar9 * 4);\n    *piVar1 = *piVar1 + -1;\n    plVar12 = (long *)*plVar12;\n    lVar6 = *plVar12;\n  } while (lVar6 != 0);\n  return lVar15;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "undefined8 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "long *plVar5;" (sized_type_specifier "long" long) (pointer_declarator "*plVar5" * identifier) ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "long *plVar7;" (sized_type_specifier "long" long) (pointer_declarator "*plVar7" * identifier) ;) (declaration "long lVar8;" (sized_type_specifier "long" long) identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "long lVar10;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar11;" (sized_type_specifier "long" long) identifier ;) (declaration "long *plVar12;" (sized_type_specifier "long" long) (pointer_declarator "*plVar12" * identifier) ;) (declaration "long *plVar13;" (sized_type_specifier "long" long) (pointer_declarator "*plVar13" * identifier) ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "long lVar15;" (sized_type_specifier "long" long) identifier ;) (declaration "uint local_54;" type_identifier identifier ;) (declaration "long local_50;" (sized_type_specifier "long" long) identifier ;) (expression_statement "iVar9 = -1;" (assignment_expression "iVar9 = -1" identifier = number_literal) ;) (expression_statement "lVar15 = 0;" (assignment_expression "lVar15 = 0" identifier = number_literal) ;) (expression_statement "plVar13 = (long *)*param_1;" (assignment_expression "plVar13 = (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))) ;) (labeled_statement "LAB_0012f7e4:\n  while (plVar12 = plVar13, plVar12 != (long *)0x0) {\n    if (param_2 < (int)plVar12[5]) goto LAB_0012f7d1;\n    param_2 = param_2 - ((int)plVar12[5] + 1);\n    if (param_2 < 0) {\n      iVar9 = 0;\nLAB_0012fdee:\n      if (lVar15 == 0) goto LAB_0012fdf7;\n      goto LAB_0012fa63;\n    }\n    if (param_2 < *(int *)((long)plVar12 + 0x2c)) {\n      local_54 = 1;\n    }\n    else {\n      param_2 = param_2 - (*(int *)((long)plVar12 + 0x2c) + 1);\n      if (param_2 < 0) {\n        iVar9 = 1;\n        goto LAB_0012fdee;\n      }\n      if (param_2 < (int)plVar12[6]) {\n        local_54 = 2;\n      }\n      else {\n        param_2 = param_2 - ((int)plVar12[6] + 1);\n        if (param_2 < 0) {\n          iVar9 = 2;\n          goto LAB_0012fdee;\n        }\n        local_54 = 3;\n      }\n    }\n    lVar6 = (long)(int)local_54;\n    plVar7 = plVar12 + lVar6;\n    plVar13 = (long *)plVar7[1];\n    if (plVar13[8] == 0) {\n      lVar8 = *plVar7;\n      if (*(long *)(lVar8 + 0x40) == 0) {\n        if (local_54 < 3) {\n          local_50 = (long)(int)local_54;\n          lVar6 = (plVar12 + local_50)[2];\n          plVar7 = plVar12 + local_50;\n          if (lVar6 == 0) goto LAB_0012f905;\n          goto LAB_0012fe3f;\n        }\n        goto LAB_0012f905;\n      }\n      lVar11 = *(long *)(lVar8 + 0x48);\n      plVar13[3] = plVar13[2];\n      *(undefined4 *)(plVar13 + 6) = *(undefined4 *)((long)plVar13 + 0x2c);\n      plVar13[8] = plVar13[7];\n      plVar13[2] = plVar13[1];\n      *(int *)((long)plVar13 + 0x2c) = (int)plVar13[5];\n      plVar13[7] = plVar7[6];\n      lVar10 = (long)(int)((lVar11 != 0) + 1);\n      lVar11 = lVar8 + lVar10 * 8;\n      puVar2 = *(undefined8 **)(lVar11 + 0x10);\n      plVar13[1] = (long)puVar2;\n      lVar10 = lVar8 + lVar10 * 4;\n      *(undefined4 *)(plVar13 + 5) = *(undefined4 *)(lVar10 + 0x2c);\n      if (puVar2 != (undefined8 *)0x0) {\n        *puVar2 = plVar13;\n      }\n      plVar7[6] = *(long *)(lVar11 + 0x38);\n      *(undefined8 *)(lVar11 + 0x10) = 0;\n      *(undefined4 *)(lVar10 + 0x2c) = 0;\n      *(undefined8 *)(lVar11 + 0x38) = 0;\n      uVar3 = FUN_0012ef67(plVar13);\n      *(undefined4 *)((long)plVar12 + lVar6 * 4 + 0x28) = uVar3;\n      iVar14 = *(int *)((long)plVar12 + lVar6 * 4 + 0x24);\n      iVar4 = FUN_0012ef67(lVar8);\n      *(int *)((long)plVar12 + lVar6 * 4 + 0x24) = iVar4;\n      param_2 = (param_2 + iVar14) - iVar4;\n    }\n  }" statement_identifier : (while_statement "while (plVar12 = plVar13, plVar12 != (long *)0x0) {\n    if (param_2 < (int)plVar12[5]) goto LAB_0012f7d1;\n    param_2 = param_2 - ((int)plVar12[5] + 1);\n    if (param_2 < 0) {\n      iVar9 = 0;\nLAB_0012fdee:\n      if (lVar15 == 0) goto LAB_0012fdf7;\n      goto LAB_0012fa63;\n    }\n    if (param_2 < *(int *)((long)plVar12 + 0x2c)) {\n      local_54 = 1;\n    }\n    else {\n      param_2 = param_2 - (*(int *)((long)plVar12 + 0x2c) + 1);\n      if (param_2 < 0) {\n        iVar9 = 1;\n        goto LAB_0012fdee;\n      }\n      if (param_2 < (int)plVar12[6]) {\n        local_54 = 2;\n      }\n      else {\n        param_2 = param_2 - ((int)plVar12[6] + 1);\n        if (param_2 < 0) {\n          iVar9 = 2;\n          goto LAB_0012fdee;\n        }\n        local_54 = 3;\n      }\n    }\n    lVar6 = (long)(int)local_54;\n    plVar7 = plVar12 + lVar6;\n    plVar13 = (long *)plVar7[1];\n    if (plVar13[8] == 0) {\n      lVar8 = *plVar7;\n      if (*(long *)(lVar8 + 0x40) == 0) {\n        if (local_54 < 3) {\n          local_50 = (long)(int)local_54;\n          lVar6 = (plVar12 + local_50)[2];\n          plVar7 = plVar12 + local_50;\n          if (lVar6 == 0) goto LAB_0012f905;\n          goto LAB_0012fe3f;\n        }\n        goto LAB_0012f905;\n      }\n      lVar11 = *(long *)(lVar8 + 0x48);\n      plVar13[3] = plVar13[2];\n      *(undefined4 *)(plVar13 + 6) = *(undefined4 *)((long)plVar13 + 0x2c);\n      plVar13[8] = plVar13[7];\n      plVar13[2] = plVar13[1];\n      *(int *)((long)plVar13 + 0x2c) = (int)plVar13[5];\n      plVar13[7] = plVar7[6];\n      lVar10 = (long)(int)((lVar11 != 0) + 1);\n      lVar11 = lVar8 + lVar10 * 8;\n      puVar2 = *(undefined8 **)(lVar11 + 0x10);\n      plVar13[1] = (long)puVar2;\n      lVar10 = lVar8 + lVar10 * 4;\n      *(undefined4 *)(plVar13 + 5) = *(undefined4 *)(lVar10 + 0x2c);\n      if (puVar2 != (undefined8 *)0x0) {\n        *puVar2 = plVar13;\n      }\n      plVar7[6] = *(long *)(lVar11 + 0x38);\n      *(undefined8 *)(lVar11 + 0x10) = 0;\n      *(undefined4 *)(lVar10 + 0x2c) = 0;\n      *(undefined8 *)(lVar11 + 0x38) = 0;\n      uVar3 = FUN_0012ef67(plVar13);\n      *(undefined4 *)((long)plVar12 + lVar6 * 4 + 0x28) = uVar3;\n      iVar14 = *(int *)((long)plVar12 + lVar6 * 4 + 0x24);\n      iVar4 = FUN_0012ef67(lVar8);\n      *(int *)((long)plVar12 + lVar6 * 4 + 0x24) = iVar4;\n      param_2 = (param_2 + iVar14) - iVar4;\n    }\n  }" while (parenthesized_expression "(plVar12 = plVar13, plVar12 != (long *)0x0)" ( (comma_expression "plVar12 = plVar13, plVar12 != (long *)0x0" (assignment_expression "plVar12 = plVar13" identifier = identifier) , (binary_expression "plVar12 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal))) )) (compound_statement "{\n    if (param_2 < (int)plVar12[5]) goto LAB_0012f7d1;\n    param_2 = param_2 - ((int)plVar12[5] + 1);\n    if (param_2 < 0) {\n      iVar9 = 0;\nLAB_0012fdee:\n      if (lVar15 == 0) goto LAB_0012fdf7;\n      goto LAB_0012fa63;\n    }\n    if (param_2 < *(int *)((long)plVar12 + 0x2c)) {\n      local_54 = 1;\n    }\n    else {\n      param_2 = param_2 - (*(int *)((long)plVar12 + 0x2c) + 1);\n      if (param_2 < 0) {\n        iVar9 = 1;\n        goto LAB_0012fdee;\n      }\n      if (param_2 < (int)plVar12[6]) {\n        local_54 = 2;\n      }\n      else {\n        param_2 = param_2 - ((int)plVar12[6] + 1);\n        if (param_2 < 0) {\n          iVar9 = 2;\n          goto LAB_0012fdee;\n        }\n        local_54 = 3;\n      }\n    }\n    lVar6 = (long)(int)local_54;\n    plVar7 = plVar12 + lVar6;\n    plVar13 = (long *)plVar7[1];\n    if (plVar13[8] == 0) {\n      lVar8 = *plVar7;\n      if (*(long *)(lVar8 + 0x40) == 0) {\n        if (local_54 < 3) {\n          local_50 = (long)(int)local_54;\n          lVar6 = (plVar12 + local_50)[2];\n          plVar7 = plVar12 + local_50;\n          if (lVar6 == 0) goto LAB_0012f905;\n          goto LAB_0012fe3f;\n        }\n        goto LAB_0012f905;\n      }\n      lVar11 = *(long *)(lVar8 + 0x48);\n      plVar13[3] = plVar13[2];\n      *(undefined4 *)(plVar13 + 6) = *(undefined4 *)((long)plVar13 + 0x2c);\n      plVar13[8] = plVar13[7];\n      plVar13[2] = plVar13[1];\n      *(int *)((long)plVar13 + 0x2c) = (int)plVar13[5];\n      plVar13[7] = plVar7[6];\n      lVar10 = (long)(int)((lVar11 != 0) + 1);\n      lVar11 = lVar8 + lVar10 * 8;\n      puVar2 = *(undefined8 **)(lVar11 + 0x10);\n      plVar13[1] = (long)puVar2;\n      lVar10 = lVar8 + lVar10 * 4;\n      *(undefined4 *)(plVar13 + 5) = *(undefined4 *)(lVar10 + 0x2c);\n      if (puVar2 != (undefined8 *)0x0) {\n        *puVar2 = plVar13;\n      }\n      plVar7[6] = *(long *)(lVar11 + 0x38);\n      *(undefined8 *)(lVar11 + 0x10) = 0;\n      *(undefined4 *)(lVar10 + 0x2c) = 0;\n      *(undefined8 *)(lVar11 + 0x38) = 0;\n      uVar3 = FUN_0012ef67(plVar13);\n      *(undefined4 *)((long)plVar12 + lVar6 * 4 + 0x28) = uVar3;\n      iVar14 = *(int *)((long)plVar12 + lVar6 * 4 + 0x24);\n      iVar4 = FUN_0012ef67(lVar8);\n      *(int *)((long)plVar12 + lVar6 * 4 + 0x24) = iVar4;\n      param_2 = (param_2 + iVar14) - iVar4;\n    }\n  }" { (if_statement "if (param_2 < (int)plVar12[5]) goto LAB_0012f7d1;" if (parenthesized_expression "(param_2 < (int)plVar12[5])" ( (binary_expression "param_2 < (int)plVar12[5]" identifier < (cast_expression "(int)plVar12[5]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "plVar12[5]" identifier [ number_literal ]))) )) (goto_statement "goto LAB_0012f7d1;" goto statement_identifier ;)) (expression_statement "param_2 = param_2 - ((int)plVar12[5] + 1);" (assignment_expression "param_2 = param_2 - ((int)plVar12[5] + 1)" identifier = (binary_expression "param_2 - ((int)plVar12[5] + 1)" identifier - (parenthesized_expression "((int)plVar12[5] + 1)" ( (binary_expression "(int)plVar12[5] + 1" (cast_expression "(int)plVar12[5]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "plVar12[5]" identifier [ number_literal ])) + number_literal) )))) ;) (if_statement "if (param_2 < 0) {\n      iVar9 = 0;\nLAB_0012fdee:\n      if (lVar15 == 0) goto LAB_0012fdf7;\n      goto LAB_0012fa63;\n    }" if (parenthesized_expression "(param_2 < 0)" ( (binary_expression "param_2 < 0" identifier < number_literal) )) (compound_statement "{\n      iVar9 = 0;\nLAB_0012fdee:\n      if (lVar15 == 0) goto LAB_0012fdf7;\n      goto LAB_0012fa63;\n    }" { (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" identifier = number_literal) ;) (labeled_statement "LAB_0012fdee:\n      if (lVar15 == 0) goto LAB_0012fdf7;" statement_identifier : (if_statement "if (lVar15 == 0) goto LAB_0012fdf7;" if (parenthesized_expression "(lVar15 == 0)" ( (binary_expression "lVar15 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0012fdf7;" goto statement_identifier ;))) (goto_statement "goto LAB_0012fa63;" goto statement_identifier ;) })) (if_statement "if (param_2 < *(int *)((long)plVar12 + 0x2c)) {\n      local_54 = 1;\n    }\n    else {\n      param_2 = param_2 - (*(int *)((long)plVar12 + 0x2c) + 1);\n      if (param_2 < 0) {\n        iVar9 = 1;\n        goto LAB_0012fdee;\n      }\n      if (param_2 < (int)plVar12[6]) {\n        local_54 = 2;\n      }\n      else {\n        param_2 = param_2 - ((int)plVar12[6] + 1);\n        if (param_2 < 0) {\n          iVar9 = 2;\n          goto LAB_0012fdee;\n        }\n        local_54 = 3;\n      }\n    }" if (parenthesized_expression "(param_2 < *(int *)((long)plVar12 + 0x2c))" ( (binary_expression "param_2 < *(int *)((long)plVar12 + 0x2c)" identifier < (pointer_expression "*(int *)((long)plVar12 + 0x2c)" * (cast_expression "(int *)((long)plVar12 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar12 + 0x2c)" ( (binary_expression "(long)plVar12 + 0x2c" (cast_expression "(long)plVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) )) (compound_statement "{\n      local_54 = 1;\n    }" { (expression_statement "local_54 = 1;" (assignment_expression "local_54 = 1" identifier = number_literal) ;) }) (else_clause "else {\n      param_2 = param_2 - (*(int *)((long)plVar12 + 0x2c) + 1);\n      if (param_2 < 0) {\n        iVar9 = 1;\n        goto LAB_0012fdee;\n      }\n      if (param_2 < (int)plVar12[6]) {\n        local_54 = 2;\n      }\n      else {\n        param_2 = param_2 - ((int)plVar12[6] + 1);\n        if (param_2 < 0) {\n          iVar9 = 2;\n          goto LAB_0012fdee;\n        }\n        local_54 = 3;\n      }\n    }" else (compound_statement "{\n      param_2 = param_2 - (*(int *)((long)plVar12 + 0x2c) + 1);\n      if (param_2 < 0) {\n        iVar9 = 1;\n        goto LAB_0012fdee;\n      }\n      if (param_2 < (int)plVar12[6]) {\n        local_54 = 2;\n      }\n      else {\n        param_2 = param_2 - ((int)plVar12[6] + 1);\n        if (param_2 < 0) {\n          iVar9 = 2;\n          goto LAB_0012fdee;\n        }\n        local_54 = 3;\n      }\n    }" { (expression_statement "param_2 = param_2 - (*(int *)((long)plVar12 + 0x2c) + 1);" (assignment_expression "param_2 = param_2 - (*(int *)((long)plVar12 + 0x2c) + 1)" identifier = (binary_expression "param_2 - (*(int *)((long)plVar12 + 0x2c) + 1)" identifier - (parenthesized_expression "(*(int *)((long)plVar12 + 0x2c) + 1)" ( (binary_expression "*(int *)((long)plVar12 + 0x2c) + 1" (pointer_expression "*(int *)((long)plVar12 + 0x2c)" * (cast_expression "(int *)((long)plVar12 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar12 + 0x2c)" ( (binary_expression "(long)plVar12 + 0x2c" (cast_expression "(long)plVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) + number_literal) )))) ;) (if_statement "if (param_2 < 0) {\n        iVar9 = 1;\n        goto LAB_0012fdee;\n      }" if (parenthesized_expression "(param_2 < 0)" ( (binary_expression "param_2 < 0" identifier < number_literal) )) (compound_statement "{\n        iVar9 = 1;\n        goto LAB_0012fdee;\n      }" { (expression_statement "iVar9 = 1;" (assignment_expression "iVar9 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_0012fdee;" goto statement_identifier ;) })) (if_statement "if (param_2 < (int)plVar12[6]) {\n        local_54 = 2;\n      }\n      else {\n        param_2 = param_2 - ((int)plVar12[6] + 1);\n        if (param_2 < 0) {\n          iVar9 = 2;\n          goto LAB_0012fdee;\n        }\n        local_54 = 3;\n      }" if (parenthesized_expression "(param_2 < (int)plVar12[6])" ( (binary_expression "param_2 < (int)plVar12[6]" identifier < (cast_expression "(int)plVar12[6]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "plVar12[6]" identifier [ number_literal ]))) )) (compound_statement "{\n        local_54 = 2;\n      }" { (expression_statement "local_54 = 2;" (assignment_expression "local_54 = 2" identifier = number_literal) ;) }) (else_clause "else {\n        param_2 = param_2 - ((int)plVar12[6] + 1);\n        if (param_2 < 0) {\n          iVar9 = 2;\n          goto LAB_0012fdee;\n        }\n        local_54 = 3;\n      }" else (compound_statement "{\n        param_2 = param_2 - ((int)plVar12[6] + 1);\n        if (param_2 < 0) {\n          iVar9 = 2;\n          goto LAB_0012fdee;\n        }\n        local_54 = 3;\n      }" { (expression_statement "param_2 = param_2 - ((int)plVar12[6] + 1);" (assignment_expression "param_2 = param_2 - ((int)plVar12[6] + 1)" identifier = (binary_expression "param_2 - ((int)plVar12[6] + 1)" identifier - (parenthesized_expression "((int)plVar12[6] + 1)" ( (binary_expression "(int)plVar12[6] + 1" (cast_expression "(int)plVar12[6]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "plVar12[6]" identifier [ number_literal ])) + number_literal) )))) ;) (if_statement "if (param_2 < 0) {\n          iVar9 = 2;\n          goto LAB_0012fdee;\n        }" if (parenthesized_expression "(param_2 < 0)" ( (binary_expression "param_2 < 0" identifier < number_literal) )) (compound_statement "{\n          iVar9 = 2;\n          goto LAB_0012fdee;\n        }" { (expression_statement "iVar9 = 2;" (assignment_expression "iVar9 = 2" identifier = number_literal) ;) (goto_statement "goto LAB_0012fdee;" goto statement_identifier ;) })) (expression_statement "local_54 = 3;" (assignment_expression "local_54 = 3" identifier = number_literal) ;) }))) }))) (expression_statement "lVar6 = (long)(int)local_54;" (assignment_expression "lVar6 = (long)(int)local_54" identifier = (cast_expression "(long)(int)local_54" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (cast_expression "(int)local_54" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "plVar7 = plVar12 + lVar6;" (assignment_expression "plVar7 = plVar12 + lVar6" identifier = (binary_expression "plVar12 + lVar6" identifier + identifier)) ;) (expression_statement "plVar13 = (long *)plVar7[1];" (assignment_expression "plVar13 = (long *)plVar7[1]" identifier = (cast_expression "(long *)plVar7[1]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar7[1]" identifier [ number_literal ]))) ;) (if_statement "if (plVar13[8] == 0) {\n      lVar8 = *plVar7;\n      if (*(long *)(lVar8 + 0x40) == 0) {\n        if (local_54 < 3) {\n          local_50 = (long)(int)local_54;\n          lVar6 = (plVar12 + local_50)[2];\n          plVar7 = plVar12 + local_50;\n          if (lVar6 == 0) goto LAB_0012f905;\n          goto LAB_0012fe3f;\n        }\n        goto LAB_0012f905;\n      }\n      lVar11 = *(long *)(lVar8 + 0x48);\n      plVar13[3] = plVar13[2];\n      *(undefined4 *)(plVar13 + 6) = *(undefined4 *)((long)plVar13 + 0x2c);\n      plVar13[8] = plVar13[7];\n      plVar13[2] = plVar13[1];\n      *(int *)((long)plVar13 + 0x2c) = (int)plVar13[5];\n      plVar13[7] = plVar7[6];\n      lVar10 = (long)(int)((lVar11 != 0) + 1);\n      lVar11 = lVar8 + lVar10 * 8;\n      puVar2 = *(undefined8 **)(lVar11 + 0x10);\n      plVar13[1] = (long)puVar2;\n      lVar10 = lVar8 + lVar10 * 4;\n      *(undefined4 *)(plVar13 + 5) = *(undefined4 *)(lVar10 + 0x2c);\n      if (puVar2 != (undefined8 *)0x0) {\n        *puVar2 = plVar13;\n      }\n      plVar7[6] = *(long *)(lVar11 + 0x38);\n      *(undefined8 *)(lVar11 + 0x10) = 0;\n      *(undefined4 *)(lVar10 + 0x2c) = 0;\n      *(undefined8 *)(lVar11 + 0x38) = 0;\n      uVar3 = FUN_0012ef67(plVar13);\n      *(undefined4 *)((long)plVar12 + lVar6 * 4 + 0x28) = uVar3;\n      iVar14 = *(int *)((long)plVar12 + lVar6 * 4 + 0x24);\n      iVar4 = FUN_0012ef67(lVar8);\n      *(int *)((long)plVar12 + lVar6 * 4 + 0x24) = iVar4;\n      param_2 = (param_2 + iVar14) - iVar4;\n    }" if (parenthesized_expression "(plVar13[8] == 0)" ( (binary_expression "plVar13[8] == 0" (subscript_expression "plVar13[8]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      lVar8 = *plVar7;\n      if (*(long *)(lVar8 + 0x40) == 0) {\n        if (local_54 < 3) {\n          local_50 = (long)(int)local_54;\n          lVar6 = (plVar12 + local_50)[2];\n          plVar7 = plVar12 + local_50;\n          if (lVar6 == 0) goto LAB_0012f905;\n          goto LAB_0012fe3f;\n        }\n        goto LAB_0012f905;\n      }\n      lVar11 = *(long *)(lVar8 + 0x48);\n      plVar13[3] = plVar13[2];\n      *(undefined4 *)(plVar13 + 6) = *(undefined4 *)((long)plVar13 + 0x2c);\n      plVar13[8] = plVar13[7];\n      plVar13[2] = plVar13[1];\n      *(int *)((long)plVar13 + 0x2c) = (int)plVar13[5];\n      plVar13[7] = plVar7[6];\n      lVar10 = (long)(int)((lVar11 != 0) + 1);\n      lVar11 = lVar8 + lVar10 * 8;\n      puVar2 = *(undefined8 **)(lVar11 + 0x10);\n      plVar13[1] = (long)puVar2;\n      lVar10 = lVar8 + lVar10 * 4;\n      *(undefined4 *)(plVar13 + 5) = *(undefined4 *)(lVar10 + 0x2c);\n      if (puVar2 != (undefined8 *)0x0) {\n        *puVar2 = plVar13;\n      }\n      plVar7[6] = *(long *)(lVar11 + 0x38);\n      *(undefined8 *)(lVar11 + 0x10) = 0;\n      *(undefined4 *)(lVar10 + 0x2c) = 0;\n      *(undefined8 *)(lVar11 + 0x38) = 0;\n      uVar3 = FUN_0012ef67(plVar13);\n      *(undefined4 *)((long)plVar12 + lVar6 * 4 + 0x28) = uVar3;\n      iVar14 = *(int *)((long)plVar12 + lVar6 * 4 + 0x24);\n      iVar4 = FUN_0012ef67(lVar8);\n      *(int *)((long)plVar12 + lVar6 * 4 + 0x24) = iVar4;\n      param_2 = (param_2 + iVar14) - iVar4;\n    }" { (expression_statement "lVar8 = *plVar7;" (assignment_expression "lVar8 = *plVar7" identifier = (pointer_expression "*plVar7" * identifier)) ;) (if_statement "if (*(long *)(lVar8 + 0x40) == 0) {\n        if (local_54 < 3) {\n          local_50 = (long)(int)local_54;\n          lVar6 = (plVar12 + local_50)[2];\n          plVar7 = plVar12 + local_50;\n          if (lVar6 == 0) goto LAB_0012f905;\n          goto LAB_0012fe3f;\n        }\n        goto LAB_0012f905;\n      }" if (parenthesized_expression "(*(long *)(lVar8 + 0x40) == 0)" ( (binary_expression "*(long *)(lVar8 + 0x40) == 0" (pointer_expression "*(long *)(lVar8 + 0x40)" * (cast_expression "(long *)(lVar8 + 0x40)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x40)" ( (binary_expression "lVar8 + 0x40" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n        if (local_54 < 3) {\n          local_50 = (long)(int)local_54;\n          lVar6 = (plVar12 + local_50)[2];\n          plVar7 = plVar12 + local_50;\n          if (lVar6 == 0) goto LAB_0012f905;\n          goto LAB_0012fe3f;\n        }\n        goto LAB_0012f905;\n      }" { (if_statement "if (local_54 < 3) {\n          local_50 = (long)(int)local_54;\n          lVar6 = (plVar12 + local_50)[2];\n          plVar7 = plVar12 + local_50;\n          if (lVar6 == 0) goto LAB_0012f905;\n          goto LAB_0012fe3f;\n        }" if (parenthesized_expression "(local_54 < 3)" ( (binary_expression "local_54 < 3" identifier < number_literal) )) (compound_statement "{\n          local_50 = (long)(int)local_54;\n          lVar6 = (plVar12 + local_50)[2];\n          plVar7 = plVar12 + local_50;\n          if (lVar6 == 0) goto LAB_0012f905;\n          goto LAB_0012fe3f;\n        }" { (expression_statement "local_50 = (long)(int)local_54;" (assignment_expression "local_50 = (long)(int)local_54" identifier = (cast_expression "(long)(int)local_54" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (cast_expression "(int)local_54" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "lVar6 = (plVar12 + local_50)[2];" (assignment_expression "lVar6 = (plVar12 + local_50)[2]" identifier = (subscript_expression "(plVar12 + local_50)[2]" (parenthesized_expression "(plVar12 + local_50)" ( (binary_expression "plVar12 + local_50" identifier + identifier) )) [ number_literal ])) ;) (expression_statement "plVar7 = plVar12 + local_50;" (assignment_expression "plVar7 = plVar12 + local_50" identifier = (binary_expression "plVar12 + local_50" identifier + identifier)) ;) (if_statement "if (lVar6 == 0) goto LAB_0012f905;" if (parenthesized_expression "(lVar6 == 0)" ( (binary_expression "lVar6 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0012f905;" goto statement_identifier ;)) (goto_statement "goto LAB_0012fe3f;" goto statement_identifier ;) })) (goto_statement "goto LAB_0012f905;" goto statement_identifier ;) })) (expression_statement "lVar11 = *(long *)(lVar8 + 0x48);" (assignment_expression "lVar11 = *(long *)(lVar8 + 0x48)" identifier = (pointer_expression "*(long *)(lVar8 + 0x48)" * (cast_expression "(long *)(lVar8 + 0x48)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x48)" ( (binary_expression "lVar8 + 0x48" identifier + number_literal) ))))) ;) (expression_statement "plVar13[3] = plVar13[2];" (assignment_expression "plVar13[3] = plVar13[2]" (subscript_expression "plVar13[3]" identifier [ number_literal ]) = (subscript_expression "plVar13[2]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)(plVar13 + 6) = *(undefined4 *)((long)plVar13 + 0x2c);" (assignment_expression "*(undefined4 *)(plVar13 + 6) = *(undefined4 *)((long)plVar13 + 0x2c)" (pointer_expression "*(undefined4 *)(plVar13 + 6)" * (cast_expression "(undefined4 *)(plVar13 + 6)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar13 + 6)" ( (binary_expression "plVar13 + 6" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)((long)plVar13 + 0x2c)" * (cast_expression "(undefined4 *)((long)plVar13 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar13 + 0x2c)" ( (binary_expression "(long)plVar13 + 0x2c" (cast_expression "(long)plVar13" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "plVar13[8] = plVar13[7];" (assignment_expression "plVar13[8] = plVar13[7]" (subscript_expression "plVar13[8]" identifier [ number_literal ]) = (subscript_expression "plVar13[7]" identifier [ number_literal ])) ;) (expression_statement "plVar13[2] = plVar13[1];" (assignment_expression "plVar13[2] = plVar13[1]" (subscript_expression "plVar13[2]" identifier [ number_literal ]) = (subscript_expression "plVar13[1]" identifier [ number_literal ])) ;) (expression_statement "*(int *)((long)plVar13 + 0x2c) = (int)plVar13[5];" (assignment_expression "*(int *)((long)plVar13 + 0x2c) = (int)plVar13[5]" (pointer_expression "*(int *)((long)plVar13 + 0x2c)" * (cast_expression "(int *)((long)plVar13 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar13 + 0x2c)" ( (binary_expression "(long)plVar13 + 0x2c" (cast_expression "(long)plVar13" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (cast_expression "(int)plVar13[5]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "plVar13[5]" identifier [ number_literal ]))) ;) (expression_statement "plVar13[7] = plVar7[6];" (assignment_expression "plVar13[7] = plVar7[6]" (subscript_expression "plVar13[7]" identifier [ number_literal ]) = (subscript_expression "plVar7[6]" identifier [ number_literal ])) ;) (expression_statement "lVar10 = (long)(int)((lVar11 != 0) + 1);" (assignment_expression "lVar10 = (long)(int)((lVar11 != 0) + 1)" identifier = (cast_expression "(long)(int)((lVar11 != 0) + 1)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (cast_expression "(int)((lVar11 != 0) + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((lVar11 != 0) + 1)" ( (binary_expression "(lVar11 != 0) + 1" (parenthesized_expression "(lVar11 != 0)" ( (binary_expression "lVar11 != 0" identifier != number_literal) )) + number_literal) ))))) ;) (expression_statement "lVar11 = lVar8 + lVar10 * 8;" (assignment_expression "lVar11 = lVar8 + lVar10 * 8" identifier = (binary_expression "lVar8 + lVar10 * 8" identifier + (binary_expression "lVar10 * 8" identifier * number_literal))) ;) (expression_statement "puVar2 = *(undefined8 **)(lVar11 + 0x10);" (assignment_expression "puVar2 = *(undefined8 **)(lVar11 + 0x10)" identifier = (pointer_expression "*(undefined8 **)(lVar11 + 0x10)" * (cast_expression "(undefined8 **)(lVar11 + 0x10)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar11 + 0x10)" ( (binary_expression "lVar11 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "plVar13[1] = (long)puVar2;" (assignment_expression "plVar13[1] = (long)puVar2" (subscript_expression "plVar13[1]" identifier [ number_literal ]) = (cast_expression "(long)puVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "lVar10 = lVar8 + lVar10 * 4;" (assignment_expression "lVar10 = lVar8 + lVar10 * 4" identifier = (binary_expression "lVar8 + lVar10 * 4" identifier + (binary_expression "lVar10 * 4" identifier * number_literal))) ;) (expression_statement "*(undefined4 *)(plVar13 + 5) = *(undefined4 *)(lVar10 + 0x2c);" (assignment_expression "*(undefined4 *)(plVar13 + 5) = *(undefined4 *)(lVar10 + 0x2c)" (pointer_expression "*(undefined4 *)(plVar13 + 5)" * (cast_expression "(undefined4 *)(plVar13 + 5)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar13 + 5)" ( (binary_expression "plVar13 + 5" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(lVar10 + 0x2c)" * (cast_expression "(undefined4 *)(lVar10 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + 0x2c)" ( (binary_expression "lVar10 + 0x2c" identifier + number_literal) ))))) ;) (if_statement "if (puVar2 != (undefined8 *)0x0) {\n        *puVar2 = plVar13;\n      }" if (parenthesized_expression "(puVar2 != (undefined8 *)0x0)" ( (binary_expression "puVar2 != (undefined8 *)0x0" identifier != (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        *puVar2 = plVar13;\n      }" { (expression_statement "*puVar2 = plVar13;" (assignment_expression "*puVar2 = plVar13" (pointer_expression "*puVar2" * identifier) = identifier) ;) })) (expression_statement "plVar7[6] = *(long *)(lVar11 + 0x38);" (assignment_expression "plVar7[6] = *(long *)(lVar11 + 0x38)" (subscript_expression "plVar7[6]" identifier [ number_literal ]) = (pointer_expression "*(long *)(lVar11 + 0x38)" * (cast_expression "(long *)(lVar11 + 0x38)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar11 + 0x38)" ( (binary_expression "lVar11 + 0x38" identifier + number_literal) ))))) ;) (expression_statement "*(undefined8 *)(lVar11 + 0x10) = 0;" (assignment_expression "*(undefined8 *)(lVar11 + 0x10) = 0" (pointer_expression "*(undefined8 *)(lVar11 + 0x10)" * (cast_expression "(undefined8 *)(lVar11 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar11 + 0x10)" ( (binary_expression "lVar11 + 0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(lVar10 + 0x2c) = 0;" (assignment_expression "*(undefined4 *)(lVar10 + 0x2c) = 0" (pointer_expression "*(undefined4 *)(lVar10 + 0x2c)" * (cast_expression "(undefined4 *)(lVar10 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + 0x2c)" ( (binary_expression "lVar10 + 0x2c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(lVar11 + 0x38) = 0;" (assignment_expression "*(undefined8 *)(lVar11 + 0x38) = 0" (pointer_expression "*(undefined8 *)(lVar11 + 0x38)" * (cast_expression "(undefined8 *)(lVar11 + 0x38)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar11 + 0x38)" ( (binary_expression "lVar11 + 0x38" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar3 = FUN_0012ef67(plVar13);" (assignment_expression "uVar3 = FUN_0012ef67(plVar13)" identifier = (call_expression "FUN_0012ef67(plVar13)" identifier (argument_list "(plVar13)" ( identifier )))) ;) (expression_statement "*(undefined4 *)((long)plVar12 + lVar6 * 4 + 0x28) = uVar3;" (assignment_expression "*(undefined4 *)((long)plVar12 + lVar6 * 4 + 0x28) = uVar3" (pointer_expression "*(undefined4 *)((long)plVar12 + lVar6 * 4 + 0x28)" * (cast_expression "(undefined4 *)((long)plVar12 + lVar6 * 4 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar12 + lVar6 * 4 + 0x28)" ( (binary_expression "(long)plVar12 + lVar6 * 4 + 0x28" (binary_expression "(long)plVar12 + lVar6 * 4" (cast_expression "(long)plVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "lVar6 * 4" identifier * number_literal)) + number_literal) )))) = identifier) ;) (expression_statement "iVar14 = *(int *)((long)plVar12 + lVar6 * 4 + 0x24);" (assignment_expression "iVar14 = *(int *)((long)plVar12 + lVar6 * 4 + 0x24)" identifier = (pointer_expression "*(int *)((long)plVar12 + lVar6 * 4 + 0x24)" * (cast_expression "(int *)((long)plVar12 + lVar6 * 4 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar12 + lVar6 * 4 + 0x24)" ( (binary_expression "(long)plVar12 + lVar6 * 4 + 0x24" (binary_expression "(long)plVar12 + lVar6 * 4" (cast_expression "(long)plVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "lVar6 * 4" identifier * number_literal)) + number_literal) ))))) ;) (expression_statement "iVar4 = FUN_0012ef67(lVar8);" (assignment_expression "iVar4 = FUN_0012ef67(lVar8)" identifier = (call_expression "FUN_0012ef67(lVar8)" identifier (argument_list "(lVar8)" ( identifier )))) ;) (expression_statement "*(int *)((long)plVar12 + lVar6 * 4 + 0x24) = iVar4;" (assignment_expression "*(int *)((long)plVar12 + lVar6 * 4 + 0x24) = iVar4" (pointer_expression "*(int *)((long)plVar12 + lVar6 * 4 + 0x24)" * (cast_expression "(int *)((long)plVar12 + lVar6 * 4 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar12 + lVar6 * 4 + 0x24)" ( (binary_expression "(long)plVar12 + lVar6 * 4 + 0x24" (binary_expression "(long)plVar12 + lVar6 * 4" (cast_expression "(long)plVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "lVar6 * 4" identifier * number_literal)) + number_literal) )))) = identifier) ;) (expression_statement "param_2 = (param_2 + iVar14) - iVar4;" (assignment_expression "param_2 = (param_2 + iVar14) - iVar4" identifier = (binary_expression "(param_2 + iVar14) - iVar4" (parenthesized_expression "(param_2 + iVar14)" ( (binary_expression "param_2 + iVar14" identifier + identifier) )) - identifier)) ;) })) }))) (if_statement "if (lVar15 == 0) {\nLAB_0012fdf7:\n    lVar15 = plVar12[(long)iVar9 + 7];\n  }" if (parenthesized_expression "(lVar15 == 0)" ( (binary_expression "lVar15 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0012fdf7:\n    lVar15 = plVar12[(long)iVar9 + 7];\n  }" { (labeled_statement "LAB_0012fdf7:\n    lVar15 = plVar12[(long)iVar9 + 7];" statement_identifier : (expression_statement "lVar15 = plVar12[(long)iVar9 + 7];" (assignment_expression "lVar15 = plVar12[(long)iVar9 + 7]" identifier = (subscript_expression "plVar12[(long)iVar9 + 7]" identifier [ (binary_expression "(long)iVar9 + 7" (cast_expression "(long)iVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ])) ;)) })) (if_statement "if (iVar9 == -1) {\n    return 0;\n  }" if (parenthesized_expression "(iVar9 == -1)" ( (binary_expression "iVar9 == -1" identifier == number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (labeled_statement "LAB_0012fa63:\n  lVar6 = *plVar12;" statement_identifier : (expression_statement "lVar6 = *plVar12;" (assignment_expression "lVar6 = *plVar12" identifier = (pointer_expression "*plVar12" * identifier)) ;)) (if_statement "if (lVar6 == 0) {\n    if (plVar12[8] == 0) {\n      if (plVar12[1] == 0) {\n        FUN_0010c4d3(plVar12);\n        *param_1 = 0;\n        return lVar15;\n      }\n    }\n    else if (plVar12[1] == 0) {\n      lVar6 = 0;\n      if (1 < iVar9) {\n        plVar12[(long)iVar9 + 7] = 0;\n        return lVar15;\n      }\n      goto LAB_0012fbac;\n    }\n  }\n  else if ((plVar12[1] == 0) && (plVar12[8] != 0)) goto code_r0x0012fc20;" if (parenthesized_expression "(lVar6 == 0)" ( (binary_expression "lVar6 == 0" identifier == number_literal) )) (compound_statement "{\n    if (plVar12[8] == 0) {\n      if (plVar12[1] == 0) {\n        FUN_0010c4d3(plVar12);\n        *param_1 = 0;\n        return lVar15;\n      }\n    }\n    else if (plVar12[1] == 0) {\n      lVar6 = 0;\n      if (1 < iVar9) {\n        plVar12[(long)iVar9 + 7] = 0;\n        return lVar15;\n      }\n      goto LAB_0012fbac;\n    }\n  }" { (if_statement "if (plVar12[8] == 0) {\n      if (plVar12[1] == 0) {\n        FUN_0010c4d3(plVar12);\n        *param_1 = 0;\n        return lVar15;\n      }\n    }\n    else if (plVar12[1] == 0) {\n      lVar6 = 0;\n      if (1 < iVar9) {\n        plVar12[(long)iVar9 + 7] = 0;\n        return lVar15;\n      }\n      goto LAB_0012fbac;\n    }" if (parenthesized_expression "(plVar12[8] == 0)" ( (binary_expression "plVar12[8] == 0" (subscript_expression "plVar12[8]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      if (plVar12[1] == 0) {\n        FUN_0010c4d3(plVar12);\n        *param_1 = 0;\n        return lVar15;\n      }\n    }" { (if_statement "if (plVar12[1] == 0) {\n        FUN_0010c4d3(plVar12);\n        *param_1 = 0;\n        return lVar15;\n      }" if (parenthesized_expression "(plVar12[1] == 0)" ( (binary_expression "plVar12[1] == 0" (subscript_expression "plVar12[1]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n        FUN_0010c4d3(plVar12);\n        *param_1 = 0;\n        return lVar15;\n      }" { (expression_statement "FUN_0010c4d3(plVar12);" (call_expression "FUN_0010c4d3(plVar12)" identifier (argument_list "(plVar12)" ( identifier ))) ;) (expression_statement "*param_1 = 0;" (assignment_expression "*param_1 = 0" (pointer_expression "*param_1" * identifier) = number_literal) ;) (return_statement "return lVar15;" return identifier ;) })) }) (else_clause "else if (plVar12[1] == 0) {\n      lVar6 = 0;\n      if (1 < iVar9) {\n        plVar12[(long)iVar9 + 7] = 0;\n        return lVar15;\n      }\n      goto LAB_0012fbac;\n    }" else (if_statement "if (plVar12[1] == 0) {\n      lVar6 = 0;\n      if (1 < iVar9) {\n        plVar12[(long)iVar9 + 7] = 0;\n        return lVar15;\n      }\n      goto LAB_0012fbac;\n    }" if (parenthesized_expression "(plVar12[1] == 0)" ( (binary_expression "plVar12[1] == 0" (subscript_expression "plVar12[1]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      lVar6 = 0;\n      if (1 < iVar9) {\n        plVar12[(long)iVar9 + 7] = 0;\n        return lVar15;\n      }\n      goto LAB_0012fbac;\n    }" { (expression_statement "lVar6 = 0;" (assignment_expression "lVar6 = 0" identifier = number_literal) ;) (if_statement "if (1 < iVar9) {\n        plVar12[(long)iVar9 + 7] = 0;\n        return lVar15;\n      }" if (parenthesized_expression "(1 < iVar9)" ( (binary_expression "1 < iVar9" number_literal < identifier) )) (compound_statement "{\n        plVar12[(long)iVar9 + 7] = 0;\n        return lVar15;\n      }" { (expression_statement "plVar12[(long)iVar9 + 7] = 0;" (assignment_expression "plVar12[(long)iVar9 + 7] = 0" (subscript_expression "plVar12[(long)iVar9 + 7]" identifier [ (binary_expression "(long)iVar9 + 7" (cast_expression "(long)iVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ]) = number_literal) ;) (return_statement "return lVar15;" return identifier ;) })) (goto_statement "goto LAB_0012fbac;" goto statement_identifier ;) })))) }) (else_clause "else if ((plVar12[1] == 0) && (plVar12[8] != 0)) goto code_r0x0012fc20;" else (if_statement "if ((plVar12[1] == 0) && (plVar12[8] != 0)) goto code_r0x0012fc20;" if (parenthesized_expression "((plVar12[1] == 0) && (plVar12[8] != 0))" ( (binary_expression "(plVar12[1] == 0) && (plVar12[8] != 0)" (parenthesized_expression "(plVar12[1] == 0)" ( (binary_expression "plVar12[1] == 0" (subscript_expression "plVar12[1]" identifier [ number_literal ]) == number_literal) )) && (parenthesized_expression "(plVar12[8] != 0)" ( (binary_expression "plVar12[8] != 0" (subscript_expression "plVar12[8]" identifier [ number_literal ]) != number_literal) ))) )) (goto_statement "goto code_r0x0012fc20;" goto statement_identifier ;)))) (expression_statement "plVar13 = (long *)plVar12[(long)iVar9 + 1];" (assignment_expression "plVar13 = (long *)plVar12[(long)iVar9 + 1]" identifier = (cast_expression "(long *)plVar12[(long)iVar9 + 1]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar12[(long)iVar9 + 1]" identifier [ (binary_expression "(long)iVar9 + 1" (cast_expression "(long)iVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ]))) ;) (expression_statement "plVar7 = plVar13;" (assignment_expression "plVar7 = plVar13" identifier = identifier) ;) (if_statement "if (plVar13[8] == 0) {\n    plVar7 = (long *)plVar12[(long)iVar9 + 2];\n    plVar5 = plVar7;\n    if (plVar7[8] == 0) {\n      plVar13[8] = plVar12[(long)iVar9 + 7];\n      puVar2 = (undefined8 *)plVar7[1];\n      plVar13[3] = (long)puVar2;\n      *(int *)(plVar13 + 6) = (int)plVar7[5];\n      if (puVar2 != (undefined8 *)0x0) {\n        *puVar2 = plVar13;\n      }\n      plVar13[9] = plVar7[7];\n      puVar2 = (undefined8 *)plVar7[2];\n      plVar13[4] = (long)puVar2;\n      *(undefined4 *)((long)plVar13 + 0x34) = *(undefined4 *)((long)plVar7 + 0x2c);\n      if (puVar2 != (undefined8 *)0x0) {\n        *puVar2 = plVar13;\n      }\n      FUN_0010c4d3();\n      uVar3 = FUN_0012ef67(plVar13);\n      *(undefined4 *)((long)plVar12 + (long)iVar9 * 4 + 0x28) = uVar3;\n      iVar14 = iVar9;\n      if ((iVar9 < 2) && (lVar6 = plVar12[(long)iVar9 + 8], lVar6 != 0)) {\n        lVar8 = (long)(iVar9 + 1);\n        do {\n          iVar14 = (int)lVar8;\n          plVar12[lVar8 + 6] = lVar6;\n          plVar12[lVar8 + 1] = plVar12[lVar8 + 2];\n          *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28) =\n               *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x2c);\n          if (1 < iVar14) break;\n          lVar6 = plVar12[lVar8 + 8];\n          lVar8 = lVar8 + 1;\n        } while (lVar6 != 0);\n      }\n      plVar12[(long)iVar14 + 7] = 0;\n      plVar12[(long)iVar14 + 2] = 0;\n      *(undefined4 *)((long)plVar12 + (long)(iVar14 + 1) * 4 + 0x28) = 0;\n      if (plVar12[7] == 0) {\n        *param_1 = plVar13;\n        *plVar13 = 0;\n        FUN_0010c4d3(plVar12);\n      }\n      param_2 = *(int *)((long)plVar13 + 0x2c) + (int)plVar13[5] + 1;\n    }\n    else {\n      do {\n        plVar13 = plVar5;\n        plVar5 = (long *)plVar13[1];\n      } while (plVar5 != (long *)0x0);\n      plVar12[(long)iVar9 + 7] = plVar13[7];\n      param_2 = 0;\n      plVar13 = plVar7;\n    }\n  }\n  else {\n    while (plVar5 = plVar7, (long *)plVar5[1] != (long *)0x0) {\n      plVar7 = (long *)plVar5[4];\n      if ((((long *)plVar5[4] == (long *)0x0) &&\n          (plVar7 = (long *)plVar5[3], (long *)plVar5[3] == (long *)0x0)) &&\n         (plVar7 = (long *)plVar5[2], (long *)plVar5[2] == (long *)0x0)) {\n        plVar7 = (long *)plVar5[1];\n      }\n    }\n    lVar6 = plVar5[9];\n    if ((lVar6 == 0) && (lVar6 = plVar5[8], lVar6 == 0)) {\n      lVar6 = plVar5[7];\n    }\n    plVar12[(long)iVar9 + 7] = lVar6;\n    param_2 = *(int *)((long)plVar12 + (long)iVar9 * 4 + 0x28) + -1;\n  }" if (parenthesized_expression "(plVar13[8] == 0)" ( (binary_expression "plVar13[8] == 0" (subscript_expression "plVar13[8]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n    plVar7 = (long *)plVar12[(long)iVar9 + 2];\n    plVar5 = plVar7;\n    if (plVar7[8] == 0) {\n      plVar13[8] = plVar12[(long)iVar9 + 7];\n      puVar2 = (undefined8 *)plVar7[1];\n      plVar13[3] = (long)puVar2;\n      *(int *)(plVar13 + 6) = (int)plVar7[5];\n      if (puVar2 != (undefined8 *)0x0) {\n        *puVar2 = plVar13;\n      }\n      plVar13[9] = plVar7[7];\n      puVar2 = (undefined8 *)plVar7[2];\n      plVar13[4] = (long)puVar2;\n      *(undefined4 *)((long)plVar13 + 0x34) = *(undefined4 *)((long)plVar7 + 0x2c);\n      if (puVar2 != (undefined8 *)0x0) {\n        *puVar2 = plVar13;\n      }\n      FUN_0010c4d3();\n      uVar3 = FUN_0012ef67(plVar13);\n      *(undefined4 *)((long)plVar12 + (long)iVar9 * 4 + 0x28) = uVar3;\n      iVar14 = iVar9;\n      if ((iVar9 < 2) && (lVar6 = plVar12[(long)iVar9 + 8], lVar6 != 0)) {\n        lVar8 = (long)(iVar9 + 1);\n        do {\n          iVar14 = (int)lVar8;\n          plVar12[lVar8 + 6] = lVar6;\n          plVar12[lVar8 + 1] = plVar12[lVar8 + 2];\n          *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28) =\n               *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x2c);\n          if (1 < iVar14) break;\n          lVar6 = plVar12[lVar8 + 8];\n          lVar8 = lVar8 + 1;\n        } while (lVar6 != 0);\n      }\n      plVar12[(long)iVar14 + 7] = 0;\n      plVar12[(long)iVar14 + 2] = 0;\n      *(undefined4 *)((long)plVar12 + (long)(iVar14 + 1) * 4 + 0x28) = 0;\n      if (plVar12[7] == 0) {\n        *param_1 = plVar13;\n        *plVar13 = 0;\n        FUN_0010c4d3(plVar12);\n      }\n      param_2 = *(int *)((long)plVar13 + 0x2c) + (int)plVar13[5] + 1;\n    }\n    else {\n      do {\n        plVar13 = plVar5;\n        plVar5 = (long *)plVar13[1];\n      } while (plVar5 != (long *)0x0);\n      plVar12[(long)iVar9 + 7] = plVar13[7];\n      param_2 = 0;\n      plVar13 = plVar7;\n    }\n  }" { (expression_statement "plVar7 = (long *)plVar12[(long)iVar9 + 2];" (assignment_expression "plVar7 = (long *)plVar12[(long)iVar9 + 2]" identifier = (cast_expression "(long *)plVar12[(long)iVar9 + 2]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar12[(long)iVar9 + 2]" identifier [ (binary_expression "(long)iVar9 + 2" (cast_expression "(long)iVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ]))) ;) (expression_statement "plVar5 = plVar7;" (assignment_expression "plVar5 = plVar7" identifier = identifier) ;) (if_statement "if (plVar7[8] == 0) {\n      plVar13[8] = plVar12[(long)iVar9 + 7];\n      puVar2 = (undefined8 *)plVar7[1];\n      plVar13[3] = (long)puVar2;\n      *(int *)(plVar13 + 6) = (int)plVar7[5];\n      if (puVar2 != (undefined8 *)0x0) {\n        *puVar2 = plVar13;\n      }\n      plVar13[9] = plVar7[7];\n      puVar2 = (undefined8 *)plVar7[2];\n      plVar13[4] = (long)puVar2;\n      *(undefined4 *)((long)plVar13 + 0x34) = *(undefined4 *)((long)plVar7 + 0x2c);\n      if (puVar2 != (undefined8 *)0x0) {\n        *puVar2 = plVar13;\n      }\n      FUN_0010c4d3();\n      uVar3 = FUN_0012ef67(plVar13);\n      *(undefined4 *)((long)plVar12 + (long)iVar9 * 4 + 0x28) = uVar3;\n      iVar14 = iVar9;\n      if ((iVar9 < 2) && (lVar6 = plVar12[(long)iVar9 + 8], lVar6 != 0)) {\n        lVar8 = (long)(iVar9 + 1);\n        do {\n          iVar14 = (int)lVar8;\n          plVar12[lVar8 + 6] = lVar6;\n          plVar12[lVar8 + 1] = plVar12[lVar8 + 2];\n          *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28) =\n               *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x2c);\n          if (1 < iVar14) break;\n          lVar6 = plVar12[lVar8 + 8];\n          lVar8 = lVar8 + 1;\n        } while (lVar6 != 0);\n      }\n      plVar12[(long)iVar14 + 7] = 0;\n      plVar12[(long)iVar14 + 2] = 0;\n      *(undefined4 *)((long)plVar12 + (long)(iVar14 + 1) * 4 + 0x28) = 0;\n      if (plVar12[7] == 0) {\n        *param_1 = plVar13;\n        *plVar13 = 0;\n        FUN_0010c4d3(plVar12);\n      }\n      param_2 = *(int *)((long)plVar13 + 0x2c) + (int)plVar13[5] + 1;\n    }\n    else {\n      do {\n        plVar13 = plVar5;\n        plVar5 = (long *)plVar13[1];\n      } while (plVar5 != (long *)0x0);\n      plVar12[(long)iVar9 + 7] = plVar13[7];\n      param_2 = 0;\n      plVar13 = plVar7;\n    }" if (parenthesized_expression "(plVar7[8] == 0)" ( (binary_expression "plVar7[8] == 0" (subscript_expression "plVar7[8]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      plVar13[8] = plVar12[(long)iVar9 + 7];\n      puVar2 = (undefined8 *)plVar7[1];\n      plVar13[3] = (long)puVar2;\n      *(int *)(plVar13 + 6) = (int)plVar7[5];\n      if (puVar2 != (undefined8 *)0x0) {\n        *puVar2 = plVar13;\n      }\n      plVar13[9] = plVar7[7];\n      puVar2 = (undefined8 *)plVar7[2];\n      plVar13[4] = (long)puVar2;\n      *(undefined4 *)((long)plVar13 + 0x34) = *(undefined4 *)((long)plVar7 + 0x2c);\n      if (puVar2 != (undefined8 *)0x0) {\n        *puVar2 = plVar13;\n      }\n      FUN_0010c4d3();\n      uVar3 = FUN_0012ef67(plVar13);\n      *(undefined4 *)((long)plVar12 + (long)iVar9 * 4 + 0x28) = uVar3;\n      iVar14 = iVar9;\n      if ((iVar9 < 2) && (lVar6 = plVar12[(long)iVar9 + 8], lVar6 != 0)) {\n        lVar8 = (long)(iVar9 + 1);\n        do {\n          iVar14 = (int)lVar8;\n          plVar12[lVar8 + 6] = lVar6;\n          plVar12[lVar8 + 1] = plVar12[lVar8 + 2];\n          *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28) =\n               *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x2c);\n          if (1 < iVar14) break;\n          lVar6 = plVar12[lVar8 + 8];\n          lVar8 = lVar8 + 1;\n        } while (lVar6 != 0);\n      }\n      plVar12[(long)iVar14 + 7] = 0;\n      plVar12[(long)iVar14 + 2] = 0;\n      *(undefined4 *)((long)plVar12 + (long)(iVar14 + 1) * 4 + 0x28) = 0;\n      if (plVar12[7] == 0) {\n        *param_1 = plVar13;\n        *plVar13 = 0;\n        FUN_0010c4d3(plVar12);\n      }\n      param_2 = *(int *)((long)plVar13 + 0x2c) + (int)plVar13[5] + 1;\n    }" { (expression_statement "plVar13[8] = plVar12[(long)iVar9 + 7];" (assignment_expression "plVar13[8] = plVar12[(long)iVar9 + 7]" (subscript_expression "plVar13[8]" identifier [ number_literal ]) = (subscript_expression "plVar12[(long)iVar9 + 7]" identifier [ (binary_expression "(long)iVar9 + 7" (cast_expression "(long)iVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ])) ;) (expression_statement "puVar2 = (undefined8 *)plVar7[1];" (assignment_expression "puVar2 = (undefined8 *)plVar7[1]" identifier = (cast_expression "(undefined8 *)plVar7[1]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar7[1]" identifier [ number_literal ]))) ;) (expression_statement "plVar13[3] = (long)puVar2;" (assignment_expression "plVar13[3] = (long)puVar2" (subscript_expression "plVar13[3]" identifier [ number_literal ]) = (cast_expression "(long)puVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "*(int *)(plVar13 + 6) = (int)plVar7[5];" (assignment_expression "*(int *)(plVar13 + 6) = (int)plVar7[5]" (pointer_expression "*(int *)(plVar13 + 6)" * (cast_expression "(int *)(plVar13 + 6)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar13 + 6)" ( (binary_expression "plVar13 + 6" identifier + number_literal) )))) = (cast_expression "(int)plVar7[5]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "plVar7[5]" identifier [ number_literal ]))) ;) (if_statement "if (puVar2 != (undefined8 *)0x0) {\n        *puVar2 = plVar13;\n      }" if (parenthesized_expression "(puVar2 != (undefined8 *)0x0)" ( (binary_expression "puVar2 != (undefined8 *)0x0" identifier != (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        *puVar2 = plVar13;\n      }" { (expression_statement "*puVar2 = plVar13;" (assignment_expression "*puVar2 = plVar13" (pointer_expression "*puVar2" * identifier) = identifier) ;) })) (expression_statement "plVar13[9] = plVar7[7];" (assignment_expression "plVar13[9] = plVar7[7]" (subscript_expression "plVar13[9]" identifier [ number_literal ]) = (subscript_expression "plVar7[7]" identifier [ number_literal ])) ;) (expression_statement "puVar2 = (undefined8 *)plVar7[2];" (assignment_expression "puVar2 = (undefined8 *)plVar7[2]" identifier = (cast_expression "(undefined8 *)plVar7[2]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar7[2]" identifier [ number_literal ]))) ;) (expression_statement "plVar13[4] = (long)puVar2;" (assignment_expression "plVar13[4] = (long)puVar2" (subscript_expression "plVar13[4]" identifier [ number_literal ]) = (cast_expression "(long)puVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "*(undefined4 *)((long)plVar13 + 0x34) = *(undefined4 *)((long)plVar7 + 0x2c);" (assignment_expression "*(undefined4 *)((long)plVar13 + 0x34) = *(undefined4 *)((long)plVar7 + 0x2c)" (pointer_expression "*(undefined4 *)((long)plVar13 + 0x34)" * (cast_expression "(undefined4 *)((long)plVar13 + 0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar13 + 0x34)" ( (binary_expression "(long)plVar13 + 0x34" (cast_expression "(long)plVar13" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (pointer_expression "*(undefined4 *)((long)plVar7 + 0x2c)" * (cast_expression "(undefined4 *)((long)plVar7 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar7 + 0x2c)" ( (binary_expression "(long)plVar7 + 0x2c" (cast_expression "(long)plVar7" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (if_statement "if (puVar2 != (undefined8 *)0x0) {\n        *puVar2 = plVar13;\n      }" if (parenthesized_expression "(puVar2 != (undefined8 *)0x0)" ( (binary_expression "puVar2 != (undefined8 *)0x0" identifier != (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        *puVar2 = plVar13;\n      }" { (expression_statement "*puVar2 = plVar13;" (assignment_expression "*puVar2 = plVar13" (pointer_expression "*puVar2" * identifier) = identifier) ;) })) (expression_statement "FUN_0010c4d3();" (call_expression "FUN_0010c4d3()" identifier (argument_list "()" ( ))) ;) (expression_statement "uVar3 = FUN_0012ef67(plVar13);" (assignment_expression "uVar3 = FUN_0012ef67(plVar13)" identifier = (call_expression "FUN_0012ef67(plVar13)" identifier (argument_list "(plVar13)" ( identifier )))) ;) (expression_statement "*(undefined4 *)((long)plVar12 + (long)iVar9 * 4 + 0x28) = uVar3;" (assignment_expression "*(undefined4 *)((long)plVar12 + (long)iVar9 * 4 + 0x28) = uVar3" (pointer_expression "*(undefined4 *)((long)plVar12 + (long)iVar9 * 4 + 0x28)" * (cast_expression "(undefined4 *)((long)plVar12 + (long)iVar9 * 4 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar12 + (long)iVar9 * 4 + 0x28)" ( (binary_expression "(long)plVar12 + (long)iVar9 * 4 + 0x28" (binary_expression "(long)plVar12 + (long)iVar9 * 4" (cast_expression "(long)plVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "(long)iVar9 * 4" (cast_expression "(long)iVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal)) + number_literal) )))) = identifier) ;) (expression_statement "iVar14 = iVar9;" (assignment_expression "iVar14 = iVar9" identifier = identifier) ;) (if_statement "if ((iVar9 < 2) && (lVar6 = plVar12[(long)iVar9 + 8], lVar6 != 0)) {\n        lVar8 = (long)(iVar9 + 1);\n        do {\n          iVar14 = (int)lVar8;\n          plVar12[lVar8 + 6] = lVar6;\n          plVar12[lVar8 + 1] = plVar12[lVar8 + 2];\n          *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28) =\n               *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x2c);\n          if (1 < iVar14) break;\n          lVar6 = plVar12[lVar8 + 8];\n          lVar8 = lVar8 + 1;\n        } while (lVar6 != 0);\n      }" if (parenthesized_expression "((iVar9 < 2) && (lVar6 = plVar12[(long)iVar9 + 8], lVar6 != 0))" ( (binary_expression "(iVar9 < 2) && (lVar6 = plVar12[(long)iVar9 + 8], lVar6 != 0)" (parenthesized_expression "(iVar9 < 2)" ( (binary_expression "iVar9 < 2" identifier < number_literal) )) && (parenthesized_expression "(lVar6 = plVar12[(long)iVar9 + 8], lVar6 != 0)" ( (comma_expression "lVar6 = plVar12[(long)iVar9 + 8], lVar6 != 0" (assignment_expression "lVar6 = plVar12[(long)iVar9 + 8]" identifier = (subscript_expression "plVar12[(long)iVar9 + 8]" identifier [ (binary_expression "(long)iVar9 + 8" (cast_expression "(long)iVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ])) , (binary_expression "lVar6 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n        lVar8 = (long)(iVar9 + 1);\n        do {\n          iVar14 = (int)lVar8;\n          plVar12[lVar8 + 6] = lVar6;\n          plVar12[lVar8 + 1] = plVar12[lVar8 + 2];\n          *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28) =\n               *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x2c);\n          if (1 < iVar14) break;\n          lVar6 = plVar12[lVar8 + 8];\n          lVar8 = lVar8 + 1;\n        } while (lVar6 != 0);\n      }" { (expression_statement "lVar8 = (long)(iVar9 + 1);" (assignment_expression "lVar8 = (long)(iVar9 + 1)" identifier = (cast_expression "(long)(iVar9 + 1)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(iVar9 + 1)" ( (binary_expression "iVar9 + 1" identifier + number_literal) )))) ;) (do_statement "do {\n          iVar14 = (int)lVar8;\n          plVar12[lVar8 + 6] = lVar6;\n          plVar12[lVar8 + 1] = plVar12[lVar8 + 2];\n          *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28) =\n               *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x2c);\n          if (1 < iVar14) break;\n          lVar6 = plVar12[lVar8 + 8];\n          lVar8 = lVar8 + 1;\n        } while (lVar6 != 0);" do (compound_statement "{\n          iVar14 = (int)lVar8;\n          plVar12[lVar8 + 6] = lVar6;\n          plVar12[lVar8 + 1] = plVar12[lVar8 + 2];\n          *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28) =\n               *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x2c);\n          if (1 < iVar14) break;\n          lVar6 = plVar12[lVar8 + 8];\n          lVar8 = lVar8 + 1;\n        }" { (expression_statement "iVar14 = (int)lVar8;" (assignment_expression "iVar14 = (int)lVar8" identifier = (cast_expression "(int)lVar8" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "plVar12[lVar8 + 6] = lVar6;" (assignment_expression "plVar12[lVar8 + 6] = lVar6" (subscript_expression "plVar12[lVar8 + 6]" identifier [ (binary_expression "lVar8 + 6" identifier + number_literal) ]) = identifier) ;) (expression_statement "plVar12[lVar8 + 1] = plVar12[lVar8 + 2];" (assignment_expression "plVar12[lVar8 + 1] = plVar12[lVar8 + 2]" (subscript_expression "plVar12[lVar8 + 1]" identifier [ (binary_expression "lVar8 + 1" identifier + number_literal) ]) = (subscript_expression "plVar12[lVar8 + 2]" identifier [ (binary_expression "lVar8 + 2" identifier + number_literal) ])) ;) (expression_statement "*(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28) =\n               *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x2c);" (assignment_expression "*(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28) =\n               *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x2c)" (pointer_expression "*(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28)" * (cast_expression "(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar12 + lVar8 * 4 + 0x28)" ( (binary_expression "(long)plVar12 + lVar8 * 4 + 0x28" (binary_expression "(long)plVar12 + lVar8 * 4" (cast_expression "(long)plVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "lVar8 * 4" identifier * number_literal)) + number_literal) )))) = (pointer_expression "*(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x2c)" * (cast_expression "(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar12 + lVar8 * 4 + 0x2c)" ( (binary_expression "(long)plVar12 + lVar8 * 4 + 0x2c" (binary_expression "(long)plVar12 + lVar8 * 4" (cast_expression "(long)plVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "lVar8 * 4" identifier * number_literal)) + number_literal) ))))) ;) (if_statement "if (1 < iVar14) break;" if (parenthesized_expression "(1 < iVar14)" ( (binary_expression "1 < iVar14" number_literal < identifier) )) (break_statement "break;" break ;)) (expression_statement "lVar6 = plVar12[lVar8 + 8];" (assignment_expression "lVar6 = plVar12[lVar8 + 8]" identifier = (subscript_expression "plVar12[lVar8 + 8]" identifier [ (binary_expression "lVar8 + 8" identifier + number_literal) ])) ;) (expression_statement "lVar8 = lVar8 + 1;" (assignment_expression "lVar8 = lVar8 + 1" identifier = (binary_expression "lVar8 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar6 != 0)" ( (binary_expression "lVar6 != 0" identifier != number_literal) )) ;) })) (expression_statement "plVar12[(long)iVar14 + 7] = 0;" (assignment_expression "plVar12[(long)iVar14 + 7] = 0" (subscript_expression "plVar12[(long)iVar14 + 7]" identifier [ (binary_expression "(long)iVar14 + 7" (cast_expression "(long)iVar14" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ]) = number_literal) ;) (expression_statement "plVar12[(long)iVar14 + 2] = 0;" (assignment_expression "plVar12[(long)iVar14 + 2] = 0" (subscript_expression "plVar12[(long)iVar14 + 2]" identifier [ (binary_expression "(long)iVar14 + 2" (cast_expression "(long)iVar14" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ]) = number_literal) ;) (expression_statement "*(undefined4 *)((long)plVar12 + (long)(iVar14 + 1) * 4 + 0x28) = 0;" (assignment_expression "*(undefined4 *)((long)plVar12 + (long)(iVar14 + 1) * 4 + 0x28) = 0" (pointer_expression "*(undefined4 *)((long)plVar12 + (long)(iVar14 + 1) * 4 + 0x28)" * (cast_expression "(undefined4 *)((long)plVar12 + (long)(iVar14 + 1) * 4 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar12 + (long)(iVar14 + 1) * 4 + 0x28)" ( (binary_expression "(long)plVar12 + (long)(iVar14 + 1) * 4 + 0x28" (binary_expression "(long)plVar12 + (long)(iVar14 + 1) * 4" (cast_expression "(long)plVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "(long)(iVar14 + 1) * 4" (cast_expression "(long)(iVar14 + 1)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(iVar14 + 1)" ( (binary_expression "iVar14 + 1" identifier + number_literal) ))) * number_literal)) + number_literal) )))) = number_literal) ;) (if_statement "if (plVar12[7] == 0) {\n        *param_1 = plVar13;\n        *plVar13 = 0;\n        FUN_0010c4d3(plVar12);\n      }" if (parenthesized_expression "(plVar12[7] == 0)" ( (binary_expression "plVar12[7] == 0" (subscript_expression "plVar12[7]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n        *param_1 = plVar13;\n        *plVar13 = 0;\n        FUN_0010c4d3(plVar12);\n      }" { (expression_statement "*param_1 = plVar13;" (assignment_expression "*param_1 = plVar13" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "*plVar13 = 0;" (assignment_expression "*plVar13 = 0" (pointer_expression "*plVar13" * identifier) = number_literal) ;) (expression_statement "FUN_0010c4d3(plVar12);" (call_expression "FUN_0010c4d3(plVar12)" identifier (argument_list "(plVar12)" ( identifier ))) ;) })) (expression_statement "param_2 = *(int *)((long)plVar13 + 0x2c) + (int)plVar13[5] + 1;" (assignment_expression "param_2 = *(int *)((long)plVar13 + 0x2c) + (int)plVar13[5] + 1" identifier = (binary_expression "*(int *)((long)plVar13 + 0x2c) + (int)plVar13[5] + 1" (binary_expression "*(int *)((long)plVar13 + 0x2c) + (int)plVar13[5]" (pointer_expression "*(int *)((long)plVar13 + 0x2c)" * (cast_expression "(int *)((long)plVar13 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar13 + 0x2c)" ( (binary_expression "(long)plVar13 + 0x2c" (cast_expression "(long)plVar13" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) + (cast_expression "(int)plVar13[5]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "plVar13[5]" identifier [ number_literal ]))) + number_literal)) ;) }) (else_clause "else {\n      do {\n        plVar13 = plVar5;\n        plVar5 = (long *)plVar13[1];\n      } while (plVar5 != (long *)0x0);\n      plVar12[(long)iVar9 + 7] = plVar13[7];\n      param_2 = 0;\n      plVar13 = plVar7;\n    }" else (compound_statement "{\n      do {\n        plVar13 = plVar5;\n        plVar5 = (long *)plVar13[1];\n      } while (plVar5 != (long *)0x0);\n      plVar12[(long)iVar9 + 7] = plVar13[7];\n      param_2 = 0;\n      plVar13 = plVar7;\n    }" { (do_statement "do {\n        plVar13 = plVar5;\n        plVar5 = (long *)plVar13[1];\n      } while (plVar5 != (long *)0x0);" do (compound_statement "{\n        plVar13 = plVar5;\n        plVar5 = (long *)plVar13[1];\n      }" { (expression_statement "plVar13 = plVar5;" (assignment_expression "plVar13 = plVar5" identifier = identifier) ;) (expression_statement "plVar5 = (long *)plVar13[1];" (assignment_expression "plVar5 = (long *)plVar13[1]" identifier = (cast_expression "(long *)plVar13[1]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar13[1]" identifier [ number_literal ]))) ;) }) while (parenthesized_expression "(plVar5 != (long *)0x0)" ( (binary_expression "plVar5 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "plVar12[(long)iVar9 + 7] = plVar13[7];" (assignment_expression "plVar12[(long)iVar9 + 7] = plVar13[7]" (subscript_expression "plVar12[(long)iVar9 + 7]" identifier [ (binary_expression "(long)iVar9 + 7" (cast_expression "(long)iVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ]) = (subscript_expression "plVar13[7]" identifier [ number_literal ])) ;) (expression_statement "param_2 = 0;" (assignment_expression "param_2 = 0" identifier = number_literal) ;) (expression_statement "plVar13 = plVar7;" (assignment_expression "plVar13 = plVar7" identifier = identifier) ;) }))) }) (else_clause "else {\n    while (plVar5 = plVar7, (long *)plVar5[1] != (long *)0x0) {\n      plVar7 = (long *)plVar5[4];\n      if ((((long *)plVar5[4] == (long *)0x0) &&\n          (plVar7 = (long *)plVar5[3], (long *)plVar5[3] == (long *)0x0)) &&\n         (plVar7 = (long *)plVar5[2], (long *)plVar5[2] == (long *)0x0)) {\n        plVar7 = (long *)plVar5[1];\n      }\n    }\n    lVar6 = plVar5[9];\n    if ((lVar6 == 0) && (lVar6 = plVar5[8], lVar6 == 0)) {\n      lVar6 = plVar5[7];\n    }\n    plVar12[(long)iVar9 + 7] = lVar6;\n    param_2 = *(int *)((long)plVar12 + (long)iVar9 * 4 + 0x28) + -1;\n  }" else (compound_statement "{\n    while (plVar5 = plVar7, (long *)plVar5[1] != (long *)0x0) {\n      plVar7 = (long *)plVar5[4];\n      if ((((long *)plVar5[4] == (long *)0x0) &&\n          (plVar7 = (long *)plVar5[3], (long *)plVar5[3] == (long *)0x0)) &&\n         (plVar7 = (long *)plVar5[2], (long *)plVar5[2] == (long *)0x0)) {\n        plVar7 = (long *)plVar5[1];\n      }\n    }\n    lVar6 = plVar5[9];\n    if ((lVar6 == 0) && (lVar6 = plVar5[8], lVar6 == 0)) {\n      lVar6 = plVar5[7];\n    }\n    plVar12[(long)iVar9 + 7] = lVar6;\n    param_2 = *(int *)((long)plVar12 + (long)iVar9 * 4 + 0x28) + -1;\n  }" { (while_statement "while (plVar5 = plVar7, (long *)plVar5[1] != (long *)0x0) {\n      plVar7 = (long *)plVar5[4];\n      if ((((long *)plVar5[4] == (long *)0x0) &&\n          (plVar7 = (long *)plVar5[3], (long *)plVar5[3] == (long *)0x0)) &&\n         (plVar7 = (long *)plVar5[2], (long *)plVar5[2] == (long *)0x0)) {\n        plVar7 = (long *)plVar5[1];\n      }\n    }" while (parenthesized_expression "(plVar5 = plVar7, (long *)plVar5[1] != (long *)0x0)" ( (comma_expression "plVar5 = plVar7, (long *)plVar5[1] != (long *)0x0" (assignment_expression "plVar5 = plVar7" identifier = identifier) , (binary_expression "(long *)plVar5[1] != (long *)0x0" (cast_expression "(long *)plVar5[1]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar5[1]" identifier [ number_literal ])) != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal))) )) (compound_statement "{\n      plVar7 = (long *)plVar5[4];\n      if ((((long *)plVar5[4] == (long *)0x0) &&\n          (plVar7 = (long *)plVar5[3], (long *)plVar5[3] == (long *)0x0)) &&\n         (plVar7 = (long *)plVar5[2], (long *)plVar5[2] == (long *)0x0)) {\n        plVar7 = (long *)plVar5[1];\n      }\n    }" { (expression_statement "plVar7 = (long *)plVar5[4];" (assignment_expression "plVar7 = (long *)plVar5[4]" identifier = (cast_expression "(long *)plVar5[4]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar5[4]" identifier [ number_literal ]))) ;) (if_statement "if ((((long *)plVar5[4] == (long *)0x0) &&\n          (plVar7 = (long *)plVar5[3], (long *)plVar5[3] == (long *)0x0)) &&\n         (plVar7 = (long *)plVar5[2], (long *)plVar5[2] == (long *)0x0)) {\n        plVar7 = (long *)plVar5[1];\n      }" if (parenthesized_expression "((((long *)plVar5[4] == (long *)0x0) &&\n          (plVar7 = (long *)plVar5[3], (long *)plVar5[3] == (long *)0x0)) &&\n         (plVar7 = (long *)plVar5[2], (long *)plVar5[2] == (long *)0x0))" ( (binary_expression "(((long *)plVar5[4] == (long *)0x0) &&\n          (plVar7 = (long *)plVar5[3], (long *)plVar5[3] == (long *)0x0)) &&\n         (plVar7 = (long *)plVar5[2], (long *)plVar5[2] == (long *)0x0)" (parenthesized_expression "(((long *)plVar5[4] == (long *)0x0) &&\n          (plVar7 = (long *)plVar5[3], (long *)plVar5[3] == (long *)0x0))" ( (binary_expression "((long *)plVar5[4] == (long *)0x0) &&\n          (plVar7 = (long *)plVar5[3], (long *)plVar5[3] == (long *)0x0)" (parenthesized_expression "((long *)plVar5[4] == (long *)0x0)" ( (binary_expression "(long *)plVar5[4] == (long *)0x0" (cast_expression "(long *)plVar5[4]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar5[4]" identifier [ number_literal ])) == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(plVar7 = (long *)plVar5[3], (long *)plVar5[3] == (long *)0x0)" ( (comma_expression "plVar7 = (long *)plVar5[3], (long *)plVar5[3] == (long *)0x0" (assignment_expression "plVar7 = (long *)plVar5[3]" identifier = (cast_expression "(long *)plVar5[3]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar5[3]" identifier [ number_literal ]))) , (binary_expression "(long *)plVar5[3] == (long *)0x0" (cast_expression "(long *)plVar5[3]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar5[3]" identifier [ number_literal ])) == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) && (parenthesized_expression "(plVar7 = (long *)plVar5[2], (long *)plVar5[2] == (long *)0x0)" ( (comma_expression "plVar7 = (long *)plVar5[2], (long *)plVar5[2] == (long *)0x0" (assignment_expression "plVar7 = (long *)plVar5[2]" identifier = (cast_expression "(long *)plVar5[2]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar5[2]" identifier [ number_literal ]))) , (binary_expression "(long *)plVar5[2] == (long *)0x0" (cast_expression "(long *)plVar5[2]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar5[2]" identifier [ number_literal ])) == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n        plVar7 = (long *)plVar5[1];\n      }" { (expression_statement "plVar7 = (long *)plVar5[1];" (assignment_expression "plVar7 = (long *)plVar5[1]" identifier = (cast_expression "(long *)plVar5[1]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar5[1]" identifier [ number_literal ]))) ;) })) })) (expression_statement "lVar6 = plVar5[9];" (assignment_expression "lVar6 = plVar5[9]" identifier = (subscript_expression "plVar5[9]" identifier [ number_literal ])) ;) (if_statement "if ((lVar6 == 0) && (lVar6 = plVar5[8], lVar6 == 0)) {\n      lVar6 = plVar5[7];\n    }" if (parenthesized_expression "((lVar6 == 0) && (lVar6 = plVar5[8], lVar6 == 0))" ( (binary_expression "(lVar6 == 0) && (lVar6 = plVar5[8], lVar6 == 0)" (parenthesized_expression "(lVar6 == 0)" ( (binary_expression "lVar6 == 0" identifier == number_literal) )) && (parenthesized_expression "(lVar6 = plVar5[8], lVar6 == 0)" ( (comma_expression "lVar6 = plVar5[8], lVar6 == 0" (assignment_expression "lVar6 = plVar5[8]" identifier = (subscript_expression "plVar5[8]" identifier [ number_literal ])) , (binary_expression "lVar6 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n      lVar6 = plVar5[7];\n    }" { (expression_statement "lVar6 = plVar5[7];" (assignment_expression "lVar6 = plVar5[7]" identifier = (subscript_expression "plVar5[7]" identifier [ number_literal ])) ;) })) (expression_statement "plVar12[(long)iVar9 + 7] = lVar6;" (assignment_expression "plVar12[(long)iVar9 + 7] = lVar6" (subscript_expression "plVar12[(long)iVar9 + 7]" identifier [ (binary_expression "(long)iVar9 + 7" (cast_expression "(long)iVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ]) = identifier) ;) (expression_statement "param_2 = *(int *)((long)plVar12 + (long)iVar9 * 4 + 0x28) + -1;" (assignment_expression "param_2 = *(int *)((long)plVar12 + (long)iVar9 * 4 + 0x28) + -1" identifier = (binary_expression "*(int *)((long)plVar12 + (long)iVar9 * 4 + 0x28) + -1" (pointer_expression "*(int *)((long)plVar12 + (long)iVar9 * 4 + 0x28)" * (cast_expression "(int *)((long)plVar12 + (long)iVar9 * 4 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar12 + (long)iVar9 * 4 + 0x28)" ( (binary_expression "(long)plVar12 + (long)iVar9 * 4 + 0x28" (binary_expression "(long)plVar12 + (long)iVar9 * 4" (cast_expression "(long)plVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "(long)iVar9 * 4" (cast_expression "(long)iVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal)) + number_literal) )))) + number_literal)) ;) }))) (goto_statement "goto LAB_0012f7e4;" goto statement_identifier ;) (labeled_statement "LAB_0012f7d1:\n  plVar13 = (long *)plVar12[1];" statement_identifier : (expression_statement "plVar13 = (long *)plVar12[1];" (assignment_expression "plVar13 = (long *)plVar12[1]" identifier = (cast_expression "(long *)plVar12[1]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar12[1]" identifier [ number_literal ]))) ;)) (if_statement "if (plVar13[8] == 0) {\n    lVar6 = plVar12[2];\n    local_50 = 0;\n    local_54 = 0;\n    plVar7 = plVar12;\n    if (lVar6 != 0) {\nLAB_0012fe3f:\n      if (*(long *)(lVar6 + 0x40) != 0) {\n        plVar13[8] = plVar7[7];\n        puVar2 = *(undefined8 **)(lVar6 + 8);\n        plVar13[3] = (long)puVar2;\n        *(undefined4 *)(plVar13 + 6) = *(undefined4 *)(lVar6 + 0x28);\n        if (puVar2 != (undefined8 *)0x0) {\n          *puVar2 = plVar13;\n        }\n        plVar7[7] = *(long *)(lVar6 + 0x38);\n        *(undefined8 *)(lVar6 + 8) = *(undefined8 *)(lVar6 + 0x10);\n        *(undefined4 *)(lVar6 + 0x28) = *(undefined4 *)(lVar6 + 0x2c);\n        lVar8 = *(long *)(lVar6 + 0x40);\n        if (lVar8 != 0) {\n          *(undefined8 *)(lVar6 + 0x10) = *(undefined8 *)(lVar6 + 0x18);\n          *(undefined4 *)(lVar6 + 0x2c) = *(undefined4 *)(lVar6 + 0x30);\n          *(long *)(lVar6 + 0x38) = lVar8;\n          if (*(long *)(lVar6 + 0x48) == 0) {\n            lVar8 = 1;\n          }\n          else {\n            *(undefined8 *)(lVar6 + 0x18) = *(undefined8 *)(lVar6 + 0x20);\n            *(undefined4 *)(lVar6 + 0x30) = *(undefined4 *)(lVar6 + 0x34);\n            *(long *)(lVar6 + 0x40) = *(long *)(lVar6 + 0x48);\n            lVar8 = 2;\n          }\n        }\n        lVar11 = lVar6 + (long)(int)lVar8 * 8;\n        *(undefined8 *)(lVar11 + 0x10) = 0;\n        *(undefined4 *)(lVar6 + 0x28 + (long)((int)lVar8 + 1) * 4) = 0;\n        *(undefined8 *)(lVar11 + 0x38) = 0;\n        uVar3 = FUN_0012ef67(plVar13);\n        *(undefined4 *)((long)plVar12 + local_50 * 4 + 0x28) = uVar3;\n        uVar3 = FUN_0012ef67(lVar6);\n        *(undefined4 *)((long)plVar12 + local_50 * 4 + 0x2c) = uVar3;\n        goto LAB_0012f7e4;\n      }\n      if (local_54 != 0) {\nLAB_0012f905:\n        local_54 = local_54 - 1;\n        param_2 = param_2 + 1 + *(int *)((long)plVar12 + (long)(int)local_54 * 4 + 0x28);\n      }\n    }\n    lVar6 = plVar12[(long)(int)local_54 + 1];\n    plVar13 = (long *)plVar12[(long)(int)local_54 + 2];\n    plVar13[4] = plVar13[2];\n    *(undefined4 *)((long)plVar13 + 0x34) = *(undefined4 *)((long)plVar13 + 0x2c);\n    plVar13[9] = plVar13[7];\n    plVar13[3] = plVar13[1];\n    *(int *)(plVar13 + 6) = (int)plVar13[5];\n    plVar13[8] = plVar12[(long)(int)local_54 + 7];\n    puVar2 = *(undefined8 **)(lVar6 + 0x10);\n    plVar13[2] = (long)puVar2;\n    *(undefined4 *)((long)plVar13 + 0x2c) = *(undefined4 *)(lVar6 + 0x2c);\n    if (puVar2 != (undefined8 *)0x0) {\n      *puVar2 = plVar13;\n    }\n    plVar13[7] = *(long *)(lVar6 + 0x38);\n    puVar2 = *(undefined8 **)(lVar6 + 8);\n    plVar13[1] = (long)puVar2;\n    *(undefined4 *)(plVar13 + 5) = *(undefined4 *)(lVar6 + 0x28);\n    if (puVar2 != (undefined8 *)0x0) {\n      *puVar2 = plVar13;\n    }\n    uVar3 = FUN_0012ef67(plVar13);\n    *(undefined4 *)((long)plVar12 + (long)(int)(local_54 + 1) * 4 + 0x28) = uVar3;\n    FUN_0010c4d3(lVar6);\n    if ((int)local_54 < 3) {\n      lVar6 = plVar12[(long)(int)local_54 + 2];\n      if (lVar6 != 0) {\n        lVar8 = (long)(int)(local_54 + 1);\n        do {\n          local_54 = (uint)lVar8;\n          plVar12[lVar8] = lVar6;\n          *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x24) =\n               *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28);\n          lVar6 = 0;\n          if ((int)(local_54 - 1) < 2) {\n            lVar6 = plVar12[lVar8 + 7];\n          }\n          plVar12[lVar8 + 6] = lVar6;\n          if (2 < (int)local_54) goto LAB_0012fd6d;\n          lVar6 = plVar12[lVar8 + 2];\n          lVar8 = lVar8 + 1;\n        } while (lVar6 != 0);\n      }\n      lVar6 = (long)(int)local_54;\n      plVar12[lVar6 + 1] = 0;\n      *(undefined4 *)((long)plVar12 + lVar6 * 4 + 0x28) = 0;\n      plVar12[lVar6 + 7] = 0;\n    }\n    else {\nLAB_0012fd6d:\n      plVar12[(long)(int)local_54 + 1] = 0;\n      *(undefined4 *)((long)plVar12 + (long)(int)local_54 * 4 + 0x28) = 0;\n    }\n    if (plVar12[7] == 0) {\n      *param_1 = plVar13;\n      *plVar13 = 0;\n      FUN_0010c4d3(plVar12);\n    }\n  }" if (parenthesized_expression "(plVar13[8] == 0)" ( (binary_expression "plVar13[8] == 0" (subscript_expression "plVar13[8]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n    lVar6 = plVar12[2];\n    local_50 = 0;\n    local_54 = 0;\n    plVar7 = plVar12;\n    if (lVar6 != 0) {\nLAB_0012fe3f:\n      if (*(long *)(lVar6 + 0x40) != 0) {\n        plVar13[8] = plVar7[7];\n        puVar2 = *(undefined8 **)(lVar6 + 8);\n        plVar13[3] = (long)puVar2;\n        *(undefined4 *)(plVar13 + 6) = *(undefined4 *)(lVar6 + 0x28);\n        if (puVar2 != (undefined8 *)0x0) {\n          *puVar2 = plVar13;\n        }\n        plVar7[7] = *(long *)(lVar6 + 0x38);\n        *(undefined8 *)(lVar6 + 8) = *(undefined8 *)(lVar6 + 0x10);\n        *(undefined4 *)(lVar6 + 0x28) = *(undefined4 *)(lVar6 + 0x2c);\n        lVar8 = *(long *)(lVar6 + 0x40);\n        if (lVar8 != 0) {\n          *(undefined8 *)(lVar6 + 0x10) = *(undefined8 *)(lVar6 + 0x18);\n          *(undefined4 *)(lVar6 + 0x2c) = *(undefined4 *)(lVar6 + 0x30);\n          *(long *)(lVar6 + 0x38) = lVar8;\n          if (*(long *)(lVar6 + 0x48) == 0) {\n            lVar8 = 1;\n          }\n          else {\n            *(undefined8 *)(lVar6 + 0x18) = *(undefined8 *)(lVar6 + 0x20);\n            *(undefined4 *)(lVar6 + 0x30) = *(undefined4 *)(lVar6 + 0x34);\n            *(long *)(lVar6 + 0x40) = *(long *)(lVar6 + 0x48);\n            lVar8 = 2;\n          }\n        }\n        lVar11 = lVar6 + (long)(int)lVar8 * 8;\n        *(undefined8 *)(lVar11 + 0x10) = 0;\n        *(undefined4 *)(lVar6 + 0x28 + (long)((int)lVar8 + 1) * 4) = 0;\n        *(undefined8 *)(lVar11 + 0x38) = 0;\n        uVar3 = FUN_0012ef67(plVar13);\n        *(undefined4 *)((long)plVar12 + local_50 * 4 + 0x28) = uVar3;\n        uVar3 = FUN_0012ef67(lVar6);\n        *(undefined4 *)((long)plVar12 + local_50 * 4 + 0x2c) = uVar3;\n        goto LAB_0012f7e4;\n      }\n      if (local_54 != 0) {\nLAB_0012f905:\n        local_54 = local_54 - 1;\n        param_2 = param_2 + 1 + *(int *)((long)plVar12 + (long)(int)local_54 * 4 + 0x28);\n      }\n    }\n    lVar6 = plVar12[(long)(int)local_54 + 1];\n    plVar13 = (long *)plVar12[(long)(int)local_54 + 2];\n    plVar13[4] = plVar13[2];\n    *(undefined4 *)((long)plVar13 + 0x34) = *(undefined4 *)((long)plVar13 + 0x2c);\n    plVar13[9] = plVar13[7];\n    plVar13[3] = plVar13[1];\n    *(int *)(plVar13 + 6) = (int)plVar13[5];\n    plVar13[8] = plVar12[(long)(int)local_54 + 7];\n    puVar2 = *(undefined8 **)(lVar6 + 0x10);\n    plVar13[2] = (long)puVar2;\n    *(undefined4 *)((long)plVar13 + 0x2c) = *(undefined4 *)(lVar6 + 0x2c);\n    if (puVar2 != (undefined8 *)0x0) {\n      *puVar2 = plVar13;\n    }\n    plVar13[7] = *(long *)(lVar6 + 0x38);\n    puVar2 = *(undefined8 **)(lVar6 + 8);\n    plVar13[1] = (long)puVar2;\n    *(undefined4 *)(plVar13 + 5) = *(undefined4 *)(lVar6 + 0x28);\n    if (puVar2 != (undefined8 *)0x0) {\n      *puVar2 = plVar13;\n    }\n    uVar3 = FUN_0012ef67(plVar13);\n    *(undefined4 *)((long)plVar12 + (long)(int)(local_54 + 1) * 4 + 0x28) = uVar3;\n    FUN_0010c4d3(lVar6);\n    if ((int)local_54 < 3) {\n      lVar6 = plVar12[(long)(int)local_54 + 2];\n      if (lVar6 != 0) {\n        lVar8 = (long)(int)(local_54 + 1);\n        do {\n          local_54 = (uint)lVar8;\n          plVar12[lVar8] = lVar6;\n          *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x24) =\n               *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28);\n          lVar6 = 0;\n          if ((int)(local_54 - 1) < 2) {\n            lVar6 = plVar12[lVar8 + 7];\n          }\n          plVar12[lVar8 + 6] = lVar6;\n          if (2 < (int)local_54) goto LAB_0012fd6d;\n          lVar6 = plVar12[lVar8 + 2];\n          lVar8 = lVar8 + 1;\n        } while (lVar6 != 0);\n      }\n      lVar6 = (long)(int)local_54;\n      plVar12[lVar6 + 1] = 0;\n      *(undefined4 *)((long)plVar12 + lVar6 * 4 + 0x28) = 0;\n      plVar12[lVar6 + 7] = 0;\n    }\n    else {\nLAB_0012fd6d:\n      plVar12[(long)(int)local_54 + 1] = 0;\n      *(undefined4 *)((long)plVar12 + (long)(int)local_54 * 4 + 0x28) = 0;\n    }\n    if (plVar12[7] == 0) {\n      *param_1 = plVar13;\n      *plVar13 = 0;\n      FUN_0010c4d3(plVar12);\n    }\n  }" { (expression_statement "lVar6 = plVar12[2];" (assignment_expression "lVar6 = plVar12[2]" identifier = (subscript_expression "plVar12[2]" identifier [ number_literal ])) ;) (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" identifier = number_literal) ;) (expression_statement "local_54 = 0;" (assignment_expression "local_54 = 0" identifier = number_literal) ;) (expression_statement "plVar7 = plVar12;" (assignment_expression "plVar7 = plVar12" identifier = identifier) ;) (if_statement "if (lVar6 != 0) {\nLAB_0012fe3f:\n      if (*(long *)(lVar6 + 0x40) != 0) {\n        plVar13[8] = plVar7[7];\n        puVar2 = *(undefined8 **)(lVar6 + 8);\n        plVar13[3] = (long)puVar2;\n        *(undefined4 *)(plVar13 + 6) = *(undefined4 *)(lVar6 + 0x28);\n        if (puVar2 != (undefined8 *)0x0) {\n          *puVar2 = plVar13;\n        }\n        plVar7[7] = *(long *)(lVar6 + 0x38);\n        *(undefined8 *)(lVar6 + 8) = *(undefined8 *)(lVar6 + 0x10);\n        *(undefined4 *)(lVar6 + 0x28) = *(undefined4 *)(lVar6 + 0x2c);\n        lVar8 = *(long *)(lVar6 + 0x40);\n        if (lVar8 != 0) {\n          *(undefined8 *)(lVar6 + 0x10) = *(undefined8 *)(lVar6 + 0x18);\n          *(undefined4 *)(lVar6 + 0x2c) = *(undefined4 *)(lVar6 + 0x30);\n          *(long *)(lVar6 + 0x38) = lVar8;\n          if (*(long *)(lVar6 + 0x48) == 0) {\n            lVar8 = 1;\n          }\n          else {\n            *(undefined8 *)(lVar6 + 0x18) = *(undefined8 *)(lVar6 + 0x20);\n            *(undefined4 *)(lVar6 + 0x30) = *(undefined4 *)(lVar6 + 0x34);\n            *(long *)(lVar6 + 0x40) = *(long *)(lVar6 + 0x48);\n            lVar8 = 2;\n          }\n        }\n        lVar11 = lVar6 + (long)(int)lVar8 * 8;\n        *(undefined8 *)(lVar11 + 0x10) = 0;\n        *(undefined4 *)(lVar6 + 0x28 + (long)((int)lVar8 + 1) * 4) = 0;\n        *(undefined8 *)(lVar11 + 0x38) = 0;\n        uVar3 = FUN_0012ef67(plVar13);\n        *(undefined4 *)((long)plVar12 + local_50 * 4 + 0x28) = uVar3;\n        uVar3 = FUN_0012ef67(lVar6);\n        *(undefined4 *)((long)plVar12 + local_50 * 4 + 0x2c) = uVar3;\n        goto LAB_0012f7e4;\n      }\n      if (local_54 != 0) {\nLAB_0012f905:\n        local_54 = local_54 - 1;\n        param_2 = param_2 + 1 + *(int *)((long)plVar12 + (long)(int)local_54 * 4 + 0x28);\n      }\n    }" if (parenthesized_expression "(lVar6 != 0)" ( (binary_expression "lVar6 != 0" identifier != number_literal) )) (compound_statement "{\nLAB_0012fe3f:\n      if (*(long *)(lVar6 + 0x40) != 0) {\n        plVar13[8] = plVar7[7];\n        puVar2 = *(undefined8 **)(lVar6 + 8);\n        plVar13[3] = (long)puVar2;\n        *(undefined4 *)(plVar13 + 6) = *(undefined4 *)(lVar6 + 0x28);\n        if (puVar2 != (undefined8 *)0x0) {\n          *puVar2 = plVar13;\n        }\n        plVar7[7] = *(long *)(lVar6 + 0x38);\n        *(undefined8 *)(lVar6 + 8) = *(undefined8 *)(lVar6 + 0x10);\n        *(undefined4 *)(lVar6 + 0x28) = *(undefined4 *)(lVar6 + 0x2c);\n        lVar8 = *(long *)(lVar6 + 0x40);\n        if (lVar8 != 0) {\n          *(undefined8 *)(lVar6 + 0x10) = *(undefined8 *)(lVar6 + 0x18);\n          *(undefined4 *)(lVar6 + 0x2c) = *(undefined4 *)(lVar6 + 0x30);\n          *(long *)(lVar6 + 0x38) = lVar8;\n          if (*(long *)(lVar6 + 0x48) == 0) {\n            lVar8 = 1;\n          }\n          else {\n            *(undefined8 *)(lVar6 + 0x18) = *(undefined8 *)(lVar6 + 0x20);\n            *(undefined4 *)(lVar6 + 0x30) = *(undefined4 *)(lVar6 + 0x34);\n            *(long *)(lVar6 + 0x40) = *(long *)(lVar6 + 0x48);\n            lVar8 = 2;\n          }\n        }\n        lVar11 = lVar6 + (long)(int)lVar8 * 8;\n        *(undefined8 *)(lVar11 + 0x10) = 0;\n        *(undefined4 *)(lVar6 + 0x28 + (long)((int)lVar8 + 1) * 4) = 0;\n        *(undefined8 *)(lVar11 + 0x38) = 0;\n        uVar3 = FUN_0012ef67(plVar13);\n        *(undefined4 *)((long)plVar12 + local_50 * 4 + 0x28) = uVar3;\n        uVar3 = FUN_0012ef67(lVar6);\n        *(undefined4 *)((long)plVar12 + local_50 * 4 + 0x2c) = uVar3;\n        goto LAB_0012f7e4;\n      }\n      if (local_54 != 0) {\nLAB_0012f905:\n        local_54 = local_54 - 1;\n        param_2 = param_2 + 1 + *(int *)((long)plVar12 + (long)(int)local_54 * 4 + 0x28);\n      }\n    }" { (labeled_statement "LAB_0012fe3f:\n      if (*(long *)(lVar6 + 0x40) != 0) {\n        plVar13[8] = plVar7[7];\n        puVar2 = *(undefined8 **)(lVar6 + 8);\n        plVar13[3] = (long)puVar2;\n        *(undefined4 *)(plVar13 + 6) = *(undefined4 *)(lVar6 + 0x28);\n        if (puVar2 != (undefined8 *)0x0) {\n          *puVar2 = plVar13;\n        }\n        plVar7[7] = *(long *)(lVar6 + 0x38);\n        *(undefined8 *)(lVar6 + 8) = *(undefined8 *)(lVar6 + 0x10);\n        *(undefined4 *)(lVar6 + 0x28) = *(undefined4 *)(lVar6 + 0x2c);\n        lVar8 = *(long *)(lVar6 + 0x40);\n        if (lVar8 != 0) {\n          *(undefined8 *)(lVar6 + 0x10) = *(undefined8 *)(lVar6 + 0x18);\n          *(undefined4 *)(lVar6 + 0x2c) = *(undefined4 *)(lVar6 + 0x30);\n          *(long *)(lVar6 + 0x38) = lVar8;\n          if (*(long *)(lVar6 + 0x48) == 0) {\n            lVar8 = 1;\n          }\n          else {\n            *(undefined8 *)(lVar6 + 0x18) = *(undefined8 *)(lVar6 + 0x20);\n            *(undefined4 *)(lVar6 + 0x30) = *(undefined4 *)(lVar6 + 0x34);\n            *(long *)(lVar6 + 0x40) = *(long *)(lVar6 + 0x48);\n            lVar8 = 2;\n          }\n        }\n        lVar11 = lVar6 + (long)(int)lVar8 * 8;\n        *(undefined8 *)(lVar11 + 0x10) = 0;\n        *(undefined4 *)(lVar6 + 0x28 + (long)((int)lVar8 + 1) * 4) = 0;\n        *(undefined8 *)(lVar11 + 0x38) = 0;\n        uVar3 = FUN_0012ef67(plVar13);\n        *(undefined4 *)((long)plVar12 + local_50 * 4 + 0x28) = uVar3;\n        uVar3 = FUN_0012ef67(lVar6);\n        *(undefined4 *)((long)plVar12 + local_50 * 4 + 0x2c) = uVar3;\n        goto LAB_0012f7e4;\n      }" statement_identifier : (if_statement "if (*(long *)(lVar6 + 0x40) != 0) {\n        plVar13[8] = plVar7[7];\n        puVar2 = *(undefined8 **)(lVar6 + 8);\n        plVar13[3] = (long)puVar2;\n        *(undefined4 *)(plVar13 + 6) = *(undefined4 *)(lVar6 + 0x28);\n        if (puVar2 != (undefined8 *)0x0) {\n          *puVar2 = plVar13;\n        }\n        plVar7[7] = *(long *)(lVar6 + 0x38);\n        *(undefined8 *)(lVar6 + 8) = *(undefined8 *)(lVar6 + 0x10);\n        *(undefined4 *)(lVar6 + 0x28) = *(undefined4 *)(lVar6 + 0x2c);\n        lVar8 = *(long *)(lVar6 + 0x40);\n        if (lVar8 != 0) {\n          *(undefined8 *)(lVar6 + 0x10) = *(undefined8 *)(lVar6 + 0x18);\n          *(undefined4 *)(lVar6 + 0x2c) = *(undefined4 *)(lVar6 + 0x30);\n          *(long *)(lVar6 + 0x38) = lVar8;\n          if (*(long *)(lVar6 + 0x48) == 0) {\n            lVar8 = 1;\n          }\n          else {\n            *(undefined8 *)(lVar6 + 0x18) = *(undefined8 *)(lVar6 + 0x20);\n            *(undefined4 *)(lVar6 + 0x30) = *(undefined4 *)(lVar6 + 0x34);\n            *(long *)(lVar6 + 0x40) = *(long *)(lVar6 + 0x48);\n            lVar8 = 2;\n          }\n        }\n        lVar11 = lVar6 + (long)(int)lVar8 * 8;\n        *(undefined8 *)(lVar11 + 0x10) = 0;\n        *(undefined4 *)(lVar6 + 0x28 + (long)((int)lVar8 + 1) * 4) = 0;\n        *(undefined8 *)(lVar11 + 0x38) = 0;\n        uVar3 = FUN_0012ef67(plVar13);\n        *(undefined4 *)((long)plVar12 + local_50 * 4 + 0x28) = uVar3;\n        uVar3 = FUN_0012ef67(lVar6);\n        *(undefined4 *)((long)plVar12 + local_50 * 4 + 0x2c) = uVar3;\n        goto LAB_0012f7e4;\n      }" if (parenthesized_expression "(*(long *)(lVar6 + 0x40) != 0)" ( (binary_expression "*(long *)(lVar6 + 0x40) != 0" (pointer_expression "*(long *)(lVar6 + 0x40)" * (cast_expression "(long *)(lVar6 + 0x40)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x40)" ( (binary_expression "lVar6 + 0x40" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n        plVar13[8] = plVar7[7];\n        puVar2 = *(undefined8 **)(lVar6 + 8);\n        plVar13[3] = (long)puVar2;\n        *(undefined4 *)(plVar13 + 6) = *(undefined4 *)(lVar6 + 0x28);\n        if (puVar2 != (undefined8 *)0x0) {\n          *puVar2 = plVar13;\n        }\n        plVar7[7] = *(long *)(lVar6 + 0x38);\n        *(undefined8 *)(lVar6 + 8) = *(undefined8 *)(lVar6 + 0x10);\n        *(undefined4 *)(lVar6 + 0x28) = *(undefined4 *)(lVar6 + 0x2c);\n        lVar8 = *(long *)(lVar6 + 0x40);\n        if (lVar8 != 0) {\n          *(undefined8 *)(lVar6 + 0x10) = *(undefined8 *)(lVar6 + 0x18);\n          *(undefined4 *)(lVar6 + 0x2c) = *(undefined4 *)(lVar6 + 0x30);\n          *(long *)(lVar6 + 0x38) = lVar8;\n          if (*(long *)(lVar6 + 0x48) == 0) {\n            lVar8 = 1;\n          }\n          else {\n            *(undefined8 *)(lVar6 + 0x18) = *(undefined8 *)(lVar6 + 0x20);\n            *(undefined4 *)(lVar6 + 0x30) = *(undefined4 *)(lVar6 + 0x34);\n            *(long *)(lVar6 + 0x40) = *(long *)(lVar6 + 0x48);\n            lVar8 = 2;\n          }\n        }\n        lVar11 = lVar6 + (long)(int)lVar8 * 8;\n        *(undefined8 *)(lVar11 + 0x10) = 0;\n        *(undefined4 *)(lVar6 + 0x28 + (long)((int)lVar8 + 1) * 4) = 0;\n        *(undefined8 *)(lVar11 + 0x38) = 0;\n        uVar3 = FUN_0012ef67(plVar13);\n        *(undefined4 *)((long)plVar12 + local_50 * 4 + 0x28) = uVar3;\n        uVar3 = FUN_0012ef67(lVar6);\n        *(undefined4 *)((long)plVar12 + local_50 * 4 + 0x2c) = uVar3;\n        goto LAB_0012f7e4;\n      }" { (expression_statement "plVar13[8] = plVar7[7];" (assignment_expression "plVar13[8] = plVar7[7]" (subscript_expression "plVar13[8]" identifier [ number_literal ]) = (subscript_expression "plVar7[7]" identifier [ number_literal ])) ;) (expression_statement "puVar2 = *(undefined8 **)(lVar6 + 8);" (assignment_expression "puVar2 = *(undefined8 **)(lVar6 + 8)" identifier = (pointer_expression "*(undefined8 **)(lVar6 + 8)" * (cast_expression "(undefined8 **)(lVar6 + 8)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar6 + 8)" ( (binary_expression "lVar6 + 8" identifier + number_literal) ))))) ;) (expression_statement "plVar13[3] = (long)puVar2;" (assignment_expression "plVar13[3] = (long)puVar2" (subscript_expression "plVar13[3]" identifier [ number_literal ]) = (cast_expression "(long)puVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "*(undefined4 *)(plVar13 + 6) = *(undefined4 *)(lVar6 + 0x28);" (assignment_expression "*(undefined4 *)(plVar13 + 6) = *(undefined4 *)(lVar6 + 0x28)" (pointer_expression "*(undefined4 *)(plVar13 + 6)" * (cast_expression "(undefined4 *)(plVar13 + 6)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar13 + 6)" ( (binary_expression "plVar13 + 6" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(lVar6 + 0x28)" * (cast_expression "(undefined4 *)(lVar6 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x28)" ( (binary_expression "lVar6 + 0x28" identifier + number_literal) ))))) ;) (if_statement "if (puVar2 != (undefined8 *)0x0) {\n          *puVar2 = plVar13;\n        }" if (parenthesized_expression "(puVar2 != (undefined8 *)0x0)" ( (binary_expression "puVar2 != (undefined8 *)0x0" identifier != (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          *puVar2 = plVar13;\n        }" { (expression_statement "*puVar2 = plVar13;" (assignment_expression "*puVar2 = plVar13" (pointer_expression "*puVar2" * identifier) = identifier) ;) })) (expression_statement "plVar7[7] = *(long *)(lVar6 + 0x38);" (assignment_expression "plVar7[7] = *(long *)(lVar6 + 0x38)" (subscript_expression "plVar7[7]" identifier [ number_literal ]) = (pointer_expression "*(long *)(lVar6 + 0x38)" * (cast_expression "(long *)(lVar6 + 0x38)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x38)" ( (binary_expression "lVar6 + 0x38" identifier + number_literal) ))))) ;) (expression_statement "*(undefined8 *)(lVar6 + 8) = *(undefined8 *)(lVar6 + 0x10);" (assignment_expression "*(undefined8 *)(lVar6 + 8) = *(undefined8 *)(lVar6 + 0x10)" (pointer_expression "*(undefined8 *)(lVar6 + 8)" * (cast_expression "(undefined8 *)(lVar6 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 8)" ( (binary_expression "lVar6 + 8" identifier + number_literal) )))) = (pointer_expression "*(undefined8 *)(lVar6 + 0x10)" * (cast_expression "(undefined8 *)(lVar6 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x10)" ( (binary_expression "lVar6 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(lVar6 + 0x28) = *(undefined4 *)(lVar6 + 0x2c);" (assignment_expression "*(undefined4 *)(lVar6 + 0x28) = *(undefined4 *)(lVar6 + 0x2c)" (pointer_expression "*(undefined4 *)(lVar6 + 0x28)" * (cast_expression "(undefined4 *)(lVar6 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x28)" ( (binary_expression "lVar6 + 0x28" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(lVar6 + 0x2c)" * (cast_expression "(undefined4 *)(lVar6 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x2c)" ( (binary_expression "lVar6 + 0x2c" identifier + number_literal) ))))) ;) (expression_statement "lVar8 = *(long *)(lVar6 + 0x40);" (assignment_expression "lVar8 = *(long *)(lVar6 + 0x40)" identifier = (pointer_expression "*(long *)(lVar6 + 0x40)" * (cast_expression "(long *)(lVar6 + 0x40)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x40)" ( (binary_expression "lVar6 + 0x40" identifier + number_literal) ))))) ;) (if_statement "if (lVar8 != 0) {\n          *(undefined8 *)(lVar6 + 0x10) = *(undefined8 *)(lVar6 + 0x18);\n          *(undefined4 *)(lVar6 + 0x2c) = *(undefined4 *)(lVar6 + 0x30);\n          *(long *)(lVar6 + 0x38) = lVar8;\n          if (*(long *)(lVar6 + 0x48) == 0) {\n            lVar8 = 1;\n          }\n          else {\n            *(undefined8 *)(lVar6 + 0x18) = *(undefined8 *)(lVar6 + 0x20);\n            *(undefined4 *)(lVar6 + 0x30) = *(undefined4 *)(lVar6 + 0x34);\n            *(long *)(lVar6 + 0x40) = *(long *)(lVar6 + 0x48);\n            lVar8 = 2;\n          }\n        }" if (parenthesized_expression "(lVar8 != 0)" ( (binary_expression "lVar8 != 0" identifier != number_literal) )) (compound_statement "{\n          *(undefined8 *)(lVar6 + 0x10) = *(undefined8 *)(lVar6 + 0x18);\n          *(undefined4 *)(lVar6 + 0x2c) = *(undefined4 *)(lVar6 + 0x30);\n          *(long *)(lVar6 + 0x38) = lVar8;\n          if (*(long *)(lVar6 + 0x48) == 0) {\n            lVar8 = 1;\n          }\n          else {\n            *(undefined8 *)(lVar6 + 0x18) = *(undefined8 *)(lVar6 + 0x20);\n            *(undefined4 *)(lVar6 + 0x30) = *(undefined4 *)(lVar6 + 0x34);\n            *(long *)(lVar6 + 0x40) = *(long *)(lVar6 + 0x48);\n            lVar8 = 2;\n          }\n        }" { (expression_statement "*(undefined8 *)(lVar6 + 0x10) = *(undefined8 *)(lVar6 + 0x18);" (assignment_expression "*(undefined8 *)(lVar6 + 0x10) = *(undefined8 *)(lVar6 + 0x18)" (pointer_expression "*(undefined8 *)(lVar6 + 0x10)" * (cast_expression "(undefined8 *)(lVar6 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x10)" ( (binary_expression "lVar6 + 0x10" identifier + number_literal) )))) = (pointer_expression "*(undefined8 *)(lVar6 + 0x18)" * (cast_expression "(undefined8 *)(lVar6 + 0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x18)" ( (binary_expression "lVar6 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(lVar6 + 0x2c) = *(undefined4 *)(lVar6 + 0x30);" (assignment_expression "*(undefined4 *)(lVar6 + 0x2c) = *(undefined4 *)(lVar6 + 0x30)" (pointer_expression "*(undefined4 *)(lVar6 + 0x2c)" * (cast_expression "(undefined4 *)(lVar6 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x2c)" ( (binary_expression "lVar6 + 0x2c" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(lVar6 + 0x30)" * (cast_expression "(undefined4 *)(lVar6 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x30)" ( (binary_expression "lVar6 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "*(long *)(lVar6 + 0x38) = lVar8;" (assignment_expression "*(long *)(lVar6 + 0x38) = lVar8" (pointer_expression "*(long *)(lVar6 + 0x38)" * (cast_expression "(long *)(lVar6 + 0x38)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x38)" ( (binary_expression "lVar6 + 0x38" identifier + number_literal) )))) = identifier) ;) (if_statement "if (*(long *)(lVar6 + 0x48) == 0) {\n            lVar8 = 1;\n          }\n          else {\n            *(undefined8 *)(lVar6 + 0x18) = *(undefined8 *)(lVar6 + 0x20);\n            *(undefined4 *)(lVar6 + 0x30) = *(undefined4 *)(lVar6 + 0x34);\n            *(long *)(lVar6 + 0x40) = *(long *)(lVar6 + 0x48);\n            lVar8 = 2;\n          }" if (parenthesized_expression "(*(long *)(lVar6 + 0x48) == 0)" ( (binary_expression "*(long *)(lVar6 + 0x48) == 0" (pointer_expression "*(long *)(lVar6 + 0x48)" * (cast_expression "(long *)(lVar6 + 0x48)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x48)" ( (binary_expression "lVar6 + 0x48" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n            lVar8 = 1;\n          }" { (expression_statement "lVar8 = 1;" (assignment_expression "lVar8 = 1" identifier = number_literal) ;) }) (else_clause "else {\n            *(undefined8 *)(lVar6 + 0x18) = *(undefined8 *)(lVar6 + 0x20);\n            *(undefined4 *)(lVar6 + 0x30) = *(undefined4 *)(lVar6 + 0x34);\n            *(long *)(lVar6 + 0x40) = *(long *)(lVar6 + 0x48);\n            lVar8 = 2;\n          }" else (compound_statement "{\n            *(undefined8 *)(lVar6 + 0x18) = *(undefined8 *)(lVar6 + 0x20);\n            *(undefined4 *)(lVar6 + 0x30) = *(undefined4 *)(lVar6 + 0x34);\n            *(long *)(lVar6 + 0x40) = *(long *)(lVar6 + 0x48);\n            lVar8 = 2;\n          }" { (expression_statement "*(undefined8 *)(lVar6 + 0x18) = *(undefined8 *)(lVar6 + 0x20);" (assignment_expression "*(undefined8 *)(lVar6 + 0x18) = *(undefined8 *)(lVar6 + 0x20)" (pointer_expression "*(undefined8 *)(lVar6 + 0x18)" * (cast_expression "(undefined8 *)(lVar6 + 0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x18)" ( (binary_expression "lVar6 + 0x18" identifier + number_literal) )))) = (pointer_expression "*(undefined8 *)(lVar6 + 0x20)" * (cast_expression "(undefined8 *)(lVar6 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x20)" ( (binary_expression "lVar6 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(lVar6 + 0x30) = *(undefined4 *)(lVar6 + 0x34);" (assignment_expression "*(undefined4 *)(lVar6 + 0x30) = *(undefined4 *)(lVar6 + 0x34)" (pointer_expression "*(undefined4 *)(lVar6 + 0x30)" * (cast_expression "(undefined4 *)(lVar6 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x30)" ( (binary_expression "lVar6 + 0x30" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(lVar6 + 0x34)" * (cast_expression "(undefined4 *)(lVar6 + 0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x34)" ( (binary_expression "lVar6 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "*(long *)(lVar6 + 0x40) = *(long *)(lVar6 + 0x48);" (assignment_expression "*(long *)(lVar6 + 0x40) = *(long *)(lVar6 + 0x48)" (pointer_expression "*(long *)(lVar6 + 0x40)" * (cast_expression "(long *)(lVar6 + 0x40)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x40)" ( (binary_expression "lVar6 + 0x40" identifier + number_literal) )))) = (pointer_expression "*(long *)(lVar6 + 0x48)" * (cast_expression "(long *)(lVar6 + 0x48)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x48)" ( (binary_expression "lVar6 + 0x48" identifier + number_literal) ))))) ;) (expression_statement "lVar8 = 2;" (assignment_expression "lVar8 = 2" identifier = number_literal) ;) }))) })) (expression_statement "lVar11 = lVar6 + (long)(int)lVar8 * 8;" (assignment_expression "lVar11 = lVar6 + (long)(int)lVar8 * 8" identifier = (binary_expression "lVar6 + (long)(int)lVar8 * 8" identifier + (binary_expression "(long)(int)lVar8 * 8" (cast_expression "(long)(int)lVar8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (cast_expression "(int)lVar8" ( (type_descriptor "int" primitive_type) ) identifier)) * number_literal))) ;) (expression_statement "*(undefined8 *)(lVar11 + 0x10) = 0;" (assignment_expression "*(undefined8 *)(lVar11 + 0x10) = 0" (pointer_expression "*(undefined8 *)(lVar11 + 0x10)" * (cast_expression "(undefined8 *)(lVar11 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar11 + 0x10)" ( (binary_expression "lVar11 + 0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(lVar6 + 0x28 + (long)((int)lVar8 + 1) * 4) = 0;" (assignment_expression "*(undefined4 *)(lVar6 + 0x28 + (long)((int)lVar8 + 1) * 4) = 0" (pointer_expression "*(undefined4 *)(lVar6 + 0x28 + (long)((int)lVar8 + 1) * 4)" * (cast_expression "(undefined4 *)(lVar6 + 0x28 + (long)((int)lVar8 + 1) * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x28 + (long)((int)lVar8 + 1) * 4)" ( (binary_expression "lVar6 + 0x28 + (long)((int)lVar8 + 1) * 4" (binary_expression "lVar6 + 0x28" identifier + number_literal) + (binary_expression "(long)((int)lVar8 + 1) * 4" (cast_expression "(long)((int)lVar8 + 1)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "((int)lVar8 + 1)" ( (binary_expression "(int)lVar8 + 1" (cast_expression "(int)lVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) * number_literal)) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(lVar11 + 0x38) = 0;" (assignment_expression "*(undefined8 *)(lVar11 + 0x38) = 0" (pointer_expression "*(undefined8 *)(lVar11 + 0x38)" * (cast_expression "(undefined8 *)(lVar11 + 0x38)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar11 + 0x38)" ( (binary_expression "lVar11 + 0x38" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar3 = FUN_0012ef67(plVar13);" (assignment_expression "uVar3 = FUN_0012ef67(plVar13)" identifier = (call_expression "FUN_0012ef67(plVar13)" identifier (argument_list "(plVar13)" ( identifier )))) ;) (expression_statement "*(undefined4 *)((long)plVar12 + local_50 * 4 + 0x28) = uVar3;" (assignment_expression "*(undefined4 *)((long)plVar12 + local_50 * 4 + 0x28) = uVar3" (pointer_expression "*(undefined4 *)((long)plVar12 + local_50 * 4 + 0x28)" * (cast_expression "(undefined4 *)((long)plVar12 + local_50 * 4 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar12 + local_50 * 4 + 0x28)" ( (binary_expression "(long)plVar12 + local_50 * 4 + 0x28" (binary_expression "(long)plVar12 + local_50 * 4" (cast_expression "(long)plVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "local_50 * 4" identifier * number_literal)) + number_literal) )))) = identifier) ;) (expression_statement "uVar3 = FUN_0012ef67(lVar6);" (assignment_expression "uVar3 = FUN_0012ef67(lVar6)" identifier = (call_expression "FUN_0012ef67(lVar6)" identifier (argument_list "(lVar6)" ( identifier )))) ;) (expression_statement "*(undefined4 *)((long)plVar12 + local_50 * 4 + 0x2c) = uVar3;" (assignment_expression "*(undefined4 *)((long)plVar12 + local_50 * 4 + 0x2c) = uVar3" (pointer_expression "*(undefined4 *)((long)plVar12 + local_50 * 4 + 0x2c)" * (cast_expression "(undefined4 *)((long)plVar12 + local_50 * 4 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar12 + local_50 * 4 + 0x2c)" ( (binary_expression "(long)plVar12 + local_50 * 4 + 0x2c" (binary_expression "(long)plVar12 + local_50 * 4" (cast_expression "(long)plVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "local_50 * 4" identifier * number_literal)) + number_literal) )))) = identifier) ;) (goto_statement "goto LAB_0012f7e4;" goto statement_identifier ;) }))) (if_statement "if (local_54 != 0) {\nLAB_0012f905:\n        local_54 = local_54 - 1;\n        param_2 = param_2 + 1 + *(int *)((long)plVar12 + (long)(int)local_54 * 4 + 0x28);\n      }" if (parenthesized_expression "(local_54 != 0)" ( (binary_expression "local_54 != 0" identifier != number_literal) )) (compound_statement "{\nLAB_0012f905:\n        local_54 = local_54 - 1;\n        param_2 = param_2 + 1 + *(int *)((long)plVar12 + (long)(int)local_54 * 4 + 0x28);\n      }" { (labeled_statement "LAB_0012f905:\n        local_54 = local_54 - 1;" statement_identifier : (expression_statement "local_54 = local_54 - 1;" (assignment_expression "local_54 = local_54 - 1" identifier = (binary_expression "local_54 - 1" identifier - number_literal)) ;)) (expression_statement "param_2 = param_2 + 1 + *(int *)((long)plVar12 + (long)(int)local_54 * 4 + 0x28);" (assignment_expression "param_2 = param_2 + 1 + *(int *)((long)plVar12 + (long)(int)local_54 * 4 + 0x28)" identifier = (binary_expression "param_2 + 1 + *(int *)((long)plVar12 + (long)(int)local_54 * 4 + 0x28)" (binary_expression "param_2 + 1" identifier + number_literal) + (pointer_expression "*(int *)((long)plVar12 + (long)(int)local_54 * 4 + 0x28)" * (cast_expression "(int *)((long)plVar12 + (long)(int)local_54 * 4 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar12 + (long)(int)local_54 * 4 + 0x28)" ( (binary_expression "(long)plVar12 + (long)(int)local_54 * 4 + 0x28" (binary_expression "(long)plVar12 + (long)(int)local_54 * 4" (cast_expression "(long)plVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "(long)(int)local_54 * 4" (cast_expression "(long)(int)local_54" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (cast_expression "(int)local_54" ( (type_descriptor "int" primitive_type) ) identifier)) * number_literal)) + number_literal) )))))) ;) })) })) (expression_statement "lVar6 = plVar12[(long)(int)local_54 + 1];" (assignment_expression "lVar6 = plVar12[(long)(int)local_54 + 1]" identifier = (subscript_expression "plVar12[(long)(int)local_54 + 1]" identifier [ (binary_expression "(long)(int)local_54 + 1" (cast_expression "(long)(int)local_54" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (cast_expression "(int)local_54" ( (type_descriptor "int" primitive_type) ) identifier)) + number_literal) ])) ;) (expression_statement "plVar13 = (long *)plVar12[(long)(int)local_54 + 2];" (assignment_expression "plVar13 = (long *)plVar12[(long)(int)local_54 + 2]" identifier = (cast_expression "(long *)plVar12[(long)(int)local_54 + 2]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar12[(long)(int)local_54 + 2]" identifier [ (binary_expression "(long)(int)local_54 + 2" (cast_expression "(long)(int)local_54" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (cast_expression "(int)local_54" ( (type_descriptor "int" primitive_type) ) identifier)) + number_literal) ]))) ;) (expression_statement "plVar13[4] = plVar13[2];" (assignment_expression "plVar13[4] = plVar13[2]" (subscript_expression "plVar13[4]" identifier [ number_literal ]) = (subscript_expression "plVar13[2]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)((long)plVar13 + 0x34) = *(undefined4 *)((long)plVar13 + 0x2c);" (assignment_expression "*(undefined4 *)((long)plVar13 + 0x34) = *(undefined4 *)((long)plVar13 + 0x2c)" (pointer_expression "*(undefined4 *)((long)plVar13 + 0x34)" * (cast_expression "(undefined4 *)((long)plVar13 + 0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar13 + 0x34)" ( (binary_expression "(long)plVar13 + 0x34" (cast_expression "(long)plVar13" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (pointer_expression "*(undefined4 *)((long)plVar13 + 0x2c)" * (cast_expression "(undefined4 *)((long)plVar13 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar13 + 0x2c)" ( (binary_expression "(long)plVar13 + 0x2c" (cast_expression "(long)plVar13" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "plVar13[9] = plVar13[7];" (assignment_expression "plVar13[9] = plVar13[7]" (subscript_expression "plVar13[9]" identifier [ number_literal ]) = (subscript_expression "plVar13[7]" identifier [ number_literal ])) ;) (expression_statement "plVar13[3] = plVar13[1];" (assignment_expression "plVar13[3] = plVar13[1]" (subscript_expression "plVar13[3]" identifier [ number_literal ]) = (subscript_expression "plVar13[1]" identifier [ number_literal ])) ;) (expression_statement "*(int *)(plVar13 + 6) = (int)plVar13[5];" (assignment_expression "*(int *)(plVar13 + 6) = (int)plVar13[5]" (pointer_expression "*(int *)(plVar13 + 6)" * (cast_expression "(int *)(plVar13 + 6)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar13 + 6)" ( (binary_expression "plVar13 + 6" identifier + number_literal) )))) = (cast_expression "(int)plVar13[5]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "plVar13[5]" identifier [ number_literal ]))) ;) (expression_statement "plVar13[8] = plVar12[(long)(int)local_54 + 7];" (assignment_expression "plVar13[8] = plVar12[(long)(int)local_54 + 7]" (subscript_expression "plVar13[8]" identifier [ number_literal ]) = (subscript_expression "plVar12[(long)(int)local_54 + 7]" identifier [ (binary_expression "(long)(int)local_54 + 7" (cast_expression "(long)(int)local_54" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (cast_expression "(int)local_54" ( (type_descriptor "int" primitive_type) ) identifier)) + number_literal) ])) ;) (expression_statement "puVar2 = *(undefined8 **)(lVar6 + 0x10);" (assignment_expression "puVar2 = *(undefined8 **)(lVar6 + 0x10)" identifier = (pointer_expression "*(undefined8 **)(lVar6 + 0x10)" * (cast_expression "(undefined8 **)(lVar6 + 0x10)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar6 + 0x10)" ( (binary_expression "lVar6 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "plVar13[2] = (long)puVar2;" (assignment_expression "plVar13[2] = (long)puVar2" (subscript_expression "plVar13[2]" identifier [ number_literal ]) = (cast_expression "(long)puVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "*(undefined4 *)((long)plVar13 + 0x2c) = *(undefined4 *)(lVar6 + 0x2c);" (assignment_expression "*(undefined4 *)((long)plVar13 + 0x2c) = *(undefined4 *)(lVar6 + 0x2c)" (pointer_expression "*(undefined4 *)((long)plVar13 + 0x2c)" * (cast_expression "(undefined4 *)((long)plVar13 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar13 + 0x2c)" ( (binary_expression "(long)plVar13 + 0x2c" (cast_expression "(long)plVar13" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (pointer_expression "*(undefined4 *)(lVar6 + 0x2c)" * (cast_expression "(undefined4 *)(lVar6 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x2c)" ( (binary_expression "lVar6 + 0x2c" identifier + number_literal) ))))) ;) (if_statement "if (puVar2 != (undefined8 *)0x0) {\n      *puVar2 = plVar13;\n    }" if (parenthesized_expression "(puVar2 != (undefined8 *)0x0)" ( (binary_expression "puVar2 != (undefined8 *)0x0" identifier != (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      *puVar2 = plVar13;\n    }" { (expression_statement "*puVar2 = plVar13;" (assignment_expression "*puVar2 = plVar13" (pointer_expression "*puVar2" * identifier) = identifier) ;) })) (expression_statement "plVar13[7] = *(long *)(lVar6 + 0x38);" (assignment_expression "plVar13[7] = *(long *)(lVar6 + 0x38)" (subscript_expression "plVar13[7]" identifier [ number_literal ]) = (pointer_expression "*(long *)(lVar6 + 0x38)" * (cast_expression "(long *)(lVar6 + 0x38)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x38)" ( (binary_expression "lVar6 + 0x38" identifier + number_literal) ))))) ;) (expression_statement "puVar2 = *(undefined8 **)(lVar6 + 8);" (assignment_expression "puVar2 = *(undefined8 **)(lVar6 + 8)" identifier = (pointer_expression "*(undefined8 **)(lVar6 + 8)" * (cast_expression "(undefined8 **)(lVar6 + 8)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar6 + 8)" ( (binary_expression "lVar6 + 8" identifier + number_literal) ))))) ;) (expression_statement "plVar13[1] = (long)puVar2;" (assignment_expression "plVar13[1] = (long)puVar2" (subscript_expression "plVar13[1]" identifier [ number_literal ]) = (cast_expression "(long)puVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "*(undefined4 *)(plVar13 + 5) = *(undefined4 *)(lVar6 + 0x28);" (assignment_expression "*(undefined4 *)(plVar13 + 5) = *(undefined4 *)(lVar6 + 0x28)" (pointer_expression "*(undefined4 *)(plVar13 + 5)" * (cast_expression "(undefined4 *)(plVar13 + 5)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar13 + 5)" ( (binary_expression "plVar13 + 5" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(lVar6 + 0x28)" * (cast_expression "(undefined4 *)(lVar6 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x28)" ( (binary_expression "lVar6 + 0x28" identifier + number_literal) ))))) ;) (if_statement "if (puVar2 != (undefined8 *)0x0) {\n      *puVar2 = plVar13;\n    }" if (parenthesized_expression "(puVar2 != (undefined8 *)0x0)" ( (binary_expression "puVar2 != (undefined8 *)0x0" identifier != (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      *puVar2 = plVar13;\n    }" { (expression_statement "*puVar2 = plVar13;" (assignment_expression "*puVar2 = plVar13" (pointer_expression "*puVar2" * identifier) = identifier) ;) })) (expression_statement "uVar3 = FUN_0012ef67(plVar13);" (assignment_expression "uVar3 = FUN_0012ef67(plVar13)" identifier = (call_expression "FUN_0012ef67(plVar13)" identifier (argument_list "(plVar13)" ( identifier )))) ;) (expression_statement "*(undefined4 *)((long)plVar12 + (long)(int)(local_54 + 1) * 4 + 0x28) = uVar3;" (assignment_expression "*(undefined4 *)((long)plVar12 + (long)(int)(local_54 + 1) * 4 + 0x28) = uVar3" (pointer_expression "*(undefined4 *)((long)plVar12 + (long)(int)(local_54 + 1) * 4 + 0x28)" * (cast_expression "(undefined4 *)((long)plVar12 + (long)(int)(local_54 + 1) * 4 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar12 + (long)(int)(local_54 + 1) * 4 + 0x28)" ( (binary_expression "(long)plVar12 + (long)(int)(local_54 + 1) * 4 + 0x28" (binary_expression "(long)plVar12 + (long)(int)(local_54 + 1) * 4" (cast_expression "(long)plVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "(long)(int)(local_54 + 1) * 4" (cast_expression "(long)(int)(local_54 + 1)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (cast_expression "(int)(local_54 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(local_54 + 1)" ( (binary_expression "local_54 + 1" identifier + number_literal) )))) * number_literal)) + number_literal) )))) = identifier) ;) (expression_statement "FUN_0010c4d3(lVar6);" (call_expression "FUN_0010c4d3(lVar6)" identifier (argument_list "(lVar6)" ( identifier ))) ;) (if_statement "if ((int)local_54 < 3) {\n      lVar6 = plVar12[(long)(int)local_54 + 2];\n      if (lVar6 != 0) {\n        lVar8 = (long)(int)(local_54 + 1);\n        do {\n          local_54 = (uint)lVar8;\n          plVar12[lVar8] = lVar6;\n          *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x24) =\n               *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28);\n          lVar6 = 0;\n          if ((int)(local_54 - 1) < 2) {\n            lVar6 = plVar12[lVar8 + 7];\n          }\n          plVar12[lVar8 + 6] = lVar6;\n          if (2 < (int)local_54) goto LAB_0012fd6d;\n          lVar6 = plVar12[lVar8 + 2];\n          lVar8 = lVar8 + 1;\n        } while (lVar6 != 0);\n      }\n      lVar6 = (long)(int)local_54;\n      plVar12[lVar6 + 1] = 0;\n      *(undefined4 *)((long)plVar12 + lVar6 * 4 + 0x28) = 0;\n      plVar12[lVar6 + 7] = 0;\n    }\n    else {\nLAB_0012fd6d:\n      plVar12[(long)(int)local_54 + 1] = 0;\n      *(undefined4 *)((long)plVar12 + (long)(int)local_54 * 4 + 0x28) = 0;\n    }" if (parenthesized_expression "((int)local_54 < 3)" ( (binary_expression "(int)local_54 < 3" (cast_expression "(int)local_54" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      lVar6 = plVar12[(long)(int)local_54 + 2];\n      if (lVar6 != 0) {\n        lVar8 = (long)(int)(local_54 + 1);\n        do {\n          local_54 = (uint)lVar8;\n          plVar12[lVar8] = lVar6;\n          *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x24) =\n               *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28);\n          lVar6 = 0;\n          if ((int)(local_54 - 1) < 2) {\n            lVar6 = plVar12[lVar8 + 7];\n          }\n          plVar12[lVar8 + 6] = lVar6;\n          if (2 < (int)local_54) goto LAB_0012fd6d;\n          lVar6 = plVar12[lVar8 + 2];\n          lVar8 = lVar8 + 1;\n        } while (lVar6 != 0);\n      }\n      lVar6 = (long)(int)local_54;\n      plVar12[lVar6 + 1] = 0;\n      *(undefined4 *)((long)plVar12 + lVar6 * 4 + 0x28) = 0;\n      plVar12[lVar6 + 7] = 0;\n    }" { (expression_statement "lVar6 = plVar12[(long)(int)local_54 + 2];" (assignment_expression "lVar6 = plVar12[(long)(int)local_54 + 2]" identifier = (subscript_expression "plVar12[(long)(int)local_54 + 2]" identifier [ (binary_expression "(long)(int)local_54 + 2" (cast_expression "(long)(int)local_54" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (cast_expression "(int)local_54" ( (type_descriptor "int" primitive_type) ) identifier)) + number_literal) ])) ;) (if_statement "if (lVar6 != 0) {\n        lVar8 = (long)(int)(local_54 + 1);\n        do {\n          local_54 = (uint)lVar8;\n          plVar12[lVar8] = lVar6;\n          *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x24) =\n               *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28);\n          lVar6 = 0;\n          if ((int)(local_54 - 1) < 2) {\n            lVar6 = plVar12[lVar8 + 7];\n          }\n          plVar12[lVar8 + 6] = lVar6;\n          if (2 < (int)local_54) goto LAB_0012fd6d;\n          lVar6 = plVar12[lVar8 + 2];\n          lVar8 = lVar8 + 1;\n        } while (lVar6 != 0);\n      }" if (parenthesized_expression "(lVar6 != 0)" ( (binary_expression "lVar6 != 0" identifier != number_literal) )) (compound_statement "{\n        lVar8 = (long)(int)(local_54 + 1);\n        do {\n          local_54 = (uint)lVar8;\n          plVar12[lVar8] = lVar6;\n          *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x24) =\n               *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28);\n          lVar6 = 0;\n          if ((int)(local_54 - 1) < 2) {\n            lVar6 = plVar12[lVar8 + 7];\n          }\n          plVar12[lVar8 + 6] = lVar6;\n          if (2 < (int)local_54) goto LAB_0012fd6d;\n          lVar6 = plVar12[lVar8 + 2];\n          lVar8 = lVar8 + 1;\n        } while (lVar6 != 0);\n      }" { (expression_statement "lVar8 = (long)(int)(local_54 + 1);" (assignment_expression "lVar8 = (long)(int)(local_54 + 1)" identifier = (cast_expression "(long)(int)(local_54 + 1)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (cast_expression "(int)(local_54 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(local_54 + 1)" ( (binary_expression "local_54 + 1" identifier + number_literal) ))))) ;) (do_statement "do {\n          local_54 = (uint)lVar8;\n          plVar12[lVar8] = lVar6;\n          *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x24) =\n               *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28);\n          lVar6 = 0;\n          if ((int)(local_54 - 1) < 2) {\n            lVar6 = plVar12[lVar8 + 7];\n          }\n          plVar12[lVar8 + 6] = lVar6;\n          if (2 < (int)local_54) goto LAB_0012fd6d;\n          lVar6 = plVar12[lVar8 + 2];\n          lVar8 = lVar8 + 1;\n        } while (lVar6 != 0);" do (compound_statement "{\n          local_54 = (uint)lVar8;\n          plVar12[lVar8] = lVar6;\n          *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x24) =\n               *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28);\n          lVar6 = 0;\n          if ((int)(local_54 - 1) < 2) {\n            lVar6 = plVar12[lVar8 + 7];\n          }\n          plVar12[lVar8 + 6] = lVar6;\n          if (2 < (int)local_54) goto LAB_0012fd6d;\n          lVar6 = plVar12[lVar8 + 2];\n          lVar8 = lVar8 + 1;\n        }" { (expression_statement "local_54 = (uint)lVar8;" (assignment_expression "local_54 = (uint)lVar8" identifier = (cast_expression "(uint)lVar8" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "plVar12[lVar8] = lVar6;" (assignment_expression "plVar12[lVar8] = lVar6" (subscript_expression "plVar12[lVar8]" identifier [ identifier ]) = identifier) ;) (expression_statement "*(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x24) =\n               *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28);" (assignment_expression "*(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x24) =\n               *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28)" (pointer_expression "*(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x24)" * (cast_expression "(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar12 + lVar8 * 4 + 0x24)" ( (binary_expression "(long)plVar12 + lVar8 * 4 + 0x24" (binary_expression "(long)plVar12 + lVar8 * 4" (cast_expression "(long)plVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "lVar8 * 4" identifier * number_literal)) + number_literal) )))) = (pointer_expression "*(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28)" * (cast_expression "(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar12 + lVar8 * 4 + 0x28)" ( (binary_expression "(long)plVar12 + lVar8 * 4 + 0x28" (binary_expression "(long)plVar12 + lVar8 * 4" (cast_expression "(long)plVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "lVar8 * 4" identifier * number_literal)) + number_literal) ))))) ;) (expression_statement "lVar6 = 0;" (assignment_expression "lVar6 = 0" identifier = number_literal) ;) (if_statement "if ((int)(local_54 - 1) < 2) {\n            lVar6 = plVar12[lVar8 + 7];\n          }" if (parenthesized_expression "((int)(local_54 - 1) < 2)" ( (binary_expression "(int)(local_54 - 1) < 2" (cast_expression "(int)(local_54 - 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(local_54 - 1)" ( (binary_expression "local_54 - 1" identifier - number_literal) ))) < number_literal) )) (compound_statement "{\n            lVar6 = plVar12[lVar8 + 7];\n          }" { (expression_statement "lVar6 = plVar12[lVar8 + 7];" (assignment_expression "lVar6 = plVar12[lVar8 + 7]" identifier = (subscript_expression "plVar12[lVar8 + 7]" identifier [ (binary_expression "lVar8 + 7" identifier + number_literal) ])) ;) })) (expression_statement "plVar12[lVar8 + 6] = lVar6;" (assignment_expression "plVar12[lVar8 + 6] = lVar6" (subscript_expression "plVar12[lVar8 + 6]" identifier [ (binary_expression "lVar8 + 6" identifier + number_literal) ]) = identifier) ;) (if_statement "if (2 < (int)local_54) goto LAB_0012fd6d;" if (parenthesized_expression "(2 < (int)local_54)" ( (binary_expression "2 < (int)local_54" number_literal < (cast_expression "(int)local_54" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_0012fd6d;" goto statement_identifier ;)) (expression_statement "lVar6 = plVar12[lVar8 + 2];" (assignment_expression "lVar6 = plVar12[lVar8 + 2]" identifier = (subscript_expression "plVar12[lVar8 + 2]" identifier [ (binary_expression "lVar8 + 2" identifier + number_literal) ])) ;) (expression_statement "lVar8 = lVar8 + 1;" (assignment_expression "lVar8 = lVar8 + 1" identifier = (binary_expression "lVar8 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar6 != 0)" ( (binary_expression "lVar6 != 0" identifier != number_literal) )) ;) })) (expression_statement "lVar6 = (long)(int)local_54;" (assignment_expression "lVar6 = (long)(int)local_54" identifier = (cast_expression "(long)(int)local_54" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (cast_expression "(int)local_54" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "plVar12[lVar6 + 1] = 0;" (assignment_expression "plVar12[lVar6 + 1] = 0" (subscript_expression "plVar12[lVar6 + 1]" identifier [ (binary_expression "lVar6 + 1" identifier + number_literal) ]) = number_literal) ;) (expression_statement "*(undefined4 *)((long)plVar12 + lVar6 * 4 + 0x28) = 0;" (assignment_expression "*(undefined4 *)((long)plVar12 + lVar6 * 4 + 0x28) = 0" (pointer_expression "*(undefined4 *)((long)plVar12 + lVar6 * 4 + 0x28)" * (cast_expression "(undefined4 *)((long)plVar12 + lVar6 * 4 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar12 + lVar6 * 4 + 0x28)" ( (binary_expression "(long)plVar12 + lVar6 * 4 + 0x28" (binary_expression "(long)plVar12 + lVar6 * 4" (cast_expression "(long)plVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "lVar6 * 4" identifier * number_literal)) + number_literal) )))) = number_literal) ;) (expression_statement "plVar12[lVar6 + 7] = 0;" (assignment_expression "plVar12[lVar6 + 7] = 0" (subscript_expression "plVar12[lVar6 + 7]" identifier [ (binary_expression "lVar6 + 7" identifier + number_literal) ]) = number_literal) ;) }) (else_clause "else {\nLAB_0012fd6d:\n      plVar12[(long)(int)local_54 + 1] = 0;\n      *(undefined4 *)((long)plVar12 + (long)(int)local_54 * 4 + 0x28) = 0;\n    }" else (compound_statement "{\nLAB_0012fd6d:\n      plVar12[(long)(int)local_54 + 1] = 0;\n      *(undefined4 *)((long)plVar12 + (long)(int)local_54 * 4 + 0x28) = 0;\n    }" { (labeled_statement "LAB_0012fd6d:\n      plVar12[(long)(int)local_54 + 1] = 0;" statement_identifier : (expression_statement "plVar12[(long)(int)local_54 + 1] = 0;" (assignment_expression "plVar12[(long)(int)local_54 + 1] = 0" (subscript_expression "plVar12[(long)(int)local_54 + 1]" identifier [ (binary_expression "(long)(int)local_54 + 1" (cast_expression "(long)(int)local_54" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (cast_expression "(int)local_54" ( (type_descriptor "int" primitive_type) ) identifier)) + number_literal) ]) = number_literal) ;)) (expression_statement "*(undefined4 *)((long)plVar12 + (long)(int)local_54 * 4 + 0x28) = 0;" (assignment_expression "*(undefined4 *)((long)plVar12 + (long)(int)local_54 * 4 + 0x28) = 0" (pointer_expression "*(undefined4 *)((long)plVar12 + (long)(int)local_54 * 4 + 0x28)" * (cast_expression "(undefined4 *)((long)plVar12 + (long)(int)local_54 * 4 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar12 + (long)(int)local_54 * 4 + 0x28)" ( (binary_expression "(long)plVar12 + (long)(int)local_54 * 4 + 0x28" (binary_expression "(long)plVar12 + (long)(int)local_54 * 4" (cast_expression "(long)plVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "(long)(int)local_54 * 4" (cast_expression "(long)(int)local_54" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (cast_expression "(int)local_54" ( (type_descriptor "int" primitive_type) ) identifier)) * number_literal)) + number_literal) )))) = number_literal) ;) }))) (if_statement "if (plVar12[7] == 0) {\n      *param_1 = plVar13;\n      *plVar13 = 0;\n      FUN_0010c4d3(plVar12);\n    }" if (parenthesized_expression "(plVar12[7] == 0)" ( (binary_expression "plVar12[7] == 0" (subscript_expression "plVar12[7]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      *param_1 = plVar13;\n      *plVar13 = 0;\n      FUN_0010c4d3(plVar12);\n    }" { (expression_statement "*param_1 = plVar13;" (assignment_expression "*param_1 = plVar13" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "*plVar13 = 0;" (assignment_expression "*plVar13 = 0" (pointer_expression "*plVar13" * identifier) = number_literal) ;) (expression_statement "FUN_0010c4d3(plVar12);" (call_expression "FUN_0010c4d3(plVar12)" identifier (argument_list "(plVar12)" ( identifier ))) ;) })) })) (goto_statement "goto LAB_0012f7e4;" goto statement_identifier ;) (labeled_statement "code_r0x0012fc20:\n  if (iVar9 < 2) {\nLAB_0012fbac:\n    lVar8 = plVar12[(long)(iVar9 + 1) + 7];\n    if (lVar8 != 0) {\n      lVar11 = (long)(iVar9 + 1);\n      do {\n        iVar9 = (int)lVar11;\n        plVar12[lVar11 + 6] = lVar8;\n        if (1 < iVar9) break;\n        lVar8 = plVar12[lVar11 + 8];\n        lVar11 = lVar11 + 1;\n      } while (lVar8 != 0);\n    }\n    plVar12[(long)iVar9 + 7] = 0;\n    if (lVar6 == 0) {\n      return lVar15;\n    }\n  }\n  else {\n    plVar12[(long)iVar9 + 7] = 0;\n  }" statement_identifier : (if_statement "if (iVar9 < 2) {\nLAB_0012fbac:\n    lVar8 = plVar12[(long)(iVar9 + 1) + 7];\n    if (lVar8 != 0) {\n      lVar11 = (long)(iVar9 + 1);\n      do {\n        iVar9 = (int)lVar11;\n        plVar12[lVar11 + 6] = lVar8;\n        if (1 < iVar9) break;\n        lVar8 = plVar12[lVar11 + 8];\n        lVar11 = lVar11 + 1;\n      } while (lVar8 != 0);\n    }\n    plVar12[(long)iVar9 + 7] = 0;\n    if (lVar6 == 0) {\n      return lVar15;\n    }\n  }\n  else {\n    plVar12[(long)iVar9 + 7] = 0;\n  }" if (parenthesized_expression "(iVar9 < 2)" ( (binary_expression "iVar9 < 2" identifier < number_literal) )) (compound_statement "{\nLAB_0012fbac:\n    lVar8 = plVar12[(long)(iVar9 + 1) + 7];\n    if (lVar8 != 0) {\n      lVar11 = (long)(iVar9 + 1);\n      do {\n        iVar9 = (int)lVar11;\n        plVar12[lVar11 + 6] = lVar8;\n        if (1 < iVar9) break;\n        lVar8 = plVar12[lVar11 + 8];\n        lVar11 = lVar11 + 1;\n      } while (lVar8 != 0);\n    }\n    plVar12[(long)iVar9 + 7] = 0;\n    if (lVar6 == 0) {\n      return lVar15;\n    }\n  }" { (labeled_statement "LAB_0012fbac:\n    lVar8 = plVar12[(long)(iVar9 + 1) + 7];" statement_identifier : (expression_statement "lVar8 = plVar12[(long)(iVar9 + 1) + 7];" (assignment_expression "lVar8 = plVar12[(long)(iVar9 + 1) + 7]" identifier = (subscript_expression "plVar12[(long)(iVar9 + 1) + 7]" identifier [ (binary_expression "(long)(iVar9 + 1) + 7" (cast_expression "(long)(iVar9 + 1)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(iVar9 + 1)" ( (binary_expression "iVar9 + 1" identifier + number_literal) ))) + number_literal) ])) ;)) (if_statement "if (lVar8 != 0) {\n      lVar11 = (long)(iVar9 + 1);\n      do {\n        iVar9 = (int)lVar11;\n        plVar12[lVar11 + 6] = lVar8;\n        if (1 < iVar9) break;\n        lVar8 = plVar12[lVar11 + 8];\n        lVar11 = lVar11 + 1;\n      } while (lVar8 != 0);\n    }" if (parenthesized_expression "(lVar8 != 0)" ( (binary_expression "lVar8 != 0" identifier != number_literal) )) (compound_statement "{\n      lVar11 = (long)(iVar9 + 1);\n      do {\n        iVar9 = (int)lVar11;\n        plVar12[lVar11 + 6] = lVar8;\n        if (1 < iVar9) break;\n        lVar8 = plVar12[lVar11 + 8];\n        lVar11 = lVar11 + 1;\n      } while (lVar8 != 0);\n    }" { (expression_statement "lVar11 = (long)(iVar9 + 1);" (assignment_expression "lVar11 = (long)(iVar9 + 1)" identifier = (cast_expression "(long)(iVar9 + 1)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(iVar9 + 1)" ( (binary_expression "iVar9 + 1" identifier + number_literal) )))) ;) (do_statement "do {\n        iVar9 = (int)lVar11;\n        plVar12[lVar11 + 6] = lVar8;\n        if (1 < iVar9) break;\n        lVar8 = plVar12[lVar11 + 8];\n        lVar11 = lVar11 + 1;\n      } while (lVar8 != 0);" do (compound_statement "{\n        iVar9 = (int)lVar11;\n        plVar12[lVar11 + 6] = lVar8;\n        if (1 < iVar9) break;\n        lVar8 = plVar12[lVar11 + 8];\n        lVar11 = lVar11 + 1;\n      }" { (expression_statement "iVar9 = (int)lVar11;" (assignment_expression "iVar9 = (int)lVar11" identifier = (cast_expression "(int)lVar11" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "plVar12[lVar11 + 6] = lVar8;" (assignment_expression "plVar12[lVar11 + 6] = lVar8" (subscript_expression "plVar12[lVar11 + 6]" identifier [ (binary_expression "lVar11 + 6" identifier + number_literal) ]) = identifier) ;) (if_statement "if (1 < iVar9) break;" if (parenthesized_expression "(1 < iVar9)" ( (binary_expression "1 < iVar9" number_literal < identifier) )) (break_statement "break;" break ;)) (expression_statement "lVar8 = plVar12[lVar11 + 8];" (assignment_expression "lVar8 = plVar12[lVar11 + 8]" identifier = (subscript_expression "plVar12[lVar11 + 8]" identifier [ (binary_expression "lVar11 + 8" identifier + number_literal) ])) ;) (expression_statement "lVar11 = lVar11 + 1;" (assignment_expression "lVar11 = lVar11 + 1" identifier = (binary_expression "lVar11 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar8 != 0)" ( (binary_expression "lVar8 != 0" identifier != number_literal) )) ;) })) (expression_statement "plVar12[(long)iVar9 + 7] = 0;" (assignment_expression "plVar12[(long)iVar9 + 7] = 0" (subscript_expression "plVar12[(long)iVar9 + 7]" identifier [ (binary_expression "(long)iVar9 + 7" (cast_expression "(long)iVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ]) = number_literal) ;) (if_statement "if (lVar6 == 0) {\n      return lVar15;\n    }" if (parenthesized_expression "(lVar6 == 0)" ( (binary_expression "lVar6 == 0" identifier == number_literal) )) (compound_statement "{\n      return lVar15;\n    }" { (return_statement "return lVar15;" return identifier ;) })) }) (else_clause "else {\n    plVar12[(long)iVar9 + 7] = 0;\n  }" else (compound_statement "{\n    plVar12[(long)iVar9 + 7] = 0;\n  }" { (expression_statement "plVar12[(long)iVar9 + 7] = 0;" (assignment_expression "plVar12[(long)iVar9 + 7] = 0" (subscript_expression "plVar12[(long)iVar9 + 7]" identifier [ (binary_expression "(long)iVar9 + 7" (cast_expression "(long)iVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ]) = number_literal) ;) })))) (do_statement "do {\n    iVar9 = 0;\n    if ((*(long **)(lVar6 + 8) != plVar12) && (iVar9 = 1, *(long **)(lVar6 + 0x10) != plVar12)) {\n      iVar9 = (*(long **)(lVar6 + 0x18) != plVar12) + 2;\n    }\n    piVar1 = (int *)(lVar6 + 0x28 + (long)iVar9 * 4);\n    *piVar1 = *piVar1 + -1;\n    plVar12 = (long *)*plVar12;\n    lVar6 = *plVar12;\n  } while (lVar6 != 0);" do (compound_statement "{\n    iVar9 = 0;\n    if ((*(long **)(lVar6 + 8) != plVar12) && (iVar9 = 1, *(long **)(lVar6 + 0x10) != plVar12)) {\n      iVar9 = (*(long **)(lVar6 + 0x18) != plVar12) + 2;\n    }\n    piVar1 = (int *)(lVar6 + 0x28 + (long)iVar9 * 4);\n    *piVar1 = *piVar1 + -1;\n    plVar12 = (long *)*plVar12;\n    lVar6 = *plVar12;\n  }" { (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" identifier = number_literal) ;) (if_statement "if ((*(long **)(lVar6 + 8) != plVar12) && (iVar9 = 1, *(long **)(lVar6 + 0x10) != plVar12)) {\n      iVar9 = (*(long **)(lVar6 + 0x18) != plVar12) + 2;\n    }" if (parenthesized_expression "((*(long **)(lVar6 + 8) != plVar12) && (iVar9 = 1, *(long **)(lVar6 + 0x10) != plVar12))" ( (binary_expression "(*(long **)(lVar6 + 8) != plVar12) && (iVar9 = 1, *(long **)(lVar6 + 0x10) != plVar12)" (parenthesized_expression "(*(long **)(lVar6 + 8) != plVar12)" ( (binary_expression "*(long **)(lVar6 + 8) != plVar12" (pointer_expression "*(long **)(lVar6 + 8)" * (cast_expression "(long **)(lVar6 + 8)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar6 + 8)" ( (binary_expression "lVar6 + 8" identifier + number_literal) )))) != identifier) )) && (parenthesized_expression "(iVar9 = 1, *(long **)(lVar6 + 0x10) != plVar12)" ( (comma_expression "iVar9 = 1, *(long **)(lVar6 + 0x10) != plVar12" (assignment_expression "iVar9 = 1" identifier = number_literal) , (binary_expression "*(long **)(lVar6 + 0x10) != plVar12" (pointer_expression "*(long **)(lVar6 + 0x10)" * (cast_expression "(long **)(lVar6 + 0x10)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar6 + 0x10)" ( (binary_expression "lVar6 + 0x10" identifier + number_literal) )))) != identifier)) ))) )) (compound_statement "{\n      iVar9 = (*(long **)(lVar6 + 0x18) != plVar12) + 2;\n    }" { (expression_statement "iVar9 = (*(long **)(lVar6 + 0x18) != plVar12) + 2;" (assignment_expression "iVar9 = (*(long **)(lVar6 + 0x18) != plVar12) + 2" identifier = (binary_expression "(*(long **)(lVar6 + 0x18) != plVar12) + 2" (parenthesized_expression "(*(long **)(lVar6 + 0x18) != plVar12)" ( (binary_expression "*(long **)(lVar6 + 0x18) != plVar12" (pointer_expression "*(long **)(lVar6 + 0x18)" * (cast_expression "(long **)(lVar6 + 0x18)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar6 + 0x18)" ( (binary_expression "lVar6 + 0x18" identifier + number_literal) )))) != identifier) )) + number_literal)) ;) })) (expression_statement "piVar1 = (int *)(lVar6 + 0x28 + (long)iVar9 * 4);" (assignment_expression "piVar1 = (int *)(lVar6 + 0x28 + (long)iVar9 * 4)" identifier = (cast_expression "(int *)(lVar6 + 0x28 + (long)iVar9 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x28 + (long)iVar9 * 4)" ( (binary_expression "lVar6 + 0x28 + (long)iVar9 * 4" (binary_expression "lVar6 + 0x28" identifier + number_literal) + (binary_expression "(long)iVar9 * 4" (cast_expression "(long)iVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) 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)) ;) (expression_statement "plVar12 = (long *)*plVar12;" (assignment_expression "plVar12 = (long *)*plVar12" identifier = (cast_expression "(long *)*plVar12" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar12" * identifier))) ;) (expression_statement "lVar6 = *plVar12;" (assignment_expression "lVar6 = *plVar12" identifier = (pointer_expression "*plVar12" * identifier)) ;) }) while (parenthesized_expression "(lVar6 != 0)" ( (binary_expression "lVar6 != 0" identifier != number_literal) )) ;) (return_statement "return lVar15;" return identifier ;) })))
(translation_unit (function_definition (sized_type_specifier long) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (labeled_statement statement_identifier : (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT != (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) + LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;))) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) + LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) + LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) }))) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression (parenthesized_expression ( (binary_expression IDENT + IDENT) )) [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression IDENT * LIT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (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 + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_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 * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = 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 IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + (binary_expression IDENT * LIT)) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + (binary_expression IDENT * LIT)) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + (binary_expression IDENT * LIT)) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT + IDENT) )) - IDENT)) ;) })) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) ])) ;)) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (return_statement return IDENT ;) })) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) ]) = LIT) ;) (return_statement return IDENT ;) })) (goto_statement goto statement_identifier ;) })))) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) ))) )) (goto_statement goto statement_identifier ;)))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) ]))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) ]))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) * LIT)) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (subscript_expression IDENT [ (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) ])) , (binary_expression IDENT != LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) = (subscript_expression IDENT [ (binary_expression IDENT + LIT) ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + (binary_expression IDENT * LIT)) + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + (binary_expression IDENT * LIT)) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ (binary_expression IDENT + LIT) ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))) * LIT)) + LIT) )))) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) + (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) + LIT)) ;) }) (else_clause else (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) }) (else_clause else (compound_statement { (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) != (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) == (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) , (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) == (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT))) ))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) , (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) == (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) })) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) , (binary_expression IDENT == LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) * LIT)) + LIT) )))) + LIT)) ;) }))) (goto_statement goto statement_identifier ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;)) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (cast_expression ( (type_descriptor TYPE) ) 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 * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))) * LIT)) )))) = 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 IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + (binary_expression IDENT * LIT)) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + (binary_expression IDENT * LIT)) + LIT) )))) = IDENT) ;) (goto_statement goto statement_identifier ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;)) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + LIT) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (cast_expression ( (type_descriptor TYPE) ) IDENT)) * LIT)) + LIT) )))))) ;) })) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (cast_expression ( (type_descriptor TYPE) ) IDENT)) + LIT) ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (cast_expression ( (type_descriptor TYPE) ) IDENT)) + LIT) ]))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (cast_expression ( (type_descriptor TYPE) ) IDENT)) + LIT) ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) + LIT) )))) = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (cast_expression ( (type_descriptor TYPE) ) IDENT)) + 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)) ) (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + (binary_expression IDENT * LIT)) + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + (binary_expression IDENT * LIT)) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT - LIT) ))) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ (binary_expression IDENT + LIT) ])) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ (binary_expression IDENT + LIT) ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + (binary_expression IDENT * LIT)) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) = LIT) ;) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (cast_expression ( (type_descriptor TYPE) ) IDENT)) + LIT) ]) = LIT) ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (cast_expression ( (type_descriptor TYPE) ) IDENT)) * LIT)) + LIT) )))) = LIT) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) })) (goto_statement goto statement_identifier ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (parenthesized_expression ( (binary_expression IDENT + 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)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ (binary_expression IDENT + LIT) ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) ]) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return IDENT ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) ]) = LIT) ;) })))) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != IDENT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = LIT) , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != IDENT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != IDENT) )) + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) * LIT)) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (return_statement return IDENT ;) })))
(function_definition "long FUN_0012f7ab(undefined8 *param_1,int param_2)\n\n{\n  int *piVar1;\n  undefined8 *puVar2;\n  undefined4 uVar3;\n  int iVar4;\n  long *plVar5;\n  long lVar6;\n  long *plVar7;\n  long lVar8;\n  int iVar9;\n  long lVar10;\n  long lVar11;\n  long *plVar12;\n  long *plVar13;\n  int iVar14;\n  long lVar15;\n  uint local_54;\n  long local_50;\n  \n  iVar9 = -1;\n  lVar15 = 0;\n  plVar13 = (long *)*param_1;\nLAB_0012f7e4:\n  while (plVar12 = plVar13, plVar12 != (long *)0x0) {\n    if (param_2 < (int)plVar12[5]) goto LAB_0012f7d1;\n    param_2 = param_2 - ((int)plVar12[5] + 1);\n    if (param_2 < 0) {\n      iVar9 = 0;\nLAB_0012fdee:\n      if (lVar15 == 0) goto LAB_0012fdf7;\n      goto LAB_0012fa63;\n    }\n    if (param_2 < *(int *)((long)plVar12 + 0x2c)) {\n      local_54 = 1;\n    }\n    else {\n      param_2 = param_2 - (*(int *)((long)plVar12 + 0x2c) + 1);\n      if (param_2 < 0) {\n        iVar9 = 1;\n        goto LAB_0012fdee;\n      }\n      if (param_2 < (int)plVar12[6]) {\n        local_54 = 2;\n      }\n      else {\n        param_2 = param_2 - ((int)plVar12[6] + 1);\n        if (param_2 < 0) {\n          iVar9 = 2;\n          goto LAB_0012fdee;\n        }\n        local_54 = 3;\n      }\n    }\n    lVar6 = (long)(int)local_54;\n    plVar7 = plVar12 + lVar6;\n    plVar13 = (long *)plVar7[1];\n    if (plVar13[8] == 0) {\n      lVar8 = *plVar7;\n      if (*(long *)(lVar8 + 0x40) == 0) {\n        if (local_54 < 3) {\n          local_50 = (long)(int)local_54;\n          lVar6 = (plVar12 + local_50)[2];\n          plVar7 = plVar12 + local_50;\n          if (lVar6 == 0) goto LAB_0012f905;\n          goto LAB_0012fe3f;\n        }\n        goto LAB_0012f905;\n      }\n      lVar11 = *(long *)(lVar8 + 0x48);\n      plVar13[3] = plVar13[2];\n      *(undefined4 *)(plVar13 + 6) = *(undefined4 *)((long)plVar13 + 0x2c);\n      plVar13[8] = plVar13[7];\n      plVar13[2] = plVar13[1];\n      *(int *)((long)plVar13 + 0x2c) = (int)plVar13[5];\n      plVar13[7] = plVar7[6];\n      lVar10 = (long)(int)((lVar11 != 0) + 1);\n      lVar11 = lVar8 + lVar10 * 8;\n      puVar2 = *(undefined8 **)(lVar11 + 0x10);\n      plVar13[1] = (long)puVar2;\n      lVar10 = lVar8 + lVar10 * 4;\n      *(undefined4 *)(plVar13 + 5) = *(undefined4 *)(lVar10 + 0x2c);\n      if (puVar2 != (undefined8 *)0x0) {\n        *puVar2 = plVar13;\n      }\n      plVar7[6] = *(long *)(lVar11 + 0x38);\n      *(undefined8 *)(lVar11 + 0x10) = 0;\n      *(undefined4 *)(lVar10 + 0x2c) = 0;\n      *(undefined8 *)(lVar11 + 0x38) = 0;\n      uVar3 = FUN_0012ef67(plVar13);\n      *(undefined4 *)((long)plVar12 + lVar6 * 4 + 0x28) = uVar3;\n      iVar14 = *(int *)((long)plVar12 + lVar6 * 4 + 0x24);\n      iVar4 = FUN_0012ef67(lVar8);\n      *(int *)((long)plVar12 + lVar6 * 4 + 0x24) = iVar4;\n      param_2 = (param_2 + iVar14) - iVar4;\n    }\n  }\n  if (lVar15 == 0) {\nLAB_0012fdf7:\n    lVar15 = plVar12[(long)iVar9 + 7];\n  }\n  if (iVar9 == -1) {\n    return 0;\n  }\nLAB_0012fa63:\n  lVar6 = *plVar12;\n  if (lVar6 == 0) {\n    if (plVar12[8] == 0) {\n      if (plVar12[1] == 0) {\n        FUN_0010c4d3(plVar12);\n        *param_1 = 0;\n        return lVar15;\n      }\n    }\n    else if (plVar12[1] == 0) {\n      lVar6 = 0;\n      if (1 < iVar9) {\n        plVar12[(long)iVar9 + 7] = 0;\n        return lVar15;\n      }\n      goto LAB_0012fbac;\n    }\n  }\n  else if ((plVar12[1] == 0) && (plVar12[8] != 0)) goto code_r0x0012fc20;\n  plVar13 = (long *)plVar12[(long)iVar9 + 1];\n  plVar7 = plVar13;\n  if (plVar13[8] == 0) {\n    plVar7 = (long *)plVar12[(long)iVar9 + 2];\n    plVar5 = plVar7;\n    if (plVar7[8] == 0) {\n      plVar13[8] = plVar12[(long)iVar9 + 7];\n      puVar2 = (undefined8 *)plVar7[1];\n      plVar13[3] = (long)puVar2;\n      *(int *)(plVar13 + 6) = (int)plVar7[5];\n      if (puVar2 != (undefined8 *)0x0) {\n        *puVar2 = plVar13;\n      }\n      plVar13[9] = plVar7[7];\n      puVar2 = (undefined8 *)plVar7[2];\n      plVar13[4] = (long)puVar2;\n      *(undefined4 *)((long)plVar13 + 0x34) = *(undefined4 *)((long)plVar7 + 0x2c);\n      if (puVar2 != (undefined8 *)0x0) {\n        *puVar2 = plVar13;\n      }\n      FUN_0010c4d3();\n      uVar3 = FUN_0012ef67(plVar13);\n      *(undefined4 *)((long)plVar12 + (long)iVar9 * 4 + 0x28) = uVar3;\n      iVar14 = iVar9;\n      if ((iVar9 < 2) && (lVar6 = plVar12[(long)iVar9 + 8], lVar6 != 0)) {\n        lVar8 = (long)(iVar9 + 1);\n        do {\n          iVar14 = (int)lVar8;\n          plVar12[lVar8 + 6] = lVar6;\n          plVar12[lVar8 + 1] = plVar12[lVar8 + 2];\n          *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28) =\n               *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x2c);\n          if (1 < iVar14) break;\n          lVar6 = plVar12[lVar8 + 8];\n          lVar8 = lVar8 + 1;\n        } while (lVar6 != 0);\n      }\n      plVar12[(long)iVar14 + 7] = 0;\n      plVar12[(long)iVar14 + 2] = 0;\n      *(undefined4 *)((long)plVar12 + (long)(iVar14 + 1) * 4 + 0x28) = 0;\n      if (plVar12[7] == 0) {\n        *param_1 = plVar13;\n        *plVar13 = 0;\n        FUN_0010c4d3(plVar12);\n      }\n      param_2 = *(int *)((long)plVar13 + 0x2c) + (int)plVar13[5] + 1;\n    }\n    else {\n      do {\n        plVar13 = plVar5;\n        plVar5 = (long *)plVar13[1];\n      } while (plVar5 != (long *)0x0);\n      plVar12[(long)iVar9 + 7] = plVar13[7];\n      param_2 = 0;\n      plVar13 = plVar7;\n    }\n  }\n  else {\n    while (plVar5 = plVar7, (long *)plVar5[1] != (long *)0x0) {\n      plVar7 = (long *)plVar5[4];\n      if ((((long *)plVar5[4] == (long *)0x0) &&\n          (plVar7 = (long *)plVar5[3], (long *)plVar5[3] == (long *)0x0)) &&\n         (plVar7 = (long *)plVar5[2], (long *)plVar5[2] == (long *)0x0)) {\n        plVar7 = (long *)plVar5[1];\n      }\n    }\n    lVar6 = plVar5[9];\n    if ((lVar6 == 0) && (lVar6 = plVar5[8], lVar6 == 0)) {\n      lVar6 = plVar5[7];\n    }\n    plVar12[(long)iVar9 + 7] = lVar6;\n    param_2 = *(int *)((long)plVar12 + (long)iVar9 * 4 + 0x28) + -1;\n  }\n  goto LAB_0012f7e4;\nLAB_0012f7d1:\n  plVar13 = (long *)plVar12[1];\n  if (plVar13[8] == 0) {\n    lVar6 = plVar12[2];\n    local_50 = 0;\n    local_54 = 0;\n    plVar7 = plVar12;\n    if (lVar6 != 0) {\nLAB_0012fe3f:\n      if (*(long *)(lVar6 + 0x40) != 0) {\n        plVar13[8] = plVar7[7];\n        puVar2 = *(undefined8 **)(lVar6 + 8);\n        plVar13[3] = (long)puVar2;\n        *(undefined4 *)(plVar13 + 6) = *(undefined4 *)(lVar6 + 0x28);\n        if (puVar2 != (undefined8 *)0x0) {\n          *puVar2 = plVar13;\n        }\n        plVar7[7] = *(long *)(lVar6 + 0x38);\n        *(undefined8 *)(lVar6 + 8) = *(undefined8 *)(lVar6 + 0x10);\n        *(undefined4 *)(lVar6 + 0x28) = *(undefined4 *)(lVar6 + 0x2c);\n        lVar8 = *(long *)(lVar6 + 0x40);\n        if (lVar8 != 0) {\n          *(undefined8 *)(lVar6 + 0x10) = *(undefined8 *)(lVar6 + 0x18);\n          *(undefined4 *)(lVar6 + 0x2c) = *(undefined4 *)(lVar6 + 0x30);\n          *(long *)(lVar6 + 0x38) = lVar8;\n          if (*(long *)(lVar6 + 0x48) == 0) {\n            lVar8 = 1;\n          }\n          else {\n            *(undefined8 *)(lVar6 + 0x18) = *(undefined8 *)(lVar6 + 0x20);\n            *(undefined4 *)(lVar6 + 0x30) = *(undefined4 *)(lVar6 + 0x34);\n            *(long *)(lVar6 + 0x40) = *(long *)(lVar6 + 0x48);\n            lVar8 = 2;\n          }\n        }\n        lVar11 = lVar6 + (long)(int)lVar8 * 8;\n        *(undefined8 *)(lVar11 + 0x10) = 0;\n        *(undefined4 *)(lVar6 + 0x28 + (long)((int)lVar8 + 1) * 4) = 0;\n        *(undefined8 *)(lVar11 + 0x38) = 0;\n        uVar3 = FUN_0012ef67(plVar13);\n        *(undefined4 *)((long)plVar12 + local_50 * 4 + 0x28) = uVar3;\n        uVar3 = FUN_0012ef67(lVar6);\n        *(undefined4 *)((long)plVar12 + local_50 * 4 + 0x2c) = uVar3;\n        goto LAB_0012f7e4;\n      }\n      if (local_54 != 0) {\nLAB_0012f905:\n        local_54 = local_54 - 1;\n        param_2 = param_2 + 1 + *(int *)((long)plVar12 + (long)(int)local_54 * 4 + 0x28);\n      }\n    }\n    lVar6 = plVar12[(long)(int)local_54 + 1];\n    plVar13 = (long *)plVar12[(long)(int)local_54 + 2];\n    plVar13[4] = plVar13[2];\n    *(undefined4 *)((long)plVar13 + 0x34) = *(undefined4 *)((long)plVar13 + 0x2c);\n    plVar13[9] = plVar13[7];\n    plVar13[3] = plVar13[1];\n    *(int *)(plVar13 + 6) = (int)plVar13[5];\n    plVar13[8] = plVar12[(long)(int)local_54 + 7];\n    puVar2 = *(undefined8 **)(lVar6 + 0x10);\n    plVar13[2] = (long)puVar2;\n    *(undefined4 *)((long)plVar13 + 0x2c) = *(undefined4 *)(lVar6 + 0x2c);\n    if (puVar2 != (undefined8 *)0x0) {\n      *puVar2 = plVar13;\n    }\n    plVar13[7] = *(long *)(lVar6 + 0x38);\n    puVar2 = *(undefined8 **)(lVar6 + 8);\n    plVar13[1] = (long)puVar2;\n    *(undefined4 *)(plVar13 + 5) = *(undefined4 *)(lVar6 + 0x28);\n    if (puVar2 != (undefined8 *)0x0) {\n      *puVar2 = plVar13;\n    }\n    uVar3 = FUN_0012ef67(plVar13);\n    *(undefined4 *)((long)plVar12 + (long)(int)(local_54 + 1) * 4 + 0x28) = uVar3;\n    FUN_0010c4d3(lVar6);\n    if ((int)local_54 < 3) {\n      lVar6 = plVar12[(long)(int)local_54 + 2];\n      if (lVar6 != 0) {\n        lVar8 = (long)(int)(local_54 + 1);\n        do {\n          local_54 = (uint)lVar8;\n          plVar12[lVar8] = lVar6;\n          *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x24) =\n               *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28);\n          lVar6 = 0;\n          if ((int)(local_54 - 1) < 2) {\n            lVar6 = plVar12[lVar8 + 7];\n          }\n          plVar12[lVar8 + 6] = lVar6;\n          if (2 < (int)local_54) goto LAB_0012fd6d;\n          lVar6 = plVar12[lVar8 + 2];\n          lVar8 = lVar8 + 1;\n        } while (lVar6 != 0);\n      }\n      lVar6 = (long)(int)local_54;\n      plVar12[lVar6 + 1] = 0;\n      *(undefined4 *)((long)plVar12 + lVar6 * 4 + 0x28) = 0;\n      plVar12[lVar6 + 7] = 0;\n    }\n    else {\nLAB_0012fd6d:\n      plVar12[(long)(int)local_54 + 1] = 0;\n      *(undefined4 *)((long)plVar12 + (long)(int)local_54 * 4 + 0x28) = 0;\n    }\n    if (plVar12[7] == 0) {\n      *param_1 = plVar13;\n      *plVar13 = 0;\n      FUN_0010c4d3(plVar12);\n    }\n  }\n  goto LAB_0012f7e4;\ncode_r0x0012fc20:\n  if (iVar9 < 2) {\nLAB_0012fbac:\n    lVar8 = plVar12[(long)(iVar9 + 1) + 7];\n    if (lVar8 != 0) {\n      lVar11 = (long)(iVar9 + 1);\n      do {\n        iVar9 = (int)lVar11;\n        plVar12[lVar11 + 6] = lVar8;\n        if (1 < iVar9) break;\n        lVar8 = plVar12[lVar11 + 8];\n        lVar11 = lVar11 + 1;\n      } while (lVar8 != 0);\n    }\n    plVar12[(long)iVar9 + 7] = 0;\n    if (lVar6 == 0) {\n      return lVar15;\n    }\n  }\n  else {\n    plVar12[(long)iVar9 + 7] = 0;\n  }\n  do {\n    iVar9 = 0;\n    if ((*(long **)(lVar6 + 8) != plVar12) && (iVar9 = 1, *(long **)(lVar6 + 0x10) != plVar12)) {\n      iVar9 = (*(long **)(lVar6 + 0x18) != plVar12) + 2;\n    }\n    piVar1 = (int *)(lVar6 + 0x28 + (long)iVar9 * 4);\n    *piVar1 = *piVar1 + -1;\n    plVar12 = (long *)*plVar12;\n    lVar6 = *plVar12;\n  } while (lVar6 != 0);\n  return lVar15;\n}" (sized_type_specifier "long" (long "long")) (function_declarator "FUN_0012f7ab(undefined8 *param_1,int param_2)" (identifier "FUN_0012f7ab") (parameter_list "(undefined8 *param_1,int param_2)" (( "(") (parameter_declaration "undefined8 *param_1" (type_identifier "undefined8") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) () ")"))) (compound_statement "{\n  int *piVar1;\n  undefined8 *puVar2;\n  undefined4 uVar3;\n  int iVar4;\n  long *plVar5;\n  long lVar6;\n  long *plVar7;\n  long lVar8;\n  int iVar9;\n  long lVar10;\n  long lVar11;\n  long *plVar12;\n  long *plVar13;\n  int iVar14;\n  long lVar15;\n  uint local_54;\n  long local_50;\n  \n  iVar9 = -1;\n  lVar15 = 0;\n  plVar13 = (long *)*param_1;\nLAB_0012f7e4:\n  while (plVar12 = plVar13, plVar12 != (long *)0x0) {\n    if (param_2 < (int)plVar12[5]) goto LAB_0012f7d1;\n    param_2 = param_2 - ((int)plVar12[5] + 1);\n    if (param_2 < 0) {\n      iVar9 = 0;\nLAB_0012fdee:\n      if (lVar15 == 0) goto LAB_0012fdf7;\n      goto LAB_0012fa63;\n    }\n    if (param_2 < *(int *)((long)plVar12 + 0x2c)) {\n      local_54 = 1;\n    }\n    else {\n      param_2 = param_2 - (*(int *)((long)plVar12 + 0x2c) + 1);\n      if (param_2 < 0) {\n        iVar9 = 1;\n        goto LAB_0012fdee;\n      }\n      if (param_2 < (int)plVar12[6]) {\n        local_54 = 2;\n      }\n      else {\n        param_2 = param_2 - ((int)plVar12[6] + 1);\n        if (param_2 < 0) {\n          iVar9 = 2;\n          goto LAB_0012fdee;\n        }\n        local_54 = 3;\n      }\n    }\n    lVar6 = (long)(int)local_54;\n    plVar7 = plVar12 + lVar6;\n    plVar13 = (long *)plVar7[1];\n    if (plVar13[8] == 0) {\n      lVar8 = *plVar7;\n      if (*(long *)(lVar8 + 0x40) == 0) {\n        if (local_54 < 3) {\n          local_50 = (long)(int)local_54;\n          lVar6 = (plVar12 + local_50)[2];\n          plVar7 = plVar12 + local_50;\n          if (lVar6 == 0) goto LAB_0012f905;\n          goto LAB_0012fe3f;\n        }\n        goto LAB_0012f905;\n      }\n      lVar11 = *(long *)(lVar8 + 0x48);\n      plVar13[3] = plVar13[2];\n      *(undefined4 *)(plVar13 + 6) = *(undefined4 *)((long)plVar13 + 0x2c);\n      plVar13[8] = plVar13[7];\n      plVar13[2] = plVar13[1];\n      *(int *)((long)plVar13 + 0x2c) = (int)plVar13[5];\n      plVar13[7] = plVar7[6];\n      lVar10 = (long)(int)((lVar11 != 0) + 1);\n      lVar11 = lVar8 + lVar10 * 8;\n      puVar2 = *(undefined8 **)(lVar11 + 0x10);\n      plVar13[1] = (long)puVar2;\n      lVar10 = lVar8 + lVar10 * 4;\n      *(undefined4 *)(plVar13 + 5) = *(undefined4 *)(lVar10 + 0x2c);\n      if (puVar2 != (undefined8 *)0x0) {\n        *puVar2 = plVar13;\n      }\n      plVar7[6] = *(long *)(lVar11 + 0x38);\n      *(undefined8 *)(lVar11 + 0x10) = 0;\n      *(undefined4 *)(lVar10 + 0x2c) = 0;\n      *(undefined8 *)(lVar11 + 0x38) = 0;\n      uVar3 = FUN_0012ef67(plVar13);\n      *(undefined4 *)((long)plVar12 + lVar6 * 4 + 0x28) = uVar3;\n      iVar14 = *(int *)((long)plVar12 + lVar6 * 4 + 0x24);\n      iVar4 = FUN_0012ef67(lVar8);\n      *(int *)((long)plVar12 + lVar6 * 4 + 0x24) = iVar4;\n      param_2 = (param_2 + iVar14) - iVar4;\n    }\n  }\n  if (lVar15 == 0) {\nLAB_0012fdf7:\n    lVar15 = plVar12[(long)iVar9 + 7];\n  }\n  if (iVar9 == -1) {\n    return 0;\n  }\nLAB_0012fa63:\n  lVar6 = *plVar12;\n  if (lVar6 == 0) {\n    if (plVar12[8] == 0) {\n      if (plVar12[1] == 0) {\n        FUN_0010c4d3(plVar12);\n        *param_1 = 0;\n        return lVar15;\n      }\n    }\n    else if (plVar12[1] == 0) {\n      lVar6 = 0;\n      if (1 < iVar9) {\n        plVar12[(long)iVar9 + 7] = 0;\n        return lVar15;\n      }\n      goto LAB_0012fbac;\n    }\n  }\n  else if ((plVar12[1] == 0) && (plVar12[8] != 0)) goto code_r0x0012fc20;\n  plVar13 = (long *)plVar12[(long)iVar9 + 1];\n  plVar7 = plVar13;\n  if (plVar13[8] == 0) {\n    plVar7 = (long *)plVar12[(long)iVar9 + 2];\n    plVar5 = plVar7;\n    if (plVar7[8] == 0) {\n      plVar13[8] = plVar12[(long)iVar9 + 7];\n      puVar2 = (undefined8 *)plVar7[1];\n      plVar13[3] = (long)puVar2;\n      *(int *)(plVar13 + 6) = (int)plVar7[5];\n      if (puVar2 != (undefined8 *)0x0) {\n        *puVar2 = plVar13;\n      }\n      plVar13[9] = plVar7[7];\n      puVar2 = (undefined8 *)plVar7[2];\n      plVar13[4] = (long)puVar2;\n      *(undefined4 *)((long)plVar13 + 0x34) = *(undefined4 *)((long)plVar7 + 0x2c);\n      if (puVar2 != (undefined8 *)0x0) {\n        *puVar2 = plVar13;\n      }\n      FUN_0010c4d3();\n      uVar3 = FUN_0012ef67(plVar13);\n      *(undefined4 *)((long)plVar12 + (long)iVar9 * 4 + 0x28) = uVar3;\n      iVar14 = iVar9;\n      if ((iVar9 < 2) && (lVar6 = plVar12[(long)iVar9 + 8], lVar6 != 0)) {\n        lVar8 = (long)(iVar9 + 1);\n        do {\n          iVar14 = (int)lVar8;\n          plVar12[lVar8 + 6] = lVar6;\n          plVar12[lVar8 + 1] = plVar12[lVar8 + 2];\n          *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28) =\n               *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x2c);\n          if (1 < iVar14) break;\n          lVar6 = plVar12[lVar8 + 8];\n          lVar8 = lVar8 + 1;\n        } while (lVar6 != 0);\n      }\n      plVar12[(long)iVar14 + 7] = 0;\n      plVar12[(long)iVar14 + 2] = 0;\n      *(undefined4 *)((long)plVar12 + (long)(iVar14 + 1) * 4 + 0x28) = 0;\n      if (plVar12[7] == 0) {\n        *param_1 = plVar13;\n        *plVar13 = 0;\n        FUN_0010c4d3(plVar12);\n      }\n      param_2 = *(int *)((long)plVar13 + 0x2c) + (int)plVar13[5] + 1;\n    }\n    else {\n      do {\n        plVar13 = plVar5;\n        plVar5 = (long *)plVar13[1];\n      } while (plVar5 != (long *)0x0);\n      plVar12[(long)iVar9 + 7] = plVar13[7];\n      param_2 = 0;\n      plVar13 = plVar7;\n    }\n  }\n  else {\n    while (plVar5 = plVar7, (long *)plVar5[1] != (long *)0x0) {\n      plVar7 = (long *)plVar5[4];\n      if ((((long *)plVar5[4] == (long *)0x0) &&\n          (plVar7 = (long *)plVar5[3], (long *)plVar5[3] == (long *)0x0)) &&\n         (plVar7 = (long *)plVar5[2], (long *)plVar5[2] == (long *)0x0)) {\n        plVar7 = (long *)plVar5[1];\n      }\n    }\n    lVar6 = plVar5[9];\n    if ((lVar6 == 0) && (lVar6 = plVar5[8], lVar6 == 0)) {\n      lVar6 = plVar5[7];\n    }\n    plVar12[(long)iVar9 + 7] = lVar6;\n    param_2 = *(int *)((long)plVar12 + (long)iVar9 * 4 + 0x28) + -1;\n  }\n  goto LAB_0012f7e4;\nLAB_0012f7d1:\n  plVar13 = (long *)plVar12[1];\n  if (plVar13[8] == 0) {\n    lVar6 = plVar12[2];\n    local_50 = 0;\n    local_54 = 0;\n    plVar7 = plVar12;\n    if (lVar6 != 0) {\nLAB_0012fe3f:\n      if (*(long *)(lVar6 + 0x40) != 0) {\n        plVar13[8] = plVar7[7];\n        puVar2 = *(undefined8 **)(lVar6 + 8);\n        plVar13[3] = (long)puVar2;\n        *(undefined4 *)(plVar13 + 6) = *(undefined4 *)(lVar6 + 0x28);\n        if (puVar2 != (undefined8 *)0x0) {\n          *puVar2 = plVar13;\n        }\n        plVar7[7] = *(long *)(lVar6 + 0x38);\n        *(undefined8 *)(lVar6 + 8) = *(undefined8 *)(lVar6 + 0x10);\n        *(undefined4 *)(lVar6 + 0x28) = *(undefined4 *)(lVar6 + 0x2c);\n        lVar8 = *(long *)(lVar6 + 0x40);\n        if (lVar8 != 0) {\n          *(undefined8 *)(lVar6 + 0x10) = *(undefined8 *)(lVar6 + 0x18);\n          *(undefined4 *)(lVar6 + 0x2c) = *(undefined4 *)(lVar6 + 0x30);\n          *(long *)(lVar6 + 0x38) = lVar8;\n          if (*(long *)(lVar6 + 0x48) == 0) {\n            lVar8 = 1;\n          }\n          else {\n            *(undefined8 *)(lVar6 + 0x18) = *(undefined8 *)(lVar6 + 0x20);\n            *(undefined4 *)(lVar6 + 0x30) = *(undefined4 *)(lVar6 + 0x34);\n            *(long *)(lVar6 + 0x40) = *(long *)(lVar6 + 0x48);\n            lVar8 = 2;\n          }\n        }\n        lVar11 = lVar6 + (long)(int)lVar8 * 8;\n        *(undefined8 *)(lVar11 + 0x10) = 0;\n        *(undefined4 *)(lVar6 + 0x28 + (long)((int)lVar8 + 1) * 4) = 0;\n        *(undefined8 *)(lVar11 + 0x38) = 0;\n        uVar3 = FUN_0012ef67(plVar13);\n        *(undefined4 *)((long)plVar12 + local_50 * 4 + 0x28) = uVar3;\n        uVar3 = FUN_0012ef67(lVar6);\n        *(undefined4 *)((long)plVar12 + local_50 * 4 + 0x2c) = uVar3;\n        goto LAB_0012f7e4;\n      }\n      if (local_54 != 0) {\nLAB_0012f905:\n        local_54 = local_54 - 1;\n        param_2 = param_2 + 1 + *(int *)((long)plVar12 + (long)(int)local_54 * 4 + 0x28);\n      }\n    }\n    lVar6 = plVar12[(long)(int)local_54 + 1];\n    plVar13 = (long *)plVar12[(long)(int)local_54 + 2];\n    plVar13[4] = plVar13[2];\n    *(undefined4 *)((long)plVar13 + 0x34) = *(undefined4 *)((long)plVar13 + 0x2c);\n    plVar13[9] = plVar13[7];\n    plVar13[3] = plVar13[1];\n    *(int *)(plVar13 + 6) = (int)plVar13[5];\n    plVar13[8] = plVar12[(long)(int)local_54 + 7];\n    puVar2 = *(undefined8 **)(lVar6 + 0x10);\n    plVar13[2] = (long)puVar2;\n    *(undefined4 *)((long)plVar13 + 0x2c) = *(undefined4 *)(lVar6 + 0x2c);\n    if (puVar2 != (undefined8 *)0x0) {\n      *puVar2 = plVar13;\n    }\n    plVar13[7] = *(long *)(lVar6 + 0x38);\n    puVar2 = *(undefined8 **)(lVar6 + 8);\n    plVar13[1] = (long)puVar2;\n    *(undefined4 *)(plVar13 + 5) = *(undefined4 *)(lVar6 + 0x28);\n    if (puVar2 != (undefined8 *)0x0) {\n      *puVar2 = plVar13;\n    }\n    uVar3 = FUN_0012ef67(plVar13);\n    *(undefined4 *)((long)plVar12 + (long)(int)(local_54 + 1) * 4 + 0x28) = uVar3;\n    FUN_0010c4d3(lVar6);\n    if ((int)local_54 < 3) {\n      lVar6 = plVar12[(long)(int)local_54 + 2];\n      if (lVar6 != 0) {\n        lVar8 = (long)(int)(local_54 + 1);\n        do {\n          local_54 = (uint)lVar8;\n          plVar12[lVar8] = lVar6;\n          *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x24) =\n               *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28);\n          lVar6 = 0;\n          if ((int)(local_54 - 1) < 2) {\n            lVar6 = plVar12[lVar8 + 7];\n          }\n          plVar12[lVar8 + 6] = lVar6;\n          if (2 < (int)local_54) goto LAB_0012fd6d;\n          lVar6 = plVar12[lVar8 + 2];\n          lVar8 = lVar8 + 1;\n        } while (lVar6 != 0);\n      }\n      lVar6 = (long)(int)local_54;\n      plVar12[lVar6 + 1] = 0;\n      *(undefined4 *)((long)plVar12 + lVar6 * 4 + 0x28) = 0;\n      plVar12[lVar6 + 7] = 0;\n    }\n    else {\nLAB_0012fd6d:\n      plVar12[(long)(int)local_54 + 1] = 0;\n      *(undefined4 *)((long)plVar12 + (long)(int)local_54 * 4 + 0x28) = 0;\n    }\n    if (plVar12[7] == 0) {\n      *param_1 = plVar13;\n      *plVar13 = 0;\n      FUN_0010c4d3(plVar12);\n    }\n  }\n  goto LAB_0012f7e4;\ncode_r0x0012fc20:\n  if (iVar9 < 2) {\nLAB_0012fbac:\n    lVar8 = plVar12[(long)(iVar9 + 1) + 7];\n    if (lVar8 != 0) {\n      lVar11 = (long)(iVar9 + 1);\n      do {\n        iVar9 = (int)lVar11;\n        plVar12[lVar11 + 6] = lVar8;\n        if (1 < iVar9) break;\n        lVar8 = plVar12[lVar11 + 8];\n        lVar11 = lVar11 + 1;\n      } while (lVar8 != 0);\n    }\n    plVar12[(long)iVar9 + 7] = 0;\n    if (lVar6 == 0) {\n      return lVar15;\n    }\n  }\n  else {\n    plVar12[(long)iVar9 + 7] = 0;\n  }\n  do {\n    iVar9 = 0;\n    if ((*(long **)(lVar6 + 8) != plVar12) && (iVar9 = 1, *(long **)(lVar6 + 0x10) != plVar12)) {\n      iVar9 = (*(long **)(lVar6 + 0x18) != plVar12) + 2;\n    }\n    piVar1 = (int *)(lVar6 + 0x28 + (long)iVar9 * 4);\n    *piVar1 = *piVar1 + -1;\n    plVar12 = (long *)*plVar12;\n    lVar6 = *plVar12;\n  } while (lVar6 != 0);\n  return lVar15;\n}" ({ "{") (declaration "int *piVar1;" (primitive_type "int") (pointer_declarator "*piVar1" (* "*") (identifier "piVar1")) (; ";")) (declaration "undefined8 *puVar2;" (type_identifier "undefined8") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "undefined4 uVar3;" (type_identifier "undefined4") (identifier "uVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "long *plVar5;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar5" (* "*") (identifier "plVar5")) (; ";")) (declaration "long lVar6;" (sized_type_specifier "long" (long "long")) (identifier "lVar6") (; ";")) (declaration "long *plVar7;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar7" (* "*") (identifier "plVar7")) (; ";")) (declaration "long lVar8;" (sized_type_specifier "long" (long "long")) (identifier "lVar8") (; ";")) (declaration "int iVar9;" (primitive_type "int") (identifier "iVar9") (; ";")) (declaration "long lVar10;" (sized_type_specifier "long" (long "long")) (identifier "lVar10") (; ";")) (declaration "long lVar11;" (sized_type_specifier "long" (long "long")) (identifier "lVar11") (; ";")) (declaration "long *plVar12;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar12" (* "*") (identifier "plVar12")) (; ";")) (declaration "long *plVar13;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar13" (* "*") (identifier "plVar13")) (; ";")) (declaration "int iVar14;" (primitive_type "int") (identifier "iVar14") (; ";")) (declaration "long lVar15;" (sized_type_specifier "long" (long "long")) (identifier "lVar15") (; ";")) (declaration "uint local_54;" (type_identifier "uint") (identifier "local_54") (; ";")) (declaration "long local_50;" (sized_type_specifier "long" (long "long")) (identifier "local_50") (; ";")) (expression_statement "iVar9 = -1;" (assignment_expression "iVar9 = -1" (identifier "iVar9") (= "=") (number_literal "-1")) (; ";")) (expression_statement "lVar15 = 0;" (assignment_expression "lVar15 = 0" (identifier "lVar15") (= "=") (number_literal "0")) (; ";")) (expression_statement "plVar13 = (long *)*param_1;" (assignment_expression "plVar13 = (long *)*param_1" (identifier "plVar13") (= "=") (cast_expression "(long *)*param_1" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (labeled_statement "LAB_0012f7e4:\n  while (plVar12 = plVar13, plVar12 != (long *)0x0) {\n    if (param_2 < (int)plVar12[5]) goto LAB_0012f7d1;\n    param_2 = param_2 - ((int)plVar12[5] + 1);\n    if (param_2 < 0) {\n      iVar9 = 0;\nLAB_0012fdee:\n      if (lVar15 == 0) goto LAB_0012fdf7;\n      goto LAB_0012fa63;\n    }\n    if (param_2 < *(int *)((long)plVar12 + 0x2c)) {\n      local_54 = 1;\n    }\n    else {\n      param_2 = param_2 - (*(int *)((long)plVar12 + 0x2c) + 1);\n      if (param_2 < 0) {\n        iVar9 = 1;\n        goto LAB_0012fdee;\n      }\n      if (param_2 < (int)plVar12[6]) {\n        local_54 = 2;\n      }\n      else {\n        param_2 = param_2 - ((int)plVar12[6] + 1);\n        if (param_2 < 0) {\n          iVar9 = 2;\n          goto LAB_0012fdee;\n        }\n        local_54 = 3;\n      }\n    }\n    lVar6 = (long)(int)local_54;\n    plVar7 = plVar12 + lVar6;\n    plVar13 = (long *)plVar7[1];\n    if (plVar13[8] == 0) {\n      lVar8 = *plVar7;\n      if (*(long *)(lVar8 + 0x40) == 0) {\n        if (local_54 < 3) {\n          local_50 = (long)(int)local_54;\n          lVar6 = (plVar12 + local_50)[2];\n          plVar7 = plVar12 + local_50;\n          if (lVar6 == 0) goto LAB_0012f905;\n          goto LAB_0012fe3f;\n        }\n        goto LAB_0012f905;\n      }\n      lVar11 = *(long *)(lVar8 + 0x48);\n      plVar13[3] = plVar13[2];\n      *(undefined4 *)(plVar13 + 6) = *(undefined4 *)((long)plVar13 + 0x2c);\n      plVar13[8] = plVar13[7];\n      plVar13[2] = plVar13[1];\n      *(int *)((long)plVar13 + 0x2c) = (int)plVar13[5];\n      plVar13[7] = plVar7[6];\n      lVar10 = (long)(int)((lVar11 != 0) + 1);\n      lVar11 = lVar8 + lVar10 * 8;\n      puVar2 = *(undefined8 **)(lVar11 + 0x10);\n      plVar13[1] = (long)puVar2;\n      lVar10 = lVar8 + lVar10 * 4;\n      *(undefined4 *)(plVar13 + 5) = *(undefined4 *)(lVar10 + 0x2c);\n      if (puVar2 != (undefined8 *)0x0) {\n        *puVar2 = plVar13;\n      }\n      plVar7[6] = *(long *)(lVar11 + 0x38);\n      *(undefined8 *)(lVar11 + 0x10) = 0;\n      *(undefined4 *)(lVar10 + 0x2c) = 0;\n      *(undefined8 *)(lVar11 + 0x38) = 0;\n      uVar3 = FUN_0012ef67(plVar13);\n      *(undefined4 *)((long)plVar12 + lVar6 * 4 + 0x28) = uVar3;\n      iVar14 = *(int *)((long)plVar12 + lVar6 * 4 + 0x24);\n      iVar4 = FUN_0012ef67(lVar8);\n      *(int *)((long)plVar12 + lVar6 * 4 + 0x24) = iVar4;\n      param_2 = (param_2 + iVar14) - iVar4;\n    }\n  }" (statement_identifier "LAB_0012f7e4") (: ":") (while_statement "while (plVar12 = plVar13, plVar12 != (long *)0x0) {\n    if (param_2 < (int)plVar12[5]) goto LAB_0012f7d1;\n    param_2 = param_2 - ((int)plVar12[5] + 1);\n    if (param_2 < 0) {\n      iVar9 = 0;\nLAB_0012fdee:\n      if (lVar15 == 0) goto LAB_0012fdf7;\n      goto LAB_0012fa63;\n    }\n    if (param_2 < *(int *)((long)plVar12 + 0x2c)) {\n      local_54 = 1;\n    }\n    else {\n      param_2 = param_2 - (*(int *)((long)plVar12 + 0x2c) + 1);\n      if (param_2 < 0) {\n        iVar9 = 1;\n        goto LAB_0012fdee;\n      }\n      if (param_2 < (int)plVar12[6]) {\n        local_54 = 2;\n      }\n      else {\n        param_2 = param_2 - ((int)plVar12[6] + 1);\n        if (param_2 < 0) {\n          iVar9 = 2;\n          goto LAB_0012fdee;\n        }\n        local_54 = 3;\n      }\n    }\n    lVar6 = (long)(int)local_54;\n    plVar7 = plVar12 + lVar6;\n    plVar13 = (long *)plVar7[1];\n    if (plVar13[8] == 0) {\n      lVar8 = *plVar7;\n      if (*(long *)(lVar8 + 0x40) == 0) {\n        if (local_54 < 3) {\n          local_50 = (long)(int)local_54;\n          lVar6 = (plVar12 + local_50)[2];\n          plVar7 = plVar12 + local_50;\n          if (lVar6 == 0) goto LAB_0012f905;\n          goto LAB_0012fe3f;\n        }\n        goto LAB_0012f905;\n      }\n      lVar11 = *(long *)(lVar8 + 0x48);\n      plVar13[3] = plVar13[2];\n      *(undefined4 *)(plVar13 + 6) = *(undefined4 *)((long)plVar13 + 0x2c);\n      plVar13[8] = plVar13[7];\n      plVar13[2] = plVar13[1];\n      *(int *)((long)plVar13 + 0x2c) = (int)plVar13[5];\n      plVar13[7] = plVar7[6];\n      lVar10 = (long)(int)((lVar11 != 0) + 1);\n      lVar11 = lVar8 + lVar10 * 8;\n      puVar2 = *(undefined8 **)(lVar11 + 0x10);\n      plVar13[1] = (long)puVar2;\n      lVar10 = lVar8 + lVar10 * 4;\n      *(undefined4 *)(plVar13 + 5) = *(undefined4 *)(lVar10 + 0x2c);\n      if (puVar2 != (undefined8 *)0x0) {\n        *puVar2 = plVar13;\n      }\n      plVar7[6] = *(long *)(lVar11 + 0x38);\n      *(undefined8 *)(lVar11 + 0x10) = 0;\n      *(undefined4 *)(lVar10 + 0x2c) = 0;\n      *(undefined8 *)(lVar11 + 0x38) = 0;\n      uVar3 = FUN_0012ef67(plVar13);\n      *(undefined4 *)((long)plVar12 + lVar6 * 4 + 0x28) = uVar3;\n      iVar14 = *(int *)((long)plVar12 + lVar6 * 4 + 0x24);\n      iVar4 = FUN_0012ef67(lVar8);\n      *(int *)((long)plVar12 + lVar6 * 4 + 0x24) = iVar4;\n      param_2 = (param_2 + iVar14) - iVar4;\n    }\n  }" (while "while") (parenthesized_expression "(plVar12 = plVar13, plVar12 != (long *)0x0)" (( "(") (comma_expression "plVar12 = plVar13, plVar12 != (long *)0x0" (assignment_expression "plVar12 = plVar13" (identifier "plVar12") (= "=") (identifier "plVar13")) (, ",") (binary_expression "plVar12 != (long *)0x0" (identifier "plVar12") (!= "!=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")")) (compound_statement "{\n    if (param_2 < (int)plVar12[5]) goto LAB_0012f7d1;\n    param_2 = param_2 - ((int)plVar12[5] + 1);\n    if (param_2 < 0) {\n      iVar9 = 0;\nLAB_0012fdee:\n      if (lVar15 == 0) goto LAB_0012fdf7;\n      goto LAB_0012fa63;\n    }\n    if (param_2 < *(int *)((long)plVar12 + 0x2c)) {\n      local_54 = 1;\n    }\n    else {\n      param_2 = param_2 - (*(int *)((long)plVar12 + 0x2c) + 1);\n      if (param_2 < 0) {\n        iVar9 = 1;\n        goto LAB_0012fdee;\n      }\n      if (param_2 < (int)plVar12[6]) {\n        local_54 = 2;\n      }\n      else {\n        param_2 = param_2 - ((int)plVar12[6] + 1);\n        if (param_2 < 0) {\n          iVar9 = 2;\n          goto LAB_0012fdee;\n        }\n        local_54 = 3;\n      }\n    }\n    lVar6 = (long)(int)local_54;\n    plVar7 = plVar12 + lVar6;\n    plVar13 = (long *)plVar7[1];\n    if (plVar13[8] == 0) {\n      lVar8 = *plVar7;\n      if (*(long *)(lVar8 + 0x40) == 0) {\n        if (local_54 < 3) {\n          local_50 = (long)(int)local_54;\n          lVar6 = (plVar12 + local_50)[2];\n          plVar7 = plVar12 + local_50;\n          if (lVar6 == 0) goto LAB_0012f905;\n          goto LAB_0012fe3f;\n        }\n        goto LAB_0012f905;\n      }\n      lVar11 = *(long *)(lVar8 + 0x48);\n      plVar13[3] = plVar13[2];\n      *(undefined4 *)(plVar13 + 6) = *(undefined4 *)((long)plVar13 + 0x2c);\n      plVar13[8] = plVar13[7];\n      plVar13[2] = plVar13[1];\n      *(int *)((long)plVar13 + 0x2c) = (int)plVar13[5];\n      plVar13[7] = plVar7[6];\n      lVar10 = (long)(int)((lVar11 != 0) + 1);\n      lVar11 = lVar8 + lVar10 * 8;\n      puVar2 = *(undefined8 **)(lVar11 + 0x10);\n      plVar13[1] = (long)puVar2;\n      lVar10 = lVar8 + lVar10 * 4;\n      *(undefined4 *)(plVar13 + 5) = *(undefined4 *)(lVar10 + 0x2c);\n      if (puVar2 != (undefined8 *)0x0) {\n        *puVar2 = plVar13;\n      }\n      plVar7[6] = *(long *)(lVar11 + 0x38);\n      *(undefined8 *)(lVar11 + 0x10) = 0;\n      *(undefined4 *)(lVar10 + 0x2c) = 0;\n      *(undefined8 *)(lVar11 + 0x38) = 0;\n      uVar3 = FUN_0012ef67(plVar13);\n      *(undefined4 *)((long)plVar12 + lVar6 * 4 + 0x28) = uVar3;\n      iVar14 = *(int *)((long)plVar12 + lVar6 * 4 + 0x24);\n      iVar4 = FUN_0012ef67(lVar8);\n      *(int *)((long)plVar12 + lVar6 * 4 + 0x24) = iVar4;\n      param_2 = (param_2 + iVar14) - iVar4;\n    }\n  }" ({ "{") (if_statement "if (param_2 < (int)plVar12[5]) goto LAB_0012f7d1;" (if "if") (parenthesized_expression "(param_2 < (int)plVar12[5])" (( "(") (binary_expression "param_2 < (int)plVar12[5]" (identifier "param_2") (< "<") (cast_expression "(int)plVar12[5]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "plVar12[5]" (identifier "plVar12") ([ "[") (number_literal "5") (] "]")))) () ")")) (goto_statement "goto LAB_0012f7d1;" (goto "goto") (statement_identifier "LAB_0012f7d1") (; ";"))) (expression_statement "param_2 = param_2 - ((int)plVar12[5] + 1);" (assignment_expression "param_2 = param_2 - ((int)plVar12[5] + 1)" (identifier "param_2") (= "=") (binary_expression "param_2 - ((int)plVar12[5] + 1)" (identifier "param_2") (- "-") (parenthesized_expression "((int)plVar12[5] + 1)" (( "(") (binary_expression "(int)plVar12[5] + 1" (cast_expression "(int)plVar12[5]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "plVar12[5]" (identifier "plVar12") ([ "[") (number_literal "5") (] "]"))) (+ "+") (number_literal "1")) () ")")))) (; ";")) (if_statement "if (param_2 < 0) {\n      iVar9 = 0;\nLAB_0012fdee:\n      if (lVar15 == 0) goto LAB_0012fdf7;\n      goto LAB_0012fa63;\n    }" (if "if") (parenthesized_expression "(param_2 < 0)" (( "(") (binary_expression "param_2 < 0" (identifier "param_2") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n      iVar9 = 0;\nLAB_0012fdee:\n      if (lVar15 == 0) goto LAB_0012fdf7;\n      goto LAB_0012fa63;\n    }" ({ "{") (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" (identifier "iVar9") (= "=") (number_literal "0")) (; ";")) (labeled_statement "LAB_0012fdee:\n      if (lVar15 == 0) goto LAB_0012fdf7;" (statement_identifier "LAB_0012fdee") (: ":") (if_statement "if (lVar15 == 0) goto LAB_0012fdf7;" (if "if") (parenthesized_expression "(lVar15 == 0)" (( "(") (binary_expression "lVar15 == 0" (identifier "lVar15") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0012fdf7;" (goto "goto") (statement_identifier "LAB_0012fdf7") (; ";")))) (goto_statement "goto LAB_0012fa63;" (goto "goto") (statement_identifier "LAB_0012fa63") (; ";")) (} "}"))) (if_statement "if (param_2 < *(int *)((long)plVar12 + 0x2c)) {\n      local_54 = 1;\n    }\n    else {\n      param_2 = param_2 - (*(int *)((long)plVar12 + 0x2c) + 1);\n      if (param_2 < 0) {\n        iVar9 = 1;\n        goto LAB_0012fdee;\n      }\n      if (param_2 < (int)plVar12[6]) {\n        local_54 = 2;\n      }\n      else {\n        param_2 = param_2 - ((int)plVar12[6] + 1);\n        if (param_2 < 0) {\n          iVar9 = 2;\n          goto LAB_0012fdee;\n        }\n        local_54 = 3;\n      }\n    }" (if "if") (parenthesized_expression "(param_2 < *(int *)((long)plVar12 + 0x2c))" (( "(") (binary_expression "param_2 < *(int *)((long)plVar12 + 0x2c)" (identifier "param_2") (< "<") (pointer_expression "*(int *)((long)plVar12 + 0x2c)" (* "*") (cast_expression "(int *)((long)plVar12 + 0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)plVar12 + 0x2c)" (( "(") (binary_expression "(long)plVar12 + 0x2c" (cast_expression "(long)plVar12" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "plVar12")) (+ "+") (number_literal "0x2c")) () ")"))))) () ")")) (compound_statement "{\n      local_54 = 1;\n    }" ({ "{") (expression_statement "local_54 = 1;" (assignment_expression "local_54 = 1" (identifier "local_54") (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n      param_2 = param_2 - (*(int *)((long)plVar12 + 0x2c) + 1);\n      if (param_2 < 0) {\n        iVar9 = 1;\n        goto LAB_0012fdee;\n      }\n      if (param_2 < (int)plVar12[6]) {\n        local_54 = 2;\n      }\n      else {\n        param_2 = param_2 - ((int)plVar12[6] + 1);\n        if (param_2 < 0) {\n          iVar9 = 2;\n          goto LAB_0012fdee;\n        }\n        local_54 = 3;\n      }\n    }" (else "else") (compound_statement "{\n      param_2 = param_2 - (*(int *)((long)plVar12 + 0x2c) + 1);\n      if (param_2 < 0) {\n        iVar9 = 1;\n        goto LAB_0012fdee;\n      }\n      if (param_2 < (int)plVar12[6]) {\n        local_54 = 2;\n      }\n      else {\n        param_2 = param_2 - ((int)plVar12[6] + 1);\n        if (param_2 < 0) {\n          iVar9 = 2;\n          goto LAB_0012fdee;\n        }\n        local_54 = 3;\n      }\n    }" ({ "{") (expression_statement "param_2 = param_2 - (*(int *)((long)plVar12 + 0x2c) + 1);" (assignment_expression "param_2 = param_2 - (*(int *)((long)plVar12 + 0x2c) + 1)" (identifier "param_2") (= "=") (binary_expression "param_2 - (*(int *)((long)plVar12 + 0x2c) + 1)" (identifier "param_2") (- "-") (parenthesized_expression "(*(int *)((long)plVar12 + 0x2c) + 1)" (( "(") (binary_expression "*(int *)((long)plVar12 + 0x2c) + 1" (pointer_expression "*(int *)((long)plVar12 + 0x2c)" (* "*") (cast_expression "(int *)((long)plVar12 + 0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)plVar12 + 0x2c)" (( "(") (binary_expression "(long)plVar12 + 0x2c" (cast_expression "(long)plVar12" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "plVar12")) (+ "+") (number_literal "0x2c")) () ")")))) (+ "+") (number_literal "1")) () ")")))) (; ";")) (if_statement "if (param_2 < 0) {\n        iVar9 = 1;\n        goto LAB_0012fdee;\n      }" (if "if") (parenthesized_expression "(param_2 < 0)" (( "(") (binary_expression "param_2 < 0" (identifier "param_2") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n        iVar9 = 1;\n        goto LAB_0012fdee;\n      }" ({ "{") (expression_statement "iVar9 = 1;" (assignment_expression "iVar9 = 1" (identifier "iVar9") (= "=") (number_literal "1")) (; ";")) (goto_statement "goto LAB_0012fdee;" (goto "goto") (statement_identifier "LAB_0012fdee") (; ";")) (} "}"))) (if_statement "if (param_2 < (int)plVar12[6]) {\n        local_54 = 2;\n      }\n      else {\n        param_2 = param_2 - ((int)plVar12[6] + 1);\n        if (param_2 < 0) {\n          iVar9 = 2;\n          goto LAB_0012fdee;\n        }\n        local_54 = 3;\n      }" (if "if") (parenthesized_expression "(param_2 < (int)plVar12[6])" (( "(") (binary_expression "param_2 < (int)plVar12[6]" (identifier "param_2") (< "<") (cast_expression "(int)plVar12[6]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "plVar12[6]" (identifier "plVar12") ([ "[") (number_literal "6") (] "]")))) () ")")) (compound_statement "{\n        local_54 = 2;\n      }" ({ "{") (expression_statement "local_54 = 2;" (assignment_expression "local_54 = 2" (identifier "local_54") (= "=") (number_literal "2")) (; ";")) (} "}")) (else_clause "else {\n        param_2 = param_2 - ((int)plVar12[6] + 1);\n        if (param_2 < 0) {\n          iVar9 = 2;\n          goto LAB_0012fdee;\n        }\n        local_54 = 3;\n      }" (else "else") (compound_statement "{\n        param_2 = param_2 - ((int)plVar12[6] + 1);\n        if (param_2 < 0) {\n          iVar9 = 2;\n          goto LAB_0012fdee;\n        }\n        local_54 = 3;\n      }" ({ "{") (expression_statement "param_2 = param_2 - ((int)plVar12[6] + 1);" (assignment_expression "param_2 = param_2 - ((int)plVar12[6] + 1)" (identifier "param_2") (= "=") (binary_expression "param_2 - ((int)plVar12[6] + 1)" (identifier "param_2") (- "-") (parenthesized_expression "((int)plVar12[6] + 1)" (( "(") (binary_expression "(int)plVar12[6] + 1" (cast_expression "(int)plVar12[6]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "plVar12[6]" (identifier "plVar12") ([ "[") (number_literal "6") (] "]"))) (+ "+") (number_literal "1")) () ")")))) (; ";")) (if_statement "if (param_2 < 0) {\n          iVar9 = 2;\n          goto LAB_0012fdee;\n        }" (if "if") (parenthesized_expression "(param_2 < 0)" (( "(") (binary_expression "param_2 < 0" (identifier "param_2") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n          iVar9 = 2;\n          goto LAB_0012fdee;\n        }" ({ "{") (expression_statement "iVar9 = 2;" (assignment_expression "iVar9 = 2" (identifier "iVar9") (= "=") (number_literal "2")) (; ";")) (goto_statement "goto LAB_0012fdee;" (goto "goto") (statement_identifier "LAB_0012fdee") (; ";")) (} "}"))) (expression_statement "local_54 = 3;" (assignment_expression "local_54 = 3" (identifier "local_54") (= "=") (number_literal "3")) (; ";")) (} "}")))) (} "}")))) (expression_statement "lVar6 = (long)(int)local_54;" (assignment_expression "lVar6 = (long)(int)local_54" (identifier "lVar6") (= "=") (cast_expression "(long)(int)local_54" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (cast_expression "(int)local_54" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_54")))) (; ";")) (expression_statement "plVar7 = plVar12 + lVar6;" (assignment_expression "plVar7 = plVar12 + lVar6" (identifier "plVar7") (= "=") (binary_expression "plVar12 + lVar6" (identifier "plVar12") (+ "+") (identifier "lVar6"))) (; ";")) (expression_statement "plVar13 = (long *)plVar7[1];" (assignment_expression "plVar13 = (long *)plVar7[1]" (identifier "plVar13") (= "=") (cast_expression "(long *)plVar7[1]" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "plVar7[1]" (identifier "plVar7") ([ "[") (number_literal "1") (] "]")))) (; ";")) (if_statement "if (plVar13[8] == 0) {\n      lVar8 = *plVar7;\n      if (*(long *)(lVar8 + 0x40) == 0) {\n        if (local_54 < 3) {\n          local_50 = (long)(int)local_54;\n          lVar6 = (plVar12 + local_50)[2];\n          plVar7 = plVar12 + local_50;\n          if (lVar6 == 0) goto LAB_0012f905;\n          goto LAB_0012fe3f;\n        }\n        goto LAB_0012f905;\n      }\n      lVar11 = *(long *)(lVar8 + 0x48);\n      plVar13[3] = plVar13[2];\n      *(undefined4 *)(plVar13 + 6) = *(undefined4 *)((long)plVar13 + 0x2c);\n      plVar13[8] = plVar13[7];\n      plVar13[2] = plVar13[1];\n      *(int *)((long)plVar13 + 0x2c) = (int)plVar13[5];\n      plVar13[7] = plVar7[6];\n      lVar10 = (long)(int)((lVar11 != 0) + 1);\n      lVar11 = lVar8 + lVar10 * 8;\n      puVar2 = *(undefined8 **)(lVar11 + 0x10);\n      plVar13[1] = (long)puVar2;\n      lVar10 = lVar8 + lVar10 * 4;\n      *(undefined4 *)(plVar13 + 5) = *(undefined4 *)(lVar10 + 0x2c);\n      if (puVar2 != (undefined8 *)0x0) {\n        *puVar2 = plVar13;\n      }\n      plVar7[6] = *(long *)(lVar11 + 0x38);\n      *(undefined8 *)(lVar11 + 0x10) = 0;\n      *(undefined4 *)(lVar10 + 0x2c) = 0;\n      *(undefined8 *)(lVar11 + 0x38) = 0;\n      uVar3 = FUN_0012ef67(plVar13);\n      *(undefined4 *)((long)plVar12 + lVar6 * 4 + 0x28) = uVar3;\n      iVar14 = *(int *)((long)plVar12 + lVar6 * 4 + 0x24);\n      iVar4 = FUN_0012ef67(lVar8);\n      *(int *)((long)plVar12 + lVar6 * 4 + 0x24) = iVar4;\n      param_2 = (param_2 + iVar14) - iVar4;\n    }" (if "if") (parenthesized_expression "(plVar13[8] == 0)" (( "(") (binary_expression "plVar13[8] == 0" (subscript_expression "plVar13[8]" (identifier "plVar13") ([ "[") (number_literal "8") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      lVar8 = *plVar7;\n      if (*(long *)(lVar8 + 0x40) == 0) {\n        if (local_54 < 3) {\n          local_50 = (long)(int)local_54;\n          lVar6 = (plVar12 + local_50)[2];\n          plVar7 = plVar12 + local_50;\n          if (lVar6 == 0) goto LAB_0012f905;\n          goto LAB_0012fe3f;\n        }\n        goto LAB_0012f905;\n      }\n      lVar11 = *(long *)(lVar8 + 0x48);\n      plVar13[3] = plVar13[2];\n      *(undefined4 *)(plVar13 + 6) = *(undefined4 *)((long)plVar13 + 0x2c);\n      plVar13[8] = plVar13[7];\n      plVar13[2] = plVar13[1];\n      *(int *)((long)plVar13 + 0x2c) = (int)plVar13[5];\n      plVar13[7] = plVar7[6];\n      lVar10 = (long)(int)((lVar11 != 0) + 1);\n      lVar11 = lVar8 + lVar10 * 8;\n      puVar2 = *(undefined8 **)(lVar11 + 0x10);\n      plVar13[1] = (long)puVar2;\n      lVar10 = lVar8 + lVar10 * 4;\n      *(undefined4 *)(plVar13 + 5) = *(undefined4 *)(lVar10 + 0x2c);\n      if (puVar2 != (undefined8 *)0x0) {\n        *puVar2 = plVar13;\n      }\n      plVar7[6] = *(long *)(lVar11 + 0x38);\n      *(undefined8 *)(lVar11 + 0x10) = 0;\n      *(undefined4 *)(lVar10 + 0x2c) = 0;\n      *(undefined8 *)(lVar11 + 0x38) = 0;\n      uVar3 = FUN_0012ef67(plVar13);\n      *(undefined4 *)((long)plVar12 + lVar6 * 4 + 0x28) = uVar3;\n      iVar14 = *(int *)((long)plVar12 + lVar6 * 4 + 0x24);\n      iVar4 = FUN_0012ef67(lVar8);\n      *(int *)((long)plVar12 + lVar6 * 4 + 0x24) = iVar4;\n      param_2 = (param_2 + iVar14) - iVar4;\n    }" ({ "{") (expression_statement "lVar8 = *plVar7;" (assignment_expression "lVar8 = *plVar7" (identifier "lVar8") (= "=") (pointer_expression "*plVar7" (* "*") (identifier "plVar7"))) (; ";")) (if_statement "if (*(long *)(lVar8 + 0x40) == 0) {\n        if (local_54 < 3) {\n          local_50 = (long)(int)local_54;\n          lVar6 = (plVar12 + local_50)[2];\n          plVar7 = plVar12 + local_50;\n          if (lVar6 == 0) goto LAB_0012f905;\n          goto LAB_0012fe3f;\n        }\n        goto LAB_0012f905;\n      }" (if "if") (parenthesized_expression "(*(long *)(lVar8 + 0x40) == 0)" (( "(") (binary_expression "*(long *)(lVar8 + 0x40) == 0" (pointer_expression "*(long *)(lVar8 + 0x40)" (* "*") (cast_expression "(long *)(lVar8 + 0x40)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar8 + 0x40)" (( "(") (binary_expression "lVar8 + 0x40" (identifier "lVar8") (+ "+") (number_literal "0x40")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        if (local_54 < 3) {\n          local_50 = (long)(int)local_54;\n          lVar6 = (plVar12 + local_50)[2];\n          plVar7 = plVar12 + local_50;\n          if (lVar6 == 0) goto LAB_0012f905;\n          goto LAB_0012fe3f;\n        }\n        goto LAB_0012f905;\n      }" ({ "{") (if_statement "if (local_54 < 3) {\n          local_50 = (long)(int)local_54;\n          lVar6 = (plVar12 + local_50)[2];\n          plVar7 = plVar12 + local_50;\n          if (lVar6 == 0) goto LAB_0012f905;\n          goto LAB_0012fe3f;\n        }" (if "if") (parenthesized_expression "(local_54 < 3)" (( "(") (binary_expression "local_54 < 3" (identifier "local_54") (< "<") (number_literal "3")) () ")")) (compound_statement "{\n          local_50 = (long)(int)local_54;\n          lVar6 = (plVar12 + local_50)[2];\n          plVar7 = plVar12 + local_50;\n          if (lVar6 == 0) goto LAB_0012f905;\n          goto LAB_0012fe3f;\n        }" ({ "{") (expression_statement "local_50 = (long)(int)local_54;" (assignment_expression "local_50 = (long)(int)local_54" (identifier "local_50") (= "=") (cast_expression "(long)(int)local_54" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (cast_expression "(int)local_54" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_54")))) (; ";")) (expression_statement "lVar6 = (plVar12 + local_50)[2];" (assignment_expression "lVar6 = (plVar12 + local_50)[2]" (identifier "lVar6") (= "=") (subscript_expression "(plVar12 + local_50)[2]" (parenthesized_expression "(plVar12 + local_50)" (( "(") (binary_expression "plVar12 + local_50" (identifier "plVar12") (+ "+") (identifier "local_50")) () ")")) ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "plVar7 = plVar12 + local_50;" (assignment_expression "plVar7 = plVar12 + local_50" (identifier "plVar7") (= "=") (binary_expression "plVar12 + local_50" (identifier "plVar12") (+ "+") (identifier "local_50"))) (; ";")) (if_statement "if (lVar6 == 0) goto LAB_0012f905;" (if "if") (parenthesized_expression "(lVar6 == 0)" (( "(") (binary_expression "lVar6 == 0" (identifier "lVar6") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0012f905;" (goto "goto") (statement_identifier "LAB_0012f905") (; ";"))) (goto_statement "goto LAB_0012fe3f;" (goto "goto") (statement_identifier "LAB_0012fe3f") (; ";")) (} "}"))) (goto_statement "goto LAB_0012f905;" (goto "goto") (statement_identifier "LAB_0012f905") (; ";")) (} "}"))) (expression_statement "lVar11 = *(long *)(lVar8 + 0x48);" (assignment_expression "lVar11 = *(long *)(lVar8 + 0x48)" (identifier "lVar11") (= "=") (pointer_expression "*(long *)(lVar8 + 0x48)" (* "*") (cast_expression "(long *)(lVar8 + 0x48)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar8 + 0x48)" (( "(") (binary_expression "lVar8 + 0x48" (identifier "lVar8") (+ "+") (number_literal "0x48")) () ")"))))) (; ";")) (expression_statement "plVar13[3] = plVar13[2];" (assignment_expression "plVar13[3] = plVar13[2]" (subscript_expression "plVar13[3]" (identifier "plVar13") ([ "[") (number_literal "3") (] "]")) (= "=") (subscript_expression "plVar13[2]" (identifier "plVar13") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "*(undefined4 *)(plVar13 + 6) = *(undefined4 *)((long)plVar13 + 0x2c);" (assignment_expression "*(undefined4 *)(plVar13 + 6) = *(undefined4 *)((long)plVar13 + 0x2c)" (pointer_expression "*(undefined4 *)(plVar13 + 6)" (* "*") (cast_expression "(undefined4 *)(plVar13 + 6)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(plVar13 + 6)" (( "(") (binary_expression "plVar13 + 6" (identifier "plVar13") (+ "+") (number_literal "6")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)((long)plVar13 + 0x2c)" (* "*") (cast_expression "(undefined4 *)((long)plVar13 + 0x2c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)plVar13 + 0x2c)" (( "(") (binary_expression "(long)plVar13 + 0x2c" (cast_expression "(long)plVar13" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "plVar13")) (+ "+") (number_literal "0x2c")) () ")"))))) (; ";")) (expression_statement "plVar13[8] = plVar13[7];" (assignment_expression "plVar13[8] = plVar13[7]" (subscript_expression "plVar13[8]" (identifier "plVar13") ([ "[") (number_literal "8") (] "]")) (= "=") (subscript_expression "plVar13[7]" (identifier "plVar13") ([ "[") (number_literal "7") (] "]"))) (; ";")) (expression_statement "plVar13[2] = plVar13[1];" (assignment_expression "plVar13[2] = plVar13[1]" (subscript_expression "plVar13[2]" (identifier "plVar13") ([ "[") (number_literal "2") (] "]")) (= "=") (subscript_expression "plVar13[1]" (identifier "plVar13") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "*(int *)((long)plVar13 + 0x2c) = (int)plVar13[5];" (assignment_expression "*(int *)((long)plVar13 + 0x2c) = (int)plVar13[5]" (pointer_expression "*(int *)((long)plVar13 + 0x2c)" (* "*") (cast_expression "(int *)((long)plVar13 + 0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)plVar13 + 0x2c)" (( "(") (binary_expression "(long)plVar13 + 0x2c" (cast_expression "(long)plVar13" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "plVar13")) (+ "+") (number_literal "0x2c")) () ")")))) (= "=") (cast_expression "(int)plVar13[5]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "plVar13[5]" (identifier "plVar13") ([ "[") (number_literal "5") (] "]")))) (; ";")) (expression_statement "plVar13[7] = plVar7[6];" (assignment_expression "plVar13[7] = plVar7[6]" (subscript_expression "plVar13[7]" (identifier "plVar13") ([ "[") (number_literal "7") (] "]")) (= "=") (subscript_expression "plVar7[6]" (identifier "plVar7") ([ "[") (number_literal "6") (] "]"))) (; ";")) (expression_statement "lVar10 = (long)(int)((lVar11 != 0) + 1);" (assignment_expression "lVar10 = (long)(int)((lVar11 != 0) + 1)" (identifier "lVar10") (= "=") (cast_expression "(long)(int)((lVar11 != 0) + 1)" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (cast_expression "(int)((lVar11 != 0) + 1)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((lVar11 != 0) + 1)" (( "(") (binary_expression "(lVar11 != 0) + 1" (parenthesized_expression "(lVar11 != 0)" (( "(") (binary_expression "lVar11 != 0" (identifier "lVar11") (!= "!=") (number_literal "0")) () ")")) (+ "+") (number_literal "1")) () ")"))))) (; ";")) (expression_statement "lVar11 = lVar8 + lVar10 * 8;" (assignment_expression "lVar11 = lVar8 + lVar10 * 8" (identifier "lVar11") (= "=") (binary_expression "lVar8 + lVar10 * 8" (identifier "lVar8") (+ "+") (binary_expression "lVar10 * 8" (identifier "lVar10") (* "*") (number_literal "8")))) (; ";")) (expression_statement "puVar2 = *(undefined8 **)(lVar11 + 0x10);" (assignment_expression "puVar2 = *(undefined8 **)(lVar11 + 0x10)" (identifier "puVar2") (= "=") (pointer_expression "*(undefined8 **)(lVar11 + 0x10)" (* "*") (cast_expression "(undefined8 **)(lVar11 + 0x10)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar11 + 0x10)" (( "(") (binary_expression "lVar11 + 0x10" (identifier "lVar11") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "plVar13[1] = (long)puVar2;" (assignment_expression "plVar13[1] = (long)puVar2" (subscript_expression "plVar13[1]" (identifier "plVar13") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(long)puVar2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar2"))) (; ";")) (expression_statement "lVar10 = lVar8 + lVar10 * 4;" (assignment_expression "lVar10 = lVar8 + lVar10 * 4" (identifier "lVar10") (= "=") (binary_expression "lVar8 + lVar10 * 4" (identifier "lVar8") (+ "+") (binary_expression "lVar10 * 4" (identifier "lVar10") (* "*") (number_literal "4")))) (; ";")) (expression_statement "*(undefined4 *)(plVar13 + 5) = *(undefined4 *)(lVar10 + 0x2c);" (assignment_expression "*(undefined4 *)(plVar13 + 5) = *(undefined4 *)(lVar10 + 0x2c)" (pointer_expression "*(undefined4 *)(plVar13 + 5)" (* "*") (cast_expression "(undefined4 *)(plVar13 + 5)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(plVar13 + 5)" (( "(") (binary_expression "plVar13 + 5" (identifier "plVar13") (+ "+") (number_literal "5")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(lVar10 + 0x2c)" (* "*") (cast_expression "(undefined4 *)(lVar10 + 0x2c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar10 + 0x2c)" (( "(") (binary_expression "lVar10 + 0x2c" (identifier "lVar10") (+ "+") (number_literal "0x2c")) () ")"))))) (; ";")) (if_statement "if (puVar2 != (undefined8 *)0x0) {\n        *puVar2 = plVar13;\n      }" (if "if") (parenthesized_expression "(puVar2 != (undefined8 *)0x0)" (( "(") (binary_expression "puVar2 != (undefined8 *)0x0" (identifier "puVar2") (!= "!=") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        *puVar2 = plVar13;\n      }" ({ "{") (expression_statement "*puVar2 = plVar13;" (assignment_expression "*puVar2 = plVar13" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (identifier "plVar13")) (; ";")) (} "}"))) (expression_statement "plVar7[6] = *(long *)(lVar11 + 0x38);" (assignment_expression "plVar7[6] = *(long *)(lVar11 + 0x38)" (subscript_expression "plVar7[6]" (identifier "plVar7") ([ "[") (number_literal "6") (] "]")) (= "=") (pointer_expression "*(long *)(lVar11 + 0x38)" (* "*") (cast_expression "(long *)(lVar11 + 0x38)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar11 + 0x38)" (( "(") (binary_expression "lVar11 + 0x38" (identifier "lVar11") (+ "+") (number_literal "0x38")) () ")"))))) (; ";")) (expression_statement "*(undefined8 *)(lVar11 + 0x10) = 0;" (assignment_expression "*(undefined8 *)(lVar11 + 0x10) = 0" (pointer_expression "*(undefined8 *)(lVar11 + 0x10)" (* "*") (cast_expression "(undefined8 *)(lVar11 + 0x10)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar11 + 0x10)" (( "(") (binary_expression "lVar11 + 0x10" (identifier "lVar11") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(lVar10 + 0x2c) = 0;" (assignment_expression "*(undefined4 *)(lVar10 + 0x2c) = 0" (pointer_expression "*(undefined4 *)(lVar10 + 0x2c)" (* "*") (cast_expression "(undefined4 *)(lVar10 + 0x2c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar10 + 0x2c)" (( "(") (binary_expression "lVar10 + 0x2c" (identifier "lVar10") (+ "+") (number_literal "0x2c")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined8 *)(lVar11 + 0x38) = 0;" (assignment_expression "*(undefined8 *)(lVar11 + 0x38) = 0" (pointer_expression "*(undefined8 *)(lVar11 + 0x38)" (* "*") (cast_expression "(undefined8 *)(lVar11 + 0x38)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar11 + 0x38)" (( "(") (binary_expression "lVar11 + 0x38" (identifier "lVar11") (+ "+") (number_literal "0x38")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar3 = FUN_0012ef67(plVar13);" (assignment_expression "uVar3 = FUN_0012ef67(plVar13)" (identifier "uVar3") (= "=") (call_expression "FUN_0012ef67(plVar13)" (identifier "FUN_0012ef67") (argument_list "(plVar13)" (( "(") (identifier "plVar13") () ")")))) (; ";")) (expression_statement "*(undefined4 *)((long)plVar12 + lVar6 * 4 + 0x28) = uVar3;" (assignment_expression "*(undefined4 *)((long)plVar12 + lVar6 * 4 + 0x28) = uVar3" (pointer_expression "*(undefined4 *)((long)plVar12 + lVar6 * 4 + 0x28)" (* "*") (cast_expression "(undefined4 *)((long)plVar12 + lVar6 * 4 + 0x28)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)plVar12 + lVar6 * 4 + 0x28)" (( "(") (binary_expression "(long)plVar12 + lVar6 * 4 + 0x28" (binary_expression "(long)plVar12 + lVar6 * 4" (cast_expression "(long)plVar12" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "plVar12")) (+ "+") (binary_expression "lVar6 * 4" (identifier "lVar6") (* "*") (number_literal "4"))) (+ "+") (number_literal "0x28")) () ")")))) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "iVar14 = *(int *)((long)plVar12 + lVar6 * 4 + 0x24);" (assignment_expression "iVar14 = *(int *)((long)plVar12 + lVar6 * 4 + 0x24)" (identifier "iVar14") (= "=") (pointer_expression "*(int *)((long)plVar12 + lVar6 * 4 + 0x24)" (* "*") (cast_expression "(int *)((long)plVar12 + lVar6 * 4 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)plVar12 + lVar6 * 4 + 0x24)" (( "(") (binary_expression "(long)plVar12 + lVar6 * 4 + 0x24" (binary_expression "(long)plVar12 + lVar6 * 4" (cast_expression "(long)plVar12" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "plVar12")) (+ "+") (binary_expression "lVar6 * 4" (identifier "lVar6") (* "*") (number_literal "4"))) (+ "+") (number_literal "0x24")) () ")"))))) (; ";")) (expression_statement "iVar4 = FUN_0012ef67(lVar8);" (assignment_expression "iVar4 = FUN_0012ef67(lVar8)" (identifier "iVar4") (= "=") (call_expression "FUN_0012ef67(lVar8)" (identifier "FUN_0012ef67") (argument_list "(lVar8)" (( "(") (identifier "lVar8") () ")")))) (; ";")) (expression_statement "*(int *)((long)plVar12 + lVar6 * 4 + 0x24) = iVar4;" (assignment_expression "*(int *)((long)plVar12 + lVar6 * 4 + 0x24) = iVar4" (pointer_expression "*(int *)((long)plVar12 + lVar6 * 4 + 0x24)" (* "*") (cast_expression "(int *)((long)plVar12 + lVar6 * 4 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)plVar12 + lVar6 * 4 + 0x24)" (( "(") (binary_expression "(long)plVar12 + lVar6 * 4 + 0x24" (binary_expression "(long)plVar12 + lVar6 * 4" (cast_expression "(long)plVar12" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "plVar12")) (+ "+") (binary_expression "lVar6 * 4" (identifier "lVar6") (* "*") (number_literal "4"))) (+ "+") (number_literal "0x24")) () ")")))) (= "=") (identifier "iVar4")) (; ";")) (expression_statement "param_2 = (param_2 + iVar14) - iVar4;" (assignment_expression "param_2 = (param_2 + iVar14) - iVar4" (identifier "param_2") (= "=") (binary_expression "(param_2 + iVar14) - iVar4" (parenthesized_expression "(param_2 + iVar14)" (( "(") (binary_expression "param_2 + iVar14" (identifier "param_2") (+ "+") (identifier "iVar14")) () ")")) (- "-") (identifier "iVar4"))) (; ";")) (} "}"))) (} "}")))) (if_statement "if (lVar15 == 0) {\nLAB_0012fdf7:\n    lVar15 = plVar12[(long)iVar9 + 7];\n  }" (if "if") (parenthesized_expression "(lVar15 == 0)" (( "(") (binary_expression "lVar15 == 0" (identifier "lVar15") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_0012fdf7:\n    lVar15 = plVar12[(long)iVar9 + 7];\n  }" ({ "{") (labeled_statement "LAB_0012fdf7:\n    lVar15 = plVar12[(long)iVar9 + 7];" (statement_identifier "LAB_0012fdf7") (: ":") (expression_statement "lVar15 = plVar12[(long)iVar9 + 7];" (assignment_expression "lVar15 = plVar12[(long)iVar9 + 7]" (identifier "lVar15") (= "=") (subscript_expression "plVar12[(long)iVar9 + 7]" (identifier "plVar12") ([ "[") (binary_expression "(long)iVar9 + 7" (cast_expression "(long)iVar9" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "iVar9")) (+ "+") (number_literal "7")) (] "]"))) (; ";"))) (} "}"))) (if_statement "if (iVar9 == -1) {\n    return 0;\n  }" (if "if") (parenthesized_expression "(iVar9 == -1)" (( "(") (binary_expression "iVar9 == -1" (identifier "iVar9") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n    return 0;\n  }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (labeled_statement "LAB_0012fa63:\n  lVar6 = *plVar12;" (statement_identifier "LAB_0012fa63") (: ":") (expression_statement "lVar6 = *plVar12;" (assignment_expression "lVar6 = *plVar12" (identifier "lVar6") (= "=") (pointer_expression "*plVar12" (* "*") (identifier "plVar12"))) (; ";"))) (if_statement "if (lVar6 == 0) {\n    if (plVar12[8] == 0) {\n      if (plVar12[1] == 0) {\n        FUN_0010c4d3(plVar12);\n        *param_1 = 0;\n        return lVar15;\n      }\n    }\n    else if (plVar12[1] == 0) {\n      lVar6 = 0;\n      if (1 < iVar9) {\n        plVar12[(long)iVar9 + 7] = 0;\n        return lVar15;\n      }\n      goto LAB_0012fbac;\n    }\n  }\n  else if ((plVar12[1] == 0) && (plVar12[8] != 0)) goto code_r0x0012fc20;" (if "if") (parenthesized_expression "(lVar6 == 0)" (( "(") (binary_expression "lVar6 == 0" (identifier "lVar6") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    if (plVar12[8] == 0) {\n      if (plVar12[1] == 0) {\n        FUN_0010c4d3(plVar12);\n        *param_1 = 0;\n        return lVar15;\n      }\n    }\n    else if (plVar12[1] == 0) {\n      lVar6 = 0;\n      if (1 < iVar9) {\n        plVar12[(long)iVar9 + 7] = 0;\n        return lVar15;\n      }\n      goto LAB_0012fbac;\n    }\n  }" ({ "{") (if_statement "if (plVar12[8] == 0) {\n      if (plVar12[1] == 0) {\n        FUN_0010c4d3(plVar12);\n        *param_1 = 0;\n        return lVar15;\n      }\n    }\n    else if (plVar12[1] == 0) {\n      lVar6 = 0;\n      if (1 < iVar9) {\n        plVar12[(long)iVar9 + 7] = 0;\n        return lVar15;\n      }\n      goto LAB_0012fbac;\n    }" (if "if") (parenthesized_expression "(plVar12[8] == 0)" (( "(") (binary_expression "plVar12[8] == 0" (subscript_expression "plVar12[8]" (identifier "plVar12") ([ "[") (number_literal "8") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      if (plVar12[1] == 0) {\n        FUN_0010c4d3(plVar12);\n        *param_1 = 0;\n        return lVar15;\n      }\n    }" ({ "{") (if_statement "if (plVar12[1] == 0) {\n        FUN_0010c4d3(plVar12);\n        *param_1 = 0;\n        return lVar15;\n      }" (if "if") (parenthesized_expression "(plVar12[1] == 0)" (( "(") (binary_expression "plVar12[1] == 0" (subscript_expression "plVar12[1]" (identifier "plVar12") ([ "[") (number_literal "1") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        FUN_0010c4d3(plVar12);\n        *param_1 = 0;\n        return lVar15;\n      }" ({ "{") (expression_statement "FUN_0010c4d3(plVar12);" (call_expression "FUN_0010c4d3(plVar12)" (identifier "FUN_0010c4d3") (argument_list "(plVar12)" (( "(") (identifier "plVar12") () ")"))) (; ";")) (expression_statement "*param_1 = 0;" (assignment_expression "*param_1 = 0" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (number_literal "0")) (; ";")) (return_statement "return lVar15;" (return "return") (identifier "lVar15") (; ";")) (} "}"))) (} "}")) (else_clause "else if (plVar12[1] == 0) {\n      lVar6 = 0;\n      if (1 < iVar9) {\n        plVar12[(long)iVar9 + 7] = 0;\n        return lVar15;\n      }\n      goto LAB_0012fbac;\n    }" (else "else") (if_statement "if (plVar12[1] == 0) {\n      lVar6 = 0;\n      if (1 < iVar9) {\n        plVar12[(long)iVar9 + 7] = 0;\n        return lVar15;\n      }\n      goto LAB_0012fbac;\n    }" (if "if") (parenthesized_expression "(plVar12[1] == 0)" (( "(") (binary_expression "plVar12[1] == 0" (subscript_expression "plVar12[1]" (identifier "plVar12") ([ "[") (number_literal "1") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      lVar6 = 0;\n      if (1 < iVar9) {\n        plVar12[(long)iVar9 + 7] = 0;\n        return lVar15;\n      }\n      goto LAB_0012fbac;\n    }" ({ "{") (expression_statement "lVar6 = 0;" (assignment_expression "lVar6 = 0" (identifier "lVar6") (= "=") (number_literal "0")) (; ";")) (if_statement "if (1 < iVar9) {\n        plVar12[(long)iVar9 + 7] = 0;\n        return lVar15;\n      }" (if "if") (parenthesized_expression "(1 < iVar9)" (( "(") (binary_expression "1 < iVar9" (number_literal "1") (< "<") (identifier "iVar9")) () ")")) (compound_statement "{\n        plVar12[(long)iVar9 + 7] = 0;\n        return lVar15;\n      }" ({ "{") (expression_statement "plVar12[(long)iVar9 + 7] = 0;" (assignment_expression "plVar12[(long)iVar9 + 7] = 0" (subscript_expression "plVar12[(long)iVar9 + 7]" (identifier "plVar12") ([ "[") (binary_expression "(long)iVar9 + 7" (cast_expression "(long)iVar9" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "iVar9")) (+ "+") (number_literal "7")) (] "]")) (= "=") (number_literal "0")) (; ";")) (return_statement "return lVar15;" (return "return") (identifier "lVar15") (; ";")) (} "}"))) (goto_statement "goto LAB_0012fbac;" (goto "goto") (statement_identifier "LAB_0012fbac") (; ";")) (} "}"))))) (} "}")) (else_clause "else if ((plVar12[1] == 0) && (plVar12[8] != 0)) goto code_r0x0012fc20;" (else "else") (if_statement "if ((plVar12[1] == 0) && (plVar12[8] != 0)) goto code_r0x0012fc20;" (if "if") (parenthesized_expression "((plVar12[1] == 0) && (plVar12[8] != 0))" (( "(") (binary_expression "(plVar12[1] == 0) && (plVar12[8] != 0)" (parenthesized_expression "(plVar12[1] == 0)" (( "(") (binary_expression "plVar12[1] == 0" (subscript_expression "plVar12[1]" (identifier "plVar12") ([ "[") (number_literal "1") (] "]")) (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(plVar12[8] != 0)" (( "(") (binary_expression "plVar12[8] != 0" (subscript_expression "plVar12[8]" (identifier "plVar12") ([ "[") (number_literal "8") (] "]")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (goto_statement "goto code_r0x0012fc20;" (goto "goto") (statement_identifier "code_r0x0012fc20") (; ";"))))) (expression_statement "plVar13 = (long *)plVar12[(long)iVar9 + 1];" (assignment_expression "plVar13 = (long *)plVar12[(long)iVar9 + 1]" (identifier "plVar13") (= "=") (cast_expression "(long *)plVar12[(long)iVar9 + 1]" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "plVar12[(long)iVar9 + 1]" (identifier "plVar12") ([ "[") (binary_expression "(long)iVar9 + 1" (cast_expression "(long)iVar9" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "iVar9")) (+ "+") (number_literal "1")) (] "]")))) (; ";")) (expression_statement "plVar7 = plVar13;" (assignment_expression "plVar7 = plVar13" (identifier "plVar7") (= "=") (identifier "plVar13")) (; ";")) (if_statement "if (plVar13[8] == 0) {\n    plVar7 = (long *)plVar12[(long)iVar9 + 2];\n    plVar5 = plVar7;\n    if (plVar7[8] == 0) {\n      plVar13[8] = plVar12[(long)iVar9 + 7];\n      puVar2 = (undefined8 *)plVar7[1];\n      plVar13[3] = (long)puVar2;\n      *(int *)(plVar13 + 6) = (int)plVar7[5];\n      if (puVar2 != (undefined8 *)0x0) {\n        *puVar2 = plVar13;\n      }\n      plVar13[9] = plVar7[7];\n      puVar2 = (undefined8 *)plVar7[2];\n      plVar13[4] = (long)puVar2;\n      *(undefined4 *)((long)plVar13 + 0x34) = *(undefined4 *)((long)plVar7 + 0x2c);\n      if (puVar2 != (undefined8 *)0x0) {\n        *puVar2 = plVar13;\n      }\n      FUN_0010c4d3();\n      uVar3 = FUN_0012ef67(plVar13);\n      *(undefined4 *)((long)plVar12 + (long)iVar9 * 4 + 0x28) = uVar3;\n      iVar14 = iVar9;\n      if ((iVar9 < 2) && (lVar6 = plVar12[(long)iVar9 + 8], lVar6 != 0)) {\n        lVar8 = (long)(iVar9 + 1);\n        do {\n          iVar14 = (int)lVar8;\n          plVar12[lVar8 + 6] = lVar6;\n          plVar12[lVar8 + 1] = plVar12[lVar8 + 2];\n          *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28) =\n               *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x2c);\n          if (1 < iVar14) break;\n          lVar6 = plVar12[lVar8 + 8];\n          lVar8 = lVar8 + 1;\n        } while (lVar6 != 0);\n      }\n      plVar12[(long)iVar14 + 7] = 0;\n      plVar12[(long)iVar14 + 2] = 0;\n      *(undefined4 *)((long)plVar12 + (long)(iVar14 + 1) * 4 + 0x28) = 0;\n      if (plVar12[7] == 0) {\n        *param_1 = plVar13;\n        *plVar13 = 0;\n        FUN_0010c4d3(plVar12);\n      }\n      param_2 = *(int *)((long)plVar13 + 0x2c) + (int)plVar13[5] + 1;\n    }\n    else {\n      do {\n        plVar13 = plVar5;\n        plVar5 = (long *)plVar13[1];\n      } while (plVar5 != (long *)0x0);\n      plVar12[(long)iVar9 + 7] = plVar13[7];\n      param_2 = 0;\n      plVar13 = plVar7;\n    }\n  }\n  else {\n    while (plVar5 = plVar7, (long *)plVar5[1] != (long *)0x0) {\n      plVar7 = (long *)plVar5[4];\n      if ((((long *)plVar5[4] == (long *)0x0) &&\n          (plVar7 = (long *)plVar5[3], (long *)plVar5[3] == (long *)0x0)) &&\n         (plVar7 = (long *)plVar5[2], (long *)plVar5[2] == (long *)0x0)) {\n        plVar7 = (long *)plVar5[1];\n      }\n    }\n    lVar6 = plVar5[9];\n    if ((lVar6 == 0) && (lVar6 = plVar5[8], lVar6 == 0)) {\n      lVar6 = plVar5[7];\n    }\n    plVar12[(long)iVar9 + 7] = lVar6;\n    param_2 = *(int *)((long)plVar12 + (long)iVar9 * 4 + 0x28) + -1;\n  }" (if "if") (parenthesized_expression "(plVar13[8] == 0)" (( "(") (binary_expression "plVar13[8] == 0" (subscript_expression "plVar13[8]" (identifier "plVar13") ([ "[") (number_literal "8") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    plVar7 = (long *)plVar12[(long)iVar9 + 2];\n    plVar5 = plVar7;\n    if (plVar7[8] == 0) {\n      plVar13[8] = plVar12[(long)iVar9 + 7];\n      puVar2 = (undefined8 *)plVar7[1];\n      plVar13[3] = (long)puVar2;\n      *(int *)(plVar13 + 6) = (int)plVar7[5];\n      if (puVar2 != (undefined8 *)0x0) {\n        *puVar2 = plVar13;\n      }\n      plVar13[9] = plVar7[7];\n      puVar2 = (undefined8 *)plVar7[2];\n      plVar13[4] = (long)puVar2;\n      *(undefined4 *)((long)plVar13 + 0x34) = *(undefined4 *)((long)plVar7 + 0x2c);\n      if (puVar2 != (undefined8 *)0x0) {\n        *puVar2 = plVar13;\n      }\n      FUN_0010c4d3();\n      uVar3 = FUN_0012ef67(plVar13);\n      *(undefined4 *)((long)plVar12 + (long)iVar9 * 4 + 0x28) = uVar3;\n      iVar14 = iVar9;\n      if ((iVar9 < 2) && (lVar6 = plVar12[(long)iVar9 + 8], lVar6 != 0)) {\n        lVar8 = (long)(iVar9 + 1);\n        do {\n          iVar14 = (int)lVar8;\n          plVar12[lVar8 + 6] = lVar6;\n          plVar12[lVar8 + 1] = plVar12[lVar8 + 2];\n          *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28) =\n               *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x2c);\n          if (1 < iVar14) break;\n          lVar6 = plVar12[lVar8 + 8];\n          lVar8 = lVar8 + 1;\n        } while (lVar6 != 0);\n      }\n      plVar12[(long)iVar14 + 7] = 0;\n      plVar12[(long)iVar14 + 2] = 0;\n      *(undefined4 *)((long)plVar12 + (long)(iVar14 + 1) * 4 + 0x28) = 0;\n      if (plVar12[7] == 0) {\n        *param_1 = plVar13;\n        *plVar13 = 0;\n        FUN_0010c4d3(plVar12);\n      }\n      param_2 = *(int *)((long)plVar13 + 0x2c) + (int)plVar13[5] + 1;\n    }\n    else {\n      do {\n        plVar13 = plVar5;\n        plVar5 = (long *)plVar13[1];\n      } while (plVar5 != (long *)0x0);\n      plVar12[(long)iVar9 + 7] = plVar13[7];\n      param_2 = 0;\n      plVar13 = plVar7;\n    }\n  }" ({ "{") (expression_statement "plVar7 = (long *)plVar12[(long)iVar9 + 2];" (assignment_expression "plVar7 = (long *)plVar12[(long)iVar9 + 2]" (identifier "plVar7") (= "=") (cast_expression "(long *)plVar12[(long)iVar9 + 2]" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "plVar12[(long)iVar9 + 2]" (identifier "plVar12") ([ "[") (binary_expression "(long)iVar9 + 2" (cast_expression "(long)iVar9" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "iVar9")) (+ "+") (number_literal "2")) (] "]")))) (; ";")) (expression_statement "plVar5 = plVar7;" (assignment_expression "plVar5 = plVar7" (identifier "plVar5") (= "=") (identifier "plVar7")) (; ";")) (if_statement "if (plVar7[8] == 0) {\n      plVar13[8] = plVar12[(long)iVar9 + 7];\n      puVar2 = (undefined8 *)plVar7[1];\n      plVar13[3] = (long)puVar2;\n      *(int *)(plVar13 + 6) = (int)plVar7[5];\n      if (puVar2 != (undefined8 *)0x0) {\n        *puVar2 = plVar13;\n      }\n      plVar13[9] = plVar7[7];\n      puVar2 = (undefined8 *)plVar7[2];\n      plVar13[4] = (long)puVar2;\n      *(undefined4 *)((long)plVar13 + 0x34) = *(undefined4 *)((long)plVar7 + 0x2c);\n      if (puVar2 != (undefined8 *)0x0) {\n        *puVar2 = plVar13;\n      }\n      FUN_0010c4d3();\n      uVar3 = FUN_0012ef67(plVar13);\n      *(undefined4 *)((long)plVar12 + (long)iVar9 * 4 + 0x28) = uVar3;\n      iVar14 = iVar9;\n      if ((iVar9 < 2) && (lVar6 = plVar12[(long)iVar9 + 8], lVar6 != 0)) {\n        lVar8 = (long)(iVar9 + 1);\n        do {\n          iVar14 = (int)lVar8;\n          plVar12[lVar8 + 6] = lVar6;\n          plVar12[lVar8 + 1] = plVar12[lVar8 + 2];\n          *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28) =\n               *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x2c);\n          if (1 < iVar14) break;\n          lVar6 = plVar12[lVar8 + 8];\n          lVar8 = lVar8 + 1;\n        } while (lVar6 != 0);\n      }\n      plVar12[(long)iVar14 + 7] = 0;\n      plVar12[(long)iVar14 + 2] = 0;\n      *(undefined4 *)((long)plVar12 + (long)(iVar14 + 1) * 4 + 0x28) = 0;\n      if (plVar12[7] == 0) {\n        *param_1 = plVar13;\n        *plVar13 = 0;\n        FUN_0010c4d3(plVar12);\n      }\n      param_2 = *(int *)((long)plVar13 + 0x2c) + (int)plVar13[5] + 1;\n    }\n    else {\n      do {\n        plVar13 = plVar5;\n        plVar5 = (long *)plVar13[1];\n      } while (plVar5 != (long *)0x0);\n      plVar12[(long)iVar9 + 7] = plVar13[7];\n      param_2 = 0;\n      plVar13 = plVar7;\n    }" (if "if") (parenthesized_expression "(plVar7[8] == 0)" (( "(") (binary_expression "plVar7[8] == 0" (subscript_expression "plVar7[8]" (identifier "plVar7") ([ "[") (number_literal "8") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      plVar13[8] = plVar12[(long)iVar9 + 7];\n      puVar2 = (undefined8 *)plVar7[1];\n      plVar13[3] = (long)puVar2;\n      *(int *)(plVar13 + 6) = (int)plVar7[5];\n      if (puVar2 != (undefined8 *)0x0) {\n        *puVar2 = plVar13;\n      }\n      plVar13[9] = plVar7[7];\n      puVar2 = (undefined8 *)plVar7[2];\n      plVar13[4] = (long)puVar2;\n      *(undefined4 *)((long)plVar13 + 0x34) = *(undefined4 *)((long)plVar7 + 0x2c);\n      if (puVar2 != (undefined8 *)0x0) {\n        *puVar2 = plVar13;\n      }\n      FUN_0010c4d3();\n      uVar3 = FUN_0012ef67(plVar13);\n      *(undefined4 *)((long)plVar12 + (long)iVar9 * 4 + 0x28) = uVar3;\n      iVar14 = iVar9;\n      if ((iVar9 < 2) && (lVar6 = plVar12[(long)iVar9 + 8], lVar6 != 0)) {\n        lVar8 = (long)(iVar9 + 1);\n        do {\n          iVar14 = (int)lVar8;\n          plVar12[lVar8 + 6] = lVar6;\n          plVar12[lVar8 + 1] = plVar12[lVar8 + 2];\n          *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28) =\n               *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x2c);\n          if (1 < iVar14) break;\n          lVar6 = plVar12[lVar8 + 8];\n          lVar8 = lVar8 + 1;\n        } while (lVar6 != 0);\n      }\n      plVar12[(long)iVar14 + 7] = 0;\n      plVar12[(long)iVar14 + 2] = 0;\n      *(undefined4 *)((long)plVar12 + (long)(iVar14 + 1) * 4 + 0x28) = 0;\n      if (plVar12[7] == 0) {\n        *param_1 = plVar13;\n        *plVar13 = 0;\n        FUN_0010c4d3(plVar12);\n      }\n      param_2 = *(int *)((long)plVar13 + 0x2c) + (int)plVar13[5] + 1;\n    }" ({ "{") (expression_statement "plVar13[8] = plVar12[(long)iVar9 + 7];" (assignment_expression "plVar13[8] = plVar12[(long)iVar9 + 7]" (subscript_expression "plVar13[8]" (identifier "plVar13") ([ "[") (number_literal "8") (] "]")) (= "=") (subscript_expression "plVar12[(long)iVar9 + 7]" (identifier "plVar12") ([ "[") (binary_expression "(long)iVar9 + 7" (cast_expression "(long)iVar9" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "iVar9")) (+ "+") (number_literal "7")) (] "]"))) (; ";")) (expression_statement "puVar2 = (undefined8 *)plVar7[1];" (assignment_expression "puVar2 = (undefined8 *)plVar7[1]" (identifier "puVar2") (= "=") (cast_expression "(undefined8 *)plVar7[1]" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "plVar7[1]" (identifier "plVar7") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "plVar13[3] = (long)puVar2;" (assignment_expression "plVar13[3] = (long)puVar2" (subscript_expression "plVar13[3]" (identifier "plVar13") ([ "[") (number_literal "3") (] "]")) (= "=") (cast_expression "(long)puVar2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar2"))) (; ";")) (expression_statement "*(int *)(plVar13 + 6) = (int)plVar7[5];" (assignment_expression "*(int *)(plVar13 + 6) = (int)plVar7[5]" (pointer_expression "*(int *)(plVar13 + 6)" (* "*") (cast_expression "(int *)(plVar13 + 6)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(plVar13 + 6)" (( "(") (binary_expression "plVar13 + 6" (identifier "plVar13") (+ "+") (number_literal "6")) () ")")))) (= "=") (cast_expression "(int)plVar7[5]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "plVar7[5]" (identifier "plVar7") ([ "[") (number_literal "5") (] "]")))) (; ";")) (if_statement "if (puVar2 != (undefined8 *)0x0) {\n        *puVar2 = plVar13;\n      }" (if "if") (parenthesized_expression "(puVar2 != (undefined8 *)0x0)" (( "(") (binary_expression "puVar2 != (undefined8 *)0x0" (identifier "puVar2") (!= "!=") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        *puVar2 = plVar13;\n      }" ({ "{") (expression_statement "*puVar2 = plVar13;" (assignment_expression "*puVar2 = plVar13" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (identifier "plVar13")) (; ";")) (} "}"))) (expression_statement "plVar13[9] = plVar7[7];" (assignment_expression "plVar13[9] = plVar7[7]" (subscript_expression "plVar13[9]" (identifier "plVar13") ([ "[") (number_literal "9") (] "]")) (= "=") (subscript_expression "plVar7[7]" (identifier "plVar7") ([ "[") (number_literal "7") (] "]"))) (; ";")) (expression_statement "puVar2 = (undefined8 *)plVar7[2];" (assignment_expression "puVar2 = (undefined8 *)plVar7[2]" (identifier "puVar2") (= "=") (cast_expression "(undefined8 *)plVar7[2]" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "plVar7[2]" (identifier "plVar7") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "plVar13[4] = (long)puVar2;" (assignment_expression "plVar13[4] = (long)puVar2" (subscript_expression "plVar13[4]" (identifier "plVar13") ([ "[") (number_literal "4") (] "]")) (= "=") (cast_expression "(long)puVar2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar2"))) (; ";")) (expression_statement "*(undefined4 *)((long)plVar13 + 0x34) = *(undefined4 *)((long)plVar7 + 0x2c);" (assignment_expression "*(undefined4 *)((long)plVar13 + 0x34) = *(undefined4 *)((long)plVar7 + 0x2c)" (pointer_expression "*(undefined4 *)((long)plVar13 + 0x34)" (* "*") (cast_expression "(undefined4 *)((long)plVar13 + 0x34)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)plVar13 + 0x34)" (( "(") (binary_expression "(long)plVar13 + 0x34" (cast_expression "(long)plVar13" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "plVar13")) (+ "+") (number_literal "0x34")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)((long)plVar7 + 0x2c)" (* "*") (cast_expression "(undefined4 *)((long)plVar7 + 0x2c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)plVar7 + 0x2c)" (( "(") (binary_expression "(long)plVar7 + 0x2c" (cast_expression "(long)plVar7" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "plVar7")) (+ "+") (number_literal "0x2c")) () ")"))))) (; ";")) (if_statement "if (puVar2 != (undefined8 *)0x0) {\n        *puVar2 = plVar13;\n      }" (if "if") (parenthesized_expression "(puVar2 != (undefined8 *)0x0)" (( "(") (binary_expression "puVar2 != (undefined8 *)0x0" (identifier "puVar2") (!= "!=") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        *puVar2 = plVar13;\n      }" ({ "{") (expression_statement "*puVar2 = plVar13;" (assignment_expression "*puVar2 = plVar13" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (identifier "plVar13")) (; ";")) (} "}"))) (expression_statement "FUN_0010c4d3();" (call_expression "FUN_0010c4d3()" (identifier "FUN_0010c4d3") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "uVar3 = FUN_0012ef67(plVar13);" (assignment_expression "uVar3 = FUN_0012ef67(plVar13)" (identifier "uVar3") (= "=") (call_expression "FUN_0012ef67(plVar13)" (identifier "FUN_0012ef67") (argument_list "(plVar13)" (( "(") (identifier "plVar13") () ")")))) (; ";")) (expression_statement "*(undefined4 *)((long)plVar12 + (long)iVar9 * 4 + 0x28) = uVar3;" (assignment_expression "*(undefined4 *)((long)plVar12 + (long)iVar9 * 4 + 0x28) = uVar3" (pointer_expression "*(undefined4 *)((long)plVar12 + (long)iVar9 * 4 + 0x28)" (* "*") (cast_expression "(undefined4 *)((long)plVar12 + (long)iVar9 * 4 + 0x28)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)plVar12 + (long)iVar9 * 4 + 0x28)" (( "(") (binary_expression "(long)plVar12 + (long)iVar9 * 4 + 0x28" (binary_expression "(long)plVar12 + (long)iVar9 * 4" (cast_expression "(long)plVar12" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "plVar12")) (+ "+") (binary_expression "(long)iVar9 * 4" (cast_expression "(long)iVar9" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "iVar9")) (* "*") (number_literal "4"))) (+ "+") (number_literal "0x28")) () ")")))) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "iVar14 = iVar9;" (assignment_expression "iVar14 = iVar9" (identifier "iVar14") (= "=") (identifier "iVar9")) (; ";")) (if_statement "if ((iVar9 < 2) && (lVar6 = plVar12[(long)iVar9 + 8], lVar6 != 0)) {\n        lVar8 = (long)(iVar9 + 1);\n        do {\n          iVar14 = (int)lVar8;\n          plVar12[lVar8 + 6] = lVar6;\n          plVar12[lVar8 + 1] = plVar12[lVar8 + 2];\n          *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28) =\n               *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x2c);\n          if (1 < iVar14) break;\n          lVar6 = plVar12[lVar8 + 8];\n          lVar8 = lVar8 + 1;\n        } while (lVar6 != 0);\n      }" (if "if") (parenthesized_expression "((iVar9 < 2) && (lVar6 = plVar12[(long)iVar9 + 8], lVar6 != 0))" (( "(") (binary_expression "(iVar9 < 2) && (lVar6 = plVar12[(long)iVar9 + 8], lVar6 != 0)" (parenthesized_expression "(iVar9 < 2)" (( "(") (binary_expression "iVar9 < 2" (identifier "iVar9") (< "<") (number_literal "2")) () ")")) (&& "&&") (parenthesized_expression "(lVar6 = plVar12[(long)iVar9 + 8], lVar6 != 0)" (( "(") (comma_expression "lVar6 = plVar12[(long)iVar9 + 8], lVar6 != 0" (assignment_expression "lVar6 = plVar12[(long)iVar9 + 8]" (identifier "lVar6") (= "=") (subscript_expression "plVar12[(long)iVar9 + 8]" (identifier "plVar12") ([ "[") (binary_expression "(long)iVar9 + 8" (cast_expression "(long)iVar9" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "iVar9")) (+ "+") (number_literal "8")) (] "]"))) (, ",") (binary_expression "lVar6 != 0" (identifier "lVar6") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n        lVar8 = (long)(iVar9 + 1);\n        do {\n          iVar14 = (int)lVar8;\n          plVar12[lVar8 + 6] = lVar6;\n          plVar12[lVar8 + 1] = plVar12[lVar8 + 2];\n          *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28) =\n               *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x2c);\n          if (1 < iVar14) break;\n          lVar6 = plVar12[lVar8 + 8];\n          lVar8 = lVar8 + 1;\n        } while (lVar6 != 0);\n      }" ({ "{") (expression_statement "lVar8 = (long)(iVar9 + 1);" (assignment_expression "lVar8 = (long)(iVar9 + 1)" (identifier "lVar8") (= "=") (cast_expression "(long)(iVar9 + 1)" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (parenthesized_expression "(iVar9 + 1)" (( "(") (binary_expression "iVar9 + 1" (identifier "iVar9") (+ "+") (number_literal "1")) () ")")))) (; ";")) (do_statement "do {\n          iVar14 = (int)lVar8;\n          plVar12[lVar8 + 6] = lVar6;\n          plVar12[lVar8 + 1] = plVar12[lVar8 + 2];\n          *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28) =\n               *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x2c);\n          if (1 < iVar14) break;\n          lVar6 = plVar12[lVar8 + 8];\n          lVar8 = lVar8 + 1;\n        } while (lVar6 != 0);" (do "do") (compound_statement "{\n          iVar14 = (int)lVar8;\n          plVar12[lVar8 + 6] = lVar6;\n          plVar12[lVar8 + 1] = plVar12[lVar8 + 2];\n          *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28) =\n               *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x2c);\n          if (1 < iVar14) break;\n          lVar6 = plVar12[lVar8 + 8];\n          lVar8 = lVar8 + 1;\n        }" ({ "{") (expression_statement "iVar14 = (int)lVar8;" (assignment_expression "iVar14 = (int)lVar8" (identifier "iVar14") (= "=") (cast_expression "(int)lVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar8"))) (; ";")) (expression_statement "plVar12[lVar8 + 6] = lVar6;" (assignment_expression "plVar12[lVar8 + 6] = lVar6" (subscript_expression "plVar12[lVar8 + 6]" (identifier "plVar12") ([ "[") (binary_expression "lVar8 + 6" (identifier "lVar8") (+ "+") (number_literal "6")) (] "]")) (= "=") (identifier "lVar6")) (; ";")) (expression_statement "plVar12[lVar8 + 1] = plVar12[lVar8 + 2];" (assignment_expression "plVar12[lVar8 + 1] = plVar12[lVar8 + 2]" (subscript_expression "plVar12[lVar8 + 1]" (identifier "plVar12") ([ "[") (binary_expression "lVar8 + 1" (identifier "lVar8") (+ "+") (number_literal "1")) (] "]")) (= "=") (subscript_expression "plVar12[lVar8 + 2]" (identifier "plVar12") ([ "[") (binary_expression "lVar8 + 2" (identifier "lVar8") (+ "+") (number_literal "2")) (] "]"))) (; ";")) (expression_statement "*(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28) =\n               *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x2c);" (assignment_expression "*(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28) =\n               *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x2c)" (pointer_expression "*(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28)" (* "*") (cast_expression "(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)plVar12 + lVar8 * 4 + 0x28)" (( "(") (binary_expression "(long)plVar12 + lVar8 * 4 + 0x28" (binary_expression "(long)plVar12 + lVar8 * 4" (cast_expression "(long)plVar12" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "plVar12")) (+ "+") (binary_expression "lVar8 * 4" (identifier "lVar8") (* "*") (number_literal "4"))) (+ "+") (number_literal "0x28")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x2c)" (* "*") (cast_expression "(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x2c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)plVar12 + lVar8 * 4 + 0x2c)" (( "(") (binary_expression "(long)plVar12 + lVar8 * 4 + 0x2c" (binary_expression "(long)plVar12 + lVar8 * 4" (cast_expression "(long)plVar12" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "plVar12")) (+ "+") (binary_expression "lVar8 * 4" (identifier "lVar8") (* "*") (number_literal "4"))) (+ "+") (number_literal "0x2c")) () ")"))))) (; ";")) (if_statement "if (1 < iVar14) break;" (if "if") (parenthesized_expression "(1 < iVar14)" (( "(") (binary_expression "1 < iVar14" (number_literal "1") (< "<") (identifier "iVar14")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "lVar6 = plVar12[lVar8 + 8];" (assignment_expression "lVar6 = plVar12[lVar8 + 8]" (identifier "lVar6") (= "=") (subscript_expression "plVar12[lVar8 + 8]" (identifier "plVar12") ([ "[") (binary_expression "lVar8 + 8" (identifier "lVar8") (+ "+") (number_literal "8")) (] "]"))) (; ";")) (expression_statement "lVar8 = lVar8 + 1;" (assignment_expression "lVar8 = lVar8 + 1" (identifier "lVar8") (= "=") (binary_expression "lVar8 + 1" (identifier "lVar8") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(lVar6 != 0)" (( "(") (binary_expression "lVar6 != 0" (identifier "lVar6") (!= "!=") (number_literal "0")) () ")")) (; ";")) (} "}"))) (expression_statement "plVar12[(long)iVar14 + 7] = 0;" (assignment_expression "plVar12[(long)iVar14 + 7] = 0" (subscript_expression "plVar12[(long)iVar14 + 7]" (identifier "plVar12") ([ "[") (binary_expression "(long)iVar14 + 7" (cast_expression "(long)iVar14" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "iVar14")) (+ "+") (number_literal "7")) (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "plVar12[(long)iVar14 + 2] = 0;" (assignment_expression "plVar12[(long)iVar14 + 2] = 0" (subscript_expression "plVar12[(long)iVar14 + 2]" (identifier "plVar12") ([ "[") (binary_expression "(long)iVar14 + 2" (cast_expression "(long)iVar14" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "iVar14")) (+ "+") (number_literal "2")) (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)((long)plVar12 + (long)(iVar14 + 1) * 4 + 0x28) = 0;" (assignment_expression "*(undefined4 *)((long)plVar12 + (long)(iVar14 + 1) * 4 + 0x28) = 0" (pointer_expression "*(undefined4 *)((long)plVar12 + (long)(iVar14 + 1) * 4 + 0x28)" (* "*") (cast_expression "(undefined4 *)((long)plVar12 + (long)(iVar14 + 1) * 4 + 0x28)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)plVar12 + (long)(iVar14 + 1) * 4 + 0x28)" (( "(") (binary_expression "(long)plVar12 + (long)(iVar14 + 1) * 4 + 0x28" (binary_expression "(long)plVar12 + (long)(iVar14 + 1) * 4" (cast_expression "(long)plVar12" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "plVar12")) (+ "+") (binary_expression "(long)(iVar14 + 1) * 4" (cast_expression "(long)(iVar14 + 1)" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (parenthesized_expression "(iVar14 + 1)" (( "(") (binary_expression "iVar14 + 1" (identifier "iVar14") (+ "+") (number_literal "1")) () ")"))) (* "*") (number_literal "4"))) (+ "+") (number_literal "0x28")) () ")")))) (= "=") (number_literal "0")) (; ";")) (if_statement "if (plVar12[7] == 0) {\n        *param_1 = plVar13;\n        *plVar13 = 0;\n        FUN_0010c4d3(plVar12);\n      }" (if "if") (parenthesized_expression "(plVar12[7] == 0)" (( "(") (binary_expression "plVar12[7] == 0" (subscript_expression "plVar12[7]" (identifier "plVar12") ([ "[") (number_literal "7") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        *param_1 = plVar13;\n        *plVar13 = 0;\n        FUN_0010c4d3(plVar12);\n      }" ({ "{") (expression_statement "*param_1 = plVar13;" (assignment_expression "*param_1 = plVar13" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "plVar13")) (; ";")) (expression_statement "*plVar13 = 0;" (assignment_expression "*plVar13 = 0" (pointer_expression "*plVar13" (* "*") (identifier "plVar13")) (= "=") (number_literal "0")) (; ";")) (expression_statement "FUN_0010c4d3(plVar12);" (call_expression "FUN_0010c4d3(plVar12)" (identifier "FUN_0010c4d3") (argument_list "(plVar12)" (( "(") (identifier "plVar12") () ")"))) (; ";")) (} "}"))) (expression_statement "param_2 = *(int *)((long)plVar13 + 0x2c) + (int)plVar13[5] + 1;" (assignment_expression "param_2 = *(int *)((long)plVar13 + 0x2c) + (int)plVar13[5] + 1" (identifier "param_2") (= "=") (binary_expression "*(int *)((long)plVar13 + 0x2c) + (int)plVar13[5] + 1" (binary_expression "*(int *)((long)plVar13 + 0x2c) + (int)plVar13[5]" (pointer_expression "*(int *)((long)plVar13 + 0x2c)" (* "*") (cast_expression "(int *)((long)plVar13 + 0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)plVar13 + 0x2c)" (( "(") (binary_expression "(long)plVar13 + 0x2c" (cast_expression "(long)plVar13" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "plVar13")) (+ "+") (number_literal "0x2c")) () ")")))) (+ "+") (cast_expression "(int)plVar13[5]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "plVar13[5]" (identifier "plVar13") ([ "[") (number_literal "5") (] "]")))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n      do {\n        plVar13 = plVar5;\n        plVar5 = (long *)plVar13[1];\n      } while (plVar5 != (long *)0x0);\n      plVar12[(long)iVar9 + 7] = plVar13[7];\n      param_2 = 0;\n      plVar13 = plVar7;\n    }" (else "else") (compound_statement "{\n      do {\n        plVar13 = plVar5;\n        plVar5 = (long *)plVar13[1];\n      } while (plVar5 != (long *)0x0);\n      plVar12[(long)iVar9 + 7] = plVar13[7];\n      param_2 = 0;\n      plVar13 = plVar7;\n    }" ({ "{") (do_statement "do {\n        plVar13 = plVar5;\n        plVar5 = (long *)plVar13[1];\n      } while (plVar5 != (long *)0x0);" (do "do") (compound_statement "{\n        plVar13 = plVar5;\n        plVar5 = (long *)plVar13[1];\n      }" ({ "{") (expression_statement "plVar13 = plVar5;" (assignment_expression "plVar13 = plVar5" (identifier "plVar13") (= "=") (identifier "plVar5")) (; ";")) (expression_statement "plVar5 = (long *)plVar13[1];" (assignment_expression "plVar5 = (long *)plVar13[1]" (identifier "plVar5") (= "=") (cast_expression "(long *)plVar13[1]" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "plVar13[1]" (identifier "plVar13") ([ "[") (number_literal "1") (] "]")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(plVar5 != (long *)0x0)" (( "(") (binary_expression "plVar5 != (long *)0x0" (identifier "plVar5") (!= "!=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";")) (expression_statement "plVar12[(long)iVar9 + 7] = plVar13[7];" (assignment_expression "plVar12[(long)iVar9 + 7] = plVar13[7]" (subscript_expression "plVar12[(long)iVar9 + 7]" (identifier "plVar12") ([ "[") (binary_expression "(long)iVar9 + 7" (cast_expression "(long)iVar9" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "iVar9")) (+ "+") (number_literal "7")) (] "]")) (= "=") (subscript_expression "plVar13[7]" (identifier "plVar13") ([ "[") (number_literal "7") (] "]"))) (; ";")) (expression_statement "param_2 = 0;" (assignment_expression "param_2 = 0" (identifier "param_2") (= "=") (number_literal "0")) (; ";")) (expression_statement "plVar13 = plVar7;" (assignment_expression "plVar13 = plVar7" (identifier "plVar13") (= "=") (identifier "plVar7")) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n    while (plVar5 = plVar7, (long *)plVar5[1] != (long *)0x0) {\n      plVar7 = (long *)plVar5[4];\n      if ((((long *)plVar5[4] == (long *)0x0) &&\n          (plVar7 = (long *)plVar5[3], (long *)plVar5[3] == (long *)0x0)) &&\n         (plVar7 = (long *)plVar5[2], (long *)plVar5[2] == (long *)0x0)) {\n        plVar7 = (long *)plVar5[1];\n      }\n    }\n    lVar6 = plVar5[9];\n    if ((lVar6 == 0) && (lVar6 = plVar5[8], lVar6 == 0)) {\n      lVar6 = plVar5[7];\n    }\n    plVar12[(long)iVar9 + 7] = lVar6;\n    param_2 = *(int *)((long)plVar12 + (long)iVar9 * 4 + 0x28) + -1;\n  }" (else "else") (compound_statement "{\n    while (plVar5 = plVar7, (long *)plVar5[1] != (long *)0x0) {\n      plVar7 = (long *)plVar5[4];\n      if ((((long *)plVar5[4] == (long *)0x0) &&\n          (plVar7 = (long *)plVar5[3], (long *)plVar5[3] == (long *)0x0)) &&\n         (plVar7 = (long *)plVar5[2], (long *)plVar5[2] == (long *)0x0)) {\n        plVar7 = (long *)plVar5[1];\n      }\n    }\n    lVar6 = plVar5[9];\n    if ((lVar6 == 0) && (lVar6 = plVar5[8], lVar6 == 0)) {\n      lVar6 = plVar5[7];\n    }\n    plVar12[(long)iVar9 + 7] = lVar6;\n    param_2 = *(int *)((long)plVar12 + (long)iVar9 * 4 + 0x28) + -1;\n  }" ({ "{") (while_statement "while (plVar5 = plVar7, (long *)plVar5[1] != (long *)0x0) {\n      plVar7 = (long *)plVar5[4];\n      if ((((long *)plVar5[4] == (long *)0x0) &&\n          (plVar7 = (long *)plVar5[3], (long *)plVar5[3] == (long *)0x0)) &&\n         (plVar7 = (long *)plVar5[2], (long *)plVar5[2] == (long *)0x0)) {\n        plVar7 = (long *)plVar5[1];\n      }\n    }" (while "while") (parenthesized_expression "(plVar5 = plVar7, (long *)plVar5[1] != (long *)0x0)" (( "(") (comma_expression "plVar5 = plVar7, (long *)plVar5[1] != (long *)0x0" (assignment_expression "plVar5 = plVar7" (identifier "plVar5") (= "=") (identifier "plVar7")) (, ",") (binary_expression "(long *)plVar5[1] != (long *)0x0" (cast_expression "(long *)plVar5[1]" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "plVar5[1]" (identifier "plVar5") ([ "[") (number_literal "1") (] "]"))) (!= "!=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")")) (compound_statement "{\n      plVar7 = (long *)plVar5[4];\n      if ((((long *)plVar5[4] == (long *)0x0) &&\n          (plVar7 = (long *)plVar5[3], (long *)plVar5[3] == (long *)0x0)) &&\n         (plVar7 = (long *)plVar5[2], (long *)plVar5[2] == (long *)0x0)) {\n        plVar7 = (long *)plVar5[1];\n      }\n    }" ({ "{") (expression_statement "plVar7 = (long *)plVar5[4];" (assignment_expression "plVar7 = (long *)plVar5[4]" (identifier "plVar7") (= "=") (cast_expression "(long *)plVar5[4]" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "plVar5[4]" (identifier "plVar5") ([ "[") (number_literal "4") (] "]")))) (; ";")) (if_statement "if ((((long *)plVar5[4] == (long *)0x0) &&\n          (plVar7 = (long *)plVar5[3], (long *)plVar5[3] == (long *)0x0)) &&\n         (plVar7 = (long *)plVar5[2], (long *)plVar5[2] == (long *)0x0)) {\n        plVar7 = (long *)plVar5[1];\n      }" (if "if") (parenthesized_expression "((((long *)plVar5[4] == (long *)0x0) &&\n          (plVar7 = (long *)plVar5[3], (long *)plVar5[3] == (long *)0x0)) &&\n         (plVar7 = (long *)plVar5[2], (long *)plVar5[2] == (long *)0x0))" (( "(") (binary_expression "(((long *)plVar5[4] == (long *)0x0) &&\n          (plVar7 = (long *)plVar5[3], (long *)plVar5[3] == (long *)0x0)) &&\n         (plVar7 = (long *)plVar5[2], (long *)plVar5[2] == (long *)0x0)" (parenthesized_expression "(((long *)plVar5[4] == (long *)0x0) &&\n          (plVar7 = (long *)plVar5[3], (long *)plVar5[3] == (long *)0x0))" (( "(") (binary_expression "((long *)plVar5[4] == (long *)0x0) &&\n          (plVar7 = (long *)plVar5[3], (long *)plVar5[3] == (long *)0x0)" (parenthesized_expression "((long *)plVar5[4] == (long *)0x0)" (( "(") (binary_expression "(long *)plVar5[4] == (long *)0x0" (cast_expression "(long *)plVar5[4]" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "plVar5[4]" (identifier "plVar5") ([ "[") (number_literal "4") (] "]"))) (== "==") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(plVar7 = (long *)plVar5[3], (long *)plVar5[3] == (long *)0x0)" (( "(") (comma_expression "plVar7 = (long *)plVar5[3], (long *)plVar5[3] == (long *)0x0" (assignment_expression "plVar7 = (long *)plVar5[3]" (identifier "plVar7") (= "=") (cast_expression "(long *)plVar5[3]" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "plVar5[3]" (identifier "plVar5") ([ "[") (number_literal "3") (] "]")))) (, ",") (binary_expression "(long *)plVar5[3] == (long *)0x0" (cast_expression "(long *)plVar5[3]" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "plVar5[3]" (identifier "plVar5") ([ "[") (number_literal "3") (] "]"))) (== "==") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(plVar7 = (long *)plVar5[2], (long *)plVar5[2] == (long *)0x0)" (( "(") (comma_expression "plVar7 = (long *)plVar5[2], (long *)plVar5[2] == (long *)0x0" (assignment_expression "plVar7 = (long *)plVar5[2]" (identifier "plVar7") (= "=") (cast_expression "(long *)plVar5[2]" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "plVar5[2]" (identifier "plVar5") ([ "[") (number_literal "2") (] "]")))) (, ",") (binary_expression "(long *)plVar5[2] == (long *)0x0" (cast_expression "(long *)plVar5[2]" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "plVar5[2]" (identifier "plVar5") ([ "[") (number_literal "2") (] "]"))) (== "==") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")"))) () ")")) (compound_statement "{\n        plVar7 = (long *)plVar5[1];\n      }" ({ "{") (expression_statement "plVar7 = (long *)plVar5[1];" (assignment_expression "plVar7 = (long *)plVar5[1]" (identifier "plVar7") (= "=") (cast_expression "(long *)plVar5[1]" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "plVar5[1]" (identifier "plVar5") ([ "[") (number_literal "1") (] "]")))) (; ";")) (} "}"))) (} "}"))) (expression_statement "lVar6 = plVar5[9];" (assignment_expression "lVar6 = plVar5[9]" (identifier "lVar6") (= "=") (subscript_expression "plVar5[9]" (identifier "plVar5") ([ "[") (number_literal "9") (] "]"))) (; ";")) (if_statement "if ((lVar6 == 0) && (lVar6 = plVar5[8], lVar6 == 0)) {\n      lVar6 = plVar5[7];\n    }" (if "if") (parenthesized_expression "((lVar6 == 0) && (lVar6 = plVar5[8], lVar6 == 0))" (( "(") (binary_expression "(lVar6 == 0) && (lVar6 = plVar5[8], lVar6 == 0)" (parenthesized_expression "(lVar6 == 0)" (( "(") (binary_expression "lVar6 == 0" (identifier "lVar6") (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(lVar6 = plVar5[8], lVar6 == 0)" (( "(") (comma_expression "lVar6 = plVar5[8], lVar6 == 0" (assignment_expression "lVar6 = plVar5[8]" (identifier "lVar6") (= "=") (subscript_expression "plVar5[8]" (identifier "plVar5") ([ "[") (number_literal "8") (] "]"))) (, ",") (binary_expression "lVar6 == 0" (identifier "lVar6") (== "==") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n      lVar6 = plVar5[7];\n    }" ({ "{") (expression_statement "lVar6 = plVar5[7];" (assignment_expression "lVar6 = plVar5[7]" (identifier "lVar6") (= "=") (subscript_expression "plVar5[7]" (identifier "plVar5") ([ "[") (number_literal "7") (] "]"))) (; ";")) (} "}"))) (expression_statement "plVar12[(long)iVar9 + 7] = lVar6;" (assignment_expression "plVar12[(long)iVar9 + 7] = lVar6" (subscript_expression "plVar12[(long)iVar9 + 7]" (identifier "plVar12") ([ "[") (binary_expression "(long)iVar9 + 7" (cast_expression "(long)iVar9" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "iVar9")) (+ "+") (number_literal "7")) (] "]")) (= "=") (identifier "lVar6")) (; ";")) (expression_statement "param_2 = *(int *)((long)plVar12 + (long)iVar9 * 4 + 0x28) + -1;" (assignment_expression "param_2 = *(int *)((long)plVar12 + (long)iVar9 * 4 + 0x28) + -1" (identifier "param_2") (= "=") (binary_expression "*(int *)((long)plVar12 + (long)iVar9 * 4 + 0x28) + -1" (pointer_expression "*(int *)((long)plVar12 + (long)iVar9 * 4 + 0x28)" (* "*") (cast_expression "(int *)((long)plVar12 + (long)iVar9 * 4 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)plVar12 + (long)iVar9 * 4 + 0x28)" (( "(") (binary_expression "(long)plVar12 + (long)iVar9 * 4 + 0x28" (binary_expression "(long)plVar12 + (long)iVar9 * 4" (cast_expression "(long)plVar12" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "plVar12")) (+ "+") (binary_expression "(long)iVar9 * 4" (cast_expression "(long)iVar9" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "iVar9")) (* "*") (number_literal "4"))) (+ "+") (number_literal "0x28")) () ")")))) (+ "+") (number_literal "-1"))) (; ";")) (} "}")))) (goto_statement "goto LAB_0012f7e4;" (goto "goto") (statement_identifier "LAB_0012f7e4") (; ";")) (labeled_statement "LAB_0012f7d1:\n  plVar13 = (long *)plVar12[1];" (statement_identifier "LAB_0012f7d1") (: ":") (expression_statement "plVar13 = (long *)plVar12[1];" (assignment_expression "plVar13 = (long *)plVar12[1]" (identifier "plVar13") (= "=") (cast_expression "(long *)plVar12[1]" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "plVar12[1]" (identifier "plVar12") ([ "[") (number_literal "1") (] "]")))) (; ";"))) (if_statement "if (plVar13[8] == 0) {\n    lVar6 = plVar12[2];\n    local_50 = 0;\n    local_54 = 0;\n    plVar7 = plVar12;\n    if (lVar6 != 0) {\nLAB_0012fe3f:\n      if (*(long *)(lVar6 + 0x40) != 0) {\n        plVar13[8] = plVar7[7];\n        puVar2 = *(undefined8 **)(lVar6 + 8);\n        plVar13[3] = (long)puVar2;\n        *(undefined4 *)(plVar13 + 6) = *(undefined4 *)(lVar6 + 0x28);\n        if (puVar2 != (undefined8 *)0x0) {\n          *puVar2 = plVar13;\n        }\n        plVar7[7] = *(long *)(lVar6 + 0x38);\n        *(undefined8 *)(lVar6 + 8) = *(undefined8 *)(lVar6 + 0x10);\n        *(undefined4 *)(lVar6 + 0x28) = *(undefined4 *)(lVar6 + 0x2c);\n        lVar8 = *(long *)(lVar6 + 0x40);\n        if (lVar8 != 0) {\n          *(undefined8 *)(lVar6 + 0x10) = *(undefined8 *)(lVar6 + 0x18);\n          *(undefined4 *)(lVar6 + 0x2c) = *(undefined4 *)(lVar6 + 0x30);\n          *(long *)(lVar6 + 0x38) = lVar8;\n          if (*(long *)(lVar6 + 0x48) == 0) {\n            lVar8 = 1;\n          }\n          else {\n            *(undefined8 *)(lVar6 + 0x18) = *(undefined8 *)(lVar6 + 0x20);\n            *(undefined4 *)(lVar6 + 0x30) = *(undefined4 *)(lVar6 + 0x34);\n            *(long *)(lVar6 + 0x40) = *(long *)(lVar6 + 0x48);\n            lVar8 = 2;\n          }\n        }\n        lVar11 = lVar6 + (long)(int)lVar8 * 8;\n        *(undefined8 *)(lVar11 + 0x10) = 0;\n        *(undefined4 *)(lVar6 + 0x28 + (long)((int)lVar8 + 1) * 4) = 0;\n        *(undefined8 *)(lVar11 + 0x38) = 0;\n        uVar3 = FUN_0012ef67(plVar13);\n        *(undefined4 *)((long)plVar12 + local_50 * 4 + 0x28) = uVar3;\n        uVar3 = FUN_0012ef67(lVar6);\n        *(undefined4 *)((long)plVar12 + local_50 * 4 + 0x2c) = uVar3;\n        goto LAB_0012f7e4;\n      }\n      if (local_54 != 0) {\nLAB_0012f905:\n        local_54 = local_54 - 1;\n        param_2 = param_2 + 1 + *(int *)((long)plVar12 + (long)(int)local_54 * 4 + 0x28);\n      }\n    }\n    lVar6 = plVar12[(long)(int)local_54 + 1];\n    plVar13 = (long *)plVar12[(long)(int)local_54 + 2];\n    plVar13[4] = plVar13[2];\n    *(undefined4 *)((long)plVar13 + 0x34) = *(undefined4 *)((long)plVar13 + 0x2c);\n    plVar13[9] = plVar13[7];\n    plVar13[3] = plVar13[1];\n    *(int *)(plVar13 + 6) = (int)plVar13[5];\n    plVar13[8] = plVar12[(long)(int)local_54 + 7];\n    puVar2 = *(undefined8 **)(lVar6 + 0x10);\n    plVar13[2] = (long)puVar2;\n    *(undefined4 *)((long)plVar13 + 0x2c) = *(undefined4 *)(lVar6 + 0x2c);\n    if (puVar2 != (undefined8 *)0x0) {\n      *puVar2 = plVar13;\n    }\n    plVar13[7] = *(long *)(lVar6 + 0x38);\n    puVar2 = *(undefined8 **)(lVar6 + 8);\n    plVar13[1] = (long)puVar2;\n    *(undefined4 *)(plVar13 + 5) = *(undefined4 *)(lVar6 + 0x28);\n    if (puVar2 != (undefined8 *)0x0) {\n      *puVar2 = plVar13;\n    }\n    uVar3 = FUN_0012ef67(plVar13);\n    *(undefined4 *)((long)plVar12 + (long)(int)(local_54 + 1) * 4 + 0x28) = uVar3;\n    FUN_0010c4d3(lVar6);\n    if ((int)local_54 < 3) {\n      lVar6 = plVar12[(long)(int)local_54 + 2];\n      if (lVar6 != 0) {\n        lVar8 = (long)(int)(local_54 + 1);\n        do {\n          local_54 = (uint)lVar8;\n          plVar12[lVar8] = lVar6;\n          *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x24) =\n               *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28);\n          lVar6 = 0;\n          if ((int)(local_54 - 1) < 2) {\n            lVar6 = plVar12[lVar8 + 7];\n          }\n          plVar12[lVar8 + 6] = lVar6;\n          if (2 < (int)local_54) goto LAB_0012fd6d;\n          lVar6 = plVar12[lVar8 + 2];\n          lVar8 = lVar8 + 1;\n        } while (lVar6 != 0);\n      }\n      lVar6 = (long)(int)local_54;\n      plVar12[lVar6 + 1] = 0;\n      *(undefined4 *)((long)plVar12 + lVar6 * 4 + 0x28) = 0;\n      plVar12[lVar6 + 7] = 0;\n    }\n    else {\nLAB_0012fd6d:\n      plVar12[(long)(int)local_54 + 1] = 0;\n      *(undefined4 *)((long)plVar12 + (long)(int)local_54 * 4 + 0x28) = 0;\n    }\n    if (plVar12[7] == 0) {\n      *param_1 = plVar13;\n      *plVar13 = 0;\n      FUN_0010c4d3(plVar12);\n    }\n  }" (if "if") (parenthesized_expression "(plVar13[8] == 0)" (( "(") (binary_expression "plVar13[8] == 0" (subscript_expression "plVar13[8]" (identifier "plVar13") ([ "[") (number_literal "8") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    lVar6 = plVar12[2];\n    local_50 = 0;\n    local_54 = 0;\n    plVar7 = plVar12;\n    if (lVar6 != 0) {\nLAB_0012fe3f:\n      if (*(long *)(lVar6 + 0x40) != 0) {\n        plVar13[8] = plVar7[7];\n        puVar2 = *(undefined8 **)(lVar6 + 8);\n        plVar13[3] = (long)puVar2;\n        *(undefined4 *)(plVar13 + 6) = *(undefined4 *)(lVar6 + 0x28);\n        if (puVar2 != (undefined8 *)0x0) {\n          *puVar2 = plVar13;\n        }\n        plVar7[7] = *(long *)(lVar6 + 0x38);\n        *(undefined8 *)(lVar6 + 8) = *(undefined8 *)(lVar6 + 0x10);\n        *(undefined4 *)(lVar6 + 0x28) = *(undefined4 *)(lVar6 + 0x2c);\n        lVar8 = *(long *)(lVar6 + 0x40);\n        if (lVar8 != 0) {\n          *(undefined8 *)(lVar6 + 0x10) = *(undefined8 *)(lVar6 + 0x18);\n          *(undefined4 *)(lVar6 + 0x2c) = *(undefined4 *)(lVar6 + 0x30);\n          *(long *)(lVar6 + 0x38) = lVar8;\n          if (*(long *)(lVar6 + 0x48) == 0) {\n            lVar8 = 1;\n          }\n          else {\n            *(undefined8 *)(lVar6 + 0x18) = *(undefined8 *)(lVar6 + 0x20);\n            *(undefined4 *)(lVar6 + 0x30) = *(undefined4 *)(lVar6 + 0x34);\n            *(long *)(lVar6 + 0x40) = *(long *)(lVar6 + 0x48);\n            lVar8 = 2;\n          }\n        }\n        lVar11 = lVar6 + (long)(int)lVar8 * 8;\n        *(undefined8 *)(lVar11 + 0x10) = 0;\n        *(undefined4 *)(lVar6 + 0x28 + (long)((int)lVar8 + 1) * 4) = 0;\n        *(undefined8 *)(lVar11 + 0x38) = 0;\n        uVar3 = FUN_0012ef67(plVar13);\n        *(undefined4 *)((long)plVar12 + local_50 * 4 + 0x28) = uVar3;\n        uVar3 = FUN_0012ef67(lVar6);\n        *(undefined4 *)((long)plVar12 + local_50 * 4 + 0x2c) = uVar3;\n        goto LAB_0012f7e4;\n      }\n      if (local_54 != 0) {\nLAB_0012f905:\n        local_54 = local_54 - 1;\n        param_2 = param_2 + 1 + *(int *)((long)plVar12 + (long)(int)local_54 * 4 + 0x28);\n      }\n    }\n    lVar6 = plVar12[(long)(int)local_54 + 1];\n    plVar13 = (long *)plVar12[(long)(int)local_54 + 2];\n    plVar13[4] = plVar13[2];\n    *(undefined4 *)((long)plVar13 + 0x34) = *(undefined4 *)((long)plVar13 + 0x2c);\n    plVar13[9] = plVar13[7];\n    plVar13[3] = plVar13[1];\n    *(int *)(plVar13 + 6) = (int)plVar13[5];\n    plVar13[8] = plVar12[(long)(int)local_54 + 7];\n    puVar2 = *(undefined8 **)(lVar6 + 0x10);\n    plVar13[2] = (long)puVar2;\n    *(undefined4 *)((long)plVar13 + 0x2c) = *(undefined4 *)(lVar6 + 0x2c);\n    if (puVar2 != (undefined8 *)0x0) {\n      *puVar2 = plVar13;\n    }\n    plVar13[7] = *(long *)(lVar6 + 0x38);\n    puVar2 = *(undefined8 **)(lVar6 + 8);\n    plVar13[1] = (long)puVar2;\n    *(undefined4 *)(plVar13 + 5) = *(undefined4 *)(lVar6 + 0x28);\n    if (puVar2 != (undefined8 *)0x0) {\n      *puVar2 = plVar13;\n    }\n    uVar3 = FUN_0012ef67(plVar13);\n    *(undefined4 *)((long)plVar12 + (long)(int)(local_54 + 1) * 4 + 0x28) = uVar3;\n    FUN_0010c4d3(lVar6);\n    if ((int)local_54 < 3) {\n      lVar6 = plVar12[(long)(int)local_54 + 2];\n      if (lVar6 != 0) {\n        lVar8 = (long)(int)(local_54 + 1);\n        do {\n          local_54 = (uint)lVar8;\n          plVar12[lVar8] = lVar6;\n          *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x24) =\n               *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28);\n          lVar6 = 0;\n          if ((int)(local_54 - 1) < 2) {\n            lVar6 = plVar12[lVar8 + 7];\n          }\n          plVar12[lVar8 + 6] = lVar6;\n          if (2 < (int)local_54) goto LAB_0012fd6d;\n          lVar6 = plVar12[lVar8 + 2];\n          lVar8 = lVar8 + 1;\n        } while (lVar6 != 0);\n      }\n      lVar6 = (long)(int)local_54;\n      plVar12[lVar6 + 1] = 0;\n      *(undefined4 *)((long)plVar12 + lVar6 * 4 + 0x28) = 0;\n      plVar12[lVar6 + 7] = 0;\n    }\n    else {\nLAB_0012fd6d:\n      plVar12[(long)(int)local_54 + 1] = 0;\n      *(undefined4 *)((long)plVar12 + (long)(int)local_54 * 4 + 0x28) = 0;\n    }\n    if (plVar12[7] == 0) {\n      *param_1 = plVar13;\n      *plVar13 = 0;\n      FUN_0010c4d3(plVar12);\n    }\n  }" ({ "{") (expression_statement "lVar6 = plVar12[2];" (assignment_expression "lVar6 = plVar12[2]" (identifier "lVar6") (= "=") (subscript_expression "plVar12[2]" (identifier "plVar12") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" (identifier "local_50") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_54 = 0;" (assignment_expression "local_54 = 0" (identifier "local_54") (= "=") (number_literal "0")) (; ";")) (expression_statement "plVar7 = plVar12;" (assignment_expression "plVar7 = plVar12" (identifier "plVar7") (= "=") (identifier "plVar12")) (; ";")) (if_statement "if (lVar6 != 0) {\nLAB_0012fe3f:\n      if (*(long *)(lVar6 + 0x40) != 0) {\n        plVar13[8] = plVar7[7];\n        puVar2 = *(undefined8 **)(lVar6 + 8);\n        plVar13[3] = (long)puVar2;\n        *(undefined4 *)(plVar13 + 6) = *(undefined4 *)(lVar6 + 0x28);\n        if (puVar2 != (undefined8 *)0x0) {\n          *puVar2 = plVar13;\n        }\n        plVar7[7] = *(long *)(lVar6 + 0x38);\n        *(undefined8 *)(lVar6 + 8) = *(undefined8 *)(lVar6 + 0x10);\n        *(undefined4 *)(lVar6 + 0x28) = *(undefined4 *)(lVar6 + 0x2c);\n        lVar8 = *(long *)(lVar6 + 0x40);\n        if (lVar8 != 0) {\n          *(undefined8 *)(lVar6 + 0x10) = *(undefined8 *)(lVar6 + 0x18);\n          *(undefined4 *)(lVar6 + 0x2c) = *(undefined4 *)(lVar6 + 0x30);\n          *(long *)(lVar6 + 0x38) = lVar8;\n          if (*(long *)(lVar6 + 0x48) == 0) {\n            lVar8 = 1;\n          }\n          else {\n            *(undefined8 *)(lVar6 + 0x18) = *(undefined8 *)(lVar6 + 0x20);\n            *(undefined4 *)(lVar6 + 0x30) = *(undefined4 *)(lVar6 + 0x34);\n            *(long *)(lVar6 + 0x40) = *(long *)(lVar6 + 0x48);\n            lVar8 = 2;\n          }\n        }\n        lVar11 = lVar6 + (long)(int)lVar8 * 8;\n        *(undefined8 *)(lVar11 + 0x10) = 0;\n        *(undefined4 *)(lVar6 + 0x28 + (long)((int)lVar8 + 1) * 4) = 0;\n        *(undefined8 *)(lVar11 + 0x38) = 0;\n        uVar3 = FUN_0012ef67(plVar13);\n        *(undefined4 *)((long)plVar12 + local_50 * 4 + 0x28) = uVar3;\n        uVar3 = FUN_0012ef67(lVar6);\n        *(undefined4 *)((long)plVar12 + local_50 * 4 + 0x2c) = uVar3;\n        goto LAB_0012f7e4;\n      }\n      if (local_54 != 0) {\nLAB_0012f905:\n        local_54 = local_54 - 1;\n        param_2 = param_2 + 1 + *(int *)((long)plVar12 + (long)(int)local_54 * 4 + 0x28);\n      }\n    }" (if "if") (parenthesized_expression "(lVar6 != 0)" (( "(") (binary_expression "lVar6 != 0" (identifier "lVar6") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\nLAB_0012fe3f:\n      if (*(long *)(lVar6 + 0x40) != 0) {\n        plVar13[8] = plVar7[7];\n        puVar2 = *(undefined8 **)(lVar6 + 8);\n        plVar13[3] = (long)puVar2;\n        *(undefined4 *)(plVar13 + 6) = *(undefined4 *)(lVar6 + 0x28);\n        if (puVar2 != (undefined8 *)0x0) {\n          *puVar2 = plVar13;\n        }\n        plVar7[7] = *(long *)(lVar6 + 0x38);\n        *(undefined8 *)(lVar6 + 8) = *(undefined8 *)(lVar6 + 0x10);\n        *(undefined4 *)(lVar6 + 0x28) = *(undefined4 *)(lVar6 + 0x2c);\n        lVar8 = *(long *)(lVar6 + 0x40);\n        if (lVar8 != 0) {\n          *(undefined8 *)(lVar6 + 0x10) = *(undefined8 *)(lVar6 + 0x18);\n          *(undefined4 *)(lVar6 + 0x2c) = *(undefined4 *)(lVar6 + 0x30);\n          *(long *)(lVar6 + 0x38) = lVar8;\n          if (*(long *)(lVar6 + 0x48) == 0) {\n            lVar8 = 1;\n          }\n          else {\n            *(undefined8 *)(lVar6 + 0x18) = *(undefined8 *)(lVar6 + 0x20);\n            *(undefined4 *)(lVar6 + 0x30) = *(undefined4 *)(lVar6 + 0x34);\n            *(long *)(lVar6 + 0x40) = *(long *)(lVar6 + 0x48);\n            lVar8 = 2;\n          }\n        }\n        lVar11 = lVar6 + (long)(int)lVar8 * 8;\n        *(undefined8 *)(lVar11 + 0x10) = 0;\n        *(undefined4 *)(lVar6 + 0x28 + (long)((int)lVar8 + 1) * 4) = 0;\n        *(undefined8 *)(lVar11 + 0x38) = 0;\n        uVar3 = FUN_0012ef67(plVar13);\n        *(undefined4 *)((long)plVar12 + local_50 * 4 + 0x28) = uVar3;\n        uVar3 = FUN_0012ef67(lVar6);\n        *(undefined4 *)((long)plVar12 + local_50 * 4 + 0x2c) = uVar3;\n        goto LAB_0012f7e4;\n      }\n      if (local_54 != 0) {\nLAB_0012f905:\n        local_54 = local_54 - 1;\n        param_2 = param_2 + 1 + *(int *)((long)plVar12 + (long)(int)local_54 * 4 + 0x28);\n      }\n    }" ({ "{") (labeled_statement "LAB_0012fe3f:\n      if (*(long *)(lVar6 + 0x40) != 0) {\n        plVar13[8] = plVar7[7];\n        puVar2 = *(undefined8 **)(lVar6 + 8);\n        plVar13[3] = (long)puVar2;\n        *(undefined4 *)(plVar13 + 6) = *(undefined4 *)(lVar6 + 0x28);\n        if (puVar2 != (undefined8 *)0x0) {\n          *puVar2 = plVar13;\n        }\n        plVar7[7] = *(long *)(lVar6 + 0x38);\n        *(undefined8 *)(lVar6 + 8) = *(undefined8 *)(lVar6 + 0x10);\n        *(undefined4 *)(lVar6 + 0x28) = *(undefined4 *)(lVar6 + 0x2c);\n        lVar8 = *(long *)(lVar6 + 0x40);\n        if (lVar8 != 0) {\n          *(undefined8 *)(lVar6 + 0x10) = *(undefined8 *)(lVar6 + 0x18);\n          *(undefined4 *)(lVar6 + 0x2c) = *(undefined4 *)(lVar6 + 0x30);\n          *(long *)(lVar6 + 0x38) = lVar8;\n          if (*(long *)(lVar6 + 0x48) == 0) {\n            lVar8 = 1;\n          }\n          else {\n            *(undefined8 *)(lVar6 + 0x18) = *(undefined8 *)(lVar6 + 0x20);\n            *(undefined4 *)(lVar6 + 0x30) = *(undefined4 *)(lVar6 + 0x34);\n            *(long *)(lVar6 + 0x40) = *(long *)(lVar6 + 0x48);\n            lVar8 = 2;\n          }\n        }\n        lVar11 = lVar6 + (long)(int)lVar8 * 8;\n        *(undefined8 *)(lVar11 + 0x10) = 0;\n        *(undefined4 *)(lVar6 + 0x28 + (long)((int)lVar8 + 1) * 4) = 0;\n        *(undefined8 *)(lVar11 + 0x38) = 0;\n        uVar3 = FUN_0012ef67(plVar13);\n        *(undefined4 *)((long)plVar12 + local_50 * 4 + 0x28) = uVar3;\n        uVar3 = FUN_0012ef67(lVar6);\n        *(undefined4 *)((long)plVar12 + local_50 * 4 + 0x2c) = uVar3;\n        goto LAB_0012f7e4;\n      }" (statement_identifier "LAB_0012fe3f") (: ":") (if_statement "if (*(long *)(lVar6 + 0x40) != 0) {\n        plVar13[8] = plVar7[7];\n        puVar2 = *(undefined8 **)(lVar6 + 8);\n        plVar13[3] = (long)puVar2;\n        *(undefined4 *)(plVar13 + 6) = *(undefined4 *)(lVar6 + 0x28);\n        if (puVar2 != (undefined8 *)0x0) {\n          *puVar2 = plVar13;\n        }\n        plVar7[7] = *(long *)(lVar6 + 0x38);\n        *(undefined8 *)(lVar6 + 8) = *(undefined8 *)(lVar6 + 0x10);\n        *(undefined4 *)(lVar6 + 0x28) = *(undefined4 *)(lVar6 + 0x2c);\n        lVar8 = *(long *)(lVar6 + 0x40);\n        if (lVar8 != 0) {\n          *(undefined8 *)(lVar6 + 0x10) = *(undefined8 *)(lVar6 + 0x18);\n          *(undefined4 *)(lVar6 + 0x2c) = *(undefined4 *)(lVar6 + 0x30);\n          *(long *)(lVar6 + 0x38) = lVar8;\n          if (*(long *)(lVar6 + 0x48) == 0) {\n            lVar8 = 1;\n          }\n          else {\n            *(undefined8 *)(lVar6 + 0x18) = *(undefined8 *)(lVar6 + 0x20);\n            *(undefined4 *)(lVar6 + 0x30) = *(undefined4 *)(lVar6 + 0x34);\n            *(long *)(lVar6 + 0x40) = *(long *)(lVar6 + 0x48);\n            lVar8 = 2;\n          }\n        }\n        lVar11 = lVar6 + (long)(int)lVar8 * 8;\n        *(undefined8 *)(lVar11 + 0x10) = 0;\n        *(undefined4 *)(lVar6 + 0x28 + (long)((int)lVar8 + 1) * 4) = 0;\n        *(undefined8 *)(lVar11 + 0x38) = 0;\n        uVar3 = FUN_0012ef67(plVar13);\n        *(undefined4 *)((long)plVar12 + local_50 * 4 + 0x28) = uVar3;\n        uVar3 = FUN_0012ef67(lVar6);\n        *(undefined4 *)((long)plVar12 + local_50 * 4 + 0x2c) = uVar3;\n        goto LAB_0012f7e4;\n      }" (if "if") (parenthesized_expression "(*(long *)(lVar6 + 0x40) != 0)" (( "(") (binary_expression "*(long *)(lVar6 + 0x40) != 0" (pointer_expression "*(long *)(lVar6 + 0x40)" (* "*") (cast_expression "(long *)(lVar6 + 0x40)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar6 + 0x40)" (( "(") (binary_expression "lVar6 + 0x40" (identifier "lVar6") (+ "+") (number_literal "0x40")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        plVar13[8] = plVar7[7];\n        puVar2 = *(undefined8 **)(lVar6 + 8);\n        plVar13[3] = (long)puVar2;\n        *(undefined4 *)(plVar13 + 6) = *(undefined4 *)(lVar6 + 0x28);\n        if (puVar2 != (undefined8 *)0x0) {\n          *puVar2 = plVar13;\n        }\n        plVar7[7] = *(long *)(lVar6 + 0x38);\n        *(undefined8 *)(lVar6 + 8) = *(undefined8 *)(lVar6 + 0x10);\n        *(undefined4 *)(lVar6 + 0x28) = *(undefined4 *)(lVar6 + 0x2c);\n        lVar8 = *(long *)(lVar6 + 0x40);\n        if (lVar8 != 0) {\n          *(undefined8 *)(lVar6 + 0x10) = *(undefined8 *)(lVar6 + 0x18);\n          *(undefined4 *)(lVar6 + 0x2c) = *(undefined4 *)(lVar6 + 0x30);\n          *(long *)(lVar6 + 0x38) = lVar8;\n          if (*(long *)(lVar6 + 0x48) == 0) {\n            lVar8 = 1;\n          }\n          else {\n            *(undefined8 *)(lVar6 + 0x18) = *(undefined8 *)(lVar6 + 0x20);\n            *(undefined4 *)(lVar6 + 0x30) = *(undefined4 *)(lVar6 + 0x34);\n            *(long *)(lVar6 + 0x40) = *(long *)(lVar6 + 0x48);\n            lVar8 = 2;\n          }\n        }\n        lVar11 = lVar6 + (long)(int)lVar8 * 8;\n        *(undefined8 *)(lVar11 + 0x10) = 0;\n        *(undefined4 *)(lVar6 + 0x28 + (long)((int)lVar8 + 1) * 4) = 0;\n        *(undefined8 *)(lVar11 + 0x38) = 0;\n        uVar3 = FUN_0012ef67(plVar13);\n        *(undefined4 *)((long)plVar12 + local_50 * 4 + 0x28) = uVar3;\n        uVar3 = FUN_0012ef67(lVar6);\n        *(undefined4 *)((long)plVar12 + local_50 * 4 + 0x2c) = uVar3;\n        goto LAB_0012f7e4;\n      }" ({ "{") (expression_statement "plVar13[8] = plVar7[7];" (assignment_expression "plVar13[8] = plVar7[7]" (subscript_expression "plVar13[8]" (identifier "plVar13") ([ "[") (number_literal "8") (] "]")) (= "=") (subscript_expression "plVar7[7]" (identifier "plVar7") ([ "[") (number_literal "7") (] "]"))) (; ";")) (expression_statement "puVar2 = *(undefined8 **)(lVar6 + 8);" (assignment_expression "puVar2 = *(undefined8 **)(lVar6 + 8)" (identifier "puVar2") (= "=") (pointer_expression "*(undefined8 **)(lVar6 + 8)" (* "*") (cast_expression "(undefined8 **)(lVar6 + 8)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar6 + 8)" (( "(") (binary_expression "lVar6 + 8" (identifier "lVar6") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "plVar13[3] = (long)puVar2;" (assignment_expression "plVar13[3] = (long)puVar2" (subscript_expression "plVar13[3]" (identifier "plVar13") ([ "[") (number_literal "3") (] "]")) (= "=") (cast_expression "(long)puVar2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar2"))) (; ";")) (expression_statement "*(undefined4 *)(plVar13 + 6) = *(undefined4 *)(lVar6 + 0x28);" (assignment_expression "*(undefined4 *)(plVar13 + 6) = *(undefined4 *)(lVar6 + 0x28)" (pointer_expression "*(undefined4 *)(plVar13 + 6)" (* "*") (cast_expression "(undefined4 *)(plVar13 + 6)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(plVar13 + 6)" (( "(") (binary_expression "plVar13 + 6" (identifier "plVar13") (+ "+") (number_literal "6")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(lVar6 + 0x28)" (* "*") (cast_expression "(undefined4 *)(lVar6 + 0x28)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar6 + 0x28)" (( "(") (binary_expression "lVar6 + 0x28" (identifier "lVar6") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (if_statement "if (puVar2 != (undefined8 *)0x0) {\n          *puVar2 = plVar13;\n        }" (if "if") (parenthesized_expression "(puVar2 != (undefined8 *)0x0)" (( "(") (binary_expression "puVar2 != (undefined8 *)0x0" (identifier "puVar2") (!= "!=") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          *puVar2 = plVar13;\n        }" ({ "{") (expression_statement "*puVar2 = plVar13;" (assignment_expression "*puVar2 = plVar13" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (identifier "plVar13")) (; ";")) (} "}"))) (expression_statement "plVar7[7] = *(long *)(lVar6 + 0x38);" (assignment_expression "plVar7[7] = *(long *)(lVar6 + 0x38)" (subscript_expression "plVar7[7]" (identifier "plVar7") ([ "[") (number_literal "7") (] "]")) (= "=") (pointer_expression "*(long *)(lVar6 + 0x38)" (* "*") (cast_expression "(long *)(lVar6 + 0x38)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar6 + 0x38)" (( "(") (binary_expression "lVar6 + 0x38" (identifier "lVar6") (+ "+") (number_literal "0x38")) () ")"))))) (; ";")) (expression_statement "*(undefined8 *)(lVar6 + 8) = *(undefined8 *)(lVar6 + 0x10);" (assignment_expression "*(undefined8 *)(lVar6 + 8) = *(undefined8 *)(lVar6 + 0x10)" (pointer_expression "*(undefined8 *)(lVar6 + 8)" (* "*") (cast_expression "(undefined8 *)(lVar6 + 8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar6 + 8)" (( "(") (binary_expression "lVar6 + 8" (identifier "lVar6") (+ "+") (number_literal "8")) () ")")))) (= "=") (pointer_expression "*(undefined8 *)(lVar6 + 0x10)" (* "*") (cast_expression "(undefined8 *)(lVar6 + 0x10)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar6 + 0x10)" (( "(") (binary_expression "lVar6 + 0x10" (identifier "lVar6") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(lVar6 + 0x28) = *(undefined4 *)(lVar6 + 0x2c);" (assignment_expression "*(undefined4 *)(lVar6 + 0x28) = *(undefined4 *)(lVar6 + 0x2c)" (pointer_expression "*(undefined4 *)(lVar6 + 0x28)" (* "*") (cast_expression "(undefined4 *)(lVar6 + 0x28)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar6 + 0x28)" (( "(") (binary_expression "lVar6 + 0x28" (identifier "lVar6") (+ "+") (number_literal "0x28")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(lVar6 + 0x2c)" (* "*") (cast_expression "(undefined4 *)(lVar6 + 0x2c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar6 + 0x2c)" (( "(") (binary_expression "lVar6 + 0x2c" (identifier "lVar6") (+ "+") (number_literal "0x2c")) () ")"))))) (; ";")) (expression_statement "lVar8 = *(long *)(lVar6 + 0x40);" (assignment_expression "lVar8 = *(long *)(lVar6 + 0x40)" (identifier "lVar8") (= "=") (pointer_expression "*(long *)(lVar6 + 0x40)" (* "*") (cast_expression "(long *)(lVar6 + 0x40)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar6 + 0x40)" (( "(") (binary_expression "lVar6 + 0x40" (identifier "lVar6") (+ "+") (number_literal "0x40")) () ")"))))) (; ";")) (if_statement "if (lVar8 != 0) {\n          *(undefined8 *)(lVar6 + 0x10) = *(undefined8 *)(lVar6 + 0x18);\n          *(undefined4 *)(lVar6 + 0x2c) = *(undefined4 *)(lVar6 + 0x30);\n          *(long *)(lVar6 + 0x38) = lVar8;\n          if (*(long *)(lVar6 + 0x48) == 0) {\n            lVar8 = 1;\n          }\n          else {\n            *(undefined8 *)(lVar6 + 0x18) = *(undefined8 *)(lVar6 + 0x20);\n            *(undefined4 *)(lVar6 + 0x30) = *(undefined4 *)(lVar6 + 0x34);\n            *(long *)(lVar6 + 0x40) = *(long *)(lVar6 + 0x48);\n            lVar8 = 2;\n          }\n        }" (if "if") (parenthesized_expression "(lVar8 != 0)" (( "(") (binary_expression "lVar8 != 0" (identifier "lVar8") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          *(undefined8 *)(lVar6 + 0x10) = *(undefined8 *)(lVar6 + 0x18);\n          *(undefined4 *)(lVar6 + 0x2c) = *(undefined4 *)(lVar6 + 0x30);\n          *(long *)(lVar6 + 0x38) = lVar8;\n          if (*(long *)(lVar6 + 0x48) == 0) {\n            lVar8 = 1;\n          }\n          else {\n            *(undefined8 *)(lVar6 + 0x18) = *(undefined8 *)(lVar6 + 0x20);\n            *(undefined4 *)(lVar6 + 0x30) = *(undefined4 *)(lVar6 + 0x34);\n            *(long *)(lVar6 + 0x40) = *(long *)(lVar6 + 0x48);\n            lVar8 = 2;\n          }\n        }" ({ "{") (expression_statement "*(undefined8 *)(lVar6 + 0x10) = *(undefined8 *)(lVar6 + 0x18);" (assignment_expression "*(undefined8 *)(lVar6 + 0x10) = *(undefined8 *)(lVar6 + 0x18)" (pointer_expression "*(undefined8 *)(lVar6 + 0x10)" (* "*") (cast_expression "(undefined8 *)(lVar6 + 0x10)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar6 + 0x10)" (( "(") (binary_expression "lVar6 + 0x10" (identifier "lVar6") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (pointer_expression "*(undefined8 *)(lVar6 + 0x18)" (* "*") (cast_expression "(undefined8 *)(lVar6 + 0x18)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar6 + 0x18)" (( "(") (binary_expression "lVar6 + 0x18" (identifier "lVar6") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(lVar6 + 0x2c) = *(undefined4 *)(lVar6 + 0x30);" (assignment_expression "*(undefined4 *)(lVar6 + 0x2c) = *(undefined4 *)(lVar6 + 0x30)" (pointer_expression "*(undefined4 *)(lVar6 + 0x2c)" (* "*") (cast_expression "(undefined4 *)(lVar6 + 0x2c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar6 + 0x2c)" (( "(") (binary_expression "lVar6 + 0x2c" (identifier "lVar6") (+ "+") (number_literal "0x2c")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(lVar6 + 0x30)" (* "*") (cast_expression "(undefined4 *)(lVar6 + 0x30)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar6 + 0x30)" (( "(") (binary_expression "lVar6 + 0x30" (identifier "lVar6") (+ "+") (number_literal "0x30")) () ")"))))) (; ";")) (expression_statement "*(long *)(lVar6 + 0x38) = lVar8;" (assignment_expression "*(long *)(lVar6 + 0x38) = lVar8" (pointer_expression "*(long *)(lVar6 + 0x38)" (* "*") (cast_expression "(long *)(lVar6 + 0x38)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar6 + 0x38)" (( "(") (binary_expression "lVar6 + 0x38" (identifier "lVar6") (+ "+") (number_literal "0x38")) () ")")))) (= "=") (identifier "lVar8")) (; ";")) (if_statement "if (*(long *)(lVar6 + 0x48) == 0) {\n            lVar8 = 1;\n          }\n          else {\n            *(undefined8 *)(lVar6 + 0x18) = *(undefined8 *)(lVar6 + 0x20);\n            *(undefined4 *)(lVar6 + 0x30) = *(undefined4 *)(lVar6 + 0x34);\n            *(long *)(lVar6 + 0x40) = *(long *)(lVar6 + 0x48);\n            lVar8 = 2;\n          }" (if "if") (parenthesized_expression "(*(long *)(lVar6 + 0x48) == 0)" (( "(") (binary_expression "*(long *)(lVar6 + 0x48) == 0" (pointer_expression "*(long *)(lVar6 + 0x48)" (* "*") (cast_expression "(long *)(lVar6 + 0x48)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar6 + 0x48)" (( "(") (binary_expression "lVar6 + 0x48" (identifier "lVar6") (+ "+") (number_literal "0x48")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            lVar8 = 1;\n          }" ({ "{") (expression_statement "lVar8 = 1;" (assignment_expression "lVar8 = 1" (identifier "lVar8") (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n            *(undefined8 *)(lVar6 + 0x18) = *(undefined8 *)(lVar6 + 0x20);\n            *(undefined4 *)(lVar6 + 0x30) = *(undefined4 *)(lVar6 + 0x34);\n            *(long *)(lVar6 + 0x40) = *(long *)(lVar6 + 0x48);\n            lVar8 = 2;\n          }" (else "else") (compound_statement "{\n            *(undefined8 *)(lVar6 + 0x18) = *(undefined8 *)(lVar6 + 0x20);\n            *(undefined4 *)(lVar6 + 0x30) = *(undefined4 *)(lVar6 + 0x34);\n            *(long *)(lVar6 + 0x40) = *(long *)(lVar6 + 0x48);\n            lVar8 = 2;\n          }" ({ "{") (expression_statement "*(undefined8 *)(lVar6 + 0x18) = *(undefined8 *)(lVar6 + 0x20);" (assignment_expression "*(undefined8 *)(lVar6 + 0x18) = *(undefined8 *)(lVar6 + 0x20)" (pointer_expression "*(undefined8 *)(lVar6 + 0x18)" (* "*") (cast_expression "(undefined8 *)(lVar6 + 0x18)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar6 + 0x18)" (( "(") (binary_expression "lVar6 + 0x18" (identifier "lVar6") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (pointer_expression "*(undefined8 *)(lVar6 + 0x20)" (* "*") (cast_expression "(undefined8 *)(lVar6 + 0x20)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar6 + 0x20)" (( "(") (binary_expression "lVar6 + 0x20" (identifier "lVar6") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(lVar6 + 0x30) = *(undefined4 *)(lVar6 + 0x34);" (assignment_expression "*(undefined4 *)(lVar6 + 0x30) = *(undefined4 *)(lVar6 + 0x34)" (pointer_expression "*(undefined4 *)(lVar6 + 0x30)" (* "*") (cast_expression "(undefined4 *)(lVar6 + 0x30)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar6 + 0x30)" (( "(") (binary_expression "lVar6 + 0x30" (identifier "lVar6") (+ "+") (number_literal "0x30")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(lVar6 + 0x34)" (* "*") (cast_expression "(undefined4 *)(lVar6 + 0x34)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar6 + 0x34)" (( "(") (binary_expression "lVar6 + 0x34" (identifier "lVar6") (+ "+") (number_literal "0x34")) () ")"))))) (; ";")) (expression_statement "*(long *)(lVar6 + 0x40) = *(long *)(lVar6 + 0x48);" (assignment_expression "*(long *)(lVar6 + 0x40) = *(long *)(lVar6 + 0x48)" (pointer_expression "*(long *)(lVar6 + 0x40)" (* "*") (cast_expression "(long *)(lVar6 + 0x40)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar6 + 0x40)" (( "(") (binary_expression "lVar6 + 0x40" (identifier "lVar6") (+ "+") (number_literal "0x40")) () ")")))) (= "=") (pointer_expression "*(long *)(lVar6 + 0x48)" (* "*") (cast_expression "(long *)(lVar6 + 0x48)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar6 + 0x48)" (( "(") (binary_expression "lVar6 + 0x48" (identifier "lVar6") (+ "+") (number_literal "0x48")) () ")"))))) (; ";")) (expression_statement "lVar8 = 2;" (assignment_expression "lVar8 = 2" (identifier "lVar8") (= "=") (number_literal "2")) (; ";")) (} "}")))) (} "}"))) (expression_statement "lVar11 = lVar6 + (long)(int)lVar8 * 8;" (assignment_expression "lVar11 = lVar6 + (long)(int)lVar8 * 8" (identifier "lVar11") (= "=") (binary_expression "lVar6 + (long)(int)lVar8 * 8" (identifier "lVar6") (+ "+") (binary_expression "(long)(int)lVar8 * 8" (cast_expression "(long)(int)lVar8" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (cast_expression "(int)lVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar8"))) (* "*") (number_literal "8")))) (; ";")) (expression_statement "*(undefined8 *)(lVar11 + 0x10) = 0;" (assignment_expression "*(undefined8 *)(lVar11 + 0x10) = 0" (pointer_expression "*(undefined8 *)(lVar11 + 0x10)" (* "*") (cast_expression "(undefined8 *)(lVar11 + 0x10)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar11 + 0x10)" (( "(") (binary_expression "lVar11 + 0x10" (identifier "lVar11") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(lVar6 + 0x28 + (long)((int)lVar8 + 1) * 4) = 0;" (assignment_expression "*(undefined4 *)(lVar6 + 0x28 + (long)((int)lVar8 + 1) * 4) = 0" (pointer_expression "*(undefined4 *)(lVar6 + 0x28 + (long)((int)lVar8 + 1) * 4)" (* "*") (cast_expression "(undefined4 *)(lVar6 + 0x28 + (long)((int)lVar8 + 1) * 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar6 + 0x28 + (long)((int)lVar8 + 1) * 4)" (( "(") (binary_expression "lVar6 + 0x28 + (long)((int)lVar8 + 1) * 4" (binary_expression "lVar6 + 0x28" (identifier "lVar6") (+ "+") (number_literal "0x28")) (+ "+") (binary_expression "(long)((int)lVar8 + 1) * 4" (cast_expression "(long)((int)lVar8 + 1)" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (parenthesized_expression "((int)lVar8 + 1)" (( "(") (binary_expression "(int)lVar8 + 1" (cast_expression "(int)lVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar8")) (+ "+") (number_literal "1")) () ")"))) (* "*") (number_literal "4"))) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined8 *)(lVar11 + 0x38) = 0;" (assignment_expression "*(undefined8 *)(lVar11 + 0x38) = 0" (pointer_expression "*(undefined8 *)(lVar11 + 0x38)" (* "*") (cast_expression "(undefined8 *)(lVar11 + 0x38)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar11 + 0x38)" (( "(") (binary_expression "lVar11 + 0x38" (identifier "lVar11") (+ "+") (number_literal "0x38")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar3 = FUN_0012ef67(plVar13);" (assignment_expression "uVar3 = FUN_0012ef67(plVar13)" (identifier "uVar3") (= "=") (call_expression "FUN_0012ef67(plVar13)" (identifier "FUN_0012ef67") (argument_list "(plVar13)" (( "(") (identifier "plVar13") () ")")))) (; ";")) (expression_statement "*(undefined4 *)((long)plVar12 + local_50 * 4 + 0x28) = uVar3;" (assignment_expression "*(undefined4 *)((long)plVar12 + local_50 * 4 + 0x28) = uVar3" (pointer_expression "*(undefined4 *)((long)plVar12 + local_50 * 4 + 0x28)" (* "*") (cast_expression "(undefined4 *)((long)plVar12 + local_50 * 4 + 0x28)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)plVar12 + local_50 * 4 + 0x28)" (( "(") (binary_expression "(long)plVar12 + local_50 * 4 + 0x28" (binary_expression "(long)plVar12 + local_50 * 4" (cast_expression "(long)plVar12" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "plVar12")) (+ "+") (binary_expression "local_50 * 4" (identifier "local_50") (* "*") (number_literal "4"))) (+ "+") (number_literal "0x28")) () ")")))) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "uVar3 = FUN_0012ef67(lVar6);" (assignment_expression "uVar3 = FUN_0012ef67(lVar6)" (identifier "uVar3") (= "=") (call_expression "FUN_0012ef67(lVar6)" (identifier "FUN_0012ef67") (argument_list "(lVar6)" (( "(") (identifier "lVar6") () ")")))) (; ";")) (expression_statement "*(undefined4 *)((long)plVar12 + local_50 * 4 + 0x2c) = uVar3;" (assignment_expression "*(undefined4 *)((long)plVar12 + local_50 * 4 + 0x2c) = uVar3" (pointer_expression "*(undefined4 *)((long)plVar12 + local_50 * 4 + 0x2c)" (* "*") (cast_expression "(undefined4 *)((long)plVar12 + local_50 * 4 + 0x2c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)plVar12 + local_50 * 4 + 0x2c)" (( "(") (binary_expression "(long)plVar12 + local_50 * 4 + 0x2c" (binary_expression "(long)plVar12 + local_50 * 4" (cast_expression "(long)plVar12" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "plVar12")) (+ "+") (binary_expression "local_50 * 4" (identifier "local_50") (* "*") (number_literal "4"))) (+ "+") (number_literal "0x2c")) () ")")))) (= "=") (identifier "uVar3")) (; ";")) (goto_statement "goto LAB_0012f7e4;" (goto "goto") (statement_identifier "LAB_0012f7e4") (; ";")) (} "}")))) (if_statement "if (local_54 != 0) {\nLAB_0012f905:\n        local_54 = local_54 - 1;\n        param_2 = param_2 + 1 + *(int *)((long)plVar12 + (long)(int)local_54 * 4 + 0x28);\n      }" (if "if") (parenthesized_expression "(local_54 != 0)" (( "(") (binary_expression "local_54 != 0" (identifier "local_54") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\nLAB_0012f905:\n        local_54 = local_54 - 1;\n        param_2 = param_2 + 1 + *(int *)((long)plVar12 + (long)(int)local_54 * 4 + 0x28);\n      }" ({ "{") (labeled_statement "LAB_0012f905:\n        local_54 = local_54 - 1;" (statement_identifier "LAB_0012f905") (: ":") (expression_statement "local_54 = local_54 - 1;" (assignment_expression "local_54 = local_54 - 1" (identifier "local_54") (= "=") (binary_expression "local_54 - 1" (identifier "local_54") (- "-") (number_literal "1"))) (; ";"))) (expression_statement "param_2 = param_2 + 1 + *(int *)((long)plVar12 + (long)(int)local_54 * 4 + 0x28);" (assignment_expression "param_2 = param_2 + 1 + *(int *)((long)plVar12 + (long)(int)local_54 * 4 + 0x28)" (identifier "param_2") (= "=") (binary_expression "param_2 + 1 + *(int *)((long)plVar12 + (long)(int)local_54 * 4 + 0x28)" (binary_expression "param_2 + 1" (identifier "param_2") (+ "+") (number_literal "1")) (+ "+") (pointer_expression "*(int *)((long)plVar12 + (long)(int)local_54 * 4 + 0x28)" (* "*") (cast_expression "(int *)((long)plVar12 + (long)(int)local_54 * 4 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)plVar12 + (long)(int)local_54 * 4 + 0x28)" (( "(") (binary_expression "(long)plVar12 + (long)(int)local_54 * 4 + 0x28" (binary_expression "(long)plVar12 + (long)(int)local_54 * 4" (cast_expression "(long)plVar12" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "plVar12")) (+ "+") (binary_expression "(long)(int)local_54 * 4" (cast_expression "(long)(int)local_54" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (cast_expression "(int)local_54" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_54"))) (* "*") (number_literal "4"))) (+ "+") (number_literal "0x28")) () ")")))))) (; ";")) (} "}"))) (} "}"))) (expression_statement "lVar6 = plVar12[(long)(int)local_54 + 1];" (assignment_expression "lVar6 = plVar12[(long)(int)local_54 + 1]" (identifier "lVar6") (= "=") (subscript_expression "plVar12[(long)(int)local_54 + 1]" (identifier "plVar12") ([ "[") (binary_expression "(long)(int)local_54 + 1" (cast_expression "(long)(int)local_54" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (cast_expression "(int)local_54" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_54"))) (+ "+") (number_literal "1")) (] "]"))) (; ";")) (expression_statement "plVar13 = (long *)plVar12[(long)(int)local_54 + 2];" (assignment_expression "plVar13 = (long *)plVar12[(long)(int)local_54 + 2]" (identifier "plVar13") (= "=") (cast_expression "(long *)plVar12[(long)(int)local_54 + 2]" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "plVar12[(long)(int)local_54 + 2]" (identifier "plVar12") ([ "[") (binary_expression "(long)(int)local_54 + 2" (cast_expression "(long)(int)local_54" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (cast_expression "(int)local_54" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_54"))) (+ "+") (number_literal "2")) (] "]")))) (; ";")) (expression_statement "plVar13[4] = plVar13[2];" (assignment_expression "plVar13[4] = plVar13[2]" (subscript_expression "plVar13[4]" (identifier "plVar13") ([ "[") (number_literal "4") (] "]")) (= "=") (subscript_expression "plVar13[2]" (identifier "plVar13") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "*(undefined4 *)((long)plVar13 + 0x34) = *(undefined4 *)((long)plVar13 + 0x2c);" (assignment_expression "*(undefined4 *)((long)plVar13 + 0x34) = *(undefined4 *)((long)plVar13 + 0x2c)" (pointer_expression "*(undefined4 *)((long)plVar13 + 0x34)" (* "*") (cast_expression "(undefined4 *)((long)plVar13 + 0x34)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)plVar13 + 0x34)" (( "(") (binary_expression "(long)plVar13 + 0x34" (cast_expression "(long)plVar13" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "plVar13")) (+ "+") (number_literal "0x34")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)((long)plVar13 + 0x2c)" (* "*") (cast_expression "(undefined4 *)((long)plVar13 + 0x2c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)plVar13 + 0x2c)" (( "(") (binary_expression "(long)plVar13 + 0x2c" (cast_expression "(long)plVar13" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "plVar13")) (+ "+") (number_literal "0x2c")) () ")"))))) (; ";")) (expression_statement "plVar13[9] = plVar13[7];" (assignment_expression "plVar13[9] = plVar13[7]" (subscript_expression "plVar13[9]" (identifier "plVar13") ([ "[") (number_literal "9") (] "]")) (= "=") (subscript_expression "plVar13[7]" (identifier "plVar13") ([ "[") (number_literal "7") (] "]"))) (; ";")) (expression_statement "plVar13[3] = plVar13[1];" (assignment_expression "plVar13[3] = plVar13[1]" (subscript_expression "plVar13[3]" (identifier "plVar13") ([ "[") (number_literal "3") (] "]")) (= "=") (subscript_expression "plVar13[1]" (identifier "plVar13") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "*(int *)(plVar13 + 6) = (int)plVar13[5];" (assignment_expression "*(int *)(plVar13 + 6) = (int)plVar13[5]" (pointer_expression "*(int *)(plVar13 + 6)" (* "*") (cast_expression "(int *)(plVar13 + 6)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(plVar13 + 6)" (( "(") (binary_expression "plVar13 + 6" (identifier "plVar13") (+ "+") (number_literal "6")) () ")")))) (= "=") (cast_expression "(int)plVar13[5]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "plVar13[5]" (identifier "plVar13") ([ "[") (number_literal "5") (] "]")))) (; ";")) (expression_statement "plVar13[8] = plVar12[(long)(int)local_54 + 7];" (assignment_expression "plVar13[8] = plVar12[(long)(int)local_54 + 7]" (subscript_expression "plVar13[8]" (identifier "plVar13") ([ "[") (number_literal "8") (] "]")) (= "=") (subscript_expression "plVar12[(long)(int)local_54 + 7]" (identifier "plVar12") ([ "[") (binary_expression "(long)(int)local_54 + 7" (cast_expression "(long)(int)local_54" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (cast_expression "(int)local_54" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_54"))) (+ "+") (number_literal "7")) (] "]"))) (; ";")) (expression_statement "puVar2 = *(undefined8 **)(lVar6 + 0x10);" (assignment_expression "puVar2 = *(undefined8 **)(lVar6 + 0x10)" (identifier "puVar2") (= "=") (pointer_expression "*(undefined8 **)(lVar6 + 0x10)" (* "*") (cast_expression "(undefined8 **)(lVar6 + 0x10)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar6 + 0x10)" (( "(") (binary_expression "lVar6 + 0x10" (identifier "lVar6") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "plVar13[2] = (long)puVar2;" (assignment_expression "plVar13[2] = (long)puVar2" (subscript_expression "plVar13[2]" (identifier "plVar13") ([ "[") (number_literal "2") (] "]")) (= "=") (cast_expression "(long)puVar2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar2"))) (; ";")) (expression_statement "*(undefined4 *)((long)plVar13 + 0x2c) = *(undefined4 *)(lVar6 + 0x2c);" (assignment_expression "*(undefined4 *)((long)plVar13 + 0x2c) = *(undefined4 *)(lVar6 + 0x2c)" (pointer_expression "*(undefined4 *)((long)plVar13 + 0x2c)" (* "*") (cast_expression "(undefined4 *)((long)plVar13 + 0x2c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)plVar13 + 0x2c)" (( "(") (binary_expression "(long)plVar13 + 0x2c" (cast_expression "(long)plVar13" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "plVar13")) (+ "+") (number_literal "0x2c")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(lVar6 + 0x2c)" (* "*") (cast_expression "(undefined4 *)(lVar6 + 0x2c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar6 + 0x2c)" (( "(") (binary_expression "lVar6 + 0x2c" (identifier "lVar6") (+ "+") (number_literal "0x2c")) () ")"))))) (; ";")) (if_statement "if (puVar2 != (undefined8 *)0x0) {\n      *puVar2 = plVar13;\n    }" (if "if") (parenthesized_expression "(puVar2 != (undefined8 *)0x0)" (( "(") (binary_expression "puVar2 != (undefined8 *)0x0" (identifier "puVar2") (!= "!=") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      *puVar2 = plVar13;\n    }" ({ "{") (expression_statement "*puVar2 = plVar13;" (assignment_expression "*puVar2 = plVar13" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (identifier "plVar13")) (; ";")) (} "}"))) (expression_statement "plVar13[7] = *(long *)(lVar6 + 0x38);" (assignment_expression "plVar13[7] = *(long *)(lVar6 + 0x38)" (subscript_expression "plVar13[7]" (identifier "plVar13") ([ "[") (number_literal "7") (] "]")) (= "=") (pointer_expression "*(long *)(lVar6 + 0x38)" (* "*") (cast_expression "(long *)(lVar6 + 0x38)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar6 + 0x38)" (( "(") (binary_expression "lVar6 + 0x38" (identifier "lVar6") (+ "+") (number_literal "0x38")) () ")"))))) (; ";")) (expression_statement "puVar2 = *(undefined8 **)(lVar6 + 8);" (assignment_expression "puVar2 = *(undefined8 **)(lVar6 + 8)" (identifier "puVar2") (= "=") (pointer_expression "*(undefined8 **)(lVar6 + 8)" (* "*") (cast_expression "(undefined8 **)(lVar6 + 8)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar6 + 8)" (( "(") (binary_expression "lVar6 + 8" (identifier "lVar6") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "plVar13[1] = (long)puVar2;" (assignment_expression "plVar13[1] = (long)puVar2" (subscript_expression "plVar13[1]" (identifier "plVar13") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(long)puVar2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar2"))) (; ";")) (expression_statement "*(undefined4 *)(plVar13 + 5) = *(undefined4 *)(lVar6 + 0x28);" (assignment_expression "*(undefined4 *)(plVar13 + 5) = *(undefined4 *)(lVar6 + 0x28)" (pointer_expression "*(undefined4 *)(plVar13 + 5)" (* "*") (cast_expression "(undefined4 *)(plVar13 + 5)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(plVar13 + 5)" (( "(") (binary_expression "plVar13 + 5" (identifier "plVar13") (+ "+") (number_literal "5")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(lVar6 + 0x28)" (* "*") (cast_expression "(undefined4 *)(lVar6 + 0x28)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar6 + 0x28)" (( "(") (binary_expression "lVar6 + 0x28" (identifier "lVar6") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (if_statement "if (puVar2 != (undefined8 *)0x0) {\n      *puVar2 = plVar13;\n    }" (if "if") (parenthesized_expression "(puVar2 != (undefined8 *)0x0)" (( "(") (binary_expression "puVar2 != (undefined8 *)0x0" (identifier "puVar2") (!= "!=") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      *puVar2 = plVar13;\n    }" ({ "{") (expression_statement "*puVar2 = plVar13;" (assignment_expression "*puVar2 = plVar13" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (identifier "plVar13")) (; ";")) (} "}"))) (expression_statement "uVar3 = FUN_0012ef67(plVar13);" (assignment_expression "uVar3 = FUN_0012ef67(plVar13)" (identifier "uVar3") (= "=") (call_expression "FUN_0012ef67(plVar13)" (identifier "FUN_0012ef67") (argument_list "(plVar13)" (( "(") (identifier "plVar13") () ")")))) (; ";")) (expression_statement "*(undefined4 *)((long)plVar12 + (long)(int)(local_54 + 1) * 4 + 0x28) = uVar3;" (assignment_expression "*(undefined4 *)((long)plVar12 + (long)(int)(local_54 + 1) * 4 + 0x28) = uVar3" (pointer_expression "*(undefined4 *)((long)plVar12 + (long)(int)(local_54 + 1) * 4 + 0x28)" (* "*") (cast_expression "(undefined4 *)((long)plVar12 + (long)(int)(local_54 + 1) * 4 + 0x28)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)plVar12 + (long)(int)(local_54 + 1) * 4 + 0x28)" (( "(") (binary_expression "(long)plVar12 + (long)(int)(local_54 + 1) * 4 + 0x28" (binary_expression "(long)plVar12 + (long)(int)(local_54 + 1) * 4" (cast_expression "(long)plVar12" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "plVar12")) (+ "+") (binary_expression "(long)(int)(local_54 + 1) * 4" (cast_expression "(long)(int)(local_54 + 1)" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (cast_expression "(int)(local_54 + 1)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(local_54 + 1)" (( "(") (binary_expression "local_54 + 1" (identifier "local_54") (+ "+") (number_literal "1")) () ")")))) (* "*") (number_literal "4"))) (+ "+") (number_literal "0x28")) () ")")))) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "FUN_0010c4d3(lVar6);" (call_expression "FUN_0010c4d3(lVar6)" (identifier "FUN_0010c4d3") (argument_list "(lVar6)" (( "(") (identifier "lVar6") () ")"))) (; ";")) (if_statement "if ((int)local_54 < 3) {\n      lVar6 = plVar12[(long)(int)local_54 + 2];\n      if (lVar6 != 0) {\n        lVar8 = (long)(int)(local_54 + 1);\n        do {\n          local_54 = (uint)lVar8;\n          plVar12[lVar8] = lVar6;\n          *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x24) =\n               *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28);\n          lVar6 = 0;\n          if ((int)(local_54 - 1) < 2) {\n            lVar6 = plVar12[lVar8 + 7];\n          }\n          plVar12[lVar8 + 6] = lVar6;\n          if (2 < (int)local_54) goto LAB_0012fd6d;\n          lVar6 = plVar12[lVar8 + 2];\n          lVar8 = lVar8 + 1;\n        } while (lVar6 != 0);\n      }\n      lVar6 = (long)(int)local_54;\n      plVar12[lVar6 + 1] = 0;\n      *(undefined4 *)((long)plVar12 + lVar6 * 4 + 0x28) = 0;\n      plVar12[lVar6 + 7] = 0;\n    }\n    else {\nLAB_0012fd6d:\n      plVar12[(long)(int)local_54 + 1] = 0;\n      *(undefined4 *)((long)plVar12 + (long)(int)local_54 * 4 + 0x28) = 0;\n    }" (if "if") (parenthesized_expression "((int)local_54 < 3)" (( "(") (binary_expression "(int)local_54 < 3" (cast_expression "(int)local_54" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_54")) (< "<") (number_literal "3")) () ")")) (compound_statement "{\n      lVar6 = plVar12[(long)(int)local_54 + 2];\n      if (lVar6 != 0) {\n        lVar8 = (long)(int)(local_54 + 1);\n        do {\n          local_54 = (uint)lVar8;\n          plVar12[lVar8] = lVar6;\n          *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x24) =\n               *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28);\n          lVar6 = 0;\n          if ((int)(local_54 - 1) < 2) {\n            lVar6 = plVar12[lVar8 + 7];\n          }\n          plVar12[lVar8 + 6] = lVar6;\n          if (2 < (int)local_54) goto LAB_0012fd6d;\n          lVar6 = plVar12[lVar8 + 2];\n          lVar8 = lVar8 + 1;\n        } while (lVar6 != 0);\n      }\n      lVar6 = (long)(int)local_54;\n      plVar12[lVar6 + 1] = 0;\n      *(undefined4 *)((long)plVar12 + lVar6 * 4 + 0x28) = 0;\n      plVar12[lVar6 + 7] = 0;\n    }" ({ "{") (expression_statement "lVar6 = plVar12[(long)(int)local_54 + 2];" (assignment_expression "lVar6 = plVar12[(long)(int)local_54 + 2]" (identifier "lVar6") (= "=") (subscript_expression "plVar12[(long)(int)local_54 + 2]" (identifier "plVar12") ([ "[") (binary_expression "(long)(int)local_54 + 2" (cast_expression "(long)(int)local_54" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (cast_expression "(int)local_54" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_54"))) (+ "+") (number_literal "2")) (] "]"))) (; ";")) (if_statement "if (lVar6 != 0) {\n        lVar8 = (long)(int)(local_54 + 1);\n        do {\n          local_54 = (uint)lVar8;\n          plVar12[lVar8] = lVar6;\n          *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x24) =\n               *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28);\n          lVar6 = 0;\n          if ((int)(local_54 - 1) < 2) {\n            lVar6 = plVar12[lVar8 + 7];\n          }\n          plVar12[lVar8 + 6] = lVar6;\n          if (2 < (int)local_54) goto LAB_0012fd6d;\n          lVar6 = plVar12[lVar8 + 2];\n          lVar8 = lVar8 + 1;\n        } while (lVar6 != 0);\n      }" (if "if") (parenthesized_expression "(lVar6 != 0)" (( "(") (binary_expression "lVar6 != 0" (identifier "lVar6") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        lVar8 = (long)(int)(local_54 + 1);\n        do {\n          local_54 = (uint)lVar8;\n          plVar12[lVar8] = lVar6;\n          *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x24) =\n               *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28);\n          lVar6 = 0;\n          if ((int)(local_54 - 1) < 2) {\n            lVar6 = plVar12[lVar8 + 7];\n          }\n          plVar12[lVar8 + 6] = lVar6;\n          if (2 < (int)local_54) goto LAB_0012fd6d;\n          lVar6 = plVar12[lVar8 + 2];\n          lVar8 = lVar8 + 1;\n        } while (lVar6 != 0);\n      }" ({ "{") (expression_statement "lVar8 = (long)(int)(local_54 + 1);" (assignment_expression "lVar8 = (long)(int)(local_54 + 1)" (identifier "lVar8") (= "=") (cast_expression "(long)(int)(local_54 + 1)" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (cast_expression "(int)(local_54 + 1)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(local_54 + 1)" (( "(") (binary_expression "local_54 + 1" (identifier "local_54") (+ "+") (number_literal "1")) () ")"))))) (; ";")) (do_statement "do {\n          local_54 = (uint)lVar8;\n          plVar12[lVar8] = lVar6;\n          *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x24) =\n               *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28);\n          lVar6 = 0;\n          if ((int)(local_54 - 1) < 2) {\n            lVar6 = plVar12[lVar8 + 7];\n          }\n          plVar12[lVar8 + 6] = lVar6;\n          if (2 < (int)local_54) goto LAB_0012fd6d;\n          lVar6 = plVar12[lVar8 + 2];\n          lVar8 = lVar8 + 1;\n        } while (lVar6 != 0);" (do "do") (compound_statement "{\n          local_54 = (uint)lVar8;\n          plVar12[lVar8] = lVar6;\n          *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x24) =\n               *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28);\n          lVar6 = 0;\n          if ((int)(local_54 - 1) < 2) {\n            lVar6 = plVar12[lVar8 + 7];\n          }\n          plVar12[lVar8 + 6] = lVar6;\n          if (2 < (int)local_54) goto LAB_0012fd6d;\n          lVar6 = plVar12[lVar8 + 2];\n          lVar8 = lVar8 + 1;\n        }" ({ "{") (expression_statement "local_54 = (uint)lVar8;" (assignment_expression "local_54 = (uint)lVar8" (identifier "local_54") (= "=") (cast_expression "(uint)lVar8" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "lVar8"))) (; ";")) (expression_statement "plVar12[lVar8] = lVar6;" (assignment_expression "plVar12[lVar8] = lVar6" (subscript_expression "plVar12[lVar8]" (identifier "plVar12") ([ "[") (identifier "lVar8") (] "]")) (= "=") (identifier "lVar6")) (; ";")) (expression_statement "*(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x24) =\n               *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28);" (assignment_expression "*(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x24) =\n               *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28)" (pointer_expression "*(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x24)" (* "*") (cast_expression "(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x24)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)plVar12 + lVar8 * 4 + 0x24)" (( "(") (binary_expression "(long)plVar12 + lVar8 * 4 + 0x24" (binary_expression "(long)plVar12 + lVar8 * 4" (cast_expression "(long)plVar12" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "plVar12")) (+ "+") (binary_expression "lVar8 * 4" (identifier "lVar8") (* "*") (number_literal "4"))) (+ "+") (number_literal "0x24")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28)" (* "*") (cast_expression "(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)plVar12 + lVar8 * 4 + 0x28)" (( "(") (binary_expression "(long)plVar12 + lVar8 * 4 + 0x28" (binary_expression "(long)plVar12 + lVar8 * 4" (cast_expression "(long)plVar12" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "plVar12")) (+ "+") (binary_expression "lVar8 * 4" (identifier "lVar8") (* "*") (number_literal "4"))) (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (expression_statement "lVar6 = 0;" (assignment_expression "lVar6 = 0" (identifier "lVar6") (= "=") (number_literal "0")) (; ";")) (if_statement "if ((int)(local_54 - 1) < 2) {\n            lVar6 = plVar12[lVar8 + 7];\n          }" (if "if") (parenthesized_expression "((int)(local_54 - 1) < 2)" (( "(") (binary_expression "(int)(local_54 - 1) < 2" (cast_expression "(int)(local_54 - 1)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(local_54 - 1)" (( "(") (binary_expression "local_54 - 1" (identifier "local_54") (- "-") (number_literal "1")) () ")"))) (< "<") (number_literal "2")) () ")")) (compound_statement "{\n            lVar6 = plVar12[lVar8 + 7];\n          }" ({ "{") (expression_statement "lVar6 = plVar12[lVar8 + 7];" (assignment_expression "lVar6 = plVar12[lVar8 + 7]" (identifier "lVar6") (= "=") (subscript_expression "plVar12[lVar8 + 7]" (identifier "plVar12") ([ "[") (binary_expression "lVar8 + 7" (identifier "lVar8") (+ "+") (number_literal "7")) (] "]"))) (; ";")) (} "}"))) (expression_statement "plVar12[lVar8 + 6] = lVar6;" (assignment_expression "plVar12[lVar8 + 6] = lVar6" (subscript_expression "plVar12[lVar8 + 6]" (identifier "plVar12") ([ "[") (binary_expression "lVar8 + 6" (identifier "lVar8") (+ "+") (number_literal "6")) (] "]")) (= "=") (identifier "lVar6")) (; ";")) (if_statement "if (2 < (int)local_54) goto LAB_0012fd6d;" (if "if") (parenthesized_expression "(2 < (int)local_54)" (( "(") (binary_expression "2 < (int)local_54" (number_literal "2") (< "<") (cast_expression "(int)local_54" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_54"))) () ")")) (goto_statement "goto LAB_0012fd6d;" (goto "goto") (statement_identifier "LAB_0012fd6d") (; ";"))) (expression_statement "lVar6 = plVar12[lVar8 + 2];" (assignment_expression "lVar6 = plVar12[lVar8 + 2]" (identifier "lVar6") (= "=") (subscript_expression "plVar12[lVar8 + 2]" (identifier "plVar12") ([ "[") (binary_expression "lVar8 + 2" (identifier "lVar8") (+ "+") (number_literal "2")) (] "]"))) (; ";")) (expression_statement "lVar8 = lVar8 + 1;" (assignment_expression "lVar8 = lVar8 + 1" (identifier "lVar8") (= "=") (binary_expression "lVar8 + 1" (identifier "lVar8") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(lVar6 != 0)" (( "(") (binary_expression "lVar6 != 0" (identifier "lVar6") (!= "!=") (number_literal "0")) () ")")) (; ";")) (} "}"))) (expression_statement "lVar6 = (long)(int)local_54;" (assignment_expression "lVar6 = (long)(int)local_54" (identifier "lVar6") (= "=") (cast_expression "(long)(int)local_54" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (cast_expression "(int)local_54" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_54")))) (; ";")) (expression_statement "plVar12[lVar6 + 1] = 0;" (assignment_expression "plVar12[lVar6 + 1] = 0" (subscript_expression "plVar12[lVar6 + 1]" (identifier "plVar12") ([ "[") (binary_expression "lVar6 + 1" (identifier "lVar6") (+ "+") (number_literal "1")) (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)((long)plVar12 + lVar6 * 4 + 0x28) = 0;" (assignment_expression "*(undefined4 *)((long)plVar12 + lVar6 * 4 + 0x28) = 0" (pointer_expression "*(undefined4 *)((long)plVar12 + lVar6 * 4 + 0x28)" (* "*") (cast_expression "(undefined4 *)((long)plVar12 + lVar6 * 4 + 0x28)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)plVar12 + lVar6 * 4 + 0x28)" (( "(") (binary_expression "(long)plVar12 + lVar6 * 4 + 0x28" (binary_expression "(long)plVar12 + lVar6 * 4" (cast_expression "(long)plVar12" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "plVar12")) (+ "+") (binary_expression "lVar6 * 4" (identifier "lVar6") (* "*") (number_literal "4"))) (+ "+") (number_literal "0x28")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "plVar12[lVar6 + 7] = 0;" (assignment_expression "plVar12[lVar6 + 7] = 0" (subscript_expression "plVar12[lVar6 + 7]" (identifier "plVar12") ([ "[") (binary_expression "lVar6 + 7" (identifier "lVar6") (+ "+") (number_literal "7")) (] "]")) (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\nLAB_0012fd6d:\n      plVar12[(long)(int)local_54 + 1] = 0;\n      *(undefined4 *)((long)plVar12 + (long)(int)local_54 * 4 + 0x28) = 0;\n    }" (else "else") (compound_statement "{\nLAB_0012fd6d:\n      plVar12[(long)(int)local_54 + 1] = 0;\n      *(undefined4 *)((long)plVar12 + (long)(int)local_54 * 4 + 0x28) = 0;\n    }" ({ "{") (labeled_statement "LAB_0012fd6d:\n      plVar12[(long)(int)local_54 + 1] = 0;" (statement_identifier "LAB_0012fd6d") (: ":") (expression_statement "plVar12[(long)(int)local_54 + 1] = 0;" (assignment_expression "plVar12[(long)(int)local_54 + 1] = 0" (subscript_expression "plVar12[(long)(int)local_54 + 1]" (identifier "plVar12") ([ "[") (binary_expression "(long)(int)local_54 + 1" (cast_expression "(long)(int)local_54" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (cast_expression "(int)local_54" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_54"))) (+ "+") (number_literal "1")) (] "]")) (= "=") (number_literal "0")) (; ";"))) (expression_statement "*(undefined4 *)((long)plVar12 + (long)(int)local_54 * 4 + 0x28) = 0;" (assignment_expression "*(undefined4 *)((long)plVar12 + (long)(int)local_54 * 4 + 0x28) = 0" (pointer_expression "*(undefined4 *)((long)plVar12 + (long)(int)local_54 * 4 + 0x28)" (* "*") (cast_expression "(undefined4 *)((long)plVar12 + (long)(int)local_54 * 4 + 0x28)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)plVar12 + (long)(int)local_54 * 4 + 0x28)" (( "(") (binary_expression "(long)plVar12 + (long)(int)local_54 * 4 + 0x28" (binary_expression "(long)plVar12 + (long)(int)local_54 * 4" (cast_expression "(long)plVar12" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "plVar12")) (+ "+") (binary_expression "(long)(int)local_54 * 4" (cast_expression "(long)(int)local_54" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (cast_expression "(int)local_54" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_54"))) (* "*") (number_literal "4"))) (+ "+") (number_literal "0x28")) () ")")))) (= "=") (number_literal "0")) (; ";")) (} "}")))) (if_statement "if (plVar12[7] == 0) {\n      *param_1 = plVar13;\n      *plVar13 = 0;\n      FUN_0010c4d3(plVar12);\n    }" (if "if") (parenthesized_expression "(plVar12[7] == 0)" (( "(") (binary_expression "plVar12[7] == 0" (subscript_expression "plVar12[7]" (identifier "plVar12") ([ "[") (number_literal "7") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      *param_1 = plVar13;\n      *plVar13 = 0;\n      FUN_0010c4d3(plVar12);\n    }" ({ "{") (expression_statement "*param_1 = plVar13;" (assignment_expression "*param_1 = plVar13" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "plVar13")) (; ";")) (expression_statement "*plVar13 = 0;" (assignment_expression "*plVar13 = 0" (pointer_expression "*plVar13" (* "*") (identifier "plVar13")) (= "=") (number_literal "0")) (; ";")) (expression_statement "FUN_0010c4d3(plVar12);" (call_expression "FUN_0010c4d3(plVar12)" (identifier "FUN_0010c4d3") (argument_list "(plVar12)" (( "(") (identifier "plVar12") () ")"))) (; ";")) (} "}"))) (} "}"))) (goto_statement "goto LAB_0012f7e4;" (goto "goto") (statement_identifier "LAB_0012f7e4") (; ";")) (labeled_statement "code_r0x0012fc20:\n  if (iVar9 < 2) {\nLAB_0012fbac:\n    lVar8 = plVar12[(long)(iVar9 + 1) + 7];\n    if (lVar8 != 0) {\n      lVar11 = (long)(iVar9 + 1);\n      do {\n        iVar9 = (int)lVar11;\n        plVar12[lVar11 + 6] = lVar8;\n        if (1 < iVar9) break;\n        lVar8 = plVar12[lVar11 + 8];\n        lVar11 = lVar11 + 1;\n      } while (lVar8 != 0);\n    }\n    plVar12[(long)iVar9 + 7] = 0;\n    if (lVar6 == 0) {\n      return lVar15;\n    }\n  }\n  else {\n    plVar12[(long)iVar9 + 7] = 0;\n  }" (statement_identifier "code_r0x0012fc20") (: ":") (if_statement "if (iVar9 < 2) {\nLAB_0012fbac:\n    lVar8 = plVar12[(long)(iVar9 + 1) + 7];\n    if (lVar8 != 0) {\n      lVar11 = (long)(iVar9 + 1);\n      do {\n        iVar9 = (int)lVar11;\n        plVar12[lVar11 + 6] = lVar8;\n        if (1 < iVar9) break;\n        lVar8 = plVar12[lVar11 + 8];\n        lVar11 = lVar11 + 1;\n      } while (lVar8 != 0);\n    }\n    plVar12[(long)iVar9 + 7] = 0;\n    if (lVar6 == 0) {\n      return lVar15;\n    }\n  }\n  else {\n    plVar12[(long)iVar9 + 7] = 0;\n  }" (if "if") (parenthesized_expression "(iVar9 < 2)" (( "(") (binary_expression "iVar9 < 2" (identifier "iVar9") (< "<") (number_literal "2")) () ")")) (compound_statement "{\nLAB_0012fbac:\n    lVar8 = plVar12[(long)(iVar9 + 1) + 7];\n    if (lVar8 != 0) {\n      lVar11 = (long)(iVar9 + 1);\n      do {\n        iVar9 = (int)lVar11;\n        plVar12[lVar11 + 6] = lVar8;\n        if (1 < iVar9) break;\n        lVar8 = plVar12[lVar11 + 8];\n        lVar11 = lVar11 + 1;\n      } while (lVar8 != 0);\n    }\n    plVar12[(long)iVar9 + 7] = 0;\n    if (lVar6 == 0) {\n      return lVar15;\n    }\n  }" ({ "{") (labeled_statement "LAB_0012fbac:\n    lVar8 = plVar12[(long)(iVar9 + 1) + 7];" (statement_identifier "LAB_0012fbac") (: ":") (expression_statement "lVar8 = plVar12[(long)(iVar9 + 1) + 7];" (assignment_expression "lVar8 = plVar12[(long)(iVar9 + 1) + 7]" (identifier "lVar8") (= "=") (subscript_expression "plVar12[(long)(iVar9 + 1) + 7]" (identifier "plVar12") ([ "[") (binary_expression "(long)(iVar9 + 1) + 7" (cast_expression "(long)(iVar9 + 1)" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (parenthesized_expression "(iVar9 + 1)" (( "(") (binary_expression "iVar9 + 1" (identifier "iVar9") (+ "+") (number_literal "1")) () ")"))) (+ "+") (number_literal "7")) (] "]"))) (; ";"))) (if_statement "if (lVar8 != 0) {\n      lVar11 = (long)(iVar9 + 1);\n      do {\n        iVar9 = (int)lVar11;\n        plVar12[lVar11 + 6] = lVar8;\n        if (1 < iVar9) break;\n        lVar8 = plVar12[lVar11 + 8];\n        lVar11 = lVar11 + 1;\n      } while (lVar8 != 0);\n    }" (if "if") (parenthesized_expression "(lVar8 != 0)" (( "(") (binary_expression "lVar8 != 0" (identifier "lVar8") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      lVar11 = (long)(iVar9 + 1);\n      do {\n        iVar9 = (int)lVar11;\n        plVar12[lVar11 + 6] = lVar8;\n        if (1 < iVar9) break;\n        lVar8 = plVar12[lVar11 + 8];\n        lVar11 = lVar11 + 1;\n      } while (lVar8 != 0);\n    }" ({ "{") (expression_statement "lVar11 = (long)(iVar9 + 1);" (assignment_expression "lVar11 = (long)(iVar9 + 1)" (identifier "lVar11") (= "=") (cast_expression "(long)(iVar9 + 1)" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (parenthesized_expression "(iVar9 + 1)" (( "(") (binary_expression "iVar9 + 1" (identifier "iVar9") (+ "+") (number_literal "1")) () ")")))) (; ";")) (do_statement "do {\n        iVar9 = (int)lVar11;\n        plVar12[lVar11 + 6] = lVar8;\n        if (1 < iVar9) break;\n        lVar8 = plVar12[lVar11 + 8];\n        lVar11 = lVar11 + 1;\n      } while (lVar8 != 0);" (do "do") (compound_statement "{\n        iVar9 = (int)lVar11;\n        plVar12[lVar11 + 6] = lVar8;\n        if (1 < iVar9) break;\n        lVar8 = plVar12[lVar11 + 8];\n        lVar11 = lVar11 + 1;\n      }" ({ "{") (expression_statement "iVar9 = (int)lVar11;" (assignment_expression "iVar9 = (int)lVar11" (identifier "iVar9") (= "=") (cast_expression "(int)lVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar11"))) (; ";")) (expression_statement "plVar12[lVar11 + 6] = lVar8;" (assignment_expression "plVar12[lVar11 + 6] = lVar8" (subscript_expression "plVar12[lVar11 + 6]" (identifier "plVar12") ([ "[") (binary_expression "lVar11 + 6" (identifier "lVar11") (+ "+") (number_literal "6")) (] "]")) (= "=") (identifier "lVar8")) (; ";")) (if_statement "if (1 < iVar9) break;" (if "if") (parenthesized_expression "(1 < iVar9)" (( "(") (binary_expression "1 < iVar9" (number_literal "1") (< "<") (identifier "iVar9")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "lVar8 = plVar12[lVar11 + 8];" (assignment_expression "lVar8 = plVar12[lVar11 + 8]" (identifier "lVar8") (= "=") (subscript_expression "plVar12[lVar11 + 8]" (identifier "plVar12") ([ "[") (binary_expression "lVar11 + 8" (identifier "lVar11") (+ "+") (number_literal "8")) (] "]"))) (; ";")) (expression_statement "lVar11 = lVar11 + 1;" (assignment_expression "lVar11 = lVar11 + 1" (identifier "lVar11") (= "=") (binary_expression "lVar11 + 1" (identifier "lVar11") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(lVar8 != 0)" (( "(") (binary_expression "lVar8 != 0" (identifier "lVar8") (!= "!=") (number_literal "0")) () ")")) (; ";")) (} "}"))) (expression_statement "plVar12[(long)iVar9 + 7] = 0;" (assignment_expression "plVar12[(long)iVar9 + 7] = 0" (subscript_expression "plVar12[(long)iVar9 + 7]" (identifier "plVar12") ([ "[") (binary_expression "(long)iVar9 + 7" (cast_expression "(long)iVar9" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "iVar9")) (+ "+") (number_literal "7")) (] "]")) (= "=") (number_literal "0")) (; ";")) (if_statement "if (lVar6 == 0) {\n      return lVar15;\n    }" (if "if") (parenthesized_expression "(lVar6 == 0)" (( "(") (binary_expression "lVar6 == 0" (identifier "lVar6") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      return lVar15;\n    }" ({ "{") (return_statement "return lVar15;" (return "return") (identifier "lVar15") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    plVar12[(long)iVar9 + 7] = 0;\n  }" (else "else") (compound_statement "{\n    plVar12[(long)iVar9 + 7] = 0;\n  }" ({ "{") (expression_statement "plVar12[(long)iVar9 + 7] = 0;" (assignment_expression "plVar12[(long)iVar9 + 7] = 0" (subscript_expression "plVar12[(long)iVar9 + 7]" (identifier "plVar12") ([ "[") (binary_expression "(long)iVar9 + 7" (cast_expression "(long)iVar9" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "iVar9")) (+ "+") (number_literal "7")) (] "]")) (= "=") (number_literal "0")) (; ";")) (} "}"))))) (do_statement "do {\n    iVar9 = 0;\n    if ((*(long **)(lVar6 + 8) != plVar12) && (iVar9 = 1, *(long **)(lVar6 + 0x10) != plVar12)) {\n      iVar9 = (*(long **)(lVar6 + 0x18) != plVar12) + 2;\n    }\n    piVar1 = (int *)(lVar6 + 0x28 + (long)iVar9 * 4);\n    *piVar1 = *piVar1 + -1;\n    plVar12 = (long *)*plVar12;\n    lVar6 = *plVar12;\n  } while (lVar6 != 0);" (do "do") (compound_statement "{\n    iVar9 = 0;\n    if ((*(long **)(lVar6 + 8) != plVar12) && (iVar9 = 1, *(long **)(lVar6 + 0x10) != plVar12)) {\n      iVar9 = (*(long **)(lVar6 + 0x18) != plVar12) + 2;\n    }\n    piVar1 = (int *)(lVar6 + 0x28 + (long)iVar9 * 4);\n    *piVar1 = *piVar1 + -1;\n    plVar12 = (long *)*plVar12;\n    lVar6 = *plVar12;\n  }" ({ "{") (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" (identifier "iVar9") (= "=") (number_literal "0")) (; ";")) (if_statement "if ((*(long **)(lVar6 + 8) != plVar12) && (iVar9 = 1, *(long **)(lVar6 + 0x10) != plVar12)) {\n      iVar9 = (*(long **)(lVar6 + 0x18) != plVar12) + 2;\n    }" (if "if") (parenthesized_expression "((*(long **)(lVar6 + 8) != plVar12) && (iVar9 = 1, *(long **)(lVar6 + 0x10) != plVar12))" (( "(") (binary_expression "(*(long **)(lVar6 + 8) != plVar12) && (iVar9 = 1, *(long **)(lVar6 + 0x10) != plVar12)" (parenthesized_expression "(*(long **)(lVar6 + 8) != plVar12)" (( "(") (binary_expression "*(long **)(lVar6 + 8) != plVar12" (pointer_expression "*(long **)(lVar6 + 8)" (* "*") (cast_expression "(long **)(lVar6 + 8)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar6 + 8)" (( "(") (binary_expression "lVar6 + 8" (identifier "lVar6") (+ "+") (number_literal "8")) () ")")))) (!= "!=") (identifier "plVar12")) () ")")) (&& "&&") (parenthesized_expression "(iVar9 = 1, *(long **)(lVar6 + 0x10) != plVar12)" (( "(") (comma_expression "iVar9 = 1, *(long **)(lVar6 + 0x10) != plVar12" (assignment_expression "iVar9 = 1" (identifier "iVar9") (= "=") (number_literal "1")) (, ",") (binary_expression "*(long **)(lVar6 + 0x10) != plVar12" (pointer_expression "*(long **)(lVar6 + 0x10)" (* "*") (cast_expression "(long **)(lVar6 + 0x10)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar6 + 0x10)" (( "(") (binary_expression "lVar6 + 0x10" (identifier "lVar6") (+ "+") (number_literal "0x10")) () ")")))) (!= "!=") (identifier "plVar12"))) () ")"))) () ")")) (compound_statement "{\n      iVar9 = (*(long **)(lVar6 + 0x18) != plVar12) + 2;\n    }" ({ "{") (expression_statement "iVar9 = (*(long **)(lVar6 + 0x18) != plVar12) + 2;" (assignment_expression "iVar9 = (*(long **)(lVar6 + 0x18) != plVar12) + 2" (identifier "iVar9") (= "=") (binary_expression "(*(long **)(lVar6 + 0x18) != plVar12) + 2" (parenthesized_expression "(*(long **)(lVar6 + 0x18) != plVar12)" (( "(") (binary_expression "*(long **)(lVar6 + 0x18) != plVar12" (pointer_expression "*(long **)(lVar6 + 0x18)" (* "*") (cast_expression "(long **)(lVar6 + 0x18)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar6 + 0x18)" (( "(") (binary_expression "lVar6 + 0x18" (identifier "lVar6") (+ "+") (number_literal "0x18")) () ")")))) (!= "!=") (identifier "plVar12")) () ")")) (+ "+") (number_literal "2"))) (; ";")) (} "}"))) (expression_statement "piVar1 = (int *)(lVar6 + 0x28 + (long)iVar9 * 4);" (assignment_expression "piVar1 = (int *)(lVar6 + 0x28 + (long)iVar9 * 4)" (identifier "piVar1") (= "=") (cast_expression "(int *)(lVar6 + 0x28 + (long)iVar9 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar6 + 0x28 + (long)iVar9 * 4)" (( "(") (binary_expression "lVar6 + 0x28 + (long)iVar9 * 4" (binary_expression "lVar6 + 0x28" (identifier "lVar6") (+ "+") (number_literal "0x28")) (+ "+") (binary_expression "(long)iVar9 * 4" (cast_expression "(long)iVar9" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "iVar9")) (* "*") (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"))) (; ";")) (expression_statement "plVar12 = (long *)*plVar12;" (assignment_expression "plVar12 = (long *)*plVar12" (identifier "plVar12") (= "=") (cast_expression "(long *)*plVar12" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*plVar12" (* "*") (identifier "plVar12")))) (; ";")) (expression_statement "lVar6 = *plVar12;" (assignment_expression "lVar6 = *plVar12" (identifier "lVar6") (= "=") (pointer_expression "*plVar12" (* "*") (identifier "plVar12"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(lVar6 != 0)" (( "(") (binary_expression "lVar6 != 0" (identifier "lVar6") (!= "!=") (number_literal "0")) () ")")) (; ";")) (return_statement "return lVar15;" (return "return") (identifier "lVar15") (; ";")) (} "}")))

void * function_1(type_1 *t,int var_2)

{
  type_2 **ppnVar1;
  type_2 *var_16;
  int var_11;
  int var_12;
  type_3 *var_14;
  type_3 *pnVar6;
  long var_4;
  type_3 *pnVar8;
  int var_13;
  long var_9;
  type_2 *var_7;
  void *var_8;
  type_2 *pnVar13;
  type_3 *var_1;
  void *var_3;
  type_4 var_5;
  long var_6;
  
  var_13 = -1;
  var_3 = (void *)0x0;
  var_14 = t->root;
LAB_0012f7e4:
  while (var_1 = var_14, var_1 != (type_3 *)0x0) {
    if (var_2 < var_1->counts[0]) goto LAB_0012f7d1;
    var_2 = var_2 - (var_1->counts[0] + 1);
    if (var_2 < 0) {
      var_13 = 0;
LAB_0012fdee:
      if (var_3 == (void *)0x0) goto LAB_0012fdf7;
      goto LAB_0012fa63;
    }
    if (var_2 < var_1->counts[1]) {
      var_5 = 1;
    }
    else {
      var_2 = var_2 - (var_1->counts[1] + 1);
      if (var_2 < 0) {
        var_13 = 1;
        goto LAB_0012fdee;
      }
      if (var_2 < var_1->counts[2]) {
        var_5 = 2;
      }
      else {
        var_2 = var_2 - (var_1->counts[2] + 1);
        if (var_2 < 0) {
          var_13 = 2;
          goto LAB_0012fdee;
        }
        var_5 = 3;
      }
    }
    var_4 = (long)(int)var_5;
    ppnVar1 = var_1->kids + var_4 + -1;
    var_14 = ppnVar1[1];
    if (var_14->elems[1] == (void *)0x0) {
      pnVar8 = *ppnVar1;
      if (pnVar8->elems[1] == (void *)0x0) {
        if (var_5 < 3) {
          var_6 = (long)(int)var_5;
          var_7 = ((type_3 *)(var_1->kids + var_6 + -1))->kids[1];
          pnVar8 = (type_3 *)(var_1->kids + var_6 + -1);
          if (var_7 == (type_2 *)0x0) goto LAB_0012f905;
          goto LAB_0012fe3f;
        }
        goto LAB_0012f905;
      }
      var_8 = pnVar8->elems[2];
      var_14->kids[2] = var_14->kids[1];
      var_14->counts[2] = var_14->counts[1];
      var_14->elems[1] = var_14->elems[0];
      var_14->kids[1] = var_14->kids[0];
      var_14->counts[1] = var_14->counts[0];
      var_14->elems[0] = ppnVar1[6];
      var_9 = (long)(int)((var_8 != (void *)0x0) + 1);
      var_7 = pnVar8->kids[var_9 + 1];
      var_14->kids[0] = var_7;
      var_14->counts[0] = pnVar8->counts[var_9 + 1];
      if (var_7 != (type_2 *)0x0) {
        var_7->parent = var_14;
      }
      ppnVar1[6] = (type_2 *)pnVar8->elems[var_9];
      pnVar8->kids[var_9 + 1] = (type_2 *)0x0;
      pnVar8->counts[var_9 + 1] = 0;
      pnVar8->elems[var_9] = (void *)0x0;
      var_11 = var_10(var_14);
      var_1->counts[var_4] = var_11;
      var_11 = var_1->counts[var_4 + -1];
      var_12 = var_10(pnVar8);
      var_1->counts[var_4 + -1] = var_12;
      var_2 = (var_2 + var_11) - var_12;
    }
  }
  if (var_3 == (void *)0x0) {
LAB_0012fdf7:
    var_3 = var_1->elems[var_13];
  }
  if (var_13 == -1) {
    return (void *)0x0;
  }
LAB_0012fa63:
  var_14 = var_1->parent;
  if (var_14 == (type_3 *)0x0) {
    if (var_1->elems[1] == (void *)0x0) {
      if (var_1->kids[0] == (type_2 *)0x0) {
        var_15(var_1);
        t->root = (type_3 *)0x0;
        return var_3;
      }
    }
    else if (var_1->kids[0] == (type_2 *)0x0) {
      var_14 = (type_3 *)0x0;
      if (1 < var_13) {
        var_1->elems[var_13] = (void *)0x0;
        return var_3;
      }
      goto LAB_0012fbac;
    }
  }
  else if ((var_1->kids[0] == (type_2 *)0x0) && (var_1->elems[1] != (void *)0x0))
  goto code_r0x0012fc20;
  var_14 = var_1->kids[var_13];
  pnVar8 = var_14;
  if (var_14->elems[1] == (void *)0x0) {
    var_7 = var_1->kids[(long)var_13 + 1];
    var_16 = var_7;
    if (var_7->elems[1] == (void *)0x0) {
      var_14->elems[1] = var_1->elems[var_13];
      var_16 = var_7->kids[0];
      var_14->kids[2] = var_16;
      var_14->counts[2] = var_7->counts[0];
      if (var_16 != (type_2 *)0x0) {
        var_16->parent = var_14;
      }
      var_14->elems[2] = var_7->elems[0];
      var_16 = var_7->kids[1];
      var_14->kids[3] = var_16;
      var_14->counts[3] = var_7->counts[1];
      if (var_16 != (type_2 *)0x0) {
        var_16->parent = var_14;
      }
      var_15(var_7);
      var_11 = var_10(var_14);
      var_1->counts[var_13] = var_11;
      var_11 = var_13;
      if ((var_13 < 2) && (var_8 = var_1->elems[(long)var_13 + 1], var_8 != (void *)0x0)) {
        var_4 = (long)(var_13 + 1);
        do {
          var_11 = (int)var_4;
          var_1->elems[var_4 + -1] = var_8;
          var_1->kids[var_4] = var_1->kids[var_4 + 1];
          var_1->counts[var_4] = var_1->counts[var_4 + 1];
          if (1 < var_11) break;
          var_8 = var_1->elems[var_4 + 1];
          var_4 = var_4 + 1;
        } while (var_8 != (void *)0x0);
      }
      var_1->elems[var_11] = (void *)0x0;
      var_1->kids[(long)var_11 + 1] = (type_2 *)0x0;
      var_1->counts[var_11 + 1] = 0;
      if (var_1->elems[0] == (void *)0x0) {
        t->root = var_14;
        var_14->parent = (type_3 *)0x0;
        var_15(var_1);
      }
      var_2 = var_14->counts[1] + var_14->counts[0] + 1;
    }
    else {
      do {
        pnVar13 = var_16;
        var_16 = pnVar13->kids[0];
      } while (var_16 != (type_2 *)0x0);
      var_1->elems[var_13] = pnVar13->elems[0];
      var_2 = 0;
      var_14 = var_7;
    }
  }
  else {
    while (pnVar6 = pnVar8, pnVar6->kids[0] != (type_2 *)0x0) {
      pnVar8 = pnVar6->kids[3];
      if (((pnVar6->kids[3] == (type_2 *)0x0) &&
          (pnVar8 = pnVar6->kids[2], pnVar6->kids[2] == (type_2 *)0x0)) &&
         (pnVar8 = pnVar6->kids[1], pnVar6->kids[1] == (type_2 *)0x0)) {
        pnVar8 = pnVar6->kids[0];
      }
    }
    var_8 = pnVar6->elems[2];
    if ((var_8 == (void *)0x0) && (var_8 = pnVar6->elems[1], var_8 == (void *)0x0)) {
      var_8 = pnVar6->elems[0];
    }
    var_1->elems[var_13] = var_8;
    var_2 = var_1->counts[var_13] + -1;
  }
  goto LAB_0012f7e4;
LAB_0012f7d1:
  var_14 = var_1->kids[0];
  if (var_14->elems[1] == (void *)0x0) {
    var_7 = var_1->kids[1];
    var_6 = 0;
    var_5 = 0;
    pnVar8 = var_1;
    if (var_7 != (type_2 *)0x0) {
LAB_0012fe3f:
      if (var_7->elems[1] != (void *)0x0) {
        var_14->elems[1] = pnVar8->elems[0];
        var_16 = var_7->kids[0];
        var_14->kids[2] = var_16;
        var_14->counts[2] = var_7->counts[0];
        if (var_16 != (type_2 *)0x0) {
          var_16->parent = var_14;
        }
        pnVar8->elems[0] = var_7->elems[0];
        var_7->kids[0] = var_7->kids[1];
        var_7->counts[0] = var_7->counts[1];
        var_8 = var_7->elems[1];
        if (var_8 != (void *)0x0) {
          var_7->kids[1] = var_7->kids[2];
          var_7->counts[1] = var_7->counts[2];
          var_7->elems[0] = var_8;
          var_8 = var_7->elems[2];
          if (var_8 == (void *)0x0) {
            var_8 = (void *)0x1;
          }
          else {
            var_7->kids[2] = var_7->kids[3];
            var_7->counts[2] = var_7->counts[3];
            var_7->elems[1] = var_8;
            var_8 = (void *)0x2;
          }
        }
        var_11 = (int)var_8;
        var_7->kids[(long)var_11 + 1] = (type_2 *)0x0;
        var_7->counts[var_11 + 1] = 0;
        var_7->elems[var_11] = (void *)0x0;
        var_11 = var_10(var_14);
        var_1->counts[var_6] = var_11;
        var_11 = var_10(var_7);
        var_1->counts[var_6 + 1] = var_11;
        goto LAB_0012f7e4;
      }
      if (var_5 != 0) {
LAB_0012f905:
        var_5 = var_5 - 1;
        var_2 = var_2 + 1 + var_1->counts[(int)var_5];
      }
    }
    var_7 = var_1->kids[(int)var_5];
    var_14 = var_1->kids[(long)(int)var_5 + 1];
    var_14->kids[3] = var_14->kids[1];
    var_14->counts[3] = var_14->counts[1];
    var_14->elems[2] = var_14->elems[0];
    var_14->kids[2] = var_14->kids[0];
    var_14->counts[2] = var_14->counts[0];
    var_14->elems[1] = var_1->elems[(int)var_5];
    var_16 = var_7->kids[1];
    var_14->kids[1] = var_16;
    var_14->counts[1] = var_7->counts[1];
    if (var_16 != (type_2 *)0x0) {
      var_16->parent = var_14;
    }
    var_14->elems[0] = var_7->elems[0];
    var_16 = var_7->kids[0];
    var_14->kids[0] = var_16;
    var_14->counts[0] = var_7->counts[0];
    if (var_16 != (type_2 *)0x0) {
      var_16->parent = var_14;
    }
    var_11 = var_10(var_14);
    var_1->counts[(int)(var_5 + 1)] = var_11;
    var_15(var_7);
    if ((int)var_5 < 3) {
      var_7 = var_1->kids[(long)(int)var_5 + 1];
      if (var_7 != (type_2 *)0x0) {
        var_4 = (long)(int)(var_5 + 1);
        do {
          var_5 = (type_4)var_4;
          var_1->kids[var_4 + -1] = var_7;
          var_1->counts[var_4 + -1] = var_1->counts[var_4];
          var_8 = (void *)0x0;
          if ((int)(var_5 - 1) < 2) {
            var_8 = var_1->elems[var_4];
          }
          var_1->elems[var_4 + -1] = var_8;
          if (2 < (int)var_5) goto LAB_0012fd6d;
          var_7 = var_1->kids[var_4 + 1];
          var_4 = var_4 + 1;
        } while (var_7 != (type_2 *)0x0);
      }
      var_4 = (long)(int)var_5;
      var_1->kids[var_4] = (type_2 *)0x0;
      var_1->counts[var_4] = 0;
      var_1->elems[var_4] = (void *)0x0;
    }
    else {
LAB_0012fd6d:
      var_1->kids[(int)var_5] = (type_2 *)0x0;
      var_1->counts[(int)var_5] = 0;
    }
    if (var_1->elems[0] == (void *)0x0) {
      t->root = var_14;
      var_14->parent = (type_3 *)0x0;
      var_15(var_1);
    }
  }
  goto LAB_0012f7e4;
code_r0x0012fc20:
  if (var_13 < 2) {
LAB_0012fbac:
    var_8 = var_1->elems[var_13 + 1];
    if (var_8 != (void *)0x0) {
      var_4 = (long)(var_13 + 1);
      do {
        var_13 = (int)var_4;
        var_1->elems[var_4 + -1] = var_8;
        if (1 < var_13) break;
        var_8 = var_1->elems[var_4 + 1];
        var_4 = var_4 + 1;
      } while (var_8 != (void *)0x0);
    }
    var_1->elems[var_13] = (void *)0x0;
    if (var_14 == (type_3 *)0x0) {
      return var_3;
    }
  }
  else {
    var_1->elems[var_13] = (void *)0x0;
  }
  do {
    var_13 = 0;
    if ((var_14->kids[0] != var_1) && (var_13 = 1, var_14->kids[1] != var_1)) {
      var_13 = (var_14->kids[2] != var_1) + 2;
    }
    var_14->counts[var_13] = var_14->counts[var_13] + -1;
    var_1 = var_1->parent;
    var_14 = var_1->parent;
  } while (var_14 != (type_3 *)0x0);
  return var_3;
}


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

long MASKED(undefined8 *param_1,int param_2)

{
  int *piVar1;
  undefined8 *puVar2;
  undefined4 uVar3;
  int iVar4;
  long *plVar5;
  long lVar6;
  long *plVar7;
  long lVar8;
  int iVar9;
  long lVar10;
  long lVar11;
  long *plVar12;
  long *plVar13;
  int iVar14;
  long lVar15;
  uint local_54;
  long local_50;
  
  iVar9 = -1;
  lVar15 = 0;
  plVar13 = (long *)*param_1;
LAB_0012f7e4:
  while (plVar12 = plVar13, plVar12 != (long *)0x0) {
    if (param_2 < (int)plVar12[5]) goto LAB_0012f7d1;
    param_2 = param_2 - ((int)plVar12[5] + 1);
    if (param_2 < 0) {
      iVar9 = 0;
LAB_0012fdee:
      if (lVar15 == 0) goto LAB_0012fdf7;
      goto LAB_0012fa63;
    }
    if (param_2 < *(int *)((long)plVar12 + 0x2c)) {
      local_54 = 1;
    }
    else {
      param_2 = param_2 - (*(int *)((long)plVar12 + 0x2c) + 1);
      if (param_2 < 0) {
        iVar9 = 1;
        goto LAB_0012fdee;
      }
      if (param_2 < (int)plVar12[6]) {
        local_54 = 2;
      }
      else {
        param_2 = param_2 - ((int)plVar12[6] + 1);
        if (param_2 < 0) {
          iVar9 = 2;
          goto LAB_0012fdee;
        }
        local_54 = 3;
      }
    }
    lVar6 = (long)(int)local_54;
    plVar7 = plVar12 + lVar6;
    plVar13 = (long *)plVar7[1];
    if (plVar13[8] == 0) {
      lVar8 = *plVar7;
      if (*(long *)(lVar8 + 0x40) == 0) {
        if (local_54 < 3) {
          local_50 = (long)(int)local_54;
          lVar6 = (plVar12 + local_50)[2];
          plVar7 = plVar12 + local_50;
          if (lVar6 == 0) goto LAB_0012f905;
          goto LAB_0012fe3f;
        }
        goto LAB_0012f905;
      }
      lVar11 = *(long *)(lVar8 + 0x48);
      plVar13[3] = plVar13[2];
      *(undefined4 *)(plVar13 + 6) = *(undefined4 *)((long)plVar13 + 0x2c);
      plVar13[8] = plVar13[7];
      plVar13[2] = plVar13[1];
      *(int *)((long)plVar13 + 0x2c) = (int)plVar13[5];
      plVar13[7] = plVar7[6];
      lVar10 = (long)(int)((lVar11 != 0) + 1);
      lVar11 = lVar8 + lVar10 * 8;
      puVar2 = *(undefined8 **)(lVar11 + 0x10);
      plVar13[1] = (long)puVar2;
      lVar10 = lVar8 + lVar10 * 4;
      *(undefined4 *)(plVar13 + 5) = *(undefined4 *)(lVar10 + 0x2c);
      if (puVar2 != (undefined8 *)0x0) {
        *puVar2 = plVar13;
      }
      plVar7[6] = *(long *)(lVar11 + 0x38);
      *(undefined8 *)(lVar11 + 0x10) = 0;
      *(undefined4 *)(lVar10 + 0x2c) = 0;
      *(undefined8 *)(lVar11 + 0x38) = 0;
      uVar3 = FUN_0012ef67(plVar13);
      *(undefined4 *)((long)plVar12 + lVar6 * 4 + 0x28) = uVar3;
      iVar14 = *(int *)((long)plVar12 + lVar6 * 4 + 0x24);
      iVar4 = FUN_0012ef67(lVar8);
      *(int *)((long)plVar12 + lVar6 * 4 + 0x24) = iVar4;
      param_2 = (param_2 + iVar14) - iVar4;
    }
  }
  if (lVar15 == 0) {
LAB_0012fdf7:
    lVar15 = plVar12[(long)iVar9 + 7];
  }
  if (iVar9 == -1) {
    return 0;
  }
LAB_0012fa63:
  lVar6 = *plVar12;
  if (lVar6 == 0) {
    if (plVar12[8] == 0) {
      if (plVar12[1] == 0) {
        FUN_0010c4d3(plVar12);
        *param_1 = 0;
        return lVar15;
      }
    }
    else if (plVar12[1] == 0) {
      lVar6 = 0;
      if (1 < iVar9) {
        plVar12[(long)iVar9 + 7] = 0;
        return lVar15;
      }
      goto LAB_0012fbac;
    }
  }
  else if ((plVar12[1] == 0) && (plVar12[8] != 0)) goto code_r0x0012fc20;
  plVar13 = (long *)plVar12[(long)iVar9 + 1];
  plVar7 = plVar13;
  if (plVar13[8] == 0) {
    plVar7 = (long *)plVar12[(long)iVar9 + 2];
    plVar5 = plVar7;
    if (plVar7[8] == 0) {
      plVar13[8] = plVar12[(long)iVar9 + 7];
      puVar2 = (undefined8 *)plVar7[1];
      plVar13[3] = (long)puVar2;
      *(int *)(plVar13 + 6) = (int)plVar7[5];
      if (puVar2 != (undefined8 *)0x0) {
        *puVar2 = plVar13;
      }
      plVar13[9] = plVar7[7];
      puVar2 = (undefined8 *)plVar7[2];
      plVar13[4] = (long)puVar2;
      *(undefined4 *)((long)plVar13 + 0x34) = *(undefined4 *)((long)plVar7 + 0x2c);
      if (puVar2 != (undefined8 *)0x0) {
        *puVar2 = plVar13;
      }
      FUN_0010c4d3();
      uVar3 = FUN_0012ef67(plVar13);
      *(undefined4 *)((long)plVar12 + (long)iVar9 * 4 + 0x28) = uVar3;
      iVar14 = iVar9;
      if ((iVar9 < 2) && (lVar6 = plVar12[(long)iVar9 + 8], lVar6 != 0)) {
        lVar8 = (long)(iVar9 + 1);
        do {
          iVar14 = (int)lVar8;
          plVar12[lVar8 + 6] = lVar6;
          plVar12[lVar8 + 1] = plVar12[lVar8 + 2];
          *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28) =
               *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x2c);
          if (1 < iVar14) break;
          lVar6 = plVar12[lVar8 + 8];
          lVar8 = lVar8 + 1;
        } while (lVar6 != 0);
      }
      plVar12[(long)iVar14 + 7] = 0;
      plVar12[(long)iVar14 + 2] = 0;
      *(undefined4 *)((long)plVar12 + (long)(iVar14 + 1) * 4 + 0x28) = 0;
      if (plVar12[7] == 0) {
        *param_1 = plVar13;
        *plVar13 = 0;
        FUN_0010c4d3(plVar12);
      }
      param_2 = *(int *)((long)plVar13 + 0x2c) + (int)plVar13[5] + 1;
    }
    else {
      do {
        plVar13 = plVar5;
        plVar5 = (long *)plVar13[1];
      } while (plVar5 != (long *)0x0);
      plVar12[(long)iVar9 + 7] = plVar13[7];
      param_2 = 0;
      plVar13 = plVar7;
    }
  }
  else {
    while (plVar5 = plVar7, (long *)plVar5[1] != (long *)0x0) {
      plVar7 = (long *)plVar5[4];
      if ((((long *)plVar5[4] == (long *)0x0) &&
          (plVar7 = (long *)plVar5[3], (long *)plVar5[3] == (long *)0x0)) &&
         (plVar7 = (long *)plVar5[2], (long *)plVar5[2] == (long *)0x0)) {
        plVar7 = (long *)plVar5[1];
      }
    }
    lVar6 = plVar5[9];
    if ((lVar6 == 0) && (lVar6 = plVar5[8], lVar6 == 0)) {
      lVar6 = plVar5[7];
    }
    plVar12[(long)iVar9 + 7] = lVar6;
    param_2 = *(int *)((long)plVar12 + (long)iVar9 * 4 + 0x28) + -1;
  }
  goto LAB_0012f7e4;
LAB_0012f7d1:
  plVar13 = (long *)plVar12[1];
  if (plVar13[8] == 0) {
    lVar6 = plVar12[2];
    local_50 = 0;
    local_54 = 0;
    plVar7 = plVar12;
    if (lVar6 != 0) {
LAB_0012fe3f:
      if (*(long *)(lVar6 + 0x40) != 0) {
        plVar13[8] = plVar7[7];
        puVar2 = *(undefined8 **)(lVar6 + 8);
        plVar13[3] = (long)puVar2;
        *(undefined4 *)(plVar13 + 6) = *(undefined4 *)(lVar6 + 0x28);
        if (puVar2 != (undefined8 *)0x0) {
          *puVar2 = plVar13;
        }
        plVar7[7] = *(long *)(lVar6 + 0x38);
        *(undefined8 *)(lVar6 + 8) = *(undefined8 *)(lVar6 + 0x10);
        *(undefined4 *)(lVar6 + 0x28) = *(undefined4 *)(lVar6 + 0x2c);
        lVar8 = *(long *)(lVar6 + 0x40);
        if (lVar8 != 0) {
          *(undefined8 *)(lVar6 + 0x10) = *(undefined8 *)(lVar6 + 0x18);
          *(undefined4 *)(lVar6 + 0x2c) = *(undefined4 *)(lVar6 + 0x30);
          *(long *)(lVar6 + 0x38) = lVar8;
          if (*(long *)(lVar6 + 0x48) == 0) {
            lVar8 = 1;
          }
          else {
            *(undefined8 *)(lVar6 + 0x18) = *(undefined8 *)(lVar6 + 0x20);
            *(undefined4 *)(lVar6 + 0x30) = *(undefined4 *)(lVar6 + 0x34);
            *(long *)(lVar6 + 0x40) = *(long *)(lVar6 + 0x48);
            lVar8 = 2;
          }
        }
        lVar11 = lVar6 + (long)(int)lVar8 * 8;
        *(undefined8 *)(lVar11 + 0x10) = 0;
        *(undefined4 *)(lVar6 + 0x28 + (long)((int)lVar8 + 1) * 4) = 0;
        *(undefined8 *)(lVar11 + 0x38) = 0;
        uVar3 = FUN_0012ef67(plVar13);
        *(undefined4 *)((long)plVar12 + local_50 * 4 + 0x28) = uVar3;
        uVar3 = FUN_0012ef67(lVar6);
        *(undefined4 *)((long)plVar12 + local_50 * 4 + 0x2c) = uVar3;
        goto LAB_0012f7e4;
      }
      if (local_54 != 0) {
LAB_0012f905:
        local_54 = local_54 - 1;
        param_2 = param_2 + 1 + *(int *)((long)plVar12 + (long)(int)local_54 * 4 + 0x28);
      }
    }
    lVar6 = plVar12[(long)(int)local_54 + 1];
    plVar13 = (long *)plVar12[(long)(int)local_54 + 2];
    plVar13[4] = plVar13[2];
    *(undefined4 *)((long)plVar13 + 0x34) = *(undefined4 *)((long)plVar13 + 0x2c);
    plVar13[9] = plVar13[7];
    plVar13[3] = plVar13[1];
    *(int *)(plVar13 + 6) = (int)plVar13[5];
    plVar13[8] = plVar12[(long)(int)local_54 + 7];
    puVar2 = *(undefined8 **)(lVar6 + 0x10);
    plVar13[2] = (long)puVar2;
    *(undefined4 *)((long)plVar13 + 0x2c) = *(undefined4 *)(lVar6 + 0x2c);
    if (puVar2 != (undefined8 *)0x0) {
      *puVar2 = plVar13;
    }
    plVar13[7] = *(long *)(lVar6 + 0x38);
    puVar2 = *(undefined8 **)(lVar6 + 8);
    plVar13[1] = (long)puVar2;
    *(undefined4 *)(plVar13 + 5) = *(undefined4 *)(lVar6 + 0x28);
    if (puVar2 != (undefined8 *)0x0) {
      *puVar2 = plVar13;
    }
    uVar3 = FUN_0012ef67(plVar13);
    *(undefined4 *)((long)plVar12 + (long)(int)(local_54 + 1) * 4 + 0x28) = uVar3;
    FUN_0010c4d3(lVar6);
    if ((int)local_54 < 3) {
      lVar6 = plVar12[(long)(int)local_54 + 2];
      if (lVar6 != 0) {
        lVar8 = (long)(int)(local_54 + 1);
        do {
          local_54 = (uint)lVar8;
          plVar12[lVar8] = lVar6;
          *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x24) =
               *(undefined4 *)((long)plVar12 + lVar8 * 4 + 0x28);
          lVar6 = 0;
          if ((int)(local_54 - 1) < 2) {
            lVar6 = plVar12[lVar8 + 7];
          }
          plVar12[lVar8 + 6] = lVar6;
          if (2 < (int)local_54) goto LAB_0012fd6d;
          lVar6 = plVar12[lVar8 + 2];
          lVar8 = lVar8 + 1;
        } while (lVar6 != 0);
      }
      lVar6 = (long)(int)local_54;
      plVar12[lVar6 + 1] = 0;
      *(undefined4 *)((long)plVar12 + lVar6 * 4 + 0x28) = 0;
      plVar12[lVar6 + 7] = 0;
    }
    else {
LAB_0012fd6d:
      plVar12[(long)(int)local_54 + 1] = 0;
      *(undefined4 *)((long)plVar12 + (long)(int)local_54 * 4 + 0x28) = 0;
    }
    if (plVar12[7] == 0) {
      *param_1 = plVar13;
      *plVar13 = 0;
      FUN_0010c4d3(plVar12);
    }
  }
  goto LAB_0012f7e4;
code_r0x0012fc20:
  if (iVar9 < 2) {
LAB_0012fbac:
    lVar8 = plVar12[(long)(iVar9 + 1) + 7];
    if (lVar8 != 0) {
      lVar11 = (long)(iVar9 + 1);
      do {
        iVar9 = (int)lVar11;
        plVar12[lVar11 + 6] = lVar8;
        if (1 < iVar9) break;
        lVar8 = plVar12[lVar11 + 8];
        lVar11 = lVar11 + 1;
      } while (lVar8 != 0);
    }
    plVar12[(long)iVar9 + 7] = 0;
    if (lVar6 == 0) {
      return lVar15;
    }
  }
  else {
    plVar12[(long)iVar9 + 7] = 0;
  }
  do {
    iVar9 = 0;
    if ((*(long **)(lVar6 + 8) != plVar12) && (iVar9 = 1, *(long **)(lVar6 + 0x10) != plVar12)) {
      iVar9 = (*(long **)(lVar6 + 0x18) != plVar12) + 2;
    }
    piVar1 = (int *)(lVar6 + 0x28 + (long)iVar9 * 4);
    *piVar1 = *piVar1 + -1;
    plVar12 = (long *)*plVar12;
    lVar6 = *plVar12;
  } while (lVar6 != 0);
  return lVar15;
}

