
void * __regparm3 delpos234_internal(tree234 *t,int index)

{
  uint uVar1;
  node234 **ppnVar2;
  node234_conflict *pnVar3;
  node234_conflict *ptr;
  undefined4 *puVar4;
  node234_conflict *pnVar5;
  int iVar6;
  void *pvVar7;
  int iVar8;
  node234 *pnVar9;
  node234_conflict *extraout_ECX;
  node234 *pnVar10;
  node234_conflict *n;
  void *ptr_00;
  node234 *pnVar11;
  int iVar12;
  node234 *pnVar13;
  int local_38;
  void *local_34;
  int local_30;
  int local_28;
  
  puVar4 = (undefined4 *)__x86_get_pc_thunk_di();
  local_38 = -1;
  local_34 = (void *)0x0;
  pnVar9 = (node234_conflict *)*puVar4;
joined_r0x0003e772:
  while( true ) {
    ptr = pnVar9;
    iVar12 = index;
    if (ptr == (node234_conflict *)0x0) {
      if (local_34 == (void *)0x0) {
        local_34 = *(void **)(local_38 * 4 + 0x24);
      }
      if (local_38 == -1) {
        return (void *)0x0;
      }
      goto LAB_0003e7aa;
    }
    if (ptr->counts[0] <= iVar12) break;
    pnVar10 = ptr->kids[0];
    index = iVar12;
    pnVar9 = pnVar10;
    if (pnVar10->elems[1] == (void *)0x0) {
      pnVar13 = ptr->kids[1];
      if (pnVar13 != (node234 *)0x0) {
        local_30 = 0;
        local_28 = 1;
        if (pnVar13->elems[1] == (void *)0x0) goto LAB_0003ed02;
        goto LAB_0003e836;
      }
LAB_0003ed02:
      local_30 = 1;
      iVar6 = 0;
      goto LAB_0003ed0c;
    }
  }
  index = iVar12 - (ptr->counts[0] + 1);
  if (-1 < index) {
    if (index < ptr->counts[1]) goto LAB_0003eab0;
    iVar12 = index - (ptr->counts[1] + 1);
    if (iVar12 < 0) {
      local_38 = 1;
      if (local_34 == (void *)0x0) {
        local_34 = ptr->elems[1];
      }
LAB_0003e7aa:
      pnVar5 = ptr->parent;
      pnVar9 = ptr->kids[0];
      goto joined_r0x0003e7b1;
    }
    if (iVar12 < ptr->counts[2]) {
      pnVar9 = ptr->kids[2];
      index = iVar12;
      if (pnVar9->elems[1] == (void *)0x0) {
        iVar6 = 1;
        local_30 = 2;
        goto LAB_0003eacb;
      }
    }
    else {
      index = iVar12 - (ptr->counts[2] + 1);
      if (index < 0) {
        local_38 = 2;
        if (local_34 == (void *)0x0) {
          local_34 = ptr->elems[2];
        }
        goto LAB_0003e7aa;
      }
      pnVar13 = ptr->kids[3];
      pnVar9 = pnVar13;
      if (pnVar13->elems[1] == (void *)0x0) {
        pnVar10 = ptr->kids[2];
        if (pnVar10->elems[1] == (void *)0x0) {
          iVar6 = 2;
          local_30 = 3;
          goto LAB_0003ed0c;
        }
        local_30 = 3;
        iVar6 = 2;
        goto LAB_0003eae0;
      }
    }
    goto joined_r0x0003e772;
  }
  local_38 = 0;
  if (local_34 != (void *)0x0) goto LAB_0003e7aa;
  local_34 = ptr->elems[0];
  pnVar5 = ptr->parent;
  pnVar9 = ptr->kids[0];
joined_r0x0003e7b1:
  if (pnVar5 == (node234_conflict *)0x0) {
    if (ptr->elems[1] == (void *)0x0) {
      if (pnVar9 == (node234 *)0x0) {
        safefree(ptr);
        *puVar4 = 0;
        return local_34;
      }
    }
    else if (pnVar9 == (node234 *)0x0) {
      pnVar5 = (node234_conflict *)0x0;
LAB_0003e9d5:
      if (local_38 == 2) {
LAB_0003ea09:
        local_38 = 2;
      }
      else {
        pvVar7 = ptr->elems[local_38 + 1];
        iVar12 = local_38 + 1;
        if (pvVar7 != (void *)0x0) {
          do {
            ptr->counts[iVar12 + 3] = (int)pvVar7;
            if (iVar12 == 2) goto LAB_0003ea09;
            pvVar7 = ptr->elems[2];
            iVar12 = 2;
          } while (pvVar7 != (void *)0x0);
          local_38 = 1;
        }
      }
      ptr->elems[local_38] = (void *)0x0;
      while (pnVar3 = pnVar5, pnVar3 != (node234_conflict *)0x0) {
        iVar12 = 0;
        if ((pnVar3->kids[0] != ptr) && (iVar12 = 1, pnVar3->kids[1] != ptr)) {
          iVar12 = (pnVar3->kids[2] != ptr) + 2;
        }
        pnVar3->counts[iVar12] = pnVar3->counts[iVar12] + -1;
        ptr = pnVar3;
        pnVar5 = pnVar3->parent;
      }
      return local_34;
    }
  }
  else if ((pnVar9 == (node234 *)0x0) && (ptr->elems[1] != (void *)0x0)) goto LAB_0003e9d5;
  pnVar9 = ptr->kids[local_38];
  pnVar5 = pnVar9;
  if (pnVar9->elems[1] == (void *)0x0) {
    pnVar10 = ptr->kids[local_38 + 1];
    iVar12 = local_38 + 1;
    pnVar13 = pnVar10->kids[0];
    pnVar11 = pnVar10;
    if (pnVar10->elems[1] == (void *)0x0) {
      pvVar7 = ptr->elems[local_38];
      pnVar9->kids[2] = pnVar13;
      pnVar9->elems[1] = pvVar7;
      pnVar9->counts[2] = pnVar10->counts[0];
      if (pnVar13 != (node234 *)0x0) {
        pnVar13->parent = pnVar9;
      }
      iVar6 = pnVar10->counts[1];
      pnVar9->elems[2] = pnVar10->elems[0];
      pnVar13 = pnVar10->kids[1];
      pnVar9->counts[3] = iVar6;
      pnVar9->kids[3] = pnVar13;
      if (pnVar13 != (node234 *)0x0) {
        pnVar13->parent = pnVar9;
      }
      safefree(pnVar10);
      iVar6 = countnode234(pnVar9);
      ptr->counts[local_38] = iVar6;
      if (local_38 == 2) {
LAB_0003ec29:
        iVar12 = 3;
        iVar6 = 2;
      }
      else {
        pvVar7 = ptr->elems[local_38 + 1];
        iVar6 = local_38;
        if (pvVar7 != (void *)0x0) {
          do {
            ptr->counts[iVar12 + 3] = (int)pvVar7;
            ptr->kids[iVar12] = ptr->kids[iVar12 + 1];
            ptr->counts[iVar12] = ptr->counts[iVar12 + 1];
            if (iVar12 == 2) goto LAB_0003ec29;
            pvVar7 = ptr->elems[2];
            iVar12 = 2;
          } while (pvVar7 != (void *)0x0);
          iVar6 = 1;
        }
      }
      ptr->elems[iVar6] = (void *)0x0;
      ptr->kids[iVar12] = (node234 *)0x0;
      ptr->counts[iVar12] = 0;
      if (ptr->elems[0] == (void *)0x0) {
        *puVar4 = pnVar9;
        pnVar9->parent = (node234_conflict *)0x0;
        safefree(ptr);
      }
      index = pnVar9->counts[1] + pnVar9->counts[0] + 1;
    }
    else {
      while (pnVar9 = pnVar13, pnVar9 != (node234 *)0x0) {
        pnVar11 = pnVar9;
        pnVar13 = pnVar9->kids[0];
      }
      ptr->elems[local_38] = pnVar11->elems[0];
      index = 0;
      pnVar9 = pnVar10;
    }
  }
  else {
    while (pnVar10 = pnVar5->kids[0], pnVar10 != (node234 *)0x0) {
      while ((pnVar13 = pnVar5->kids[3], pnVar5->kids[3] != (node234 *)0x0 ||
             (pnVar13 = pnVar5->kids[2], pnVar5->kids[2] != (node234 *)0x0))) {
        pnVar5 = pnVar13;
        pnVar10 = pnVar5->kids[0];
        if (pnVar10 == (node234 *)0x0) goto LAB_0003e958;
      }
      ppnVar2 = pnVar5->kids;
      pnVar5 = ppnVar2[1];
      if (ppnVar2[1] == (node234 *)0x0) {
        pnVar5 = pnVar10;
      }
    }
LAB_0003e958:
    pvVar7 = pnVar5->elems[2];
    if ((pvVar7 == (void *)0x0) && (pvVar7 = pnVar5->elems[1], pvVar7 == (void *)0x0)) {
      pvVar7 = pnVar5->elems[0];
    }
    ptr->elems[local_38] = pvVar7;
    index = ptr->counts[local_38] + -1;
  }
  goto joined_r0x0003e772;
LAB_0003eab0:
  pnVar9 = ptr->kids[1];
  if (pnVar9->elems[1] == (void *)0x0) {
    local_30 = 1;
    iVar6 = 0;
LAB_0003eacb:
    pnVar10 = ptr->kids[iVar6];
    if (pnVar10->elems[1] == (void *)0x0) {
      local_28 = local_30 + 1;
      ppnVar2 = ptr->kids + local_30 + -1;
      pnVar13 = ppnVar2[2];
      if (pnVar13 == (node234 *)0x0) {
        pnVar13 = ppnVar2[1];
        iVar12 = index + 1 + ptr->counts[iVar6];
      }
      else {
        if (pnVar13->elems[1] != (void *)0x0) {
LAB_0003e836:
          iVar12 = pnVar13->counts[0];
          pnVar9->elems[1] = ptr->elems[local_30];
          pnVar10 = pnVar13->kids[0];
          pnVar9->counts[2] = iVar12;
          pnVar9->kids[2] = pnVar10;
          if (pnVar10 != (node234 *)0x0) {
            pnVar10->parent = pnVar9;
          }
          ptr->elems[local_30] = pnVar13->elems[0];
          pnVar13->kids[0] = pnVar13->kids[1];
          pnVar13->counts[0] = pnVar13->counts[1];
          if (pnVar13->elems[1] == (void *)0x0) {
            iVar12 = 1;
            iVar6 = 0;
          }
          else {
            pnVar10 = pnVar13->kids[2];
            pnVar13->elems[0] = pnVar13->elems[1];
            pvVar7 = pnVar13->elems[2];
            pnVar13->kids[1] = pnVar10;
            pnVar13->counts[1] = pnVar13->counts[2];
            if (pvVar7 == (void *)0x0) {
              iVar12 = 2;
              iVar6 = 1;
            }
            else {
              pnVar10 = pnVar13->kids[3];
              pnVar13->elems[1] = pvVar7;
              iVar12 = 3;
              pnVar13->kids[2] = pnVar10;
              pnVar13->counts[2] = pnVar13->counts[3];
              iVar6 = 2;
            }
          }
          pnVar13->kids[iVar12] = (node234 *)0x0;
          pnVar13->counts[iVar12] = 0;
          pnVar13->elems[iVar6] = (void *)0x0;
          iVar12 = countnode234(pnVar9);
          ptr->counts[local_30] = iVar12;
          iVar12 = countnode234(pnVar13);
          ptr->counts[local_28] = iVar12;
          pnVar9 = extraout_ECX;
          goto joined_r0x0003e772;
        }
        pnVar10 = *ppnVar2;
        pnVar13 = ppnVar2[1];
        iVar6 = local_30 + -1;
        iVar12 = index + 1 + (int)ppnVar2[4];
      }
LAB_0003ed0c:
      pnVar13->kids[3] = pnVar13->kids[1];
      pnVar13->counts[3] = pnVar13->counts[1];
      pnVar13->elems[2] = pnVar13->elems[0];
      pnVar13->kids[2] = pnVar13->kids[0];
      pnVar13->counts[2] = pnVar13->counts[0];
      iVar8 = pnVar10->counts[1];
      pnVar13->elems[1] = ptr->elems[iVar6];
      pnVar9 = pnVar10->kids[1];
      pnVar13->counts[1] = iVar8;
      pnVar13->kids[1] = pnVar9;
      if (pnVar9 != (node234 *)0x0) {
        pnVar9->parent = pnVar13;
      }
      iVar8 = pnVar10->counts[0];
      pnVar13->elems[0] = pnVar10->elems[0];
      pnVar9 = pnVar10->kids[0];
      pnVar13->counts[0] = iVar8;
      pnVar13->kids[0] = pnVar9;
      if (pnVar9 != (node234 *)0x0) {
        pnVar9->parent = pnVar13;
      }
      iVar8 = countnode234(pnVar13);
      ptr->counts[local_30] = iVar8;
      safefree(ptr_00);
      pnVar9 = ptr->kids[iVar6 + 1];
      while (pnVar9 != (node234 *)0x0) {
        iVar8 = iVar6 + 1;
        pnVar10 = (node234 *)ptr->counts[iVar8];
        ptr->kids[iVar6] = pnVar9;
        ptr->kids[iVar6 + 4] = pnVar10;
        if (iVar8 == 3) {
          ptr->elems[2] = (void *)0x0;
          ptr->kids[3] = (node234 *)0x0;
          ptr->counts[3] = 0;
          goto LAB_0003edcd;
        }
        ptr->counts[iVar6 + 4] = (int)ptr->elems[iVar8];
        pnVar9 = ptr->kids[iVar6 + 2];
        iVar6 = iVar8;
      }
      ptr->kids[iVar6] = (node234 *)0x0;
      ptr->counts[iVar6] = 0;
      ptr->elems[iVar6] = (void *)0x0;
LAB_0003edcd:
      index = iVar12;
      pnVar9 = pnVar13;
      if (ptr->elems[0] == (void *)0x0) {
        *puVar4 = pnVar13;
        pnVar13->parent = (node234_conflict *)0x0;
        safefree(ptr);
      }
      goto joined_r0x0003e772;
    }
LAB_0003eae0:
    uVar1 = (uint)(pnVar10->elems[2] == (void *)0x0);
    iVar12 = uVar1 * -4;
    iVar8 = 2 - uVar1;
    pnVar9->kids[2] = pnVar9->kids[1];
    pnVar9->counts[2] = pnVar9->counts[1];
    pnVar9->elems[1] = pnVar9->elems[0];
    pnVar9->kids[1] = pnVar9->kids[0];
    pnVar9->counts[1] = pnVar9->counts[0];
    pnVar9->elems[0] = ptr->elems[iVar6];
    pnVar13 = *(node234 **)((int)pnVar10 + iVar12 + 0x10);
    pnVar9->kids[0] = pnVar13;
    pnVar9->counts[0] = *(int *)((int)pnVar10 + iVar12 + 0x20);
    if (pnVar13 != (node234 *)0x0) {
      pnVar13->parent = pnVar9;
    }
    ptr->elems[iVar6] = *(void **)((int)pnVar10 + iVar8 * 4 + 0x24);
    *(undefined4 *)((int)pnVar10 + iVar12 + 0x10) = 0;
    *(undefined4 *)((int)pnVar10 + iVar12 + 0x20) = 0;
    *(undefined4 *)((int)pnVar10 + iVar8 * 4 + 0x24) = 0;
    iVar12 = countnode234(pnVar9);
    ptr->counts[local_30] = iVar12;
    iVar12 = ptr->counts[iVar6];
    iVar8 = countnode234(n);
    ptr->counts[iVar6] = iVar8;
    index = (index + iVar12) - iVar8;
  }
  goto joined_r0x0003e772;
}



int __regparm3 FUN_0003e740(undefined4 param_1,int param_2)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  undefined4 *puVar5;
  int iVar6;
  undefined4 uVar7;
  int iVar8;
  undefined4 *extraout_ECX;
  undefined4 extraout_ECX_00;
  undefined4 *puVar9;
  int iVar10;
  undefined4 *puVar11;
  int iVar12;
  int local_38;
  int local_34;
  int local_30;
  int local_28;
  
  puVar3 = (undefined4 *)FUN_0002abcc();
  local_38 = -1;
  local_34 = 0;
  puVar5 = (undefined4 *)*puVar3;
joined_r0x0003e772:
  while( true ) {
    puVar2 = puVar5;
    iVar12 = param_2;
    if (puVar2 == (undefined4 *)0x0) {
      if (local_34 == 0) {
        local_34 = *(int *)(local_38 * 4 + 0x24);
      }
      if (local_38 == -1) {
        return 0;
      }
      goto LAB_0003e7aa;
    }
    if ((int)puVar2[5] <= iVar12) break;
    puVar4 = (undefined4 *)puVar2[1];
    param_2 = iVar12;
    puVar5 = puVar4;
    if (puVar4[10] == 0) {
      puVar9 = (undefined4 *)puVar2[2];
      if (puVar9 != (undefined4 *)0x0) {
        local_30 = 0;
        local_28 = 1;
        if (puVar9[10] == 0) goto LAB_0003ed02;
        goto LAB_0003e836;
      }
LAB_0003ed02:
      local_30 = 1;
      iVar10 = 0;
      goto LAB_0003ed0c;
    }
  }
  param_2 = iVar12 - (puVar2[5] + 1);
  if (-1 < param_2) {
    if (param_2 < (int)puVar2[6]) goto LAB_0003eab0;
    iVar12 = param_2 - (puVar2[6] + 1);
    if (iVar12 < 0) {
      local_38 = 1;
      if (local_34 == 0) {
        local_34 = puVar2[10];
      }
LAB_0003e7aa:
      puVar5 = (undefined4 *)*puVar2;
      iVar12 = puVar2[1];
      goto joined_r0x0003e7b1;
    }
    if (iVar12 < (int)puVar2[7]) {
      puVar5 = (undefined4 *)puVar2[3];
      param_2 = iVar12;
      if (puVar5[10] == 0) {
        iVar10 = 1;
        local_30 = 2;
        goto LAB_0003eacb;
      }
    }
    else {
      param_2 = iVar12 - (puVar2[7] + 1);
      if (param_2 < 0) {
        local_38 = 2;
        if (local_34 == 0) {
          local_34 = puVar2[0xb];
        }
        goto LAB_0003e7aa;
      }
      puVar9 = (undefined4 *)puVar2[4];
      puVar5 = puVar9;
      if (puVar9[10] == 0) {
        puVar4 = (undefined4 *)puVar2[3];
        if (puVar4[10] == 0) {
          iVar10 = 2;
          local_30 = 3;
          goto LAB_0003ed0c;
        }
        local_30 = 3;
        iVar10 = 2;
        goto LAB_0003eae0;
      }
    }
    goto joined_r0x0003e772;
  }
  local_38 = 0;
  if (local_34 != 0) goto LAB_0003e7aa;
  local_34 = puVar2[9];
  puVar5 = (undefined4 *)*puVar2;
  iVar12 = puVar2[1];
joined_r0x0003e7b1:
  if (puVar5 == (undefined4 *)0x0) {
    if (puVar2[10] == 0) {
      if (iVar12 == 0) {
        FUN_0001a110(puVar2);
        *puVar3 = 0;
        return local_34;
      }
    }
    else if (iVar12 == 0) {
      puVar5 = (undefined4 *)0x0;
LAB_0003e9d5:
      if (local_38 == 2) {
LAB_0003ea09:
        local_38 = 2;
      }
      else {
        iVar10 = puVar2[local_38 + 10];
        iVar12 = local_38 + 1;
        if (iVar10 != 0) {
          do {
            puVar2[iVar12 + 8] = iVar10;
            if (iVar12 == 2) goto LAB_0003ea09;
            iVar10 = puVar2[0xb];
            iVar12 = 2;
          } while (iVar10 != 0);
          local_38 = 1;
        }
      }
      puVar2[local_38 + 9] = 0;
      while (puVar3 = puVar5, puVar3 != (undefined4 *)0x0) {
        iVar12 = 0;
        if (((undefined4 *)puVar3[1] != puVar2) && (iVar12 = 1, (undefined4 *)puVar3[2] != puVar2))
        {
          iVar12 = ((undefined4 *)puVar3[3] != puVar2) + 2;
        }
        puVar3[iVar12 + 5] = puVar3[iVar12 + 5] + -1;
        puVar2 = puVar3;
        puVar5 = (undefined4 *)*puVar3;
      }
      return local_34;
    }
  }
  else if ((iVar12 == 0) && (puVar2[10] != 0)) goto LAB_0003e9d5;
  puVar5 = (undefined4 *)puVar2[local_38 + 1];
  puVar4 = puVar5;
  if (puVar5[10] == 0) {
    puVar4 = (undefined4 *)puVar2[local_38 + 2];
    iVar12 = local_38 + 1;
    puVar11 = (undefined4 *)puVar4[1];
    puVar9 = puVar4;
    if (puVar4[10] == 0) {
      uVar7 = puVar2[local_38 + 9];
      puVar5[3] = puVar11;
      puVar5[10] = uVar7;
      puVar5[7] = puVar4[5];
      if (puVar11 != (undefined4 *)0x0) {
        *puVar11 = puVar5;
      }
      uVar7 = puVar4[6];
      puVar5[0xb] = puVar4[9];
      puVar11 = (undefined4 *)puVar4[2];
      puVar5[8] = uVar7;
      puVar5[4] = puVar11;
      if (puVar11 != (undefined4 *)0x0) {
        *puVar11 = puVar5;
      }
      FUN_0001a110(puVar4);
      uVar7 = FUN_0003e010();
      puVar2[local_38 + 5] = uVar7;
      if (local_38 == 2) {
LAB_0003ec29:
        iVar12 = 3;
        iVar6 = 2;
      }
      else {
        iVar10 = puVar2[local_38 + 10];
        iVar6 = local_38;
        if (iVar10 != 0) {
          do {
            puVar2[iVar12 + 8] = iVar10;
            puVar2[iVar12 + 1] = puVar2[iVar12 + 2];
            puVar2[iVar12 + 5] = puVar2[iVar12 + 6];
            if (iVar12 == 2) goto LAB_0003ec29;
            iVar10 = puVar2[0xb];
            iVar12 = 2;
          } while (iVar10 != 0);
          iVar6 = 1;
        }
      }
      puVar2[iVar6 + 9] = 0;
      puVar2[iVar12 + 1] = 0;
      puVar2[iVar12 + 5] = 0;
      if (puVar2[9] == 0) {
        *puVar3 = puVar5;
        *puVar5 = 0;
        FUN_0001a110(puVar2);
      }
      param_2 = puVar5[6] + puVar5[5] + 1;
    }
    else {
      while (puVar5 = puVar11, puVar5 != (undefined4 *)0x0) {
        puVar9 = puVar5;
        puVar11 = (undefined4 *)puVar5[1];
      }
      puVar2[local_38 + 9] = puVar9[9];
      param_2 = 0;
      puVar5 = puVar4;
    }
  }
  else {
    while (puVar11 = (undefined4 *)puVar4[1], puVar11 != (undefined4 *)0x0) {
      while ((puVar9 = (undefined4 *)puVar4[4], (undefined4 *)puVar4[4] != (undefined4 *)0x0 ||
             (puVar9 = (undefined4 *)puVar4[3], (undefined4 *)puVar4[3] != (undefined4 *)0x0))) {
        puVar4 = puVar9;
        puVar11 = (undefined4 *)puVar4[1];
        if (puVar11 == (undefined4 *)0x0) goto LAB_0003e958;
      }
      puVar9 = puVar4 + 2;
      puVar4 = (undefined4 *)*puVar9;
      if ((undefined4 *)*puVar9 == (undefined4 *)0x0) {
        puVar4 = puVar11;
      }
    }
LAB_0003e958:
    iVar12 = puVar4[0xb];
    if ((iVar12 == 0) && (iVar12 = puVar4[10], iVar12 == 0)) {
      iVar12 = puVar4[9];
    }
    puVar2[local_38 + 9] = iVar12;
    param_2 = puVar2[local_38 + 5] + -1;
  }
  goto joined_r0x0003e772;
LAB_0003eab0:
  puVar5 = (undefined4 *)puVar2[2];
  if (puVar5[10] == 0) {
    local_30 = 1;
    iVar10 = 0;
LAB_0003eacb:
    puVar4 = (undefined4 *)puVar2[iVar10 + 1];
    if (puVar4[10] == 0) {
      local_28 = local_30 + 1;
      puVar11 = puVar2 + local_30;
      puVar9 = (undefined4 *)puVar11[2];
      if (puVar9 == (undefined4 *)0x0) {
        puVar9 = (undefined4 *)puVar11[1];
        iVar12 = param_2 + 1 + puVar2[iVar10 + 5];
      }
      else {
        if (puVar9[10] != 0) {
LAB_0003e836:
          uVar7 = puVar9[5];
          puVar5[10] = puVar2[local_30 + 9];
          puVar4 = (undefined4 *)puVar9[1];
          puVar5[7] = uVar7;
          puVar5[3] = puVar4;
          if (puVar4 != (undefined4 *)0x0) {
            *puVar4 = puVar5;
          }
          puVar2[local_30 + 9] = puVar9[9];
          puVar9[1] = puVar9[2];
          puVar9[5] = puVar9[6];
          if (puVar9[10] == 0) {
            iVar12 = 1;
            iVar10 = 0;
          }
          else {
            puVar9[9] = puVar9[10];
            puVar9[2] = puVar9[3];
            puVar9[6] = puVar9[7];
            if (puVar9[0xb] == 0) {
              iVar12 = 2;
              iVar10 = 1;
            }
            else {
              puVar9[10] = puVar9[0xb];
              iVar12 = 3;
              puVar9[3] = puVar9[4];
              puVar9[7] = puVar9[8];
              iVar10 = 2;
            }
          }
          puVar9[iVar12 + 1] = 0;
          puVar9[iVar12 + 5] = 0;
          puVar9[iVar10 + 9] = 0;
          uVar7 = FUN_0003e010();
          puVar2[local_30 + 5] = uVar7;
          uVar7 = FUN_0003e010();
          puVar2[local_28 + 5] = uVar7;
          puVar5 = extraout_ECX;
          goto joined_r0x0003e772;
        }
        puVar4 = (undefined4 *)*puVar11;
        puVar9 = (undefined4 *)puVar11[1];
        iVar10 = local_30 + -1;
        iVar12 = param_2 + 1 + puVar11[4];
      }
LAB_0003ed0c:
      puVar9[4] = puVar9[2];
      puVar9[8] = puVar9[6];
      puVar9[0xb] = puVar9[9];
      puVar9[3] = puVar9[1];
      puVar9[7] = puVar9[5];
      uVar7 = puVar4[6];
      puVar9[10] = puVar2[iVar10 + 9];
      puVar5 = (undefined4 *)puVar4[2];
      puVar9[6] = uVar7;
      puVar9[2] = puVar5;
      if (puVar5 != (undefined4 *)0x0) {
        *puVar5 = puVar9;
      }
      uVar7 = puVar4[5];
      puVar9[9] = puVar4[9];
      puVar5 = (undefined4 *)puVar4[1];
      puVar9[5] = uVar7;
      puVar9[1] = puVar5;
      if (puVar5 != (undefined4 *)0x0) {
        *puVar5 = puVar9;
      }
      uVar7 = FUN_0003e010();
      puVar2[local_30 + 5] = uVar7;
      FUN_0001a110(extraout_ECX_00);
      iVar6 = puVar2[iVar10 + 2];
      while (iVar6 != 0) {
        iVar8 = iVar10 + 1;
        puVar2[iVar8] = iVar6;
        puVar2[iVar10 + 5] = puVar2[iVar10 + 6];
        if (iVar8 == 3) {
          puVar2[0xb] = 0;
          puVar2[4] = 0;
          puVar2[8] = 0;
          goto LAB_0003edcd;
        }
        puVar2[iVar10 + 9] = puVar2[iVar10 + 10];
        iVar6 = puVar2[iVar10 + 3];
        iVar10 = iVar8;
      }
      puVar2[iVar10 + 1] = 0;
      puVar2[iVar10 + 5] = 0;
      puVar2[iVar10 + 9] = 0;
LAB_0003edcd:
      param_2 = iVar12;
      puVar5 = puVar9;
      if (puVar2[9] == 0) {
        *puVar3 = puVar9;
        *puVar9 = 0;
        FUN_0001a110(puVar2);
      }
      goto joined_r0x0003e772;
    }
LAB_0003eae0:
    uVar1 = (uint)(puVar4[0xb] == 0);
    puVar5[3] = puVar5[2];
    puVar5[7] = puVar5[6];
    puVar5[10] = puVar5[9];
    puVar5[2] = puVar5[1];
    puVar5[6] = puVar5[5];
    puVar5[9] = puVar2[iVar10 + 9];
    puVar11 = (undefined4 *)puVar4[4 - uVar1];
    puVar5[1] = puVar11;
    puVar5[5] = puVar4[8 - uVar1];
    if (puVar11 != (undefined4 *)0x0) {
      *puVar11 = puVar5;
    }
    puVar2[iVar10 + 9] = puVar4[-uVar1 + 0xb];
    puVar4[4 - uVar1] = 0;
    puVar4[8 - uVar1] = 0;
    puVar4[-uVar1 + 0xb] = 0;
    uVar7 = FUN_0003e010();
    puVar2[local_30 + 5] = uVar7;
    iVar12 = puVar2[iVar10 + 5];
    iVar6 = FUN_0003e010();
    puVar2[iVar10 + 5] = iVar6;
    param_2 = (param_2 + iVar12) - iVar6;
  }
  goto joined_r0x0003e772;
}


PUSH EBP
MOV EBP,EDX
PUSH EDI
CALL 0x0002abcc
ADD EDI,0x3059f
PUSH ESI
PUSH EBX
SUB ESP,0x2c
MOV ECX,dword ptr [EAX]
MOV dword ptr [ESP + 0x1c],EAX
MOV dword ptr [ESP + 0x10],EDI
MOV ESI,ECX
MOV dword ptr [ESP + 0x4],0xffffffff
MOV dword ptr [ESP + 0x8],0x0
TEST ESI,ESI
JZ 0x0003e793
MOV EAX,dword ptr [ESI + 0x14]
CMP EAX,EBP
JLE 0x0003e8e0
MOV ECX,dword ptr [ESI + 0x4]
MOV EBX,dword ptr [ECX + 0x28]
TEST EBX,EBX
JZ 0x0003e810
MOV ESI,ECX
TEST ESI,ESI
JNZ 0x0003e774
MOV ECX,dword ptr [ESP + 0x8]
TEST ECX,ECX
JZ 0x0003ea80
CMP dword ptr [ESP + 0x4],-0x1
JZ 0x0003ea9b
MOV EDX,dword ptr [ESI]
MOV EAX,dword ptr [ESI + 0x4]
TEST EDX,EDX
JZ 0x0003e9c0
TEST EAX,EAX
JZ 0x0003ea68
MOV EAX,dword ptr [ESP + 0x4]
LEA EBP,[ESI + EAX*0x4]
MOV EDX,dword ptr [EBP + 0x4]
MOV EDI,dword ptr [EDX + 0x28]
TEST EDI,EDI
JNZ 0x0003e938
MOV ECX,dword ptr [EBP + 0x8]
MOV EAX,dword ptr [ESP + 0x4]
MOV EBX,dword ptr [ECX + 0x28]
LEA EDI,[EAX + 0x1]
MOV EAX,dword ptr [ECX + 0x4]
TEST EBX,EBX
JZ 0x0003eb90
MOV EDX,ECX
JMP 0x0003e7f5
MOV EDX,EAX
MOV EAX,dword ptr [EAX + 0x4]
TEST EAX,EAX
JNZ 0x0003e7f0
MOV EAX,dword ptr [EDX + 0x24]
MOV ESI,ECX
MOV dword ptr [EBP + 0x24],EAX
XOR EBP,EBP
JMP 0x0003e770
MOV EDI,dword ptr [ESI + 0x8]
TEST EDI,EDI
JZ 0x0003ed02
MOV EAX,dword ptr [EDI + 0x28]
MOV dword ptr [ESP + 0xc],0x0
MOV dword ptr [ESP + 0x14],0x1
TEST EAX,EAX
JZ 0x0003ed02
MOV EAX,dword ptr [ESP + 0xc]
MOV EDX,dword ptr [EDI + 0x14]
LEA EBX,[ESI + EAX*0x4]
MOV EAX,dword ptr [EBX + 0x24]
MOV dword ptr [ECX + 0x28],EAX
MOV EAX,dword ptr [EDI + 0x4]
MOV dword ptr [ECX + 0x1c],EDX
MOV dword ptr [ECX + 0xc],EAX
TEST EAX,EAX
JZ 0x0003e855
MOV dword ptr [EAX],ECX
MOV EAX,dword ptr [EDI + 0x24]
MOV dword ptr [EBX + 0x24],EAX
MOV EAX,dword ptr [EDI + 0x8]
MOV dword ptr [EDI + 0x4],EAX
MOV EAX,dword ptr [EDI + 0x18]
MOV dword ptr [EDI + 0x14],EAX
MOV EAX,dword ptr [EDI + 0x28]
TEST EAX,EAX
JZ 0x0003eea1
MOV EDX,dword ptr [EDI + 0xc]
MOV dword ptr [EDI + 0x24],EAX
MOV EAX,dword ptr [EDI + 0x2c]
MOV dword ptr [EDI + 0x8],EDX
MOV EDX,dword ptr [EDI + 0x1c]
MOV dword ptr [EDI + 0x18],EDX
TEST EAX,EAX
JZ 0x0003ee92
MOV EDX,dword ptr [EDI + 0x10]
MOV dword ptr [EDI + 0x28],EAX
MOV EAX,0x3
MOV dword ptr [EDI + 0xc],EDX
MOV EDX,dword ptr [EDI + 0x20]
MOV dword ptr [EDI + 0x1c],EDX
MOV EDX,0x2
LEA EAX,[EDI + EAX*0x4]
MOV dword ptr [EAX + 0x4],0x0
MOV dword ptr [EAX + 0x14],0x0
MOV EAX,ECX
MOV dword ptr [EDI + EDX*0x4 + 0x24],0x0
CALL 0x0003e010
MOV dword ptr [EBX + 0x14],EAX
MOV EAX,EDI
CALL 0x0003e010
MOV EDI,dword ptr [ESP + 0x14]
MOV dword ptr [ESI + EDI*0x4 + 0x14],EAX
MOV ESI,ECX
JMP 0x0003e78f
ADD EAX,0x1
SUB EBP,EAX
JS 0x0003e990
MOV EAX,dword ptr [ESI + 0x18]
CMP EBP,EAX
JL 0x0003eab0
ADD EAX,0x1
SUB EBP,EAX
JS 0x0003ecb8
MOV EAX,dword ptr [ESI + 0x1c]
CMP EBP,EAX
JL 0x0003ece2
ADD EAX,0x1
MOV EDI,EBP
SUB EDI,EAX
MOV EAX,EDI
JS 0x0003ee40
MOV EDI,dword ptr [ESI + 0x10]
MOV EDX,dword ptr [EDI + 0x28]
TEST EDX,EDX
JZ 0x0003ee69
MOV ESI,EDI
MOV EBP,EAX
JMP 0x0003e770
MOV EAX,EDX
MOV EBX,dword ptr [EAX + 0x4]
TEST EBX,EBX
JZ 0x0003e958
LEA ESI,[ESI]
MOV ECX,dword ptr [EAX + 0x10]
TEST ECX,ECX
JZ 0x0003e978
MOV EAX,ECX
MOV EBX,dword ptr [EAX + 0x4]
TEST EBX,EBX
JNZ 0x0003e948
MOV ECX,dword ptr [EAX + 0x2c]
TEST ECX,ECX
JZ 0x0003ec70
MOV dword ptr [EBP + 0x24],ECX
MOV EBP,dword ptr [EBP + 0x14]
MOV ESI,EDX
SUB EBP,0x1
JMP 0x0003e770
MOV ECX,dword ptr [EAX + 0xc]
TEST ECX,ECX
JNZ 0x0003e94f
MOV EAX,dword ptr [EAX + 0x8]
TEST EAX,EAX
CMOVZ EAX,EBX
JMP 0x0003e93a
MOV EDX,dword ptr [ESP + 0x8]
MOV dword ptr [ESP + 0x4],0x0
TEST EDX,EDX
JNZ 0x0003e7aa
MOV EAX,dword ptr [ESI + 0x24]
MOV EDX,dword ptr [ESI]
MOV dword ptr [ESP + 0x8],EAX
MOV EAX,dword ptr [ESI + 0x4]
TEST EDX,EDX
JNZ 0x0003e7b7
LEA ESI,[ESI]
NOP
MOV EDX,dword ptr [ESI + 0x28]
TEST EDX,EDX
JZ 0x0003ec88
TEST EAX,EAX
JNZ 0x0003e7bf
MOV ECX,ESI
CMP dword ptr [ESP + 0x4],0x2
JZ 0x0003ea09
MOV EDI,dword ptr [ESP + 0x4]
MOV EDX,dword ptr [ECX + EDI*0x4 + 0x28]
LEA EBX,[EDI + 0x1]
TEST EDX,EDX
JNZ 0x0003ea00
JMP 0x0003ea11
MOV EDX,dword ptr [ECX + 0x2c]
MOV EBX,0x2
TEST EDX,EDX
JZ 0x0003ee85
MOV dword ptr [ECX + EBX*0x4 + 0x20],EDX
CMP EBX,0x2
JNZ 0x0003e9f0
MOV dword ptr [ESP + 0x4],0x2
MOV EDI,dword ptr [ESP + 0x4]
MOV dword ptr [ECX + EDI*0x4 + 0x24],0x0
TEST EAX,EAX
JNZ 0x0003ea2a
JMP 0x0003ea53
MOV EAX,EDX
XOR EDX,EDX
CMP dword ptr [EAX + 0x4],ECX
JZ 0x0003ea46
MOV EDX,0x1
CMP dword ptr [EAX + 0x8],ECX
JZ 0x0003ea46
XOR EDX,EDX
CMP dword ptr [EAX + 0xc],ECX
SETNZ DL
ADD EDX,0x2
SUB dword ptr [EAX + EDX*0x4 + 0x14],0x1
MOV EDX,dword ptr [EAX]
MOV ECX,EAX
TEST EDX,EDX
JNZ 0x0003ea28
MOV ECX,dword ptr [ESP + 0x8]
ADD ESP,0x2c
POP EBX
POP ESI
MOV EAX,ECX
POP EDI
POP EBP
RET
MOV EBP,dword ptr [ESI + 0x28]
TEST EBP,EBP
JZ 0x0003e7bf
MOV ECX,ESI
MOV EAX,EDX
JMP 0x0003e9d5
MOV EAX,dword ptr [ESP + 0x8]
MOV EDI,dword ptr [ESP + 0x4]
CMP dword ptr [ESP + 0x4],-0x1
MOV EAX,dword ptr [EAX + EDI*0x4 + 0x24]
MOV dword ptr [ESP + 0x8],EAX
JNZ 0x0003e7aa
MOV ECX,ESI
ADD ESP,0x2c
MOV EAX,ECX
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EDI,dword ptr [ESI + 0x8]
MOV EAX,dword ptr [EDI + 0x28]
TEST EAX,EAX
JZ 0x0003eac1
MOV ESI,EDI
JMP 0x0003e770
MOV dword ptr [ESP + 0xc],0x1
XOR EDX,EDX
LEA EAX,[ESI + EDX*0x4]
MOV ECX,dword ptr [EAX + 0x4]
MOV dword ptr [ESP + 0x18],EAX
MOV EBX,dword ptr [ECX + 0x28]
TEST EBX,EBX
JZ 0x0003eec1
CMP dword ptr [ECX + 0x2c],0x1
LEA EDX,[ESI + EDX*0x4]
SBB EAX,EAX
MOV dword ptr [ESP + 0x18],EDX
MOV EBX,EAX
LEA EAX,[EAX*0x4 + 0xc]
ADD EBX,0x2
ADD EAX,ECX
MOV dword ptr [ESP + 0x14],EBX
MOV EBX,dword ptr [EDI + 0x8]
MOV dword ptr [EDI + 0xc],EBX
MOV EBX,dword ptr [EDI + 0x18]
MOV dword ptr [EDI + 0x1c],EBX
MOV EBX,dword ptr [EDI + 0x24]
MOV dword ptr [EDI + 0x28],EBX
MOV EBX,dword ptr [EDI + 0x4]
MOV dword ptr [EDI + 0x8],EBX
MOV EBX,dword ptr [EDI + 0x14]
MOV dword ptr [EDI + 0x18],EBX
MOV EDX,dword ptr [EDX + 0x24]
MOV dword ptr [EDI + 0x24],EDX
MOV EDX,dword ptr [EAX + 0x4]
MOV dword ptr [EDI + 0x4],EDX
MOV EBX,dword ptr [EAX + 0x14]
MOV dword ptr [EDI + 0x14],EBX
TEST EDX,EDX
JZ 0x0003eb35
MOV dword ptr [EDX],EDI
MOV EBX,dword ptr [ESP + 0x14]
LEA EDX,[ECX + EBX*0x4]
MOV EBX,dword ptr [EDX + 0x24]
MOV dword ptr [ESP + 0x14],EDX
MOV EDX,dword ptr [ESP + 0x18]
MOV dword ptr [EDX + 0x24],EBX
MOV dword ptr [EAX + 0x4],0x0
MOV dword ptr [EAX + 0x14],0x0
MOV EAX,dword ptr [ESP + 0x14]
MOV dword ptr [EAX + 0x24],0x0
MOV EAX,EDI
CALL 0x0003e010
MOV EBX,dword ptr [ESP + 0xc]
MOV dword ptr [ESI + EBX*0x4 + 0x14],EAX
MOV EBX,dword ptr [ESP + 0x18]
MOV EAX,ECX
MOV ESI,EDI
ADD EBP,dword ptr [EBX + 0x14]
CALL 0x0003e010
MOV dword ptr [EBX + 0x14],EAX
SUB EBP,EAX
JMP 0x0003e770
MOV EBX,dword ptr [EBP + 0x24]
MOV dword ptr [EDX + 0xc],EAX
MOV dword ptr [EDX + 0x28],EBX
MOV EBX,dword ptr [ECX + 0x14]
MOV dword ptr [EDX + 0x1c],EBX
TEST EAX,EAX
JZ 0x0003eba5
MOV dword ptr [EAX],EDX
MOV EAX,dword ptr [ECX + 0x24]
MOV EBX,dword ptr [ECX + 0x18]
MOV dword ptr [EDX + 0x2c],EAX
MOV EAX,dword ptr [ECX + 0x8]
MOV dword ptr [EDX + 0x20],EBX
MOV dword ptr [EDX + 0x10],EAX
TEST EAX,EAX
JZ 0x0003ebbd
MOV dword ptr [EAX],EDX
MOV dword ptr [ESP + 0xc],EDX
SUB ESP,0xc
PUSH ECX
MOV EBX,dword ptr [ESP + 0x20]
CALL 0x0001a110
MOV EDX,dword ptr [ESP + 0x1c]
MOV EAX,EDX
CALL 0x0003e010
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0xc]
CMP dword ptr [ESP + 0x4],0x2
MOV dword ptr [EBP + 0x14],EAX
JZ 0x0003ec29
MOV EAX,dword ptr [EBP + 0x28]
TEST EAX,EAX
JNZ 0x0003ec10
JMP 0x0003ee60
MOV EAX,dword ptr [ESI + 0x2c]
MOV EDI,0x2
TEST EAX,EAX
JZ 0x0003ecd8
MOV dword ptr [ESI + EDI*0x4 + 0x20],EAX
MOV EAX,dword ptr [ESI + EDI*0x4 + 0x8]
MOV dword ptr [ESI + EDI*0x4 + 0x4],EAX
MOV EAX,dword ptr [ESI + EDI*0x4 + 0x18]
MOV dword ptr [ESI + EDI*0x4 + 0x14],EAX
CMP EDI,0x2
JNZ 0x0003ec00
MOV EDI,0x3
MOV EAX,0x2
MOV dword ptr [ESI + EAX*0x4 + 0x24],0x0
LEA EAX,[ESI + EDI*0x4]
MOV dword ptr [EAX + 0x4],0x0
MOV dword ptr [EAX + 0x14],0x0
MOV ECX,dword ptr [ESI + 0x24]
TEST ECX,ECX
JZ 0x0003ee17
MOV EBP,dword ptr [EDX + 0x18]
ADD EBP,dword ptr [EDX + 0x14]
MOV ESI,EDX
ADD EBP,0x1
JMP 0x0003e770
MOV ECX,dword ptr [EAX + 0x28]
TEST ECX,ECX
JNZ 0x0003e963
MOV ECX,dword ptr [EAX + 0x24]
JMP 0x0003e963
TEST EAX,EAX
JNZ 0x0003e7bf
SUB ESP,0xc
PUSH ESI
MOV EBX,dword ptr [ESP + 0x20]
CALL 0x0001a110
MOV EAX,dword ptr [ESP + 0x2c]
ADD ESP,0x10
MOV ECX,dword ptr [ESP + 0x8]
MOV dword ptr [EAX],0x0
JMP 0x0003ea9d
MOV EAX,dword ptr [ESP + 0x8]
MOV dword ptr [ESP + 0x4],0x1
TEST EAX,EAX
JNZ 0x0003e7aa
MOV EAX,dword ptr [ESI + 0x28]
MOV dword ptr [ESP + 0x8],EAX
JMP 0x0003e7aa
MOV EAX,0x1
JMP 0x0003ec33
MOV EDI,dword ptr [ESI + 0xc]
MOV EAX,dword ptr [EDI + 0x28]
TEST EAX,EAX
JNZ 0x0003eaba
MOV EDX,0x1
MOV dword ptr [ESP + 0xc],0x2
JMP 0x0003eacb
MOV dword ptr [ESP + 0xc],0x1
XOR EDX,EDX
MOV EAX,dword ptr [EDI + 0x8]
MOV dword ptr [EDI + 0x10],EAX
MOV EAX,dword ptr [EDI + 0x18]
MOV dword ptr [EDI + 0x20],EAX
MOV EAX,dword ptr [EDI + 0x24]
MOV dword ptr [EDI + 0x2c],EAX
MOV EAX,dword ptr [EDI + 0x4]
MOV dword ptr [EDI + 0xc],EAX
MOV EAX,dword ptr [EDI + 0x14]
MOV dword ptr [EDI + 0x1c],EAX
MOV EAX,dword ptr [ESI + EDX*0x4 + 0x24]
MOV EBX,dword ptr [ECX + 0x18]
MOV dword ptr [EDI + 0x28],EAX
MOV EAX,dword ptr [ECX + 0x8]
MOV dword ptr [EDI + 0x18],EBX
MOV dword ptr [EDI + 0x8],EAX
TEST EAX,EAX
JZ 0x0003ed43
MOV dword ptr [EAX],EDI
MOV EAX,dword ptr [ECX + 0x24]
MOV EBX,dword ptr [ECX + 0x14]
MOV dword ptr [EDI + 0x24],EAX
MOV EAX,dword ptr [ECX + 0x4]
MOV dword ptr [EDI + 0x14],EBX
MOV dword ptr [EDI + 0x4],EAX
TEST EAX,EAX
JZ 0x0003ed5b
MOV dword ptr [EAX],EDI
MOV EAX,EDI
MOV dword ptr [ESP + 0x14],EDX
CALL 0x0003e010
MOV EBX,dword ptr [ESP + 0xc]
SUB ESP,0xc
MOV dword ptr [ESI + EBX*0x4 + 0x14],EAX
PUSH ECX
MOV EBX,dword ptr [ESP + 0x20]
CALL 0x0001a110
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0x14]
LEA EAX,[EDX + 0x1]
MOV ECX,dword ptr [ESI + EAX*0x4 + 0x4]
TEST ECX,ECX
JZ 0x0003edb5
LEA ESI,[ESI]
MOV EDX,dword ptr [ESI + EAX*0x4 + 0x14]
MOV dword ptr [ESI + EAX*0x4],ECX
MOV dword ptr [ESI + EAX*0x4 + 0x10],EDX
CMP EAX,0x3
JZ 0x0003ee00
MOV EDX,dword ptr [ESI + EAX*0x4 + 0x24]
MOV dword ptr [ESI + EAX*0x4 + 0x20],EDX
MOV EDX,EAX
LEA EAX,[EDX + 0x1]
MOV ECX,dword ptr [ESI + EAX*0x4 + 0x4]
TEST ECX,ECX
JNZ 0x0003ed90
LEA EAX,[ESI + EDX*0x4]
MOV dword ptr [EAX + 0x4],0x0
MOV dword ptr [EAX + 0x14],0x0
MOV dword ptr [EAX + 0x24],0x0
MOV EBX,dword ptr [ESI + 0x24]
TEST EBX,EBX
JNZ 0x0003eaba
MOV EAX,dword ptr [ESP + 0x1c]
SUB ESP,0xc
MOV dword ptr [EAX],EDI
MOV dword ptr [EDI],0x0
PUSH ESI
MOV EBX,dword ptr [ESP + 0x20]
MOV ESI,EDI
CALL 0x0001a110
ADD ESP,0x10
JMP 0x0003e770
MOV dword ptr [ESI + 0x2c],0x0
MOV dword ptr [ESI + 0x10],0x0
MOV dword ptr [ESI + 0x20],0x0
JMP 0x0003edcd
MOV EAX,dword ptr [ESP + 0x1c]
MOV dword ptr [ESP + 0xc],EDX
SUB ESP,0xc
MOV dword ptr [EAX],EDX
MOV dword ptr [EDX],0x0
PUSH ESI
MOV EBX,dword ptr [ESP + 0x20]
CALL 0x0001a110
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0xc]
JMP 0x0003ec57
MOV ECX,dword ptr [ESP + 0x8]
MOV dword ptr [ESP + 0x4],0x2
TEST ECX,ECX
JNZ 0x0003e7aa
MOV EAX,dword ptr [ESI + 0x2c]
MOV dword ptr [ESP + 0x8],EAX
JMP 0x0003e7aa
MOV EAX,dword ptr [ESP + 0x4]
JMP 0x0003ec33
MOV ECX,dword ptr [ESI + 0xc]
MOV EDX,dword ptr [ECX + 0x28]
TEST EDX,EDX
JNZ 0x0003eead
MOV EDX,0x2
MOV dword ptr [ESP + 0xc],0x3
JMP 0x0003ed0c
MOV dword ptr [ESP + 0x4],0x1
JMP 0x0003ea11
MOV EAX,0x2
MOV EDX,0x1
JMP 0x0003e8a5
MOV EAX,0x1
XOR EDX,EDX
JMP 0x0003e8a5
MOV EBP,EAX
MOV dword ptr [ESP + 0xc],0x3
MOV EDX,0x2
JMP 0x0003eae0
MOV EBX,dword ptr [ESP + 0xc]
LEA EAX,[EBX + 0x1]
LEA EBX,[ESI + EBX*0x4]
MOV dword ptr [ESP + 0x14],EAX
MOV EAX,dword ptr [EBX + 0x8]
TEST EAX,EAX
JZ 0x0003ef00
CMP dword ptr [EAX + 0x28],0x0
JZ 0x0003eee8
MOV ECX,EDI
MOV EDI,EAX
JMP 0x0003e836
MOV EAX,dword ptr [ESP + 0xc]
MOV ECX,dword ptr [EBX]
MOV EDI,dword ptr [EBX + 0x4]
LEA EDX,[EAX + -0x1]
MOV EAX,dword ptr [EBX + 0x10]
LEA EBP,[EBP + EAX*0x1 + 0x1]
JMP 0x0003ed0c
MOV EAX,dword ptr [ESP + 0x18]
MOV EDI,dword ptr [EBX + 0x4]
MOV EAX,dword ptr [EAX + 0x14]
LEA EBP,[EBP + EAX*0x1 + 0x1]
JMP 0x0003ed0c
(translation_unit "int __regparm3 FUN_0003e740(undefined4 param_1,int param_2)\n\n{\n  uint uVar1;\n  undefined4 *puVar2;\n  undefined4 *puVar3;\n  undefined4 *puVar4;\n  undefined4 *puVar5;\n  int iVar6;\n  undefined4 uVar7;\n  int iVar8;\n  undefined4 *extraout_ECX;\n  undefined4 extraout_ECX_00;\n  undefined4 *puVar9;\n  int iVar10;\n  undefined4 *puVar11;\n  int iVar12;\n  int local_38;\n  int local_34;\n  int local_30;\n  int local_28;\n  \n  puVar3 = (undefined4 *)FUN_0002abcc();\n  local_38 = -1;\n  local_34 = 0;\n  puVar5 = (undefined4 *)*puVar3;\njoined_r0x0003e772:\n  while( true ) {\n    puVar2 = puVar5;\n    iVar12 = param_2;\n    if (puVar2 == (undefined4 *)0x0) {\n      if (local_34 == 0) {\n        local_34 = *(int *)(local_38 * 4 + 0x24);\n      }\n      if (local_38 == -1) {\n        return 0;\n      }\n      goto LAB_0003e7aa;\n    }\n    if ((int)puVar2[5] <= iVar12) break;\n    puVar4 = (undefined4 *)puVar2[1];\n    param_2 = iVar12;\n    puVar5 = puVar4;\n    if (puVar4[10] == 0) {\n      puVar9 = (undefined4 *)puVar2[2];\n      if (puVar9 != (undefined4 *)0x0) {\n        local_30 = 0;\n        local_28 = 1;\n        if (puVar9[10] == 0) goto LAB_0003ed02;\n        goto LAB_0003e836;\n      }\nLAB_0003ed02:\n      local_30 = 1;\n      iVar10 = 0;\n      goto LAB_0003ed0c;\n    }\n  }\n  param_2 = iVar12 - (puVar2[5] + 1);\n  if (-1 < param_2) {\n    if (param_2 < (int)puVar2[6]) goto LAB_0003eab0;\n    iVar12 = param_2 - (puVar2[6] + 1);\n    if (iVar12 < 0) {\n      local_38 = 1;\n      if (local_34 == 0) {\n        local_34 = puVar2[10];\n      }\nLAB_0003e7aa:\n      puVar5 = (undefined4 *)*puVar2;\n      iVar12 = puVar2[1];\n      goto joined_r0x0003e7b1;\n    }\n    if (iVar12 < (int)puVar2[7]) {\n      puVar5 = (undefined4 *)puVar2[3];\n      param_2 = iVar12;\n      if (puVar5[10] == 0) {\n        iVar10 = 1;\n        local_30 = 2;\n        goto LAB_0003eacb;\n      }\n    }\n    else {\n      param_2 = iVar12 - (puVar2[7] + 1);\n      if (param_2 < 0) {\n        local_38 = 2;\n        if (local_34 == 0) {\n          local_34 = puVar2[0xb];\n        }\n        goto LAB_0003e7aa;\n      }\n      puVar9 = (undefined4 *)puVar2[4];\n      puVar5 = puVar9;\n      if (puVar9[10] == 0) {\n        puVar4 = (undefined4 *)puVar2[3];\n        if (puVar4[10] == 0) {\n          iVar10 = 2;\n          local_30 = 3;\n          goto LAB_0003ed0c;\n        }\n        local_30 = 3;\n        iVar10 = 2;\n        goto LAB_0003eae0;\n      }\n    }\n    goto joined_r0x0003e772;\n  }\n  local_38 = 0;\n  if (local_34 != 0) goto LAB_0003e7aa;\n  local_34 = puVar2[9];\n  puVar5 = (undefined4 *)*puVar2;\n  iVar12 = puVar2[1];\njoined_r0x0003e7b1:\n  if (puVar5 == (undefined4 *)0x0) {\n    if (puVar2[10] == 0) {\n      if (iVar12 == 0) {\n        FUN_0001a110(puVar2);\n        *puVar3 = 0;\n        return local_34;\n      }\n    }\n    else if (iVar12 == 0) {\n      puVar5 = (undefined4 *)0x0;\nLAB_0003e9d5:\n      if (local_38 == 2) {\nLAB_0003ea09:\n        local_38 = 2;\n      }\n      else {\n        iVar10 = puVar2[local_38 + 10];\n        iVar12 = local_38 + 1;\n        if (iVar10 != 0) {\n          do {\n            puVar2[iVar12 + 8] = iVar10;\n            if (iVar12 == 2) goto LAB_0003ea09;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);\n          local_38 = 1;\n        }\n      }\n      puVar2[local_38 + 9] = 0;\n      while (puVar3 = puVar5, puVar3 != (undefined4 *)0x0) {\n        iVar12 = 0;\n        if (((undefined4 *)puVar3[1] != puVar2) && (iVar12 = 1, (undefined4 *)puVar3[2] != puVar2))\n        {\n          iVar12 = ((undefined4 *)puVar3[3] != puVar2) + 2;\n        }\n        puVar3[iVar12 + 5] = puVar3[iVar12 + 5] + -1;\n        puVar2 = puVar3;\n        puVar5 = (undefined4 *)*puVar3;\n      }\n      return local_34;\n    }\n  }\n  else if ((iVar12 == 0) && (puVar2[10] != 0)) goto LAB_0003e9d5;\n  puVar5 = (undefined4 *)puVar2[local_38 + 1];\n  puVar4 = puVar5;\n  if (puVar5[10] == 0) {\n    puVar4 = (undefined4 *)puVar2[local_38 + 2];\n    iVar12 = local_38 + 1;\n    puVar11 = (undefined4 *)puVar4[1];\n    puVar9 = puVar4;\n    if (puVar4[10] == 0) {\n      uVar7 = puVar2[local_38 + 9];\n      puVar5[3] = puVar11;\n      puVar5[10] = uVar7;\n      puVar5[7] = puVar4[5];\n      if (puVar11 != (undefined4 *)0x0) {\n        *puVar11 = puVar5;\n      }\n      uVar7 = puVar4[6];\n      puVar5[0xb] = puVar4[9];\n      puVar11 = (undefined4 *)puVar4[2];\n      puVar5[8] = uVar7;\n      puVar5[4] = puVar11;\n      if (puVar11 != (undefined4 *)0x0) {\n        *puVar11 = puVar5;\n      }\n      FUN_0001a110(puVar4);\n      uVar7 = FUN_0003e010();\n      puVar2[local_38 + 5] = uVar7;\n      if (local_38 == 2) {\nLAB_0003ec29:\n        iVar12 = 3;\n        iVar6 = 2;\n      }\n      else {\n        iVar10 = puVar2[local_38 + 10];\n        iVar6 = local_38;\n        if (iVar10 != 0) {\n          do {\n            puVar2[iVar12 + 8] = iVar10;\n            puVar2[iVar12 + 1] = puVar2[iVar12 + 2];\n            puVar2[iVar12 + 5] = puVar2[iVar12 + 6];\n            if (iVar12 == 2) goto LAB_0003ec29;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);\n          iVar6 = 1;\n        }\n      }\n      puVar2[iVar6 + 9] = 0;\n      puVar2[iVar12 + 1] = 0;\n      puVar2[iVar12 + 5] = 0;\n      if (puVar2[9] == 0) {\n        *puVar3 = puVar5;\n        *puVar5 = 0;\n        FUN_0001a110(puVar2);\n      }\n      param_2 = puVar5[6] + puVar5[5] + 1;\n    }\n    else {\n      while (puVar5 = puVar11, puVar5 != (undefined4 *)0x0) {\n        puVar9 = puVar5;\n        puVar11 = (undefined4 *)puVar5[1];\n      }\n      puVar2[local_38 + 9] = puVar9[9];\n      param_2 = 0;\n      puVar5 = puVar4;\n    }\n  }\n  else {\n    while (puVar11 = (undefined4 *)puVar4[1], puVar11 != (undefined4 *)0x0) {\n      while ((puVar9 = (undefined4 *)puVar4[4], (undefined4 *)puVar4[4] != (undefined4 *)0x0 ||\n             (puVar9 = (undefined4 *)puVar4[3], (undefined4 *)puVar4[3] != (undefined4 *)0x0))) {\n        puVar4 = puVar9;\n        puVar11 = (undefined4 *)puVar4[1];\n        if (puVar11 == (undefined4 *)0x0) goto LAB_0003e958;\n      }\n      puVar9 = puVar4 + 2;\n      puVar4 = (undefined4 *)*puVar9;\n      if ((undefined4 *)*puVar9 == (undefined4 *)0x0) {\n        puVar4 = puVar11;\n      }\n    }\nLAB_0003e958:\n    iVar12 = puVar4[0xb];\n    if ((iVar12 == 0) && (iVar12 = puVar4[10], iVar12 == 0)) {\n      iVar12 = puVar4[9];\n    }\n    puVar2[local_38 + 9] = iVar12;\n    param_2 = puVar2[local_38 + 5] + -1;\n  }\n  goto joined_r0x0003e772;\nLAB_0003eab0:\n  puVar5 = (undefined4 *)puVar2[2];\n  if (puVar5[10] == 0) {\n    local_30 = 1;\n    iVar10 = 0;\nLAB_0003eacb:\n    puVar4 = (undefined4 *)puVar2[iVar10 + 1];\n    if (puVar4[10] == 0) {\n      local_28 = local_30 + 1;\n      puVar11 = puVar2 + local_30;\n      puVar9 = (undefined4 *)puVar11[2];\n      if (puVar9 == (undefined4 *)0x0) {\n        puVar9 = (undefined4 *)puVar11[1];\n        iVar12 = param_2 + 1 + puVar2[iVar10 + 5];\n      }\n      else {\n        if (puVar9[10] != 0) {\nLAB_0003e836:\n          uVar7 = puVar9[5];\n          puVar5[10] = puVar2[local_30 + 9];\n          puVar4 = (undefined4 *)puVar9[1];\n          puVar5[7] = uVar7;\n          puVar5[3] = puVar4;\n          if (puVar4 != (undefined4 *)0x0) {\n            *puVar4 = puVar5;\n          }\n          puVar2[local_30 + 9] = puVar9[9];\n          puVar9[1] = puVar9[2];\n          puVar9[5] = puVar9[6];\n          if (puVar9[10] == 0) {\n            iVar12 = 1;\n            iVar10 = 0;\n          }\n          else {\n            puVar9[9] = puVar9[10];\n            puVar9[2] = puVar9[3];\n            puVar9[6] = puVar9[7];\n            if (puVar9[0xb] == 0) {\n              iVar12 = 2;\n              iVar10 = 1;\n            }\n            else {\n              puVar9[10] = puVar9[0xb];\n              iVar12 = 3;\n              puVar9[3] = puVar9[4];\n              puVar9[7] = puVar9[8];\n              iVar10 = 2;\n            }\n          }\n          puVar9[iVar12 + 1] = 0;\n          puVar9[iVar12 + 5] = 0;\n          puVar9[iVar10 + 9] = 0;\n          uVar7 = FUN_0003e010();\n          puVar2[local_30 + 5] = uVar7;\n          uVar7 = FUN_0003e010();\n          puVar2[local_28 + 5] = uVar7;\n          puVar5 = extraout_ECX;\n          goto joined_r0x0003e772;\n        }\n        puVar4 = (undefined4 *)*puVar11;\n        puVar9 = (undefined4 *)puVar11[1];\n        iVar10 = local_30 + -1;\n        iVar12 = param_2 + 1 + puVar11[4];\n      }\nLAB_0003ed0c:\n      puVar9[4] = puVar9[2];\n      puVar9[8] = puVar9[6];\n      puVar9[0xb] = puVar9[9];\n      puVar9[3] = puVar9[1];\n      puVar9[7] = puVar9[5];\n      uVar7 = puVar4[6];\n      puVar9[10] = puVar2[iVar10 + 9];\n      puVar5 = (undefined4 *)puVar4[2];\n      puVar9[6] = uVar7;\n      puVar9[2] = puVar5;\n      if (puVar5 != (undefined4 *)0x0) {\n        *puVar5 = puVar9;\n      }\n      uVar7 = puVar4[5];\n      puVar9[9] = puVar4[9];\n      puVar5 = (undefined4 *)puVar4[1];\n      puVar9[5] = uVar7;\n      puVar9[1] = puVar5;\n      if (puVar5 != (undefined4 *)0x0) {\n        *puVar5 = puVar9;\n      }\n      uVar7 = FUN_0003e010();\n      puVar2[local_30 + 5] = uVar7;\n      FUN_0001a110(extraout_ECX_00);\n      iVar6 = puVar2[iVar10 + 2];\n      while (iVar6 != 0) {\n        iVar8 = iVar10 + 1;\n        puVar2[iVar8] = iVar6;\n        puVar2[iVar10 + 5] = puVar2[iVar10 + 6];\n        if (iVar8 == 3) {\n          puVar2[0xb] = 0;\n          puVar2[4] = 0;\n          puVar2[8] = 0;\n          goto LAB_0003edcd;\n        }\n        puVar2[iVar10 + 9] = puVar2[iVar10 + 10];\n        iVar6 = puVar2[iVar10 + 3];\n        iVar10 = iVar8;\n      }\n      puVar2[iVar10 + 1] = 0;\n      puVar2[iVar10 + 5] = 0;\n      puVar2[iVar10 + 9] = 0;\nLAB_0003edcd:\n      param_2 = iVar12;\n      puVar5 = puVar9;\n      if (puVar2[9] == 0) {\n        *puVar3 = puVar9;\n        *puVar9 = 0;\n        FUN_0001a110(puVar2);\n      }\n      goto joined_r0x0003e772;\n    }\nLAB_0003eae0:\n    uVar1 = (uint)(puVar4[0xb] == 0);\n    puVar5[3] = puVar5[2];\n    puVar5[7] = puVar5[6];\n    puVar5[10] = puVar5[9];\n    puVar5[2] = puVar5[1];\n    puVar5[6] = puVar5[5];\n    puVar5[9] = puVar2[iVar10 + 9];\n    puVar11 = (undefined4 *)puVar4[4 - uVar1];\n    puVar5[1] = puVar11;\n    puVar5[5] = puVar4[8 - uVar1];\n    if (puVar11 != (undefined4 *)0x0) {\n      *puVar11 = puVar5;\n    }\n    puVar2[iVar10 + 9] = puVar4[-uVar1 + 0xb];\n    puVar4[4 - uVar1] = 0;\n    puVar4[8 - uVar1] = 0;\n    puVar4[-uVar1 + 0xb] = 0;\n    uVar7 = FUN_0003e010();\n    puVar2[local_30 + 5] = uVar7;\n    iVar12 = puVar2[iVar10 + 5];\n    iVar6 = FUN_0003e010();\n    puVar2[iVar10 + 5] = iVar6;\n    param_2 = (param_2 + iVar12) - iVar6;\n  }\n  goto joined_r0x0003e772;\n}\n\n" (function_definition "int __regparm3 FUN_0003e740(undefined4 param_1,int param_2)\n\n{\n  uint uVar1;\n  undefined4 *puVar2;\n  undefined4 *puVar3;\n  undefined4 *puVar4;\n  undefined4 *puVar5;\n  int iVar6;\n  undefined4 uVar7;\n  int iVar8;\n  undefined4 *extraout_ECX;\n  undefined4 extraout_ECX_00;\n  undefined4 *puVar9;\n  int iVar10;\n  undefined4 *puVar11;\n  int iVar12;\n  int local_38;\n  int local_34;\n  int local_30;\n  int local_28;\n  \n  puVar3 = (undefined4 *)FUN_0002abcc();\n  local_38 = -1;\n  local_34 = 0;\n  puVar5 = (undefined4 *)*puVar3;\njoined_r0x0003e772:\n  while( true ) {\n    puVar2 = puVar5;\n    iVar12 = param_2;\n    if (puVar2 == (undefined4 *)0x0) {\n      if (local_34 == 0) {\n        local_34 = *(int *)(local_38 * 4 + 0x24);\n      }\n      if (local_38 == -1) {\n        return 0;\n      }\n      goto LAB_0003e7aa;\n    }\n    if ((int)puVar2[5] <= iVar12) break;\n    puVar4 = (undefined4 *)puVar2[1];\n    param_2 = iVar12;\n    puVar5 = puVar4;\n    if (puVar4[10] == 0) {\n      puVar9 = (undefined4 *)puVar2[2];\n      if (puVar9 != (undefined4 *)0x0) {\n        local_30 = 0;\n        local_28 = 1;\n        if (puVar9[10] == 0) goto LAB_0003ed02;\n        goto LAB_0003e836;\n      }\nLAB_0003ed02:\n      local_30 = 1;\n      iVar10 = 0;\n      goto LAB_0003ed0c;\n    }\n  }\n  param_2 = iVar12 - (puVar2[5] + 1);\n  if (-1 < param_2) {\n    if (param_2 < (int)puVar2[6]) goto LAB_0003eab0;\n    iVar12 = param_2 - (puVar2[6] + 1);\n    if (iVar12 < 0) {\n      local_38 = 1;\n      if (local_34 == 0) {\n        local_34 = puVar2[10];\n      }\nLAB_0003e7aa:\n      puVar5 = (undefined4 *)*puVar2;\n      iVar12 = puVar2[1];\n      goto joined_r0x0003e7b1;\n    }\n    if (iVar12 < (int)puVar2[7]) {\n      puVar5 = (undefined4 *)puVar2[3];\n      param_2 = iVar12;\n      if (puVar5[10] == 0) {\n        iVar10 = 1;\n        local_30 = 2;\n        goto LAB_0003eacb;\n      }\n    }\n    else {\n      param_2 = iVar12 - (puVar2[7] + 1);\n      if (param_2 < 0) {\n        local_38 = 2;\n        if (local_34 == 0) {\n          local_34 = puVar2[0xb];\n        }\n        goto LAB_0003e7aa;\n      }\n      puVar9 = (undefined4 *)puVar2[4];\n      puVar5 = puVar9;\n      if (puVar9[10] == 0) {\n        puVar4 = (undefined4 *)puVar2[3];\n        if (puVar4[10] == 0) {\n          iVar10 = 2;\n          local_30 = 3;\n          goto LAB_0003ed0c;\n        }\n        local_30 = 3;\n        iVar10 = 2;\n        goto LAB_0003eae0;\n      }\n    }\n    goto joined_r0x0003e772;\n  }\n  local_38 = 0;\n  if (local_34 != 0) goto LAB_0003e7aa;\n  local_34 = puVar2[9];\n  puVar5 = (undefined4 *)*puVar2;\n  iVar12 = puVar2[1];\njoined_r0x0003e7b1:\n  if (puVar5 == (undefined4 *)0x0) {\n    if (puVar2[10] == 0) {\n      if (iVar12 == 0) {\n        FUN_0001a110(puVar2);\n        *puVar3 = 0;\n        return local_34;\n      }\n    }\n    else if (iVar12 == 0) {\n      puVar5 = (undefined4 *)0x0;\nLAB_0003e9d5:\n      if (local_38 == 2) {\nLAB_0003ea09:\n        local_38 = 2;\n      }\n      else {\n        iVar10 = puVar2[local_38 + 10];\n        iVar12 = local_38 + 1;\n        if (iVar10 != 0) {\n          do {\n            puVar2[iVar12 + 8] = iVar10;\n            if (iVar12 == 2) goto LAB_0003ea09;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);\n          local_38 = 1;\n        }\n      }\n      puVar2[local_38 + 9] = 0;\n      while (puVar3 = puVar5, puVar3 != (undefined4 *)0x0) {\n        iVar12 = 0;\n        if (((undefined4 *)puVar3[1] != puVar2) && (iVar12 = 1, (undefined4 *)puVar3[2] != puVar2))\n        {\n          iVar12 = ((undefined4 *)puVar3[3] != puVar2) + 2;\n        }\n        puVar3[iVar12 + 5] = puVar3[iVar12 + 5] + -1;\n        puVar2 = puVar3;\n        puVar5 = (undefined4 *)*puVar3;\n      }\n      return local_34;\n    }\n  }\n  else if ((iVar12 == 0) && (puVar2[10] != 0)) goto LAB_0003e9d5;\n  puVar5 = (undefined4 *)puVar2[local_38 + 1];\n  puVar4 = puVar5;\n  if (puVar5[10] == 0) {\n    puVar4 = (undefined4 *)puVar2[local_38 + 2];\n    iVar12 = local_38 + 1;\n    puVar11 = (undefined4 *)puVar4[1];\n    puVar9 = puVar4;\n    if (puVar4[10] == 0) {\n      uVar7 = puVar2[local_38 + 9];\n      puVar5[3] = puVar11;\n      puVar5[10] = uVar7;\n      puVar5[7] = puVar4[5];\n      if (puVar11 != (undefined4 *)0x0) {\n        *puVar11 = puVar5;\n      }\n      uVar7 = puVar4[6];\n      puVar5[0xb] = puVar4[9];\n      puVar11 = (undefined4 *)puVar4[2];\n      puVar5[8] = uVar7;\n      puVar5[4] = puVar11;\n      if (puVar11 != (undefined4 *)0x0) {\n        *puVar11 = puVar5;\n      }\n      FUN_0001a110(puVar4);\n      uVar7 = FUN_0003e010();\n      puVar2[local_38 + 5] = uVar7;\n      if (local_38 == 2) {\nLAB_0003ec29:\n        iVar12 = 3;\n        iVar6 = 2;\n      }\n      else {\n        iVar10 = puVar2[local_38 + 10];\n        iVar6 = local_38;\n        if (iVar10 != 0) {\n          do {\n            puVar2[iVar12 + 8] = iVar10;\n            puVar2[iVar12 + 1] = puVar2[iVar12 + 2];\n            puVar2[iVar12 + 5] = puVar2[iVar12 + 6];\n            if (iVar12 == 2) goto LAB_0003ec29;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);\n          iVar6 = 1;\n        }\n      }\n      puVar2[iVar6 + 9] = 0;\n      puVar2[iVar12 + 1] = 0;\n      puVar2[iVar12 + 5] = 0;\n      if (puVar2[9] == 0) {\n        *puVar3 = puVar5;\n        *puVar5 = 0;\n        FUN_0001a110(puVar2);\n      }\n      param_2 = puVar5[6] + puVar5[5] + 1;\n    }\n    else {\n      while (puVar5 = puVar11, puVar5 != (undefined4 *)0x0) {\n        puVar9 = puVar5;\n        puVar11 = (undefined4 *)puVar5[1];\n      }\n      puVar2[local_38 + 9] = puVar9[9];\n      param_2 = 0;\n      puVar5 = puVar4;\n    }\n  }\n  else {\n    while (puVar11 = (undefined4 *)puVar4[1], puVar11 != (undefined4 *)0x0) {\n      while ((puVar9 = (undefined4 *)puVar4[4], (undefined4 *)puVar4[4] != (undefined4 *)0x0 ||\n             (puVar9 = (undefined4 *)puVar4[3], (undefined4 *)puVar4[3] != (undefined4 *)0x0))) {\n        puVar4 = puVar9;\n        puVar11 = (undefined4 *)puVar4[1];\n        if (puVar11 == (undefined4 *)0x0) goto LAB_0003e958;\n      }\n      puVar9 = puVar4 + 2;\n      puVar4 = (undefined4 *)*puVar9;\n      if ((undefined4 *)*puVar9 == (undefined4 *)0x0) {\n        puVar4 = puVar11;\n      }\n    }\nLAB_0003e958:\n    iVar12 = puVar4[0xb];\n    if ((iVar12 == 0) && (iVar12 = puVar4[10], iVar12 == 0)) {\n      iVar12 = puVar4[9];\n    }\n    puVar2[local_38 + 9] = iVar12;\n    param_2 = puVar2[local_38 + 5] + -1;\n  }\n  goto joined_r0x0003e772;\nLAB_0003eab0:\n  puVar5 = (undefined4 *)puVar2[2];\n  if (puVar5[10] == 0) {\n    local_30 = 1;\n    iVar10 = 0;\nLAB_0003eacb:\n    puVar4 = (undefined4 *)puVar2[iVar10 + 1];\n    if (puVar4[10] == 0) {\n      local_28 = local_30 + 1;\n      puVar11 = puVar2 + local_30;\n      puVar9 = (undefined4 *)puVar11[2];\n      if (puVar9 == (undefined4 *)0x0) {\n        puVar9 = (undefined4 *)puVar11[1];\n        iVar12 = param_2 + 1 + puVar2[iVar10 + 5];\n      }\n      else {\n        if (puVar9[10] != 0) {\nLAB_0003e836:\n          uVar7 = puVar9[5];\n          puVar5[10] = puVar2[local_30 + 9];\n          puVar4 = (undefined4 *)puVar9[1];\n          puVar5[7] = uVar7;\n          puVar5[3] = puVar4;\n          if (puVar4 != (undefined4 *)0x0) {\n            *puVar4 = puVar5;\n          }\n          puVar2[local_30 + 9] = puVar9[9];\n          puVar9[1] = puVar9[2];\n          puVar9[5] = puVar9[6];\n          if (puVar9[10] == 0) {\n            iVar12 = 1;\n            iVar10 = 0;\n          }\n          else {\n            puVar9[9] = puVar9[10];\n            puVar9[2] = puVar9[3];\n            puVar9[6] = puVar9[7];\n            if (puVar9[0xb] == 0) {\n              iVar12 = 2;\n              iVar10 = 1;\n            }\n            else {\n              puVar9[10] = puVar9[0xb];\n              iVar12 = 3;\n              puVar9[3] = puVar9[4];\n              puVar9[7] = puVar9[8];\n              iVar10 = 2;\n            }\n          }\n          puVar9[iVar12 + 1] = 0;\n          puVar9[iVar12 + 5] = 0;\n          puVar9[iVar10 + 9] = 0;\n          uVar7 = FUN_0003e010();\n          puVar2[local_30 + 5] = uVar7;\n          uVar7 = FUN_0003e010();\n          puVar2[local_28 + 5] = uVar7;\n          puVar5 = extraout_ECX;\n          goto joined_r0x0003e772;\n        }\n        puVar4 = (undefined4 *)*puVar11;\n        puVar9 = (undefined4 *)puVar11[1];\n        iVar10 = local_30 + -1;\n        iVar12 = param_2 + 1 + puVar11[4];\n      }\nLAB_0003ed0c:\n      puVar9[4] = puVar9[2];\n      puVar9[8] = puVar9[6];\n      puVar9[0xb] = puVar9[9];\n      puVar9[3] = puVar9[1];\n      puVar9[7] = puVar9[5];\n      uVar7 = puVar4[6];\n      puVar9[10] = puVar2[iVar10 + 9];\n      puVar5 = (undefined4 *)puVar4[2];\n      puVar9[6] = uVar7;\n      puVar9[2] = puVar5;\n      if (puVar5 != (undefined4 *)0x0) {\n        *puVar5 = puVar9;\n      }\n      uVar7 = puVar4[5];\n      puVar9[9] = puVar4[9];\n      puVar5 = (undefined4 *)puVar4[1];\n      puVar9[5] = uVar7;\n      puVar9[1] = puVar5;\n      if (puVar5 != (undefined4 *)0x0) {\n        *puVar5 = puVar9;\n      }\n      uVar7 = FUN_0003e010();\n      puVar2[local_30 + 5] = uVar7;\n      FUN_0001a110(extraout_ECX_00);\n      iVar6 = puVar2[iVar10 + 2];\n      while (iVar6 != 0) {\n        iVar8 = iVar10 + 1;\n        puVar2[iVar8] = iVar6;\n        puVar2[iVar10 + 5] = puVar2[iVar10 + 6];\n        if (iVar8 == 3) {\n          puVar2[0xb] = 0;\n          puVar2[4] = 0;\n          puVar2[8] = 0;\n          goto LAB_0003edcd;\n        }\n        puVar2[iVar10 + 9] = puVar2[iVar10 + 10];\n        iVar6 = puVar2[iVar10 + 3];\n        iVar10 = iVar8;\n      }\n      puVar2[iVar10 + 1] = 0;\n      puVar2[iVar10 + 5] = 0;\n      puVar2[iVar10 + 9] = 0;\nLAB_0003edcd:\n      param_2 = iVar12;\n      puVar5 = puVar9;\n      if (puVar2[9] == 0) {\n        *puVar3 = puVar9;\n        *puVar9 = 0;\n        FUN_0001a110(puVar2);\n      }\n      goto joined_r0x0003e772;\n    }\nLAB_0003eae0:\n    uVar1 = (uint)(puVar4[0xb] == 0);\n    puVar5[3] = puVar5[2];\n    puVar5[7] = puVar5[6];\n    puVar5[10] = puVar5[9];\n    puVar5[2] = puVar5[1];\n    puVar5[6] = puVar5[5];\n    puVar5[9] = puVar2[iVar10 + 9];\n    puVar11 = (undefined4 *)puVar4[4 - uVar1];\n    puVar5[1] = puVar11;\n    puVar5[5] = puVar4[8 - uVar1];\n    if (puVar11 != (undefined4 *)0x0) {\n      *puVar11 = puVar5;\n    }\n    puVar2[iVar10 + 9] = puVar4[-uVar1 + 0xb];\n    puVar4[4 - uVar1] = 0;\n    puVar4[8 - uVar1] = 0;\n    puVar4[-uVar1 + 0xb] = 0;\n    uVar7 = FUN_0003e010();\n    puVar2[local_30 + 5] = uVar7;\n    iVar12 = puVar2[iVar10 + 5];\n    iVar6 = FUN_0003e010();\n    puVar2[iVar10 + 5] = iVar6;\n    param_2 = (param_2 + iVar12) - iVar6;\n  }\n  goto joined_r0x0003e772;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_0003e740(undefined4 param_1,int param_2)" identifier (parameter_list "(undefined4 param_1,int param_2)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "int param_2" primitive_type identifier) ))) (compound_statement "{\n  uint uVar1;\n  undefined4 *puVar2;\n  undefined4 *puVar3;\n  undefined4 *puVar4;\n  undefined4 *puVar5;\n  int iVar6;\n  undefined4 uVar7;\n  int iVar8;\n  undefined4 *extraout_ECX;\n  undefined4 extraout_ECX_00;\n  undefined4 *puVar9;\n  int iVar10;\n  undefined4 *puVar11;\n  int iVar12;\n  int local_38;\n  int local_34;\n  int local_30;\n  int local_28;\n  \n  puVar3 = (undefined4 *)FUN_0002abcc();\n  local_38 = -1;\n  local_34 = 0;\n  puVar5 = (undefined4 *)*puVar3;\njoined_r0x0003e772:\n  while( true ) {\n    puVar2 = puVar5;\n    iVar12 = param_2;\n    if (puVar2 == (undefined4 *)0x0) {\n      if (local_34 == 0) {\n        local_34 = *(int *)(local_38 * 4 + 0x24);\n      }\n      if (local_38 == -1) {\n        return 0;\n      }\n      goto LAB_0003e7aa;\n    }\n    if ((int)puVar2[5] <= iVar12) break;\n    puVar4 = (undefined4 *)puVar2[1];\n    param_2 = iVar12;\n    puVar5 = puVar4;\n    if (puVar4[10] == 0) {\n      puVar9 = (undefined4 *)puVar2[2];\n      if (puVar9 != (undefined4 *)0x0) {\n        local_30 = 0;\n        local_28 = 1;\n        if (puVar9[10] == 0) goto LAB_0003ed02;\n        goto LAB_0003e836;\n      }\nLAB_0003ed02:\n      local_30 = 1;\n      iVar10 = 0;\n      goto LAB_0003ed0c;\n    }\n  }\n  param_2 = iVar12 - (puVar2[5] + 1);\n  if (-1 < param_2) {\n    if (param_2 < (int)puVar2[6]) goto LAB_0003eab0;\n    iVar12 = param_2 - (puVar2[6] + 1);\n    if (iVar12 < 0) {\n      local_38 = 1;\n      if (local_34 == 0) {\n        local_34 = puVar2[10];\n      }\nLAB_0003e7aa:\n      puVar5 = (undefined4 *)*puVar2;\n      iVar12 = puVar2[1];\n      goto joined_r0x0003e7b1;\n    }\n    if (iVar12 < (int)puVar2[7]) {\n      puVar5 = (undefined4 *)puVar2[3];\n      param_2 = iVar12;\n      if (puVar5[10] == 0) {\n        iVar10 = 1;\n        local_30 = 2;\n        goto LAB_0003eacb;\n      }\n    }\n    else {\n      param_2 = iVar12 - (puVar2[7] + 1);\n      if (param_2 < 0) {\n        local_38 = 2;\n        if (local_34 == 0) {\n          local_34 = puVar2[0xb];\n        }\n        goto LAB_0003e7aa;\n      }\n      puVar9 = (undefined4 *)puVar2[4];\n      puVar5 = puVar9;\n      if (puVar9[10] == 0) {\n        puVar4 = (undefined4 *)puVar2[3];\n        if (puVar4[10] == 0) {\n          iVar10 = 2;\n          local_30 = 3;\n          goto LAB_0003ed0c;\n        }\n        local_30 = 3;\n        iVar10 = 2;\n        goto LAB_0003eae0;\n      }\n    }\n    goto joined_r0x0003e772;\n  }\n  local_38 = 0;\n  if (local_34 != 0) goto LAB_0003e7aa;\n  local_34 = puVar2[9];\n  puVar5 = (undefined4 *)*puVar2;\n  iVar12 = puVar2[1];\njoined_r0x0003e7b1:\n  if (puVar5 == (undefined4 *)0x0) {\n    if (puVar2[10] == 0) {\n      if (iVar12 == 0) {\n        FUN_0001a110(puVar2);\n        *puVar3 = 0;\n        return local_34;\n      }\n    }\n    else if (iVar12 == 0) {\n      puVar5 = (undefined4 *)0x0;\nLAB_0003e9d5:\n      if (local_38 == 2) {\nLAB_0003ea09:\n        local_38 = 2;\n      }\n      else {\n        iVar10 = puVar2[local_38 + 10];\n        iVar12 = local_38 + 1;\n        if (iVar10 != 0) {\n          do {\n            puVar2[iVar12 + 8] = iVar10;\n            if (iVar12 == 2) goto LAB_0003ea09;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);\n          local_38 = 1;\n        }\n      }\n      puVar2[local_38 + 9] = 0;\n      while (puVar3 = puVar5, puVar3 != (undefined4 *)0x0) {\n        iVar12 = 0;\n        if (((undefined4 *)puVar3[1] != puVar2) && (iVar12 = 1, (undefined4 *)puVar3[2] != puVar2))\n        {\n          iVar12 = ((undefined4 *)puVar3[3] != puVar2) + 2;\n        }\n        puVar3[iVar12 + 5] = puVar3[iVar12 + 5] + -1;\n        puVar2 = puVar3;\n        puVar5 = (undefined4 *)*puVar3;\n      }\n      return local_34;\n    }\n  }\n  else if ((iVar12 == 0) && (puVar2[10] != 0)) goto LAB_0003e9d5;\n  puVar5 = (undefined4 *)puVar2[local_38 + 1];\n  puVar4 = puVar5;\n  if (puVar5[10] == 0) {\n    puVar4 = (undefined4 *)puVar2[local_38 + 2];\n    iVar12 = local_38 + 1;\n    puVar11 = (undefined4 *)puVar4[1];\n    puVar9 = puVar4;\n    if (puVar4[10] == 0) {\n      uVar7 = puVar2[local_38 + 9];\n      puVar5[3] = puVar11;\n      puVar5[10] = uVar7;\n      puVar5[7] = puVar4[5];\n      if (puVar11 != (undefined4 *)0x0) {\n        *puVar11 = puVar5;\n      }\n      uVar7 = puVar4[6];\n      puVar5[0xb] = puVar4[9];\n      puVar11 = (undefined4 *)puVar4[2];\n      puVar5[8] = uVar7;\n      puVar5[4] = puVar11;\n      if (puVar11 != (undefined4 *)0x0) {\n        *puVar11 = puVar5;\n      }\n      FUN_0001a110(puVar4);\n      uVar7 = FUN_0003e010();\n      puVar2[local_38 + 5] = uVar7;\n      if (local_38 == 2) {\nLAB_0003ec29:\n        iVar12 = 3;\n        iVar6 = 2;\n      }\n      else {\n        iVar10 = puVar2[local_38 + 10];\n        iVar6 = local_38;\n        if (iVar10 != 0) {\n          do {\n            puVar2[iVar12 + 8] = iVar10;\n            puVar2[iVar12 + 1] = puVar2[iVar12 + 2];\n            puVar2[iVar12 + 5] = puVar2[iVar12 + 6];\n            if (iVar12 == 2) goto LAB_0003ec29;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);\n          iVar6 = 1;\n        }\n      }\n      puVar2[iVar6 + 9] = 0;\n      puVar2[iVar12 + 1] = 0;\n      puVar2[iVar12 + 5] = 0;\n      if (puVar2[9] == 0) {\n        *puVar3 = puVar5;\n        *puVar5 = 0;\n        FUN_0001a110(puVar2);\n      }\n      param_2 = puVar5[6] + puVar5[5] + 1;\n    }\n    else {\n      while (puVar5 = puVar11, puVar5 != (undefined4 *)0x0) {\n        puVar9 = puVar5;\n        puVar11 = (undefined4 *)puVar5[1];\n      }\n      puVar2[local_38 + 9] = puVar9[9];\n      param_2 = 0;\n      puVar5 = puVar4;\n    }\n  }\n  else {\n    while (puVar11 = (undefined4 *)puVar4[1], puVar11 != (undefined4 *)0x0) {\n      while ((puVar9 = (undefined4 *)puVar4[4], (undefined4 *)puVar4[4] != (undefined4 *)0x0 ||\n             (puVar9 = (undefined4 *)puVar4[3], (undefined4 *)puVar4[3] != (undefined4 *)0x0))) {\n        puVar4 = puVar9;\n        puVar11 = (undefined4 *)puVar4[1];\n        if (puVar11 == (undefined4 *)0x0) goto LAB_0003e958;\n      }\n      puVar9 = puVar4 + 2;\n      puVar4 = (undefined4 *)*puVar9;\n      if ((undefined4 *)*puVar9 == (undefined4 *)0x0) {\n        puVar4 = puVar11;\n      }\n    }\nLAB_0003e958:\n    iVar12 = puVar4[0xb];\n    if ((iVar12 == 0) && (iVar12 = puVar4[10], iVar12 == 0)) {\n      iVar12 = puVar4[9];\n    }\n    puVar2[local_38 + 9] = iVar12;\n    param_2 = puVar2[local_38 + 5] + -1;\n  }\n  goto joined_r0x0003e772;\nLAB_0003eab0:\n  puVar5 = (undefined4 *)puVar2[2];\n  if (puVar5[10] == 0) {\n    local_30 = 1;\n    iVar10 = 0;\nLAB_0003eacb:\n    puVar4 = (undefined4 *)puVar2[iVar10 + 1];\n    if (puVar4[10] == 0) {\n      local_28 = local_30 + 1;\n      puVar11 = puVar2 + local_30;\n      puVar9 = (undefined4 *)puVar11[2];\n      if (puVar9 == (undefined4 *)0x0) {\n        puVar9 = (undefined4 *)puVar11[1];\n        iVar12 = param_2 + 1 + puVar2[iVar10 + 5];\n      }\n      else {\n        if (puVar9[10] != 0) {\nLAB_0003e836:\n          uVar7 = puVar9[5];\n          puVar5[10] = puVar2[local_30 + 9];\n          puVar4 = (undefined4 *)puVar9[1];\n          puVar5[7] = uVar7;\n          puVar5[3] = puVar4;\n          if (puVar4 != (undefined4 *)0x0) {\n            *puVar4 = puVar5;\n          }\n          puVar2[local_30 + 9] = puVar9[9];\n          puVar9[1] = puVar9[2];\n          puVar9[5] = puVar9[6];\n          if (puVar9[10] == 0) {\n            iVar12 = 1;\n            iVar10 = 0;\n          }\n          else {\n            puVar9[9] = puVar9[10];\n            puVar9[2] = puVar9[3];\n            puVar9[6] = puVar9[7];\n            if (puVar9[0xb] == 0) {\n              iVar12 = 2;\n              iVar10 = 1;\n            }\n            else {\n              puVar9[10] = puVar9[0xb];\n              iVar12 = 3;\n              puVar9[3] = puVar9[4];\n              puVar9[7] = puVar9[8];\n              iVar10 = 2;\n            }\n          }\n          puVar9[iVar12 + 1] = 0;\n          puVar9[iVar12 + 5] = 0;\n          puVar9[iVar10 + 9] = 0;\n          uVar7 = FUN_0003e010();\n          puVar2[local_30 + 5] = uVar7;\n          uVar7 = FUN_0003e010();\n          puVar2[local_28 + 5] = uVar7;\n          puVar5 = extraout_ECX;\n          goto joined_r0x0003e772;\n        }\n        puVar4 = (undefined4 *)*puVar11;\n        puVar9 = (undefined4 *)puVar11[1];\n        iVar10 = local_30 + -1;\n        iVar12 = param_2 + 1 + puVar11[4];\n      }\nLAB_0003ed0c:\n      puVar9[4] = puVar9[2];\n      puVar9[8] = puVar9[6];\n      puVar9[0xb] = puVar9[9];\n      puVar9[3] = puVar9[1];\n      puVar9[7] = puVar9[5];\n      uVar7 = puVar4[6];\n      puVar9[10] = puVar2[iVar10 + 9];\n      puVar5 = (undefined4 *)puVar4[2];\n      puVar9[6] = uVar7;\n      puVar9[2] = puVar5;\n      if (puVar5 != (undefined4 *)0x0) {\n        *puVar5 = puVar9;\n      }\n      uVar7 = puVar4[5];\n      puVar9[9] = puVar4[9];\n      puVar5 = (undefined4 *)puVar4[1];\n      puVar9[5] = uVar7;\n      puVar9[1] = puVar5;\n      if (puVar5 != (undefined4 *)0x0) {\n        *puVar5 = puVar9;\n      }\n      uVar7 = FUN_0003e010();\n      puVar2[local_30 + 5] = uVar7;\n      FUN_0001a110(extraout_ECX_00);\n      iVar6 = puVar2[iVar10 + 2];\n      while (iVar6 != 0) {\n        iVar8 = iVar10 + 1;\n        puVar2[iVar8] = iVar6;\n        puVar2[iVar10 + 5] = puVar2[iVar10 + 6];\n        if (iVar8 == 3) {\n          puVar2[0xb] = 0;\n          puVar2[4] = 0;\n          puVar2[8] = 0;\n          goto LAB_0003edcd;\n        }\n        puVar2[iVar10 + 9] = puVar2[iVar10 + 10];\n        iVar6 = puVar2[iVar10 + 3];\n        iVar10 = iVar8;\n      }\n      puVar2[iVar10 + 1] = 0;\n      puVar2[iVar10 + 5] = 0;\n      puVar2[iVar10 + 9] = 0;\nLAB_0003edcd:\n      param_2 = iVar12;\n      puVar5 = puVar9;\n      if (puVar2[9] == 0) {\n        *puVar3 = puVar9;\n        *puVar9 = 0;\n        FUN_0001a110(puVar2);\n      }\n      goto joined_r0x0003e772;\n    }\nLAB_0003eae0:\n    uVar1 = (uint)(puVar4[0xb] == 0);\n    puVar5[3] = puVar5[2];\n    puVar5[7] = puVar5[6];\n    puVar5[10] = puVar5[9];\n    puVar5[2] = puVar5[1];\n    puVar5[6] = puVar5[5];\n    puVar5[9] = puVar2[iVar10 + 9];\n    puVar11 = (undefined4 *)puVar4[4 - uVar1];\n    puVar5[1] = puVar11;\n    puVar5[5] = puVar4[8 - uVar1];\n    if (puVar11 != (undefined4 *)0x0) {\n      *puVar11 = puVar5;\n    }\n    puVar2[iVar10 + 9] = puVar4[-uVar1 + 0xb];\n    puVar4[4 - uVar1] = 0;\n    puVar4[8 - uVar1] = 0;\n    puVar4[-uVar1 + 0xb] = 0;\n    uVar7 = FUN_0003e010();\n    puVar2[local_30 + 5] = uVar7;\n    iVar12 = puVar2[iVar10 + 5];\n    iVar6 = FUN_0003e010();\n    puVar2[iVar10 + 5] = iVar6;\n    param_2 = (param_2 + iVar12) - iVar6;\n  }\n  goto joined_r0x0003e772;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "undefined4 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "undefined4 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "undefined4 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "undefined4 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "undefined4 *extraout_ECX;" type_identifier (pointer_declarator "*extraout_ECX" * identifier) ;) (declaration "undefined4 extraout_ECX_00;" type_identifier identifier ;) (declaration "undefined4 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "undefined4 *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "int local_38;" primitive_type identifier ;) (declaration "int local_34;" primitive_type identifier ;) (declaration "int local_30;" primitive_type identifier ;) (declaration "int local_28;" primitive_type identifier ;) (expression_statement "puVar3 = (undefined4 *)FUN_0002abcc();" (assignment_expression "puVar3 = (undefined4 *)FUN_0002abcc()" identifier = (cast_expression "(undefined4 *)FUN_0002abcc()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0002abcc()" identifier (argument_list "()" ( ))))) ;) (expression_statement "local_38 = -1;" (assignment_expression "local_38 = -1" identifier = number_literal) ;) (expression_statement "local_34 = 0;" (assignment_expression "local_34 = 0" identifier = number_literal) ;) (expression_statement "puVar5 = (undefined4 *)*puVar3;" (assignment_expression "puVar5 = (undefined4 *)*puVar3" identifier = (cast_expression "(undefined4 *)*puVar3" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar3" * identifier))) ;) (labeled_statement "joined_r0x0003e772:\n  while( true ) {\n    puVar2 = puVar5;\n    iVar12 = param_2;\n    if (puVar2 == (undefined4 *)0x0) {\n      if (local_34 == 0) {\n        local_34 = *(int *)(local_38 * 4 + 0x24);\n      }\n      if (local_38 == -1) {\n        return 0;\n      }\n      goto LAB_0003e7aa;\n    }\n    if ((int)puVar2[5] <= iVar12) break;\n    puVar4 = (undefined4 *)puVar2[1];\n    param_2 = iVar12;\n    puVar5 = puVar4;\n    if (puVar4[10] == 0) {\n      puVar9 = (undefined4 *)puVar2[2];\n      if (puVar9 != (undefined4 *)0x0) {\n        local_30 = 0;\n        local_28 = 1;\n        if (puVar9[10] == 0) goto LAB_0003ed02;\n        goto LAB_0003e836;\n      }\nLAB_0003ed02:\n      local_30 = 1;\n      iVar10 = 0;\n      goto LAB_0003ed0c;\n    }\n  }" statement_identifier : (while_statement "while( true ) {\n    puVar2 = puVar5;\n    iVar12 = param_2;\n    if (puVar2 == (undefined4 *)0x0) {\n      if (local_34 == 0) {\n        local_34 = *(int *)(local_38 * 4 + 0x24);\n      }\n      if (local_38 == -1) {\n        return 0;\n      }\n      goto LAB_0003e7aa;\n    }\n    if ((int)puVar2[5] <= iVar12) break;\n    puVar4 = (undefined4 *)puVar2[1];\n    param_2 = iVar12;\n    puVar5 = puVar4;\n    if (puVar4[10] == 0) {\n      puVar9 = (undefined4 *)puVar2[2];\n      if (puVar9 != (undefined4 *)0x0) {\n        local_30 = 0;\n        local_28 = 1;\n        if (puVar9[10] == 0) goto LAB_0003ed02;\n        goto LAB_0003e836;\n      }\nLAB_0003ed02:\n      local_30 = 1;\n      iVar10 = 0;\n      goto LAB_0003ed0c;\n    }\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    puVar2 = puVar5;\n    iVar12 = param_2;\n    if (puVar2 == (undefined4 *)0x0) {\n      if (local_34 == 0) {\n        local_34 = *(int *)(local_38 * 4 + 0x24);\n      }\n      if (local_38 == -1) {\n        return 0;\n      }\n      goto LAB_0003e7aa;\n    }\n    if ((int)puVar2[5] <= iVar12) break;\n    puVar4 = (undefined4 *)puVar2[1];\n    param_2 = iVar12;\n    puVar5 = puVar4;\n    if (puVar4[10] == 0) {\n      puVar9 = (undefined4 *)puVar2[2];\n      if (puVar9 != (undefined4 *)0x0) {\n        local_30 = 0;\n        local_28 = 1;\n        if (puVar9[10] == 0) goto LAB_0003ed02;\n        goto LAB_0003e836;\n      }\nLAB_0003ed02:\n      local_30 = 1;\n      iVar10 = 0;\n      goto LAB_0003ed0c;\n    }\n  }" { (expression_statement "puVar2 = puVar5;" (assignment_expression "puVar2 = puVar5" identifier = identifier) ;) (expression_statement "iVar12 = param_2;" (assignment_expression "iVar12 = param_2" identifier = identifier) ;) (if_statement "if (puVar2 == (undefined4 *)0x0) {\n      if (local_34 == 0) {\n        local_34 = *(int *)(local_38 * 4 + 0x24);\n      }\n      if (local_38 == -1) {\n        return 0;\n      }\n      goto LAB_0003e7aa;\n    }" if (parenthesized_expression "(puVar2 == (undefined4 *)0x0)" ( (binary_expression "puVar2 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      if (local_34 == 0) {\n        local_34 = *(int *)(local_38 * 4 + 0x24);\n      }\n      if (local_38 == -1) {\n        return 0;\n      }\n      goto LAB_0003e7aa;\n    }" { (if_statement "if (local_34 == 0) {\n        local_34 = *(int *)(local_38 * 4 + 0x24);\n      }" if (parenthesized_expression "(local_34 == 0)" ( (binary_expression "local_34 == 0" identifier == number_literal) )) (compound_statement "{\n        local_34 = *(int *)(local_38 * 4 + 0x24);\n      }" { (expression_statement "local_34 = *(int *)(local_38 * 4 + 0x24);" (assignment_expression "local_34 = *(int *)(local_38 * 4 + 0x24)" identifier = (pointer_expression "*(int *)(local_38 * 4 + 0x24)" * (cast_expression "(int *)(local_38 * 4 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_38 * 4 + 0x24)" ( (binary_expression "local_38 * 4 + 0x24" (binary_expression "local_38 * 4" identifier * number_literal) + number_literal) ))))) ;) })) (if_statement "if (local_38 == -1) {\n        return 0;\n      }" if (parenthesized_expression "(local_38 == -1)" ( (binary_expression "local_38 == -1" identifier == number_literal) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (goto_statement "goto LAB_0003e7aa;" goto statement_identifier ;) })) (if_statement "if ((int)puVar2[5] <= iVar12) break;" if (parenthesized_expression "((int)puVar2[5] <= iVar12)" ( (binary_expression "(int)puVar2[5] <= iVar12" (cast_expression "(int)puVar2[5]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "puVar2[5]" identifier [ number_literal ])) <= identifier) )) (break_statement "break;" break ;)) (expression_statement "puVar4 = (undefined4 *)puVar2[1];" (assignment_expression "puVar4 = (undefined4 *)puVar2[1]" identifier = (cast_expression "(undefined4 *)puVar2[1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar2[1]" identifier [ number_literal ]))) ;) (expression_statement "param_2 = iVar12;" (assignment_expression "param_2 = iVar12" identifier = identifier) ;) (expression_statement "puVar5 = puVar4;" (assignment_expression "puVar5 = puVar4" identifier = identifier) ;) (if_statement "if (puVar4[10] == 0) {\n      puVar9 = (undefined4 *)puVar2[2];\n      if (puVar9 != (undefined4 *)0x0) {\n        local_30 = 0;\n        local_28 = 1;\n        if (puVar9[10] == 0) goto LAB_0003ed02;\n        goto LAB_0003e836;\n      }\nLAB_0003ed02:\n      local_30 = 1;\n      iVar10 = 0;\n      goto LAB_0003ed0c;\n    }" if (parenthesized_expression "(puVar4[10] == 0)" ( (binary_expression "puVar4[10] == 0" (subscript_expression "puVar4[10]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      puVar9 = (undefined4 *)puVar2[2];\n      if (puVar9 != (undefined4 *)0x0) {\n        local_30 = 0;\n        local_28 = 1;\n        if (puVar9[10] == 0) goto LAB_0003ed02;\n        goto LAB_0003e836;\n      }\nLAB_0003ed02:\n      local_30 = 1;\n      iVar10 = 0;\n      goto LAB_0003ed0c;\n    }" { (expression_statement "puVar9 = (undefined4 *)puVar2[2];" (assignment_expression "puVar9 = (undefined4 *)puVar2[2]" identifier = (cast_expression "(undefined4 *)puVar2[2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar2[2]" identifier [ number_literal ]))) ;) (if_statement "if (puVar9 != (undefined4 *)0x0) {\n        local_30 = 0;\n        local_28 = 1;\n        if (puVar9[10] == 0) goto LAB_0003ed02;\n        goto LAB_0003e836;\n      }" if (parenthesized_expression "(puVar9 != (undefined4 *)0x0)" ( (binary_expression "puVar9 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        local_30 = 0;\n        local_28 = 1;\n        if (puVar9[10] == 0) goto LAB_0003ed02;\n        goto LAB_0003e836;\n      }" { (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "local_28 = 1;" (assignment_expression "local_28 = 1" identifier = number_literal) ;) (if_statement "if (puVar9[10] == 0) goto LAB_0003ed02;" if (parenthesized_expression "(puVar9[10] == 0)" ( (binary_expression "puVar9[10] == 0" (subscript_expression "puVar9[10]" identifier [ number_literal ]) == number_literal) )) (goto_statement "goto LAB_0003ed02;" goto statement_identifier ;)) (goto_statement "goto LAB_0003e836;" goto statement_identifier ;) })) (labeled_statement "LAB_0003ed02:\n      local_30 = 1;" statement_identifier : (expression_statement "local_30 = 1;" (assignment_expression "local_30 = 1" identifier = number_literal) ;)) (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_0003ed0c;" goto statement_identifier ;) })) }))) (expression_statement "param_2 = iVar12 - (puVar2[5] + 1);" (assignment_expression "param_2 = iVar12 - (puVar2[5] + 1)" identifier = (binary_expression "iVar12 - (puVar2[5] + 1)" identifier - (parenthesized_expression "(puVar2[5] + 1)" ( (binary_expression "puVar2[5] + 1" (subscript_expression "puVar2[5]" identifier [ number_literal ]) + number_literal) )))) ;) (if_statement "if (-1 < param_2) {\n    if (param_2 < (int)puVar2[6]) goto LAB_0003eab0;\n    iVar12 = param_2 - (puVar2[6] + 1);\n    if (iVar12 < 0) {\n      local_38 = 1;\n      if (local_34 == 0) {\n        local_34 = puVar2[10];\n      }\nLAB_0003e7aa:\n      puVar5 = (undefined4 *)*puVar2;\n      iVar12 = puVar2[1];\n      goto joined_r0x0003e7b1;\n    }\n    if (iVar12 < (int)puVar2[7]) {\n      puVar5 = (undefined4 *)puVar2[3];\n      param_2 = iVar12;\n      if (puVar5[10] == 0) {\n        iVar10 = 1;\n        local_30 = 2;\n        goto LAB_0003eacb;\n      }\n    }\n    else {\n      param_2 = iVar12 - (puVar2[7] + 1);\n      if (param_2 < 0) {\n        local_38 = 2;\n        if (local_34 == 0) {\n          local_34 = puVar2[0xb];\n        }\n        goto LAB_0003e7aa;\n      }\n      puVar9 = (undefined4 *)puVar2[4];\n      puVar5 = puVar9;\n      if (puVar9[10] == 0) {\n        puVar4 = (undefined4 *)puVar2[3];\n        if (puVar4[10] == 0) {\n          iVar10 = 2;\n          local_30 = 3;\n          goto LAB_0003ed0c;\n        }\n        local_30 = 3;\n        iVar10 = 2;\n        goto LAB_0003eae0;\n      }\n    }\n    goto joined_r0x0003e772;\n  }" if (parenthesized_expression "(-1 < param_2)" ( (binary_expression "-1 < param_2" number_literal < identifier) )) (compound_statement "{\n    if (param_2 < (int)puVar2[6]) goto LAB_0003eab0;\n    iVar12 = param_2 - (puVar2[6] + 1);\n    if (iVar12 < 0) {\n      local_38 = 1;\n      if (local_34 == 0) {\n        local_34 = puVar2[10];\n      }\nLAB_0003e7aa:\n      puVar5 = (undefined4 *)*puVar2;\n      iVar12 = puVar2[1];\n      goto joined_r0x0003e7b1;\n    }\n    if (iVar12 < (int)puVar2[7]) {\n      puVar5 = (undefined4 *)puVar2[3];\n      param_2 = iVar12;\n      if (puVar5[10] == 0) {\n        iVar10 = 1;\n        local_30 = 2;\n        goto LAB_0003eacb;\n      }\n    }\n    else {\n      param_2 = iVar12 - (puVar2[7] + 1);\n      if (param_2 < 0) {\n        local_38 = 2;\n        if (local_34 == 0) {\n          local_34 = puVar2[0xb];\n        }\n        goto LAB_0003e7aa;\n      }\n      puVar9 = (undefined4 *)puVar2[4];\n      puVar5 = puVar9;\n      if (puVar9[10] == 0) {\n        puVar4 = (undefined4 *)puVar2[3];\n        if (puVar4[10] == 0) {\n          iVar10 = 2;\n          local_30 = 3;\n          goto LAB_0003ed0c;\n        }\n        local_30 = 3;\n        iVar10 = 2;\n        goto LAB_0003eae0;\n      }\n    }\n    goto joined_r0x0003e772;\n  }" { (if_statement "if (param_2 < (int)puVar2[6]) goto LAB_0003eab0;" if (parenthesized_expression "(param_2 < (int)puVar2[6])" ( (binary_expression "param_2 < (int)puVar2[6]" identifier < (cast_expression "(int)puVar2[6]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "puVar2[6]" identifier [ number_literal ]))) )) (goto_statement "goto LAB_0003eab0;" goto statement_identifier ;)) (expression_statement "iVar12 = param_2 - (puVar2[6] + 1);" (assignment_expression "iVar12 = param_2 - (puVar2[6] + 1)" identifier = (binary_expression "param_2 - (puVar2[6] + 1)" identifier - (parenthesized_expression "(puVar2[6] + 1)" ( (binary_expression "puVar2[6] + 1" (subscript_expression "puVar2[6]" identifier [ number_literal ]) + number_literal) )))) ;) (if_statement "if (iVar12 < 0) {\n      local_38 = 1;\n      if (local_34 == 0) {\n        local_34 = puVar2[10];\n      }\nLAB_0003e7aa:\n      puVar5 = (undefined4 *)*puVar2;\n      iVar12 = puVar2[1];\n      goto joined_r0x0003e7b1;\n    }" if (parenthesized_expression "(iVar12 < 0)" ( (binary_expression "iVar12 < 0" identifier < number_literal) )) (compound_statement "{\n      local_38 = 1;\n      if (local_34 == 0) {\n        local_34 = puVar2[10];\n      }\nLAB_0003e7aa:\n      puVar5 = (undefined4 *)*puVar2;\n      iVar12 = puVar2[1];\n      goto joined_r0x0003e7b1;\n    }" { (expression_statement "local_38 = 1;" (assignment_expression "local_38 = 1" identifier = number_literal) ;) (if_statement "if (local_34 == 0) {\n        local_34 = puVar2[10];\n      }" if (parenthesized_expression "(local_34 == 0)" ( (binary_expression "local_34 == 0" identifier == number_literal) )) (compound_statement "{\n        local_34 = puVar2[10];\n      }" { (expression_statement "local_34 = puVar2[10];" (assignment_expression "local_34 = puVar2[10]" identifier = (subscript_expression "puVar2[10]" identifier [ number_literal ])) ;) })) (labeled_statement "LAB_0003e7aa:\n      puVar5 = (undefined4 *)*puVar2;" statement_identifier : (expression_statement "puVar5 = (undefined4 *)*puVar2;" (assignment_expression "puVar5 = (undefined4 *)*puVar2" identifier = (cast_expression "(undefined4 *)*puVar2" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar2" * identifier))) ;)) (expression_statement "iVar12 = puVar2[1];" (assignment_expression "iVar12 = puVar2[1]" identifier = (subscript_expression "puVar2[1]" identifier [ number_literal ])) ;) (goto_statement "goto joined_r0x0003e7b1;" goto statement_identifier ;) })) (if_statement "if (iVar12 < (int)puVar2[7]) {\n      puVar5 = (undefined4 *)puVar2[3];\n      param_2 = iVar12;\n      if (puVar5[10] == 0) {\n        iVar10 = 1;\n        local_30 = 2;\n        goto LAB_0003eacb;\n      }\n    }\n    else {\n      param_2 = iVar12 - (puVar2[7] + 1);\n      if (param_2 < 0) {\n        local_38 = 2;\n        if (local_34 == 0) {\n          local_34 = puVar2[0xb];\n        }\n        goto LAB_0003e7aa;\n      }\n      puVar9 = (undefined4 *)puVar2[4];\n      puVar5 = puVar9;\n      if (puVar9[10] == 0) {\n        puVar4 = (undefined4 *)puVar2[3];\n        if (puVar4[10] == 0) {\n          iVar10 = 2;\n          local_30 = 3;\n          goto LAB_0003ed0c;\n        }\n        local_30 = 3;\n        iVar10 = 2;\n        goto LAB_0003eae0;\n      }\n    }" if (parenthesized_expression "(iVar12 < (int)puVar2[7])" ( (binary_expression "iVar12 < (int)puVar2[7]" identifier < (cast_expression "(int)puVar2[7]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "puVar2[7]" identifier [ number_literal ]))) )) (compound_statement "{\n      puVar5 = (undefined4 *)puVar2[3];\n      param_2 = iVar12;\n      if (puVar5[10] == 0) {\n        iVar10 = 1;\n        local_30 = 2;\n        goto LAB_0003eacb;\n      }\n    }" { (expression_statement "puVar5 = (undefined4 *)puVar2[3];" (assignment_expression "puVar5 = (undefined4 *)puVar2[3]" identifier = (cast_expression "(undefined4 *)puVar2[3]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar2[3]" identifier [ number_literal ]))) ;) (expression_statement "param_2 = iVar12;" (assignment_expression "param_2 = iVar12" identifier = identifier) ;) (if_statement "if (puVar5[10] == 0) {\n        iVar10 = 1;\n        local_30 = 2;\n        goto LAB_0003eacb;\n      }" if (parenthesized_expression "(puVar5[10] == 0)" ( (binary_expression "puVar5[10] == 0" (subscript_expression "puVar5[10]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n        iVar10 = 1;\n        local_30 = 2;\n        goto LAB_0003eacb;\n      }" { (expression_statement "iVar10 = 1;" (assignment_expression "iVar10 = 1" identifier = number_literal) ;) (expression_statement "local_30 = 2;" (assignment_expression "local_30 = 2" identifier = number_literal) ;) (goto_statement "goto LAB_0003eacb;" goto statement_identifier ;) })) }) (else_clause "else {\n      param_2 = iVar12 - (puVar2[7] + 1);\n      if (param_2 < 0) {\n        local_38 = 2;\n        if (local_34 == 0) {\n          local_34 = puVar2[0xb];\n        }\n        goto LAB_0003e7aa;\n      }\n      puVar9 = (undefined4 *)puVar2[4];\n      puVar5 = puVar9;\n      if (puVar9[10] == 0) {\n        puVar4 = (undefined4 *)puVar2[3];\n        if (puVar4[10] == 0) {\n          iVar10 = 2;\n          local_30 = 3;\n          goto LAB_0003ed0c;\n        }\n        local_30 = 3;\n        iVar10 = 2;\n        goto LAB_0003eae0;\n      }\n    }" else (compound_statement "{\n      param_2 = iVar12 - (puVar2[7] + 1);\n      if (param_2 < 0) {\n        local_38 = 2;\n        if (local_34 == 0) {\n          local_34 = puVar2[0xb];\n        }\n        goto LAB_0003e7aa;\n      }\n      puVar9 = (undefined4 *)puVar2[4];\n      puVar5 = puVar9;\n      if (puVar9[10] == 0) {\n        puVar4 = (undefined4 *)puVar2[3];\n        if (puVar4[10] == 0) {\n          iVar10 = 2;\n          local_30 = 3;\n          goto LAB_0003ed0c;\n        }\n        local_30 = 3;\n        iVar10 = 2;\n        goto LAB_0003eae0;\n      }\n    }" { (expression_statement "param_2 = iVar12 - (puVar2[7] + 1);" (assignment_expression "param_2 = iVar12 - (puVar2[7] + 1)" identifier = (binary_expression "iVar12 - (puVar2[7] + 1)" identifier - (parenthesized_expression "(puVar2[7] + 1)" ( (binary_expression "puVar2[7] + 1" (subscript_expression "puVar2[7]" identifier [ number_literal ]) + number_literal) )))) ;) (if_statement "if (param_2 < 0) {\n        local_38 = 2;\n        if (local_34 == 0) {\n          local_34 = puVar2[0xb];\n        }\n        goto LAB_0003e7aa;\n      }" if (parenthesized_expression "(param_2 < 0)" ( (binary_expression "param_2 < 0" identifier < number_literal) )) (compound_statement "{\n        local_38 = 2;\n        if (local_34 == 0) {\n          local_34 = puVar2[0xb];\n        }\n        goto LAB_0003e7aa;\n      }" { (expression_statement "local_38 = 2;" (assignment_expression "local_38 = 2" identifier = number_literal) ;) (if_statement "if (local_34 == 0) {\n          local_34 = puVar2[0xb];\n        }" if (parenthesized_expression "(local_34 == 0)" ( (binary_expression "local_34 == 0" identifier == number_literal) )) (compound_statement "{\n          local_34 = puVar2[0xb];\n        }" { (expression_statement "local_34 = puVar2[0xb];" (assignment_expression "local_34 = puVar2[0xb]" identifier = (subscript_expression "puVar2[0xb]" identifier [ number_literal ])) ;) })) (goto_statement "goto LAB_0003e7aa;" goto statement_identifier ;) })) (expression_statement "puVar9 = (undefined4 *)puVar2[4];" (assignment_expression "puVar9 = (undefined4 *)puVar2[4]" identifier = (cast_expression "(undefined4 *)puVar2[4]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar2[4]" identifier [ number_literal ]))) ;) (expression_statement "puVar5 = puVar9;" (assignment_expression "puVar5 = puVar9" identifier = identifier) ;) (if_statement "if (puVar9[10] == 0) {\n        puVar4 = (undefined4 *)puVar2[3];\n        if (puVar4[10] == 0) {\n          iVar10 = 2;\n          local_30 = 3;\n          goto LAB_0003ed0c;\n        }\n        local_30 = 3;\n        iVar10 = 2;\n        goto LAB_0003eae0;\n      }" if (parenthesized_expression "(puVar9[10] == 0)" ( (binary_expression "puVar9[10] == 0" (subscript_expression "puVar9[10]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n        puVar4 = (undefined4 *)puVar2[3];\n        if (puVar4[10] == 0) {\n          iVar10 = 2;\n          local_30 = 3;\n          goto LAB_0003ed0c;\n        }\n        local_30 = 3;\n        iVar10 = 2;\n        goto LAB_0003eae0;\n      }" { (expression_statement "puVar4 = (undefined4 *)puVar2[3];" (assignment_expression "puVar4 = (undefined4 *)puVar2[3]" identifier = (cast_expression "(undefined4 *)puVar2[3]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar2[3]" identifier [ number_literal ]))) ;) (if_statement "if (puVar4[10] == 0) {\n          iVar10 = 2;\n          local_30 = 3;\n          goto LAB_0003ed0c;\n        }" if (parenthesized_expression "(puVar4[10] == 0)" ( (binary_expression "puVar4[10] == 0" (subscript_expression "puVar4[10]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n          iVar10 = 2;\n          local_30 = 3;\n          goto LAB_0003ed0c;\n        }" { (expression_statement "iVar10 = 2;" (assignment_expression "iVar10 = 2" identifier = number_literal) ;) (expression_statement "local_30 = 3;" (assignment_expression "local_30 = 3" identifier = number_literal) ;) (goto_statement "goto LAB_0003ed0c;" goto statement_identifier ;) })) (expression_statement "local_30 = 3;" (assignment_expression "local_30 = 3" identifier = number_literal) ;) (expression_statement "iVar10 = 2;" (assignment_expression "iVar10 = 2" identifier = number_literal) ;) (goto_statement "goto LAB_0003eae0;" goto statement_identifier ;) })) }))) (goto_statement "goto joined_r0x0003e772;" goto statement_identifier ;) })) (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" identifier = number_literal) ;) (if_statement "if (local_34 != 0) goto LAB_0003e7aa;" if (parenthesized_expression "(local_34 != 0)" ( (binary_expression "local_34 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0003e7aa;" goto statement_identifier ;)) (expression_statement "local_34 = puVar2[9];" (assignment_expression "local_34 = puVar2[9]" identifier = (subscript_expression "puVar2[9]" identifier [ number_literal ])) ;) (expression_statement "puVar5 = (undefined4 *)*puVar2;" (assignment_expression "puVar5 = (undefined4 *)*puVar2" identifier = (cast_expression "(undefined4 *)*puVar2" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar2" * identifier))) ;) (expression_statement "iVar12 = puVar2[1];" (assignment_expression "iVar12 = puVar2[1]" identifier = (subscript_expression "puVar2[1]" identifier [ number_literal ])) ;) (labeled_statement "joined_r0x0003e7b1:\n  if (puVar5 == (undefined4 *)0x0) {\n    if (puVar2[10] == 0) {\n      if (iVar12 == 0) {\n        FUN_0001a110(puVar2);\n        *puVar3 = 0;\n        return local_34;\n      }\n    }\n    else if (iVar12 == 0) {\n      puVar5 = (undefined4 *)0x0;\nLAB_0003e9d5:\n      if (local_38 == 2) {\nLAB_0003ea09:\n        local_38 = 2;\n      }\n      else {\n        iVar10 = puVar2[local_38 + 10];\n        iVar12 = local_38 + 1;\n        if (iVar10 != 0) {\n          do {\n            puVar2[iVar12 + 8] = iVar10;\n            if (iVar12 == 2) goto LAB_0003ea09;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);\n          local_38 = 1;\n        }\n      }\n      puVar2[local_38 + 9] = 0;\n      while (puVar3 = puVar5, puVar3 != (undefined4 *)0x0) {\n        iVar12 = 0;\n        if (((undefined4 *)puVar3[1] != puVar2) && (iVar12 = 1, (undefined4 *)puVar3[2] != puVar2))\n        {\n          iVar12 = ((undefined4 *)puVar3[3] != puVar2) + 2;\n        }\n        puVar3[iVar12 + 5] = puVar3[iVar12 + 5] + -1;\n        puVar2 = puVar3;\n        puVar5 = (undefined4 *)*puVar3;\n      }\n      return local_34;\n    }\n  }\n  else if ((iVar12 == 0) && (puVar2[10] != 0)) goto LAB_0003e9d5;" statement_identifier : (if_statement "if (puVar5 == (undefined4 *)0x0) {\n    if (puVar2[10] == 0) {\n      if (iVar12 == 0) {\n        FUN_0001a110(puVar2);\n        *puVar3 = 0;\n        return local_34;\n      }\n    }\n    else if (iVar12 == 0) {\n      puVar5 = (undefined4 *)0x0;\nLAB_0003e9d5:\n      if (local_38 == 2) {\nLAB_0003ea09:\n        local_38 = 2;\n      }\n      else {\n        iVar10 = puVar2[local_38 + 10];\n        iVar12 = local_38 + 1;\n        if (iVar10 != 0) {\n          do {\n            puVar2[iVar12 + 8] = iVar10;\n            if (iVar12 == 2) goto LAB_0003ea09;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);\n          local_38 = 1;\n        }\n      }\n      puVar2[local_38 + 9] = 0;\n      while (puVar3 = puVar5, puVar3 != (undefined4 *)0x0) {\n        iVar12 = 0;\n        if (((undefined4 *)puVar3[1] != puVar2) && (iVar12 = 1, (undefined4 *)puVar3[2] != puVar2))\n        {\n          iVar12 = ((undefined4 *)puVar3[3] != puVar2) + 2;\n        }\n        puVar3[iVar12 + 5] = puVar3[iVar12 + 5] + -1;\n        puVar2 = puVar3;\n        puVar5 = (undefined4 *)*puVar3;\n      }\n      return local_34;\n    }\n  }\n  else if ((iVar12 == 0) && (puVar2[10] != 0)) goto LAB_0003e9d5;" if (parenthesized_expression "(puVar5 == (undefined4 *)0x0)" ( (binary_expression "puVar5 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (puVar2[10] == 0) {\n      if (iVar12 == 0) {\n        FUN_0001a110(puVar2);\n        *puVar3 = 0;\n        return local_34;\n      }\n    }\n    else if (iVar12 == 0) {\n      puVar5 = (undefined4 *)0x0;\nLAB_0003e9d5:\n      if (local_38 == 2) {\nLAB_0003ea09:\n        local_38 = 2;\n      }\n      else {\n        iVar10 = puVar2[local_38 + 10];\n        iVar12 = local_38 + 1;\n        if (iVar10 != 0) {\n          do {\n            puVar2[iVar12 + 8] = iVar10;\n            if (iVar12 == 2) goto LAB_0003ea09;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);\n          local_38 = 1;\n        }\n      }\n      puVar2[local_38 + 9] = 0;\n      while (puVar3 = puVar5, puVar3 != (undefined4 *)0x0) {\n        iVar12 = 0;\n        if (((undefined4 *)puVar3[1] != puVar2) && (iVar12 = 1, (undefined4 *)puVar3[2] != puVar2))\n        {\n          iVar12 = ((undefined4 *)puVar3[3] != puVar2) + 2;\n        }\n        puVar3[iVar12 + 5] = puVar3[iVar12 + 5] + -1;\n        puVar2 = puVar3;\n        puVar5 = (undefined4 *)*puVar3;\n      }\n      return local_34;\n    }\n  }" { (if_statement "if (puVar2[10] == 0) {\n      if (iVar12 == 0) {\n        FUN_0001a110(puVar2);\n        *puVar3 = 0;\n        return local_34;\n      }\n    }\n    else if (iVar12 == 0) {\n      puVar5 = (undefined4 *)0x0;\nLAB_0003e9d5:\n      if (local_38 == 2) {\nLAB_0003ea09:\n        local_38 = 2;\n      }\n      else {\n        iVar10 = puVar2[local_38 + 10];\n        iVar12 = local_38 + 1;\n        if (iVar10 != 0) {\n          do {\n            puVar2[iVar12 + 8] = iVar10;\n            if (iVar12 == 2) goto LAB_0003ea09;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);\n          local_38 = 1;\n        }\n      }\n      puVar2[local_38 + 9] = 0;\n      while (puVar3 = puVar5, puVar3 != (undefined4 *)0x0) {\n        iVar12 = 0;\n        if (((undefined4 *)puVar3[1] != puVar2) && (iVar12 = 1, (undefined4 *)puVar3[2] != puVar2))\n        {\n          iVar12 = ((undefined4 *)puVar3[3] != puVar2) + 2;\n        }\n        puVar3[iVar12 + 5] = puVar3[iVar12 + 5] + -1;\n        puVar2 = puVar3;\n        puVar5 = (undefined4 *)*puVar3;\n      }\n      return local_34;\n    }" if (parenthesized_expression "(puVar2[10] == 0)" ( (binary_expression "puVar2[10] == 0" (subscript_expression "puVar2[10]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      if (iVar12 == 0) {\n        FUN_0001a110(puVar2);\n        *puVar3 = 0;\n        return local_34;\n      }\n    }" { (if_statement "if (iVar12 == 0) {\n        FUN_0001a110(puVar2);\n        *puVar3 = 0;\n        return local_34;\n      }" if (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) )) (compound_statement "{\n        FUN_0001a110(puVar2);\n        *puVar3 = 0;\n        return local_34;\n      }" { (expression_statement "FUN_0001a110(puVar2);" (call_expression "FUN_0001a110(puVar2)" identifier (argument_list "(puVar2)" ( identifier ))) ;) (expression_statement "*puVar3 = 0;" (assignment_expression "*puVar3 = 0" (pointer_expression "*puVar3" * identifier) = number_literal) ;) (return_statement "return local_34;" return identifier ;) })) }) (else_clause "else if (iVar12 == 0) {\n      puVar5 = (undefined4 *)0x0;\nLAB_0003e9d5:\n      if (local_38 == 2) {\nLAB_0003ea09:\n        local_38 = 2;\n      }\n      else {\n        iVar10 = puVar2[local_38 + 10];\n        iVar12 = local_38 + 1;\n        if (iVar10 != 0) {\n          do {\n            puVar2[iVar12 + 8] = iVar10;\n            if (iVar12 == 2) goto LAB_0003ea09;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);\n          local_38 = 1;\n        }\n      }\n      puVar2[local_38 + 9] = 0;\n      while (puVar3 = puVar5, puVar3 != (undefined4 *)0x0) {\n        iVar12 = 0;\n        if (((undefined4 *)puVar3[1] != puVar2) && (iVar12 = 1, (undefined4 *)puVar3[2] != puVar2))\n        {\n          iVar12 = ((undefined4 *)puVar3[3] != puVar2) + 2;\n        }\n        puVar3[iVar12 + 5] = puVar3[iVar12 + 5] + -1;\n        puVar2 = puVar3;\n        puVar5 = (undefined4 *)*puVar3;\n      }\n      return local_34;\n    }" else (if_statement "if (iVar12 == 0) {\n      puVar5 = (undefined4 *)0x0;\nLAB_0003e9d5:\n      if (local_38 == 2) {\nLAB_0003ea09:\n        local_38 = 2;\n      }\n      else {\n        iVar10 = puVar2[local_38 + 10];\n        iVar12 = local_38 + 1;\n        if (iVar10 != 0) {\n          do {\n            puVar2[iVar12 + 8] = iVar10;\n            if (iVar12 == 2) goto LAB_0003ea09;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);\n          local_38 = 1;\n        }\n      }\n      puVar2[local_38 + 9] = 0;\n      while (puVar3 = puVar5, puVar3 != (undefined4 *)0x0) {\n        iVar12 = 0;\n        if (((undefined4 *)puVar3[1] != puVar2) && (iVar12 = 1, (undefined4 *)puVar3[2] != puVar2))\n        {\n          iVar12 = ((undefined4 *)puVar3[3] != puVar2) + 2;\n        }\n        puVar3[iVar12 + 5] = puVar3[iVar12 + 5] + -1;\n        puVar2 = puVar3;\n        puVar5 = (undefined4 *)*puVar3;\n      }\n      return local_34;\n    }" if (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) )) (compound_statement "{\n      puVar5 = (undefined4 *)0x0;\nLAB_0003e9d5:\n      if (local_38 == 2) {\nLAB_0003ea09:\n        local_38 = 2;\n      }\n      else {\n        iVar10 = puVar2[local_38 + 10];\n        iVar12 = local_38 + 1;\n        if (iVar10 != 0) {\n          do {\n            puVar2[iVar12 + 8] = iVar10;\n            if (iVar12 == 2) goto LAB_0003ea09;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);\n          local_38 = 1;\n        }\n      }\n      puVar2[local_38 + 9] = 0;\n      while (puVar3 = puVar5, puVar3 != (undefined4 *)0x0) {\n        iVar12 = 0;\n        if (((undefined4 *)puVar3[1] != puVar2) && (iVar12 = 1, (undefined4 *)puVar3[2] != puVar2))\n        {\n          iVar12 = ((undefined4 *)puVar3[3] != puVar2) + 2;\n        }\n        puVar3[iVar12 + 5] = puVar3[iVar12 + 5] + -1;\n        puVar2 = puVar3;\n        puVar5 = (undefined4 *)*puVar3;\n      }\n      return local_34;\n    }" { (expression_statement "puVar5 = (undefined4 *)0x0;" (assignment_expression "puVar5 = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_0003e9d5:\n      if (local_38 == 2) {\nLAB_0003ea09:\n        local_38 = 2;\n      }\n      else {\n        iVar10 = puVar2[local_38 + 10];\n        iVar12 = local_38 + 1;\n        if (iVar10 != 0) {\n          do {\n            puVar2[iVar12 + 8] = iVar10;\n            if (iVar12 == 2) goto LAB_0003ea09;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);\n          local_38 = 1;\n        }\n      }" statement_identifier : (if_statement "if (local_38 == 2) {\nLAB_0003ea09:\n        local_38 = 2;\n      }\n      else {\n        iVar10 = puVar2[local_38 + 10];\n        iVar12 = local_38 + 1;\n        if (iVar10 != 0) {\n          do {\n            puVar2[iVar12 + 8] = iVar10;\n            if (iVar12 == 2) goto LAB_0003ea09;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);\n          local_38 = 1;\n        }\n      }" if (parenthesized_expression "(local_38 == 2)" ( (binary_expression "local_38 == 2" identifier == number_literal) )) (compound_statement "{\nLAB_0003ea09:\n        local_38 = 2;\n      }" { (labeled_statement "LAB_0003ea09:\n        local_38 = 2;" statement_identifier : (expression_statement "local_38 = 2;" (assignment_expression "local_38 = 2" identifier = number_literal) ;)) }) (else_clause "else {\n        iVar10 = puVar2[local_38 + 10];\n        iVar12 = local_38 + 1;\n        if (iVar10 != 0) {\n          do {\n            puVar2[iVar12 + 8] = iVar10;\n            if (iVar12 == 2) goto LAB_0003ea09;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);\n          local_38 = 1;\n        }\n      }" else (compound_statement "{\n        iVar10 = puVar2[local_38 + 10];\n        iVar12 = local_38 + 1;\n        if (iVar10 != 0) {\n          do {\n            puVar2[iVar12 + 8] = iVar10;\n            if (iVar12 == 2) goto LAB_0003ea09;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);\n          local_38 = 1;\n        }\n      }" { (expression_statement "iVar10 = puVar2[local_38 + 10];" (assignment_expression "iVar10 = puVar2[local_38 + 10]" identifier = (subscript_expression "puVar2[local_38 + 10]" identifier [ (binary_expression "local_38 + 10" identifier + number_literal) ])) ;) (expression_statement "iVar12 = local_38 + 1;" (assignment_expression "iVar12 = local_38 + 1" identifier = (binary_expression "local_38 + 1" identifier + number_literal)) ;) (if_statement "if (iVar10 != 0) {\n          do {\n            puVar2[iVar12 + 8] = iVar10;\n            if (iVar12 == 2) goto LAB_0003ea09;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);\n          local_38 = 1;\n        }" if (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) (compound_statement "{\n          do {\n            puVar2[iVar12 + 8] = iVar10;\n            if (iVar12 == 2) goto LAB_0003ea09;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);\n          local_38 = 1;\n        }" { (do_statement "do {\n            puVar2[iVar12 + 8] = iVar10;\n            if (iVar12 == 2) goto LAB_0003ea09;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);" do (compound_statement "{\n            puVar2[iVar12 + 8] = iVar10;\n            if (iVar12 == 2) goto LAB_0003ea09;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          }" { (expression_statement "puVar2[iVar12 + 8] = iVar10;" (assignment_expression "puVar2[iVar12 + 8] = iVar10" (subscript_expression "puVar2[iVar12 + 8]" identifier [ (binary_expression "iVar12 + 8" identifier + number_literal) ]) = identifier) ;) (if_statement "if (iVar12 == 2) goto LAB_0003ea09;" if (parenthesized_expression "(iVar12 == 2)" ( (binary_expression "iVar12 == 2" identifier == number_literal) )) (goto_statement "goto LAB_0003ea09;" goto statement_identifier ;)) (expression_statement "iVar10 = puVar2[0xb];" (assignment_expression "iVar10 = puVar2[0xb]" identifier = (subscript_expression "puVar2[0xb]" identifier [ number_literal ])) ;) (expression_statement "iVar12 = 2;" (assignment_expression "iVar12 = 2" identifier = number_literal) ;) }) while (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) ;) (expression_statement "local_38 = 1;" (assignment_expression "local_38 = 1" identifier = number_literal) ;) })) })))) (expression_statement "puVar2[local_38 + 9] = 0;" (assignment_expression "puVar2[local_38 + 9] = 0" (subscript_expression "puVar2[local_38 + 9]" identifier [ (binary_expression "local_38 + 9" identifier + number_literal) ]) = number_literal) ;) (while_statement "while (puVar3 = puVar5, puVar3 != (undefined4 *)0x0) {\n        iVar12 = 0;\n        if (((undefined4 *)puVar3[1] != puVar2) && (iVar12 = 1, (undefined4 *)puVar3[2] != puVar2))\n        {\n          iVar12 = ((undefined4 *)puVar3[3] != puVar2) + 2;\n        }\n        puVar3[iVar12 + 5] = puVar3[iVar12 + 5] + -1;\n        puVar2 = puVar3;\n        puVar5 = (undefined4 *)*puVar3;\n      }" while (parenthesized_expression "(puVar3 = puVar5, puVar3 != (undefined4 *)0x0)" ( (comma_expression "puVar3 = puVar5, puVar3 != (undefined4 *)0x0" (assignment_expression "puVar3 = puVar5" identifier = identifier) , (binary_expression "puVar3 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) )) (compound_statement "{\n        iVar12 = 0;\n        if (((undefined4 *)puVar3[1] != puVar2) && (iVar12 = 1, (undefined4 *)puVar3[2] != puVar2))\n        {\n          iVar12 = ((undefined4 *)puVar3[3] != puVar2) + 2;\n        }\n        puVar3[iVar12 + 5] = puVar3[iVar12 + 5] + -1;\n        puVar2 = puVar3;\n        puVar5 = (undefined4 *)*puVar3;\n      }" { (expression_statement "iVar12 = 0;" (assignment_expression "iVar12 = 0" identifier = number_literal) ;) (if_statement "if (((undefined4 *)puVar3[1] != puVar2) && (iVar12 = 1, (undefined4 *)puVar3[2] != puVar2))\n        {\n          iVar12 = ((undefined4 *)puVar3[3] != puVar2) + 2;\n        }" if (parenthesized_expression "(((undefined4 *)puVar3[1] != puVar2) && (iVar12 = 1, (undefined4 *)puVar3[2] != puVar2))" ( (binary_expression "((undefined4 *)puVar3[1] != puVar2) && (iVar12 = 1, (undefined4 *)puVar3[2] != puVar2)" (parenthesized_expression "((undefined4 *)puVar3[1] != puVar2)" ( (binary_expression "(undefined4 *)puVar3[1] != puVar2" (cast_expression "(undefined4 *)puVar3[1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar3[1]" identifier [ number_literal ])) != identifier) )) && (parenthesized_expression "(iVar12 = 1, (undefined4 *)puVar3[2] != puVar2)" ( (comma_expression "iVar12 = 1, (undefined4 *)puVar3[2] != puVar2" (assignment_expression "iVar12 = 1" identifier = number_literal) , (binary_expression "(undefined4 *)puVar3[2] != puVar2" (cast_expression "(undefined4 *)puVar3[2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar3[2]" identifier [ number_literal ])) != identifier)) ))) )) (compound_statement "{\n          iVar12 = ((undefined4 *)puVar3[3] != puVar2) + 2;\n        }" { (expression_statement "iVar12 = ((undefined4 *)puVar3[3] != puVar2) + 2;" (assignment_expression "iVar12 = ((undefined4 *)puVar3[3] != puVar2) + 2" identifier = (binary_expression "((undefined4 *)puVar3[3] != puVar2) + 2" (parenthesized_expression "((undefined4 *)puVar3[3] != puVar2)" ( (binary_expression "(undefined4 *)puVar3[3] != puVar2" (cast_expression "(undefined4 *)puVar3[3]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar3[3]" identifier [ number_literal ])) != identifier) )) + number_literal)) ;) })) (expression_statement "puVar3[iVar12 + 5] = puVar3[iVar12 + 5] + -1;" (assignment_expression "puVar3[iVar12 + 5] = puVar3[iVar12 + 5] + -1" (subscript_expression "puVar3[iVar12 + 5]" identifier [ (binary_expression "iVar12 + 5" identifier + number_literal) ]) = (binary_expression "puVar3[iVar12 + 5] + -1" (subscript_expression "puVar3[iVar12 + 5]" identifier [ (binary_expression "iVar12 + 5" identifier + number_literal) ]) + number_literal)) ;) (expression_statement "puVar2 = puVar3;" (assignment_expression "puVar2 = puVar3" identifier = identifier) ;) (expression_statement "puVar5 = (undefined4 *)*puVar3;" (assignment_expression "puVar5 = (undefined4 *)*puVar3" identifier = (cast_expression "(undefined4 *)*puVar3" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar3" * identifier))) ;) })) (return_statement "return local_34;" return identifier ;) })))) }) (else_clause "else if ((iVar12 == 0) && (puVar2[10] != 0)) goto LAB_0003e9d5;" else (if_statement "if ((iVar12 == 0) && (puVar2[10] != 0)) goto LAB_0003e9d5;" if (parenthesized_expression "((iVar12 == 0) && (puVar2[10] != 0))" ( (binary_expression "(iVar12 == 0) && (puVar2[10] != 0)" (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) )) && (parenthesized_expression "(puVar2[10] != 0)" ( (binary_expression "puVar2[10] != 0" (subscript_expression "puVar2[10]" identifier [ number_literal ]) != number_literal) ))) )) (goto_statement "goto LAB_0003e9d5;" goto statement_identifier ;))))) (expression_statement "puVar5 = (undefined4 *)puVar2[local_38 + 1];" (assignment_expression "puVar5 = (undefined4 *)puVar2[local_38 + 1]" identifier = (cast_expression "(undefined4 *)puVar2[local_38 + 1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar2[local_38 + 1]" identifier [ (binary_expression "local_38 + 1" identifier + number_literal) ]))) ;) (expression_statement "puVar4 = puVar5;" (assignment_expression "puVar4 = puVar5" identifier = identifier) ;) (if_statement "if (puVar5[10] == 0) {\n    puVar4 = (undefined4 *)puVar2[local_38 + 2];\n    iVar12 = local_38 + 1;\n    puVar11 = (undefined4 *)puVar4[1];\n    puVar9 = puVar4;\n    if (puVar4[10] == 0) {\n      uVar7 = puVar2[local_38 + 9];\n      puVar5[3] = puVar11;\n      puVar5[10] = uVar7;\n      puVar5[7] = puVar4[5];\n      if (puVar11 != (undefined4 *)0x0) {\n        *puVar11 = puVar5;\n      }\n      uVar7 = puVar4[6];\n      puVar5[0xb] = puVar4[9];\n      puVar11 = (undefined4 *)puVar4[2];\n      puVar5[8] = uVar7;\n      puVar5[4] = puVar11;\n      if (puVar11 != (undefined4 *)0x0) {\n        *puVar11 = puVar5;\n      }\n      FUN_0001a110(puVar4);\n      uVar7 = FUN_0003e010();\n      puVar2[local_38 + 5] = uVar7;\n      if (local_38 == 2) {\nLAB_0003ec29:\n        iVar12 = 3;\n        iVar6 = 2;\n      }\n      else {\n        iVar10 = puVar2[local_38 + 10];\n        iVar6 = local_38;\n        if (iVar10 != 0) {\n          do {\n            puVar2[iVar12 + 8] = iVar10;\n            puVar2[iVar12 + 1] = puVar2[iVar12 + 2];\n            puVar2[iVar12 + 5] = puVar2[iVar12 + 6];\n            if (iVar12 == 2) goto LAB_0003ec29;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);\n          iVar6 = 1;\n        }\n      }\n      puVar2[iVar6 + 9] = 0;\n      puVar2[iVar12 + 1] = 0;\n      puVar2[iVar12 + 5] = 0;\n      if (puVar2[9] == 0) {\n        *puVar3 = puVar5;\n        *puVar5 = 0;\n        FUN_0001a110(puVar2);\n      }\n      param_2 = puVar5[6] + puVar5[5] + 1;\n    }\n    else {\n      while (puVar5 = puVar11, puVar5 != (undefined4 *)0x0) {\n        puVar9 = puVar5;\n        puVar11 = (undefined4 *)puVar5[1];\n      }\n      puVar2[local_38 + 9] = puVar9[9];\n      param_2 = 0;\n      puVar5 = puVar4;\n    }\n  }\n  else {\n    while (puVar11 = (undefined4 *)puVar4[1], puVar11 != (undefined4 *)0x0) {\n      while ((puVar9 = (undefined4 *)puVar4[4], (undefined4 *)puVar4[4] != (undefined4 *)0x0 ||\n             (puVar9 = (undefined4 *)puVar4[3], (undefined4 *)puVar4[3] != (undefined4 *)0x0))) {\n        puVar4 = puVar9;\n        puVar11 = (undefined4 *)puVar4[1];\n        if (puVar11 == (undefined4 *)0x0) goto LAB_0003e958;\n      }\n      puVar9 = puVar4 + 2;\n      puVar4 = (undefined4 *)*puVar9;\n      if ((undefined4 *)*puVar9 == (undefined4 *)0x0) {\n        puVar4 = puVar11;\n      }\n    }\nLAB_0003e958:\n    iVar12 = puVar4[0xb];\n    if ((iVar12 == 0) && (iVar12 = puVar4[10], iVar12 == 0)) {\n      iVar12 = puVar4[9];\n    }\n    puVar2[local_38 + 9] = iVar12;\n    param_2 = puVar2[local_38 + 5] + -1;\n  }" if (parenthesized_expression "(puVar5[10] == 0)" ( (binary_expression "puVar5[10] == 0" (subscript_expression "puVar5[10]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n    puVar4 = (undefined4 *)puVar2[local_38 + 2];\n    iVar12 = local_38 + 1;\n    puVar11 = (undefined4 *)puVar4[1];\n    puVar9 = puVar4;\n    if (puVar4[10] == 0) {\n      uVar7 = puVar2[local_38 + 9];\n      puVar5[3] = puVar11;\n      puVar5[10] = uVar7;\n      puVar5[7] = puVar4[5];\n      if (puVar11 != (undefined4 *)0x0) {\n        *puVar11 = puVar5;\n      }\n      uVar7 = puVar4[6];\n      puVar5[0xb] = puVar4[9];\n      puVar11 = (undefined4 *)puVar4[2];\n      puVar5[8] = uVar7;\n      puVar5[4] = puVar11;\n      if (puVar11 != (undefined4 *)0x0) {\n        *puVar11 = puVar5;\n      }\n      FUN_0001a110(puVar4);\n      uVar7 = FUN_0003e010();\n      puVar2[local_38 + 5] = uVar7;\n      if (local_38 == 2) {\nLAB_0003ec29:\n        iVar12 = 3;\n        iVar6 = 2;\n      }\n      else {\n        iVar10 = puVar2[local_38 + 10];\n        iVar6 = local_38;\n        if (iVar10 != 0) {\n          do {\n            puVar2[iVar12 + 8] = iVar10;\n            puVar2[iVar12 + 1] = puVar2[iVar12 + 2];\n            puVar2[iVar12 + 5] = puVar2[iVar12 + 6];\n            if (iVar12 == 2) goto LAB_0003ec29;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);\n          iVar6 = 1;\n        }\n      }\n      puVar2[iVar6 + 9] = 0;\n      puVar2[iVar12 + 1] = 0;\n      puVar2[iVar12 + 5] = 0;\n      if (puVar2[9] == 0) {\n        *puVar3 = puVar5;\n        *puVar5 = 0;\n        FUN_0001a110(puVar2);\n      }\n      param_2 = puVar5[6] + puVar5[5] + 1;\n    }\n    else {\n      while (puVar5 = puVar11, puVar5 != (undefined4 *)0x0) {\n        puVar9 = puVar5;\n        puVar11 = (undefined4 *)puVar5[1];\n      }\n      puVar2[local_38 + 9] = puVar9[9];\n      param_2 = 0;\n      puVar5 = puVar4;\n    }\n  }" { (expression_statement "puVar4 = (undefined4 *)puVar2[local_38 + 2];" (assignment_expression "puVar4 = (undefined4 *)puVar2[local_38 + 2]" identifier = (cast_expression "(undefined4 *)puVar2[local_38 + 2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar2[local_38 + 2]" identifier [ (binary_expression "local_38 + 2" identifier + number_literal) ]))) ;) (expression_statement "iVar12 = local_38 + 1;" (assignment_expression "iVar12 = local_38 + 1" identifier = (binary_expression "local_38 + 1" identifier + number_literal)) ;) (expression_statement "puVar11 = (undefined4 *)puVar4[1];" (assignment_expression "puVar11 = (undefined4 *)puVar4[1]" identifier = (cast_expression "(undefined4 *)puVar4[1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar4[1]" identifier [ number_literal ]))) ;) (expression_statement "puVar9 = puVar4;" (assignment_expression "puVar9 = puVar4" identifier = identifier) ;) (if_statement "if (puVar4[10] == 0) {\n      uVar7 = puVar2[local_38 + 9];\n      puVar5[3] = puVar11;\n      puVar5[10] = uVar7;\n      puVar5[7] = puVar4[5];\n      if (puVar11 != (undefined4 *)0x0) {\n        *puVar11 = puVar5;\n      }\n      uVar7 = puVar4[6];\n      puVar5[0xb] = puVar4[9];\n      puVar11 = (undefined4 *)puVar4[2];\n      puVar5[8] = uVar7;\n      puVar5[4] = puVar11;\n      if (puVar11 != (undefined4 *)0x0) {\n        *puVar11 = puVar5;\n      }\n      FUN_0001a110(puVar4);\n      uVar7 = FUN_0003e010();\n      puVar2[local_38 + 5] = uVar7;\n      if (local_38 == 2) {\nLAB_0003ec29:\n        iVar12 = 3;\n        iVar6 = 2;\n      }\n      else {\n        iVar10 = puVar2[local_38 + 10];\n        iVar6 = local_38;\n        if (iVar10 != 0) {\n          do {\n            puVar2[iVar12 + 8] = iVar10;\n            puVar2[iVar12 + 1] = puVar2[iVar12 + 2];\n            puVar2[iVar12 + 5] = puVar2[iVar12 + 6];\n            if (iVar12 == 2) goto LAB_0003ec29;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);\n          iVar6 = 1;\n        }\n      }\n      puVar2[iVar6 + 9] = 0;\n      puVar2[iVar12 + 1] = 0;\n      puVar2[iVar12 + 5] = 0;\n      if (puVar2[9] == 0) {\n        *puVar3 = puVar5;\n        *puVar5 = 0;\n        FUN_0001a110(puVar2);\n      }\n      param_2 = puVar5[6] + puVar5[5] + 1;\n    }\n    else {\n      while (puVar5 = puVar11, puVar5 != (undefined4 *)0x0) {\n        puVar9 = puVar5;\n        puVar11 = (undefined4 *)puVar5[1];\n      }\n      puVar2[local_38 + 9] = puVar9[9];\n      param_2 = 0;\n      puVar5 = puVar4;\n    }" if (parenthesized_expression "(puVar4[10] == 0)" ( (binary_expression "puVar4[10] == 0" (subscript_expression "puVar4[10]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      uVar7 = puVar2[local_38 + 9];\n      puVar5[3] = puVar11;\n      puVar5[10] = uVar7;\n      puVar5[7] = puVar4[5];\n      if (puVar11 != (undefined4 *)0x0) {\n        *puVar11 = puVar5;\n      }\n      uVar7 = puVar4[6];\n      puVar5[0xb] = puVar4[9];\n      puVar11 = (undefined4 *)puVar4[2];\n      puVar5[8] = uVar7;\n      puVar5[4] = puVar11;\n      if (puVar11 != (undefined4 *)0x0) {\n        *puVar11 = puVar5;\n      }\n      FUN_0001a110(puVar4);\n      uVar7 = FUN_0003e010();\n      puVar2[local_38 + 5] = uVar7;\n      if (local_38 == 2) {\nLAB_0003ec29:\n        iVar12 = 3;\n        iVar6 = 2;\n      }\n      else {\n        iVar10 = puVar2[local_38 + 10];\n        iVar6 = local_38;\n        if (iVar10 != 0) {\n          do {\n            puVar2[iVar12 + 8] = iVar10;\n            puVar2[iVar12 + 1] = puVar2[iVar12 + 2];\n            puVar2[iVar12 + 5] = puVar2[iVar12 + 6];\n            if (iVar12 == 2) goto LAB_0003ec29;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);\n          iVar6 = 1;\n        }\n      }\n      puVar2[iVar6 + 9] = 0;\n      puVar2[iVar12 + 1] = 0;\n      puVar2[iVar12 + 5] = 0;\n      if (puVar2[9] == 0) {\n        *puVar3 = puVar5;\n        *puVar5 = 0;\n        FUN_0001a110(puVar2);\n      }\n      param_2 = puVar5[6] + puVar5[5] + 1;\n    }" { (expression_statement "uVar7 = puVar2[local_38 + 9];" (assignment_expression "uVar7 = puVar2[local_38 + 9]" identifier = (subscript_expression "puVar2[local_38 + 9]" identifier [ (binary_expression "local_38 + 9" identifier + number_literal) ])) ;) (expression_statement "puVar5[3] = puVar11;" (assignment_expression "puVar5[3] = puVar11" (subscript_expression "puVar5[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar5[10] = uVar7;" (assignment_expression "puVar5[10] = uVar7" (subscript_expression "puVar5[10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar5[7] = puVar4[5];" (assignment_expression "puVar5[7] = puVar4[5]" (subscript_expression "puVar5[7]" identifier [ number_literal ]) = (subscript_expression "puVar4[5]" identifier [ number_literal ])) ;) (if_statement "if (puVar11 != (undefined4 *)0x0) {\n        *puVar11 = puVar5;\n      }" if (parenthesized_expression "(puVar11 != (undefined4 *)0x0)" ( (binary_expression "puVar11 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        *puVar11 = puVar5;\n      }" { (expression_statement "*puVar11 = puVar5;" (assignment_expression "*puVar11 = puVar5" (pointer_expression "*puVar11" * identifier) = identifier) ;) })) (expression_statement "uVar7 = puVar4[6];" (assignment_expression "uVar7 = puVar4[6]" identifier = (subscript_expression "puVar4[6]" identifier [ number_literal ])) ;) (expression_statement "puVar5[0xb] = puVar4[9];" (assignment_expression "puVar5[0xb] = puVar4[9]" (subscript_expression "puVar5[0xb]" identifier [ number_literal ]) = (subscript_expression "puVar4[9]" identifier [ number_literal ])) ;) (expression_statement "puVar11 = (undefined4 *)puVar4[2];" (assignment_expression "puVar11 = (undefined4 *)puVar4[2]" identifier = (cast_expression "(undefined4 *)puVar4[2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar4[2]" identifier [ number_literal ]))) ;) (expression_statement "puVar5[8] = uVar7;" (assignment_expression "puVar5[8] = uVar7" (subscript_expression "puVar5[8]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar5[4] = puVar11;" (assignment_expression "puVar5[4] = puVar11" (subscript_expression "puVar5[4]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (puVar11 != (undefined4 *)0x0) {\n        *puVar11 = puVar5;\n      }" if (parenthesized_expression "(puVar11 != (undefined4 *)0x0)" ( (binary_expression "puVar11 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        *puVar11 = puVar5;\n      }" { (expression_statement "*puVar11 = puVar5;" (assignment_expression "*puVar11 = puVar5" (pointer_expression "*puVar11" * identifier) = identifier) ;) })) (expression_statement "FUN_0001a110(puVar4);" (call_expression "FUN_0001a110(puVar4)" identifier (argument_list "(puVar4)" ( identifier ))) ;) (expression_statement "uVar7 = FUN_0003e010();" (assignment_expression "uVar7 = FUN_0003e010()" identifier = (call_expression "FUN_0003e010()" identifier (argument_list "()" ( )))) ;) (expression_statement "puVar2[local_38 + 5] = uVar7;" (assignment_expression "puVar2[local_38 + 5] = uVar7" (subscript_expression "puVar2[local_38 + 5]" identifier [ (binary_expression "local_38 + 5" identifier + number_literal) ]) = identifier) ;) (if_statement "if (local_38 == 2) {\nLAB_0003ec29:\n        iVar12 = 3;\n        iVar6 = 2;\n      }\n      else {\n        iVar10 = puVar2[local_38 + 10];\n        iVar6 = local_38;\n        if (iVar10 != 0) {\n          do {\n            puVar2[iVar12 + 8] = iVar10;\n            puVar2[iVar12 + 1] = puVar2[iVar12 + 2];\n            puVar2[iVar12 + 5] = puVar2[iVar12 + 6];\n            if (iVar12 == 2) goto LAB_0003ec29;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);\n          iVar6 = 1;\n        }\n      }" if (parenthesized_expression "(local_38 == 2)" ( (binary_expression "local_38 == 2" identifier == number_literal) )) (compound_statement "{\nLAB_0003ec29:\n        iVar12 = 3;\n        iVar6 = 2;\n      }" { (labeled_statement "LAB_0003ec29:\n        iVar12 = 3;" statement_identifier : (expression_statement "iVar12 = 3;" (assignment_expression "iVar12 = 3" identifier = number_literal) ;)) (expression_statement "iVar6 = 2;" (assignment_expression "iVar6 = 2" identifier = number_literal) ;) }) (else_clause "else {\n        iVar10 = puVar2[local_38 + 10];\n        iVar6 = local_38;\n        if (iVar10 != 0) {\n          do {\n            puVar2[iVar12 + 8] = iVar10;\n            puVar2[iVar12 + 1] = puVar2[iVar12 + 2];\n            puVar2[iVar12 + 5] = puVar2[iVar12 + 6];\n            if (iVar12 == 2) goto LAB_0003ec29;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);\n          iVar6 = 1;\n        }\n      }" else (compound_statement "{\n        iVar10 = puVar2[local_38 + 10];\n        iVar6 = local_38;\n        if (iVar10 != 0) {\n          do {\n            puVar2[iVar12 + 8] = iVar10;\n            puVar2[iVar12 + 1] = puVar2[iVar12 + 2];\n            puVar2[iVar12 + 5] = puVar2[iVar12 + 6];\n            if (iVar12 == 2) goto LAB_0003ec29;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);\n          iVar6 = 1;\n        }\n      }" { (expression_statement "iVar10 = puVar2[local_38 + 10];" (assignment_expression "iVar10 = puVar2[local_38 + 10]" identifier = (subscript_expression "puVar2[local_38 + 10]" identifier [ (binary_expression "local_38 + 10" identifier + number_literal) ])) ;) (expression_statement "iVar6 = local_38;" (assignment_expression "iVar6 = local_38" identifier = identifier) ;) (if_statement "if (iVar10 != 0) {\n          do {\n            puVar2[iVar12 + 8] = iVar10;\n            puVar2[iVar12 + 1] = puVar2[iVar12 + 2];\n            puVar2[iVar12 + 5] = puVar2[iVar12 + 6];\n            if (iVar12 == 2) goto LAB_0003ec29;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);\n          iVar6 = 1;\n        }" if (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) (compound_statement "{\n          do {\n            puVar2[iVar12 + 8] = iVar10;\n            puVar2[iVar12 + 1] = puVar2[iVar12 + 2];\n            puVar2[iVar12 + 5] = puVar2[iVar12 + 6];\n            if (iVar12 == 2) goto LAB_0003ec29;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);\n          iVar6 = 1;\n        }" { (do_statement "do {\n            puVar2[iVar12 + 8] = iVar10;\n            puVar2[iVar12 + 1] = puVar2[iVar12 + 2];\n            puVar2[iVar12 + 5] = puVar2[iVar12 + 6];\n            if (iVar12 == 2) goto LAB_0003ec29;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);" do (compound_statement "{\n            puVar2[iVar12 + 8] = iVar10;\n            puVar2[iVar12 + 1] = puVar2[iVar12 + 2];\n            puVar2[iVar12 + 5] = puVar2[iVar12 + 6];\n            if (iVar12 == 2) goto LAB_0003ec29;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          }" { (expression_statement "puVar2[iVar12 + 8] = iVar10;" (assignment_expression "puVar2[iVar12 + 8] = iVar10" (subscript_expression "puVar2[iVar12 + 8]" identifier [ (binary_expression "iVar12 + 8" identifier + number_literal) ]) = identifier) ;) (expression_statement "puVar2[iVar12 + 1] = puVar2[iVar12 + 2];" (assignment_expression "puVar2[iVar12 + 1] = puVar2[iVar12 + 2]" (subscript_expression "puVar2[iVar12 + 1]" identifier [ (binary_expression "iVar12 + 1" identifier + number_literal) ]) = (subscript_expression "puVar2[iVar12 + 2]" identifier [ (binary_expression "iVar12 + 2" identifier + number_literal) ])) ;) (expression_statement "puVar2[iVar12 + 5] = puVar2[iVar12 + 6];" (assignment_expression "puVar2[iVar12 + 5] = puVar2[iVar12 + 6]" (subscript_expression "puVar2[iVar12 + 5]" identifier [ (binary_expression "iVar12 + 5" identifier + number_literal) ]) = (subscript_expression "puVar2[iVar12 + 6]" identifier [ (binary_expression "iVar12 + 6" identifier + number_literal) ])) ;) (if_statement "if (iVar12 == 2) goto LAB_0003ec29;" if (parenthesized_expression "(iVar12 == 2)" ( (binary_expression "iVar12 == 2" identifier == number_literal) )) (goto_statement "goto LAB_0003ec29;" goto statement_identifier ;)) (expression_statement "iVar10 = puVar2[0xb];" (assignment_expression "iVar10 = puVar2[0xb]" identifier = (subscript_expression "puVar2[0xb]" identifier [ number_literal ])) ;) (expression_statement "iVar12 = 2;" (assignment_expression "iVar12 = 2" identifier = number_literal) ;) }) while (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) ;) (expression_statement "iVar6 = 1;" (assignment_expression "iVar6 = 1" identifier = number_literal) ;) })) }))) (expression_statement "puVar2[iVar6 + 9] = 0;" (assignment_expression "puVar2[iVar6 + 9] = 0" (subscript_expression "puVar2[iVar6 + 9]" identifier [ (binary_expression "iVar6 + 9" identifier + number_literal) ]) = number_literal) ;) (expression_statement "puVar2[iVar12 + 1] = 0;" (assignment_expression "puVar2[iVar12 + 1] = 0" (subscript_expression "puVar2[iVar12 + 1]" identifier [ (binary_expression "iVar12 + 1" identifier + number_literal) ]) = number_literal) ;) (expression_statement "puVar2[iVar12 + 5] = 0;" (assignment_expression "puVar2[iVar12 + 5] = 0" (subscript_expression "puVar2[iVar12 + 5]" identifier [ (binary_expression "iVar12 + 5" identifier + number_literal) ]) = number_literal) ;) (if_statement "if (puVar2[9] == 0) {\n        *puVar3 = puVar5;\n        *puVar5 = 0;\n        FUN_0001a110(puVar2);\n      }" if (parenthesized_expression "(puVar2[9] == 0)" ( (binary_expression "puVar2[9] == 0" (subscript_expression "puVar2[9]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n        *puVar3 = puVar5;\n        *puVar5 = 0;\n        FUN_0001a110(puVar2);\n      }" { (expression_statement "*puVar3 = puVar5;" (assignment_expression "*puVar3 = puVar5" (pointer_expression "*puVar3" * identifier) = identifier) ;) (expression_statement "*puVar5 = 0;" (assignment_expression "*puVar5 = 0" (pointer_expression "*puVar5" * identifier) = number_literal) ;) (expression_statement "FUN_0001a110(puVar2);" (call_expression "FUN_0001a110(puVar2)" identifier (argument_list "(puVar2)" ( identifier ))) ;) })) (expression_statement "param_2 = puVar5[6] + puVar5[5] + 1;" (assignment_expression "param_2 = puVar5[6] + puVar5[5] + 1" identifier = (binary_expression "puVar5[6] + puVar5[5] + 1" (binary_expression "puVar5[6] + puVar5[5]" (subscript_expression "puVar5[6]" identifier [ number_literal ]) + (subscript_expression "puVar5[5]" identifier [ number_literal ])) + number_literal)) ;) }) (else_clause "else {\n      while (puVar5 = puVar11, puVar5 != (undefined4 *)0x0) {\n        puVar9 = puVar5;\n        puVar11 = (undefined4 *)puVar5[1];\n      }\n      puVar2[local_38 + 9] = puVar9[9];\n      param_2 = 0;\n      puVar5 = puVar4;\n    }" else (compound_statement "{\n      while (puVar5 = puVar11, puVar5 != (undefined4 *)0x0) {\n        puVar9 = puVar5;\n        puVar11 = (undefined4 *)puVar5[1];\n      }\n      puVar2[local_38 + 9] = puVar9[9];\n      param_2 = 0;\n      puVar5 = puVar4;\n    }" { (while_statement "while (puVar5 = puVar11, puVar5 != (undefined4 *)0x0) {\n        puVar9 = puVar5;\n        puVar11 = (undefined4 *)puVar5[1];\n      }" while (parenthesized_expression "(puVar5 = puVar11, puVar5 != (undefined4 *)0x0)" ( (comma_expression "puVar5 = puVar11, puVar5 != (undefined4 *)0x0" (assignment_expression "puVar5 = puVar11" identifier = identifier) , (binary_expression "puVar5 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) )) (compound_statement "{\n        puVar9 = puVar5;\n        puVar11 = (undefined4 *)puVar5[1];\n      }" { (expression_statement "puVar9 = puVar5;" (assignment_expression "puVar9 = puVar5" identifier = identifier) ;) (expression_statement "puVar11 = (undefined4 *)puVar5[1];" (assignment_expression "puVar11 = (undefined4 *)puVar5[1]" identifier = (cast_expression "(undefined4 *)puVar5[1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar5[1]" identifier [ number_literal ]))) ;) })) (expression_statement "puVar2[local_38 + 9] = puVar9[9];" (assignment_expression "puVar2[local_38 + 9] = puVar9[9]" (subscript_expression "puVar2[local_38 + 9]" identifier [ (binary_expression "local_38 + 9" identifier + number_literal) ]) = (subscript_expression "puVar9[9]" identifier [ number_literal ])) ;) (expression_statement "param_2 = 0;" (assignment_expression "param_2 = 0" identifier = number_literal) ;) (expression_statement "puVar5 = puVar4;" (assignment_expression "puVar5 = puVar4" identifier = identifier) ;) }))) }) (else_clause "else {\n    while (puVar11 = (undefined4 *)puVar4[1], puVar11 != (undefined4 *)0x0) {\n      while ((puVar9 = (undefined4 *)puVar4[4], (undefined4 *)puVar4[4] != (undefined4 *)0x0 ||\n             (puVar9 = (undefined4 *)puVar4[3], (undefined4 *)puVar4[3] != (undefined4 *)0x0))) {\n        puVar4 = puVar9;\n        puVar11 = (undefined4 *)puVar4[1];\n        if (puVar11 == (undefined4 *)0x0) goto LAB_0003e958;\n      }\n      puVar9 = puVar4 + 2;\n      puVar4 = (undefined4 *)*puVar9;\n      if ((undefined4 *)*puVar9 == (undefined4 *)0x0) {\n        puVar4 = puVar11;\n      }\n    }\nLAB_0003e958:\n    iVar12 = puVar4[0xb];\n    if ((iVar12 == 0) && (iVar12 = puVar4[10], iVar12 == 0)) {\n      iVar12 = puVar4[9];\n    }\n    puVar2[local_38 + 9] = iVar12;\n    param_2 = puVar2[local_38 + 5] + -1;\n  }" else (compound_statement "{\n    while (puVar11 = (undefined4 *)puVar4[1], puVar11 != (undefined4 *)0x0) {\n      while ((puVar9 = (undefined4 *)puVar4[4], (undefined4 *)puVar4[4] != (undefined4 *)0x0 ||\n             (puVar9 = (undefined4 *)puVar4[3], (undefined4 *)puVar4[3] != (undefined4 *)0x0))) {\n        puVar4 = puVar9;\n        puVar11 = (undefined4 *)puVar4[1];\n        if (puVar11 == (undefined4 *)0x0) goto LAB_0003e958;\n      }\n      puVar9 = puVar4 + 2;\n      puVar4 = (undefined4 *)*puVar9;\n      if ((undefined4 *)*puVar9 == (undefined4 *)0x0) {\n        puVar4 = puVar11;\n      }\n    }\nLAB_0003e958:\n    iVar12 = puVar4[0xb];\n    if ((iVar12 == 0) && (iVar12 = puVar4[10], iVar12 == 0)) {\n      iVar12 = puVar4[9];\n    }\n    puVar2[local_38 + 9] = iVar12;\n    param_2 = puVar2[local_38 + 5] + -1;\n  }" { (while_statement "while (puVar11 = (undefined4 *)puVar4[1], puVar11 != (undefined4 *)0x0) {\n      while ((puVar9 = (undefined4 *)puVar4[4], (undefined4 *)puVar4[4] != (undefined4 *)0x0 ||\n             (puVar9 = (undefined4 *)puVar4[3], (undefined4 *)puVar4[3] != (undefined4 *)0x0))) {\n        puVar4 = puVar9;\n        puVar11 = (undefined4 *)puVar4[1];\n        if (puVar11 == (undefined4 *)0x0) goto LAB_0003e958;\n      }\n      puVar9 = puVar4 + 2;\n      puVar4 = (undefined4 *)*puVar9;\n      if ((undefined4 *)*puVar9 == (undefined4 *)0x0) {\n        puVar4 = puVar11;\n      }\n    }" while (parenthesized_expression "(puVar11 = (undefined4 *)puVar4[1], puVar11 != (undefined4 *)0x0)" ( (comma_expression "puVar11 = (undefined4 *)puVar4[1], puVar11 != (undefined4 *)0x0" (assignment_expression "puVar11 = (undefined4 *)puVar4[1]" identifier = (cast_expression "(undefined4 *)puVar4[1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar4[1]" identifier [ number_literal ]))) , (binary_expression "puVar11 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) )) (compound_statement "{\n      while ((puVar9 = (undefined4 *)puVar4[4], (undefined4 *)puVar4[4] != (undefined4 *)0x0 ||\n             (puVar9 = (undefined4 *)puVar4[3], (undefined4 *)puVar4[3] != (undefined4 *)0x0))) {\n        puVar4 = puVar9;\n        puVar11 = (undefined4 *)puVar4[1];\n        if (puVar11 == (undefined4 *)0x0) goto LAB_0003e958;\n      }\n      puVar9 = puVar4 + 2;\n      puVar4 = (undefined4 *)*puVar9;\n      if ((undefined4 *)*puVar9 == (undefined4 *)0x0) {\n        puVar4 = puVar11;\n      }\n    }" { (while_statement "while ((puVar9 = (undefined4 *)puVar4[4], (undefined4 *)puVar4[4] != (undefined4 *)0x0 ||\n             (puVar9 = (undefined4 *)puVar4[3], (undefined4 *)puVar4[3] != (undefined4 *)0x0))) {\n        puVar4 = puVar9;\n        puVar11 = (undefined4 *)puVar4[1];\n        if (puVar11 == (undefined4 *)0x0) goto LAB_0003e958;\n      }" while (parenthesized_expression "((puVar9 = (undefined4 *)puVar4[4], (undefined4 *)puVar4[4] != (undefined4 *)0x0 ||\n             (puVar9 = (undefined4 *)puVar4[3], (undefined4 *)puVar4[3] != (undefined4 *)0x0)))" ( (parenthesized_expression "(puVar9 = (undefined4 *)puVar4[4], (undefined4 *)puVar4[4] != (undefined4 *)0x0 ||\n             (puVar9 = (undefined4 *)puVar4[3], (undefined4 *)puVar4[3] != (undefined4 *)0x0))" ( (comma_expression "puVar9 = (undefined4 *)puVar4[4], (undefined4 *)puVar4[4] != (undefined4 *)0x0 ||\n             (puVar9 = (undefined4 *)puVar4[3], (undefined4 *)puVar4[3] != (undefined4 *)0x0)" (assignment_expression "puVar9 = (undefined4 *)puVar4[4]" identifier = (cast_expression "(undefined4 *)puVar4[4]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar4[4]" identifier [ number_literal ]))) , (binary_expression "(undefined4 *)puVar4[4] != (undefined4 *)0x0 ||\n             (puVar9 = (undefined4 *)puVar4[3], (undefined4 *)puVar4[3] != (undefined4 *)0x0)" (binary_expression "(undefined4 *)puVar4[4] != (undefined4 *)0x0" (cast_expression "(undefined4 *)puVar4[4]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar4[4]" identifier [ number_literal ])) != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) || (parenthesized_expression "(puVar9 = (undefined4 *)puVar4[3], (undefined4 *)puVar4[3] != (undefined4 *)0x0)" ( (comma_expression "puVar9 = (undefined4 *)puVar4[3], (undefined4 *)puVar4[3] != (undefined4 *)0x0" (assignment_expression "puVar9 = (undefined4 *)puVar4[3]" identifier = (cast_expression "(undefined4 *)puVar4[3]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar4[3]" identifier [ number_literal ]))) , (binary_expression "(undefined4 *)puVar4[3] != (undefined4 *)0x0" (cast_expression "(undefined4 *)puVar4[3]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar4[3]" identifier [ number_literal ])) != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) )))) )) )) (compound_statement "{\n        puVar4 = puVar9;\n        puVar11 = (undefined4 *)puVar4[1];\n        if (puVar11 == (undefined4 *)0x0) goto LAB_0003e958;\n      }" { (expression_statement "puVar4 = puVar9;" (assignment_expression "puVar4 = puVar9" identifier = identifier) ;) (expression_statement "puVar11 = (undefined4 *)puVar4[1];" (assignment_expression "puVar11 = (undefined4 *)puVar4[1]" identifier = (cast_expression "(undefined4 *)puVar4[1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar4[1]" identifier [ number_literal ]))) ;) (if_statement "if (puVar11 == (undefined4 *)0x0) goto LAB_0003e958;" if (parenthesized_expression "(puVar11 == (undefined4 *)0x0)" ( (binary_expression "puVar11 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0003e958;" goto statement_identifier ;)) })) (expression_statement "puVar9 = puVar4 + 2;" (assignment_expression "puVar9 = puVar4 + 2" identifier = (binary_expression "puVar4 + 2" identifier + number_literal)) ;) (expression_statement "puVar4 = (undefined4 *)*puVar9;" (assignment_expression "puVar4 = (undefined4 *)*puVar9" identifier = (cast_expression "(undefined4 *)*puVar9" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar9" * identifier))) ;) (if_statement "if ((undefined4 *)*puVar9 == (undefined4 *)0x0) {\n        puVar4 = puVar11;\n      }" if (parenthesized_expression "((undefined4 *)*puVar9 == (undefined4 *)0x0)" ( (binary_expression "(undefined4 *)*puVar9 == (undefined4 *)0x0" (cast_expression "(undefined4 *)*puVar9" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar9" * identifier)) == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        puVar4 = puVar11;\n      }" { (expression_statement "puVar4 = puVar11;" (assignment_expression "puVar4 = puVar11" identifier = identifier) ;) })) })) (labeled_statement "LAB_0003e958:\n    iVar12 = puVar4[0xb];" statement_identifier : (expression_statement "iVar12 = puVar4[0xb];" (assignment_expression "iVar12 = puVar4[0xb]" identifier = (subscript_expression "puVar4[0xb]" identifier [ number_literal ])) ;)) (if_statement "if ((iVar12 == 0) && (iVar12 = puVar4[10], iVar12 == 0)) {\n      iVar12 = puVar4[9];\n    }" if (parenthesized_expression "((iVar12 == 0) && (iVar12 = puVar4[10], iVar12 == 0))" ( (binary_expression "(iVar12 == 0) && (iVar12 = puVar4[10], iVar12 == 0)" (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) )) && (parenthesized_expression "(iVar12 = puVar4[10], iVar12 == 0)" ( (comma_expression "iVar12 = puVar4[10], iVar12 == 0" (assignment_expression "iVar12 = puVar4[10]" identifier = (subscript_expression "puVar4[10]" identifier [ number_literal ])) , (binary_expression "iVar12 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n      iVar12 = puVar4[9];\n    }" { (expression_statement "iVar12 = puVar4[9];" (assignment_expression "iVar12 = puVar4[9]" identifier = (subscript_expression "puVar4[9]" identifier [ number_literal ])) ;) })) (expression_statement "puVar2[local_38 + 9] = iVar12;" (assignment_expression "puVar2[local_38 + 9] = iVar12" (subscript_expression "puVar2[local_38 + 9]" identifier [ (binary_expression "local_38 + 9" identifier + number_literal) ]) = identifier) ;) (expression_statement "param_2 = puVar2[local_38 + 5] + -1;" (assignment_expression "param_2 = puVar2[local_38 + 5] + -1" identifier = (binary_expression "puVar2[local_38 + 5] + -1" (subscript_expression "puVar2[local_38 + 5]" identifier [ (binary_expression "local_38 + 5" identifier + number_literal) ]) + number_literal)) ;) }))) (goto_statement "goto joined_r0x0003e772;" goto statement_identifier ;) (labeled_statement "LAB_0003eab0:\n  puVar5 = (undefined4 *)puVar2[2];" statement_identifier : (expression_statement "puVar5 = (undefined4 *)puVar2[2];" (assignment_expression "puVar5 = (undefined4 *)puVar2[2]" identifier = (cast_expression "(undefined4 *)puVar2[2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar2[2]" identifier [ number_literal ]))) ;)) (if_statement "if (puVar5[10] == 0) {\n    local_30 = 1;\n    iVar10 = 0;\nLAB_0003eacb:\n    puVar4 = (undefined4 *)puVar2[iVar10 + 1];\n    if (puVar4[10] == 0) {\n      local_28 = local_30 + 1;\n      puVar11 = puVar2 + local_30;\n      puVar9 = (undefined4 *)puVar11[2];\n      if (puVar9 == (undefined4 *)0x0) {\n        puVar9 = (undefined4 *)puVar11[1];\n        iVar12 = param_2 + 1 + puVar2[iVar10 + 5];\n      }\n      else {\n        if (puVar9[10] != 0) {\nLAB_0003e836:\n          uVar7 = puVar9[5];\n          puVar5[10] = puVar2[local_30 + 9];\n          puVar4 = (undefined4 *)puVar9[1];\n          puVar5[7] = uVar7;\n          puVar5[3] = puVar4;\n          if (puVar4 != (undefined4 *)0x0) {\n            *puVar4 = puVar5;\n          }\n          puVar2[local_30 + 9] = puVar9[9];\n          puVar9[1] = puVar9[2];\n          puVar9[5] = puVar9[6];\n          if (puVar9[10] == 0) {\n            iVar12 = 1;\n            iVar10 = 0;\n          }\n          else {\n            puVar9[9] = puVar9[10];\n            puVar9[2] = puVar9[3];\n            puVar9[6] = puVar9[7];\n            if (puVar9[0xb] == 0) {\n              iVar12 = 2;\n              iVar10 = 1;\n            }\n            else {\n              puVar9[10] = puVar9[0xb];\n              iVar12 = 3;\n              puVar9[3] = puVar9[4];\n              puVar9[7] = puVar9[8];\n              iVar10 = 2;\n            }\n          }\n          puVar9[iVar12 + 1] = 0;\n          puVar9[iVar12 + 5] = 0;\n          puVar9[iVar10 + 9] = 0;\n          uVar7 = FUN_0003e010();\n          puVar2[local_30 + 5] = uVar7;\n          uVar7 = FUN_0003e010();\n          puVar2[local_28 + 5] = uVar7;\n          puVar5 = extraout_ECX;\n          goto joined_r0x0003e772;\n        }\n        puVar4 = (undefined4 *)*puVar11;\n        puVar9 = (undefined4 *)puVar11[1];\n        iVar10 = local_30 + -1;\n        iVar12 = param_2 + 1 + puVar11[4];\n      }\nLAB_0003ed0c:\n      puVar9[4] = puVar9[2];\n      puVar9[8] = puVar9[6];\n      puVar9[0xb] = puVar9[9];\n      puVar9[3] = puVar9[1];\n      puVar9[7] = puVar9[5];\n      uVar7 = puVar4[6];\n      puVar9[10] = puVar2[iVar10 + 9];\n      puVar5 = (undefined4 *)puVar4[2];\n      puVar9[6] = uVar7;\n      puVar9[2] = puVar5;\n      if (puVar5 != (undefined4 *)0x0) {\n        *puVar5 = puVar9;\n      }\n      uVar7 = puVar4[5];\n      puVar9[9] = puVar4[9];\n      puVar5 = (undefined4 *)puVar4[1];\n      puVar9[5] = uVar7;\n      puVar9[1] = puVar5;\n      if (puVar5 != (undefined4 *)0x0) {\n        *puVar5 = puVar9;\n      }\n      uVar7 = FUN_0003e010();\n      puVar2[local_30 + 5] = uVar7;\n      FUN_0001a110(extraout_ECX_00);\n      iVar6 = puVar2[iVar10 + 2];\n      while (iVar6 != 0) {\n        iVar8 = iVar10 + 1;\n        puVar2[iVar8] = iVar6;\n        puVar2[iVar10 + 5] = puVar2[iVar10 + 6];\n        if (iVar8 == 3) {\n          puVar2[0xb] = 0;\n          puVar2[4] = 0;\n          puVar2[8] = 0;\n          goto LAB_0003edcd;\n        }\n        puVar2[iVar10 + 9] = puVar2[iVar10 + 10];\n        iVar6 = puVar2[iVar10 + 3];\n        iVar10 = iVar8;\n      }\n      puVar2[iVar10 + 1] = 0;\n      puVar2[iVar10 + 5] = 0;\n      puVar2[iVar10 + 9] = 0;\nLAB_0003edcd:\n      param_2 = iVar12;\n      puVar5 = puVar9;\n      if (puVar2[9] == 0) {\n        *puVar3 = puVar9;\n        *puVar9 = 0;\n        FUN_0001a110(puVar2);\n      }\n      goto joined_r0x0003e772;\n    }\nLAB_0003eae0:\n    uVar1 = (uint)(puVar4[0xb] == 0);\n    puVar5[3] = puVar5[2];\n    puVar5[7] = puVar5[6];\n    puVar5[10] = puVar5[9];\n    puVar5[2] = puVar5[1];\n    puVar5[6] = puVar5[5];\n    puVar5[9] = puVar2[iVar10 + 9];\n    puVar11 = (undefined4 *)puVar4[4 - uVar1];\n    puVar5[1] = puVar11;\n    puVar5[5] = puVar4[8 - uVar1];\n    if (puVar11 != (undefined4 *)0x0) {\n      *puVar11 = puVar5;\n    }\n    puVar2[iVar10 + 9] = puVar4[-uVar1 + 0xb];\n    puVar4[4 - uVar1] = 0;\n    puVar4[8 - uVar1] = 0;\n    puVar4[-uVar1 + 0xb] = 0;\n    uVar7 = FUN_0003e010();\n    puVar2[local_30 + 5] = uVar7;\n    iVar12 = puVar2[iVar10 + 5];\n    iVar6 = FUN_0003e010();\n    puVar2[iVar10 + 5] = iVar6;\n    param_2 = (param_2 + iVar12) - iVar6;\n  }" if (parenthesized_expression "(puVar5[10] == 0)" ( (binary_expression "puVar5[10] == 0" (subscript_expression "puVar5[10]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n    local_30 = 1;\n    iVar10 = 0;\nLAB_0003eacb:\n    puVar4 = (undefined4 *)puVar2[iVar10 + 1];\n    if (puVar4[10] == 0) {\n      local_28 = local_30 + 1;\n      puVar11 = puVar2 + local_30;\n      puVar9 = (undefined4 *)puVar11[2];\n      if (puVar9 == (undefined4 *)0x0) {\n        puVar9 = (undefined4 *)puVar11[1];\n        iVar12 = param_2 + 1 + puVar2[iVar10 + 5];\n      }\n      else {\n        if (puVar9[10] != 0) {\nLAB_0003e836:\n          uVar7 = puVar9[5];\n          puVar5[10] = puVar2[local_30 + 9];\n          puVar4 = (undefined4 *)puVar9[1];\n          puVar5[7] = uVar7;\n          puVar5[3] = puVar4;\n          if (puVar4 != (undefined4 *)0x0) {\n            *puVar4 = puVar5;\n          }\n          puVar2[local_30 + 9] = puVar9[9];\n          puVar9[1] = puVar9[2];\n          puVar9[5] = puVar9[6];\n          if (puVar9[10] == 0) {\n            iVar12 = 1;\n            iVar10 = 0;\n          }\n          else {\n            puVar9[9] = puVar9[10];\n            puVar9[2] = puVar9[3];\n            puVar9[6] = puVar9[7];\n            if (puVar9[0xb] == 0) {\n              iVar12 = 2;\n              iVar10 = 1;\n            }\n            else {\n              puVar9[10] = puVar9[0xb];\n              iVar12 = 3;\n              puVar9[3] = puVar9[4];\n              puVar9[7] = puVar9[8];\n              iVar10 = 2;\n            }\n          }\n          puVar9[iVar12 + 1] = 0;\n          puVar9[iVar12 + 5] = 0;\n          puVar9[iVar10 + 9] = 0;\n          uVar7 = FUN_0003e010();\n          puVar2[local_30 + 5] = uVar7;\n          uVar7 = FUN_0003e010();\n          puVar2[local_28 + 5] = uVar7;\n          puVar5 = extraout_ECX;\n          goto joined_r0x0003e772;\n        }\n        puVar4 = (undefined4 *)*puVar11;\n        puVar9 = (undefined4 *)puVar11[1];\n        iVar10 = local_30 + -1;\n        iVar12 = param_2 + 1 + puVar11[4];\n      }\nLAB_0003ed0c:\n      puVar9[4] = puVar9[2];\n      puVar9[8] = puVar9[6];\n      puVar9[0xb] = puVar9[9];\n      puVar9[3] = puVar9[1];\n      puVar9[7] = puVar9[5];\n      uVar7 = puVar4[6];\n      puVar9[10] = puVar2[iVar10 + 9];\n      puVar5 = (undefined4 *)puVar4[2];\n      puVar9[6] = uVar7;\n      puVar9[2] = puVar5;\n      if (puVar5 != (undefined4 *)0x0) {\n        *puVar5 = puVar9;\n      }\n      uVar7 = puVar4[5];\n      puVar9[9] = puVar4[9];\n      puVar5 = (undefined4 *)puVar4[1];\n      puVar9[5] = uVar7;\n      puVar9[1] = puVar5;\n      if (puVar5 != (undefined4 *)0x0) {\n        *puVar5 = puVar9;\n      }\n      uVar7 = FUN_0003e010();\n      puVar2[local_30 + 5] = uVar7;\n      FUN_0001a110(extraout_ECX_00);\n      iVar6 = puVar2[iVar10 + 2];\n      while (iVar6 != 0) {\n        iVar8 = iVar10 + 1;\n        puVar2[iVar8] = iVar6;\n        puVar2[iVar10 + 5] = puVar2[iVar10 + 6];\n        if (iVar8 == 3) {\n          puVar2[0xb] = 0;\n          puVar2[4] = 0;\n          puVar2[8] = 0;\n          goto LAB_0003edcd;\n        }\n        puVar2[iVar10 + 9] = puVar2[iVar10 + 10];\n        iVar6 = puVar2[iVar10 + 3];\n        iVar10 = iVar8;\n      }\n      puVar2[iVar10 + 1] = 0;\n      puVar2[iVar10 + 5] = 0;\n      puVar2[iVar10 + 9] = 0;\nLAB_0003edcd:\n      param_2 = iVar12;\n      puVar5 = puVar9;\n      if (puVar2[9] == 0) {\n        *puVar3 = puVar9;\n        *puVar9 = 0;\n        FUN_0001a110(puVar2);\n      }\n      goto joined_r0x0003e772;\n    }\nLAB_0003eae0:\n    uVar1 = (uint)(puVar4[0xb] == 0);\n    puVar5[3] = puVar5[2];\n    puVar5[7] = puVar5[6];\n    puVar5[10] = puVar5[9];\n    puVar5[2] = puVar5[1];\n    puVar5[6] = puVar5[5];\n    puVar5[9] = puVar2[iVar10 + 9];\n    puVar11 = (undefined4 *)puVar4[4 - uVar1];\n    puVar5[1] = puVar11;\n    puVar5[5] = puVar4[8 - uVar1];\n    if (puVar11 != (undefined4 *)0x0) {\n      *puVar11 = puVar5;\n    }\n    puVar2[iVar10 + 9] = puVar4[-uVar1 + 0xb];\n    puVar4[4 - uVar1] = 0;\n    puVar4[8 - uVar1] = 0;\n    puVar4[-uVar1 + 0xb] = 0;\n    uVar7 = FUN_0003e010();\n    puVar2[local_30 + 5] = uVar7;\n    iVar12 = puVar2[iVar10 + 5];\n    iVar6 = FUN_0003e010();\n    puVar2[iVar10 + 5] = iVar6;\n    param_2 = (param_2 + iVar12) - iVar6;\n  }" { (expression_statement "local_30 = 1;" (assignment_expression "local_30 = 1" identifier = number_literal) ;) (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" identifier = number_literal) ;) (labeled_statement "LAB_0003eacb:\n    puVar4 = (undefined4 *)puVar2[iVar10 + 1];" statement_identifier : (expression_statement "puVar4 = (undefined4 *)puVar2[iVar10 + 1];" (assignment_expression "puVar4 = (undefined4 *)puVar2[iVar10 + 1]" identifier = (cast_expression "(undefined4 *)puVar2[iVar10 + 1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar2[iVar10 + 1]" identifier [ (binary_expression "iVar10 + 1" identifier + number_literal) ]))) ;)) (if_statement "if (puVar4[10] == 0) {\n      local_28 = local_30 + 1;\n      puVar11 = puVar2 + local_30;\n      puVar9 = (undefined4 *)puVar11[2];\n      if (puVar9 == (undefined4 *)0x0) {\n        puVar9 = (undefined4 *)puVar11[1];\n        iVar12 = param_2 + 1 + puVar2[iVar10 + 5];\n      }\n      else {\n        if (puVar9[10] != 0) {\nLAB_0003e836:\n          uVar7 = puVar9[5];\n          puVar5[10] = puVar2[local_30 + 9];\n          puVar4 = (undefined4 *)puVar9[1];\n          puVar5[7] = uVar7;\n          puVar5[3] = puVar4;\n          if (puVar4 != (undefined4 *)0x0) {\n            *puVar4 = puVar5;\n          }\n          puVar2[local_30 + 9] = puVar9[9];\n          puVar9[1] = puVar9[2];\n          puVar9[5] = puVar9[6];\n          if (puVar9[10] == 0) {\n            iVar12 = 1;\n            iVar10 = 0;\n          }\n          else {\n            puVar9[9] = puVar9[10];\n            puVar9[2] = puVar9[3];\n            puVar9[6] = puVar9[7];\n            if (puVar9[0xb] == 0) {\n              iVar12 = 2;\n              iVar10 = 1;\n            }\n            else {\n              puVar9[10] = puVar9[0xb];\n              iVar12 = 3;\n              puVar9[3] = puVar9[4];\n              puVar9[7] = puVar9[8];\n              iVar10 = 2;\n            }\n          }\n          puVar9[iVar12 + 1] = 0;\n          puVar9[iVar12 + 5] = 0;\n          puVar9[iVar10 + 9] = 0;\n          uVar7 = FUN_0003e010();\n          puVar2[local_30 + 5] = uVar7;\n          uVar7 = FUN_0003e010();\n          puVar2[local_28 + 5] = uVar7;\n          puVar5 = extraout_ECX;\n          goto joined_r0x0003e772;\n        }\n        puVar4 = (undefined4 *)*puVar11;\n        puVar9 = (undefined4 *)puVar11[1];\n        iVar10 = local_30 + -1;\n        iVar12 = param_2 + 1 + puVar11[4];\n      }\nLAB_0003ed0c:\n      puVar9[4] = puVar9[2];\n      puVar9[8] = puVar9[6];\n      puVar9[0xb] = puVar9[9];\n      puVar9[3] = puVar9[1];\n      puVar9[7] = puVar9[5];\n      uVar7 = puVar4[6];\n      puVar9[10] = puVar2[iVar10 + 9];\n      puVar5 = (undefined4 *)puVar4[2];\n      puVar9[6] = uVar7;\n      puVar9[2] = puVar5;\n      if (puVar5 != (undefined4 *)0x0) {\n        *puVar5 = puVar9;\n      }\n      uVar7 = puVar4[5];\n      puVar9[9] = puVar4[9];\n      puVar5 = (undefined4 *)puVar4[1];\n      puVar9[5] = uVar7;\n      puVar9[1] = puVar5;\n      if (puVar5 != (undefined4 *)0x0) {\n        *puVar5 = puVar9;\n      }\n      uVar7 = FUN_0003e010();\n      puVar2[local_30 + 5] = uVar7;\n      FUN_0001a110(extraout_ECX_00);\n      iVar6 = puVar2[iVar10 + 2];\n      while (iVar6 != 0) {\n        iVar8 = iVar10 + 1;\n        puVar2[iVar8] = iVar6;\n        puVar2[iVar10 + 5] = puVar2[iVar10 + 6];\n        if (iVar8 == 3) {\n          puVar2[0xb] = 0;\n          puVar2[4] = 0;\n          puVar2[8] = 0;\n          goto LAB_0003edcd;\n        }\n        puVar2[iVar10 + 9] = puVar2[iVar10 + 10];\n        iVar6 = puVar2[iVar10 + 3];\n        iVar10 = iVar8;\n      }\n      puVar2[iVar10 + 1] = 0;\n      puVar2[iVar10 + 5] = 0;\n      puVar2[iVar10 + 9] = 0;\nLAB_0003edcd:\n      param_2 = iVar12;\n      puVar5 = puVar9;\n      if (puVar2[9] == 0) {\n        *puVar3 = puVar9;\n        *puVar9 = 0;\n        FUN_0001a110(puVar2);\n      }\n      goto joined_r0x0003e772;\n    }" if (parenthesized_expression "(puVar4[10] == 0)" ( (binary_expression "puVar4[10] == 0" (subscript_expression "puVar4[10]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      local_28 = local_30 + 1;\n      puVar11 = puVar2 + local_30;\n      puVar9 = (undefined4 *)puVar11[2];\n      if (puVar9 == (undefined4 *)0x0) {\n        puVar9 = (undefined4 *)puVar11[1];\n        iVar12 = param_2 + 1 + puVar2[iVar10 + 5];\n      }\n      else {\n        if (puVar9[10] != 0) {\nLAB_0003e836:\n          uVar7 = puVar9[5];\n          puVar5[10] = puVar2[local_30 + 9];\n          puVar4 = (undefined4 *)puVar9[1];\n          puVar5[7] = uVar7;\n          puVar5[3] = puVar4;\n          if (puVar4 != (undefined4 *)0x0) {\n            *puVar4 = puVar5;\n          }\n          puVar2[local_30 + 9] = puVar9[9];\n          puVar9[1] = puVar9[2];\n          puVar9[5] = puVar9[6];\n          if (puVar9[10] == 0) {\n            iVar12 = 1;\n            iVar10 = 0;\n          }\n          else {\n            puVar9[9] = puVar9[10];\n            puVar9[2] = puVar9[3];\n            puVar9[6] = puVar9[7];\n            if (puVar9[0xb] == 0) {\n              iVar12 = 2;\n              iVar10 = 1;\n            }\n            else {\n              puVar9[10] = puVar9[0xb];\n              iVar12 = 3;\n              puVar9[3] = puVar9[4];\n              puVar9[7] = puVar9[8];\n              iVar10 = 2;\n            }\n          }\n          puVar9[iVar12 + 1] = 0;\n          puVar9[iVar12 + 5] = 0;\n          puVar9[iVar10 + 9] = 0;\n          uVar7 = FUN_0003e010();\n          puVar2[local_30 + 5] = uVar7;\n          uVar7 = FUN_0003e010();\n          puVar2[local_28 + 5] = uVar7;\n          puVar5 = extraout_ECX;\n          goto joined_r0x0003e772;\n        }\n        puVar4 = (undefined4 *)*puVar11;\n        puVar9 = (undefined4 *)puVar11[1];\n        iVar10 = local_30 + -1;\n        iVar12 = param_2 + 1 + puVar11[4];\n      }\nLAB_0003ed0c:\n      puVar9[4] = puVar9[2];\n      puVar9[8] = puVar9[6];\n      puVar9[0xb] = puVar9[9];\n      puVar9[3] = puVar9[1];\n      puVar9[7] = puVar9[5];\n      uVar7 = puVar4[6];\n      puVar9[10] = puVar2[iVar10 + 9];\n      puVar5 = (undefined4 *)puVar4[2];\n      puVar9[6] = uVar7;\n      puVar9[2] = puVar5;\n      if (puVar5 != (undefined4 *)0x0) {\n        *puVar5 = puVar9;\n      }\n      uVar7 = puVar4[5];\n      puVar9[9] = puVar4[9];\n      puVar5 = (undefined4 *)puVar4[1];\n      puVar9[5] = uVar7;\n      puVar9[1] = puVar5;\n      if (puVar5 != (undefined4 *)0x0) {\n        *puVar5 = puVar9;\n      }\n      uVar7 = FUN_0003e010();\n      puVar2[local_30 + 5] = uVar7;\n      FUN_0001a110(extraout_ECX_00);\n      iVar6 = puVar2[iVar10 + 2];\n      while (iVar6 != 0) {\n        iVar8 = iVar10 + 1;\n        puVar2[iVar8] = iVar6;\n        puVar2[iVar10 + 5] = puVar2[iVar10 + 6];\n        if (iVar8 == 3) {\n          puVar2[0xb] = 0;\n          puVar2[4] = 0;\n          puVar2[8] = 0;\n          goto LAB_0003edcd;\n        }\n        puVar2[iVar10 + 9] = puVar2[iVar10 + 10];\n        iVar6 = puVar2[iVar10 + 3];\n        iVar10 = iVar8;\n      }\n      puVar2[iVar10 + 1] = 0;\n      puVar2[iVar10 + 5] = 0;\n      puVar2[iVar10 + 9] = 0;\nLAB_0003edcd:\n      param_2 = iVar12;\n      puVar5 = puVar9;\n      if (puVar2[9] == 0) {\n        *puVar3 = puVar9;\n        *puVar9 = 0;\n        FUN_0001a110(puVar2);\n      }\n      goto joined_r0x0003e772;\n    }" { (expression_statement "local_28 = local_30 + 1;" (assignment_expression "local_28 = local_30 + 1" identifier = (binary_expression "local_30 + 1" identifier + number_literal)) ;) (expression_statement "puVar11 = puVar2 + local_30;" (assignment_expression "puVar11 = puVar2 + local_30" identifier = (binary_expression "puVar2 + local_30" identifier + identifier)) ;) (expression_statement "puVar9 = (undefined4 *)puVar11[2];" (assignment_expression "puVar9 = (undefined4 *)puVar11[2]" identifier = (cast_expression "(undefined4 *)puVar11[2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar11[2]" identifier [ number_literal ]))) ;) (if_statement "if (puVar9 == (undefined4 *)0x0) {\n        puVar9 = (undefined4 *)puVar11[1];\n        iVar12 = param_2 + 1 + puVar2[iVar10 + 5];\n      }\n      else {\n        if (puVar9[10] != 0) {\nLAB_0003e836:\n          uVar7 = puVar9[5];\n          puVar5[10] = puVar2[local_30 + 9];\n          puVar4 = (undefined4 *)puVar9[1];\n          puVar5[7] = uVar7;\n          puVar5[3] = puVar4;\n          if (puVar4 != (undefined4 *)0x0) {\n            *puVar4 = puVar5;\n          }\n          puVar2[local_30 + 9] = puVar9[9];\n          puVar9[1] = puVar9[2];\n          puVar9[5] = puVar9[6];\n          if (puVar9[10] == 0) {\n            iVar12 = 1;\n            iVar10 = 0;\n          }\n          else {\n            puVar9[9] = puVar9[10];\n            puVar9[2] = puVar9[3];\n            puVar9[6] = puVar9[7];\n            if (puVar9[0xb] == 0) {\n              iVar12 = 2;\n              iVar10 = 1;\n            }\n            else {\n              puVar9[10] = puVar9[0xb];\n              iVar12 = 3;\n              puVar9[3] = puVar9[4];\n              puVar9[7] = puVar9[8];\n              iVar10 = 2;\n            }\n          }\n          puVar9[iVar12 + 1] = 0;\n          puVar9[iVar12 + 5] = 0;\n          puVar9[iVar10 + 9] = 0;\n          uVar7 = FUN_0003e010();\n          puVar2[local_30 + 5] = uVar7;\n          uVar7 = FUN_0003e010();\n          puVar2[local_28 + 5] = uVar7;\n          puVar5 = extraout_ECX;\n          goto joined_r0x0003e772;\n        }\n        puVar4 = (undefined4 *)*puVar11;\n        puVar9 = (undefined4 *)puVar11[1];\n        iVar10 = local_30 + -1;\n        iVar12 = param_2 + 1 + puVar11[4];\n      }" if (parenthesized_expression "(puVar9 == (undefined4 *)0x0)" ( (binary_expression "puVar9 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        puVar9 = (undefined4 *)puVar11[1];\n        iVar12 = param_2 + 1 + puVar2[iVar10 + 5];\n      }" { (expression_statement "puVar9 = (undefined4 *)puVar11[1];" (assignment_expression "puVar9 = (undefined4 *)puVar11[1]" identifier = (cast_expression "(undefined4 *)puVar11[1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar11[1]" identifier [ number_literal ]))) ;) (expression_statement "iVar12 = param_2 + 1 + puVar2[iVar10 + 5];" (assignment_expression "iVar12 = param_2 + 1 + puVar2[iVar10 + 5]" identifier = (binary_expression "param_2 + 1 + puVar2[iVar10 + 5]" (binary_expression "param_2 + 1" identifier + number_literal) + (subscript_expression "puVar2[iVar10 + 5]" identifier [ (binary_expression "iVar10 + 5" identifier + number_literal) ]))) ;) }) (else_clause "else {\n        if (puVar9[10] != 0) {\nLAB_0003e836:\n          uVar7 = puVar9[5];\n          puVar5[10] = puVar2[local_30 + 9];\n          puVar4 = (undefined4 *)puVar9[1];\n          puVar5[7] = uVar7;\n          puVar5[3] = puVar4;\n          if (puVar4 != (undefined4 *)0x0) {\n            *puVar4 = puVar5;\n          }\n          puVar2[local_30 + 9] = puVar9[9];\n          puVar9[1] = puVar9[2];\n          puVar9[5] = puVar9[6];\n          if (puVar9[10] == 0) {\n            iVar12 = 1;\n            iVar10 = 0;\n          }\n          else {\n            puVar9[9] = puVar9[10];\n            puVar9[2] = puVar9[3];\n            puVar9[6] = puVar9[7];\n            if (puVar9[0xb] == 0) {\n              iVar12 = 2;\n              iVar10 = 1;\n            }\n            else {\n              puVar9[10] = puVar9[0xb];\n              iVar12 = 3;\n              puVar9[3] = puVar9[4];\n              puVar9[7] = puVar9[8];\n              iVar10 = 2;\n            }\n          }\n          puVar9[iVar12 + 1] = 0;\n          puVar9[iVar12 + 5] = 0;\n          puVar9[iVar10 + 9] = 0;\n          uVar7 = FUN_0003e010();\n          puVar2[local_30 + 5] = uVar7;\n          uVar7 = FUN_0003e010();\n          puVar2[local_28 + 5] = uVar7;\n          puVar5 = extraout_ECX;\n          goto joined_r0x0003e772;\n        }\n        puVar4 = (undefined4 *)*puVar11;\n        puVar9 = (undefined4 *)puVar11[1];\n        iVar10 = local_30 + -1;\n        iVar12 = param_2 + 1 + puVar11[4];\n      }" else (compound_statement "{\n        if (puVar9[10] != 0) {\nLAB_0003e836:\n          uVar7 = puVar9[5];\n          puVar5[10] = puVar2[local_30 + 9];\n          puVar4 = (undefined4 *)puVar9[1];\n          puVar5[7] = uVar7;\n          puVar5[3] = puVar4;\n          if (puVar4 != (undefined4 *)0x0) {\n            *puVar4 = puVar5;\n          }\n          puVar2[local_30 + 9] = puVar9[9];\n          puVar9[1] = puVar9[2];\n          puVar9[5] = puVar9[6];\n          if (puVar9[10] == 0) {\n            iVar12 = 1;\n            iVar10 = 0;\n          }\n          else {\n            puVar9[9] = puVar9[10];\n            puVar9[2] = puVar9[3];\n            puVar9[6] = puVar9[7];\n            if (puVar9[0xb] == 0) {\n              iVar12 = 2;\n              iVar10 = 1;\n            }\n            else {\n              puVar9[10] = puVar9[0xb];\n              iVar12 = 3;\n              puVar9[3] = puVar9[4];\n              puVar9[7] = puVar9[8];\n              iVar10 = 2;\n            }\n          }\n          puVar9[iVar12 + 1] = 0;\n          puVar9[iVar12 + 5] = 0;\n          puVar9[iVar10 + 9] = 0;\n          uVar7 = FUN_0003e010();\n          puVar2[local_30 + 5] = uVar7;\n          uVar7 = FUN_0003e010();\n          puVar2[local_28 + 5] = uVar7;\n          puVar5 = extraout_ECX;\n          goto joined_r0x0003e772;\n        }\n        puVar4 = (undefined4 *)*puVar11;\n        puVar9 = (undefined4 *)puVar11[1];\n        iVar10 = local_30 + -1;\n        iVar12 = param_2 + 1 + puVar11[4];\n      }" { (if_statement "if (puVar9[10] != 0) {\nLAB_0003e836:\n          uVar7 = puVar9[5];\n          puVar5[10] = puVar2[local_30 + 9];\n          puVar4 = (undefined4 *)puVar9[1];\n          puVar5[7] = uVar7;\n          puVar5[3] = puVar4;\n          if (puVar4 != (undefined4 *)0x0) {\n            *puVar4 = puVar5;\n          }\n          puVar2[local_30 + 9] = puVar9[9];\n          puVar9[1] = puVar9[2];\n          puVar9[5] = puVar9[6];\n          if (puVar9[10] == 0) {\n            iVar12 = 1;\n            iVar10 = 0;\n          }\n          else {\n            puVar9[9] = puVar9[10];\n            puVar9[2] = puVar9[3];\n            puVar9[6] = puVar9[7];\n            if (puVar9[0xb] == 0) {\n              iVar12 = 2;\n              iVar10 = 1;\n            }\n            else {\n              puVar9[10] = puVar9[0xb];\n              iVar12 = 3;\n              puVar9[3] = puVar9[4];\n              puVar9[7] = puVar9[8];\n              iVar10 = 2;\n            }\n          }\n          puVar9[iVar12 + 1] = 0;\n          puVar9[iVar12 + 5] = 0;\n          puVar9[iVar10 + 9] = 0;\n          uVar7 = FUN_0003e010();\n          puVar2[local_30 + 5] = uVar7;\n          uVar7 = FUN_0003e010();\n          puVar2[local_28 + 5] = uVar7;\n          puVar5 = extraout_ECX;\n          goto joined_r0x0003e772;\n        }" if (parenthesized_expression "(puVar9[10] != 0)" ( (binary_expression "puVar9[10] != 0" (subscript_expression "puVar9[10]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\nLAB_0003e836:\n          uVar7 = puVar9[5];\n          puVar5[10] = puVar2[local_30 + 9];\n          puVar4 = (undefined4 *)puVar9[1];\n          puVar5[7] = uVar7;\n          puVar5[3] = puVar4;\n          if (puVar4 != (undefined4 *)0x0) {\n            *puVar4 = puVar5;\n          }\n          puVar2[local_30 + 9] = puVar9[9];\n          puVar9[1] = puVar9[2];\n          puVar9[5] = puVar9[6];\n          if (puVar9[10] == 0) {\n            iVar12 = 1;\n            iVar10 = 0;\n          }\n          else {\n            puVar9[9] = puVar9[10];\n            puVar9[2] = puVar9[3];\n            puVar9[6] = puVar9[7];\n            if (puVar9[0xb] == 0) {\n              iVar12 = 2;\n              iVar10 = 1;\n            }\n            else {\n              puVar9[10] = puVar9[0xb];\n              iVar12 = 3;\n              puVar9[3] = puVar9[4];\n              puVar9[7] = puVar9[8];\n              iVar10 = 2;\n            }\n          }\n          puVar9[iVar12 + 1] = 0;\n          puVar9[iVar12 + 5] = 0;\n          puVar9[iVar10 + 9] = 0;\n          uVar7 = FUN_0003e010();\n          puVar2[local_30 + 5] = uVar7;\n          uVar7 = FUN_0003e010();\n          puVar2[local_28 + 5] = uVar7;\n          puVar5 = extraout_ECX;\n          goto joined_r0x0003e772;\n        }" { (labeled_statement "LAB_0003e836:\n          uVar7 = puVar9[5];" statement_identifier : (expression_statement "uVar7 = puVar9[5];" (assignment_expression "uVar7 = puVar9[5]" identifier = (subscript_expression "puVar9[5]" identifier [ number_literal ])) ;)) (expression_statement "puVar5[10] = puVar2[local_30 + 9];" (assignment_expression "puVar5[10] = puVar2[local_30 + 9]" (subscript_expression "puVar5[10]" identifier [ number_literal ]) = (subscript_expression "puVar2[local_30 + 9]" identifier [ (binary_expression "local_30 + 9" identifier + number_literal) ])) ;) (expression_statement "puVar4 = (undefined4 *)puVar9[1];" (assignment_expression "puVar4 = (undefined4 *)puVar9[1]" identifier = (cast_expression "(undefined4 *)puVar9[1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar9[1]" identifier [ number_literal ]))) ;) (expression_statement "puVar5[7] = uVar7;" (assignment_expression "puVar5[7] = uVar7" (subscript_expression "puVar5[7]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar5[3] = puVar4;" (assignment_expression "puVar5[3] = puVar4" (subscript_expression "puVar5[3]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (puVar4 != (undefined4 *)0x0) {\n            *puVar4 = puVar5;\n          }" if (parenthesized_expression "(puVar4 != (undefined4 *)0x0)" ( (binary_expression "puVar4 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            *puVar4 = puVar5;\n          }" { (expression_statement "*puVar4 = puVar5;" (assignment_expression "*puVar4 = puVar5" (pointer_expression "*puVar4" * identifier) = identifier) ;) })) (expression_statement "puVar2[local_30 + 9] = puVar9[9];" (assignment_expression "puVar2[local_30 + 9] = puVar9[9]" (subscript_expression "puVar2[local_30 + 9]" identifier [ (binary_expression "local_30 + 9" identifier + number_literal) ]) = (subscript_expression "puVar9[9]" identifier [ number_literal ])) ;) (expression_statement "puVar9[1] = puVar9[2];" (assignment_expression "puVar9[1] = puVar9[2]" (subscript_expression "puVar9[1]" identifier [ number_literal ]) = (subscript_expression "puVar9[2]" identifier [ number_literal ])) ;) (expression_statement "puVar9[5] = puVar9[6];" (assignment_expression "puVar9[5] = puVar9[6]" (subscript_expression "puVar9[5]" identifier [ number_literal ]) = (subscript_expression "puVar9[6]" identifier [ number_literal ])) ;) (if_statement "if (puVar9[10] == 0) {\n            iVar12 = 1;\n            iVar10 = 0;\n          }\n          else {\n            puVar9[9] = puVar9[10];\n            puVar9[2] = puVar9[3];\n            puVar9[6] = puVar9[7];\n            if (puVar9[0xb] == 0) {\n              iVar12 = 2;\n              iVar10 = 1;\n            }\n            else {\n              puVar9[10] = puVar9[0xb];\n              iVar12 = 3;\n              puVar9[3] = puVar9[4];\n              puVar9[7] = puVar9[8];\n              iVar10 = 2;\n            }\n          }" if (parenthesized_expression "(puVar9[10] == 0)" ( (binary_expression "puVar9[10] == 0" (subscript_expression "puVar9[10]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n            iVar12 = 1;\n            iVar10 = 0;\n          }" { (expression_statement "iVar12 = 1;" (assignment_expression "iVar12 = 1" identifier = number_literal) ;) (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" identifier = number_literal) ;) }) (else_clause "else {\n            puVar9[9] = puVar9[10];\n            puVar9[2] = puVar9[3];\n            puVar9[6] = puVar9[7];\n            if (puVar9[0xb] == 0) {\n              iVar12 = 2;\n              iVar10 = 1;\n            }\n            else {\n              puVar9[10] = puVar9[0xb];\n              iVar12 = 3;\n              puVar9[3] = puVar9[4];\n              puVar9[7] = puVar9[8];\n              iVar10 = 2;\n            }\n          }" else (compound_statement "{\n            puVar9[9] = puVar9[10];\n            puVar9[2] = puVar9[3];\n            puVar9[6] = puVar9[7];\n            if (puVar9[0xb] == 0) {\n              iVar12 = 2;\n              iVar10 = 1;\n            }\n            else {\n              puVar9[10] = puVar9[0xb];\n              iVar12 = 3;\n              puVar9[3] = puVar9[4];\n              puVar9[7] = puVar9[8];\n              iVar10 = 2;\n            }\n          }" { (expression_statement "puVar9[9] = puVar9[10];" (assignment_expression "puVar9[9] = puVar9[10]" (subscript_expression "puVar9[9]" identifier [ number_literal ]) = (subscript_expression "puVar9[10]" identifier [ number_literal ])) ;) (expression_statement "puVar9[2] = puVar9[3];" (assignment_expression "puVar9[2] = puVar9[3]" (subscript_expression "puVar9[2]" identifier [ number_literal ]) = (subscript_expression "puVar9[3]" identifier [ number_literal ])) ;) (expression_statement "puVar9[6] = puVar9[7];" (assignment_expression "puVar9[6] = puVar9[7]" (subscript_expression "puVar9[6]" identifier [ number_literal ]) = (subscript_expression "puVar9[7]" identifier [ number_literal ])) ;) (if_statement "if (puVar9[0xb] == 0) {\n              iVar12 = 2;\n              iVar10 = 1;\n            }\n            else {\n              puVar9[10] = puVar9[0xb];\n              iVar12 = 3;\n              puVar9[3] = puVar9[4];\n              puVar9[7] = puVar9[8];\n              iVar10 = 2;\n            }" if (parenthesized_expression "(puVar9[0xb] == 0)" ( (binary_expression "puVar9[0xb] == 0" (subscript_expression "puVar9[0xb]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n              iVar12 = 2;\n              iVar10 = 1;\n            }" { (expression_statement "iVar12 = 2;" (assignment_expression "iVar12 = 2" identifier = number_literal) ;) (expression_statement "iVar10 = 1;" (assignment_expression "iVar10 = 1" identifier = number_literal) ;) }) (else_clause "else {\n              puVar9[10] = puVar9[0xb];\n              iVar12 = 3;\n              puVar9[3] = puVar9[4];\n              puVar9[7] = puVar9[8];\n              iVar10 = 2;\n            }" else (compound_statement "{\n              puVar9[10] = puVar9[0xb];\n              iVar12 = 3;\n              puVar9[3] = puVar9[4];\n              puVar9[7] = puVar9[8];\n              iVar10 = 2;\n            }" { (expression_statement "puVar9[10] = puVar9[0xb];" (assignment_expression "puVar9[10] = puVar9[0xb]" (subscript_expression "puVar9[10]" identifier [ number_literal ]) = (subscript_expression "puVar9[0xb]" identifier [ number_literal ])) ;) (expression_statement "iVar12 = 3;" (assignment_expression "iVar12 = 3" identifier = number_literal) ;) (expression_statement "puVar9[3] = puVar9[4];" (assignment_expression "puVar9[3] = puVar9[4]" (subscript_expression "puVar9[3]" identifier [ number_literal ]) = (subscript_expression "puVar9[4]" identifier [ number_literal ])) ;) (expression_statement "puVar9[7] = puVar9[8];" (assignment_expression "puVar9[7] = puVar9[8]" (subscript_expression "puVar9[7]" identifier [ number_literal ]) = (subscript_expression "puVar9[8]" identifier [ number_literal ])) ;) (expression_statement "iVar10 = 2;" (assignment_expression "iVar10 = 2" identifier = number_literal) ;) }))) }))) (expression_statement "puVar9[iVar12 + 1] = 0;" (assignment_expression "puVar9[iVar12 + 1] = 0" (subscript_expression "puVar9[iVar12 + 1]" identifier [ (binary_expression "iVar12 + 1" identifier + number_literal) ]) = number_literal) ;) (expression_statement "puVar9[iVar12 + 5] = 0;" (assignment_expression "puVar9[iVar12 + 5] = 0" (subscript_expression "puVar9[iVar12 + 5]" identifier [ (binary_expression "iVar12 + 5" identifier + number_literal) ]) = number_literal) ;) (expression_statement "puVar9[iVar10 + 9] = 0;" (assignment_expression "puVar9[iVar10 + 9] = 0" (subscript_expression "puVar9[iVar10 + 9]" identifier [ (binary_expression "iVar10 + 9" identifier + number_literal) ]) = number_literal) ;) (expression_statement "uVar7 = FUN_0003e010();" (assignment_expression "uVar7 = FUN_0003e010()" identifier = (call_expression "FUN_0003e010()" identifier (argument_list "()" ( )))) ;) (expression_statement "puVar2[local_30 + 5] = uVar7;" (assignment_expression "puVar2[local_30 + 5] = uVar7" (subscript_expression "puVar2[local_30 + 5]" identifier [ (binary_expression "local_30 + 5" identifier + number_literal) ]) = identifier) ;) (expression_statement "uVar7 = FUN_0003e010();" (assignment_expression "uVar7 = FUN_0003e010()" identifier = (call_expression "FUN_0003e010()" identifier (argument_list "()" ( )))) ;) (expression_statement "puVar2[local_28 + 5] = uVar7;" (assignment_expression "puVar2[local_28 + 5] = uVar7" (subscript_expression "puVar2[local_28 + 5]" identifier [ (binary_expression "local_28 + 5" identifier + number_literal) ]) = identifier) ;) (expression_statement "puVar5 = extraout_ECX;" (assignment_expression "puVar5 = extraout_ECX" identifier = identifier) ;) (goto_statement "goto joined_r0x0003e772;" goto statement_identifier ;) })) (expression_statement "puVar4 = (undefined4 *)*puVar11;" (assignment_expression "puVar4 = (undefined4 *)*puVar11" identifier = (cast_expression "(undefined4 *)*puVar11" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar11" * identifier))) ;) (expression_statement "puVar9 = (undefined4 *)puVar11[1];" (assignment_expression "puVar9 = (undefined4 *)puVar11[1]" identifier = (cast_expression "(undefined4 *)puVar11[1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar11[1]" identifier [ number_literal ]))) ;) (expression_statement "iVar10 = local_30 + -1;" (assignment_expression "iVar10 = local_30 + -1" identifier = (binary_expression "local_30 + -1" identifier + number_literal)) ;) (expression_statement "iVar12 = param_2 + 1 + puVar11[4];" (assignment_expression "iVar12 = param_2 + 1 + puVar11[4]" identifier = (binary_expression "param_2 + 1 + puVar11[4]" (binary_expression "param_2 + 1" identifier + number_literal) + (subscript_expression "puVar11[4]" identifier [ number_literal ]))) ;) }))) (labeled_statement "LAB_0003ed0c:\n      puVar9[4] = puVar9[2];" statement_identifier : (expression_statement "puVar9[4] = puVar9[2];" (assignment_expression "puVar9[4] = puVar9[2]" (subscript_expression "puVar9[4]" identifier [ number_literal ]) = (subscript_expression "puVar9[2]" identifier [ number_literal ])) ;)) (expression_statement "puVar9[8] = puVar9[6];" (assignment_expression "puVar9[8] = puVar9[6]" (subscript_expression "puVar9[8]" identifier [ number_literal ]) = (subscript_expression "puVar9[6]" identifier [ number_literal ])) ;) (expression_statement "puVar9[0xb] = puVar9[9];" (assignment_expression "puVar9[0xb] = puVar9[9]" (subscript_expression "puVar9[0xb]" identifier [ number_literal ]) = (subscript_expression "puVar9[9]" identifier [ number_literal ])) ;) (expression_statement "puVar9[3] = puVar9[1];" (assignment_expression "puVar9[3] = puVar9[1]" (subscript_expression "puVar9[3]" identifier [ number_literal ]) = (subscript_expression "puVar9[1]" identifier [ number_literal ])) ;) (expression_statement "puVar9[7] = puVar9[5];" (assignment_expression "puVar9[7] = puVar9[5]" (subscript_expression "puVar9[7]" identifier [ number_literal ]) = (subscript_expression "puVar9[5]" identifier [ number_literal ])) ;) (expression_statement "uVar7 = puVar4[6];" (assignment_expression "uVar7 = puVar4[6]" identifier = (subscript_expression "puVar4[6]" identifier [ number_literal ])) ;) (expression_statement "puVar9[10] = puVar2[iVar10 + 9];" (assignment_expression "puVar9[10] = puVar2[iVar10 + 9]" (subscript_expression "puVar9[10]" identifier [ number_literal ]) = (subscript_expression "puVar2[iVar10 + 9]" identifier [ (binary_expression "iVar10 + 9" identifier + number_literal) ])) ;) (expression_statement "puVar5 = (undefined4 *)puVar4[2];" (assignment_expression "puVar5 = (undefined4 *)puVar4[2]" identifier = (cast_expression "(undefined4 *)puVar4[2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar4[2]" identifier [ number_literal ]))) ;) (expression_statement "puVar9[6] = uVar7;" (assignment_expression "puVar9[6] = uVar7" (subscript_expression "puVar9[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar9[2] = puVar5;" (assignment_expression "puVar9[2] = puVar5" (subscript_expression "puVar9[2]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (puVar5 != (undefined4 *)0x0) {\n        *puVar5 = puVar9;\n      }" if (parenthesized_expression "(puVar5 != (undefined4 *)0x0)" ( (binary_expression "puVar5 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        *puVar5 = puVar9;\n      }" { (expression_statement "*puVar5 = puVar9;" (assignment_expression "*puVar5 = puVar9" (pointer_expression "*puVar5" * identifier) = identifier) ;) })) (expression_statement "uVar7 = puVar4[5];" (assignment_expression "uVar7 = puVar4[5]" identifier = (subscript_expression "puVar4[5]" identifier [ number_literal ])) ;) (expression_statement "puVar9[9] = puVar4[9];" (assignment_expression "puVar9[9] = puVar4[9]" (subscript_expression "puVar9[9]" identifier [ number_literal ]) = (subscript_expression "puVar4[9]" identifier [ number_literal ])) ;) (expression_statement "puVar5 = (undefined4 *)puVar4[1];" (assignment_expression "puVar5 = (undefined4 *)puVar4[1]" identifier = (cast_expression "(undefined4 *)puVar4[1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar4[1]" identifier [ number_literal ]))) ;) (expression_statement "puVar9[5] = uVar7;" (assignment_expression "puVar9[5] = uVar7" (subscript_expression "puVar9[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar9[1] = puVar5;" (assignment_expression "puVar9[1] = puVar5" (subscript_expression "puVar9[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (puVar5 != (undefined4 *)0x0) {\n        *puVar5 = puVar9;\n      }" if (parenthesized_expression "(puVar5 != (undefined4 *)0x0)" ( (binary_expression "puVar5 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        *puVar5 = puVar9;\n      }" { (expression_statement "*puVar5 = puVar9;" (assignment_expression "*puVar5 = puVar9" (pointer_expression "*puVar5" * identifier) = identifier) ;) })) (expression_statement "uVar7 = FUN_0003e010();" (assignment_expression "uVar7 = FUN_0003e010()" identifier = (call_expression "FUN_0003e010()" identifier (argument_list "()" ( )))) ;) (expression_statement "puVar2[local_30 + 5] = uVar7;" (assignment_expression "puVar2[local_30 + 5] = uVar7" (subscript_expression "puVar2[local_30 + 5]" identifier [ (binary_expression "local_30 + 5" identifier + number_literal) ]) = identifier) ;) (expression_statement "FUN_0001a110(extraout_ECX_00);" (call_expression "FUN_0001a110(extraout_ECX_00)" identifier (argument_list "(extraout_ECX_00)" ( identifier ))) ;) (expression_statement "iVar6 = puVar2[iVar10 + 2];" (assignment_expression "iVar6 = puVar2[iVar10 + 2]" identifier = (subscript_expression "puVar2[iVar10 + 2]" identifier [ (binary_expression "iVar10 + 2" identifier + number_literal) ])) ;) (while_statement "while (iVar6 != 0) {\n        iVar8 = iVar10 + 1;\n        puVar2[iVar8] = iVar6;\n        puVar2[iVar10 + 5] = puVar2[iVar10 + 6];\n        if (iVar8 == 3) {\n          puVar2[0xb] = 0;\n          puVar2[4] = 0;\n          puVar2[8] = 0;\n          goto LAB_0003edcd;\n        }\n        puVar2[iVar10 + 9] = puVar2[iVar10 + 10];\n        iVar6 = puVar2[iVar10 + 3];\n        iVar10 = iVar8;\n      }" while (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (compound_statement "{\n        iVar8 = iVar10 + 1;\n        puVar2[iVar8] = iVar6;\n        puVar2[iVar10 + 5] = puVar2[iVar10 + 6];\n        if (iVar8 == 3) {\n          puVar2[0xb] = 0;\n          puVar2[4] = 0;\n          puVar2[8] = 0;\n          goto LAB_0003edcd;\n        }\n        puVar2[iVar10 + 9] = puVar2[iVar10 + 10];\n        iVar6 = puVar2[iVar10 + 3];\n        iVar10 = iVar8;\n      }" { (expression_statement "iVar8 = iVar10 + 1;" (assignment_expression "iVar8 = iVar10 + 1" identifier = (binary_expression "iVar10 + 1" identifier + number_literal)) ;) (expression_statement "puVar2[iVar8] = iVar6;" (assignment_expression "puVar2[iVar8] = iVar6" (subscript_expression "puVar2[iVar8]" identifier [ identifier ]) = identifier) ;) (expression_statement "puVar2[iVar10 + 5] = puVar2[iVar10 + 6];" (assignment_expression "puVar2[iVar10 + 5] = puVar2[iVar10 + 6]" (subscript_expression "puVar2[iVar10 + 5]" identifier [ (binary_expression "iVar10 + 5" identifier + number_literal) ]) = (subscript_expression "puVar2[iVar10 + 6]" identifier [ (binary_expression "iVar10 + 6" identifier + number_literal) ])) ;) (if_statement "if (iVar8 == 3) {\n          puVar2[0xb] = 0;\n          puVar2[4] = 0;\n          puVar2[8] = 0;\n          goto LAB_0003edcd;\n        }" if (parenthesized_expression "(iVar8 == 3)" ( (binary_expression "iVar8 == 3" identifier == number_literal) )) (compound_statement "{\n          puVar2[0xb] = 0;\n          puVar2[4] = 0;\n          puVar2[8] = 0;\n          goto LAB_0003edcd;\n        }" { (expression_statement "puVar2[0xb] = 0;" (assignment_expression "puVar2[0xb] = 0" (subscript_expression "puVar2[0xb]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[4] = 0;" (assignment_expression "puVar2[4] = 0" (subscript_expression "puVar2[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[8] = 0;" (assignment_expression "puVar2[8] = 0" (subscript_expression "puVar2[8]" identifier [ number_literal ]) = number_literal) ;) (goto_statement "goto LAB_0003edcd;" goto statement_identifier ;) })) (expression_statement "puVar2[iVar10 + 9] = puVar2[iVar10 + 10];" (assignment_expression "puVar2[iVar10 + 9] = puVar2[iVar10 + 10]" (subscript_expression "puVar2[iVar10 + 9]" identifier [ (binary_expression "iVar10 + 9" identifier + number_literal) ]) = (subscript_expression "puVar2[iVar10 + 10]" identifier [ (binary_expression "iVar10 + 10" identifier + number_literal) ])) ;) (expression_statement "iVar6 = puVar2[iVar10 + 3];" (assignment_expression "iVar6 = puVar2[iVar10 + 3]" identifier = (subscript_expression "puVar2[iVar10 + 3]" identifier [ (binary_expression "iVar10 + 3" identifier + number_literal) ])) ;) (expression_statement "iVar10 = iVar8;" (assignment_expression "iVar10 = iVar8" identifier = identifier) ;) })) (expression_statement "puVar2[iVar10 + 1] = 0;" (assignment_expression "puVar2[iVar10 + 1] = 0" (subscript_expression "puVar2[iVar10 + 1]" identifier [ (binary_expression "iVar10 + 1" identifier + number_literal) ]) = number_literal) ;) (expression_statement "puVar2[iVar10 + 5] = 0;" (assignment_expression "puVar2[iVar10 + 5] = 0" (subscript_expression "puVar2[iVar10 + 5]" identifier [ (binary_expression "iVar10 + 5" identifier + number_literal) ]) = number_literal) ;) (expression_statement "puVar2[iVar10 + 9] = 0;" (assignment_expression "puVar2[iVar10 + 9] = 0" (subscript_expression "puVar2[iVar10 + 9]" identifier [ (binary_expression "iVar10 + 9" identifier + number_literal) ]) = number_literal) ;) (labeled_statement "LAB_0003edcd:\n      param_2 = iVar12;" statement_identifier : (expression_statement "param_2 = iVar12;" (assignment_expression "param_2 = iVar12" identifier = identifier) ;)) (expression_statement "puVar5 = puVar9;" (assignment_expression "puVar5 = puVar9" identifier = identifier) ;) (if_statement "if (puVar2[9] == 0) {\n        *puVar3 = puVar9;\n        *puVar9 = 0;\n        FUN_0001a110(puVar2);\n      }" if (parenthesized_expression "(puVar2[9] == 0)" ( (binary_expression "puVar2[9] == 0" (subscript_expression "puVar2[9]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n        *puVar3 = puVar9;\n        *puVar9 = 0;\n        FUN_0001a110(puVar2);\n      }" { (expression_statement "*puVar3 = puVar9;" (assignment_expression "*puVar3 = puVar9" (pointer_expression "*puVar3" * identifier) = identifier) ;) (expression_statement "*puVar9 = 0;" (assignment_expression "*puVar9 = 0" (pointer_expression "*puVar9" * identifier) = number_literal) ;) (expression_statement "FUN_0001a110(puVar2);" (call_expression "FUN_0001a110(puVar2)" identifier (argument_list "(puVar2)" ( identifier ))) ;) })) (goto_statement "goto joined_r0x0003e772;" goto statement_identifier ;) })) (labeled_statement "LAB_0003eae0:\n    uVar1 = (uint)(puVar4[0xb] == 0);" statement_identifier : (expression_statement "uVar1 = (uint)(puVar4[0xb] == 0);" (assignment_expression "uVar1 = (uint)(puVar4[0xb] == 0)" identifier = (call_expression "(uint)(puVar4[0xb] == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar4[0xb] == 0)" ( (binary_expression "puVar4[0xb] == 0" (subscript_expression "puVar4[0xb]" identifier [ number_literal ]) == number_literal) )))) ;)) (expression_statement "puVar5[3] = puVar5[2];" (assignment_expression "puVar5[3] = puVar5[2]" (subscript_expression "puVar5[3]" identifier [ number_literal ]) = (subscript_expression "puVar5[2]" identifier [ number_literal ])) ;) (expression_statement "puVar5[7] = puVar5[6];" (assignment_expression "puVar5[7] = puVar5[6]" (subscript_expression "puVar5[7]" identifier [ number_literal ]) = (subscript_expression "puVar5[6]" identifier [ number_literal ])) ;) (expression_statement "puVar5[10] = puVar5[9];" (assignment_expression "puVar5[10] = puVar5[9]" (subscript_expression "puVar5[10]" identifier [ number_literal ]) = (subscript_expression "puVar5[9]" identifier [ number_literal ])) ;) (expression_statement "puVar5[2] = puVar5[1];" (assignment_expression "puVar5[2] = puVar5[1]" (subscript_expression "puVar5[2]" identifier [ number_literal ]) = (subscript_expression "puVar5[1]" identifier [ number_literal ])) ;) (expression_statement "puVar5[6] = puVar5[5];" (assignment_expression "puVar5[6] = puVar5[5]" (subscript_expression "puVar5[6]" identifier [ number_literal ]) = (subscript_expression "puVar5[5]" identifier [ number_literal ])) ;) (expression_statement "puVar5[9] = puVar2[iVar10 + 9];" (assignment_expression "puVar5[9] = puVar2[iVar10 + 9]" (subscript_expression "puVar5[9]" identifier [ number_literal ]) = (subscript_expression "puVar2[iVar10 + 9]" identifier [ (binary_expression "iVar10 + 9" identifier + number_literal) ])) ;) (expression_statement "puVar11 = (undefined4 *)puVar4[4 - uVar1];" (assignment_expression "puVar11 = (undefined4 *)puVar4[4 - uVar1]" identifier = (cast_expression "(undefined4 *)puVar4[4 - uVar1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar4[4 - uVar1]" identifier [ (binary_expression "4 - uVar1" number_literal - identifier) ]))) ;) (expression_statement "puVar5[1] = puVar11;" (assignment_expression "puVar5[1] = puVar11" (subscript_expression "puVar5[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar5[5] = puVar4[8 - uVar1];" (assignment_expression "puVar5[5] = puVar4[8 - uVar1]" (subscript_expression "puVar5[5]" identifier [ number_literal ]) = (subscript_expression "puVar4[8 - uVar1]" identifier [ (binary_expression "8 - uVar1" number_literal - identifier) ])) ;) (if_statement "if (puVar11 != (undefined4 *)0x0) {\n      *puVar11 = puVar5;\n    }" if (parenthesized_expression "(puVar11 != (undefined4 *)0x0)" ( (binary_expression "puVar11 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      *puVar11 = puVar5;\n    }" { (expression_statement "*puVar11 = puVar5;" (assignment_expression "*puVar11 = puVar5" (pointer_expression "*puVar11" * identifier) = identifier) ;) })) (expression_statement "puVar2[iVar10 + 9] = puVar4[-uVar1 + 0xb];" (assignment_expression "puVar2[iVar10 + 9] = puVar4[-uVar1 + 0xb]" (subscript_expression "puVar2[iVar10 + 9]" identifier [ (binary_expression "iVar10 + 9" identifier + number_literal) ]) = (subscript_expression "puVar4[-uVar1 + 0xb]" identifier [ (binary_expression "-uVar1 + 0xb" (unary_expression "-uVar1" - identifier) + number_literal) ])) ;) (expression_statement "puVar4[4 - uVar1] = 0;" (assignment_expression "puVar4[4 - uVar1] = 0" (subscript_expression "puVar4[4 - uVar1]" identifier [ (binary_expression "4 - uVar1" number_literal - identifier) ]) = number_literal) ;) (expression_statement "puVar4[8 - uVar1] = 0;" (assignment_expression "puVar4[8 - uVar1] = 0" (subscript_expression "puVar4[8 - uVar1]" identifier [ (binary_expression "8 - uVar1" number_literal - identifier) ]) = number_literal) ;) (expression_statement "puVar4[-uVar1 + 0xb] = 0;" (assignment_expression "puVar4[-uVar1 + 0xb] = 0" (subscript_expression "puVar4[-uVar1 + 0xb]" identifier [ (binary_expression "-uVar1 + 0xb" (unary_expression "-uVar1" - identifier) + number_literal) ]) = number_literal) ;) (expression_statement "uVar7 = FUN_0003e010();" (assignment_expression "uVar7 = FUN_0003e010()" identifier = (call_expression "FUN_0003e010()" identifier (argument_list "()" ( )))) ;) (expression_statement "puVar2[local_30 + 5] = uVar7;" (assignment_expression "puVar2[local_30 + 5] = uVar7" (subscript_expression "puVar2[local_30 + 5]" identifier [ (binary_expression "local_30 + 5" identifier + number_literal) ]) = identifier) ;) (expression_statement "iVar12 = puVar2[iVar10 + 5];" (assignment_expression "iVar12 = puVar2[iVar10 + 5]" identifier = (subscript_expression "puVar2[iVar10 + 5]" identifier [ (binary_expression "iVar10 + 5" identifier + number_literal) ])) ;) (expression_statement "iVar6 = FUN_0003e010();" (assignment_expression "iVar6 = FUN_0003e010()" identifier = (call_expression "FUN_0003e010()" identifier (argument_list "()" ( )))) ;) (expression_statement "puVar2[iVar10 + 5] = iVar6;" (assignment_expression "puVar2[iVar10 + 5] = iVar6" (subscript_expression "puVar2[iVar10 + 5]" identifier [ (binary_expression "iVar10 + 5" identifier + number_literal) ]) = identifier) ;) (expression_statement "param_2 = (param_2 + iVar12) - iVar6;" (assignment_expression "param_2 = (param_2 + iVar12) - iVar6" identifier = (binary_expression "(param_2 + iVar12) - iVar6" (parenthesized_expression "(param_2 + iVar12)" ( (binary_expression "param_2 + iVar12" identifier + identifier) )) - identifier)) ;) })) (goto_statement "goto joined_r0x0003e772;" goto statement_identifier ;) })))
(translation_unit "void * __regparm3 delpos234_internal(tree234 *t,int index)\n\n{\n  uint uVar1;\n  node234 **ppnVar2;\n  node234_conflict *pnVar3;\n  node234_conflict *ptr;\n  undefined4 *puVar4;\n  node234_conflict *pnVar5;\n  int iVar6;\n  void *pvVar7;\n  int iVar8;\n  node234 *pnVar9;\n  node234_conflict *extraout_ECX;\n  node234 *pnVar10;\n  node234_conflict *n;\n  void *ptr_00;\n  node234 *pnVar11;\n  int iVar12;\n  node234 *pnVar13;\n  int local_38;\n  void *local_34;\n  int local_30;\n  int local_28;\n  \n  puVar4 = (undefined4 *)__x86_get_pc_thunk_di();\n  local_38 = -1;\n  local_34 = (void *)0x0;\n  pnVar9 = (node234_conflict *)*puVar4;\njoined_r0x0003e772:\n  while( true ) {\n    ptr = pnVar9;\n    iVar12 = index;\n    if (ptr == (node234_conflict *)0x0) {\n      if (local_34 == (void *)0x0) {\n        local_34 = *(void **)(local_38 * 4 + 0x24);\n      }\n      if (local_38 == -1) {\n        return (void *)0x0;\n      }\n      goto LAB_0003e7aa;\n    }\n    if (ptr->counts[0] <= iVar12) break;\n    pnVar10 = ptr->kids[0];\n    index = iVar12;\n    pnVar9 = pnVar10;\n    if (pnVar10->elems[1] == (void *)0x0) {\n      pnVar13 = ptr->kids[1];\n      if (pnVar13 != (node234 *)0x0) {\n        local_30 = 0;\n        local_28 = 1;\n        if (pnVar13->elems[1] == (void *)0x0) goto LAB_0003ed02;\n        goto LAB_0003e836;\n      }\nLAB_0003ed02:\n      local_30 = 1;\n      iVar6 = 0;\n      goto LAB_0003ed0c;\n    }\n  }\n  index = iVar12 - (ptr->counts[0] + 1);\n  if (-1 < index) {\n    if (index < ptr->counts[1]) goto LAB_0003eab0;\n    iVar12 = index - (ptr->counts[1] + 1);\n    if (iVar12 < 0) {\n      local_38 = 1;\n      if (local_34 == (void *)0x0) {\n        local_34 = ptr->elems[1];\n      }\nLAB_0003e7aa:\n      pnVar5 = ptr->parent;\n      pnVar9 = ptr->kids[0];\n      goto joined_r0x0003e7b1;\n    }\n    if (iVar12 < ptr->counts[2]) {\n      pnVar9 = ptr->kids[2];\n      index = iVar12;\n      if (pnVar9->elems[1] == (void *)0x0) {\n        iVar6 = 1;\n        local_30 = 2;\n        goto LAB_0003eacb;\n      }\n    }\n    else {\n      index = iVar12 - (ptr->counts[2] + 1);\n      if (index < 0) {\n        local_38 = 2;\n        if (local_34 == (void *)0x0) {\n          local_34 = ptr->elems[2];\n        }\n        goto LAB_0003e7aa;\n      }\n      pnVar13 = ptr->kids[3];\n      pnVar9 = pnVar13;\n      if (pnVar13->elems[1] == (void *)0x0) {\n        pnVar10 = ptr->kids[2];\n        if (pnVar10->elems[1] == (void *)0x0) {\n          iVar6 = 2;\n          local_30 = 3;\n          goto LAB_0003ed0c;\n        }\n        local_30 = 3;\n        iVar6 = 2;\n        goto LAB_0003eae0;\n      }\n    }\n    goto joined_r0x0003e772;\n  }\n  local_38 = 0;\n  if (local_34 != (void *)0x0) goto LAB_0003e7aa;\n  local_34 = ptr->elems[0];\n  pnVar5 = ptr->parent;\n  pnVar9 = ptr->kids[0];\njoined_r0x0003e7b1:\n  if (pnVar5 == (node234_conflict *)0x0) {\n    if (ptr->elems[1] == (void *)0x0) {\n      if (pnVar9 == (node234 *)0x0) {\n        safefree(ptr);\n        *puVar4 = 0;\n        return local_34;\n      }\n    }\n    else if (pnVar9 == (node234 *)0x0) {\n      pnVar5 = (node234_conflict *)0x0;\nLAB_0003e9d5:\n      if (local_38 == 2) {\nLAB_0003ea09:\n        local_38 = 2;\n      }\n      else {\n        pvVar7 = ptr->elems[local_38 + 1];\n        iVar12 = local_38 + 1;\n        if (pvVar7 != (void *)0x0) {\n          do {\n            ptr->counts[iVar12 + 3] = (int)pvVar7;\n            if (iVar12 == 2) goto LAB_0003ea09;\n            pvVar7 = ptr->elems[2];\n            iVar12 = 2;\n          } while (pvVar7 != (void *)0x0);\n          local_38 = 1;\n        }\n      }\n      ptr->elems[local_38] = (void *)0x0;\n      while (pnVar3 = pnVar5, pnVar3 != (node234_conflict *)0x0) {\n        iVar12 = 0;\n        if ((pnVar3->kids[0] != ptr) && (iVar12 = 1, pnVar3->kids[1] != ptr)) {\n          iVar12 = (pnVar3->kids[2] != ptr) + 2;\n        }\n        pnVar3->counts[iVar12] = pnVar3->counts[iVar12] + -1;\n        ptr = pnVar3;\n        pnVar5 = pnVar3->parent;\n      }\n      return local_34;\n    }\n  }\n  else if ((pnVar9 == (node234 *)0x0) && (ptr->elems[1] != (void *)0x0)) goto LAB_0003e9d5;\n  pnVar9 = ptr->kids[local_38];\n  pnVar5 = pnVar9;\n  if (pnVar9->elems[1] == (void *)0x0) {\n    pnVar10 = ptr->kids[local_38 + 1];\n    iVar12 = local_38 + 1;\n    pnVar13 = pnVar10->kids[0];\n    pnVar11 = pnVar10;\n    if (pnVar10->elems[1] == (void *)0x0) {\n      pvVar7 = ptr->elems[local_38];\n      pnVar9->kids[2] = pnVar13;\n      pnVar9->elems[1] = pvVar7;\n      pnVar9->counts[2] = pnVar10->counts[0];\n      if (pnVar13 != (node234 *)0x0) {\n        pnVar13->parent = pnVar9;\n      }\n      iVar6 = pnVar10->counts[1];\n      pnVar9->elems[2] = pnVar10->elems[0];\n      pnVar13 = pnVar10->kids[1];\n      pnVar9->counts[3] = iVar6;\n      pnVar9->kids[3] = pnVar13;\n      if (pnVar13 != (node234 *)0x0) {\n        pnVar13->parent = pnVar9;\n      }\n      safefree(pnVar10);\n      iVar6 = countnode234(pnVar9);\n      ptr->counts[local_38] = iVar6;\n      if (local_38 == 2) {\nLAB_0003ec29:\n        iVar12 = 3;\n        iVar6 = 2;\n      }\n      else {\n        pvVar7 = ptr->elems[local_38 + 1];\n        iVar6 = local_38;\n        if (pvVar7 != (void *)0x0) {\n          do {\n            ptr->counts[iVar12 + 3] = (int)pvVar7;\n            ptr->kids[iVar12] = ptr->kids[iVar12 + 1];\n            ptr->counts[iVar12] = ptr->counts[iVar12 + 1];\n            if (iVar12 == 2) goto LAB_0003ec29;\n            pvVar7 = ptr->elems[2];\n            iVar12 = 2;\n          } while (pvVar7 != (void *)0x0);\n          iVar6 = 1;\n        }\n      }\n      ptr->elems[iVar6] = (void *)0x0;\n      ptr->kids[iVar12] = (node234 *)0x0;\n      ptr->counts[iVar12] = 0;\n      if (ptr->elems[0] == (void *)0x0) {\n        *puVar4 = pnVar9;\n        pnVar9->parent = (node234_conflict *)0x0;\n        safefree(ptr);\n      }\n      index = pnVar9->counts[1] + pnVar9->counts[0] + 1;\n    }\n    else {\n      while (pnVar9 = pnVar13, pnVar9 != (node234 *)0x0) {\n        pnVar11 = pnVar9;\n        pnVar13 = pnVar9->kids[0];\n      }\n      ptr->elems[local_38] = pnVar11->elems[0];\n      index = 0;\n      pnVar9 = pnVar10;\n    }\n  }\n  else {\n    while (pnVar10 = pnVar5->kids[0], pnVar10 != (node234 *)0x0) {\n      while ((pnVar13 = pnVar5->kids[3], pnVar5->kids[3] != (node234 *)0x0 ||\n             (pnVar13 = pnVar5->kids[2], pnVar5->kids[2] != (node234 *)0x0))) {\n        pnVar5 = pnVar13;\n        pnVar10 = pnVar5->kids[0];\n        if (pnVar10 == (node234 *)0x0) goto LAB_0003e958;\n      }\n      ppnVar2 = pnVar5->kids;\n      pnVar5 = ppnVar2[1];\n      if (ppnVar2[1] == (node234 *)0x0) {\n        pnVar5 = pnVar10;\n      }\n    }\nLAB_0003e958:\n    pvVar7 = pnVar5->elems[2];\n    if ((pvVar7 == (void *)0x0) && (pvVar7 = pnVar5->elems[1], pvVar7 == (void *)0x0)) {\n      pvVar7 = pnVar5->elems[0];\n    }\n    ptr->elems[local_38] = pvVar7;\n    index = ptr->counts[local_38] + -1;\n  }\n  goto joined_r0x0003e772;\nLAB_0003eab0:\n  pnVar9 = ptr->kids[1];\n  if (pnVar9->elems[1] == (void *)0x0) {\n    local_30 = 1;\n    iVar6 = 0;\nLAB_0003eacb:\n    pnVar10 = ptr->kids[iVar6];\n    if (pnVar10->elems[1] == (void *)0x0) {\n      local_28 = local_30 + 1;\n      ppnVar2 = ptr->kids + local_30 + -1;\n      pnVar13 = ppnVar2[2];\n      if (pnVar13 == (node234 *)0x0) {\n        pnVar13 = ppnVar2[1];\n        iVar12 = index + 1 + ptr->counts[iVar6];\n      }\n      else {\n        if (pnVar13->elems[1] != (void *)0x0) {\nLAB_0003e836:\n          iVar12 = pnVar13->counts[0];\n          pnVar9->elems[1] = ptr->elems[local_30];\n          pnVar10 = pnVar13->kids[0];\n          pnVar9->counts[2] = iVar12;\n          pnVar9->kids[2] = pnVar10;\n          if (pnVar10 != (node234 *)0x0) {\n            pnVar10->parent = pnVar9;\n          }\n          ptr->elems[local_30] = pnVar13->elems[0];\n          pnVar13->kids[0] = pnVar13->kids[1];\n          pnVar13->counts[0] = pnVar13->counts[1];\n          if (pnVar13->elems[1] == (void *)0x0) {\n            iVar12 = 1;\n            iVar6 = 0;\n          }\n          else {\n            pnVar10 = pnVar13->kids[2];\n            pnVar13->elems[0] = pnVar13->elems[1];\n            pvVar7 = pnVar13->elems[2];\n            pnVar13->kids[1] = pnVar10;\n            pnVar13->counts[1] = pnVar13->counts[2];\n            if (pvVar7 == (void *)0x0) {\n              iVar12 = 2;\n              iVar6 = 1;\n            }\n            else {\n              pnVar10 = pnVar13->kids[3];\n              pnVar13->elems[1] = pvVar7;\n              iVar12 = 3;\n              pnVar13->kids[2] = pnVar10;\n              pnVar13->counts[2] = pnVar13->counts[3];\n              iVar6 = 2;\n            }\n          }\n          pnVar13->kids[iVar12] = (node234 *)0x0;\n          pnVar13->counts[iVar12] = 0;\n          pnVar13->elems[iVar6] = (void *)0x0;\n          iVar12 = countnode234(pnVar9);\n          ptr->counts[local_30] = iVar12;\n          iVar12 = countnode234(pnVar13);\n          ptr->counts[local_28] = iVar12;\n          pnVar9 = extraout_ECX;\n          goto joined_r0x0003e772;\n        }\n        pnVar10 = *ppnVar2;\n        pnVar13 = ppnVar2[1];\n        iVar6 = local_30 + -1;\n        iVar12 = index + 1 + (int)ppnVar2[4];\n      }\nLAB_0003ed0c:\n      pnVar13->kids[3] = pnVar13->kids[1];\n      pnVar13->counts[3] = pnVar13->counts[1];\n      pnVar13->elems[2] = pnVar13->elems[0];\n      pnVar13->kids[2] = pnVar13->kids[0];\n      pnVar13->counts[2] = pnVar13->counts[0];\n      iVar8 = pnVar10->counts[1];\n      pnVar13->elems[1] = ptr->elems[iVar6];\n      pnVar9 = pnVar10->kids[1];\n      pnVar13->counts[1] = iVar8;\n      pnVar13->kids[1] = pnVar9;\n      if (pnVar9 != (node234 *)0x0) {\n        pnVar9->parent = pnVar13;\n      }\n      iVar8 = pnVar10->counts[0];\n      pnVar13->elems[0] = pnVar10->elems[0];\n      pnVar9 = pnVar10->kids[0];\n      pnVar13->counts[0] = iVar8;\n      pnVar13->kids[0] = pnVar9;\n      if (pnVar9 != (node234 *)0x0) {\n        pnVar9->parent = pnVar13;\n      }\n      iVar8 = countnode234(pnVar13);\n      ptr->counts[local_30] = iVar8;\n      safefree(ptr_00);\n      pnVar9 = ptr->kids[iVar6 + 1];\n      while (pnVar9 != (node234 *)0x0) {\n        iVar8 = iVar6 + 1;\n        pnVar10 = (node234 *)ptr->counts[iVar8];\n        ptr->kids[iVar6] = pnVar9;\n        ptr->kids[iVar6 + 4] = pnVar10;\n        if (iVar8 == 3) {\n          ptr->elems[2] = (void *)0x0;\n          ptr->kids[3] = (node234 *)0x0;\n          ptr->counts[3] = 0;\n          goto LAB_0003edcd;\n        }\n        ptr->counts[iVar6 + 4] = (int)ptr->elems[iVar8];\n        pnVar9 = ptr->kids[iVar6 + 2];\n        iVar6 = iVar8;\n      }\n      ptr->kids[iVar6] = (node234 *)0x0;\n      ptr->counts[iVar6] = 0;\n      ptr->elems[iVar6] = (void *)0x0;\nLAB_0003edcd:\n      index = iVar12;\n      pnVar9 = pnVar13;\n      if (ptr->elems[0] == (void *)0x0) {\n        *puVar4 = pnVar13;\n        pnVar13->parent = (node234_conflict *)0x0;\n        safefree(ptr);\n      }\n      goto joined_r0x0003e772;\n    }\nLAB_0003eae0:\n    uVar1 = (uint)(pnVar10->elems[2] == (void *)0x0);\n    iVar12 = uVar1 * -4;\n    iVar8 = 2 - uVar1;\n    pnVar9->kids[2] = pnVar9->kids[1];\n    pnVar9->counts[2] = pnVar9->counts[1];\n    pnVar9->elems[1] = pnVar9->elems[0];\n    pnVar9->kids[1] = pnVar9->kids[0];\n    pnVar9->counts[1] = pnVar9->counts[0];\n    pnVar9->elems[0] = ptr->elems[iVar6];\n    pnVar13 = *(node234 **)((int)pnVar10 + iVar12 + 0x10);\n    pnVar9->kids[0] = pnVar13;\n    pnVar9->counts[0] = *(int *)((int)pnVar10 + iVar12 + 0x20);\n    if (pnVar13 != (node234 *)0x0) {\n      pnVar13->parent = pnVar9;\n    }\n    ptr->elems[iVar6] = *(void **)((int)pnVar10 + iVar8 * 4 + 0x24);\n    *(undefined4 *)((int)pnVar10 + iVar12 + 0x10) = 0;\n    *(undefined4 *)((int)pnVar10 + iVar12 + 0x20) = 0;\n    *(undefined4 *)((int)pnVar10 + iVar8 * 4 + 0x24) = 0;\n    iVar12 = countnode234(pnVar9);\n    ptr->counts[local_30] = iVar12;\n    iVar12 = ptr->counts[iVar6];\n    iVar8 = countnode234(n);\n    ptr->counts[iVar6] = iVar8;\n    index = (index + iVar12) - iVar8;\n  }\n  goto joined_r0x0003e772;\n}\n\n" (function_definition "void * __regparm3 delpos234_internal(tree234 *t,int index)\n\n{\n  uint uVar1;\n  node234 **ppnVar2;\n  node234_conflict *pnVar3;\n  node234_conflict *ptr;\n  undefined4 *puVar4;\n  node234_conflict *pnVar5;\n  int iVar6;\n  void *pvVar7;\n  int iVar8;\n  node234 *pnVar9;\n  node234_conflict *extraout_ECX;\n  node234 *pnVar10;\n  node234_conflict *n;\n  void *ptr_00;\n  node234 *pnVar11;\n  int iVar12;\n  node234 *pnVar13;\n  int local_38;\n  void *local_34;\n  int local_30;\n  int local_28;\n  \n  puVar4 = (undefined4 *)__x86_get_pc_thunk_di();\n  local_38 = -1;\n  local_34 = (void *)0x0;\n  pnVar9 = (node234_conflict *)*puVar4;\njoined_r0x0003e772:\n  while( true ) {\n    ptr = pnVar9;\n    iVar12 = index;\n    if (ptr == (node234_conflict *)0x0) {\n      if (local_34 == (void *)0x0) {\n        local_34 = *(void **)(local_38 * 4 + 0x24);\n      }\n      if (local_38 == -1) {\n        return (void *)0x0;\n      }\n      goto LAB_0003e7aa;\n    }\n    if (ptr->counts[0] <= iVar12) break;\n    pnVar10 = ptr->kids[0];\n    index = iVar12;\n    pnVar9 = pnVar10;\n    if (pnVar10->elems[1] == (void *)0x0) {\n      pnVar13 = ptr->kids[1];\n      if (pnVar13 != (node234 *)0x0) {\n        local_30 = 0;\n        local_28 = 1;\n        if (pnVar13->elems[1] == (void *)0x0) goto LAB_0003ed02;\n        goto LAB_0003e836;\n      }\nLAB_0003ed02:\n      local_30 = 1;\n      iVar6 = 0;\n      goto LAB_0003ed0c;\n    }\n  }\n  index = iVar12 - (ptr->counts[0] + 1);\n  if (-1 < index) {\n    if (index < ptr->counts[1]) goto LAB_0003eab0;\n    iVar12 = index - (ptr->counts[1] + 1);\n    if (iVar12 < 0) {\n      local_38 = 1;\n      if (local_34 == (void *)0x0) {\n        local_34 = ptr->elems[1];\n      }\nLAB_0003e7aa:\n      pnVar5 = ptr->parent;\n      pnVar9 = ptr->kids[0];\n      goto joined_r0x0003e7b1;\n    }\n    if (iVar12 < ptr->counts[2]) {\n      pnVar9 = ptr->kids[2];\n      index = iVar12;\n      if (pnVar9->elems[1] == (void *)0x0) {\n        iVar6 = 1;\n        local_30 = 2;\n        goto LAB_0003eacb;\n      }\n    }\n    else {\n      index = iVar12 - (ptr->counts[2] + 1);\n      if (index < 0) {\n        local_38 = 2;\n        if (local_34 == (void *)0x0) {\n          local_34 = ptr->elems[2];\n        }\n        goto LAB_0003e7aa;\n      }\n      pnVar13 = ptr->kids[3];\n      pnVar9 = pnVar13;\n      if (pnVar13->elems[1] == (void *)0x0) {\n        pnVar10 = ptr->kids[2];\n        if (pnVar10->elems[1] == (void *)0x0) {\n          iVar6 = 2;\n          local_30 = 3;\n          goto LAB_0003ed0c;\n        }\n        local_30 = 3;\n        iVar6 = 2;\n        goto LAB_0003eae0;\n      }\n    }\n    goto joined_r0x0003e772;\n  }\n  local_38 = 0;\n  if (local_34 != (void *)0x0) goto LAB_0003e7aa;\n  local_34 = ptr->elems[0];\n  pnVar5 = ptr->parent;\n  pnVar9 = ptr->kids[0];\njoined_r0x0003e7b1:\n  if (pnVar5 == (node234_conflict *)0x0) {\n    if (ptr->elems[1] == (void *)0x0) {\n      if (pnVar9 == (node234 *)0x0) {\n        safefree(ptr);\n        *puVar4 = 0;\n        return local_34;\n      }\n    }\n    else if (pnVar9 == (node234 *)0x0) {\n      pnVar5 = (node234_conflict *)0x0;\nLAB_0003e9d5:\n      if (local_38 == 2) {\nLAB_0003ea09:\n        local_38 = 2;\n      }\n      else {\n        pvVar7 = ptr->elems[local_38 + 1];\n        iVar12 = local_38 + 1;\n        if (pvVar7 != (void *)0x0) {\n          do {\n            ptr->counts[iVar12 + 3] = (int)pvVar7;\n            if (iVar12 == 2) goto LAB_0003ea09;\n            pvVar7 = ptr->elems[2];\n            iVar12 = 2;\n          } while (pvVar7 != (void *)0x0);\n          local_38 = 1;\n        }\n      }\n      ptr->elems[local_38] = (void *)0x0;\n      while (pnVar3 = pnVar5, pnVar3 != (node234_conflict *)0x0) {\n        iVar12 = 0;\n        if ((pnVar3->kids[0] != ptr) && (iVar12 = 1, pnVar3->kids[1] != ptr)) {\n          iVar12 = (pnVar3->kids[2] != ptr) + 2;\n        }\n        pnVar3->counts[iVar12] = pnVar3->counts[iVar12] + -1;\n        ptr = pnVar3;\n        pnVar5 = pnVar3->parent;\n      }\n      return local_34;\n    }\n  }\n  else if ((pnVar9 == (node234 *)0x0) && (ptr->elems[1] != (void *)0x0)) goto LAB_0003e9d5;\n  pnVar9 = ptr->kids[local_38];\n  pnVar5 = pnVar9;\n  if (pnVar9->elems[1] == (void *)0x0) {\n    pnVar10 = ptr->kids[local_38 + 1];\n    iVar12 = local_38 + 1;\n    pnVar13 = pnVar10->kids[0];\n    pnVar11 = pnVar10;\n    if (pnVar10->elems[1] == (void *)0x0) {\n      pvVar7 = ptr->elems[local_38];\n      pnVar9->kids[2] = pnVar13;\n      pnVar9->elems[1] = pvVar7;\n      pnVar9->counts[2] = pnVar10->counts[0];\n      if (pnVar13 != (node234 *)0x0) {\n        pnVar13->parent = pnVar9;\n      }\n      iVar6 = pnVar10->counts[1];\n      pnVar9->elems[2] = pnVar10->elems[0];\n      pnVar13 = pnVar10->kids[1];\n      pnVar9->counts[3] = iVar6;\n      pnVar9->kids[3] = pnVar13;\n      if (pnVar13 != (node234 *)0x0) {\n        pnVar13->parent = pnVar9;\n      }\n      safefree(pnVar10);\n      iVar6 = countnode234(pnVar9);\n      ptr->counts[local_38] = iVar6;\n      if (local_38 == 2) {\nLAB_0003ec29:\n        iVar12 = 3;\n        iVar6 = 2;\n      }\n      else {\n        pvVar7 = ptr->elems[local_38 + 1];\n        iVar6 = local_38;\n        if (pvVar7 != (void *)0x0) {\n          do {\n            ptr->counts[iVar12 + 3] = (int)pvVar7;\n            ptr->kids[iVar12] = ptr->kids[iVar12 + 1];\n            ptr->counts[iVar12] = ptr->counts[iVar12 + 1];\n            if (iVar12 == 2) goto LAB_0003ec29;\n            pvVar7 = ptr->elems[2];\n            iVar12 = 2;\n          } while (pvVar7 != (void *)0x0);\n          iVar6 = 1;\n        }\n      }\n      ptr->elems[iVar6] = (void *)0x0;\n      ptr->kids[iVar12] = (node234 *)0x0;\n      ptr->counts[iVar12] = 0;\n      if (ptr->elems[0] == (void *)0x0) {\n        *puVar4 = pnVar9;\n        pnVar9->parent = (node234_conflict *)0x0;\n        safefree(ptr);\n      }\n      index = pnVar9->counts[1] + pnVar9->counts[0] + 1;\n    }\n    else {\n      while (pnVar9 = pnVar13, pnVar9 != (node234 *)0x0) {\n        pnVar11 = pnVar9;\n        pnVar13 = pnVar9->kids[0];\n      }\n      ptr->elems[local_38] = pnVar11->elems[0];\n      index = 0;\n      pnVar9 = pnVar10;\n    }\n  }\n  else {\n    while (pnVar10 = pnVar5->kids[0], pnVar10 != (node234 *)0x0) {\n      while ((pnVar13 = pnVar5->kids[3], pnVar5->kids[3] != (node234 *)0x0 ||\n             (pnVar13 = pnVar5->kids[2], pnVar5->kids[2] != (node234 *)0x0))) {\n        pnVar5 = pnVar13;\n        pnVar10 = pnVar5->kids[0];\n        if (pnVar10 == (node234 *)0x0) goto LAB_0003e958;\n      }\n      ppnVar2 = pnVar5->kids;\n      pnVar5 = ppnVar2[1];\n      if (ppnVar2[1] == (node234 *)0x0) {\n        pnVar5 = pnVar10;\n      }\n    }\nLAB_0003e958:\n    pvVar7 = pnVar5->elems[2];\n    if ((pvVar7 == (void *)0x0) && (pvVar7 = pnVar5->elems[1], pvVar7 == (void *)0x0)) {\n      pvVar7 = pnVar5->elems[0];\n    }\n    ptr->elems[local_38] = pvVar7;\n    index = ptr->counts[local_38] + -1;\n  }\n  goto joined_r0x0003e772;\nLAB_0003eab0:\n  pnVar9 = ptr->kids[1];\n  if (pnVar9->elems[1] == (void *)0x0) {\n    local_30 = 1;\n    iVar6 = 0;\nLAB_0003eacb:\n    pnVar10 = ptr->kids[iVar6];\n    if (pnVar10->elems[1] == (void *)0x0) {\n      local_28 = local_30 + 1;\n      ppnVar2 = ptr->kids + local_30 + -1;\n      pnVar13 = ppnVar2[2];\n      if (pnVar13 == (node234 *)0x0) {\n        pnVar13 = ppnVar2[1];\n        iVar12 = index + 1 + ptr->counts[iVar6];\n      }\n      else {\n        if (pnVar13->elems[1] != (void *)0x0) {\nLAB_0003e836:\n          iVar12 = pnVar13->counts[0];\n          pnVar9->elems[1] = ptr->elems[local_30];\n          pnVar10 = pnVar13->kids[0];\n          pnVar9->counts[2] = iVar12;\n          pnVar9->kids[2] = pnVar10;\n          if (pnVar10 != (node234 *)0x0) {\n            pnVar10->parent = pnVar9;\n          }\n          ptr->elems[local_30] = pnVar13->elems[0];\n          pnVar13->kids[0] = pnVar13->kids[1];\n          pnVar13->counts[0] = pnVar13->counts[1];\n          if (pnVar13->elems[1] == (void *)0x0) {\n            iVar12 = 1;\n            iVar6 = 0;\n          }\n          else {\n            pnVar10 = pnVar13->kids[2];\n            pnVar13->elems[0] = pnVar13->elems[1];\n            pvVar7 = pnVar13->elems[2];\n            pnVar13->kids[1] = pnVar10;\n            pnVar13->counts[1] = pnVar13->counts[2];\n            if (pvVar7 == (void *)0x0) {\n              iVar12 = 2;\n              iVar6 = 1;\n            }\n            else {\n              pnVar10 = pnVar13->kids[3];\n              pnVar13->elems[1] = pvVar7;\n              iVar12 = 3;\n              pnVar13->kids[2] = pnVar10;\n              pnVar13->counts[2] = pnVar13->counts[3];\n              iVar6 = 2;\n            }\n          }\n          pnVar13->kids[iVar12] = (node234 *)0x0;\n          pnVar13->counts[iVar12] = 0;\n          pnVar13->elems[iVar6] = (void *)0x0;\n          iVar12 = countnode234(pnVar9);\n          ptr->counts[local_30] = iVar12;\n          iVar12 = countnode234(pnVar13);\n          ptr->counts[local_28] = iVar12;\n          pnVar9 = extraout_ECX;\n          goto joined_r0x0003e772;\n        }\n        pnVar10 = *ppnVar2;\n        pnVar13 = ppnVar2[1];\n        iVar6 = local_30 + -1;\n        iVar12 = index + 1 + (int)ppnVar2[4];\n      }\nLAB_0003ed0c:\n      pnVar13->kids[3] = pnVar13->kids[1];\n      pnVar13->counts[3] = pnVar13->counts[1];\n      pnVar13->elems[2] = pnVar13->elems[0];\n      pnVar13->kids[2] = pnVar13->kids[0];\n      pnVar13->counts[2] = pnVar13->counts[0];\n      iVar8 = pnVar10->counts[1];\n      pnVar13->elems[1] = ptr->elems[iVar6];\n      pnVar9 = pnVar10->kids[1];\n      pnVar13->counts[1] = iVar8;\n      pnVar13->kids[1] = pnVar9;\n      if (pnVar9 != (node234 *)0x0) {\n        pnVar9->parent = pnVar13;\n      }\n      iVar8 = pnVar10->counts[0];\n      pnVar13->elems[0] = pnVar10->elems[0];\n      pnVar9 = pnVar10->kids[0];\n      pnVar13->counts[0] = iVar8;\n      pnVar13->kids[0] = pnVar9;\n      if (pnVar9 != (node234 *)0x0) {\n        pnVar9->parent = pnVar13;\n      }\n      iVar8 = countnode234(pnVar13);\n      ptr->counts[local_30] = iVar8;\n      safefree(ptr_00);\n      pnVar9 = ptr->kids[iVar6 + 1];\n      while (pnVar9 != (node234 *)0x0) {\n        iVar8 = iVar6 + 1;\n        pnVar10 = (node234 *)ptr->counts[iVar8];\n        ptr->kids[iVar6] = pnVar9;\n        ptr->kids[iVar6 + 4] = pnVar10;\n        if (iVar8 == 3) {\n          ptr->elems[2] = (void *)0x0;\n          ptr->kids[3] = (node234 *)0x0;\n          ptr->counts[3] = 0;\n          goto LAB_0003edcd;\n        }\n        ptr->counts[iVar6 + 4] = (int)ptr->elems[iVar8];\n        pnVar9 = ptr->kids[iVar6 + 2];\n        iVar6 = iVar8;\n      }\n      ptr->kids[iVar6] = (node234 *)0x0;\n      ptr->counts[iVar6] = 0;\n      ptr->elems[iVar6] = (void *)0x0;\nLAB_0003edcd:\n      index = iVar12;\n      pnVar9 = pnVar13;\n      if (ptr->elems[0] == (void *)0x0) {\n        *puVar4 = pnVar13;\n        pnVar13->parent = (node234_conflict *)0x0;\n        safefree(ptr);\n      }\n      goto joined_r0x0003e772;\n    }\nLAB_0003eae0:\n    uVar1 = (uint)(pnVar10->elems[2] == (void *)0x0);\n    iVar12 = uVar1 * -4;\n    iVar8 = 2 - uVar1;\n    pnVar9->kids[2] = pnVar9->kids[1];\n    pnVar9->counts[2] = pnVar9->counts[1];\n    pnVar9->elems[1] = pnVar9->elems[0];\n    pnVar9->kids[1] = pnVar9->kids[0];\n    pnVar9->counts[1] = pnVar9->counts[0];\n    pnVar9->elems[0] = ptr->elems[iVar6];\n    pnVar13 = *(node234 **)((int)pnVar10 + iVar12 + 0x10);\n    pnVar9->kids[0] = pnVar13;\n    pnVar9->counts[0] = *(int *)((int)pnVar10 + iVar12 + 0x20);\n    if (pnVar13 != (node234 *)0x0) {\n      pnVar13->parent = pnVar9;\n    }\n    ptr->elems[iVar6] = *(void **)((int)pnVar10 + iVar8 * 4 + 0x24);\n    *(undefined4 *)((int)pnVar10 + iVar12 + 0x10) = 0;\n    *(undefined4 *)((int)pnVar10 + iVar12 + 0x20) = 0;\n    *(undefined4 *)((int)pnVar10 + iVar8 * 4 + 0x24) = 0;\n    iVar12 = countnode234(pnVar9);\n    ptr->counts[local_30] = iVar12;\n    iVar12 = ptr->counts[iVar6];\n    iVar8 = countnode234(n);\n    ptr->counts[iVar6] = iVar8;\n    index = (index + iVar12) - iVar8;\n  }\n  goto joined_r0x0003e772;\n}" primitive_type (pointer_declarator "* __regparm3 delpos234_internal(tree234 *t,int index)" * (ERROR "__regparm3" identifier) (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  uint uVar1;\n  node234 **ppnVar2;\n  node234_conflict *pnVar3;\n  node234_conflict *ptr;\n  undefined4 *puVar4;\n  node234_conflict *pnVar5;\n  int iVar6;\n  void *pvVar7;\n  int iVar8;\n  node234 *pnVar9;\n  node234_conflict *extraout_ECX;\n  node234 *pnVar10;\n  node234_conflict *n;\n  void *ptr_00;\n  node234 *pnVar11;\n  int iVar12;\n  node234 *pnVar13;\n  int local_38;\n  void *local_34;\n  int local_30;\n  int local_28;\n  \n  puVar4 = (undefined4 *)__x86_get_pc_thunk_di();\n  local_38 = -1;\n  local_34 = (void *)0x0;\n  pnVar9 = (node234_conflict *)*puVar4;\njoined_r0x0003e772:\n  while( true ) {\n    ptr = pnVar9;\n    iVar12 = index;\n    if (ptr == (node234_conflict *)0x0) {\n      if (local_34 == (void *)0x0) {\n        local_34 = *(void **)(local_38 * 4 + 0x24);\n      }\n      if (local_38 == -1) {\n        return (void *)0x0;\n      }\n      goto LAB_0003e7aa;\n    }\n    if (ptr->counts[0] <= iVar12) break;\n    pnVar10 = ptr->kids[0];\n    index = iVar12;\n    pnVar9 = pnVar10;\n    if (pnVar10->elems[1] == (void *)0x0) {\n      pnVar13 = ptr->kids[1];\n      if (pnVar13 != (node234 *)0x0) {\n        local_30 = 0;\n        local_28 = 1;\n        if (pnVar13->elems[1] == (void *)0x0) goto LAB_0003ed02;\n        goto LAB_0003e836;\n      }\nLAB_0003ed02:\n      local_30 = 1;\n      iVar6 = 0;\n      goto LAB_0003ed0c;\n    }\n  }\n  index = iVar12 - (ptr->counts[0] + 1);\n  if (-1 < index) {\n    if (index < ptr->counts[1]) goto LAB_0003eab0;\n    iVar12 = index - (ptr->counts[1] + 1);\n    if (iVar12 < 0) {\n      local_38 = 1;\n      if (local_34 == (void *)0x0) {\n        local_34 = ptr->elems[1];\n      }\nLAB_0003e7aa:\n      pnVar5 = ptr->parent;\n      pnVar9 = ptr->kids[0];\n      goto joined_r0x0003e7b1;\n    }\n    if (iVar12 < ptr->counts[2]) {\n      pnVar9 = ptr->kids[2];\n      index = iVar12;\n      if (pnVar9->elems[1] == (void *)0x0) {\n        iVar6 = 1;\n        local_30 = 2;\n        goto LAB_0003eacb;\n      }\n    }\n    else {\n      index = iVar12 - (ptr->counts[2] + 1);\n      if (index < 0) {\n        local_38 = 2;\n        if (local_34 == (void *)0x0) {\n          local_34 = ptr->elems[2];\n        }\n        goto LAB_0003e7aa;\n      }\n      pnVar13 = ptr->kids[3];\n      pnVar9 = pnVar13;\n      if (pnVar13->elems[1] == (void *)0x0) {\n        pnVar10 = ptr->kids[2];\n        if (pnVar10->elems[1] == (void *)0x0) {\n          iVar6 = 2;\n          local_30 = 3;\n          goto LAB_0003ed0c;\n        }\n        local_30 = 3;\n        iVar6 = 2;\n        goto LAB_0003eae0;\n      }\n    }\n    goto joined_r0x0003e772;\n  }\n  local_38 = 0;\n  if (local_34 != (void *)0x0) goto LAB_0003e7aa;\n  local_34 = ptr->elems[0];\n  pnVar5 = ptr->parent;\n  pnVar9 = ptr->kids[0];\njoined_r0x0003e7b1:\n  if (pnVar5 == (node234_conflict *)0x0) {\n    if (ptr->elems[1] == (void *)0x0) {\n      if (pnVar9 == (node234 *)0x0) {\n        safefree(ptr);\n        *puVar4 = 0;\n        return local_34;\n      }\n    }\n    else if (pnVar9 == (node234 *)0x0) {\n      pnVar5 = (node234_conflict *)0x0;\nLAB_0003e9d5:\n      if (local_38 == 2) {\nLAB_0003ea09:\n        local_38 = 2;\n      }\n      else {\n        pvVar7 = ptr->elems[local_38 + 1];\n        iVar12 = local_38 + 1;\n        if (pvVar7 != (void *)0x0) {\n          do {\n            ptr->counts[iVar12 + 3] = (int)pvVar7;\n            if (iVar12 == 2) goto LAB_0003ea09;\n            pvVar7 = ptr->elems[2];\n            iVar12 = 2;\n          } while (pvVar7 != (void *)0x0);\n          local_38 = 1;\n        }\n      }\n      ptr->elems[local_38] = (void *)0x0;\n      while (pnVar3 = pnVar5, pnVar3 != (node234_conflict *)0x0) {\n        iVar12 = 0;\n        if ((pnVar3->kids[0] != ptr) && (iVar12 = 1, pnVar3->kids[1] != ptr)) {\n          iVar12 = (pnVar3->kids[2] != ptr) + 2;\n        }\n        pnVar3->counts[iVar12] = pnVar3->counts[iVar12] + -1;\n        ptr = pnVar3;\n        pnVar5 = pnVar3->parent;\n      }\n      return local_34;\n    }\n  }\n  else if ((pnVar9 == (node234 *)0x0) && (ptr->elems[1] != (void *)0x0)) goto LAB_0003e9d5;\n  pnVar9 = ptr->kids[local_38];\n  pnVar5 = pnVar9;\n  if (pnVar9->elems[1] == (void *)0x0) {\n    pnVar10 = ptr->kids[local_38 + 1];\n    iVar12 = local_38 + 1;\n    pnVar13 = pnVar10->kids[0];\n    pnVar11 = pnVar10;\n    if (pnVar10->elems[1] == (void *)0x0) {\n      pvVar7 = ptr->elems[local_38];\n      pnVar9->kids[2] = pnVar13;\n      pnVar9->elems[1] = pvVar7;\n      pnVar9->counts[2] = pnVar10->counts[0];\n      if (pnVar13 != (node234 *)0x0) {\n        pnVar13->parent = pnVar9;\n      }\n      iVar6 = pnVar10->counts[1];\n      pnVar9->elems[2] = pnVar10->elems[0];\n      pnVar13 = pnVar10->kids[1];\n      pnVar9->counts[3] = iVar6;\n      pnVar9->kids[3] = pnVar13;\n      if (pnVar13 != (node234 *)0x0) {\n        pnVar13->parent = pnVar9;\n      }\n      safefree(pnVar10);\n      iVar6 = countnode234(pnVar9);\n      ptr->counts[local_38] = iVar6;\n      if (local_38 == 2) {\nLAB_0003ec29:\n        iVar12 = 3;\n        iVar6 = 2;\n      }\n      else {\n        pvVar7 = ptr->elems[local_38 + 1];\n        iVar6 = local_38;\n        if (pvVar7 != (void *)0x0) {\n          do {\n            ptr->counts[iVar12 + 3] = (int)pvVar7;\n            ptr->kids[iVar12] = ptr->kids[iVar12 + 1];\n            ptr->counts[iVar12] = ptr->counts[iVar12 + 1];\n            if (iVar12 == 2) goto LAB_0003ec29;\n            pvVar7 = ptr->elems[2];\n            iVar12 = 2;\n          } while (pvVar7 != (void *)0x0);\n          iVar6 = 1;\n        }\n      }\n      ptr->elems[iVar6] = (void *)0x0;\n      ptr->kids[iVar12] = (node234 *)0x0;\n      ptr->counts[iVar12] = 0;\n      if (ptr->elems[0] == (void *)0x0) {\n        *puVar4 = pnVar9;\n        pnVar9->parent = (node234_conflict *)0x0;\n        safefree(ptr);\n      }\n      index = pnVar9->counts[1] + pnVar9->counts[0] + 1;\n    }\n    else {\n      while (pnVar9 = pnVar13, pnVar9 != (node234 *)0x0) {\n        pnVar11 = pnVar9;\n        pnVar13 = pnVar9->kids[0];\n      }\n      ptr->elems[local_38] = pnVar11->elems[0];\n      index = 0;\n      pnVar9 = pnVar10;\n    }\n  }\n  else {\n    while (pnVar10 = pnVar5->kids[0], pnVar10 != (node234 *)0x0) {\n      while ((pnVar13 = pnVar5->kids[3], pnVar5->kids[3] != (node234 *)0x0 ||\n             (pnVar13 = pnVar5->kids[2], pnVar5->kids[2] != (node234 *)0x0))) {\n        pnVar5 = pnVar13;\n        pnVar10 = pnVar5->kids[0];\n        if (pnVar10 == (node234 *)0x0) goto LAB_0003e958;\n      }\n      ppnVar2 = pnVar5->kids;\n      pnVar5 = ppnVar2[1];\n      if (ppnVar2[1] == (node234 *)0x0) {\n        pnVar5 = pnVar10;\n      }\n    }\nLAB_0003e958:\n    pvVar7 = pnVar5->elems[2];\n    if ((pvVar7 == (void *)0x0) && (pvVar7 = pnVar5->elems[1], pvVar7 == (void *)0x0)) {\n      pvVar7 = pnVar5->elems[0];\n    }\n    ptr->elems[local_38] = pvVar7;\n    index = ptr->counts[local_38] + -1;\n  }\n  goto joined_r0x0003e772;\nLAB_0003eab0:\n  pnVar9 = ptr->kids[1];\n  if (pnVar9->elems[1] == (void *)0x0) {\n    local_30 = 1;\n    iVar6 = 0;\nLAB_0003eacb:\n    pnVar10 = ptr->kids[iVar6];\n    if (pnVar10->elems[1] == (void *)0x0) {\n      local_28 = local_30 + 1;\n      ppnVar2 = ptr->kids + local_30 + -1;\n      pnVar13 = ppnVar2[2];\n      if (pnVar13 == (node234 *)0x0) {\n        pnVar13 = ppnVar2[1];\n        iVar12 = index + 1 + ptr->counts[iVar6];\n      }\n      else {\n        if (pnVar13->elems[1] != (void *)0x0) {\nLAB_0003e836:\n          iVar12 = pnVar13->counts[0];\n          pnVar9->elems[1] = ptr->elems[local_30];\n          pnVar10 = pnVar13->kids[0];\n          pnVar9->counts[2] = iVar12;\n          pnVar9->kids[2] = pnVar10;\n          if (pnVar10 != (node234 *)0x0) {\n            pnVar10->parent = pnVar9;\n          }\n          ptr->elems[local_30] = pnVar13->elems[0];\n          pnVar13->kids[0] = pnVar13->kids[1];\n          pnVar13->counts[0] = pnVar13->counts[1];\n          if (pnVar13->elems[1] == (void *)0x0) {\n            iVar12 = 1;\n            iVar6 = 0;\n          }\n          else {\n            pnVar10 = pnVar13->kids[2];\n            pnVar13->elems[0] = pnVar13->elems[1];\n            pvVar7 = pnVar13->elems[2];\n            pnVar13->kids[1] = pnVar10;\n            pnVar13->counts[1] = pnVar13->counts[2];\n            if (pvVar7 == (void *)0x0) {\n              iVar12 = 2;\n              iVar6 = 1;\n            }\n            else {\n              pnVar10 = pnVar13->kids[3];\n              pnVar13->elems[1] = pvVar7;\n              iVar12 = 3;\n              pnVar13->kids[2] = pnVar10;\n              pnVar13->counts[2] = pnVar13->counts[3];\n              iVar6 = 2;\n            }\n          }\n          pnVar13->kids[iVar12] = (node234 *)0x0;\n          pnVar13->counts[iVar12] = 0;\n          pnVar13->elems[iVar6] = (void *)0x0;\n          iVar12 = countnode234(pnVar9);\n          ptr->counts[local_30] = iVar12;\n          iVar12 = countnode234(pnVar13);\n          ptr->counts[local_28] = iVar12;\n          pnVar9 = extraout_ECX;\n          goto joined_r0x0003e772;\n        }\n        pnVar10 = *ppnVar2;\n        pnVar13 = ppnVar2[1];\n        iVar6 = local_30 + -1;\n        iVar12 = index + 1 + (int)ppnVar2[4];\n      }\nLAB_0003ed0c:\n      pnVar13->kids[3] = pnVar13->kids[1];\n      pnVar13->counts[3] = pnVar13->counts[1];\n      pnVar13->elems[2] = pnVar13->elems[0];\n      pnVar13->kids[2] = pnVar13->kids[0];\n      pnVar13->counts[2] = pnVar13->counts[0];\n      iVar8 = pnVar10->counts[1];\n      pnVar13->elems[1] = ptr->elems[iVar6];\n      pnVar9 = pnVar10->kids[1];\n      pnVar13->counts[1] = iVar8;\n      pnVar13->kids[1] = pnVar9;\n      if (pnVar9 != (node234 *)0x0) {\n        pnVar9->parent = pnVar13;\n      }\n      iVar8 = pnVar10->counts[0];\n      pnVar13->elems[0] = pnVar10->elems[0];\n      pnVar9 = pnVar10->kids[0];\n      pnVar13->counts[0] = iVar8;\n      pnVar13->kids[0] = pnVar9;\n      if (pnVar9 != (node234 *)0x0) {\n        pnVar9->parent = pnVar13;\n      }\n      iVar8 = countnode234(pnVar13);\n      ptr->counts[local_30] = iVar8;\n      safefree(ptr_00);\n      pnVar9 = ptr->kids[iVar6 + 1];\n      while (pnVar9 != (node234 *)0x0) {\n        iVar8 = iVar6 + 1;\n        pnVar10 = (node234 *)ptr->counts[iVar8];\n        ptr->kids[iVar6] = pnVar9;\n        ptr->kids[iVar6 + 4] = pnVar10;\n        if (iVar8 == 3) {\n          ptr->elems[2] = (void *)0x0;\n          ptr->kids[3] = (node234 *)0x0;\n          ptr->counts[3] = 0;\n          goto LAB_0003edcd;\n        }\n        ptr->counts[iVar6 + 4] = (int)ptr->elems[iVar8];\n        pnVar9 = ptr->kids[iVar6 + 2];\n        iVar6 = iVar8;\n      }\n      ptr->kids[iVar6] = (node234 *)0x0;\n      ptr->counts[iVar6] = 0;\n      ptr->elems[iVar6] = (void *)0x0;\nLAB_0003edcd:\n      index = iVar12;\n      pnVar9 = pnVar13;\n      if (ptr->elems[0] == (void *)0x0) {\n        *puVar4 = pnVar13;\n        pnVar13->parent = (node234_conflict *)0x0;\n        safefree(ptr);\n      }\n      goto joined_r0x0003e772;\n    }\nLAB_0003eae0:\n    uVar1 = (uint)(pnVar10->elems[2] == (void *)0x0);\n    iVar12 = uVar1 * -4;\n    iVar8 = 2 - uVar1;\n    pnVar9->kids[2] = pnVar9->kids[1];\n    pnVar9->counts[2] = pnVar9->counts[1];\n    pnVar9->elems[1] = pnVar9->elems[0];\n    pnVar9->kids[1] = pnVar9->kids[0];\n    pnVar9->counts[1] = pnVar9->counts[0];\n    pnVar9->elems[0] = ptr->elems[iVar6];\n    pnVar13 = *(node234 **)((int)pnVar10 + iVar12 + 0x10);\n    pnVar9->kids[0] = pnVar13;\n    pnVar9->counts[0] = *(int *)((int)pnVar10 + iVar12 + 0x20);\n    if (pnVar13 != (node234 *)0x0) {\n      pnVar13->parent = pnVar9;\n    }\n    ptr->elems[iVar6] = *(void **)((int)pnVar10 + iVar8 * 4 + 0x24);\n    *(undefined4 *)((int)pnVar10 + iVar12 + 0x10) = 0;\n    *(undefined4 *)((int)pnVar10 + iVar12 + 0x20) = 0;\n    *(undefined4 *)((int)pnVar10 + iVar8 * 4 + 0x24) = 0;\n    iVar12 = countnode234(pnVar9);\n    ptr->counts[local_30] = iVar12;\n    iVar12 = ptr->counts[iVar6];\n    iVar8 = countnode234(n);\n    ptr->counts[iVar6] = iVar8;\n    index = (index + iVar12) - iVar8;\n  }\n  goto joined_r0x0003e772;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "node234 **ppnVar2;" type_identifier (pointer_declarator "**ppnVar2" * (pointer_declarator "*ppnVar2" * identifier)) ;) (declaration "node234_conflict *pnVar3;" type_identifier (pointer_declarator "*pnVar3" * identifier) ;) (declaration "node234_conflict *ptr;" type_identifier (pointer_declarator "*ptr" * identifier) ;) (declaration "undefined4 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "node234_conflict *pnVar5;" type_identifier (pointer_declarator "*pnVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "void *pvVar7;" primitive_type (pointer_declarator "*pvVar7" * identifier) ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "node234 *pnVar9;" type_identifier (pointer_declarator "*pnVar9" * identifier) ;) (declaration "node234_conflict *extraout_ECX;" type_identifier (pointer_declarator "*extraout_ECX" * identifier) ;) (declaration "node234 *pnVar10;" type_identifier (pointer_declarator "*pnVar10" * identifier) ;) (declaration "node234_conflict *n;" type_identifier (pointer_declarator "*n" * identifier) ;) (declaration "void *ptr_00;" primitive_type (pointer_declarator "*ptr_00" * identifier) ;) (declaration "node234 *pnVar11;" type_identifier (pointer_declarator "*pnVar11" * identifier) ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "node234 *pnVar13;" type_identifier (pointer_declarator "*pnVar13" * identifier) ;) (declaration "int local_38;" primitive_type identifier ;) (declaration "void *local_34;" primitive_type (pointer_declarator "*local_34" * identifier) ;) (declaration "int local_30;" primitive_type identifier ;) (declaration "int local_28;" primitive_type identifier ;) (expression_statement "puVar4 = (undefined4 *)__x86_get_pc_thunk_di();" (assignment_expression "puVar4 = (undefined4 *)__x86_get_pc_thunk_di()" identifier = (cast_expression "(undefined4 *)__x86_get_pc_thunk_di()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "__x86_get_pc_thunk_di()" identifier (argument_list "()" ( ))))) ;) (expression_statement "local_38 = -1;" (assignment_expression "local_38 = -1" identifier = number_literal) ;) (expression_statement "local_34 = (void *)0x0;" (assignment_expression "local_34 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pnVar9 = (node234_conflict *)*puVar4;" (assignment_expression "pnVar9 = (node234_conflict *)*puVar4" identifier = (cast_expression "(node234_conflict *)*puVar4" ( (type_descriptor "node234_conflict *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar4" * identifier))) ;) (labeled_statement "joined_r0x0003e772:\n  while( true ) {\n    ptr = pnVar9;\n    iVar12 = index;\n    if (ptr == (node234_conflict *)0x0) {\n      if (local_34 == (void *)0x0) {\n        local_34 = *(void **)(local_38 * 4 + 0x24);\n      }\n      if (local_38 == -1) {\n        return (void *)0x0;\n      }\n      goto LAB_0003e7aa;\n    }\n    if (ptr->counts[0] <= iVar12) break;\n    pnVar10 = ptr->kids[0];\n    index = iVar12;\n    pnVar9 = pnVar10;\n    if (pnVar10->elems[1] == (void *)0x0) {\n      pnVar13 = ptr->kids[1];\n      if (pnVar13 != (node234 *)0x0) {\n        local_30 = 0;\n        local_28 = 1;\n        if (pnVar13->elems[1] == (void *)0x0) goto LAB_0003ed02;\n        goto LAB_0003e836;\n      }\nLAB_0003ed02:\n      local_30 = 1;\n      iVar6 = 0;\n      goto LAB_0003ed0c;\n    }\n  }" statement_identifier : (while_statement "while( true ) {\n    ptr = pnVar9;\n    iVar12 = index;\n    if (ptr == (node234_conflict *)0x0) {\n      if (local_34 == (void *)0x0) {\n        local_34 = *(void **)(local_38 * 4 + 0x24);\n      }\n      if (local_38 == -1) {\n        return (void *)0x0;\n      }\n      goto LAB_0003e7aa;\n    }\n    if (ptr->counts[0] <= iVar12) break;\n    pnVar10 = ptr->kids[0];\n    index = iVar12;\n    pnVar9 = pnVar10;\n    if (pnVar10->elems[1] == (void *)0x0) {\n      pnVar13 = ptr->kids[1];\n      if (pnVar13 != (node234 *)0x0) {\n        local_30 = 0;\n        local_28 = 1;\n        if (pnVar13->elems[1] == (void *)0x0) goto LAB_0003ed02;\n        goto LAB_0003e836;\n      }\nLAB_0003ed02:\n      local_30 = 1;\n      iVar6 = 0;\n      goto LAB_0003ed0c;\n    }\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    ptr = pnVar9;\n    iVar12 = index;\n    if (ptr == (node234_conflict *)0x0) {\n      if (local_34 == (void *)0x0) {\n        local_34 = *(void **)(local_38 * 4 + 0x24);\n      }\n      if (local_38 == -1) {\n        return (void *)0x0;\n      }\n      goto LAB_0003e7aa;\n    }\n    if (ptr->counts[0] <= iVar12) break;\n    pnVar10 = ptr->kids[0];\n    index = iVar12;\n    pnVar9 = pnVar10;\n    if (pnVar10->elems[1] == (void *)0x0) {\n      pnVar13 = ptr->kids[1];\n      if (pnVar13 != (node234 *)0x0) {\n        local_30 = 0;\n        local_28 = 1;\n        if (pnVar13->elems[1] == (void *)0x0) goto LAB_0003ed02;\n        goto LAB_0003e836;\n      }\nLAB_0003ed02:\n      local_30 = 1;\n      iVar6 = 0;\n      goto LAB_0003ed0c;\n    }\n  }" { (expression_statement "ptr = pnVar9;" (assignment_expression "ptr = pnVar9" identifier = identifier) ;) (expression_statement "iVar12 = index;" (assignment_expression "iVar12 = index" identifier = identifier) ;) (if_statement "if (ptr == (node234_conflict *)0x0) {\n      if (local_34 == (void *)0x0) {\n        local_34 = *(void **)(local_38 * 4 + 0x24);\n      }\n      if (local_38 == -1) {\n        return (void *)0x0;\n      }\n      goto LAB_0003e7aa;\n    }" if (parenthesized_expression "(ptr == (node234_conflict *)0x0)" ( (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 (local_34 == (void *)0x0) {\n        local_34 = *(void **)(local_38 * 4 + 0x24);\n      }\n      if (local_38 == -1) {\n        return (void *)0x0;\n      }\n      goto LAB_0003e7aa;\n    }" { (if_statement "if (local_34 == (void *)0x0) {\n        local_34 = *(void **)(local_38 * 4 + 0x24);\n      }" if (parenthesized_expression "(local_34 == (void *)0x0)" ( (binary_expression "local_34 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        local_34 = *(void **)(local_38 * 4 + 0x24);\n      }" { (expression_statement "local_34 = *(void **)(local_38 * 4 + 0x24);" (assignment_expression "local_34 = *(void **)(local_38 * 4 + 0x24)" identifier = (pointer_expression "*(void **)(local_38 * 4 + 0x24)" * (cast_expression "(void **)(local_38 * 4 + 0x24)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_38 * 4 + 0x24)" ( (binary_expression "local_38 * 4 + 0x24" (binary_expression "local_38 * 4" identifier * number_literal) + number_literal) ))))) ;) })) (if_statement "if (local_38 == -1) {\n        return (void *)0x0;\n      }" if (parenthesized_expression "(local_38 == -1)" ( (binary_expression "local_38 == -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) ;) })) (goto_statement "goto LAB_0003e7aa;" goto statement_identifier ;) })) (if_statement "if (ptr->counts[0] <= iVar12) break;" if (parenthesized_expression "(ptr->counts[0] <= iVar12)" ( (binary_expression "ptr->counts[0] <= iVar12" (subscript_expression "ptr->counts[0]" (field_expression "ptr->counts" identifier -> field_identifier) [ number_literal ]) <= identifier) )) (break_statement "break;" break ;)) (expression_statement "pnVar10 = ptr->kids[0];" (assignment_expression "pnVar10 = ptr->kids[0]" identifier = (subscript_expression "ptr->kids[0]" (field_expression "ptr->kids" identifier -> field_identifier) [ number_literal ])) ;) (expression_statement "index = iVar12;" (assignment_expression "index = iVar12" identifier = identifier) ;) (expression_statement "pnVar9 = pnVar10;" (assignment_expression "pnVar9 = pnVar10" identifier = identifier) ;) (if_statement "if (pnVar10->elems[1] == (void *)0x0) {\n      pnVar13 = ptr->kids[1];\n      if (pnVar13 != (node234 *)0x0) {\n        local_30 = 0;\n        local_28 = 1;\n        if (pnVar13->elems[1] == (void *)0x0) goto LAB_0003ed02;\n        goto LAB_0003e836;\n      }\nLAB_0003ed02:\n      local_30 = 1;\n      iVar6 = 0;\n      goto LAB_0003ed0c;\n    }" if (parenthesized_expression "(pnVar10->elems[1] == (void *)0x0)" ( (binary_expression "pnVar10->elems[1] == (void *)0x0" (subscript_expression "pnVar10->elems[1]" (field_expression "pnVar10->elems" identifier -> field_identifier) [ number_literal ]) == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      pnVar13 = ptr->kids[1];\n      if (pnVar13 != (node234 *)0x0) {\n        local_30 = 0;\n        local_28 = 1;\n        if (pnVar13->elems[1] == (void *)0x0) goto LAB_0003ed02;\n        goto LAB_0003e836;\n      }\nLAB_0003ed02:\n      local_30 = 1;\n      iVar6 = 0;\n      goto LAB_0003ed0c;\n    }" { (expression_statement "pnVar13 = ptr->kids[1];" (assignment_expression "pnVar13 = ptr->kids[1]" identifier = (subscript_expression "ptr->kids[1]" (field_expression "ptr->kids" identifier -> field_identifier) [ number_literal ])) ;) (if_statement "if (pnVar13 != (node234 *)0x0) {\n        local_30 = 0;\n        local_28 = 1;\n        if (pnVar13->elems[1] == (void *)0x0) goto LAB_0003ed02;\n        goto LAB_0003e836;\n      }" if (parenthesized_expression "(pnVar13 != (node234 *)0x0)" ( (binary_expression "pnVar13 != (node234 *)0x0" identifier != (cast_expression "(node234 *)0x0" ( (type_descriptor "node234 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        local_30 = 0;\n        local_28 = 1;\n        if (pnVar13->elems[1] == (void *)0x0) goto LAB_0003ed02;\n        goto LAB_0003e836;\n      }" { (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "local_28 = 1;" (assignment_expression "local_28 = 1" identifier = number_literal) ;) (if_statement "if (pnVar13->elems[1] == (void *)0x0) goto LAB_0003ed02;" if (parenthesized_expression "(pnVar13->elems[1] == (void *)0x0)" ( (binary_expression "pnVar13->elems[1] == (void *)0x0" (subscript_expression "pnVar13->elems[1]" (field_expression "pnVar13->elems" identifier -> field_identifier) [ number_literal ]) == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0003ed02;" goto statement_identifier ;)) (goto_statement "goto LAB_0003e836;" goto statement_identifier ;) })) (labeled_statement "LAB_0003ed02:\n      local_30 = 1;" statement_identifier : (expression_statement "local_30 = 1;" (assignment_expression "local_30 = 1" identifier = number_literal) ;)) (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_0003ed0c;" goto statement_identifier ;) })) }))) (expression_statement "index = iVar12 - (ptr->counts[0] + 1);" (assignment_expression "index = iVar12 - (ptr->counts[0] + 1)" identifier = (binary_expression "iVar12 - (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 (-1 < index) {\n    if (index < ptr->counts[1]) goto LAB_0003eab0;\n    iVar12 = index - (ptr->counts[1] + 1);\n    if (iVar12 < 0) {\n      local_38 = 1;\n      if (local_34 == (void *)0x0) {\n        local_34 = ptr->elems[1];\n      }\nLAB_0003e7aa:\n      pnVar5 = ptr->parent;\n      pnVar9 = ptr->kids[0];\n      goto joined_r0x0003e7b1;\n    }\n    if (iVar12 < ptr->counts[2]) {\n      pnVar9 = ptr->kids[2];\n      index = iVar12;\n      if (pnVar9->elems[1] == (void *)0x0) {\n        iVar6 = 1;\n        local_30 = 2;\n        goto LAB_0003eacb;\n      }\n    }\n    else {\n      index = iVar12 - (ptr->counts[2] + 1);\n      if (index < 0) {\n        local_38 = 2;\n        if (local_34 == (void *)0x0) {\n          local_34 = ptr->elems[2];\n        }\n        goto LAB_0003e7aa;\n      }\n      pnVar13 = ptr->kids[3];\n      pnVar9 = pnVar13;\n      if (pnVar13->elems[1] == (void *)0x0) {\n        pnVar10 = ptr->kids[2];\n        if (pnVar10->elems[1] == (void *)0x0) {\n          iVar6 = 2;\n          local_30 = 3;\n          goto LAB_0003ed0c;\n        }\n        local_30 = 3;\n        iVar6 = 2;\n        goto LAB_0003eae0;\n      }\n    }\n    goto joined_r0x0003e772;\n  }" if (parenthesized_expression "(-1 < index)" ( (binary_expression "-1 < index" number_literal < identifier) )) (compound_statement "{\n    if (index < ptr->counts[1]) goto LAB_0003eab0;\n    iVar12 = index - (ptr->counts[1] + 1);\n    if (iVar12 < 0) {\n      local_38 = 1;\n      if (local_34 == (void *)0x0) {\n        local_34 = ptr->elems[1];\n      }\nLAB_0003e7aa:\n      pnVar5 = ptr->parent;\n      pnVar9 = ptr->kids[0];\n      goto joined_r0x0003e7b1;\n    }\n    if (iVar12 < ptr->counts[2]) {\n      pnVar9 = ptr->kids[2];\n      index = iVar12;\n      if (pnVar9->elems[1] == (void *)0x0) {\n        iVar6 = 1;\n        local_30 = 2;\n        goto LAB_0003eacb;\n      }\n    }\n    else {\n      index = iVar12 - (ptr->counts[2] + 1);\n      if (index < 0) {\n        local_38 = 2;\n        if (local_34 == (void *)0x0) {\n          local_34 = ptr->elems[2];\n        }\n        goto LAB_0003e7aa;\n      }\n      pnVar13 = ptr->kids[3];\n      pnVar9 = pnVar13;\n      if (pnVar13->elems[1] == (void *)0x0) {\n        pnVar10 = ptr->kids[2];\n        if (pnVar10->elems[1] == (void *)0x0) {\n          iVar6 = 2;\n          local_30 = 3;\n          goto LAB_0003ed0c;\n        }\n        local_30 = 3;\n        iVar6 = 2;\n        goto LAB_0003eae0;\n      }\n    }\n    goto joined_r0x0003e772;\n  }" { (if_statement "if (index < ptr->counts[1]) goto LAB_0003eab0;" 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 ])) )) (goto_statement "goto LAB_0003eab0;" goto statement_identifier ;)) (expression_statement "iVar12 = index - (ptr->counts[1] + 1);" (assignment_expression "iVar12 = 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 (iVar12 < 0) {\n      local_38 = 1;\n      if (local_34 == (void *)0x0) {\n        local_34 = ptr->elems[1];\n      }\nLAB_0003e7aa:\n      pnVar5 = ptr->parent;\n      pnVar9 = ptr->kids[0];\n      goto joined_r0x0003e7b1;\n    }" if (parenthesized_expression "(iVar12 < 0)" ( (binary_expression "iVar12 < 0" identifier < number_literal) )) (compound_statement "{\n      local_38 = 1;\n      if (local_34 == (void *)0x0) {\n        local_34 = ptr->elems[1];\n      }\nLAB_0003e7aa:\n      pnVar5 = ptr->parent;\n      pnVar9 = ptr->kids[0];\n      goto joined_r0x0003e7b1;\n    }" { (expression_statement "local_38 = 1;" (assignment_expression "local_38 = 1" identifier = number_literal) ;) (if_statement "if (local_34 == (void *)0x0) {\n        local_34 = ptr->elems[1];\n      }" if (parenthesized_expression "(local_34 == (void *)0x0)" ( (binary_expression "local_34 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        local_34 = ptr->elems[1];\n      }" { (expression_statement "local_34 = ptr->elems[1];" (assignment_expression "local_34 = ptr->elems[1]" identifier = (subscript_expression "ptr->elems[1]" (field_expression "ptr->elems" identifier -> field_identifier) [ number_literal ])) ;) })) (labeled_statement "LAB_0003e7aa:\n      pnVar5 = ptr->parent;" statement_identifier : (expression_statement "pnVar5 = ptr->parent;" (assignment_expression "pnVar5 = ptr->parent" identifier = (field_expression "ptr->parent" identifier -> field_identifier)) ;)) (expression_statement "pnVar9 = ptr->kids[0];" (assignment_expression "pnVar9 = ptr->kids[0]" identifier = (subscript_expression "ptr->kids[0]" (field_expression "ptr->kids" identifier -> field_identifier) [ number_literal ])) ;) (goto_statement "goto joined_r0x0003e7b1;" goto statement_identifier ;) })) (if_statement "if (iVar12 < ptr->counts[2]) {\n      pnVar9 = ptr->kids[2];\n      index = iVar12;\n      if (pnVar9->elems[1] == (void *)0x0) {\n        iVar6 = 1;\n        local_30 = 2;\n        goto LAB_0003eacb;\n      }\n    }\n    else {\n      index = iVar12 - (ptr->counts[2] + 1);\n      if (index < 0) {\n        local_38 = 2;\n        if (local_34 == (void *)0x0) {\n          local_34 = ptr->elems[2];\n        }\n        goto LAB_0003e7aa;\n      }\n      pnVar13 = ptr->kids[3];\n      pnVar9 = pnVar13;\n      if (pnVar13->elems[1] == (void *)0x0) {\n        pnVar10 = ptr->kids[2];\n        if (pnVar10->elems[1] == (void *)0x0) {\n          iVar6 = 2;\n          local_30 = 3;\n          goto LAB_0003ed0c;\n        }\n        local_30 = 3;\n        iVar6 = 2;\n        goto LAB_0003eae0;\n      }\n    }" if (parenthesized_expression "(iVar12 < ptr->counts[2])" ( (binary_expression "iVar12 < ptr->counts[2]" identifier < (subscript_expression "ptr->counts[2]" (field_expression "ptr->counts" identifier -> field_identifier) [ number_literal ])) )) (compound_statement "{\n      pnVar9 = ptr->kids[2];\n      index = iVar12;\n      if (pnVar9->elems[1] == (void *)0x0) {\n        iVar6 = 1;\n        local_30 = 2;\n        goto LAB_0003eacb;\n      }\n    }" { (expression_statement "pnVar9 = ptr->kids[2];" (assignment_expression "pnVar9 = ptr->kids[2]" identifier = (subscript_expression "ptr->kids[2]" (field_expression "ptr->kids" identifier -> field_identifier) [ number_literal ])) ;) (expression_statement "index = iVar12;" (assignment_expression "index = iVar12" identifier = identifier) ;) (if_statement "if (pnVar9->elems[1] == (void *)0x0) {\n        iVar6 = 1;\n        local_30 = 2;\n        goto LAB_0003eacb;\n      }" if (parenthesized_expression "(pnVar9->elems[1] == (void *)0x0)" ( (binary_expression "pnVar9->elems[1] == (void *)0x0" (subscript_expression "pnVar9->elems[1]" (field_expression "pnVar9->elems" identifier -> field_identifier) [ number_literal ]) == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        iVar6 = 1;\n        local_30 = 2;\n        goto LAB_0003eacb;\n      }" { (expression_statement "iVar6 = 1;" (assignment_expression "iVar6 = 1" identifier = number_literal) ;) (expression_statement "local_30 = 2;" (assignment_expression "local_30 = 2" identifier = number_literal) ;) (goto_statement "goto LAB_0003eacb;" goto statement_identifier ;) })) }) (else_clause "else {\n      index = iVar12 - (ptr->counts[2] + 1);\n      if (index < 0) {\n        local_38 = 2;\n        if (local_34 == (void *)0x0) {\n          local_34 = ptr->elems[2];\n        }\n        goto LAB_0003e7aa;\n      }\n      pnVar13 = ptr->kids[3];\n      pnVar9 = pnVar13;\n      if (pnVar13->elems[1] == (void *)0x0) {\n        pnVar10 = ptr->kids[2];\n        if (pnVar10->elems[1] == (void *)0x0) {\n          iVar6 = 2;\n          local_30 = 3;\n          goto LAB_0003ed0c;\n        }\n        local_30 = 3;\n        iVar6 = 2;\n        goto LAB_0003eae0;\n      }\n    }" else (compound_statement "{\n      index = iVar12 - (ptr->counts[2] + 1);\n      if (index < 0) {\n        local_38 = 2;\n        if (local_34 == (void *)0x0) {\n          local_34 = ptr->elems[2];\n        }\n        goto LAB_0003e7aa;\n      }\n      pnVar13 = ptr->kids[3];\n      pnVar9 = pnVar13;\n      if (pnVar13->elems[1] == (void *)0x0) {\n        pnVar10 = ptr->kids[2];\n        if (pnVar10->elems[1] == (void *)0x0) {\n          iVar6 = 2;\n          local_30 = 3;\n          goto LAB_0003ed0c;\n        }\n        local_30 = 3;\n        iVar6 = 2;\n        goto LAB_0003eae0;\n      }\n    }" { (expression_statement "index = iVar12 - (ptr->counts[2] + 1);" (assignment_expression "index = iVar12 - (ptr->counts[2] + 1)" identifier = (binary_expression "iVar12 - (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        local_38 = 2;\n        if (local_34 == (void *)0x0) {\n          local_34 = ptr->elems[2];\n        }\n        goto LAB_0003e7aa;\n      }" if (parenthesized_expression "(index < 0)" ( (binary_expression "index < 0" identifier < number_literal) )) (compound_statement "{\n        local_38 = 2;\n        if (local_34 == (void *)0x0) {\n          local_34 = ptr->elems[2];\n        }\n        goto LAB_0003e7aa;\n      }" { (expression_statement "local_38 = 2;" (assignment_expression "local_38 = 2" identifier = number_literal) ;) (if_statement "if (local_34 == (void *)0x0) {\n          local_34 = ptr->elems[2];\n        }" if (parenthesized_expression "(local_34 == (void *)0x0)" ( (binary_expression "local_34 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          local_34 = ptr->elems[2];\n        }" { (expression_statement "local_34 = ptr->elems[2];" (assignment_expression "local_34 = ptr->elems[2]" identifier = (subscript_expression "ptr->elems[2]" (field_expression "ptr->elems" identifier -> field_identifier) [ number_literal ])) ;) })) (goto_statement "goto LAB_0003e7aa;" goto statement_identifier ;) })) (expression_statement "pnVar13 = ptr->kids[3];" (assignment_expression "pnVar13 = ptr->kids[3]" identifier = (subscript_expression "ptr->kids[3]" (field_expression "ptr->kids" identifier -> field_identifier) [ number_literal ])) ;) (expression_statement "pnVar9 = pnVar13;" (assignment_expression "pnVar9 = pnVar13" identifier = identifier) ;) (if_statement "if (pnVar13->elems[1] == (void *)0x0) {\n        pnVar10 = ptr->kids[2];\n        if (pnVar10->elems[1] == (void *)0x0) {\n          iVar6 = 2;\n          local_30 = 3;\n          goto LAB_0003ed0c;\n        }\n        local_30 = 3;\n        iVar6 = 2;\n        goto LAB_0003eae0;\n      }" if (parenthesized_expression "(pnVar13->elems[1] == (void *)0x0)" ( (binary_expression "pnVar13->elems[1] == (void *)0x0" (subscript_expression "pnVar13->elems[1]" (field_expression "pnVar13->elems" identifier -> field_identifier) [ number_literal ]) == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        pnVar10 = ptr->kids[2];\n        if (pnVar10->elems[1] == (void *)0x0) {\n          iVar6 = 2;\n          local_30 = 3;\n          goto LAB_0003ed0c;\n        }\n        local_30 = 3;\n        iVar6 = 2;\n        goto LAB_0003eae0;\n      }" { (expression_statement "pnVar10 = ptr->kids[2];" (assignment_expression "pnVar10 = ptr->kids[2]" identifier = (subscript_expression "ptr->kids[2]" (field_expression "ptr->kids" identifier -> field_identifier) [ number_literal ])) ;) (if_statement "if (pnVar10->elems[1] == (void *)0x0) {\n          iVar6 = 2;\n          local_30 = 3;\n          goto LAB_0003ed0c;\n        }" if (parenthesized_expression "(pnVar10->elems[1] == (void *)0x0)" ( (binary_expression "pnVar10->elems[1] == (void *)0x0" (subscript_expression "pnVar10->elems[1]" (field_expression "pnVar10->elems" identifier -> field_identifier) [ number_literal ]) == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          iVar6 = 2;\n          local_30 = 3;\n          goto LAB_0003ed0c;\n        }" { (expression_statement "iVar6 = 2;" (assignment_expression "iVar6 = 2" identifier = number_literal) ;) (expression_statement "local_30 = 3;" (assignment_expression "local_30 = 3" identifier = number_literal) ;) (goto_statement "goto LAB_0003ed0c;" goto statement_identifier ;) })) (expression_statement "local_30 = 3;" (assignment_expression "local_30 = 3" identifier = number_literal) ;) (expression_statement "iVar6 = 2;" (assignment_expression "iVar6 = 2" identifier = number_literal) ;) (goto_statement "goto LAB_0003eae0;" goto statement_identifier ;) })) }))) (goto_statement "goto joined_r0x0003e772;" goto statement_identifier ;) })) (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" identifier = number_literal) ;) (if_statement "if (local_34 != (void *)0x0) goto LAB_0003e7aa;" if (parenthesized_expression "(local_34 != (void *)0x0)" ( (binary_expression "local_34 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0003e7aa;" goto statement_identifier ;)) (expression_statement "local_34 = ptr->elems[0];" (assignment_expression "local_34 = ptr->elems[0]" identifier = (subscript_expression "ptr->elems[0]" (field_expression "ptr->elems" identifier -> field_identifier) [ number_literal ])) ;) (expression_statement "pnVar5 = ptr->parent;" (assignment_expression "pnVar5 = ptr->parent" identifier = (field_expression "ptr->parent" identifier -> field_identifier)) ;) (expression_statement "pnVar9 = ptr->kids[0];" (assignment_expression "pnVar9 = ptr->kids[0]" identifier = (subscript_expression "ptr->kids[0]" (field_expression "ptr->kids" identifier -> field_identifier) [ number_literal ])) ;) (labeled_statement "joined_r0x0003e7b1:\n  if (pnVar5 == (node234_conflict *)0x0) {\n    if (ptr->elems[1] == (void *)0x0) {\n      if (pnVar9 == (node234 *)0x0) {\n        safefree(ptr);\n        *puVar4 = 0;\n        return local_34;\n      }\n    }\n    else if (pnVar9 == (node234 *)0x0) {\n      pnVar5 = (node234_conflict *)0x0;\nLAB_0003e9d5:\n      if (local_38 == 2) {\nLAB_0003ea09:\n        local_38 = 2;\n      }\n      else {\n        pvVar7 = ptr->elems[local_38 + 1];\n        iVar12 = local_38 + 1;\n        if (pvVar7 != (void *)0x0) {\n          do {\n            ptr->counts[iVar12 + 3] = (int)pvVar7;\n            if (iVar12 == 2) goto LAB_0003ea09;\n            pvVar7 = ptr->elems[2];\n            iVar12 = 2;\n          } while (pvVar7 != (void *)0x0);\n          local_38 = 1;\n        }\n      }\n      ptr->elems[local_38] = (void *)0x0;\n      while (pnVar3 = pnVar5, pnVar3 != (node234_conflict *)0x0) {\n        iVar12 = 0;\n        if ((pnVar3->kids[0] != ptr) && (iVar12 = 1, pnVar3->kids[1] != ptr)) {\n          iVar12 = (pnVar3->kids[2] != ptr) + 2;\n        }\n        pnVar3->counts[iVar12] = pnVar3->counts[iVar12] + -1;\n        ptr = pnVar3;\n        pnVar5 = pnVar3->parent;\n      }\n      return local_34;\n    }\n  }\n  else if ((pnVar9 == (node234 *)0x0) && (ptr->elems[1] != (void *)0x0)) goto LAB_0003e9d5;" statement_identifier : (if_statement "if (pnVar5 == (node234_conflict *)0x0) {\n    if (ptr->elems[1] == (void *)0x0) {\n      if (pnVar9 == (node234 *)0x0) {\n        safefree(ptr);\n        *puVar4 = 0;\n        return local_34;\n      }\n    }\n    else if (pnVar9 == (node234 *)0x0) {\n      pnVar5 = (node234_conflict *)0x0;\nLAB_0003e9d5:\n      if (local_38 == 2) {\nLAB_0003ea09:\n        local_38 = 2;\n      }\n      else {\n        pvVar7 = ptr->elems[local_38 + 1];\n        iVar12 = local_38 + 1;\n        if (pvVar7 != (void *)0x0) {\n          do {\n            ptr->counts[iVar12 + 3] = (int)pvVar7;\n            if (iVar12 == 2) goto LAB_0003ea09;\n            pvVar7 = ptr->elems[2];\n            iVar12 = 2;\n          } while (pvVar7 != (void *)0x0);\n          local_38 = 1;\n        }\n      }\n      ptr->elems[local_38] = (void *)0x0;\n      while (pnVar3 = pnVar5, pnVar3 != (node234_conflict *)0x0) {\n        iVar12 = 0;\n        if ((pnVar3->kids[0] != ptr) && (iVar12 = 1, pnVar3->kids[1] != ptr)) {\n          iVar12 = (pnVar3->kids[2] != ptr) + 2;\n        }\n        pnVar3->counts[iVar12] = pnVar3->counts[iVar12] + -1;\n        ptr = pnVar3;\n        pnVar5 = pnVar3->parent;\n      }\n      return local_34;\n    }\n  }\n  else if ((pnVar9 == (node234 *)0x0) && (ptr->elems[1] != (void *)0x0)) goto LAB_0003e9d5;" 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 (pnVar9 == (node234 *)0x0) {\n        safefree(ptr);\n        *puVar4 = 0;\n        return local_34;\n      }\n    }\n    else if (pnVar9 == (node234 *)0x0) {\n      pnVar5 = (node234_conflict *)0x0;\nLAB_0003e9d5:\n      if (local_38 == 2) {\nLAB_0003ea09:\n        local_38 = 2;\n      }\n      else {\n        pvVar7 = ptr->elems[local_38 + 1];\n        iVar12 = local_38 + 1;\n        if (pvVar7 != (void *)0x0) {\n          do {\n            ptr->counts[iVar12 + 3] = (int)pvVar7;\n            if (iVar12 == 2) goto LAB_0003ea09;\n            pvVar7 = ptr->elems[2];\n            iVar12 = 2;\n          } while (pvVar7 != (void *)0x0);\n          local_38 = 1;\n        }\n      }\n      ptr->elems[local_38] = (void *)0x0;\n      while (pnVar3 = pnVar5, pnVar3 != (node234_conflict *)0x0) {\n        iVar12 = 0;\n        if ((pnVar3->kids[0] != ptr) && (iVar12 = 1, pnVar3->kids[1] != ptr)) {\n          iVar12 = (pnVar3->kids[2] != ptr) + 2;\n        }\n        pnVar3->counts[iVar12] = pnVar3->counts[iVar12] + -1;\n        ptr = pnVar3;\n        pnVar5 = pnVar3->parent;\n      }\n      return local_34;\n    }\n  }" { (if_statement "if (ptr->elems[1] == (void *)0x0) {\n      if (pnVar9 == (node234 *)0x0) {\n        safefree(ptr);\n        *puVar4 = 0;\n        return local_34;\n      }\n    }\n    else if (pnVar9 == (node234 *)0x0) {\n      pnVar5 = (node234_conflict *)0x0;\nLAB_0003e9d5:\n      if (local_38 == 2) {\nLAB_0003ea09:\n        local_38 = 2;\n      }\n      else {\n        pvVar7 = ptr->elems[local_38 + 1];\n        iVar12 = local_38 + 1;\n        if (pvVar7 != (void *)0x0) {\n          do {\n            ptr->counts[iVar12 + 3] = (int)pvVar7;\n            if (iVar12 == 2) goto LAB_0003ea09;\n            pvVar7 = ptr->elems[2];\n            iVar12 = 2;\n          } while (pvVar7 != (void *)0x0);\n          local_38 = 1;\n        }\n      }\n      ptr->elems[local_38] = (void *)0x0;\n      while (pnVar3 = pnVar5, pnVar3 != (node234_conflict *)0x0) {\n        iVar12 = 0;\n        if ((pnVar3->kids[0] != ptr) && (iVar12 = 1, pnVar3->kids[1] != ptr)) {\n          iVar12 = (pnVar3->kids[2] != ptr) + 2;\n        }\n        pnVar3->counts[iVar12] = pnVar3->counts[iVar12] + -1;\n        ptr = pnVar3;\n        pnVar5 = pnVar3->parent;\n      }\n      return local_34;\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 (pnVar9 == (node234 *)0x0) {\n        safefree(ptr);\n        *puVar4 = 0;\n        return local_34;\n      }\n    }" { (if_statement "if (pnVar9 == (node234 *)0x0) {\n        safefree(ptr);\n        *puVar4 = 0;\n        return local_34;\n      }" if (parenthesized_expression "(pnVar9 == (node234 *)0x0)" ( (binary_expression "pnVar9 == (node234 *)0x0" identifier == (cast_expression "(node234 *)0x0" ( (type_descriptor "node234 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        safefree(ptr);\n        *puVar4 = 0;\n        return local_34;\n      }" { (expression_statement "safefree(ptr);" (call_expression "safefree(ptr)" identifier (argument_list "(ptr)" ( identifier ))) ;) (expression_statement "*puVar4 = 0;" (assignment_expression "*puVar4 = 0" (pointer_expression "*puVar4" * identifier) = number_literal) ;) (return_statement "return local_34;" return identifier ;) })) }) (else_clause "else if (pnVar9 == (node234 *)0x0) {\n      pnVar5 = (node234_conflict *)0x0;\nLAB_0003e9d5:\n      if (local_38 == 2) {\nLAB_0003ea09:\n        local_38 = 2;\n      }\n      else {\n        pvVar7 = ptr->elems[local_38 + 1];\n        iVar12 = local_38 + 1;\n        if (pvVar7 != (void *)0x0) {\n          do {\n            ptr->counts[iVar12 + 3] = (int)pvVar7;\n            if (iVar12 == 2) goto LAB_0003ea09;\n            pvVar7 = ptr->elems[2];\n            iVar12 = 2;\n          } while (pvVar7 != (void *)0x0);\n          local_38 = 1;\n        }\n      }\n      ptr->elems[local_38] = (void *)0x0;\n      while (pnVar3 = pnVar5, pnVar3 != (node234_conflict *)0x0) {\n        iVar12 = 0;\n        if ((pnVar3->kids[0] != ptr) && (iVar12 = 1, pnVar3->kids[1] != ptr)) {\n          iVar12 = (pnVar3->kids[2] != ptr) + 2;\n        }\n        pnVar3->counts[iVar12] = pnVar3->counts[iVar12] + -1;\n        ptr = pnVar3;\n        pnVar5 = pnVar3->parent;\n      }\n      return local_34;\n    }" else (if_statement "if (pnVar9 == (node234 *)0x0) {\n      pnVar5 = (node234_conflict *)0x0;\nLAB_0003e9d5:\n      if (local_38 == 2) {\nLAB_0003ea09:\n        local_38 = 2;\n      }\n      else {\n        pvVar7 = ptr->elems[local_38 + 1];\n        iVar12 = local_38 + 1;\n        if (pvVar7 != (void *)0x0) {\n          do {\n            ptr->counts[iVar12 + 3] = (int)pvVar7;\n            if (iVar12 == 2) goto LAB_0003ea09;\n            pvVar7 = ptr->elems[2];\n            iVar12 = 2;\n          } while (pvVar7 != (void *)0x0);\n          local_38 = 1;\n        }\n      }\n      ptr->elems[local_38] = (void *)0x0;\n      while (pnVar3 = pnVar5, pnVar3 != (node234_conflict *)0x0) {\n        iVar12 = 0;\n        if ((pnVar3->kids[0] != ptr) && (iVar12 = 1, pnVar3->kids[1] != ptr)) {\n          iVar12 = (pnVar3->kids[2] != ptr) + 2;\n        }\n        pnVar3->counts[iVar12] = pnVar3->counts[iVar12] + -1;\n        ptr = pnVar3;\n        pnVar5 = pnVar3->parent;\n      }\n      return local_34;\n    }" if (parenthesized_expression "(pnVar9 == (node234 *)0x0)" ( (binary_expression "pnVar9 == (node234 *)0x0" identifier == (cast_expression "(node234 *)0x0" ( (type_descriptor "node234 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      pnVar5 = (node234_conflict *)0x0;\nLAB_0003e9d5:\n      if (local_38 == 2) {\nLAB_0003ea09:\n        local_38 = 2;\n      }\n      else {\n        pvVar7 = ptr->elems[local_38 + 1];\n        iVar12 = local_38 + 1;\n        if (pvVar7 != (void *)0x0) {\n          do {\n            ptr->counts[iVar12 + 3] = (int)pvVar7;\n            if (iVar12 == 2) goto LAB_0003ea09;\n            pvVar7 = ptr->elems[2];\n            iVar12 = 2;\n          } while (pvVar7 != (void *)0x0);\n          local_38 = 1;\n        }\n      }\n      ptr->elems[local_38] = (void *)0x0;\n      while (pnVar3 = pnVar5, pnVar3 != (node234_conflict *)0x0) {\n        iVar12 = 0;\n        if ((pnVar3->kids[0] != ptr) && (iVar12 = 1, pnVar3->kids[1] != ptr)) {\n          iVar12 = (pnVar3->kids[2] != ptr) + 2;\n        }\n        pnVar3->counts[iVar12] = pnVar3->counts[iVar12] + -1;\n        ptr = pnVar3;\n        pnVar5 = pnVar3->parent;\n      }\n      return local_34;\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)) ;) (labeled_statement "LAB_0003e9d5:\n      if (local_38 == 2) {\nLAB_0003ea09:\n        local_38 = 2;\n      }\n      else {\n        pvVar7 = ptr->elems[local_38 + 1];\n        iVar12 = local_38 + 1;\n        if (pvVar7 != (void *)0x0) {\n          do {\n            ptr->counts[iVar12 + 3] = (int)pvVar7;\n            if (iVar12 == 2) goto LAB_0003ea09;\n            pvVar7 = ptr->elems[2];\n            iVar12 = 2;\n          } while (pvVar7 != (void *)0x0);\n          local_38 = 1;\n        }\n      }" statement_identifier : (if_statement "if (local_38 == 2) {\nLAB_0003ea09:\n        local_38 = 2;\n      }\n      else {\n        pvVar7 = ptr->elems[local_38 + 1];\n        iVar12 = local_38 + 1;\n        if (pvVar7 != (void *)0x0) {\n          do {\n            ptr->counts[iVar12 + 3] = (int)pvVar7;\n            if (iVar12 == 2) goto LAB_0003ea09;\n            pvVar7 = ptr->elems[2];\n            iVar12 = 2;\n          } while (pvVar7 != (void *)0x0);\n          local_38 = 1;\n        }\n      }" if (parenthesized_expression "(local_38 == 2)" ( (binary_expression "local_38 == 2" identifier == number_literal) )) (compound_statement "{\nLAB_0003ea09:\n        local_38 = 2;\n      }" { (labeled_statement "LAB_0003ea09:\n        local_38 = 2;" statement_identifier : (expression_statement "local_38 = 2;" (assignment_expression "local_38 = 2" identifier = number_literal) ;)) }) (else_clause "else {\n        pvVar7 = ptr->elems[local_38 + 1];\n        iVar12 = local_38 + 1;\n        if (pvVar7 != (void *)0x0) {\n          do {\n            ptr->counts[iVar12 + 3] = (int)pvVar7;\n            if (iVar12 == 2) goto LAB_0003ea09;\n            pvVar7 = ptr->elems[2];\n            iVar12 = 2;\n          } while (pvVar7 != (void *)0x0);\n          local_38 = 1;\n        }\n      }" else (compound_statement "{\n        pvVar7 = ptr->elems[local_38 + 1];\n        iVar12 = local_38 + 1;\n        if (pvVar7 != (void *)0x0) {\n          do {\n            ptr->counts[iVar12 + 3] = (int)pvVar7;\n            if (iVar12 == 2) goto LAB_0003ea09;\n            pvVar7 = ptr->elems[2];\n            iVar12 = 2;\n          } while (pvVar7 != (void *)0x0);\n          local_38 = 1;\n        }\n      }" { (expression_statement "pvVar7 = ptr->elems[local_38 + 1];" (assignment_expression "pvVar7 = ptr->elems[local_38 + 1]" identifier = (subscript_expression "ptr->elems[local_38 + 1]" (field_expression "ptr->elems" identifier -> field_identifier) [ (binary_expression "local_38 + 1" identifier + number_literal) ])) ;) (expression_statement "iVar12 = local_38 + 1;" (assignment_expression "iVar12 = local_38 + 1" identifier = (binary_expression "local_38 + 1" identifier + number_literal)) ;) (if_statement "if (pvVar7 != (void *)0x0) {\n          do {\n            ptr->counts[iVar12 + 3] = (int)pvVar7;\n            if (iVar12 == 2) goto LAB_0003ea09;\n            pvVar7 = ptr->elems[2];\n            iVar12 = 2;\n          } while (pvVar7 != (void *)0x0);\n          local_38 = 1;\n        }" if (parenthesized_expression "(pvVar7 != (void *)0x0)" ( (binary_expression "pvVar7 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          do {\n            ptr->counts[iVar12 + 3] = (int)pvVar7;\n            if (iVar12 == 2) goto LAB_0003ea09;\n            pvVar7 = ptr->elems[2];\n            iVar12 = 2;\n          } while (pvVar7 != (void *)0x0);\n          local_38 = 1;\n        }" { (do_statement "do {\n            ptr->counts[iVar12 + 3] = (int)pvVar7;\n            if (iVar12 == 2) goto LAB_0003ea09;\n            pvVar7 = ptr->elems[2];\n            iVar12 = 2;\n          } while (pvVar7 != (void *)0x0);" do (compound_statement "{\n            ptr->counts[iVar12 + 3] = (int)pvVar7;\n            if (iVar12 == 2) goto LAB_0003ea09;\n            pvVar7 = ptr->elems[2];\n            iVar12 = 2;\n          }" { (expression_statement "ptr->counts[iVar12 + 3] = (int)pvVar7;" (assignment_expression "ptr->counts[iVar12 + 3] = (int)pvVar7" (subscript_expression "ptr->counts[iVar12 + 3]" (field_expression "ptr->counts" identifier -> field_identifier) [ (binary_expression "iVar12 + 3" identifier + number_literal) ]) = (cast_expression "(int)pvVar7" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (iVar12 == 2) goto LAB_0003ea09;" if (parenthesized_expression "(iVar12 == 2)" ( (binary_expression "iVar12 == 2" identifier == number_literal) )) (goto_statement "goto LAB_0003ea09;" goto statement_identifier ;)) (expression_statement "pvVar7 = ptr->elems[2];" (assignment_expression "pvVar7 = ptr->elems[2]" identifier = (subscript_expression "ptr->elems[2]" (field_expression "ptr->elems" identifier -> field_identifier) [ number_literal ])) ;) (expression_statement "iVar12 = 2;" (assignment_expression "iVar12 = 2" identifier = number_literal) ;) }) while (parenthesized_expression "(pvVar7 != (void *)0x0)" ( (binary_expression "pvVar7 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "local_38 = 1;" (assignment_expression "local_38 = 1" identifier = number_literal) ;) })) })))) (expression_statement "ptr->elems[local_38] = (void *)0x0;" (assignment_expression "ptr->elems[local_38] = (void *)0x0" (subscript_expression "ptr->elems[local_38]" (field_expression "ptr->elems" identifier -> field_identifier) [ identifier ]) = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (while_statement "while (pnVar3 = pnVar5, pnVar3 != (node234_conflict *)0x0) {\n        iVar12 = 0;\n        if ((pnVar3->kids[0] != ptr) && (iVar12 = 1, pnVar3->kids[1] != ptr)) {\n          iVar12 = (pnVar3->kids[2] != ptr) + 2;\n        }\n        pnVar3->counts[iVar12] = pnVar3->counts[iVar12] + -1;\n        ptr = pnVar3;\n        pnVar5 = pnVar3->parent;\n      }" while (parenthesized_expression "(pnVar3 = pnVar5, pnVar3 != (node234_conflict *)0x0)" ( (comma_expression "pnVar3 = pnVar5, pnVar3 != (node234_conflict *)0x0" (assignment_expression "pnVar3 = pnVar5" identifier = identifier) , (binary_expression "pnVar3 != (node234_conflict *)0x0" identifier != (cast_expression "(node234_conflict *)0x0" ( (type_descriptor "node234_conflict *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) )) (compound_statement "{\n        iVar12 = 0;\n        if ((pnVar3->kids[0] != ptr) && (iVar12 = 1, pnVar3->kids[1] != ptr)) {\n          iVar12 = (pnVar3->kids[2] != ptr) + 2;\n        }\n        pnVar3->counts[iVar12] = pnVar3->counts[iVar12] + -1;\n        ptr = pnVar3;\n        pnVar5 = pnVar3->parent;\n      }" { (expression_statement "iVar12 = 0;" (assignment_expression "iVar12 = 0" identifier = number_literal) ;) (if_statement "if ((pnVar3->kids[0] != ptr) && (iVar12 = 1, pnVar3->kids[1] != ptr)) {\n          iVar12 = (pnVar3->kids[2] != ptr) + 2;\n        }" if (parenthesized_expression "((pnVar3->kids[0] != ptr) && (iVar12 = 1, pnVar3->kids[1] != ptr))" ( (binary_expression "(pnVar3->kids[0] != ptr) && (iVar12 = 1, pnVar3->kids[1] != ptr)" (parenthesized_expression "(pnVar3->kids[0] != ptr)" ( (binary_expression "pnVar3->kids[0] != ptr" (subscript_expression "pnVar3->kids[0]" (field_expression "pnVar3->kids" identifier -> field_identifier) [ number_literal ]) != identifier) )) && (parenthesized_expression "(iVar12 = 1, pnVar3->kids[1] != ptr)" ( (comma_expression "iVar12 = 1, pnVar3->kids[1] != ptr" (assignment_expression "iVar12 = 1" identifier = number_literal) , (binary_expression "pnVar3->kids[1] != ptr" (subscript_expression "pnVar3->kids[1]" (field_expression "pnVar3->kids" identifier -> field_identifier) [ number_literal ]) != identifier)) ))) )) (compound_statement "{\n          iVar12 = (pnVar3->kids[2] != ptr) + 2;\n        }" { (expression_statement "iVar12 = (pnVar3->kids[2] != ptr) + 2;" (assignment_expression "iVar12 = (pnVar3->kids[2] != ptr) + 2" identifier = (binary_expression "(pnVar3->kids[2] != ptr) + 2" (parenthesized_expression "(pnVar3->kids[2] != ptr)" ( (binary_expression "pnVar3->kids[2] != ptr" (subscript_expression "pnVar3->kids[2]" (field_expression "pnVar3->kids" identifier -> field_identifier) [ number_literal ]) != identifier) )) + number_literal)) ;) })) (expression_statement "pnVar3->counts[iVar12] = pnVar3->counts[iVar12] + -1;" (assignment_expression "pnVar3->counts[iVar12] = pnVar3->counts[iVar12] + -1" (subscript_expression "pnVar3->counts[iVar12]" (field_expression "pnVar3->counts" identifier -> field_identifier) [ identifier ]) = (binary_expression "pnVar3->counts[iVar12] + -1" (subscript_expression "pnVar3->counts[iVar12]" (field_expression "pnVar3->counts" identifier -> field_identifier) [ identifier ]) + number_literal)) ;) (expression_statement "ptr = pnVar3;" (assignment_expression "ptr = pnVar3" identifier = identifier) ;) (expression_statement "pnVar5 = pnVar3->parent;" (assignment_expression "pnVar5 = pnVar3->parent" identifier = (field_expression "pnVar3->parent" identifier -> field_identifier)) ;) })) (return_statement "return local_34;" return identifier ;) })))) }) (else_clause "else if ((pnVar9 == (node234 *)0x0) && (ptr->elems[1] != (void *)0x0)) goto LAB_0003e9d5;" else (if_statement "if ((pnVar9 == (node234 *)0x0) && (ptr->elems[1] != (void *)0x0)) goto LAB_0003e9d5;" if (parenthesized_expression "((pnVar9 == (node234 *)0x0) && (ptr->elems[1] != (void *)0x0))" ( (binary_expression "(pnVar9 == (node234 *)0x0) && (ptr->elems[1] != (void *)0x0)" (parenthesized_expression "(pnVar9 == (node234 *)0x0)" ( (binary_expression "pnVar9 == (node234 *)0x0" identifier == (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 LAB_0003e9d5;" goto statement_identifier ;))))) (expression_statement "pnVar9 = ptr->kids[local_38];" (assignment_expression "pnVar9 = ptr->kids[local_38]" identifier = (subscript_expression "ptr->kids[local_38]" (field_expression "ptr->kids" identifier -> field_identifier) [ identifier ])) ;) (expression_statement "pnVar5 = pnVar9;" (assignment_expression "pnVar5 = pnVar9" identifier = identifier) ;) (if_statement "if (pnVar9->elems[1] == (void *)0x0) {\n    pnVar10 = ptr->kids[local_38 + 1];\n    iVar12 = local_38 + 1;\n    pnVar13 = pnVar10->kids[0];\n    pnVar11 = pnVar10;\n    if (pnVar10->elems[1] == (void *)0x0) {\n      pvVar7 = ptr->elems[local_38];\n      pnVar9->kids[2] = pnVar13;\n      pnVar9->elems[1] = pvVar7;\n      pnVar9->counts[2] = pnVar10->counts[0];\n      if (pnVar13 != (node234 *)0x0) {\n        pnVar13->parent = pnVar9;\n      }\n      iVar6 = pnVar10->counts[1];\n      pnVar9->elems[2] = pnVar10->elems[0];\n      pnVar13 = pnVar10->kids[1];\n      pnVar9->counts[3] = iVar6;\n      pnVar9->kids[3] = pnVar13;\n      if (pnVar13 != (node234 *)0x0) {\n        pnVar13->parent = pnVar9;\n      }\n      safefree(pnVar10);\n      iVar6 = countnode234(pnVar9);\n      ptr->counts[local_38] = iVar6;\n      if (local_38 == 2) {\nLAB_0003ec29:\n        iVar12 = 3;\n        iVar6 = 2;\n      }\n      else {\n        pvVar7 = ptr->elems[local_38 + 1];\n        iVar6 = local_38;\n        if (pvVar7 != (void *)0x0) {\n          do {\n            ptr->counts[iVar12 + 3] = (int)pvVar7;\n            ptr->kids[iVar12] = ptr->kids[iVar12 + 1];\n            ptr->counts[iVar12] = ptr->counts[iVar12 + 1];\n            if (iVar12 == 2) goto LAB_0003ec29;\n            pvVar7 = ptr->elems[2];\n            iVar12 = 2;\n          } while (pvVar7 != (void *)0x0);\n          iVar6 = 1;\n        }\n      }\n      ptr->elems[iVar6] = (void *)0x0;\n      ptr->kids[iVar12] = (node234 *)0x0;\n      ptr->counts[iVar12] = 0;\n      if (ptr->elems[0] == (void *)0x0) {\n        *puVar4 = pnVar9;\n        pnVar9->parent = (node234_conflict *)0x0;\n        safefree(ptr);\n      }\n      index = pnVar9->counts[1] + pnVar9->counts[0] + 1;\n    }\n    else {\n      while (pnVar9 = pnVar13, pnVar9 != (node234 *)0x0) {\n        pnVar11 = pnVar9;\n        pnVar13 = pnVar9->kids[0];\n      }\n      ptr->elems[local_38] = pnVar11->elems[0];\n      index = 0;\n      pnVar9 = pnVar10;\n    }\n  }\n  else {\n    while (pnVar10 = pnVar5->kids[0], pnVar10 != (node234 *)0x0) {\n      while ((pnVar13 = pnVar5->kids[3], pnVar5->kids[3] != (node234 *)0x0 ||\n             (pnVar13 = pnVar5->kids[2], pnVar5->kids[2] != (node234 *)0x0))) {\n        pnVar5 = pnVar13;\n        pnVar10 = pnVar5->kids[0];\n        if (pnVar10 == (node234 *)0x0) goto LAB_0003e958;\n      }\n      ppnVar2 = pnVar5->kids;\n      pnVar5 = ppnVar2[1];\n      if (ppnVar2[1] == (node234 *)0x0) {\n        pnVar5 = pnVar10;\n      }\n    }\nLAB_0003e958:\n    pvVar7 = pnVar5->elems[2];\n    if ((pvVar7 == (void *)0x0) && (pvVar7 = pnVar5->elems[1], pvVar7 == (void *)0x0)) {\n      pvVar7 = pnVar5->elems[0];\n    }\n    ptr->elems[local_38] = pvVar7;\n    index = ptr->counts[local_38] + -1;\n  }" if (parenthesized_expression "(pnVar9->elems[1] == (void *)0x0)" ( (binary_expression "pnVar9->elems[1] == (void *)0x0" (subscript_expression "pnVar9->elems[1]" (field_expression "pnVar9->elems" identifier -> field_identifier) [ number_literal ]) == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    pnVar10 = ptr->kids[local_38 + 1];\n    iVar12 = local_38 + 1;\n    pnVar13 = pnVar10->kids[0];\n    pnVar11 = pnVar10;\n    if (pnVar10->elems[1] == (void *)0x0) {\n      pvVar7 = ptr->elems[local_38];\n      pnVar9->kids[2] = pnVar13;\n      pnVar9->elems[1] = pvVar7;\n      pnVar9->counts[2] = pnVar10->counts[0];\n      if (pnVar13 != (node234 *)0x0) {\n        pnVar13->parent = pnVar9;\n      }\n      iVar6 = pnVar10->counts[1];\n      pnVar9->elems[2] = pnVar10->elems[0];\n      pnVar13 = pnVar10->kids[1];\n      pnVar9->counts[3] = iVar6;\n      pnVar9->kids[3] = pnVar13;\n      if (pnVar13 != (node234 *)0x0) {\n        pnVar13->parent = pnVar9;\n      }\n      safefree(pnVar10);\n      iVar6 = countnode234(pnVar9);\n      ptr->counts[local_38] = iVar6;\n      if (local_38 == 2) {\nLAB_0003ec29:\n        iVar12 = 3;\n        iVar6 = 2;\n      }\n      else {\n        pvVar7 = ptr->elems[local_38 + 1];\n        iVar6 = local_38;\n        if (pvVar7 != (void *)0x0) {\n          do {\n            ptr->counts[iVar12 + 3] = (int)pvVar7;\n            ptr->kids[iVar12] = ptr->kids[iVar12 + 1];\n            ptr->counts[iVar12] = ptr->counts[iVar12 + 1];\n            if (iVar12 == 2) goto LAB_0003ec29;\n            pvVar7 = ptr->elems[2];\n            iVar12 = 2;\n          } while (pvVar7 != (void *)0x0);\n          iVar6 = 1;\n        }\n      }\n      ptr->elems[iVar6] = (void *)0x0;\n      ptr->kids[iVar12] = (node234 *)0x0;\n      ptr->counts[iVar12] = 0;\n      if (ptr->elems[0] == (void *)0x0) {\n        *puVar4 = pnVar9;\n        pnVar9->parent = (node234_conflict *)0x0;\n        safefree(ptr);\n      }\n      index = pnVar9->counts[1] + pnVar9->counts[0] + 1;\n    }\n    else {\n      while (pnVar9 = pnVar13, pnVar9 != (node234 *)0x0) {\n        pnVar11 = pnVar9;\n        pnVar13 = pnVar9->kids[0];\n      }\n      ptr->elems[local_38] = pnVar11->elems[0];\n      index = 0;\n      pnVar9 = pnVar10;\n    }\n  }" { (expression_statement "pnVar10 = ptr->kids[local_38 + 1];" (assignment_expression "pnVar10 = ptr->kids[local_38 + 1]" identifier = (subscript_expression "ptr->kids[local_38 + 1]" (field_expression "ptr->kids" identifier -> field_identifier) [ (binary_expression "local_38 + 1" identifier + number_literal) ])) ;) (expression_statement "iVar12 = local_38 + 1;" (assignment_expression "iVar12 = local_38 + 1" identifier = (binary_expression "local_38 + 1" identifier + number_literal)) ;) (expression_statement "pnVar13 = pnVar10->kids[0];" (assignment_expression "pnVar13 = pnVar10->kids[0]" identifier = (subscript_expression "pnVar10->kids[0]" (field_expression "pnVar10->kids" identifier -> field_identifier) [ number_literal ])) ;) (expression_statement "pnVar11 = pnVar10;" (assignment_expression "pnVar11 = pnVar10" identifier = identifier) ;) (if_statement "if (pnVar10->elems[1] == (void *)0x0) {\n      pvVar7 = ptr->elems[local_38];\n      pnVar9->kids[2] = pnVar13;\n      pnVar9->elems[1] = pvVar7;\n      pnVar9->counts[2] = pnVar10->counts[0];\n      if (pnVar13 != (node234 *)0x0) {\n        pnVar13->parent = pnVar9;\n      }\n      iVar6 = pnVar10->counts[1];\n      pnVar9->elems[2] = pnVar10->elems[0];\n      pnVar13 = pnVar10->kids[1];\n      pnVar9->counts[3] = iVar6;\n      pnVar9->kids[3] = pnVar13;\n      if (pnVar13 != (node234 *)0x0) {\n        pnVar13->parent = pnVar9;\n      }\n      safefree(pnVar10);\n      iVar6 = countnode234(pnVar9);\n      ptr->counts[local_38] = iVar6;\n      if (local_38 == 2) {\nLAB_0003ec29:\n        iVar12 = 3;\n        iVar6 = 2;\n      }\n      else {\n        pvVar7 = ptr->elems[local_38 + 1];\n        iVar6 = local_38;\n        if (pvVar7 != (void *)0x0) {\n          do {\n            ptr->counts[iVar12 + 3] = (int)pvVar7;\n            ptr->kids[iVar12] = ptr->kids[iVar12 + 1];\n            ptr->counts[iVar12] = ptr->counts[iVar12 + 1];\n            if (iVar12 == 2) goto LAB_0003ec29;\n            pvVar7 = ptr->elems[2];\n            iVar12 = 2;\n          } while (pvVar7 != (void *)0x0);\n          iVar6 = 1;\n        }\n      }\n      ptr->elems[iVar6] = (void *)0x0;\n      ptr->kids[iVar12] = (node234 *)0x0;\n      ptr->counts[iVar12] = 0;\n      if (ptr->elems[0] == (void *)0x0) {\n        *puVar4 = pnVar9;\n        pnVar9->parent = (node234_conflict *)0x0;\n        safefree(ptr);\n      }\n      index = pnVar9->counts[1] + pnVar9->counts[0] + 1;\n    }\n    else {\n      while (pnVar9 = pnVar13, pnVar9 != (node234 *)0x0) {\n        pnVar11 = pnVar9;\n        pnVar13 = pnVar9->kids[0];\n      }\n      ptr->elems[local_38] = pnVar11->elems[0];\n      index = 0;\n      pnVar9 = pnVar10;\n    }" if (parenthesized_expression "(pnVar10->elems[1] == (void *)0x0)" ( (binary_expression "pnVar10->elems[1] == (void *)0x0" (subscript_expression "pnVar10->elems[1]" (field_expression "pnVar10->elems" identifier -> field_identifier) [ number_literal ]) == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      pvVar7 = ptr->elems[local_38];\n      pnVar9->kids[2] = pnVar13;\n      pnVar9->elems[1] = pvVar7;\n      pnVar9->counts[2] = pnVar10->counts[0];\n      if (pnVar13 != (node234 *)0x0) {\n        pnVar13->parent = pnVar9;\n      }\n      iVar6 = pnVar10->counts[1];\n      pnVar9->elems[2] = pnVar10->elems[0];\n      pnVar13 = pnVar10->kids[1];\n      pnVar9->counts[3] = iVar6;\n      pnVar9->kids[3] = pnVar13;\n      if (pnVar13 != (node234 *)0x0) {\n        pnVar13->parent = pnVar9;\n      }\n      safefree(pnVar10);\n      iVar6 = countnode234(pnVar9);\n      ptr->counts[local_38] = iVar6;\n      if (local_38 == 2) {\nLAB_0003ec29:\n        iVar12 = 3;\n        iVar6 = 2;\n      }\n      else {\n        pvVar7 = ptr->elems[local_38 + 1];\n        iVar6 = local_38;\n        if (pvVar7 != (void *)0x0) {\n          do {\n            ptr->counts[iVar12 + 3] = (int)pvVar7;\n            ptr->kids[iVar12] = ptr->kids[iVar12 + 1];\n            ptr->counts[iVar12] = ptr->counts[iVar12 + 1];\n            if (iVar12 == 2) goto LAB_0003ec29;\n            pvVar7 = ptr->elems[2];\n            iVar12 = 2;\n          } while (pvVar7 != (void *)0x0);\n          iVar6 = 1;\n        }\n      }\n      ptr->elems[iVar6] = (void *)0x0;\n      ptr->kids[iVar12] = (node234 *)0x0;\n      ptr->counts[iVar12] = 0;\n      if (ptr->elems[0] == (void *)0x0) {\n        *puVar4 = pnVar9;\n        pnVar9->parent = (node234_conflict *)0x0;\n        safefree(ptr);\n      }\n      index = pnVar9->counts[1] + pnVar9->counts[0] + 1;\n    }" { (expression_statement "pvVar7 = ptr->elems[local_38];" (assignment_expression "pvVar7 = ptr->elems[local_38]" identifier = (subscript_expression "ptr->elems[local_38]" (field_expression "ptr->elems" identifier -> field_identifier) [ identifier ])) ;) (expression_statement "pnVar9->kids[2] = pnVar13;" (assignment_expression "pnVar9->kids[2] = pnVar13" (subscript_expression "pnVar9->kids[2]" (field_expression "pnVar9->kids" identifier -> field_identifier) [ number_literal ]) = identifier) ;) (expression_statement "pnVar9->elems[1] = pvVar7;" (assignment_expression "pnVar9->elems[1] = pvVar7" (subscript_expression "pnVar9->elems[1]" (field_expression "pnVar9->elems" identifier -> field_identifier) [ number_literal ]) = identifier) ;) (expression_statement "pnVar9->counts[2] = pnVar10->counts[0];" (assignment_expression "pnVar9->counts[2] = pnVar10->counts[0]" (subscript_expression "pnVar9->counts[2]" (field_expression "pnVar9->counts" identifier -> field_identifier) [ number_literal ]) = (subscript_expression "pnVar10->counts[0]" (field_expression "pnVar10->counts" identifier -> field_identifier) [ number_literal ])) ;) (if_statement "if (pnVar13 != (node234 *)0x0) {\n        pnVar13->parent = pnVar9;\n      }" if (parenthesized_expression "(pnVar13 != (node234 *)0x0)" ( (binary_expression "pnVar13 != (node234 *)0x0" identifier != (cast_expression "(node234 *)0x0" ( (type_descriptor "node234 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        pnVar13->parent = pnVar9;\n      }" { (expression_statement "pnVar13->parent = pnVar9;" (assignment_expression "pnVar13->parent = pnVar9" (field_expression "pnVar13->parent" identifier -> field_identifier) = identifier) ;) })) (expression_statement "iVar6 = pnVar10->counts[1];" (assignment_expression "iVar6 = pnVar10->counts[1]" identifier = (subscript_expression "pnVar10->counts[1]" (field_expression "pnVar10->counts" identifier -> field_identifier) [ number_literal ])) ;) (expression_statement "pnVar9->elems[2] = pnVar10->elems[0];" (assignment_expression "pnVar9->elems[2] = pnVar10->elems[0]" (subscript_expression "pnVar9->elems[2]" (field_expression "pnVar9->elems" identifier -> field_identifier) [ number_literal ]) = (subscript_expression "pnVar10->elems[0]" (field_expression "pnVar10->elems" identifier -> field_identifier) [ number_literal ])) ;) (expression_statement "pnVar13 = pnVar10->kids[1];" (assignment_expression "pnVar13 = pnVar10->kids[1]" identifier = (subscript_expression "pnVar10->kids[1]" (field_expression "pnVar10->kids" identifier -> field_identifier) [ number_literal ])) ;) (expression_statement "pnVar9->counts[3] = iVar6;" (assignment_expression "pnVar9->counts[3] = iVar6" (subscript_expression "pnVar9->counts[3]" (field_expression "pnVar9->counts" identifier -> field_identifier) [ number_literal ]) = identifier) ;) (expression_statement "pnVar9->kids[3] = pnVar13;" (assignment_expression "pnVar9->kids[3] = pnVar13" (subscript_expression "pnVar9->kids[3]" (field_expression "pnVar9->kids" identifier -> field_identifier) [ number_literal ]) = identifier) ;) (if_statement "if (pnVar13 != (node234 *)0x0) {\n        pnVar13->parent = pnVar9;\n      }" if (parenthesized_expression "(pnVar13 != (node234 *)0x0)" ( (binary_expression "pnVar13 != (node234 *)0x0" identifier != (cast_expression "(node234 *)0x0" ( (type_descriptor "node234 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        pnVar13->parent = pnVar9;\n      }" { (expression_statement "pnVar13->parent = pnVar9;" (assignment_expression "pnVar13->parent = pnVar9" (field_expression "pnVar13->parent" identifier -> field_identifier) = identifier) ;) })) (expression_statement "safefree(pnVar10);" (call_expression "safefree(pnVar10)" identifier (argument_list "(pnVar10)" ( identifier ))) ;) (expression_statement "iVar6 = countnode234(pnVar9);" (assignment_expression "iVar6 = countnode234(pnVar9)" identifier = (call_expression "countnode234(pnVar9)" identifier (argument_list "(pnVar9)" ( identifier )))) ;) (expression_statement "ptr->counts[local_38] = iVar6;" (assignment_expression "ptr->counts[local_38] = iVar6" (subscript_expression "ptr->counts[local_38]" (field_expression "ptr->counts" identifier -> field_identifier) [ identifier ]) = identifier) ;) (if_statement "if (local_38 == 2) {\nLAB_0003ec29:\n        iVar12 = 3;\n        iVar6 = 2;\n      }\n      else {\n        pvVar7 = ptr->elems[local_38 + 1];\n        iVar6 = local_38;\n        if (pvVar7 != (void *)0x0) {\n          do {\n            ptr->counts[iVar12 + 3] = (int)pvVar7;\n            ptr->kids[iVar12] = ptr->kids[iVar12 + 1];\n            ptr->counts[iVar12] = ptr->counts[iVar12 + 1];\n            if (iVar12 == 2) goto LAB_0003ec29;\n            pvVar7 = ptr->elems[2];\n            iVar12 = 2;\n          } while (pvVar7 != (void *)0x0);\n          iVar6 = 1;\n        }\n      }" if (parenthesized_expression "(local_38 == 2)" ( (binary_expression "local_38 == 2" identifier == number_literal) )) (compound_statement "{\nLAB_0003ec29:\n        iVar12 = 3;\n        iVar6 = 2;\n      }" { (labeled_statement "LAB_0003ec29:\n        iVar12 = 3;" statement_identifier : (expression_statement "iVar12 = 3;" (assignment_expression "iVar12 = 3" identifier = number_literal) ;)) (expression_statement "iVar6 = 2;" (assignment_expression "iVar6 = 2" identifier = number_literal) ;) }) (else_clause "else {\n        pvVar7 = ptr->elems[local_38 + 1];\n        iVar6 = local_38;\n        if (pvVar7 != (void *)0x0) {\n          do {\n            ptr->counts[iVar12 + 3] = (int)pvVar7;\n            ptr->kids[iVar12] = ptr->kids[iVar12 + 1];\n            ptr->counts[iVar12] = ptr->counts[iVar12 + 1];\n            if (iVar12 == 2) goto LAB_0003ec29;\n            pvVar7 = ptr->elems[2];\n            iVar12 = 2;\n          } while (pvVar7 != (void *)0x0);\n          iVar6 = 1;\n        }\n      }" else (compound_statement "{\n        pvVar7 = ptr->elems[local_38 + 1];\n        iVar6 = local_38;\n        if (pvVar7 != (void *)0x0) {\n          do {\n            ptr->counts[iVar12 + 3] = (int)pvVar7;\n            ptr->kids[iVar12] = ptr->kids[iVar12 + 1];\n            ptr->counts[iVar12] = ptr->counts[iVar12 + 1];\n            if (iVar12 == 2) goto LAB_0003ec29;\n            pvVar7 = ptr->elems[2];\n            iVar12 = 2;\n          } while (pvVar7 != (void *)0x0);\n          iVar6 = 1;\n        }\n      }" { (expression_statement "pvVar7 = ptr->elems[local_38 + 1];" (assignment_expression "pvVar7 = ptr->elems[local_38 + 1]" identifier = (subscript_expression "ptr->elems[local_38 + 1]" (field_expression "ptr->elems" identifier -> field_identifier) [ (binary_expression "local_38 + 1" identifier + number_literal) ])) ;) (expression_statement "iVar6 = local_38;" (assignment_expression "iVar6 = local_38" identifier = identifier) ;) (if_statement "if (pvVar7 != (void *)0x0) {\n          do {\n            ptr->counts[iVar12 + 3] = (int)pvVar7;\n            ptr->kids[iVar12] = ptr->kids[iVar12 + 1];\n            ptr->counts[iVar12] = ptr->counts[iVar12 + 1];\n            if (iVar12 == 2) goto LAB_0003ec29;\n            pvVar7 = ptr->elems[2];\n            iVar12 = 2;\n          } while (pvVar7 != (void *)0x0);\n          iVar6 = 1;\n        }" if (parenthesized_expression "(pvVar7 != (void *)0x0)" ( (binary_expression "pvVar7 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          do {\n            ptr->counts[iVar12 + 3] = (int)pvVar7;\n            ptr->kids[iVar12] = ptr->kids[iVar12 + 1];\n            ptr->counts[iVar12] = ptr->counts[iVar12 + 1];\n            if (iVar12 == 2) goto LAB_0003ec29;\n            pvVar7 = ptr->elems[2];\n            iVar12 = 2;\n          } while (pvVar7 != (void *)0x0);\n          iVar6 = 1;\n        }" { (do_statement "do {\n            ptr->counts[iVar12 + 3] = (int)pvVar7;\n            ptr->kids[iVar12] = ptr->kids[iVar12 + 1];\n            ptr->counts[iVar12] = ptr->counts[iVar12 + 1];\n            if (iVar12 == 2) goto LAB_0003ec29;\n            pvVar7 = ptr->elems[2];\n            iVar12 = 2;\n          } while (pvVar7 != (void *)0x0);" do (compound_statement "{\n            ptr->counts[iVar12 + 3] = (int)pvVar7;\n            ptr->kids[iVar12] = ptr->kids[iVar12 + 1];\n            ptr->counts[iVar12] = ptr->counts[iVar12 + 1];\n            if (iVar12 == 2) goto LAB_0003ec29;\n            pvVar7 = ptr->elems[2];\n            iVar12 = 2;\n          }" { (expression_statement "ptr->counts[iVar12 + 3] = (int)pvVar7;" (assignment_expression "ptr->counts[iVar12 + 3] = (int)pvVar7" (subscript_expression "ptr->counts[iVar12 + 3]" (field_expression "ptr->counts" identifier -> field_identifier) [ (binary_expression "iVar12 + 3" identifier + number_literal) ]) = (cast_expression "(int)pvVar7" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "ptr->kids[iVar12] = ptr->kids[iVar12 + 1];" (assignment_expression "ptr->kids[iVar12] = ptr->kids[iVar12 + 1]" (subscript_expression "ptr->kids[iVar12]" (field_expression "ptr->kids" identifier -> field_identifier) [ identifier ]) = (subscript_expression "ptr->kids[iVar12 + 1]" (field_expression "ptr->kids" identifier -> field_identifier) [ (binary_expression "iVar12 + 1" identifier + number_literal) ])) ;) (expression_statement "ptr->counts[iVar12] = ptr->counts[iVar12 + 1];" (assignment_expression "ptr->counts[iVar12] = ptr->counts[iVar12 + 1]" (subscript_expression "ptr->counts[iVar12]" (field_expression "ptr->counts" identifier -> field_identifier) [ identifier ]) = (subscript_expression "ptr->counts[iVar12 + 1]" (field_expression "ptr->counts" identifier -> field_identifier) [ (binary_expression "iVar12 + 1" identifier + number_literal) ])) ;) (if_statement "if (iVar12 == 2) goto LAB_0003ec29;" if (parenthesized_expression "(iVar12 == 2)" ( (binary_expression "iVar12 == 2" identifier == number_literal) )) (goto_statement "goto LAB_0003ec29;" goto statement_identifier ;)) (expression_statement "pvVar7 = ptr->elems[2];" (assignment_expression "pvVar7 = ptr->elems[2]" identifier = (subscript_expression "ptr->elems[2]" (field_expression "ptr->elems" identifier -> field_identifier) [ number_literal ])) ;) (expression_statement "iVar12 = 2;" (assignment_expression "iVar12 = 2" identifier = number_literal) ;) }) while (parenthesized_expression "(pvVar7 != (void *)0x0)" ( (binary_expression "pvVar7 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "iVar6 = 1;" (assignment_expression "iVar6 = 1" identifier = number_literal) ;) })) }))) (expression_statement "ptr->elems[iVar6] = (void *)0x0;" (assignment_expression "ptr->elems[iVar6] = (void *)0x0" (subscript_expression "ptr->elems[iVar6]" (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[iVar12] = (node234 *)0x0;" (assignment_expression "ptr->kids[iVar12] = (node234 *)0x0" (subscript_expression "ptr->kids[iVar12]" (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[iVar12] = 0;" (assignment_expression "ptr->counts[iVar12] = 0" (subscript_expression "ptr->counts[iVar12]" (field_expression "ptr->counts" identifier -> field_identifier) [ identifier ]) = number_literal) ;) (if_statement "if (ptr->elems[0] == (void *)0x0) {\n        *puVar4 = pnVar9;\n        pnVar9->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        *puVar4 = pnVar9;\n        pnVar9->parent = (node234_conflict *)0x0;\n        safefree(ptr);\n      }" { (expression_statement "*puVar4 = pnVar9;" (assignment_expression "*puVar4 = pnVar9" (pointer_expression "*puVar4" * identifier) = identifier) ;) (expression_statement "pnVar9->parent = (node234_conflict *)0x0;" (assignment_expression "pnVar9->parent = (node234_conflict *)0x0" (field_expression "pnVar9->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 = pnVar9->counts[1] + pnVar9->counts[0] + 1;" (assignment_expression "index = pnVar9->counts[1] + pnVar9->counts[0] + 1" identifier = (binary_expression "pnVar9->counts[1] + pnVar9->counts[0] + 1" (binary_expression "pnVar9->counts[1] + pnVar9->counts[0]" (subscript_expression "pnVar9->counts[1]" (field_expression "pnVar9->counts" identifier -> field_identifier) [ number_literal ]) + (subscript_expression "pnVar9->counts[0]" (field_expression "pnVar9->counts" identifier -> field_identifier) [ number_literal ])) + number_literal)) ;) }) (else_clause "else {\n      while (pnVar9 = pnVar13, pnVar9 != (node234 *)0x0) {\n        pnVar11 = pnVar9;\n        pnVar13 = pnVar9->kids[0];\n      }\n      ptr->elems[local_38] = pnVar11->elems[0];\n      index = 0;\n      pnVar9 = pnVar10;\n    }" else (compound_statement "{\n      while (pnVar9 = pnVar13, pnVar9 != (node234 *)0x0) {\n        pnVar11 = pnVar9;\n        pnVar13 = pnVar9->kids[0];\n      }\n      ptr->elems[local_38] = pnVar11->elems[0];\n      index = 0;\n      pnVar9 = pnVar10;\n    }" { (while_statement "while (pnVar9 = pnVar13, pnVar9 != (node234 *)0x0) {\n        pnVar11 = pnVar9;\n        pnVar13 = pnVar9->kids[0];\n      }" while (parenthesized_expression "(pnVar9 = pnVar13, pnVar9 != (node234 *)0x0)" ( (comma_expression "pnVar9 = pnVar13, pnVar9 != (node234 *)0x0" (assignment_expression "pnVar9 = pnVar13" identifier = identifier) , (binary_expression "pnVar9 != (node234 *)0x0" identifier != (cast_expression "(node234 *)0x0" ( (type_descriptor "node234 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) )) (compound_statement "{\n        pnVar11 = pnVar9;\n        pnVar13 = pnVar9->kids[0];\n      }" { (expression_statement "pnVar11 = pnVar9;" (assignment_expression "pnVar11 = pnVar9" identifier = identifier) ;) (expression_statement "pnVar13 = pnVar9->kids[0];" (assignment_expression "pnVar13 = pnVar9->kids[0]" identifier = (subscript_expression "pnVar9->kids[0]" (field_expression "pnVar9->kids" identifier -> field_identifier) [ number_literal ])) ;) })) (expression_statement "ptr->elems[local_38] = pnVar11->elems[0];" (assignment_expression "ptr->elems[local_38] = pnVar11->elems[0]" (subscript_expression "ptr->elems[local_38]" (field_expression "ptr->elems" identifier -> field_identifier) [ identifier ]) = (subscript_expression "pnVar11->elems[0]" (field_expression "pnVar11->elems" identifier -> field_identifier) [ number_literal ])) ;) (expression_statement "index = 0;" (assignment_expression "index = 0" identifier = number_literal) ;) (expression_statement "pnVar9 = pnVar10;" (assignment_expression "pnVar9 = pnVar10" identifier = identifier) ;) }))) }) (else_clause "else {\n    while (pnVar10 = pnVar5->kids[0], pnVar10 != (node234 *)0x0) {\n      while ((pnVar13 = pnVar5->kids[3], pnVar5->kids[3] != (node234 *)0x0 ||\n             (pnVar13 = pnVar5->kids[2], pnVar5->kids[2] != (node234 *)0x0))) {\n        pnVar5 = pnVar13;\n        pnVar10 = pnVar5->kids[0];\n        if (pnVar10 == (node234 *)0x0) goto LAB_0003e958;\n      }\n      ppnVar2 = pnVar5->kids;\n      pnVar5 = ppnVar2[1];\n      if (ppnVar2[1] == (node234 *)0x0) {\n        pnVar5 = pnVar10;\n      }\n    }\nLAB_0003e958:\n    pvVar7 = pnVar5->elems[2];\n    if ((pvVar7 == (void *)0x0) && (pvVar7 = pnVar5->elems[1], pvVar7 == (void *)0x0)) {\n      pvVar7 = pnVar5->elems[0];\n    }\n    ptr->elems[local_38] = pvVar7;\n    index = ptr->counts[local_38] + -1;\n  }" else (compound_statement "{\n    while (pnVar10 = pnVar5->kids[0], pnVar10 != (node234 *)0x0) {\n      while ((pnVar13 = pnVar5->kids[3], pnVar5->kids[3] != (node234 *)0x0 ||\n             (pnVar13 = pnVar5->kids[2], pnVar5->kids[2] != (node234 *)0x0))) {\n        pnVar5 = pnVar13;\n        pnVar10 = pnVar5->kids[0];\n        if (pnVar10 == (node234 *)0x0) goto LAB_0003e958;\n      }\n      ppnVar2 = pnVar5->kids;\n      pnVar5 = ppnVar2[1];\n      if (ppnVar2[1] == (node234 *)0x0) {\n        pnVar5 = pnVar10;\n      }\n    }\nLAB_0003e958:\n    pvVar7 = pnVar5->elems[2];\n    if ((pvVar7 == (void *)0x0) && (pvVar7 = pnVar5->elems[1], pvVar7 == (void *)0x0)) {\n      pvVar7 = pnVar5->elems[0];\n    }\n    ptr->elems[local_38] = pvVar7;\n    index = ptr->counts[local_38] + -1;\n  }" { (while_statement "while (pnVar10 = pnVar5->kids[0], pnVar10 != (node234 *)0x0) {\n      while ((pnVar13 = pnVar5->kids[3], pnVar5->kids[3] != (node234 *)0x0 ||\n             (pnVar13 = pnVar5->kids[2], pnVar5->kids[2] != (node234 *)0x0))) {\n        pnVar5 = pnVar13;\n        pnVar10 = pnVar5->kids[0];\n        if (pnVar10 == (node234 *)0x0) goto LAB_0003e958;\n      }\n      ppnVar2 = pnVar5->kids;\n      pnVar5 = ppnVar2[1];\n      if (ppnVar2[1] == (node234 *)0x0) {\n        pnVar5 = pnVar10;\n      }\n    }" while (parenthesized_expression "(pnVar10 = pnVar5->kids[0], pnVar10 != (node234 *)0x0)" ( (comma_expression "pnVar10 = pnVar5->kids[0], pnVar10 != (node234 *)0x0" (assignment_expression "pnVar10 = pnVar5->kids[0]" identifier = (subscript_expression "pnVar5->kids[0]" (field_expression "pnVar5->kids" identifier -> field_identifier) [ number_literal ])) , (binary_expression "pnVar10 != (node234 *)0x0" identifier != (cast_expression "(node234 *)0x0" ( (type_descriptor "node234 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) )) (compound_statement "{\n      while ((pnVar13 = pnVar5->kids[3], pnVar5->kids[3] != (node234 *)0x0 ||\n             (pnVar13 = pnVar5->kids[2], pnVar5->kids[2] != (node234 *)0x0))) {\n        pnVar5 = pnVar13;\n        pnVar10 = pnVar5->kids[0];\n        if (pnVar10 == (node234 *)0x0) goto LAB_0003e958;\n      }\n      ppnVar2 = pnVar5->kids;\n      pnVar5 = ppnVar2[1];\n      if (ppnVar2[1] == (node234 *)0x0) {\n        pnVar5 = pnVar10;\n      }\n    }" { (while_statement "while ((pnVar13 = pnVar5->kids[3], pnVar5->kids[3] != (node234 *)0x0 ||\n             (pnVar13 = pnVar5->kids[2], pnVar5->kids[2] != (node234 *)0x0))) {\n        pnVar5 = pnVar13;\n        pnVar10 = pnVar5->kids[0];\n        if (pnVar10 == (node234 *)0x0) goto LAB_0003e958;\n      }" while (parenthesized_expression "((pnVar13 = pnVar5->kids[3], pnVar5->kids[3] != (node234 *)0x0 ||\n             (pnVar13 = pnVar5->kids[2], pnVar5->kids[2] != (node234 *)0x0)))" ( (parenthesized_expression "(pnVar13 = pnVar5->kids[3], pnVar5->kids[3] != (node234 *)0x0 ||\n             (pnVar13 = pnVar5->kids[2], pnVar5->kids[2] != (node234 *)0x0))" ( (comma_expression "pnVar13 = pnVar5->kids[3], pnVar5->kids[3] != (node234 *)0x0 ||\n             (pnVar13 = pnVar5->kids[2], pnVar5->kids[2] != (node234 *)0x0)" (assignment_expression "pnVar13 = pnVar5->kids[3]" identifier = (subscript_expression "pnVar5->kids[3]" (field_expression "pnVar5->kids" identifier -> field_identifier) [ number_literal ])) , (binary_expression "pnVar5->kids[3] != (node234 *)0x0 ||\n             (pnVar13 = pnVar5->kids[2], pnVar5->kids[2] != (node234 *)0x0)" (binary_expression "pnVar5->kids[3] != (node234 *)0x0" (subscript_expression "pnVar5->kids[3]" (field_expression "pnVar5->kids" identifier -> field_identifier) [ number_literal ]) != (cast_expression "(node234 *)0x0" ( (type_descriptor "node234 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) || (parenthesized_expression "(pnVar13 = pnVar5->kids[2], pnVar5->kids[2] != (node234 *)0x0)" ( (comma_expression "pnVar13 = pnVar5->kids[2], pnVar5->kids[2] != (node234 *)0x0" (assignment_expression "pnVar13 = pnVar5->kids[2]" identifier = (subscript_expression "pnVar5->kids[2]" (field_expression "pnVar5->kids" identifier -> field_identifier) [ number_literal ])) , (binary_expression "pnVar5->kids[2] != (node234 *)0x0" (subscript_expression "pnVar5->kids[2]" (field_expression "pnVar5->kids" identifier -> field_identifier) [ number_literal ]) != (cast_expression "(node234 *)0x0" ( (type_descriptor "node234 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) )))) )) )) (compound_statement "{\n        pnVar5 = pnVar13;\n        pnVar10 = pnVar5->kids[0];\n        if (pnVar10 == (node234 *)0x0) goto LAB_0003e958;\n      }" { (expression_statement "pnVar5 = pnVar13;" (assignment_expression "pnVar5 = pnVar13" identifier = identifier) ;) (expression_statement "pnVar10 = pnVar5->kids[0];" (assignment_expression "pnVar10 = pnVar5->kids[0]" identifier = (subscript_expression "pnVar5->kids[0]" (field_expression "pnVar5->kids" identifier -> field_identifier) [ number_literal ])) ;) (if_statement "if (pnVar10 == (node234 *)0x0) goto LAB_0003e958;" if (parenthesized_expression "(pnVar10 == (node234 *)0x0)" ( (binary_expression "pnVar10 == (node234 *)0x0" identifier == (cast_expression "(node234 *)0x0" ( (type_descriptor "node234 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0003e958;" goto statement_identifier ;)) })) (expression_statement "ppnVar2 = pnVar5->kids;" (assignment_expression "ppnVar2 = pnVar5->kids" identifier = (field_expression "pnVar5->kids" identifier -> field_identifier)) ;) (expression_statement "pnVar5 = ppnVar2[1];" (assignment_expression "pnVar5 = ppnVar2[1]" identifier = (subscript_expression "ppnVar2[1]" identifier [ number_literal ])) ;) (if_statement "if (ppnVar2[1] == (node234 *)0x0) {\n        pnVar5 = pnVar10;\n      }" if (parenthesized_expression "(ppnVar2[1] == (node234 *)0x0)" ( (binary_expression "ppnVar2[1] == (node234 *)0x0" (subscript_expression "ppnVar2[1]" identifier [ number_literal ]) == (cast_expression "(node234 *)0x0" ( (type_descriptor "node234 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        pnVar5 = pnVar10;\n      }" { (expression_statement "pnVar5 = pnVar10;" (assignment_expression "pnVar5 = pnVar10" identifier = identifier) ;) })) })) (labeled_statement "LAB_0003e958:\n    pvVar7 = pnVar5->elems[2];" statement_identifier : (expression_statement "pvVar7 = pnVar5->elems[2];" (assignment_expression "pvVar7 = pnVar5->elems[2]" identifier = (subscript_expression "pnVar5->elems[2]" (field_expression "pnVar5->elems" identifier -> field_identifier) [ number_literal ])) ;)) (if_statement "if ((pvVar7 == (void *)0x0) && (pvVar7 = pnVar5->elems[1], pvVar7 == (void *)0x0)) {\n      pvVar7 = pnVar5->elems[0];\n    }" if (parenthesized_expression "((pvVar7 == (void *)0x0) && (pvVar7 = pnVar5->elems[1], pvVar7 == (void *)0x0))" ( (binary_expression "(pvVar7 == (void *)0x0) && (pvVar7 = pnVar5->elems[1], pvVar7 == (void *)0x0)" (parenthesized_expression "(pvVar7 == (void *)0x0)" ( (binary_expression "pvVar7 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(pvVar7 = pnVar5->elems[1], pvVar7 == (void *)0x0)" ( (comma_expression "pvVar7 = pnVar5->elems[1], pvVar7 == (void *)0x0" (assignment_expression "pvVar7 = pnVar5->elems[1]" identifier = (subscript_expression "pnVar5->elems[1]" (field_expression "pnVar5->elems" identifier -> field_identifier) [ number_literal ])) , (binary_expression "pvVar7 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n      pvVar7 = pnVar5->elems[0];\n    }" { (expression_statement "pvVar7 = pnVar5->elems[0];" (assignment_expression "pvVar7 = pnVar5->elems[0]" identifier = (subscript_expression "pnVar5->elems[0]" (field_expression "pnVar5->elems" identifier -> field_identifier) [ number_literal ])) ;) })) (expression_statement "ptr->elems[local_38] = pvVar7;" (assignment_expression "ptr->elems[local_38] = pvVar7" (subscript_expression "ptr->elems[local_38]" (field_expression "ptr->elems" identifier -> field_identifier) [ identifier ]) = identifier) ;) (expression_statement "index = ptr->counts[local_38] + -1;" (assignment_expression "index = ptr->counts[local_38] + -1" identifier = (binary_expression "ptr->counts[local_38] + -1" (subscript_expression "ptr->counts[local_38]" (field_expression "ptr->counts" identifier -> field_identifier) [ identifier ]) + number_literal)) ;) }))) (goto_statement "goto joined_r0x0003e772;" goto statement_identifier ;) (labeled_statement "LAB_0003eab0:\n  pnVar9 = ptr->kids[1];" statement_identifier : (expression_statement "pnVar9 = ptr->kids[1];" (assignment_expression "pnVar9 = ptr->kids[1]" identifier = (subscript_expression "ptr->kids[1]" (field_expression "ptr->kids" identifier -> field_identifier) [ number_literal ])) ;)) (if_statement "if (pnVar9->elems[1] == (void *)0x0) {\n    local_30 = 1;\n    iVar6 = 0;\nLAB_0003eacb:\n    pnVar10 = ptr->kids[iVar6];\n    if (pnVar10->elems[1] == (void *)0x0) {\n      local_28 = local_30 + 1;\n      ppnVar2 = ptr->kids + local_30 + -1;\n      pnVar13 = ppnVar2[2];\n      if (pnVar13 == (node234 *)0x0) {\n        pnVar13 = ppnVar2[1];\n        iVar12 = index + 1 + ptr->counts[iVar6];\n      }\n      else {\n        if (pnVar13->elems[1] != (void *)0x0) {\nLAB_0003e836:\n          iVar12 = pnVar13->counts[0];\n          pnVar9->elems[1] = ptr->elems[local_30];\n          pnVar10 = pnVar13->kids[0];\n          pnVar9->counts[2] = iVar12;\n          pnVar9->kids[2] = pnVar10;\n          if (pnVar10 != (node234 *)0x0) {\n            pnVar10->parent = pnVar9;\n          }\n          ptr->elems[local_30] = pnVar13->elems[0];\n          pnVar13->kids[0] = pnVar13->kids[1];\n          pnVar13->counts[0] = pnVar13->counts[1];\n          if (pnVar13->elems[1] == (void *)0x0) {\n            iVar12 = 1;\n            iVar6 = 0;\n          }\n          else {\n            pnVar10 = pnVar13->kids[2];\n            pnVar13->elems[0] = pnVar13->elems[1];\n            pvVar7 = pnVar13->elems[2];\n            pnVar13->kids[1] = pnVar10;\n            pnVar13->counts[1] = pnVar13->counts[2];\n            if (pvVar7 == (void *)0x0) {\n              iVar12 = 2;\n              iVar6 = 1;\n            }\n            else {\n              pnVar10 = pnVar13->kids[3];\n              pnVar13->elems[1] = pvVar7;\n              iVar12 = 3;\n              pnVar13->kids[2] = pnVar10;\n              pnVar13->counts[2] = pnVar13->counts[3];\n              iVar6 = 2;\n            }\n          }\n          pnVar13->kids[iVar12] = (node234 *)0x0;\n          pnVar13->counts[iVar12] = 0;\n          pnVar13->elems[iVar6] = (void *)0x0;\n          iVar12 = countnode234(pnVar9);\n          ptr->counts[local_30] = iVar12;\n          iVar12 = countnode234(pnVar13);\n          ptr->counts[local_28] = iVar12;\n          pnVar9 = extraout_ECX;\n          goto joined_r0x0003e772;\n        }\n        pnVar10 = *ppnVar2;\n        pnVar13 = ppnVar2[1];\n        iVar6 = local_30 + -1;\n        iVar12 = index + 1 + (int)ppnVar2[4];\n      }\nLAB_0003ed0c:\n      pnVar13->kids[3] = pnVar13->kids[1];\n      pnVar13->counts[3] = pnVar13->counts[1];\n      pnVar13->elems[2] = pnVar13->elems[0];\n      pnVar13->kids[2] = pnVar13->kids[0];\n      pnVar13->counts[2] = pnVar13->counts[0];\n      iVar8 = pnVar10->counts[1];\n      pnVar13->elems[1] = ptr->elems[iVar6];\n      pnVar9 = pnVar10->kids[1];\n      pnVar13->counts[1] = iVar8;\n      pnVar13->kids[1] = pnVar9;\n      if (pnVar9 != (node234 *)0x0) {\n        pnVar9->parent = pnVar13;\n      }\n      iVar8 = pnVar10->counts[0];\n      pnVar13->elems[0] = pnVar10->elems[0];\n      pnVar9 = pnVar10->kids[0];\n      pnVar13->counts[0] = iVar8;\n      pnVar13->kids[0] = pnVar9;\n      if (pnVar9 != (node234 *)0x0) {\n        pnVar9->parent = pnVar13;\n      }\n      iVar8 = countnode234(pnVar13);\n      ptr->counts[local_30] = iVar8;\n      safefree(ptr_00);\n      pnVar9 = ptr->kids[iVar6 + 1];\n      while (pnVar9 != (node234 *)0x0) {\n        iVar8 = iVar6 + 1;\n        pnVar10 = (node234 *)ptr->counts[iVar8];\n        ptr->kids[iVar6] = pnVar9;\n        ptr->kids[iVar6 + 4] = pnVar10;\n        if (iVar8 == 3) {\n          ptr->elems[2] = (void *)0x0;\n          ptr->kids[3] = (node234 *)0x0;\n          ptr->counts[3] = 0;\n          goto LAB_0003edcd;\n        }\n        ptr->counts[iVar6 + 4] = (int)ptr->elems[iVar8];\n        pnVar9 = ptr->kids[iVar6 + 2];\n        iVar6 = iVar8;\n      }\n      ptr->kids[iVar6] = (node234 *)0x0;\n      ptr->counts[iVar6] = 0;\n      ptr->elems[iVar6] = (void *)0x0;\nLAB_0003edcd:\n      index = iVar12;\n      pnVar9 = pnVar13;\n      if (ptr->elems[0] == (void *)0x0) {\n        *puVar4 = pnVar13;\n        pnVar13->parent = (node234_conflict *)0x0;\n        safefree(ptr);\n      }\n      goto joined_r0x0003e772;\n    }\nLAB_0003eae0:\n    uVar1 = (uint)(pnVar10->elems[2] == (void *)0x0);\n    iVar12 = uVar1 * -4;\n    iVar8 = 2 - uVar1;\n    pnVar9->kids[2] = pnVar9->kids[1];\n    pnVar9->counts[2] = pnVar9->counts[1];\n    pnVar9->elems[1] = pnVar9->elems[0];\n    pnVar9->kids[1] = pnVar9->kids[0];\n    pnVar9->counts[1] = pnVar9->counts[0];\n    pnVar9->elems[0] = ptr->elems[iVar6];\n    pnVar13 = *(node234 **)((int)pnVar10 + iVar12 + 0x10);\n    pnVar9->kids[0] = pnVar13;\n    pnVar9->counts[0] = *(int *)((int)pnVar10 + iVar12 + 0x20);\n    if (pnVar13 != (node234 *)0x0) {\n      pnVar13->parent = pnVar9;\n    }\n    ptr->elems[iVar6] = *(void **)((int)pnVar10 + iVar8 * 4 + 0x24);\n    *(undefined4 *)((int)pnVar10 + iVar12 + 0x10) = 0;\n    *(undefined4 *)((int)pnVar10 + iVar12 + 0x20) = 0;\n    *(undefined4 *)((int)pnVar10 + iVar8 * 4 + 0x24) = 0;\n    iVar12 = countnode234(pnVar9);\n    ptr->counts[local_30] = iVar12;\n    iVar12 = ptr->counts[iVar6];\n    iVar8 = countnode234(n);\n    ptr->counts[iVar6] = iVar8;\n    index = (index + iVar12) - iVar8;\n  }" if (parenthesized_expression "(pnVar9->elems[1] == (void *)0x0)" ( (binary_expression "pnVar9->elems[1] == (void *)0x0" (subscript_expression "pnVar9->elems[1]" (field_expression "pnVar9->elems" identifier -> field_identifier) [ number_literal ]) == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    local_30 = 1;\n    iVar6 = 0;\nLAB_0003eacb:\n    pnVar10 = ptr->kids[iVar6];\n    if (pnVar10->elems[1] == (void *)0x0) {\n      local_28 = local_30 + 1;\n      ppnVar2 = ptr->kids + local_30 + -1;\n      pnVar13 = ppnVar2[2];\n      if (pnVar13 == (node234 *)0x0) {\n        pnVar13 = ppnVar2[1];\n        iVar12 = index + 1 + ptr->counts[iVar6];\n      }\n      else {\n        if (pnVar13->elems[1] != (void *)0x0) {\nLAB_0003e836:\n          iVar12 = pnVar13->counts[0];\n          pnVar9->elems[1] = ptr->elems[local_30];\n          pnVar10 = pnVar13->kids[0];\n          pnVar9->counts[2] = iVar12;\n          pnVar9->kids[2] = pnVar10;\n          if (pnVar10 != (node234 *)0x0) {\n            pnVar10->parent = pnVar9;\n          }\n          ptr->elems[local_30] = pnVar13->elems[0];\n          pnVar13->kids[0] = pnVar13->kids[1];\n          pnVar13->counts[0] = pnVar13->counts[1];\n          if (pnVar13->elems[1] == (void *)0x0) {\n            iVar12 = 1;\n            iVar6 = 0;\n          }\n          else {\n            pnVar10 = pnVar13->kids[2];\n            pnVar13->elems[0] = pnVar13->elems[1];\n            pvVar7 = pnVar13->elems[2];\n            pnVar13->kids[1] = pnVar10;\n            pnVar13->counts[1] = pnVar13->counts[2];\n            if (pvVar7 == (void *)0x0) {\n              iVar12 = 2;\n              iVar6 = 1;\n            }\n            else {\n              pnVar10 = pnVar13->kids[3];\n              pnVar13->elems[1] = pvVar7;\n              iVar12 = 3;\n              pnVar13->kids[2] = pnVar10;\n              pnVar13->counts[2] = pnVar13->counts[3];\n              iVar6 = 2;\n            }\n          }\n          pnVar13->kids[iVar12] = (node234 *)0x0;\n          pnVar13->counts[iVar12] = 0;\n          pnVar13->elems[iVar6] = (void *)0x0;\n          iVar12 = countnode234(pnVar9);\n          ptr->counts[local_30] = iVar12;\n          iVar12 = countnode234(pnVar13);\n          ptr->counts[local_28] = iVar12;\n          pnVar9 = extraout_ECX;\n          goto joined_r0x0003e772;\n        }\n        pnVar10 = *ppnVar2;\n        pnVar13 = ppnVar2[1];\n        iVar6 = local_30 + -1;\n        iVar12 = index + 1 + (int)ppnVar2[4];\n      }\nLAB_0003ed0c:\n      pnVar13->kids[3] = pnVar13->kids[1];\n      pnVar13->counts[3] = pnVar13->counts[1];\n      pnVar13->elems[2] = pnVar13->elems[0];\n      pnVar13->kids[2] = pnVar13->kids[0];\n      pnVar13->counts[2] = pnVar13->counts[0];\n      iVar8 = pnVar10->counts[1];\n      pnVar13->elems[1] = ptr->elems[iVar6];\n      pnVar9 = pnVar10->kids[1];\n      pnVar13->counts[1] = iVar8;\n      pnVar13->kids[1] = pnVar9;\n      if (pnVar9 != (node234 *)0x0) {\n        pnVar9->parent = pnVar13;\n      }\n      iVar8 = pnVar10->counts[0];\n      pnVar13->elems[0] = pnVar10->elems[0];\n      pnVar9 = pnVar10->kids[0];\n      pnVar13->counts[0] = iVar8;\n      pnVar13->kids[0] = pnVar9;\n      if (pnVar9 != (node234 *)0x0) {\n        pnVar9->parent = pnVar13;\n      }\n      iVar8 = countnode234(pnVar13);\n      ptr->counts[local_30] = iVar8;\n      safefree(ptr_00);\n      pnVar9 = ptr->kids[iVar6 + 1];\n      while (pnVar9 != (node234 *)0x0) {\n        iVar8 = iVar6 + 1;\n        pnVar10 = (node234 *)ptr->counts[iVar8];\n        ptr->kids[iVar6] = pnVar9;\n        ptr->kids[iVar6 + 4] = pnVar10;\n        if (iVar8 == 3) {\n          ptr->elems[2] = (void *)0x0;\n          ptr->kids[3] = (node234 *)0x0;\n          ptr->counts[3] = 0;\n          goto LAB_0003edcd;\n        }\n        ptr->counts[iVar6 + 4] = (int)ptr->elems[iVar8];\n        pnVar9 = ptr->kids[iVar6 + 2];\n        iVar6 = iVar8;\n      }\n      ptr->kids[iVar6] = (node234 *)0x0;\n      ptr->counts[iVar6] = 0;\n      ptr->elems[iVar6] = (void *)0x0;\nLAB_0003edcd:\n      index = iVar12;\n      pnVar9 = pnVar13;\n      if (ptr->elems[0] == (void *)0x0) {\n        *puVar4 = pnVar13;\n        pnVar13->parent = (node234_conflict *)0x0;\n        safefree(ptr);\n      }\n      goto joined_r0x0003e772;\n    }\nLAB_0003eae0:\n    uVar1 = (uint)(pnVar10->elems[2] == (void *)0x0);\n    iVar12 = uVar1 * -4;\n    iVar8 = 2 - uVar1;\n    pnVar9->kids[2] = pnVar9->kids[1];\n    pnVar9->counts[2] = pnVar9->counts[1];\n    pnVar9->elems[1] = pnVar9->elems[0];\n    pnVar9->kids[1] = pnVar9->kids[0];\n    pnVar9->counts[1] = pnVar9->counts[0];\n    pnVar9->elems[0] = ptr->elems[iVar6];\n    pnVar13 = *(node234 **)((int)pnVar10 + iVar12 + 0x10);\n    pnVar9->kids[0] = pnVar13;\n    pnVar9->counts[0] = *(int *)((int)pnVar10 + iVar12 + 0x20);\n    if (pnVar13 != (node234 *)0x0) {\n      pnVar13->parent = pnVar9;\n    }\n    ptr->elems[iVar6] = *(void **)((int)pnVar10 + iVar8 * 4 + 0x24);\n    *(undefined4 *)((int)pnVar10 + iVar12 + 0x10) = 0;\n    *(undefined4 *)((int)pnVar10 + iVar12 + 0x20) = 0;\n    *(undefined4 *)((int)pnVar10 + iVar8 * 4 + 0x24) = 0;\n    iVar12 = countnode234(pnVar9);\n    ptr->counts[local_30] = iVar12;\n    iVar12 = ptr->counts[iVar6];\n    iVar8 = countnode234(n);\n    ptr->counts[iVar6] = iVar8;\n    index = (index + iVar12) - iVar8;\n  }" { (expression_statement "local_30 = 1;" (assignment_expression "local_30 = 1" identifier = number_literal) ;) (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) (labeled_statement "LAB_0003eacb:\n    pnVar10 = ptr->kids[iVar6];" statement_identifier : (expression_statement "pnVar10 = ptr->kids[iVar6];" (assignment_expression "pnVar10 = ptr->kids[iVar6]" identifier = (subscript_expression "ptr->kids[iVar6]" (field_expression "ptr->kids" identifier -> field_identifier) [ identifier ])) ;)) (if_statement "if (pnVar10->elems[1] == (void *)0x0) {\n      local_28 = local_30 + 1;\n      ppnVar2 = ptr->kids + local_30 + -1;\n      pnVar13 = ppnVar2[2];\n      if (pnVar13 == (node234 *)0x0) {\n        pnVar13 = ppnVar2[1];\n        iVar12 = index + 1 + ptr->counts[iVar6];\n      }\n      else {\n        if (pnVar13->elems[1] != (void *)0x0) {\nLAB_0003e836:\n          iVar12 = pnVar13->counts[0];\n          pnVar9->elems[1] = ptr->elems[local_30];\n          pnVar10 = pnVar13->kids[0];\n          pnVar9->counts[2] = iVar12;\n          pnVar9->kids[2] = pnVar10;\n          if (pnVar10 != (node234 *)0x0) {\n            pnVar10->parent = pnVar9;\n          }\n          ptr->elems[local_30] = pnVar13->elems[0];\n          pnVar13->kids[0] = pnVar13->kids[1];\n          pnVar13->counts[0] = pnVar13->counts[1];\n          if (pnVar13->elems[1] == (void *)0x0) {\n            iVar12 = 1;\n            iVar6 = 0;\n          }\n          else {\n            pnVar10 = pnVar13->kids[2];\n            pnVar13->elems[0] = pnVar13->elems[1];\n            pvVar7 = pnVar13->elems[2];\n            pnVar13->kids[1] = pnVar10;\n            pnVar13->counts[1] = pnVar13->counts[2];\n            if (pvVar7 == (void *)0x0) {\n              iVar12 = 2;\n              iVar6 = 1;\n            }\n            else {\n              pnVar10 = pnVar13->kids[3];\n              pnVar13->elems[1] = pvVar7;\n              iVar12 = 3;\n              pnVar13->kids[2] = pnVar10;\n              pnVar13->counts[2] = pnVar13->counts[3];\n              iVar6 = 2;\n            }\n          }\n          pnVar13->kids[iVar12] = (node234 *)0x0;\n          pnVar13->counts[iVar12] = 0;\n          pnVar13->elems[iVar6] = (void *)0x0;\n          iVar12 = countnode234(pnVar9);\n          ptr->counts[local_30] = iVar12;\n          iVar12 = countnode234(pnVar13);\n          ptr->counts[local_28] = iVar12;\n          pnVar9 = extraout_ECX;\n          goto joined_r0x0003e772;\n        }\n        pnVar10 = *ppnVar2;\n        pnVar13 = ppnVar2[1];\n        iVar6 = local_30 + -1;\n        iVar12 = index + 1 + (int)ppnVar2[4];\n      }\nLAB_0003ed0c:\n      pnVar13->kids[3] = pnVar13->kids[1];\n      pnVar13->counts[3] = pnVar13->counts[1];\n      pnVar13->elems[2] = pnVar13->elems[0];\n      pnVar13->kids[2] = pnVar13->kids[0];\n      pnVar13->counts[2] = pnVar13->counts[0];\n      iVar8 = pnVar10->counts[1];\n      pnVar13->elems[1] = ptr->elems[iVar6];\n      pnVar9 = pnVar10->kids[1];\n      pnVar13->counts[1] = iVar8;\n      pnVar13->kids[1] = pnVar9;\n      if (pnVar9 != (node234 *)0x0) {\n        pnVar9->parent = pnVar13;\n      }\n      iVar8 = pnVar10->counts[0];\n      pnVar13->elems[0] = pnVar10->elems[0];\n      pnVar9 = pnVar10->kids[0];\n      pnVar13->counts[0] = iVar8;\n      pnVar13->kids[0] = pnVar9;\n      if (pnVar9 != (node234 *)0x0) {\n        pnVar9->parent = pnVar13;\n      }\n      iVar8 = countnode234(pnVar13);\n      ptr->counts[local_30] = iVar8;\n      safefree(ptr_00);\n      pnVar9 = ptr->kids[iVar6 + 1];\n      while (pnVar9 != (node234 *)0x0) {\n        iVar8 = iVar6 + 1;\n        pnVar10 = (node234 *)ptr->counts[iVar8];\n        ptr->kids[iVar6] = pnVar9;\n        ptr->kids[iVar6 + 4] = pnVar10;\n        if (iVar8 == 3) {\n          ptr->elems[2] = (void *)0x0;\n          ptr->kids[3] = (node234 *)0x0;\n          ptr->counts[3] = 0;\n          goto LAB_0003edcd;\n        }\n        ptr->counts[iVar6 + 4] = (int)ptr->elems[iVar8];\n        pnVar9 = ptr->kids[iVar6 + 2];\n        iVar6 = iVar8;\n      }\n      ptr->kids[iVar6] = (node234 *)0x0;\n      ptr->counts[iVar6] = 0;\n      ptr->elems[iVar6] = (void *)0x0;\nLAB_0003edcd:\n      index = iVar12;\n      pnVar9 = pnVar13;\n      if (ptr->elems[0] == (void *)0x0) {\n        *puVar4 = pnVar13;\n        pnVar13->parent = (node234_conflict *)0x0;\n        safefree(ptr);\n      }\n      goto joined_r0x0003e772;\n    }" if (parenthesized_expression "(pnVar10->elems[1] == (void *)0x0)" ( (binary_expression "pnVar10->elems[1] == (void *)0x0" (subscript_expression "pnVar10->elems[1]" (field_expression "pnVar10->elems" identifier -> field_identifier) [ number_literal ]) == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      local_28 = local_30 + 1;\n      ppnVar2 = ptr->kids + local_30 + -1;\n      pnVar13 = ppnVar2[2];\n      if (pnVar13 == (node234 *)0x0) {\n        pnVar13 = ppnVar2[1];\n        iVar12 = index + 1 + ptr->counts[iVar6];\n      }\n      else {\n        if (pnVar13->elems[1] != (void *)0x0) {\nLAB_0003e836:\n          iVar12 = pnVar13->counts[0];\n          pnVar9->elems[1] = ptr->elems[local_30];\n          pnVar10 = pnVar13->kids[0];\n          pnVar9->counts[2] = iVar12;\n          pnVar9->kids[2] = pnVar10;\n          if (pnVar10 != (node234 *)0x0) {\n            pnVar10->parent = pnVar9;\n          }\n          ptr->elems[local_30] = pnVar13->elems[0];\n          pnVar13->kids[0] = pnVar13->kids[1];\n          pnVar13->counts[0] = pnVar13->counts[1];\n          if (pnVar13->elems[1] == (void *)0x0) {\n            iVar12 = 1;\n            iVar6 = 0;\n          }\n          else {\n            pnVar10 = pnVar13->kids[2];\n            pnVar13->elems[0] = pnVar13->elems[1];\n            pvVar7 = pnVar13->elems[2];\n            pnVar13->kids[1] = pnVar10;\n            pnVar13->counts[1] = pnVar13->counts[2];\n            if (pvVar7 == (void *)0x0) {\n              iVar12 = 2;\n              iVar6 = 1;\n            }\n            else {\n              pnVar10 = pnVar13->kids[3];\n              pnVar13->elems[1] = pvVar7;\n              iVar12 = 3;\n              pnVar13->kids[2] = pnVar10;\n              pnVar13->counts[2] = pnVar13->counts[3];\n              iVar6 = 2;\n            }\n          }\n          pnVar13->kids[iVar12] = (node234 *)0x0;\n          pnVar13->counts[iVar12] = 0;\n          pnVar13->elems[iVar6] = (void *)0x0;\n          iVar12 = countnode234(pnVar9);\n          ptr->counts[local_30] = iVar12;\n          iVar12 = countnode234(pnVar13);\n          ptr->counts[local_28] = iVar12;\n          pnVar9 = extraout_ECX;\n          goto joined_r0x0003e772;\n        }\n        pnVar10 = *ppnVar2;\n        pnVar13 = ppnVar2[1];\n        iVar6 = local_30 + -1;\n        iVar12 = index + 1 + (int)ppnVar2[4];\n      }\nLAB_0003ed0c:\n      pnVar13->kids[3] = pnVar13->kids[1];\n      pnVar13->counts[3] = pnVar13->counts[1];\n      pnVar13->elems[2] = pnVar13->elems[0];\n      pnVar13->kids[2] = pnVar13->kids[0];\n      pnVar13->counts[2] = pnVar13->counts[0];\n      iVar8 = pnVar10->counts[1];\n      pnVar13->elems[1] = ptr->elems[iVar6];\n      pnVar9 = pnVar10->kids[1];\n      pnVar13->counts[1] = iVar8;\n      pnVar13->kids[1] = pnVar9;\n      if (pnVar9 != (node234 *)0x0) {\n        pnVar9->parent = pnVar13;\n      }\n      iVar8 = pnVar10->counts[0];\n      pnVar13->elems[0] = pnVar10->elems[0];\n      pnVar9 = pnVar10->kids[0];\n      pnVar13->counts[0] = iVar8;\n      pnVar13->kids[0] = pnVar9;\n      if (pnVar9 != (node234 *)0x0) {\n        pnVar9->parent = pnVar13;\n      }\n      iVar8 = countnode234(pnVar13);\n      ptr->counts[local_30] = iVar8;\n      safefree(ptr_00);\n      pnVar9 = ptr->kids[iVar6 + 1];\n      while (pnVar9 != (node234 *)0x0) {\n        iVar8 = iVar6 + 1;\n        pnVar10 = (node234 *)ptr->counts[iVar8];\n        ptr->kids[iVar6] = pnVar9;\n        ptr->kids[iVar6 + 4] = pnVar10;\n        if (iVar8 == 3) {\n          ptr->elems[2] = (void *)0x0;\n          ptr->kids[3] = (node234 *)0x0;\n          ptr->counts[3] = 0;\n          goto LAB_0003edcd;\n        }\n        ptr->counts[iVar6 + 4] = (int)ptr->elems[iVar8];\n        pnVar9 = ptr->kids[iVar6 + 2];\n        iVar6 = iVar8;\n      }\n      ptr->kids[iVar6] = (node234 *)0x0;\n      ptr->counts[iVar6] = 0;\n      ptr->elems[iVar6] = (void *)0x0;\nLAB_0003edcd:\n      index = iVar12;\n      pnVar9 = pnVar13;\n      if (ptr->elems[0] == (void *)0x0) {\n        *puVar4 = pnVar13;\n        pnVar13->parent = (node234_conflict *)0x0;\n        safefree(ptr);\n      }\n      goto joined_r0x0003e772;\n    }" { (expression_statement "local_28 = local_30 + 1;" (assignment_expression "local_28 = local_30 + 1" identifier = (binary_expression "local_30 + 1" identifier + number_literal)) ;) (expression_statement "ppnVar2 = ptr->kids + local_30 + -1;" (assignment_expression "ppnVar2 = ptr->kids + local_30 + -1" identifier = (binary_expression "ptr->kids + local_30 + -1" (binary_expression "ptr->kids + local_30" (field_expression "ptr->kids" identifier -> field_identifier) + identifier) + number_literal)) ;) (expression_statement "pnVar13 = ppnVar2[2];" (assignment_expression "pnVar13 = ppnVar2[2]" identifier = (subscript_expression "ppnVar2[2]" identifier [ number_literal ])) ;) (if_statement "if (pnVar13 == (node234 *)0x0) {\n        pnVar13 = ppnVar2[1];\n        iVar12 = index + 1 + ptr->counts[iVar6];\n      }\n      else {\n        if (pnVar13->elems[1] != (void *)0x0) {\nLAB_0003e836:\n          iVar12 = pnVar13->counts[0];\n          pnVar9->elems[1] = ptr->elems[local_30];\n          pnVar10 = pnVar13->kids[0];\n          pnVar9->counts[2] = iVar12;\n          pnVar9->kids[2] = pnVar10;\n          if (pnVar10 != (node234 *)0x0) {\n            pnVar10->parent = pnVar9;\n          }\n          ptr->elems[local_30] = pnVar13->elems[0];\n          pnVar13->kids[0] = pnVar13->kids[1];\n          pnVar13->counts[0] = pnVar13->counts[1];\n          if (pnVar13->elems[1] == (void *)0x0) {\n            iVar12 = 1;\n            iVar6 = 0;\n          }\n          else {\n            pnVar10 = pnVar13->kids[2];\n            pnVar13->elems[0] = pnVar13->elems[1];\n            pvVar7 = pnVar13->elems[2];\n            pnVar13->kids[1] = pnVar10;\n            pnVar13->counts[1] = pnVar13->counts[2];\n            if (pvVar7 == (void *)0x0) {\n              iVar12 = 2;\n              iVar6 = 1;\n            }\n            else {\n              pnVar10 = pnVar13->kids[3];\n              pnVar13->elems[1] = pvVar7;\n              iVar12 = 3;\n              pnVar13->kids[2] = pnVar10;\n              pnVar13->counts[2] = pnVar13->counts[3];\n              iVar6 = 2;\n            }\n          }\n          pnVar13->kids[iVar12] = (node234 *)0x0;\n          pnVar13->counts[iVar12] = 0;\n          pnVar13->elems[iVar6] = (void *)0x0;\n          iVar12 = countnode234(pnVar9);\n          ptr->counts[local_30] = iVar12;\n          iVar12 = countnode234(pnVar13);\n          ptr->counts[local_28] = iVar12;\n          pnVar9 = extraout_ECX;\n          goto joined_r0x0003e772;\n        }\n        pnVar10 = *ppnVar2;\n        pnVar13 = ppnVar2[1];\n        iVar6 = local_30 + -1;\n        iVar12 = index + 1 + (int)ppnVar2[4];\n      }" if (parenthesized_expression "(pnVar13 == (node234 *)0x0)" ( (binary_expression "pnVar13 == (node234 *)0x0" identifier == (cast_expression "(node234 *)0x0" ( (type_descriptor "node234 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        pnVar13 = ppnVar2[1];\n        iVar12 = index + 1 + ptr->counts[iVar6];\n      }" { (expression_statement "pnVar13 = ppnVar2[1];" (assignment_expression "pnVar13 = ppnVar2[1]" identifier = (subscript_expression "ppnVar2[1]" identifier [ number_literal ])) ;) (expression_statement "iVar12 = index + 1 + ptr->counts[iVar6];" (assignment_expression "iVar12 = index + 1 + ptr->counts[iVar6]" identifier = (binary_expression "index + 1 + ptr->counts[iVar6]" (binary_expression "index + 1" identifier + number_literal) + (subscript_expression "ptr->counts[iVar6]" (field_expression "ptr->counts" identifier -> field_identifier) [ identifier ]))) ;) }) (else_clause "else {\n        if (pnVar13->elems[1] != (void *)0x0) {\nLAB_0003e836:\n          iVar12 = pnVar13->counts[0];\n          pnVar9->elems[1] = ptr->elems[local_30];\n          pnVar10 = pnVar13->kids[0];\n          pnVar9->counts[2] = iVar12;\n          pnVar9->kids[2] = pnVar10;\n          if (pnVar10 != (node234 *)0x0) {\n            pnVar10->parent = pnVar9;\n          }\n          ptr->elems[local_30] = pnVar13->elems[0];\n          pnVar13->kids[0] = pnVar13->kids[1];\n          pnVar13->counts[0] = pnVar13->counts[1];\n          if (pnVar13->elems[1] == (void *)0x0) {\n            iVar12 = 1;\n            iVar6 = 0;\n          }\n          else {\n            pnVar10 = pnVar13->kids[2];\n            pnVar13->elems[0] = pnVar13->elems[1];\n            pvVar7 = pnVar13->elems[2];\n            pnVar13->kids[1] = pnVar10;\n            pnVar13->counts[1] = pnVar13->counts[2];\n            if (pvVar7 == (void *)0x0) {\n              iVar12 = 2;\n              iVar6 = 1;\n            }\n            else {\n              pnVar10 = pnVar13->kids[3];\n              pnVar13->elems[1] = pvVar7;\n              iVar12 = 3;\n              pnVar13->kids[2] = pnVar10;\n              pnVar13->counts[2] = pnVar13->counts[3];\n              iVar6 = 2;\n            }\n          }\n          pnVar13->kids[iVar12] = (node234 *)0x0;\n          pnVar13->counts[iVar12] = 0;\n          pnVar13->elems[iVar6] = (void *)0x0;\n          iVar12 = countnode234(pnVar9);\n          ptr->counts[local_30] = iVar12;\n          iVar12 = countnode234(pnVar13);\n          ptr->counts[local_28] = iVar12;\n          pnVar9 = extraout_ECX;\n          goto joined_r0x0003e772;\n        }\n        pnVar10 = *ppnVar2;\n        pnVar13 = ppnVar2[1];\n        iVar6 = local_30 + -1;\n        iVar12 = index + 1 + (int)ppnVar2[4];\n      }" else (compound_statement "{\n        if (pnVar13->elems[1] != (void *)0x0) {\nLAB_0003e836:\n          iVar12 = pnVar13->counts[0];\n          pnVar9->elems[1] = ptr->elems[local_30];\n          pnVar10 = pnVar13->kids[0];\n          pnVar9->counts[2] = iVar12;\n          pnVar9->kids[2] = pnVar10;\n          if (pnVar10 != (node234 *)0x0) {\n            pnVar10->parent = pnVar9;\n          }\n          ptr->elems[local_30] = pnVar13->elems[0];\n          pnVar13->kids[0] = pnVar13->kids[1];\n          pnVar13->counts[0] = pnVar13->counts[1];\n          if (pnVar13->elems[1] == (void *)0x0) {\n            iVar12 = 1;\n            iVar6 = 0;\n          }\n          else {\n            pnVar10 = pnVar13->kids[2];\n            pnVar13->elems[0] = pnVar13->elems[1];\n            pvVar7 = pnVar13->elems[2];\n            pnVar13->kids[1] = pnVar10;\n            pnVar13->counts[1] = pnVar13->counts[2];\n            if (pvVar7 == (void *)0x0) {\n              iVar12 = 2;\n              iVar6 = 1;\n            }\n            else {\n              pnVar10 = pnVar13->kids[3];\n              pnVar13->elems[1] = pvVar7;\n              iVar12 = 3;\n              pnVar13->kids[2] = pnVar10;\n              pnVar13->counts[2] = pnVar13->counts[3];\n              iVar6 = 2;\n            }\n          }\n          pnVar13->kids[iVar12] = (node234 *)0x0;\n          pnVar13->counts[iVar12] = 0;\n          pnVar13->elems[iVar6] = (void *)0x0;\n          iVar12 = countnode234(pnVar9);\n          ptr->counts[local_30] = iVar12;\n          iVar12 = countnode234(pnVar13);\n          ptr->counts[local_28] = iVar12;\n          pnVar9 = extraout_ECX;\n          goto joined_r0x0003e772;\n        }\n        pnVar10 = *ppnVar2;\n        pnVar13 = ppnVar2[1];\n        iVar6 = local_30 + -1;\n        iVar12 = index + 1 + (int)ppnVar2[4];\n      }" { (if_statement "if (pnVar13->elems[1] != (void *)0x0) {\nLAB_0003e836:\n          iVar12 = pnVar13->counts[0];\n          pnVar9->elems[1] = ptr->elems[local_30];\n          pnVar10 = pnVar13->kids[0];\n          pnVar9->counts[2] = iVar12;\n          pnVar9->kids[2] = pnVar10;\n          if (pnVar10 != (node234 *)0x0) {\n            pnVar10->parent = pnVar9;\n          }\n          ptr->elems[local_30] = pnVar13->elems[0];\n          pnVar13->kids[0] = pnVar13->kids[1];\n          pnVar13->counts[0] = pnVar13->counts[1];\n          if (pnVar13->elems[1] == (void *)0x0) {\n            iVar12 = 1;\n            iVar6 = 0;\n          }\n          else {\n            pnVar10 = pnVar13->kids[2];\n            pnVar13->elems[0] = pnVar13->elems[1];\n            pvVar7 = pnVar13->elems[2];\n            pnVar13->kids[1] = pnVar10;\n            pnVar13->counts[1] = pnVar13->counts[2];\n            if (pvVar7 == (void *)0x0) {\n              iVar12 = 2;\n              iVar6 = 1;\n            }\n            else {\n              pnVar10 = pnVar13->kids[3];\n              pnVar13->elems[1] = pvVar7;\n              iVar12 = 3;\n              pnVar13->kids[2] = pnVar10;\n              pnVar13->counts[2] = pnVar13->counts[3];\n              iVar6 = 2;\n            }\n          }\n          pnVar13->kids[iVar12] = (node234 *)0x0;\n          pnVar13->counts[iVar12] = 0;\n          pnVar13->elems[iVar6] = (void *)0x0;\n          iVar12 = countnode234(pnVar9);\n          ptr->counts[local_30] = iVar12;\n          iVar12 = countnode234(pnVar13);\n          ptr->counts[local_28] = iVar12;\n          pnVar9 = extraout_ECX;\n          goto joined_r0x0003e772;\n        }" if (parenthesized_expression "(pnVar13->elems[1] != (void *)0x0)" ( (binary_expression "pnVar13->elems[1] != (void *)0x0" (subscript_expression "pnVar13->elems[1]" (field_expression "pnVar13->elems" identifier -> field_identifier) [ number_literal ]) != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_0003e836:\n          iVar12 = pnVar13->counts[0];\n          pnVar9->elems[1] = ptr->elems[local_30];\n          pnVar10 = pnVar13->kids[0];\n          pnVar9->counts[2] = iVar12;\n          pnVar9->kids[2] = pnVar10;\n          if (pnVar10 != (node234 *)0x0) {\n            pnVar10->parent = pnVar9;\n          }\n          ptr->elems[local_30] = pnVar13->elems[0];\n          pnVar13->kids[0] = pnVar13->kids[1];\n          pnVar13->counts[0] = pnVar13->counts[1];\n          if (pnVar13->elems[1] == (void *)0x0) {\n            iVar12 = 1;\n            iVar6 = 0;\n          }\n          else {\n            pnVar10 = pnVar13->kids[2];\n            pnVar13->elems[0] = pnVar13->elems[1];\n            pvVar7 = pnVar13->elems[2];\n            pnVar13->kids[1] = pnVar10;\n            pnVar13->counts[1] = pnVar13->counts[2];\n            if (pvVar7 == (void *)0x0) {\n              iVar12 = 2;\n              iVar6 = 1;\n            }\n            else {\n              pnVar10 = pnVar13->kids[3];\n              pnVar13->elems[1] = pvVar7;\n              iVar12 = 3;\n              pnVar13->kids[2] = pnVar10;\n              pnVar13->counts[2] = pnVar13->counts[3];\n              iVar6 = 2;\n            }\n          }\n          pnVar13->kids[iVar12] = (node234 *)0x0;\n          pnVar13->counts[iVar12] = 0;\n          pnVar13->elems[iVar6] = (void *)0x0;\n          iVar12 = countnode234(pnVar9);\n          ptr->counts[local_30] = iVar12;\n          iVar12 = countnode234(pnVar13);\n          ptr->counts[local_28] = iVar12;\n          pnVar9 = extraout_ECX;\n          goto joined_r0x0003e772;\n        }" { (labeled_statement "LAB_0003e836:\n          iVar12 = pnVar13->counts[0];" statement_identifier : (expression_statement "iVar12 = pnVar13->counts[0];" (assignment_expression "iVar12 = pnVar13->counts[0]" identifier = (subscript_expression "pnVar13->counts[0]" (field_expression "pnVar13->counts" identifier -> field_identifier) [ number_literal ])) ;)) (expression_statement "pnVar9->elems[1] = ptr->elems[local_30];" (assignment_expression "pnVar9->elems[1] = ptr->elems[local_30]" (subscript_expression "pnVar9->elems[1]" (field_expression "pnVar9->elems" identifier -> field_identifier) [ number_literal ]) = (subscript_expression "ptr->elems[local_30]" (field_expression "ptr->elems" identifier -> field_identifier) [ identifier ])) ;) (expression_statement "pnVar10 = pnVar13->kids[0];" (assignment_expression "pnVar10 = pnVar13->kids[0]" identifier = (subscript_expression "pnVar13->kids[0]" (field_expression "pnVar13->kids" identifier -> field_identifier) [ number_literal ])) ;) (expression_statement "pnVar9->counts[2] = iVar12;" (assignment_expression "pnVar9->counts[2] = iVar12" (subscript_expression "pnVar9->counts[2]" (field_expression "pnVar9->counts" identifier -> field_identifier) [ number_literal ]) = identifier) ;) (expression_statement "pnVar9->kids[2] = pnVar10;" (assignment_expression "pnVar9->kids[2] = pnVar10" (subscript_expression "pnVar9->kids[2]" (field_expression "pnVar9->kids" identifier -> field_identifier) [ number_literal ]) = identifier) ;) (if_statement "if (pnVar10 != (node234 *)0x0) {\n            pnVar10->parent = pnVar9;\n          }" if (parenthesized_expression "(pnVar10 != (node234 *)0x0)" ( (binary_expression "pnVar10 != (node234 *)0x0" identifier != (cast_expression "(node234 *)0x0" ( (type_descriptor "node234 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            pnVar10->parent = pnVar9;\n          }" { (expression_statement "pnVar10->parent = pnVar9;" (assignment_expression "pnVar10->parent = pnVar9" (field_expression "pnVar10->parent" identifier -> field_identifier) = identifier) ;) })) (expression_statement "ptr->elems[local_30] = pnVar13->elems[0];" (assignment_expression "ptr->elems[local_30] = pnVar13->elems[0]" (subscript_expression "ptr->elems[local_30]" (field_expression "ptr->elems" identifier -> field_identifier) [ identifier ]) = (subscript_expression "pnVar13->elems[0]" (field_expression "pnVar13->elems" identifier -> field_identifier) [ number_literal ])) ;) (expression_statement "pnVar13->kids[0] = pnVar13->kids[1];" (assignment_expression "pnVar13->kids[0] = pnVar13->kids[1]" (subscript_expression "pnVar13->kids[0]" (field_expression "pnVar13->kids" identifier -> field_identifier) [ number_literal ]) = (subscript_expression "pnVar13->kids[1]" (field_expression "pnVar13->kids" identifier -> field_identifier) [ number_literal ])) ;) (expression_statement "pnVar13->counts[0] = pnVar13->counts[1];" (assignment_expression "pnVar13->counts[0] = pnVar13->counts[1]" (subscript_expression "pnVar13->counts[0]" (field_expression "pnVar13->counts" identifier -> field_identifier) [ number_literal ]) = (subscript_expression "pnVar13->counts[1]" (field_expression "pnVar13->counts" identifier -> field_identifier) [ number_literal ])) ;) (if_statement "if (pnVar13->elems[1] == (void *)0x0) {\n            iVar12 = 1;\n            iVar6 = 0;\n          }\n          else {\n            pnVar10 = pnVar13->kids[2];\n            pnVar13->elems[0] = pnVar13->elems[1];\n            pvVar7 = pnVar13->elems[2];\n            pnVar13->kids[1] = pnVar10;\n            pnVar13->counts[1] = pnVar13->counts[2];\n            if (pvVar7 == (void *)0x0) {\n              iVar12 = 2;\n              iVar6 = 1;\n            }\n            else {\n              pnVar10 = pnVar13->kids[3];\n              pnVar13->elems[1] = pvVar7;\n              iVar12 = 3;\n              pnVar13->kids[2] = pnVar10;\n              pnVar13->counts[2] = pnVar13->counts[3];\n              iVar6 = 2;\n            }\n          }" if (parenthesized_expression "(pnVar13->elems[1] == (void *)0x0)" ( (binary_expression "pnVar13->elems[1] == (void *)0x0" (subscript_expression "pnVar13->elems[1]" (field_expression "pnVar13->elems" identifier -> field_identifier) [ number_literal ]) == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            iVar12 = 1;\n            iVar6 = 0;\n          }" { (expression_statement "iVar12 = 1;" (assignment_expression "iVar12 = 1" identifier = number_literal) ;) (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) }) (else_clause "else {\n            pnVar10 = pnVar13->kids[2];\n            pnVar13->elems[0] = pnVar13->elems[1];\n            pvVar7 = pnVar13->elems[2];\n            pnVar13->kids[1] = pnVar10;\n            pnVar13->counts[1] = pnVar13->counts[2];\n            if (pvVar7 == (void *)0x0) {\n              iVar12 = 2;\n              iVar6 = 1;\n            }\n            else {\n              pnVar10 = pnVar13->kids[3];\n              pnVar13->elems[1] = pvVar7;\n              iVar12 = 3;\n              pnVar13->kids[2] = pnVar10;\n              pnVar13->counts[2] = pnVar13->counts[3];\n              iVar6 = 2;\n            }\n          }" else (compound_statement "{\n            pnVar10 = pnVar13->kids[2];\n            pnVar13->elems[0] = pnVar13->elems[1];\n            pvVar7 = pnVar13->elems[2];\n            pnVar13->kids[1] = pnVar10;\n            pnVar13->counts[1] = pnVar13->counts[2];\n            if (pvVar7 == (void *)0x0) {\n              iVar12 = 2;\n              iVar6 = 1;\n            }\n            else {\n              pnVar10 = pnVar13->kids[3];\n              pnVar13->elems[1] = pvVar7;\n              iVar12 = 3;\n              pnVar13->kids[2] = pnVar10;\n              pnVar13->counts[2] = pnVar13->counts[3];\n              iVar6 = 2;\n            }\n          }" { (expression_statement "pnVar10 = pnVar13->kids[2];" (assignment_expression "pnVar10 = pnVar13->kids[2]" identifier = (subscript_expression "pnVar13->kids[2]" (field_expression "pnVar13->kids" identifier -> field_identifier) [ number_literal ])) ;) (expression_statement "pnVar13->elems[0] = pnVar13->elems[1];" (assignment_expression "pnVar13->elems[0] = pnVar13->elems[1]" (subscript_expression "pnVar13->elems[0]" (field_expression "pnVar13->elems" identifier -> field_identifier) [ number_literal ]) = (subscript_expression "pnVar13->elems[1]" (field_expression "pnVar13->elems" identifier -> field_identifier) [ number_literal ])) ;) (expression_statement "pvVar7 = pnVar13->elems[2];" (assignment_expression "pvVar7 = pnVar13->elems[2]" identifier = (subscript_expression "pnVar13->elems[2]" (field_expression "pnVar13->elems" identifier -> field_identifier) [ number_literal ])) ;) (expression_statement "pnVar13->kids[1] = pnVar10;" (assignment_expression "pnVar13->kids[1] = pnVar10" (subscript_expression "pnVar13->kids[1]" (field_expression "pnVar13->kids" identifier -> field_identifier) [ number_literal ]) = identifier) ;) (expression_statement "pnVar13->counts[1] = pnVar13->counts[2];" (assignment_expression "pnVar13->counts[1] = pnVar13->counts[2]" (subscript_expression "pnVar13->counts[1]" (field_expression "pnVar13->counts" identifier -> field_identifier) [ number_literal ]) = (subscript_expression "pnVar13->counts[2]" (field_expression "pnVar13->counts" identifier -> field_identifier) [ number_literal ])) ;) (if_statement "if (pvVar7 == (void *)0x0) {\n              iVar12 = 2;\n              iVar6 = 1;\n            }\n            else {\n              pnVar10 = pnVar13->kids[3];\n              pnVar13->elems[1] = pvVar7;\n              iVar12 = 3;\n              pnVar13->kids[2] = pnVar10;\n              pnVar13->counts[2] = pnVar13->counts[3];\n              iVar6 = 2;\n            }" if (parenthesized_expression "(pvVar7 == (void *)0x0)" ( (binary_expression "pvVar7 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              iVar12 = 2;\n              iVar6 = 1;\n            }" { (expression_statement "iVar12 = 2;" (assignment_expression "iVar12 = 2" identifier = number_literal) ;) (expression_statement "iVar6 = 1;" (assignment_expression "iVar6 = 1" identifier = number_literal) ;) }) (else_clause "else {\n              pnVar10 = pnVar13->kids[3];\n              pnVar13->elems[1] = pvVar7;\n              iVar12 = 3;\n              pnVar13->kids[2] = pnVar10;\n              pnVar13->counts[2] = pnVar13->counts[3];\n              iVar6 = 2;\n            }" else (compound_statement "{\n              pnVar10 = pnVar13->kids[3];\n              pnVar13->elems[1] = pvVar7;\n              iVar12 = 3;\n              pnVar13->kids[2] = pnVar10;\n              pnVar13->counts[2] = pnVar13->counts[3];\n              iVar6 = 2;\n            }" { (expression_statement "pnVar10 = pnVar13->kids[3];" (assignment_expression "pnVar10 = pnVar13->kids[3]" identifier = (subscript_expression "pnVar13->kids[3]" (field_expression "pnVar13->kids" identifier -> field_identifier) [ number_literal ])) ;) (expression_statement "pnVar13->elems[1] = pvVar7;" (assignment_expression "pnVar13->elems[1] = pvVar7" (subscript_expression "pnVar13->elems[1]" (field_expression "pnVar13->elems" identifier -> field_identifier) [ number_literal ]) = identifier) ;) (expression_statement "iVar12 = 3;" (assignment_expression "iVar12 = 3" identifier = number_literal) ;) (expression_statement "pnVar13->kids[2] = pnVar10;" (assignment_expression "pnVar13->kids[2] = pnVar10" (subscript_expression "pnVar13->kids[2]" (field_expression "pnVar13->kids" identifier -> field_identifier) [ number_literal ]) = identifier) ;) (expression_statement "pnVar13->counts[2] = pnVar13->counts[3];" (assignment_expression "pnVar13->counts[2] = pnVar13->counts[3]" (subscript_expression "pnVar13->counts[2]" (field_expression "pnVar13->counts" identifier -> field_identifier) [ number_literal ]) = (subscript_expression "pnVar13->counts[3]" (field_expression "pnVar13->counts" identifier -> field_identifier) [ number_literal ])) ;) (expression_statement "iVar6 = 2;" (assignment_expression "iVar6 = 2" identifier = number_literal) ;) }))) }))) (expression_statement "pnVar13->kids[iVar12] = (node234 *)0x0;" (assignment_expression "pnVar13->kids[iVar12] = (node234 *)0x0" (subscript_expression "pnVar13->kids[iVar12]" (field_expression "pnVar13->kids" identifier -> field_identifier) [ identifier ]) = (cast_expression "(node234 *)0x0" ( (type_descriptor "node234 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pnVar13->counts[iVar12] = 0;" (assignment_expression "pnVar13->counts[iVar12] = 0" (subscript_expression "pnVar13->counts[iVar12]" (field_expression "pnVar13->counts" identifier -> field_identifier) [ identifier ]) = number_literal) ;) (expression_statement "pnVar13->elems[iVar6] = (void *)0x0;" (assignment_expression "pnVar13->elems[iVar6] = (void *)0x0" (subscript_expression "pnVar13->elems[iVar6]" (field_expression "pnVar13->elems" identifier -> field_identifier) [ identifier ]) = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar12 = countnode234(pnVar9);" (assignment_expression "iVar12 = countnode234(pnVar9)" identifier = (call_expression "countnode234(pnVar9)" identifier (argument_list "(pnVar9)" ( identifier )))) ;) (expression_statement "ptr->counts[local_30] = iVar12;" (assignment_expression "ptr->counts[local_30] = iVar12" (subscript_expression "ptr->counts[local_30]" (field_expression "ptr->counts" identifier -> field_identifier) [ identifier ]) = identifier) ;) (expression_statement "iVar12 = countnode234(pnVar13);" (assignment_expression "iVar12 = countnode234(pnVar13)" identifier = (call_expression "countnode234(pnVar13)" identifier (argument_list "(pnVar13)" ( identifier )))) ;) (expression_statement "ptr->counts[local_28] = iVar12;" (assignment_expression "ptr->counts[local_28] = iVar12" (subscript_expression "ptr->counts[local_28]" (field_expression "ptr->counts" identifier -> field_identifier) [ identifier ]) = identifier) ;) (expression_statement "pnVar9 = extraout_ECX;" (assignment_expression "pnVar9 = extraout_ECX" identifier = identifier) ;) (goto_statement "goto joined_r0x0003e772;" goto statement_identifier ;) })) (expression_statement "pnVar10 = *ppnVar2;" (assignment_expression "pnVar10 = *ppnVar2" identifier = (pointer_expression "*ppnVar2" * identifier)) ;) (expression_statement "pnVar13 = ppnVar2[1];" (assignment_expression "pnVar13 = ppnVar2[1]" identifier = (subscript_expression "ppnVar2[1]" identifier [ number_literal ])) ;) (expression_statement "iVar6 = local_30 + -1;" (assignment_expression "iVar6 = local_30 + -1" identifier = (binary_expression "local_30 + -1" identifier + number_literal)) ;) (expression_statement "iVar12 = index + 1 + (int)ppnVar2[4];" (assignment_expression "iVar12 = index + 1 + (int)ppnVar2[4]" identifier = (binary_expression "index + 1 + (int)ppnVar2[4]" (binary_expression "index + 1" identifier + number_literal) + (cast_expression "(int)ppnVar2[4]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "ppnVar2[4]" identifier [ number_literal ])))) ;) }))) (labeled_statement "LAB_0003ed0c:\n      pnVar13->kids[3] = pnVar13->kids[1];" statement_identifier : (expression_statement "pnVar13->kids[3] = pnVar13->kids[1];" (assignment_expression "pnVar13->kids[3] = pnVar13->kids[1]" (subscript_expression "pnVar13->kids[3]" (field_expression "pnVar13->kids" identifier -> field_identifier) [ number_literal ]) = (subscript_expression "pnVar13->kids[1]" (field_expression "pnVar13->kids" identifier -> field_identifier) [ number_literal ])) ;)) (expression_statement "pnVar13->counts[3] = pnVar13->counts[1];" (assignment_expression "pnVar13->counts[3] = pnVar13->counts[1]" (subscript_expression "pnVar13->counts[3]" (field_expression "pnVar13->counts" identifier -> field_identifier) [ number_literal ]) = (subscript_expression "pnVar13->counts[1]" (field_expression "pnVar13->counts" identifier -> field_identifier) [ number_literal ])) ;) (expression_statement "pnVar13->elems[2] = pnVar13->elems[0];" (assignment_expression "pnVar13->elems[2] = pnVar13->elems[0]" (subscript_expression "pnVar13->elems[2]" (field_expression "pnVar13->elems" identifier -> field_identifier) [ number_literal ]) = (subscript_expression "pnVar13->elems[0]" (field_expression "pnVar13->elems" identifier -> field_identifier) [ number_literal ])) ;) (expression_statement "pnVar13->kids[2] = pnVar13->kids[0];" (assignment_expression "pnVar13->kids[2] = pnVar13->kids[0]" (subscript_expression "pnVar13->kids[2]" (field_expression "pnVar13->kids" identifier -> field_identifier) [ number_literal ]) = (subscript_expression "pnVar13->kids[0]" (field_expression "pnVar13->kids" identifier -> field_identifier) [ number_literal ])) ;) (expression_statement "pnVar13->counts[2] = pnVar13->counts[0];" (assignment_expression "pnVar13->counts[2] = pnVar13->counts[0]" (subscript_expression "pnVar13->counts[2]" (field_expression "pnVar13->counts" identifier -> field_identifier) [ number_literal ]) = (subscript_expression "pnVar13->counts[0]" (field_expression "pnVar13->counts" identifier -> field_identifier) [ number_literal ])) ;) (expression_statement "iVar8 = pnVar10->counts[1];" (assignment_expression "iVar8 = pnVar10->counts[1]" identifier = (subscript_expression "pnVar10->counts[1]" (field_expression "pnVar10->counts" identifier -> field_identifier) [ number_literal ])) ;) (expression_statement "pnVar13->elems[1] = ptr->elems[iVar6];" (assignment_expression "pnVar13->elems[1] = ptr->elems[iVar6]" (subscript_expression "pnVar13->elems[1]" (field_expression "pnVar13->elems" identifier -> field_identifier) [ number_literal ]) = (subscript_expression "ptr->elems[iVar6]" (field_expression "ptr->elems" identifier -> field_identifier) [ identifier ])) ;) (expression_statement "pnVar9 = pnVar10->kids[1];" (assignment_expression "pnVar9 = pnVar10->kids[1]" identifier = (subscript_expression "pnVar10->kids[1]" (field_expression "pnVar10->kids" identifier -> field_identifier) [ number_literal ])) ;) (expression_statement "pnVar13->counts[1] = iVar8;" (assignment_expression "pnVar13->counts[1] = iVar8" (subscript_expression "pnVar13->counts[1]" (field_expression "pnVar13->counts" identifier -> field_identifier) [ number_literal ]) = identifier) ;) (expression_statement "pnVar13->kids[1] = pnVar9;" (assignment_expression "pnVar13->kids[1] = pnVar9" (subscript_expression "pnVar13->kids[1]" (field_expression "pnVar13->kids" identifier -> field_identifier) [ number_literal ]) = identifier) ;) (if_statement "if (pnVar9 != (node234 *)0x0) {\n        pnVar9->parent = pnVar13;\n      }" if (parenthesized_expression "(pnVar9 != (node234 *)0x0)" ( (binary_expression "pnVar9 != (node234 *)0x0" identifier != (cast_expression "(node234 *)0x0" ( (type_descriptor "node234 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        pnVar9->parent = pnVar13;\n      }" { (expression_statement "pnVar9->parent = pnVar13;" (assignment_expression "pnVar9->parent = pnVar13" (field_expression "pnVar9->parent" identifier -> field_identifier) = identifier) ;) })) (expression_statement "iVar8 = pnVar10->counts[0];" (assignment_expression "iVar8 = pnVar10->counts[0]" identifier = (subscript_expression "pnVar10->counts[0]" (field_expression "pnVar10->counts" identifier -> field_identifier) [ number_literal ])) ;) (expression_statement "pnVar13->elems[0] = pnVar10->elems[0];" (assignment_expression "pnVar13->elems[0] = pnVar10->elems[0]" (subscript_expression "pnVar13->elems[0]" (field_expression "pnVar13->elems" identifier -> field_identifier) [ number_literal ]) = (subscript_expression "pnVar10->elems[0]" (field_expression "pnVar10->elems" identifier -> field_identifier) [ number_literal ])) ;) (expression_statement "pnVar9 = pnVar10->kids[0];" (assignment_expression "pnVar9 = pnVar10->kids[0]" identifier = (subscript_expression "pnVar10->kids[0]" (field_expression "pnVar10->kids" identifier -> field_identifier) [ number_literal ])) ;) (expression_statement "pnVar13->counts[0] = iVar8;" (assignment_expression "pnVar13->counts[0] = iVar8" (subscript_expression "pnVar13->counts[0]" (field_expression "pnVar13->counts" identifier -> field_identifier) [ number_literal ]) = identifier) ;) (expression_statement "pnVar13->kids[0] = pnVar9;" (assignment_expression "pnVar13->kids[0] = pnVar9" (subscript_expression "pnVar13->kids[0]" (field_expression "pnVar13->kids" identifier -> field_identifier) [ number_literal ]) = identifier) ;) (if_statement "if (pnVar9 != (node234 *)0x0) {\n        pnVar9->parent = pnVar13;\n      }" if (parenthesized_expression "(pnVar9 != (node234 *)0x0)" ( (binary_expression "pnVar9 != (node234 *)0x0" identifier != (cast_expression "(node234 *)0x0" ( (type_descriptor "node234 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        pnVar9->parent = pnVar13;\n      }" { (expression_statement "pnVar9->parent = pnVar13;" (assignment_expression "pnVar9->parent = pnVar13" (field_expression "pnVar9->parent" identifier -> field_identifier) = identifier) ;) })) (expression_statement "iVar8 = countnode234(pnVar13);" (assignment_expression "iVar8 = countnode234(pnVar13)" identifier = (call_expression "countnode234(pnVar13)" identifier (argument_list "(pnVar13)" ( identifier )))) ;) (expression_statement "ptr->counts[local_30] = iVar8;" (assignment_expression "ptr->counts[local_30] = iVar8" (subscript_expression "ptr->counts[local_30]" (field_expression "ptr->counts" identifier -> field_identifier) [ identifier ]) = identifier) ;) (expression_statement "safefree(ptr_00);" (call_expression "safefree(ptr_00)" identifier (argument_list "(ptr_00)" ( identifier ))) ;) (expression_statement "pnVar9 = ptr->kids[iVar6 + 1];" (assignment_expression "pnVar9 = ptr->kids[iVar6 + 1]" identifier = (subscript_expression "ptr->kids[iVar6 + 1]" (field_expression "ptr->kids" identifier -> field_identifier) [ (binary_expression "iVar6 + 1" identifier + number_literal) ])) ;) (while_statement "while (pnVar9 != (node234 *)0x0) {\n        iVar8 = iVar6 + 1;\n        pnVar10 = (node234 *)ptr->counts[iVar8];\n        ptr->kids[iVar6] = pnVar9;\n        ptr->kids[iVar6 + 4] = pnVar10;\n        if (iVar8 == 3) {\n          ptr->elems[2] = (void *)0x0;\n          ptr->kids[3] = (node234 *)0x0;\n          ptr->counts[3] = 0;\n          goto LAB_0003edcd;\n        }\n        ptr->counts[iVar6 + 4] = (int)ptr->elems[iVar8];\n        pnVar9 = ptr->kids[iVar6 + 2];\n        iVar6 = iVar8;\n      }" while (parenthesized_expression "(pnVar9 != (node234 *)0x0)" ( (binary_expression "pnVar9 != (node234 *)0x0" identifier != (cast_expression "(node234 *)0x0" ( (type_descriptor "node234 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        iVar8 = iVar6 + 1;\n        pnVar10 = (node234 *)ptr->counts[iVar8];\n        ptr->kids[iVar6] = pnVar9;\n        ptr->kids[iVar6 + 4] = pnVar10;\n        if (iVar8 == 3) {\n          ptr->elems[2] = (void *)0x0;\n          ptr->kids[3] = (node234 *)0x0;\n          ptr->counts[3] = 0;\n          goto LAB_0003edcd;\n        }\n        ptr->counts[iVar6 + 4] = (int)ptr->elems[iVar8];\n        pnVar9 = ptr->kids[iVar6 + 2];\n        iVar6 = iVar8;\n      }" { (expression_statement "iVar8 = iVar6 + 1;" (assignment_expression "iVar8 = iVar6 + 1" identifier = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) (expression_statement "pnVar10 = (node234 *)ptr->counts[iVar8];" (assignment_expression "pnVar10 = (node234 *)ptr->counts[iVar8]" identifier = (cast_expression "(node234 *)ptr->counts[iVar8]" ( (type_descriptor "node234 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "ptr->counts[iVar8]" (field_expression "ptr->counts" identifier -> field_identifier) [ identifier ]))) ;) (expression_statement "ptr->kids[iVar6] = pnVar9;" (assignment_expression "ptr->kids[iVar6] = pnVar9" (subscript_expression "ptr->kids[iVar6]" (field_expression "ptr->kids" identifier -> field_identifier) [ identifier ]) = identifier) ;) (expression_statement "ptr->kids[iVar6 + 4] = pnVar10;" (assignment_expression "ptr->kids[iVar6 + 4] = pnVar10" (subscript_expression "ptr->kids[iVar6 + 4]" (field_expression "ptr->kids" identifier -> field_identifier) [ (binary_expression "iVar6 + 4" identifier + number_literal) ]) = identifier) ;) (if_statement "if (iVar8 == 3) {\n          ptr->elems[2] = (void *)0x0;\n          ptr->kids[3] = (node234 *)0x0;\n          ptr->counts[3] = 0;\n          goto LAB_0003edcd;\n        }" if (parenthesized_expression "(iVar8 == 3)" ( (binary_expression "iVar8 == 3" identifier == number_literal) )) (compound_statement "{\n          ptr->elems[2] = (void *)0x0;\n          ptr->kids[3] = (node234 *)0x0;\n          ptr->counts[3] = 0;\n          goto LAB_0003edcd;\n        }" { (expression_statement "ptr->elems[2] = (void *)0x0;" (assignment_expression "ptr->elems[2] = (void *)0x0" (subscript_expression "ptr->elems[2]" (field_expression "ptr->elems" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "ptr->kids[3] = (node234 *)0x0;" (assignment_expression "ptr->kids[3] = (node234 *)0x0" (subscript_expression "ptr->kids[3]" (field_expression "ptr->kids" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(node234 *)0x0" ( (type_descriptor "node234 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "ptr->counts[3] = 0;" (assignment_expression "ptr->counts[3] = 0" (subscript_expression "ptr->counts[3]" (field_expression "ptr->counts" identifier -> field_identifier) [ number_literal ]) = number_literal) ;) (goto_statement "goto LAB_0003edcd;" goto statement_identifier ;) })) (expression_statement "ptr->counts[iVar6 + 4] = (int)ptr->elems[iVar8];" (assignment_expression "ptr->counts[iVar6 + 4] = (int)ptr->elems[iVar8]" (subscript_expression "ptr->counts[iVar6 + 4]" (field_expression "ptr->counts" identifier -> field_identifier) [ (binary_expression "iVar6 + 4" identifier + number_literal) ]) = (cast_expression "(int)ptr->elems[iVar8]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "ptr->elems[iVar8]" (field_expression "ptr->elems" identifier -> field_identifier) [ identifier ]))) ;) (expression_statement "pnVar9 = ptr->kids[iVar6 + 2];" (assignment_expression "pnVar9 = ptr->kids[iVar6 + 2]" identifier = (subscript_expression "ptr->kids[iVar6 + 2]" (field_expression "ptr->kids" identifier -> field_identifier) [ (binary_expression "iVar6 + 2" identifier + number_literal) ])) ;) (expression_statement "iVar6 = iVar8;" (assignment_expression "iVar6 = iVar8" identifier = identifier) ;) })) (expression_statement "ptr->kids[iVar6] = (node234 *)0x0;" (assignment_expression "ptr->kids[iVar6] = (node234 *)0x0" (subscript_expression "ptr->kids[iVar6]" (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[iVar6] = 0;" (assignment_expression "ptr->counts[iVar6] = 0" (subscript_expression "ptr->counts[iVar6]" (field_expression "ptr->counts" identifier -> field_identifier) [ identifier ]) = number_literal) ;) (expression_statement "ptr->elems[iVar6] = (void *)0x0;" (assignment_expression "ptr->elems[iVar6] = (void *)0x0" (subscript_expression "ptr->elems[iVar6]" (field_expression "ptr->elems" identifier -> field_identifier) [ identifier ]) = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_0003edcd:\n      index = iVar12;" statement_identifier : (expression_statement "index = iVar12;" (assignment_expression "index = iVar12" identifier = identifier) ;)) (expression_statement "pnVar9 = pnVar13;" (assignment_expression "pnVar9 = pnVar13" identifier = identifier) ;) (if_statement "if (ptr->elems[0] == (void *)0x0) {\n        *puVar4 = pnVar13;\n        pnVar13->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        *puVar4 = pnVar13;\n        pnVar13->parent = (node234_conflict *)0x0;\n        safefree(ptr);\n      }" { (expression_statement "*puVar4 = pnVar13;" (assignment_expression "*puVar4 = pnVar13" (pointer_expression "*puVar4" * identifier) = identifier) ;) (expression_statement "pnVar13->parent = (node234_conflict *)0x0;" (assignment_expression "pnVar13->parent = (node234_conflict *)0x0" (field_expression "pnVar13->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 joined_r0x0003e772;" goto statement_identifier ;) })) (labeled_statement "LAB_0003eae0:\n    uVar1 = (uint)(pnVar10->elems[2] == (void *)0x0);" statement_identifier : (expression_statement "uVar1 = (uint)(pnVar10->elems[2] == (void *)0x0);" (assignment_expression "uVar1 = (uint)(pnVar10->elems[2] == (void *)0x0)" identifier = (call_expression "(uint)(pnVar10->elems[2] == (void *)0x0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pnVar10->elems[2] == (void *)0x0)" ( (binary_expression "pnVar10->elems[2] == (void *)0x0" (subscript_expression "pnVar10->elems[2]" (field_expression "pnVar10->elems" identifier -> field_identifier) [ number_literal ]) == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )))) ;)) (expression_statement "iVar12 = uVar1 * -4;" (assignment_expression "iVar12 = uVar1 * -4" identifier = (binary_expression "uVar1 * -4" identifier * number_literal)) ;) (expression_statement "iVar8 = 2 - uVar1;" (assignment_expression "iVar8 = 2 - uVar1" identifier = (binary_expression "2 - uVar1" number_literal - identifier)) ;) (expression_statement "pnVar9->kids[2] = pnVar9->kids[1];" (assignment_expression "pnVar9->kids[2] = pnVar9->kids[1]" (subscript_expression "pnVar9->kids[2]" (field_expression "pnVar9->kids" identifier -> field_identifier) [ number_literal ]) = (subscript_expression "pnVar9->kids[1]" (field_expression "pnVar9->kids" identifier -> field_identifier) [ number_literal ])) ;) (expression_statement "pnVar9->counts[2] = pnVar9->counts[1];" (assignment_expression "pnVar9->counts[2] = pnVar9->counts[1]" (subscript_expression "pnVar9->counts[2]" (field_expression "pnVar9->counts" identifier -> field_identifier) [ number_literal ]) = (subscript_expression "pnVar9->counts[1]" (field_expression "pnVar9->counts" identifier -> field_identifier) [ number_literal ])) ;) (expression_statement "pnVar9->elems[1] = pnVar9->elems[0];" (assignment_expression "pnVar9->elems[1] = pnVar9->elems[0]" (subscript_expression "pnVar9->elems[1]" (field_expression "pnVar9->elems" identifier -> field_identifier) [ number_literal ]) = (subscript_expression "pnVar9->elems[0]" (field_expression "pnVar9->elems" identifier -> field_identifier) [ number_literal ])) ;) (expression_statement "pnVar9->kids[1] = pnVar9->kids[0];" (assignment_expression "pnVar9->kids[1] = pnVar9->kids[0]" (subscript_expression "pnVar9->kids[1]" (field_expression "pnVar9->kids" identifier -> field_identifier) [ number_literal ]) = (subscript_expression "pnVar9->kids[0]" (field_expression "pnVar9->kids" identifier -> field_identifier) [ number_literal ])) ;) (expression_statement "pnVar9->counts[1] = pnVar9->counts[0];" (assignment_expression "pnVar9->counts[1] = pnVar9->counts[0]" (subscript_expression "pnVar9->counts[1]" (field_expression "pnVar9->counts" identifier -> field_identifier) [ number_literal ]) = (subscript_expression "pnVar9->counts[0]" (field_expression "pnVar9->counts" identifier -> field_identifier) [ number_literal ])) ;) (expression_statement "pnVar9->elems[0] = ptr->elems[iVar6];" (assignment_expression "pnVar9->elems[0] = ptr->elems[iVar6]" (subscript_expression "pnVar9->elems[0]" (field_expression "pnVar9->elems" identifier -> field_identifier) [ number_literal ]) = (subscript_expression "ptr->elems[iVar6]" (field_expression "ptr->elems" identifier -> field_identifier) [ identifier ])) ;) (expression_statement "pnVar13 = *(node234 **)((int)pnVar10 + iVar12 + 0x10);" (assignment_expression "pnVar13 = *(node234 **)((int)pnVar10 + iVar12 + 0x10)" identifier = (pointer_expression "*(node234 **)((int)pnVar10 + iVar12 + 0x10)" * (cast_expression "(node234 **)((int)pnVar10 + iVar12 + 0x10)" ( (type_descriptor "node234 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)pnVar10 + iVar12 + 0x10)" ( (binary_expression "(int)pnVar10 + iVar12 + 0x10" (binary_expression "(int)pnVar10 + iVar12" (cast_expression "(int)pnVar10" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) ))))) ;) (expression_statement "pnVar9->kids[0] = pnVar13;" (assignment_expression "pnVar9->kids[0] = pnVar13" (subscript_expression "pnVar9->kids[0]" (field_expression "pnVar9->kids" identifier -> field_identifier) [ number_literal ]) = identifier) ;) (expression_statement "pnVar9->counts[0] = *(int *)((int)pnVar10 + iVar12 + 0x20);" (assignment_expression "pnVar9->counts[0] = *(int *)((int)pnVar10 + iVar12 + 0x20)" (subscript_expression "pnVar9->counts[0]" (field_expression "pnVar9->counts" identifier -> field_identifier) [ number_literal ]) = (pointer_expression "*(int *)((int)pnVar10 + iVar12 + 0x20)" * (cast_expression "(int *)((int)pnVar10 + iVar12 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pnVar10 + iVar12 + 0x20)" ( (binary_expression "(int)pnVar10 + iVar12 + 0x20" (binary_expression "(int)pnVar10 + iVar12" (cast_expression "(int)pnVar10" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) ))))) ;) (if_statement "if (pnVar13 != (node234 *)0x0) {\n      pnVar13->parent = pnVar9;\n    }" if (parenthesized_expression "(pnVar13 != (node234 *)0x0)" ( (binary_expression "pnVar13 != (node234 *)0x0" identifier != (cast_expression "(node234 *)0x0" ( (type_descriptor "node234 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      pnVar13->parent = pnVar9;\n    }" { (expression_statement "pnVar13->parent = pnVar9;" (assignment_expression "pnVar13->parent = pnVar9" (field_expression "pnVar13->parent" identifier -> field_identifier) = identifier) ;) })) (expression_statement "ptr->elems[iVar6] = *(void **)((int)pnVar10 + iVar8 * 4 + 0x24);" (assignment_expression "ptr->elems[iVar6] = *(void **)((int)pnVar10 + iVar8 * 4 + 0x24)" (subscript_expression "ptr->elems[iVar6]" (field_expression "ptr->elems" identifier -> field_identifier) [ identifier ]) = (pointer_expression "*(void **)((int)pnVar10 + iVar8 * 4 + 0x24)" * (cast_expression "(void **)((int)pnVar10 + iVar8 * 4 + 0x24)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)pnVar10 + iVar8 * 4 + 0x24)" ( (binary_expression "(int)pnVar10 + iVar8 * 4 + 0x24" (binary_expression "(int)pnVar10 + iVar8 * 4" (cast_expression "(int)pnVar10" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "iVar8 * 4" identifier * number_literal)) + number_literal) ))))) ;) (expression_statement "*(undefined4 *)((int)pnVar10 + iVar12 + 0x10) = 0;" (assignment_expression "*(undefined4 *)((int)pnVar10 + iVar12 + 0x10) = 0" (pointer_expression "*(undefined4 *)((int)pnVar10 + iVar12 + 0x10)" * (cast_expression "(undefined4 *)((int)pnVar10 + iVar12 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pnVar10 + iVar12 + 0x10)" ( (binary_expression "(int)pnVar10 + iVar12 + 0x10" (binary_expression "(int)pnVar10 + iVar12" (cast_expression "(int)pnVar10" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)((int)pnVar10 + iVar12 + 0x20) = 0;" (assignment_expression "*(undefined4 *)((int)pnVar10 + iVar12 + 0x20) = 0" (pointer_expression "*(undefined4 *)((int)pnVar10 + iVar12 + 0x20)" * (cast_expression "(undefined4 *)((int)pnVar10 + iVar12 + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pnVar10 + iVar12 + 0x20)" ( (binary_expression "(int)pnVar10 + iVar12 + 0x20" (binary_expression "(int)pnVar10 + iVar12" (cast_expression "(int)pnVar10" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)((int)pnVar10 + iVar8 * 4 + 0x24) = 0;" (assignment_expression "*(undefined4 *)((int)pnVar10 + iVar8 * 4 + 0x24) = 0" (pointer_expression "*(undefined4 *)((int)pnVar10 + iVar8 * 4 + 0x24)" * (cast_expression "(undefined4 *)((int)pnVar10 + iVar8 * 4 + 0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pnVar10 + iVar8 * 4 + 0x24)" ( (binary_expression "(int)pnVar10 + iVar8 * 4 + 0x24" (binary_expression "(int)pnVar10 + iVar8 * 4" (cast_expression "(int)pnVar10" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "iVar8 * 4" identifier * number_literal)) + number_literal) )))) = number_literal) ;) (expression_statement "iVar12 = countnode234(pnVar9);" (assignment_expression "iVar12 = countnode234(pnVar9)" identifier = (call_expression "countnode234(pnVar9)" identifier (argument_list "(pnVar9)" ( identifier )))) ;) (expression_statement "ptr->counts[local_30] = iVar12;" (assignment_expression "ptr->counts[local_30] = iVar12" (subscript_expression "ptr->counts[local_30]" (field_expression "ptr->counts" identifier -> field_identifier) [ identifier ]) = identifier) ;) (expression_statement "iVar12 = ptr->counts[iVar6];" (assignment_expression "iVar12 = ptr->counts[iVar6]" identifier = (subscript_expression "ptr->counts[iVar6]" (field_expression "ptr->counts" identifier -> field_identifier) [ identifier ])) ;) (expression_statement "iVar8 = countnode234(n);" (assignment_expression "iVar8 = countnode234(n)" identifier = (call_expression "countnode234(n)" identifier (argument_list "(n)" ( identifier )))) ;) (expression_statement "ptr->counts[iVar6] = iVar8;" (assignment_expression "ptr->counts[iVar6] = iVar8" (subscript_expression "ptr->counts[iVar6]" (field_expression "ptr->counts" identifier -> field_identifier) [ identifier ]) = identifier) ;) (expression_statement "index = (index + iVar12) - iVar8;" (assignment_expression "index = (index + iVar12) - iVar8" identifier = (binary_expression "(index + iVar12) - iVar8" (parenthesized_expression "(index + iVar12)" ( (binary_expression "index + iVar12" identifier + identifier) )) - identifier)) ;) })) (goto_statement "goto joined_r0x0003e772;" goto statement_identifier ;) })))
(translation_unit "int __regparm3 FUN_0003e740(undefined4 param_1,int param_2)\n\n{\n  uint uVar1;\n  undefined4 *puVar2;\n  undefined4 *puVar3;\n  undefined4 *puVar4;\n  undefined4 *puVar5;\n  int iVar6;\n  undefined4 uVar7;\n  int iVar8;\n  undefined4 *extraout_ECX;\n  undefined4 extraout_ECX_00;\n  undefined4 *puVar9;\n  int iVar10;\n  undefined4 *puVar11;\n  int iVar12;\n  int local_38;\n  int local_34;\n  int local_30;\n  int local_28;\n  \n  puVar3 = (undefined4 *)FUN_0002abcc();\n  local_38 = -1;\n  local_34 = 0;\n  puVar5 = (undefined4 *)*puVar3;\njoined_r0x0003e772:\n  while( true ) {\n    puVar2 = puVar5;\n    iVar12 = param_2;\n    if (puVar2 == (undefined4 *)0x0) {\n      if (local_34 == 0) {\n        local_34 = *(int *)(local_38 * 4 + 0x24);\n      }\n      if (local_38 == -1) {\n        return 0;\n      }\n      goto LAB_0003e7aa;\n    }\n    if ((int)puVar2[5] <= iVar12) break;\n    puVar4 = (undefined4 *)puVar2[1];\n    param_2 = iVar12;\n    puVar5 = puVar4;\n    if (puVar4[10] == 0) {\n      puVar9 = (undefined4 *)puVar2[2];\n      if (puVar9 != (undefined4 *)0x0) {\n        local_30 = 0;\n        local_28 = 1;\n        if (puVar9[10] == 0) goto LAB_0003ed02;\n        goto LAB_0003e836;\n      }\nLAB_0003ed02:\n      local_30 = 1;\n      iVar10 = 0;\n      goto LAB_0003ed0c;\n    }\n  }\n  param_2 = iVar12 - (puVar2[5] + 1);\n  if (-1 < param_2) {\n    if (param_2 < (int)puVar2[6]) goto LAB_0003eab0;\n    iVar12 = param_2 - (puVar2[6] + 1);\n    if (iVar12 < 0) {\n      local_38 = 1;\n      if (local_34 == 0) {\n        local_34 = puVar2[10];\n      }\nLAB_0003e7aa:\n      puVar5 = (undefined4 *)*puVar2;\n      iVar12 = puVar2[1];\n      goto joined_r0x0003e7b1;\n    }\n    if (iVar12 < (int)puVar2[7]) {\n      puVar5 = (undefined4 *)puVar2[3];\n      param_2 = iVar12;\n      if (puVar5[10] == 0) {\n        iVar10 = 1;\n        local_30 = 2;\n        goto LAB_0003eacb;\n      }\n    }\n    else {\n      param_2 = iVar12 - (puVar2[7] + 1);\n      if (param_2 < 0) {\n        local_38 = 2;\n        if (local_34 == 0) {\n          local_34 = puVar2[0xb];\n        }\n        goto LAB_0003e7aa;\n      }\n      puVar9 = (undefined4 *)puVar2[4];\n      puVar5 = puVar9;\n      if (puVar9[10] == 0) {\n        puVar4 = (undefined4 *)puVar2[3];\n        if (puVar4[10] == 0) {\n          iVar10 = 2;\n          local_30 = 3;\n          goto LAB_0003ed0c;\n        }\n        local_30 = 3;\n        iVar10 = 2;\n        goto LAB_0003eae0;\n      }\n    }\n    goto joined_r0x0003e772;\n  }\n  local_38 = 0;\n  if (local_34 != 0) goto LAB_0003e7aa;\n  local_34 = puVar2[9];\n  puVar5 = (undefined4 *)*puVar2;\n  iVar12 = puVar2[1];\njoined_r0x0003e7b1:\n  if (puVar5 == (undefined4 *)0x0) {\n    if (puVar2[10] == 0) {\n      if (iVar12 == 0) {\n        FUN_0001a110(puVar2);\n        *puVar3 = 0;\n        return local_34;\n      }\n    }\n    else if (iVar12 == 0) {\n      puVar5 = (undefined4 *)0x0;\nLAB_0003e9d5:\n      if (local_38 == 2) {\nLAB_0003ea09:\n        local_38 = 2;\n      }\n      else {\n        iVar10 = puVar2[local_38 + 10];\n        iVar12 = local_38 + 1;\n        if (iVar10 != 0) {\n          do {\n            puVar2[iVar12 + 8] = iVar10;\n            if (iVar12 == 2) goto LAB_0003ea09;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);\n          local_38 = 1;\n        }\n      }\n      puVar2[local_38 + 9] = 0;\n      while (puVar3 = puVar5, puVar3 != (undefined4 *)0x0) {\n        iVar12 = 0;\n        if (((undefined4 *)puVar3[1] != puVar2) && (iVar12 = 1, (undefined4 *)puVar3[2] != puVar2))\n        {\n          iVar12 = ((undefined4 *)puVar3[3] != puVar2) + 2;\n        }\n        puVar3[iVar12 + 5] = puVar3[iVar12 + 5] + -1;\n        puVar2 = puVar3;\n        puVar5 = (undefined4 *)*puVar3;\n      }\n      return local_34;\n    }\n  }\n  else if ((iVar12 == 0) && (puVar2[10] != 0)) goto LAB_0003e9d5;\n  puVar5 = (undefined4 *)puVar2[local_38 + 1];\n  puVar4 = puVar5;\n  if (puVar5[10] == 0) {\n    puVar4 = (undefined4 *)puVar2[local_38 + 2];\n    iVar12 = local_38 + 1;\n    puVar11 = (undefined4 *)puVar4[1];\n    puVar9 = puVar4;\n    if (puVar4[10] == 0) {\n      uVar7 = puVar2[local_38 + 9];\n      puVar5[3] = puVar11;\n      puVar5[10] = uVar7;\n      puVar5[7] = puVar4[5];\n      if (puVar11 != (undefined4 *)0x0) {\n        *puVar11 = puVar5;\n      }\n      uVar7 = puVar4[6];\n      puVar5[0xb] = puVar4[9];\n      puVar11 = (undefined4 *)puVar4[2];\n      puVar5[8] = uVar7;\n      puVar5[4] = puVar11;\n      if (puVar11 != (undefined4 *)0x0) {\n        *puVar11 = puVar5;\n      }\n      FUN_0001a110(puVar4);\n      uVar7 = FUN_0003e010();\n      puVar2[local_38 + 5] = uVar7;\n      if (local_38 == 2) {\nLAB_0003ec29:\n        iVar12 = 3;\n        iVar6 = 2;\n      }\n      else {\n        iVar10 = puVar2[local_38 + 10];\n        iVar6 = local_38;\n        if (iVar10 != 0) {\n          do {\n            puVar2[iVar12 + 8] = iVar10;\n            puVar2[iVar12 + 1] = puVar2[iVar12 + 2];\n            puVar2[iVar12 + 5] = puVar2[iVar12 + 6];\n            if (iVar12 == 2) goto LAB_0003ec29;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);\n          iVar6 = 1;\n        }\n      }\n      puVar2[iVar6 + 9] = 0;\n      puVar2[iVar12 + 1] = 0;\n      puVar2[iVar12 + 5] = 0;\n      if (puVar2[9] == 0) {\n        *puVar3 = puVar5;\n        *puVar5 = 0;\n        FUN_0001a110(puVar2);\n      }\n      param_2 = puVar5[6] + puVar5[5] + 1;\n    }\n    else {\n      while (puVar5 = puVar11, puVar5 != (undefined4 *)0x0) {\n        puVar9 = puVar5;\n        puVar11 = (undefined4 *)puVar5[1];\n      }\n      puVar2[local_38 + 9] = puVar9[9];\n      param_2 = 0;\n      puVar5 = puVar4;\n    }\n  }\n  else {\n    while (puVar11 = (undefined4 *)puVar4[1], puVar11 != (undefined4 *)0x0) {\n      while ((puVar9 = (undefined4 *)puVar4[4], (undefined4 *)puVar4[4] != (undefined4 *)0x0 ||\n             (puVar9 = (undefined4 *)puVar4[3], (undefined4 *)puVar4[3] != (undefined4 *)0x0))) {\n        puVar4 = puVar9;\n        puVar11 = (undefined4 *)puVar4[1];\n        if (puVar11 == (undefined4 *)0x0) goto LAB_0003e958;\n      }\n      puVar9 = puVar4 + 2;\n      puVar4 = (undefined4 *)*puVar9;\n      if ((undefined4 *)*puVar9 == (undefined4 *)0x0) {\n        puVar4 = puVar11;\n      }\n    }\nLAB_0003e958:\n    iVar12 = puVar4[0xb];\n    if ((iVar12 == 0) && (iVar12 = puVar4[10], iVar12 == 0)) {\n      iVar12 = puVar4[9];\n    }\n    puVar2[local_38 + 9] = iVar12;\n    param_2 = puVar2[local_38 + 5] + -1;\n  }\n  goto joined_r0x0003e772;\nLAB_0003eab0:\n  puVar5 = (undefined4 *)puVar2[2];\n  if (puVar5[10] == 0) {\n    local_30 = 1;\n    iVar10 = 0;\nLAB_0003eacb:\n    puVar4 = (undefined4 *)puVar2[iVar10 + 1];\n    if (puVar4[10] == 0) {\n      local_28 = local_30 + 1;\n      puVar11 = puVar2 + local_30;\n      puVar9 = (undefined4 *)puVar11[2];\n      if (puVar9 == (undefined4 *)0x0) {\n        puVar9 = (undefined4 *)puVar11[1];\n        iVar12 = param_2 + 1 + puVar2[iVar10 + 5];\n      }\n      else {\n        if (puVar9[10] != 0) {\nLAB_0003e836:\n          uVar7 = puVar9[5];\n          puVar5[10] = puVar2[local_30 + 9];\n          puVar4 = (undefined4 *)puVar9[1];\n          puVar5[7] = uVar7;\n          puVar5[3] = puVar4;\n          if (puVar4 != (undefined4 *)0x0) {\n            *puVar4 = puVar5;\n          }\n          puVar2[local_30 + 9] = puVar9[9];\n          puVar9[1] = puVar9[2];\n          puVar9[5] = puVar9[6];\n          if (puVar9[10] == 0) {\n            iVar12 = 1;\n            iVar10 = 0;\n          }\n          else {\n            puVar9[9] = puVar9[10];\n            puVar9[2] = puVar9[3];\n            puVar9[6] = puVar9[7];\n            if (puVar9[0xb] == 0) {\n              iVar12 = 2;\n              iVar10 = 1;\n            }\n            else {\n              puVar9[10] = puVar9[0xb];\n              iVar12 = 3;\n              puVar9[3] = puVar9[4];\n              puVar9[7] = puVar9[8];\n              iVar10 = 2;\n            }\n          }\n          puVar9[iVar12 + 1] = 0;\n          puVar9[iVar12 + 5] = 0;\n          puVar9[iVar10 + 9] = 0;\n          uVar7 = FUN_0003e010();\n          puVar2[local_30 + 5] = uVar7;\n          uVar7 = FUN_0003e010();\n          puVar2[local_28 + 5] = uVar7;\n          puVar5 = extraout_ECX;\n          goto joined_r0x0003e772;\n        }\n        puVar4 = (undefined4 *)*puVar11;\n        puVar9 = (undefined4 *)puVar11[1];\n        iVar10 = local_30 + -1;\n        iVar12 = param_2 + 1 + puVar11[4];\n      }\nLAB_0003ed0c:\n      puVar9[4] = puVar9[2];\n      puVar9[8] = puVar9[6];\n      puVar9[0xb] = puVar9[9];\n      puVar9[3] = puVar9[1];\n      puVar9[7] = puVar9[5];\n      uVar7 = puVar4[6];\n      puVar9[10] = puVar2[iVar10 + 9];\n      puVar5 = (undefined4 *)puVar4[2];\n      puVar9[6] = uVar7;\n      puVar9[2] = puVar5;\n      if (puVar5 != (undefined4 *)0x0) {\n        *puVar5 = puVar9;\n      }\n      uVar7 = puVar4[5];\n      puVar9[9] = puVar4[9];\n      puVar5 = (undefined4 *)puVar4[1];\n      puVar9[5] = uVar7;\n      puVar9[1] = puVar5;\n      if (puVar5 != (undefined4 *)0x0) {\n        *puVar5 = puVar9;\n      }\n      uVar7 = FUN_0003e010();\n      puVar2[local_30 + 5] = uVar7;\n      FUN_0001a110(extraout_ECX_00);\n      iVar6 = puVar2[iVar10 + 2];\n      while (iVar6 != 0) {\n        iVar8 = iVar10 + 1;\n        puVar2[iVar8] = iVar6;\n        puVar2[iVar10 + 5] = puVar2[iVar10 + 6];\n        if (iVar8 == 3) {\n          puVar2[0xb] = 0;\n          puVar2[4] = 0;\n          puVar2[8] = 0;\n          goto LAB_0003edcd;\n        }\n        puVar2[iVar10 + 9] = puVar2[iVar10 + 10];\n        iVar6 = puVar2[iVar10 + 3];\n        iVar10 = iVar8;\n      }\n      puVar2[iVar10 + 1] = 0;\n      puVar2[iVar10 + 5] = 0;\n      puVar2[iVar10 + 9] = 0;\nLAB_0003edcd:\n      param_2 = iVar12;\n      puVar5 = puVar9;\n      if (puVar2[9] == 0) {\n        *puVar3 = puVar9;\n        *puVar9 = 0;\n        FUN_0001a110(puVar2);\n      }\n      goto joined_r0x0003e772;\n    }\nLAB_0003eae0:\n    uVar1 = (uint)(puVar4[0xb] == 0);\n    puVar5[3] = puVar5[2];\n    puVar5[7] = puVar5[6];\n    puVar5[10] = puVar5[9];\n    puVar5[2] = puVar5[1];\n    puVar5[6] = puVar5[5];\n    puVar5[9] = puVar2[iVar10 + 9];\n    puVar11 = (undefined4 *)puVar4[4 - uVar1];\n    puVar5[1] = puVar11;\n    puVar5[5] = puVar4[8 - uVar1];\n    if (puVar11 != (undefined4 *)0x0) {\n      *puVar11 = puVar5;\n    }\n    puVar2[iVar10 + 9] = puVar4[-uVar1 + 0xb];\n    puVar4[4 - uVar1] = 0;\n    puVar4[8 - uVar1] = 0;\n    puVar4[-uVar1 + 0xb] = 0;\n    uVar7 = FUN_0003e010();\n    puVar2[local_30 + 5] = uVar7;\n    iVar12 = puVar2[iVar10 + 5];\n    iVar6 = FUN_0003e010();\n    puVar2[iVar10 + 5] = iVar6;\n    param_2 = (param_2 + iVar12) - iVar6;\n  }\n  goto joined_r0x0003e772;\n}\n\n" (function_definition "int __regparm3 FUN_0003e740(undefined4 param_1,int param_2)\n\n{\n  uint uVar1;\n  undefined4 *puVar2;\n  undefined4 *puVar3;\n  undefined4 *puVar4;\n  undefined4 *puVar5;\n  int iVar6;\n  undefined4 uVar7;\n  int iVar8;\n  undefined4 *extraout_ECX;\n  undefined4 extraout_ECX_00;\n  undefined4 *puVar9;\n  int iVar10;\n  undefined4 *puVar11;\n  int iVar12;\n  int local_38;\n  int local_34;\n  int local_30;\n  int local_28;\n  \n  puVar3 = (undefined4 *)FUN_0002abcc();\n  local_38 = -1;\n  local_34 = 0;\n  puVar5 = (undefined4 *)*puVar3;\njoined_r0x0003e772:\n  while( true ) {\n    puVar2 = puVar5;\n    iVar12 = param_2;\n    if (puVar2 == (undefined4 *)0x0) {\n      if (local_34 == 0) {\n        local_34 = *(int *)(local_38 * 4 + 0x24);\n      }\n      if (local_38 == -1) {\n        return 0;\n      }\n      goto LAB_0003e7aa;\n    }\n    if ((int)puVar2[5] <= iVar12) break;\n    puVar4 = (undefined4 *)puVar2[1];\n    param_2 = iVar12;\n    puVar5 = puVar4;\n    if (puVar4[10] == 0) {\n      puVar9 = (undefined4 *)puVar2[2];\n      if (puVar9 != (undefined4 *)0x0) {\n        local_30 = 0;\n        local_28 = 1;\n        if (puVar9[10] == 0) goto LAB_0003ed02;\n        goto LAB_0003e836;\n      }\nLAB_0003ed02:\n      local_30 = 1;\n      iVar10 = 0;\n      goto LAB_0003ed0c;\n    }\n  }\n  param_2 = iVar12 - (puVar2[5] + 1);\n  if (-1 < param_2) {\n    if (param_2 < (int)puVar2[6]) goto LAB_0003eab0;\n    iVar12 = param_2 - (puVar2[6] + 1);\n    if (iVar12 < 0) {\n      local_38 = 1;\n      if (local_34 == 0) {\n        local_34 = puVar2[10];\n      }\nLAB_0003e7aa:\n      puVar5 = (undefined4 *)*puVar2;\n      iVar12 = puVar2[1];\n      goto joined_r0x0003e7b1;\n    }\n    if (iVar12 < (int)puVar2[7]) {\n      puVar5 = (undefined4 *)puVar2[3];\n      param_2 = iVar12;\n      if (puVar5[10] == 0) {\n        iVar10 = 1;\n        local_30 = 2;\n        goto LAB_0003eacb;\n      }\n    }\n    else {\n      param_2 = iVar12 - (puVar2[7] + 1);\n      if (param_2 < 0) {\n        local_38 = 2;\n        if (local_34 == 0) {\n          local_34 = puVar2[0xb];\n        }\n        goto LAB_0003e7aa;\n      }\n      puVar9 = (undefined4 *)puVar2[4];\n      puVar5 = puVar9;\n      if (puVar9[10] == 0) {\n        puVar4 = (undefined4 *)puVar2[3];\n        if (puVar4[10] == 0) {\n          iVar10 = 2;\n          local_30 = 3;\n          goto LAB_0003ed0c;\n        }\n        local_30 = 3;\n        iVar10 = 2;\n        goto LAB_0003eae0;\n      }\n    }\n    goto joined_r0x0003e772;\n  }\n  local_38 = 0;\n  if (local_34 != 0) goto LAB_0003e7aa;\n  local_34 = puVar2[9];\n  puVar5 = (undefined4 *)*puVar2;\n  iVar12 = puVar2[1];\njoined_r0x0003e7b1:\n  if (puVar5 == (undefined4 *)0x0) {\n    if (puVar2[10] == 0) {\n      if (iVar12 == 0) {\n        FUN_0001a110(puVar2);\n        *puVar3 = 0;\n        return local_34;\n      }\n    }\n    else if (iVar12 == 0) {\n      puVar5 = (undefined4 *)0x0;\nLAB_0003e9d5:\n      if (local_38 == 2) {\nLAB_0003ea09:\n        local_38 = 2;\n      }\n      else {\n        iVar10 = puVar2[local_38 + 10];\n        iVar12 = local_38 + 1;\n        if (iVar10 != 0) {\n          do {\n            puVar2[iVar12 + 8] = iVar10;\n            if (iVar12 == 2) goto LAB_0003ea09;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);\n          local_38 = 1;\n        }\n      }\n      puVar2[local_38 + 9] = 0;\n      while (puVar3 = puVar5, puVar3 != (undefined4 *)0x0) {\n        iVar12 = 0;\n        if (((undefined4 *)puVar3[1] != puVar2) && (iVar12 = 1, (undefined4 *)puVar3[2] != puVar2))\n        {\n          iVar12 = ((undefined4 *)puVar3[3] != puVar2) + 2;\n        }\n        puVar3[iVar12 + 5] = puVar3[iVar12 + 5] + -1;\n        puVar2 = puVar3;\n        puVar5 = (undefined4 *)*puVar3;\n      }\n      return local_34;\n    }\n  }\n  else if ((iVar12 == 0) && (puVar2[10] != 0)) goto LAB_0003e9d5;\n  puVar5 = (undefined4 *)puVar2[local_38 + 1];\n  puVar4 = puVar5;\n  if (puVar5[10] == 0) {\n    puVar4 = (undefined4 *)puVar2[local_38 + 2];\n    iVar12 = local_38 + 1;\n    puVar11 = (undefined4 *)puVar4[1];\n    puVar9 = puVar4;\n    if (puVar4[10] == 0) {\n      uVar7 = puVar2[local_38 + 9];\n      puVar5[3] = puVar11;\n      puVar5[10] = uVar7;\n      puVar5[7] = puVar4[5];\n      if (puVar11 != (undefined4 *)0x0) {\n        *puVar11 = puVar5;\n      }\n      uVar7 = puVar4[6];\n      puVar5[0xb] = puVar4[9];\n      puVar11 = (undefined4 *)puVar4[2];\n      puVar5[8] = uVar7;\n      puVar5[4] = puVar11;\n      if (puVar11 != (undefined4 *)0x0) {\n        *puVar11 = puVar5;\n      }\n      FUN_0001a110(puVar4);\n      uVar7 = FUN_0003e010();\n      puVar2[local_38 + 5] = uVar7;\n      if (local_38 == 2) {\nLAB_0003ec29:\n        iVar12 = 3;\n        iVar6 = 2;\n      }\n      else {\n        iVar10 = puVar2[local_38 + 10];\n        iVar6 = local_38;\n        if (iVar10 != 0) {\n          do {\n            puVar2[iVar12 + 8] = iVar10;\n            puVar2[iVar12 + 1] = puVar2[iVar12 + 2];\n            puVar2[iVar12 + 5] = puVar2[iVar12 + 6];\n            if (iVar12 == 2) goto LAB_0003ec29;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);\n          iVar6 = 1;\n        }\n      }\n      puVar2[iVar6 + 9] = 0;\n      puVar2[iVar12 + 1] = 0;\n      puVar2[iVar12 + 5] = 0;\n      if (puVar2[9] == 0) {\n        *puVar3 = puVar5;\n        *puVar5 = 0;\n        FUN_0001a110(puVar2);\n      }\n      param_2 = puVar5[6] + puVar5[5] + 1;\n    }\n    else {\n      while (puVar5 = puVar11, puVar5 != (undefined4 *)0x0) {\n        puVar9 = puVar5;\n        puVar11 = (undefined4 *)puVar5[1];\n      }\n      puVar2[local_38 + 9] = puVar9[9];\n      param_2 = 0;\n      puVar5 = puVar4;\n    }\n  }\n  else {\n    while (puVar11 = (undefined4 *)puVar4[1], puVar11 != (undefined4 *)0x0) {\n      while ((puVar9 = (undefined4 *)puVar4[4], (undefined4 *)puVar4[4] != (undefined4 *)0x0 ||\n             (puVar9 = (undefined4 *)puVar4[3], (undefined4 *)puVar4[3] != (undefined4 *)0x0))) {\n        puVar4 = puVar9;\n        puVar11 = (undefined4 *)puVar4[1];\n        if (puVar11 == (undefined4 *)0x0) goto LAB_0003e958;\n      }\n      puVar9 = puVar4 + 2;\n      puVar4 = (undefined4 *)*puVar9;\n      if ((undefined4 *)*puVar9 == (undefined4 *)0x0) {\n        puVar4 = puVar11;\n      }\n    }\nLAB_0003e958:\n    iVar12 = puVar4[0xb];\n    if ((iVar12 == 0) && (iVar12 = puVar4[10], iVar12 == 0)) {\n      iVar12 = puVar4[9];\n    }\n    puVar2[local_38 + 9] = iVar12;\n    param_2 = puVar2[local_38 + 5] + -1;\n  }\n  goto joined_r0x0003e772;\nLAB_0003eab0:\n  puVar5 = (undefined4 *)puVar2[2];\n  if (puVar5[10] == 0) {\n    local_30 = 1;\n    iVar10 = 0;\nLAB_0003eacb:\n    puVar4 = (undefined4 *)puVar2[iVar10 + 1];\n    if (puVar4[10] == 0) {\n      local_28 = local_30 + 1;\n      puVar11 = puVar2 + local_30;\n      puVar9 = (undefined4 *)puVar11[2];\n      if (puVar9 == (undefined4 *)0x0) {\n        puVar9 = (undefined4 *)puVar11[1];\n        iVar12 = param_2 + 1 + puVar2[iVar10 + 5];\n      }\n      else {\n        if (puVar9[10] != 0) {\nLAB_0003e836:\n          uVar7 = puVar9[5];\n          puVar5[10] = puVar2[local_30 + 9];\n          puVar4 = (undefined4 *)puVar9[1];\n          puVar5[7] = uVar7;\n          puVar5[3] = puVar4;\n          if (puVar4 != (undefined4 *)0x0) {\n            *puVar4 = puVar5;\n          }\n          puVar2[local_30 + 9] = puVar9[9];\n          puVar9[1] = puVar9[2];\n          puVar9[5] = puVar9[6];\n          if (puVar9[10] == 0) {\n            iVar12 = 1;\n            iVar10 = 0;\n          }\n          else {\n            puVar9[9] = puVar9[10];\n            puVar9[2] = puVar9[3];\n            puVar9[6] = puVar9[7];\n            if (puVar9[0xb] == 0) {\n              iVar12 = 2;\n              iVar10 = 1;\n            }\n            else {\n              puVar9[10] = puVar9[0xb];\n              iVar12 = 3;\n              puVar9[3] = puVar9[4];\n              puVar9[7] = puVar9[8];\n              iVar10 = 2;\n            }\n          }\n          puVar9[iVar12 + 1] = 0;\n          puVar9[iVar12 + 5] = 0;\n          puVar9[iVar10 + 9] = 0;\n          uVar7 = FUN_0003e010();\n          puVar2[local_30 + 5] = uVar7;\n          uVar7 = FUN_0003e010();\n          puVar2[local_28 + 5] = uVar7;\n          puVar5 = extraout_ECX;\n          goto joined_r0x0003e772;\n        }\n        puVar4 = (undefined4 *)*puVar11;\n        puVar9 = (undefined4 *)puVar11[1];\n        iVar10 = local_30 + -1;\n        iVar12 = param_2 + 1 + puVar11[4];\n      }\nLAB_0003ed0c:\n      puVar9[4] = puVar9[2];\n      puVar9[8] = puVar9[6];\n      puVar9[0xb] = puVar9[9];\n      puVar9[3] = puVar9[1];\n      puVar9[7] = puVar9[5];\n      uVar7 = puVar4[6];\n      puVar9[10] = puVar2[iVar10 + 9];\n      puVar5 = (undefined4 *)puVar4[2];\n      puVar9[6] = uVar7;\n      puVar9[2] = puVar5;\n      if (puVar5 != (undefined4 *)0x0) {\n        *puVar5 = puVar9;\n      }\n      uVar7 = puVar4[5];\n      puVar9[9] = puVar4[9];\n      puVar5 = (undefined4 *)puVar4[1];\n      puVar9[5] = uVar7;\n      puVar9[1] = puVar5;\n      if (puVar5 != (undefined4 *)0x0) {\n        *puVar5 = puVar9;\n      }\n      uVar7 = FUN_0003e010();\n      puVar2[local_30 + 5] = uVar7;\n      FUN_0001a110(extraout_ECX_00);\n      iVar6 = puVar2[iVar10 + 2];\n      while (iVar6 != 0) {\n        iVar8 = iVar10 + 1;\n        puVar2[iVar8] = iVar6;\n        puVar2[iVar10 + 5] = puVar2[iVar10 + 6];\n        if (iVar8 == 3) {\n          puVar2[0xb] = 0;\n          puVar2[4] = 0;\n          puVar2[8] = 0;\n          goto LAB_0003edcd;\n        }\n        puVar2[iVar10 + 9] = puVar2[iVar10 + 10];\n        iVar6 = puVar2[iVar10 + 3];\n        iVar10 = iVar8;\n      }\n      puVar2[iVar10 + 1] = 0;\n      puVar2[iVar10 + 5] = 0;\n      puVar2[iVar10 + 9] = 0;\nLAB_0003edcd:\n      param_2 = iVar12;\n      puVar5 = puVar9;\n      if (puVar2[9] == 0) {\n        *puVar3 = puVar9;\n        *puVar9 = 0;\n        FUN_0001a110(puVar2);\n      }\n      goto joined_r0x0003e772;\n    }\nLAB_0003eae0:\n    uVar1 = (uint)(puVar4[0xb] == 0);\n    puVar5[3] = puVar5[2];\n    puVar5[7] = puVar5[6];\n    puVar5[10] = puVar5[9];\n    puVar5[2] = puVar5[1];\n    puVar5[6] = puVar5[5];\n    puVar5[9] = puVar2[iVar10 + 9];\n    puVar11 = (undefined4 *)puVar4[4 - uVar1];\n    puVar5[1] = puVar11;\n    puVar5[5] = puVar4[8 - uVar1];\n    if (puVar11 != (undefined4 *)0x0) {\n      *puVar11 = puVar5;\n    }\n    puVar2[iVar10 + 9] = puVar4[-uVar1 + 0xb];\n    puVar4[4 - uVar1] = 0;\n    puVar4[8 - uVar1] = 0;\n    puVar4[-uVar1 + 0xb] = 0;\n    uVar7 = FUN_0003e010();\n    puVar2[local_30 + 5] = uVar7;\n    iVar12 = puVar2[iVar10 + 5];\n    iVar6 = FUN_0003e010();\n    puVar2[iVar10 + 5] = iVar6;\n    param_2 = (param_2 + iVar12) - iVar6;\n  }\n  goto joined_r0x0003e772;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_0003e740(undefined4 param_1,int param_2)" identifier (parameter_list "(undefined4 param_1,int param_2)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "int param_2" primitive_type identifier) ))) (compound_statement "{\n  uint uVar1;\n  undefined4 *puVar2;\n  undefined4 *puVar3;\n  undefined4 *puVar4;\n  undefined4 *puVar5;\n  int iVar6;\n  undefined4 uVar7;\n  int iVar8;\n  undefined4 *extraout_ECX;\n  undefined4 extraout_ECX_00;\n  undefined4 *puVar9;\n  int iVar10;\n  undefined4 *puVar11;\n  int iVar12;\n  int local_38;\n  int local_34;\n  int local_30;\n  int local_28;\n  \n  puVar3 = (undefined4 *)FUN_0002abcc();\n  local_38 = -1;\n  local_34 = 0;\n  puVar5 = (undefined4 *)*puVar3;\njoined_r0x0003e772:\n  while( true ) {\n    puVar2 = puVar5;\n    iVar12 = param_2;\n    if (puVar2 == (undefined4 *)0x0) {\n      if (local_34 == 0) {\n        local_34 = *(int *)(local_38 * 4 + 0x24);\n      }\n      if (local_38 == -1) {\n        return 0;\n      }\n      goto LAB_0003e7aa;\n    }\n    if ((int)puVar2[5] <= iVar12) break;\n    puVar4 = (undefined4 *)puVar2[1];\n    param_2 = iVar12;\n    puVar5 = puVar4;\n    if (puVar4[10] == 0) {\n      puVar9 = (undefined4 *)puVar2[2];\n      if (puVar9 != (undefined4 *)0x0) {\n        local_30 = 0;\n        local_28 = 1;\n        if (puVar9[10] == 0) goto LAB_0003ed02;\n        goto LAB_0003e836;\n      }\nLAB_0003ed02:\n      local_30 = 1;\n      iVar10 = 0;\n      goto LAB_0003ed0c;\n    }\n  }\n  param_2 = iVar12 - (puVar2[5] + 1);\n  if (-1 < param_2) {\n    if (param_2 < (int)puVar2[6]) goto LAB_0003eab0;\n    iVar12 = param_2 - (puVar2[6] + 1);\n    if (iVar12 < 0) {\n      local_38 = 1;\n      if (local_34 == 0) {\n        local_34 = puVar2[10];\n      }\nLAB_0003e7aa:\n      puVar5 = (undefined4 *)*puVar2;\n      iVar12 = puVar2[1];\n      goto joined_r0x0003e7b1;\n    }\n    if (iVar12 < (int)puVar2[7]) {\n      puVar5 = (undefined4 *)puVar2[3];\n      param_2 = iVar12;\n      if (puVar5[10] == 0) {\n        iVar10 = 1;\n        local_30 = 2;\n        goto LAB_0003eacb;\n      }\n    }\n    else {\n      param_2 = iVar12 - (puVar2[7] + 1);\n      if (param_2 < 0) {\n        local_38 = 2;\n        if (local_34 == 0) {\n          local_34 = puVar2[0xb];\n        }\n        goto LAB_0003e7aa;\n      }\n      puVar9 = (undefined4 *)puVar2[4];\n      puVar5 = puVar9;\n      if (puVar9[10] == 0) {\n        puVar4 = (undefined4 *)puVar2[3];\n        if (puVar4[10] == 0) {\n          iVar10 = 2;\n          local_30 = 3;\n          goto LAB_0003ed0c;\n        }\n        local_30 = 3;\n        iVar10 = 2;\n        goto LAB_0003eae0;\n      }\n    }\n    goto joined_r0x0003e772;\n  }\n  local_38 = 0;\n  if (local_34 != 0) goto LAB_0003e7aa;\n  local_34 = puVar2[9];\n  puVar5 = (undefined4 *)*puVar2;\n  iVar12 = puVar2[1];\njoined_r0x0003e7b1:\n  if (puVar5 == (undefined4 *)0x0) {\n    if (puVar2[10] == 0) {\n      if (iVar12 == 0) {\n        FUN_0001a110(puVar2);\n        *puVar3 = 0;\n        return local_34;\n      }\n    }\n    else if (iVar12 == 0) {\n      puVar5 = (undefined4 *)0x0;\nLAB_0003e9d5:\n      if (local_38 == 2) {\nLAB_0003ea09:\n        local_38 = 2;\n      }\n      else {\n        iVar10 = puVar2[local_38 + 10];\n        iVar12 = local_38 + 1;\n        if (iVar10 != 0) {\n          do {\n            puVar2[iVar12 + 8] = iVar10;\n            if (iVar12 == 2) goto LAB_0003ea09;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);\n          local_38 = 1;\n        }\n      }\n      puVar2[local_38 + 9] = 0;\n      while (puVar3 = puVar5, puVar3 != (undefined4 *)0x0) {\n        iVar12 = 0;\n        if (((undefined4 *)puVar3[1] != puVar2) && (iVar12 = 1, (undefined4 *)puVar3[2] != puVar2))\n        {\n          iVar12 = ((undefined4 *)puVar3[3] != puVar2) + 2;\n        }\n        puVar3[iVar12 + 5] = puVar3[iVar12 + 5] + -1;\n        puVar2 = puVar3;\n        puVar5 = (undefined4 *)*puVar3;\n      }\n      return local_34;\n    }\n  }\n  else if ((iVar12 == 0) && (puVar2[10] != 0)) goto LAB_0003e9d5;\n  puVar5 = (undefined4 *)puVar2[local_38 + 1];\n  puVar4 = puVar5;\n  if (puVar5[10] == 0) {\n    puVar4 = (undefined4 *)puVar2[local_38 + 2];\n    iVar12 = local_38 + 1;\n    puVar11 = (undefined4 *)puVar4[1];\n    puVar9 = puVar4;\n    if (puVar4[10] == 0) {\n      uVar7 = puVar2[local_38 + 9];\n      puVar5[3] = puVar11;\n      puVar5[10] = uVar7;\n      puVar5[7] = puVar4[5];\n      if (puVar11 != (undefined4 *)0x0) {\n        *puVar11 = puVar5;\n      }\n      uVar7 = puVar4[6];\n      puVar5[0xb] = puVar4[9];\n      puVar11 = (undefined4 *)puVar4[2];\n      puVar5[8] = uVar7;\n      puVar5[4] = puVar11;\n      if (puVar11 != (undefined4 *)0x0) {\n        *puVar11 = puVar5;\n      }\n      FUN_0001a110(puVar4);\n      uVar7 = FUN_0003e010();\n      puVar2[local_38 + 5] = uVar7;\n      if (local_38 == 2) {\nLAB_0003ec29:\n        iVar12 = 3;\n        iVar6 = 2;\n      }\n      else {\n        iVar10 = puVar2[local_38 + 10];\n        iVar6 = local_38;\n        if (iVar10 != 0) {\n          do {\n            puVar2[iVar12 + 8] = iVar10;\n            puVar2[iVar12 + 1] = puVar2[iVar12 + 2];\n            puVar2[iVar12 + 5] = puVar2[iVar12 + 6];\n            if (iVar12 == 2) goto LAB_0003ec29;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);\n          iVar6 = 1;\n        }\n      }\n      puVar2[iVar6 + 9] = 0;\n      puVar2[iVar12 + 1] = 0;\n      puVar2[iVar12 + 5] = 0;\n      if (puVar2[9] == 0) {\n        *puVar3 = puVar5;\n        *puVar5 = 0;\n        FUN_0001a110(puVar2);\n      }\n      param_2 = puVar5[6] + puVar5[5] + 1;\n    }\n    else {\n      while (puVar5 = puVar11, puVar5 != (undefined4 *)0x0) {\n        puVar9 = puVar5;\n        puVar11 = (undefined4 *)puVar5[1];\n      }\n      puVar2[local_38 + 9] = puVar9[9];\n      param_2 = 0;\n      puVar5 = puVar4;\n    }\n  }\n  else {\n    while (puVar11 = (undefined4 *)puVar4[1], puVar11 != (undefined4 *)0x0) {\n      while ((puVar9 = (undefined4 *)puVar4[4], (undefined4 *)puVar4[4] != (undefined4 *)0x0 ||\n             (puVar9 = (undefined4 *)puVar4[3], (undefined4 *)puVar4[3] != (undefined4 *)0x0))) {\n        puVar4 = puVar9;\n        puVar11 = (undefined4 *)puVar4[1];\n        if (puVar11 == (undefined4 *)0x0) goto LAB_0003e958;\n      }\n      puVar9 = puVar4 + 2;\n      puVar4 = (undefined4 *)*puVar9;\n      if ((undefined4 *)*puVar9 == (undefined4 *)0x0) {\n        puVar4 = puVar11;\n      }\n    }\nLAB_0003e958:\n    iVar12 = puVar4[0xb];\n    if ((iVar12 == 0) && (iVar12 = puVar4[10], iVar12 == 0)) {\n      iVar12 = puVar4[9];\n    }\n    puVar2[local_38 + 9] = iVar12;\n    param_2 = puVar2[local_38 + 5] + -1;\n  }\n  goto joined_r0x0003e772;\nLAB_0003eab0:\n  puVar5 = (undefined4 *)puVar2[2];\n  if (puVar5[10] == 0) {\n    local_30 = 1;\n    iVar10 = 0;\nLAB_0003eacb:\n    puVar4 = (undefined4 *)puVar2[iVar10 + 1];\n    if (puVar4[10] == 0) {\n      local_28 = local_30 + 1;\n      puVar11 = puVar2 + local_30;\n      puVar9 = (undefined4 *)puVar11[2];\n      if (puVar9 == (undefined4 *)0x0) {\n        puVar9 = (undefined4 *)puVar11[1];\n        iVar12 = param_2 + 1 + puVar2[iVar10 + 5];\n      }\n      else {\n        if (puVar9[10] != 0) {\nLAB_0003e836:\n          uVar7 = puVar9[5];\n          puVar5[10] = puVar2[local_30 + 9];\n          puVar4 = (undefined4 *)puVar9[1];\n          puVar5[7] = uVar7;\n          puVar5[3] = puVar4;\n          if (puVar4 != (undefined4 *)0x0) {\n            *puVar4 = puVar5;\n          }\n          puVar2[local_30 + 9] = puVar9[9];\n          puVar9[1] = puVar9[2];\n          puVar9[5] = puVar9[6];\n          if (puVar9[10] == 0) {\n            iVar12 = 1;\n            iVar10 = 0;\n          }\n          else {\n            puVar9[9] = puVar9[10];\n            puVar9[2] = puVar9[3];\n            puVar9[6] = puVar9[7];\n            if (puVar9[0xb] == 0) {\n              iVar12 = 2;\n              iVar10 = 1;\n            }\n            else {\n              puVar9[10] = puVar9[0xb];\n              iVar12 = 3;\n              puVar9[3] = puVar9[4];\n              puVar9[7] = puVar9[8];\n              iVar10 = 2;\n            }\n          }\n          puVar9[iVar12 + 1] = 0;\n          puVar9[iVar12 + 5] = 0;\n          puVar9[iVar10 + 9] = 0;\n          uVar7 = FUN_0003e010();\n          puVar2[local_30 + 5] = uVar7;\n          uVar7 = FUN_0003e010();\n          puVar2[local_28 + 5] = uVar7;\n          puVar5 = extraout_ECX;\n          goto joined_r0x0003e772;\n        }\n        puVar4 = (undefined4 *)*puVar11;\n        puVar9 = (undefined4 *)puVar11[1];\n        iVar10 = local_30 + -1;\n        iVar12 = param_2 + 1 + puVar11[4];\n      }\nLAB_0003ed0c:\n      puVar9[4] = puVar9[2];\n      puVar9[8] = puVar9[6];\n      puVar9[0xb] = puVar9[9];\n      puVar9[3] = puVar9[1];\n      puVar9[7] = puVar9[5];\n      uVar7 = puVar4[6];\n      puVar9[10] = puVar2[iVar10 + 9];\n      puVar5 = (undefined4 *)puVar4[2];\n      puVar9[6] = uVar7;\n      puVar9[2] = puVar5;\n      if (puVar5 != (undefined4 *)0x0) {\n        *puVar5 = puVar9;\n      }\n      uVar7 = puVar4[5];\n      puVar9[9] = puVar4[9];\n      puVar5 = (undefined4 *)puVar4[1];\n      puVar9[5] = uVar7;\n      puVar9[1] = puVar5;\n      if (puVar5 != (undefined4 *)0x0) {\n        *puVar5 = puVar9;\n      }\n      uVar7 = FUN_0003e010();\n      puVar2[local_30 + 5] = uVar7;\n      FUN_0001a110(extraout_ECX_00);\n      iVar6 = puVar2[iVar10 + 2];\n      while (iVar6 != 0) {\n        iVar8 = iVar10 + 1;\n        puVar2[iVar8] = iVar6;\n        puVar2[iVar10 + 5] = puVar2[iVar10 + 6];\n        if (iVar8 == 3) {\n          puVar2[0xb] = 0;\n          puVar2[4] = 0;\n          puVar2[8] = 0;\n          goto LAB_0003edcd;\n        }\n        puVar2[iVar10 + 9] = puVar2[iVar10 + 10];\n        iVar6 = puVar2[iVar10 + 3];\n        iVar10 = iVar8;\n      }\n      puVar2[iVar10 + 1] = 0;\n      puVar2[iVar10 + 5] = 0;\n      puVar2[iVar10 + 9] = 0;\nLAB_0003edcd:\n      param_2 = iVar12;\n      puVar5 = puVar9;\n      if (puVar2[9] == 0) {\n        *puVar3 = puVar9;\n        *puVar9 = 0;\n        FUN_0001a110(puVar2);\n      }\n      goto joined_r0x0003e772;\n    }\nLAB_0003eae0:\n    uVar1 = (uint)(puVar4[0xb] == 0);\n    puVar5[3] = puVar5[2];\n    puVar5[7] = puVar5[6];\n    puVar5[10] = puVar5[9];\n    puVar5[2] = puVar5[1];\n    puVar5[6] = puVar5[5];\n    puVar5[9] = puVar2[iVar10 + 9];\n    puVar11 = (undefined4 *)puVar4[4 - uVar1];\n    puVar5[1] = puVar11;\n    puVar5[5] = puVar4[8 - uVar1];\n    if (puVar11 != (undefined4 *)0x0) {\n      *puVar11 = puVar5;\n    }\n    puVar2[iVar10 + 9] = puVar4[-uVar1 + 0xb];\n    puVar4[4 - uVar1] = 0;\n    puVar4[8 - uVar1] = 0;\n    puVar4[-uVar1 + 0xb] = 0;\n    uVar7 = FUN_0003e010();\n    puVar2[local_30 + 5] = uVar7;\n    iVar12 = puVar2[iVar10 + 5];\n    iVar6 = FUN_0003e010();\n    puVar2[iVar10 + 5] = iVar6;\n    param_2 = (param_2 + iVar12) - iVar6;\n  }\n  goto joined_r0x0003e772;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "undefined4 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "undefined4 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "undefined4 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "undefined4 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "undefined4 *extraout_ECX;" type_identifier (pointer_declarator "*extraout_ECX" * identifier) ;) (declaration "undefined4 extraout_ECX_00;" type_identifier identifier ;) (declaration "undefined4 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "undefined4 *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "int local_38;" primitive_type identifier ;) (declaration "int local_34;" primitive_type identifier ;) (declaration "int local_30;" primitive_type identifier ;) (declaration "int local_28;" primitive_type identifier ;) (expression_statement "puVar3 = (undefined4 *)FUN_0002abcc();" (assignment_expression "puVar3 = (undefined4 *)FUN_0002abcc()" identifier = (cast_expression "(undefined4 *)FUN_0002abcc()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0002abcc()" identifier (argument_list "()" ( ))))) ;) (expression_statement "local_38 = -1;" (assignment_expression "local_38 = -1" identifier = number_literal) ;) (expression_statement "local_34 = 0;" (assignment_expression "local_34 = 0" identifier = number_literal) ;) (expression_statement "puVar5 = (undefined4 *)*puVar3;" (assignment_expression "puVar5 = (undefined4 *)*puVar3" identifier = (cast_expression "(undefined4 *)*puVar3" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar3" * identifier))) ;) (labeled_statement "joined_r0x0003e772:\n  while( true ) {\n    puVar2 = puVar5;\n    iVar12 = param_2;\n    if (puVar2 == (undefined4 *)0x0) {\n      if (local_34 == 0) {\n        local_34 = *(int *)(local_38 * 4 + 0x24);\n      }\n      if (local_38 == -1) {\n        return 0;\n      }\n      goto LAB_0003e7aa;\n    }\n    if ((int)puVar2[5] <= iVar12) break;\n    puVar4 = (undefined4 *)puVar2[1];\n    param_2 = iVar12;\n    puVar5 = puVar4;\n    if (puVar4[10] == 0) {\n      puVar9 = (undefined4 *)puVar2[2];\n      if (puVar9 != (undefined4 *)0x0) {\n        local_30 = 0;\n        local_28 = 1;\n        if (puVar9[10] == 0) goto LAB_0003ed02;\n        goto LAB_0003e836;\n      }\nLAB_0003ed02:\n      local_30 = 1;\n      iVar10 = 0;\n      goto LAB_0003ed0c;\n    }\n  }" statement_identifier : (while_statement "while( true ) {\n    puVar2 = puVar5;\n    iVar12 = param_2;\n    if (puVar2 == (undefined4 *)0x0) {\n      if (local_34 == 0) {\n        local_34 = *(int *)(local_38 * 4 + 0x24);\n      }\n      if (local_38 == -1) {\n        return 0;\n      }\n      goto LAB_0003e7aa;\n    }\n    if ((int)puVar2[5] <= iVar12) break;\n    puVar4 = (undefined4 *)puVar2[1];\n    param_2 = iVar12;\n    puVar5 = puVar4;\n    if (puVar4[10] == 0) {\n      puVar9 = (undefined4 *)puVar2[2];\n      if (puVar9 != (undefined4 *)0x0) {\n        local_30 = 0;\n        local_28 = 1;\n        if (puVar9[10] == 0) goto LAB_0003ed02;\n        goto LAB_0003e836;\n      }\nLAB_0003ed02:\n      local_30 = 1;\n      iVar10 = 0;\n      goto LAB_0003ed0c;\n    }\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    puVar2 = puVar5;\n    iVar12 = param_2;\n    if (puVar2 == (undefined4 *)0x0) {\n      if (local_34 == 0) {\n        local_34 = *(int *)(local_38 * 4 + 0x24);\n      }\n      if (local_38 == -1) {\n        return 0;\n      }\n      goto LAB_0003e7aa;\n    }\n    if ((int)puVar2[5] <= iVar12) break;\n    puVar4 = (undefined4 *)puVar2[1];\n    param_2 = iVar12;\n    puVar5 = puVar4;\n    if (puVar4[10] == 0) {\n      puVar9 = (undefined4 *)puVar2[2];\n      if (puVar9 != (undefined4 *)0x0) {\n        local_30 = 0;\n        local_28 = 1;\n        if (puVar9[10] == 0) goto LAB_0003ed02;\n        goto LAB_0003e836;\n      }\nLAB_0003ed02:\n      local_30 = 1;\n      iVar10 = 0;\n      goto LAB_0003ed0c;\n    }\n  }" { (expression_statement "puVar2 = puVar5;" (assignment_expression "puVar2 = puVar5" identifier = identifier) ;) (expression_statement "iVar12 = param_2;" (assignment_expression "iVar12 = param_2" identifier = identifier) ;) (if_statement "if (puVar2 == (undefined4 *)0x0) {\n      if (local_34 == 0) {\n        local_34 = *(int *)(local_38 * 4 + 0x24);\n      }\n      if (local_38 == -1) {\n        return 0;\n      }\n      goto LAB_0003e7aa;\n    }" if (parenthesized_expression "(puVar2 == (undefined4 *)0x0)" ( (binary_expression "puVar2 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      if (local_34 == 0) {\n        local_34 = *(int *)(local_38 * 4 + 0x24);\n      }\n      if (local_38 == -1) {\n        return 0;\n      }\n      goto LAB_0003e7aa;\n    }" { (if_statement "if (local_34 == 0) {\n        local_34 = *(int *)(local_38 * 4 + 0x24);\n      }" if (parenthesized_expression "(local_34 == 0)" ( (binary_expression "local_34 == 0" identifier == number_literal) )) (compound_statement "{\n        local_34 = *(int *)(local_38 * 4 + 0x24);\n      }" { (expression_statement "local_34 = *(int *)(local_38 * 4 + 0x24);" (assignment_expression "local_34 = *(int *)(local_38 * 4 + 0x24)" identifier = (pointer_expression "*(int *)(local_38 * 4 + 0x24)" * (cast_expression "(int *)(local_38 * 4 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_38 * 4 + 0x24)" ( (binary_expression "local_38 * 4 + 0x24" (binary_expression "local_38 * 4" identifier * number_literal) + number_literal) ))))) ;) })) (if_statement "if (local_38 == -1) {\n        return 0;\n      }" if (parenthesized_expression "(local_38 == -1)" ( (binary_expression "local_38 == -1" identifier == number_literal) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (goto_statement "goto LAB_0003e7aa;" goto statement_identifier ;) })) (if_statement "if ((int)puVar2[5] <= iVar12) break;" if (parenthesized_expression "((int)puVar2[5] <= iVar12)" ( (binary_expression "(int)puVar2[5] <= iVar12" (cast_expression "(int)puVar2[5]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "puVar2[5]" identifier [ number_literal ])) <= identifier) )) (break_statement "break;" break ;)) (expression_statement "puVar4 = (undefined4 *)puVar2[1];" (assignment_expression "puVar4 = (undefined4 *)puVar2[1]" identifier = (cast_expression "(undefined4 *)puVar2[1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar2[1]" identifier [ number_literal ]))) ;) (expression_statement "param_2 = iVar12;" (assignment_expression "param_2 = iVar12" identifier = identifier) ;) (expression_statement "puVar5 = puVar4;" (assignment_expression "puVar5 = puVar4" identifier = identifier) ;) (if_statement "if (puVar4[10] == 0) {\n      puVar9 = (undefined4 *)puVar2[2];\n      if (puVar9 != (undefined4 *)0x0) {\n        local_30 = 0;\n        local_28 = 1;\n        if (puVar9[10] == 0) goto LAB_0003ed02;\n        goto LAB_0003e836;\n      }\nLAB_0003ed02:\n      local_30 = 1;\n      iVar10 = 0;\n      goto LAB_0003ed0c;\n    }" if (parenthesized_expression "(puVar4[10] == 0)" ( (binary_expression "puVar4[10] == 0" (subscript_expression "puVar4[10]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      puVar9 = (undefined4 *)puVar2[2];\n      if (puVar9 != (undefined4 *)0x0) {\n        local_30 = 0;\n        local_28 = 1;\n        if (puVar9[10] == 0) goto LAB_0003ed02;\n        goto LAB_0003e836;\n      }\nLAB_0003ed02:\n      local_30 = 1;\n      iVar10 = 0;\n      goto LAB_0003ed0c;\n    }" { (expression_statement "puVar9 = (undefined4 *)puVar2[2];" (assignment_expression "puVar9 = (undefined4 *)puVar2[2]" identifier = (cast_expression "(undefined4 *)puVar2[2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar2[2]" identifier [ number_literal ]))) ;) (if_statement "if (puVar9 != (undefined4 *)0x0) {\n        local_30 = 0;\n        local_28 = 1;\n        if (puVar9[10] == 0) goto LAB_0003ed02;\n        goto LAB_0003e836;\n      }" if (parenthesized_expression "(puVar9 != (undefined4 *)0x0)" ( (binary_expression "puVar9 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        local_30 = 0;\n        local_28 = 1;\n        if (puVar9[10] == 0) goto LAB_0003ed02;\n        goto LAB_0003e836;\n      }" { (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "local_28 = 1;" (assignment_expression "local_28 = 1" identifier = number_literal) ;) (if_statement "if (puVar9[10] == 0) goto LAB_0003ed02;" if (parenthesized_expression "(puVar9[10] == 0)" ( (binary_expression "puVar9[10] == 0" (subscript_expression "puVar9[10]" identifier [ number_literal ]) == number_literal) )) (goto_statement "goto LAB_0003ed02;" goto statement_identifier ;)) (goto_statement "goto LAB_0003e836;" goto statement_identifier ;) })) (labeled_statement "LAB_0003ed02:\n      local_30 = 1;" statement_identifier : (expression_statement "local_30 = 1;" (assignment_expression "local_30 = 1" identifier = number_literal) ;)) (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_0003ed0c;" goto statement_identifier ;) })) }))) (expression_statement "param_2 = iVar12 - (puVar2[5] + 1);" (assignment_expression "param_2 = iVar12 - (puVar2[5] + 1)" identifier = (binary_expression "iVar12 - (puVar2[5] + 1)" identifier - (parenthesized_expression "(puVar2[5] + 1)" ( (binary_expression "puVar2[5] + 1" (subscript_expression "puVar2[5]" identifier [ number_literal ]) + number_literal) )))) ;) (if_statement "if (-1 < param_2) {\n    if (param_2 < (int)puVar2[6]) goto LAB_0003eab0;\n    iVar12 = param_2 - (puVar2[6] + 1);\n    if (iVar12 < 0) {\n      local_38 = 1;\n      if (local_34 == 0) {\n        local_34 = puVar2[10];\n      }\nLAB_0003e7aa:\n      puVar5 = (undefined4 *)*puVar2;\n      iVar12 = puVar2[1];\n      goto joined_r0x0003e7b1;\n    }\n    if (iVar12 < (int)puVar2[7]) {\n      puVar5 = (undefined4 *)puVar2[3];\n      param_2 = iVar12;\n      if (puVar5[10] == 0) {\n        iVar10 = 1;\n        local_30 = 2;\n        goto LAB_0003eacb;\n      }\n    }\n    else {\n      param_2 = iVar12 - (puVar2[7] + 1);\n      if (param_2 < 0) {\n        local_38 = 2;\n        if (local_34 == 0) {\n          local_34 = puVar2[0xb];\n        }\n        goto LAB_0003e7aa;\n      }\n      puVar9 = (undefined4 *)puVar2[4];\n      puVar5 = puVar9;\n      if (puVar9[10] == 0) {\n        puVar4 = (undefined4 *)puVar2[3];\n        if (puVar4[10] == 0) {\n          iVar10 = 2;\n          local_30 = 3;\n          goto LAB_0003ed0c;\n        }\n        local_30 = 3;\n        iVar10 = 2;\n        goto LAB_0003eae0;\n      }\n    }\n    goto joined_r0x0003e772;\n  }" if (parenthesized_expression "(-1 < param_2)" ( (binary_expression "-1 < param_2" number_literal < identifier) )) (compound_statement "{\n    if (param_2 < (int)puVar2[6]) goto LAB_0003eab0;\n    iVar12 = param_2 - (puVar2[6] + 1);\n    if (iVar12 < 0) {\n      local_38 = 1;\n      if (local_34 == 0) {\n        local_34 = puVar2[10];\n      }\nLAB_0003e7aa:\n      puVar5 = (undefined4 *)*puVar2;\n      iVar12 = puVar2[1];\n      goto joined_r0x0003e7b1;\n    }\n    if (iVar12 < (int)puVar2[7]) {\n      puVar5 = (undefined4 *)puVar2[3];\n      param_2 = iVar12;\n      if (puVar5[10] == 0) {\n        iVar10 = 1;\n        local_30 = 2;\n        goto LAB_0003eacb;\n      }\n    }\n    else {\n      param_2 = iVar12 - (puVar2[7] + 1);\n      if (param_2 < 0) {\n        local_38 = 2;\n        if (local_34 == 0) {\n          local_34 = puVar2[0xb];\n        }\n        goto LAB_0003e7aa;\n      }\n      puVar9 = (undefined4 *)puVar2[4];\n      puVar5 = puVar9;\n      if (puVar9[10] == 0) {\n        puVar4 = (undefined4 *)puVar2[3];\n        if (puVar4[10] == 0) {\n          iVar10 = 2;\n          local_30 = 3;\n          goto LAB_0003ed0c;\n        }\n        local_30 = 3;\n        iVar10 = 2;\n        goto LAB_0003eae0;\n      }\n    }\n    goto joined_r0x0003e772;\n  }" { (if_statement "if (param_2 < (int)puVar2[6]) goto LAB_0003eab0;" if (parenthesized_expression "(param_2 < (int)puVar2[6])" ( (binary_expression "param_2 < (int)puVar2[6]" identifier < (cast_expression "(int)puVar2[6]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "puVar2[6]" identifier [ number_literal ]))) )) (goto_statement "goto LAB_0003eab0;" goto statement_identifier ;)) (expression_statement "iVar12 = param_2 - (puVar2[6] + 1);" (assignment_expression "iVar12 = param_2 - (puVar2[6] + 1)" identifier = (binary_expression "param_2 - (puVar2[6] + 1)" identifier - (parenthesized_expression "(puVar2[6] + 1)" ( (binary_expression "puVar2[6] + 1" (subscript_expression "puVar2[6]" identifier [ number_literal ]) + number_literal) )))) ;) (if_statement "if (iVar12 < 0) {\n      local_38 = 1;\n      if (local_34 == 0) {\n        local_34 = puVar2[10];\n      }\nLAB_0003e7aa:\n      puVar5 = (undefined4 *)*puVar2;\n      iVar12 = puVar2[1];\n      goto joined_r0x0003e7b1;\n    }" if (parenthesized_expression "(iVar12 < 0)" ( (binary_expression "iVar12 < 0" identifier < number_literal) )) (compound_statement "{\n      local_38 = 1;\n      if (local_34 == 0) {\n        local_34 = puVar2[10];\n      }\nLAB_0003e7aa:\n      puVar5 = (undefined4 *)*puVar2;\n      iVar12 = puVar2[1];\n      goto joined_r0x0003e7b1;\n    }" { (expression_statement "local_38 = 1;" (assignment_expression "local_38 = 1" identifier = number_literal) ;) (if_statement "if (local_34 == 0) {\n        local_34 = puVar2[10];\n      }" if (parenthesized_expression "(local_34 == 0)" ( (binary_expression "local_34 == 0" identifier == number_literal) )) (compound_statement "{\n        local_34 = puVar2[10];\n      }" { (expression_statement "local_34 = puVar2[10];" (assignment_expression "local_34 = puVar2[10]" identifier = (subscript_expression "puVar2[10]" identifier [ number_literal ])) ;) })) (labeled_statement "LAB_0003e7aa:\n      puVar5 = (undefined4 *)*puVar2;" statement_identifier : (expression_statement "puVar5 = (undefined4 *)*puVar2;" (assignment_expression "puVar5 = (undefined4 *)*puVar2" identifier = (cast_expression "(undefined4 *)*puVar2" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar2" * identifier))) ;)) (expression_statement "iVar12 = puVar2[1];" (assignment_expression "iVar12 = puVar2[1]" identifier = (subscript_expression "puVar2[1]" identifier [ number_literal ])) ;) (goto_statement "goto joined_r0x0003e7b1;" goto statement_identifier ;) })) (if_statement "if (iVar12 < (int)puVar2[7]) {\n      puVar5 = (undefined4 *)puVar2[3];\n      param_2 = iVar12;\n      if (puVar5[10] == 0) {\n        iVar10 = 1;\n        local_30 = 2;\n        goto LAB_0003eacb;\n      }\n    }\n    else {\n      param_2 = iVar12 - (puVar2[7] + 1);\n      if (param_2 < 0) {\n        local_38 = 2;\n        if (local_34 == 0) {\n          local_34 = puVar2[0xb];\n        }\n        goto LAB_0003e7aa;\n      }\n      puVar9 = (undefined4 *)puVar2[4];\n      puVar5 = puVar9;\n      if (puVar9[10] == 0) {\n        puVar4 = (undefined4 *)puVar2[3];\n        if (puVar4[10] == 0) {\n          iVar10 = 2;\n          local_30 = 3;\n          goto LAB_0003ed0c;\n        }\n        local_30 = 3;\n        iVar10 = 2;\n        goto LAB_0003eae0;\n      }\n    }" if (parenthesized_expression "(iVar12 < (int)puVar2[7])" ( (binary_expression "iVar12 < (int)puVar2[7]" identifier < (cast_expression "(int)puVar2[7]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "puVar2[7]" identifier [ number_literal ]))) )) (compound_statement "{\n      puVar5 = (undefined4 *)puVar2[3];\n      param_2 = iVar12;\n      if (puVar5[10] == 0) {\n        iVar10 = 1;\n        local_30 = 2;\n        goto LAB_0003eacb;\n      }\n    }" { (expression_statement "puVar5 = (undefined4 *)puVar2[3];" (assignment_expression "puVar5 = (undefined4 *)puVar2[3]" identifier = (cast_expression "(undefined4 *)puVar2[3]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar2[3]" identifier [ number_literal ]))) ;) (expression_statement "param_2 = iVar12;" (assignment_expression "param_2 = iVar12" identifier = identifier) ;) (if_statement "if (puVar5[10] == 0) {\n        iVar10 = 1;\n        local_30 = 2;\n        goto LAB_0003eacb;\n      }" if (parenthesized_expression "(puVar5[10] == 0)" ( (binary_expression "puVar5[10] == 0" (subscript_expression "puVar5[10]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n        iVar10 = 1;\n        local_30 = 2;\n        goto LAB_0003eacb;\n      }" { (expression_statement "iVar10 = 1;" (assignment_expression "iVar10 = 1" identifier = number_literal) ;) (expression_statement "local_30 = 2;" (assignment_expression "local_30 = 2" identifier = number_literal) ;) (goto_statement "goto LAB_0003eacb;" goto statement_identifier ;) })) }) (else_clause "else {\n      param_2 = iVar12 - (puVar2[7] + 1);\n      if (param_2 < 0) {\n        local_38 = 2;\n        if (local_34 == 0) {\n          local_34 = puVar2[0xb];\n        }\n        goto LAB_0003e7aa;\n      }\n      puVar9 = (undefined4 *)puVar2[4];\n      puVar5 = puVar9;\n      if (puVar9[10] == 0) {\n        puVar4 = (undefined4 *)puVar2[3];\n        if (puVar4[10] == 0) {\n          iVar10 = 2;\n          local_30 = 3;\n          goto LAB_0003ed0c;\n        }\n        local_30 = 3;\n        iVar10 = 2;\n        goto LAB_0003eae0;\n      }\n    }" else (compound_statement "{\n      param_2 = iVar12 - (puVar2[7] + 1);\n      if (param_2 < 0) {\n        local_38 = 2;\n        if (local_34 == 0) {\n          local_34 = puVar2[0xb];\n        }\n        goto LAB_0003e7aa;\n      }\n      puVar9 = (undefined4 *)puVar2[4];\n      puVar5 = puVar9;\n      if (puVar9[10] == 0) {\n        puVar4 = (undefined4 *)puVar2[3];\n        if (puVar4[10] == 0) {\n          iVar10 = 2;\n          local_30 = 3;\n          goto LAB_0003ed0c;\n        }\n        local_30 = 3;\n        iVar10 = 2;\n        goto LAB_0003eae0;\n      }\n    }" { (expression_statement "param_2 = iVar12 - (puVar2[7] + 1);" (assignment_expression "param_2 = iVar12 - (puVar2[7] + 1)" identifier = (binary_expression "iVar12 - (puVar2[7] + 1)" identifier - (parenthesized_expression "(puVar2[7] + 1)" ( (binary_expression "puVar2[7] + 1" (subscript_expression "puVar2[7]" identifier [ number_literal ]) + number_literal) )))) ;) (if_statement "if (param_2 < 0) {\n        local_38 = 2;\n        if (local_34 == 0) {\n          local_34 = puVar2[0xb];\n        }\n        goto LAB_0003e7aa;\n      }" if (parenthesized_expression "(param_2 < 0)" ( (binary_expression "param_2 < 0" identifier < number_literal) )) (compound_statement "{\n        local_38 = 2;\n        if (local_34 == 0) {\n          local_34 = puVar2[0xb];\n        }\n        goto LAB_0003e7aa;\n      }" { (expression_statement "local_38 = 2;" (assignment_expression "local_38 = 2" identifier = number_literal) ;) (if_statement "if (local_34 == 0) {\n          local_34 = puVar2[0xb];\n        }" if (parenthesized_expression "(local_34 == 0)" ( (binary_expression "local_34 == 0" identifier == number_literal) )) (compound_statement "{\n          local_34 = puVar2[0xb];\n        }" { (expression_statement "local_34 = puVar2[0xb];" (assignment_expression "local_34 = puVar2[0xb]" identifier = (subscript_expression "puVar2[0xb]" identifier [ number_literal ])) ;) })) (goto_statement "goto LAB_0003e7aa;" goto statement_identifier ;) })) (expression_statement "puVar9 = (undefined4 *)puVar2[4];" (assignment_expression "puVar9 = (undefined4 *)puVar2[4]" identifier = (cast_expression "(undefined4 *)puVar2[4]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar2[4]" identifier [ number_literal ]))) ;) (expression_statement "puVar5 = puVar9;" (assignment_expression "puVar5 = puVar9" identifier = identifier) ;) (if_statement "if (puVar9[10] == 0) {\n        puVar4 = (undefined4 *)puVar2[3];\n        if (puVar4[10] == 0) {\n          iVar10 = 2;\n          local_30 = 3;\n          goto LAB_0003ed0c;\n        }\n        local_30 = 3;\n        iVar10 = 2;\n        goto LAB_0003eae0;\n      }" if (parenthesized_expression "(puVar9[10] == 0)" ( (binary_expression "puVar9[10] == 0" (subscript_expression "puVar9[10]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n        puVar4 = (undefined4 *)puVar2[3];\n        if (puVar4[10] == 0) {\n          iVar10 = 2;\n          local_30 = 3;\n          goto LAB_0003ed0c;\n        }\n        local_30 = 3;\n        iVar10 = 2;\n        goto LAB_0003eae0;\n      }" { (expression_statement "puVar4 = (undefined4 *)puVar2[3];" (assignment_expression "puVar4 = (undefined4 *)puVar2[3]" identifier = (cast_expression "(undefined4 *)puVar2[3]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar2[3]" identifier [ number_literal ]))) ;) (if_statement "if (puVar4[10] == 0) {\n          iVar10 = 2;\n          local_30 = 3;\n          goto LAB_0003ed0c;\n        }" if (parenthesized_expression "(puVar4[10] == 0)" ( (binary_expression "puVar4[10] == 0" (subscript_expression "puVar4[10]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n          iVar10 = 2;\n          local_30 = 3;\n          goto LAB_0003ed0c;\n        }" { (expression_statement "iVar10 = 2;" (assignment_expression "iVar10 = 2" identifier = number_literal) ;) (expression_statement "local_30 = 3;" (assignment_expression "local_30 = 3" identifier = number_literal) ;) (goto_statement "goto LAB_0003ed0c;" goto statement_identifier ;) })) (expression_statement "local_30 = 3;" (assignment_expression "local_30 = 3" identifier = number_literal) ;) (expression_statement "iVar10 = 2;" (assignment_expression "iVar10 = 2" identifier = number_literal) ;) (goto_statement "goto LAB_0003eae0;" goto statement_identifier ;) })) }))) (goto_statement "goto joined_r0x0003e772;" goto statement_identifier ;) })) (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" identifier = number_literal) ;) (if_statement "if (local_34 != 0) goto LAB_0003e7aa;" if (parenthesized_expression "(local_34 != 0)" ( (binary_expression "local_34 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0003e7aa;" goto statement_identifier ;)) (expression_statement "local_34 = puVar2[9];" (assignment_expression "local_34 = puVar2[9]" identifier = (subscript_expression "puVar2[9]" identifier [ number_literal ])) ;) (expression_statement "puVar5 = (undefined4 *)*puVar2;" (assignment_expression "puVar5 = (undefined4 *)*puVar2" identifier = (cast_expression "(undefined4 *)*puVar2" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar2" * identifier))) ;) (expression_statement "iVar12 = puVar2[1];" (assignment_expression "iVar12 = puVar2[1]" identifier = (subscript_expression "puVar2[1]" identifier [ number_literal ])) ;) (labeled_statement "joined_r0x0003e7b1:\n  if (puVar5 == (undefined4 *)0x0) {\n    if (puVar2[10] == 0) {\n      if (iVar12 == 0) {\n        FUN_0001a110(puVar2);\n        *puVar3 = 0;\n        return local_34;\n      }\n    }\n    else if (iVar12 == 0) {\n      puVar5 = (undefined4 *)0x0;\nLAB_0003e9d5:\n      if (local_38 == 2) {\nLAB_0003ea09:\n        local_38 = 2;\n      }\n      else {\n        iVar10 = puVar2[local_38 + 10];\n        iVar12 = local_38 + 1;\n        if (iVar10 != 0) {\n          do {\n            puVar2[iVar12 + 8] = iVar10;\n            if (iVar12 == 2) goto LAB_0003ea09;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);\n          local_38 = 1;\n        }\n      }\n      puVar2[local_38 + 9] = 0;\n      while (puVar3 = puVar5, puVar3 != (undefined4 *)0x0) {\n        iVar12 = 0;\n        if (((undefined4 *)puVar3[1] != puVar2) && (iVar12 = 1, (undefined4 *)puVar3[2] != puVar2))\n        {\n          iVar12 = ((undefined4 *)puVar3[3] != puVar2) + 2;\n        }\n        puVar3[iVar12 + 5] = puVar3[iVar12 + 5] + -1;\n        puVar2 = puVar3;\n        puVar5 = (undefined4 *)*puVar3;\n      }\n      return local_34;\n    }\n  }\n  else if ((iVar12 == 0) && (puVar2[10] != 0)) goto LAB_0003e9d5;" statement_identifier : (if_statement "if (puVar5 == (undefined4 *)0x0) {\n    if (puVar2[10] == 0) {\n      if (iVar12 == 0) {\n        FUN_0001a110(puVar2);\n        *puVar3 = 0;\n        return local_34;\n      }\n    }\n    else if (iVar12 == 0) {\n      puVar5 = (undefined4 *)0x0;\nLAB_0003e9d5:\n      if (local_38 == 2) {\nLAB_0003ea09:\n        local_38 = 2;\n      }\n      else {\n        iVar10 = puVar2[local_38 + 10];\n        iVar12 = local_38 + 1;\n        if (iVar10 != 0) {\n          do {\n            puVar2[iVar12 + 8] = iVar10;\n            if (iVar12 == 2) goto LAB_0003ea09;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);\n          local_38 = 1;\n        }\n      }\n      puVar2[local_38 + 9] = 0;\n      while (puVar3 = puVar5, puVar3 != (undefined4 *)0x0) {\n        iVar12 = 0;\n        if (((undefined4 *)puVar3[1] != puVar2) && (iVar12 = 1, (undefined4 *)puVar3[2] != puVar2))\n        {\n          iVar12 = ((undefined4 *)puVar3[3] != puVar2) + 2;\n        }\n        puVar3[iVar12 + 5] = puVar3[iVar12 + 5] + -1;\n        puVar2 = puVar3;\n        puVar5 = (undefined4 *)*puVar3;\n      }\n      return local_34;\n    }\n  }\n  else if ((iVar12 == 0) && (puVar2[10] != 0)) goto LAB_0003e9d5;" if (parenthesized_expression "(puVar5 == (undefined4 *)0x0)" ( (binary_expression "puVar5 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (puVar2[10] == 0) {\n      if (iVar12 == 0) {\n        FUN_0001a110(puVar2);\n        *puVar3 = 0;\n        return local_34;\n      }\n    }\n    else if (iVar12 == 0) {\n      puVar5 = (undefined4 *)0x0;\nLAB_0003e9d5:\n      if (local_38 == 2) {\nLAB_0003ea09:\n        local_38 = 2;\n      }\n      else {\n        iVar10 = puVar2[local_38 + 10];\n        iVar12 = local_38 + 1;\n        if (iVar10 != 0) {\n          do {\n            puVar2[iVar12 + 8] = iVar10;\n            if (iVar12 == 2) goto LAB_0003ea09;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);\n          local_38 = 1;\n        }\n      }\n      puVar2[local_38 + 9] = 0;\n      while (puVar3 = puVar5, puVar3 != (undefined4 *)0x0) {\n        iVar12 = 0;\n        if (((undefined4 *)puVar3[1] != puVar2) && (iVar12 = 1, (undefined4 *)puVar3[2] != puVar2))\n        {\n          iVar12 = ((undefined4 *)puVar3[3] != puVar2) + 2;\n        }\n        puVar3[iVar12 + 5] = puVar3[iVar12 + 5] + -1;\n        puVar2 = puVar3;\n        puVar5 = (undefined4 *)*puVar3;\n      }\n      return local_34;\n    }\n  }" { (if_statement "if (puVar2[10] == 0) {\n      if (iVar12 == 0) {\n        FUN_0001a110(puVar2);\n        *puVar3 = 0;\n        return local_34;\n      }\n    }\n    else if (iVar12 == 0) {\n      puVar5 = (undefined4 *)0x0;\nLAB_0003e9d5:\n      if (local_38 == 2) {\nLAB_0003ea09:\n        local_38 = 2;\n      }\n      else {\n        iVar10 = puVar2[local_38 + 10];\n        iVar12 = local_38 + 1;\n        if (iVar10 != 0) {\n          do {\n            puVar2[iVar12 + 8] = iVar10;\n            if (iVar12 == 2) goto LAB_0003ea09;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);\n          local_38 = 1;\n        }\n      }\n      puVar2[local_38 + 9] = 0;\n      while (puVar3 = puVar5, puVar3 != (undefined4 *)0x0) {\n        iVar12 = 0;\n        if (((undefined4 *)puVar3[1] != puVar2) && (iVar12 = 1, (undefined4 *)puVar3[2] != puVar2))\n        {\n          iVar12 = ((undefined4 *)puVar3[3] != puVar2) + 2;\n        }\n        puVar3[iVar12 + 5] = puVar3[iVar12 + 5] + -1;\n        puVar2 = puVar3;\n        puVar5 = (undefined4 *)*puVar3;\n      }\n      return local_34;\n    }" if (parenthesized_expression "(puVar2[10] == 0)" ( (binary_expression "puVar2[10] == 0" (subscript_expression "puVar2[10]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      if (iVar12 == 0) {\n        FUN_0001a110(puVar2);\n        *puVar3 = 0;\n        return local_34;\n      }\n    }" { (if_statement "if (iVar12 == 0) {\n        FUN_0001a110(puVar2);\n        *puVar3 = 0;\n        return local_34;\n      }" if (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) )) (compound_statement "{\n        FUN_0001a110(puVar2);\n        *puVar3 = 0;\n        return local_34;\n      }" { (expression_statement "FUN_0001a110(puVar2);" (call_expression "FUN_0001a110(puVar2)" identifier (argument_list "(puVar2)" ( identifier ))) ;) (expression_statement "*puVar3 = 0;" (assignment_expression "*puVar3 = 0" (pointer_expression "*puVar3" * identifier) = number_literal) ;) (return_statement "return local_34;" return identifier ;) })) }) (else_clause "else if (iVar12 == 0) {\n      puVar5 = (undefined4 *)0x0;\nLAB_0003e9d5:\n      if (local_38 == 2) {\nLAB_0003ea09:\n        local_38 = 2;\n      }\n      else {\n        iVar10 = puVar2[local_38 + 10];\n        iVar12 = local_38 + 1;\n        if (iVar10 != 0) {\n          do {\n            puVar2[iVar12 + 8] = iVar10;\n            if (iVar12 == 2) goto LAB_0003ea09;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);\n          local_38 = 1;\n        }\n      }\n      puVar2[local_38 + 9] = 0;\n      while (puVar3 = puVar5, puVar3 != (undefined4 *)0x0) {\n        iVar12 = 0;\n        if (((undefined4 *)puVar3[1] != puVar2) && (iVar12 = 1, (undefined4 *)puVar3[2] != puVar2))\n        {\n          iVar12 = ((undefined4 *)puVar3[3] != puVar2) + 2;\n        }\n        puVar3[iVar12 + 5] = puVar3[iVar12 + 5] + -1;\n        puVar2 = puVar3;\n        puVar5 = (undefined4 *)*puVar3;\n      }\n      return local_34;\n    }" else (if_statement "if (iVar12 == 0) {\n      puVar5 = (undefined4 *)0x0;\nLAB_0003e9d5:\n      if (local_38 == 2) {\nLAB_0003ea09:\n        local_38 = 2;\n      }\n      else {\n        iVar10 = puVar2[local_38 + 10];\n        iVar12 = local_38 + 1;\n        if (iVar10 != 0) {\n          do {\n            puVar2[iVar12 + 8] = iVar10;\n            if (iVar12 == 2) goto LAB_0003ea09;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);\n          local_38 = 1;\n        }\n      }\n      puVar2[local_38 + 9] = 0;\n      while (puVar3 = puVar5, puVar3 != (undefined4 *)0x0) {\n        iVar12 = 0;\n        if (((undefined4 *)puVar3[1] != puVar2) && (iVar12 = 1, (undefined4 *)puVar3[2] != puVar2))\n        {\n          iVar12 = ((undefined4 *)puVar3[3] != puVar2) + 2;\n        }\n        puVar3[iVar12 + 5] = puVar3[iVar12 + 5] + -1;\n        puVar2 = puVar3;\n        puVar5 = (undefined4 *)*puVar3;\n      }\n      return local_34;\n    }" if (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) )) (compound_statement "{\n      puVar5 = (undefined4 *)0x0;\nLAB_0003e9d5:\n      if (local_38 == 2) {\nLAB_0003ea09:\n        local_38 = 2;\n      }\n      else {\n        iVar10 = puVar2[local_38 + 10];\n        iVar12 = local_38 + 1;\n        if (iVar10 != 0) {\n          do {\n            puVar2[iVar12 + 8] = iVar10;\n            if (iVar12 == 2) goto LAB_0003ea09;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);\n          local_38 = 1;\n        }\n      }\n      puVar2[local_38 + 9] = 0;\n      while (puVar3 = puVar5, puVar3 != (undefined4 *)0x0) {\n        iVar12 = 0;\n        if (((undefined4 *)puVar3[1] != puVar2) && (iVar12 = 1, (undefined4 *)puVar3[2] != puVar2))\n        {\n          iVar12 = ((undefined4 *)puVar3[3] != puVar2) + 2;\n        }\n        puVar3[iVar12 + 5] = puVar3[iVar12 + 5] + -1;\n        puVar2 = puVar3;\n        puVar5 = (undefined4 *)*puVar3;\n      }\n      return local_34;\n    }" { (expression_statement "puVar5 = (undefined4 *)0x0;" (assignment_expression "puVar5 = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_0003e9d5:\n      if (local_38 == 2) {\nLAB_0003ea09:\n        local_38 = 2;\n      }\n      else {\n        iVar10 = puVar2[local_38 + 10];\n        iVar12 = local_38 + 1;\n        if (iVar10 != 0) {\n          do {\n            puVar2[iVar12 + 8] = iVar10;\n            if (iVar12 == 2) goto LAB_0003ea09;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);\n          local_38 = 1;\n        }\n      }" statement_identifier : (if_statement "if (local_38 == 2) {\nLAB_0003ea09:\n        local_38 = 2;\n      }\n      else {\n        iVar10 = puVar2[local_38 + 10];\n        iVar12 = local_38 + 1;\n        if (iVar10 != 0) {\n          do {\n            puVar2[iVar12 + 8] = iVar10;\n            if (iVar12 == 2) goto LAB_0003ea09;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);\n          local_38 = 1;\n        }\n      }" if (parenthesized_expression "(local_38 == 2)" ( (binary_expression "local_38 == 2" identifier == number_literal) )) (compound_statement "{\nLAB_0003ea09:\n        local_38 = 2;\n      }" { (labeled_statement "LAB_0003ea09:\n        local_38 = 2;" statement_identifier : (expression_statement "local_38 = 2;" (assignment_expression "local_38 = 2" identifier = number_literal) ;)) }) (else_clause "else {\n        iVar10 = puVar2[local_38 + 10];\n        iVar12 = local_38 + 1;\n        if (iVar10 != 0) {\n          do {\n            puVar2[iVar12 + 8] = iVar10;\n            if (iVar12 == 2) goto LAB_0003ea09;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);\n          local_38 = 1;\n        }\n      }" else (compound_statement "{\n        iVar10 = puVar2[local_38 + 10];\n        iVar12 = local_38 + 1;\n        if (iVar10 != 0) {\n          do {\n            puVar2[iVar12 + 8] = iVar10;\n            if (iVar12 == 2) goto LAB_0003ea09;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);\n          local_38 = 1;\n        }\n      }" { (expression_statement "iVar10 = puVar2[local_38 + 10];" (assignment_expression "iVar10 = puVar2[local_38 + 10]" identifier = (subscript_expression "puVar2[local_38 + 10]" identifier [ (binary_expression "local_38 + 10" identifier + number_literal) ])) ;) (expression_statement "iVar12 = local_38 + 1;" (assignment_expression "iVar12 = local_38 + 1" identifier = (binary_expression "local_38 + 1" identifier + number_literal)) ;) (if_statement "if (iVar10 != 0) {\n          do {\n            puVar2[iVar12 + 8] = iVar10;\n            if (iVar12 == 2) goto LAB_0003ea09;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);\n          local_38 = 1;\n        }" if (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) (compound_statement "{\n          do {\n            puVar2[iVar12 + 8] = iVar10;\n            if (iVar12 == 2) goto LAB_0003ea09;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);\n          local_38 = 1;\n        }" { (do_statement "do {\n            puVar2[iVar12 + 8] = iVar10;\n            if (iVar12 == 2) goto LAB_0003ea09;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);" do (compound_statement "{\n            puVar2[iVar12 + 8] = iVar10;\n            if (iVar12 == 2) goto LAB_0003ea09;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          }" { (expression_statement "puVar2[iVar12 + 8] = iVar10;" (assignment_expression "puVar2[iVar12 + 8] = iVar10" (subscript_expression "puVar2[iVar12 + 8]" identifier [ (binary_expression "iVar12 + 8" identifier + number_literal) ]) = identifier) ;) (if_statement "if (iVar12 == 2) goto LAB_0003ea09;" if (parenthesized_expression "(iVar12 == 2)" ( (binary_expression "iVar12 == 2" identifier == number_literal) )) (goto_statement "goto LAB_0003ea09;" goto statement_identifier ;)) (expression_statement "iVar10 = puVar2[0xb];" (assignment_expression "iVar10 = puVar2[0xb]" identifier = (subscript_expression "puVar2[0xb]" identifier [ number_literal ])) ;) (expression_statement "iVar12 = 2;" (assignment_expression "iVar12 = 2" identifier = number_literal) ;) }) while (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) ;) (expression_statement "local_38 = 1;" (assignment_expression "local_38 = 1" identifier = number_literal) ;) })) })))) (expression_statement "puVar2[local_38 + 9] = 0;" (assignment_expression "puVar2[local_38 + 9] = 0" (subscript_expression "puVar2[local_38 + 9]" identifier [ (binary_expression "local_38 + 9" identifier + number_literal) ]) = number_literal) ;) (while_statement "while (puVar3 = puVar5, puVar3 != (undefined4 *)0x0) {\n        iVar12 = 0;\n        if (((undefined4 *)puVar3[1] != puVar2) && (iVar12 = 1, (undefined4 *)puVar3[2] != puVar2))\n        {\n          iVar12 = ((undefined4 *)puVar3[3] != puVar2) + 2;\n        }\n        puVar3[iVar12 + 5] = puVar3[iVar12 + 5] + -1;\n        puVar2 = puVar3;\n        puVar5 = (undefined4 *)*puVar3;\n      }" while (parenthesized_expression "(puVar3 = puVar5, puVar3 != (undefined4 *)0x0)" ( (comma_expression "puVar3 = puVar5, puVar3 != (undefined4 *)0x0" (assignment_expression "puVar3 = puVar5" identifier = identifier) , (binary_expression "puVar3 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) )) (compound_statement "{\n        iVar12 = 0;\n        if (((undefined4 *)puVar3[1] != puVar2) && (iVar12 = 1, (undefined4 *)puVar3[2] != puVar2))\n        {\n          iVar12 = ((undefined4 *)puVar3[3] != puVar2) + 2;\n        }\n        puVar3[iVar12 + 5] = puVar3[iVar12 + 5] + -1;\n        puVar2 = puVar3;\n        puVar5 = (undefined4 *)*puVar3;\n      }" { (expression_statement "iVar12 = 0;" (assignment_expression "iVar12 = 0" identifier = number_literal) ;) (if_statement "if (((undefined4 *)puVar3[1] != puVar2) && (iVar12 = 1, (undefined4 *)puVar3[2] != puVar2))\n        {\n          iVar12 = ((undefined4 *)puVar3[3] != puVar2) + 2;\n        }" if (parenthesized_expression "(((undefined4 *)puVar3[1] != puVar2) && (iVar12 = 1, (undefined4 *)puVar3[2] != puVar2))" ( (binary_expression "((undefined4 *)puVar3[1] != puVar2) && (iVar12 = 1, (undefined4 *)puVar3[2] != puVar2)" (parenthesized_expression "((undefined4 *)puVar3[1] != puVar2)" ( (binary_expression "(undefined4 *)puVar3[1] != puVar2" (cast_expression "(undefined4 *)puVar3[1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar3[1]" identifier [ number_literal ])) != identifier) )) && (parenthesized_expression "(iVar12 = 1, (undefined4 *)puVar3[2] != puVar2)" ( (comma_expression "iVar12 = 1, (undefined4 *)puVar3[2] != puVar2" (assignment_expression "iVar12 = 1" identifier = number_literal) , (binary_expression "(undefined4 *)puVar3[2] != puVar2" (cast_expression "(undefined4 *)puVar3[2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar3[2]" identifier [ number_literal ])) != identifier)) ))) )) (compound_statement "{\n          iVar12 = ((undefined4 *)puVar3[3] != puVar2) + 2;\n        }" { (expression_statement "iVar12 = ((undefined4 *)puVar3[3] != puVar2) + 2;" (assignment_expression "iVar12 = ((undefined4 *)puVar3[3] != puVar2) + 2" identifier = (binary_expression "((undefined4 *)puVar3[3] != puVar2) + 2" (parenthesized_expression "((undefined4 *)puVar3[3] != puVar2)" ( (binary_expression "(undefined4 *)puVar3[3] != puVar2" (cast_expression "(undefined4 *)puVar3[3]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar3[3]" identifier [ number_literal ])) != identifier) )) + number_literal)) ;) })) (expression_statement "puVar3[iVar12 + 5] = puVar3[iVar12 + 5] + -1;" (assignment_expression "puVar3[iVar12 + 5] = puVar3[iVar12 + 5] + -1" (subscript_expression "puVar3[iVar12 + 5]" identifier [ (binary_expression "iVar12 + 5" identifier + number_literal) ]) = (binary_expression "puVar3[iVar12 + 5] + -1" (subscript_expression "puVar3[iVar12 + 5]" identifier [ (binary_expression "iVar12 + 5" identifier + number_literal) ]) + number_literal)) ;) (expression_statement "puVar2 = puVar3;" (assignment_expression "puVar2 = puVar3" identifier = identifier) ;) (expression_statement "puVar5 = (undefined4 *)*puVar3;" (assignment_expression "puVar5 = (undefined4 *)*puVar3" identifier = (cast_expression "(undefined4 *)*puVar3" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar3" * identifier))) ;) })) (return_statement "return local_34;" return identifier ;) })))) }) (else_clause "else if ((iVar12 == 0) && (puVar2[10] != 0)) goto LAB_0003e9d5;" else (if_statement "if ((iVar12 == 0) && (puVar2[10] != 0)) goto LAB_0003e9d5;" if (parenthesized_expression "((iVar12 == 0) && (puVar2[10] != 0))" ( (binary_expression "(iVar12 == 0) && (puVar2[10] != 0)" (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) )) && (parenthesized_expression "(puVar2[10] != 0)" ( (binary_expression "puVar2[10] != 0" (subscript_expression "puVar2[10]" identifier [ number_literal ]) != number_literal) ))) )) (goto_statement "goto LAB_0003e9d5;" goto statement_identifier ;))))) (expression_statement "puVar5 = (undefined4 *)puVar2[local_38 + 1];" (assignment_expression "puVar5 = (undefined4 *)puVar2[local_38 + 1]" identifier = (cast_expression "(undefined4 *)puVar2[local_38 + 1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar2[local_38 + 1]" identifier [ (binary_expression "local_38 + 1" identifier + number_literal) ]))) ;) (expression_statement "puVar4 = puVar5;" (assignment_expression "puVar4 = puVar5" identifier = identifier) ;) (if_statement "if (puVar5[10] == 0) {\n    puVar4 = (undefined4 *)puVar2[local_38 + 2];\n    iVar12 = local_38 + 1;\n    puVar11 = (undefined4 *)puVar4[1];\n    puVar9 = puVar4;\n    if (puVar4[10] == 0) {\n      uVar7 = puVar2[local_38 + 9];\n      puVar5[3] = puVar11;\n      puVar5[10] = uVar7;\n      puVar5[7] = puVar4[5];\n      if (puVar11 != (undefined4 *)0x0) {\n        *puVar11 = puVar5;\n      }\n      uVar7 = puVar4[6];\n      puVar5[0xb] = puVar4[9];\n      puVar11 = (undefined4 *)puVar4[2];\n      puVar5[8] = uVar7;\n      puVar5[4] = puVar11;\n      if (puVar11 != (undefined4 *)0x0) {\n        *puVar11 = puVar5;\n      }\n      FUN_0001a110(puVar4);\n      uVar7 = FUN_0003e010();\n      puVar2[local_38 + 5] = uVar7;\n      if (local_38 == 2) {\nLAB_0003ec29:\n        iVar12 = 3;\n        iVar6 = 2;\n      }\n      else {\n        iVar10 = puVar2[local_38 + 10];\n        iVar6 = local_38;\n        if (iVar10 != 0) {\n          do {\n            puVar2[iVar12 + 8] = iVar10;\n            puVar2[iVar12 + 1] = puVar2[iVar12 + 2];\n            puVar2[iVar12 + 5] = puVar2[iVar12 + 6];\n            if (iVar12 == 2) goto LAB_0003ec29;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);\n          iVar6 = 1;\n        }\n      }\n      puVar2[iVar6 + 9] = 0;\n      puVar2[iVar12 + 1] = 0;\n      puVar2[iVar12 + 5] = 0;\n      if (puVar2[9] == 0) {\n        *puVar3 = puVar5;\n        *puVar5 = 0;\n        FUN_0001a110(puVar2);\n      }\n      param_2 = puVar5[6] + puVar5[5] + 1;\n    }\n    else {\n      while (puVar5 = puVar11, puVar5 != (undefined4 *)0x0) {\n        puVar9 = puVar5;\n        puVar11 = (undefined4 *)puVar5[1];\n      }\n      puVar2[local_38 + 9] = puVar9[9];\n      param_2 = 0;\n      puVar5 = puVar4;\n    }\n  }\n  else {\n    while (puVar11 = (undefined4 *)puVar4[1], puVar11 != (undefined4 *)0x0) {\n      while ((puVar9 = (undefined4 *)puVar4[4], (undefined4 *)puVar4[4] != (undefined4 *)0x0 ||\n             (puVar9 = (undefined4 *)puVar4[3], (undefined4 *)puVar4[3] != (undefined4 *)0x0))) {\n        puVar4 = puVar9;\n        puVar11 = (undefined4 *)puVar4[1];\n        if (puVar11 == (undefined4 *)0x0) goto LAB_0003e958;\n      }\n      puVar9 = puVar4 + 2;\n      puVar4 = (undefined4 *)*puVar9;\n      if ((undefined4 *)*puVar9 == (undefined4 *)0x0) {\n        puVar4 = puVar11;\n      }\n    }\nLAB_0003e958:\n    iVar12 = puVar4[0xb];\n    if ((iVar12 == 0) && (iVar12 = puVar4[10], iVar12 == 0)) {\n      iVar12 = puVar4[9];\n    }\n    puVar2[local_38 + 9] = iVar12;\n    param_2 = puVar2[local_38 + 5] + -1;\n  }" if (parenthesized_expression "(puVar5[10] == 0)" ( (binary_expression "puVar5[10] == 0" (subscript_expression "puVar5[10]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n    puVar4 = (undefined4 *)puVar2[local_38 + 2];\n    iVar12 = local_38 + 1;\n    puVar11 = (undefined4 *)puVar4[1];\n    puVar9 = puVar4;\n    if (puVar4[10] == 0) {\n      uVar7 = puVar2[local_38 + 9];\n      puVar5[3] = puVar11;\n      puVar5[10] = uVar7;\n      puVar5[7] = puVar4[5];\n      if (puVar11 != (undefined4 *)0x0) {\n        *puVar11 = puVar5;\n      }\n      uVar7 = puVar4[6];\n      puVar5[0xb] = puVar4[9];\n      puVar11 = (undefined4 *)puVar4[2];\n      puVar5[8] = uVar7;\n      puVar5[4] = puVar11;\n      if (puVar11 != (undefined4 *)0x0) {\n        *puVar11 = puVar5;\n      }\n      FUN_0001a110(puVar4);\n      uVar7 = FUN_0003e010();\n      puVar2[local_38 + 5] = uVar7;\n      if (local_38 == 2) {\nLAB_0003ec29:\n        iVar12 = 3;\n        iVar6 = 2;\n      }\n      else {\n        iVar10 = puVar2[local_38 + 10];\n        iVar6 = local_38;\n        if (iVar10 != 0) {\n          do {\n            puVar2[iVar12 + 8] = iVar10;\n            puVar2[iVar12 + 1] = puVar2[iVar12 + 2];\n            puVar2[iVar12 + 5] = puVar2[iVar12 + 6];\n            if (iVar12 == 2) goto LAB_0003ec29;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);\n          iVar6 = 1;\n        }\n      }\n      puVar2[iVar6 + 9] = 0;\n      puVar2[iVar12 + 1] = 0;\n      puVar2[iVar12 + 5] = 0;\n      if (puVar2[9] == 0) {\n        *puVar3 = puVar5;\n        *puVar5 = 0;\n        FUN_0001a110(puVar2);\n      }\n      param_2 = puVar5[6] + puVar5[5] + 1;\n    }\n    else {\n      while (puVar5 = puVar11, puVar5 != (undefined4 *)0x0) {\n        puVar9 = puVar5;\n        puVar11 = (undefined4 *)puVar5[1];\n      }\n      puVar2[local_38 + 9] = puVar9[9];\n      param_2 = 0;\n      puVar5 = puVar4;\n    }\n  }" { (expression_statement "puVar4 = (undefined4 *)puVar2[local_38 + 2];" (assignment_expression "puVar4 = (undefined4 *)puVar2[local_38 + 2]" identifier = (cast_expression "(undefined4 *)puVar2[local_38 + 2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar2[local_38 + 2]" identifier [ (binary_expression "local_38 + 2" identifier + number_literal) ]))) ;) (expression_statement "iVar12 = local_38 + 1;" (assignment_expression "iVar12 = local_38 + 1" identifier = (binary_expression "local_38 + 1" identifier + number_literal)) ;) (expression_statement "puVar11 = (undefined4 *)puVar4[1];" (assignment_expression "puVar11 = (undefined4 *)puVar4[1]" identifier = (cast_expression "(undefined4 *)puVar4[1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar4[1]" identifier [ number_literal ]))) ;) (expression_statement "puVar9 = puVar4;" (assignment_expression "puVar9 = puVar4" identifier = identifier) ;) (if_statement "if (puVar4[10] == 0) {\n      uVar7 = puVar2[local_38 + 9];\n      puVar5[3] = puVar11;\n      puVar5[10] = uVar7;\n      puVar5[7] = puVar4[5];\n      if (puVar11 != (undefined4 *)0x0) {\n        *puVar11 = puVar5;\n      }\n      uVar7 = puVar4[6];\n      puVar5[0xb] = puVar4[9];\n      puVar11 = (undefined4 *)puVar4[2];\n      puVar5[8] = uVar7;\n      puVar5[4] = puVar11;\n      if (puVar11 != (undefined4 *)0x0) {\n        *puVar11 = puVar5;\n      }\n      FUN_0001a110(puVar4);\n      uVar7 = FUN_0003e010();\n      puVar2[local_38 + 5] = uVar7;\n      if (local_38 == 2) {\nLAB_0003ec29:\n        iVar12 = 3;\n        iVar6 = 2;\n      }\n      else {\n        iVar10 = puVar2[local_38 + 10];\n        iVar6 = local_38;\n        if (iVar10 != 0) {\n          do {\n            puVar2[iVar12 + 8] = iVar10;\n            puVar2[iVar12 + 1] = puVar2[iVar12 + 2];\n            puVar2[iVar12 + 5] = puVar2[iVar12 + 6];\n            if (iVar12 == 2) goto LAB_0003ec29;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);\n          iVar6 = 1;\n        }\n      }\n      puVar2[iVar6 + 9] = 0;\n      puVar2[iVar12 + 1] = 0;\n      puVar2[iVar12 + 5] = 0;\n      if (puVar2[9] == 0) {\n        *puVar3 = puVar5;\n        *puVar5 = 0;\n        FUN_0001a110(puVar2);\n      }\n      param_2 = puVar5[6] + puVar5[5] + 1;\n    }\n    else {\n      while (puVar5 = puVar11, puVar5 != (undefined4 *)0x0) {\n        puVar9 = puVar5;\n        puVar11 = (undefined4 *)puVar5[1];\n      }\n      puVar2[local_38 + 9] = puVar9[9];\n      param_2 = 0;\n      puVar5 = puVar4;\n    }" if (parenthesized_expression "(puVar4[10] == 0)" ( (binary_expression "puVar4[10] == 0" (subscript_expression "puVar4[10]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      uVar7 = puVar2[local_38 + 9];\n      puVar5[3] = puVar11;\n      puVar5[10] = uVar7;\n      puVar5[7] = puVar4[5];\n      if (puVar11 != (undefined4 *)0x0) {\n        *puVar11 = puVar5;\n      }\n      uVar7 = puVar4[6];\n      puVar5[0xb] = puVar4[9];\n      puVar11 = (undefined4 *)puVar4[2];\n      puVar5[8] = uVar7;\n      puVar5[4] = puVar11;\n      if (puVar11 != (undefined4 *)0x0) {\n        *puVar11 = puVar5;\n      }\n      FUN_0001a110(puVar4);\n      uVar7 = FUN_0003e010();\n      puVar2[local_38 + 5] = uVar7;\n      if (local_38 == 2) {\nLAB_0003ec29:\n        iVar12 = 3;\n        iVar6 = 2;\n      }\n      else {\n        iVar10 = puVar2[local_38 + 10];\n        iVar6 = local_38;\n        if (iVar10 != 0) {\n          do {\n            puVar2[iVar12 + 8] = iVar10;\n            puVar2[iVar12 + 1] = puVar2[iVar12 + 2];\n            puVar2[iVar12 + 5] = puVar2[iVar12 + 6];\n            if (iVar12 == 2) goto LAB_0003ec29;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);\n          iVar6 = 1;\n        }\n      }\n      puVar2[iVar6 + 9] = 0;\n      puVar2[iVar12 + 1] = 0;\n      puVar2[iVar12 + 5] = 0;\n      if (puVar2[9] == 0) {\n        *puVar3 = puVar5;\n        *puVar5 = 0;\n        FUN_0001a110(puVar2);\n      }\n      param_2 = puVar5[6] + puVar5[5] + 1;\n    }" { (expression_statement "uVar7 = puVar2[local_38 + 9];" (assignment_expression "uVar7 = puVar2[local_38 + 9]" identifier = (subscript_expression "puVar2[local_38 + 9]" identifier [ (binary_expression "local_38 + 9" identifier + number_literal) ])) ;) (expression_statement "puVar5[3] = puVar11;" (assignment_expression "puVar5[3] = puVar11" (subscript_expression "puVar5[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar5[10] = uVar7;" (assignment_expression "puVar5[10] = uVar7" (subscript_expression "puVar5[10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar5[7] = puVar4[5];" (assignment_expression "puVar5[7] = puVar4[5]" (subscript_expression "puVar5[7]" identifier [ number_literal ]) = (subscript_expression "puVar4[5]" identifier [ number_literal ])) ;) (if_statement "if (puVar11 != (undefined4 *)0x0) {\n        *puVar11 = puVar5;\n      }" if (parenthesized_expression "(puVar11 != (undefined4 *)0x0)" ( (binary_expression "puVar11 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        *puVar11 = puVar5;\n      }" { (expression_statement "*puVar11 = puVar5;" (assignment_expression "*puVar11 = puVar5" (pointer_expression "*puVar11" * identifier) = identifier) ;) })) (expression_statement "uVar7 = puVar4[6];" (assignment_expression "uVar7 = puVar4[6]" identifier = (subscript_expression "puVar4[6]" identifier [ number_literal ])) ;) (expression_statement "puVar5[0xb] = puVar4[9];" (assignment_expression "puVar5[0xb] = puVar4[9]" (subscript_expression "puVar5[0xb]" identifier [ number_literal ]) = (subscript_expression "puVar4[9]" identifier [ number_literal ])) ;) (expression_statement "puVar11 = (undefined4 *)puVar4[2];" (assignment_expression "puVar11 = (undefined4 *)puVar4[2]" identifier = (cast_expression "(undefined4 *)puVar4[2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar4[2]" identifier [ number_literal ]))) ;) (expression_statement "puVar5[8] = uVar7;" (assignment_expression "puVar5[8] = uVar7" (subscript_expression "puVar5[8]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar5[4] = puVar11;" (assignment_expression "puVar5[4] = puVar11" (subscript_expression "puVar5[4]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (puVar11 != (undefined4 *)0x0) {\n        *puVar11 = puVar5;\n      }" if (parenthesized_expression "(puVar11 != (undefined4 *)0x0)" ( (binary_expression "puVar11 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        *puVar11 = puVar5;\n      }" { (expression_statement "*puVar11 = puVar5;" (assignment_expression "*puVar11 = puVar5" (pointer_expression "*puVar11" * identifier) = identifier) ;) })) (expression_statement "FUN_0001a110(puVar4);" (call_expression "FUN_0001a110(puVar4)" identifier (argument_list "(puVar4)" ( identifier ))) ;) (expression_statement "uVar7 = FUN_0003e010();" (assignment_expression "uVar7 = FUN_0003e010()" identifier = (call_expression "FUN_0003e010()" identifier (argument_list "()" ( )))) ;) (expression_statement "puVar2[local_38 + 5] = uVar7;" (assignment_expression "puVar2[local_38 + 5] = uVar7" (subscript_expression "puVar2[local_38 + 5]" identifier [ (binary_expression "local_38 + 5" identifier + number_literal) ]) = identifier) ;) (if_statement "if (local_38 == 2) {\nLAB_0003ec29:\n        iVar12 = 3;\n        iVar6 = 2;\n      }\n      else {\n        iVar10 = puVar2[local_38 + 10];\n        iVar6 = local_38;\n        if (iVar10 != 0) {\n          do {\n            puVar2[iVar12 + 8] = iVar10;\n            puVar2[iVar12 + 1] = puVar2[iVar12 + 2];\n            puVar2[iVar12 + 5] = puVar2[iVar12 + 6];\n            if (iVar12 == 2) goto LAB_0003ec29;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);\n          iVar6 = 1;\n        }\n      }" if (parenthesized_expression "(local_38 == 2)" ( (binary_expression "local_38 == 2" identifier == number_literal) )) (compound_statement "{\nLAB_0003ec29:\n        iVar12 = 3;\n        iVar6 = 2;\n      }" { (labeled_statement "LAB_0003ec29:\n        iVar12 = 3;" statement_identifier : (expression_statement "iVar12 = 3;" (assignment_expression "iVar12 = 3" identifier = number_literal) ;)) (expression_statement "iVar6 = 2;" (assignment_expression "iVar6 = 2" identifier = number_literal) ;) }) (else_clause "else {\n        iVar10 = puVar2[local_38 + 10];\n        iVar6 = local_38;\n        if (iVar10 != 0) {\n          do {\n            puVar2[iVar12 + 8] = iVar10;\n            puVar2[iVar12 + 1] = puVar2[iVar12 + 2];\n            puVar2[iVar12 + 5] = puVar2[iVar12 + 6];\n            if (iVar12 == 2) goto LAB_0003ec29;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);\n          iVar6 = 1;\n        }\n      }" else (compound_statement "{\n        iVar10 = puVar2[local_38 + 10];\n        iVar6 = local_38;\n        if (iVar10 != 0) {\n          do {\n            puVar2[iVar12 + 8] = iVar10;\n            puVar2[iVar12 + 1] = puVar2[iVar12 + 2];\n            puVar2[iVar12 + 5] = puVar2[iVar12 + 6];\n            if (iVar12 == 2) goto LAB_0003ec29;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);\n          iVar6 = 1;\n        }\n      }" { (expression_statement "iVar10 = puVar2[local_38 + 10];" (assignment_expression "iVar10 = puVar2[local_38 + 10]" identifier = (subscript_expression "puVar2[local_38 + 10]" identifier [ (binary_expression "local_38 + 10" identifier + number_literal) ])) ;) (expression_statement "iVar6 = local_38;" (assignment_expression "iVar6 = local_38" identifier = identifier) ;) (if_statement "if (iVar10 != 0) {\n          do {\n            puVar2[iVar12 + 8] = iVar10;\n            puVar2[iVar12 + 1] = puVar2[iVar12 + 2];\n            puVar2[iVar12 + 5] = puVar2[iVar12 + 6];\n            if (iVar12 == 2) goto LAB_0003ec29;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);\n          iVar6 = 1;\n        }" if (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) (compound_statement "{\n          do {\n            puVar2[iVar12 + 8] = iVar10;\n            puVar2[iVar12 + 1] = puVar2[iVar12 + 2];\n            puVar2[iVar12 + 5] = puVar2[iVar12 + 6];\n            if (iVar12 == 2) goto LAB_0003ec29;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);\n          iVar6 = 1;\n        }" { (do_statement "do {\n            puVar2[iVar12 + 8] = iVar10;\n            puVar2[iVar12 + 1] = puVar2[iVar12 + 2];\n            puVar2[iVar12 + 5] = puVar2[iVar12 + 6];\n            if (iVar12 == 2) goto LAB_0003ec29;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);" do (compound_statement "{\n            puVar2[iVar12 + 8] = iVar10;\n            puVar2[iVar12 + 1] = puVar2[iVar12 + 2];\n            puVar2[iVar12 + 5] = puVar2[iVar12 + 6];\n            if (iVar12 == 2) goto LAB_0003ec29;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          }" { (expression_statement "puVar2[iVar12 + 8] = iVar10;" (assignment_expression "puVar2[iVar12 + 8] = iVar10" (subscript_expression "puVar2[iVar12 + 8]" identifier [ (binary_expression "iVar12 + 8" identifier + number_literal) ]) = identifier) ;) (expression_statement "puVar2[iVar12 + 1] = puVar2[iVar12 + 2];" (assignment_expression "puVar2[iVar12 + 1] = puVar2[iVar12 + 2]" (subscript_expression "puVar2[iVar12 + 1]" identifier [ (binary_expression "iVar12 + 1" identifier + number_literal) ]) = (subscript_expression "puVar2[iVar12 + 2]" identifier [ (binary_expression "iVar12 + 2" identifier + number_literal) ])) ;) (expression_statement "puVar2[iVar12 + 5] = puVar2[iVar12 + 6];" (assignment_expression "puVar2[iVar12 + 5] = puVar2[iVar12 + 6]" (subscript_expression "puVar2[iVar12 + 5]" identifier [ (binary_expression "iVar12 + 5" identifier + number_literal) ]) = (subscript_expression "puVar2[iVar12 + 6]" identifier [ (binary_expression "iVar12 + 6" identifier + number_literal) ])) ;) (if_statement "if (iVar12 == 2) goto LAB_0003ec29;" if (parenthesized_expression "(iVar12 == 2)" ( (binary_expression "iVar12 == 2" identifier == number_literal) )) (goto_statement "goto LAB_0003ec29;" goto statement_identifier ;)) (expression_statement "iVar10 = puVar2[0xb];" (assignment_expression "iVar10 = puVar2[0xb]" identifier = (subscript_expression "puVar2[0xb]" identifier [ number_literal ])) ;) (expression_statement "iVar12 = 2;" (assignment_expression "iVar12 = 2" identifier = number_literal) ;) }) while (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) ;) (expression_statement "iVar6 = 1;" (assignment_expression "iVar6 = 1" identifier = number_literal) ;) })) }))) (expression_statement "puVar2[iVar6 + 9] = 0;" (assignment_expression "puVar2[iVar6 + 9] = 0" (subscript_expression "puVar2[iVar6 + 9]" identifier [ (binary_expression "iVar6 + 9" identifier + number_literal) ]) = number_literal) ;) (expression_statement "puVar2[iVar12 + 1] = 0;" (assignment_expression "puVar2[iVar12 + 1] = 0" (subscript_expression "puVar2[iVar12 + 1]" identifier [ (binary_expression "iVar12 + 1" identifier + number_literal) ]) = number_literal) ;) (expression_statement "puVar2[iVar12 + 5] = 0;" (assignment_expression "puVar2[iVar12 + 5] = 0" (subscript_expression "puVar2[iVar12 + 5]" identifier [ (binary_expression "iVar12 + 5" identifier + number_literal) ]) = number_literal) ;) (if_statement "if (puVar2[9] == 0) {\n        *puVar3 = puVar5;\n        *puVar5 = 0;\n        FUN_0001a110(puVar2);\n      }" if (parenthesized_expression "(puVar2[9] == 0)" ( (binary_expression "puVar2[9] == 0" (subscript_expression "puVar2[9]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n        *puVar3 = puVar5;\n        *puVar5 = 0;\n        FUN_0001a110(puVar2);\n      }" { (expression_statement "*puVar3 = puVar5;" (assignment_expression "*puVar3 = puVar5" (pointer_expression "*puVar3" * identifier) = identifier) ;) (expression_statement "*puVar5 = 0;" (assignment_expression "*puVar5 = 0" (pointer_expression "*puVar5" * identifier) = number_literal) ;) (expression_statement "FUN_0001a110(puVar2);" (call_expression "FUN_0001a110(puVar2)" identifier (argument_list "(puVar2)" ( identifier ))) ;) })) (expression_statement "param_2 = puVar5[6] + puVar5[5] + 1;" (assignment_expression "param_2 = puVar5[6] + puVar5[5] + 1" identifier = (binary_expression "puVar5[6] + puVar5[5] + 1" (binary_expression "puVar5[6] + puVar5[5]" (subscript_expression "puVar5[6]" identifier [ number_literal ]) + (subscript_expression "puVar5[5]" identifier [ number_literal ])) + number_literal)) ;) }) (else_clause "else {\n      while (puVar5 = puVar11, puVar5 != (undefined4 *)0x0) {\n        puVar9 = puVar5;\n        puVar11 = (undefined4 *)puVar5[1];\n      }\n      puVar2[local_38 + 9] = puVar9[9];\n      param_2 = 0;\n      puVar5 = puVar4;\n    }" else (compound_statement "{\n      while (puVar5 = puVar11, puVar5 != (undefined4 *)0x0) {\n        puVar9 = puVar5;\n        puVar11 = (undefined4 *)puVar5[1];\n      }\n      puVar2[local_38 + 9] = puVar9[9];\n      param_2 = 0;\n      puVar5 = puVar4;\n    }" { (while_statement "while (puVar5 = puVar11, puVar5 != (undefined4 *)0x0) {\n        puVar9 = puVar5;\n        puVar11 = (undefined4 *)puVar5[1];\n      }" while (parenthesized_expression "(puVar5 = puVar11, puVar5 != (undefined4 *)0x0)" ( (comma_expression "puVar5 = puVar11, puVar5 != (undefined4 *)0x0" (assignment_expression "puVar5 = puVar11" identifier = identifier) , (binary_expression "puVar5 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) )) (compound_statement "{\n        puVar9 = puVar5;\n        puVar11 = (undefined4 *)puVar5[1];\n      }" { (expression_statement "puVar9 = puVar5;" (assignment_expression "puVar9 = puVar5" identifier = identifier) ;) (expression_statement "puVar11 = (undefined4 *)puVar5[1];" (assignment_expression "puVar11 = (undefined4 *)puVar5[1]" identifier = (cast_expression "(undefined4 *)puVar5[1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar5[1]" identifier [ number_literal ]))) ;) })) (expression_statement "puVar2[local_38 + 9] = puVar9[9];" (assignment_expression "puVar2[local_38 + 9] = puVar9[9]" (subscript_expression "puVar2[local_38 + 9]" identifier [ (binary_expression "local_38 + 9" identifier + number_literal) ]) = (subscript_expression "puVar9[9]" identifier [ number_literal ])) ;) (expression_statement "param_2 = 0;" (assignment_expression "param_2 = 0" identifier = number_literal) ;) (expression_statement "puVar5 = puVar4;" (assignment_expression "puVar5 = puVar4" identifier = identifier) ;) }))) }) (else_clause "else {\n    while (puVar11 = (undefined4 *)puVar4[1], puVar11 != (undefined4 *)0x0) {\n      while ((puVar9 = (undefined4 *)puVar4[4], (undefined4 *)puVar4[4] != (undefined4 *)0x0 ||\n             (puVar9 = (undefined4 *)puVar4[3], (undefined4 *)puVar4[3] != (undefined4 *)0x0))) {\n        puVar4 = puVar9;\n        puVar11 = (undefined4 *)puVar4[1];\n        if (puVar11 == (undefined4 *)0x0) goto LAB_0003e958;\n      }\n      puVar9 = puVar4 + 2;\n      puVar4 = (undefined4 *)*puVar9;\n      if ((undefined4 *)*puVar9 == (undefined4 *)0x0) {\n        puVar4 = puVar11;\n      }\n    }\nLAB_0003e958:\n    iVar12 = puVar4[0xb];\n    if ((iVar12 == 0) && (iVar12 = puVar4[10], iVar12 == 0)) {\n      iVar12 = puVar4[9];\n    }\n    puVar2[local_38 + 9] = iVar12;\n    param_2 = puVar2[local_38 + 5] + -1;\n  }" else (compound_statement "{\n    while (puVar11 = (undefined4 *)puVar4[1], puVar11 != (undefined4 *)0x0) {\n      while ((puVar9 = (undefined4 *)puVar4[4], (undefined4 *)puVar4[4] != (undefined4 *)0x0 ||\n             (puVar9 = (undefined4 *)puVar4[3], (undefined4 *)puVar4[3] != (undefined4 *)0x0))) {\n        puVar4 = puVar9;\n        puVar11 = (undefined4 *)puVar4[1];\n        if (puVar11 == (undefined4 *)0x0) goto LAB_0003e958;\n      }\n      puVar9 = puVar4 + 2;\n      puVar4 = (undefined4 *)*puVar9;\n      if ((undefined4 *)*puVar9 == (undefined4 *)0x0) {\n        puVar4 = puVar11;\n      }\n    }\nLAB_0003e958:\n    iVar12 = puVar4[0xb];\n    if ((iVar12 == 0) && (iVar12 = puVar4[10], iVar12 == 0)) {\n      iVar12 = puVar4[9];\n    }\n    puVar2[local_38 + 9] = iVar12;\n    param_2 = puVar2[local_38 + 5] + -1;\n  }" { (while_statement "while (puVar11 = (undefined4 *)puVar4[1], puVar11 != (undefined4 *)0x0) {\n      while ((puVar9 = (undefined4 *)puVar4[4], (undefined4 *)puVar4[4] != (undefined4 *)0x0 ||\n             (puVar9 = (undefined4 *)puVar4[3], (undefined4 *)puVar4[3] != (undefined4 *)0x0))) {\n        puVar4 = puVar9;\n        puVar11 = (undefined4 *)puVar4[1];\n        if (puVar11 == (undefined4 *)0x0) goto LAB_0003e958;\n      }\n      puVar9 = puVar4 + 2;\n      puVar4 = (undefined4 *)*puVar9;\n      if ((undefined4 *)*puVar9 == (undefined4 *)0x0) {\n        puVar4 = puVar11;\n      }\n    }" while (parenthesized_expression "(puVar11 = (undefined4 *)puVar4[1], puVar11 != (undefined4 *)0x0)" ( (comma_expression "puVar11 = (undefined4 *)puVar4[1], puVar11 != (undefined4 *)0x0" (assignment_expression "puVar11 = (undefined4 *)puVar4[1]" identifier = (cast_expression "(undefined4 *)puVar4[1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar4[1]" identifier [ number_literal ]))) , (binary_expression "puVar11 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) )) (compound_statement "{\n      while ((puVar9 = (undefined4 *)puVar4[4], (undefined4 *)puVar4[4] != (undefined4 *)0x0 ||\n             (puVar9 = (undefined4 *)puVar4[3], (undefined4 *)puVar4[3] != (undefined4 *)0x0))) {\n        puVar4 = puVar9;\n        puVar11 = (undefined4 *)puVar4[1];\n        if (puVar11 == (undefined4 *)0x0) goto LAB_0003e958;\n      }\n      puVar9 = puVar4 + 2;\n      puVar4 = (undefined4 *)*puVar9;\n      if ((undefined4 *)*puVar9 == (undefined4 *)0x0) {\n        puVar4 = puVar11;\n      }\n    }" { (while_statement "while ((puVar9 = (undefined4 *)puVar4[4], (undefined4 *)puVar4[4] != (undefined4 *)0x0 ||\n             (puVar9 = (undefined4 *)puVar4[3], (undefined4 *)puVar4[3] != (undefined4 *)0x0))) {\n        puVar4 = puVar9;\n        puVar11 = (undefined4 *)puVar4[1];\n        if (puVar11 == (undefined4 *)0x0) goto LAB_0003e958;\n      }" while (parenthesized_expression "((puVar9 = (undefined4 *)puVar4[4], (undefined4 *)puVar4[4] != (undefined4 *)0x0 ||\n             (puVar9 = (undefined4 *)puVar4[3], (undefined4 *)puVar4[3] != (undefined4 *)0x0)))" ( (parenthesized_expression "(puVar9 = (undefined4 *)puVar4[4], (undefined4 *)puVar4[4] != (undefined4 *)0x0 ||\n             (puVar9 = (undefined4 *)puVar4[3], (undefined4 *)puVar4[3] != (undefined4 *)0x0))" ( (comma_expression "puVar9 = (undefined4 *)puVar4[4], (undefined4 *)puVar4[4] != (undefined4 *)0x0 ||\n             (puVar9 = (undefined4 *)puVar4[3], (undefined4 *)puVar4[3] != (undefined4 *)0x0)" (assignment_expression "puVar9 = (undefined4 *)puVar4[4]" identifier = (cast_expression "(undefined4 *)puVar4[4]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar4[4]" identifier [ number_literal ]))) , (binary_expression "(undefined4 *)puVar4[4] != (undefined4 *)0x0 ||\n             (puVar9 = (undefined4 *)puVar4[3], (undefined4 *)puVar4[3] != (undefined4 *)0x0)" (binary_expression "(undefined4 *)puVar4[4] != (undefined4 *)0x0" (cast_expression "(undefined4 *)puVar4[4]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar4[4]" identifier [ number_literal ])) != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) || (parenthesized_expression "(puVar9 = (undefined4 *)puVar4[3], (undefined4 *)puVar4[3] != (undefined4 *)0x0)" ( (comma_expression "puVar9 = (undefined4 *)puVar4[3], (undefined4 *)puVar4[3] != (undefined4 *)0x0" (assignment_expression "puVar9 = (undefined4 *)puVar4[3]" identifier = (cast_expression "(undefined4 *)puVar4[3]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar4[3]" identifier [ number_literal ]))) , (binary_expression "(undefined4 *)puVar4[3] != (undefined4 *)0x0" (cast_expression "(undefined4 *)puVar4[3]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar4[3]" identifier [ number_literal ])) != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) )))) )) )) (compound_statement "{\n        puVar4 = puVar9;\n        puVar11 = (undefined4 *)puVar4[1];\n        if (puVar11 == (undefined4 *)0x0) goto LAB_0003e958;\n      }" { (expression_statement "puVar4 = puVar9;" (assignment_expression "puVar4 = puVar9" identifier = identifier) ;) (expression_statement "puVar11 = (undefined4 *)puVar4[1];" (assignment_expression "puVar11 = (undefined4 *)puVar4[1]" identifier = (cast_expression "(undefined4 *)puVar4[1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar4[1]" identifier [ number_literal ]))) ;) (if_statement "if (puVar11 == (undefined4 *)0x0) goto LAB_0003e958;" if (parenthesized_expression "(puVar11 == (undefined4 *)0x0)" ( (binary_expression "puVar11 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0003e958;" goto statement_identifier ;)) })) (expression_statement "puVar9 = puVar4 + 2;" (assignment_expression "puVar9 = puVar4 + 2" identifier = (binary_expression "puVar4 + 2" identifier + number_literal)) ;) (expression_statement "puVar4 = (undefined4 *)*puVar9;" (assignment_expression "puVar4 = (undefined4 *)*puVar9" identifier = (cast_expression "(undefined4 *)*puVar9" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar9" * identifier))) ;) (if_statement "if ((undefined4 *)*puVar9 == (undefined4 *)0x0) {\n        puVar4 = puVar11;\n      }" if (parenthesized_expression "((undefined4 *)*puVar9 == (undefined4 *)0x0)" ( (binary_expression "(undefined4 *)*puVar9 == (undefined4 *)0x0" (cast_expression "(undefined4 *)*puVar9" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar9" * identifier)) == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        puVar4 = puVar11;\n      }" { (expression_statement "puVar4 = puVar11;" (assignment_expression "puVar4 = puVar11" identifier = identifier) ;) })) })) (labeled_statement "LAB_0003e958:\n    iVar12 = puVar4[0xb];" statement_identifier : (expression_statement "iVar12 = puVar4[0xb];" (assignment_expression "iVar12 = puVar4[0xb]" identifier = (subscript_expression "puVar4[0xb]" identifier [ number_literal ])) ;)) (if_statement "if ((iVar12 == 0) && (iVar12 = puVar4[10], iVar12 == 0)) {\n      iVar12 = puVar4[9];\n    }" if (parenthesized_expression "((iVar12 == 0) && (iVar12 = puVar4[10], iVar12 == 0))" ( (binary_expression "(iVar12 == 0) && (iVar12 = puVar4[10], iVar12 == 0)" (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) )) && (parenthesized_expression "(iVar12 = puVar4[10], iVar12 == 0)" ( (comma_expression "iVar12 = puVar4[10], iVar12 == 0" (assignment_expression "iVar12 = puVar4[10]" identifier = (subscript_expression "puVar4[10]" identifier [ number_literal ])) , (binary_expression "iVar12 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n      iVar12 = puVar4[9];\n    }" { (expression_statement "iVar12 = puVar4[9];" (assignment_expression "iVar12 = puVar4[9]" identifier = (subscript_expression "puVar4[9]" identifier [ number_literal ])) ;) })) (expression_statement "puVar2[local_38 + 9] = iVar12;" (assignment_expression "puVar2[local_38 + 9] = iVar12" (subscript_expression "puVar2[local_38 + 9]" identifier [ (binary_expression "local_38 + 9" identifier + number_literal) ]) = identifier) ;) (expression_statement "param_2 = puVar2[local_38 + 5] + -1;" (assignment_expression "param_2 = puVar2[local_38 + 5] + -1" identifier = (binary_expression "puVar2[local_38 + 5] + -1" (subscript_expression "puVar2[local_38 + 5]" identifier [ (binary_expression "local_38 + 5" identifier + number_literal) ]) + number_literal)) ;) }))) (goto_statement "goto joined_r0x0003e772;" goto statement_identifier ;) (labeled_statement "LAB_0003eab0:\n  puVar5 = (undefined4 *)puVar2[2];" statement_identifier : (expression_statement "puVar5 = (undefined4 *)puVar2[2];" (assignment_expression "puVar5 = (undefined4 *)puVar2[2]" identifier = (cast_expression "(undefined4 *)puVar2[2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar2[2]" identifier [ number_literal ]))) ;)) (if_statement "if (puVar5[10] == 0) {\n    local_30 = 1;\n    iVar10 = 0;\nLAB_0003eacb:\n    puVar4 = (undefined4 *)puVar2[iVar10 + 1];\n    if (puVar4[10] == 0) {\n      local_28 = local_30 + 1;\n      puVar11 = puVar2 + local_30;\n      puVar9 = (undefined4 *)puVar11[2];\n      if (puVar9 == (undefined4 *)0x0) {\n        puVar9 = (undefined4 *)puVar11[1];\n        iVar12 = param_2 + 1 + puVar2[iVar10 + 5];\n      }\n      else {\n        if (puVar9[10] != 0) {\nLAB_0003e836:\n          uVar7 = puVar9[5];\n          puVar5[10] = puVar2[local_30 + 9];\n          puVar4 = (undefined4 *)puVar9[1];\n          puVar5[7] = uVar7;\n          puVar5[3] = puVar4;\n          if (puVar4 != (undefined4 *)0x0) {\n            *puVar4 = puVar5;\n          }\n          puVar2[local_30 + 9] = puVar9[9];\n          puVar9[1] = puVar9[2];\n          puVar9[5] = puVar9[6];\n          if (puVar9[10] == 0) {\n            iVar12 = 1;\n            iVar10 = 0;\n          }\n          else {\n            puVar9[9] = puVar9[10];\n            puVar9[2] = puVar9[3];\n            puVar9[6] = puVar9[7];\n            if (puVar9[0xb] == 0) {\n              iVar12 = 2;\n              iVar10 = 1;\n            }\n            else {\n              puVar9[10] = puVar9[0xb];\n              iVar12 = 3;\n              puVar9[3] = puVar9[4];\n              puVar9[7] = puVar9[8];\n              iVar10 = 2;\n            }\n          }\n          puVar9[iVar12 + 1] = 0;\n          puVar9[iVar12 + 5] = 0;\n          puVar9[iVar10 + 9] = 0;\n          uVar7 = FUN_0003e010();\n          puVar2[local_30 + 5] = uVar7;\n          uVar7 = FUN_0003e010();\n          puVar2[local_28 + 5] = uVar7;\n          puVar5 = extraout_ECX;\n          goto joined_r0x0003e772;\n        }\n        puVar4 = (undefined4 *)*puVar11;\n        puVar9 = (undefined4 *)puVar11[1];\n        iVar10 = local_30 + -1;\n        iVar12 = param_2 + 1 + puVar11[4];\n      }\nLAB_0003ed0c:\n      puVar9[4] = puVar9[2];\n      puVar9[8] = puVar9[6];\n      puVar9[0xb] = puVar9[9];\n      puVar9[3] = puVar9[1];\n      puVar9[7] = puVar9[5];\n      uVar7 = puVar4[6];\n      puVar9[10] = puVar2[iVar10 + 9];\n      puVar5 = (undefined4 *)puVar4[2];\n      puVar9[6] = uVar7;\n      puVar9[2] = puVar5;\n      if (puVar5 != (undefined4 *)0x0) {\n        *puVar5 = puVar9;\n      }\n      uVar7 = puVar4[5];\n      puVar9[9] = puVar4[9];\n      puVar5 = (undefined4 *)puVar4[1];\n      puVar9[5] = uVar7;\n      puVar9[1] = puVar5;\n      if (puVar5 != (undefined4 *)0x0) {\n        *puVar5 = puVar9;\n      }\n      uVar7 = FUN_0003e010();\n      puVar2[local_30 + 5] = uVar7;\n      FUN_0001a110(extraout_ECX_00);\n      iVar6 = puVar2[iVar10 + 2];\n      while (iVar6 != 0) {\n        iVar8 = iVar10 + 1;\n        puVar2[iVar8] = iVar6;\n        puVar2[iVar10 + 5] = puVar2[iVar10 + 6];\n        if (iVar8 == 3) {\n          puVar2[0xb] = 0;\n          puVar2[4] = 0;\n          puVar2[8] = 0;\n          goto LAB_0003edcd;\n        }\n        puVar2[iVar10 + 9] = puVar2[iVar10 + 10];\n        iVar6 = puVar2[iVar10 + 3];\n        iVar10 = iVar8;\n      }\n      puVar2[iVar10 + 1] = 0;\n      puVar2[iVar10 + 5] = 0;\n      puVar2[iVar10 + 9] = 0;\nLAB_0003edcd:\n      param_2 = iVar12;\n      puVar5 = puVar9;\n      if (puVar2[9] == 0) {\n        *puVar3 = puVar9;\n        *puVar9 = 0;\n        FUN_0001a110(puVar2);\n      }\n      goto joined_r0x0003e772;\n    }\nLAB_0003eae0:\n    uVar1 = (uint)(puVar4[0xb] == 0);\n    puVar5[3] = puVar5[2];\n    puVar5[7] = puVar5[6];\n    puVar5[10] = puVar5[9];\n    puVar5[2] = puVar5[1];\n    puVar5[6] = puVar5[5];\n    puVar5[9] = puVar2[iVar10 + 9];\n    puVar11 = (undefined4 *)puVar4[4 - uVar1];\n    puVar5[1] = puVar11;\n    puVar5[5] = puVar4[8 - uVar1];\n    if (puVar11 != (undefined4 *)0x0) {\n      *puVar11 = puVar5;\n    }\n    puVar2[iVar10 + 9] = puVar4[-uVar1 + 0xb];\n    puVar4[4 - uVar1] = 0;\n    puVar4[8 - uVar1] = 0;\n    puVar4[-uVar1 + 0xb] = 0;\n    uVar7 = FUN_0003e010();\n    puVar2[local_30 + 5] = uVar7;\n    iVar12 = puVar2[iVar10 + 5];\n    iVar6 = FUN_0003e010();\n    puVar2[iVar10 + 5] = iVar6;\n    param_2 = (param_2 + iVar12) - iVar6;\n  }" if (parenthesized_expression "(puVar5[10] == 0)" ( (binary_expression "puVar5[10] == 0" (subscript_expression "puVar5[10]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n    local_30 = 1;\n    iVar10 = 0;\nLAB_0003eacb:\n    puVar4 = (undefined4 *)puVar2[iVar10 + 1];\n    if (puVar4[10] == 0) {\n      local_28 = local_30 + 1;\n      puVar11 = puVar2 + local_30;\n      puVar9 = (undefined4 *)puVar11[2];\n      if (puVar9 == (undefined4 *)0x0) {\n        puVar9 = (undefined4 *)puVar11[1];\n        iVar12 = param_2 + 1 + puVar2[iVar10 + 5];\n      }\n      else {\n        if (puVar9[10] != 0) {\nLAB_0003e836:\n          uVar7 = puVar9[5];\n          puVar5[10] = puVar2[local_30 + 9];\n          puVar4 = (undefined4 *)puVar9[1];\n          puVar5[7] = uVar7;\n          puVar5[3] = puVar4;\n          if (puVar4 != (undefined4 *)0x0) {\n            *puVar4 = puVar5;\n          }\n          puVar2[local_30 + 9] = puVar9[9];\n          puVar9[1] = puVar9[2];\n          puVar9[5] = puVar9[6];\n          if (puVar9[10] == 0) {\n            iVar12 = 1;\n            iVar10 = 0;\n          }\n          else {\n            puVar9[9] = puVar9[10];\n            puVar9[2] = puVar9[3];\n            puVar9[6] = puVar9[7];\n            if (puVar9[0xb] == 0) {\n              iVar12 = 2;\n              iVar10 = 1;\n            }\n            else {\n              puVar9[10] = puVar9[0xb];\n              iVar12 = 3;\n              puVar9[3] = puVar9[4];\n              puVar9[7] = puVar9[8];\n              iVar10 = 2;\n            }\n          }\n          puVar9[iVar12 + 1] = 0;\n          puVar9[iVar12 + 5] = 0;\n          puVar9[iVar10 + 9] = 0;\n          uVar7 = FUN_0003e010();\n          puVar2[local_30 + 5] = uVar7;\n          uVar7 = FUN_0003e010();\n          puVar2[local_28 + 5] = uVar7;\n          puVar5 = extraout_ECX;\n          goto joined_r0x0003e772;\n        }\n        puVar4 = (undefined4 *)*puVar11;\n        puVar9 = (undefined4 *)puVar11[1];\n        iVar10 = local_30 + -1;\n        iVar12 = param_2 + 1 + puVar11[4];\n      }\nLAB_0003ed0c:\n      puVar9[4] = puVar9[2];\n      puVar9[8] = puVar9[6];\n      puVar9[0xb] = puVar9[9];\n      puVar9[3] = puVar9[1];\n      puVar9[7] = puVar9[5];\n      uVar7 = puVar4[6];\n      puVar9[10] = puVar2[iVar10 + 9];\n      puVar5 = (undefined4 *)puVar4[2];\n      puVar9[6] = uVar7;\n      puVar9[2] = puVar5;\n      if (puVar5 != (undefined4 *)0x0) {\n        *puVar5 = puVar9;\n      }\n      uVar7 = puVar4[5];\n      puVar9[9] = puVar4[9];\n      puVar5 = (undefined4 *)puVar4[1];\n      puVar9[5] = uVar7;\n      puVar9[1] = puVar5;\n      if (puVar5 != (undefined4 *)0x0) {\n        *puVar5 = puVar9;\n      }\n      uVar7 = FUN_0003e010();\n      puVar2[local_30 + 5] = uVar7;\n      FUN_0001a110(extraout_ECX_00);\n      iVar6 = puVar2[iVar10 + 2];\n      while (iVar6 != 0) {\n        iVar8 = iVar10 + 1;\n        puVar2[iVar8] = iVar6;\n        puVar2[iVar10 + 5] = puVar2[iVar10 + 6];\n        if (iVar8 == 3) {\n          puVar2[0xb] = 0;\n          puVar2[4] = 0;\n          puVar2[8] = 0;\n          goto LAB_0003edcd;\n        }\n        puVar2[iVar10 + 9] = puVar2[iVar10 + 10];\n        iVar6 = puVar2[iVar10 + 3];\n        iVar10 = iVar8;\n      }\n      puVar2[iVar10 + 1] = 0;\n      puVar2[iVar10 + 5] = 0;\n      puVar2[iVar10 + 9] = 0;\nLAB_0003edcd:\n      param_2 = iVar12;\n      puVar5 = puVar9;\n      if (puVar2[9] == 0) {\n        *puVar3 = puVar9;\n        *puVar9 = 0;\n        FUN_0001a110(puVar2);\n      }\n      goto joined_r0x0003e772;\n    }\nLAB_0003eae0:\n    uVar1 = (uint)(puVar4[0xb] == 0);\n    puVar5[3] = puVar5[2];\n    puVar5[7] = puVar5[6];\n    puVar5[10] = puVar5[9];\n    puVar5[2] = puVar5[1];\n    puVar5[6] = puVar5[5];\n    puVar5[9] = puVar2[iVar10 + 9];\n    puVar11 = (undefined4 *)puVar4[4 - uVar1];\n    puVar5[1] = puVar11;\n    puVar5[5] = puVar4[8 - uVar1];\n    if (puVar11 != (undefined4 *)0x0) {\n      *puVar11 = puVar5;\n    }\n    puVar2[iVar10 + 9] = puVar4[-uVar1 + 0xb];\n    puVar4[4 - uVar1] = 0;\n    puVar4[8 - uVar1] = 0;\n    puVar4[-uVar1 + 0xb] = 0;\n    uVar7 = FUN_0003e010();\n    puVar2[local_30 + 5] = uVar7;\n    iVar12 = puVar2[iVar10 + 5];\n    iVar6 = FUN_0003e010();\n    puVar2[iVar10 + 5] = iVar6;\n    param_2 = (param_2 + iVar12) - iVar6;\n  }" { (expression_statement "local_30 = 1;" (assignment_expression "local_30 = 1" identifier = number_literal) ;) (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" identifier = number_literal) ;) (labeled_statement "LAB_0003eacb:\n    puVar4 = (undefined4 *)puVar2[iVar10 + 1];" statement_identifier : (expression_statement "puVar4 = (undefined4 *)puVar2[iVar10 + 1];" (assignment_expression "puVar4 = (undefined4 *)puVar2[iVar10 + 1]" identifier = (cast_expression "(undefined4 *)puVar2[iVar10 + 1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar2[iVar10 + 1]" identifier [ (binary_expression "iVar10 + 1" identifier + number_literal) ]))) ;)) (if_statement "if (puVar4[10] == 0) {\n      local_28 = local_30 + 1;\n      puVar11 = puVar2 + local_30;\n      puVar9 = (undefined4 *)puVar11[2];\n      if (puVar9 == (undefined4 *)0x0) {\n        puVar9 = (undefined4 *)puVar11[1];\n        iVar12 = param_2 + 1 + puVar2[iVar10 + 5];\n      }\n      else {\n        if (puVar9[10] != 0) {\nLAB_0003e836:\n          uVar7 = puVar9[5];\n          puVar5[10] = puVar2[local_30 + 9];\n          puVar4 = (undefined4 *)puVar9[1];\n          puVar5[7] = uVar7;\n          puVar5[3] = puVar4;\n          if (puVar4 != (undefined4 *)0x0) {\n            *puVar4 = puVar5;\n          }\n          puVar2[local_30 + 9] = puVar9[9];\n          puVar9[1] = puVar9[2];\n          puVar9[5] = puVar9[6];\n          if (puVar9[10] == 0) {\n            iVar12 = 1;\n            iVar10 = 0;\n          }\n          else {\n            puVar9[9] = puVar9[10];\n            puVar9[2] = puVar9[3];\n            puVar9[6] = puVar9[7];\n            if (puVar9[0xb] == 0) {\n              iVar12 = 2;\n              iVar10 = 1;\n            }\n            else {\n              puVar9[10] = puVar9[0xb];\n              iVar12 = 3;\n              puVar9[3] = puVar9[4];\n              puVar9[7] = puVar9[8];\n              iVar10 = 2;\n            }\n          }\n          puVar9[iVar12 + 1] = 0;\n          puVar9[iVar12 + 5] = 0;\n          puVar9[iVar10 + 9] = 0;\n          uVar7 = FUN_0003e010();\n          puVar2[local_30 + 5] = uVar7;\n          uVar7 = FUN_0003e010();\n          puVar2[local_28 + 5] = uVar7;\n          puVar5 = extraout_ECX;\n          goto joined_r0x0003e772;\n        }\n        puVar4 = (undefined4 *)*puVar11;\n        puVar9 = (undefined4 *)puVar11[1];\n        iVar10 = local_30 + -1;\n        iVar12 = param_2 + 1 + puVar11[4];\n      }\nLAB_0003ed0c:\n      puVar9[4] = puVar9[2];\n      puVar9[8] = puVar9[6];\n      puVar9[0xb] = puVar9[9];\n      puVar9[3] = puVar9[1];\n      puVar9[7] = puVar9[5];\n      uVar7 = puVar4[6];\n      puVar9[10] = puVar2[iVar10 + 9];\n      puVar5 = (undefined4 *)puVar4[2];\n      puVar9[6] = uVar7;\n      puVar9[2] = puVar5;\n      if (puVar5 != (undefined4 *)0x0) {\n        *puVar5 = puVar9;\n      }\n      uVar7 = puVar4[5];\n      puVar9[9] = puVar4[9];\n      puVar5 = (undefined4 *)puVar4[1];\n      puVar9[5] = uVar7;\n      puVar9[1] = puVar5;\n      if (puVar5 != (undefined4 *)0x0) {\n        *puVar5 = puVar9;\n      }\n      uVar7 = FUN_0003e010();\n      puVar2[local_30 + 5] = uVar7;\n      FUN_0001a110(extraout_ECX_00);\n      iVar6 = puVar2[iVar10 + 2];\n      while (iVar6 != 0) {\n        iVar8 = iVar10 + 1;\n        puVar2[iVar8] = iVar6;\n        puVar2[iVar10 + 5] = puVar2[iVar10 + 6];\n        if (iVar8 == 3) {\n          puVar2[0xb] = 0;\n          puVar2[4] = 0;\n          puVar2[8] = 0;\n          goto LAB_0003edcd;\n        }\n        puVar2[iVar10 + 9] = puVar2[iVar10 + 10];\n        iVar6 = puVar2[iVar10 + 3];\n        iVar10 = iVar8;\n      }\n      puVar2[iVar10 + 1] = 0;\n      puVar2[iVar10 + 5] = 0;\n      puVar2[iVar10 + 9] = 0;\nLAB_0003edcd:\n      param_2 = iVar12;\n      puVar5 = puVar9;\n      if (puVar2[9] == 0) {\n        *puVar3 = puVar9;\n        *puVar9 = 0;\n        FUN_0001a110(puVar2);\n      }\n      goto joined_r0x0003e772;\n    }" if (parenthesized_expression "(puVar4[10] == 0)" ( (binary_expression "puVar4[10] == 0" (subscript_expression "puVar4[10]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      local_28 = local_30 + 1;\n      puVar11 = puVar2 + local_30;\n      puVar9 = (undefined4 *)puVar11[2];\n      if (puVar9 == (undefined4 *)0x0) {\n        puVar9 = (undefined4 *)puVar11[1];\n        iVar12 = param_2 + 1 + puVar2[iVar10 + 5];\n      }\n      else {\n        if (puVar9[10] != 0) {\nLAB_0003e836:\n          uVar7 = puVar9[5];\n          puVar5[10] = puVar2[local_30 + 9];\n          puVar4 = (undefined4 *)puVar9[1];\n          puVar5[7] = uVar7;\n          puVar5[3] = puVar4;\n          if (puVar4 != (undefined4 *)0x0) {\n            *puVar4 = puVar5;\n          }\n          puVar2[local_30 + 9] = puVar9[9];\n          puVar9[1] = puVar9[2];\n          puVar9[5] = puVar9[6];\n          if (puVar9[10] == 0) {\n            iVar12 = 1;\n            iVar10 = 0;\n          }\n          else {\n            puVar9[9] = puVar9[10];\n            puVar9[2] = puVar9[3];\n            puVar9[6] = puVar9[7];\n            if (puVar9[0xb] == 0) {\n              iVar12 = 2;\n              iVar10 = 1;\n            }\n            else {\n              puVar9[10] = puVar9[0xb];\n              iVar12 = 3;\n              puVar9[3] = puVar9[4];\n              puVar9[7] = puVar9[8];\n              iVar10 = 2;\n            }\n          }\n          puVar9[iVar12 + 1] = 0;\n          puVar9[iVar12 + 5] = 0;\n          puVar9[iVar10 + 9] = 0;\n          uVar7 = FUN_0003e010();\n          puVar2[local_30 + 5] = uVar7;\n          uVar7 = FUN_0003e010();\n          puVar2[local_28 + 5] = uVar7;\n          puVar5 = extraout_ECX;\n          goto joined_r0x0003e772;\n        }\n        puVar4 = (undefined4 *)*puVar11;\n        puVar9 = (undefined4 *)puVar11[1];\n        iVar10 = local_30 + -1;\n        iVar12 = param_2 + 1 + puVar11[4];\n      }\nLAB_0003ed0c:\n      puVar9[4] = puVar9[2];\n      puVar9[8] = puVar9[6];\n      puVar9[0xb] = puVar9[9];\n      puVar9[3] = puVar9[1];\n      puVar9[7] = puVar9[5];\n      uVar7 = puVar4[6];\n      puVar9[10] = puVar2[iVar10 + 9];\n      puVar5 = (undefined4 *)puVar4[2];\n      puVar9[6] = uVar7;\n      puVar9[2] = puVar5;\n      if (puVar5 != (undefined4 *)0x0) {\n        *puVar5 = puVar9;\n      }\n      uVar7 = puVar4[5];\n      puVar9[9] = puVar4[9];\n      puVar5 = (undefined4 *)puVar4[1];\n      puVar9[5] = uVar7;\n      puVar9[1] = puVar5;\n      if (puVar5 != (undefined4 *)0x0) {\n        *puVar5 = puVar9;\n      }\n      uVar7 = FUN_0003e010();\n      puVar2[local_30 + 5] = uVar7;\n      FUN_0001a110(extraout_ECX_00);\n      iVar6 = puVar2[iVar10 + 2];\n      while (iVar6 != 0) {\n        iVar8 = iVar10 + 1;\n        puVar2[iVar8] = iVar6;\n        puVar2[iVar10 + 5] = puVar2[iVar10 + 6];\n        if (iVar8 == 3) {\n          puVar2[0xb] = 0;\n          puVar2[4] = 0;\n          puVar2[8] = 0;\n          goto LAB_0003edcd;\n        }\n        puVar2[iVar10 + 9] = puVar2[iVar10 + 10];\n        iVar6 = puVar2[iVar10 + 3];\n        iVar10 = iVar8;\n      }\n      puVar2[iVar10 + 1] = 0;\n      puVar2[iVar10 + 5] = 0;\n      puVar2[iVar10 + 9] = 0;\nLAB_0003edcd:\n      param_2 = iVar12;\n      puVar5 = puVar9;\n      if (puVar2[9] == 0) {\n        *puVar3 = puVar9;\n        *puVar9 = 0;\n        FUN_0001a110(puVar2);\n      }\n      goto joined_r0x0003e772;\n    }" { (expression_statement "local_28 = local_30 + 1;" (assignment_expression "local_28 = local_30 + 1" identifier = (binary_expression "local_30 + 1" identifier + number_literal)) ;) (expression_statement "puVar11 = puVar2 + local_30;" (assignment_expression "puVar11 = puVar2 + local_30" identifier = (binary_expression "puVar2 + local_30" identifier + identifier)) ;) (expression_statement "puVar9 = (undefined4 *)puVar11[2];" (assignment_expression "puVar9 = (undefined4 *)puVar11[2]" identifier = (cast_expression "(undefined4 *)puVar11[2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar11[2]" identifier [ number_literal ]))) ;) (if_statement "if (puVar9 == (undefined4 *)0x0) {\n        puVar9 = (undefined4 *)puVar11[1];\n        iVar12 = param_2 + 1 + puVar2[iVar10 + 5];\n      }\n      else {\n        if (puVar9[10] != 0) {\nLAB_0003e836:\n          uVar7 = puVar9[5];\n          puVar5[10] = puVar2[local_30 + 9];\n          puVar4 = (undefined4 *)puVar9[1];\n          puVar5[7] = uVar7;\n          puVar5[3] = puVar4;\n          if (puVar4 != (undefined4 *)0x0) {\n            *puVar4 = puVar5;\n          }\n          puVar2[local_30 + 9] = puVar9[9];\n          puVar9[1] = puVar9[2];\n          puVar9[5] = puVar9[6];\n          if (puVar9[10] == 0) {\n            iVar12 = 1;\n            iVar10 = 0;\n          }\n          else {\n            puVar9[9] = puVar9[10];\n            puVar9[2] = puVar9[3];\n            puVar9[6] = puVar9[7];\n            if (puVar9[0xb] == 0) {\n              iVar12 = 2;\n              iVar10 = 1;\n            }\n            else {\n              puVar9[10] = puVar9[0xb];\n              iVar12 = 3;\n              puVar9[3] = puVar9[4];\n              puVar9[7] = puVar9[8];\n              iVar10 = 2;\n            }\n          }\n          puVar9[iVar12 + 1] = 0;\n          puVar9[iVar12 + 5] = 0;\n          puVar9[iVar10 + 9] = 0;\n          uVar7 = FUN_0003e010();\n          puVar2[local_30 + 5] = uVar7;\n          uVar7 = FUN_0003e010();\n          puVar2[local_28 + 5] = uVar7;\n          puVar5 = extraout_ECX;\n          goto joined_r0x0003e772;\n        }\n        puVar4 = (undefined4 *)*puVar11;\n        puVar9 = (undefined4 *)puVar11[1];\n        iVar10 = local_30 + -1;\n        iVar12 = param_2 + 1 + puVar11[4];\n      }" if (parenthesized_expression "(puVar9 == (undefined4 *)0x0)" ( (binary_expression "puVar9 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        puVar9 = (undefined4 *)puVar11[1];\n        iVar12 = param_2 + 1 + puVar2[iVar10 + 5];\n      }" { (expression_statement "puVar9 = (undefined4 *)puVar11[1];" (assignment_expression "puVar9 = (undefined4 *)puVar11[1]" identifier = (cast_expression "(undefined4 *)puVar11[1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar11[1]" identifier [ number_literal ]))) ;) (expression_statement "iVar12 = param_2 + 1 + puVar2[iVar10 + 5];" (assignment_expression "iVar12 = param_2 + 1 + puVar2[iVar10 + 5]" identifier = (binary_expression "param_2 + 1 + puVar2[iVar10 + 5]" (binary_expression "param_2 + 1" identifier + number_literal) + (subscript_expression "puVar2[iVar10 + 5]" identifier [ (binary_expression "iVar10 + 5" identifier + number_literal) ]))) ;) }) (else_clause "else {\n        if (puVar9[10] != 0) {\nLAB_0003e836:\n          uVar7 = puVar9[5];\n          puVar5[10] = puVar2[local_30 + 9];\n          puVar4 = (undefined4 *)puVar9[1];\n          puVar5[7] = uVar7;\n          puVar5[3] = puVar4;\n          if (puVar4 != (undefined4 *)0x0) {\n            *puVar4 = puVar5;\n          }\n          puVar2[local_30 + 9] = puVar9[9];\n          puVar9[1] = puVar9[2];\n          puVar9[5] = puVar9[6];\n          if (puVar9[10] == 0) {\n            iVar12 = 1;\n            iVar10 = 0;\n          }\n          else {\n            puVar9[9] = puVar9[10];\n            puVar9[2] = puVar9[3];\n            puVar9[6] = puVar9[7];\n            if (puVar9[0xb] == 0) {\n              iVar12 = 2;\n              iVar10 = 1;\n            }\n            else {\n              puVar9[10] = puVar9[0xb];\n              iVar12 = 3;\n              puVar9[3] = puVar9[4];\n              puVar9[7] = puVar9[8];\n              iVar10 = 2;\n            }\n          }\n          puVar9[iVar12 + 1] = 0;\n          puVar9[iVar12 + 5] = 0;\n          puVar9[iVar10 + 9] = 0;\n          uVar7 = FUN_0003e010();\n          puVar2[local_30 + 5] = uVar7;\n          uVar7 = FUN_0003e010();\n          puVar2[local_28 + 5] = uVar7;\n          puVar5 = extraout_ECX;\n          goto joined_r0x0003e772;\n        }\n        puVar4 = (undefined4 *)*puVar11;\n        puVar9 = (undefined4 *)puVar11[1];\n        iVar10 = local_30 + -1;\n        iVar12 = param_2 + 1 + puVar11[4];\n      }" else (compound_statement "{\n        if (puVar9[10] != 0) {\nLAB_0003e836:\n          uVar7 = puVar9[5];\n          puVar5[10] = puVar2[local_30 + 9];\n          puVar4 = (undefined4 *)puVar9[1];\n          puVar5[7] = uVar7;\n          puVar5[3] = puVar4;\n          if (puVar4 != (undefined4 *)0x0) {\n            *puVar4 = puVar5;\n          }\n          puVar2[local_30 + 9] = puVar9[9];\n          puVar9[1] = puVar9[2];\n          puVar9[5] = puVar9[6];\n          if (puVar9[10] == 0) {\n            iVar12 = 1;\n            iVar10 = 0;\n          }\n          else {\n            puVar9[9] = puVar9[10];\n            puVar9[2] = puVar9[3];\n            puVar9[6] = puVar9[7];\n            if (puVar9[0xb] == 0) {\n              iVar12 = 2;\n              iVar10 = 1;\n            }\n            else {\n              puVar9[10] = puVar9[0xb];\n              iVar12 = 3;\n              puVar9[3] = puVar9[4];\n              puVar9[7] = puVar9[8];\n              iVar10 = 2;\n            }\n          }\n          puVar9[iVar12 + 1] = 0;\n          puVar9[iVar12 + 5] = 0;\n          puVar9[iVar10 + 9] = 0;\n          uVar7 = FUN_0003e010();\n          puVar2[local_30 + 5] = uVar7;\n          uVar7 = FUN_0003e010();\n          puVar2[local_28 + 5] = uVar7;\n          puVar5 = extraout_ECX;\n          goto joined_r0x0003e772;\n        }\n        puVar4 = (undefined4 *)*puVar11;\n        puVar9 = (undefined4 *)puVar11[1];\n        iVar10 = local_30 + -1;\n        iVar12 = param_2 + 1 + puVar11[4];\n      }" { (if_statement "if (puVar9[10] != 0) {\nLAB_0003e836:\n          uVar7 = puVar9[5];\n          puVar5[10] = puVar2[local_30 + 9];\n          puVar4 = (undefined4 *)puVar9[1];\n          puVar5[7] = uVar7;\n          puVar5[3] = puVar4;\n          if (puVar4 != (undefined4 *)0x0) {\n            *puVar4 = puVar5;\n          }\n          puVar2[local_30 + 9] = puVar9[9];\n          puVar9[1] = puVar9[2];\n          puVar9[5] = puVar9[6];\n          if (puVar9[10] == 0) {\n            iVar12 = 1;\n            iVar10 = 0;\n          }\n          else {\n            puVar9[9] = puVar9[10];\n            puVar9[2] = puVar9[3];\n            puVar9[6] = puVar9[7];\n            if (puVar9[0xb] == 0) {\n              iVar12 = 2;\n              iVar10 = 1;\n            }\n            else {\n              puVar9[10] = puVar9[0xb];\n              iVar12 = 3;\n              puVar9[3] = puVar9[4];\n              puVar9[7] = puVar9[8];\n              iVar10 = 2;\n            }\n          }\n          puVar9[iVar12 + 1] = 0;\n          puVar9[iVar12 + 5] = 0;\n          puVar9[iVar10 + 9] = 0;\n          uVar7 = FUN_0003e010();\n          puVar2[local_30 + 5] = uVar7;\n          uVar7 = FUN_0003e010();\n          puVar2[local_28 + 5] = uVar7;\n          puVar5 = extraout_ECX;\n          goto joined_r0x0003e772;\n        }" if (parenthesized_expression "(puVar9[10] != 0)" ( (binary_expression "puVar9[10] != 0" (subscript_expression "puVar9[10]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\nLAB_0003e836:\n          uVar7 = puVar9[5];\n          puVar5[10] = puVar2[local_30 + 9];\n          puVar4 = (undefined4 *)puVar9[1];\n          puVar5[7] = uVar7;\n          puVar5[3] = puVar4;\n          if (puVar4 != (undefined4 *)0x0) {\n            *puVar4 = puVar5;\n          }\n          puVar2[local_30 + 9] = puVar9[9];\n          puVar9[1] = puVar9[2];\n          puVar9[5] = puVar9[6];\n          if (puVar9[10] == 0) {\n            iVar12 = 1;\n            iVar10 = 0;\n          }\n          else {\n            puVar9[9] = puVar9[10];\n            puVar9[2] = puVar9[3];\n            puVar9[6] = puVar9[7];\n            if (puVar9[0xb] == 0) {\n              iVar12 = 2;\n              iVar10 = 1;\n            }\n            else {\n              puVar9[10] = puVar9[0xb];\n              iVar12 = 3;\n              puVar9[3] = puVar9[4];\n              puVar9[7] = puVar9[8];\n              iVar10 = 2;\n            }\n          }\n          puVar9[iVar12 + 1] = 0;\n          puVar9[iVar12 + 5] = 0;\n          puVar9[iVar10 + 9] = 0;\n          uVar7 = FUN_0003e010();\n          puVar2[local_30 + 5] = uVar7;\n          uVar7 = FUN_0003e010();\n          puVar2[local_28 + 5] = uVar7;\n          puVar5 = extraout_ECX;\n          goto joined_r0x0003e772;\n        }" { (labeled_statement "LAB_0003e836:\n          uVar7 = puVar9[5];" statement_identifier : (expression_statement "uVar7 = puVar9[5];" (assignment_expression "uVar7 = puVar9[5]" identifier = (subscript_expression "puVar9[5]" identifier [ number_literal ])) ;)) (expression_statement "puVar5[10] = puVar2[local_30 + 9];" (assignment_expression "puVar5[10] = puVar2[local_30 + 9]" (subscript_expression "puVar5[10]" identifier [ number_literal ]) = (subscript_expression "puVar2[local_30 + 9]" identifier [ (binary_expression "local_30 + 9" identifier + number_literal) ])) ;) (expression_statement "puVar4 = (undefined4 *)puVar9[1];" (assignment_expression "puVar4 = (undefined4 *)puVar9[1]" identifier = (cast_expression "(undefined4 *)puVar9[1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar9[1]" identifier [ number_literal ]))) ;) (expression_statement "puVar5[7] = uVar7;" (assignment_expression "puVar5[7] = uVar7" (subscript_expression "puVar5[7]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar5[3] = puVar4;" (assignment_expression "puVar5[3] = puVar4" (subscript_expression "puVar5[3]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (puVar4 != (undefined4 *)0x0) {\n            *puVar4 = puVar5;\n          }" if (parenthesized_expression "(puVar4 != (undefined4 *)0x0)" ( (binary_expression "puVar4 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            *puVar4 = puVar5;\n          }" { (expression_statement "*puVar4 = puVar5;" (assignment_expression "*puVar4 = puVar5" (pointer_expression "*puVar4" * identifier) = identifier) ;) })) (expression_statement "puVar2[local_30 + 9] = puVar9[9];" (assignment_expression "puVar2[local_30 + 9] = puVar9[9]" (subscript_expression "puVar2[local_30 + 9]" identifier [ (binary_expression "local_30 + 9" identifier + number_literal) ]) = (subscript_expression "puVar9[9]" identifier [ number_literal ])) ;) (expression_statement "puVar9[1] = puVar9[2];" (assignment_expression "puVar9[1] = puVar9[2]" (subscript_expression "puVar9[1]" identifier [ number_literal ]) = (subscript_expression "puVar9[2]" identifier [ number_literal ])) ;) (expression_statement "puVar9[5] = puVar9[6];" (assignment_expression "puVar9[5] = puVar9[6]" (subscript_expression "puVar9[5]" identifier [ number_literal ]) = (subscript_expression "puVar9[6]" identifier [ number_literal ])) ;) (if_statement "if (puVar9[10] == 0) {\n            iVar12 = 1;\n            iVar10 = 0;\n          }\n          else {\n            puVar9[9] = puVar9[10];\n            puVar9[2] = puVar9[3];\n            puVar9[6] = puVar9[7];\n            if (puVar9[0xb] == 0) {\n              iVar12 = 2;\n              iVar10 = 1;\n            }\n            else {\n              puVar9[10] = puVar9[0xb];\n              iVar12 = 3;\n              puVar9[3] = puVar9[4];\n              puVar9[7] = puVar9[8];\n              iVar10 = 2;\n            }\n          }" if (parenthesized_expression "(puVar9[10] == 0)" ( (binary_expression "puVar9[10] == 0" (subscript_expression "puVar9[10]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n            iVar12 = 1;\n            iVar10 = 0;\n          }" { (expression_statement "iVar12 = 1;" (assignment_expression "iVar12 = 1" identifier = number_literal) ;) (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" identifier = number_literal) ;) }) (else_clause "else {\n            puVar9[9] = puVar9[10];\n            puVar9[2] = puVar9[3];\n            puVar9[6] = puVar9[7];\n            if (puVar9[0xb] == 0) {\n              iVar12 = 2;\n              iVar10 = 1;\n            }\n            else {\n              puVar9[10] = puVar9[0xb];\n              iVar12 = 3;\n              puVar9[3] = puVar9[4];\n              puVar9[7] = puVar9[8];\n              iVar10 = 2;\n            }\n          }" else (compound_statement "{\n            puVar9[9] = puVar9[10];\n            puVar9[2] = puVar9[3];\n            puVar9[6] = puVar9[7];\n            if (puVar9[0xb] == 0) {\n              iVar12 = 2;\n              iVar10 = 1;\n            }\n            else {\n              puVar9[10] = puVar9[0xb];\n              iVar12 = 3;\n              puVar9[3] = puVar9[4];\n              puVar9[7] = puVar9[8];\n              iVar10 = 2;\n            }\n          }" { (expression_statement "puVar9[9] = puVar9[10];" (assignment_expression "puVar9[9] = puVar9[10]" (subscript_expression "puVar9[9]" identifier [ number_literal ]) = (subscript_expression "puVar9[10]" identifier [ number_literal ])) ;) (expression_statement "puVar9[2] = puVar9[3];" (assignment_expression "puVar9[2] = puVar9[3]" (subscript_expression "puVar9[2]" identifier [ number_literal ]) = (subscript_expression "puVar9[3]" identifier [ number_literal ])) ;) (expression_statement "puVar9[6] = puVar9[7];" (assignment_expression "puVar9[6] = puVar9[7]" (subscript_expression "puVar9[6]" identifier [ number_literal ]) = (subscript_expression "puVar9[7]" identifier [ number_literal ])) ;) (if_statement "if (puVar9[0xb] == 0) {\n              iVar12 = 2;\n              iVar10 = 1;\n            }\n            else {\n              puVar9[10] = puVar9[0xb];\n              iVar12 = 3;\n              puVar9[3] = puVar9[4];\n              puVar9[7] = puVar9[8];\n              iVar10 = 2;\n            }" if (parenthesized_expression "(puVar9[0xb] == 0)" ( (binary_expression "puVar9[0xb] == 0" (subscript_expression "puVar9[0xb]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n              iVar12 = 2;\n              iVar10 = 1;\n            }" { (expression_statement "iVar12 = 2;" (assignment_expression "iVar12 = 2" identifier = number_literal) ;) (expression_statement "iVar10 = 1;" (assignment_expression "iVar10 = 1" identifier = number_literal) ;) }) (else_clause "else {\n              puVar9[10] = puVar9[0xb];\n              iVar12 = 3;\n              puVar9[3] = puVar9[4];\n              puVar9[7] = puVar9[8];\n              iVar10 = 2;\n            }" else (compound_statement "{\n              puVar9[10] = puVar9[0xb];\n              iVar12 = 3;\n              puVar9[3] = puVar9[4];\n              puVar9[7] = puVar9[8];\n              iVar10 = 2;\n            }" { (expression_statement "puVar9[10] = puVar9[0xb];" (assignment_expression "puVar9[10] = puVar9[0xb]" (subscript_expression "puVar9[10]" identifier [ number_literal ]) = (subscript_expression "puVar9[0xb]" identifier [ number_literal ])) ;) (expression_statement "iVar12 = 3;" (assignment_expression "iVar12 = 3" identifier = number_literal) ;) (expression_statement "puVar9[3] = puVar9[4];" (assignment_expression "puVar9[3] = puVar9[4]" (subscript_expression "puVar9[3]" identifier [ number_literal ]) = (subscript_expression "puVar9[4]" identifier [ number_literal ])) ;) (expression_statement "puVar9[7] = puVar9[8];" (assignment_expression "puVar9[7] = puVar9[8]" (subscript_expression "puVar9[7]" identifier [ number_literal ]) = (subscript_expression "puVar9[8]" identifier [ number_literal ])) ;) (expression_statement "iVar10 = 2;" (assignment_expression "iVar10 = 2" identifier = number_literal) ;) }))) }))) (expression_statement "puVar9[iVar12 + 1] = 0;" (assignment_expression "puVar9[iVar12 + 1] = 0" (subscript_expression "puVar9[iVar12 + 1]" identifier [ (binary_expression "iVar12 + 1" identifier + number_literal) ]) = number_literal) ;) (expression_statement "puVar9[iVar12 + 5] = 0;" (assignment_expression "puVar9[iVar12 + 5] = 0" (subscript_expression "puVar9[iVar12 + 5]" identifier [ (binary_expression "iVar12 + 5" identifier + number_literal) ]) = number_literal) ;) (expression_statement "puVar9[iVar10 + 9] = 0;" (assignment_expression "puVar9[iVar10 + 9] = 0" (subscript_expression "puVar9[iVar10 + 9]" identifier [ (binary_expression "iVar10 + 9" identifier + number_literal) ]) = number_literal) ;) (expression_statement "uVar7 = FUN_0003e010();" (assignment_expression "uVar7 = FUN_0003e010()" identifier = (call_expression "FUN_0003e010()" identifier (argument_list "()" ( )))) ;) (expression_statement "puVar2[local_30 + 5] = uVar7;" (assignment_expression "puVar2[local_30 + 5] = uVar7" (subscript_expression "puVar2[local_30 + 5]" identifier [ (binary_expression "local_30 + 5" identifier + number_literal) ]) = identifier) ;) (expression_statement "uVar7 = FUN_0003e010();" (assignment_expression "uVar7 = FUN_0003e010()" identifier = (call_expression "FUN_0003e010()" identifier (argument_list "()" ( )))) ;) (expression_statement "puVar2[local_28 + 5] = uVar7;" (assignment_expression "puVar2[local_28 + 5] = uVar7" (subscript_expression "puVar2[local_28 + 5]" identifier [ (binary_expression "local_28 + 5" identifier + number_literal) ]) = identifier) ;) (expression_statement "puVar5 = extraout_ECX;" (assignment_expression "puVar5 = extraout_ECX" identifier = identifier) ;) (goto_statement "goto joined_r0x0003e772;" goto statement_identifier ;) })) (expression_statement "puVar4 = (undefined4 *)*puVar11;" (assignment_expression "puVar4 = (undefined4 *)*puVar11" identifier = (cast_expression "(undefined4 *)*puVar11" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar11" * identifier))) ;) (expression_statement "puVar9 = (undefined4 *)puVar11[1];" (assignment_expression "puVar9 = (undefined4 *)puVar11[1]" identifier = (cast_expression "(undefined4 *)puVar11[1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar11[1]" identifier [ number_literal ]))) ;) (expression_statement "iVar10 = local_30 + -1;" (assignment_expression "iVar10 = local_30 + -1" identifier = (binary_expression "local_30 + -1" identifier + number_literal)) ;) (expression_statement "iVar12 = param_2 + 1 + puVar11[4];" (assignment_expression "iVar12 = param_2 + 1 + puVar11[4]" identifier = (binary_expression "param_2 + 1 + puVar11[4]" (binary_expression "param_2 + 1" identifier + number_literal) + (subscript_expression "puVar11[4]" identifier [ number_literal ]))) ;) }))) (labeled_statement "LAB_0003ed0c:\n      puVar9[4] = puVar9[2];" statement_identifier : (expression_statement "puVar9[4] = puVar9[2];" (assignment_expression "puVar9[4] = puVar9[2]" (subscript_expression "puVar9[4]" identifier [ number_literal ]) = (subscript_expression "puVar9[2]" identifier [ number_literal ])) ;)) (expression_statement "puVar9[8] = puVar9[6];" (assignment_expression "puVar9[8] = puVar9[6]" (subscript_expression "puVar9[8]" identifier [ number_literal ]) = (subscript_expression "puVar9[6]" identifier [ number_literal ])) ;) (expression_statement "puVar9[0xb] = puVar9[9];" (assignment_expression "puVar9[0xb] = puVar9[9]" (subscript_expression "puVar9[0xb]" identifier [ number_literal ]) = (subscript_expression "puVar9[9]" identifier [ number_literal ])) ;) (expression_statement "puVar9[3] = puVar9[1];" (assignment_expression "puVar9[3] = puVar9[1]" (subscript_expression "puVar9[3]" identifier [ number_literal ]) = (subscript_expression "puVar9[1]" identifier [ number_literal ])) ;) (expression_statement "puVar9[7] = puVar9[5];" (assignment_expression "puVar9[7] = puVar9[5]" (subscript_expression "puVar9[7]" identifier [ number_literal ]) = (subscript_expression "puVar9[5]" identifier [ number_literal ])) ;) (expression_statement "uVar7 = puVar4[6];" (assignment_expression "uVar7 = puVar4[6]" identifier = (subscript_expression "puVar4[6]" identifier [ number_literal ])) ;) (expression_statement "puVar9[10] = puVar2[iVar10 + 9];" (assignment_expression "puVar9[10] = puVar2[iVar10 + 9]" (subscript_expression "puVar9[10]" identifier [ number_literal ]) = (subscript_expression "puVar2[iVar10 + 9]" identifier [ (binary_expression "iVar10 + 9" identifier + number_literal) ])) ;) (expression_statement "puVar5 = (undefined4 *)puVar4[2];" (assignment_expression "puVar5 = (undefined4 *)puVar4[2]" identifier = (cast_expression "(undefined4 *)puVar4[2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar4[2]" identifier [ number_literal ]))) ;) (expression_statement "puVar9[6] = uVar7;" (assignment_expression "puVar9[6] = uVar7" (subscript_expression "puVar9[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar9[2] = puVar5;" (assignment_expression "puVar9[2] = puVar5" (subscript_expression "puVar9[2]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (puVar5 != (undefined4 *)0x0) {\n        *puVar5 = puVar9;\n      }" if (parenthesized_expression "(puVar5 != (undefined4 *)0x0)" ( (binary_expression "puVar5 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        *puVar5 = puVar9;\n      }" { (expression_statement "*puVar5 = puVar9;" (assignment_expression "*puVar5 = puVar9" (pointer_expression "*puVar5" * identifier) = identifier) ;) })) (expression_statement "uVar7 = puVar4[5];" (assignment_expression "uVar7 = puVar4[5]" identifier = (subscript_expression "puVar4[5]" identifier [ number_literal ])) ;) (expression_statement "puVar9[9] = puVar4[9];" (assignment_expression "puVar9[9] = puVar4[9]" (subscript_expression "puVar9[9]" identifier [ number_literal ]) = (subscript_expression "puVar4[9]" identifier [ number_literal ])) ;) (expression_statement "puVar5 = (undefined4 *)puVar4[1];" (assignment_expression "puVar5 = (undefined4 *)puVar4[1]" identifier = (cast_expression "(undefined4 *)puVar4[1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar4[1]" identifier [ number_literal ]))) ;) (expression_statement "puVar9[5] = uVar7;" (assignment_expression "puVar9[5] = uVar7" (subscript_expression "puVar9[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar9[1] = puVar5;" (assignment_expression "puVar9[1] = puVar5" (subscript_expression "puVar9[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (puVar5 != (undefined4 *)0x0) {\n        *puVar5 = puVar9;\n      }" if (parenthesized_expression "(puVar5 != (undefined4 *)0x0)" ( (binary_expression "puVar5 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        *puVar5 = puVar9;\n      }" { (expression_statement "*puVar5 = puVar9;" (assignment_expression "*puVar5 = puVar9" (pointer_expression "*puVar5" * identifier) = identifier) ;) })) (expression_statement "uVar7 = FUN_0003e010();" (assignment_expression "uVar7 = FUN_0003e010()" identifier = (call_expression "FUN_0003e010()" identifier (argument_list "()" ( )))) ;) (expression_statement "puVar2[local_30 + 5] = uVar7;" (assignment_expression "puVar2[local_30 + 5] = uVar7" (subscript_expression "puVar2[local_30 + 5]" identifier [ (binary_expression "local_30 + 5" identifier + number_literal) ]) = identifier) ;) (expression_statement "FUN_0001a110(extraout_ECX_00);" (call_expression "FUN_0001a110(extraout_ECX_00)" identifier (argument_list "(extraout_ECX_00)" ( identifier ))) ;) (expression_statement "iVar6 = puVar2[iVar10 + 2];" (assignment_expression "iVar6 = puVar2[iVar10 + 2]" identifier = (subscript_expression "puVar2[iVar10 + 2]" identifier [ (binary_expression "iVar10 + 2" identifier + number_literal) ])) ;) (while_statement "while (iVar6 != 0) {\n        iVar8 = iVar10 + 1;\n        puVar2[iVar8] = iVar6;\n        puVar2[iVar10 + 5] = puVar2[iVar10 + 6];\n        if (iVar8 == 3) {\n          puVar2[0xb] = 0;\n          puVar2[4] = 0;\n          puVar2[8] = 0;\n          goto LAB_0003edcd;\n        }\n        puVar2[iVar10 + 9] = puVar2[iVar10 + 10];\n        iVar6 = puVar2[iVar10 + 3];\n        iVar10 = iVar8;\n      }" while (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (compound_statement "{\n        iVar8 = iVar10 + 1;\n        puVar2[iVar8] = iVar6;\n        puVar2[iVar10 + 5] = puVar2[iVar10 + 6];\n        if (iVar8 == 3) {\n          puVar2[0xb] = 0;\n          puVar2[4] = 0;\n          puVar2[8] = 0;\n          goto LAB_0003edcd;\n        }\n        puVar2[iVar10 + 9] = puVar2[iVar10 + 10];\n        iVar6 = puVar2[iVar10 + 3];\n        iVar10 = iVar8;\n      }" { (expression_statement "iVar8 = iVar10 + 1;" (assignment_expression "iVar8 = iVar10 + 1" identifier = (binary_expression "iVar10 + 1" identifier + number_literal)) ;) (expression_statement "puVar2[iVar8] = iVar6;" (assignment_expression "puVar2[iVar8] = iVar6" (subscript_expression "puVar2[iVar8]" identifier [ identifier ]) = identifier) ;) (expression_statement "puVar2[iVar10 + 5] = puVar2[iVar10 + 6];" (assignment_expression "puVar2[iVar10 + 5] = puVar2[iVar10 + 6]" (subscript_expression "puVar2[iVar10 + 5]" identifier [ (binary_expression "iVar10 + 5" identifier + number_literal) ]) = (subscript_expression "puVar2[iVar10 + 6]" identifier [ (binary_expression "iVar10 + 6" identifier + number_literal) ])) ;) (if_statement "if (iVar8 == 3) {\n          puVar2[0xb] = 0;\n          puVar2[4] = 0;\n          puVar2[8] = 0;\n          goto LAB_0003edcd;\n        }" if (parenthesized_expression "(iVar8 == 3)" ( (binary_expression "iVar8 == 3" identifier == number_literal) )) (compound_statement "{\n          puVar2[0xb] = 0;\n          puVar2[4] = 0;\n          puVar2[8] = 0;\n          goto LAB_0003edcd;\n        }" { (expression_statement "puVar2[0xb] = 0;" (assignment_expression "puVar2[0xb] = 0" (subscript_expression "puVar2[0xb]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[4] = 0;" (assignment_expression "puVar2[4] = 0" (subscript_expression "puVar2[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[8] = 0;" (assignment_expression "puVar2[8] = 0" (subscript_expression "puVar2[8]" identifier [ number_literal ]) = number_literal) ;) (goto_statement "goto LAB_0003edcd;" goto statement_identifier ;) })) (expression_statement "puVar2[iVar10 + 9] = puVar2[iVar10 + 10];" (assignment_expression "puVar2[iVar10 + 9] = puVar2[iVar10 + 10]" (subscript_expression "puVar2[iVar10 + 9]" identifier [ (binary_expression "iVar10 + 9" identifier + number_literal) ]) = (subscript_expression "puVar2[iVar10 + 10]" identifier [ (binary_expression "iVar10 + 10" identifier + number_literal) ])) ;) (expression_statement "iVar6 = puVar2[iVar10 + 3];" (assignment_expression "iVar6 = puVar2[iVar10 + 3]" identifier = (subscript_expression "puVar2[iVar10 + 3]" identifier [ (binary_expression "iVar10 + 3" identifier + number_literal) ])) ;) (expression_statement "iVar10 = iVar8;" (assignment_expression "iVar10 = iVar8" identifier = identifier) ;) })) (expression_statement "puVar2[iVar10 + 1] = 0;" (assignment_expression "puVar2[iVar10 + 1] = 0" (subscript_expression "puVar2[iVar10 + 1]" identifier [ (binary_expression "iVar10 + 1" identifier + number_literal) ]) = number_literal) ;) (expression_statement "puVar2[iVar10 + 5] = 0;" (assignment_expression "puVar2[iVar10 + 5] = 0" (subscript_expression "puVar2[iVar10 + 5]" identifier [ (binary_expression "iVar10 + 5" identifier + number_literal) ]) = number_literal) ;) (expression_statement "puVar2[iVar10 + 9] = 0;" (assignment_expression "puVar2[iVar10 + 9] = 0" (subscript_expression "puVar2[iVar10 + 9]" identifier [ (binary_expression "iVar10 + 9" identifier + number_literal) ]) = number_literal) ;) (labeled_statement "LAB_0003edcd:\n      param_2 = iVar12;" statement_identifier : (expression_statement "param_2 = iVar12;" (assignment_expression "param_2 = iVar12" identifier = identifier) ;)) (expression_statement "puVar5 = puVar9;" (assignment_expression "puVar5 = puVar9" identifier = identifier) ;) (if_statement "if (puVar2[9] == 0) {\n        *puVar3 = puVar9;\n        *puVar9 = 0;\n        FUN_0001a110(puVar2);\n      }" if (parenthesized_expression "(puVar2[9] == 0)" ( (binary_expression "puVar2[9] == 0" (subscript_expression "puVar2[9]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n        *puVar3 = puVar9;\n        *puVar9 = 0;\n        FUN_0001a110(puVar2);\n      }" { (expression_statement "*puVar3 = puVar9;" (assignment_expression "*puVar3 = puVar9" (pointer_expression "*puVar3" * identifier) = identifier) ;) (expression_statement "*puVar9 = 0;" (assignment_expression "*puVar9 = 0" (pointer_expression "*puVar9" * identifier) = number_literal) ;) (expression_statement "FUN_0001a110(puVar2);" (call_expression "FUN_0001a110(puVar2)" identifier (argument_list "(puVar2)" ( identifier ))) ;) })) (goto_statement "goto joined_r0x0003e772;" goto statement_identifier ;) })) (labeled_statement "LAB_0003eae0:\n    uVar1 = (uint)(puVar4[0xb] == 0);" statement_identifier : (expression_statement "uVar1 = (uint)(puVar4[0xb] == 0);" (assignment_expression "uVar1 = (uint)(puVar4[0xb] == 0)" identifier = (call_expression "(uint)(puVar4[0xb] == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar4[0xb] == 0)" ( (binary_expression "puVar4[0xb] == 0" (subscript_expression "puVar4[0xb]" identifier [ number_literal ]) == number_literal) )))) ;)) (expression_statement "puVar5[3] = puVar5[2];" (assignment_expression "puVar5[3] = puVar5[2]" (subscript_expression "puVar5[3]" identifier [ number_literal ]) = (subscript_expression "puVar5[2]" identifier [ number_literal ])) ;) (expression_statement "puVar5[7] = puVar5[6];" (assignment_expression "puVar5[7] = puVar5[6]" (subscript_expression "puVar5[7]" identifier [ number_literal ]) = (subscript_expression "puVar5[6]" identifier [ number_literal ])) ;) (expression_statement "puVar5[10] = puVar5[9];" (assignment_expression "puVar5[10] = puVar5[9]" (subscript_expression "puVar5[10]" identifier [ number_literal ]) = (subscript_expression "puVar5[9]" identifier [ number_literal ])) ;) (expression_statement "puVar5[2] = puVar5[1];" (assignment_expression "puVar5[2] = puVar5[1]" (subscript_expression "puVar5[2]" identifier [ number_literal ]) = (subscript_expression "puVar5[1]" identifier [ number_literal ])) ;) (expression_statement "puVar5[6] = puVar5[5];" (assignment_expression "puVar5[6] = puVar5[5]" (subscript_expression "puVar5[6]" identifier [ number_literal ]) = (subscript_expression "puVar5[5]" identifier [ number_literal ])) ;) (expression_statement "puVar5[9] = puVar2[iVar10 + 9];" (assignment_expression "puVar5[9] = puVar2[iVar10 + 9]" (subscript_expression "puVar5[9]" identifier [ number_literal ]) = (subscript_expression "puVar2[iVar10 + 9]" identifier [ (binary_expression "iVar10 + 9" identifier + number_literal) ])) ;) (expression_statement "puVar11 = (undefined4 *)puVar4[4 - uVar1];" (assignment_expression "puVar11 = (undefined4 *)puVar4[4 - uVar1]" identifier = (cast_expression "(undefined4 *)puVar4[4 - uVar1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar4[4 - uVar1]" identifier [ (binary_expression "4 - uVar1" number_literal - identifier) ]))) ;) (expression_statement "puVar5[1] = puVar11;" (assignment_expression "puVar5[1] = puVar11" (subscript_expression "puVar5[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar5[5] = puVar4[8 - uVar1];" (assignment_expression "puVar5[5] = puVar4[8 - uVar1]" (subscript_expression "puVar5[5]" identifier [ number_literal ]) = (subscript_expression "puVar4[8 - uVar1]" identifier [ (binary_expression "8 - uVar1" number_literal - identifier) ])) ;) (if_statement "if (puVar11 != (undefined4 *)0x0) {\n      *puVar11 = puVar5;\n    }" if (parenthesized_expression "(puVar11 != (undefined4 *)0x0)" ( (binary_expression "puVar11 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      *puVar11 = puVar5;\n    }" { (expression_statement "*puVar11 = puVar5;" (assignment_expression "*puVar11 = puVar5" (pointer_expression "*puVar11" * identifier) = identifier) ;) })) (expression_statement "puVar2[iVar10 + 9] = puVar4[-uVar1 + 0xb];" (assignment_expression "puVar2[iVar10 + 9] = puVar4[-uVar1 + 0xb]" (subscript_expression "puVar2[iVar10 + 9]" identifier [ (binary_expression "iVar10 + 9" identifier + number_literal) ]) = (subscript_expression "puVar4[-uVar1 + 0xb]" identifier [ (binary_expression "-uVar1 + 0xb" (unary_expression "-uVar1" - identifier) + number_literal) ])) ;) (expression_statement "puVar4[4 - uVar1] = 0;" (assignment_expression "puVar4[4 - uVar1] = 0" (subscript_expression "puVar4[4 - uVar1]" identifier [ (binary_expression "4 - uVar1" number_literal - identifier) ]) = number_literal) ;) (expression_statement "puVar4[8 - uVar1] = 0;" (assignment_expression "puVar4[8 - uVar1] = 0" (subscript_expression "puVar4[8 - uVar1]" identifier [ (binary_expression "8 - uVar1" number_literal - identifier) ]) = number_literal) ;) (expression_statement "puVar4[-uVar1 + 0xb] = 0;" (assignment_expression "puVar4[-uVar1 + 0xb] = 0" (subscript_expression "puVar4[-uVar1 + 0xb]" identifier [ (binary_expression "-uVar1 + 0xb" (unary_expression "-uVar1" - identifier) + number_literal) ]) = number_literal) ;) (expression_statement "uVar7 = FUN_0003e010();" (assignment_expression "uVar7 = FUN_0003e010()" identifier = (call_expression "FUN_0003e010()" identifier (argument_list "()" ( )))) ;) (expression_statement "puVar2[local_30 + 5] = uVar7;" (assignment_expression "puVar2[local_30 + 5] = uVar7" (subscript_expression "puVar2[local_30 + 5]" identifier [ (binary_expression "local_30 + 5" identifier + number_literal) ]) = identifier) ;) (expression_statement "iVar12 = puVar2[iVar10 + 5];" (assignment_expression "iVar12 = puVar2[iVar10 + 5]" identifier = (subscript_expression "puVar2[iVar10 + 5]" identifier [ (binary_expression "iVar10 + 5" identifier + number_literal) ])) ;) (expression_statement "iVar6 = FUN_0003e010();" (assignment_expression "iVar6 = FUN_0003e010()" identifier = (call_expression "FUN_0003e010()" identifier (argument_list "()" ( )))) ;) (expression_statement "puVar2[iVar10 + 5] = iVar6;" (assignment_expression "puVar2[iVar10 + 5] = iVar6" (subscript_expression "puVar2[iVar10 + 5]" identifier [ (binary_expression "iVar10 + 5" identifier + number_literal) ]) = identifier) ;) (expression_statement "param_2 = (param_2 + iVar12) - iVar6;" (assignment_expression "param_2 = (param_2 + iVar12) - iVar6" identifier = (binary_expression "(param_2 + iVar12) - iVar6" (parenthesized_expression "(param_2 + iVar12)" ( (binary_expression "param_2 + iVar12" identifier + identifier) )) - identifier)) ;) })) (goto_statement "goto joined_r0x0003e772;" goto statement_identifier ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (labeled_statement statement_identifier : (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT * LIT) + LIT) ))))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) <= IDENT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (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 TYPE (abstract_pointer_declarator *)) ) (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 IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (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 (subscript_expression IDENT [ LIT ]) + LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;)) (expression_statement (assignment_expression IDENT = (subscript_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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression 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 = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression 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 TYPE (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 = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) }))) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == 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 IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ (binary_expression IDENT + LIT) ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (expression_statement (assignment_expression IDENT = LIT) ;) })) })))) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) = LIT) ;) (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) != IDENT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = LIT) , (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) != IDENT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) != IDENT) )) + LIT)) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) = (binary_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) })) (return_statement return IDENT ;) })))) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) ))) )) (goto_statement goto statement_identifier ;))))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ (binary_expression 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 TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression 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 = (subscript_expression IDENT [ (binary_expression IDENT + LIT) ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (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 IDENT = (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 TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (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 ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ (binary_expression IDENT + LIT) ])) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (do_statement do (compound_statement { (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 (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) = (subscript_expression IDENT [ (binary_expression IDENT + LIT) ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (expression_statement (assignment_expression IDENT = LIT) ;) })) }))) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT + 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 (subscript_expression IDENT [ LIT ]) + (subscript_expression IDENT [ LIT ])) + LIT)) ;) }) (else_clause else (compound_statement { (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression 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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) , (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) )) (compound_statement { (while_statement while (parenthesized_expression ( (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) , (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) , (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) )))) )) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) })) (labeled_statement statement_identifier : (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 IDENT + LIT) ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) + LIT)) ;) }))) (goto_statement goto statement_identifier ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (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 = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]))) ;)) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (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 IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + LIT) + (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]))) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ (binary_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 ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (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 [ (binary_expression IDENT + LIT) ]) = (subscript_expression 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 ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (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 (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression 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 IDENT = LIT) ;) }))) }))) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + LIT) + (subscript_expression IDENT [ LIT ]))) ;) }))) (labeled_statement statement_identifier : (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 (subscript_expression IDENT [ LIT ]) = (subscript_expression 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 IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ (binary_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 ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (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 = (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 TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (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 ( )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ (binary_expression IDENT + LIT) ])) ;) (while_statement while (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) = (subscript_expression IDENT [ (binary_expression IDENT + LIT) ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) = (subscript_expression IDENT [ (binary_expression IDENT + LIT) ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ (binary_expression IDENT + LIT) ])) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (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 : (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (subscript_expression IDENT [ LIT ]) == 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 (subscript_expression IDENT [ LIT ]) = (subscript_expression 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 (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ (binary_expression IDENT + LIT) ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ (binary_expression LIT - IDENT) ]))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ (binary_expression LIT - IDENT) ])) ;) (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 [ (binary_expression IDENT + LIT) ]) = (subscript_expression IDENT [ (binary_expression (unary_expression - IDENT) + LIT) ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression LIT - IDENT) ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression LIT - IDENT) ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression (unary_expression - IDENT) + LIT) ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ (binary_expression IDENT + LIT) ])) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT + IDENT) )) - IDENT)) ;) })) (goto_statement goto statement_identifier ;) })))
(function_definition "int __regparm3 FUN_0003e740(undefined4 param_1,int param_2)\n\n{\n  uint uVar1;\n  undefined4 *puVar2;\n  undefined4 *puVar3;\n  undefined4 *puVar4;\n  undefined4 *puVar5;\n  int iVar6;\n  undefined4 uVar7;\n  int iVar8;\n  undefined4 *extraout_ECX;\n  undefined4 extraout_ECX_00;\n  undefined4 *puVar9;\n  int iVar10;\n  undefined4 *puVar11;\n  int iVar12;\n  int local_38;\n  int local_34;\n  int local_30;\n  int local_28;\n  \n  puVar3 = (undefined4 *)FUN_0002abcc();\n  local_38 = -1;\n  local_34 = 0;\n  puVar5 = (undefined4 *)*puVar3;\njoined_r0x0003e772:\n  while( true ) {\n    puVar2 = puVar5;\n    iVar12 = param_2;\n    if (puVar2 == (undefined4 *)0x0) {\n      if (local_34 == 0) {\n        local_34 = *(int *)(local_38 * 4 + 0x24);\n      }\n      if (local_38 == -1) {\n        return 0;\n      }\n      goto LAB_0003e7aa;\n    }\n    if ((int)puVar2[5] <= iVar12) break;\n    puVar4 = (undefined4 *)puVar2[1];\n    param_2 = iVar12;\n    puVar5 = puVar4;\n    if (puVar4[10] == 0) {\n      puVar9 = (undefined4 *)puVar2[2];\n      if (puVar9 != (undefined4 *)0x0) {\n        local_30 = 0;\n        local_28 = 1;\n        if (puVar9[10] == 0) goto LAB_0003ed02;\n        goto LAB_0003e836;\n      }\nLAB_0003ed02:\n      local_30 = 1;\n      iVar10 = 0;\n      goto LAB_0003ed0c;\n    }\n  }\n  param_2 = iVar12 - (puVar2[5] + 1);\n  if (-1 < param_2) {\n    if (param_2 < (int)puVar2[6]) goto LAB_0003eab0;\n    iVar12 = param_2 - (puVar2[6] + 1);\n    if (iVar12 < 0) {\n      local_38 = 1;\n      if (local_34 == 0) {\n        local_34 = puVar2[10];\n      }\nLAB_0003e7aa:\n      puVar5 = (undefined4 *)*puVar2;\n      iVar12 = puVar2[1];\n      goto joined_r0x0003e7b1;\n    }\n    if (iVar12 < (int)puVar2[7]) {\n      puVar5 = (undefined4 *)puVar2[3];\n      param_2 = iVar12;\n      if (puVar5[10] == 0) {\n        iVar10 = 1;\n        local_30 = 2;\n        goto LAB_0003eacb;\n      }\n    }\n    else {\n      param_2 = iVar12 - (puVar2[7] + 1);\n      if (param_2 < 0) {\n        local_38 = 2;\n        if (local_34 == 0) {\n          local_34 = puVar2[0xb];\n        }\n        goto LAB_0003e7aa;\n      }\n      puVar9 = (undefined4 *)puVar2[4];\n      puVar5 = puVar9;\n      if (puVar9[10] == 0) {\n        puVar4 = (undefined4 *)puVar2[3];\n        if (puVar4[10] == 0) {\n          iVar10 = 2;\n          local_30 = 3;\n          goto LAB_0003ed0c;\n        }\n        local_30 = 3;\n        iVar10 = 2;\n        goto LAB_0003eae0;\n      }\n    }\n    goto joined_r0x0003e772;\n  }\n  local_38 = 0;\n  if (local_34 != 0) goto LAB_0003e7aa;\n  local_34 = puVar2[9];\n  puVar5 = (undefined4 *)*puVar2;\n  iVar12 = puVar2[1];\njoined_r0x0003e7b1:\n  if (puVar5 == (undefined4 *)0x0) {\n    if (puVar2[10] == 0) {\n      if (iVar12 == 0) {\n        FUN_0001a110(puVar2);\n        *puVar3 = 0;\n        return local_34;\n      }\n    }\n    else if (iVar12 == 0) {\n      puVar5 = (undefined4 *)0x0;\nLAB_0003e9d5:\n      if (local_38 == 2) {\nLAB_0003ea09:\n        local_38 = 2;\n      }\n      else {\n        iVar10 = puVar2[local_38 + 10];\n        iVar12 = local_38 + 1;\n        if (iVar10 != 0) {\n          do {\n            puVar2[iVar12 + 8] = iVar10;\n            if (iVar12 == 2) goto LAB_0003ea09;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);\n          local_38 = 1;\n        }\n      }\n      puVar2[local_38 + 9] = 0;\n      while (puVar3 = puVar5, puVar3 != (undefined4 *)0x0) {\n        iVar12 = 0;\n        if (((undefined4 *)puVar3[1] != puVar2) && (iVar12 = 1, (undefined4 *)puVar3[2] != puVar2))\n        {\n          iVar12 = ((undefined4 *)puVar3[3] != puVar2) + 2;\n        }\n        puVar3[iVar12 + 5] = puVar3[iVar12 + 5] + -1;\n        puVar2 = puVar3;\n        puVar5 = (undefined4 *)*puVar3;\n      }\n      return local_34;\n    }\n  }\n  else if ((iVar12 == 0) && (puVar2[10] != 0)) goto LAB_0003e9d5;\n  puVar5 = (undefined4 *)puVar2[local_38 + 1];\n  puVar4 = puVar5;\n  if (puVar5[10] == 0) {\n    puVar4 = (undefined4 *)puVar2[local_38 + 2];\n    iVar12 = local_38 + 1;\n    puVar11 = (undefined4 *)puVar4[1];\n    puVar9 = puVar4;\n    if (puVar4[10] == 0) {\n      uVar7 = puVar2[local_38 + 9];\n      puVar5[3] = puVar11;\n      puVar5[10] = uVar7;\n      puVar5[7] = puVar4[5];\n      if (puVar11 != (undefined4 *)0x0) {\n        *puVar11 = puVar5;\n      }\n      uVar7 = puVar4[6];\n      puVar5[0xb] = puVar4[9];\n      puVar11 = (undefined4 *)puVar4[2];\n      puVar5[8] = uVar7;\n      puVar5[4] = puVar11;\n      if (puVar11 != (undefined4 *)0x0) {\n        *puVar11 = puVar5;\n      }\n      FUN_0001a110(puVar4);\n      uVar7 = FUN_0003e010();\n      puVar2[local_38 + 5] = uVar7;\n      if (local_38 == 2) {\nLAB_0003ec29:\n        iVar12 = 3;\n        iVar6 = 2;\n      }\n      else {\n        iVar10 = puVar2[local_38 + 10];\n        iVar6 = local_38;\n        if (iVar10 != 0) {\n          do {\n            puVar2[iVar12 + 8] = iVar10;\n            puVar2[iVar12 + 1] = puVar2[iVar12 + 2];\n            puVar2[iVar12 + 5] = puVar2[iVar12 + 6];\n            if (iVar12 == 2) goto LAB_0003ec29;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);\n          iVar6 = 1;\n        }\n      }\n      puVar2[iVar6 + 9] = 0;\n      puVar2[iVar12 + 1] = 0;\n      puVar2[iVar12 + 5] = 0;\n      if (puVar2[9] == 0) {\n        *puVar3 = puVar5;\n        *puVar5 = 0;\n        FUN_0001a110(puVar2);\n      }\n      param_2 = puVar5[6] + puVar5[5] + 1;\n    }\n    else {\n      while (puVar5 = puVar11, puVar5 != (undefined4 *)0x0) {\n        puVar9 = puVar5;\n        puVar11 = (undefined4 *)puVar5[1];\n      }\n      puVar2[local_38 + 9] = puVar9[9];\n      param_2 = 0;\n      puVar5 = puVar4;\n    }\n  }\n  else {\n    while (puVar11 = (undefined4 *)puVar4[1], puVar11 != (undefined4 *)0x0) {\n      while ((puVar9 = (undefined4 *)puVar4[4], (undefined4 *)puVar4[4] != (undefined4 *)0x0 ||\n             (puVar9 = (undefined4 *)puVar4[3], (undefined4 *)puVar4[3] != (undefined4 *)0x0))) {\n        puVar4 = puVar9;\n        puVar11 = (undefined4 *)puVar4[1];\n        if (puVar11 == (undefined4 *)0x0) goto LAB_0003e958;\n      }\n      puVar9 = puVar4 + 2;\n      puVar4 = (undefined4 *)*puVar9;\n      if ((undefined4 *)*puVar9 == (undefined4 *)0x0) {\n        puVar4 = puVar11;\n      }\n    }\nLAB_0003e958:\n    iVar12 = puVar4[0xb];\n    if ((iVar12 == 0) && (iVar12 = puVar4[10], iVar12 == 0)) {\n      iVar12 = puVar4[9];\n    }\n    puVar2[local_38 + 9] = iVar12;\n    param_2 = puVar2[local_38 + 5] + -1;\n  }\n  goto joined_r0x0003e772;\nLAB_0003eab0:\n  puVar5 = (undefined4 *)puVar2[2];\n  if (puVar5[10] == 0) {\n    local_30 = 1;\n    iVar10 = 0;\nLAB_0003eacb:\n    puVar4 = (undefined4 *)puVar2[iVar10 + 1];\n    if (puVar4[10] == 0) {\n      local_28 = local_30 + 1;\n      puVar11 = puVar2 + local_30;\n      puVar9 = (undefined4 *)puVar11[2];\n      if (puVar9 == (undefined4 *)0x0) {\n        puVar9 = (undefined4 *)puVar11[1];\n        iVar12 = param_2 + 1 + puVar2[iVar10 + 5];\n      }\n      else {\n        if (puVar9[10] != 0) {\nLAB_0003e836:\n          uVar7 = puVar9[5];\n          puVar5[10] = puVar2[local_30 + 9];\n          puVar4 = (undefined4 *)puVar9[1];\n          puVar5[7] = uVar7;\n          puVar5[3] = puVar4;\n          if (puVar4 != (undefined4 *)0x0) {\n            *puVar4 = puVar5;\n          }\n          puVar2[local_30 + 9] = puVar9[9];\n          puVar9[1] = puVar9[2];\n          puVar9[5] = puVar9[6];\n          if (puVar9[10] == 0) {\n            iVar12 = 1;\n            iVar10 = 0;\n          }\n          else {\n            puVar9[9] = puVar9[10];\n            puVar9[2] = puVar9[3];\n            puVar9[6] = puVar9[7];\n            if (puVar9[0xb] == 0) {\n              iVar12 = 2;\n              iVar10 = 1;\n            }\n            else {\n              puVar9[10] = puVar9[0xb];\n              iVar12 = 3;\n              puVar9[3] = puVar9[4];\n              puVar9[7] = puVar9[8];\n              iVar10 = 2;\n            }\n          }\n          puVar9[iVar12 + 1] = 0;\n          puVar9[iVar12 + 5] = 0;\n          puVar9[iVar10 + 9] = 0;\n          uVar7 = FUN_0003e010();\n          puVar2[local_30 + 5] = uVar7;\n          uVar7 = FUN_0003e010();\n          puVar2[local_28 + 5] = uVar7;\n          puVar5 = extraout_ECX;\n          goto joined_r0x0003e772;\n        }\n        puVar4 = (undefined4 *)*puVar11;\n        puVar9 = (undefined4 *)puVar11[1];\n        iVar10 = local_30 + -1;\n        iVar12 = param_2 + 1 + puVar11[4];\n      }\nLAB_0003ed0c:\n      puVar9[4] = puVar9[2];\n      puVar9[8] = puVar9[6];\n      puVar9[0xb] = puVar9[9];\n      puVar9[3] = puVar9[1];\n      puVar9[7] = puVar9[5];\n      uVar7 = puVar4[6];\n      puVar9[10] = puVar2[iVar10 + 9];\n      puVar5 = (undefined4 *)puVar4[2];\n      puVar9[6] = uVar7;\n      puVar9[2] = puVar5;\n      if (puVar5 != (undefined4 *)0x0) {\n        *puVar5 = puVar9;\n      }\n      uVar7 = puVar4[5];\n      puVar9[9] = puVar4[9];\n      puVar5 = (undefined4 *)puVar4[1];\n      puVar9[5] = uVar7;\n      puVar9[1] = puVar5;\n      if (puVar5 != (undefined4 *)0x0) {\n        *puVar5 = puVar9;\n      }\n      uVar7 = FUN_0003e010();\n      puVar2[local_30 + 5] = uVar7;\n      FUN_0001a110(extraout_ECX_00);\n      iVar6 = puVar2[iVar10 + 2];\n      while (iVar6 != 0) {\n        iVar8 = iVar10 + 1;\n        puVar2[iVar8] = iVar6;\n        puVar2[iVar10 + 5] = puVar2[iVar10 + 6];\n        if (iVar8 == 3) {\n          puVar2[0xb] = 0;\n          puVar2[4] = 0;\n          puVar2[8] = 0;\n          goto LAB_0003edcd;\n        }\n        puVar2[iVar10 + 9] = puVar2[iVar10 + 10];\n        iVar6 = puVar2[iVar10 + 3];\n        iVar10 = iVar8;\n      }\n      puVar2[iVar10 + 1] = 0;\n      puVar2[iVar10 + 5] = 0;\n      puVar2[iVar10 + 9] = 0;\nLAB_0003edcd:\n      param_2 = iVar12;\n      puVar5 = puVar9;\n      if (puVar2[9] == 0) {\n        *puVar3 = puVar9;\n        *puVar9 = 0;\n        FUN_0001a110(puVar2);\n      }\n      goto joined_r0x0003e772;\n    }\nLAB_0003eae0:\n    uVar1 = (uint)(puVar4[0xb] == 0);\n    puVar5[3] = puVar5[2];\n    puVar5[7] = puVar5[6];\n    puVar5[10] = puVar5[9];\n    puVar5[2] = puVar5[1];\n    puVar5[6] = puVar5[5];\n    puVar5[9] = puVar2[iVar10 + 9];\n    puVar11 = (undefined4 *)puVar4[4 - uVar1];\n    puVar5[1] = puVar11;\n    puVar5[5] = puVar4[8 - uVar1];\n    if (puVar11 != (undefined4 *)0x0) {\n      *puVar11 = puVar5;\n    }\n    puVar2[iVar10 + 9] = puVar4[-uVar1 + 0xb];\n    puVar4[4 - uVar1] = 0;\n    puVar4[8 - uVar1] = 0;\n    puVar4[-uVar1 + 0xb] = 0;\n    uVar7 = FUN_0003e010();\n    puVar2[local_30 + 5] = uVar7;\n    iVar12 = puVar2[iVar10 + 5];\n    iVar6 = FUN_0003e010();\n    puVar2[iVar10 + 5] = iVar6;\n    param_2 = (param_2 + iVar12) - iVar6;\n  }\n  goto joined_r0x0003e772;\n}" (primitive_type "int") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_0003e740(undefined4 param_1,int param_2)" (identifier "FUN_0003e740") (parameter_list "(undefined4 param_1,int param_2)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) () ")"))) (compound_statement "{\n  uint uVar1;\n  undefined4 *puVar2;\n  undefined4 *puVar3;\n  undefined4 *puVar4;\n  undefined4 *puVar5;\n  int iVar6;\n  undefined4 uVar7;\n  int iVar8;\n  undefined4 *extraout_ECX;\n  undefined4 extraout_ECX_00;\n  undefined4 *puVar9;\n  int iVar10;\n  undefined4 *puVar11;\n  int iVar12;\n  int local_38;\n  int local_34;\n  int local_30;\n  int local_28;\n  \n  puVar3 = (undefined4 *)FUN_0002abcc();\n  local_38 = -1;\n  local_34 = 0;\n  puVar5 = (undefined4 *)*puVar3;\njoined_r0x0003e772:\n  while( true ) {\n    puVar2 = puVar5;\n    iVar12 = param_2;\n    if (puVar2 == (undefined4 *)0x0) {\n      if (local_34 == 0) {\n        local_34 = *(int *)(local_38 * 4 + 0x24);\n      }\n      if (local_38 == -1) {\n        return 0;\n      }\n      goto LAB_0003e7aa;\n    }\n    if ((int)puVar2[5] <= iVar12) break;\n    puVar4 = (undefined4 *)puVar2[1];\n    param_2 = iVar12;\n    puVar5 = puVar4;\n    if (puVar4[10] == 0) {\n      puVar9 = (undefined4 *)puVar2[2];\n      if (puVar9 != (undefined4 *)0x0) {\n        local_30 = 0;\n        local_28 = 1;\n        if (puVar9[10] == 0) goto LAB_0003ed02;\n        goto LAB_0003e836;\n      }\nLAB_0003ed02:\n      local_30 = 1;\n      iVar10 = 0;\n      goto LAB_0003ed0c;\n    }\n  }\n  param_2 = iVar12 - (puVar2[5] + 1);\n  if (-1 < param_2) {\n    if (param_2 < (int)puVar2[6]) goto LAB_0003eab0;\n    iVar12 = param_2 - (puVar2[6] + 1);\n    if (iVar12 < 0) {\n      local_38 = 1;\n      if (local_34 == 0) {\n        local_34 = puVar2[10];\n      }\nLAB_0003e7aa:\n      puVar5 = (undefined4 *)*puVar2;\n      iVar12 = puVar2[1];\n      goto joined_r0x0003e7b1;\n    }\n    if (iVar12 < (int)puVar2[7]) {\n      puVar5 = (undefined4 *)puVar2[3];\n      param_2 = iVar12;\n      if (puVar5[10] == 0) {\n        iVar10 = 1;\n        local_30 = 2;\n        goto LAB_0003eacb;\n      }\n    }\n    else {\n      param_2 = iVar12 - (puVar2[7] + 1);\n      if (param_2 < 0) {\n        local_38 = 2;\n        if (local_34 == 0) {\n          local_34 = puVar2[0xb];\n        }\n        goto LAB_0003e7aa;\n      }\n      puVar9 = (undefined4 *)puVar2[4];\n      puVar5 = puVar9;\n      if (puVar9[10] == 0) {\n        puVar4 = (undefined4 *)puVar2[3];\n        if (puVar4[10] == 0) {\n          iVar10 = 2;\n          local_30 = 3;\n          goto LAB_0003ed0c;\n        }\n        local_30 = 3;\n        iVar10 = 2;\n        goto LAB_0003eae0;\n      }\n    }\n    goto joined_r0x0003e772;\n  }\n  local_38 = 0;\n  if (local_34 != 0) goto LAB_0003e7aa;\n  local_34 = puVar2[9];\n  puVar5 = (undefined4 *)*puVar2;\n  iVar12 = puVar2[1];\njoined_r0x0003e7b1:\n  if (puVar5 == (undefined4 *)0x0) {\n    if (puVar2[10] == 0) {\n      if (iVar12 == 0) {\n        FUN_0001a110(puVar2);\n        *puVar3 = 0;\n        return local_34;\n      }\n    }\n    else if (iVar12 == 0) {\n      puVar5 = (undefined4 *)0x0;\nLAB_0003e9d5:\n      if (local_38 == 2) {\nLAB_0003ea09:\n        local_38 = 2;\n      }\n      else {\n        iVar10 = puVar2[local_38 + 10];\n        iVar12 = local_38 + 1;\n        if (iVar10 != 0) {\n          do {\n            puVar2[iVar12 + 8] = iVar10;\n            if (iVar12 == 2) goto LAB_0003ea09;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);\n          local_38 = 1;\n        }\n      }\n      puVar2[local_38 + 9] = 0;\n      while (puVar3 = puVar5, puVar3 != (undefined4 *)0x0) {\n        iVar12 = 0;\n        if (((undefined4 *)puVar3[1] != puVar2) && (iVar12 = 1, (undefined4 *)puVar3[2] != puVar2))\n        {\n          iVar12 = ((undefined4 *)puVar3[3] != puVar2) + 2;\n        }\n        puVar3[iVar12 + 5] = puVar3[iVar12 + 5] + -1;\n        puVar2 = puVar3;\n        puVar5 = (undefined4 *)*puVar3;\n      }\n      return local_34;\n    }\n  }\n  else if ((iVar12 == 0) && (puVar2[10] != 0)) goto LAB_0003e9d5;\n  puVar5 = (undefined4 *)puVar2[local_38 + 1];\n  puVar4 = puVar5;\n  if (puVar5[10] == 0) {\n    puVar4 = (undefined4 *)puVar2[local_38 + 2];\n    iVar12 = local_38 + 1;\n    puVar11 = (undefined4 *)puVar4[1];\n    puVar9 = puVar4;\n    if (puVar4[10] == 0) {\n      uVar7 = puVar2[local_38 + 9];\n      puVar5[3] = puVar11;\n      puVar5[10] = uVar7;\n      puVar5[7] = puVar4[5];\n      if (puVar11 != (undefined4 *)0x0) {\n        *puVar11 = puVar5;\n      }\n      uVar7 = puVar4[6];\n      puVar5[0xb] = puVar4[9];\n      puVar11 = (undefined4 *)puVar4[2];\n      puVar5[8] = uVar7;\n      puVar5[4] = puVar11;\n      if (puVar11 != (undefined4 *)0x0) {\n        *puVar11 = puVar5;\n      }\n      FUN_0001a110(puVar4);\n      uVar7 = FUN_0003e010();\n      puVar2[local_38 + 5] = uVar7;\n      if (local_38 == 2) {\nLAB_0003ec29:\n        iVar12 = 3;\n        iVar6 = 2;\n      }\n      else {\n        iVar10 = puVar2[local_38 + 10];\n        iVar6 = local_38;\n        if (iVar10 != 0) {\n          do {\n            puVar2[iVar12 + 8] = iVar10;\n            puVar2[iVar12 + 1] = puVar2[iVar12 + 2];\n            puVar2[iVar12 + 5] = puVar2[iVar12 + 6];\n            if (iVar12 == 2) goto LAB_0003ec29;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);\n          iVar6 = 1;\n        }\n      }\n      puVar2[iVar6 + 9] = 0;\n      puVar2[iVar12 + 1] = 0;\n      puVar2[iVar12 + 5] = 0;\n      if (puVar2[9] == 0) {\n        *puVar3 = puVar5;\n        *puVar5 = 0;\n        FUN_0001a110(puVar2);\n      }\n      param_2 = puVar5[6] + puVar5[5] + 1;\n    }\n    else {\n      while (puVar5 = puVar11, puVar5 != (undefined4 *)0x0) {\n        puVar9 = puVar5;\n        puVar11 = (undefined4 *)puVar5[1];\n      }\n      puVar2[local_38 + 9] = puVar9[9];\n      param_2 = 0;\n      puVar5 = puVar4;\n    }\n  }\n  else {\n    while (puVar11 = (undefined4 *)puVar4[1], puVar11 != (undefined4 *)0x0) {\n      while ((puVar9 = (undefined4 *)puVar4[4], (undefined4 *)puVar4[4] != (undefined4 *)0x0 ||\n             (puVar9 = (undefined4 *)puVar4[3], (undefined4 *)puVar4[3] != (undefined4 *)0x0))) {\n        puVar4 = puVar9;\n        puVar11 = (undefined4 *)puVar4[1];\n        if (puVar11 == (undefined4 *)0x0) goto LAB_0003e958;\n      }\n      puVar9 = puVar4 + 2;\n      puVar4 = (undefined4 *)*puVar9;\n      if ((undefined4 *)*puVar9 == (undefined4 *)0x0) {\n        puVar4 = puVar11;\n      }\n    }\nLAB_0003e958:\n    iVar12 = puVar4[0xb];\n    if ((iVar12 == 0) && (iVar12 = puVar4[10], iVar12 == 0)) {\n      iVar12 = puVar4[9];\n    }\n    puVar2[local_38 + 9] = iVar12;\n    param_2 = puVar2[local_38 + 5] + -1;\n  }\n  goto joined_r0x0003e772;\nLAB_0003eab0:\n  puVar5 = (undefined4 *)puVar2[2];\n  if (puVar5[10] == 0) {\n    local_30 = 1;\n    iVar10 = 0;\nLAB_0003eacb:\n    puVar4 = (undefined4 *)puVar2[iVar10 + 1];\n    if (puVar4[10] == 0) {\n      local_28 = local_30 + 1;\n      puVar11 = puVar2 + local_30;\n      puVar9 = (undefined4 *)puVar11[2];\n      if (puVar9 == (undefined4 *)0x0) {\n        puVar9 = (undefined4 *)puVar11[1];\n        iVar12 = param_2 + 1 + puVar2[iVar10 + 5];\n      }\n      else {\n        if (puVar9[10] != 0) {\nLAB_0003e836:\n          uVar7 = puVar9[5];\n          puVar5[10] = puVar2[local_30 + 9];\n          puVar4 = (undefined4 *)puVar9[1];\n          puVar5[7] = uVar7;\n          puVar5[3] = puVar4;\n          if (puVar4 != (undefined4 *)0x0) {\n            *puVar4 = puVar5;\n          }\n          puVar2[local_30 + 9] = puVar9[9];\n          puVar9[1] = puVar9[2];\n          puVar9[5] = puVar9[6];\n          if (puVar9[10] == 0) {\n            iVar12 = 1;\n            iVar10 = 0;\n          }\n          else {\n            puVar9[9] = puVar9[10];\n            puVar9[2] = puVar9[3];\n            puVar9[6] = puVar9[7];\n            if (puVar9[0xb] == 0) {\n              iVar12 = 2;\n              iVar10 = 1;\n            }\n            else {\n              puVar9[10] = puVar9[0xb];\n              iVar12 = 3;\n              puVar9[3] = puVar9[4];\n              puVar9[7] = puVar9[8];\n              iVar10 = 2;\n            }\n          }\n          puVar9[iVar12 + 1] = 0;\n          puVar9[iVar12 + 5] = 0;\n          puVar9[iVar10 + 9] = 0;\n          uVar7 = FUN_0003e010();\n          puVar2[local_30 + 5] = uVar7;\n          uVar7 = FUN_0003e010();\n          puVar2[local_28 + 5] = uVar7;\n          puVar5 = extraout_ECX;\n          goto joined_r0x0003e772;\n        }\n        puVar4 = (undefined4 *)*puVar11;\n        puVar9 = (undefined4 *)puVar11[1];\n        iVar10 = local_30 + -1;\n        iVar12 = param_2 + 1 + puVar11[4];\n      }\nLAB_0003ed0c:\n      puVar9[4] = puVar9[2];\n      puVar9[8] = puVar9[6];\n      puVar9[0xb] = puVar9[9];\n      puVar9[3] = puVar9[1];\n      puVar9[7] = puVar9[5];\n      uVar7 = puVar4[6];\n      puVar9[10] = puVar2[iVar10 + 9];\n      puVar5 = (undefined4 *)puVar4[2];\n      puVar9[6] = uVar7;\n      puVar9[2] = puVar5;\n      if (puVar5 != (undefined4 *)0x0) {\n        *puVar5 = puVar9;\n      }\n      uVar7 = puVar4[5];\n      puVar9[9] = puVar4[9];\n      puVar5 = (undefined4 *)puVar4[1];\n      puVar9[5] = uVar7;\n      puVar9[1] = puVar5;\n      if (puVar5 != (undefined4 *)0x0) {\n        *puVar5 = puVar9;\n      }\n      uVar7 = FUN_0003e010();\n      puVar2[local_30 + 5] = uVar7;\n      FUN_0001a110(extraout_ECX_00);\n      iVar6 = puVar2[iVar10 + 2];\n      while (iVar6 != 0) {\n        iVar8 = iVar10 + 1;\n        puVar2[iVar8] = iVar6;\n        puVar2[iVar10 + 5] = puVar2[iVar10 + 6];\n        if (iVar8 == 3) {\n          puVar2[0xb] = 0;\n          puVar2[4] = 0;\n          puVar2[8] = 0;\n          goto LAB_0003edcd;\n        }\n        puVar2[iVar10 + 9] = puVar2[iVar10 + 10];\n        iVar6 = puVar2[iVar10 + 3];\n        iVar10 = iVar8;\n      }\n      puVar2[iVar10 + 1] = 0;\n      puVar2[iVar10 + 5] = 0;\n      puVar2[iVar10 + 9] = 0;\nLAB_0003edcd:\n      param_2 = iVar12;\n      puVar5 = puVar9;\n      if (puVar2[9] == 0) {\n        *puVar3 = puVar9;\n        *puVar9 = 0;\n        FUN_0001a110(puVar2);\n      }\n      goto joined_r0x0003e772;\n    }\nLAB_0003eae0:\n    uVar1 = (uint)(puVar4[0xb] == 0);\n    puVar5[3] = puVar5[2];\n    puVar5[7] = puVar5[6];\n    puVar5[10] = puVar5[9];\n    puVar5[2] = puVar5[1];\n    puVar5[6] = puVar5[5];\n    puVar5[9] = puVar2[iVar10 + 9];\n    puVar11 = (undefined4 *)puVar4[4 - uVar1];\n    puVar5[1] = puVar11;\n    puVar5[5] = puVar4[8 - uVar1];\n    if (puVar11 != (undefined4 *)0x0) {\n      *puVar11 = puVar5;\n    }\n    puVar2[iVar10 + 9] = puVar4[-uVar1 + 0xb];\n    puVar4[4 - uVar1] = 0;\n    puVar4[8 - uVar1] = 0;\n    puVar4[-uVar1 + 0xb] = 0;\n    uVar7 = FUN_0003e010();\n    puVar2[local_30 + 5] = uVar7;\n    iVar12 = puVar2[iVar10 + 5];\n    iVar6 = FUN_0003e010();\n    puVar2[iVar10 + 5] = iVar6;\n    param_2 = (param_2 + iVar12) - iVar6;\n  }\n  goto joined_r0x0003e772;\n}" ({ "{") (declaration "uint uVar1;" (type_identifier "uint") (identifier "uVar1") (; ";")) (declaration "undefined4 *puVar2;" (type_identifier "undefined4") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "undefined4 *puVar3;" (type_identifier "undefined4") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "undefined4 *puVar4;" (type_identifier "undefined4") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "undefined4 *puVar5;" (type_identifier "undefined4") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "undefined4 uVar7;" (type_identifier "undefined4") (identifier "uVar7") (; ";")) (declaration "int iVar8;" (primitive_type "int") (identifier "iVar8") (; ";")) (declaration "undefined4 *extraout_ECX;" (type_identifier "undefined4") (pointer_declarator "*extraout_ECX" (* "*") (identifier "extraout_ECX")) (; ";")) (declaration "undefined4 extraout_ECX_00;" (type_identifier "undefined4") (identifier "extraout_ECX_00") (; ";")) (declaration "undefined4 *puVar9;" (type_identifier "undefined4") (pointer_declarator "*puVar9" (* "*") (identifier "puVar9")) (; ";")) (declaration "int iVar10;" (primitive_type "int") (identifier "iVar10") (; ";")) (declaration "undefined4 *puVar11;" (type_identifier "undefined4") (pointer_declarator "*puVar11" (* "*") (identifier "puVar11")) (; ";")) (declaration "int iVar12;" (primitive_type "int") (identifier "iVar12") (; ";")) (declaration "int local_38;" (primitive_type "int") (identifier "local_38") (; ";")) (declaration "int local_34;" (primitive_type "int") (identifier "local_34") (; ";")) (declaration "int local_30;" (primitive_type "int") (identifier "local_30") (; ";")) (declaration "int local_28;" (primitive_type "int") (identifier "local_28") (; ";")) (expression_statement "puVar3 = (undefined4 *)FUN_0002abcc();" (assignment_expression "puVar3 = (undefined4 *)FUN_0002abcc()" (identifier "puVar3") (= "=") (cast_expression "(undefined4 *)FUN_0002abcc()" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0002abcc()" (identifier "FUN_0002abcc") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "local_38 = -1;" (assignment_expression "local_38 = -1" (identifier "local_38") (= "=") (number_literal "-1")) (; ";")) (expression_statement "local_34 = 0;" (assignment_expression "local_34 = 0" (identifier "local_34") (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar5 = (undefined4 *)*puVar3;" (assignment_expression "puVar5 = (undefined4 *)*puVar3" (identifier "puVar5") (= "=") (cast_expression "(undefined4 *)*puVar3" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar3" (* "*") (identifier "puVar3")))) (; ";")) (labeled_statement "joined_r0x0003e772:\n  while( true ) {\n    puVar2 = puVar5;\n    iVar12 = param_2;\n    if (puVar2 == (undefined4 *)0x0) {\n      if (local_34 == 0) {\n        local_34 = *(int *)(local_38 * 4 + 0x24);\n      }\n      if (local_38 == -1) {\n        return 0;\n      }\n      goto LAB_0003e7aa;\n    }\n    if ((int)puVar2[5] <= iVar12) break;\n    puVar4 = (undefined4 *)puVar2[1];\n    param_2 = iVar12;\n    puVar5 = puVar4;\n    if (puVar4[10] == 0) {\n      puVar9 = (undefined4 *)puVar2[2];\n      if (puVar9 != (undefined4 *)0x0) {\n        local_30 = 0;\n        local_28 = 1;\n        if (puVar9[10] == 0) goto LAB_0003ed02;\n        goto LAB_0003e836;\n      }\nLAB_0003ed02:\n      local_30 = 1;\n      iVar10 = 0;\n      goto LAB_0003ed0c;\n    }\n  }" (statement_identifier "joined_r0x0003e772") (: ":") (while_statement "while( true ) {\n    puVar2 = puVar5;\n    iVar12 = param_2;\n    if (puVar2 == (undefined4 *)0x0) {\n      if (local_34 == 0) {\n        local_34 = *(int *)(local_38 * 4 + 0x24);\n      }\n      if (local_38 == -1) {\n        return 0;\n      }\n      goto LAB_0003e7aa;\n    }\n    if ((int)puVar2[5] <= iVar12) break;\n    puVar4 = (undefined4 *)puVar2[1];\n    param_2 = iVar12;\n    puVar5 = puVar4;\n    if (puVar4[10] == 0) {\n      puVar9 = (undefined4 *)puVar2[2];\n      if (puVar9 != (undefined4 *)0x0) {\n        local_30 = 0;\n        local_28 = 1;\n        if (puVar9[10] == 0) goto LAB_0003ed02;\n        goto LAB_0003e836;\n      }\nLAB_0003ed02:\n      local_30 = 1;\n      iVar10 = 0;\n      goto LAB_0003ed0c;\n    }\n  }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n    puVar2 = puVar5;\n    iVar12 = param_2;\n    if (puVar2 == (undefined4 *)0x0) {\n      if (local_34 == 0) {\n        local_34 = *(int *)(local_38 * 4 + 0x24);\n      }\n      if (local_38 == -1) {\n        return 0;\n      }\n      goto LAB_0003e7aa;\n    }\n    if ((int)puVar2[5] <= iVar12) break;\n    puVar4 = (undefined4 *)puVar2[1];\n    param_2 = iVar12;\n    puVar5 = puVar4;\n    if (puVar4[10] == 0) {\n      puVar9 = (undefined4 *)puVar2[2];\n      if (puVar9 != (undefined4 *)0x0) {\n        local_30 = 0;\n        local_28 = 1;\n        if (puVar9[10] == 0) goto LAB_0003ed02;\n        goto LAB_0003e836;\n      }\nLAB_0003ed02:\n      local_30 = 1;\n      iVar10 = 0;\n      goto LAB_0003ed0c;\n    }\n  }" ({ "{") (expression_statement "puVar2 = puVar5;" (assignment_expression "puVar2 = puVar5" (identifier "puVar2") (= "=") (identifier "puVar5")) (; ";")) (expression_statement "iVar12 = param_2;" (assignment_expression "iVar12 = param_2" (identifier "iVar12") (= "=") (identifier "param_2")) (; ";")) (if_statement "if (puVar2 == (undefined4 *)0x0) {\n      if (local_34 == 0) {\n        local_34 = *(int *)(local_38 * 4 + 0x24);\n      }\n      if (local_38 == -1) {\n        return 0;\n      }\n      goto LAB_0003e7aa;\n    }" (if "if") (parenthesized_expression "(puVar2 == (undefined4 *)0x0)" (( "(") (binary_expression "puVar2 == (undefined4 *)0x0" (identifier "puVar2") (== "==") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      if (local_34 == 0) {\n        local_34 = *(int *)(local_38 * 4 + 0x24);\n      }\n      if (local_38 == -1) {\n        return 0;\n      }\n      goto LAB_0003e7aa;\n    }" ({ "{") (if_statement "if (local_34 == 0) {\n        local_34 = *(int *)(local_38 * 4 + 0x24);\n      }" (if "if") (parenthesized_expression "(local_34 == 0)" (( "(") (binary_expression "local_34 == 0" (identifier "local_34") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        local_34 = *(int *)(local_38 * 4 + 0x24);\n      }" ({ "{") (expression_statement "local_34 = *(int *)(local_38 * 4 + 0x24);" (assignment_expression "local_34 = *(int *)(local_38 * 4 + 0x24)" (identifier "local_34") (= "=") (pointer_expression "*(int *)(local_38 * 4 + 0x24)" (* "*") (cast_expression "(int *)(local_38 * 4 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_38 * 4 + 0x24)" (( "(") (binary_expression "local_38 * 4 + 0x24" (binary_expression "local_38 * 4" (identifier "local_38") (* "*") (number_literal "4")) (+ "+") (number_literal "0x24")) () ")"))))) (; ";")) (} "}"))) (if_statement "if (local_38 == -1) {\n        return 0;\n      }" (if "if") (parenthesized_expression "(local_38 == -1)" (( "(") (binary_expression "local_38 == -1" (identifier "local_38") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n        return 0;\n      }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (goto_statement "goto LAB_0003e7aa;" (goto "goto") (statement_identifier "LAB_0003e7aa") (; ";")) (} "}"))) (if_statement "if ((int)puVar2[5] <= iVar12) break;" (if "if") (parenthesized_expression "((int)puVar2[5] <= iVar12)" (( "(") (binary_expression "(int)puVar2[5] <= iVar12" (cast_expression "(int)puVar2[5]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "puVar2[5]" (identifier "puVar2") ([ "[") (number_literal "5") (] "]"))) (<= "<=") (identifier "iVar12")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "puVar4 = (undefined4 *)puVar2[1];" (assignment_expression "puVar4 = (undefined4 *)puVar2[1]" (identifier "puVar4") (= "=") (cast_expression "(undefined4 *)puVar2[1]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "param_2 = iVar12;" (assignment_expression "param_2 = iVar12" (identifier "param_2") (= "=") (identifier "iVar12")) (; ";")) (expression_statement "puVar5 = puVar4;" (assignment_expression "puVar5 = puVar4" (identifier "puVar5") (= "=") (identifier "puVar4")) (; ";")) (if_statement "if (puVar4[10] == 0) {\n      puVar9 = (undefined4 *)puVar2[2];\n      if (puVar9 != (undefined4 *)0x0) {\n        local_30 = 0;\n        local_28 = 1;\n        if (puVar9[10] == 0) goto LAB_0003ed02;\n        goto LAB_0003e836;\n      }\nLAB_0003ed02:\n      local_30 = 1;\n      iVar10 = 0;\n      goto LAB_0003ed0c;\n    }" (if "if") (parenthesized_expression "(puVar4[10] == 0)" (( "(") (binary_expression "puVar4[10] == 0" (subscript_expression "puVar4[10]" (identifier "puVar4") ([ "[") (number_literal "10") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      puVar9 = (undefined4 *)puVar2[2];\n      if (puVar9 != (undefined4 *)0x0) {\n        local_30 = 0;\n        local_28 = 1;\n        if (puVar9[10] == 0) goto LAB_0003ed02;\n        goto LAB_0003e836;\n      }\nLAB_0003ed02:\n      local_30 = 1;\n      iVar10 = 0;\n      goto LAB_0003ed0c;\n    }" ({ "{") (expression_statement "puVar9 = (undefined4 *)puVar2[2];" (assignment_expression "puVar9 = (undefined4 *)puVar2[2]" (identifier "puVar9") (= "=") (cast_expression "(undefined4 *)puVar2[2]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar2[2]" (identifier "puVar2") ([ "[") (number_literal "2") (] "]")))) (; ";")) (if_statement "if (puVar9 != (undefined4 *)0x0) {\n        local_30 = 0;\n        local_28 = 1;\n        if (puVar9[10] == 0) goto LAB_0003ed02;\n        goto LAB_0003e836;\n      }" (if "if") (parenthesized_expression "(puVar9 != (undefined4 *)0x0)" (( "(") (binary_expression "puVar9 != (undefined4 *)0x0" (identifier "puVar9") (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        local_30 = 0;\n        local_28 = 1;\n        if (puVar9[10] == 0) goto LAB_0003ed02;\n        goto LAB_0003e836;\n      }" ({ "{") (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" (identifier "local_30") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_28 = 1;" (assignment_expression "local_28 = 1" (identifier "local_28") (= "=") (number_literal "1")) (; ";")) (if_statement "if (puVar9[10] == 0) goto LAB_0003ed02;" (if "if") (parenthesized_expression "(puVar9[10] == 0)" (( "(") (binary_expression "puVar9[10] == 0" (subscript_expression "puVar9[10]" (identifier "puVar9") ([ "[") (number_literal "10") (] "]")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0003ed02;" (goto "goto") (statement_identifier "LAB_0003ed02") (; ";"))) (goto_statement "goto LAB_0003e836;" (goto "goto") (statement_identifier "LAB_0003e836") (; ";")) (} "}"))) (labeled_statement "LAB_0003ed02:\n      local_30 = 1;" (statement_identifier "LAB_0003ed02") (: ":") (expression_statement "local_30 = 1;" (assignment_expression "local_30 = 1" (identifier "local_30") (= "=") (number_literal "1")) (; ";"))) (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" (identifier "iVar10") (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_0003ed0c;" (goto "goto") (statement_identifier "LAB_0003ed0c") (; ";")) (} "}"))) (} "}")))) (expression_statement "param_2 = iVar12 - (puVar2[5] + 1);" (assignment_expression "param_2 = iVar12 - (puVar2[5] + 1)" (identifier "param_2") (= "=") (binary_expression "iVar12 - (puVar2[5] + 1)" (identifier "iVar12") (- "-") (parenthesized_expression "(puVar2[5] + 1)" (( "(") (binary_expression "puVar2[5] + 1" (subscript_expression "puVar2[5]" (identifier "puVar2") ([ "[") (number_literal "5") (] "]")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (if_statement "if (-1 < param_2) {\n    if (param_2 < (int)puVar2[6]) goto LAB_0003eab0;\n    iVar12 = param_2 - (puVar2[6] + 1);\n    if (iVar12 < 0) {\n      local_38 = 1;\n      if (local_34 == 0) {\n        local_34 = puVar2[10];\n      }\nLAB_0003e7aa:\n      puVar5 = (undefined4 *)*puVar2;\n      iVar12 = puVar2[1];\n      goto joined_r0x0003e7b1;\n    }\n    if (iVar12 < (int)puVar2[7]) {\n      puVar5 = (undefined4 *)puVar2[3];\n      param_2 = iVar12;\n      if (puVar5[10] == 0) {\n        iVar10 = 1;\n        local_30 = 2;\n        goto LAB_0003eacb;\n      }\n    }\n    else {\n      param_2 = iVar12 - (puVar2[7] + 1);\n      if (param_2 < 0) {\n        local_38 = 2;\n        if (local_34 == 0) {\n          local_34 = puVar2[0xb];\n        }\n        goto LAB_0003e7aa;\n      }\n      puVar9 = (undefined4 *)puVar2[4];\n      puVar5 = puVar9;\n      if (puVar9[10] == 0) {\n        puVar4 = (undefined4 *)puVar2[3];\n        if (puVar4[10] == 0) {\n          iVar10 = 2;\n          local_30 = 3;\n          goto LAB_0003ed0c;\n        }\n        local_30 = 3;\n        iVar10 = 2;\n        goto LAB_0003eae0;\n      }\n    }\n    goto joined_r0x0003e772;\n  }" (if "if") (parenthesized_expression "(-1 < param_2)" (( "(") (binary_expression "-1 < param_2" (number_literal "-1") (< "<") (identifier "param_2")) () ")")) (compound_statement "{\n    if (param_2 < (int)puVar2[6]) goto LAB_0003eab0;\n    iVar12 = param_2 - (puVar2[6] + 1);\n    if (iVar12 < 0) {\n      local_38 = 1;\n      if (local_34 == 0) {\n        local_34 = puVar2[10];\n      }\nLAB_0003e7aa:\n      puVar5 = (undefined4 *)*puVar2;\n      iVar12 = puVar2[1];\n      goto joined_r0x0003e7b1;\n    }\n    if (iVar12 < (int)puVar2[7]) {\n      puVar5 = (undefined4 *)puVar2[3];\n      param_2 = iVar12;\n      if (puVar5[10] == 0) {\n        iVar10 = 1;\n        local_30 = 2;\n        goto LAB_0003eacb;\n      }\n    }\n    else {\n      param_2 = iVar12 - (puVar2[7] + 1);\n      if (param_2 < 0) {\n        local_38 = 2;\n        if (local_34 == 0) {\n          local_34 = puVar2[0xb];\n        }\n        goto LAB_0003e7aa;\n      }\n      puVar9 = (undefined4 *)puVar2[4];\n      puVar5 = puVar9;\n      if (puVar9[10] == 0) {\n        puVar4 = (undefined4 *)puVar2[3];\n        if (puVar4[10] == 0) {\n          iVar10 = 2;\n          local_30 = 3;\n          goto LAB_0003ed0c;\n        }\n        local_30 = 3;\n        iVar10 = 2;\n        goto LAB_0003eae0;\n      }\n    }\n    goto joined_r0x0003e772;\n  }" ({ "{") (if_statement "if (param_2 < (int)puVar2[6]) goto LAB_0003eab0;" (if "if") (parenthesized_expression "(param_2 < (int)puVar2[6])" (( "(") (binary_expression "param_2 < (int)puVar2[6]" (identifier "param_2") (< "<") (cast_expression "(int)puVar2[6]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "puVar2[6]" (identifier "puVar2") ([ "[") (number_literal "6") (] "]")))) () ")")) (goto_statement "goto LAB_0003eab0;" (goto "goto") (statement_identifier "LAB_0003eab0") (; ";"))) (expression_statement "iVar12 = param_2 - (puVar2[6] + 1);" (assignment_expression "iVar12 = param_2 - (puVar2[6] + 1)" (identifier "iVar12") (= "=") (binary_expression "param_2 - (puVar2[6] + 1)" (identifier "param_2") (- "-") (parenthesized_expression "(puVar2[6] + 1)" (( "(") (binary_expression "puVar2[6] + 1" (subscript_expression "puVar2[6]" (identifier "puVar2") ([ "[") (number_literal "6") (] "]")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (if_statement "if (iVar12 < 0) {\n      local_38 = 1;\n      if (local_34 == 0) {\n        local_34 = puVar2[10];\n      }\nLAB_0003e7aa:\n      puVar5 = (undefined4 *)*puVar2;\n      iVar12 = puVar2[1];\n      goto joined_r0x0003e7b1;\n    }" (if "if") (parenthesized_expression "(iVar12 < 0)" (( "(") (binary_expression "iVar12 < 0" (identifier "iVar12") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n      local_38 = 1;\n      if (local_34 == 0) {\n        local_34 = puVar2[10];\n      }\nLAB_0003e7aa:\n      puVar5 = (undefined4 *)*puVar2;\n      iVar12 = puVar2[1];\n      goto joined_r0x0003e7b1;\n    }" ({ "{") (expression_statement "local_38 = 1;" (assignment_expression "local_38 = 1" (identifier "local_38") (= "=") (number_literal "1")) (; ";")) (if_statement "if (local_34 == 0) {\n        local_34 = puVar2[10];\n      }" (if "if") (parenthesized_expression "(local_34 == 0)" (( "(") (binary_expression "local_34 == 0" (identifier "local_34") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        local_34 = puVar2[10];\n      }" ({ "{") (expression_statement "local_34 = puVar2[10];" (assignment_expression "local_34 = puVar2[10]" (identifier "local_34") (= "=") (subscript_expression "puVar2[10]" (identifier "puVar2") ([ "[") (number_literal "10") (] "]"))) (; ";")) (} "}"))) (labeled_statement "LAB_0003e7aa:\n      puVar5 = (undefined4 *)*puVar2;" (statement_identifier "LAB_0003e7aa") (: ":") (expression_statement "puVar5 = (undefined4 *)*puVar2;" (assignment_expression "puVar5 = (undefined4 *)*puVar2" (identifier "puVar5") (= "=") (cast_expression "(undefined4 *)*puVar2" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar2" (* "*") (identifier "puVar2")))) (; ";"))) (expression_statement "iVar12 = puVar2[1];" (assignment_expression "iVar12 = puVar2[1]" (identifier "iVar12") (= "=") (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]"))) (; ";")) (goto_statement "goto joined_r0x0003e7b1;" (goto "goto") (statement_identifier "joined_r0x0003e7b1") (; ";")) (} "}"))) (if_statement "if (iVar12 < (int)puVar2[7]) {\n      puVar5 = (undefined4 *)puVar2[3];\n      param_2 = iVar12;\n      if (puVar5[10] == 0) {\n        iVar10 = 1;\n        local_30 = 2;\n        goto LAB_0003eacb;\n      }\n    }\n    else {\n      param_2 = iVar12 - (puVar2[7] + 1);\n      if (param_2 < 0) {\n        local_38 = 2;\n        if (local_34 == 0) {\n          local_34 = puVar2[0xb];\n        }\n        goto LAB_0003e7aa;\n      }\n      puVar9 = (undefined4 *)puVar2[4];\n      puVar5 = puVar9;\n      if (puVar9[10] == 0) {\n        puVar4 = (undefined4 *)puVar2[3];\n        if (puVar4[10] == 0) {\n          iVar10 = 2;\n          local_30 = 3;\n          goto LAB_0003ed0c;\n        }\n        local_30 = 3;\n        iVar10 = 2;\n        goto LAB_0003eae0;\n      }\n    }" (if "if") (parenthesized_expression "(iVar12 < (int)puVar2[7])" (( "(") (binary_expression "iVar12 < (int)puVar2[7]" (identifier "iVar12") (< "<") (cast_expression "(int)puVar2[7]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "puVar2[7]" (identifier "puVar2") ([ "[") (number_literal "7") (] "]")))) () ")")) (compound_statement "{\n      puVar5 = (undefined4 *)puVar2[3];\n      param_2 = iVar12;\n      if (puVar5[10] == 0) {\n        iVar10 = 1;\n        local_30 = 2;\n        goto LAB_0003eacb;\n      }\n    }" ({ "{") (expression_statement "puVar5 = (undefined4 *)puVar2[3];" (assignment_expression "puVar5 = (undefined4 *)puVar2[3]" (identifier "puVar5") (= "=") (cast_expression "(undefined4 *)puVar2[3]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar2[3]" (identifier "puVar2") ([ "[") (number_literal "3") (] "]")))) (; ";")) (expression_statement "param_2 = iVar12;" (assignment_expression "param_2 = iVar12" (identifier "param_2") (= "=") (identifier "iVar12")) (; ";")) (if_statement "if (puVar5[10] == 0) {\n        iVar10 = 1;\n        local_30 = 2;\n        goto LAB_0003eacb;\n      }" (if "if") (parenthesized_expression "(puVar5[10] == 0)" (( "(") (binary_expression "puVar5[10] == 0" (subscript_expression "puVar5[10]" (identifier "puVar5") ([ "[") (number_literal "10") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        iVar10 = 1;\n        local_30 = 2;\n        goto LAB_0003eacb;\n      }" ({ "{") (expression_statement "iVar10 = 1;" (assignment_expression "iVar10 = 1" (identifier "iVar10") (= "=") (number_literal "1")) (; ";")) (expression_statement "local_30 = 2;" (assignment_expression "local_30 = 2" (identifier "local_30") (= "=") (number_literal "2")) (; ";")) (goto_statement "goto LAB_0003eacb;" (goto "goto") (statement_identifier "LAB_0003eacb") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n      param_2 = iVar12 - (puVar2[7] + 1);\n      if (param_2 < 0) {\n        local_38 = 2;\n        if (local_34 == 0) {\n          local_34 = puVar2[0xb];\n        }\n        goto LAB_0003e7aa;\n      }\n      puVar9 = (undefined4 *)puVar2[4];\n      puVar5 = puVar9;\n      if (puVar9[10] == 0) {\n        puVar4 = (undefined4 *)puVar2[3];\n        if (puVar4[10] == 0) {\n          iVar10 = 2;\n          local_30 = 3;\n          goto LAB_0003ed0c;\n        }\n        local_30 = 3;\n        iVar10 = 2;\n        goto LAB_0003eae0;\n      }\n    }" (else "else") (compound_statement "{\n      param_2 = iVar12 - (puVar2[7] + 1);\n      if (param_2 < 0) {\n        local_38 = 2;\n        if (local_34 == 0) {\n          local_34 = puVar2[0xb];\n        }\n        goto LAB_0003e7aa;\n      }\n      puVar9 = (undefined4 *)puVar2[4];\n      puVar5 = puVar9;\n      if (puVar9[10] == 0) {\n        puVar4 = (undefined4 *)puVar2[3];\n        if (puVar4[10] == 0) {\n          iVar10 = 2;\n          local_30 = 3;\n          goto LAB_0003ed0c;\n        }\n        local_30 = 3;\n        iVar10 = 2;\n        goto LAB_0003eae0;\n      }\n    }" ({ "{") (expression_statement "param_2 = iVar12 - (puVar2[7] + 1);" (assignment_expression "param_2 = iVar12 - (puVar2[7] + 1)" (identifier "param_2") (= "=") (binary_expression "iVar12 - (puVar2[7] + 1)" (identifier "iVar12") (- "-") (parenthesized_expression "(puVar2[7] + 1)" (( "(") (binary_expression "puVar2[7] + 1" (subscript_expression "puVar2[7]" (identifier "puVar2") ([ "[") (number_literal "7") (] "]")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (if_statement "if (param_2 < 0) {\n        local_38 = 2;\n        if (local_34 == 0) {\n          local_34 = puVar2[0xb];\n        }\n        goto LAB_0003e7aa;\n      }" (if "if") (parenthesized_expression "(param_2 < 0)" (( "(") (binary_expression "param_2 < 0" (identifier "param_2") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n        local_38 = 2;\n        if (local_34 == 0) {\n          local_34 = puVar2[0xb];\n        }\n        goto LAB_0003e7aa;\n      }" ({ "{") (expression_statement "local_38 = 2;" (assignment_expression "local_38 = 2" (identifier "local_38") (= "=") (number_literal "2")) (; ";")) (if_statement "if (local_34 == 0) {\n          local_34 = puVar2[0xb];\n        }" (if "if") (parenthesized_expression "(local_34 == 0)" (( "(") (binary_expression "local_34 == 0" (identifier "local_34") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          local_34 = puVar2[0xb];\n        }" ({ "{") (expression_statement "local_34 = puVar2[0xb];" (assignment_expression "local_34 = puVar2[0xb]" (identifier "local_34") (= "=") (subscript_expression "puVar2[0xb]" (identifier "puVar2") ([ "[") (number_literal "0xb") (] "]"))) (; ";")) (} "}"))) (goto_statement "goto LAB_0003e7aa;" (goto "goto") (statement_identifier "LAB_0003e7aa") (; ";")) (} "}"))) (expression_statement "puVar9 = (undefined4 *)puVar2[4];" (assignment_expression "puVar9 = (undefined4 *)puVar2[4]" (identifier "puVar9") (= "=") (cast_expression "(undefined4 *)puVar2[4]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar2[4]" (identifier "puVar2") ([ "[") (number_literal "4") (] "]")))) (; ";")) (expression_statement "puVar5 = puVar9;" (assignment_expression "puVar5 = puVar9" (identifier "puVar5") (= "=") (identifier "puVar9")) (; ";")) (if_statement "if (puVar9[10] == 0) {\n        puVar4 = (undefined4 *)puVar2[3];\n        if (puVar4[10] == 0) {\n          iVar10 = 2;\n          local_30 = 3;\n          goto LAB_0003ed0c;\n        }\n        local_30 = 3;\n        iVar10 = 2;\n        goto LAB_0003eae0;\n      }" (if "if") (parenthesized_expression "(puVar9[10] == 0)" (( "(") (binary_expression "puVar9[10] == 0" (subscript_expression "puVar9[10]" (identifier "puVar9") ([ "[") (number_literal "10") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        puVar4 = (undefined4 *)puVar2[3];\n        if (puVar4[10] == 0) {\n          iVar10 = 2;\n          local_30 = 3;\n          goto LAB_0003ed0c;\n        }\n        local_30 = 3;\n        iVar10 = 2;\n        goto LAB_0003eae0;\n      }" ({ "{") (expression_statement "puVar4 = (undefined4 *)puVar2[3];" (assignment_expression "puVar4 = (undefined4 *)puVar2[3]" (identifier "puVar4") (= "=") (cast_expression "(undefined4 *)puVar2[3]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar2[3]" (identifier "puVar2") ([ "[") (number_literal "3") (] "]")))) (; ";")) (if_statement "if (puVar4[10] == 0) {\n          iVar10 = 2;\n          local_30 = 3;\n          goto LAB_0003ed0c;\n        }" (if "if") (parenthesized_expression "(puVar4[10] == 0)" (( "(") (binary_expression "puVar4[10] == 0" (subscript_expression "puVar4[10]" (identifier "puVar4") ([ "[") (number_literal "10") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          iVar10 = 2;\n          local_30 = 3;\n          goto LAB_0003ed0c;\n        }" ({ "{") (expression_statement "iVar10 = 2;" (assignment_expression "iVar10 = 2" (identifier "iVar10") (= "=") (number_literal "2")) (; ";")) (expression_statement "local_30 = 3;" (assignment_expression "local_30 = 3" (identifier "local_30") (= "=") (number_literal "3")) (; ";")) (goto_statement "goto LAB_0003ed0c;" (goto "goto") (statement_identifier "LAB_0003ed0c") (; ";")) (} "}"))) (expression_statement "local_30 = 3;" (assignment_expression "local_30 = 3" (identifier "local_30") (= "=") (number_literal "3")) (; ";")) (expression_statement "iVar10 = 2;" (assignment_expression "iVar10 = 2" (identifier "iVar10") (= "=") (number_literal "2")) (; ";")) (goto_statement "goto LAB_0003eae0;" (goto "goto") (statement_identifier "LAB_0003eae0") (; ";")) (} "}"))) (} "}")))) (goto_statement "goto joined_r0x0003e772;" (goto "goto") (statement_identifier "joined_r0x0003e772") (; ";")) (} "}"))) (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" (identifier "local_38") (= "=") (number_literal "0")) (; ";")) (if_statement "if (local_34 != 0) goto LAB_0003e7aa;" (if "if") (parenthesized_expression "(local_34 != 0)" (( "(") (binary_expression "local_34 != 0" (identifier "local_34") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0003e7aa;" (goto "goto") (statement_identifier "LAB_0003e7aa") (; ";"))) (expression_statement "local_34 = puVar2[9];" (assignment_expression "local_34 = puVar2[9]" (identifier "local_34") (= "=") (subscript_expression "puVar2[9]" (identifier "puVar2") ([ "[") (number_literal "9") (] "]"))) (; ";")) (expression_statement "puVar5 = (undefined4 *)*puVar2;" (assignment_expression "puVar5 = (undefined4 *)*puVar2" (identifier "puVar5") (= "=") (cast_expression "(undefined4 *)*puVar2" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar2" (* "*") (identifier "puVar2")))) (; ";")) (expression_statement "iVar12 = puVar2[1];" (assignment_expression "iVar12 = puVar2[1]" (identifier "iVar12") (= "=") (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]"))) (; ";")) (labeled_statement "joined_r0x0003e7b1:\n  if (puVar5 == (undefined4 *)0x0) {\n    if (puVar2[10] == 0) {\n      if (iVar12 == 0) {\n        FUN_0001a110(puVar2);\n        *puVar3 = 0;\n        return local_34;\n      }\n    }\n    else if (iVar12 == 0) {\n      puVar5 = (undefined4 *)0x0;\nLAB_0003e9d5:\n      if (local_38 == 2) {\nLAB_0003ea09:\n        local_38 = 2;\n      }\n      else {\n        iVar10 = puVar2[local_38 + 10];\n        iVar12 = local_38 + 1;\n        if (iVar10 != 0) {\n          do {\n            puVar2[iVar12 + 8] = iVar10;\n            if (iVar12 == 2) goto LAB_0003ea09;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);\n          local_38 = 1;\n        }\n      }\n      puVar2[local_38 + 9] = 0;\n      while (puVar3 = puVar5, puVar3 != (undefined4 *)0x0) {\n        iVar12 = 0;\n        if (((undefined4 *)puVar3[1] != puVar2) && (iVar12 = 1, (undefined4 *)puVar3[2] != puVar2))\n        {\n          iVar12 = ((undefined4 *)puVar3[3] != puVar2) + 2;\n        }\n        puVar3[iVar12 + 5] = puVar3[iVar12 + 5] + -1;\n        puVar2 = puVar3;\n        puVar5 = (undefined4 *)*puVar3;\n      }\n      return local_34;\n    }\n  }\n  else if ((iVar12 == 0) && (puVar2[10] != 0)) goto LAB_0003e9d5;" (statement_identifier "joined_r0x0003e7b1") (: ":") (if_statement "if (puVar5 == (undefined4 *)0x0) {\n    if (puVar2[10] == 0) {\n      if (iVar12 == 0) {\n        FUN_0001a110(puVar2);\n        *puVar3 = 0;\n        return local_34;\n      }\n    }\n    else if (iVar12 == 0) {\n      puVar5 = (undefined4 *)0x0;\nLAB_0003e9d5:\n      if (local_38 == 2) {\nLAB_0003ea09:\n        local_38 = 2;\n      }\n      else {\n        iVar10 = puVar2[local_38 + 10];\n        iVar12 = local_38 + 1;\n        if (iVar10 != 0) {\n          do {\n            puVar2[iVar12 + 8] = iVar10;\n            if (iVar12 == 2) goto LAB_0003ea09;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);\n          local_38 = 1;\n        }\n      }\n      puVar2[local_38 + 9] = 0;\n      while (puVar3 = puVar5, puVar3 != (undefined4 *)0x0) {\n        iVar12 = 0;\n        if (((undefined4 *)puVar3[1] != puVar2) && (iVar12 = 1, (undefined4 *)puVar3[2] != puVar2))\n        {\n          iVar12 = ((undefined4 *)puVar3[3] != puVar2) + 2;\n        }\n        puVar3[iVar12 + 5] = puVar3[iVar12 + 5] + -1;\n        puVar2 = puVar3;\n        puVar5 = (undefined4 *)*puVar3;\n      }\n      return local_34;\n    }\n  }\n  else if ((iVar12 == 0) && (puVar2[10] != 0)) goto LAB_0003e9d5;" (if "if") (parenthesized_expression "(puVar5 == (undefined4 *)0x0)" (( "(") (binary_expression "puVar5 == (undefined4 *)0x0" (identifier "puVar5") (== "==") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    if (puVar2[10] == 0) {\n      if (iVar12 == 0) {\n        FUN_0001a110(puVar2);\n        *puVar3 = 0;\n        return local_34;\n      }\n    }\n    else if (iVar12 == 0) {\n      puVar5 = (undefined4 *)0x0;\nLAB_0003e9d5:\n      if (local_38 == 2) {\nLAB_0003ea09:\n        local_38 = 2;\n      }\n      else {\n        iVar10 = puVar2[local_38 + 10];\n        iVar12 = local_38 + 1;\n        if (iVar10 != 0) {\n          do {\n            puVar2[iVar12 + 8] = iVar10;\n            if (iVar12 == 2) goto LAB_0003ea09;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);\n          local_38 = 1;\n        }\n      }\n      puVar2[local_38 + 9] = 0;\n      while (puVar3 = puVar5, puVar3 != (undefined4 *)0x0) {\n        iVar12 = 0;\n        if (((undefined4 *)puVar3[1] != puVar2) && (iVar12 = 1, (undefined4 *)puVar3[2] != puVar2))\n        {\n          iVar12 = ((undefined4 *)puVar3[3] != puVar2) + 2;\n        }\n        puVar3[iVar12 + 5] = puVar3[iVar12 + 5] + -1;\n        puVar2 = puVar3;\n        puVar5 = (undefined4 *)*puVar3;\n      }\n      return local_34;\n    }\n  }" ({ "{") (if_statement "if (puVar2[10] == 0) {\n      if (iVar12 == 0) {\n        FUN_0001a110(puVar2);\n        *puVar3 = 0;\n        return local_34;\n      }\n    }\n    else if (iVar12 == 0) {\n      puVar5 = (undefined4 *)0x0;\nLAB_0003e9d5:\n      if (local_38 == 2) {\nLAB_0003ea09:\n        local_38 = 2;\n      }\n      else {\n        iVar10 = puVar2[local_38 + 10];\n        iVar12 = local_38 + 1;\n        if (iVar10 != 0) {\n          do {\n            puVar2[iVar12 + 8] = iVar10;\n            if (iVar12 == 2) goto LAB_0003ea09;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);\n          local_38 = 1;\n        }\n      }\n      puVar2[local_38 + 9] = 0;\n      while (puVar3 = puVar5, puVar3 != (undefined4 *)0x0) {\n        iVar12 = 0;\n        if (((undefined4 *)puVar3[1] != puVar2) && (iVar12 = 1, (undefined4 *)puVar3[2] != puVar2))\n        {\n          iVar12 = ((undefined4 *)puVar3[3] != puVar2) + 2;\n        }\n        puVar3[iVar12 + 5] = puVar3[iVar12 + 5] + -1;\n        puVar2 = puVar3;\n        puVar5 = (undefined4 *)*puVar3;\n      }\n      return local_34;\n    }" (if "if") (parenthesized_expression "(puVar2[10] == 0)" (( "(") (binary_expression "puVar2[10] == 0" (subscript_expression "puVar2[10]" (identifier "puVar2") ([ "[") (number_literal "10") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      if (iVar12 == 0) {\n        FUN_0001a110(puVar2);\n        *puVar3 = 0;\n        return local_34;\n      }\n    }" ({ "{") (if_statement "if (iVar12 == 0) {\n        FUN_0001a110(puVar2);\n        *puVar3 = 0;\n        return local_34;\n      }" (if "if") (parenthesized_expression "(iVar12 == 0)" (( "(") (binary_expression "iVar12 == 0" (identifier "iVar12") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        FUN_0001a110(puVar2);\n        *puVar3 = 0;\n        return local_34;\n      }" ({ "{") (expression_statement "FUN_0001a110(puVar2);" (call_expression "FUN_0001a110(puVar2)" (identifier "FUN_0001a110") (argument_list "(puVar2)" (( "(") (identifier "puVar2") () ")"))) (; ";")) (expression_statement "*puVar3 = 0;" (assignment_expression "*puVar3 = 0" (pointer_expression "*puVar3" (* "*") (identifier "puVar3")) (= "=") (number_literal "0")) (; ";")) (return_statement "return local_34;" (return "return") (identifier "local_34") (; ";")) (} "}"))) (} "}")) (else_clause "else if (iVar12 == 0) {\n      puVar5 = (undefined4 *)0x0;\nLAB_0003e9d5:\n      if (local_38 == 2) {\nLAB_0003ea09:\n        local_38 = 2;\n      }\n      else {\n        iVar10 = puVar2[local_38 + 10];\n        iVar12 = local_38 + 1;\n        if (iVar10 != 0) {\n          do {\n            puVar2[iVar12 + 8] = iVar10;\n            if (iVar12 == 2) goto LAB_0003ea09;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);\n          local_38 = 1;\n        }\n      }\n      puVar2[local_38 + 9] = 0;\n      while (puVar3 = puVar5, puVar3 != (undefined4 *)0x0) {\n        iVar12 = 0;\n        if (((undefined4 *)puVar3[1] != puVar2) && (iVar12 = 1, (undefined4 *)puVar3[2] != puVar2))\n        {\n          iVar12 = ((undefined4 *)puVar3[3] != puVar2) + 2;\n        }\n        puVar3[iVar12 + 5] = puVar3[iVar12 + 5] + -1;\n        puVar2 = puVar3;\n        puVar5 = (undefined4 *)*puVar3;\n      }\n      return local_34;\n    }" (else "else") (if_statement "if (iVar12 == 0) {\n      puVar5 = (undefined4 *)0x0;\nLAB_0003e9d5:\n      if (local_38 == 2) {\nLAB_0003ea09:\n        local_38 = 2;\n      }\n      else {\n        iVar10 = puVar2[local_38 + 10];\n        iVar12 = local_38 + 1;\n        if (iVar10 != 0) {\n          do {\n            puVar2[iVar12 + 8] = iVar10;\n            if (iVar12 == 2) goto LAB_0003ea09;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);\n          local_38 = 1;\n        }\n      }\n      puVar2[local_38 + 9] = 0;\n      while (puVar3 = puVar5, puVar3 != (undefined4 *)0x0) {\n        iVar12 = 0;\n        if (((undefined4 *)puVar3[1] != puVar2) && (iVar12 = 1, (undefined4 *)puVar3[2] != puVar2))\n        {\n          iVar12 = ((undefined4 *)puVar3[3] != puVar2) + 2;\n        }\n        puVar3[iVar12 + 5] = puVar3[iVar12 + 5] + -1;\n        puVar2 = puVar3;\n        puVar5 = (undefined4 *)*puVar3;\n      }\n      return local_34;\n    }" (if "if") (parenthesized_expression "(iVar12 == 0)" (( "(") (binary_expression "iVar12 == 0" (identifier "iVar12") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      puVar5 = (undefined4 *)0x0;\nLAB_0003e9d5:\n      if (local_38 == 2) {\nLAB_0003ea09:\n        local_38 = 2;\n      }\n      else {\n        iVar10 = puVar2[local_38 + 10];\n        iVar12 = local_38 + 1;\n        if (iVar10 != 0) {\n          do {\n            puVar2[iVar12 + 8] = iVar10;\n            if (iVar12 == 2) goto LAB_0003ea09;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);\n          local_38 = 1;\n        }\n      }\n      puVar2[local_38 + 9] = 0;\n      while (puVar3 = puVar5, puVar3 != (undefined4 *)0x0) {\n        iVar12 = 0;\n        if (((undefined4 *)puVar3[1] != puVar2) && (iVar12 = 1, (undefined4 *)puVar3[2] != puVar2))\n        {\n          iVar12 = ((undefined4 *)puVar3[3] != puVar2) + 2;\n        }\n        puVar3[iVar12 + 5] = puVar3[iVar12 + 5] + -1;\n        puVar2 = puVar3;\n        puVar5 = (undefined4 *)*puVar3;\n      }\n      return local_34;\n    }" ({ "{") (expression_statement "puVar5 = (undefined4 *)0x0;" (assignment_expression "puVar5 = (undefined4 *)0x0" (identifier "puVar5") (= "=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (labeled_statement "LAB_0003e9d5:\n      if (local_38 == 2) {\nLAB_0003ea09:\n        local_38 = 2;\n      }\n      else {\n        iVar10 = puVar2[local_38 + 10];\n        iVar12 = local_38 + 1;\n        if (iVar10 != 0) {\n          do {\n            puVar2[iVar12 + 8] = iVar10;\n            if (iVar12 == 2) goto LAB_0003ea09;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);\n          local_38 = 1;\n        }\n      }" (statement_identifier "LAB_0003e9d5") (: ":") (if_statement "if (local_38 == 2) {\nLAB_0003ea09:\n        local_38 = 2;\n      }\n      else {\n        iVar10 = puVar2[local_38 + 10];\n        iVar12 = local_38 + 1;\n        if (iVar10 != 0) {\n          do {\n            puVar2[iVar12 + 8] = iVar10;\n            if (iVar12 == 2) goto LAB_0003ea09;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);\n          local_38 = 1;\n        }\n      }" (if "if") (parenthesized_expression "(local_38 == 2)" (( "(") (binary_expression "local_38 == 2" (identifier "local_38") (== "==") (number_literal "2")) () ")")) (compound_statement "{\nLAB_0003ea09:\n        local_38 = 2;\n      }" ({ "{") (labeled_statement "LAB_0003ea09:\n        local_38 = 2;" (statement_identifier "LAB_0003ea09") (: ":") (expression_statement "local_38 = 2;" (assignment_expression "local_38 = 2" (identifier "local_38") (= "=") (number_literal "2")) (; ";"))) (} "}")) (else_clause "else {\n        iVar10 = puVar2[local_38 + 10];\n        iVar12 = local_38 + 1;\n        if (iVar10 != 0) {\n          do {\n            puVar2[iVar12 + 8] = iVar10;\n            if (iVar12 == 2) goto LAB_0003ea09;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);\n          local_38 = 1;\n        }\n      }" (else "else") (compound_statement "{\n        iVar10 = puVar2[local_38 + 10];\n        iVar12 = local_38 + 1;\n        if (iVar10 != 0) {\n          do {\n            puVar2[iVar12 + 8] = iVar10;\n            if (iVar12 == 2) goto LAB_0003ea09;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);\n          local_38 = 1;\n        }\n      }" ({ "{") (expression_statement "iVar10 = puVar2[local_38 + 10];" (assignment_expression "iVar10 = puVar2[local_38 + 10]" (identifier "iVar10") (= "=") (subscript_expression "puVar2[local_38 + 10]" (identifier "puVar2") ([ "[") (binary_expression "local_38 + 10" (identifier "local_38") (+ "+") (number_literal "10")) (] "]"))) (; ";")) (expression_statement "iVar12 = local_38 + 1;" (assignment_expression "iVar12 = local_38 + 1" (identifier "iVar12") (= "=") (binary_expression "local_38 + 1" (identifier "local_38") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (iVar10 != 0) {\n          do {\n            puVar2[iVar12 + 8] = iVar10;\n            if (iVar12 == 2) goto LAB_0003ea09;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);\n          local_38 = 1;\n        }" (if "if") (parenthesized_expression "(iVar10 != 0)" (( "(") (binary_expression "iVar10 != 0" (identifier "iVar10") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          do {\n            puVar2[iVar12 + 8] = iVar10;\n            if (iVar12 == 2) goto LAB_0003ea09;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);\n          local_38 = 1;\n        }" ({ "{") (do_statement "do {\n            puVar2[iVar12 + 8] = iVar10;\n            if (iVar12 == 2) goto LAB_0003ea09;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);" (do "do") (compound_statement "{\n            puVar2[iVar12 + 8] = iVar10;\n            if (iVar12 == 2) goto LAB_0003ea09;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          }" ({ "{") (expression_statement "puVar2[iVar12 + 8] = iVar10;" (assignment_expression "puVar2[iVar12 + 8] = iVar10" (subscript_expression "puVar2[iVar12 + 8]" (identifier "puVar2") ([ "[") (binary_expression "iVar12 + 8" (identifier "iVar12") (+ "+") (number_literal "8")) (] "]")) (= "=") (identifier "iVar10")) (; ";")) (if_statement "if (iVar12 == 2) goto LAB_0003ea09;" (if "if") (parenthesized_expression "(iVar12 == 2)" (( "(") (binary_expression "iVar12 == 2" (identifier "iVar12") (== "==") (number_literal "2")) () ")")) (goto_statement "goto LAB_0003ea09;" (goto "goto") (statement_identifier "LAB_0003ea09") (; ";"))) (expression_statement "iVar10 = puVar2[0xb];" (assignment_expression "iVar10 = puVar2[0xb]" (identifier "iVar10") (= "=") (subscript_expression "puVar2[0xb]" (identifier "puVar2") ([ "[") (number_literal "0xb") (] "]"))) (; ";")) (expression_statement "iVar12 = 2;" (assignment_expression "iVar12 = 2" (identifier "iVar12") (= "=") (number_literal "2")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar10 != 0)" (( "(") (binary_expression "iVar10 != 0" (identifier "iVar10") (!= "!=") (number_literal "0")) () ")")) (; ";")) (expression_statement "local_38 = 1;" (assignment_expression "local_38 = 1" (identifier "local_38") (= "=") (number_literal "1")) (; ";")) (} "}"))) (} "}"))))) (expression_statement "puVar2[local_38 + 9] = 0;" (assignment_expression "puVar2[local_38 + 9] = 0" (subscript_expression "puVar2[local_38 + 9]" (identifier "puVar2") ([ "[") (binary_expression "local_38 + 9" (identifier "local_38") (+ "+") (number_literal "9")) (] "]")) (= "=") (number_literal "0")) (; ";")) (while_statement "while (puVar3 = puVar5, puVar3 != (undefined4 *)0x0) {\n        iVar12 = 0;\n        if (((undefined4 *)puVar3[1] != puVar2) && (iVar12 = 1, (undefined4 *)puVar3[2] != puVar2))\n        {\n          iVar12 = ((undefined4 *)puVar3[3] != puVar2) + 2;\n        }\n        puVar3[iVar12 + 5] = puVar3[iVar12 + 5] + -1;\n        puVar2 = puVar3;\n        puVar5 = (undefined4 *)*puVar3;\n      }" (while "while") (parenthesized_expression "(puVar3 = puVar5, puVar3 != (undefined4 *)0x0)" (( "(") (comma_expression "puVar3 = puVar5, puVar3 != (undefined4 *)0x0" (assignment_expression "puVar3 = puVar5" (identifier "puVar3") (= "=") (identifier "puVar5")) (, ",") (binary_expression "puVar3 != (undefined4 *)0x0" (identifier "puVar3") (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")")) (compound_statement "{\n        iVar12 = 0;\n        if (((undefined4 *)puVar3[1] != puVar2) && (iVar12 = 1, (undefined4 *)puVar3[2] != puVar2))\n        {\n          iVar12 = ((undefined4 *)puVar3[3] != puVar2) + 2;\n        }\n        puVar3[iVar12 + 5] = puVar3[iVar12 + 5] + -1;\n        puVar2 = puVar3;\n        puVar5 = (undefined4 *)*puVar3;\n      }" ({ "{") (expression_statement "iVar12 = 0;" (assignment_expression "iVar12 = 0" (identifier "iVar12") (= "=") (number_literal "0")) (; ";")) (if_statement "if (((undefined4 *)puVar3[1] != puVar2) && (iVar12 = 1, (undefined4 *)puVar3[2] != puVar2))\n        {\n          iVar12 = ((undefined4 *)puVar3[3] != puVar2) + 2;\n        }" (if "if") (parenthesized_expression "(((undefined4 *)puVar3[1] != puVar2) && (iVar12 = 1, (undefined4 *)puVar3[2] != puVar2))" (( "(") (binary_expression "((undefined4 *)puVar3[1] != puVar2) && (iVar12 = 1, (undefined4 *)puVar3[2] != puVar2)" (parenthesized_expression "((undefined4 *)puVar3[1] != puVar2)" (( "(") (binary_expression "(undefined4 *)puVar3[1] != puVar2" (cast_expression "(undefined4 *)puVar3[1]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar3[1]" (identifier "puVar3") ([ "[") (number_literal "1") (] "]"))) (!= "!=") (identifier "puVar2")) () ")")) (&& "&&") (parenthesized_expression "(iVar12 = 1, (undefined4 *)puVar3[2] != puVar2)" (( "(") (comma_expression "iVar12 = 1, (undefined4 *)puVar3[2] != puVar2" (assignment_expression "iVar12 = 1" (identifier "iVar12") (= "=") (number_literal "1")) (, ",") (binary_expression "(undefined4 *)puVar3[2] != puVar2" (cast_expression "(undefined4 *)puVar3[2]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar3[2]" (identifier "puVar3") ([ "[") (number_literal "2") (] "]"))) (!= "!=") (identifier "puVar2"))) () ")"))) () ")")) (compound_statement "{\n          iVar12 = ((undefined4 *)puVar3[3] != puVar2) + 2;\n        }" ({ "{") (expression_statement "iVar12 = ((undefined4 *)puVar3[3] != puVar2) + 2;" (assignment_expression "iVar12 = ((undefined4 *)puVar3[3] != puVar2) + 2" (identifier "iVar12") (= "=") (binary_expression "((undefined4 *)puVar3[3] != puVar2) + 2" (parenthesized_expression "((undefined4 *)puVar3[3] != puVar2)" (( "(") (binary_expression "(undefined4 *)puVar3[3] != puVar2" (cast_expression "(undefined4 *)puVar3[3]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar3[3]" (identifier "puVar3") ([ "[") (number_literal "3") (] "]"))) (!= "!=") (identifier "puVar2")) () ")")) (+ "+") (number_literal "2"))) (; ";")) (} "}"))) (expression_statement "puVar3[iVar12 + 5] = puVar3[iVar12 + 5] + -1;" (assignment_expression "puVar3[iVar12 + 5] = puVar3[iVar12 + 5] + -1" (subscript_expression "puVar3[iVar12 + 5]" (identifier "puVar3") ([ "[") (binary_expression "iVar12 + 5" (identifier "iVar12") (+ "+") (number_literal "5")) (] "]")) (= "=") (binary_expression "puVar3[iVar12 + 5] + -1" (subscript_expression "puVar3[iVar12 + 5]" (identifier "puVar3") ([ "[") (binary_expression "iVar12 + 5" (identifier "iVar12") (+ "+") (number_literal "5")) (] "]")) (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "puVar2 = puVar3;" (assignment_expression "puVar2 = puVar3" (identifier "puVar2") (= "=") (identifier "puVar3")) (; ";")) (expression_statement "puVar5 = (undefined4 *)*puVar3;" (assignment_expression "puVar5 = (undefined4 *)*puVar3" (identifier "puVar5") (= "=") (cast_expression "(undefined4 *)*puVar3" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar3" (* "*") (identifier "puVar3")))) (; ";")) (} "}"))) (return_statement "return local_34;" (return "return") (identifier "local_34") (; ";")) (} "}"))))) (} "}")) (else_clause "else if ((iVar12 == 0) && (puVar2[10] != 0)) goto LAB_0003e9d5;" (else "else") (if_statement "if ((iVar12 == 0) && (puVar2[10] != 0)) goto LAB_0003e9d5;" (if "if") (parenthesized_expression "((iVar12 == 0) && (puVar2[10] != 0))" (( "(") (binary_expression "(iVar12 == 0) && (puVar2[10] != 0)" (parenthesized_expression "(iVar12 == 0)" (( "(") (binary_expression "iVar12 == 0" (identifier "iVar12") (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(puVar2[10] != 0)" (( "(") (binary_expression "puVar2[10] != 0" (subscript_expression "puVar2[10]" (identifier "puVar2") ([ "[") (number_literal "10") (] "]")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (goto_statement "goto LAB_0003e9d5;" (goto "goto") (statement_identifier "LAB_0003e9d5") (; ";")))))) (expression_statement "puVar5 = (undefined4 *)puVar2[local_38 + 1];" (assignment_expression "puVar5 = (undefined4 *)puVar2[local_38 + 1]" (identifier "puVar5") (= "=") (cast_expression "(undefined4 *)puVar2[local_38 + 1]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar2[local_38 + 1]" (identifier "puVar2") ([ "[") (binary_expression "local_38 + 1" (identifier "local_38") (+ "+") (number_literal "1")) (] "]")))) (; ";")) (expression_statement "puVar4 = puVar5;" (assignment_expression "puVar4 = puVar5" (identifier "puVar4") (= "=") (identifier "puVar5")) (; ";")) (if_statement "if (puVar5[10] == 0) {\n    puVar4 = (undefined4 *)puVar2[local_38 + 2];\n    iVar12 = local_38 + 1;\n    puVar11 = (undefined4 *)puVar4[1];\n    puVar9 = puVar4;\n    if (puVar4[10] == 0) {\n      uVar7 = puVar2[local_38 + 9];\n      puVar5[3] = puVar11;\n      puVar5[10] = uVar7;\n      puVar5[7] = puVar4[5];\n      if (puVar11 != (undefined4 *)0x0) {\n        *puVar11 = puVar5;\n      }\n      uVar7 = puVar4[6];\n      puVar5[0xb] = puVar4[9];\n      puVar11 = (undefined4 *)puVar4[2];\n      puVar5[8] = uVar7;\n      puVar5[4] = puVar11;\n      if (puVar11 != (undefined4 *)0x0) {\n        *puVar11 = puVar5;\n      }\n      FUN_0001a110(puVar4);\n      uVar7 = FUN_0003e010();\n      puVar2[local_38 + 5] = uVar7;\n      if (local_38 == 2) {\nLAB_0003ec29:\n        iVar12 = 3;\n        iVar6 = 2;\n      }\n      else {\n        iVar10 = puVar2[local_38 + 10];\n        iVar6 = local_38;\n        if (iVar10 != 0) {\n          do {\n            puVar2[iVar12 + 8] = iVar10;\n            puVar2[iVar12 + 1] = puVar2[iVar12 + 2];\n            puVar2[iVar12 + 5] = puVar2[iVar12 + 6];\n            if (iVar12 == 2) goto LAB_0003ec29;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);\n          iVar6 = 1;\n        }\n      }\n      puVar2[iVar6 + 9] = 0;\n      puVar2[iVar12 + 1] = 0;\n      puVar2[iVar12 + 5] = 0;\n      if (puVar2[9] == 0) {\n        *puVar3 = puVar5;\n        *puVar5 = 0;\n        FUN_0001a110(puVar2);\n      }\n      param_2 = puVar5[6] + puVar5[5] + 1;\n    }\n    else {\n      while (puVar5 = puVar11, puVar5 != (undefined4 *)0x0) {\n        puVar9 = puVar5;\n        puVar11 = (undefined4 *)puVar5[1];\n      }\n      puVar2[local_38 + 9] = puVar9[9];\n      param_2 = 0;\n      puVar5 = puVar4;\n    }\n  }\n  else {\n    while (puVar11 = (undefined4 *)puVar4[1], puVar11 != (undefined4 *)0x0) {\n      while ((puVar9 = (undefined4 *)puVar4[4], (undefined4 *)puVar4[4] != (undefined4 *)0x0 ||\n             (puVar9 = (undefined4 *)puVar4[3], (undefined4 *)puVar4[3] != (undefined4 *)0x0))) {\n        puVar4 = puVar9;\n        puVar11 = (undefined4 *)puVar4[1];\n        if (puVar11 == (undefined4 *)0x0) goto LAB_0003e958;\n      }\n      puVar9 = puVar4 + 2;\n      puVar4 = (undefined4 *)*puVar9;\n      if ((undefined4 *)*puVar9 == (undefined4 *)0x0) {\n        puVar4 = puVar11;\n      }\n    }\nLAB_0003e958:\n    iVar12 = puVar4[0xb];\n    if ((iVar12 == 0) && (iVar12 = puVar4[10], iVar12 == 0)) {\n      iVar12 = puVar4[9];\n    }\n    puVar2[local_38 + 9] = iVar12;\n    param_2 = puVar2[local_38 + 5] + -1;\n  }" (if "if") (parenthesized_expression "(puVar5[10] == 0)" (( "(") (binary_expression "puVar5[10] == 0" (subscript_expression "puVar5[10]" (identifier "puVar5") ([ "[") (number_literal "10") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    puVar4 = (undefined4 *)puVar2[local_38 + 2];\n    iVar12 = local_38 + 1;\n    puVar11 = (undefined4 *)puVar4[1];\n    puVar9 = puVar4;\n    if (puVar4[10] == 0) {\n      uVar7 = puVar2[local_38 + 9];\n      puVar5[3] = puVar11;\n      puVar5[10] = uVar7;\n      puVar5[7] = puVar4[5];\n      if (puVar11 != (undefined4 *)0x0) {\n        *puVar11 = puVar5;\n      }\n      uVar7 = puVar4[6];\n      puVar5[0xb] = puVar4[9];\n      puVar11 = (undefined4 *)puVar4[2];\n      puVar5[8] = uVar7;\n      puVar5[4] = puVar11;\n      if (puVar11 != (undefined4 *)0x0) {\n        *puVar11 = puVar5;\n      }\n      FUN_0001a110(puVar4);\n      uVar7 = FUN_0003e010();\n      puVar2[local_38 + 5] = uVar7;\n      if (local_38 == 2) {\nLAB_0003ec29:\n        iVar12 = 3;\n        iVar6 = 2;\n      }\n      else {\n        iVar10 = puVar2[local_38 + 10];\n        iVar6 = local_38;\n        if (iVar10 != 0) {\n          do {\n            puVar2[iVar12 + 8] = iVar10;\n            puVar2[iVar12 + 1] = puVar2[iVar12 + 2];\n            puVar2[iVar12 + 5] = puVar2[iVar12 + 6];\n            if (iVar12 == 2) goto LAB_0003ec29;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);\n          iVar6 = 1;\n        }\n      }\n      puVar2[iVar6 + 9] = 0;\n      puVar2[iVar12 + 1] = 0;\n      puVar2[iVar12 + 5] = 0;\n      if (puVar2[9] == 0) {\n        *puVar3 = puVar5;\n        *puVar5 = 0;\n        FUN_0001a110(puVar2);\n      }\n      param_2 = puVar5[6] + puVar5[5] + 1;\n    }\n    else {\n      while (puVar5 = puVar11, puVar5 != (undefined4 *)0x0) {\n        puVar9 = puVar5;\n        puVar11 = (undefined4 *)puVar5[1];\n      }\n      puVar2[local_38 + 9] = puVar9[9];\n      param_2 = 0;\n      puVar5 = puVar4;\n    }\n  }" ({ "{") (expression_statement "puVar4 = (undefined4 *)puVar2[local_38 + 2];" (assignment_expression "puVar4 = (undefined4 *)puVar2[local_38 + 2]" (identifier "puVar4") (= "=") (cast_expression "(undefined4 *)puVar2[local_38 + 2]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar2[local_38 + 2]" (identifier "puVar2") ([ "[") (binary_expression "local_38 + 2" (identifier "local_38") (+ "+") (number_literal "2")) (] "]")))) (; ";")) (expression_statement "iVar12 = local_38 + 1;" (assignment_expression "iVar12 = local_38 + 1" (identifier "iVar12") (= "=") (binary_expression "local_38 + 1" (identifier "local_38") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar11 = (undefined4 *)puVar4[1];" (assignment_expression "puVar11 = (undefined4 *)puVar4[1]" (identifier "puVar11") (= "=") (cast_expression "(undefined4 *)puVar4[1]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar4[1]" (identifier "puVar4") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "puVar9 = puVar4;" (assignment_expression "puVar9 = puVar4" (identifier "puVar9") (= "=") (identifier "puVar4")) (; ";")) (if_statement "if (puVar4[10] == 0) {\n      uVar7 = puVar2[local_38 + 9];\n      puVar5[3] = puVar11;\n      puVar5[10] = uVar7;\n      puVar5[7] = puVar4[5];\n      if (puVar11 != (undefined4 *)0x0) {\n        *puVar11 = puVar5;\n      }\n      uVar7 = puVar4[6];\n      puVar5[0xb] = puVar4[9];\n      puVar11 = (undefined4 *)puVar4[2];\n      puVar5[8] = uVar7;\n      puVar5[4] = puVar11;\n      if (puVar11 != (undefined4 *)0x0) {\n        *puVar11 = puVar5;\n      }\n      FUN_0001a110(puVar4);\n      uVar7 = FUN_0003e010();\n      puVar2[local_38 + 5] = uVar7;\n      if (local_38 == 2) {\nLAB_0003ec29:\n        iVar12 = 3;\n        iVar6 = 2;\n      }\n      else {\n        iVar10 = puVar2[local_38 + 10];\n        iVar6 = local_38;\n        if (iVar10 != 0) {\n          do {\n            puVar2[iVar12 + 8] = iVar10;\n            puVar2[iVar12 + 1] = puVar2[iVar12 + 2];\n            puVar2[iVar12 + 5] = puVar2[iVar12 + 6];\n            if (iVar12 == 2) goto LAB_0003ec29;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);\n          iVar6 = 1;\n        }\n      }\n      puVar2[iVar6 + 9] = 0;\n      puVar2[iVar12 + 1] = 0;\n      puVar2[iVar12 + 5] = 0;\n      if (puVar2[9] == 0) {\n        *puVar3 = puVar5;\n        *puVar5 = 0;\n        FUN_0001a110(puVar2);\n      }\n      param_2 = puVar5[6] + puVar5[5] + 1;\n    }\n    else {\n      while (puVar5 = puVar11, puVar5 != (undefined4 *)0x0) {\n        puVar9 = puVar5;\n        puVar11 = (undefined4 *)puVar5[1];\n      }\n      puVar2[local_38 + 9] = puVar9[9];\n      param_2 = 0;\n      puVar5 = puVar4;\n    }" (if "if") (parenthesized_expression "(puVar4[10] == 0)" (( "(") (binary_expression "puVar4[10] == 0" (subscript_expression "puVar4[10]" (identifier "puVar4") ([ "[") (number_literal "10") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      uVar7 = puVar2[local_38 + 9];\n      puVar5[3] = puVar11;\n      puVar5[10] = uVar7;\n      puVar5[7] = puVar4[5];\n      if (puVar11 != (undefined4 *)0x0) {\n        *puVar11 = puVar5;\n      }\n      uVar7 = puVar4[6];\n      puVar5[0xb] = puVar4[9];\n      puVar11 = (undefined4 *)puVar4[2];\n      puVar5[8] = uVar7;\n      puVar5[4] = puVar11;\n      if (puVar11 != (undefined4 *)0x0) {\n        *puVar11 = puVar5;\n      }\n      FUN_0001a110(puVar4);\n      uVar7 = FUN_0003e010();\n      puVar2[local_38 + 5] = uVar7;\n      if (local_38 == 2) {\nLAB_0003ec29:\n        iVar12 = 3;\n        iVar6 = 2;\n      }\n      else {\n        iVar10 = puVar2[local_38 + 10];\n        iVar6 = local_38;\n        if (iVar10 != 0) {\n          do {\n            puVar2[iVar12 + 8] = iVar10;\n            puVar2[iVar12 + 1] = puVar2[iVar12 + 2];\n            puVar2[iVar12 + 5] = puVar2[iVar12 + 6];\n            if (iVar12 == 2) goto LAB_0003ec29;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);\n          iVar6 = 1;\n        }\n      }\n      puVar2[iVar6 + 9] = 0;\n      puVar2[iVar12 + 1] = 0;\n      puVar2[iVar12 + 5] = 0;\n      if (puVar2[9] == 0) {\n        *puVar3 = puVar5;\n        *puVar5 = 0;\n        FUN_0001a110(puVar2);\n      }\n      param_2 = puVar5[6] + puVar5[5] + 1;\n    }" ({ "{") (expression_statement "uVar7 = puVar2[local_38 + 9];" (assignment_expression "uVar7 = puVar2[local_38 + 9]" (identifier "uVar7") (= "=") (subscript_expression "puVar2[local_38 + 9]" (identifier "puVar2") ([ "[") (binary_expression "local_38 + 9" (identifier "local_38") (+ "+") (number_literal "9")) (] "]"))) (; ";")) (expression_statement "puVar5[3] = puVar11;" (assignment_expression "puVar5[3] = puVar11" (subscript_expression "puVar5[3]" (identifier "puVar5") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "puVar11")) (; ";")) (expression_statement "puVar5[10] = uVar7;" (assignment_expression "puVar5[10] = uVar7" (subscript_expression "puVar5[10]" (identifier "puVar5") ([ "[") (number_literal "10") (] "]")) (= "=") (identifier "uVar7")) (; ";")) (expression_statement "puVar5[7] = puVar4[5];" (assignment_expression "puVar5[7] = puVar4[5]" (subscript_expression "puVar5[7]" (identifier "puVar5") ([ "[") (number_literal "7") (] "]")) (= "=") (subscript_expression "puVar4[5]" (identifier "puVar4") ([ "[") (number_literal "5") (] "]"))) (; ";")) (if_statement "if (puVar11 != (undefined4 *)0x0) {\n        *puVar11 = puVar5;\n      }" (if "if") (parenthesized_expression "(puVar11 != (undefined4 *)0x0)" (( "(") (binary_expression "puVar11 != (undefined4 *)0x0" (identifier "puVar11") (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        *puVar11 = puVar5;\n      }" ({ "{") (expression_statement "*puVar11 = puVar5;" (assignment_expression "*puVar11 = puVar5" (pointer_expression "*puVar11" (* "*") (identifier "puVar11")) (= "=") (identifier "puVar5")) (; ";")) (} "}"))) (expression_statement "uVar7 = puVar4[6];" (assignment_expression "uVar7 = puVar4[6]" (identifier "uVar7") (= "=") (subscript_expression "puVar4[6]" (identifier "puVar4") ([ "[") (number_literal "6") (] "]"))) (; ";")) (expression_statement "puVar5[0xb] = puVar4[9];" (assignment_expression "puVar5[0xb] = puVar4[9]" (subscript_expression "puVar5[0xb]" (identifier "puVar5") ([ "[") (number_literal "0xb") (] "]")) (= "=") (subscript_expression "puVar4[9]" (identifier "puVar4") ([ "[") (number_literal "9") (] "]"))) (; ";")) (expression_statement "puVar11 = (undefined4 *)puVar4[2];" (assignment_expression "puVar11 = (undefined4 *)puVar4[2]" (identifier "puVar11") (= "=") (cast_expression "(undefined4 *)puVar4[2]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar4[2]" (identifier "puVar4") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "puVar5[8] = uVar7;" (assignment_expression "puVar5[8] = uVar7" (subscript_expression "puVar5[8]" (identifier "puVar5") ([ "[") (number_literal "8") (] "]")) (= "=") (identifier "uVar7")) (; ";")) (expression_statement "puVar5[4] = puVar11;" (assignment_expression "puVar5[4] = puVar11" (subscript_expression "puVar5[4]" (identifier "puVar5") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "puVar11")) (; ";")) (if_statement "if (puVar11 != (undefined4 *)0x0) {\n        *puVar11 = puVar5;\n      }" (if "if") (parenthesized_expression "(puVar11 != (undefined4 *)0x0)" (( "(") (binary_expression "puVar11 != (undefined4 *)0x0" (identifier "puVar11") (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        *puVar11 = puVar5;\n      }" ({ "{") (expression_statement "*puVar11 = puVar5;" (assignment_expression "*puVar11 = puVar5" (pointer_expression "*puVar11" (* "*") (identifier "puVar11")) (= "=") (identifier "puVar5")) (; ";")) (} "}"))) (expression_statement "FUN_0001a110(puVar4);" (call_expression "FUN_0001a110(puVar4)" (identifier "FUN_0001a110") (argument_list "(puVar4)" (( "(") (identifier "puVar4") () ")"))) (; ";")) (expression_statement "uVar7 = FUN_0003e010();" (assignment_expression "uVar7 = FUN_0003e010()" (identifier "uVar7") (= "=") (call_expression "FUN_0003e010()" (identifier "FUN_0003e010") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "puVar2[local_38 + 5] = uVar7;" (assignment_expression "puVar2[local_38 + 5] = uVar7" (subscript_expression "puVar2[local_38 + 5]" (identifier "puVar2") ([ "[") (binary_expression "local_38 + 5" (identifier "local_38") (+ "+") (number_literal "5")) (] "]")) (= "=") (identifier "uVar7")) (; ";")) (if_statement "if (local_38 == 2) {\nLAB_0003ec29:\n        iVar12 = 3;\n        iVar6 = 2;\n      }\n      else {\n        iVar10 = puVar2[local_38 + 10];\n        iVar6 = local_38;\n        if (iVar10 != 0) {\n          do {\n            puVar2[iVar12 + 8] = iVar10;\n            puVar2[iVar12 + 1] = puVar2[iVar12 + 2];\n            puVar2[iVar12 + 5] = puVar2[iVar12 + 6];\n            if (iVar12 == 2) goto LAB_0003ec29;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);\n          iVar6 = 1;\n        }\n      }" (if "if") (parenthesized_expression "(local_38 == 2)" (( "(") (binary_expression "local_38 == 2" (identifier "local_38") (== "==") (number_literal "2")) () ")")) (compound_statement "{\nLAB_0003ec29:\n        iVar12 = 3;\n        iVar6 = 2;\n      }" ({ "{") (labeled_statement "LAB_0003ec29:\n        iVar12 = 3;" (statement_identifier "LAB_0003ec29") (: ":") (expression_statement "iVar12 = 3;" (assignment_expression "iVar12 = 3" (identifier "iVar12") (= "=") (number_literal "3")) (; ";"))) (expression_statement "iVar6 = 2;" (assignment_expression "iVar6 = 2" (identifier "iVar6") (= "=") (number_literal "2")) (; ";")) (} "}")) (else_clause "else {\n        iVar10 = puVar2[local_38 + 10];\n        iVar6 = local_38;\n        if (iVar10 != 0) {\n          do {\n            puVar2[iVar12 + 8] = iVar10;\n            puVar2[iVar12 + 1] = puVar2[iVar12 + 2];\n            puVar2[iVar12 + 5] = puVar2[iVar12 + 6];\n            if (iVar12 == 2) goto LAB_0003ec29;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);\n          iVar6 = 1;\n        }\n      }" (else "else") (compound_statement "{\n        iVar10 = puVar2[local_38 + 10];\n        iVar6 = local_38;\n        if (iVar10 != 0) {\n          do {\n            puVar2[iVar12 + 8] = iVar10;\n            puVar2[iVar12 + 1] = puVar2[iVar12 + 2];\n            puVar2[iVar12 + 5] = puVar2[iVar12 + 6];\n            if (iVar12 == 2) goto LAB_0003ec29;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);\n          iVar6 = 1;\n        }\n      }" ({ "{") (expression_statement "iVar10 = puVar2[local_38 + 10];" (assignment_expression "iVar10 = puVar2[local_38 + 10]" (identifier "iVar10") (= "=") (subscript_expression "puVar2[local_38 + 10]" (identifier "puVar2") ([ "[") (binary_expression "local_38 + 10" (identifier "local_38") (+ "+") (number_literal "10")) (] "]"))) (; ";")) (expression_statement "iVar6 = local_38;" (assignment_expression "iVar6 = local_38" (identifier "iVar6") (= "=") (identifier "local_38")) (; ";")) (if_statement "if (iVar10 != 0) {\n          do {\n            puVar2[iVar12 + 8] = iVar10;\n            puVar2[iVar12 + 1] = puVar2[iVar12 + 2];\n            puVar2[iVar12 + 5] = puVar2[iVar12 + 6];\n            if (iVar12 == 2) goto LAB_0003ec29;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);\n          iVar6 = 1;\n        }" (if "if") (parenthesized_expression "(iVar10 != 0)" (( "(") (binary_expression "iVar10 != 0" (identifier "iVar10") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          do {\n            puVar2[iVar12 + 8] = iVar10;\n            puVar2[iVar12 + 1] = puVar2[iVar12 + 2];\n            puVar2[iVar12 + 5] = puVar2[iVar12 + 6];\n            if (iVar12 == 2) goto LAB_0003ec29;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);\n          iVar6 = 1;\n        }" ({ "{") (do_statement "do {\n            puVar2[iVar12 + 8] = iVar10;\n            puVar2[iVar12 + 1] = puVar2[iVar12 + 2];\n            puVar2[iVar12 + 5] = puVar2[iVar12 + 6];\n            if (iVar12 == 2) goto LAB_0003ec29;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          } while (iVar10 != 0);" (do "do") (compound_statement "{\n            puVar2[iVar12 + 8] = iVar10;\n            puVar2[iVar12 + 1] = puVar2[iVar12 + 2];\n            puVar2[iVar12 + 5] = puVar2[iVar12 + 6];\n            if (iVar12 == 2) goto LAB_0003ec29;\n            iVar10 = puVar2[0xb];\n            iVar12 = 2;\n          }" ({ "{") (expression_statement "puVar2[iVar12 + 8] = iVar10;" (assignment_expression "puVar2[iVar12 + 8] = iVar10" (subscript_expression "puVar2[iVar12 + 8]" (identifier "puVar2") ([ "[") (binary_expression "iVar12 + 8" (identifier "iVar12") (+ "+") (number_literal "8")) (] "]")) (= "=") (identifier "iVar10")) (; ";")) (expression_statement "puVar2[iVar12 + 1] = puVar2[iVar12 + 2];" (assignment_expression "puVar2[iVar12 + 1] = puVar2[iVar12 + 2]" (subscript_expression "puVar2[iVar12 + 1]" (identifier "puVar2") ([ "[") (binary_expression "iVar12 + 1" (identifier "iVar12") (+ "+") (number_literal "1")) (] "]")) (= "=") (subscript_expression "puVar2[iVar12 + 2]" (identifier "puVar2") ([ "[") (binary_expression "iVar12 + 2" (identifier "iVar12") (+ "+") (number_literal "2")) (] "]"))) (; ";")) (expression_statement "puVar2[iVar12 + 5] = puVar2[iVar12 + 6];" (assignment_expression "puVar2[iVar12 + 5] = puVar2[iVar12 + 6]" (subscript_expression "puVar2[iVar12 + 5]" (identifier "puVar2") ([ "[") (binary_expression "iVar12 + 5" (identifier "iVar12") (+ "+") (number_literal "5")) (] "]")) (= "=") (subscript_expression "puVar2[iVar12 + 6]" (identifier "puVar2") ([ "[") (binary_expression "iVar12 + 6" (identifier "iVar12") (+ "+") (number_literal "6")) (] "]"))) (; ";")) (if_statement "if (iVar12 == 2) goto LAB_0003ec29;" (if "if") (parenthesized_expression "(iVar12 == 2)" (( "(") (binary_expression "iVar12 == 2" (identifier "iVar12") (== "==") (number_literal "2")) () ")")) (goto_statement "goto LAB_0003ec29;" (goto "goto") (statement_identifier "LAB_0003ec29") (; ";"))) (expression_statement "iVar10 = puVar2[0xb];" (assignment_expression "iVar10 = puVar2[0xb]" (identifier "iVar10") (= "=") (subscript_expression "puVar2[0xb]" (identifier "puVar2") ([ "[") (number_literal "0xb") (] "]"))) (; ";")) (expression_statement "iVar12 = 2;" (assignment_expression "iVar12 = 2" (identifier "iVar12") (= "=") (number_literal "2")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar10 != 0)" (( "(") (binary_expression "iVar10 != 0" (identifier "iVar10") (!= "!=") (number_literal "0")) () ")")) (; ";")) (expression_statement "iVar6 = 1;" (assignment_expression "iVar6 = 1" (identifier "iVar6") (= "=") (number_literal "1")) (; ";")) (} "}"))) (} "}")))) (expression_statement "puVar2[iVar6 + 9] = 0;" (assignment_expression "puVar2[iVar6 + 9] = 0" (subscript_expression "puVar2[iVar6 + 9]" (identifier "puVar2") ([ "[") (binary_expression "iVar6 + 9" (identifier "iVar6") (+ "+") (number_literal "9")) (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[iVar12 + 1] = 0;" (assignment_expression "puVar2[iVar12 + 1] = 0" (subscript_expression "puVar2[iVar12 + 1]" (identifier "puVar2") ([ "[") (binary_expression "iVar12 + 1" (identifier "iVar12") (+ "+") (number_literal "1")) (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[iVar12 + 5] = 0;" (assignment_expression "puVar2[iVar12 + 5] = 0" (subscript_expression "puVar2[iVar12 + 5]" (identifier "puVar2") ([ "[") (binary_expression "iVar12 + 5" (identifier "iVar12") (+ "+") (number_literal "5")) (] "]")) (= "=") (number_literal "0")) (; ";")) (if_statement "if (puVar2[9] == 0) {\n        *puVar3 = puVar5;\n        *puVar5 = 0;\n        FUN_0001a110(puVar2);\n      }" (if "if") (parenthesized_expression "(puVar2[9] == 0)" (( "(") (binary_expression "puVar2[9] == 0" (subscript_expression "puVar2[9]" (identifier "puVar2") ([ "[") (number_literal "9") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        *puVar3 = puVar5;\n        *puVar5 = 0;\n        FUN_0001a110(puVar2);\n      }" ({ "{") (expression_statement "*puVar3 = puVar5;" (assignment_expression "*puVar3 = puVar5" (pointer_expression "*puVar3" (* "*") (identifier "puVar3")) (= "=") (identifier "puVar5")) (; ";")) (expression_statement "*puVar5 = 0;" (assignment_expression "*puVar5 = 0" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (number_literal "0")) (; ";")) (expression_statement "FUN_0001a110(puVar2);" (call_expression "FUN_0001a110(puVar2)" (identifier "FUN_0001a110") (argument_list "(puVar2)" (( "(") (identifier "puVar2") () ")"))) (; ";")) (} "}"))) (expression_statement "param_2 = puVar5[6] + puVar5[5] + 1;" (assignment_expression "param_2 = puVar5[6] + puVar5[5] + 1" (identifier "param_2") (= "=") (binary_expression "puVar5[6] + puVar5[5] + 1" (binary_expression "puVar5[6] + puVar5[5]" (subscript_expression "puVar5[6]" (identifier "puVar5") ([ "[") (number_literal "6") (] "]")) (+ "+") (subscript_expression "puVar5[5]" (identifier "puVar5") ([ "[") (number_literal "5") (] "]"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n      while (puVar5 = puVar11, puVar5 != (undefined4 *)0x0) {\n        puVar9 = puVar5;\n        puVar11 = (undefined4 *)puVar5[1];\n      }\n      puVar2[local_38 + 9] = puVar9[9];\n      param_2 = 0;\n      puVar5 = puVar4;\n    }" (else "else") (compound_statement "{\n      while (puVar5 = puVar11, puVar5 != (undefined4 *)0x0) {\n        puVar9 = puVar5;\n        puVar11 = (undefined4 *)puVar5[1];\n      }\n      puVar2[local_38 + 9] = puVar9[9];\n      param_2 = 0;\n      puVar5 = puVar4;\n    }" ({ "{") (while_statement "while (puVar5 = puVar11, puVar5 != (undefined4 *)0x0) {\n        puVar9 = puVar5;\n        puVar11 = (undefined4 *)puVar5[1];\n      }" (while "while") (parenthesized_expression "(puVar5 = puVar11, puVar5 != (undefined4 *)0x0)" (( "(") (comma_expression "puVar5 = puVar11, puVar5 != (undefined4 *)0x0" (assignment_expression "puVar5 = puVar11" (identifier "puVar5") (= "=") (identifier "puVar11")) (, ",") (binary_expression "puVar5 != (undefined4 *)0x0" (identifier "puVar5") (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")")) (compound_statement "{\n        puVar9 = puVar5;\n        puVar11 = (undefined4 *)puVar5[1];\n      }" ({ "{") (expression_statement "puVar9 = puVar5;" (assignment_expression "puVar9 = puVar5" (identifier "puVar9") (= "=") (identifier "puVar5")) (; ";")) (expression_statement "puVar11 = (undefined4 *)puVar5[1];" (assignment_expression "puVar11 = (undefined4 *)puVar5[1]" (identifier "puVar11") (= "=") (cast_expression "(undefined4 *)puVar5[1]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar5[1]" (identifier "puVar5") ([ "[") (number_literal "1") (] "]")))) (; ";")) (} "}"))) (expression_statement "puVar2[local_38 + 9] = puVar9[9];" (assignment_expression "puVar2[local_38 + 9] = puVar9[9]" (subscript_expression "puVar2[local_38 + 9]" (identifier "puVar2") ([ "[") (binary_expression "local_38 + 9" (identifier "local_38") (+ "+") (number_literal "9")) (] "]")) (= "=") (subscript_expression "puVar9[9]" (identifier "puVar9") ([ "[") (number_literal "9") (] "]"))) (; ";")) (expression_statement "param_2 = 0;" (assignment_expression "param_2 = 0" (identifier "param_2") (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar5 = puVar4;" (assignment_expression "puVar5 = puVar4" (identifier "puVar5") (= "=") (identifier "puVar4")) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n    while (puVar11 = (undefined4 *)puVar4[1], puVar11 != (undefined4 *)0x0) {\n      while ((puVar9 = (undefined4 *)puVar4[4], (undefined4 *)puVar4[4] != (undefined4 *)0x0 ||\n             (puVar9 = (undefined4 *)puVar4[3], (undefined4 *)puVar4[3] != (undefined4 *)0x0))) {\n        puVar4 = puVar9;\n        puVar11 = (undefined4 *)puVar4[1];\n        if (puVar11 == (undefined4 *)0x0) goto LAB_0003e958;\n      }\n      puVar9 = puVar4 + 2;\n      puVar4 = (undefined4 *)*puVar9;\n      if ((undefined4 *)*puVar9 == (undefined4 *)0x0) {\n        puVar4 = puVar11;\n      }\n    }\nLAB_0003e958:\n    iVar12 = puVar4[0xb];\n    if ((iVar12 == 0) && (iVar12 = puVar4[10], iVar12 == 0)) {\n      iVar12 = puVar4[9];\n    }\n    puVar2[local_38 + 9] = iVar12;\n    param_2 = puVar2[local_38 + 5] + -1;\n  }" (else "else") (compound_statement "{\n    while (puVar11 = (undefined4 *)puVar4[1], puVar11 != (undefined4 *)0x0) {\n      while ((puVar9 = (undefined4 *)puVar4[4], (undefined4 *)puVar4[4] != (undefined4 *)0x0 ||\n             (puVar9 = (undefined4 *)puVar4[3], (undefined4 *)puVar4[3] != (undefined4 *)0x0))) {\n        puVar4 = puVar9;\n        puVar11 = (undefined4 *)puVar4[1];\n        if (puVar11 == (undefined4 *)0x0) goto LAB_0003e958;\n      }\n      puVar9 = puVar4 + 2;\n      puVar4 = (undefined4 *)*puVar9;\n      if ((undefined4 *)*puVar9 == (undefined4 *)0x0) {\n        puVar4 = puVar11;\n      }\n    }\nLAB_0003e958:\n    iVar12 = puVar4[0xb];\n    if ((iVar12 == 0) && (iVar12 = puVar4[10], iVar12 == 0)) {\n      iVar12 = puVar4[9];\n    }\n    puVar2[local_38 + 9] = iVar12;\n    param_2 = puVar2[local_38 + 5] + -1;\n  }" ({ "{") (while_statement "while (puVar11 = (undefined4 *)puVar4[1], puVar11 != (undefined4 *)0x0) {\n      while ((puVar9 = (undefined4 *)puVar4[4], (undefined4 *)puVar4[4] != (undefined4 *)0x0 ||\n             (puVar9 = (undefined4 *)puVar4[3], (undefined4 *)puVar4[3] != (undefined4 *)0x0))) {\n        puVar4 = puVar9;\n        puVar11 = (undefined4 *)puVar4[1];\n        if (puVar11 == (undefined4 *)0x0) goto LAB_0003e958;\n      }\n      puVar9 = puVar4 + 2;\n      puVar4 = (undefined4 *)*puVar9;\n      if ((undefined4 *)*puVar9 == (undefined4 *)0x0) {\n        puVar4 = puVar11;\n      }\n    }" (while "while") (parenthesized_expression "(puVar11 = (undefined4 *)puVar4[1], puVar11 != (undefined4 *)0x0)" (( "(") (comma_expression "puVar11 = (undefined4 *)puVar4[1], puVar11 != (undefined4 *)0x0" (assignment_expression "puVar11 = (undefined4 *)puVar4[1]" (identifier "puVar11") (= "=") (cast_expression "(undefined4 *)puVar4[1]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar4[1]" (identifier "puVar4") ([ "[") (number_literal "1") (] "]")))) (, ",") (binary_expression "puVar11 != (undefined4 *)0x0" (identifier "puVar11") (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")")) (compound_statement "{\n      while ((puVar9 = (undefined4 *)puVar4[4], (undefined4 *)puVar4[4] != (undefined4 *)0x0 ||\n             (puVar9 = (undefined4 *)puVar4[3], (undefined4 *)puVar4[3] != (undefined4 *)0x0))) {\n        puVar4 = puVar9;\n        puVar11 = (undefined4 *)puVar4[1];\n        if (puVar11 == (undefined4 *)0x0) goto LAB_0003e958;\n      }\n      puVar9 = puVar4 + 2;\n      puVar4 = (undefined4 *)*puVar9;\n      if ((undefined4 *)*puVar9 == (undefined4 *)0x0) {\n        puVar4 = puVar11;\n      }\n    }" ({ "{") (while_statement "while ((puVar9 = (undefined4 *)puVar4[4], (undefined4 *)puVar4[4] != (undefined4 *)0x0 ||\n             (puVar9 = (undefined4 *)puVar4[3], (undefined4 *)puVar4[3] != (undefined4 *)0x0))) {\n        puVar4 = puVar9;\n        puVar11 = (undefined4 *)puVar4[1];\n        if (puVar11 == (undefined4 *)0x0) goto LAB_0003e958;\n      }" (while "while") (parenthesized_expression "((puVar9 = (undefined4 *)puVar4[4], (undefined4 *)puVar4[4] != (undefined4 *)0x0 ||\n             (puVar9 = (undefined4 *)puVar4[3], (undefined4 *)puVar4[3] != (undefined4 *)0x0)))" (( "(") (parenthesized_expression "(puVar9 = (undefined4 *)puVar4[4], (undefined4 *)puVar4[4] != (undefined4 *)0x0 ||\n             (puVar9 = (undefined4 *)puVar4[3], (undefined4 *)puVar4[3] != (undefined4 *)0x0))" (( "(") (comma_expression "puVar9 = (undefined4 *)puVar4[4], (undefined4 *)puVar4[4] != (undefined4 *)0x0 ||\n             (puVar9 = (undefined4 *)puVar4[3], (undefined4 *)puVar4[3] != (undefined4 *)0x0)" (assignment_expression "puVar9 = (undefined4 *)puVar4[4]" (identifier "puVar9") (= "=") (cast_expression "(undefined4 *)puVar4[4]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar4[4]" (identifier "puVar4") ([ "[") (number_literal "4") (] "]")))) (, ",") (binary_expression "(undefined4 *)puVar4[4] != (undefined4 *)0x0 ||\n             (puVar9 = (undefined4 *)puVar4[3], (undefined4 *)puVar4[3] != (undefined4 *)0x0)" (binary_expression "(undefined4 *)puVar4[4] != (undefined4 *)0x0" (cast_expression "(undefined4 *)puVar4[4]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar4[4]" (identifier "puVar4") ([ "[") (number_literal "4") (] "]"))) (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (|| "||") (parenthesized_expression "(puVar9 = (undefined4 *)puVar4[3], (undefined4 *)puVar4[3] != (undefined4 *)0x0)" (( "(") (comma_expression "puVar9 = (undefined4 *)puVar4[3], (undefined4 *)puVar4[3] != (undefined4 *)0x0" (assignment_expression "puVar9 = (undefined4 *)puVar4[3]" (identifier "puVar9") (= "=") (cast_expression "(undefined4 *)puVar4[3]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar4[3]" (identifier "puVar4") ([ "[") (number_literal "3") (] "]")))) (, ",") (binary_expression "(undefined4 *)puVar4[3] != (undefined4 *)0x0" (cast_expression "(undefined4 *)puVar4[3]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar4[3]" (identifier "puVar4") ([ "[") (number_literal "3") (] "]"))) (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")")))) () ")")) () ")")) (compound_statement "{\n        puVar4 = puVar9;\n        puVar11 = (undefined4 *)puVar4[1];\n        if (puVar11 == (undefined4 *)0x0) goto LAB_0003e958;\n      }" ({ "{") (expression_statement "puVar4 = puVar9;" (assignment_expression "puVar4 = puVar9" (identifier "puVar4") (= "=") (identifier "puVar9")) (; ";")) (expression_statement "puVar11 = (undefined4 *)puVar4[1];" (assignment_expression "puVar11 = (undefined4 *)puVar4[1]" (identifier "puVar11") (= "=") (cast_expression "(undefined4 *)puVar4[1]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar4[1]" (identifier "puVar4") ([ "[") (number_literal "1") (] "]")))) (; ";")) (if_statement "if (puVar11 == (undefined4 *)0x0) goto LAB_0003e958;" (if "if") (parenthesized_expression "(puVar11 == (undefined4 *)0x0)" (( "(") (binary_expression "puVar11 == (undefined4 *)0x0" (identifier "puVar11") (== "==") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_0003e958;" (goto "goto") (statement_identifier "LAB_0003e958") (; ";"))) (} "}"))) (expression_statement "puVar9 = puVar4 + 2;" (assignment_expression "puVar9 = puVar4 + 2" (identifier "puVar9") (= "=") (binary_expression "puVar4 + 2" (identifier "puVar4") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "puVar4 = (undefined4 *)*puVar9;" (assignment_expression "puVar4 = (undefined4 *)*puVar9" (identifier "puVar4") (= "=") (cast_expression "(undefined4 *)*puVar9" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar9" (* "*") (identifier "puVar9")))) (; ";")) (if_statement "if ((undefined4 *)*puVar9 == (undefined4 *)0x0) {\n        puVar4 = puVar11;\n      }" (if "if") (parenthesized_expression "((undefined4 *)*puVar9 == (undefined4 *)0x0)" (( "(") (binary_expression "(undefined4 *)*puVar9 == (undefined4 *)0x0" (cast_expression "(undefined4 *)*puVar9" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar9" (* "*") (identifier "puVar9"))) (== "==") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        puVar4 = puVar11;\n      }" ({ "{") (expression_statement "puVar4 = puVar11;" (assignment_expression "puVar4 = puVar11" (identifier "puVar4") (= "=") (identifier "puVar11")) (; ";")) (} "}"))) (} "}"))) (labeled_statement "LAB_0003e958:\n    iVar12 = puVar4[0xb];" (statement_identifier "LAB_0003e958") (: ":") (expression_statement "iVar12 = puVar4[0xb];" (assignment_expression "iVar12 = puVar4[0xb]" (identifier "iVar12") (= "=") (subscript_expression "puVar4[0xb]" (identifier "puVar4") ([ "[") (number_literal "0xb") (] "]"))) (; ";"))) (if_statement "if ((iVar12 == 0) && (iVar12 = puVar4[10], iVar12 == 0)) {\n      iVar12 = puVar4[9];\n    }" (if "if") (parenthesized_expression "((iVar12 == 0) && (iVar12 = puVar4[10], iVar12 == 0))" (( "(") (binary_expression "(iVar12 == 0) && (iVar12 = puVar4[10], iVar12 == 0)" (parenthesized_expression "(iVar12 == 0)" (( "(") (binary_expression "iVar12 == 0" (identifier "iVar12") (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(iVar12 = puVar4[10], iVar12 == 0)" (( "(") (comma_expression "iVar12 = puVar4[10], iVar12 == 0" (assignment_expression "iVar12 = puVar4[10]" (identifier "iVar12") (= "=") (subscript_expression "puVar4[10]" (identifier "puVar4") ([ "[") (number_literal "10") (] "]"))) (, ",") (binary_expression "iVar12 == 0" (identifier "iVar12") (== "==") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n      iVar12 = puVar4[9];\n    }" ({ "{") (expression_statement "iVar12 = puVar4[9];" (assignment_expression "iVar12 = puVar4[9]" (identifier "iVar12") (= "=") (subscript_expression "puVar4[9]" (identifier "puVar4") ([ "[") (number_literal "9") (] "]"))) (; ";")) (} "}"))) (expression_statement "puVar2[local_38 + 9] = iVar12;" (assignment_expression "puVar2[local_38 + 9] = iVar12" (subscript_expression "puVar2[local_38 + 9]" (identifier "puVar2") ([ "[") (binary_expression "local_38 + 9" (identifier "local_38") (+ "+") (number_literal "9")) (] "]")) (= "=") (identifier "iVar12")) (; ";")) (expression_statement "param_2 = puVar2[local_38 + 5] + -1;" (assignment_expression "param_2 = puVar2[local_38 + 5] + -1" (identifier "param_2") (= "=") (binary_expression "puVar2[local_38 + 5] + -1" (subscript_expression "puVar2[local_38 + 5]" (identifier "puVar2") ([ "[") (binary_expression "local_38 + 5" (identifier "local_38") (+ "+") (number_literal "5")) (] "]")) (+ "+") (number_literal "-1"))) (; ";")) (} "}")))) (goto_statement "goto joined_r0x0003e772;" (goto "goto") (statement_identifier "joined_r0x0003e772") (; ";")) (labeled_statement "LAB_0003eab0:\n  puVar5 = (undefined4 *)puVar2[2];" (statement_identifier "LAB_0003eab0") (: ":") (expression_statement "puVar5 = (undefined4 *)puVar2[2];" (assignment_expression "puVar5 = (undefined4 *)puVar2[2]" (identifier "puVar5") (= "=") (cast_expression "(undefined4 *)puVar2[2]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar2[2]" (identifier "puVar2") ([ "[") (number_literal "2") (] "]")))) (; ";"))) (if_statement "if (puVar5[10] == 0) {\n    local_30 = 1;\n    iVar10 = 0;\nLAB_0003eacb:\n    puVar4 = (undefined4 *)puVar2[iVar10 + 1];\n    if (puVar4[10] == 0) {\n      local_28 = local_30 + 1;\n      puVar11 = puVar2 + local_30;\n      puVar9 = (undefined4 *)puVar11[2];\n      if (puVar9 == (undefined4 *)0x0) {\n        puVar9 = (undefined4 *)puVar11[1];\n        iVar12 = param_2 + 1 + puVar2[iVar10 + 5];\n      }\n      else {\n        if (puVar9[10] != 0) {\nLAB_0003e836:\n          uVar7 = puVar9[5];\n          puVar5[10] = puVar2[local_30 + 9];\n          puVar4 = (undefined4 *)puVar9[1];\n          puVar5[7] = uVar7;\n          puVar5[3] = puVar4;\n          if (puVar4 != (undefined4 *)0x0) {\n            *puVar4 = puVar5;\n          }\n          puVar2[local_30 + 9] = puVar9[9];\n          puVar9[1] = puVar9[2];\n          puVar9[5] = puVar9[6];\n          if (puVar9[10] == 0) {\n            iVar12 = 1;\n            iVar10 = 0;\n          }\n          else {\n            puVar9[9] = puVar9[10];\n            puVar9[2] = puVar9[3];\n            puVar9[6] = puVar9[7];\n            if (puVar9[0xb] == 0) {\n              iVar12 = 2;\n              iVar10 = 1;\n            }\n            else {\n              puVar9[10] = puVar9[0xb];\n              iVar12 = 3;\n              puVar9[3] = puVar9[4];\n              puVar9[7] = puVar9[8];\n              iVar10 = 2;\n            }\n          }\n          puVar9[iVar12 + 1] = 0;\n          puVar9[iVar12 + 5] = 0;\n          puVar9[iVar10 + 9] = 0;\n          uVar7 = FUN_0003e010();\n          puVar2[local_30 + 5] = uVar7;\n          uVar7 = FUN_0003e010();\n          puVar2[local_28 + 5] = uVar7;\n          puVar5 = extraout_ECX;\n          goto joined_r0x0003e772;\n        }\n        puVar4 = (undefined4 *)*puVar11;\n        puVar9 = (undefined4 *)puVar11[1];\n        iVar10 = local_30 + -1;\n        iVar12 = param_2 + 1 + puVar11[4];\n      }\nLAB_0003ed0c:\n      puVar9[4] = puVar9[2];\n      puVar9[8] = puVar9[6];\n      puVar9[0xb] = puVar9[9];\n      puVar9[3] = puVar9[1];\n      puVar9[7] = puVar9[5];\n      uVar7 = puVar4[6];\n      puVar9[10] = puVar2[iVar10 + 9];\n      puVar5 = (undefined4 *)puVar4[2];\n      puVar9[6] = uVar7;\n      puVar9[2] = puVar5;\n      if (puVar5 != (undefined4 *)0x0) {\n        *puVar5 = puVar9;\n      }\n      uVar7 = puVar4[5];\n      puVar9[9] = puVar4[9];\n      puVar5 = (undefined4 *)puVar4[1];\n      puVar9[5] = uVar7;\n      puVar9[1] = puVar5;\n      if (puVar5 != (undefined4 *)0x0) {\n        *puVar5 = puVar9;\n      }\n      uVar7 = FUN_0003e010();\n      puVar2[local_30 + 5] = uVar7;\n      FUN_0001a110(extraout_ECX_00);\n      iVar6 = puVar2[iVar10 + 2];\n      while (iVar6 != 0) {\n        iVar8 = iVar10 + 1;\n        puVar2[iVar8] = iVar6;\n        puVar2[iVar10 + 5] = puVar2[iVar10 + 6];\n        if (iVar8 == 3) {\n          puVar2[0xb] = 0;\n          puVar2[4] = 0;\n          puVar2[8] = 0;\n          goto LAB_0003edcd;\n        }\n        puVar2[iVar10 + 9] = puVar2[iVar10 + 10];\n        iVar6 = puVar2[iVar10 + 3];\n        iVar10 = iVar8;\n      }\n      puVar2[iVar10 + 1] = 0;\n      puVar2[iVar10 + 5] = 0;\n      puVar2[iVar10 + 9] = 0;\nLAB_0003edcd:\n      param_2 = iVar12;\n      puVar5 = puVar9;\n      if (puVar2[9] == 0) {\n        *puVar3 = puVar9;\n        *puVar9 = 0;\n        FUN_0001a110(puVar2);\n      }\n      goto joined_r0x0003e772;\n    }\nLAB_0003eae0:\n    uVar1 = (uint)(puVar4[0xb] == 0);\n    puVar5[3] = puVar5[2];\n    puVar5[7] = puVar5[6];\n    puVar5[10] = puVar5[9];\n    puVar5[2] = puVar5[1];\n    puVar5[6] = puVar5[5];\n    puVar5[9] = puVar2[iVar10 + 9];\n    puVar11 = (undefined4 *)puVar4[4 - uVar1];\n    puVar5[1] = puVar11;\n    puVar5[5] = puVar4[8 - uVar1];\n    if (puVar11 != (undefined4 *)0x0) {\n      *puVar11 = puVar5;\n    }\n    puVar2[iVar10 + 9] = puVar4[-uVar1 + 0xb];\n    puVar4[4 - uVar1] = 0;\n    puVar4[8 - uVar1] = 0;\n    puVar4[-uVar1 + 0xb] = 0;\n    uVar7 = FUN_0003e010();\n    puVar2[local_30 + 5] = uVar7;\n    iVar12 = puVar2[iVar10 + 5];\n    iVar6 = FUN_0003e010();\n    puVar2[iVar10 + 5] = iVar6;\n    param_2 = (param_2 + iVar12) - iVar6;\n  }" (if "if") (parenthesized_expression "(puVar5[10] == 0)" (( "(") (binary_expression "puVar5[10] == 0" (subscript_expression "puVar5[10]" (identifier "puVar5") ([ "[") (number_literal "10") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    local_30 = 1;\n    iVar10 = 0;\nLAB_0003eacb:\n    puVar4 = (undefined4 *)puVar2[iVar10 + 1];\n    if (puVar4[10] == 0) {\n      local_28 = local_30 + 1;\n      puVar11 = puVar2 + local_30;\n      puVar9 = (undefined4 *)puVar11[2];\n      if (puVar9 == (undefined4 *)0x0) {\n        puVar9 = (undefined4 *)puVar11[1];\n        iVar12 = param_2 + 1 + puVar2[iVar10 + 5];\n      }\n      else {\n        if (puVar9[10] != 0) {\nLAB_0003e836:\n          uVar7 = puVar9[5];\n          puVar5[10] = puVar2[local_30 + 9];\n          puVar4 = (undefined4 *)puVar9[1];\n          puVar5[7] = uVar7;\n          puVar5[3] = puVar4;\n          if (puVar4 != (undefined4 *)0x0) {\n            *puVar4 = puVar5;\n          }\n          puVar2[local_30 + 9] = puVar9[9];\n          puVar9[1] = puVar9[2];\n          puVar9[5] = puVar9[6];\n          if (puVar9[10] == 0) {\n            iVar12 = 1;\n            iVar10 = 0;\n          }\n          else {\n            puVar9[9] = puVar9[10];\n            puVar9[2] = puVar9[3];\n            puVar9[6] = puVar9[7];\n            if (puVar9[0xb] == 0) {\n              iVar12 = 2;\n              iVar10 = 1;\n            }\n            else {\n              puVar9[10] = puVar9[0xb];\n              iVar12 = 3;\n              puVar9[3] = puVar9[4];\n              puVar9[7] = puVar9[8];\n              iVar10 = 2;\n            }\n          }\n          puVar9[iVar12 + 1] = 0;\n          puVar9[iVar12 + 5] = 0;\n          puVar9[iVar10 + 9] = 0;\n          uVar7 = FUN_0003e010();\n          puVar2[local_30 + 5] = uVar7;\n          uVar7 = FUN_0003e010();\n          puVar2[local_28 + 5] = uVar7;\n          puVar5 = extraout_ECX;\n          goto joined_r0x0003e772;\n        }\n        puVar4 = (undefined4 *)*puVar11;\n        puVar9 = (undefined4 *)puVar11[1];\n        iVar10 = local_30 + -1;\n        iVar12 = param_2 + 1 + puVar11[4];\n      }\nLAB_0003ed0c:\n      puVar9[4] = puVar9[2];\n      puVar9[8] = puVar9[6];\n      puVar9[0xb] = puVar9[9];\n      puVar9[3] = puVar9[1];\n      puVar9[7] = puVar9[5];\n      uVar7 = puVar4[6];\n      puVar9[10] = puVar2[iVar10 + 9];\n      puVar5 = (undefined4 *)puVar4[2];\n      puVar9[6] = uVar7;\n      puVar9[2] = puVar5;\n      if (puVar5 != (undefined4 *)0x0) {\n        *puVar5 = puVar9;\n      }\n      uVar7 = puVar4[5];\n      puVar9[9] = puVar4[9];\n      puVar5 = (undefined4 *)puVar4[1];\n      puVar9[5] = uVar7;\n      puVar9[1] = puVar5;\n      if (puVar5 != (undefined4 *)0x0) {\n        *puVar5 = puVar9;\n      }\n      uVar7 = FUN_0003e010();\n      puVar2[local_30 + 5] = uVar7;\n      FUN_0001a110(extraout_ECX_00);\n      iVar6 = puVar2[iVar10 + 2];\n      while (iVar6 != 0) {\n        iVar8 = iVar10 + 1;\n        puVar2[iVar8] = iVar6;\n        puVar2[iVar10 + 5] = puVar2[iVar10 + 6];\n        if (iVar8 == 3) {\n          puVar2[0xb] = 0;\n          puVar2[4] = 0;\n          puVar2[8] = 0;\n          goto LAB_0003edcd;\n        }\n        puVar2[iVar10 + 9] = puVar2[iVar10 + 10];\n        iVar6 = puVar2[iVar10 + 3];\n        iVar10 = iVar8;\n      }\n      puVar2[iVar10 + 1] = 0;\n      puVar2[iVar10 + 5] = 0;\n      puVar2[iVar10 + 9] = 0;\nLAB_0003edcd:\n      param_2 = iVar12;\n      puVar5 = puVar9;\n      if (puVar2[9] == 0) {\n        *puVar3 = puVar9;\n        *puVar9 = 0;\n        FUN_0001a110(puVar2);\n      }\n      goto joined_r0x0003e772;\n    }\nLAB_0003eae0:\n    uVar1 = (uint)(puVar4[0xb] == 0);\n    puVar5[3] = puVar5[2];\n    puVar5[7] = puVar5[6];\n    puVar5[10] = puVar5[9];\n    puVar5[2] = puVar5[1];\n    puVar5[6] = puVar5[5];\n    puVar5[9] = puVar2[iVar10 + 9];\n    puVar11 = (undefined4 *)puVar4[4 - uVar1];\n    puVar5[1] = puVar11;\n    puVar5[5] = puVar4[8 - uVar1];\n    if (puVar11 != (undefined4 *)0x0) {\n      *puVar11 = puVar5;\n    }\n    puVar2[iVar10 + 9] = puVar4[-uVar1 + 0xb];\n    puVar4[4 - uVar1] = 0;\n    puVar4[8 - uVar1] = 0;\n    puVar4[-uVar1 + 0xb] = 0;\n    uVar7 = FUN_0003e010();\n    puVar2[local_30 + 5] = uVar7;\n    iVar12 = puVar2[iVar10 + 5];\n    iVar6 = FUN_0003e010();\n    puVar2[iVar10 + 5] = iVar6;\n    param_2 = (param_2 + iVar12) - iVar6;\n  }" ({ "{") (expression_statement "local_30 = 1;" (assignment_expression "local_30 = 1" (identifier "local_30") (= "=") (number_literal "1")) (; ";")) (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" (identifier "iVar10") (= "=") (number_literal "0")) (; ";")) (labeled_statement "LAB_0003eacb:\n    puVar4 = (undefined4 *)puVar2[iVar10 + 1];" (statement_identifier "LAB_0003eacb") (: ":") (expression_statement "puVar4 = (undefined4 *)puVar2[iVar10 + 1];" (assignment_expression "puVar4 = (undefined4 *)puVar2[iVar10 + 1]" (identifier "puVar4") (= "=") (cast_expression "(undefined4 *)puVar2[iVar10 + 1]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar2[iVar10 + 1]" (identifier "puVar2") ([ "[") (binary_expression "iVar10 + 1" (identifier "iVar10") (+ "+") (number_literal "1")) (] "]")))) (; ";"))) (if_statement "if (puVar4[10] == 0) {\n      local_28 = local_30 + 1;\n      puVar11 = puVar2 + local_30;\n      puVar9 = (undefined4 *)puVar11[2];\n      if (puVar9 == (undefined4 *)0x0) {\n        puVar9 = (undefined4 *)puVar11[1];\n        iVar12 = param_2 + 1 + puVar2[iVar10 + 5];\n      }\n      else {\n        if (puVar9[10] != 0) {\nLAB_0003e836:\n          uVar7 = puVar9[5];\n          puVar5[10] = puVar2[local_30 + 9];\n          puVar4 = (undefined4 *)puVar9[1];\n          puVar5[7] = uVar7;\n          puVar5[3] = puVar4;\n          if (puVar4 != (undefined4 *)0x0) {\n            *puVar4 = puVar5;\n          }\n          puVar2[local_30 + 9] = puVar9[9];\n          puVar9[1] = puVar9[2];\n          puVar9[5] = puVar9[6];\n          if (puVar9[10] == 0) {\n            iVar12 = 1;\n            iVar10 = 0;\n          }\n          else {\n            puVar9[9] = puVar9[10];\n            puVar9[2] = puVar9[3];\n            puVar9[6] = puVar9[7];\n            if (puVar9[0xb] == 0) {\n              iVar12 = 2;\n              iVar10 = 1;\n            }\n            else {\n              puVar9[10] = puVar9[0xb];\n              iVar12 = 3;\n              puVar9[3] = puVar9[4];\n              puVar9[7] = puVar9[8];\n              iVar10 = 2;\n            }\n          }\n          puVar9[iVar12 + 1] = 0;\n          puVar9[iVar12 + 5] = 0;\n          puVar9[iVar10 + 9] = 0;\n          uVar7 = FUN_0003e010();\n          puVar2[local_30 + 5] = uVar7;\n          uVar7 = FUN_0003e010();\n          puVar2[local_28 + 5] = uVar7;\n          puVar5 = extraout_ECX;\n          goto joined_r0x0003e772;\n        }\n        puVar4 = (undefined4 *)*puVar11;\n        puVar9 = (undefined4 *)puVar11[1];\n        iVar10 = local_30 + -1;\n        iVar12 = param_2 + 1 + puVar11[4];\n      }\nLAB_0003ed0c:\n      puVar9[4] = puVar9[2];\n      puVar9[8] = puVar9[6];\n      puVar9[0xb] = puVar9[9];\n      puVar9[3] = puVar9[1];\n      puVar9[7] = puVar9[5];\n      uVar7 = puVar4[6];\n      puVar9[10] = puVar2[iVar10 + 9];\n      puVar5 = (undefined4 *)puVar4[2];\n      puVar9[6] = uVar7;\n      puVar9[2] = puVar5;\n      if (puVar5 != (undefined4 *)0x0) {\n        *puVar5 = puVar9;\n      }\n      uVar7 = puVar4[5];\n      puVar9[9] = puVar4[9];\n      puVar5 = (undefined4 *)puVar4[1];\n      puVar9[5] = uVar7;\n      puVar9[1] = puVar5;\n      if (puVar5 != (undefined4 *)0x0) {\n        *puVar5 = puVar9;\n      }\n      uVar7 = FUN_0003e010();\n      puVar2[local_30 + 5] = uVar7;\n      FUN_0001a110(extraout_ECX_00);\n      iVar6 = puVar2[iVar10 + 2];\n      while (iVar6 != 0) {\n        iVar8 = iVar10 + 1;\n        puVar2[iVar8] = iVar6;\n        puVar2[iVar10 + 5] = puVar2[iVar10 + 6];\n        if (iVar8 == 3) {\n          puVar2[0xb] = 0;\n          puVar2[4] = 0;\n          puVar2[8] = 0;\n          goto LAB_0003edcd;\n        }\n        puVar2[iVar10 + 9] = puVar2[iVar10 + 10];\n        iVar6 = puVar2[iVar10 + 3];\n        iVar10 = iVar8;\n      }\n      puVar2[iVar10 + 1] = 0;\n      puVar2[iVar10 + 5] = 0;\n      puVar2[iVar10 + 9] = 0;\nLAB_0003edcd:\n      param_2 = iVar12;\n      puVar5 = puVar9;\n      if (puVar2[9] == 0) {\n        *puVar3 = puVar9;\n        *puVar9 = 0;\n        FUN_0001a110(puVar2);\n      }\n      goto joined_r0x0003e772;\n    }" (if "if") (parenthesized_expression "(puVar4[10] == 0)" (( "(") (binary_expression "puVar4[10] == 0" (subscript_expression "puVar4[10]" (identifier "puVar4") ([ "[") (number_literal "10") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      local_28 = local_30 + 1;\n      puVar11 = puVar2 + local_30;\n      puVar9 = (undefined4 *)puVar11[2];\n      if (puVar9 == (undefined4 *)0x0) {\n        puVar9 = (undefined4 *)puVar11[1];\n        iVar12 = param_2 + 1 + puVar2[iVar10 + 5];\n      }\n      else {\n        if (puVar9[10] != 0) {\nLAB_0003e836:\n          uVar7 = puVar9[5];\n          puVar5[10] = puVar2[local_30 + 9];\n          puVar4 = (undefined4 *)puVar9[1];\n          puVar5[7] = uVar7;\n          puVar5[3] = puVar4;\n          if (puVar4 != (undefined4 *)0x0) {\n            *puVar4 = puVar5;\n          }\n          puVar2[local_30 + 9] = puVar9[9];\n          puVar9[1] = puVar9[2];\n          puVar9[5] = puVar9[6];\n          if (puVar9[10] == 0) {\n            iVar12 = 1;\n            iVar10 = 0;\n          }\n          else {\n            puVar9[9] = puVar9[10];\n            puVar9[2] = puVar9[3];\n            puVar9[6] = puVar9[7];\n            if (puVar9[0xb] == 0) {\n              iVar12 = 2;\n              iVar10 = 1;\n            }\n            else {\n              puVar9[10] = puVar9[0xb];\n              iVar12 = 3;\n              puVar9[3] = puVar9[4];\n              puVar9[7] = puVar9[8];\n              iVar10 = 2;\n            }\n          }\n          puVar9[iVar12 + 1] = 0;\n          puVar9[iVar12 + 5] = 0;\n          puVar9[iVar10 + 9] = 0;\n          uVar7 = FUN_0003e010();\n          puVar2[local_30 + 5] = uVar7;\n          uVar7 = FUN_0003e010();\n          puVar2[local_28 + 5] = uVar7;\n          puVar5 = extraout_ECX;\n          goto joined_r0x0003e772;\n        }\n        puVar4 = (undefined4 *)*puVar11;\n        puVar9 = (undefined4 *)puVar11[1];\n        iVar10 = local_30 + -1;\n        iVar12 = param_2 + 1 + puVar11[4];\n      }\nLAB_0003ed0c:\n      puVar9[4] = puVar9[2];\n      puVar9[8] = puVar9[6];\n      puVar9[0xb] = puVar9[9];\n      puVar9[3] = puVar9[1];\n      puVar9[7] = puVar9[5];\n      uVar7 = puVar4[6];\n      puVar9[10] = puVar2[iVar10 + 9];\n      puVar5 = (undefined4 *)puVar4[2];\n      puVar9[6] = uVar7;\n      puVar9[2] = puVar5;\n      if (puVar5 != (undefined4 *)0x0) {\n        *puVar5 = puVar9;\n      }\n      uVar7 = puVar4[5];\n      puVar9[9] = puVar4[9];\n      puVar5 = (undefined4 *)puVar4[1];\n      puVar9[5] = uVar7;\n      puVar9[1] = puVar5;\n      if (puVar5 != (undefined4 *)0x0) {\n        *puVar5 = puVar9;\n      }\n      uVar7 = FUN_0003e010();\n      puVar2[local_30 + 5] = uVar7;\n      FUN_0001a110(extraout_ECX_00);\n      iVar6 = puVar2[iVar10 + 2];\n      while (iVar6 != 0) {\n        iVar8 = iVar10 + 1;\n        puVar2[iVar8] = iVar6;\n        puVar2[iVar10 + 5] = puVar2[iVar10 + 6];\n        if (iVar8 == 3) {\n          puVar2[0xb] = 0;\n          puVar2[4] = 0;\n          puVar2[8] = 0;\n          goto LAB_0003edcd;\n        }\n        puVar2[iVar10 + 9] = puVar2[iVar10 + 10];\n        iVar6 = puVar2[iVar10 + 3];\n        iVar10 = iVar8;\n      }\n      puVar2[iVar10 + 1] = 0;\n      puVar2[iVar10 + 5] = 0;\n      puVar2[iVar10 + 9] = 0;\nLAB_0003edcd:\n      param_2 = iVar12;\n      puVar5 = puVar9;\n      if (puVar2[9] == 0) {\n        *puVar3 = puVar9;\n        *puVar9 = 0;\n        FUN_0001a110(puVar2);\n      }\n      goto joined_r0x0003e772;\n    }" ({ "{") (expression_statement "local_28 = local_30 + 1;" (assignment_expression "local_28 = local_30 + 1" (identifier "local_28") (= "=") (binary_expression "local_30 + 1" (identifier "local_30") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar11 = puVar2 + local_30;" (assignment_expression "puVar11 = puVar2 + local_30" (identifier "puVar11") (= "=") (binary_expression "puVar2 + local_30" (identifier "puVar2") (+ "+") (identifier "local_30"))) (; ";")) (expression_statement "puVar9 = (undefined4 *)puVar11[2];" (assignment_expression "puVar9 = (undefined4 *)puVar11[2]" (identifier "puVar9") (= "=") (cast_expression "(undefined4 *)puVar11[2]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar11[2]" (identifier "puVar11") ([ "[") (number_literal "2") (] "]")))) (; ";")) (if_statement "if (puVar9 == (undefined4 *)0x0) {\n        puVar9 = (undefined4 *)puVar11[1];\n        iVar12 = param_2 + 1 + puVar2[iVar10 + 5];\n      }\n      else {\n        if (puVar9[10] != 0) {\nLAB_0003e836:\n          uVar7 = puVar9[5];\n          puVar5[10] = puVar2[local_30 + 9];\n          puVar4 = (undefined4 *)puVar9[1];\n          puVar5[7] = uVar7;\n          puVar5[3] = puVar4;\n          if (puVar4 != (undefined4 *)0x0) {\n            *puVar4 = puVar5;\n          }\n          puVar2[local_30 + 9] = puVar9[9];\n          puVar9[1] = puVar9[2];\n          puVar9[5] = puVar9[6];\n          if (puVar9[10] == 0) {\n            iVar12 = 1;\n            iVar10 = 0;\n          }\n          else {\n            puVar9[9] = puVar9[10];\n            puVar9[2] = puVar9[3];\n            puVar9[6] = puVar9[7];\n            if (puVar9[0xb] == 0) {\n              iVar12 = 2;\n              iVar10 = 1;\n            }\n            else {\n              puVar9[10] = puVar9[0xb];\n              iVar12 = 3;\n              puVar9[3] = puVar9[4];\n              puVar9[7] = puVar9[8];\n              iVar10 = 2;\n            }\n          }\n          puVar9[iVar12 + 1] = 0;\n          puVar9[iVar12 + 5] = 0;\n          puVar9[iVar10 + 9] = 0;\n          uVar7 = FUN_0003e010();\n          puVar2[local_30 + 5] = uVar7;\n          uVar7 = FUN_0003e010();\n          puVar2[local_28 + 5] = uVar7;\n          puVar5 = extraout_ECX;\n          goto joined_r0x0003e772;\n        }\n        puVar4 = (undefined4 *)*puVar11;\n        puVar9 = (undefined4 *)puVar11[1];\n        iVar10 = local_30 + -1;\n        iVar12 = param_2 + 1 + puVar11[4];\n      }" (if "if") (parenthesized_expression "(puVar9 == (undefined4 *)0x0)" (( "(") (binary_expression "puVar9 == (undefined4 *)0x0" (identifier "puVar9") (== "==") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        puVar9 = (undefined4 *)puVar11[1];\n        iVar12 = param_2 + 1 + puVar2[iVar10 + 5];\n      }" ({ "{") (expression_statement "puVar9 = (undefined4 *)puVar11[1];" (assignment_expression "puVar9 = (undefined4 *)puVar11[1]" (identifier "puVar9") (= "=") (cast_expression "(undefined4 *)puVar11[1]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar11[1]" (identifier "puVar11") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "iVar12 = param_2 + 1 + puVar2[iVar10 + 5];" (assignment_expression "iVar12 = param_2 + 1 + puVar2[iVar10 + 5]" (identifier "iVar12") (= "=") (binary_expression "param_2 + 1 + puVar2[iVar10 + 5]" (binary_expression "param_2 + 1" (identifier "param_2") (+ "+") (number_literal "1")) (+ "+") (subscript_expression "puVar2[iVar10 + 5]" (identifier "puVar2") ([ "[") (binary_expression "iVar10 + 5" (identifier "iVar10") (+ "+") (number_literal "5")) (] "]")))) (; ";")) (} "}")) (else_clause "else {\n        if (puVar9[10] != 0) {\nLAB_0003e836:\n          uVar7 = puVar9[5];\n          puVar5[10] = puVar2[local_30 + 9];\n          puVar4 = (undefined4 *)puVar9[1];\n          puVar5[7] = uVar7;\n          puVar5[3] = puVar4;\n          if (puVar4 != (undefined4 *)0x0) {\n            *puVar4 = puVar5;\n          }\n          puVar2[local_30 + 9] = puVar9[9];\n          puVar9[1] = puVar9[2];\n          puVar9[5] = puVar9[6];\n          if (puVar9[10] == 0) {\n            iVar12 = 1;\n            iVar10 = 0;\n          }\n          else {\n            puVar9[9] = puVar9[10];\n            puVar9[2] = puVar9[3];\n            puVar9[6] = puVar9[7];\n            if (puVar9[0xb] == 0) {\n              iVar12 = 2;\n              iVar10 = 1;\n            }\n            else {\n              puVar9[10] = puVar9[0xb];\n              iVar12 = 3;\n              puVar9[3] = puVar9[4];\n              puVar9[7] = puVar9[8];\n              iVar10 = 2;\n            }\n          }\n          puVar9[iVar12 + 1] = 0;\n          puVar9[iVar12 + 5] = 0;\n          puVar9[iVar10 + 9] = 0;\n          uVar7 = FUN_0003e010();\n          puVar2[local_30 + 5] = uVar7;\n          uVar7 = FUN_0003e010();\n          puVar2[local_28 + 5] = uVar7;\n          puVar5 = extraout_ECX;\n          goto joined_r0x0003e772;\n        }\n        puVar4 = (undefined4 *)*puVar11;\n        puVar9 = (undefined4 *)puVar11[1];\n        iVar10 = local_30 + -1;\n        iVar12 = param_2 + 1 + puVar11[4];\n      }" (else "else") (compound_statement "{\n        if (puVar9[10] != 0) {\nLAB_0003e836:\n          uVar7 = puVar9[5];\n          puVar5[10] = puVar2[local_30 + 9];\n          puVar4 = (undefined4 *)puVar9[1];\n          puVar5[7] = uVar7;\n          puVar5[3] = puVar4;\n          if (puVar4 != (undefined4 *)0x0) {\n            *puVar4 = puVar5;\n          }\n          puVar2[local_30 + 9] = puVar9[9];\n          puVar9[1] = puVar9[2];\n          puVar9[5] = puVar9[6];\n          if (puVar9[10] == 0) {\n            iVar12 = 1;\n            iVar10 = 0;\n          }\n          else {\n            puVar9[9] = puVar9[10];\n            puVar9[2] = puVar9[3];\n            puVar9[6] = puVar9[7];\n            if (puVar9[0xb] == 0) {\n              iVar12 = 2;\n              iVar10 = 1;\n            }\n            else {\n              puVar9[10] = puVar9[0xb];\n              iVar12 = 3;\n              puVar9[3] = puVar9[4];\n              puVar9[7] = puVar9[8];\n              iVar10 = 2;\n            }\n          }\n          puVar9[iVar12 + 1] = 0;\n          puVar9[iVar12 + 5] = 0;\n          puVar9[iVar10 + 9] = 0;\n          uVar7 = FUN_0003e010();\n          puVar2[local_30 + 5] = uVar7;\n          uVar7 = FUN_0003e010();\n          puVar2[local_28 + 5] = uVar7;\n          puVar5 = extraout_ECX;\n          goto joined_r0x0003e772;\n        }\n        puVar4 = (undefined4 *)*puVar11;\n        puVar9 = (undefined4 *)puVar11[1];\n        iVar10 = local_30 + -1;\n        iVar12 = param_2 + 1 + puVar11[4];\n      }" ({ "{") (if_statement "if (puVar9[10] != 0) {\nLAB_0003e836:\n          uVar7 = puVar9[5];\n          puVar5[10] = puVar2[local_30 + 9];\n          puVar4 = (undefined4 *)puVar9[1];\n          puVar5[7] = uVar7;\n          puVar5[3] = puVar4;\n          if (puVar4 != (undefined4 *)0x0) {\n            *puVar4 = puVar5;\n          }\n          puVar2[local_30 + 9] = puVar9[9];\n          puVar9[1] = puVar9[2];\n          puVar9[5] = puVar9[6];\n          if (puVar9[10] == 0) {\n            iVar12 = 1;\n            iVar10 = 0;\n          }\n          else {\n            puVar9[9] = puVar9[10];\n            puVar9[2] = puVar9[3];\n            puVar9[6] = puVar9[7];\n            if (puVar9[0xb] == 0) {\n              iVar12 = 2;\n              iVar10 = 1;\n            }\n            else {\n              puVar9[10] = puVar9[0xb];\n              iVar12 = 3;\n              puVar9[3] = puVar9[4];\n              puVar9[7] = puVar9[8];\n              iVar10 = 2;\n            }\n          }\n          puVar9[iVar12 + 1] = 0;\n          puVar9[iVar12 + 5] = 0;\n          puVar9[iVar10 + 9] = 0;\n          uVar7 = FUN_0003e010();\n          puVar2[local_30 + 5] = uVar7;\n          uVar7 = FUN_0003e010();\n          puVar2[local_28 + 5] = uVar7;\n          puVar5 = extraout_ECX;\n          goto joined_r0x0003e772;\n        }" (if "if") (parenthesized_expression "(puVar9[10] != 0)" (( "(") (binary_expression "puVar9[10] != 0" (subscript_expression "puVar9[10]" (identifier "puVar9") ([ "[") (number_literal "10") (] "]")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\nLAB_0003e836:\n          uVar7 = puVar9[5];\n          puVar5[10] = puVar2[local_30 + 9];\n          puVar4 = (undefined4 *)puVar9[1];\n          puVar5[7] = uVar7;\n          puVar5[3] = puVar4;\n          if (puVar4 != (undefined4 *)0x0) {\n            *puVar4 = puVar5;\n          }\n          puVar2[local_30 + 9] = puVar9[9];\n          puVar9[1] = puVar9[2];\n          puVar9[5] = puVar9[6];\n          if (puVar9[10] == 0) {\n            iVar12 = 1;\n            iVar10 = 0;\n          }\n          else {\n            puVar9[9] = puVar9[10];\n            puVar9[2] = puVar9[3];\n            puVar9[6] = puVar9[7];\n            if (puVar9[0xb] == 0) {\n              iVar12 = 2;\n              iVar10 = 1;\n            }\n            else {\n              puVar9[10] = puVar9[0xb];\n              iVar12 = 3;\n              puVar9[3] = puVar9[4];\n              puVar9[7] = puVar9[8];\n              iVar10 = 2;\n            }\n          }\n          puVar9[iVar12 + 1] = 0;\n          puVar9[iVar12 + 5] = 0;\n          puVar9[iVar10 + 9] = 0;\n          uVar7 = FUN_0003e010();\n          puVar2[local_30 + 5] = uVar7;\n          uVar7 = FUN_0003e010();\n          puVar2[local_28 + 5] = uVar7;\n          puVar5 = extraout_ECX;\n          goto joined_r0x0003e772;\n        }" ({ "{") (labeled_statement "LAB_0003e836:\n          uVar7 = puVar9[5];" (statement_identifier "LAB_0003e836") (: ":") (expression_statement "uVar7 = puVar9[5];" (assignment_expression "uVar7 = puVar9[5]" (identifier "uVar7") (= "=") (subscript_expression "puVar9[5]" (identifier "puVar9") ([ "[") (number_literal "5") (] "]"))) (; ";"))) (expression_statement "puVar5[10] = puVar2[local_30 + 9];" (assignment_expression "puVar5[10] = puVar2[local_30 + 9]" (subscript_expression "puVar5[10]" (identifier "puVar5") ([ "[") (number_literal "10") (] "]")) (= "=") (subscript_expression "puVar2[local_30 + 9]" (identifier "puVar2") ([ "[") (binary_expression "local_30 + 9" (identifier "local_30") (+ "+") (number_literal "9")) (] "]"))) (; ";")) (expression_statement "puVar4 = (undefined4 *)puVar9[1];" (assignment_expression "puVar4 = (undefined4 *)puVar9[1]" (identifier "puVar4") (= "=") (cast_expression "(undefined4 *)puVar9[1]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar9[1]" (identifier "puVar9") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "puVar5[7] = uVar7;" (assignment_expression "puVar5[7] = uVar7" (subscript_expression "puVar5[7]" (identifier "puVar5") ([ "[") (number_literal "7") (] "]")) (= "=") (identifier "uVar7")) (; ";")) (expression_statement "puVar5[3] = puVar4;" (assignment_expression "puVar5[3] = puVar4" (subscript_expression "puVar5[3]" (identifier "puVar5") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "puVar4")) (; ";")) (if_statement "if (puVar4 != (undefined4 *)0x0) {\n            *puVar4 = puVar5;\n          }" (if "if") (parenthesized_expression "(puVar4 != (undefined4 *)0x0)" (( "(") (binary_expression "puVar4 != (undefined4 *)0x0" (identifier "puVar4") (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n            *puVar4 = puVar5;\n          }" ({ "{") (expression_statement "*puVar4 = puVar5;" (assignment_expression "*puVar4 = puVar5" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (= "=") (identifier "puVar5")) (; ";")) (} "}"))) (expression_statement "puVar2[local_30 + 9] = puVar9[9];" (assignment_expression "puVar2[local_30 + 9] = puVar9[9]" (subscript_expression "puVar2[local_30 + 9]" (identifier "puVar2") ([ "[") (binary_expression "local_30 + 9" (identifier "local_30") (+ "+") (number_literal "9")) (] "]")) (= "=") (subscript_expression "puVar9[9]" (identifier "puVar9") ([ "[") (number_literal "9") (] "]"))) (; ";")) (expression_statement "puVar9[1] = puVar9[2];" (assignment_expression "puVar9[1] = puVar9[2]" (subscript_expression "puVar9[1]" (identifier "puVar9") ([ "[") (number_literal "1") (] "]")) (= "=") (subscript_expression "puVar9[2]" (identifier "puVar9") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "puVar9[5] = puVar9[6];" (assignment_expression "puVar9[5] = puVar9[6]" (subscript_expression "puVar9[5]" (identifier "puVar9") ([ "[") (number_literal "5") (] "]")) (= "=") (subscript_expression "puVar9[6]" (identifier "puVar9") ([ "[") (number_literal "6") (] "]"))) (; ";")) (if_statement "if (puVar9[10] == 0) {\n            iVar12 = 1;\n            iVar10 = 0;\n          }\n          else {\n            puVar9[9] = puVar9[10];\n            puVar9[2] = puVar9[3];\n            puVar9[6] = puVar9[7];\n            if (puVar9[0xb] == 0) {\n              iVar12 = 2;\n              iVar10 = 1;\n            }\n            else {\n              puVar9[10] = puVar9[0xb];\n              iVar12 = 3;\n              puVar9[3] = puVar9[4];\n              puVar9[7] = puVar9[8];\n              iVar10 = 2;\n            }\n          }" (if "if") (parenthesized_expression "(puVar9[10] == 0)" (( "(") (binary_expression "puVar9[10] == 0" (subscript_expression "puVar9[10]" (identifier "puVar9") ([ "[") (number_literal "10") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            iVar12 = 1;\n            iVar10 = 0;\n          }" ({ "{") (expression_statement "iVar12 = 1;" (assignment_expression "iVar12 = 1" (identifier "iVar12") (= "=") (number_literal "1")) (; ";")) (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" (identifier "iVar10") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n            puVar9[9] = puVar9[10];\n            puVar9[2] = puVar9[3];\n            puVar9[6] = puVar9[7];\n            if (puVar9[0xb] == 0) {\n              iVar12 = 2;\n              iVar10 = 1;\n            }\n            else {\n              puVar9[10] = puVar9[0xb];\n              iVar12 = 3;\n              puVar9[3] = puVar9[4];\n              puVar9[7] = puVar9[8];\n              iVar10 = 2;\n            }\n          }" (else "else") (compound_statement "{\n            puVar9[9] = puVar9[10];\n            puVar9[2] = puVar9[3];\n            puVar9[6] = puVar9[7];\n            if (puVar9[0xb] == 0) {\n              iVar12 = 2;\n              iVar10 = 1;\n            }\n            else {\n              puVar9[10] = puVar9[0xb];\n              iVar12 = 3;\n              puVar9[3] = puVar9[4];\n              puVar9[7] = puVar9[8];\n              iVar10 = 2;\n            }\n          }" ({ "{") (expression_statement "puVar9[9] = puVar9[10];" (assignment_expression "puVar9[9] = puVar9[10]" (subscript_expression "puVar9[9]" (identifier "puVar9") ([ "[") (number_literal "9") (] "]")) (= "=") (subscript_expression "puVar9[10]" (identifier "puVar9") ([ "[") (number_literal "10") (] "]"))) (; ";")) (expression_statement "puVar9[2] = puVar9[3];" (assignment_expression "puVar9[2] = puVar9[3]" (subscript_expression "puVar9[2]" (identifier "puVar9") ([ "[") (number_literal "2") (] "]")) (= "=") (subscript_expression "puVar9[3]" (identifier "puVar9") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "puVar9[6] = puVar9[7];" (assignment_expression "puVar9[6] = puVar9[7]" (subscript_expression "puVar9[6]" (identifier "puVar9") ([ "[") (number_literal "6") (] "]")) (= "=") (subscript_expression "puVar9[7]" (identifier "puVar9") ([ "[") (number_literal "7") (] "]"))) (; ";")) (if_statement "if (puVar9[0xb] == 0) {\n              iVar12 = 2;\n              iVar10 = 1;\n            }\n            else {\n              puVar9[10] = puVar9[0xb];\n              iVar12 = 3;\n              puVar9[3] = puVar9[4];\n              puVar9[7] = puVar9[8];\n              iVar10 = 2;\n            }" (if "if") (parenthesized_expression "(puVar9[0xb] == 0)" (( "(") (binary_expression "puVar9[0xb] == 0" (subscript_expression "puVar9[0xb]" (identifier "puVar9") ([ "[") (number_literal "0xb") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              iVar12 = 2;\n              iVar10 = 1;\n            }" ({ "{") (expression_statement "iVar12 = 2;" (assignment_expression "iVar12 = 2" (identifier "iVar12") (= "=") (number_literal "2")) (; ";")) (expression_statement "iVar10 = 1;" (assignment_expression "iVar10 = 1" (identifier "iVar10") (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n              puVar9[10] = puVar9[0xb];\n              iVar12 = 3;\n              puVar9[3] = puVar9[4];\n              puVar9[7] = puVar9[8];\n              iVar10 = 2;\n            }" (else "else") (compound_statement "{\n              puVar9[10] = puVar9[0xb];\n              iVar12 = 3;\n              puVar9[3] = puVar9[4];\n              puVar9[7] = puVar9[8];\n              iVar10 = 2;\n            }" ({ "{") (expression_statement "puVar9[10] = puVar9[0xb];" (assignment_expression "puVar9[10] = puVar9[0xb]" (subscript_expression "puVar9[10]" (identifier "puVar9") ([ "[") (number_literal "10") (] "]")) (= "=") (subscript_expression "puVar9[0xb]" (identifier "puVar9") ([ "[") (number_literal "0xb") (] "]"))) (; ";")) (expression_statement "iVar12 = 3;" (assignment_expression "iVar12 = 3" (identifier "iVar12") (= "=") (number_literal "3")) (; ";")) (expression_statement "puVar9[3] = puVar9[4];" (assignment_expression "puVar9[3] = puVar9[4]" (subscript_expression "puVar9[3]" (identifier "puVar9") ([ "[") (number_literal "3") (] "]")) (= "=") (subscript_expression "puVar9[4]" (identifier "puVar9") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "puVar9[7] = puVar9[8];" (assignment_expression "puVar9[7] = puVar9[8]" (subscript_expression "puVar9[7]" (identifier "puVar9") ([ "[") (number_literal "7") (] "]")) (= "=") (subscript_expression "puVar9[8]" (identifier "puVar9") ([ "[") (number_literal "8") (] "]"))) (; ";")) (expression_statement "iVar10 = 2;" (assignment_expression "iVar10 = 2" (identifier "iVar10") (= "=") (number_literal "2")) (; ";")) (} "}")))) (} "}")))) (expression_statement "puVar9[iVar12 + 1] = 0;" (assignment_expression "puVar9[iVar12 + 1] = 0" (subscript_expression "puVar9[iVar12 + 1]" (identifier "puVar9") ([ "[") (binary_expression "iVar12 + 1" (identifier "iVar12") (+ "+") (number_literal "1")) (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar9[iVar12 + 5] = 0;" (assignment_expression "puVar9[iVar12 + 5] = 0" (subscript_expression "puVar9[iVar12 + 5]" (identifier "puVar9") ([ "[") (binary_expression "iVar12 + 5" (identifier "iVar12") (+ "+") (number_literal "5")) (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar9[iVar10 + 9] = 0;" (assignment_expression "puVar9[iVar10 + 9] = 0" (subscript_expression "puVar9[iVar10 + 9]" (identifier "puVar9") ([ "[") (binary_expression "iVar10 + 9" (identifier "iVar10") (+ "+") (number_literal "9")) (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar7 = FUN_0003e010();" (assignment_expression "uVar7 = FUN_0003e010()" (identifier "uVar7") (= "=") (call_expression "FUN_0003e010()" (identifier "FUN_0003e010") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "puVar2[local_30 + 5] = uVar7;" (assignment_expression "puVar2[local_30 + 5] = uVar7" (subscript_expression "puVar2[local_30 + 5]" (identifier "puVar2") ([ "[") (binary_expression "local_30 + 5" (identifier "local_30") (+ "+") (number_literal "5")) (] "]")) (= "=") (identifier "uVar7")) (; ";")) (expression_statement "uVar7 = FUN_0003e010();" (assignment_expression "uVar7 = FUN_0003e010()" (identifier "uVar7") (= "=") (call_expression "FUN_0003e010()" (identifier "FUN_0003e010") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "puVar2[local_28 + 5] = uVar7;" (assignment_expression "puVar2[local_28 + 5] = uVar7" (subscript_expression "puVar2[local_28 + 5]" (identifier "puVar2") ([ "[") (binary_expression "local_28 + 5" (identifier "local_28") (+ "+") (number_literal "5")) (] "]")) (= "=") (identifier "uVar7")) (; ";")) (expression_statement "puVar5 = extraout_ECX;" (assignment_expression "puVar5 = extraout_ECX" (identifier "puVar5") (= "=") (identifier "extraout_ECX")) (; ";")) (goto_statement "goto joined_r0x0003e772;" (goto "goto") (statement_identifier "joined_r0x0003e772") (; ";")) (} "}"))) (expression_statement "puVar4 = (undefined4 *)*puVar11;" (assignment_expression "puVar4 = (undefined4 *)*puVar11" (identifier "puVar4") (= "=") (cast_expression "(undefined4 *)*puVar11" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar11" (* "*") (identifier "puVar11")))) (; ";")) (expression_statement "puVar9 = (undefined4 *)puVar11[1];" (assignment_expression "puVar9 = (undefined4 *)puVar11[1]" (identifier "puVar9") (= "=") (cast_expression "(undefined4 *)puVar11[1]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar11[1]" (identifier "puVar11") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "iVar10 = local_30 + -1;" (assignment_expression "iVar10 = local_30 + -1" (identifier "iVar10") (= "=") (binary_expression "local_30 + -1" (identifier "local_30") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "iVar12 = param_2 + 1 + puVar11[4];" (assignment_expression "iVar12 = param_2 + 1 + puVar11[4]" (identifier "iVar12") (= "=") (binary_expression "param_2 + 1 + puVar11[4]" (binary_expression "param_2 + 1" (identifier "param_2") (+ "+") (number_literal "1")) (+ "+") (subscript_expression "puVar11[4]" (identifier "puVar11") ([ "[") (number_literal "4") (] "]")))) (; ";")) (} "}")))) (labeled_statement "LAB_0003ed0c:\n      puVar9[4] = puVar9[2];" (statement_identifier "LAB_0003ed0c") (: ":") (expression_statement "puVar9[4] = puVar9[2];" (assignment_expression "puVar9[4] = puVar9[2]" (subscript_expression "puVar9[4]" (identifier "puVar9") ([ "[") (number_literal "4") (] "]")) (= "=") (subscript_expression "puVar9[2]" (identifier "puVar9") ([ "[") (number_literal "2") (] "]"))) (; ";"))) (expression_statement "puVar9[8] = puVar9[6];" (assignment_expression "puVar9[8] = puVar9[6]" (subscript_expression "puVar9[8]" (identifier "puVar9") ([ "[") (number_literal "8") (] "]")) (= "=") (subscript_expression "puVar9[6]" (identifier "puVar9") ([ "[") (number_literal "6") (] "]"))) (; ";")) (expression_statement "puVar9[0xb] = puVar9[9];" (assignment_expression "puVar9[0xb] = puVar9[9]" (subscript_expression "puVar9[0xb]" (identifier "puVar9") ([ "[") (number_literal "0xb") (] "]")) (= "=") (subscript_expression "puVar9[9]" (identifier "puVar9") ([ "[") (number_literal "9") (] "]"))) (; ";")) (expression_statement "puVar9[3] = puVar9[1];" (assignment_expression "puVar9[3] = puVar9[1]" (subscript_expression "puVar9[3]" (identifier "puVar9") ([ "[") (number_literal "3") (] "]")) (= "=") (subscript_expression "puVar9[1]" (identifier "puVar9") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar9[7] = puVar9[5];" (assignment_expression "puVar9[7] = puVar9[5]" (subscript_expression "puVar9[7]" (identifier "puVar9") ([ "[") (number_literal "7") (] "]")) (= "=") (subscript_expression "puVar9[5]" (identifier "puVar9") ([ "[") (number_literal "5") (] "]"))) (; ";")) (expression_statement "uVar7 = puVar4[6];" (assignment_expression "uVar7 = puVar4[6]" (identifier "uVar7") (= "=") (subscript_expression "puVar4[6]" (identifier "puVar4") ([ "[") (number_literal "6") (] "]"))) (; ";")) (expression_statement "puVar9[10] = puVar2[iVar10 + 9];" (assignment_expression "puVar9[10] = puVar2[iVar10 + 9]" (subscript_expression "puVar9[10]" (identifier "puVar9") ([ "[") (number_literal "10") (] "]")) (= "=") (subscript_expression "puVar2[iVar10 + 9]" (identifier "puVar2") ([ "[") (binary_expression "iVar10 + 9" (identifier "iVar10") (+ "+") (number_literal "9")) (] "]"))) (; ";")) (expression_statement "puVar5 = (undefined4 *)puVar4[2];" (assignment_expression "puVar5 = (undefined4 *)puVar4[2]" (identifier "puVar5") (= "=") (cast_expression "(undefined4 *)puVar4[2]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar4[2]" (identifier "puVar4") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "puVar9[6] = uVar7;" (assignment_expression "puVar9[6] = uVar7" (subscript_expression "puVar9[6]" (identifier "puVar9") ([ "[") (number_literal "6") (] "]")) (= "=") (identifier "uVar7")) (; ";")) (expression_statement "puVar9[2] = puVar5;" (assignment_expression "puVar9[2] = puVar5" (subscript_expression "puVar9[2]" (identifier "puVar9") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "puVar5")) (; ";")) (if_statement "if (puVar5 != (undefined4 *)0x0) {\n        *puVar5 = puVar9;\n      }" (if "if") (parenthesized_expression "(puVar5 != (undefined4 *)0x0)" (( "(") (binary_expression "puVar5 != (undefined4 *)0x0" (identifier "puVar5") (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        *puVar5 = puVar9;\n      }" ({ "{") (expression_statement "*puVar5 = puVar9;" (assignment_expression "*puVar5 = puVar9" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (identifier "puVar9")) (; ";")) (} "}"))) (expression_statement "uVar7 = puVar4[5];" (assignment_expression "uVar7 = puVar4[5]" (identifier "uVar7") (= "=") (subscript_expression "puVar4[5]" (identifier "puVar4") ([ "[") (number_literal "5") (] "]"))) (; ";")) (expression_statement "puVar9[9] = puVar4[9];" (assignment_expression "puVar9[9] = puVar4[9]" (subscript_expression "puVar9[9]" (identifier "puVar9") ([ "[") (number_literal "9") (] "]")) (= "=") (subscript_expression "puVar4[9]" (identifier "puVar4") ([ "[") (number_literal "9") (] "]"))) (; ";")) (expression_statement "puVar5 = (undefined4 *)puVar4[1];" (assignment_expression "puVar5 = (undefined4 *)puVar4[1]" (identifier "puVar5") (= "=") (cast_expression "(undefined4 *)puVar4[1]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar4[1]" (identifier "puVar4") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "puVar9[5] = uVar7;" (assignment_expression "puVar9[5] = uVar7" (subscript_expression "puVar9[5]" (identifier "puVar9") ([ "[") (number_literal "5") (] "]")) (= "=") (identifier "uVar7")) (; ";")) (expression_statement "puVar9[1] = puVar5;" (assignment_expression "puVar9[1] = puVar5" (subscript_expression "puVar9[1]" (identifier "puVar9") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "puVar5")) (; ";")) (if_statement "if (puVar5 != (undefined4 *)0x0) {\n        *puVar5 = puVar9;\n      }" (if "if") (parenthesized_expression "(puVar5 != (undefined4 *)0x0)" (( "(") (binary_expression "puVar5 != (undefined4 *)0x0" (identifier "puVar5") (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        *puVar5 = puVar9;\n      }" ({ "{") (expression_statement "*puVar5 = puVar9;" (assignment_expression "*puVar5 = puVar9" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (identifier "puVar9")) (; ";")) (} "}"))) (expression_statement "uVar7 = FUN_0003e010();" (assignment_expression "uVar7 = FUN_0003e010()" (identifier "uVar7") (= "=") (call_expression "FUN_0003e010()" (identifier "FUN_0003e010") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "puVar2[local_30 + 5] = uVar7;" (assignment_expression "puVar2[local_30 + 5] = uVar7" (subscript_expression "puVar2[local_30 + 5]" (identifier "puVar2") ([ "[") (binary_expression "local_30 + 5" (identifier "local_30") (+ "+") (number_literal "5")) (] "]")) (= "=") (identifier "uVar7")) (; ";")) (expression_statement "FUN_0001a110(extraout_ECX_00);" (call_expression "FUN_0001a110(extraout_ECX_00)" (identifier "FUN_0001a110") (argument_list "(extraout_ECX_00)" (( "(") (identifier "extraout_ECX_00") () ")"))) (; ";")) (expression_statement "iVar6 = puVar2[iVar10 + 2];" (assignment_expression "iVar6 = puVar2[iVar10 + 2]" (identifier "iVar6") (= "=") (subscript_expression "puVar2[iVar10 + 2]" (identifier "puVar2") ([ "[") (binary_expression "iVar10 + 2" (identifier "iVar10") (+ "+") (number_literal "2")) (] "]"))) (; ";")) (while_statement "while (iVar6 != 0) {\n        iVar8 = iVar10 + 1;\n        puVar2[iVar8] = iVar6;\n        puVar2[iVar10 + 5] = puVar2[iVar10 + 6];\n        if (iVar8 == 3) {\n          puVar2[0xb] = 0;\n          puVar2[4] = 0;\n          puVar2[8] = 0;\n          goto LAB_0003edcd;\n        }\n        puVar2[iVar10 + 9] = puVar2[iVar10 + 10];\n        iVar6 = puVar2[iVar10 + 3];\n        iVar10 = iVar8;\n      }" (while "while") (parenthesized_expression "(iVar6 != 0)" (( "(") (binary_expression "iVar6 != 0" (identifier "iVar6") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        iVar8 = iVar10 + 1;\n        puVar2[iVar8] = iVar6;\n        puVar2[iVar10 + 5] = puVar2[iVar10 + 6];\n        if (iVar8 == 3) {\n          puVar2[0xb] = 0;\n          puVar2[4] = 0;\n          puVar2[8] = 0;\n          goto LAB_0003edcd;\n        }\n        puVar2[iVar10 + 9] = puVar2[iVar10 + 10];\n        iVar6 = puVar2[iVar10 + 3];\n        iVar10 = iVar8;\n      }" ({ "{") (expression_statement "iVar8 = iVar10 + 1;" (assignment_expression "iVar8 = iVar10 + 1" (identifier "iVar8") (= "=") (binary_expression "iVar10 + 1" (identifier "iVar10") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar2[iVar8] = iVar6;" (assignment_expression "puVar2[iVar8] = iVar6" (subscript_expression "puVar2[iVar8]" (identifier "puVar2") ([ "[") (identifier "iVar8") (] "]")) (= "=") (identifier "iVar6")) (; ";")) (expression_statement "puVar2[iVar10 + 5] = puVar2[iVar10 + 6];" (assignment_expression "puVar2[iVar10 + 5] = puVar2[iVar10 + 6]" (subscript_expression "puVar2[iVar10 + 5]" (identifier "puVar2") ([ "[") (binary_expression "iVar10 + 5" (identifier "iVar10") (+ "+") (number_literal "5")) (] "]")) (= "=") (subscript_expression "puVar2[iVar10 + 6]" (identifier "puVar2") ([ "[") (binary_expression "iVar10 + 6" (identifier "iVar10") (+ "+") (number_literal "6")) (] "]"))) (; ";")) (if_statement "if (iVar8 == 3) {\n          puVar2[0xb] = 0;\n          puVar2[4] = 0;\n          puVar2[8] = 0;\n          goto LAB_0003edcd;\n        }" (if "if") (parenthesized_expression "(iVar8 == 3)" (( "(") (binary_expression "iVar8 == 3" (identifier "iVar8") (== "==") (number_literal "3")) () ")")) (compound_statement "{\n          puVar2[0xb] = 0;\n          puVar2[4] = 0;\n          puVar2[8] = 0;\n          goto LAB_0003edcd;\n        }" ({ "{") (expression_statement "puVar2[0xb] = 0;" (assignment_expression "puVar2[0xb] = 0" (subscript_expression "puVar2[0xb]" (identifier "puVar2") ([ "[") (number_literal "0xb") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[4] = 0;" (assignment_expression "puVar2[4] = 0" (subscript_expression "puVar2[4]" (identifier "puVar2") ([ "[") (number_literal "4") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[8] = 0;" (assignment_expression "puVar2[8] = 0" (subscript_expression "puVar2[8]" (identifier "puVar2") ([ "[") (number_literal "8") (] "]")) (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_0003edcd;" (goto "goto") (statement_identifier "LAB_0003edcd") (; ";")) (} "}"))) (expression_statement "puVar2[iVar10 + 9] = puVar2[iVar10 + 10];" (assignment_expression "puVar2[iVar10 + 9] = puVar2[iVar10 + 10]" (subscript_expression "puVar2[iVar10 + 9]" (identifier "puVar2") ([ "[") (binary_expression "iVar10 + 9" (identifier "iVar10") (+ "+") (number_literal "9")) (] "]")) (= "=") (subscript_expression "puVar2[iVar10 + 10]" (identifier "puVar2") ([ "[") (binary_expression "iVar10 + 10" (identifier "iVar10") (+ "+") (number_literal "10")) (] "]"))) (; ";")) (expression_statement "iVar6 = puVar2[iVar10 + 3];" (assignment_expression "iVar6 = puVar2[iVar10 + 3]" (identifier "iVar6") (= "=") (subscript_expression "puVar2[iVar10 + 3]" (identifier "puVar2") ([ "[") (binary_expression "iVar10 + 3" (identifier "iVar10") (+ "+") (number_literal "3")) (] "]"))) (; ";")) (expression_statement "iVar10 = iVar8;" (assignment_expression "iVar10 = iVar8" (identifier "iVar10") (= "=") (identifier "iVar8")) (; ";")) (} "}"))) (expression_statement "puVar2[iVar10 + 1] = 0;" (assignment_expression "puVar2[iVar10 + 1] = 0" (subscript_expression "puVar2[iVar10 + 1]" (identifier "puVar2") ([ "[") (binary_expression "iVar10 + 1" (identifier "iVar10") (+ "+") (number_literal "1")) (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[iVar10 + 5] = 0;" (assignment_expression "puVar2[iVar10 + 5] = 0" (subscript_expression "puVar2[iVar10 + 5]" (identifier "puVar2") ([ "[") (binary_expression "iVar10 + 5" (identifier "iVar10") (+ "+") (number_literal "5")) (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[iVar10 + 9] = 0;" (assignment_expression "puVar2[iVar10 + 9] = 0" (subscript_expression "puVar2[iVar10 + 9]" (identifier "puVar2") ([ "[") (binary_expression "iVar10 + 9" (identifier "iVar10") (+ "+") (number_literal "9")) (] "]")) (= "=") (number_literal "0")) (; ";")) (labeled_statement "LAB_0003edcd:\n      param_2 = iVar12;" (statement_identifier "LAB_0003edcd") (: ":") (expression_statement "param_2 = iVar12;" (assignment_expression "param_2 = iVar12" (identifier "param_2") (= "=") (identifier "iVar12")) (; ";"))) (expression_statement "puVar5 = puVar9;" (assignment_expression "puVar5 = puVar9" (identifier "puVar5") (= "=") (identifier "puVar9")) (; ";")) (if_statement "if (puVar2[9] == 0) {\n        *puVar3 = puVar9;\n        *puVar9 = 0;\n        FUN_0001a110(puVar2);\n      }" (if "if") (parenthesized_expression "(puVar2[9] == 0)" (( "(") (binary_expression "puVar2[9] == 0" (subscript_expression "puVar2[9]" (identifier "puVar2") ([ "[") (number_literal "9") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        *puVar3 = puVar9;\n        *puVar9 = 0;\n        FUN_0001a110(puVar2);\n      }" ({ "{") (expression_statement "*puVar3 = puVar9;" (assignment_expression "*puVar3 = puVar9" (pointer_expression "*puVar3" (* "*") (identifier "puVar3")) (= "=") (identifier "puVar9")) (; ";")) (expression_statement "*puVar9 = 0;" (assignment_expression "*puVar9 = 0" (pointer_expression "*puVar9" (* "*") (identifier "puVar9")) (= "=") (number_literal "0")) (; ";")) (expression_statement "FUN_0001a110(puVar2);" (call_expression "FUN_0001a110(puVar2)" (identifier "FUN_0001a110") (argument_list "(puVar2)" (( "(") (identifier "puVar2") () ")"))) (; ";")) (} "}"))) (goto_statement "goto joined_r0x0003e772;" (goto "goto") (statement_identifier "joined_r0x0003e772") (; ";")) (} "}"))) (labeled_statement "LAB_0003eae0:\n    uVar1 = (uint)(puVar4[0xb] == 0);" (statement_identifier "LAB_0003eae0") (: ":") (expression_statement "uVar1 = (uint)(puVar4[0xb] == 0);" (assignment_expression "uVar1 = (uint)(puVar4[0xb] == 0)" (identifier "uVar1") (= "=") (call_expression "(uint)(puVar4[0xb] == 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(puVar4[0xb] == 0)" (( "(") (binary_expression "puVar4[0xb] == 0" (subscript_expression "puVar4[0xb]" (identifier "puVar4") ([ "[") (number_literal "0xb") (] "]")) (== "==") (number_literal "0")) () ")")))) (; ";"))) (expression_statement "puVar5[3] = puVar5[2];" (assignment_expression "puVar5[3] = puVar5[2]" (subscript_expression "puVar5[3]" (identifier "puVar5") ([ "[") (number_literal "3") (] "]")) (= "=") (subscript_expression "puVar5[2]" (identifier "puVar5") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "puVar5[7] = puVar5[6];" (assignment_expression "puVar5[7] = puVar5[6]" (subscript_expression "puVar5[7]" (identifier "puVar5") ([ "[") (number_literal "7") (] "]")) (= "=") (subscript_expression "puVar5[6]" (identifier "puVar5") ([ "[") (number_literal "6") (] "]"))) (; ";")) (expression_statement "puVar5[10] = puVar5[9];" (assignment_expression "puVar5[10] = puVar5[9]" (subscript_expression "puVar5[10]" (identifier "puVar5") ([ "[") (number_literal "10") (] "]")) (= "=") (subscript_expression "puVar5[9]" (identifier "puVar5") ([ "[") (number_literal "9") (] "]"))) (; ";")) (expression_statement "puVar5[2] = puVar5[1];" (assignment_expression "puVar5[2] = puVar5[1]" (subscript_expression "puVar5[2]" (identifier "puVar5") ([ "[") (number_literal "2") (] "]")) (= "=") (subscript_expression "puVar5[1]" (identifier "puVar5") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar5[6] = puVar5[5];" (assignment_expression "puVar5[6] = puVar5[5]" (subscript_expression "puVar5[6]" (identifier "puVar5") ([ "[") (number_literal "6") (] "]")) (= "=") (subscript_expression "puVar5[5]" (identifier "puVar5") ([ "[") (number_literal "5") (] "]"))) (; ";")) (expression_statement "puVar5[9] = puVar2[iVar10 + 9];" (assignment_expression "puVar5[9] = puVar2[iVar10 + 9]" (subscript_expression "puVar5[9]" (identifier "puVar5") ([ "[") (number_literal "9") (] "]")) (= "=") (subscript_expression "puVar2[iVar10 + 9]" (identifier "puVar2") ([ "[") (binary_expression "iVar10 + 9" (identifier "iVar10") (+ "+") (number_literal "9")) (] "]"))) (; ";")) (expression_statement "puVar11 = (undefined4 *)puVar4[4 - uVar1];" (assignment_expression "puVar11 = (undefined4 *)puVar4[4 - uVar1]" (identifier "puVar11") (= "=") (cast_expression "(undefined4 *)puVar4[4 - uVar1]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar4[4 - uVar1]" (identifier "puVar4") ([ "[") (binary_expression "4 - uVar1" (number_literal "4") (- "-") (identifier "uVar1")) (] "]")))) (; ";")) (expression_statement "puVar5[1] = puVar11;" (assignment_expression "puVar5[1] = puVar11" (subscript_expression "puVar5[1]" (identifier "puVar5") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "puVar11")) (; ";")) (expression_statement "puVar5[5] = puVar4[8 - uVar1];" (assignment_expression "puVar5[5] = puVar4[8 - uVar1]" (subscript_expression "puVar5[5]" (identifier "puVar5") ([ "[") (number_literal "5") (] "]")) (= "=") (subscript_expression "puVar4[8 - uVar1]" (identifier "puVar4") ([ "[") (binary_expression "8 - uVar1" (number_literal "8") (- "-") (identifier "uVar1")) (] "]"))) (; ";")) (if_statement "if (puVar11 != (undefined4 *)0x0) {\n      *puVar11 = puVar5;\n    }" (if "if") (parenthesized_expression "(puVar11 != (undefined4 *)0x0)" (( "(") (binary_expression "puVar11 != (undefined4 *)0x0" (identifier "puVar11") (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      *puVar11 = puVar5;\n    }" ({ "{") (expression_statement "*puVar11 = puVar5;" (assignment_expression "*puVar11 = puVar5" (pointer_expression "*puVar11" (* "*") (identifier "puVar11")) (= "=") (identifier "puVar5")) (; ";")) (} "}"))) (expression_statement "puVar2[iVar10 + 9] = puVar4[-uVar1 + 0xb];" (assignment_expression "puVar2[iVar10 + 9] = puVar4[-uVar1 + 0xb]" (subscript_expression "puVar2[iVar10 + 9]" (identifier "puVar2") ([ "[") (binary_expression "iVar10 + 9" (identifier "iVar10") (+ "+") (number_literal "9")) (] "]")) (= "=") (subscript_expression "puVar4[-uVar1 + 0xb]" (identifier "puVar4") ([ "[") (binary_expression "-uVar1 + 0xb" (unary_expression "-uVar1" (- "-") (identifier "uVar1")) (+ "+") (number_literal "0xb")) (] "]"))) (; ";")) (expression_statement "puVar4[4 - uVar1] = 0;" (assignment_expression "puVar4[4 - uVar1] = 0" (subscript_expression "puVar4[4 - uVar1]" (identifier "puVar4") ([ "[") (binary_expression "4 - uVar1" (number_literal "4") (- "-") (identifier "uVar1")) (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar4[8 - uVar1] = 0;" (assignment_expression "puVar4[8 - uVar1] = 0" (subscript_expression "puVar4[8 - uVar1]" (identifier "puVar4") ([ "[") (binary_expression "8 - uVar1" (number_literal "8") (- "-") (identifier "uVar1")) (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar4[-uVar1 + 0xb] = 0;" (assignment_expression "puVar4[-uVar1 + 0xb] = 0" (subscript_expression "puVar4[-uVar1 + 0xb]" (identifier "puVar4") ([ "[") (binary_expression "-uVar1 + 0xb" (unary_expression "-uVar1" (- "-") (identifier "uVar1")) (+ "+") (number_literal "0xb")) (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar7 = FUN_0003e010();" (assignment_expression "uVar7 = FUN_0003e010()" (identifier "uVar7") (= "=") (call_expression "FUN_0003e010()" (identifier "FUN_0003e010") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "puVar2[local_30 + 5] = uVar7;" (assignment_expression "puVar2[local_30 + 5] = uVar7" (subscript_expression "puVar2[local_30 + 5]" (identifier "puVar2") ([ "[") (binary_expression "local_30 + 5" (identifier "local_30") (+ "+") (number_literal "5")) (] "]")) (= "=") (identifier "uVar7")) (; ";")) (expression_statement "iVar12 = puVar2[iVar10 + 5];" (assignment_expression "iVar12 = puVar2[iVar10 + 5]" (identifier "iVar12") (= "=") (subscript_expression "puVar2[iVar10 + 5]" (identifier "puVar2") ([ "[") (binary_expression "iVar10 + 5" (identifier "iVar10") (+ "+") (number_literal "5")) (] "]"))) (; ";")) (expression_statement "iVar6 = FUN_0003e010();" (assignment_expression "iVar6 = FUN_0003e010()" (identifier "iVar6") (= "=") (call_expression "FUN_0003e010()" (identifier "FUN_0003e010") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "puVar2[iVar10 + 5] = iVar6;" (assignment_expression "puVar2[iVar10 + 5] = iVar6" (subscript_expression "puVar2[iVar10 + 5]" (identifier "puVar2") ([ "[") (binary_expression "iVar10 + 5" (identifier "iVar10") (+ "+") (number_literal "5")) (] "]")) (= "=") (identifier "iVar6")) (; ";")) (expression_statement "param_2 = (param_2 + iVar12) - iVar6;" (assignment_expression "param_2 = (param_2 + iVar12) - iVar6" (identifier "param_2") (= "=") (binary_expression "(param_2 + iVar12) - iVar6" (parenthesized_expression "(param_2 + iVar12)" (( "(") (binary_expression "param_2 + iVar12" (identifier "param_2") (+ "+") (identifier "iVar12")) () ")")) (- "-") (identifier "iVar6"))) (; ";")) (} "}"))) (goto_statement "goto joined_r0x0003e772;" (goto "goto") (statement_identifier "joined_r0x0003e772") (; ";")) (} "}")))

void * __regparm3 function_1(type_1 *t,int var_7)

{
  type_2 var_18;
  type_3 **ppnVar2;
  type_4 *var_12;
  type_4 *var_2;
  type_5 *puVar4;
  type_4 *var_8;
  int var_16;
  void *var_11;
  int var_17;
  type_3 *var_9;
  type_4 *extraout_ECX;
  type_3 *var_14;
  type_4 *n;
  void *ptr_00;
  type_3 *pnVar11;
  int var_5;
  type_3 *var_6;
  int var_4;
  void *var_3;
  int var_15;
  int local_28;
  
  puVar4 = (type_5 *)var_1();
  var_4 = -1;
  var_3 = (void *)0x0;
  var_9 = (type_4 *)*puVar4;
joined_r0x0003e772:
  while( true ) {
    var_2 = var_9;
    var_5 = var_7;
    if (var_2 == (type_4 *)0x0) {
      if (var_3 == (void *)0x0) {
        var_3 = *(void **)(var_4 * 4 + 0x24);
      }
      if (var_4 == -1) {
        return (void *)0x0;
      }
      goto LAB_0003e7aa;
    }
    if (var_2->counts[0] <= var_5) break;
    var_14 = var_2->kids[0];
    var_7 = var_5;
    var_9 = var_14;
    if (var_14->elems[1] == (void *)0x0) {
      var_6 = var_2->kids[1];
      if (var_6 != (type_3 *)0x0) {
        var_15 = 0;
        local_28 = 1;
        if (var_6->elems[1] == (void *)0x0) goto LAB_0003ed02;
        goto LAB_0003e836;
      }
LAB_0003ed02:
      var_15 = 1;
      var_16 = 0;
      goto LAB_0003ed0c;
    }
  }
  var_7 = var_5 - (var_2->counts[0] + 1);
  if (-1 < var_7) {
    if (var_7 < var_2->counts[1]) goto LAB_0003eab0;
    var_5 = var_7 - (var_2->counts[1] + 1);
    if (var_5 < 0) {
      var_4 = 1;
      if (var_3 == (void *)0x0) {
        var_3 = var_2->elems[1];
      }
LAB_0003e7aa:
      var_8 = var_2->parent;
      var_9 = var_2->kids[0];
      goto joined_r0x0003e7b1;
    }
    if (var_5 < var_2->counts[2]) {
      var_9 = var_2->kids[2];
      var_7 = var_5;
      if (var_9->elems[1] == (void *)0x0) {
        var_16 = 1;
        var_15 = 2;
        goto LAB_0003eacb;
      }
    }
    else {
      var_7 = var_5 - (var_2->counts[2] + 1);
      if (var_7 < 0) {
        var_4 = 2;
        if (var_3 == (void *)0x0) {
          var_3 = var_2->elems[2];
        }
        goto LAB_0003e7aa;
      }
      var_6 = var_2->kids[3];
      var_9 = var_6;
      if (var_6->elems[1] == (void *)0x0) {
        var_14 = var_2->kids[2];
        if (var_14->elems[1] == (void *)0x0) {
          var_16 = 2;
          var_15 = 3;
          goto LAB_0003ed0c;
        }
        var_15 = 3;
        var_16 = 2;
        goto LAB_0003eae0;
      }
    }
    goto joined_r0x0003e772;
  }
  var_4 = 0;
  if (var_3 != (void *)0x0) goto LAB_0003e7aa;
  var_3 = var_2->elems[0];
  var_8 = var_2->parent;
  var_9 = var_2->kids[0];
joined_r0x0003e7b1:
  if (var_8 == (type_4 *)0x0) {
    if (var_2->elems[1] == (void *)0x0) {
      if (var_9 == (type_3 *)0x0) {
        var_10(var_2);
        *puVar4 = 0;
        return var_3;
      }
    }
    else if (var_9 == (type_3 *)0x0) {
      var_8 = (type_4 *)0x0;
LAB_0003e9d5:
      if (var_4 == 2) {
LAB_0003ea09:
        var_4 = 2;
      }
      else {
        var_11 = var_2->elems[var_4 + 1];
        var_5 = var_4 + 1;
        if (var_11 != (void *)0x0) {
          do {
            var_2->counts[var_5 + 3] = (int)var_11;
            if (var_5 == 2) goto LAB_0003ea09;
            var_11 = var_2->elems[2];
            var_5 = 2;
          } while (var_11 != (void *)0x0);
          var_4 = 1;
        }
      }
      var_2->elems[var_4] = (void *)0x0;
      while (var_12 = var_8, var_12 != (type_4 *)0x0) {
        var_5 = 0;
        if ((var_12->kids[0] != var_2) && (var_5 = 1, var_12->kids[1] != var_2)) {
          var_5 = (var_12->kids[2] != var_2) + 2;
        }
        var_12->counts[var_5] = var_12->counts[var_5] + -1;
        var_2 = var_12;
        var_8 = var_12->parent;
      }
      return var_3;
    }
  }
  else if ((var_9 == (type_3 *)0x0) && (var_2->elems[1] != (void *)0x0)) goto LAB_0003e9d5;
  var_9 = var_2->kids[var_4];
  var_8 = var_9;
  if (var_9->elems[1] == (void *)0x0) {
    var_14 = var_2->kids[var_4 + 1];
    var_5 = var_4 + 1;
    var_6 = var_14->kids[0];
    pnVar11 = var_14;
    if (var_14->elems[1] == (void *)0x0) {
      var_11 = var_2->elems[var_4];
      var_9->kids[2] = var_6;
      var_9->elems[1] = var_11;
      var_9->counts[2] = var_14->counts[0];
      if (var_6 != (type_3 *)0x0) {
        var_6->parent = var_9;
      }
      var_16 = var_14->counts[1];
      var_9->elems[2] = var_14->elems[0];
      var_6 = var_14->kids[1];
      var_9->counts[3] = var_16;
      var_9->kids[3] = var_6;
      if (var_6 != (type_3 *)0x0) {
        var_6->parent = var_9;
      }
      var_10(var_14);
      var_16 = var_13(var_9);
      var_2->counts[var_4] = var_16;
      if (var_4 == 2) {
LAB_0003ec29:
        var_5 = 3;
        var_16 = 2;
      }
      else {
        var_11 = var_2->elems[var_4 + 1];
        var_16 = var_4;
        if (var_11 != (void *)0x0) {
          do {
            var_2->counts[var_5 + 3] = (int)var_11;
            var_2->kids[var_5] = var_2->kids[var_5 + 1];
            var_2->counts[var_5] = var_2->counts[var_5 + 1];
            if (var_5 == 2) goto LAB_0003ec29;
            var_11 = var_2->elems[2];
            var_5 = 2;
          } while (var_11 != (void *)0x0);
          var_16 = 1;
        }
      }
      var_2->elems[var_16] = (void *)0x0;
      var_2->kids[var_5] = (type_3 *)0x0;
      var_2->counts[var_5] = 0;
      if (var_2->elems[0] == (void *)0x0) {
        *puVar4 = var_9;
        var_9->parent = (type_4 *)0x0;
        var_10(var_2);
      }
      var_7 = var_9->counts[1] + var_9->counts[0] + 1;
    }
    else {
      while (var_9 = var_6, var_9 != (type_3 *)0x0) {
        pnVar11 = var_9;
        var_6 = var_9->kids[0];
      }
      var_2->elems[var_4] = pnVar11->elems[0];
      var_7 = 0;
      var_9 = var_14;
    }
  }
  else {
    while (var_14 = var_8->kids[0], var_14 != (type_3 *)0x0) {
      while ((var_6 = var_8->kids[3], var_8->kids[3] != (type_3 *)0x0 ||
             (var_6 = var_8->kids[2], var_8->kids[2] != (type_3 *)0x0))) {
        var_8 = var_6;
        var_14 = var_8->kids[0];
        if (var_14 == (type_3 *)0x0) goto LAB_0003e958;
      }
      ppnVar2 = var_8->kids;
      var_8 = ppnVar2[1];
      if (ppnVar2[1] == (type_3 *)0x0) {
        var_8 = var_14;
      }
    }
LAB_0003e958:
    var_11 = var_8->elems[2];
    if ((var_11 == (void *)0x0) && (var_11 = var_8->elems[1], var_11 == (void *)0x0)) {
      var_11 = var_8->elems[0];
    }
    var_2->elems[var_4] = var_11;
    var_7 = var_2->counts[var_4] + -1;
  }
  goto joined_r0x0003e772;
LAB_0003eab0:
  var_9 = var_2->kids[1];
  if (var_9->elems[1] == (void *)0x0) {
    var_15 = 1;
    var_16 = 0;
LAB_0003eacb:
    var_14 = var_2->kids[var_16];
    if (var_14->elems[1] == (void *)0x0) {
      local_28 = var_15 + 1;
      ppnVar2 = var_2->kids + var_15 + -1;
      var_6 = ppnVar2[2];
      if (var_6 == (type_3 *)0x0) {
        var_6 = ppnVar2[1];
        var_5 = var_7 + 1 + var_2->counts[var_16];
      }
      else {
        if (var_6->elems[1] != (void *)0x0) {
LAB_0003e836:
          var_5 = var_6->counts[0];
          var_9->elems[1] = var_2->elems[var_15];
          var_14 = var_6->kids[0];
          var_9->counts[2] = var_5;
          var_9->kids[2] = var_14;
          if (var_14 != (type_3 *)0x0) {
            var_14->parent = var_9;
          }
          var_2->elems[var_15] = var_6->elems[0];
          var_6->kids[0] = var_6->kids[1];
          var_6->counts[0] = var_6->counts[1];
          if (var_6->elems[1] == (void *)0x0) {
            var_5 = 1;
            var_16 = 0;
          }
          else {
            var_14 = var_6->kids[2];
            var_6->elems[0] = var_6->elems[1];
            var_11 = var_6->elems[2];
            var_6->kids[1] = var_14;
            var_6->counts[1] = var_6->counts[2];
            if (var_11 == (void *)0x0) {
              var_5 = 2;
              var_16 = 1;
            }
            else {
              var_14 = var_6->kids[3];
              var_6->elems[1] = var_11;
              var_5 = 3;
              var_6->kids[2] = var_14;
              var_6->counts[2] = var_6->counts[3];
              var_16 = 2;
            }
          }
          var_6->kids[var_5] = (type_3 *)0x0;
          var_6->counts[var_5] = 0;
          var_6->elems[var_16] = (void *)0x0;
          var_5 = var_13(var_9);
          var_2->counts[var_15] = var_5;
          var_5 = var_13(var_6);
          var_2->counts[local_28] = var_5;
          var_9 = extraout_ECX;
          goto joined_r0x0003e772;
        }
        var_14 = *ppnVar2;
        var_6 = ppnVar2[1];
        var_16 = var_15 + -1;
        var_5 = var_7 + 1 + (int)ppnVar2[4];
      }
LAB_0003ed0c:
      var_6->kids[3] = var_6->kids[1];
      var_6->counts[3] = var_6->counts[1];
      var_6->elems[2] = var_6->elems[0];
      var_6->kids[2] = var_6->kids[0];
      var_6->counts[2] = var_6->counts[0];
      var_17 = var_14->counts[1];
      var_6->elems[1] = var_2->elems[var_16];
      var_9 = var_14->kids[1];
      var_6->counts[1] = var_17;
      var_6->kids[1] = var_9;
      if (var_9 != (type_3 *)0x0) {
        var_9->parent = var_6;
      }
      var_17 = var_14->counts[0];
      var_6->elems[0] = var_14->elems[0];
      var_9 = var_14->kids[0];
      var_6->counts[0] = var_17;
      var_6->kids[0] = var_9;
      if (var_9 != (type_3 *)0x0) {
        var_9->parent = var_6;
      }
      var_17 = var_13(var_6);
      var_2->counts[var_15] = var_17;
      var_10(ptr_00);
      var_9 = var_2->kids[var_16 + 1];
      while (var_9 != (type_3 *)0x0) {
        var_17 = var_16 + 1;
        var_14 = (type_3 *)var_2->counts[var_17];
        var_2->kids[var_16] = var_9;
        var_2->kids[var_16 + 4] = var_14;
        if (var_17 == 3) {
          var_2->elems[2] = (void *)0x0;
          var_2->kids[3] = (type_3 *)0x0;
          var_2->counts[3] = 0;
          goto LAB_0003edcd;
        }
        var_2->counts[var_16 + 4] = (int)var_2->elems[var_17];
        var_9 = var_2->kids[var_16 + 2];
        var_16 = var_17;
      }
      var_2->kids[var_16] = (type_3 *)0x0;
      var_2->counts[var_16] = 0;
      var_2->elems[var_16] = (void *)0x0;
LAB_0003edcd:
      var_7 = var_5;
      var_9 = var_6;
      if (var_2->elems[0] == (void *)0x0) {
        *puVar4 = var_6;
        var_6->parent = (type_4 *)0x0;
        var_10(var_2);
      }
      goto joined_r0x0003e772;
    }
LAB_0003eae0:
    var_18 = (type_2)(var_14->elems[2] == (void *)0x0);
    var_5 = var_18 * -4;
    var_17 = 2 - var_18;
    var_9->kids[2] = var_9->kids[1];
    var_9->counts[2] = var_9->counts[1];
    var_9->elems[1] = var_9->elems[0];
    var_9->kids[1] = var_9->kids[0];
    var_9->counts[1] = var_9->counts[0];
    var_9->elems[0] = var_2->elems[var_16];
    var_6 = *(type_3 **)((int)var_14 + var_5 + 0x10);
    var_9->kids[0] = var_6;
    var_9->counts[0] = *(int *)((int)var_14 + var_5 + 0x20);
    if (var_6 != (type_3 *)0x0) {
      var_6->parent = var_9;
    }
    var_2->elems[var_16] = *(void **)((int)var_14 + var_17 * 4 + 0x24);
    *(type_5 *)((int)var_14 + var_5 + 0x10) = 0;
    *(type_5 *)((int)var_14 + var_5 + 0x20) = 0;
    *(type_5 *)((int)var_14 + var_17 * 4 + 0x24) = 0;
    var_5 = var_13(var_9);
    var_2->counts[var_15] = var_5;
    var_5 = var_2->counts[var_16];
    var_17 = var_13(n);
    var_2->counts[var_16] = var_17;
    var_7 = (var_7 + var_5) - var_17;
  }
  goto joined_r0x0003e772;
}


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

int __regparm3 MASKED(undefined4 param_1,int param_2)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  undefined4 *puVar5;
  int iVar6;
  undefined4 uVar7;
  int iVar8;
  undefined4 *extraout_ECX;
  undefined4 extraout_ECX_00;
  undefined4 *puVar9;
  int iVar10;
  undefined4 *puVar11;
  int iVar12;
  int local_38;
  int local_34;
  int local_30;
  int local_28;
  
  puVar3 = (undefined4 *)FUN_0002abcc();
  local_38 = -1;
  local_34 = 0;
  puVar5 = (undefined4 *)*puVar3;
joined_r0x0003e772:
  while( true ) {
    puVar2 = puVar5;
    iVar12 = param_2;
    if (puVar2 == (undefined4 *)0x0) {
      if (local_34 == 0) {
        local_34 = *(int *)(local_38 * 4 + 0x24);
      }
      if (local_38 == -1) {
        return 0;
      }
      goto LAB_0003e7aa;
    }
    if ((int)puVar2[5] <= iVar12) break;
    puVar4 = (undefined4 *)puVar2[1];
    param_2 = iVar12;
    puVar5 = puVar4;
    if (puVar4[10] == 0) {
      puVar9 = (undefined4 *)puVar2[2];
      if (puVar9 != (undefined4 *)0x0) {
        local_30 = 0;
        local_28 = 1;
        if (puVar9[10] == 0) goto LAB_0003ed02;
        goto LAB_0003e836;
      }
LAB_0003ed02:
      local_30 = 1;
      iVar10 = 0;
      goto LAB_0003ed0c;
    }
  }
  param_2 = iVar12 - (puVar2[5] + 1);
  if (-1 < param_2) {
    if (param_2 < (int)puVar2[6]) goto LAB_0003eab0;
    iVar12 = param_2 - (puVar2[6] + 1);
    if (iVar12 < 0) {
      local_38 = 1;
      if (local_34 == 0) {
        local_34 = puVar2[10];
      }
LAB_0003e7aa:
      puVar5 = (undefined4 *)*puVar2;
      iVar12 = puVar2[1];
      goto joined_r0x0003e7b1;
    }
    if (iVar12 < (int)puVar2[7]) {
      puVar5 = (undefined4 *)puVar2[3];
      param_2 = iVar12;
      if (puVar5[10] == 0) {
        iVar10 = 1;
        local_30 = 2;
        goto LAB_0003eacb;
      }
    }
    else {
      param_2 = iVar12 - (puVar2[7] + 1);
      if (param_2 < 0) {
        local_38 = 2;
        if (local_34 == 0) {
          local_34 = puVar2[0xb];
        }
        goto LAB_0003e7aa;
      }
      puVar9 = (undefined4 *)puVar2[4];
      puVar5 = puVar9;
      if (puVar9[10] == 0) {
        puVar4 = (undefined4 *)puVar2[3];
        if (puVar4[10] == 0) {
          iVar10 = 2;
          local_30 = 3;
          goto LAB_0003ed0c;
        }
        local_30 = 3;
        iVar10 = 2;
        goto LAB_0003eae0;
      }
    }
    goto joined_r0x0003e772;
  }
  local_38 = 0;
  if (local_34 != 0) goto LAB_0003e7aa;
  local_34 = puVar2[9];
  puVar5 = (undefined4 *)*puVar2;
  iVar12 = puVar2[1];
joined_r0x0003e7b1:
  if (puVar5 == (undefined4 *)0x0) {
    if (puVar2[10] == 0) {
      if (iVar12 == 0) {
        FUN_0001a110(puVar2);
        *puVar3 = 0;
        return local_34;
      }
    }
    else if (iVar12 == 0) {
      puVar5 = (undefined4 *)0x0;
LAB_0003e9d5:
      if (local_38 == 2) {
LAB_0003ea09:
        local_38 = 2;
      }
      else {
        iVar10 = puVar2[local_38 + 10];
        iVar12 = local_38 + 1;
        if (iVar10 != 0) {
          do {
            puVar2[iVar12 + 8] = iVar10;
            if (iVar12 == 2) goto LAB_0003ea09;
            iVar10 = puVar2[0xb];
            iVar12 = 2;
          } while (iVar10 != 0);
          local_38 = 1;
        }
      }
      puVar2[local_38 + 9] = 0;
      while (puVar3 = puVar5, puVar3 != (undefined4 *)0x0) {
        iVar12 = 0;
        if (((undefined4 *)puVar3[1] != puVar2) && (iVar12 = 1, (undefined4 *)puVar3[2] != puVar2))
        {
          iVar12 = ((undefined4 *)puVar3[3] != puVar2) + 2;
        }
        puVar3[iVar12 + 5] = puVar3[iVar12 + 5] + -1;
        puVar2 = puVar3;
        puVar5 = (undefined4 *)*puVar3;
      }
      return local_34;
    }
  }
  else if ((iVar12 == 0) && (puVar2[10] != 0)) goto LAB_0003e9d5;
  puVar5 = (undefined4 *)puVar2[local_38 + 1];
  puVar4 = puVar5;
  if (puVar5[10] == 0) {
    puVar4 = (undefined4 *)puVar2[local_38 + 2];
    iVar12 = local_38 + 1;
    puVar11 = (undefined4 *)puVar4[1];
    puVar9 = puVar4;
    if (puVar4[10] == 0) {
      uVar7 = puVar2[local_38 + 9];
      puVar5[3] = puVar11;
      puVar5[10] = uVar7;
      puVar5[7] = puVar4[5];
      if (puVar11 != (undefined4 *)0x0) {
        *puVar11 = puVar5;
      }
      uVar7 = puVar4[6];
      puVar5[0xb] = puVar4[9];
      puVar11 = (undefined4 *)puVar4[2];
      puVar5[8] = uVar7;
      puVar5[4] = puVar11;
      if (puVar11 != (undefined4 *)0x0) {
        *puVar11 = puVar5;
      }
      FUN_0001a110(puVar4);
      uVar7 = FUN_0003e010();
      puVar2[local_38 + 5] = uVar7;
      if (local_38 == 2) {
LAB_0003ec29:
        iVar12 = 3;
        iVar6 = 2;
      }
      else {
        iVar10 = puVar2[local_38 + 10];
        iVar6 = local_38;
        if (iVar10 != 0) {
          do {
            puVar2[iVar12 + 8] = iVar10;
            puVar2[iVar12 + 1] = puVar2[iVar12 + 2];
            puVar2[iVar12 + 5] = puVar2[iVar12 + 6];
            if (iVar12 == 2) goto LAB_0003ec29;
            iVar10 = puVar2[0xb];
            iVar12 = 2;
          } while (iVar10 != 0);
          iVar6 = 1;
        }
      }
      puVar2[iVar6 + 9] = 0;
      puVar2[iVar12 + 1] = 0;
      puVar2[iVar12 + 5] = 0;
      if (puVar2[9] == 0) {
        *puVar3 = puVar5;
        *puVar5 = 0;
        FUN_0001a110(puVar2);
      }
      param_2 = puVar5[6] + puVar5[5] + 1;
    }
    else {
      while (puVar5 = puVar11, puVar5 != (undefined4 *)0x0) {
        puVar9 = puVar5;
        puVar11 = (undefined4 *)puVar5[1];
      }
      puVar2[local_38 + 9] = puVar9[9];
      param_2 = 0;
      puVar5 = puVar4;
    }
  }
  else {
    while (puVar11 = (undefined4 *)puVar4[1], puVar11 != (undefined4 *)0x0) {
      while ((puVar9 = (undefined4 *)puVar4[4], (undefined4 *)puVar4[4] != (undefined4 *)0x0 ||
             (puVar9 = (undefined4 *)puVar4[3], (undefined4 *)puVar4[3] != (undefined4 *)0x0))) {
        puVar4 = puVar9;
        puVar11 = (undefined4 *)puVar4[1];
        if (puVar11 == (undefined4 *)0x0) goto LAB_0003e958;
      }
      puVar9 = puVar4 + 2;
      puVar4 = (undefined4 *)*puVar9;
      if ((undefined4 *)*puVar9 == (undefined4 *)0x0) {
        puVar4 = puVar11;
      }
    }
LAB_0003e958:
    iVar12 = puVar4[0xb];
    if ((iVar12 == 0) && (iVar12 = puVar4[10], iVar12 == 0)) {
      iVar12 = puVar4[9];
    }
    puVar2[local_38 + 9] = iVar12;
    param_2 = puVar2[local_38 + 5] + -1;
  }
  goto joined_r0x0003e772;
LAB_0003eab0:
  puVar5 = (undefined4 *)puVar2[2];
  if (puVar5[10] == 0) {
    local_30 = 1;
    iVar10 = 0;
LAB_0003eacb:
    puVar4 = (undefined4 *)puVar2[iVar10 + 1];
    if (puVar4[10] == 0) {
      local_28 = local_30 + 1;
      puVar11 = puVar2 + local_30;
      puVar9 = (undefined4 *)puVar11[2];
      if (puVar9 == (undefined4 *)0x0) {
        puVar9 = (undefined4 *)puVar11[1];
        iVar12 = param_2 + 1 + puVar2[iVar10 + 5];
      }
      else {
        if (puVar9[10] != 0) {
LAB_0003e836:
          uVar7 = puVar9[5];
          puVar5[10] = puVar2[local_30 + 9];
          puVar4 = (undefined4 *)puVar9[1];
          puVar5[7] = uVar7;
          puVar5[3] = puVar4;
          if (puVar4 != (undefined4 *)0x0) {
            *puVar4 = puVar5;
          }
          puVar2[local_30 + 9] = puVar9[9];
          puVar9[1] = puVar9[2];
          puVar9[5] = puVar9[6];
          if (puVar9[10] == 0) {
            iVar12 = 1;
            iVar10 = 0;
          }
          else {
            puVar9[9] = puVar9[10];
            puVar9[2] = puVar9[3];
            puVar9[6] = puVar9[7];
            if (puVar9[0xb] == 0) {
              iVar12 = 2;
              iVar10 = 1;
            }
            else {
              puVar9[10] = puVar9[0xb];
              iVar12 = 3;
              puVar9[3] = puVar9[4];
              puVar9[7] = puVar9[8];
              iVar10 = 2;
            }
          }
          puVar9[iVar12 + 1] = 0;
          puVar9[iVar12 + 5] = 0;
          puVar9[iVar10 + 9] = 0;
          uVar7 = FUN_0003e010();
          puVar2[local_30 + 5] = uVar7;
          uVar7 = FUN_0003e010();
          puVar2[local_28 + 5] = uVar7;
          puVar5 = extraout_ECX;
          goto joined_r0x0003e772;
        }
        puVar4 = (undefined4 *)*puVar11;
        puVar9 = (undefined4 *)puVar11[1];
        iVar10 = local_30 + -1;
        iVar12 = param_2 + 1 + puVar11[4];
      }
LAB_0003ed0c:
      puVar9[4] = puVar9[2];
      puVar9[8] = puVar9[6];
      puVar9[0xb] = puVar9[9];
      puVar9[3] = puVar9[1];
      puVar9[7] = puVar9[5];
      uVar7 = puVar4[6];
      puVar9[10] = puVar2[iVar10 + 9];
      puVar5 = (undefined4 *)puVar4[2];
      puVar9[6] = uVar7;
      puVar9[2] = puVar5;
      if (puVar5 != (undefined4 *)0x0) {
        *puVar5 = puVar9;
      }
      uVar7 = puVar4[5];
      puVar9[9] = puVar4[9];
      puVar5 = (undefined4 *)puVar4[1];
      puVar9[5] = uVar7;
      puVar9[1] = puVar5;
      if (puVar5 != (undefined4 *)0x0) {
        *puVar5 = puVar9;
      }
      uVar7 = FUN_0003e010();
      puVar2[local_30 + 5] = uVar7;
      FUN_0001a110(extraout_ECX_00);
      iVar6 = puVar2[iVar10 + 2];
      while (iVar6 != 0) {
        iVar8 = iVar10 + 1;
        puVar2[iVar8] = iVar6;
        puVar2[iVar10 + 5] = puVar2[iVar10 + 6];
        if (iVar8 == 3) {
          puVar2[0xb] = 0;
          puVar2[4] = 0;
          puVar2[8] = 0;
          goto LAB_0003edcd;
        }
        puVar2[iVar10 + 9] = puVar2[iVar10 + 10];
        iVar6 = puVar2[iVar10 + 3];
        iVar10 = iVar8;
      }
      puVar2[iVar10 + 1] = 0;
      puVar2[iVar10 + 5] = 0;
      puVar2[iVar10 + 9] = 0;
LAB_0003edcd:
      param_2 = iVar12;
      puVar5 = puVar9;
      if (puVar2[9] == 0) {
        *puVar3 = puVar9;
        *puVar9 = 0;
        FUN_0001a110(puVar2);
      }
      goto joined_r0x0003e772;
    }
LAB_0003eae0:
    uVar1 = (uint)(puVar4[0xb] == 0);
    puVar5[3] = puVar5[2];
    puVar5[7] = puVar5[6];
    puVar5[10] = puVar5[9];
    puVar5[2] = puVar5[1];
    puVar5[6] = puVar5[5];
    puVar5[9] = puVar2[iVar10 + 9];
    puVar11 = (undefined4 *)puVar4[4 - uVar1];
    puVar5[1] = puVar11;
    puVar5[5] = puVar4[8 - uVar1];
    if (puVar11 != (undefined4 *)0x0) {
      *puVar11 = puVar5;
    }
    puVar2[iVar10 + 9] = puVar4[-uVar1 + 0xb];
    puVar4[4 - uVar1] = 0;
    puVar4[8 - uVar1] = 0;
    puVar4[-uVar1 + 0xb] = 0;
    uVar7 = FUN_0003e010();
    puVar2[local_30 + 5] = uVar7;
    iVar12 = puVar2[iVar10 + 5];
    iVar6 = FUN_0003e010();
    puVar2[iVar10 + 5] = iVar6;
    param_2 = (param_2 + iVar12) - iVar6;
  }
  goto joined_r0x0003e772;
}

