
void __gmpz_sqrt(mpz_ptr root,mpz_srcptr op)

{
  mp_limb_t *pmVar1;
  mp_limb_t *pmVar2;
  int *piVar3;
  int *piVar4;
  mp_limb_t **ppmVar5;
  mp_limb_t **ppmVar6;
  uint uVar7;
  uint uVar8;
  mp_limb_t *pmVar9;
  mp_limb_t mVar10;
  mpz_ptr p_Var11;
  int iVar12;
  mp_limb_t *pmVar13;
  mpz_ptr p_Var14;
  mp_limb_t *pmVar15;
  mpz_ptr in_a2;
  int unaff_s0;
  uint uVar16;
  int iVar17;
  uint uVar18;
  mpz_ptr unaff_s2;
  uint uVar19;
  uint uVar20;
  int *unaff_s3;
  mpz_ptr unaff_s4;
  mp_limb_t *pmVar21;
  mpz_ptr unaff_s5;
  mpz_ptr p_Var22;
  mp_limb_t *pmVar23;
  mpz_ptr unaff_s6;
  uint unaff_s7;
  undefined *puVar24;
  code *pcVar25;
  undefined *puVar26;
  code *pcVar27;
  undefined1 *puVar28;
  undefined1 *puVar29;
  undefined1 *puVar30;
  undefined1 *puVar31;
  undefined4 uVar32;
  undefined1 auStack_40 [16];
  tmp_reentrant_t *__tmp_marker;
  int local_24;
  
  puVar28 = auStack_40;
  puVar29 = auStack_40;
  local_24 = *(int *)PTR___stack_chk_guard_0009b540;
  iVar17 = op->_mp_size;
  if (iVar17 < 1) {
    if (iVar17 < 0) {
      (*(code *)PTR___gmp_sqrt_of_negative_0009b1cc)();
      goto LAB_000345b4;
    }
    root->_mp_size = 0;
  }
  else {
    unaff_s0 = (iVar17 + 1) / 2;
    root->_mp_size = unaff_s0;
    unaff_s2 = (mpz_ptr)op->_mp_d;
    if (op == root) {
LAB_000345b4:
      unaff_s4 = (mpz_ptr)(unaff_s0 * 4);
      __tmp_marker = (tmp_reentrant_t *)0x0;
      if (unaff_s4 < (mpz_ptr)0x7f01) {
        iVar12 = -((uint)((int)&unaff_s4->_mp_size + 3U) & 0xfffffff8);
        puVar29 = auStack_40 + iVar12;
        unaff_s3 = (int *)(&stack0xffffffd0 + iVar12);
      }
      else {
        unaff_s3 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)(&__tmp_marker,unaff_s4);
      }
      op = (mpz_ptr)0x0;
      in_a2 = unaff_s2;
      (*(code *)PTR___gmpn_sqrtrem_0009b0e0)(unaff_s3,0,unaff_s2,iVar17);
      iVar12 = *unaff_s3;
      if (unaff_s0 != 1) {
        piVar3 = unaff_s3 + 1;
        unaff_s3 = unaff_s3 + unaff_s0;
        p_Var11 = unaff_s2;
        do {
          p_Var11->_mp_alloc = iVar12;
          piVar4 = piVar3 + 1;
          iVar12 = *piVar3;
          piVar3 = piVar4;
          p_Var11 = (mpz_ptr)&p_Var11->_mp_size;
        } while (unaff_s3 != piVar4);
        unaff_s4 = (mpz_ptr)&unaff_s4[-1]._mp_d;
        unaff_s2 = (mpz_ptr)((int)unaff_s4 + (int)&unaff_s2->_mp_alloc);
      }
      unaff_s2->_mp_alloc = iVar12;
      root = (mpz_ptr)__tmp_marker;
      puVar28 = puVar29;
      if (__tmp_marker != (tmp_reentrant_t *)0x0) {
        (*(code *)PTR___gmp_tmp_reentrant_free_0009b614)();
      }
    }
    else {
      if (root->_mp_alloc < unaff_s0) {
        root = (mpz_ptr)(*(code *)PTR___gmpz_realloc_0009b5bc)(root,unaff_s0);
      }
      else {
        root = (mpz_ptr)root->_mp_d;
      }
      op = (mpz_ptr)0x0;
      in_a2 = unaff_s2;
      (*(code *)PTR___gmpn_sqrtrem_0009b0e0)();
      puVar28 = auStack_40;
    }
  }
  if (local_24 == *(int *)PTR___stack_chk_guard_0009b540) {
    return;
  }
  uVar32 = 0x34694;
  puVar24 = PTR___stack_chk_fail_0009b4d0;
  (*(code *)PTR___stack_chk_fail_0009b4d0)();
  puVar26 = puVar24 + 0x6e9a0;
  puVar30 = puVar28 + -0x48;
  puVar31 = puVar28 + -0x48;
  *(undefined4 *)(puVar28 + -4) = uVar32;
  *(undefined1 **)(puVar28 + -8) = auStack_40;
  *(uint *)(puVar28 + -0xc) = unaff_s7;
  *(mpz_ptr *)(puVar28 + -0x10) = unaff_s6;
  *(mpz_ptr *)(puVar28 + -0x14) = unaff_s5;
  *(mpz_ptr *)(puVar28 + -0x18) = unaff_s4;
  *(int **)(puVar28 + -0x1c) = unaff_s3;
  *(mpz_ptr *)(puVar28 + -0x20) = unaff_s2;
  *(int *)(puVar28 + -0x24) = iVar17;
  *(int *)(puVar28 + -0x28) = unaff_s0;
  *(undefined **)(puVar28 + -0x38) = puVar26;
  *(undefined4 *)(puVar28 + -0x2c) = **(undefined4 **)(puVar24 + 0x66ea0);
  iVar17 = in_a2->_mp_size;
  if (iVar17 < 1) {
    if (iVar17 < 0) {
      (**(code **)(puVar24 + 0x66b2c))();
      goto LAB_000347c8;
    }
    root->_mp_size = 0;
    op->_mp_size = 0;
    p_Var11 = root;
    p_Var14 = op;
  }
  else {
    unaff_s4 = in_a2;
    if (op->_mp_alloc < iVar17) {
LAB_000347c8:
      unaff_s5 = (mpz_ptr)(**(code **)(puVar24 + 0x66f1c))(op,iVar17);
      puVar26 = *(undefined **)(puVar28 + -0x38);
    }
    else {
      unaff_s5 = (mpz_ptr)op->_mp_d;
    }
    unaff_s0 = (iVar17 + 1) / 2;
    root->_mp_size = unaff_s0;
    unaff_s6 = (mpz_ptr)unaff_s4->_mp_d;
    p_Var14 = unaff_s5;
    in_a2 = unaff_s6;
    if (unaff_s4 == root) {
      unaff_s7 = unaff_s0 * 4;
      *(undefined4 *)(puVar28 + -0x30) = 0;
      if (unaff_s7 < 0x7f01) {
        iVar12 = -(unaff_s7 + 7 & 0xfffffff8);
        puVar31 = puVar28 + iVar12 + -0x48;
        unaff_s4 = (mpz_ptr)(puVar28 + iVar12 + -0x38);
      }
      else {
        unaff_s4 = (mpz_ptr)(**(code **)(puVar26 + -0x7d50))(puVar28 + -0x30,unaff_s7);
        puVar26 = *(undefined **)(puVar28 + -0x38);
      }
      iVar17 = (**(code **)(puVar26 + -0x7f60))(unaff_s4,unaff_s5,unaff_s6,iVar17);
      puVar26 = *(undefined **)(puVar28 + -0x38);
      if (root != op) {
        iVar12 = unaff_s4->_mp_alloc;
        if (unaff_s0 != 1) {
          ppmVar5 = (mp_limb_t **)&unaff_s4->_mp_size;
          unaff_s4 = (mpz_ptr)(&unaff_s4->_mp_alloc + unaff_s0);
          p_Var11 = unaff_s6;
          do {
            p_Var11->_mp_alloc = iVar12;
            ppmVar6 = ppmVar5 + 1;
            iVar12 = (int)*ppmVar5;
            ppmVar5 = ppmVar6;
            p_Var11 = (mpz_ptr)&p_Var11->_mp_size;
          } while (unaff_s4 != (mpz_ptr)ppmVar6);
          unaff_s7 = unaff_s7 - 4;
          unaff_s6 = (mpz_ptr)((int)unaff_s6 + unaff_s7);
        }
        unaff_s6->_mp_alloc = iVar12;
      }
      p_Var11 = *(mpz_ptr *)(puVar28 + -0x30);
      if (p_Var11 != (mpz_ptr)0x0) {
        (**(code **)(puVar26 + -0x7a2c))();
        puVar26 = *(undefined **)(puVar28 + -0x38);
        op->_mp_size = iVar17;
        puVar30 = puVar31;
        goto LAB_00034768;
      }
    }
    else {
      if (root->_mp_alloc < unaff_s0) {
        p_Var11 = (mpz_ptr)(**(code **)(puVar26 + -0x7a84))(root,unaff_s0);
        puVar26 = *(undefined **)(puVar28 + -0x38);
      }
      else {
        p_Var11 = (mpz_ptr)root->_mp_d;
      }
      iVar17 = (**(code **)(puVar26 + -0x7f60))();
      puVar26 = *(undefined **)(puVar28 + -0x38);
      puVar31 = puVar28 + -0x48;
    }
    op->_mp_size = iVar17;
    puVar30 = puVar31;
  }
LAB_00034768:
  if (*(int *)(puVar28 + -0x2c) == **(int **)(puVar26 + -0x7b00)) {
    return;
  }
  pcVar25 = *(code **)(puVar26 + -0x7b70);
  uVar32 = 0x348d4;
  (*pcVar25)();
  pcVar27 = pcVar25 + 0x6e760;
  *(undefined4 *)(puVar30 + -4) = uVar32;
  *(uint *)(puVar30 + -8) = unaff_s7;
  *(mpz_ptr *)(puVar30 + -0xc) = unaff_s6;
  *(mpz_ptr *)(puVar30 + -0x10) = unaff_s5;
  *(mpz_ptr *)(puVar30 + -0x14) = unaff_s4;
  *(mpz_srcptr *)(puVar30 + -0x18) = op;
  *(mpz_ptr *)(puVar30 + -0x1c) = root;
  *(int *)(puVar30 + -0x20) = iVar17;
  *(int *)(puVar30 + -0x24) = unaff_s0;
  *(code **)(puVar30 + -0x30) = pcVar27;
  uVar19 = p_Var14->_mp_size;
  uVar7 = in_a2->_mp_size;
  uVar8 = -uVar7;
  uVar18 = uVar19;
  if ((int)uVar19 < 0) {
    uVar18 = -uVar19;
  }
  if ((int)uVar7 < 0) {
    uVar7 = -uVar7;
  }
  uVar16 = uVar7;
  uVar20 = uVar19;
  p_Var22 = p_Var14;
  if ((int)uVar18 < (int)uVar7) {
    uVar16 = uVar18;
    uVar18 = uVar7;
    uVar20 = uVar8;
    p_Var22 = in_a2;
    uVar8 = uVar19;
    in_a2 = p_Var14;
  }
  if (p_Var11->_mp_alloc < (int)(uVar18 + 1)) {
    pmVar21 = (mp_limb_t *)(**(code **)(pcVar25 + 0x66cdc))(p_Var11);
    pcVar27 = *(code **)(puVar30 + -0x30);
  }
  else {
    pmVar21 = p_Var11->_mp_d;
  }
  pmVar23 = p_Var22->_mp_d;
  pmVar15 = in_a2->_mp_d;
  if ((int)(uVar20 ^ uVar8) < 0) {
    if (uVar18 == uVar16) {
      pmVar13 = pmVar23 + uVar18;
      pmVar9 = pmVar15 + uVar18;
      uVar8 = uVar18;
      do {
        uVar8 = uVar8 - 1;
        if (uVar8 == 0xffffffff) goto LAB_00034bf8;
        pmVar1 = pmVar13 + -1;
        pmVar2 = pmVar9 + -1;
        pmVar13 = pmVar13 + -1;
        pmVar9 = pmVar9 + -1;
      } while (*pmVar1 == *pmVar2);
      if (*pmVar2 < *pmVar1) {
LAB_00034bf8:
        (**(code **)(pcVar27 + -0x7b2c))(pmVar21,pmVar23,pmVar15,uVar18);
        if ((0 < (int)uVar18) && (pmVar21[uVar18 - 1] == 0)) {
          pmVar21 = pmVar21 + uVar18;
          do {
            uVar18 = uVar18 - 1;
            if (uVar18 == 0) break;
            pmVar15 = pmVar21 + -2;
            pmVar21 = pmVar21 + -1;
          } while (*pmVar15 == 0);
        }
        if ((int)uVar20 < 0) {
          uVar18 = -uVar18;
        }
      }
      else {
        (**(code **)(pcVar27 + -0x7b2c))(pmVar21,pmVar15,pmVar23);
        if ((0 < (int)uVar18) && (pmVar21[uVar18 - 1] == 0)) {
          pmVar21 = pmVar21 + uVar18;
          do {
            uVar18 = uVar18 - 1;
            if (uVar18 == 0) break;
            pmVar15 = pmVar21 + -2;
            pmVar21 = pmVar21 + -1;
          } while (*pmVar15 == 0);
        }
        if (-1 < (int)uVar20) {
          uVar18 = -uVar18;
        }
      }
      goto LAB_000349e8;
    }
    if (uVar16 == 0) {
LAB_00034a50:
      if ((pmVar21 != pmVar23) && ((int)uVar16 < (int)uVar18)) {
        pmVar15 = pmVar23 + uVar16;
        pmVar9 = pmVar21 + uVar16;
        do {
          *pmVar9 = *pmVar15;
          pmVar15 = pmVar15 + 1;
          pmVar9 = pmVar9 + 1;
        } while (pmVar15 != pmVar23 + uVar18);
      }
    }
    else {
      iVar17 = (**(code **)(pcVar27 + -0x7b2c))(pmVar21,pmVar23,pmVar15,uVar16);
      if (iVar17 == 0) goto LAB_00034a50;
      if ((int)uVar16 < (int)uVar18) {
        pmVar15 = pmVar23 + uVar16;
        mVar10 = *pmVar15;
        pmVar9 = pmVar21 + uVar16;
        *pmVar9 = mVar10 - 1;
        while (uVar16 = uVar16 + 1, mVar10 == 0) {
          if (uVar18 == uVar16) goto LAB_00034a84;
          mVar10 = pmVar15[1];
          pmVar9[1] = mVar10 - 1;
          pmVar15 = pmVar15 + 1;
          pmVar9 = pmVar9 + 1;
        }
        goto LAB_00034a50;
      }
    }
LAB_00034a84:
    if ((0 < (int)uVar18) && (pmVar21[uVar18 + 0x3fffffff] == 0)) {
      pmVar21 = pmVar21 + uVar18 + 0x40000000;
      do {
        uVar18 = uVar18 - 1;
        if (uVar18 == 0) break;
        pmVar15 = pmVar21 + -2;
        pmVar21 = pmVar21 + -1;
      } while (*pmVar15 == 0);
    }
    if ((int)uVar20 < 0) {
      uVar18 = -uVar18;
    }
    goto LAB_000349e8;
  }
  if (uVar16 == 0) {
LAB_0003499c:
    if (pmVar21 == pmVar23) {
      mVar10 = 0;
    }
    else if ((int)uVar16 < (int)uVar18) {
      pmVar9 = pmVar23 + uVar16;
      pmVar15 = pmVar21 + uVar16;
      do {
        *pmVar15 = *pmVar9;
        pmVar9 = pmVar9 + 1;
        pmVar15 = pmVar15 + 1;
      } while (pmVar9 != pmVar23 + uVar18);
      mVar10 = 0;
    }
    else {
      mVar10 = 0;
    }
  }
  else {
    iVar17 = (**(code **)(pcVar27 + -0x7d0c))(pmVar21,pmVar23,pmVar15,uVar16);
    if (iVar17 == 0) goto LAB_0003499c;
    mVar10 = 1;
    if ((int)uVar16 < (int)uVar18) {
      pmVar15 = pmVar23 + uVar16;
      pmVar9 = pmVar21 + uVar16;
      mVar10 = *pmVar15 + 1;
      *pmVar9 = mVar10;
      while (uVar16 = uVar16 + 1, mVar10 == 0) {
        if (uVar18 == uVar16) {
          mVar10 = 1;
          goto LAB_000349d4;
        }
        mVar10 = pmVar15[1] + 1;
        pmVar9[1] = mVar10;
        pmVar15 = pmVar15 + 1;
        pmVar9 = pmVar9 + 1;
      }
      goto LAB_0003499c;
    }
  }
LAB_000349d4:
  pmVar21[uVar18] = mVar10;
  uVar18 = uVar18 + mVar10;
  if ((int)uVar20 < 0) {
    uVar18 = -uVar18;
  }
LAB_000349e8:
  p_Var11->_mp_size = uVar18;
  return;
}



void __gmpz_sqrt(int *param_1,int *param_2,int *param_3)

{
  uint *puVar1;
  uint *puVar2;
  int *piVar3;
  uint uVar4;
  undefined4 *puVar5;
  uint uVar6;
  undefined4 *puVar7;
  int iVar8;
  int *piVar9;
  int *piVar10;
  int iVar11;
  int *piVar12;
  int iVar13;
  int unaff_s0;
  uint uVar14;
  int iVar15;
  int iVar16;
  uint uVar17;
  int *unaff_s2;
  uint uVar18;
  uint uVar19;
  int *unaff_s3;
  int *unaff_s4;
  int *unaff_s5;
  int iVar20;
  int *unaff_s6;
  uint unaff_s7;
  undefined *puVar21;
  code *pcVar22;
  undefined *puVar23;
  code *pcVar24;
  undefined1 *puVar25;
  undefined1 *puVar26;
  undefined1 *puVar27;
  undefined1 *puVar28;
  undefined4 uVar29;
  undefined1 auStack_40 [16];
  int *local_28;
  int local_24;
  
  puVar25 = auStack_40;
  puVar26 = auStack_40;
  local_24 = *(int *)PTR___stack_chk_guard_0009b540;
  iVar16 = param_2[1];
  if (iVar16 < 1) {
    if (iVar16 < 0) {
      (*(code *)PTR___gmp_sqrt_of_negative_0009b1cc)();
      goto LAB_000345b4;
    }
    param_1[1] = 0;
  }
  else {
    unaff_s0 = (iVar16 + 1) / 2;
    param_1[1] = unaff_s0;
    unaff_s2 = (int *)param_2[2];
    if (param_2 == param_1) {
LAB_000345b4:
      unaff_s4 = (int *)(unaff_s0 * 4);
      local_28 = (int *)0x0;
      if (unaff_s4 < (int *)0x7f01) {
        iVar13 = -((int)unaff_s4 + 7U & 0xfffffff8);
        puVar26 = auStack_40 + iVar13;
        unaff_s3 = (int *)(&stack0xffffffd0 + iVar13);
      }
      else {
        unaff_s3 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)(&local_28,unaff_s4);
      }
      param_2 = (int *)0x0;
      param_3 = unaff_s2;
      (*(code *)PTR___gmpn_sqrtrem_0009b0e0)(unaff_s3,0,unaff_s2,iVar16);
      iVar13 = *unaff_s3;
      if (unaff_s0 != 1) {
        piVar10 = unaff_s3 + 1;
        unaff_s3 = unaff_s3 + unaff_s0;
        piVar12 = unaff_s2;
        do {
          *piVar12 = iVar13;
          piVar9 = piVar10 + 1;
          iVar13 = *piVar10;
          piVar10 = piVar9;
          piVar12 = piVar12 + 1;
        } while (unaff_s3 != piVar9);
        unaff_s4 = unaff_s4 + -1;
        unaff_s2 = (int *)((int)unaff_s2 + (int)unaff_s4);
      }
      *unaff_s2 = iVar13;
      param_1 = local_28;
      puVar25 = puVar26;
      if (local_28 != (int *)0x0) {
        (*(code *)PTR___gmp_tmp_reentrant_free_0009b614)();
      }
    }
    else {
      if (*param_1 < unaff_s0) {
        param_1 = (int *)(*(code *)PTR___gmpz_realloc_0009b5bc)(param_1,unaff_s0);
      }
      else {
        param_1 = (int *)param_1[2];
      }
      param_2 = (int *)0x0;
      param_3 = unaff_s2;
      (*(code *)PTR___gmpn_sqrtrem_0009b0e0)();
      puVar25 = auStack_40;
    }
  }
  if (local_24 == *(int *)PTR___stack_chk_guard_0009b540) {
    return;
  }
  uVar29 = 0x34694;
  puVar21 = PTR___stack_chk_fail_0009b4d0;
  (*(code *)PTR___stack_chk_fail_0009b4d0)();
  puVar23 = puVar21 + 0x6e9a0;
  puVar27 = puVar25 + -0x48;
  puVar28 = puVar25 + -0x48;
  *(undefined4 *)(puVar25 + -4) = uVar29;
  *(undefined1 **)(puVar25 + -8) = auStack_40;
  *(uint *)(puVar25 + -0xc) = unaff_s7;
  *(int **)(puVar25 + -0x10) = unaff_s6;
  *(int **)(puVar25 + -0x14) = unaff_s5;
  *(int **)(puVar25 + -0x18) = unaff_s4;
  *(int **)(puVar25 + -0x1c) = unaff_s3;
  *(int **)(puVar25 + -0x20) = unaff_s2;
  *(int *)(puVar25 + -0x24) = iVar16;
  *(int *)(puVar25 + -0x28) = unaff_s0;
  *(undefined **)(puVar25 + -0x38) = puVar23;
  *(undefined4 *)(puVar25 + -0x2c) = **(undefined4 **)(puVar21 + 0x66ea0);
  iVar16 = param_3[1];
  if (iVar16 < 1) {
    if (iVar16 < 0) {
      (**(code **)(puVar21 + 0x66b2c))();
      goto LAB_000347c8;
    }
    param_1[1] = 0;
    param_2[1] = 0;
    piVar10 = param_1;
    piVar12 = param_2;
  }
  else {
    unaff_s4 = param_3;
    if (*param_2 < iVar16) {
LAB_000347c8:
      unaff_s5 = (int *)(**(code **)(puVar21 + 0x66f1c))(param_2,iVar16);
      puVar23 = *(undefined **)(puVar25 + -0x38);
    }
    else {
      unaff_s5 = (int *)param_2[2];
    }
    unaff_s0 = (iVar16 + 1) / 2;
    param_1[1] = unaff_s0;
    unaff_s6 = (int *)unaff_s4[2];
    piVar12 = unaff_s5;
    param_3 = unaff_s6;
    if (unaff_s4 == param_1) {
      unaff_s7 = unaff_s0 * 4;
      *(undefined4 *)(puVar25 + -0x30) = 0;
      if (unaff_s7 < 0x7f01) {
        iVar13 = -(unaff_s7 + 7 & 0xfffffff8);
        puVar28 = puVar25 + iVar13 + -0x48;
        unaff_s4 = (int *)(puVar25 + iVar13 + -0x38);
      }
      else {
        unaff_s4 = (int *)(**(code **)(puVar23 + -0x7d50))(puVar25 + -0x30,unaff_s7);
        puVar23 = *(undefined **)(puVar25 + -0x38);
      }
      iVar16 = (**(code **)(puVar23 + -0x7f60))(unaff_s4,unaff_s5,unaff_s6,iVar16);
      puVar23 = *(undefined **)(puVar25 + -0x38);
      if (param_1 != param_2) {
        iVar13 = *unaff_s4;
        if (unaff_s0 != 1) {
          piVar10 = unaff_s4 + 1;
          unaff_s4 = unaff_s4 + unaff_s0;
          piVar9 = unaff_s6;
          do {
            *piVar9 = iVar13;
            piVar3 = piVar10 + 1;
            iVar13 = *piVar10;
            piVar10 = piVar3;
            piVar9 = piVar9 + 1;
          } while (unaff_s4 != piVar3);
          unaff_s7 = unaff_s7 - 4;
          unaff_s6 = unaff_s6 + unaff_s0 + -1;
        }
        *unaff_s6 = iVar13;
      }
      piVar10 = *(int **)(puVar25 + -0x30);
      if (piVar10 != (int *)0x0) {
        (**(code **)(puVar23 + -0x7a2c))();
        puVar23 = *(undefined **)(puVar25 + -0x38);
        param_2[1] = iVar16;
        puVar27 = puVar28;
        goto LAB_00034768;
      }
    }
    else {
      if (*param_1 < unaff_s0) {
        piVar10 = (int *)(**(code **)(puVar23 + -0x7a84))(param_1,unaff_s0);
        puVar23 = *(undefined **)(puVar25 + -0x38);
      }
      else {
        piVar10 = (int *)param_1[2];
      }
      iVar16 = (**(code **)(puVar23 + -0x7f60))();
      puVar23 = *(undefined **)(puVar25 + -0x38);
      puVar28 = puVar25 + -0x48;
    }
    param_2[1] = iVar16;
    puVar27 = puVar28;
  }
LAB_00034768:
  if (*(int *)(puVar25 + -0x2c) == **(int **)(puVar23 + -0x7b00)) {
    return;
  }
  pcVar22 = *(code **)(puVar23 + -0x7b70);
  uVar29 = 0x348d4;
  (*pcVar22)();
  pcVar24 = pcVar22 + 0x6e760;
  *(undefined4 *)(puVar27 + -4) = uVar29;
  *(uint *)(puVar27 + -8) = unaff_s7;
  *(int **)(puVar27 + -0xc) = unaff_s6;
  *(int **)(puVar27 + -0x10) = unaff_s5;
  *(int **)(puVar27 + -0x14) = unaff_s4;
  *(int **)(puVar27 + -0x18) = param_2;
  *(int **)(puVar27 + -0x1c) = param_1;
  *(int *)(puVar27 + -0x20) = iVar16;
  *(int *)(puVar27 + -0x24) = unaff_s0;
  *(code **)(puVar27 + -0x30) = pcVar24;
  uVar18 = piVar12[1];
  uVar4 = param_3[1];
  uVar6 = -uVar4;
  uVar17 = uVar18;
  if ((int)uVar18 < 0) {
    uVar17 = -uVar18;
  }
  if ((int)uVar4 < 0) {
    uVar4 = -uVar4;
  }
  uVar14 = uVar4;
  uVar19 = uVar18;
  piVar9 = piVar12;
  if ((int)uVar17 < (int)uVar4) {
    uVar14 = uVar17;
    uVar17 = uVar4;
    uVar19 = uVar6;
    piVar9 = param_3;
    uVar6 = uVar18;
    param_3 = piVar12;
  }
  if (*piVar10 < (int)(uVar17 + 1)) {
    iVar16 = (**(code **)(pcVar22 + 0x66cdc))(piVar10);
    pcVar24 = *(code **)(puVar27 + -0x30);
  }
  else {
    iVar16 = piVar10[2];
  }
  iVar20 = piVar9[2];
  iVar13 = param_3[2];
  if ((int)(uVar19 ^ uVar6) < 0) {
    if (uVar17 == uVar14) {
      iVar15 = uVar17 * 4;
      iVar11 = iVar20 + iVar15;
      iVar8 = iVar13 + iVar15;
      uVar6 = uVar17;
      do {
        uVar6 = uVar6 - 1;
        if (uVar6 == 0xffffffff) goto LAB_00034bf8;
        puVar1 = (uint *)(iVar11 + -4);
        puVar2 = (uint *)(iVar8 + -4);
        iVar11 = iVar11 + -4;
        iVar8 = iVar8 + -4;
      } while (*puVar1 == *puVar2);
      if (*puVar2 < *puVar1) {
LAB_00034bf8:
        (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar20,iVar13,uVar17);
        if ((0 < (int)uVar17) && (*(int *)(iVar16 + iVar15 + -4) == 0)) {
          iVar16 = iVar16 + iVar15;
          do {
            uVar17 = uVar17 - 1;
            if (uVar17 == 0) break;
            piVar12 = (int *)(iVar16 + -8);
            iVar16 = iVar16 + -4;
          } while (*piVar12 == 0);
        }
        if ((int)uVar19 < 0) {
          uVar17 = -uVar17;
        }
      }
      else {
        (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar13,iVar20);
        if ((0 < (int)uVar17) && (*(int *)(iVar16 + iVar15 + -4) == 0)) {
          iVar16 = iVar16 + iVar15;
          do {
            uVar17 = uVar17 - 1;
            if (uVar17 == 0) break;
            piVar12 = (int *)(iVar16 + -8);
            iVar16 = iVar16 + -4;
          } while (*piVar12 == 0);
        }
        if (-1 < (int)uVar19) {
          uVar17 = -uVar17;
        }
      }
      goto LAB_000349e8;
    }
    if (uVar14 == 0) {
LAB_00034a50:
      if ((iVar16 != iVar20) && ((int)uVar14 < (int)uVar17)) {
        puVar5 = (undefined4 *)(iVar20 + uVar14 * 4);
        puVar7 = (undefined4 *)(iVar16 + uVar14 * 4);
        do {
          *puVar7 = *puVar5;
          puVar5 = puVar5 + 1;
          puVar7 = puVar7 + 1;
        } while (puVar5 != (undefined4 *)(iVar20 + uVar17 * 4));
      }
    }
    else {
      iVar13 = (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar20,iVar13,uVar14);
      if (iVar13 == 0) goto LAB_00034a50;
      if ((int)uVar14 < (int)uVar17) {
        piVar12 = (int *)(iVar20 + uVar14 * 4);
        iVar13 = *piVar12;
        piVar9 = (int *)(iVar16 + uVar14 * 4);
        *piVar9 = iVar13 + -1;
        while (uVar14 = uVar14 + 1, iVar13 == 0) {
          if (uVar17 == uVar14) goto LAB_00034a84;
          iVar13 = piVar12[1];
          piVar9[1] = iVar13 + -1;
          piVar12 = piVar12 + 1;
          piVar9 = piVar9 + 1;
        }
        goto LAB_00034a50;
      }
    }
LAB_00034a84:
    if ((0 < (int)uVar17) && (iVar13 = (uVar17 + 0x3fffffff) * 4, *(int *)(iVar16 + iVar13) == 0)) {
      iVar16 = iVar16 + iVar13 + 4;
      do {
        uVar17 = uVar17 - 1;
        if (uVar17 == 0) break;
        piVar12 = (int *)(iVar16 + -8);
        iVar16 = iVar16 + -4;
      } while (*piVar12 == 0);
    }
    if ((int)uVar19 < 0) {
      uVar17 = -uVar17;
    }
    goto LAB_000349e8;
  }
  if (uVar14 == 0) {
LAB_0003499c:
    if (iVar16 == iVar20) {
      iVar13 = 0;
    }
    else if ((int)uVar14 < (int)uVar17) {
      puVar7 = (undefined4 *)(iVar20 + uVar14 * 4);
      puVar5 = (undefined4 *)(iVar16 + uVar14 * 4);
      do {
        *puVar5 = *puVar7;
        puVar7 = puVar7 + 1;
        puVar5 = puVar5 + 1;
      } while (puVar7 != (undefined4 *)(iVar20 + uVar17 * 4));
      iVar13 = 0;
    }
    else {
      iVar13 = 0;
    }
  }
  else {
    iVar13 = (**(code **)(pcVar24 + -0x7d0c))(iVar16,iVar20,iVar13,uVar14);
    if (iVar13 == 0) goto LAB_0003499c;
    iVar13 = 1;
    if ((int)uVar14 < (int)uVar17) {
      piVar12 = (int *)(iVar20 + uVar14 * 4);
      piVar9 = (int *)(iVar16 + uVar14 * 4);
      iVar13 = *piVar12 + 1;
      *piVar9 = iVar13;
      while (uVar14 = uVar14 + 1, iVar13 == 0) {
        if (uVar17 == uVar14) {
          iVar13 = 1;
          goto LAB_000349d4;
        }
        iVar13 = piVar12[1] + 1;
        piVar9[1] = iVar13;
        piVar12 = piVar12 + 1;
        piVar9 = piVar9 + 1;
      }
      goto LAB_0003499c;
    }
  }
LAB_000349d4:
  *(int *)(iVar16 + uVar17 * 4) = iVar13;
  uVar17 = uVar17 + iVar13;
  if ((int)uVar19 < 0) {
    uVar17 = -uVar17;
  }
LAB_000349e8:
  piVar10[1] = uVar17;
  return;
}


lui gp,0x7
addiu gp,gp,-0x1490
addu gp,gp,t9
addiu sp,sp,-0x40
sw ra,0x3c(sp)
sw s8,0x38(sp)
sw s4,0x34(sp)
sw s3,0x30(sp)
sw s2,0x2c(sp)
sw s1,0x28(sp)
sw s0,0x24(sp)
or s8,sp,zero
sw gp,0x10(sp)
lw v0,-0x7b00(gp)
lw v0,0x0(v0)
sw v0,0x1c(s8)
lw s1,0x4(a1)
blez s1,0x0003459c
_addiu v0,s1,0x1
srl s0,v0,0x1f
addu s0,s0,v0
sra s0,s0,0x1
sw s0,0x4(a0)
beq a1,a0,0x000345b4
_lw s2,0x8(a1)
lw v0,0x0(a0)
slt v0,v0,s0
bne v0,zero,0x00034670
_or a1,s0,zero
lw a0,0x8(a0)
or a3,s1,zero
or a2,s2,zero
or a1,zero,zero
lw t9,-0x7f60(gp)
jalr t9
_nop
lw gp,0x10(s8)
lw v1,0x1c(s8)
lw v0,-0x7b00(gp)
lw v0,0x0(v0)
bne v1,v0,0x00034688
_lw ra,0x3c(s8)
or sp,s8,zero
lw s8,0x38(sp)
lw s4,0x34(sp)
lw s3,0x30(sp)
lw s2,0x2c(sp)
lw s1,0x28(sp)
lw s0,0x24(sp)
jr ra
_addiu sp,sp,0x40
bltz s1,0x000345ac
_lw t9,-0x7e74(gp)
b 0x00034564
_sw zero,0x4(a0)
jalr t9
_nop
sll s4,s0,0x2
sltiu v0,s4,0x7f01
beq v0,zero,0x00034650
_sw zero,0x18(s8)
addiu v0,s4,0x7
srl v0,v0,0x3
sll v0,v0,0x3
subu sp,sp,v0
addiu s3,sp,0x10
or a3,s1,zero
or a2,s2,zero
or a1,zero,zero
or a0,s3,zero
lw t9,-0x7f60(gp)
jalr t9
_nop
lw gp,0x10(s8)
li v0,0x1
beq s0,v0,0x0003462c
_lw a0,0x0(s3)
addiu v0,s3,0x4
addu s3,s3,s4
or v1,s2,zero
addiu v1,v1,0x4
sw a0,-0x4(v1)
addiu v0,v0,0x4
bne s3,v0,0x00034610
_lw a0,-0x4(v0)
addiu s4,s4,-0x4
addu s2,s2,s4
sw a0,0x0(s2)
lw a0,0x18(s8)
beq a0,zero,0x00034564
_lw t9,-0x7a2c(gp)
jalr t9
_nop
lw gp,0x10(s8)
b 0x00034564
_nop
or a1,s4,zero
addiu a0,s8,0x18
lw t9,-0x7d50(gp)
jalr t9
_nop
lw gp,0x10(s8)
b 0x000345d8
_or s3,v0,zero
lw t9,-0x7a84(gp)
jalr t9
_nop
lw gp,0x10(s8)
b 0x00034548
_or a0,v0,zero
lw t9,-0x7b70(gp)
jalr t9
_nop
nop
nop
nop
(translation_unit "void __gmpz_sqrt(int *param_1,int *param_2,int *param_3)\n\n{\n  uint *puVar1;\n  uint *puVar2;\n  int *piVar3;\n  uint uVar4;\n  undefined4 *puVar5;\n  uint uVar6;\n  undefined4 *puVar7;\n  int iVar8;\n  int *piVar9;\n  int *piVar10;\n  int iVar11;\n  int *piVar12;\n  int iVar13;\n  int unaff_s0;\n  uint uVar14;\n  int iVar15;\n  int iVar16;\n  uint uVar17;\n  int *unaff_s2;\n  uint uVar18;\n  uint uVar19;\n  int *unaff_s3;\n  int *unaff_s4;\n  int *unaff_s5;\n  int iVar20;\n  int *unaff_s6;\n  uint unaff_s7;\n  undefined *puVar21;\n  code *pcVar22;\n  undefined *puVar23;\n  code *pcVar24;\n  undefined1 *puVar25;\n  undefined1 *puVar26;\n  undefined1 *puVar27;\n  undefined1 *puVar28;\n  undefined4 uVar29;\n  undefined1 auStack_40 [16];\n  int *local_28;\n  int local_24;\n  \n  puVar25 = auStack_40;\n  puVar26 = auStack_40;\n  local_24 = *(int *)PTR___stack_chk_guard_0009b540;\n  iVar16 = param_2[1];\n  if (iVar16 < 1) {\n    if (iVar16 < 0) {\n      (*(code *)PTR___gmp_sqrt_of_negative_0009b1cc)();\n      goto LAB_000345b4;\n    }\n    param_1[1] = 0;\n  }\n  else {\n    unaff_s0 = (iVar16 + 1) / 2;\n    param_1[1] = unaff_s0;\n    unaff_s2 = (int *)param_2[2];\n    if (param_2 == param_1) {\nLAB_000345b4:\n      unaff_s4 = (int *)(unaff_s0 * 4);\n      local_28 = (int *)0x0;\n      if (unaff_s4 < (int *)0x7f01) {\n        iVar13 = -((int)unaff_s4 + 7U & 0xfffffff8);\n        puVar26 = auStack_40 + iVar13;\n        unaff_s3 = (int *)(&stack0xffffffd0 + iVar13);\n      }\n      else {\n        unaff_s3 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)(&local_28,unaff_s4);\n      }\n      param_2 = (int *)0x0;\n      param_3 = unaff_s2;\n      (*(code *)PTR___gmpn_sqrtrem_0009b0e0)(unaff_s3,0,unaff_s2,iVar16);\n      iVar13 = *unaff_s3;\n      if (unaff_s0 != 1) {\n        piVar10 = unaff_s3 + 1;\n        unaff_s3 = unaff_s3 + unaff_s0;\n        piVar12 = unaff_s2;\n        do {\n          *piVar12 = iVar13;\n          piVar9 = piVar10 + 1;\n          iVar13 = *piVar10;\n          piVar10 = piVar9;\n          piVar12 = piVar12 + 1;\n        } while (unaff_s3 != piVar9);\n        unaff_s4 = unaff_s4 + -1;\n        unaff_s2 = (int *)((int)unaff_s2 + (int)unaff_s4);\n      }\n      *unaff_s2 = iVar13;\n      param_1 = local_28;\n      puVar25 = puVar26;\n      if (local_28 != (int *)0x0) {\n        (*(code *)PTR___gmp_tmp_reentrant_free_0009b614)();\n      }\n    }\n    else {\n      if (*param_1 < unaff_s0) {\n        param_1 = (int *)(*(code *)PTR___gmpz_realloc_0009b5bc)(param_1,unaff_s0);\n      }\n      else {\n        param_1 = (int *)param_1[2];\n      }\n      param_2 = (int *)0x0;\n      param_3 = unaff_s2;\n      (*(code *)PTR___gmpn_sqrtrem_0009b0e0)();\n      puVar25 = auStack_40;\n    }\n  }\n  if (local_24 == *(int *)PTR___stack_chk_guard_0009b540) {\n    return;\n  }\n  uVar29 = 0x34694;\n  puVar21 = PTR___stack_chk_fail_0009b4d0;\n  (*(code *)PTR___stack_chk_fail_0009b4d0)();\n  puVar23 = puVar21 + 0x6e9a0;\n  puVar27 = puVar25 + -0x48;\n  puVar28 = puVar25 + -0x48;\n  *(undefined4 *)(puVar25 + -4) = uVar29;\n  *(undefined1 **)(puVar25 + -8) = auStack_40;\n  *(uint *)(puVar25 + -0xc) = unaff_s7;\n  *(int **)(puVar25 + -0x10) = unaff_s6;\n  *(int **)(puVar25 + -0x14) = unaff_s5;\n  *(int **)(puVar25 + -0x18) = unaff_s4;\n  *(int **)(puVar25 + -0x1c) = unaff_s3;\n  *(int **)(puVar25 + -0x20) = unaff_s2;\n  *(int *)(puVar25 + -0x24) = iVar16;\n  *(int *)(puVar25 + -0x28) = unaff_s0;\n  *(undefined **)(puVar25 + -0x38) = puVar23;\n  *(undefined4 *)(puVar25 + -0x2c) = **(undefined4 **)(puVar21 + 0x66ea0);\n  iVar16 = param_3[1];\n  if (iVar16 < 1) {\n    if (iVar16 < 0) {\n      (**(code **)(puVar21 + 0x66b2c))();\n      goto LAB_000347c8;\n    }\n    param_1[1] = 0;\n    param_2[1] = 0;\n    piVar10 = param_1;\n    piVar12 = param_2;\n  }\n  else {\n    unaff_s4 = param_3;\n    if (*param_2 < iVar16) {\nLAB_000347c8:\n      unaff_s5 = (int *)(**(code **)(puVar21 + 0x66f1c))(param_2,iVar16);\n      puVar23 = *(undefined **)(puVar25 + -0x38);\n    }\n    else {\n      unaff_s5 = (int *)param_2[2];\n    }\n    unaff_s0 = (iVar16 + 1) / 2;\n    param_1[1] = unaff_s0;\n    unaff_s6 = (int *)unaff_s4[2];\n    piVar12 = unaff_s5;\n    param_3 = unaff_s6;\n    if (unaff_s4 == param_1) {\n      unaff_s7 = unaff_s0 * 4;\n      *(undefined4 *)(puVar25 + -0x30) = 0;\n      if (unaff_s7 < 0x7f01) {\n        iVar13 = -(unaff_s7 + 7 & 0xfffffff8);\n        puVar28 = puVar25 + iVar13 + -0x48;\n        unaff_s4 = (int *)(puVar25 + iVar13 + -0x38);\n      }\n      else {\n        unaff_s4 = (int *)(**(code **)(puVar23 + -0x7d50))(puVar25 + -0x30,unaff_s7);\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n      }\n      iVar16 = (**(code **)(puVar23 + -0x7f60))(unaff_s4,unaff_s5,unaff_s6,iVar16);\n      puVar23 = *(undefined **)(puVar25 + -0x38);\n      if (param_1 != param_2) {\n        iVar13 = *unaff_s4;\n        if (unaff_s0 != 1) {\n          piVar10 = unaff_s4 + 1;\n          unaff_s4 = unaff_s4 + unaff_s0;\n          piVar9 = unaff_s6;\n          do {\n            *piVar9 = iVar13;\n            piVar3 = piVar10 + 1;\n            iVar13 = *piVar10;\n            piVar10 = piVar3;\n            piVar9 = piVar9 + 1;\n          } while (unaff_s4 != piVar3);\n          unaff_s7 = unaff_s7 - 4;\n          unaff_s6 = unaff_s6 + unaff_s0 + -1;\n        }\n        *unaff_s6 = iVar13;\n      }\n      piVar10 = *(int **)(puVar25 + -0x30);\n      if (piVar10 != (int *)0x0) {\n        (**(code **)(puVar23 + -0x7a2c))();\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n        param_2[1] = iVar16;\n        puVar27 = puVar28;\n        goto LAB_00034768;\n      }\n    }\n    else {\n      if (*param_1 < unaff_s0) {\n        piVar10 = (int *)(**(code **)(puVar23 + -0x7a84))(param_1,unaff_s0);\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n      }\n      else {\n        piVar10 = (int *)param_1[2];\n      }\n      iVar16 = (**(code **)(puVar23 + -0x7f60))();\n      puVar23 = *(undefined **)(puVar25 + -0x38);\n      puVar28 = puVar25 + -0x48;\n    }\n    param_2[1] = iVar16;\n    puVar27 = puVar28;\n  }\nLAB_00034768:\n  if (*(int *)(puVar25 + -0x2c) == **(int **)(puVar23 + -0x7b00)) {\n    return;\n  }\n  pcVar22 = *(code **)(puVar23 + -0x7b70);\n  uVar29 = 0x348d4;\n  (*pcVar22)();\n  pcVar24 = pcVar22 + 0x6e760;\n  *(undefined4 *)(puVar27 + -4) = uVar29;\n  *(uint *)(puVar27 + -8) = unaff_s7;\n  *(int **)(puVar27 + -0xc) = unaff_s6;\n  *(int **)(puVar27 + -0x10) = unaff_s5;\n  *(int **)(puVar27 + -0x14) = unaff_s4;\n  *(int **)(puVar27 + -0x18) = param_2;\n  *(int **)(puVar27 + -0x1c) = param_1;\n  *(int *)(puVar27 + -0x20) = iVar16;\n  *(int *)(puVar27 + -0x24) = unaff_s0;\n  *(code **)(puVar27 + -0x30) = pcVar24;\n  uVar18 = piVar12[1];\n  uVar4 = param_3[1];\n  uVar6 = -uVar4;\n  uVar17 = uVar18;\n  if ((int)uVar18 < 0) {\n    uVar17 = -uVar18;\n  }\n  if ((int)uVar4 < 0) {\n    uVar4 = -uVar4;\n  }\n  uVar14 = uVar4;\n  uVar19 = uVar18;\n  piVar9 = piVar12;\n  if ((int)uVar17 < (int)uVar4) {\n    uVar14 = uVar17;\n    uVar17 = uVar4;\n    uVar19 = uVar6;\n    piVar9 = param_3;\n    uVar6 = uVar18;\n    param_3 = piVar12;\n  }\n  if (*piVar10 < (int)(uVar17 + 1)) {\n    iVar16 = (**(code **)(pcVar22 + 0x66cdc))(piVar10);\n    pcVar24 = *(code **)(puVar27 + -0x30);\n  }\n  else {\n    iVar16 = piVar10[2];\n  }\n  iVar20 = piVar9[2];\n  iVar13 = param_3[2];\n  if ((int)(uVar19 ^ uVar6) < 0) {\n    if (uVar17 == uVar14) {\n      iVar15 = uVar17 * 4;\n      iVar11 = iVar20 + iVar15;\n      iVar8 = iVar13 + iVar15;\n      uVar6 = uVar17;\n      do {\n        uVar6 = uVar6 - 1;\n        if (uVar6 == 0xffffffff) goto LAB_00034bf8;\n        puVar1 = (uint *)(iVar11 + -4);\n        puVar2 = (uint *)(iVar8 + -4);\n        iVar11 = iVar11 + -4;\n        iVar8 = iVar8 + -4;\n      } while (*puVar1 == *puVar2);\n      if (*puVar2 < *puVar1) {\nLAB_00034bf8:\n        (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar20,iVar13,uVar17);\n        if ((0 < (int)uVar17) && (*(int *)(iVar16 + iVar15 + -4) == 0)) {\n          iVar16 = iVar16 + iVar15;\n          do {\n            uVar17 = uVar17 - 1;\n            if (uVar17 == 0) break;\n            piVar12 = (int *)(iVar16 + -8);\n            iVar16 = iVar16 + -4;\n          } while (*piVar12 == 0);\n        }\n        if ((int)uVar19 < 0) {\n          uVar17 = -uVar17;\n        }\n      }\n      else {\n        (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar13,iVar20);\n        if ((0 < (int)uVar17) && (*(int *)(iVar16 + iVar15 + -4) == 0)) {\n          iVar16 = iVar16 + iVar15;\n          do {\n            uVar17 = uVar17 - 1;\n            if (uVar17 == 0) break;\n            piVar12 = (int *)(iVar16 + -8);\n            iVar16 = iVar16 + -4;\n          } while (*piVar12 == 0);\n        }\n        if (-1 < (int)uVar19) {\n          uVar17 = -uVar17;\n        }\n      }\n      goto LAB_000349e8;\n    }\n    if (uVar14 == 0) {\nLAB_00034a50:\n      if ((iVar16 != iVar20) && ((int)uVar14 < (int)uVar17)) {\n        puVar5 = (undefined4 *)(iVar20 + uVar14 * 4);\n        puVar7 = (undefined4 *)(iVar16 + uVar14 * 4);\n        do {\n          *puVar7 = *puVar5;\n          puVar5 = puVar5 + 1;\n          puVar7 = puVar7 + 1;\n        } while (puVar5 != (undefined4 *)(iVar20 + uVar17 * 4));\n      }\n    }\n    else {\n      iVar13 = (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar20,iVar13,uVar14);\n      if (iVar13 == 0) goto LAB_00034a50;\n      if ((int)uVar14 < (int)uVar17) {\n        piVar12 = (int *)(iVar20 + uVar14 * 4);\n        iVar13 = *piVar12;\n        piVar9 = (int *)(iVar16 + uVar14 * 4);\n        *piVar9 = iVar13 + -1;\n        while (uVar14 = uVar14 + 1, iVar13 == 0) {\n          if (uVar17 == uVar14) goto LAB_00034a84;\n          iVar13 = piVar12[1];\n          piVar9[1] = iVar13 + -1;\n          piVar12 = piVar12 + 1;\n          piVar9 = piVar9 + 1;\n        }\n        goto LAB_00034a50;\n      }\n    }\nLAB_00034a84:\n    if ((0 < (int)uVar17) && (iVar13 = (uVar17 + 0x3fffffff) * 4, *(int *)(iVar16 + iVar13) == 0)) {\n      iVar16 = iVar16 + iVar13 + 4;\n      do {\n        uVar17 = uVar17 - 1;\n        if (uVar17 == 0) break;\n        piVar12 = (int *)(iVar16 + -8);\n        iVar16 = iVar16 + -4;\n      } while (*piVar12 == 0);\n    }\n    if ((int)uVar19 < 0) {\n      uVar17 = -uVar17;\n    }\n    goto LAB_000349e8;\n  }\n  if (uVar14 == 0) {\nLAB_0003499c:\n    if (iVar16 == iVar20) {\n      iVar13 = 0;\n    }\n    else if ((int)uVar14 < (int)uVar17) {\n      puVar7 = (undefined4 *)(iVar20 + uVar14 * 4);\n      puVar5 = (undefined4 *)(iVar16 + uVar14 * 4);\n      do {\n        *puVar5 = *puVar7;\n        puVar7 = puVar7 + 1;\n        puVar5 = puVar5 + 1;\n      } while (puVar7 != (undefined4 *)(iVar20 + uVar17 * 4));\n      iVar13 = 0;\n    }\n    else {\n      iVar13 = 0;\n    }\n  }\n  else {\n    iVar13 = (**(code **)(pcVar24 + -0x7d0c))(iVar16,iVar20,iVar13,uVar14);\n    if (iVar13 == 0) goto LAB_0003499c;\n    iVar13 = 1;\n    if ((int)uVar14 < (int)uVar17) {\n      piVar12 = (int *)(iVar20 + uVar14 * 4);\n      piVar9 = (int *)(iVar16 + uVar14 * 4);\n      iVar13 = *piVar12 + 1;\n      *piVar9 = iVar13;\n      while (uVar14 = uVar14 + 1, iVar13 == 0) {\n        if (uVar17 == uVar14) {\n          iVar13 = 1;\n          goto LAB_000349d4;\n        }\n        iVar13 = piVar12[1] + 1;\n        piVar9[1] = iVar13;\n        piVar12 = piVar12 + 1;\n        piVar9 = piVar9 + 1;\n      }\n      goto LAB_0003499c;\n    }\n  }\nLAB_000349d4:\n  *(int *)(iVar16 + uVar17 * 4) = iVar13;\n  uVar17 = uVar17 + iVar13;\n  if ((int)uVar19 < 0) {\n    uVar17 = -uVar17;\n  }\nLAB_000349e8:\n  piVar10[1] = uVar17;\n  return;\n}\n\n" (function_definition "void __gmpz_sqrt(int *param_1,int *param_2,int *param_3)\n\n{\n  uint *puVar1;\n  uint *puVar2;\n  int *piVar3;\n  uint uVar4;\n  undefined4 *puVar5;\n  uint uVar6;\n  undefined4 *puVar7;\n  int iVar8;\n  int *piVar9;\n  int *piVar10;\n  int iVar11;\n  int *piVar12;\n  int iVar13;\n  int unaff_s0;\n  uint uVar14;\n  int iVar15;\n  int iVar16;\n  uint uVar17;\n  int *unaff_s2;\n  uint uVar18;\n  uint uVar19;\n  int *unaff_s3;\n  int *unaff_s4;\n  int *unaff_s5;\n  int iVar20;\n  int *unaff_s6;\n  uint unaff_s7;\n  undefined *puVar21;\n  code *pcVar22;\n  undefined *puVar23;\n  code *pcVar24;\n  undefined1 *puVar25;\n  undefined1 *puVar26;\n  undefined1 *puVar27;\n  undefined1 *puVar28;\n  undefined4 uVar29;\n  undefined1 auStack_40 [16];\n  int *local_28;\n  int local_24;\n  \n  puVar25 = auStack_40;\n  puVar26 = auStack_40;\n  local_24 = *(int *)PTR___stack_chk_guard_0009b540;\n  iVar16 = param_2[1];\n  if (iVar16 < 1) {\n    if (iVar16 < 0) {\n      (*(code *)PTR___gmp_sqrt_of_negative_0009b1cc)();\n      goto LAB_000345b4;\n    }\n    param_1[1] = 0;\n  }\n  else {\n    unaff_s0 = (iVar16 + 1) / 2;\n    param_1[1] = unaff_s0;\n    unaff_s2 = (int *)param_2[2];\n    if (param_2 == param_1) {\nLAB_000345b4:\n      unaff_s4 = (int *)(unaff_s0 * 4);\n      local_28 = (int *)0x0;\n      if (unaff_s4 < (int *)0x7f01) {\n        iVar13 = -((int)unaff_s4 + 7U & 0xfffffff8);\n        puVar26 = auStack_40 + iVar13;\n        unaff_s3 = (int *)(&stack0xffffffd0 + iVar13);\n      }\n      else {\n        unaff_s3 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)(&local_28,unaff_s4);\n      }\n      param_2 = (int *)0x0;\n      param_3 = unaff_s2;\n      (*(code *)PTR___gmpn_sqrtrem_0009b0e0)(unaff_s3,0,unaff_s2,iVar16);\n      iVar13 = *unaff_s3;\n      if (unaff_s0 != 1) {\n        piVar10 = unaff_s3 + 1;\n        unaff_s3 = unaff_s3 + unaff_s0;\n        piVar12 = unaff_s2;\n        do {\n          *piVar12 = iVar13;\n          piVar9 = piVar10 + 1;\n          iVar13 = *piVar10;\n          piVar10 = piVar9;\n          piVar12 = piVar12 + 1;\n        } while (unaff_s3 != piVar9);\n        unaff_s4 = unaff_s4 + -1;\n        unaff_s2 = (int *)((int)unaff_s2 + (int)unaff_s4);\n      }\n      *unaff_s2 = iVar13;\n      param_1 = local_28;\n      puVar25 = puVar26;\n      if (local_28 != (int *)0x0) {\n        (*(code *)PTR___gmp_tmp_reentrant_free_0009b614)();\n      }\n    }\n    else {\n      if (*param_1 < unaff_s0) {\n        param_1 = (int *)(*(code *)PTR___gmpz_realloc_0009b5bc)(param_1,unaff_s0);\n      }\n      else {\n        param_1 = (int *)param_1[2];\n      }\n      param_2 = (int *)0x0;\n      param_3 = unaff_s2;\n      (*(code *)PTR___gmpn_sqrtrem_0009b0e0)();\n      puVar25 = auStack_40;\n    }\n  }\n  if (local_24 == *(int *)PTR___stack_chk_guard_0009b540) {\n    return;\n  }\n  uVar29 = 0x34694;\n  puVar21 = PTR___stack_chk_fail_0009b4d0;\n  (*(code *)PTR___stack_chk_fail_0009b4d0)();\n  puVar23 = puVar21 + 0x6e9a0;\n  puVar27 = puVar25 + -0x48;\n  puVar28 = puVar25 + -0x48;\n  *(undefined4 *)(puVar25 + -4) = uVar29;\n  *(undefined1 **)(puVar25 + -8) = auStack_40;\n  *(uint *)(puVar25 + -0xc) = unaff_s7;\n  *(int **)(puVar25 + -0x10) = unaff_s6;\n  *(int **)(puVar25 + -0x14) = unaff_s5;\n  *(int **)(puVar25 + -0x18) = unaff_s4;\n  *(int **)(puVar25 + -0x1c) = unaff_s3;\n  *(int **)(puVar25 + -0x20) = unaff_s2;\n  *(int *)(puVar25 + -0x24) = iVar16;\n  *(int *)(puVar25 + -0x28) = unaff_s0;\n  *(undefined **)(puVar25 + -0x38) = puVar23;\n  *(undefined4 *)(puVar25 + -0x2c) = **(undefined4 **)(puVar21 + 0x66ea0);\n  iVar16 = param_3[1];\n  if (iVar16 < 1) {\n    if (iVar16 < 0) {\n      (**(code **)(puVar21 + 0x66b2c))();\n      goto LAB_000347c8;\n    }\n    param_1[1] = 0;\n    param_2[1] = 0;\n    piVar10 = param_1;\n    piVar12 = param_2;\n  }\n  else {\n    unaff_s4 = param_3;\n    if (*param_2 < iVar16) {\nLAB_000347c8:\n      unaff_s5 = (int *)(**(code **)(puVar21 + 0x66f1c))(param_2,iVar16);\n      puVar23 = *(undefined **)(puVar25 + -0x38);\n    }\n    else {\n      unaff_s5 = (int *)param_2[2];\n    }\n    unaff_s0 = (iVar16 + 1) / 2;\n    param_1[1] = unaff_s0;\n    unaff_s6 = (int *)unaff_s4[2];\n    piVar12 = unaff_s5;\n    param_3 = unaff_s6;\n    if (unaff_s4 == param_1) {\n      unaff_s7 = unaff_s0 * 4;\n      *(undefined4 *)(puVar25 + -0x30) = 0;\n      if (unaff_s7 < 0x7f01) {\n        iVar13 = -(unaff_s7 + 7 & 0xfffffff8);\n        puVar28 = puVar25 + iVar13 + -0x48;\n        unaff_s4 = (int *)(puVar25 + iVar13 + -0x38);\n      }\n      else {\n        unaff_s4 = (int *)(**(code **)(puVar23 + -0x7d50))(puVar25 + -0x30,unaff_s7);\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n      }\n      iVar16 = (**(code **)(puVar23 + -0x7f60))(unaff_s4,unaff_s5,unaff_s6,iVar16);\n      puVar23 = *(undefined **)(puVar25 + -0x38);\n      if (param_1 != param_2) {\n        iVar13 = *unaff_s4;\n        if (unaff_s0 != 1) {\n          piVar10 = unaff_s4 + 1;\n          unaff_s4 = unaff_s4 + unaff_s0;\n          piVar9 = unaff_s6;\n          do {\n            *piVar9 = iVar13;\n            piVar3 = piVar10 + 1;\n            iVar13 = *piVar10;\n            piVar10 = piVar3;\n            piVar9 = piVar9 + 1;\n          } while (unaff_s4 != piVar3);\n          unaff_s7 = unaff_s7 - 4;\n          unaff_s6 = unaff_s6 + unaff_s0 + -1;\n        }\n        *unaff_s6 = iVar13;\n      }\n      piVar10 = *(int **)(puVar25 + -0x30);\n      if (piVar10 != (int *)0x0) {\n        (**(code **)(puVar23 + -0x7a2c))();\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n        param_2[1] = iVar16;\n        puVar27 = puVar28;\n        goto LAB_00034768;\n      }\n    }\n    else {\n      if (*param_1 < unaff_s0) {\n        piVar10 = (int *)(**(code **)(puVar23 + -0x7a84))(param_1,unaff_s0);\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n      }\n      else {\n        piVar10 = (int *)param_1[2];\n      }\n      iVar16 = (**(code **)(puVar23 + -0x7f60))();\n      puVar23 = *(undefined **)(puVar25 + -0x38);\n      puVar28 = puVar25 + -0x48;\n    }\n    param_2[1] = iVar16;\n    puVar27 = puVar28;\n  }\nLAB_00034768:\n  if (*(int *)(puVar25 + -0x2c) == **(int **)(puVar23 + -0x7b00)) {\n    return;\n  }\n  pcVar22 = *(code **)(puVar23 + -0x7b70);\n  uVar29 = 0x348d4;\n  (*pcVar22)();\n  pcVar24 = pcVar22 + 0x6e760;\n  *(undefined4 *)(puVar27 + -4) = uVar29;\n  *(uint *)(puVar27 + -8) = unaff_s7;\n  *(int **)(puVar27 + -0xc) = unaff_s6;\n  *(int **)(puVar27 + -0x10) = unaff_s5;\n  *(int **)(puVar27 + -0x14) = unaff_s4;\n  *(int **)(puVar27 + -0x18) = param_2;\n  *(int **)(puVar27 + -0x1c) = param_1;\n  *(int *)(puVar27 + -0x20) = iVar16;\n  *(int *)(puVar27 + -0x24) = unaff_s0;\n  *(code **)(puVar27 + -0x30) = pcVar24;\n  uVar18 = piVar12[1];\n  uVar4 = param_3[1];\n  uVar6 = -uVar4;\n  uVar17 = uVar18;\n  if ((int)uVar18 < 0) {\n    uVar17 = -uVar18;\n  }\n  if ((int)uVar4 < 0) {\n    uVar4 = -uVar4;\n  }\n  uVar14 = uVar4;\n  uVar19 = uVar18;\n  piVar9 = piVar12;\n  if ((int)uVar17 < (int)uVar4) {\n    uVar14 = uVar17;\n    uVar17 = uVar4;\n    uVar19 = uVar6;\n    piVar9 = param_3;\n    uVar6 = uVar18;\n    param_3 = piVar12;\n  }\n  if (*piVar10 < (int)(uVar17 + 1)) {\n    iVar16 = (**(code **)(pcVar22 + 0x66cdc))(piVar10);\n    pcVar24 = *(code **)(puVar27 + -0x30);\n  }\n  else {\n    iVar16 = piVar10[2];\n  }\n  iVar20 = piVar9[2];\n  iVar13 = param_3[2];\n  if ((int)(uVar19 ^ uVar6) < 0) {\n    if (uVar17 == uVar14) {\n      iVar15 = uVar17 * 4;\n      iVar11 = iVar20 + iVar15;\n      iVar8 = iVar13 + iVar15;\n      uVar6 = uVar17;\n      do {\n        uVar6 = uVar6 - 1;\n        if (uVar6 == 0xffffffff) goto LAB_00034bf8;\n        puVar1 = (uint *)(iVar11 + -4);\n        puVar2 = (uint *)(iVar8 + -4);\n        iVar11 = iVar11 + -4;\n        iVar8 = iVar8 + -4;\n      } while (*puVar1 == *puVar2);\n      if (*puVar2 < *puVar1) {\nLAB_00034bf8:\n        (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar20,iVar13,uVar17);\n        if ((0 < (int)uVar17) && (*(int *)(iVar16 + iVar15 + -4) == 0)) {\n          iVar16 = iVar16 + iVar15;\n          do {\n            uVar17 = uVar17 - 1;\n            if (uVar17 == 0) break;\n            piVar12 = (int *)(iVar16 + -8);\n            iVar16 = iVar16 + -4;\n          } while (*piVar12 == 0);\n        }\n        if ((int)uVar19 < 0) {\n          uVar17 = -uVar17;\n        }\n      }\n      else {\n        (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar13,iVar20);\n        if ((0 < (int)uVar17) && (*(int *)(iVar16 + iVar15 + -4) == 0)) {\n          iVar16 = iVar16 + iVar15;\n          do {\n            uVar17 = uVar17 - 1;\n            if (uVar17 == 0) break;\n            piVar12 = (int *)(iVar16 + -8);\n            iVar16 = iVar16 + -4;\n          } while (*piVar12 == 0);\n        }\n        if (-1 < (int)uVar19) {\n          uVar17 = -uVar17;\n        }\n      }\n      goto LAB_000349e8;\n    }\n    if (uVar14 == 0) {\nLAB_00034a50:\n      if ((iVar16 != iVar20) && ((int)uVar14 < (int)uVar17)) {\n        puVar5 = (undefined4 *)(iVar20 + uVar14 * 4);\n        puVar7 = (undefined4 *)(iVar16 + uVar14 * 4);\n        do {\n          *puVar7 = *puVar5;\n          puVar5 = puVar5 + 1;\n          puVar7 = puVar7 + 1;\n        } while (puVar5 != (undefined4 *)(iVar20 + uVar17 * 4));\n      }\n    }\n    else {\n      iVar13 = (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar20,iVar13,uVar14);\n      if (iVar13 == 0) goto LAB_00034a50;\n      if ((int)uVar14 < (int)uVar17) {\n        piVar12 = (int *)(iVar20 + uVar14 * 4);\n        iVar13 = *piVar12;\n        piVar9 = (int *)(iVar16 + uVar14 * 4);\n        *piVar9 = iVar13 + -1;\n        while (uVar14 = uVar14 + 1, iVar13 == 0) {\n          if (uVar17 == uVar14) goto LAB_00034a84;\n          iVar13 = piVar12[1];\n          piVar9[1] = iVar13 + -1;\n          piVar12 = piVar12 + 1;\n          piVar9 = piVar9 + 1;\n        }\n        goto LAB_00034a50;\n      }\n    }\nLAB_00034a84:\n    if ((0 < (int)uVar17) && (iVar13 = (uVar17 + 0x3fffffff) * 4, *(int *)(iVar16 + iVar13) == 0)) {\n      iVar16 = iVar16 + iVar13 + 4;\n      do {\n        uVar17 = uVar17 - 1;\n        if (uVar17 == 0) break;\n        piVar12 = (int *)(iVar16 + -8);\n        iVar16 = iVar16 + -4;\n      } while (*piVar12 == 0);\n    }\n    if ((int)uVar19 < 0) {\n      uVar17 = -uVar17;\n    }\n    goto LAB_000349e8;\n  }\n  if (uVar14 == 0) {\nLAB_0003499c:\n    if (iVar16 == iVar20) {\n      iVar13 = 0;\n    }\n    else if ((int)uVar14 < (int)uVar17) {\n      puVar7 = (undefined4 *)(iVar20 + uVar14 * 4);\n      puVar5 = (undefined4 *)(iVar16 + uVar14 * 4);\n      do {\n        *puVar5 = *puVar7;\n        puVar7 = puVar7 + 1;\n        puVar5 = puVar5 + 1;\n      } while (puVar7 != (undefined4 *)(iVar20 + uVar17 * 4));\n      iVar13 = 0;\n    }\n    else {\n      iVar13 = 0;\n    }\n  }\n  else {\n    iVar13 = (**(code **)(pcVar24 + -0x7d0c))(iVar16,iVar20,iVar13,uVar14);\n    if (iVar13 == 0) goto LAB_0003499c;\n    iVar13 = 1;\n    if ((int)uVar14 < (int)uVar17) {\n      piVar12 = (int *)(iVar20 + uVar14 * 4);\n      piVar9 = (int *)(iVar16 + uVar14 * 4);\n      iVar13 = *piVar12 + 1;\n      *piVar9 = iVar13;\n      while (uVar14 = uVar14 + 1, iVar13 == 0) {\n        if (uVar17 == uVar14) {\n          iVar13 = 1;\n          goto LAB_000349d4;\n        }\n        iVar13 = piVar12[1] + 1;\n        piVar9[1] = iVar13;\n        piVar12 = piVar12 + 1;\n        piVar9 = piVar9 + 1;\n      }\n      goto LAB_0003499c;\n    }\n  }\nLAB_000349d4:\n  *(int *)(iVar16 + uVar17 * 4) = iVar13;\n  uVar17 = uVar17 + iVar13;\n  if ((int)uVar19 < 0) {\n    uVar17 = -uVar17;\n  }\nLAB_000349e8:\n  piVar10[1] = uVar17;\n  return;\n}" primitive_type (function_declarator "__gmpz_sqrt(int *param_1,int *param_2,int *param_3)" identifier (parameter_list "(int *param_1,int *param_2,int *param_3)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  uint *puVar1;\n  uint *puVar2;\n  int *piVar3;\n  uint uVar4;\n  undefined4 *puVar5;\n  uint uVar6;\n  undefined4 *puVar7;\n  int iVar8;\n  int *piVar9;\n  int *piVar10;\n  int iVar11;\n  int *piVar12;\n  int iVar13;\n  int unaff_s0;\n  uint uVar14;\n  int iVar15;\n  int iVar16;\n  uint uVar17;\n  int *unaff_s2;\n  uint uVar18;\n  uint uVar19;\n  int *unaff_s3;\n  int *unaff_s4;\n  int *unaff_s5;\n  int iVar20;\n  int *unaff_s6;\n  uint unaff_s7;\n  undefined *puVar21;\n  code *pcVar22;\n  undefined *puVar23;\n  code *pcVar24;\n  undefined1 *puVar25;\n  undefined1 *puVar26;\n  undefined1 *puVar27;\n  undefined1 *puVar28;\n  undefined4 uVar29;\n  undefined1 auStack_40 [16];\n  int *local_28;\n  int local_24;\n  \n  puVar25 = auStack_40;\n  puVar26 = auStack_40;\n  local_24 = *(int *)PTR___stack_chk_guard_0009b540;\n  iVar16 = param_2[1];\n  if (iVar16 < 1) {\n    if (iVar16 < 0) {\n      (*(code *)PTR___gmp_sqrt_of_negative_0009b1cc)();\n      goto LAB_000345b4;\n    }\n    param_1[1] = 0;\n  }\n  else {\n    unaff_s0 = (iVar16 + 1) / 2;\n    param_1[1] = unaff_s0;\n    unaff_s2 = (int *)param_2[2];\n    if (param_2 == param_1) {\nLAB_000345b4:\n      unaff_s4 = (int *)(unaff_s0 * 4);\n      local_28 = (int *)0x0;\n      if (unaff_s4 < (int *)0x7f01) {\n        iVar13 = -((int)unaff_s4 + 7U & 0xfffffff8);\n        puVar26 = auStack_40 + iVar13;\n        unaff_s3 = (int *)(&stack0xffffffd0 + iVar13);\n      }\n      else {\n        unaff_s3 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)(&local_28,unaff_s4);\n      }\n      param_2 = (int *)0x0;\n      param_3 = unaff_s2;\n      (*(code *)PTR___gmpn_sqrtrem_0009b0e0)(unaff_s3,0,unaff_s2,iVar16);\n      iVar13 = *unaff_s3;\n      if (unaff_s0 != 1) {\n        piVar10 = unaff_s3 + 1;\n        unaff_s3 = unaff_s3 + unaff_s0;\n        piVar12 = unaff_s2;\n        do {\n          *piVar12 = iVar13;\n          piVar9 = piVar10 + 1;\n          iVar13 = *piVar10;\n          piVar10 = piVar9;\n          piVar12 = piVar12 + 1;\n        } while (unaff_s3 != piVar9);\n        unaff_s4 = unaff_s4 + -1;\n        unaff_s2 = (int *)((int)unaff_s2 + (int)unaff_s4);\n      }\n      *unaff_s2 = iVar13;\n      param_1 = local_28;\n      puVar25 = puVar26;\n      if (local_28 != (int *)0x0) {\n        (*(code *)PTR___gmp_tmp_reentrant_free_0009b614)();\n      }\n    }\n    else {\n      if (*param_1 < unaff_s0) {\n        param_1 = (int *)(*(code *)PTR___gmpz_realloc_0009b5bc)(param_1,unaff_s0);\n      }\n      else {\n        param_1 = (int *)param_1[2];\n      }\n      param_2 = (int *)0x0;\n      param_3 = unaff_s2;\n      (*(code *)PTR___gmpn_sqrtrem_0009b0e0)();\n      puVar25 = auStack_40;\n    }\n  }\n  if (local_24 == *(int *)PTR___stack_chk_guard_0009b540) {\n    return;\n  }\n  uVar29 = 0x34694;\n  puVar21 = PTR___stack_chk_fail_0009b4d0;\n  (*(code *)PTR___stack_chk_fail_0009b4d0)();\n  puVar23 = puVar21 + 0x6e9a0;\n  puVar27 = puVar25 + -0x48;\n  puVar28 = puVar25 + -0x48;\n  *(undefined4 *)(puVar25 + -4) = uVar29;\n  *(undefined1 **)(puVar25 + -8) = auStack_40;\n  *(uint *)(puVar25 + -0xc) = unaff_s7;\n  *(int **)(puVar25 + -0x10) = unaff_s6;\n  *(int **)(puVar25 + -0x14) = unaff_s5;\n  *(int **)(puVar25 + -0x18) = unaff_s4;\n  *(int **)(puVar25 + -0x1c) = unaff_s3;\n  *(int **)(puVar25 + -0x20) = unaff_s2;\n  *(int *)(puVar25 + -0x24) = iVar16;\n  *(int *)(puVar25 + -0x28) = unaff_s0;\n  *(undefined **)(puVar25 + -0x38) = puVar23;\n  *(undefined4 *)(puVar25 + -0x2c) = **(undefined4 **)(puVar21 + 0x66ea0);\n  iVar16 = param_3[1];\n  if (iVar16 < 1) {\n    if (iVar16 < 0) {\n      (**(code **)(puVar21 + 0x66b2c))();\n      goto LAB_000347c8;\n    }\n    param_1[1] = 0;\n    param_2[1] = 0;\n    piVar10 = param_1;\n    piVar12 = param_2;\n  }\n  else {\n    unaff_s4 = param_3;\n    if (*param_2 < iVar16) {\nLAB_000347c8:\n      unaff_s5 = (int *)(**(code **)(puVar21 + 0x66f1c))(param_2,iVar16);\n      puVar23 = *(undefined **)(puVar25 + -0x38);\n    }\n    else {\n      unaff_s5 = (int *)param_2[2];\n    }\n    unaff_s0 = (iVar16 + 1) / 2;\n    param_1[1] = unaff_s0;\n    unaff_s6 = (int *)unaff_s4[2];\n    piVar12 = unaff_s5;\n    param_3 = unaff_s6;\n    if (unaff_s4 == param_1) {\n      unaff_s7 = unaff_s0 * 4;\n      *(undefined4 *)(puVar25 + -0x30) = 0;\n      if (unaff_s7 < 0x7f01) {\n        iVar13 = -(unaff_s7 + 7 & 0xfffffff8);\n        puVar28 = puVar25 + iVar13 + -0x48;\n        unaff_s4 = (int *)(puVar25 + iVar13 + -0x38);\n      }\n      else {\n        unaff_s4 = (int *)(**(code **)(puVar23 + -0x7d50))(puVar25 + -0x30,unaff_s7);\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n      }\n      iVar16 = (**(code **)(puVar23 + -0x7f60))(unaff_s4,unaff_s5,unaff_s6,iVar16);\n      puVar23 = *(undefined **)(puVar25 + -0x38);\n      if (param_1 != param_2) {\n        iVar13 = *unaff_s4;\n        if (unaff_s0 != 1) {\n          piVar10 = unaff_s4 + 1;\n          unaff_s4 = unaff_s4 + unaff_s0;\n          piVar9 = unaff_s6;\n          do {\n            *piVar9 = iVar13;\n            piVar3 = piVar10 + 1;\n            iVar13 = *piVar10;\n            piVar10 = piVar3;\n            piVar9 = piVar9 + 1;\n          } while (unaff_s4 != piVar3);\n          unaff_s7 = unaff_s7 - 4;\n          unaff_s6 = unaff_s6 + unaff_s0 + -1;\n        }\n        *unaff_s6 = iVar13;\n      }\n      piVar10 = *(int **)(puVar25 + -0x30);\n      if (piVar10 != (int *)0x0) {\n        (**(code **)(puVar23 + -0x7a2c))();\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n        param_2[1] = iVar16;\n        puVar27 = puVar28;\n        goto LAB_00034768;\n      }\n    }\n    else {\n      if (*param_1 < unaff_s0) {\n        piVar10 = (int *)(**(code **)(puVar23 + -0x7a84))(param_1,unaff_s0);\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n      }\n      else {\n        piVar10 = (int *)param_1[2];\n      }\n      iVar16 = (**(code **)(puVar23 + -0x7f60))();\n      puVar23 = *(undefined **)(puVar25 + -0x38);\n      puVar28 = puVar25 + -0x48;\n    }\n    param_2[1] = iVar16;\n    puVar27 = puVar28;\n  }\nLAB_00034768:\n  if (*(int *)(puVar25 + -0x2c) == **(int **)(puVar23 + -0x7b00)) {\n    return;\n  }\n  pcVar22 = *(code **)(puVar23 + -0x7b70);\n  uVar29 = 0x348d4;\n  (*pcVar22)();\n  pcVar24 = pcVar22 + 0x6e760;\n  *(undefined4 *)(puVar27 + -4) = uVar29;\n  *(uint *)(puVar27 + -8) = unaff_s7;\n  *(int **)(puVar27 + -0xc) = unaff_s6;\n  *(int **)(puVar27 + -0x10) = unaff_s5;\n  *(int **)(puVar27 + -0x14) = unaff_s4;\n  *(int **)(puVar27 + -0x18) = param_2;\n  *(int **)(puVar27 + -0x1c) = param_1;\n  *(int *)(puVar27 + -0x20) = iVar16;\n  *(int *)(puVar27 + -0x24) = unaff_s0;\n  *(code **)(puVar27 + -0x30) = pcVar24;\n  uVar18 = piVar12[1];\n  uVar4 = param_3[1];\n  uVar6 = -uVar4;\n  uVar17 = uVar18;\n  if ((int)uVar18 < 0) {\n    uVar17 = -uVar18;\n  }\n  if ((int)uVar4 < 0) {\n    uVar4 = -uVar4;\n  }\n  uVar14 = uVar4;\n  uVar19 = uVar18;\n  piVar9 = piVar12;\n  if ((int)uVar17 < (int)uVar4) {\n    uVar14 = uVar17;\n    uVar17 = uVar4;\n    uVar19 = uVar6;\n    piVar9 = param_3;\n    uVar6 = uVar18;\n    param_3 = piVar12;\n  }\n  if (*piVar10 < (int)(uVar17 + 1)) {\n    iVar16 = (**(code **)(pcVar22 + 0x66cdc))(piVar10);\n    pcVar24 = *(code **)(puVar27 + -0x30);\n  }\n  else {\n    iVar16 = piVar10[2];\n  }\n  iVar20 = piVar9[2];\n  iVar13 = param_3[2];\n  if ((int)(uVar19 ^ uVar6) < 0) {\n    if (uVar17 == uVar14) {\n      iVar15 = uVar17 * 4;\n      iVar11 = iVar20 + iVar15;\n      iVar8 = iVar13 + iVar15;\n      uVar6 = uVar17;\n      do {\n        uVar6 = uVar6 - 1;\n        if (uVar6 == 0xffffffff) goto LAB_00034bf8;\n        puVar1 = (uint *)(iVar11 + -4);\n        puVar2 = (uint *)(iVar8 + -4);\n        iVar11 = iVar11 + -4;\n        iVar8 = iVar8 + -4;\n      } while (*puVar1 == *puVar2);\n      if (*puVar2 < *puVar1) {\nLAB_00034bf8:\n        (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar20,iVar13,uVar17);\n        if ((0 < (int)uVar17) && (*(int *)(iVar16 + iVar15 + -4) == 0)) {\n          iVar16 = iVar16 + iVar15;\n          do {\n            uVar17 = uVar17 - 1;\n            if (uVar17 == 0) break;\n            piVar12 = (int *)(iVar16 + -8);\n            iVar16 = iVar16 + -4;\n          } while (*piVar12 == 0);\n        }\n        if ((int)uVar19 < 0) {\n          uVar17 = -uVar17;\n        }\n      }\n      else {\n        (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar13,iVar20);\n        if ((0 < (int)uVar17) && (*(int *)(iVar16 + iVar15 + -4) == 0)) {\n          iVar16 = iVar16 + iVar15;\n          do {\n            uVar17 = uVar17 - 1;\n            if (uVar17 == 0) break;\n            piVar12 = (int *)(iVar16 + -8);\n            iVar16 = iVar16 + -4;\n          } while (*piVar12 == 0);\n        }\n        if (-1 < (int)uVar19) {\n          uVar17 = -uVar17;\n        }\n      }\n      goto LAB_000349e8;\n    }\n    if (uVar14 == 0) {\nLAB_00034a50:\n      if ((iVar16 != iVar20) && ((int)uVar14 < (int)uVar17)) {\n        puVar5 = (undefined4 *)(iVar20 + uVar14 * 4);\n        puVar7 = (undefined4 *)(iVar16 + uVar14 * 4);\n        do {\n          *puVar7 = *puVar5;\n          puVar5 = puVar5 + 1;\n          puVar7 = puVar7 + 1;\n        } while (puVar5 != (undefined4 *)(iVar20 + uVar17 * 4));\n      }\n    }\n    else {\n      iVar13 = (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar20,iVar13,uVar14);\n      if (iVar13 == 0) goto LAB_00034a50;\n      if ((int)uVar14 < (int)uVar17) {\n        piVar12 = (int *)(iVar20 + uVar14 * 4);\n        iVar13 = *piVar12;\n        piVar9 = (int *)(iVar16 + uVar14 * 4);\n        *piVar9 = iVar13 + -1;\n        while (uVar14 = uVar14 + 1, iVar13 == 0) {\n          if (uVar17 == uVar14) goto LAB_00034a84;\n          iVar13 = piVar12[1];\n          piVar9[1] = iVar13 + -1;\n          piVar12 = piVar12 + 1;\n          piVar9 = piVar9 + 1;\n        }\n        goto LAB_00034a50;\n      }\n    }\nLAB_00034a84:\n    if ((0 < (int)uVar17) && (iVar13 = (uVar17 + 0x3fffffff) * 4, *(int *)(iVar16 + iVar13) == 0)) {\n      iVar16 = iVar16 + iVar13 + 4;\n      do {\n        uVar17 = uVar17 - 1;\n        if (uVar17 == 0) break;\n        piVar12 = (int *)(iVar16 + -8);\n        iVar16 = iVar16 + -4;\n      } while (*piVar12 == 0);\n    }\n    if ((int)uVar19 < 0) {\n      uVar17 = -uVar17;\n    }\n    goto LAB_000349e8;\n  }\n  if (uVar14 == 0) {\nLAB_0003499c:\n    if (iVar16 == iVar20) {\n      iVar13 = 0;\n    }\n    else if ((int)uVar14 < (int)uVar17) {\n      puVar7 = (undefined4 *)(iVar20 + uVar14 * 4);\n      puVar5 = (undefined4 *)(iVar16 + uVar14 * 4);\n      do {\n        *puVar5 = *puVar7;\n        puVar7 = puVar7 + 1;\n        puVar5 = puVar5 + 1;\n      } while (puVar7 != (undefined4 *)(iVar20 + uVar17 * 4));\n      iVar13 = 0;\n    }\n    else {\n      iVar13 = 0;\n    }\n  }\n  else {\n    iVar13 = (**(code **)(pcVar24 + -0x7d0c))(iVar16,iVar20,iVar13,uVar14);\n    if (iVar13 == 0) goto LAB_0003499c;\n    iVar13 = 1;\n    if ((int)uVar14 < (int)uVar17) {\n      piVar12 = (int *)(iVar20 + uVar14 * 4);\n      piVar9 = (int *)(iVar16 + uVar14 * 4);\n      iVar13 = *piVar12 + 1;\n      *piVar9 = iVar13;\n      while (uVar14 = uVar14 + 1, iVar13 == 0) {\n        if (uVar17 == uVar14) {\n          iVar13 = 1;\n          goto LAB_000349d4;\n        }\n        iVar13 = piVar12[1] + 1;\n        piVar9[1] = iVar13;\n        piVar12 = piVar12 + 1;\n        piVar9 = piVar9 + 1;\n      }\n      goto LAB_0003499c;\n    }\n  }\nLAB_000349d4:\n  *(int *)(iVar16 + uVar17 * 4) = iVar13;\n  uVar17 = uVar17 + iVar13;\n  if ((int)uVar19 < 0) {\n    uVar17 = -uVar17;\n  }\nLAB_000349e8:\n  piVar10[1] = uVar17;\n  return;\n}" { (declaration "uint *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "uint *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "undefined4 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "undefined4 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "int *piVar10;" primitive_type (pointer_declarator "*piVar10" * identifier) ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "int *piVar12;" primitive_type (pointer_declarator "*piVar12" * identifier) ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "int unaff_s0;" primitive_type identifier ;) (declaration "uint uVar14;" type_identifier identifier ;) (declaration "int iVar15;" primitive_type identifier ;) (declaration "int iVar16;" primitive_type identifier ;) (declaration "uint uVar17;" type_identifier identifier ;) (declaration "int *unaff_s2;" primitive_type (pointer_declarator "*unaff_s2" * identifier) ;) (declaration "uint uVar18;" type_identifier identifier ;) (declaration "uint uVar19;" type_identifier identifier ;) (declaration "int *unaff_s3;" primitive_type (pointer_declarator "*unaff_s3" * identifier) ;) (declaration "int *unaff_s4;" primitive_type (pointer_declarator "*unaff_s4" * identifier) ;) (declaration "int *unaff_s5;" primitive_type (pointer_declarator "*unaff_s5" * identifier) ;) (declaration "int iVar20;" primitive_type identifier ;) (declaration "int *unaff_s6;" primitive_type (pointer_declarator "*unaff_s6" * identifier) ;) (declaration "uint unaff_s7;" type_identifier identifier ;) (declaration "undefined *puVar21;" type_identifier (pointer_declarator "*puVar21" * identifier) ;) (declaration "code *pcVar22;" type_identifier (pointer_declarator "*pcVar22" * identifier) ;) (declaration "undefined *puVar23;" type_identifier (pointer_declarator "*puVar23" * identifier) ;) (declaration "code *pcVar24;" type_identifier (pointer_declarator "*pcVar24" * identifier) ;) (declaration "undefined1 *puVar25;" type_identifier (pointer_declarator "*puVar25" * identifier) ;) (declaration "undefined1 *puVar26;" type_identifier (pointer_declarator "*puVar26" * identifier) ;) (declaration "undefined1 *puVar27;" type_identifier (pointer_declarator "*puVar27" * identifier) ;) (declaration "undefined1 *puVar28;" type_identifier (pointer_declarator "*puVar28" * identifier) ;) (declaration "undefined4 uVar29;" type_identifier identifier ;) (declaration "undefined1 auStack_40 [16];" type_identifier (array_declarator "auStack_40 [16]" identifier [ number_literal ]) ;) (declaration "int *local_28;" primitive_type (pointer_declarator "*local_28" * identifier) ;) (declaration "int local_24;" primitive_type identifier ;) (expression_statement "puVar25 = auStack_40;" (assignment_expression "puVar25 = auStack_40" identifier = identifier) ;) (expression_statement "puVar26 = auStack_40;" (assignment_expression "puVar26 = auStack_40" identifier = identifier) ;) (expression_statement "local_24 = *(int *)PTR___stack_chk_guard_0009b540;" (assignment_expression "local_24 = *(int *)PTR___stack_chk_guard_0009b540" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_0009b540" * (cast_expression "(int *)PTR___stack_chk_guard_0009b540" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "iVar16 = param_2[1];" (assignment_expression "iVar16 = param_2[1]" identifier = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (if_statement "if (iVar16 < 1) {\n    if (iVar16 < 0) {\n      (*(code *)PTR___gmp_sqrt_of_negative_0009b1cc)();\n      goto LAB_000345b4;\n    }\n    param_1[1] = 0;\n  }\n  else {\n    unaff_s0 = (iVar16 + 1) / 2;\n    param_1[1] = unaff_s0;\n    unaff_s2 = (int *)param_2[2];\n    if (param_2 == param_1) {\nLAB_000345b4:\n      unaff_s4 = (int *)(unaff_s0 * 4);\n      local_28 = (int *)0x0;\n      if (unaff_s4 < (int *)0x7f01) {\n        iVar13 = -((int)unaff_s4 + 7U & 0xfffffff8);\n        puVar26 = auStack_40 + iVar13;\n        unaff_s3 = (int *)(&stack0xffffffd0 + iVar13);\n      }\n      else {\n        unaff_s3 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)(&local_28,unaff_s4);\n      }\n      param_2 = (int *)0x0;\n      param_3 = unaff_s2;\n      (*(code *)PTR___gmpn_sqrtrem_0009b0e0)(unaff_s3,0,unaff_s2,iVar16);\n      iVar13 = *unaff_s3;\n      if (unaff_s0 != 1) {\n        piVar10 = unaff_s3 + 1;\n        unaff_s3 = unaff_s3 + unaff_s0;\n        piVar12 = unaff_s2;\n        do {\n          *piVar12 = iVar13;\n          piVar9 = piVar10 + 1;\n          iVar13 = *piVar10;\n          piVar10 = piVar9;\n          piVar12 = piVar12 + 1;\n        } while (unaff_s3 != piVar9);\n        unaff_s4 = unaff_s4 + -1;\n        unaff_s2 = (int *)((int)unaff_s2 + (int)unaff_s4);\n      }\n      *unaff_s2 = iVar13;\n      param_1 = local_28;\n      puVar25 = puVar26;\n      if (local_28 != (int *)0x0) {\n        (*(code *)PTR___gmp_tmp_reentrant_free_0009b614)();\n      }\n    }\n    else {\n      if (*param_1 < unaff_s0) {\n        param_1 = (int *)(*(code *)PTR___gmpz_realloc_0009b5bc)(param_1,unaff_s0);\n      }\n      else {\n        param_1 = (int *)param_1[2];\n      }\n      param_2 = (int *)0x0;\n      param_3 = unaff_s2;\n      (*(code *)PTR___gmpn_sqrtrem_0009b0e0)();\n      puVar25 = auStack_40;\n    }\n  }" if (parenthesized_expression "(iVar16 < 1)" ( (binary_expression "iVar16 < 1" identifier < number_literal) )) (compound_statement "{\n    if (iVar16 < 0) {\n      (*(code *)PTR___gmp_sqrt_of_negative_0009b1cc)();\n      goto LAB_000345b4;\n    }\n    param_1[1] = 0;\n  }" { (if_statement "if (iVar16 < 0) {\n      (*(code *)PTR___gmp_sqrt_of_negative_0009b1cc)();\n      goto LAB_000345b4;\n    }" if (parenthesized_expression "(iVar16 < 0)" ( (binary_expression "iVar16 < 0" identifier < number_literal) )) (compound_statement "{\n      (*(code *)PTR___gmp_sqrt_of_negative_0009b1cc)();\n      goto LAB_000345b4;\n    }" { (expression_statement "(*(code *)PTR___gmp_sqrt_of_negative_0009b1cc)();" (call_expression "(*(code *)PTR___gmp_sqrt_of_negative_0009b1cc)()" (parenthesized_expression "(*(code *)PTR___gmp_sqrt_of_negative_0009b1cc)" ( (pointer_expression "*(code *)PTR___gmp_sqrt_of_negative_0009b1cc" * (cast_expression "(code *)PTR___gmp_sqrt_of_negative_0009b1cc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (goto_statement "goto LAB_000345b4;" goto statement_identifier ;) })) (expression_statement "param_1[1] = 0;" (assignment_expression "param_1[1] = 0" (subscript_expression "param_1[1]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else {\n    unaff_s0 = (iVar16 + 1) / 2;\n    param_1[1] = unaff_s0;\n    unaff_s2 = (int *)param_2[2];\n    if (param_2 == param_1) {\nLAB_000345b4:\n      unaff_s4 = (int *)(unaff_s0 * 4);\n      local_28 = (int *)0x0;\n      if (unaff_s4 < (int *)0x7f01) {\n        iVar13 = -((int)unaff_s4 + 7U & 0xfffffff8);\n        puVar26 = auStack_40 + iVar13;\n        unaff_s3 = (int *)(&stack0xffffffd0 + iVar13);\n      }\n      else {\n        unaff_s3 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)(&local_28,unaff_s4);\n      }\n      param_2 = (int *)0x0;\n      param_3 = unaff_s2;\n      (*(code *)PTR___gmpn_sqrtrem_0009b0e0)(unaff_s3,0,unaff_s2,iVar16);\n      iVar13 = *unaff_s3;\n      if (unaff_s0 != 1) {\n        piVar10 = unaff_s3 + 1;\n        unaff_s3 = unaff_s3 + unaff_s0;\n        piVar12 = unaff_s2;\n        do {\n          *piVar12 = iVar13;\n          piVar9 = piVar10 + 1;\n          iVar13 = *piVar10;\n          piVar10 = piVar9;\n          piVar12 = piVar12 + 1;\n        } while (unaff_s3 != piVar9);\n        unaff_s4 = unaff_s4 + -1;\n        unaff_s2 = (int *)((int)unaff_s2 + (int)unaff_s4);\n      }\n      *unaff_s2 = iVar13;\n      param_1 = local_28;\n      puVar25 = puVar26;\n      if (local_28 != (int *)0x0) {\n        (*(code *)PTR___gmp_tmp_reentrant_free_0009b614)();\n      }\n    }\n    else {\n      if (*param_1 < unaff_s0) {\n        param_1 = (int *)(*(code *)PTR___gmpz_realloc_0009b5bc)(param_1,unaff_s0);\n      }\n      else {\n        param_1 = (int *)param_1[2];\n      }\n      param_2 = (int *)0x0;\n      param_3 = unaff_s2;\n      (*(code *)PTR___gmpn_sqrtrem_0009b0e0)();\n      puVar25 = auStack_40;\n    }\n  }" else (compound_statement "{\n    unaff_s0 = (iVar16 + 1) / 2;\n    param_1[1] = unaff_s0;\n    unaff_s2 = (int *)param_2[2];\n    if (param_2 == param_1) {\nLAB_000345b4:\n      unaff_s4 = (int *)(unaff_s0 * 4);\n      local_28 = (int *)0x0;\n      if (unaff_s4 < (int *)0x7f01) {\n        iVar13 = -((int)unaff_s4 + 7U & 0xfffffff8);\n        puVar26 = auStack_40 + iVar13;\n        unaff_s3 = (int *)(&stack0xffffffd0 + iVar13);\n      }\n      else {\n        unaff_s3 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)(&local_28,unaff_s4);\n      }\n      param_2 = (int *)0x0;\n      param_3 = unaff_s2;\n      (*(code *)PTR___gmpn_sqrtrem_0009b0e0)(unaff_s3,0,unaff_s2,iVar16);\n      iVar13 = *unaff_s3;\n      if (unaff_s0 != 1) {\n        piVar10 = unaff_s3 + 1;\n        unaff_s3 = unaff_s3 + unaff_s0;\n        piVar12 = unaff_s2;\n        do {\n          *piVar12 = iVar13;\n          piVar9 = piVar10 + 1;\n          iVar13 = *piVar10;\n          piVar10 = piVar9;\n          piVar12 = piVar12 + 1;\n        } while (unaff_s3 != piVar9);\n        unaff_s4 = unaff_s4 + -1;\n        unaff_s2 = (int *)((int)unaff_s2 + (int)unaff_s4);\n      }\n      *unaff_s2 = iVar13;\n      param_1 = local_28;\n      puVar25 = puVar26;\n      if (local_28 != (int *)0x0) {\n        (*(code *)PTR___gmp_tmp_reentrant_free_0009b614)();\n      }\n    }\n    else {\n      if (*param_1 < unaff_s0) {\n        param_1 = (int *)(*(code *)PTR___gmpz_realloc_0009b5bc)(param_1,unaff_s0);\n      }\n      else {\n        param_1 = (int *)param_1[2];\n      }\n      param_2 = (int *)0x0;\n      param_3 = unaff_s2;\n      (*(code *)PTR___gmpn_sqrtrem_0009b0e0)();\n      puVar25 = auStack_40;\n    }\n  }" { (expression_statement "unaff_s0 = (iVar16 + 1) / 2;" (assignment_expression "unaff_s0 = (iVar16 + 1) / 2" identifier = (binary_expression "(iVar16 + 1) / 2" (parenthesized_expression "(iVar16 + 1)" ( (binary_expression "iVar16 + 1" identifier + number_literal) )) / number_literal)) ;) (expression_statement "param_1[1] = unaff_s0;" (assignment_expression "param_1[1] = unaff_s0" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "unaff_s2 = (int *)param_2[2];" (assignment_expression "unaff_s2 = (int *)param_2[2]" identifier = (cast_expression "(int *)param_2[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[2]" identifier [ number_literal ]))) ;) (if_statement "if (param_2 == param_1) {\nLAB_000345b4:\n      unaff_s4 = (int *)(unaff_s0 * 4);\n      local_28 = (int *)0x0;\n      if (unaff_s4 < (int *)0x7f01) {\n        iVar13 = -((int)unaff_s4 + 7U & 0xfffffff8);\n        puVar26 = auStack_40 + iVar13;\n        unaff_s3 = (int *)(&stack0xffffffd0 + iVar13);\n      }\n      else {\n        unaff_s3 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)(&local_28,unaff_s4);\n      }\n      param_2 = (int *)0x0;\n      param_3 = unaff_s2;\n      (*(code *)PTR___gmpn_sqrtrem_0009b0e0)(unaff_s3,0,unaff_s2,iVar16);\n      iVar13 = *unaff_s3;\n      if (unaff_s0 != 1) {\n        piVar10 = unaff_s3 + 1;\n        unaff_s3 = unaff_s3 + unaff_s0;\n        piVar12 = unaff_s2;\n        do {\n          *piVar12 = iVar13;\n          piVar9 = piVar10 + 1;\n          iVar13 = *piVar10;\n          piVar10 = piVar9;\n          piVar12 = piVar12 + 1;\n        } while (unaff_s3 != piVar9);\n        unaff_s4 = unaff_s4 + -1;\n        unaff_s2 = (int *)((int)unaff_s2 + (int)unaff_s4);\n      }\n      *unaff_s2 = iVar13;\n      param_1 = local_28;\n      puVar25 = puVar26;\n      if (local_28 != (int *)0x0) {\n        (*(code *)PTR___gmp_tmp_reentrant_free_0009b614)();\n      }\n    }\n    else {\n      if (*param_1 < unaff_s0) {\n        param_1 = (int *)(*(code *)PTR___gmpz_realloc_0009b5bc)(param_1,unaff_s0);\n      }\n      else {\n        param_1 = (int *)param_1[2];\n      }\n      param_2 = (int *)0x0;\n      param_3 = unaff_s2;\n      (*(code *)PTR___gmpn_sqrtrem_0009b0e0)();\n      puVar25 = auStack_40;\n    }" if (parenthesized_expression "(param_2 == param_1)" ( (binary_expression "param_2 == param_1" identifier == identifier) )) (compound_statement "{\nLAB_000345b4:\n      unaff_s4 = (int *)(unaff_s0 * 4);\n      local_28 = (int *)0x0;\n      if (unaff_s4 < (int *)0x7f01) {\n        iVar13 = -((int)unaff_s4 + 7U & 0xfffffff8);\n        puVar26 = auStack_40 + iVar13;\n        unaff_s3 = (int *)(&stack0xffffffd0 + iVar13);\n      }\n      else {\n        unaff_s3 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)(&local_28,unaff_s4);\n      }\n      param_2 = (int *)0x0;\n      param_3 = unaff_s2;\n      (*(code *)PTR___gmpn_sqrtrem_0009b0e0)(unaff_s3,0,unaff_s2,iVar16);\n      iVar13 = *unaff_s3;\n      if (unaff_s0 != 1) {\n        piVar10 = unaff_s3 + 1;\n        unaff_s3 = unaff_s3 + unaff_s0;\n        piVar12 = unaff_s2;\n        do {\n          *piVar12 = iVar13;\n          piVar9 = piVar10 + 1;\n          iVar13 = *piVar10;\n          piVar10 = piVar9;\n          piVar12 = piVar12 + 1;\n        } while (unaff_s3 != piVar9);\n        unaff_s4 = unaff_s4 + -1;\n        unaff_s2 = (int *)((int)unaff_s2 + (int)unaff_s4);\n      }\n      *unaff_s2 = iVar13;\n      param_1 = local_28;\n      puVar25 = puVar26;\n      if (local_28 != (int *)0x0) {\n        (*(code *)PTR___gmp_tmp_reentrant_free_0009b614)();\n      }\n    }" { (labeled_statement "LAB_000345b4:\n      unaff_s4 = (int *)(unaff_s0 * 4);" statement_identifier : (expression_statement "unaff_s4 = (int *)(unaff_s0 * 4);" (assignment_expression "unaff_s4 = (int *)(unaff_s0 * 4)" identifier = (cast_expression "(int *)(unaff_s0 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_s0 * 4)" ( (binary_expression "unaff_s0 * 4" identifier * number_literal) )))) ;)) (expression_statement "local_28 = (int *)0x0;" (assignment_expression "local_28 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (unaff_s4 < (int *)0x7f01) {\n        iVar13 = -((int)unaff_s4 + 7U & 0xfffffff8);\n        puVar26 = auStack_40 + iVar13;\n        unaff_s3 = (int *)(&stack0xffffffd0 + iVar13);\n      }\n      else {\n        unaff_s3 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)(&local_28,unaff_s4);\n      }" if (parenthesized_expression "(unaff_s4 < (int *)0x7f01)" ( (binary_expression "unaff_s4 < (int *)0x7f01" identifier < (cast_expression "(int *)0x7f01" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        iVar13 = -((int)unaff_s4 + 7U & 0xfffffff8);\n        puVar26 = auStack_40 + iVar13;\n        unaff_s3 = (int *)(&stack0xffffffd0 + iVar13);\n      }" { (expression_statement "iVar13 = -((int)unaff_s4 + 7U & 0xfffffff8);" (assignment_expression "iVar13 = -((int)unaff_s4 + 7U & 0xfffffff8)" identifier = (unary_expression "-((int)unaff_s4 + 7U & 0xfffffff8)" - (parenthesized_expression "((int)unaff_s4 + 7U & 0xfffffff8)" ( (binary_expression "(int)unaff_s4 + 7U & 0xfffffff8" (binary_expression "(int)unaff_s4 + 7U" (cast_expression "(int)unaff_s4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) & number_literal) )))) ;) (expression_statement "puVar26 = auStack_40 + iVar13;" (assignment_expression "puVar26 = auStack_40 + iVar13" identifier = (binary_expression "auStack_40 + iVar13" identifier + identifier)) ;) (expression_statement "unaff_s3 = (int *)(&stack0xffffffd0 + iVar13);" (assignment_expression "unaff_s3 = (int *)(&stack0xffffffd0 + iVar13)" identifier = (cast_expression "(int *)(&stack0xffffffd0 + iVar13)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&stack0xffffffd0 + iVar13)" ( (binary_expression "&stack0xffffffd0 + iVar13" (pointer_expression "&stack0xffffffd0" & identifier) + identifier) )))) ;) }) (else_clause "else {\n        unaff_s3 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)(&local_28,unaff_s4);\n      }" else (compound_statement "{\n        unaff_s3 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)(&local_28,unaff_s4);\n      }" { (expression_statement "unaff_s3 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)(&local_28,unaff_s4);" (assignment_expression "unaff_s3 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)(&local_28,unaff_s4)" identifier = (cast_expression "(int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)(&local_28,unaff_s4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)(&local_28,unaff_s4)" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)" ( (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0" * (cast_expression "(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(&local_28,unaff_s4)" ( (pointer_expression "&local_28" & identifier) , identifier ))))) ;) }))) (expression_statement "param_2 = (int *)0x0;" (assignment_expression "param_2 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "param_3 = unaff_s2;" (assignment_expression "param_3 = unaff_s2" identifier = identifier) ;) (expression_statement "(*(code *)PTR___gmpn_sqrtrem_0009b0e0)(unaff_s3,0,unaff_s2,iVar16);" (call_expression "(*(code *)PTR___gmpn_sqrtrem_0009b0e0)(unaff_s3,0,unaff_s2,iVar16)" (parenthesized_expression "(*(code *)PTR___gmpn_sqrtrem_0009b0e0)" ( (pointer_expression "*(code *)PTR___gmpn_sqrtrem_0009b0e0" * (cast_expression "(code *)PTR___gmpn_sqrtrem_0009b0e0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(unaff_s3,0,unaff_s2,iVar16)" ( identifier , number_literal , identifier , identifier ))) ;) (expression_statement "iVar13 = *unaff_s3;" (assignment_expression "iVar13 = *unaff_s3" identifier = (pointer_expression "*unaff_s3" * identifier)) ;) (if_statement "if (unaff_s0 != 1) {\n        piVar10 = unaff_s3 + 1;\n        unaff_s3 = unaff_s3 + unaff_s0;\n        piVar12 = unaff_s2;\n        do {\n          *piVar12 = iVar13;\n          piVar9 = piVar10 + 1;\n          iVar13 = *piVar10;\n          piVar10 = piVar9;\n          piVar12 = piVar12 + 1;\n        } while (unaff_s3 != piVar9);\n        unaff_s4 = unaff_s4 + -1;\n        unaff_s2 = (int *)((int)unaff_s2 + (int)unaff_s4);\n      }" if (parenthesized_expression "(unaff_s0 != 1)" ( (binary_expression "unaff_s0 != 1" identifier != number_literal) )) (compound_statement "{\n        piVar10 = unaff_s3 + 1;\n        unaff_s3 = unaff_s3 + unaff_s0;\n        piVar12 = unaff_s2;\n        do {\n          *piVar12 = iVar13;\n          piVar9 = piVar10 + 1;\n          iVar13 = *piVar10;\n          piVar10 = piVar9;\n          piVar12 = piVar12 + 1;\n        } while (unaff_s3 != piVar9);\n        unaff_s4 = unaff_s4 + -1;\n        unaff_s2 = (int *)((int)unaff_s2 + (int)unaff_s4);\n      }" { (expression_statement "piVar10 = unaff_s3 + 1;" (assignment_expression "piVar10 = unaff_s3 + 1" identifier = (binary_expression "unaff_s3 + 1" identifier + number_literal)) ;) (expression_statement "unaff_s3 = unaff_s3 + unaff_s0;" (assignment_expression "unaff_s3 = unaff_s3 + unaff_s0" identifier = (binary_expression "unaff_s3 + unaff_s0" identifier + identifier)) ;) (expression_statement "piVar12 = unaff_s2;" (assignment_expression "piVar12 = unaff_s2" identifier = identifier) ;) (do_statement "do {\n          *piVar12 = iVar13;\n          piVar9 = piVar10 + 1;\n          iVar13 = *piVar10;\n          piVar10 = piVar9;\n          piVar12 = piVar12 + 1;\n        } while (unaff_s3 != piVar9);" do (compound_statement "{\n          *piVar12 = iVar13;\n          piVar9 = piVar10 + 1;\n          iVar13 = *piVar10;\n          piVar10 = piVar9;\n          piVar12 = piVar12 + 1;\n        }" { (expression_statement "*piVar12 = iVar13;" (assignment_expression "*piVar12 = iVar13" (pointer_expression "*piVar12" * identifier) = identifier) ;) (expression_statement "piVar9 = piVar10 + 1;" (assignment_expression "piVar9 = piVar10 + 1" identifier = (binary_expression "piVar10 + 1" identifier + number_literal)) ;) (expression_statement "iVar13 = *piVar10;" (assignment_expression "iVar13 = *piVar10" identifier = (pointer_expression "*piVar10" * identifier)) ;) (expression_statement "piVar10 = piVar9;" (assignment_expression "piVar10 = piVar9" identifier = identifier) ;) (expression_statement "piVar12 = piVar12 + 1;" (assignment_expression "piVar12 = piVar12 + 1" identifier = (binary_expression "piVar12 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(unaff_s3 != piVar9)" ( (binary_expression "unaff_s3 != piVar9" identifier != identifier) )) ;) (expression_statement "unaff_s4 = unaff_s4 + -1;" (assignment_expression "unaff_s4 = unaff_s4 + -1" identifier = (binary_expression "unaff_s4 + -1" identifier + number_literal)) ;) (expression_statement "unaff_s2 = (int *)((int)unaff_s2 + (int)unaff_s4);" (assignment_expression "unaff_s2 = (int *)((int)unaff_s2 + (int)unaff_s4)" identifier = (cast_expression "(int *)((int)unaff_s2 + (int)unaff_s4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)unaff_s2 + (int)unaff_s4)" ( (binary_expression "(int)unaff_s2 + (int)unaff_s4" (cast_expression "(int)unaff_s2" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)unaff_s4" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) })) (expression_statement "*unaff_s2 = iVar13;" (assignment_expression "*unaff_s2 = iVar13" (pointer_expression "*unaff_s2" * identifier) = identifier) ;) (expression_statement "param_1 = local_28;" (assignment_expression "param_1 = local_28" identifier = identifier) ;) (expression_statement "puVar25 = puVar26;" (assignment_expression "puVar25 = puVar26" identifier = identifier) ;) (if_statement "if (local_28 != (int *)0x0) {\n        (*(code *)PTR___gmp_tmp_reentrant_free_0009b614)();\n      }" if (parenthesized_expression "(local_28 != (int *)0x0)" ( (binary_expression "local_28 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        (*(code *)PTR___gmp_tmp_reentrant_free_0009b614)();\n      }" { (expression_statement "(*(code *)PTR___gmp_tmp_reentrant_free_0009b614)();" (call_expression "(*(code *)PTR___gmp_tmp_reentrant_free_0009b614)()" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_free_0009b614)" ( (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_free_0009b614" * (cast_expression "(code *)PTR___gmp_tmp_reentrant_free_0009b614" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) })) }) (else_clause "else {\n      if (*param_1 < unaff_s0) {\n        param_1 = (int *)(*(code *)PTR___gmpz_realloc_0009b5bc)(param_1,unaff_s0);\n      }\n      else {\n        param_1 = (int *)param_1[2];\n      }\n      param_2 = (int *)0x0;\n      param_3 = unaff_s2;\n      (*(code *)PTR___gmpn_sqrtrem_0009b0e0)();\n      puVar25 = auStack_40;\n    }" else (compound_statement "{\n      if (*param_1 < unaff_s0) {\n        param_1 = (int *)(*(code *)PTR___gmpz_realloc_0009b5bc)(param_1,unaff_s0);\n      }\n      else {\n        param_1 = (int *)param_1[2];\n      }\n      param_2 = (int *)0x0;\n      param_3 = unaff_s2;\n      (*(code *)PTR___gmpn_sqrtrem_0009b0e0)();\n      puVar25 = auStack_40;\n    }" { (if_statement "if (*param_1 < unaff_s0) {\n        param_1 = (int *)(*(code *)PTR___gmpz_realloc_0009b5bc)(param_1,unaff_s0);\n      }\n      else {\n        param_1 = (int *)param_1[2];\n      }" if (parenthesized_expression "(*param_1 < unaff_s0)" ( (binary_expression "*param_1 < unaff_s0" (pointer_expression "*param_1" * identifier) < identifier) )) (compound_statement "{\n        param_1 = (int *)(*(code *)PTR___gmpz_realloc_0009b5bc)(param_1,unaff_s0);\n      }" { (expression_statement "param_1 = (int *)(*(code *)PTR___gmpz_realloc_0009b5bc)(param_1,unaff_s0);" (assignment_expression "param_1 = (int *)(*(code *)PTR___gmpz_realloc_0009b5bc)(param_1,unaff_s0)" identifier = (cast_expression "(int *)(*(code *)PTR___gmpz_realloc_0009b5bc)(param_1,unaff_s0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___gmpz_realloc_0009b5bc)(param_1,unaff_s0)" (parenthesized_expression "(*(code *)PTR___gmpz_realloc_0009b5bc)" ( (pointer_expression "*(code *)PTR___gmpz_realloc_0009b5bc" * (cast_expression "(code *)PTR___gmpz_realloc_0009b5bc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,unaff_s0)" ( identifier , identifier ))))) ;) }) (else_clause "else {\n        param_1 = (int *)param_1[2];\n      }" else (compound_statement "{\n        param_1 = (int *)param_1[2];\n      }" { (expression_statement "param_1 = (int *)param_1[2];" (assignment_expression "param_1 = (int *)param_1[2]" identifier = (cast_expression "(int *)param_1[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[2]" identifier [ number_literal ]))) ;) }))) (expression_statement "param_2 = (int *)0x0;" (assignment_expression "param_2 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "param_3 = unaff_s2;" (assignment_expression "param_3 = unaff_s2" identifier = identifier) ;) (expression_statement "(*(code *)PTR___gmpn_sqrtrem_0009b0e0)();" (call_expression "(*(code *)PTR___gmpn_sqrtrem_0009b0e0)()" (parenthesized_expression "(*(code *)PTR___gmpn_sqrtrem_0009b0e0)" ( (pointer_expression "*(code *)PTR___gmpn_sqrtrem_0009b0e0" * (cast_expression "(code *)PTR___gmpn_sqrtrem_0009b0e0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "puVar25 = auStack_40;" (assignment_expression "puVar25 = auStack_40" identifier = identifier) ;) }))) }))) (if_statement "if (local_24 == *(int *)PTR___stack_chk_guard_0009b540) {\n    return;\n  }" if (parenthesized_expression "(local_24 == *(int *)PTR___stack_chk_guard_0009b540)" ( (binary_expression "local_24 == *(int *)PTR___stack_chk_guard_0009b540" identifier == (pointer_expression "*(int *)PTR___stack_chk_guard_0009b540" * (cast_expression "(int *)PTR___stack_chk_guard_0009b540" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "uVar29 = 0x34694;" (assignment_expression "uVar29 = 0x34694" identifier = number_literal) ;) (expression_statement "puVar21 = PTR___stack_chk_fail_0009b4d0;" (assignment_expression "puVar21 = PTR___stack_chk_fail_0009b4d0" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_0009b4d0)();" (call_expression "(*(code *)PTR___stack_chk_fail_0009b4d0)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0009b4d0)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_0009b4d0" * (cast_expression "(code *)PTR___stack_chk_fail_0009b4d0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "puVar23 = puVar21 + 0x6e9a0;" (assignment_expression "puVar23 = puVar21 + 0x6e9a0" identifier = (binary_expression "puVar21 + 0x6e9a0" identifier + number_literal)) ;) (expression_statement "puVar27 = puVar25 + -0x48;" (assignment_expression "puVar27 = puVar25 + -0x48" identifier = (binary_expression "puVar25 + -0x48" identifier + number_literal)) ;) (expression_statement "puVar28 = puVar25 + -0x48;" (assignment_expression "puVar28 = puVar25 + -0x48" identifier = (binary_expression "puVar25 + -0x48" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar25 + -4) = uVar29;" (assignment_expression "*(undefined4 *)(puVar25 + -4) = uVar29" (pointer_expression "*(undefined4 *)(puVar25 + -4)" * (cast_expression "(undefined4 *)(puVar25 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar25 + -4)" ( (binary_expression "puVar25 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 **)(puVar25 + -8) = auStack_40;" (assignment_expression "*(undefined1 **)(puVar25 + -8) = auStack_40" (pointer_expression "*(undefined1 **)(puVar25 + -8)" * (cast_expression "(undefined1 **)(puVar25 + -8)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + -8)" ( (binary_expression "puVar25 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar25 + -0xc) = unaff_s7;" (assignment_expression "*(uint *)(puVar25 + -0xc) = unaff_s7" (pointer_expression "*(uint *)(puVar25 + -0xc)" * (cast_expression "(uint *)(puVar25 + -0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar25 + -0xc)" ( (binary_expression "puVar25 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar25 + -0x10) = unaff_s6;" (assignment_expression "*(int **)(puVar25 + -0x10) = unaff_s6" (pointer_expression "*(int **)(puVar25 + -0x10)" * (cast_expression "(int **)(puVar25 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + -0x10)" ( (binary_expression "puVar25 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar25 + -0x14) = unaff_s5;" (assignment_expression "*(int **)(puVar25 + -0x14) = unaff_s5" (pointer_expression "*(int **)(puVar25 + -0x14)" * (cast_expression "(int **)(puVar25 + -0x14)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + -0x14)" ( (binary_expression "puVar25 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar25 + -0x18) = unaff_s4;" (assignment_expression "*(int **)(puVar25 + -0x18) = unaff_s4" (pointer_expression "*(int **)(puVar25 + -0x18)" * (cast_expression "(int **)(puVar25 + -0x18)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + -0x18)" ( (binary_expression "puVar25 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar25 + -0x1c) = unaff_s3;" (assignment_expression "*(int **)(puVar25 + -0x1c) = unaff_s3" (pointer_expression "*(int **)(puVar25 + -0x1c)" * (cast_expression "(int **)(puVar25 + -0x1c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + -0x1c)" ( (binary_expression "puVar25 + -0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar25 + -0x20) = unaff_s2;" (assignment_expression "*(int **)(puVar25 + -0x20) = unaff_s2" (pointer_expression "*(int **)(puVar25 + -0x20)" * (cast_expression "(int **)(puVar25 + -0x20)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + -0x20)" ( (binary_expression "puVar25 + -0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar25 + -0x24) = iVar16;" (assignment_expression "*(int *)(puVar25 + -0x24) = iVar16" (pointer_expression "*(int *)(puVar25 + -0x24)" * (cast_expression "(int *)(puVar25 + -0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar25 + -0x24)" ( (binary_expression "puVar25 + -0x24" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar25 + -0x28) = unaff_s0;" (assignment_expression "*(int *)(puVar25 + -0x28) = unaff_s0" (pointer_expression "*(int *)(puVar25 + -0x28)" * (cast_expression "(int *)(puVar25 + -0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar25 + -0x28)" ( (binary_expression "puVar25 + -0x28" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)(puVar25 + -0x38) = puVar23;" (assignment_expression "*(undefined **)(puVar25 + -0x38) = puVar23" (pointer_expression "*(undefined **)(puVar25 + -0x38)" * (cast_expression "(undefined **)(puVar25 + -0x38)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + -0x38)" ( (binary_expression "puVar25 + -0x38" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar25 + -0x2c) = **(undefined4 **)(puVar21 + 0x66ea0);" (assignment_expression "*(undefined4 *)(puVar25 + -0x2c) = **(undefined4 **)(puVar21 + 0x66ea0)" (pointer_expression "*(undefined4 *)(puVar25 + -0x2c)" * (cast_expression "(undefined4 *)(puVar25 + -0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar25 + -0x2c)" ( (binary_expression "puVar25 + -0x2c" identifier + number_literal) )))) = (pointer_expression "**(undefined4 **)(puVar21 + 0x66ea0)" * (pointer_expression "*(undefined4 **)(puVar21 + 0x66ea0)" * (cast_expression "(undefined4 **)(puVar21 + 0x66ea0)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar21 + 0x66ea0)" ( (binary_expression "puVar21 + 0x66ea0" identifier + number_literal) )))))) ;) (expression_statement "iVar16 = param_3[1];" (assignment_expression "iVar16 = param_3[1]" identifier = (subscript_expression "param_3[1]" identifier [ number_literal ])) ;) (if_statement "if (iVar16 < 1) {\n    if (iVar16 < 0) {\n      (**(code **)(puVar21 + 0x66b2c))();\n      goto LAB_000347c8;\n    }\n    param_1[1] = 0;\n    param_2[1] = 0;\n    piVar10 = param_1;\n    piVar12 = param_2;\n  }\n  else {\n    unaff_s4 = param_3;\n    if (*param_2 < iVar16) {\nLAB_000347c8:\n      unaff_s5 = (int *)(**(code **)(puVar21 + 0x66f1c))(param_2,iVar16);\n      puVar23 = *(undefined **)(puVar25 + -0x38);\n    }\n    else {\n      unaff_s5 = (int *)param_2[2];\n    }\n    unaff_s0 = (iVar16 + 1) / 2;\n    param_1[1] = unaff_s0;\n    unaff_s6 = (int *)unaff_s4[2];\n    piVar12 = unaff_s5;\n    param_3 = unaff_s6;\n    if (unaff_s4 == param_1) {\n      unaff_s7 = unaff_s0 * 4;\n      *(undefined4 *)(puVar25 + -0x30) = 0;\n      if (unaff_s7 < 0x7f01) {\n        iVar13 = -(unaff_s7 + 7 & 0xfffffff8);\n        puVar28 = puVar25 + iVar13 + -0x48;\n        unaff_s4 = (int *)(puVar25 + iVar13 + -0x38);\n      }\n      else {\n        unaff_s4 = (int *)(**(code **)(puVar23 + -0x7d50))(puVar25 + -0x30,unaff_s7);\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n      }\n      iVar16 = (**(code **)(puVar23 + -0x7f60))(unaff_s4,unaff_s5,unaff_s6,iVar16);\n      puVar23 = *(undefined **)(puVar25 + -0x38);\n      if (param_1 != param_2) {\n        iVar13 = *unaff_s4;\n        if (unaff_s0 != 1) {\n          piVar10 = unaff_s4 + 1;\n          unaff_s4 = unaff_s4 + unaff_s0;\n          piVar9 = unaff_s6;\n          do {\n            *piVar9 = iVar13;\n            piVar3 = piVar10 + 1;\n            iVar13 = *piVar10;\n            piVar10 = piVar3;\n            piVar9 = piVar9 + 1;\n          } while (unaff_s4 != piVar3);\n          unaff_s7 = unaff_s7 - 4;\n          unaff_s6 = unaff_s6 + unaff_s0 + -1;\n        }\n        *unaff_s6 = iVar13;\n      }\n      piVar10 = *(int **)(puVar25 + -0x30);\n      if (piVar10 != (int *)0x0) {\n        (**(code **)(puVar23 + -0x7a2c))();\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n        param_2[1] = iVar16;\n        puVar27 = puVar28;\n        goto LAB_00034768;\n      }\n    }\n    else {\n      if (*param_1 < unaff_s0) {\n        piVar10 = (int *)(**(code **)(puVar23 + -0x7a84))(param_1,unaff_s0);\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n      }\n      else {\n        piVar10 = (int *)param_1[2];\n      }\n      iVar16 = (**(code **)(puVar23 + -0x7f60))();\n      puVar23 = *(undefined **)(puVar25 + -0x38);\n      puVar28 = puVar25 + -0x48;\n    }\n    param_2[1] = iVar16;\n    puVar27 = puVar28;\n  }" if (parenthesized_expression "(iVar16 < 1)" ( (binary_expression "iVar16 < 1" identifier < number_literal) )) (compound_statement "{\n    if (iVar16 < 0) {\n      (**(code **)(puVar21 + 0x66b2c))();\n      goto LAB_000347c8;\n    }\n    param_1[1] = 0;\n    param_2[1] = 0;\n    piVar10 = param_1;\n    piVar12 = param_2;\n  }" { (if_statement "if (iVar16 < 0) {\n      (**(code **)(puVar21 + 0x66b2c))();\n      goto LAB_000347c8;\n    }" if (parenthesized_expression "(iVar16 < 0)" ( (binary_expression "iVar16 < 0" identifier < number_literal) )) (compound_statement "{\n      (**(code **)(puVar21 + 0x66b2c))();\n      goto LAB_000347c8;\n    }" { (expression_statement "(**(code **)(puVar21 + 0x66b2c))();" (call_expression "(**(code **)(puVar21 + 0x66b2c))()" (parenthesized_expression "(**(code **)(puVar21 + 0x66b2c))" ( (pointer_expression "**(code **)(puVar21 + 0x66b2c)" * (pointer_expression "*(code **)(puVar21 + 0x66b2c)" * (cast_expression "(code **)(puVar21 + 0x66b2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar21 + 0x66b2c)" ( (binary_expression "puVar21 + 0x66b2c" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (goto_statement "goto LAB_000347c8;" goto statement_identifier ;) })) (expression_statement "param_1[1] = 0;" (assignment_expression "param_1[1] = 0" (subscript_expression "param_1[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[1] = 0;" (assignment_expression "param_2[1] = 0" (subscript_expression "param_2[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar10 = param_1;" (assignment_expression "piVar10 = param_1" identifier = identifier) ;) (expression_statement "piVar12 = param_2;" (assignment_expression "piVar12 = param_2" identifier = identifier) ;) }) (else_clause "else {\n    unaff_s4 = param_3;\n    if (*param_2 < iVar16) {\nLAB_000347c8:\n      unaff_s5 = (int *)(**(code **)(puVar21 + 0x66f1c))(param_2,iVar16);\n      puVar23 = *(undefined **)(puVar25 + -0x38);\n    }\n    else {\n      unaff_s5 = (int *)param_2[2];\n    }\n    unaff_s0 = (iVar16 + 1) / 2;\n    param_1[1] = unaff_s0;\n    unaff_s6 = (int *)unaff_s4[2];\n    piVar12 = unaff_s5;\n    param_3 = unaff_s6;\n    if (unaff_s4 == param_1) {\n      unaff_s7 = unaff_s0 * 4;\n      *(undefined4 *)(puVar25 + -0x30) = 0;\n      if (unaff_s7 < 0x7f01) {\n        iVar13 = -(unaff_s7 + 7 & 0xfffffff8);\n        puVar28 = puVar25 + iVar13 + -0x48;\n        unaff_s4 = (int *)(puVar25 + iVar13 + -0x38);\n      }\n      else {\n        unaff_s4 = (int *)(**(code **)(puVar23 + -0x7d50))(puVar25 + -0x30,unaff_s7);\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n      }\n      iVar16 = (**(code **)(puVar23 + -0x7f60))(unaff_s4,unaff_s5,unaff_s6,iVar16);\n      puVar23 = *(undefined **)(puVar25 + -0x38);\n      if (param_1 != param_2) {\n        iVar13 = *unaff_s4;\n        if (unaff_s0 != 1) {\n          piVar10 = unaff_s4 + 1;\n          unaff_s4 = unaff_s4 + unaff_s0;\n          piVar9 = unaff_s6;\n          do {\n            *piVar9 = iVar13;\n            piVar3 = piVar10 + 1;\n            iVar13 = *piVar10;\n            piVar10 = piVar3;\n            piVar9 = piVar9 + 1;\n          } while (unaff_s4 != piVar3);\n          unaff_s7 = unaff_s7 - 4;\n          unaff_s6 = unaff_s6 + unaff_s0 + -1;\n        }\n        *unaff_s6 = iVar13;\n      }\n      piVar10 = *(int **)(puVar25 + -0x30);\n      if (piVar10 != (int *)0x0) {\n        (**(code **)(puVar23 + -0x7a2c))();\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n        param_2[1] = iVar16;\n        puVar27 = puVar28;\n        goto LAB_00034768;\n      }\n    }\n    else {\n      if (*param_1 < unaff_s0) {\n        piVar10 = (int *)(**(code **)(puVar23 + -0x7a84))(param_1,unaff_s0);\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n      }\n      else {\n        piVar10 = (int *)param_1[2];\n      }\n      iVar16 = (**(code **)(puVar23 + -0x7f60))();\n      puVar23 = *(undefined **)(puVar25 + -0x38);\n      puVar28 = puVar25 + -0x48;\n    }\n    param_2[1] = iVar16;\n    puVar27 = puVar28;\n  }" else (compound_statement "{\n    unaff_s4 = param_3;\n    if (*param_2 < iVar16) {\nLAB_000347c8:\n      unaff_s5 = (int *)(**(code **)(puVar21 + 0x66f1c))(param_2,iVar16);\n      puVar23 = *(undefined **)(puVar25 + -0x38);\n    }\n    else {\n      unaff_s5 = (int *)param_2[2];\n    }\n    unaff_s0 = (iVar16 + 1) / 2;\n    param_1[1] = unaff_s0;\n    unaff_s6 = (int *)unaff_s4[2];\n    piVar12 = unaff_s5;\n    param_3 = unaff_s6;\n    if (unaff_s4 == param_1) {\n      unaff_s7 = unaff_s0 * 4;\n      *(undefined4 *)(puVar25 + -0x30) = 0;\n      if (unaff_s7 < 0x7f01) {\n        iVar13 = -(unaff_s7 + 7 & 0xfffffff8);\n        puVar28 = puVar25 + iVar13 + -0x48;\n        unaff_s4 = (int *)(puVar25 + iVar13 + -0x38);\n      }\n      else {\n        unaff_s4 = (int *)(**(code **)(puVar23 + -0x7d50))(puVar25 + -0x30,unaff_s7);\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n      }\n      iVar16 = (**(code **)(puVar23 + -0x7f60))(unaff_s4,unaff_s5,unaff_s6,iVar16);\n      puVar23 = *(undefined **)(puVar25 + -0x38);\n      if (param_1 != param_2) {\n        iVar13 = *unaff_s4;\n        if (unaff_s0 != 1) {\n          piVar10 = unaff_s4 + 1;\n          unaff_s4 = unaff_s4 + unaff_s0;\n          piVar9 = unaff_s6;\n          do {\n            *piVar9 = iVar13;\n            piVar3 = piVar10 + 1;\n            iVar13 = *piVar10;\n            piVar10 = piVar3;\n            piVar9 = piVar9 + 1;\n          } while (unaff_s4 != piVar3);\n          unaff_s7 = unaff_s7 - 4;\n          unaff_s6 = unaff_s6 + unaff_s0 + -1;\n        }\n        *unaff_s6 = iVar13;\n      }\n      piVar10 = *(int **)(puVar25 + -0x30);\n      if (piVar10 != (int *)0x0) {\n        (**(code **)(puVar23 + -0x7a2c))();\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n        param_2[1] = iVar16;\n        puVar27 = puVar28;\n        goto LAB_00034768;\n      }\n    }\n    else {\n      if (*param_1 < unaff_s0) {\n        piVar10 = (int *)(**(code **)(puVar23 + -0x7a84))(param_1,unaff_s0);\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n      }\n      else {\n        piVar10 = (int *)param_1[2];\n      }\n      iVar16 = (**(code **)(puVar23 + -0x7f60))();\n      puVar23 = *(undefined **)(puVar25 + -0x38);\n      puVar28 = puVar25 + -0x48;\n    }\n    param_2[1] = iVar16;\n    puVar27 = puVar28;\n  }" { (expression_statement "unaff_s4 = param_3;" (assignment_expression "unaff_s4 = param_3" identifier = identifier) ;) (if_statement "if (*param_2 < iVar16) {\nLAB_000347c8:\n      unaff_s5 = (int *)(**(code **)(puVar21 + 0x66f1c))(param_2,iVar16);\n      puVar23 = *(undefined **)(puVar25 + -0x38);\n    }\n    else {\n      unaff_s5 = (int *)param_2[2];\n    }" if (parenthesized_expression "(*param_2 < iVar16)" ( (binary_expression "*param_2 < iVar16" (pointer_expression "*param_2" * identifier) < identifier) )) (compound_statement "{\nLAB_000347c8:\n      unaff_s5 = (int *)(**(code **)(puVar21 + 0x66f1c))(param_2,iVar16);\n      puVar23 = *(undefined **)(puVar25 + -0x38);\n    }" { (labeled_statement "LAB_000347c8:\n      unaff_s5 = (int *)(**(code **)(puVar21 + 0x66f1c))(param_2,iVar16);" statement_identifier : (expression_statement "unaff_s5 = (int *)(**(code **)(puVar21 + 0x66f1c))(param_2,iVar16);" (assignment_expression "unaff_s5 = (int *)(**(code **)(puVar21 + 0x66f1c))(param_2,iVar16)" identifier = (cast_expression "(int *)(**(code **)(puVar21 + 0x66f1c))(param_2,iVar16)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar21 + 0x66f1c))(param_2,iVar16)" (parenthesized_expression "(**(code **)(puVar21 + 0x66f1c))" ( (pointer_expression "**(code **)(puVar21 + 0x66f1c)" * (pointer_expression "*(code **)(puVar21 + 0x66f1c)" * (cast_expression "(code **)(puVar21 + 0x66f1c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar21 + 0x66f1c)" ( (binary_expression "puVar21 + 0x66f1c" identifier + number_literal) ))))) )) (argument_list "(param_2,iVar16)" ( identifier , identifier ))))) ;)) (expression_statement "puVar23 = *(undefined **)(puVar25 + -0x38);" (assignment_expression "puVar23 = *(undefined **)(puVar25 + -0x38)" identifier = (pointer_expression "*(undefined **)(puVar25 + -0x38)" * (cast_expression "(undefined **)(puVar25 + -0x38)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + -0x38)" ( (binary_expression "puVar25 + -0x38" identifier + number_literal) ))))) ;) }) (else_clause "else {\n      unaff_s5 = (int *)param_2[2];\n    }" else (compound_statement "{\n      unaff_s5 = (int *)param_2[2];\n    }" { (expression_statement "unaff_s5 = (int *)param_2[2];" (assignment_expression "unaff_s5 = (int *)param_2[2]" identifier = (cast_expression "(int *)param_2[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[2]" identifier [ number_literal ]))) ;) }))) (expression_statement "unaff_s0 = (iVar16 + 1) / 2;" (assignment_expression "unaff_s0 = (iVar16 + 1) / 2" identifier = (binary_expression "(iVar16 + 1) / 2" (parenthesized_expression "(iVar16 + 1)" ( (binary_expression "iVar16 + 1" identifier + number_literal) )) / number_literal)) ;) (expression_statement "param_1[1] = unaff_s0;" (assignment_expression "param_1[1] = unaff_s0" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "unaff_s6 = (int *)unaff_s4[2];" (assignment_expression "unaff_s6 = (int *)unaff_s4[2]" identifier = (cast_expression "(int *)unaff_s4[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "unaff_s4[2]" identifier [ number_literal ]))) ;) (expression_statement "piVar12 = unaff_s5;" (assignment_expression "piVar12 = unaff_s5" identifier = identifier) ;) (expression_statement "param_3 = unaff_s6;" (assignment_expression "param_3 = unaff_s6" identifier = identifier) ;) (if_statement "if (unaff_s4 == param_1) {\n      unaff_s7 = unaff_s0 * 4;\n      *(undefined4 *)(puVar25 + -0x30) = 0;\n      if (unaff_s7 < 0x7f01) {\n        iVar13 = -(unaff_s7 + 7 & 0xfffffff8);\n        puVar28 = puVar25 + iVar13 + -0x48;\n        unaff_s4 = (int *)(puVar25 + iVar13 + -0x38);\n      }\n      else {\n        unaff_s4 = (int *)(**(code **)(puVar23 + -0x7d50))(puVar25 + -0x30,unaff_s7);\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n      }\n      iVar16 = (**(code **)(puVar23 + -0x7f60))(unaff_s4,unaff_s5,unaff_s6,iVar16);\n      puVar23 = *(undefined **)(puVar25 + -0x38);\n      if (param_1 != param_2) {\n        iVar13 = *unaff_s4;\n        if (unaff_s0 != 1) {\n          piVar10 = unaff_s4 + 1;\n          unaff_s4 = unaff_s4 + unaff_s0;\n          piVar9 = unaff_s6;\n          do {\n            *piVar9 = iVar13;\n            piVar3 = piVar10 + 1;\n            iVar13 = *piVar10;\n            piVar10 = piVar3;\n            piVar9 = piVar9 + 1;\n          } while (unaff_s4 != piVar3);\n          unaff_s7 = unaff_s7 - 4;\n          unaff_s6 = unaff_s6 + unaff_s0 + -1;\n        }\n        *unaff_s6 = iVar13;\n      }\n      piVar10 = *(int **)(puVar25 + -0x30);\n      if (piVar10 != (int *)0x0) {\n        (**(code **)(puVar23 + -0x7a2c))();\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n        param_2[1] = iVar16;\n        puVar27 = puVar28;\n        goto LAB_00034768;\n      }\n    }\n    else {\n      if (*param_1 < unaff_s0) {\n        piVar10 = (int *)(**(code **)(puVar23 + -0x7a84))(param_1,unaff_s0);\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n      }\n      else {\n        piVar10 = (int *)param_1[2];\n      }\n      iVar16 = (**(code **)(puVar23 + -0x7f60))();\n      puVar23 = *(undefined **)(puVar25 + -0x38);\n      puVar28 = puVar25 + -0x48;\n    }" if (parenthesized_expression "(unaff_s4 == param_1)" ( (binary_expression "unaff_s4 == param_1" identifier == identifier) )) (compound_statement "{\n      unaff_s7 = unaff_s0 * 4;\n      *(undefined4 *)(puVar25 + -0x30) = 0;\n      if (unaff_s7 < 0x7f01) {\n        iVar13 = -(unaff_s7 + 7 & 0xfffffff8);\n        puVar28 = puVar25 + iVar13 + -0x48;\n        unaff_s4 = (int *)(puVar25 + iVar13 + -0x38);\n      }\n      else {\n        unaff_s4 = (int *)(**(code **)(puVar23 + -0x7d50))(puVar25 + -0x30,unaff_s7);\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n      }\n      iVar16 = (**(code **)(puVar23 + -0x7f60))(unaff_s4,unaff_s5,unaff_s6,iVar16);\n      puVar23 = *(undefined **)(puVar25 + -0x38);\n      if (param_1 != param_2) {\n        iVar13 = *unaff_s4;\n        if (unaff_s0 != 1) {\n          piVar10 = unaff_s4 + 1;\n          unaff_s4 = unaff_s4 + unaff_s0;\n          piVar9 = unaff_s6;\n          do {\n            *piVar9 = iVar13;\n            piVar3 = piVar10 + 1;\n            iVar13 = *piVar10;\n            piVar10 = piVar3;\n            piVar9 = piVar9 + 1;\n          } while (unaff_s4 != piVar3);\n          unaff_s7 = unaff_s7 - 4;\n          unaff_s6 = unaff_s6 + unaff_s0 + -1;\n        }\n        *unaff_s6 = iVar13;\n      }\n      piVar10 = *(int **)(puVar25 + -0x30);\n      if (piVar10 != (int *)0x0) {\n        (**(code **)(puVar23 + -0x7a2c))();\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n        param_2[1] = iVar16;\n        puVar27 = puVar28;\n        goto LAB_00034768;\n      }\n    }" { (expression_statement "unaff_s7 = unaff_s0 * 4;" (assignment_expression "unaff_s7 = unaff_s0 * 4" identifier = (binary_expression "unaff_s0 * 4" identifier * number_literal)) ;) (expression_statement "*(undefined4 *)(puVar25 + -0x30) = 0;" (assignment_expression "*(undefined4 *)(puVar25 + -0x30) = 0" (pointer_expression "*(undefined4 *)(puVar25 + -0x30)" * (cast_expression "(undefined4 *)(puVar25 + -0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar25 + -0x30)" ( (binary_expression "puVar25 + -0x30" identifier + number_literal) )))) = number_literal) ;) (if_statement "if (unaff_s7 < 0x7f01) {\n        iVar13 = -(unaff_s7 + 7 & 0xfffffff8);\n        puVar28 = puVar25 + iVar13 + -0x48;\n        unaff_s4 = (int *)(puVar25 + iVar13 + -0x38);\n      }\n      else {\n        unaff_s4 = (int *)(**(code **)(puVar23 + -0x7d50))(puVar25 + -0x30,unaff_s7);\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n      }" if (parenthesized_expression "(unaff_s7 < 0x7f01)" ( (binary_expression "unaff_s7 < 0x7f01" identifier < number_literal) )) (compound_statement "{\n        iVar13 = -(unaff_s7 + 7 & 0xfffffff8);\n        puVar28 = puVar25 + iVar13 + -0x48;\n        unaff_s4 = (int *)(puVar25 + iVar13 + -0x38);\n      }" { (expression_statement "iVar13 = -(unaff_s7 + 7 & 0xfffffff8);" (assignment_expression "iVar13 = -(unaff_s7 + 7 & 0xfffffff8)" identifier = (unary_expression "-(unaff_s7 + 7 & 0xfffffff8)" - (parenthesized_expression "(unaff_s7 + 7 & 0xfffffff8)" ( (binary_expression "unaff_s7 + 7 & 0xfffffff8" (binary_expression "unaff_s7 + 7" identifier + number_literal) & number_literal) )))) ;) (expression_statement "puVar28 = puVar25 + iVar13 + -0x48;" (assignment_expression "puVar28 = puVar25 + iVar13 + -0x48" identifier = (binary_expression "puVar25 + iVar13 + -0x48" (binary_expression "puVar25 + iVar13" identifier + identifier) + number_literal)) ;) (expression_statement "unaff_s4 = (int *)(puVar25 + iVar13 + -0x38);" (assignment_expression "unaff_s4 = (int *)(puVar25 + iVar13 + -0x38)" identifier = (cast_expression "(int *)(puVar25 + iVar13 + -0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar25 + iVar13 + -0x38)" ( (binary_expression "puVar25 + iVar13 + -0x38" (binary_expression "puVar25 + iVar13" identifier + identifier) + number_literal) )))) ;) }) (else_clause "else {\n        unaff_s4 = (int *)(**(code **)(puVar23 + -0x7d50))(puVar25 + -0x30,unaff_s7);\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n      }" else (compound_statement "{\n        unaff_s4 = (int *)(**(code **)(puVar23 + -0x7d50))(puVar25 + -0x30,unaff_s7);\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n      }" { (expression_statement "unaff_s4 = (int *)(**(code **)(puVar23 + -0x7d50))(puVar25 + -0x30,unaff_s7);" (assignment_expression "unaff_s4 = (int *)(**(code **)(puVar23 + -0x7d50))(puVar25 + -0x30,unaff_s7)" identifier = (cast_expression "(int *)(**(code **)(puVar23 + -0x7d50))(puVar25 + -0x30,unaff_s7)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar23 + -0x7d50))(puVar25 + -0x30,unaff_s7)" (parenthesized_expression "(**(code **)(puVar23 + -0x7d50))" ( (pointer_expression "**(code **)(puVar23 + -0x7d50)" * (pointer_expression "*(code **)(puVar23 + -0x7d50)" * (cast_expression "(code **)(puVar23 + -0x7d50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar23 + -0x7d50)" ( (binary_expression "puVar23 + -0x7d50" identifier + number_literal) ))))) )) (argument_list "(puVar25 + -0x30,unaff_s7)" ( (binary_expression "puVar25 + -0x30" identifier + number_literal) , identifier ))))) ;) (expression_statement "puVar23 = *(undefined **)(puVar25 + -0x38);" (assignment_expression "puVar23 = *(undefined **)(puVar25 + -0x38)" identifier = (pointer_expression "*(undefined **)(puVar25 + -0x38)" * (cast_expression "(undefined **)(puVar25 + -0x38)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + -0x38)" ( (binary_expression "puVar25 + -0x38" identifier + number_literal) ))))) ;) }))) (expression_statement "iVar16 = (**(code **)(puVar23 + -0x7f60))(unaff_s4,unaff_s5,unaff_s6,iVar16);" (assignment_expression "iVar16 = (**(code **)(puVar23 + -0x7f60))(unaff_s4,unaff_s5,unaff_s6,iVar16)" identifier = (call_expression "(**(code **)(puVar23 + -0x7f60))(unaff_s4,unaff_s5,unaff_s6,iVar16)" (parenthesized_expression "(**(code **)(puVar23 + -0x7f60))" ( (pointer_expression "**(code **)(puVar23 + -0x7f60)" * (pointer_expression "*(code **)(puVar23 + -0x7f60)" * (cast_expression "(code **)(puVar23 + -0x7f60)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar23 + -0x7f60)" ( (binary_expression "puVar23 + -0x7f60" identifier + number_literal) ))))) )) (argument_list "(unaff_s4,unaff_s5,unaff_s6,iVar16)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "puVar23 = *(undefined **)(puVar25 + -0x38);" (assignment_expression "puVar23 = *(undefined **)(puVar25 + -0x38)" identifier = (pointer_expression "*(undefined **)(puVar25 + -0x38)" * (cast_expression "(undefined **)(puVar25 + -0x38)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + -0x38)" ( (binary_expression "puVar25 + -0x38" identifier + number_literal) ))))) ;) (if_statement "if (param_1 != param_2) {\n        iVar13 = *unaff_s4;\n        if (unaff_s0 != 1) {\n          piVar10 = unaff_s4 + 1;\n          unaff_s4 = unaff_s4 + unaff_s0;\n          piVar9 = unaff_s6;\n          do {\n            *piVar9 = iVar13;\n            piVar3 = piVar10 + 1;\n            iVar13 = *piVar10;\n            piVar10 = piVar3;\n            piVar9 = piVar9 + 1;\n          } while (unaff_s4 != piVar3);\n          unaff_s7 = unaff_s7 - 4;\n          unaff_s6 = unaff_s6 + unaff_s0 + -1;\n        }\n        *unaff_s6 = iVar13;\n      }" if (parenthesized_expression "(param_1 != param_2)" ( (binary_expression "param_1 != param_2" identifier != identifier) )) (compound_statement "{\n        iVar13 = *unaff_s4;\n        if (unaff_s0 != 1) {\n          piVar10 = unaff_s4 + 1;\n          unaff_s4 = unaff_s4 + unaff_s0;\n          piVar9 = unaff_s6;\n          do {\n            *piVar9 = iVar13;\n            piVar3 = piVar10 + 1;\n            iVar13 = *piVar10;\n            piVar10 = piVar3;\n            piVar9 = piVar9 + 1;\n          } while (unaff_s4 != piVar3);\n          unaff_s7 = unaff_s7 - 4;\n          unaff_s6 = unaff_s6 + unaff_s0 + -1;\n        }\n        *unaff_s6 = iVar13;\n      }" { (expression_statement "iVar13 = *unaff_s4;" (assignment_expression "iVar13 = *unaff_s4" identifier = (pointer_expression "*unaff_s4" * identifier)) ;) (if_statement "if (unaff_s0 != 1) {\n          piVar10 = unaff_s4 + 1;\n          unaff_s4 = unaff_s4 + unaff_s0;\n          piVar9 = unaff_s6;\n          do {\n            *piVar9 = iVar13;\n            piVar3 = piVar10 + 1;\n            iVar13 = *piVar10;\n            piVar10 = piVar3;\n            piVar9 = piVar9 + 1;\n          } while (unaff_s4 != piVar3);\n          unaff_s7 = unaff_s7 - 4;\n          unaff_s6 = unaff_s6 + unaff_s0 + -1;\n        }" if (parenthesized_expression "(unaff_s0 != 1)" ( (binary_expression "unaff_s0 != 1" identifier != number_literal) )) (compound_statement "{\n          piVar10 = unaff_s4 + 1;\n          unaff_s4 = unaff_s4 + unaff_s0;\n          piVar9 = unaff_s6;\n          do {\n            *piVar9 = iVar13;\n            piVar3 = piVar10 + 1;\n            iVar13 = *piVar10;\n            piVar10 = piVar3;\n            piVar9 = piVar9 + 1;\n          } while (unaff_s4 != piVar3);\n          unaff_s7 = unaff_s7 - 4;\n          unaff_s6 = unaff_s6 + unaff_s0 + -1;\n        }" { (expression_statement "piVar10 = unaff_s4 + 1;" (assignment_expression "piVar10 = unaff_s4 + 1" identifier = (binary_expression "unaff_s4 + 1" identifier + number_literal)) ;) (expression_statement "unaff_s4 = unaff_s4 + unaff_s0;" (assignment_expression "unaff_s4 = unaff_s4 + unaff_s0" identifier = (binary_expression "unaff_s4 + unaff_s0" identifier + identifier)) ;) (expression_statement "piVar9 = unaff_s6;" (assignment_expression "piVar9 = unaff_s6" identifier = identifier) ;) (do_statement "do {\n            *piVar9 = iVar13;\n            piVar3 = piVar10 + 1;\n            iVar13 = *piVar10;\n            piVar10 = piVar3;\n            piVar9 = piVar9 + 1;\n          } while (unaff_s4 != piVar3);" do (compound_statement "{\n            *piVar9 = iVar13;\n            piVar3 = piVar10 + 1;\n            iVar13 = *piVar10;\n            piVar10 = piVar3;\n            piVar9 = piVar9 + 1;\n          }" { (expression_statement "*piVar9 = iVar13;" (assignment_expression "*piVar9 = iVar13" (pointer_expression "*piVar9" * identifier) = identifier) ;) (expression_statement "piVar3 = piVar10 + 1;" (assignment_expression "piVar3 = piVar10 + 1" identifier = (binary_expression "piVar10 + 1" identifier + number_literal)) ;) (expression_statement "iVar13 = *piVar10;" (assignment_expression "iVar13 = *piVar10" identifier = (pointer_expression "*piVar10" * identifier)) ;) (expression_statement "piVar10 = piVar3;" (assignment_expression "piVar10 = piVar3" identifier = identifier) ;) (expression_statement "piVar9 = piVar9 + 1;" (assignment_expression "piVar9 = piVar9 + 1" identifier = (binary_expression "piVar9 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(unaff_s4 != piVar3)" ( (binary_expression "unaff_s4 != piVar3" identifier != identifier) )) ;) (expression_statement "unaff_s7 = unaff_s7 - 4;" (assignment_expression "unaff_s7 = unaff_s7 - 4" identifier = (binary_expression "unaff_s7 - 4" identifier - number_literal)) ;) (expression_statement "unaff_s6 = unaff_s6 + unaff_s0 + -1;" (assignment_expression "unaff_s6 = unaff_s6 + unaff_s0 + -1" identifier = (binary_expression "unaff_s6 + unaff_s0 + -1" (binary_expression "unaff_s6 + unaff_s0" identifier + identifier) + number_literal)) ;) })) (expression_statement "*unaff_s6 = iVar13;" (assignment_expression "*unaff_s6 = iVar13" (pointer_expression "*unaff_s6" * identifier) = identifier) ;) })) (expression_statement "piVar10 = *(int **)(puVar25 + -0x30);" (assignment_expression "piVar10 = *(int **)(puVar25 + -0x30)" identifier = (pointer_expression "*(int **)(puVar25 + -0x30)" * (cast_expression "(int **)(puVar25 + -0x30)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + -0x30)" ( (binary_expression "puVar25 + -0x30" identifier + number_literal) ))))) ;) (if_statement "if (piVar10 != (int *)0x0) {\n        (**(code **)(puVar23 + -0x7a2c))();\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n        param_2[1] = iVar16;\n        puVar27 = puVar28;\n        goto LAB_00034768;\n      }" if (parenthesized_expression "(piVar10 != (int *)0x0)" ( (binary_expression "piVar10 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        (**(code **)(puVar23 + -0x7a2c))();\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n        param_2[1] = iVar16;\n        puVar27 = puVar28;\n        goto LAB_00034768;\n      }" { (expression_statement "(**(code **)(puVar23 + -0x7a2c))();" (call_expression "(**(code **)(puVar23 + -0x7a2c))()" (parenthesized_expression "(**(code **)(puVar23 + -0x7a2c))" ( (pointer_expression "**(code **)(puVar23 + -0x7a2c)" * (pointer_expression "*(code **)(puVar23 + -0x7a2c)" * (cast_expression "(code **)(puVar23 + -0x7a2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar23 + -0x7a2c)" ( (binary_expression "puVar23 + -0x7a2c" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "puVar23 = *(undefined **)(puVar25 + -0x38);" (assignment_expression "puVar23 = *(undefined **)(puVar25 + -0x38)" identifier = (pointer_expression "*(undefined **)(puVar25 + -0x38)" * (cast_expression "(undefined **)(puVar25 + -0x38)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + -0x38)" ( (binary_expression "puVar25 + -0x38" identifier + number_literal) ))))) ;) (expression_statement "param_2[1] = iVar16;" (assignment_expression "param_2[1] = iVar16" (subscript_expression "param_2[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar27 = puVar28;" (assignment_expression "puVar27 = puVar28" identifier = identifier) ;) (goto_statement "goto LAB_00034768;" goto statement_identifier ;) })) }) (else_clause "else {\n      if (*param_1 < unaff_s0) {\n        piVar10 = (int *)(**(code **)(puVar23 + -0x7a84))(param_1,unaff_s0);\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n      }\n      else {\n        piVar10 = (int *)param_1[2];\n      }\n      iVar16 = (**(code **)(puVar23 + -0x7f60))();\n      puVar23 = *(undefined **)(puVar25 + -0x38);\n      puVar28 = puVar25 + -0x48;\n    }" else (compound_statement "{\n      if (*param_1 < unaff_s0) {\n        piVar10 = (int *)(**(code **)(puVar23 + -0x7a84))(param_1,unaff_s0);\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n      }\n      else {\n        piVar10 = (int *)param_1[2];\n      }\n      iVar16 = (**(code **)(puVar23 + -0x7f60))();\n      puVar23 = *(undefined **)(puVar25 + -0x38);\n      puVar28 = puVar25 + -0x48;\n    }" { (if_statement "if (*param_1 < unaff_s0) {\n        piVar10 = (int *)(**(code **)(puVar23 + -0x7a84))(param_1,unaff_s0);\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n      }\n      else {\n        piVar10 = (int *)param_1[2];\n      }" if (parenthesized_expression "(*param_1 < unaff_s0)" ( (binary_expression "*param_1 < unaff_s0" (pointer_expression "*param_1" * identifier) < identifier) )) (compound_statement "{\n        piVar10 = (int *)(**(code **)(puVar23 + -0x7a84))(param_1,unaff_s0);\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n      }" { (expression_statement "piVar10 = (int *)(**(code **)(puVar23 + -0x7a84))(param_1,unaff_s0);" (assignment_expression "piVar10 = (int *)(**(code **)(puVar23 + -0x7a84))(param_1,unaff_s0)" identifier = (cast_expression "(int *)(**(code **)(puVar23 + -0x7a84))(param_1,unaff_s0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar23 + -0x7a84))(param_1,unaff_s0)" (parenthesized_expression "(**(code **)(puVar23 + -0x7a84))" ( (pointer_expression "**(code **)(puVar23 + -0x7a84)" * (pointer_expression "*(code **)(puVar23 + -0x7a84)" * (cast_expression "(code **)(puVar23 + -0x7a84)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar23 + -0x7a84)" ( (binary_expression "puVar23 + -0x7a84" identifier + number_literal) ))))) )) (argument_list "(param_1,unaff_s0)" ( identifier , identifier ))))) ;) (expression_statement "puVar23 = *(undefined **)(puVar25 + -0x38);" (assignment_expression "puVar23 = *(undefined **)(puVar25 + -0x38)" identifier = (pointer_expression "*(undefined **)(puVar25 + -0x38)" * (cast_expression "(undefined **)(puVar25 + -0x38)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + -0x38)" ( (binary_expression "puVar25 + -0x38" identifier + number_literal) ))))) ;) }) (else_clause "else {\n        piVar10 = (int *)param_1[2];\n      }" else (compound_statement "{\n        piVar10 = (int *)param_1[2];\n      }" { (expression_statement "piVar10 = (int *)param_1[2];" (assignment_expression "piVar10 = (int *)param_1[2]" identifier = (cast_expression "(int *)param_1[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[2]" identifier [ number_literal ]))) ;) }))) (expression_statement "iVar16 = (**(code **)(puVar23 + -0x7f60))();" (assignment_expression "iVar16 = (**(code **)(puVar23 + -0x7f60))()" identifier = (call_expression "(**(code **)(puVar23 + -0x7f60))()" (parenthesized_expression "(**(code **)(puVar23 + -0x7f60))" ( (pointer_expression "**(code **)(puVar23 + -0x7f60)" * (pointer_expression "*(code **)(puVar23 + -0x7f60)" * (cast_expression "(code **)(puVar23 + -0x7f60)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar23 + -0x7f60)" ( (binary_expression "puVar23 + -0x7f60" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;) (expression_statement "puVar23 = *(undefined **)(puVar25 + -0x38);" (assignment_expression "puVar23 = *(undefined **)(puVar25 + -0x38)" identifier = (pointer_expression "*(undefined **)(puVar25 + -0x38)" * (cast_expression "(undefined **)(puVar25 + -0x38)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + -0x38)" ( (binary_expression "puVar25 + -0x38" identifier + number_literal) ))))) ;) (expression_statement "puVar28 = puVar25 + -0x48;" (assignment_expression "puVar28 = puVar25 + -0x48" identifier = (binary_expression "puVar25 + -0x48" identifier + number_literal)) ;) }))) (expression_statement "param_2[1] = iVar16;" (assignment_expression "param_2[1] = iVar16" (subscript_expression "param_2[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar27 = puVar28;" (assignment_expression "puVar27 = puVar28" identifier = identifier) ;) }))) (labeled_statement "LAB_00034768:\n  if (*(int *)(puVar25 + -0x2c) == **(int **)(puVar23 + -0x7b00)) {\n    return;\n  }" statement_identifier : (if_statement "if (*(int *)(puVar25 + -0x2c) == **(int **)(puVar23 + -0x7b00)) {\n    return;\n  }" if (parenthesized_expression "(*(int *)(puVar25 + -0x2c) == **(int **)(puVar23 + -0x7b00))" ( (binary_expression "*(int *)(puVar25 + -0x2c) == **(int **)(puVar23 + -0x7b00)" (pointer_expression "*(int *)(puVar25 + -0x2c)" * (cast_expression "(int *)(puVar25 + -0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar25 + -0x2c)" ( (binary_expression "puVar25 + -0x2c" identifier + number_literal) )))) == (pointer_expression "**(int **)(puVar23 + -0x7b00)" * (pointer_expression "*(int **)(puVar23 + -0x7b00)" * (cast_expression "(int **)(puVar23 + -0x7b00)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar23 + -0x7b00)" ( (binary_expression "puVar23 + -0x7b00" identifier + number_literal) )))))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) }))) (expression_statement "pcVar22 = *(code **)(puVar23 + -0x7b70);" (assignment_expression "pcVar22 = *(code **)(puVar23 + -0x7b70)" identifier = (pointer_expression "*(code **)(puVar23 + -0x7b70)" * (cast_expression "(code **)(puVar23 + -0x7b70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar23 + -0x7b70)" ( (binary_expression "puVar23 + -0x7b70" identifier + number_literal) ))))) ;) (expression_statement "uVar29 = 0x348d4;" (assignment_expression "uVar29 = 0x348d4" identifier = number_literal) ;) (expression_statement "(*pcVar22)();" (call_expression "(*pcVar22)()" (parenthesized_expression "(*pcVar22)" ( (pointer_expression "*pcVar22" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar24 = pcVar22 + 0x6e760;" (assignment_expression "pcVar24 = pcVar22 + 0x6e760" identifier = (binary_expression "pcVar22 + 0x6e760" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar27 + -4) = uVar29;" (assignment_expression "*(undefined4 *)(puVar27 + -4) = uVar29" (pointer_expression "*(undefined4 *)(puVar27 + -4)" * (cast_expression "(undefined4 *)(puVar27 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar27 + -4)" ( (binary_expression "puVar27 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar27 + -8) = unaff_s7;" (assignment_expression "*(uint *)(puVar27 + -8) = unaff_s7" (pointer_expression "*(uint *)(puVar27 + -8)" * (cast_expression "(uint *)(puVar27 + -8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar27 + -8)" ( (binary_expression "puVar27 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar27 + -0xc) = unaff_s6;" (assignment_expression "*(int **)(puVar27 + -0xc) = unaff_s6" (pointer_expression "*(int **)(puVar27 + -0xc)" * (cast_expression "(int **)(puVar27 + -0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar27 + -0xc)" ( (binary_expression "puVar27 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar27 + -0x10) = unaff_s5;" (assignment_expression "*(int **)(puVar27 + -0x10) = unaff_s5" (pointer_expression "*(int **)(puVar27 + -0x10)" * (cast_expression "(int **)(puVar27 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar27 + -0x10)" ( (binary_expression "puVar27 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar27 + -0x14) = unaff_s4;" (assignment_expression "*(int **)(puVar27 + -0x14) = unaff_s4" (pointer_expression "*(int **)(puVar27 + -0x14)" * (cast_expression "(int **)(puVar27 + -0x14)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar27 + -0x14)" ( (binary_expression "puVar27 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar27 + -0x18) = param_2;" (assignment_expression "*(int **)(puVar27 + -0x18) = param_2" (pointer_expression "*(int **)(puVar27 + -0x18)" * (cast_expression "(int **)(puVar27 + -0x18)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar27 + -0x18)" ( (binary_expression "puVar27 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar27 + -0x1c) = param_1;" (assignment_expression "*(int **)(puVar27 + -0x1c) = param_1" (pointer_expression "*(int **)(puVar27 + -0x1c)" * (cast_expression "(int **)(puVar27 + -0x1c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar27 + -0x1c)" ( (binary_expression "puVar27 + -0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar27 + -0x20) = iVar16;" (assignment_expression "*(int *)(puVar27 + -0x20) = iVar16" (pointer_expression "*(int *)(puVar27 + -0x20)" * (cast_expression "(int *)(puVar27 + -0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar27 + -0x20)" ( (binary_expression "puVar27 + -0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar27 + -0x24) = unaff_s0;" (assignment_expression "*(int *)(puVar27 + -0x24) = unaff_s0" (pointer_expression "*(int *)(puVar27 + -0x24)" * (cast_expression "(int *)(puVar27 + -0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar27 + -0x24)" ( (binary_expression "puVar27 + -0x24" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar27 + -0x30) = pcVar24;" (assignment_expression "*(code **)(puVar27 + -0x30) = pcVar24" (pointer_expression "*(code **)(puVar27 + -0x30)" * (cast_expression "(code **)(puVar27 + -0x30)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar27 + -0x30)" ( (binary_expression "puVar27 + -0x30" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar18 = piVar12[1];" (assignment_expression "uVar18 = piVar12[1]" identifier = (subscript_expression "piVar12[1]" identifier [ number_literal ])) ;) (expression_statement "uVar4 = param_3[1];" (assignment_expression "uVar4 = param_3[1]" identifier = (subscript_expression "param_3[1]" identifier [ number_literal ])) ;) (expression_statement "uVar6 = -uVar4;" (assignment_expression "uVar6 = -uVar4" identifier = (unary_expression "-uVar4" - identifier)) ;) (expression_statement "uVar17 = uVar18;" (assignment_expression "uVar17 = uVar18" identifier = identifier) ;) (if_statement "if ((int)uVar18 < 0) {\n    uVar17 = -uVar18;\n  }" if (parenthesized_expression "((int)uVar18 < 0)" ( (binary_expression "(int)uVar18 < 0" (cast_expression "(int)uVar18" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    uVar17 = -uVar18;\n  }" { (expression_statement "uVar17 = -uVar18;" (assignment_expression "uVar17 = -uVar18" identifier = (unary_expression "-uVar18" - identifier)) ;) })) (if_statement "if ((int)uVar4 < 0) {\n    uVar4 = -uVar4;\n  }" if (parenthesized_expression "((int)uVar4 < 0)" ( (binary_expression "(int)uVar4 < 0" (cast_expression "(int)uVar4" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    uVar4 = -uVar4;\n  }" { (expression_statement "uVar4 = -uVar4;" (assignment_expression "uVar4 = -uVar4" identifier = (unary_expression "-uVar4" - identifier)) ;) })) (expression_statement "uVar14 = uVar4;" (assignment_expression "uVar14 = uVar4" identifier = identifier) ;) (expression_statement "uVar19 = uVar18;" (assignment_expression "uVar19 = uVar18" identifier = identifier) ;) (expression_statement "piVar9 = piVar12;" (assignment_expression "piVar9 = piVar12" identifier = identifier) ;) (if_statement "if ((int)uVar17 < (int)uVar4) {\n    uVar14 = uVar17;\n    uVar17 = uVar4;\n    uVar19 = uVar6;\n    piVar9 = param_3;\n    uVar6 = uVar18;\n    param_3 = piVar12;\n  }" if (parenthesized_expression "((int)uVar17 < (int)uVar4)" ( (binary_expression "(int)uVar17 < (int)uVar4" (cast_expression "(int)uVar17" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)uVar4" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    uVar14 = uVar17;\n    uVar17 = uVar4;\n    uVar19 = uVar6;\n    piVar9 = param_3;\n    uVar6 = uVar18;\n    param_3 = piVar12;\n  }" { (expression_statement "uVar14 = uVar17;" (assignment_expression "uVar14 = uVar17" identifier = identifier) ;) (expression_statement "uVar17 = uVar4;" (assignment_expression "uVar17 = uVar4" identifier = identifier) ;) (expression_statement "uVar19 = uVar6;" (assignment_expression "uVar19 = uVar6" identifier = identifier) ;) (expression_statement "piVar9 = param_3;" (assignment_expression "piVar9 = param_3" identifier = identifier) ;) (expression_statement "uVar6 = uVar18;" (assignment_expression "uVar6 = uVar18" identifier = identifier) ;) (expression_statement "param_3 = piVar12;" (assignment_expression "param_3 = piVar12" identifier = identifier) ;) })) (if_statement "if (*piVar10 < (int)(uVar17 + 1)) {\n    iVar16 = (**(code **)(pcVar22 + 0x66cdc))(piVar10);\n    pcVar24 = *(code **)(puVar27 + -0x30);\n  }\n  else {\n    iVar16 = piVar10[2];\n  }" if (parenthesized_expression "(*piVar10 < (int)(uVar17 + 1))" ( (binary_expression "*piVar10 < (int)(uVar17 + 1)" (pointer_expression "*piVar10" * identifier) < (cast_expression "(int)(uVar17 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar17 + 1)" ( (binary_expression "uVar17 + 1" identifier + number_literal) )))) )) (compound_statement "{\n    iVar16 = (**(code **)(pcVar22 + 0x66cdc))(piVar10);\n    pcVar24 = *(code **)(puVar27 + -0x30);\n  }" { (expression_statement "iVar16 = (**(code **)(pcVar22 + 0x66cdc))(piVar10);" (assignment_expression "iVar16 = (**(code **)(pcVar22 + 0x66cdc))(piVar10)" identifier = (call_expression "(**(code **)(pcVar22 + 0x66cdc))(piVar10)" (parenthesized_expression "(**(code **)(pcVar22 + 0x66cdc))" ( (pointer_expression "**(code **)(pcVar22 + 0x66cdc)" * (pointer_expression "*(code **)(pcVar22 + 0x66cdc)" * (cast_expression "(code **)(pcVar22 + 0x66cdc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar22 + 0x66cdc)" ( (binary_expression "pcVar22 + 0x66cdc" identifier + number_literal) ))))) )) (argument_list "(piVar10)" ( identifier )))) ;) (expression_statement "pcVar24 = *(code **)(puVar27 + -0x30);" (assignment_expression "pcVar24 = *(code **)(puVar27 + -0x30)" identifier = (pointer_expression "*(code **)(puVar27 + -0x30)" * (cast_expression "(code **)(puVar27 + -0x30)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar27 + -0x30)" ( (binary_expression "puVar27 + -0x30" identifier + number_literal) ))))) ;) }) (else_clause "else {\n    iVar16 = piVar10[2];\n  }" else (compound_statement "{\n    iVar16 = piVar10[2];\n  }" { (expression_statement "iVar16 = piVar10[2];" (assignment_expression "iVar16 = piVar10[2]" identifier = (subscript_expression "piVar10[2]" identifier [ number_literal ])) ;) }))) (expression_statement "iVar20 = piVar9[2];" (assignment_expression "iVar20 = piVar9[2]" identifier = (subscript_expression "piVar9[2]" identifier [ number_literal ])) ;) (expression_statement "iVar13 = param_3[2];" (assignment_expression "iVar13 = param_3[2]" identifier = (subscript_expression "param_3[2]" identifier [ number_literal ])) ;) (if_statement "if ((int)(uVar19 ^ uVar6) < 0) {\n    if (uVar17 == uVar14) {\n      iVar15 = uVar17 * 4;\n      iVar11 = iVar20 + iVar15;\n      iVar8 = iVar13 + iVar15;\n      uVar6 = uVar17;\n      do {\n        uVar6 = uVar6 - 1;\n        if (uVar6 == 0xffffffff) goto LAB_00034bf8;\n        puVar1 = (uint *)(iVar11 + -4);\n        puVar2 = (uint *)(iVar8 + -4);\n        iVar11 = iVar11 + -4;\n        iVar8 = iVar8 + -4;\n      } while (*puVar1 == *puVar2);\n      if (*puVar2 < *puVar1) {\nLAB_00034bf8:\n        (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar20,iVar13,uVar17);\n        if ((0 < (int)uVar17) && (*(int *)(iVar16 + iVar15 + -4) == 0)) {\n          iVar16 = iVar16 + iVar15;\n          do {\n            uVar17 = uVar17 - 1;\n            if (uVar17 == 0) break;\n            piVar12 = (int *)(iVar16 + -8);\n            iVar16 = iVar16 + -4;\n          } while (*piVar12 == 0);\n        }\n        if ((int)uVar19 < 0) {\n          uVar17 = -uVar17;\n        }\n      }\n      else {\n        (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar13,iVar20);\n        if ((0 < (int)uVar17) && (*(int *)(iVar16 + iVar15 + -4) == 0)) {\n          iVar16 = iVar16 + iVar15;\n          do {\n            uVar17 = uVar17 - 1;\n            if (uVar17 == 0) break;\n            piVar12 = (int *)(iVar16 + -8);\n            iVar16 = iVar16 + -4;\n          } while (*piVar12 == 0);\n        }\n        if (-1 < (int)uVar19) {\n          uVar17 = -uVar17;\n        }\n      }\n      goto LAB_000349e8;\n    }\n    if (uVar14 == 0) {\nLAB_00034a50:\n      if ((iVar16 != iVar20) && ((int)uVar14 < (int)uVar17)) {\n        puVar5 = (undefined4 *)(iVar20 + uVar14 * 4);\n        puVar7 = (undefined4 *)(iVar16 + uVar14 * 4);\n        do {\n          *puVar7 = *puVar5;\n          puVar5 = puVar5 + 1;\n          puVar7 = puVar7 + 1;\n        } while (puVar5 != (undefined4 *)(iVar20 + uVar17 * 4));\n      }\n    }\n    else {\n      iVar13 = (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar20,iVar13,uVar14);\n      if (iVar13 == 0) goto LAB_00034a50;\n      if ((int)uVar14 < (int)uVar17) {\n        piVar12 = (int *)(iVar20 + uVar14 * 4);\n        iVar13 = *piVar12;\n        piVar9 = (int *)(iVar16 + uVar14 * 4);\n        *piVar9 = iVar13 + -1;\n        while (uVar14 = uVar14 + 1, iVar13 == 0) {\n          if (uVar17 == uVar14) goto LAB_00034a84;\n          iVar13 = piVar12[1];\n          piVar9[1] = iVar13 + -1;\n          piVar12 = piVar12 + 1;\n          piVar9 = piVar9 + 1;\n        }\n        goto LAB_00034a50;\n      }\n    }\nLAB_00034a84:\n    if ((0 < (int)uVar17) && (iVar13 = (uVar17 + 0x3fffffff) * 4, *(int *)(iVar16 + iVar13) == 0)) {\n      iVar16 = iVar16 + iVar13 + 4;\n      do {\n        uVar17 = uVar17 - 1;\n        if (uVar17 == 0) break;\n        piVar12 = (int *)(iVar16 + -8);\n        iVar16 = iVar16 + -4;\n      } while (*piVar12 == 0);\n    }\n    if ((int)uVar19 < 0) {\n      uVar17 = -uVar17;\n    }\n    goto LAB_000349e8;\n  }" if (parenthesized_expression "((int)(uVar19 ^ uVar6) < 0)" ( (binary_expression "(int)(uVar19 ^ uVar6) < 0" (cast_expression "(int)(uVar19 ^ uVar6)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar19 ^ uVar6)" ( (binary_expression "uVar19 ^ uVar6" identifier ^ identifier) ))) < number_literal) )) (compound_statement "{\n    if (uVar17 == uVar14) {\n      iVar15 = uVar17 * 4;\n      iVar11 = iVar20 + iVar15;\n      iVar8 = iVar13 + iVar15;\n      uVar6 = uVar17;\n      do {\n        uVar6 = uVar6 - 1;\n        if (uVar6 == 0xffffffff) goto LAB_00034bf8;\n        puVar1 = (uint *)(iVar11 + -4);\n        puVar2 = (uint *)(iVar8 + -4);\n        iVar11 = iVar11 + -4;\n        iVar8 = iVar8 + -4;\n      } while (*puVar1 == *puVar2);\n      if (*puVar2 < *puVar1) {\nLAB_00034bf8:\n        (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar20,iVar13,uVar17);\n        if ((0 < (int)uVar17) && (*(int *)(iVar16 + iVar15 + -4) == 0)) {\n          iVar16 = iVar16 + iVar15;\n          do {\n            uVar17 = uVar17 - 1;\n            if (uVar17 == 0) break;\n            piVar12 = (int *)(iVar16 + -8);\n            iVar16 = iVar16 + -4;\n          } while (*piVar12 == 0);\n        }\n        if ((int)uVar19 < 0) {\n          uVar17 = -uVar17;\n        }\n      }\n      else {\n        (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar13,iVar20);\n        if ((0 < (int)uVar17) && (*(int *)(iVar16 + iVar15 + -4) == 0)) {\n          iVar16 = iVar16 + iVar15;\n          do {\n            uVar17 = uVar17 - 1;\n            if (uVar17 == 0) break;\n            piVar12 = (int *)(iVar16 + -8);\n            iVar16 = iVar16 + -4;\n          } while (*piVar12 == 0);\n        }\n        if (-1 < (int)uVar19) {\n          uVar17 = -uVar17;\n        }\n      }\n      goto LAB_000349e8;\n    }\n    if (uVar14 == 0) {\nLAB_00034a50:\n      if ((iVar16 != iVar20) && ((int)uVar14 < (int)uVar17)) {\n        puVar5 = (undefined4 *)(iVar20 + uVar14 * 4);\n        puVar7 = (undefined4 *)(iVar16 + uVar14 * 4);\n        do {\n          *puVar7 = *puVar5;\n          puVar5 = puVar5 + 1;\n          puVar7 = puVar7 + 1;\n        } while (puVar5 != (undefined4 *)(iVar20 + uVar17 * 4));\n      }\n    }\n    else {\n      iVar13 = (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar20,iVar13,uVar14);\n      if (iVar13 == 0) goto LAB_00034a50;\n      if ((int)uVar14 < (int)uVar17) {\n        piVar12 = (int *)(iVar20 + uVar14 * 4);\n        iVar13 = *piVar12;\n        piVar9 = (int *)(iVar16 + uVar14 * 4);\n        *piVar9 = iVar13 + -1;\n        while (uVar14 = uVar14 + 1, iVar13 == 0) {\n          if (uVar17 == uVar14) goto LAB_00034a84;\n          iVar13 = piVar12[1];\n          piVar9[1] = iVar13 + -1;\n          piVar12 = piVar12 + 1;\n          piVar9 = piVar9 + 1;\n        }\n        goto LAB_00034a50;\n      }\n    }\nLAB_00034a84:\n    if ((0 < (int)uVar17) && (iVar13 = (uVar17 + 0x3fffffff) * 4, *(int *)(iVar16 + iVar13) == 0)) {\n      iVar16 = iVar16 + iVar13 + 4;\n      do {\n        uVar17 = uVar17 - 1;\n        if (uVar17 == 0) break;\n        piVar12 = (int *)(iVar16 + -8);\n        iVar16 = iVar16 + -4;\n      } while (*piVar12 == 0);\n    }\n    if ((int)uVar19 < 0) {\n      uVar17 = -uVar17;\n    }\n    goto LAB_000349e8;\n  }" { (if_statement "if (uVar17 == uVar14) {\n      iVar15 = uVar17 * 4;\n      iVar11 = iVar20 + iVar15;\n      iVar8 = iVar13 + iVar15;\n      uVar6 = uVar17;\n      do {\n        uVar6 = uVar6 - 1;\n        if (uVar6 == 0xffffffff) goto LAB_00034bf8;\n        puVar1 = (uint *)(iVar11 + -4);\n        puVar2 = (uint *)(iVar8 + -4);\n        iVar11 = iVar11 + -4;\n        iVar8 = iVar8 + -4;\n      } while (*puVar1 == *puVar2);\n      if (*puVar2 < *puVar1) {\nLAB_00034bf8:\n        (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar20,iVar13,uVar17);\n        if ((0 < (int)uVar17) && (*(int *)(iVar16 + iVar15 + -4) == 0)) {\n          iVar16 = iVar16 + iVar15;\n          do {\n            uVar17 = uVar17 - 1;\n            if (uVar17 == 0) break;\n            piVar12 = (int *)(iVar16 + -8);\n            iVar16 = iVar16 + -4;\n          } while (*piVar12 == 0);\n        }\n        if ((int)uVar19 < 0) {\n          uVar17 = -uVar17;\n        }\n      }\n      else {\n        (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar13,iVar20);\n        if ((0 < (int)uVar17) && (*(int *)(iVar16 + iVar15 + -4) == 0)) {\n          iVar16 = iVar16 + iVar15;\n          do {\n            uVar17 = uVar17 - 1;\n            if (uVar17 == 0) break;\n            piVar12 = (int *)(iVar16 + -8);\n            iVar16 = iVar16 + -4;\n          } while (*piVar12 == 0);\n        }\n        if (-1 < (int)uVar19) {\n          uVar17 = -uVar17;\n        }\n      }\n      goto LAB_000349e8;\n    }" if (parenthesized_expression "(uVar17 == uVar14)" ( (binary_expression "uVar17 == uVar14" identifier == identifier) )) (compound_statement "{\n      iVar15 = uVar17 * 4;\n      iVar11 = iVar20 + iVar15;\n      iVar8 = iVar13 + iVar15;\n      uVar6 = uVar17;\n      do {\n        uVar6 = uVar6 - 1;\n        if (uVar6 == 0xffffffff) goto LAB_00034bf8;\n        puVar1 = (uint *)(iVar11 + -4);\n        puVar2 = (uint *)(iVar8 + -4);\n        iVar11 = iVar11 + -4;\n        iVar8 = iVar8 + -4;\n      } while (*puVar1 == *puVar2);\n      if (*puVar2 < *puVar1) {\nLAB_00034bf8:\n        (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar20,iVar13,uVar17);\n        if ((0 < (int)uVar17) && (*(int *)(iVar16 + iVar15 + -4) == 0)) {\n          iVar16 = iVar16 + iVar15;\n          do {\n            uVar17 = uVar17 - 1;\n            if (uVar17 == 0) break;\n            piVar12 = (int *)(iVar16 + -8);\n            iVar16 = iVar16 + -4;\n          } while (*piVar12 == 0);\n        }\n        if ((int)uVar19 < 0) {\n          uVar17 = -uVar17;\n        }\n      }\n      else {\n        (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar13,iVar20);\n        if ((0 < (int)uVar17) && (*(int *)(iVar16 + iVar15 + -4) == 0)) {\n          iVar16 = iVar16 + iVar15;\n          do {\n            uVar17 = uVar17 - 1;\n            if (uVar17 == 0) break;\n            piVar12 = (int *)(iVar16 + -8);\n            iVar16 = iVar16 + -4;\n          } while (*piVar12 == 0);\n        }\n        if (-1 < (int)uVar19) {\n          uVar17 = -uVar17;\n        }\n      }\n      goto LAB_000349e8;\n    }" { (expression_statement "iVar15 = uVar17 * 4;" (assignment_expression "iVar15 = uVar17 * 4" identifier = (binary_expression "uVar17 * 4" identifier * number_literal)) ;) (expression_statement "iVar11 = iVar20 + iVar15;" (assignment_expression "iVar11 = iVar20 + iVar15" identifier = (binary_expression "iVar20 + iVar15" identifier + identifier)) ;) (expression_statement "iVar8 = iVar13 + iVar15;" (assignment_expression "iVar8 = iVar13 + iVar15" identifier = (binary_expression "iVar13 + iVar15" identifier + identifier)) ;) (expression_statement "uVar6 = uVar17;" (assignment_expression "uVar6 = uVar17" identifier = identifier) ;) (do_statement "do {\n        uVar6 = uVar6 - 1;\n        if (uVar6 == 0xffffffff) goto LAB_00034bf8;\n        puVar1 = (uint *)(iVar11 + -4);\n        puVar2 = (uint *)(iVar8 + -4);\n        iVar11 = iVar11 + -4;\n        iVar8 = iVar8 + -4;\n      } while (*puVar1 == *puVar2);" do (compound_statement "{\n        uVar6 = uVar6 - 1;\n        if (uVar6 == 0xffffffff) goto LAB_00034bf8;\n        puVar1 = (uint *)(iVar11 + -4);\n        puVar2 = (uint *)(iVar8 + -4);\n        iVar11 = iVar11 + -4;\n        iVar8 = iVar8 + -4;\n      }" { (expression_statement "uVar6 = uVar6 - 1;" (assignment_expression "uVar6 = uVar6 - 1" identifier = (binary_expression "uVar6 - 1" identifier - number_literal)) ;) (if_statement "if (uVar6 == 0xffffffff) goto LAB_00034bf8;" if (parenthesized_expression "(uVar6 == 0xffffffff)" ( (binary_expression "uVar6 == 0xffffffff" identifier == number_literal) )) (goto_statement "goto LAB_00034bf8;" goto statement_identifier ;)) (expression_statement "puVar1 = (uint *)(iVar11 + -4);" (assignment_expression "puVar1 = (uint *)(iVar11 + -4)" identifier = (cast_expression "(uint *)(iVar11 + -4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + -4)" ( (binary_expression "iVar11 + -4" identifier + number_literal) )))) ;) (expression_statement "puVar2 = (uint *)(iVar8 + -4);" (assignment_expression "puVar2 = (uint *)(iVar8 + -4)" identifier = (cast_expression "(uint *)(iVar8 + -4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + -4)" ( (binary_expression "iVar8 + -4" identifier + number_literal) )))) ;) (expression_statement "iVar11 = iVar11 + -4;" (assignment_expression "iVar11 = iVar11 + -4" identifier = (binary_expression "iVar11 + -4" identifier + number_literal)) ;) (expression_statement "iVar8 = iVar8 + -4;" (assignment_expression "iVar8 = iVar8 + -4" identifier = (binary_expression "iVar8 + -4" identifier + number_literal)) ;) }) while (parenthesized_expression "(*puVar1 == *puVar2)" ( (binary_expression "*puVar1 == *puVar2" (pointer_expression "*puVar1" * identifier) == (pointer_expression "*puVar2" * identifier)) )) ;) (if_statement "if (*puVar2 < *puVar1) {\nLAB_00034bf8:\n        (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar20,iVar13,uVar17);\n        if ((0 < (int)uVar17) && (*(int *)(iVar16 + iVar15 + -4) == 0)) {\n          iVar16 = iVar16 + iVar15;\n          do {\n            uVar17 = uVar17 - 1;\n            if (uVar17 == 0) break;\n            piVar12 = (int *)(iVar16 + -8);\n            iVar16 = iVar16 + -4;\n          } while (*piVar12 == 0);\n        }\n        if ((int)uVar19 < 0) {\n          uVar17 = -uVar17;\n        }\n      }\n      else {\n        (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar13,iVar20);\n        if ((0 < (int)uVar17) && (*(int *)(iVar16 + iVar15 + -4) == 0)) {\n          iVar16 = iVar16 + iVar15;\n          do {\n            uVar17 = uVar17 - 1;\n            if (uVar17 == 0) break;\n            piVar12 = (int *)(iVar16 + -8);\n            iVar16 = iVar16 + -4;\n          } while (*piVar12 == 0);\n        }\n        if (-1 < (int)uVar19) {\n          uVar17 = -uVar17;\n        }\n      }" if (parenthesized_expression "(*puVar2 < *puVar1)" ( (binary_expression "*puVar2 < *puVar1" (pointer_expression "*puVar2" * identifier) < (pointer_expression "*puVar1" * identifier)) )) (compound_statement "{\nLAB_00034bf8:\n        (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar20,iVar13,uVar17);\n        if ((0 < (int)uVar17) && (*(int *)(iVar16 + iVar15 + -4) == 0)) {\n          iVar16 = iVar16 + iVar15;\n          do {\n            uVar17 = uVar17 - 1;\n            if (uVar17 == 0) break;\n            piVar12 = (int *)(iVar16 + -8);\n            iVar16 = iVar16 + -4;\n          } while (*piVar12 == 0);\n        }\n        if ((int)uVar19 < 0) {\n          uVar17 = -uVar17;\n        }\n      }" { (labeled_statement "LAB_00034bf8:\n        (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar20,iVar13,uVar17);" statement_identifier : (expression_statement "(**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar20,iVar13,uVar17);" (call_expression "(**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar20,iVar13,uVar17)" (parenthesized_expression "(**(code **)(pcVar24 + -0x7b2c))" ( (pointer_expression "**(code **)(pcVar24 + -0x7b2c)" * (pointer_expression "*(code **)(pcVar24 + -0x7b2c)" * (cast_expression "(code **)(pcVar24 + -0x7b2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar24 + -0x7b2c)" ( (binary_expression "pcVar24 + -0x7b2c" identifier + number_literal) ))))) )) (argument_list "(iVar16,iVar20,iVar13,uVar17)" ( identifier , identifier , identifier , identifier ))) ;)) (if_statement "if ((0 < (int)uVar17) && (*(int *)(iVar16 + iVar15 + -4) == 0)) {\n          iVar16 = iVar16 + iVar15;\n          do {\n            uVar17 = uVar17 - 1;\n            if (uVar17 == 0) break;\n            piVar12 = (int *)(iVar16 + -8);\n            iVar16 = iVar16 + -4;\n          } while (*piVar12 == 0);\n        }" if (parenthesized_expression "((0 < (int)uVar17) && (*(int *)(iVar16 + iVar15 + -4) == 0))" ( (binary_expression "(0 < (int)uVar17) && (*(int *)(iVar16 + iVar15 + -4) == 0)" (parenthesized_expression "(0 < (int)uVar17)" ( (binary_expression "0 < (int)uVar17" number_literal < (cast_expression "(int)uVar17" ( (type_descriptor "int" primitive_type) ) identifier)) )) && (parenthesized_expression "(*(int *)(iVar16 + iVar15 + -4) == 0)" ( (binary_expression "*(int *)(iVar16 + iVar15 + -4) == 0" (pointer_expression "*(int *)(iVar16 + iVar15 + -4)" * (cast_expression "(int *)(iVar16 + iVar15 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + iVar15 + -4)" ( (binary_expression "iVar16 + iVar15 + -4" (binary_expression "iVar16 + iVar15" identifier + identifier) + number_literal) )))) == number_literal) ))) )) (compound_statement "{\n          iVar16 = iVar16 + iVar15;\n          do {\n            uVar17 = uVar17 - 1;\n            if (uVar17 == 0) break;\n            piVar12 = (int *)(iVar16 + -8);\n            iVar16 = iVar16 + -4;\n          } while (*piVar12 == 0);\n        }" { (expression_statement "iVar16 = iVar16 + iVar15;" (assignment_expression "iVar16 = iVar16 + iVar15" identifier = (binary_expression "iVar16 + iVar15" identifier + identifier)) ;) (do_statement "do {\n            uVar17 = uVar17 - 1;\n            if (uVar17 == 0) break;\n            piVar12 = (int *)(iVar16 + -8);\n            iVar16 = iVar16 + -4;\n          } while (*piVar12 == 0);" do (compound_statement "{\n            uVar17 = uVar17 - 1;\n            if (uVar17 == 0) break;\n            piVar12 = (int *)(iVar16 + -8);\n            iVar16 = iVar16 + -4;\n          }" { (expression_statement "uVar17 = uVar17 - 1;" (assignment_expression "uVar17 = uVar17 - 1" identifier = (binary_expression "uVar17 - 1" identifier - number_literal)) ;) (if_statement "if (uVar17 == 0) break;" if (parenthesized_expression "(uVar17 == 0)" ( (binary_expression "uVar17 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "piVar12 = (int *)(iVar16 + -8);" (assignment_expression "piVar12 = (int *)(iVar16 + -8)" identifier = (cast_expression "(int *)(iVar16 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + -8)" ( (binary_expression "iVar16 + -8" identifier + number_literal) )))) ;) (expression_statement "iVar16 = iVar16 + -4;" (assignment_expression "iVar16 = iVar16 + -4" identifier = (binary_expression "iVar16 + -4" identifier + number_literal)) ;) }) while (parenthesized_expression "(*piVar12 == 0)" ( (binary_expression "*piVar12 == 0" (pointer_expression "*piVar12" * identifier) == number_literal) )) ;) })) (if_statement "if ((int)uVar19 < 0) {\n          uVar17 = -uVar17;\n        }" if (parenthesized_expression "((int)uVar19 < 0)" ( (binary_expression "(int)uVar19 < 0" (cast_expression "(int)uVar19" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n          uVar17 = -uVar17;\n        }" { (expression_statement "uVar17 = -uVar17;" (assignment_expression "uVar17 = -uVar17" identifier = (unary_expression "-uVar17" - identifier)) ;) })) }) (else_clause "else {\n        (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar13,iVar20);\n        if ((0 < (int)uVar17) && (*(int *)(iVar16 + iVar15 + -4) == 0)) {\n          iVar16 = iVar16 + iVar15;\n          do {\n            uVar17 = uVar17 - 1;\n            if (uVar17 == 0) break;\n            piVar12 = (int *)(iVar16 + -8);\n            iVar16 = iVar16 + -4;\n          } while (*piVar12 == 0);\n        }\n        if (-1 < (int)uVar19) {\n          uVar17 = -uVar17;\n        }\n      }" else (compound_statement "{\n        (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar13,iVar20);\n        if ((0 < (int)uVar17) && (*(int *)(iVar16 + iVar15 + -4) == 0)) {\n          iVar16 = iVar16 + iVar15;\n          do {\n            uVar17 = uVar17 - 1;\n            if (uVar17 == 0) break;\n            piVar12 = (int *)(iVar16 + -8);\n            iVar16 = iVar16 + -4;\n          } while (*piVar12 == 0);\n        }\n        if (-1 < (int)uVar19) {\n          uVar17 = -uVar17;\n        }\n      }" { (expression_statement "(**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar13,iVar20);" (call_expression "(**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar13,iVar20)" (parenthesized_expression "(**(code **)(pcVar24 + -0x7b2c))" ( (pointer_expression "**(code **)(pcVar24 + -0x7b2c)" * (pointer_expression "*(code **)(pcVar24 + -0x7b2c)" * (cast_expression "(code **)(pcVar24 + -0x7b2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar24 + -0x7b2c)" ( (binary_expression "pcVar24 + -0x7b2c" identifier + number_literal) ))))) )) (argument_list "(iVar16,iVar13,iVar20)" ( identifier , identifier , identifier ))) ;) (if_statement "if ((0 < (int)uVar17) && (*(int *)(iVar16 + iVar15 + -4) == 0)) {\n          iVar16 = iVar16 + iVar15;\n          do {\n            uVar17 = uVar17 - 1;\n            if (uVar17 == 0) break;\n            piVar12 = (int *)(iVar16 + -8);\n            iVar16 = iVar16 + -4;\n          } while (*piVar12 == 0);\n        }" if (parenthesized_expression "((0 < (int)uVar17) && (*(int *)(iVar16 + iVar15 + -4) == 0))" ( (binary_expression "(0 < (int)uVar17) && (*(int *)(iVar16 + iVar15 + -4) == 0)" (parenthesized_expression "(0 < (int)uVar17)" ( (binary_expression "0 < (int)uVar17" number_literal < (cast_expression "(int)uVar17" ( (type_descriptor "int" primitive_type) ) identifier)) )) && (parenthesized_expression "(*(int *)(iVar16 + iVar15 + -4) == 0)" ( (binary_expression "*(int *)(iVar16 + iVar15 + -4) == 0" (pointer_expression "*(int *)(iVar16 + iVar15 + -4)" * (cast_expression "(int *)(iVar16 + iVar15 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + iVar15 + -4)" ( (binary_expression "iVar16 + iVar15 + -4" (binary_expression "iVar16 + iVar15" identifier + identifier) + number_literal) )))) == number_literal) ))) )) (compound_statement "{\n          iVar16 = iVar16 + iVar15;\n          do {\n            uVar17 = uVar17 - 1;\n            if (uVar17 == 0) break;\n            piVar12 = (int *)(iVar16 + -8);\n            iVar16 = iVar16 + -4;\n          } while (*piVar12 == 0);\n        }" { (expression_statement "iVar16 = iVar16 + iVar15;" (assignment_expression "iVar16 = iVar16 + iVar15" identifier = (binary_expression "iVar16 + iVar15" identifier + identifier)) ;) (do_statement "do {\n            uVar17 = uVar17 - 1;\n            if (uVar17 == 0) break;\n            piVar12 = (int *)(iVar16 + -8);\n            iVar16 = iVar16 + -4;\n          } while (*piVar12 == 0);" do (compound_statement "{\n            uVar17 = uVar17 - 1;\n            if (uVar17 == 0) break;\n            piVar12 = (int *)(iVar16 + -8);\n            iVar16 = iVar16 + -4;\n          }" { (expression_statement "uVar17 = uVar17 - 1;" (assignment_expression "uVar17 = uVar17 - 1" identifier = (binary_expression "uVar17 - 1" identifier - number_literal)) ;) (if_statement "if (uVar17 == 0) break;" if (parenthesized_expression "(uVar17 == 0)" ( (binary_expression "uVar17 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "piVar12 = (int *)(iVar16 + -8);" (assignment_expression "piVar12 = (int *)(iVar16 + -8)" identifier = (cast_expression "(int *)(iVar16 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + -8)" ( (binary_expression "iVar16 + -8" identifier + number_literal) )))) ;) (expression_statement "iVar16 = iVar16 + -4;" (assignment_expression "iVar16 = iVar16 + -4" identifier = (binary_expression "iVar16 + -4" identifier + number_literal)) ;) }) while (parenthesized_expression "(*piVar12 == 0)" ( (binary_expression "*piVar12 == 0" (pointer_expression "*piVar12" * identifier) == number_literal) )) ;) })) (if_statement "if (-1 < (int)uVar19) {\n          uVar17 = -uVar17;\n        }" if (parenthesized_expression "(-1 < (int)uVar19)" ( (binary_expression "-1 < (int)uVar19" number_literal < (cast_expression "(int)uVar19" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          uVar17 = -uVar17;\n        }" { (expression_statement "uVar17 = -uVar17;" (assignment_expression "uVar17 = -uVar17" identifier = (unary_expression "-uVar17" - identifier)) ;) })) }))) (goto_statement "goto LAB_000349e8;" goto statement_identifier ;) })) (if_statement "if (uVar14 == 0) {\nLAB_00034a50:\n      if ((iVar16 != iVar20) && ((int)uVar14 < (int)uVar17)) {\n        puVar5 = (undefined4 *)(iVar20 + uVar14 * 4);\n        puVar7 = (undefined4 *)(iVar16 + uVar14 * 4);\n        do {\n          *puVar7 = *puVar5;\n          puVar5 = puVar5 + 1;\n          puVar7 = puVar7 + 1;\n        } while (puVar5 != (undefined4 *)(iVar20 + uVar17 * 4));\n      }\n    }\n    else {\n      iVar13 = (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar20,iVar13,uVar14);\n      if (iVar13 == 0) goto LAB_00034a50;\n      if ((int)uVar14 < (int)uVar17) {\n        piVar12 = (int *)(iVar20 + uVar14 * 4);\n        iVar13 = *piVar12;\n        piVar9 = (int *)(iVar16 + uVar14 * 4);\n        *piVar9 = iVar13 + -1;\n        while (uVar14 = uVar14 + 1, iVar13 == 0) {\n          if (uVar17 == uVar14) goto LAB_00034a84;\n          iVar13 = piVar12[1];\n          piVar9[1] = iVar13 + -1;\n          piVar12 = piVar12 + 1;\n          piVar9 = piVar9 + 1;\n        }\n        goto LAB_00034a50;\n      }\n    }" if (parenthesized_expression "(uVar14 == 0)" ( (binary_expression "uVar14 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_00034a50:\n      if ((iVar16 != iVar20) && ((int)uVar14 < (int)uVar17)) {\n        puVar5 = (undefined4 *)(iVar20 + uVar14 * 4);\n        puVar7 = (undefined4 *)(iVar16 + uVar14 * 4);\n        do {\n          *puVar7 = *puVar5;\n          puVar5 = puVar5 + 1;\n          puVar7 = puVar7 + 1;\n        } while (puVar5 != (undefined4 *)(iVar20 + uVar17 * 4));\n      }\n    }" { (labeled_statement "LAB_00034a50:\n      if ((iVar16 != iVar20) && ((int)uVar14 < (int)uVar17)) {\n        puVar5 = (undefined4 *)(iVar20 + uVar14 * 4);\n        puVar7 = (undefined4 *)(iVar16 + uVar14 * 4);\n        do {\n          *puVar7 = *puVar5;\n          puVar5 = puVar5 + 1;\n          puVar7 = puVar7 + 1;\n        } while (puVar5 != (undefined4 *)(iVar20 + uVar17 * 4));\n      }" statement_identifier : (if_statement "if ((iVar16 != iVar20) && ((int)uVar14 < (int)uVar17)) {\n        puVar5 = (undefined4 *)(iVar20 + uVar14 * 4);\n        puVar7 = (undefined4 *)(iVar16 + uVar14 * 4);\n        do {\n          *puVar7 = *puVar5;\n          puVar5 = puVar5 + 1;\n          puVar7 = puVar7 + 1;\n        } while (puVar5 != (undefined4 *)(iVar20 + uVar17 * 4));\n      }" if (parenthesized_expression "((iVar16 != iVar20) && ((int)uVar14 < (int)uVar17))" ( (binary_expression "(iVar16 != iVar20) && ((int)uVar14 < (int)uVar17)" (parenthesized_expression "(iVar16 != iVar20)" ( (binary_expression "iVar16 != iVar20" identifier != identifier) )) && (parenthesized_expression "((int)uVar14 < (int)uVar17)" ( (binary_expression "(int)uVar14 < (int)uVar17" (cast_expression "(int)uVar14" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)uVar17" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) (compound_statement "{\n        puVar5 = (undefined4 *)(iVar20 + uVar14 * 4);\n        puVar7 = (undefined4 *)(iVar16 + uVar14 * 4);\n        do {\n          *puVar7 = *puVar5;\n          puVar5 = puVar5 + 1;\n          puVar7 = puVar7 + 1;\n        } while (puVar5 != (undefined4 *)(iVar20 + uVar17 * 4));\n      }" { (expression_statement "puVar5 = (undefined4 *)(iVar20 + uVar14 * 4);" (assignment_expression "puVar5 = (undefined4 *)(iVar20 + uVar14 * 4)" identifier = (cast_expression "(undefined4 *)(iVar20 + uVar14 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + uVar14 * 4)" ( (binary_expression "iVar20 + uVar14 * 4" identifier + (binary_expression "uVar14 * 4" identifier * number_literal)) )))) ;) (expression_statement "puVar7 = (undefined4 *)(iVar16 + uVar14 * 4);" (assignment_expression "puVar7 = (undefined4 *)(iVar16 + uVar14 * 4)" identifier = (cast_expression "(undefined4 *)(iVar16 + uVar14 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + uVar14 * 4)" ( (binary_expression "iVar16 + uVar14 * 4" identifier + (binary_expression "uVar14 * 4" identifier * number_literal)) )))) ;) (do_statement "do {\n          *puVar7 = *puVar5;\n          puVar5 = puVar5 + 1;\n          puVar7 = puVar7 + 1;\n        } while (puVar5 != (undefined4 *)(iVar20 + uVar17 * 4));" do (compound_statement "{\n          *puVar7 = *puVar5;\n          puVar5 = puVar5 + 1;\n          puVar7 = puVar7 + 1;\n        }" { (expression_statement "*puVar7 = *puVar5;" (assignment_expression "*puVar7 = *puVar5" (pointer_expression "*puVar7" * identifier) = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) (expression_statement "puVar7 = puVar7 + 1;" (assignment_expression "puVar7 = puVar7 + 1" identifier = (binary_expression "puVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar5 != (undefined4 *)(iVar20 + uVar17 * 4))" ( (binary_expression "puVar5 != (undefined4 *)(iVar20 + uVar17 * 4)" identifier != (cast_expression "(undefined4 *)(iVar20 + uVar17 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + uVar17 * 4)" ( (binary_expression "iVar20 + uVar17 * 4" identifier + (binary_expression "uVar17 * 4" identifier * number_literal)) )))) )) ;) }))) }) (else_clause "else {\n      iVar13 = (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar20,iVar13,uVar14);\n      if (iVar13 == 0) goto LAB_00034a50;\n      if ((int)uVar14 < (int)uVar17) {\n        piVar12 = (int *)(iVar20 + uVar14 * 4);\n        iVar13 = *piVar12;\n        piVar9 = (int *)(iVar16 + uVar14 * 4);\n        *piVar9 = iVar13 + -1;\n        while (uVar14 = uVar14 + 1, iVar13 == 0) {\n          if (uVar17 == uVar14) goto LAB_00034a84;\n          iVar13 = piVar12[1];\n          piVar9[1] = iVar13 + -1;\n          piVar12 = piVar12 + 1;\n          piVar9 = piVar9 + 1;\n        }\n        goto LAB_00034a50;\n      }\n    }" else (compound_statement "{\n      iVar13 = (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar20,iVar13,uVar14);\n      if (iVar13 == 0) goto LAB_00034a50;\n      if ((int)uVar14 < (int)uVar17) {\n        piVar12 = (int *)(iVar20 + uVar14 * 4);\n        iVar13 = *piVar12;\n        piVar9 = (int *)(iVar16 + uVar14 * 4);\n        *piVar9 = iVar13 + -1;\n        while (uVar14 = uVar14 + 1, iVar13 == 0) {\n          if (uVar17 == uVar14) goto LAB_00034a84;\n          iVar13 = piVar12[1];\n          piVar9[1] = iVar13 + -1;\n          piVar12 = piVar12 + 1;\n          piVar9 = piVar9 + 1;\n        }\n        goto LAB_00034a50;\n      }\n    }" { (expression_statement "iVar13 = (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar20,iVar13,uVar14);" (assignment_expression "iVar13 = (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar20,iVar13,uVar14)" identifier = (call_expression "(**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar20,iVar13,uVar14)" (parenthesized_expression "(**(code **)(pcVar24 + -0x7b2c))" ( (pointer_expression "**(code **)(pcVar24 + -0x7b2c)" * (pointer_expression "*(code **)(pcVar24 + -0x7b2c)" * (cast_expression "(code **)(pcVar24 + -0x7b2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar24 + -0x7b2c)" ( (binary_expression "pcVar24 + -0x7b2c" identifier + number_literal) ))))) )) (argument_list "(iVar16,iVar20,iVar13,uVar14)" ( identifier , identifier , identifier , identifier )))) ;) (if_statement "if (iVar13 == 0) goto LAB_00034a50;" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00034a50;" goto statement_identifier ;)) (if_statement "if ((int)uVar14 < (int)uVar17) {\n        piVar12 = (int *)(iVar20 + uVar14 * 4);\n        iVar13 = *piVar12;\n        piVar9 = (int *)(iVar16 + uVar14 * 4);\n        *piVar9 = iVar13 + -1;\n        while (uVar14 = uVar14 + 1, iVar13 == 0) {\n          if (uVar17 == uVar14) goto LAB_00034a84;\n          iVar13 = piVar12[1];\n          piVar9[1] = iVar13 + -1;\n          piVar12 = piVar12 + 1;\n          piVar9 = piVar9 + 1;\n        }\n        goto LAB_00034a50;\n      }" if (parenthesized_expression "((int)uVar14 < (int)uVar17)" ( (binary_expression "(int)uVar14 < (int)uVar17" (cast_expression "(int)uVar14" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)uVar17" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        piVar12 = (int *)(iVar20 + uVar14 * 4);\n        iVar13 = *piVar12;\n        piVar9 = (int *)(iVar16 + uVar14 * 4);\n        *piVar9 = iVar13 + -1;\n        while (uVar14 = uVar14 + 1, iVar13 == 0) {\n          if (uVar17 == uVar14) goto LAB_00034a84;\n          iVar13 = piVar12[1];\n          piVar9[1] = iVar13 + -1;\n          piVar12 = piVar12 + 1;\n          piVar9 = piVar9 + 1;\n        }\n        goto LAB_00034a50;\n      }" { (expression_statement "piVar12 = (int *)(iVar20 + uVar14 * 4);" (assignment_expression "piVar12 = (int *)(iVar20 + uVar14 * 4)" identifier = (cast_expression "(int *)(iVar20 + uVar14 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + uVar14 * 4)" ( (binary_expression "iVar20 + uVar14 * 4" identifier + (binary_expression "uVar14 * 4" identifier * number_literal)) )))) ;) (expression_statement "iVar13 = *piVar12;" (assignment_expression "iVar13 = *piVar12" identifier = (pointer_expression "*piVar12" * identifier)) ;) (expression_statement "piVar9 = (int *)(iVar16 + uVar14 * 4);" (assignment_expression "piVar9 = (int *)(iVar16 + uVar14 * 4)" identifier = (cast_expression "(int *)(iVar16 + uVar14 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + uVar14 * 4)" ( (binary_expression "iVar16 + uVar14 * 4" identifier + (binary_expression "uVar14 * 4" identifier * number_literal)) )))) ;) (expression_statement "*piVar9 = iVar13 + -1;" (assignment_expression "*piVar9 = iVar13 + -1" (pointer_expression "*piVar9" * identifier) = (binary_expression "iVar13 + -1" identifier + number_literal)) ;) (while_statement "while (uVar14 = uVar14 + 1, iVar13 == 0) {\n          if (uVar17 == uVar14) goto LAB_00034a84;\n          iVar13 = piVar12[1];\n          piVar9[1] = iVar13 + -1;\n          piVar12 = piVar12 + 1;\n          piVar9 = piVar9 + 1;\n        }" while (parenthesized_expression "(uVar14 = uVar14 + 1, iVar13 == 0)" ( (comma_expression "uVar14 = uVar14 + 1, iVar13 == 0" (assignment_expression "uVar14 = uVar14 + 1" identifier = (binary_expression "uVar14 + 1" identifier + number_literal)) , (binary_expression "iVar13 == 0" identifier == number_literal)) )) (compound_statement "{\n          if (uVar17 == uVar14) goto LAB_00034a84;\n          iVar13 = piVar12[1];\n          piVar9[1] = iVar13 + -1;\n          piVar12 = piVar12 + 1;\n          piVar9 = piVar9 + 1;\n        }" { (if_statement "if (uVar17 == uVar14) goto LAB_00034a84;" if (parenthesized_expression "(uVar17 == uVar14)" ( (binary_expression "uVar17 == uVar14" identifier == identifier) )) (goto_statement "goto LAB_00034a84;" goto statement_identifier ;)) (expression_statement "iVar13 = piVar12[1];" (assignment_expression "iVar13 = piVar12[1]" identifier = (subscript_expression "piVar12[1]" identifier [ number_literal ])) ;) (expression_statement "piVar9[1] = iVar13 + -1;" (assignment_expression "piVar9[1] = iVar13 + -1" (subscript_expression "piVar9[1]" identifier [ number_literal ]) = (binary_expression "iVar13 + -1" identifier + number_literal)) ;) (expression_statement "piVar12 = piVar12 + 1;" (assignment_expression "piVar12 = piVar12 + 1" identifier = (binary_expression "piVar12 + 1" identifier + number_literal)) ;) (expression_statement "piVar9 = piVar9 + 1;" (assignment_expression "piVar9 = piVar9 + 1" identifier = (binary_expression "piVar9 + 1" identifier + number_literal)) ;) })) (goto_statement "goto LAB_00034a50;" goto statement_identifier ;) })) }))) (labeled_statement "LAB_00034a84:\n    if ((0 < (int)uVar17) && (iVar13 = (uVar17 + 0x3fffffff) * 4, *(int *)(iVar16 + iVar13) == 0)) {\n      iVar16 = iVar16 + iVar13 + 4;\n      do {\n        uVar17 = uVar17 - 1;\n        if (uVar17 == 0) break;\n        piVar12 = (int *)(iVar16 + -8);\n        iVar16 = iVar16 + -4;\n      } while (*piVar12 == 0);\n    }" statement_identifier : (if_statement "if ((0 < (int)uVar17) && (iVar13 = (uVar17 + 0x3fffffff) * 4, *(int *)(iVar16 + iVar13) == 0)) {\n      iVar16 = iVar16 + iVar13 + 4;\n      do {\n        uVar17 = uVar17 - 1;\n        if (uVar17 == 0) break;\n        piVar12 = (int *)(iVar16 + -8);\n        iVar16 = iVar16 + -4;\n      } while (*piVar12 == 0);\n    }" if (parenthesized_expression "((0 < (int)uVar17) && (iVar13 = (uVar17 + 0x3fffffff) * 4, *(int *)(iVar16 + iVar13) == 0))" ( (binary_expression "(0 < (int)uVar17) && (iVar13 = (uVar17 + 0x3fffffff) * 4, *(int *)(iVar16 + iVar13) == 0)" (parenthesized_expression "(0 < (int)uVar17)" ( (binary_expression "0 < (int)uVar17" number_literal < (cast_expression "(int)uVar17" ( (type_descriptor "int" primitive_type) ) identifier)) )) && (parenthesized_expression "(iVar13 = (uVar17 + 0x3fffffff) * 4, *(int *)(iVar16 + iVar13) == 0)" ( (comma_expression "iVar13 = (uVar17 + 0x3fffffff) * 4, *(int *)(iVar16 + iVar13) == 0" (assignment_expression "iVar13 = (uVar17 + 0x3fffffff) * 4" identifier = (binary_expression "(uVar17 + 0x3fffffff) * 4" (parenthesized_expression "(uVar17 + 0x3fffffff)" ( (binary_expression "uVar17 + 0x3fffffff" identifier + number_literal) )) * number_literal)) , (binary_expression "*(int *)(iVar16 + iVar13) == 0" (pointer_expression "*(int *)(iVar16 + iVar13)" * (cast_expression "(int *)(iVar16 + iVar13)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + iVar13)" ( (binary_expression "iVar16 + iVar13" identifier + identifier) )))) == number_literal)) ))) )) (compound_statement "{\n      iVar16 = iVar16 + iVar13 + 4;\n      do {\n        uVar17 = uVar17 - 1;\n        if (uVar17 == 0) break;\n        piVar12 = (int *)(iVar16 + -8);\n        iVar16 = iVar16 + -4;\n      } while (*piVar12 == 0);\n    }" { (expression_statement "iVar16 = iVar16 + iVar13 + 4;" (assignment_expression "iVar16 = iVar16 + iVar13 + 4" identifier = (binary_expression "iVar16 + iVar13 + 4" (binary_expression "iVar16 + iVar13" identifier + identifier) + number_literal)) ;) (do_statement "do {\n        uVar17 = uVar17 - 1;\n        if (uVar17 == 0) break;\n        piVar12 = (int *)(iVar16 + -8);\n        iVar16 = iVar16 + -4;\n      } while (*piVar12 == 0);" do (compound_statement "{\n        uVar17 = uVar17 - 1;\n        if (uVar17 == 0) break;\n        piVar12 = (int *)(iVar16 + -8);\n        iVar16 = iVar16 + -4;\n      }" { (expression_statement "uVar17 = uVar17 - 1;" (assignment_expression "uVar17 = uVar17 - 1" identifier = (binary_expression "uVar17 - 1" identifier - number_literal)) ;) (if_statement "if (uVar17 == 0) break;" if (parenthesized_expression "(uVar17 == 0)" ( (binary_expression "uVar17 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "piVar12 = (int *)(iVar16 + -8);" (assignment_expression "piVar12 = (int *)(iVar16 + -8)" identifier = (cast_expression "(int *)(iVar16 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + -8)" ( (binary_expression "iVar16 + -8" identifier + number_literal) )))) ;) (expression_statement "iVar16 = iVar16 + -4;" (assignment_expression "iVar16 = iVar16 + -4" identifier = (binary_expression "iVar16 + -4" identifier + number_literal)) ;) }) while (parenthesized_expression "(*piVar12 == 0)" ( (binary_expression "*piVar12 == 0" (pointer_expression "*piVar12" * identifier) == number_literal) )) ;) }))) (if_statement "if ((int)uVar19 < 0) {\n      uVar17 = -uVar17;\n    }" if (parenthesized_expression "((int)uVar19 < 0)" ( (binary_expression "(int)uVar19 < 0" (cast_expression "(int)uVar19" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      uVar17 = -uVar17;\n    }" { (expression_statement "uVar17 = -uVar17;" (assignment_expression "uVar17 = -uVar17" identifier = (unary_expression "-uVar17" - identifier)) ;) })) (goto_statement "goto LAB_000349e8;" goto statement_identifier ;) })) (if_statement "if (uVar14 == 0) {\nLAB_0003499c:\n    if (iVar16 == iVar20) {\n      iVar13 = 0;\n    }\n    else if ((int)uVar14 < (int)uVar17) {\n      puVar7 = (undefined4 *)(iVar20 + uVar14 * 4);\n      puVar5 = (undefined4 *)(iVar16 + uVar14 * 4);\n      do {\n        *puVar5 = *puVar7;\n        puVar7 = puVar7 + 1;\n        puVar5 = puVar5 + 1;\n      } while (puVar7 != (undefined4 *)(iVar20 + uVar17 * 4));\n      iVar13 = 0;\n    }\n    else {\n      iVar13 = 0;\n    }\n  }\n  else {\n    iVar13 = (**(code **)(pcVar24 + -0x7d0c))(iVar16,iVar20,iVar13,uVar14);\n    if (iVar13 == 0) goto LAB_0003499c;\n    iVar13 = 1;\n    if ((int)uVar14 < (int)uVar17) {\n      piVar12 = (int *)(iVar20 + uVar14 * 4);\n      piVar9 = (int *)(iVar16 + uVar14 * 4);\n      iVar13 = *piVar12 + 1;\n      *piVar9 = iVar13;\n      while (uVar14 = uVar14 + 1, iVar13 == 0) {\n        if (uVar17 == uVar14) {\n          iVar13 = 1;\n          goto LAB_000349d4;\n        }\n        iVar13 = piVar12[1] + 1;\n        piVar9[1] = iVar13;\n        piVar12 = piVar12 + 1;\n        piVar9 = piVar9 + 1;\n      }\n      goto LAB_0003499c;\n    }\n  }" if (parenthesized_expression "(uVar14 == 0)" ( (binary_expression "uVar14 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0003499c:\n    if (iVar16 == iVar20) {\n      iVar13 = 0;\n    }\n    else if ((int)uVar14 < (int)uVar17) {\n      puVar7 = (undefined4 *)(iVar20 + uVar14 * 4);\n      puVar5 = (undefined4 *)(iVar16 + uVar14 * 4);\n      do {\n        *puVar5 = *puVar7;\n        puVar7 = puVar7 + 1;\n        puVar5 = puVar5 + 1;\n      } while (puVar7 != (undefined4 *)(iVar20 + uVar17 * 4));\n      iVar13 = 0;\n    }\n    else {\n      iVar13 = 0;\n    }\n  }" { (labeled_statement "LAB_0003499c:\n    if (iVar16 == iVar20) {\n      iVar13 = 0;\n    }\n    else if ((int)uVar14 < (int)uVar17) {\n      puVar7 = (undefined4 *)(iVar20 + uVar14 * 4);\n      puVar5 = (undefined4 *)(iVar16 + uVar14 * 4);\n      do {\n        *puVar5 = *puVar7;\n        puVar7 = puVar7 + 1;\n        puVar5 = puVar5 + 1;\n      } while (puVar7 != (undefined4 *)(iVar20 + uVar17 * 4));\n      iVar13 = 0;\n    }\n    else {\n      iVar13 = 0;\n    }" statement_identifier : (if_statement "if (iVar16 == iVar20) {\n      iVar13 = 0;\n    }\n    else if ((int)uVar14 < (int)uVar17) {\n      puVar7 = (undefined4 *)(iVar20 + uVar14 * 4);\n      puVar5 = (undefined4 *)(iVar16 + uVar14 * 4);\n      do {\n        *puVar5 = *puVar7;\n        puVar7 = puVar7 + 1;\n        puVar5 = puVar5 + 1;\n      } while (puVar7 != (undefined4 *)(iVar20 + uVar17 * 4));\n      iVar13 = 0;\n    }\n    else {\n      iVar13 = 0;\n    }" if (parenthesized_expression "(iVar16 == iVar20)" ( (binary_expression "iVar16 == iVar20" identifier == identifier) )) (compound_statement "{\n      iVar13 = 0;\n    }" { (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" identifier = number_literal) ;) }) (else_clause "else if ((int)uVar14 < (int)uVar17) {\n      puVar7 = (undefined4 *)(iVar20 + uVar14 * 4);\n      puVar5 = (undefined4 *)(iVar16 + uVar14 * 4);\n      do {\n        *puVar5 = *puVar7;\n        puVar7 = puVar7 + 1;\n        puVar5 = puVar5 + 1;\n      } while (puVar7 != (undefined4 *)(iVar20 + uVar17 * 4));\n      iVar13 = 0;\n    }\n    else {\n      iVar13 = 0;\n    }" else (if_statement "if ((int)uVar14 < (int)uVar17) {\n      puVar7 = (undefined4 *)(iVar20 + uVar14 * 4);\n      puVar5 = (undefined4 *)(iVar16 + uVar14 * 4);\n      do {\n        *puVar5 = *puVar7;\n        puVar7 = puVar7 + 1;\n        puVar5 = puVar5 + 1;\n      } while (puVar7 != (undefined4 *)(iVar20 + uVar17 * 4));\n      iVar13 = 0;\n    }\n    else {\n      iVar13 = 0;\n    }" if (parenthesized_expression "((int)uVar14 < (int)uVar17)" ( (binary_expression "(int)uVar14 < (int)uVar17" (cast_expression "(int)uVar14" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)uVar17" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      puVar7 = (undefined4 *)(iVar20 + uVar14 * 4);\n      puVar5 = (undefined4 *)(iVar16 + uVar14 * 4);\n      do {\n        *puVar5 = *puVar7;\n        puVar7 = puVar7 + 1;\n        puVar5 = puVar5 + 1;\n      } while (puVar7 != (undefined4 *)(iVar20 + uVar17 * 4));\n      iVar13 = 0;\n    }" { (expression_statement "puVar7 = (undefined4 *)(iVar20 + uVar14 * 4);" (assignment_expression "puVar7 = (undefined4 *)(iVar20 + uVar14 * 4)" identifier = (cast_expression "(undefined4 *)(iVar20 + uVar14 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + uVar14 * 4)" ( (binary_expression "iVar20 + uVar14 * 4" identifier + (binary_expression "uVar14 * 4" identifier * number_literal)) )))) ;) (expression_statement "puVar5 = (undefined4 *)(iVar16 + uVar14 * 4);" (assignment_expression "puVar5 = (undefined4 *)(iVar16 + uVar14 * 4)" identifier = (cast_expression "(undefined4 *)(iVar16 + uVar14 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + uVar14 * 4)" ( (binary_expression "iVar16 + uVar14 * 4" identifier + (binary_expression "uVar14 * 4" identifier * number_literal)) )))) ;) (do_statement "do {\n        *puVar5 = *puVar7;\n        puVar7 = puVar7 + 1;\n        puVar5 = puVar5 + 1;\n      } while (puVar7 != (undefined4 *)(iVar20 + uVar17 * 4));" do (compound_statement "{\n        *puVar5 = *puVar7;\n        puVar7 = puVar7 + 1;\n        puVar5 = puVar5 + 1;\n      }" { (expression_statement "*puVar5 = *puVar7;" (assignment_expression "*puVar5 = *puVar7" (pointer_expression "*puVar5" * identifier) = (pointer_expression "*puVar7" * identifier)) ;) (expression_statement "puVar7 = puVar7 + 1;" (assignment_expression "puVar7 = puVar7 + 1" identifier = (binary_expression "puVar7 + 1" identifier + number_literal)) ;) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar7 != (undefined4 *)(iVar20 + uVar17 * 4))" ( (binary_expression "puVar7 != (undefined4 *)(iVar20 + uVar17 * 4)" identifier != (cast_expression "(undefined4 *)(iVar20 + uVar17 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + uVar17 * 4)" ( (binary_expression "iVar20 + uVar17 * 4" identifier + (binary_expression "uVar17 * 4" identifier * number_literal)) )))) )) ;) (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      iVar13 = 0;\n    }" else (compound_statement "{\n      iVar13 = 0;\n    }" { (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" identifier = number_literal) ;) })))))) }) (else_clause "else {\n    iVar13 = (**(code **)(pcVar24 + -0x7d0c))(iVar16,iVar20,iVar13,uVar14);\n    if (iVar13 == 0) goto LAB_0003499c;\n    iVar13 = 1;\n    if ((int)uVar14 < (int)uVar17) {\n      piVar12 = (int *)(iVar20 + uVar14 * 4);\n      piVar9 = (int *)(iVar16 + uVar14 * 4);\n      iVar13 = *piVar12 + 1;\n      *piVar9 = iVar13;\n      while (uVar14 = uVar14 + 1, iVar13 == 0) {\n        if (uVar17 == uVar14) {\n          iVar13 = 1;\n          goto LAB_000349d4;\n        }\n        iVar13 = piVar12[1] + 1;\n        piVar9[1] = iVar13;\n        piVar12 = piVar12 + 1;\n        piVar9 = piVar9 + 1;\n      }\n      goto LAB_0003499c;\n    }\n  }" else (compound_statement "{\n    iVar13 = (**(code **)(pcVar24 + -0x7d0c))(iVar16,iVar20,iVar13,uVar14);\n    if (iVar13 == 0) goto LAB_0003499c;\n    iVar13 = 1;\n    if ((int)uVar14 < (int)uVar17) {\n      piVar12 = (int *)(iVar20 + uVar14 * 4);\n      piVar9 = (int *)(iVar16 + uVar14 * 4);\n      iVar13 = *piVar12 + 1;\n      *piVar9 = iVar13;\n      while (uVar14 = uVar14 + 1, iVar13 == 0) {\n        if (uVar17 == uVar14) {\n          iVar13 = 1;\n          goto LAB_000349d4;\n        }\n        iVar13 = piVar12[1] + 1;\n        piVar9[1] = iVar13;\n        piVar12 = piVar12 + 1;\n        piVar9 = piVar9 + 1;\n      }\n      goto LAB_0003499c;\n    }\n  }" { (expression_statement "iVar13 = (**(code **)(pcVar24 + -0x7d0c))(iVar16,iVar20,iVar13,uVar14);" (assignment_expression "iVar13 = (**(code **)(pcVar24 + -0x7d0c))(iVar16,iVar20,iVar13,uVar14)" identifier = (call_expression "(**(code **)(pcVar24 + -0x7d0c))(iVar16,iVar20,iVar13,uVar14)" (parenthesized_expression "(**(code **)(pcVar24 + -0x7d0c))" ( (pointer_expression "**(code **)(pcVar24 + -0x7d0c)" * (pointer_expression "*(code **)(pcVar24 + -0x7d0c)" * (cast_expression "(code **)(pcVar24 + -0x7d0c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar24 + -0x7d0c)" ( (binary_expression "pcVar24 + -0x7d0c" identifier + number_literal) ))))) )) (argument_list "(iVar16,iVar20,iVar13,uVar14)" ( identifier , identifier , identifier , identifier )))) ;) (if_statement "if (iVar13 == 0) goto LAB_0003499c;" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0003499c;" goto statement_identifier ;)) (expression_statement "iVar13 = 1;" (assignment_expression "iVar13 = 1" identifier = number_literal) ;) (if_statement "if ((int)uVar14 < (int)uVar17) {\n      piVar12 = (int *)(iVar20 + uVar14 * 4);\n      piVar9 = (int *)(iVar16 + uVar14 * 4);\n      iVar13 = *piVar12 + 1;\n      *piVar9 = iVar13;\n      while (uVar14 = uVar14 + 1, iVar13 == 0) {\n        if (uVar17 == uVar14) {\n          iVar13 = 1;\n          goto LAB_000349d4;\n        }\n        iVar13 = piVar12[1] + 1;\n        piVar9[1] = iVar13;\n        piVar12 = piVar12 + 1;\n        piVar9 = piVar9 + 1;\n      }\n      goto LAB_0003499c;\n    }" if (parenthesized_expression "((int)uVar14 < (int)uVar17)" ( (binary_expression "(int)uVar14 < (int)uVar17" (cast_expression "(int)uVar14" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)uVar17" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      piVar12 = (int *)(iVar20 + uVar14 * 4);\n      piVar9 = (int *)(iVar16 + uVar14 * 4);\n      iVar13 = *piVar12 + 1;\n      *piVar9 = iVar13;\n      while (uVar14 = uVar14 + 1, iVar13 == 0) {\n        if (uVar17 == uVar14) {\n          iVar13 = 1;\n          goto LAB_000349d4;\n        }\n        iVar13 = piVar12[1] + 1;\n        piVar9[1] = iVar13;\n        piVar12 = piVar12 + 1;\n        piVar9 = piVar9 + 1;\n      }\n      goto LAB_0003499c;\n    }" { (expression_statement "piVar12 = (int *)(iVar20 + uVar14 * 4);" (assignment_expression "piVar12 = (int *)(iVar20 + uVar14 * 4)" identifier = (cast_expression "(int *)(iVar20 + uVar14 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + uVar14 * 4)" ( (binary_expression "iVar20 + uVar14 * 4" identifier + (binary_expression "uVar14 * 4" identifier * number_literal)) )))) ;) (expression_statement "piVar9 = (int *)(iVar16 + uVar14 * 4);" (assignment_expression "piVar9 = (int *)(iVar16 + uVar14 * 4)" identifier = (cast_expression "(int *)(iVar16 + uVar14 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + uVar14 * 4)" ( (binary_expression "iVar16 + uVar14 * 4" identifier + (binary_expression "uVar14 * 4" identifier * number_literal)) )))) ;) (expression_statement "iVar13 = *piVar12 + 1;" (assignment_expression "iVar13 = *piVar12 + 1" identifier = (binary_expression "*piVar12 + 1" (pointer_expression "*piVar12" * identifier) + number_literal)) ;) (expression_statement "*piVar9 = iVar13;" (assignment_expression "*piVar9 = iVar13" (pointer_expression "*piVar9" * identifier) = identifier) ;) (while_statement "while (uVar14 = uVar14 + 1, iVar13 == 0) {\n        if (uVar17 == uVar14) {\n          iVar13 = 1;\n          goto LAB_000349d4;\n        }\n        iVar13 = piVar12[1] + 1;\n        piVar9[1] = iVar13;\n        piVar12 = piVar12 + 1;\n        piVar9 = piVar9 + 1;\n      }" while (parenthesized_expression "(uVar14 = uVar14 + 1, iVar13 == 0)" ( (comma_expression "uVar14 = uVar14 + 1, iVar13 == 0" (assignment_expression "uVar14 = uVar14 + 1" identifier = (binary_expression "uVar14 + 1" identifier + number_literal)) , (binary_expression "iVar13 == 0" identifier == number_literal)) )) (compound_statement "{\n        if (uVar17 == uVar14) {\n          iVar13 = 1;\n          goto LAB_000349d4;\n        }\n        iVar13 = piVar12[1] + 1;\n        piVar9[1] = iVar13;\n        piVar12 = piVar12 + 1;\n        piVar9 = piVar9 + 1;\n      }" { (if_statement "if (uVar17 == uVar14) {\n          iVar13 = 1;\n          goto LAB_000349d4;\n        }" if (parenthesized_expression "(uVar17 == uVar14)" ( (binary_expression "uVar17 == uVar14" identifier == identifier) )) (compound_statement "{\n          iVar13 = 1;\n          goto LAB_000349d4;\n        }" { (expression_statement "iVar13 = 1;" (assignment_expression "iVar13 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_000349d4;" goto statement_identifier ;) })) (expression_statement "iVar13 = piVar12[1] + 1;" (assignment_expression "iVar13 = piVar12[1] + 1" identifier = (binary_expression "piVar12[1] + 1" (subscript_expression "piVar12[1]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "piVar9[1] = iVar13;" (assignment_expression "piVar9[1] = iVar13" (subscript_expression "piVar9[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar12 = piVar12 + 1;" (assignment_expression "piVar12 = piVar12 + 1" identifier = (binary_expression "piVar12 + 1" identifier + number_literal)) ;) (expression_statement "piVar9 = piVar9 + 1;" (assignment_expression "piVar9 = piVar9 + 1" identifier = (binary_expression "piVar9 + 1" identifier + number_literal)) ;) })) (goto_statement "goto LAB_0003499c;" goto statement_identifier ;) })) }))) (labeled_statement "LAB_000349d4:\n  *(int *)(iVar16 + uVar17 * 4) = iVar13;" statement_identifier : (expression_statement "*(int *)(iVar16 + uVar17 * 4) = iVar13;" (assignment_expression "*(int *)(iVar16 + uVar17 * 4) = iVar13" (pointer_expression "*(int *)(iVar16 + uVar17 * 4)" * (cast_expression "(int *)(iVar16 + uVar17 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + uVar17 * 4)" ( (binary_expression "iVar16 + uVar17 * 4" identifier + (binary_expression "uVar17 * 4" identifier * number_literal)) )))) = identifier) ;)) (expression_statement "uVar17 = uVar17 + iVar13;" (assignment_expression "uVar17 = uVar17 + iVar13" identifier = (binary_expression "uVar17 + iVar13" identifier + identifier)) ;) (if_statement "if ((int)uVar19 < 0) {\n    uVar17 = -uVar17;\n  }" if (parenthesized_expression "((int)uVar19 < 0)" ( (binary_expression "(int)uVar19 < 0" (cast_expression "(int)uVar19" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    uVar17 = -uVar17;\n  }" { (expression_statement "uVar17 = -uVar17;" (assignment_expression "uVar17 = -uVar17" identifier = (unary_expression "-uVar17" - identifier)) ;) })) (labeled_statement "LAB_000349e8:\n  piVar10[1] = uVar17;" statement_identifier : (expression_statement "piVar10[1] = uVar17;" (assignment_expression "piVar10[1] = uVar17" (subscript_expression "piVar10[1]" identifier [ number_literal ]) = identifier) ;)) (return_statement "return;" return ;) })))
(translation_unit "void __gmpz_sqrt(mpz_ptr root,mpz_srcptr op)\n\n{\n  mp_limb_t *pmVar1;\n  mp_limb_t *pmVar2;\n  int *piVar3;\n  int *piVar4;\n  mp_limb_t **ppmVar5;\n  mp_limb_t **ppmVar6;\n  uint uVar7;\n  uint uVar8;\n  mp_limb_t *pmVar9;\n  mp_limb_t mVar10;\n  mpz_ptr p_Var11;\n  int iVar12;\n  mp_limb_t *pmVar13;\n  mpz_ptr p_Var14;\n  mp_limb_t *pmVar15;\n  mpz_ptr in_a2;\n  int unaff_s0;\n  uint uVar16;\n  int iVar17;\n  uint uVar18;\n  mpz_ptr unaff_s2;\n  uint uVar19;\n  uint uVar20;\n  int *unaff_s3;\n  mpz_ptr unaff_s4;\n  mp_limb_t *pmVar21;\n  mpz_ptr unaff_s5;\n  mpz_ptr p_Var22;\n  mp_limb_t *pmVar23;\n  mpz_ptr unaff_s6;\n  uint unaff_s7;\n  undefined *puVar24;\n  code *pcVar25;\n  undefined *puVar26;\n  code *pcVar27;\n  undefined1 *puVar28;\n  undefined1 *puVar29;\n  undefined1 *puVar30;\n  undefined1 *puVar31;\n  undefined4 uVar32;\n  undefined1 auStack_40 [16];\n  tmp_reentrant_t *__tmp_marker;\n  int local_24;\n  \n  puVar28 = auStack_40;\n  puVar29 = auStack_40;\n  local_24 = *(int *)PTR___stack_chk_guard_0009b540;\n  iVar17 = op->_mp_size;\n  if (iVar17 < 1) {\n    if (iVar17 < 0) {\n      (*(code *)PTR___gmp_sqrt_of_negative_0009b1cc)();\n      goto LAB_000345b4;\n    }\n    root->_mp_size = 0;\n  }\n  else {\n    unaff_s0 = (iVar17 + 1) / 2;\n    root->_mp_size = unaff_s0;\n    unaff_s2 = (mpz_ptr)op->_mp_d;\n    if (op == root) {\nLAB_000345b4:\n      unaff_s4 = (mpz_ptr)(unaff_s0 * 4);\n      __tmp_marker = (tmp_reentrant_t *)0x0;\n      if (unaff_s4 < (mpz_ptr)0x7f01) {\n        iVar12 = -((uint)((int)&unaff_s4->_mp_size + 3U) & 0xfffffff8);\n        puVar29 = auStack_40 + iVar12;\n        unaff_s3 = (int *)(&stack0xffffffd0 + iVar12);\n      }\n      else {\n        unaff_s3 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)(&__tmp_marker,unaff_s4);\n      }\n      op = (mpz_ptr)0x0;\n      in_a2 = unaff_s2;\n      (*(code *)PTR___gmpn_sqrtrem_0009b0e0)(unaff_s3,0,unaff_s2,iVar17);\n      iVar12 = *unaff_s3;\n      if (unaff_s0 != 1) {\n        piVar3 = unaff_s3 + 1;\n        unaff_s3 = unaff_s3 + unaff_s0;\n        p_Var11 = unaff_s2;\n        do {\n          p_Var11->_mp_alloc = iVar12;\n          piVar4 = piVar3 + 1;\n          iVar12 = *piVar3;\n          piVar3 = piVar4;\n          p_Var11 = (mpz_ptr)&p_Var11->_mp_size;\n        } while (unaff_s3 != piVar4);\n        unaff_s4 = (mpz_ptr)&unaff_s4[-1]._mp_d;\n        unaff_s2 = (mpz_ptr)((int)unaff_s4 + (int)&unaff_s2->_mp_alloc);\n      }\n      unaff_s2->_mp_alloc = iVar12;\n      root = (mpz_ptr)__tmp_marker;\n      puVar28 = puVar29;\n      if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n        (*(code *)PTR___gmp_tmp_reentrant_free_0009b614)();\n      }\n    }\n    else {\n      if (root->_mp_alloc < unaff_s0) {\n        root = (mpz_ptr)(*(code *)PTR___gmpz_realloc_0009b5bc)(root,unaff_s0);\n      }\n      else {\n        root = (mpz_ptr)root->_mp_d;\n      }\n      op = (mpz_ptr)0x0;\n      in_a2 = unaff_s2;\n      (*(code *)PTR___gmpn_sqrtrem_0009b0e0)();\n      puVar28 = auStack_40;\n    }\n  }\n  if (local_24 == *(int *)PTR___stack_chk_guard_0009b540) {\n    return;\n  }\n  uVar32 = 0x34694;\n  puVar24 = PTR___stack_chk_fail_0009b4d0;\n  (*(code *)PTR___stack_chk_fail_0009b4d0)();\n  puVar26 = puVar24 + 0x6e9a0;\n  puVar30 = puVar28 + -0x48;\n  puVar31 = puVar28 + -0x48;\n  *(undefined4 *)(puVar28 + -4) = uVar32;\n  *(undefined1 **)(puVar28 + -8) = auStack_40;\n  *(uint *)(puVar28 + -0xc) = unaff_s7;\n  *(mpz_ptr *)(puVar28 + -0x10) = unaff_s6;\n  *(mpz_ptr *)(puVar28 + -0x14) = unaff_s5;\n  *(mpz_ptr *)(puVar28 + -0x18) = unaff_s4;\n  *(int **)(puVar28 + -0x1c) = unaff_s3;\n  *(mpz_ptr *)(puVar28 + -0x20) = unaff_s2;\n  *(int *)(puVar28 + -0x24) = iVar17;\n  *(int *)(puVar28 + -0x28) = unaff_s0;\n  *(undefined **)(puVar28 + -0x38) = puVar26;\n  *(undefined4 *)(puVar28 + -0x2c) = **(undefined4 **)(puVar24 + 0x66ea0);\n  iVar17 = in_a2->_mp_size;\n  if (iVar17 < 1) {\n    if (iVar17 < 0) {\n      (**(code **)(puVar24 + 0x66b2c))();\n      goto LAB_000347c8;\n    }\n    root->_mp_size = 0;\n    op->_mp_size = 0;\n    p_Var11 = root;\n    p_Var14 = op;\n  }\n  else {\n    unaff_s4 = in_a2;\n    if (op->_mp_alloc < iVar17) {\nLAB_000347c8:\n      unaff_s5 = (mpz_ptr)(**(code **)(puVar24 + 0x66f1c))(op,iVar17);\n      puVar26 = *(undefined **)(puVar28 + -0x38);\n    }\n    else {\n      unaff_s5 = (mpz_ptr)op->_mp_d;\n    }\n    unaff_s0 = (iVar17 + 1) / 2;\n    root->_mp_size = unaff_s0;\n    unaff_s6 = (mpz_ptr)unaff_s4->_mp_d;\n    p_Var14 = unaff_s5;\n    in_a2 = unaff_s6;\n    if (unaff_s4 == root) {\n      unaff_s7 = unaff_s0 * 4;\n      *(undefined4 *)(puVar28 + -0x30) = 0;\n      if (unaff_s7 < 0x7f01) {\n        iVar12 = -(unaff_s7 + 7 & 0xfffffff8);\n        puVar31 = puVar28 + iVar12 + -0x48;\n        unaff_s4 = (mpz_ptr)(puVar28 + iVar12 + -0x38);\n      }\n      else {\n        unaff_s4 = (mpz_ptr)(**(code **)(puVar26 + -0x7d50))(puVar28 + -0x30,unaff_s7);\n        puVar26 = *(undefined **)(puVar28 + -0x38);\n      }\n      iVar17 = (**(code **)(puVar26 + -0x7f60))(unaff_s4,unaff_s5,unaff_s6,iVar17);\n      puVar26 = *(undefined **)(puVar28 + -0x38);\n      if (root != op) {\n        iVar12 = unaff_s4->_mp_alloc;\n        if (unaff_s0 != 1) {\n          ppmVar5 = (mp_limb_t **)&unaff_s4->_mp_size;\n          unaff_s4 = (mpz_ptr)(&unaff_s4->_mp_alloc + unaff_s0);\n          p_Var11 = unaff_s6;\n          do {\n            p_Var11->_mp_alloc = iVar12;\n            ppmVar6 = ppmVar5 + 1;\n            iVar12 = (int)*ppmVar5;\n            ppmVar5 = ppmVar6;\n            p_Var11 = (mpz_ptr)&p_Var11->_mp_size;\n          } while (unaff_s4 != (mpz_ptr)ppmVar6);\n          unaff_s7 = unaff_s7 - 4;\n          unaff_s6 = (mpz_ptr)((int)unaff_s6 + unaff_s7);\n        }\n        unaff_s6->_mp_alloc = iVar12;\n      }\n      p_Var11 = *(mpz_ptr *)(puVar28 + -0x30);\n      if (p_Var11 != (mpz_ptr)0x0) {\n        (**(code **)(puVar26 + -0x7a2c))();\n        puVar26 = *(undefined **)(puVar28 + -0x38);\n        op->_mp_size = iVar17;\n        puVar30 = puVar31;\n        goto LAB_00034768;\n      }\n    }\n    else {\n      if (root->_mp_alloc < unaff_s0) {\n        p_Var11 = (mpz_ptr)(**(code **)(puVar26 + -0x7a84))(root,unaff_s0);\n        puVar26 = *(undefined **)(puVar28 + -0x38);\n      }\n      else {\n        p_Var11 = (mpz_ptr)root->_mp_d;\n      }\n      iVar17 = (**(code **)(puVar26 + -0x7f60))();\n      puVar26 = *(undefined **)(puVar28 + -0x38);\n      puVar31 = puVar28 + -0x48;\n    }\n    op->_mp_size = iVar17;\n    puVar30 = puVar31;\n  }\nLAB_00034768:\n  if (*(int *)(puVar28 + -0x2c) == **(int **)(puVar26 + -0x7b00)) {\n    return;\n  }\n  pcVar25 = *(code **)(puVar26 + -0x7b70);\n  uVar32 = 0x348d4;\n  (*pcVar25)();\n  pcVar27 = pcVar25 + 0x6e760;\n  *(undefined4 *)(puVar30 + -4) = uVar32;\n  *(uint *)(puVar30 + -8) = unaff_s7;\n  *(mpz_ptr *)(puVar30 + -0xc) = unaff_s6;\n  *(mpz_ptr *)(puVar30 + -0x10) = unaff_s5;\n  *(mpz_ptr *)(puVar30 + -0x14) = unaff_s4;\n  *(mpz_srcptr *)(puVar30 + -0x18) = op;\n  *(mpz_ptr *)(puVar30 + -0x1c) = root;\n  *(int *)(puVar30 + -0x20) = iVar17;\n  *(int *)(puVar30 + -0x24) = unaff_s0;\n  *(code **)(puVar30 + -0x30) = pcVar27;\n  uVar19 = p_Var14->_mp_size;\n  uVar7 = in_a2->_mp_size;\n  uVar8 = -uVar7;\n  uVar18 = uVar19;\n  if ((int)uVar19 < 0) {\n    uVar18 = -uVar19;\n  }\n  if ((int)uVar7 < 0) {\n    uVar7 = -uVar7;\n  }\n  uVar16 = uVar7;\n  uVar20 = uVar19;\n  p_Var22 = p_Var14;\n  if ((int)uVar18 < (int)uVar7) {\n    uVar16 = uVar18;\n    uVar18 = uVar7;\n    uVar20 = uVar8;\n    p_Var22 = in_a2;\n    uVar8 = uVar19;\n    in_a2 = p_Var14;\n  }\n  if (p_Var11->_mp_alloc < (int)(uVar18 + 1)) {\n    pmVar21 = (mp_limb_t *)(**(code **)(pcVar25 + 0x66cdc))(p_Var11);\n    pcVar27 = *(code **)(puVar30 + -0x30);\n  }\n  else {\n    pmVar21 = p_Var11->_mp_d;\n  }\n  pmVar23 = p_Var22->_mp_d;\n  pmVar15 = in_a2->_mp_d;\n  if ((int)(uVar20 ^ uVar8) < 0) {\n    if (uVar18 == uVar16) {\n      pmVar13 = pmVar23 + uVar18;\n      pmVar9 = pmVar15 + uVar18;\n      uVar8 = uVar18;\n      do {\n        uVar8 = uVar8 - 1;\n        if (uVar8 == 0xffffffff) goto LAB_00034bf8;\n        pmVar1 = pmVar13 + -1;\n        pmVar2 = pmVar9 + -1;\n        pmVar13 = pmVar13 + -1;\n        pmVar9 = pmVar9 + -1;\n      } while (*pmVar1 == *pmVar2);\n      if (*pmVar2 < *pmVar1) {\nLAB_00034bf8:\n        (**(code **)(pcVar27 + -0x7b2c))(pmVar21,pmVar23,pmVar15,uVar18);\n        if ((0 < (int)uVar18) && (pmVar21[uVar18 - 1] == 0)) {\n          pmVar21 = pmVar21 + uVar18;\n          do {\n            uVar18 = uVar18 - 1;\n            if (uVar18 == 0) break;\n            pmVar15 = pmVar21 + -2;\n            pmVar21 = pmVar21 + -1;\n          } while (*pmVar15 == 0);\n        }\n        if ((int)uVar20 < 0) {\n          uVar18 = -uVar18;\n        }\n      }\n      else {\n        (**(code **)(pcVar27 + -0x7b2c))(pmVar21,pmVar15,pmVar23);\n        if ((0 < (int)uVar18) && (pmVar21[uVar18 - 1] == 0)) {\n          pmVar21 = pmVar21 + uVar18;\n          do {\n            uVar18 = uVar18 - 1;\n            if (uVar18 == 0) break;\n            pmVar15 = pmVar21 + -2;\n            pmVar21 = pmVar21 + -1;\n          } while (*pmVar15 == 0);\n        }\n        if (-1 < (int)uVar20) {\n          uVar18 = -uVar18;\n        }\n      }\n      goto LAB_000349e8;\n    }\n    if (uVar16 == 0) {\nLAB_00034a50:\n      if ((pmVar21 != pmVar23) && ((int)uVar16 < (int)uVar18)) {\n        pmVar15 = pmVar23 + uVar16;\n        pmVar9 = pmVar21 + uVar16;\n        do {\n          *pmVar9 = *pmVar15;\n          pmVar15 = pmVar15 + 1;\n          pmVar9 = pmVar9 + 1;\n        } while (pmVar15 != pmVar23 + uVar18);\n      }\n    }\n    else {\n      iVar17 = (**(code **)(pcVar27 + -0x7b2c))(pmVar21,pmVar23,pmVar15,uVar16);\n      if (iVar17 == 0) goto LAB_00034a50;\n      if ((int)uVar16 < (int)uVar18) {\n        pmVar15 = pmVar23 + uVar16;\n        mVar10 = *pmVar15;\n        pmVar9 = pmVar21 + uVar16;\n        *pmVar9 = mVar10 - 1;\n        while (uVar16 = uVar16 + 1, mVar10 == 0) {\n          if (uVar18 == uVar16) goto LAB_00034a84;\n          mVar10 = pmVar15[1];\n          pmVar9[1] = mVar10 - 1;\n          pmVar15 = pmVar15 + 1;\n          pmVar9 = pmVar9 + 1;\n        }\n        goto LAB_00034a50;\n      }\n    }\nLAB_00034a84:\n    if ((0 < (int)uVar18) && (pmVar21[uVar18 + 0x3fffffff] == 0)) {\n      pmVar21 = pmVar21 + uVar18 + 0x40000000;\n      do {\n        uVar18 = uVar18 - 1;\n        if (uVar18 == 0) break;\n        pmVar15 = pmVar21 + -2;\n        pmVar21 = pmVar21 + -1;\n      } while (*pmVar15 == 0);\n    }\n    if ((int)uVar20 < 0) {\n      uVar18 = -uVar18;\n    }\n    goto LAB_000349e8;\n  }\n  if (uVar16 == 0) {\nLAB_0003499c:\n    if (pmVar21 == pmVar23) {\n      mVar10 = 0;\n    }\n    else if ((int)uVar16 < (int)uVar18) {\n      pmVar9 = pmVar23 + uVar16;\n      pmVar15 = pmVar21 + uVar16;\n      do {\n        *pmVar15 = *pmVar9;\n        pmVar9 = pmVar9 + 1;\n        pmVar15 = pmVar15 + 1;\n      } while (pmVar9 != pmVar23 + uVar18);\n      mVar10 = 0;\n    }\n    else {\n      mVar10 = 0;\n    }\n  }\n  else {\n    iVar17 = (**(code **)(pcVar27 + -0x7d0c))(pmVar21,pmVar23,pmVar15,uVar16);\n    if (iVar17 == 0) goto LAB_0003499c;\n    mVar10 = 1;\n    if ((int)uVar16 < (int)uVar18) {\n      pmVar15 = pmVar23 + uVar16;\n      pmVar9 = pmVar21 + uVar16;\n      mVar10 = *pmVar15 + 1;\n      *pmVar9 = mVar10;\n      while (uVar16 = uVar16 + 1, mVar10 == 0) {\n        if (uVar18 == uVar16) {\n          mVar10 = 1;\n          goto LAB_000349d4;\n        }\n        mVar10 = pmVar15[1] + 1;\n        pmVar9[1] = mVar10;\n        pmVar15 = pmVar15 + 1;\n        pmVar9 = pmVar9 + 1;\n      }\n      goto LAB_0003499c;\n    }\n  }\nLAB_000349d4:\n  pmVar21[uVar18] = mVar10;\n  uVar18 = uVar18 + mVar10;\n  if ((int)uVar20 < 0) {\n    uVar18 = -uVar18;\n  }\nLAB_000349e8:\n  p_Var11->_mp_size = uVar18;\n  return;\n}\n\n" (function_definition "void __gmpz_sqrt(mpz_ptr root,mpz_srcptr op)\n\n{\n  mp_limb_t *pmVar1;\n  mp_limb_t *pmVar2;\n  int *piVar3;\n  int *piVar4;\n  mp_limb_t **ppmVar5;\n  mp_limb_t **ppmVar6;\n  uint uVar7;\n  uint uVar8;\n  mp_limb_t *pmVar9;\n  mp_limb_t mVar10;\n  mpz_ptr p_Var11;\n  int iVar12;\n  mp_limb_t *pmVar13;\n  mpz_ptr p_Var14;\n  mp_limb_t *pmVar15;\n  mpz_ptr in_a2;\n  int unaff_s0;\n  uint uVar16;\n  int iVar17;\n  uint uVar18;\n  mpz_ptr unaff_s2;\n  uint uVar19;\n  uint uVar20;\n  int *unaff_s3;\n  mpz_ptr unaff_s4;\n  mp_limb_t *pmVar21;\n  mpz_ptr unaff_s5;\n  mpz_ptr p_Var22;\n  mp_limb_t *pmVar23;\n  mpz_ptr unaff_s6;\n  uint unaff_s7;\n  undefined *puVar24;\n  code *pcVar25;\n  undefined *puVar26;\n  code *pcVar27;\n  undefined1 *puVar28;\n  undefined1 *puVar29;\n  undefined1 *puVar30;\n  undefined1 *puVar31;\n  undefined4 uVar32;\n  undefined1 auStack_40 [16];\n  tmp_reentrant_t *__tmp_marker;\n  int local_24;\n  \n  puVar28 = auStack_40;\n  puVar29 = auStack_40;\n  local_24 = *(int *)PTR___stack_chk_guard_0009b540;\n  iVar17 = op->_mp_size;\n  if (iVar17 < 1) {\n    if (iVar17 < 0) {\n      (*(code *)PTR___gmp_sqrt_of_negative_0009b1cc)();\n      goto LAB_000345b4;\n    }\n    root->_mp_size = 0;\n  }\n  else {\n    unaff_s0 = (iVar17 + 1) / 2;\n    root->_mp_size = unaff_s0;\n    unaff_s2 = (mpz_ptr)op->_mp_d;\n    if (op == root) {\nLAB_000345b4:\n      unaff_s4 = (mpz_ptr)(unaff_s0 * 4);\n      __tmp_marker = (tmp_reentrant_t *)0x0;\n      if (unaff_s4 < (mpz_ptr)0x7f01) {\n        iVar12 = -((uint)((int)&unaff_s4->_mp_size + 3U) & 0xfffffff8);\n        puVar29 = auStack_40 + iVar12;\n        unaff_s3 = (int *)(&stack0xffffffd0 + iVar12);\n      }\n      else {\n        unaff_s3 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)(&__tmp_marker,unaff_s4);\n      }\n      op = (mpz_ptr)0x0;\n      in_a2 = unaff_s2;\n      (*(code *)PTR___gmpn_sqrtrem_0009b0e0)(unaff_s3,0,unaff_s2,iVar17);\n      iVar12 = *unaff_s3;\n      if (unaff_s0 != 1) {\n        piVar3 = unaff_s3 + 1;\n        unaff_s3 = unaff_s3 + unaff_s0;\n        p_Var11 = unaff_s2;\n        do {\n          p_Var11->_mp_alloc = iVar12;\n          piVar4 = piVar3 + 1;\n          iVar12 = *piVar3;\n          piVar3 = piVar4;\n          p_Var11 = (mpz_ptr)&p_Var11->_mp_size;\n        } while (unaff_s3 != piVar4);\n        unaff_s4 = (mpz_ptr)&unaff_s4[-1]._mp_d;\n        unaff_s2 = (mpz_ptr)((int)unaff_s4 + (int)&unaff_s2->_mp_alloc);\n      }\n      unaff_s2->_mp_alloc = iVar12;\n      root = (mpz_ptr)__tmp_marker;\n      puVar28 = puVar29;\n      if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n        (*(code *)PTR___gmp_tmp_reentrant_free_0009b614)();\n      }\n    }\n    else {\n      if (root->_mp_alloc < unaff_s0) {\n        root = (mpz_ptr)(*(code *)PTR___gmpz_realloc_0009b5bc)(root,unaff_s0);\n      }\n      else {\n        root = (mpz_ptr)root->_mp_d;\n      }\n      op = (mpz_ptr)0x0;\n      in_a2 = unaff_s2;\n      (*(code *)PTR___gmpn_sqrtrem_0009b0e0)();\n      puVar28 = auStack_40;\n    }\n  }\n  if (local_24 == *(int *)PTR___stack_chk_guard_0009b540) {\n    return;\n  }\n  uVar32 = 0x34694;\n  puVar24 = PTR___stack_chk_fail_0009b4d0;\n  (*(code *)PTR___stack_chk_fail_0009b4d0)();\n  puVar26 = puVar24 + 0x6e9a0;\n  puVar30 = puVar28 + -0x48;\n  puVar31 = puVar28 + -0x48;\n  *(undefined4 *)(puVar28 + -4) = uVar32;\n  *(undefined1 **)(puVar28 + -8) = auStack_40;\n  *(uint *)(puVar28 + -0xc) = unaff_s7;\n  *(mpz_ptr *)(puVar28 + -0x10) = unaff_s6;\n  *(mpz_ptr *)(puVar28 + -0x14) = unaff_s5;\n  *(mpz_ptr *)(puVar28 + -0x18) = unaff_s4;\n  *(int **)(puVar28 + -0x1c) = unaff_s3;\n  *(mpz_ptr *)(puVar28 + -0x20) = unaff_s2;\n  *(int *)(puVar28 + -0x24) = iVar17;\n  *(int *)(puVar28 + -0x28) = unaff_s0;\n  *(undefined **)(puVar28 + -0x38) = puVar26;\n  *(undefined4 *)(puVar28 + -0x2c) = **(undefined4 **)(puVar24 + 0x66ea0);\n  iVar17 = in_a2->_mp_size;\n  if (iVar17 < 1) {\n    if (iVar17 < 0) {\n      (**(code **)(puVar24 + 0x66b2c))();\n      goto LAB_000347c8;\n    }\n    root->_mp_size = 0;\n    op->_mp_size = 0;\n    p_Var11 = root;\n    p_Var14 = op;\n  }\n  else {\n    unaff_s4 = in_a2;\n    if (op->_mp_alloc < iVar17) {\nLAB_000347c8:\n      unaff_s5 = (mpz_ptr)(**(code **)(puVar24 + 0x66f1c))(op,iVar17);\n      puVar26 = *(undefined **)(puVar28 + -0x38);\n    }\n    else {\n      unaff_s5 = (mpz_ptr)op->_mp_d;\n    }\n    unaff_s0 = (iVar17 + 1) / 2;\n    root->_mp_size = unaff_s0;\n    unaff_s6 = (mpz_ptr)unaff_s4->_mp_d;\n    p_Var14 = unaff_s5;\n    in_a2 = unaff_s6;\n    if (unaff_s4 == root) {\n      unaff_s7 = unaff_s0 * 4;\n      *(undefined4 *)(puVar28 + -0x30) = 0;\n      if (unaff_s7 < 0x7f01) {\n        iVar12 = -(unaff_s7 + 7 & 0xfffffff8);\n        puVar31 = puVar28 + iVar12 + -0x48;\n        unaff_s4 = (mpz_ptr)(puVar28 + iVar12 + -0x38);\n      }\n      else {\n        unaff_s4 = (mpz_ptr)(**(code **)(puVar26 + -0x7d50))(puVar28 + -0x30,unaff_s7);\n        puVar26 = *(undefined **)(puVar28 + -0x38);\n      }\n      iVar17 = (**(code **)(puVar26 + -0x7f60))(unaff_s4,unaff_s5,unaff_s6,iVar17);\n      puVar26 = *(undefined **)(puVar28 + -0x38);\n      if (root != op) {\n        iVar12 = unaff_s4->_mp_alloc;\n        if (unaff_s0 != 1) {\n          ppmVar5 = (mp_limb_t **)&unaff_s4->_mp_size;\n          unaff_s4 = (mpz_ptr)(&unaff_s4->_mp_alloc + unaff_s0);\n          p_Var11 = unaff_s6;\n          do {\n            p_Var11->_mp_alloc = iVar12;\n            ppmVar6 = ppmVar5 + 1;\n            iVar12 = (int)*ppmVar5;\n            ppmVar5 = ppmVar6;\n            p_Var11 = (mpz_ptr)&p_Var11->_mp_size;\n          } while (unaff_s4 != (mpz_ptr)ppmVar6);\n          unaff_s7 = unaff_s7 - 4;\n          unaff_s6 = (mpz_ptr)((int)unaff_s6 + unaff_s7);\n        }\n        unaff_s6->_mp_alloc = iVar12;\n      }\n      p_Var11 = *(mpz_ptr *)(puVar28 + -0x30);\n      if (p_Var11 != (mpz_ptr)0x0) {\n        (**(code **)(puVar26 + -0x7a2c))();\n        puVar26 = *(undefined **)(puVar28 + -0x38);\n        op->_mp_size = iVar17;\n        puVar30 = puVar31;\n        goto LAB_00034768;\n      }\n    }\n    else {\n      if (root->_mp_alloc < unaff_s0) {\n        p_Var11 = (mpz_ptr)(**(code **)(puVar26 + -0x7a84))(root,unaff_s0);\n        puVar26 = *(undefined **)(puVar28 + -0x38);\n      }\n      else {\n        p_Var11 = (mpz_ptr)root->_mp_d;\n      }\n      iVar17 = (**(code **)(puVar26 + -0x7f60))();\n      puVar26 = *(undefined **)(puVar28 + -0x38);\n      puVar31 = puVar28 + -0x48;\n    }\n    op->_mp_size = iVar17;\n    puVar30 = puVar31;\n  }\nLAB_00034768:\n  if (*(int *)(puVar28 + -0x2c) == **(int **)(puVar26 + -0x7b00)) {\n    return;\n  }\n  pcVar25 = *(code **)(puVar26 + -0x7b70);\n  uVar32 = 0x348d4;\n  (*pcVar25)();\n  pcVar27 = pcVar25 + 0x6e760;\n  *(undefined4 *)(puVar30 + -4) = uVar32;\n  *(uint *)(puVar30 + -8) = unaff_s7;\n  *(mpz_ptr *)(puVar30 + -0xc) = unaff_s6;\n  *(mpz_ptr *)(puVar30 + -0x10) = unaff_s5;\n  *(mpz_ptr *)(puVar30 + -0x14) = unaff_s4;\n  *(mpz_srcptr *)(puVar30 + -0x18) = op;\n  *(mpz_ptr *)(puVar30 + -0x1c) = root;\n  *(int *)(puVar30 + -0x20) = iVar17;\n  *(int *)(puVar30 + -0x24) = unaff_s0;\n  *(code **)(puVar30 + -0x30) = pcVar27;\n  uVar19 = p_Var14->_mp_size;\n  uVar7 = in_a2->_mp_size;\n  uVar8 = -uVar7;\n  uVar18 = uVar19;\n  if ((int)uVar19 < 0) {\n    uVar18 = -uVar19;\n  }\n  if ((int)uVar7 < 0) {\n    uVar7 = -uVar7;\n  }\n  uVar16 = uVar7;\n  uVar20 = uVar19;\n  p_Var22 = p_Var14;\n  if ((int)uVar18 < (int)uVar7) {\n    uVar16 = uVar18;\n    uVar18 = uVar7;\n    uVar20 = uVar8;\n    p_Var22 = in_a2;\n    uVar8 = uVar19;\n    in_a2 = p_Var14;\n  }\n  if (p_Var11->_mp_alloc < (int)(uVar18 + 1)) {\n    pmVar21 = (mp_limb_t *)(**(code **)(pcVar25 + 0x66cdc))(p_Var11);\n    pcVar27 = *(code **)(puVar30 + -0x30);\n  }\n  else {\n    pmVar21 = p_Var11->_mp_d;\n  }\n  pmVar23 = p_Var22->_mp_d;\n  pmVar15 = in_a2->_mp_d;\n  if ((int)(uVar20 ^ uVar8) < 0) {\n    if (uVar18 == uVar16) {\n      pmVar13 = pmVar23 + uVar18;\n      pmVar9 = pmVar15 + uVar18;\n      uVar8 = uVar18;\n      do {\n        uVar8 = uVar8 - 1;\n        if (uVar8 == 0xffffffff) goto LAB_00034bf8;\n        pmVar1 = pmVar13 + -1;\n        pmVar2 = pmVar9 + -1;\n        pmVar13 = pmVar13 + -1;\n        pmVar9 = pmVar9 + -1;\n      } while (*pmVar1 == *pmVar2);\n      if (*pmVar2 < *pmVar1) {\nLAB_00034bf8:\n        (**(code **)(pcVar27 + -0x7b2c))(pmVar21,pmVar23,pmVar15,uVar18);\n        if ((0 < (int)uVar18) && (pmVar21[uVar18 - 1] == 0)) {\n          pmVar21 = pmVar21 + uVar18;\n          do {\n            uVar18 = uVar18 - 1;\n            if (uVar18 == 0) break;\n            pmVar15 = pmVar21 + -2;\n            pmVar21 = pmVar21 + -1;\n          } while (*pmVar15 == 0);\n        }\n        if ((int)uVar20 < 0) {\n          uVar18 = -uVar18;\n        }\n      }\n      else {\n        (**(code **)(pcVar27 + -0x7b2c))(pmVar21,pmVar15,pmVar23);\n        if ((0 < (int)uVar18) && (pmVar21[uVar18 - 1] == 0)) {\n          pmVar21 = pmVar21 + uVar18;\n          do {\n            uVar18 = uVar18 - 1;\n            if (uVar18 == 0) break;\n            pmVar15 = pmVar21 + -2;\n            pmVar21 = pmVar21 + -1;\n          } while (*pmVar15 == 0);\n        }\n        if (-1 < (int)uVar20) {\n          uVar18 = -uVar18;\n        }\n      }\n      goto LAB_000349e8;\n    }\n    if (uVar16 == 0) {\nLAB_00034a50:\n      if ((pmVar21 != pmVar23) && ((int)uVar16 < (int)uVar18)) {\n        pmVar15 = pmVar23 + uVar16;\n        pmVar9 = pmVar21 + uVar16;\n        do {\n          *pmVar9 = *pmVar15;\n          pmVar15 = pmVar15 + 1;\n          pmVar9 = pmVar9 + 1;\n        } while (pmVar15 != pmVar23 + uVar18);\n      }\n    }\n    else {\n      iVar17 = (**(code **)(pcVar27 + -0x7b2c))(pmVar21,pmVar23,pmVar15,uVar16);\n      if (iVar17 == 0) goto LAB_00034a50;\n      if ((int)uVar16 < (int)uVar18) {\n        pmVar15 = pmVar23 + uVar16;\n        mVar10 = *pmVar15;\n        pmVar9 = pmVar21 + uVar16;\n        *pmVar9 = mVar10 - 1;\n        while (uVar16 = uVar16 + 1, mVar10 == 0) {\n          if (uVar18 == uVar16) goto LAB_00034a84;\n          mVar10 = pmVar15[1];\n          pmVar9[1] = mVar10 - 1;\n          pmVar15 = pmVar15 + 1;\n          pmVar9 = pmVar9 + 1;\n        }\n        goto LAB_00034a50;\n      }\n    }\nLAB_00034a84:\n    if ((0 < (int)uVar18) && (pmVar21[uVar18 + 0x3fffffff] == 0)) {\n      pmVar21 = pmVar21 + uVar18 + 0x40000000;\n      do {\n        uVar18 = uVar18 - 1;\n        if (uVar18 == 0) break;\n        pmVar15 = pmVar21 + -2;\n        pmVar21 = pmVar21 + -1;\n      } while (*pmVar15 == 0);\n    }\n    if ((int)uVar20 < 0) {\n      uVar18 = -uVar18;\n    }\n    goto LAB_000349e8;\n  }\n  if (uVar16 == 0) {\nLAB_0003499c:\n    if (pmVar21 == pmVar23) {\n      mVar10 = 0;\n    }\n    else if ((int)uVar16 < (int)uVar18) {\n      pmVar9 = pmVar23 + uVar16;\n      pmVar15 = pmVar21 + uVar16;\n      do {\n        *pmVar15 = *pmVar9;\n        pmVar9 = pmVar9 + 1;\n        pmVar15 = pmVar15 + 1;\n      } while (pmVar9 != pmVar23 + uVar18);\n      mVar10 = 0;\n    }\n    else {\n      mVar10 = 0;\n    }\n  }\n  else {\n    iVar17 = (**(code **)(pcVar27 + -0x7d0c))(pmVar21,pmVar23,pmVar15,uVar16);\n    if (iVar17 == 0) goto LAB_0003499c;\n    mVar10 = 1;\n    if ((int)uVar16 < (int)uVar18) {\n      pmVar15 = pmVar23 + uVar16;\n      pmVar9 = pmVar21 + uVar16;\n      mVar10 = *pmVar15 + 1;\n      *pmVar9 = mVar10;\n      while (uVar16 = uVar16 + 1, mVar10 == 0) {\n        if (uVar18 == uVar16) {\n          mVar10 = 1;\n          goto LAB_000349d4;\n        }\n        mVar10 = pmVar15[1] + 1;\n        pmVar9[1] = mVar10;\n        pmVar15 = pmVar15 + 1;\n        pmVar9 = pmVar9 + 1;\n      }\n      goto LAB_0003499c;\n    }\n  }\nLAB_000349d4:\n  pmVar21[uVar18] = mVar10;\n  uVar18 = uVar18 + mVar10;\n  if ((int)uVar20 < 0) {\n    uVar18 = -uVar18;\n  }\nLAB_000349e8:\n  p_Var11->_mp_size = uVar18;\n  return;\n}" primitive_type (function_declarator "__gmpz_sqrt(mpz_ptr root,mpz_srcptr op)" identifier (parameter_list "(mpz_ptr root,mpz_srcptr op)" ( (parameter_declaration "mpz_ptr root" type_identifier identifier) , (parameter_declaration "mpz_srcptr op" type_identifier identifier) ))) (compound_statement "{\n  mp_limb_t *pmVar1;\n  mp_limb_t *pmVar2;\n  int *piVar3;\n  int *piVar4;\n  mp_limb_t **ppmVar5;\n  mp_limb_t **ppmVar6;\n  uint uVar7;\n  uint uVar8;\n  mp_limb_t *pmVar9;\n  mp_limb_t mVar10;\n  mpz_ptr p_Var11;\n  int iVar12;\n  mp_limb_t *pmVar13;\n  mpz_ptr p_Var14;\n  mp_limb_t *pmVar15;\n  mpz_ptr in_a2;\n  int unaff_s0;\n  uint uVar16;\n  int iVar17;\n  uint uVar18;\n  mpz_ptr unaff_s2;\n  uint uVar19;\n  uint uVar20;\n  int *unaff_s3;\n  mpz_ptr unaff_s4;\n  mp_limb_t *pmVar21;\n  mpz_ptr unaff_s5;\n  mpz_ptr p_Var22;\n  mp_limb_t *pmVar23;\n  mpz_ptr unaff_s6;\n  uint unaff_s7;\n  undefined *puVar24;\n  code *pcVar25;\n  undefined *puVar26;\n  code *pcVar27;\n  undefined1 *puVar28;\n  undefined1 *puVar29;\n  undefined1 *puVar30;\n  undefined1 *puVar31;\n  undefined4 uVar32;\n  undefined1 auStack_40 [16];\n  tmp_reentrant_t *__tmp_marker;\n  int local_24;\n  \n  puVar28 = auStack_40;\n  puVar29 = auStack_40;\n  local_24 = *(int *)PTR___stack_chk_guard_0009b540;\n  iVar17 = op->_mp_size;\n  if (iVar17 < 1) {\n    if (iVar17 < 0) {\n      (*(code *)PTR___gmp_sqrt_of_negative_0009b1cc)();\n      goto LAB_000345b4;\n    }\n    root->_mp_size = 0;\n  }\n  else {\n    unaff_s0 = (iVar17 + 1) / 2;\n    root->_mp_size = unaff_s0;\n    unaff_s2 = (mpz_ptr)op->_mp_d;\n    if (op == root) {\nLAB_000345b4:\n      unaff_s4 = (mpz_ptr)(unaff_s0 * 4);\n      __tmp_marker = (tmp_reentrant_t *)0x0;\n      if (unaff_s4 < (mpz_ptr)0x7f01) {\n        iVar12 = -((uint)((int)&unaff_s4->_mp_size + 3U) & 0xfffffff8);\n        puVar29 = auStack_40 + iVar12;\n        unaff_s3 = (int *)(&stack0xffffffd0 + iVar12);\n      }\n      else {\n        unaff_s3 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)(&__tmp_marker,unaff_s4);\n      }\n      op = (mpz_ptr)0x0;\n      in_a2 = unaff_s2;\n      (*(code *)PTR___gmpn_sqrtrem_0009b0e0)(unaff_s3,0,unaff_s2,iVar17);\n      iVar12 = *unaff_s3;\n      if (unaff_s0 != 1) {\n        piVar3 = unaff_s3 + 1;\n        unaff_s3 = unaff_s3 + unaff_s0;\n        p_Var11 = unaff_s2;\n        do {\n          p_Var11->_mp_alloc = iVar12;\n          piVar4 = piVar3 + 1;\n          iVar12 = *piVar3;\n          piVar3 = piVar4;\n          p_Var11 = (mpz_ptr)&p_Var11->_mp_size;\n        } while (unaff_s3 != piVar4);\n        unaff_s4 = (mpz_ptr)&unaff_s4[-1]._mp_d;\n        unaff_s2 = (mpz_ptr)((int)unaff_s4 + (int)&unaff_s2->_mp_alloc);\n      }\n      unaff_s2->_mp_alloc = iVar12;\n      root = (mpz_ptr)__tmp_marker;\n      puVar28 = puVar29;\n      if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n        (*(code *)PTR___gmp_tmp_reentrant_free_0009b614)();\n      }\n    }\n    else {\n      if (root->_mp_alloc < unaff_s0) {\n        root = (mpz_ptr)(*(code *)PTR___gmpz_realloc_0009b5bc)(root,unaff_s0);\n      }\n      else {\n        root = (mpz_ptr)root->_mp_d;\n      }\n      op = (mpz_ptr)0x0;\n      in_a2 = unaff_s2;\n      (*(code *)PTR___gmpn_sqrtrem_0009b0e0)();\n      puVar28 = auStack_40;\n    }\n  }\n  if (local_24 == *(int *)PTR___stack_chk_guard_0009b540) {\n    return;\n  }\n  uVar32 = 0x34694;\n  puVar24 = PTR___stack_chk_fail_0009b4d0;\n  (*(code *)PTR___stack_chk_fail_0009b4d0)();\n  puVar26 = puVar24 + 0x6e9a0;\n  puVar30 = puVar28 + -0x48;\n  puVar31 = puVar28 + -0x48;\n  *(undefined4 *)(puVar28 + -4) = uVar32;\n  *(undefined1 **)(puVar28 + -8) = auStack_40;\n  *(uint *)(puVar28 + -0xc) = unaff_s7;\n  *(mpz_ptr *)(puVar28 + -0x10) = unaff_s6;\n  *(mpz_ptr *)(puVar28 + -0x14) = unaff_s5;\n  *(mpz_ptr *)(puVar28 + -0x18) = unaff_s4;\n  *(int **)(puVar28 + -0x1c) = unaff_s3;\n  *(mpz_ptr *)(puVar28 + -0x20) = unaff_s2;\n  *(int *)(puVar28 + -0x24) = iVar17;\n  *(int *)(puVar28 + -0x28) = unaff_s0;\n  *(undefined **)(puVar28 + -0x38) = puVar26;\n  *(undefined4 *)(puVar28 + -0x2c) = **(undefined4 **)(puVar24 + 0x66ea0);\n  iVar17 = in_a2->_mp_size;\n  if (iVar17 < 1) {\n    if (iVar17 < 0) {\n      (**(code **)(puVar24 + 0x66b2c))();\n      goto LAB_000347c8;\n    }\n    root->_mp_size = 0;\n    op->_mp_size = 0;\n    p_Var11 = root;\n    p_Var14 = op;\n  }\n  else {\n    unaff_s4 = in_a2;\n    if (op->_mp_alloc < iVar17) {\nLAB_000347c8:\n      unaff_s5 = (mpz_ptr)(**(code **)(puVar24 + 0x66f1c))(op,iVar17);\n      puVar26 = *(undefined **)(puVar28 + -0x38);\n    }\n    else {\n      unaff_s5 = (mpz_ptr)op->_mp_d;\n    }\n    unaff_s0 = (iVar17 + 1) / 2;\n    root->_mp_size = unaff_s0;\n    unaff_s6 = (mpz_ptr)unaff_s4->_mp_d;\n    p_Var14 = unaff_s5;\n    in_a2 = unaff_s6;\n    if (unaff_s4 == root) {\n      unaff_s7 = unaff_s0 * 4;\n      *(undefined4 *)(puVar28 + -0x30) = 0;\n      if (unaff_s7 < 0x7f01) {\n        iVar12 = -(unaff_s7 + 7 & 0xfffffff8);\n        puVar31 = puVar28 + iVar12 + -0x48;\n        unaff_s4 = (mpz_ptr)(puVar28 + iVar12 + -0x38);\n      }\n      else {\n        unaff_s4 = (mpz_ptr)(**(code **)(puVar26 + -0x7d50))(puVar28 + -0x30,unaff_s7);\n        puVar26 = *(undefined **)(puVar28 + -0x38);\n      }\n      iVar17 = (**(code **)(puVar26 + -0x7f60))(unaff_s4,unaff_s5,unaff_s6,iVar17);\n      puVar26 = *(undefined **)(puVar28 + -0x38);\n      if (root != op) {\n        iVar12 = unaff_s4->_mp_alloc;\n        if (unaff_s0 != 1) {\n          ppmVar5 = (mp_limb_t **)&unaff_s4->_mp_size;\n          unaff_s4 = (mpz_ptr)(&unaff_s4->_mp_alloc + unaff_s0);\n          p_Var11 = unaff_s6;\n          do {\n            p_Var11->_mp_alloc = iVar12;\n            ppmVar6 = ppmVar5 + 1;\n            iVar12 = (int)*ppmVar5;\n            ppmVar5 = ppmVar6;\n            p_Var11 = (mpz_ptr)&p_Var11->_mp_size;\n          } while (unaff_s4 != (mpz_ptr)ppmVar6);\n          unaff_s7 = unaff_s7 - 4;\n          unaff_s6 = (mpz_ptr)((int)unaff_s6 + unaff_s7);\n        }\n        unaff_s6->_mp_alloc = iVar12;\n      }\n      p_Var11 = *(mpz_ptr *)(puVar28 + -0x30);\n      if (p_Var11 != (mpz_ptr)0x0) {\n        (**(code **)(puVar26 + -0x7a2c))();\n        puVar26 = *(undefined **)(puVar28 + -0x38);\n        op->_mp_size = iVar17;\n        puVar30 = puVar31;\n        goto LAB_00034768;\n      }\n    }\n    else {\n      if (root->_mp_alloc < unaff_s0) {\n        p_Var11 = (mpz_ptr)(**(code **)(puVar26 + -0x7a84))(root,unaff_s0);\n        puVar26 = *(undefined **)(puVar28 + -0x38);\n      }\n      else {\n        p_Var11 = (mpz_ptr)root->_mp_d;\n      }\n      iVar17 = (**(code **)(puVar26 + -0x7f60))();\n      puVar26 = *(undefined **)(puVar28 + -0x38);\n      puVar31 = puVar28 + -0x48;\n    }\n    op->_mp_size = iVar17;\n    puVar30 = puVar31;\n  }\nLAB_00034768:\n  if (*(int *)(puVar28 + -0x2c) == **(int **)(puVar26 + -0x7b00)) {\n    return;\n  }\n  pcVar25 = *(code **)(puVar26 + -0x7b70);\n  uVar32 = 0x348d4;\n  (*pcVar25)();\n  pcVar27 = pcVar25 + 0x6e760;\n  *(undefined4 *)(puVar30 + -4) = uVar32;\n  *(uint *)(puVar30 + -8) = unaff_s7;\n  *(mpz_ptr *)(puVar30 + -0xc) = unaff_s6;\n  *(mpz_ptr *)(puVar30 + -0x10) = unaff_s5;\n  *(mpz_ptr *)(puVar30 + -0x14) = unaff_s4;\n  *(mpz_srcptr *)(puVar30 + -0x18) = op;\n  *(mpz_ptr *)(puVar30 + -0x1c) = root;\n  *(int *)(puVar30 + -0x20) = iVar17;\n  *(int *)(puVar30 + -0x24) = unaff_s0;\n  *(code **)(puVar30 + -0x30) = pcVar27;\n  uVar19 = p_Var14->_mp_size;\n  uVar7 = in_a2->_mp_size;\n  uVar8 = -uVar7;\n  uVar18 = uVar19;\n  if ((int)uVar19 < 0) {\n    uVar18 = -uVar19;\n  }\n  if ((int)uVar7 < 0) {\n    uVar7 = -uVar7;\n  }\n  uVar16 = uVar7;\n  uVar20 = uVar19;\n  p_Var22 = p_Var14;\n  if ((int)uVar18 < (int)uVar7) {\n    uVar16 = uVar18;\n    uVar18 = uVar7;\n    uVar20 = uVar8;\n    p_Var22 = in_a2;\n    uVar8 = uVar19;\n    in_a2 = p_Var14;\n  }\n  if (p_Var11->_mp_alloc < (int)(uVar18 + 1)) {\n    pmVar21 = (mp_limb_t *)(**(code **)(pcVar25 + 0x66cdc))(p_Var11);\n    pcVar27 = *(code **)(puVar30 + -0x30);\n  }\n  else {\n    pmVar21 = p_Var11->_mp_d;\n  }\n  pmVar23 = p_Var22->_mp_d;\n  pmVar15 = in_a2->_mp_d;\n  if ((int)(uVar20 ^ uVar8) < 0) {\n    if (uVar18 == uVar16) {\n      pmVar13 = pmVar23 + uVar18;\n      pmVar9 = pmVar15 + uVar18;\n      uVar8 = uVar18;\n      do {\n        uVar8 = uVar8 - 1;\n        if (uVar8 == 0xffffffff) goto LAB_00034bf8;\n        pmVar1 = pmVar13 + -1;\n        pmVar2 = pmVar9 + -1;\n        pmVar13 = pmVar13 + -1;\n        pmVar9 = pmVar9 + -1;\n      } while (*pmVar1 == *pmVar2);\n      if (*pmVar2 < *pmVar1) {\nLAB_00034bf8:\n        (**(code **)(pcVar27 + -0x7b2c))(pmVar21,pmVar23,pmVar15,uVar18);\n        if ((0 < (int)uVar18) && (pmVar21[uVar18 - 1] == 0)) {\n          pmVar21 = pmVar21 + uVar18;\n          do {\n            uVar18 = uVar18 - 1;\n            if (uVar18 == 0) break;\n            pmVar15 = pmVar21 + -2;\n            pmVar21 = pmVar21 + -1;\n          } while (*pmVar15 == 0);\n        }\n        if ((int)uVar20 < 0) {\n          uVar18 = -uVar18;\n        }\n      }\n      else {\n        (**(code **)(pcVar27 + -0x7b2c))(pmVar21,pmVar15,pmVar23);\n        if ((0 < (int)uVar18) && (pmVar21[uVar18 - 1] == 0)) {\n          pmVar21 = pmVar21 + uVar18;\n          do {\n            uVar18 = uVar18 - 1;\n            if (uVar18 == 0) break;\n            pmVar15 = pmVar21 + -2;\n            pmVar21 = pmVar21 + -1;\n          } while (*pmVar15 == 0);\n        }\n        if (-1 < (int)uVar20) {\n          uVar18 = -uVar18;\n        }\n      }\n      goto LAB_000349e8;\n    }\n    if (uVar16 == 0) {\nLAB_00034a50:\n      if ((pmVar21 != pmVar23) && ((int)uVar16 < (int)uVar18)) {\n        pmVar15 = pmVar23 + uVar16;\n        pmVar9 = pmVar21 + uVar16;\n        do {\n          *pmVar9 = *pmVar15;\n          pmVar15 = pmVar15 + 1;\n          pmVar9 = pmVar9 + 1;\n        } while (pmVar15 != pmVar23 + uVar18);\n      }\n    }\n    else {\n      iVar17 = (**(code **)(pcVar27 + -0x7b2c))(pmVar21,pmVar23,pmVar15,uVar16);\n      if (iVar17 == 0) goto LAB_00034a50;\n      if ((int)uVar16 < (int)uVar18) {\n        pmVar15 = pmVar23 + uVar16;\n        mVar10 = *pmVar15;\n        pmVar9 = pmVar21 + uVar16;\n        *pmVar9 = mVar10 - 1;\n        while (uVar16 = uVar16 + 1, mVar10 == 0) {\n          if (uVar18 == uVar16) goto LAB_00034a84;\n          mVar10 = pmVar15[1];\n          pmVar9[1] = mVar10 - 1;\n          pmVar15 = pmVar15 + 1;\n          pmVar9 = pmVar9 + 1;\n        }\n        goto LAB_00034a50;\n      }\n    }\nLAB_00034a84:\n    if ((0 < (int)uVar18) && (pmVar21[uVar18 + 0x3fffffff] == 0)) {\n      pmVar21 = pmVar21 + uVar18 + 0x40000000;\n      do {\n        uVar18 = uVar18 - 1;\n        if (uVar18 == 0) break;\n        pmVar15 = pmVar21 + -2;\n        pmVar21 = pmVar21 + -1;\n      } while (*pmVar15 == 0);\n    }\n    if ((int)uVar20 < 0) {\n      uVar18 = -uVar18;\n    }\n    goto LAB_000349e8;\n  }\n  if (uVar16 == 0) {\nLAB_0003499c:\n    if (pmVar21 == pmVar23) {\n      mVar10 = 0;\n    }\n    else if ((int)uVar16 < (int)uVar18) {\n      pmVar9 = pmVar23 + uVar16;\n      pmVar15 = pmVar21 + uVar16;\n      do {\n        *pmVar15 = *pmVar9;\n        pmVar9 = pmVar9 + 1;\n        pmVar15 = pmVar15 + 1;\n      } while (pmVar9 != pmVar23 + uVar18);\n      mVar10 = 0;\n    }\n    else {\n      mVar10 = 0;\n    }\n  }\n  else {\n    iVar17 = (**(code **)(pcVar27 + -0x7d0c))(pmVar21,pmVar23,pmVar15,uVar16);\n    if (iVar17 == 0) goto LAB_0003499c;\n    mVar10 = 1;\n    if ((int)uVar16 < (int)uVar18) {\n      pmVar15 = pmVar23 + uVar16;\n      pmVar9 = pmVar21 + uVar16;\n      mVar10 = *pmVar15 + 1;\n      *pmVar9 = mVar10;\n      while (uVar16 = uVar16 + 1, mVar10 == 0) {\n        if (uVar18 == uVar16) {\n          mVar10 = 1;\n          goto LAB_000349d4;\n        }\n        mVar10 = pmVar15[1] + 1;\n        pmVar9[1] = mVar10;\n        pmVar15 = pmVar15 + 1;\n        pmVar9 = pmVar9 + 1;\n      }\n      goto LAB_0003499c;\n    }\n  }\nLAB_000349d4:\n  pmVar21[uVar18] = mVar10;\n  uVar18 = uVar18 + mVar10;\n  if ((int)uVar20 < 0) {\n    uVar18 = -uVar18;\n  }\nLAB_000349e8:\n  p_Var11->_mp_size = uVar18;\n  return;\n}" { (declaration "mp_limb_t *pmVar1;" type_identifier (pointer_declarator "*pmVar1" * identifier) ;) (declaration "mp_limb_t *pmVar2;" type_identifier (pointer_declarator "*pmVar2" * identifier) ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "mp_limb_t **ppmVar5;" type_identifier (pointer_declarator "**ppmVar5" * (pointer_declarator "*ppmVar5" * identifier)) ;) (declaration "mp_limb_t **ppmVar6;" type_identifier (pointer_declarator "**ppmVar6" * (pointer_declarator "*ppmVar6" * identifier)) ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "mp_limb_t *pmVar9;" type_identifier (pointer_declarator "*pmVar9" * identifier) ;) (declaration "mp_limb_t mVar10;" type_identifier identifier ;) (declaration "mpz_ptr p_Var11;" type_identifier identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "mp_limb_t *pmVar13;" type_identifier (pointer_declarator "*pmVar13" * identifier) ;) (declaration "mpz_ptr p_Var14;" type_identifier identifier ;) (declaration "mp_limb_t *pmVar15;" type_identifier (pointer_declarator "*pmVar15" * identifier) ;) (declaration "mpz_ptr in_a2;" type_identifier identifier ;) (declaration "int unaff_s0;" primitive_type identifier ;) (declaration "uint uVar16;" type_identifier identifier ;) (declaration "int iVar17;" primitive_type identifier ;) (declaration "uint uVar18;" type_identifier identifier ;) (declaration "mpz_ptr unaff_s2;" type_identifier identifier ;) (declaration "uint uVar19;" type_identifier identifier ;) (declaration "uint uVar20;" type_identifier identifier ;) (declaration "int *unaff_s3;" primitive_type (pointer_declarator "*unaff_s3" * identifier) ;) (declaration "mpz_ptr unaff_s4;" type_identifier identifier ;) (declaration "mp_limb_t *pmVar21;" type_identifier (pointer_declarator "*pmVar21" * identifier) ;) (declaration "mpz_ptr unaff_s5;" type_identifier identifier ;) (declaration "mpz_ptr p_Var22;" type_identifier identifier ;) (declaration "mp_limb_t *pmVar23;" type_identifier (pointer_declarator "*pmVar23" * identifier) ;) (declaration "mpz_ptr unaff_s6;" type_identifier identifier ;) (declaration "uint unaff_s7;" type_identifier identifier ;) (declaration "undefined *puVar24;" type_identifier (pointer_declarator "*puVar24" * identifier) ;) (declaration "code *pcVar25;" type_identifier (pointer_declarator "*pcVar25" * identifier) ;) (declaration "undefined *puVar26;" type_identifier (pointer_declarator "*puVar26" * identifier) ;) (declaration "code *pcVar27;" type_identifier (pointer_declarator "*pcVar27" * identifier) ;) (declaration "undefined1 *puVar28;" type_identifier (pointer_declarator "*puVar28" * identifier) ;) (declaration "undefined1 *puVar29;" type_identifier (pointer_declarator "*puVar29" * identifier) ;) (declaration "undefined1 *puVar30;" type_identifier (pointer_declarator "*puVar30" * identifier) ;) (declaration "undefined1 *puVar31;" type_identifier (pointer_declarator "*puVar31" * identifier) ;) (declaration "undefined4 uVar32;" type_identifier identifier ;) (declaration "undefined1 auStack_40 [16];" type_identifier (array_declarator "auStack_40 [16]" identifier [ number_literal ]) ;) (declaration "tmp_reentrant_t *__tmp_marker;" type_identifier (pointer_declarator "*__tmp_marker" * identifier) ;) (declaration "int local_24;" primitive_type identifier ;) (expression_statement "puVar28 = auStack_40;" (assignment_expression "puVar28 = auStack_40" identifier = identifier) ;) (expression_statement "puVar29 = auStack_40;" (assignment_expression "puVar29 = auStack_40" identifier = identifier) ;) (expression_statement "local_24 = *(int *)PTR___stack_chk_guard_0009b540;" (assignment_expression "local_24 = *(int *)PTR___stack_chk_guard_0009b540" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_0009b540" * (cast_expression "(int *)PTR___stack_chk_guard_0009b540" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "iVar17 = op->_mp_size;" (assignment_expression "iVar17 = op->_mp_size" identifier = (field_expression "op->_mp_size" identifier -> field_identifier)) ;) (if_statement "if (iVar17 < 1) {\n    if (iVar17 < 0) {\n      (*(code *)PTR___gmp_sqrt_of_negative_0009b1cc)();\n      goto LAB_000345b4;\n    }\n    root->_mp_size = 0;\n  }\n  else {\n    unaff_s0 = (iVar17 + 1) / 2;\n    root->_mp_size = unaff_s0;\n    unaff_s2 = (mpz_ptr)op->_mp_d;\n    if (op == root) {\nLAB_000345b4:\n      unaff_s4 = (mpz_ptr)(unaff_s0 * 4);\n      __tmp_marker = (tmp_reentrant_t *)0x0;\n      if (unaff_s4 < (mpz_ptr)0x7f01) {\n        iVar12 = -((uint)((int)&unaff_s4->_mp_size + 3U) & 0xfffffff8);\n        puVar29 = auStack_40 + iVar12;\n        unaff_s3 = (int *)(&stack0xffffffd0 + iVar12);\n      }\n      else {\n        unaff_s3 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)(&__tmp_marker,unaff_s4);\n      }\n      op = (mpz_ptr)0x0;\n      in_a2 = unaff_s2;\n      (*(code *)PTR___gmpn_sqrtrem_0009b0e0)(unaff_s3,0,unaff_s2,iVar17);\n      iVar12 = *unaff_s3;\n      if (unaff_s0 != 1) {\n        piVar3 = unaff_s3 + 1;\n        unaff_s3 = unaff_s3 + unaff_s0;\n        p_Var11 = unaff_s2;\n        do {\n          p_Var11->_mp_alloc = iVar12;\n          piVar4 = piVar3 + 1;\n          iVar12 = *piVar3;\n          piVar3 = piVar4;\n          p_Var11 = (mpz_ptr)&p_Var11->_mp_size;\n        } while (unaff_s3 != piVar4);\n        unaff_s4 = (mpz_ptr)&unaff_s4[-1]._mp_d;\n        unaff_s2 = (mpz_ptr)((int)unaff_s4 + (int)&unaff_s2->_mp_alloc);\n      }\n      unaff_s2->_mp_alloc = iVar12;\n      root = (mpz_ptr)__tmp_marker;\n      puVar28 = puVar29;\n      if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n        (*(code *)PTR___gmp_tmp_reentrant_free_0009b614)();\n      }\n    }\n    else {\n      if (root->_mp_alloc < unaff_s0) {\n        root = (mpz_ptr)(*(code *)PTR___gmpz_realloc_0009b5bc)(root,unaff_s0);\n      }\n      else {\n        root = (mpz_ptr)root->_mp_d;\n      }\n      op = (mpz_ptr)0x0;\n      in_a2 = unaff_s2;\n      (*(code *)PTR___gmpn_sqrtrem_0009b0e0)();\n      puVar28 = auStack_40;\n    }\n  }" if (parenthesized_expression "(iVar17 < 1)" ( (binary_expression "iVar17 < 1" identifier < number_literal) )) (compound_statement "{\n    if (iVar17 < 0) {\n      (*(code *)PTR___gmp_sqrt_of_negative_0009b1cc)();\n      goto LAB_000345b4;\n    }\n    root->_mp_size = 0;\n  }" { (if_statement "if (iVar17 < 0) {\n      (*(code *)PTR___gmp_sqrt_of_negative_0009b1cc)();\n      goto LAB_000345b4;\n    }" if (parenthesized_expression "(iVar17 < 0)" ( (binary_expression "iVar17 < 0" identifier < number_literal) )) (compound_statement "{\n      (*(code *)PTR___gmp_sqrt_of_negative_0009b1cc)();\n      goto LAB_000345b4;\n    }" { (expression_statement "(*(code *)PTR___gmp_sqrt_of_negative_0009b1cc)();" (call_expression "(*(code *)PTR___gmp_sqrt_of_negative_0009b1cc)()" (parenthesized_expression "(*(code *)PTR___gmp_sqrt_of_negative_0009b1cc)" ( (pointer_expression "*(code *)PTR___gmp_sqrt_of_negative_0009b1cc" * (cast_expression "(code *)PTR___gmp_sqrt_of_negative_0009b1cc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (goto_statement "goto LAB_000345b4;" goto statement_identifier ;) })) (expression_statement "root->_mp_size = 0;" (assignment_expression "root->_mp_size = 0" (field_expression "root->_mp_size" identifier -> field_identifier) = number_literal) ;) }) (else_clause "else {\n    unaff_s0 = (iVar17 + 1) / 2;\n    root->_mp_size = unaff_s0;\n    unaff_s2 = (mpz_ptr)op->_mp_d;\n    if (op == root) {\nLAB_000345b4:\n      unaff_s4 = (mpz_ptr)(unaff_s0 * 4);\n      __tmp_marker = (tmp_reentrant_t *)0x0;\n      if (unaff_s4 < (mpz_ptr)0x7f01) {\n        iVar12 = -((uint)((int)&unaff_s4->_mp_size + 3U) & 0xfffffff8);\n        puVar29 = auStack_40 + iVar12;\n        unaff_s3 = (int *)(&stack0xffffffd0 + iVar12);\n      }\n      else {\n        unaff_s3 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)(&__tmp_marker,unaff_s4);\n      }\n      op = (mpz_ptr)0x0;\n      in_a2 = unaff_s2;\n      (*(code *)PTR___gmpn_sqrtrem_0009b0e0)(unaff_s3,0,unaff_s2,iVar17);\n      iVar12 = *unaff_s3;\n      if (unaff_s0 != 1) {\n        piVar3 = unaff_s3 + 1;\n        unaff_s3 = unaff_s3 + unaff_s0;\n        p_Var11 = unaff_s2;\n        do {\n          p_Var11->_mp_alloc = iVar12;\n          piVar4 = piVar3 + 1;\n          iVar12 = *piVar3;\n          piVar3 = piVar4;\n          p_Var11 = (mpz_ptr)&p_Var11->_mp_size;\n        } while (unaff_s3 != piVar4);\n        unaff_s4 = (mpz_ptr)&unaff_s4[-1]._mp_d;\n        unaff_s2 = (mpz_ptr)((int)unaff_s4 + (int)&unaff_s2->_mp_alloc);\n      }\n      unaff_s2->_mp_alloc = iVar12;\n      root = (mpz_ptr)__tmp_marker;\n      puVar28 = puVar29;\n      if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n        (*(code *)PTR___gmp_tmp_reentrant_free_0009b614)();\n      }\n    }\n    else {\n      if (root->_mp_alloc < unaff_s0) {\n        root = (mpz_ptr)(*(code *)PTR___gmpz_realloc_0009b5bc)(root,unaff_s0);\n      }\n      else {\n        root = (mpz_ptr)root->_mp_d;\n      }\n      op = (mpz_ptr)0x0;\n      in_a2 = unaff_s2;\n      (*(code *)PTR___gmpn_sqrtrem_0009b0e0)();\n      puVar28 = auStack_40;\n    }\n  }" else (compound_statement "{\n    unaff_s0 = (iVar17 + 1) / 2;\n    root->_mp_size = unaff_s0;\n    unaff_s2 = (mpz_ptr)op->_mp_d;\n    if (op == root) {\nLAB_000345b4:\n      unaff_s4 = (mpz_ptr)(unaff_s0 * 4);\n      __tmp_marker = (tmp_reentrant_t *)0x0;\n      if (unaff_s4 < (mpz_ptr)0x7f01) {\n        iVar12 = -((uint)((int)&unaff_s4->_mp_size + 3U) & 0xfffffff8);\n        puVar29 = auStack_40 + iVar12;\n        unaff_s3 = (int *)(&stack0xffffffd0 + iVar12);\n      }\n      else {\n        unaff_s3 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)(&__tmp_marker,unaff_s4);\n      }\n      op = (mpz_ptr)0x0;\n      in_a2 = unaff_s2;\n      (*(code *)PTR___gmpn_sqrtrem_0009b0e0)(unaff_s3,0,unaff_s2,iVar17);\n      iVar12 = *unaff_s3;\n      if (unaff_s0 != 1) {\n        piVar3 = unaff_s3 + 1;\n        unaff_s3 = unaff_s3 + unaff_s0;\n        p_Var11 = unaff_s2;\n        do {\n          p_Var11->_mp_alloc = iVar12;\n          piVar4 = piVar3 + 1;\n          iVar12 = *piVar3;\n          piVar3 = piVar4;\n          p_Var11 = (mpz_ptr)&p_Var11->_mp_size;\n        } while (unaff_s3 != piVar4);\n        unaff_s4 = (mpz_ptr)&unaff_s4[-1]._mp_d;\n        unaff_s2 = (mpz_ptr)((int)unaff_s4 + (int)&unaff_s2->_mp_alloc);\n      }\n      unaff_s2->_mp_alloc = iVar12;\n      root = (mpz_ptr)__tmp_marker;\n      puVar28 = puVar29;\n      if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n        (*(code *)PTR___gmp_tmp_reentrant_free_0009b614)();\n      }\n    }\n    else {\n      if (root->_mp_alloc < unaff_s0) {\n        root = (mpz_ptr)(*(code *)PTR___gmpz_realloc_0009b5bc)(root,unaff_s0);\n      }\n      else {\n        root = (mpz_ptr)root->_mp_d;\n      }\n      op = (mpz_ptr)0x0;\n      in_a2 = unaff_s2;\n      (*(code *)PTR___gmpn_sqrtrem_0009b0e0)();\n      puVar28 = auStack_40;\n    }\n  }" { (expression_statement "unaff_s0 = (iVar17 + 1) / 2;" (assignment_expression "unaff_s0 = (iVar17 + 1) / 2" identifier = (binary_expression "(iVar17 + 1) / 2" (parenthesized_expression "(iVar17 + 1)" ( (binary_expression "iVar17 + 1" identifier + number_literal) )) / number_literal)) ;) (expression_statement "root->_mp_size = unaff_s0;" (assignment_expression "root->_mp_size = unaff_s0" (field_expression "root->_mp_size" identifier -> field_identifier) = identifier) ;) (expression_statement "unaff_s2 = (mpz_ptr)op->_mp_d;" (assignment_expression "unaff_s2 = (mpz_ptr)op->_mp_d" identifier = (cast_expression "(mpz_ptr)op->_mp_d" ( (type_descriptor "mpz_ptr" type_identifier) ) (field_expression "op->_mp_d" identifier -> field_identifier))) ;) (if_statement "if (op == root) {\nLAB_000345b4:\n      unaff_s4 = (mpz_ptr)(unaff_s0 * 4);\n      __tmp_marker = (tmp_reentrant_t *)0x0;\n      if (unaff_s4 < (mpz_ptr)0x7f01) {\n        iVar12 = -((uint)((int)&unaff_s4->_mp_size + 3U) & 0xfffffff8);\n        puVar29 = auStack_40 + iVar12;\n        unaff_s3 = (int *)(&stack0xffffffd0 + iVar12);\n      }\n      else {\n        unaff_s3 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)(&__tmp_marker,unaff_s4);\n      }\n      op = (mpz_ptr)0x0;\n      in_a2 = unaff_s2;\n      (*(code *)PTR___gmpn_sqrtrem_0009b0e0)(unaff_s3,0,unaff_s2,iVar17);\n      iVar12 = *unaff_s3;\n      if (unaff_s0 != 1) {\n        piVar3 = unaff_s3 + 1;\n        unaff_s3 = unaff_s3 + unaff_s0;\n        p_Var11 = unaff_s2;\n        do {\n          p_Var11->_mp_alloc = iVar12;\n          piVar4 = piVar3 + 1;\n          iVar12 = *piVar3;\n          piVar3 = piVar4;\n          p_Var11 = (mpz_ptr)&p_Var11->_mp_size;\n        } while (unaff_s3 != piVar4);\n        unaff_s4 = (mpz_ptr)&unaff_s4[-1]._mp_d;\n        unaff_s2 = (mpz_ptr)((int)unaff_s4 + (int)&unaff_s2->_mp_alloc);\n      }\n      unaff_s2->_mp_alloc = iVar12;\n      root = (mpz_ptr)__tmp_marker;\n      puVar28 = puVar29;\n      if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n        (*(code *)PTR___gmp_tmp_reentrant_free_0009b614)();\n      }\n    }\n    else {\n      if (root->_mp_alloc < unaff_s0) {\n        root = (mpz_ptr)(*(code *)PTR___gmpz_realloc_0009b5bc)(root,unaff_s0);\n      }\n      else {\n        root = (mpz_ptr)root->_mp_d;\n      }\n      op = (mpz_ptr)0x0;\n      in_a2 = unaff_s2;\n      (*(code *)PTR___gmpn_sqrtrem_0009b0e0)();\n      puVar28 = auStack_40;\n    }" if (parenthesized_expression "(op == root)" ( (binary_expression "op == root" identifier == identifier) )) (compound_statement "{\nLAB_000345b4:\n      unaff_s4 = (mpz_ptr)(unaff_s0 * 4);\n      __tmp_marker = (tmp_reentrant_t *)0x0;\n      if (unaff_s4 < (mpz_ptr)0x7f01) {\n        iVar12 = -((uint)((int)&unaff_s4->_mp_size + 3U) & 0xfffffff8);\n        puVar29 = auStack_40 + iVar12;\n        unaff_s3 = (int *)(&stack0xffffffd0 + iVar12);\n      }\n      else {\n        unaff_s3 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)(&__tmp_marker,unaff_s4);\n      }\n      op = (mpz_ptr)0x0;\n      in_a2 = unaff_s2;\n      (*(code *)PTR___gmpn_sqrtrem_0009b0e0)(unaff_s3,0,unaff_s2,iVar17);\n      iVar12 = *unaff_s3;\n      if (unaff_s0 != 1) {\n        piVar3 = unaff_s3 + 1;\n        unaff_s3 = unaff_s3 + unaff_s0;\n        p_Var11 = unaff_s2;\n        do {\n          p_Var11->_mp_alloc = iVar12;\n          piVar4 = piVar3 + 1;\n          iVar12 = *piVar3;\n          piVar3 = piVar4;\n          p_Var11 = (mpz_ptr)&p_Var11->_mp_size;\n        } while (unaff_s3 != piVar4);\n        unaff_s4 = (mpz_ptr)&unaff_s4[-1]._mp_d;\n        unaff_s2 = (mpz_ptr)((int)unaff_s4 + (int)&unaff_s2->_mp_alloc);\n      }\n      unaff_s2->_mp_alloc = iVar12;\n      root = (mpz_ptr)__tmp_marker;\n      puVar28 = puVar29;\n      if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n        (*(code *)PTR___gmp_tmp_reentrant_free_0009b614)();\n      }\n    }" { (labeled_statement "LAB_000345b4:\n      unaff_s4 = (mpz_ptr)(unaff_s0 * 4);" statement_identifier : (expression_statement "unaff_s4 = (mpz_ptr)(unaff_s0 * 4);" (assignment_expression "unaff_s4 = (mpz_ptr)(unaff_s0 * 4)" identifier = (call_expression "(mpz_ptr)(unaff_s0 * 4)" (parenthesized_expression "(mpz_ptr)" ( identifier )) (argument_list "(unaff_s0 * 4)" ( (binary_expression "unaff_s0 * 4" identifier * number_literal) )))) ;)) (expression_statement "__tmp_marker = (tmp_reentrant_t *)0x0;" (assignment_expression "__tmp_marker = (tmp_reentrant_t *)0x0" identifier = (cast_expression "(tmp_reentrant_t *)0x0" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (unaff_s4 < (mpz_ptr)0x7f01) {\n        iVar12 = -((uint)((int)&unaff_s4->_mp_size + 3U) & 0xfffffff8);\n        puVar29 = auStack_40 + iVar12;\n        unaff_s3 = (int *)(&stack0xffffffd0 + iVar12);\n      }\n      else {\n        unaff_s3 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)(&__tmp_marker,unaff_s4);\n      }" if (parenthesized_expression "(unaff_s4 < (mpz_ptr)0x7f01)" ( (binary_expression "unaff_s4 < (mpz_ptr)0x7f01" identifier < (cast_expression "(mpz_ptr)0x7f01" ( (type_descriptor "mpz_ptr" type_identifier) ) number_literal)) )) (compound_statement "{\n        iVar12 = -((uint)((int)&unaff_s4->_mp_size + 3U) & 0xfffffff8);\n        puVar29 = auStack_40 + iVar12;\n        unaff_s3 = (int *)(&stack0xffffffd0 + iVar12);\n      }" { (expression_statement "iVar12 = -((uint)((int)&unaff_s4->_mp_size + 3U) & 0xfffffff8);" (assignment_expression "iVar12 = -((uint)((int)&unaff_s4->_mp_size + 3U) & 0xfffffff8)" identifier = (unary_expression "-((uint)((int)&unaff_s4->_mp_size + 3U) & 0xfffffff8)" - (parenthesized_expression "((uint)((int)&unaff_s4->_mp_size + 3U) & 0xfffffff8)" ( (binary_expression "(uint)((int)&unaff_s4->_mp_size + 3U) & 0xfffffff8" (call_expression "(uint)((int)&unaff_s4->_mp_size + 3U)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)&unaff_s4->_mp_size + 3U)" ( (binary_expression "(int)&unaff_s4->_mp_size + 3U" (cast_expression "(int)&unaff_s4->_mp_size" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&unaff_s4->_mp_size" & (field_expression "unaff_s4->_mp_size" identifier -> field_identifier))) + number_literal) ))) & number_literal) )))) ;) (expression_statement "puVar29 = auStack_40 + iVar12;" (assignment_expression "puVar29 = auStack_40 + iVar12" identifier = (binary_expression "auStack_40 + iVar12" identifier + identifier)) ;) (expression_statement "unaff_s3 = (int *)(&stack0xffffffd0 + iVar12);" (assignment_expression "unaff_s3 = (int *)(&stack0xffffffd0 + iVar12)" identifier = (cast_expression "(int *)(&stack0xffffffd0 + iVar12)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&stack0xffffffd0 + iVar12)" ( (binary_expression "&stack0xffffffd0 + iVar12" (pointer_expression "&stack0xffffffd0" & identifier) + identifier) )))) ;) }) (else_clause "else {\n        unaff_s3 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)(&__tmp_marker,unaff_s4);\n      }" else (compound_statement "{\n        unaff_s3 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)(&__tmp_marker,unaff_s4);\n      }" { (expression_statement "unaff_s3 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)(&__tmp_marker,unaff_s4);" (assignment_expression "unaff_s3 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)(&__tmp_marker,unaff_s4)" identifier = (cast_expression "(int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)(&__tmp_marker,unaff_s4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)(&__tmp_marker,unaff_s4)" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)" ( (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0" * (cast_expression "(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(&__tmp_marker,unaff_s4)" ( (pointer_expression "&__tmp_marker" & identifier) , identifier ))))) ;) }))) (expression_statement "op = (mpz_ptr)0x0;" (assignment_expression "op = (mpz_ptr)0x0" identifier = (cast_expression "(mpz_ptr)0x0" ( (type_descriptor "mpz_ptr" type_identifier) ) number_literal)) ;) (expression_statement "in_a2 = unaff_s2;" (assignment_expression "in_a2 = unaff_s2" identifier = identifier) ;) (expression_statement "(*(code *)PTR___gmpn_sqrtrem_0009b0e0)(unaff_s3,0,unaff_s2,iVar17);" (call_expression "(*(code *)PTR___gmpn_sqrtrem_0009b0e0)(unaff_s3,0,unaff_s2,iVar17)" (parenthesized_expression "(*(code *)PTR___gmpn_sqrtrem_0009b0e0)" ( (pointer_expression "*(code *)PTR___gmpn_sqrtrem_0009b0e0" * (cast_expression "(code *)PTR___gmpn_sqrtrem_0009b0e0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(unaff_s3,0,unaff_s2,iVar17)" ( identifier , number_literal , identifier , identifier ))) ;) (expression_statement "iVar12 = *unaff_s3;" (assignment_expression "iVar12 = *unaff_s3" identifier = (pointer_expression "*unaff_s3" * identifier)) ;) (if_statement "if (unaff_s0 != 1) {\n        piVar3 = unaff_s3 + 1;\n        unaff_s3 = unaff_s3 + unaff_s0;\n        p_Var11 = unaff_s2;\n        do {\n          p_Var11->_mp_alloc = iVar12;\n          piVar4 = piVar3 + 1;\n          iVar12 = *piVar3;\n          piVar3 = piVar4;\n          p_Var11 = (mpz_ptr)&p_Var11->_mp_size;\n        } while (unaff_s3 != piVar4);\n        unaff_s4 = (mpz_ptr)&unaff_s4[-1]._mp_d;\n        unaff_s2 = (mpz_ptr)((int)unaff_s4 + (int)&unaff_s2->_mp_alloc);\n      }" if (parenthesized_expression "(unaff_s0 != 1)" ( (binary_expression "unaff_s0 != 1" identifier != number_literal) )) (compound_statement "{\n        piVar3 = unaff_s3 + 1;\n        unaff_s3 = unaff_s3 + unaff_s0;\n        p_Var11 = unaff_s2;\n        do {\n          p_Var11->_mp_alloc = iVar12;\n          piVar4 = piVar3 + 1;\n          iVar12 = *piVar3;\n          piVar3 = piVar4;\n          p_Var11 = (mpz_ptr)&p_Var11->_mp_size;\n        } while (unaff_s3 != piVar4);\n        unaff_s4 = (mpz_ptr)&unaff_s4[-1]._mp_d;\n        unaff_s2 = (mpz_ptr)((int)unaff_s4 + (int)&unaff_s2->_mp_alloc);\n      }" { (expression_statement "piVar3 = unaff_s3 + 1;" (assignment_expression "piVar3 = unaff_s3 + 1" identifier = (binary_expression "unaff_s3 + 1" identifier + number_literal)) ;) (expression_statement "unaff_s3 = unaff_s3 + unaff_s0;" (assignment_expression "unaff_s3 = unaff_s3 + unaff_s0" identifier = (binary_expression "unaff_s3 + unaff_s0" identifier + identifier)) ;) (expression_statement "p_Var11 = unaff_s2;" (assignment_expression "p_Var11 = unaff_s2" identifier = identifier) ;) (do_statement "do {\n          p_Var11->_mp_alloc = iVar12;\n          piVar4 = piVar3 + 1;\n          iVar12 = *piVar3;\n          piVar3 = piVar4;\n          p_Var11 = (mpz_ptr)&p_Var11->_mp_size;\n        } while (unaff_s3 != piVar4);" do (compound_statement "{\n          p_Var11->_mp_alloc = iVar12;\n          piVar4 = piVar3 + 1;\n          iVar12 = *piVar3;\n          piVar3 = piVar4;\n          p_Var11 = (mpz_ptr)&p_Var11->_mp_size;\n        }" { (expression_statement "p_Var11->_mp_alloc = iVar12;" (assignment_expression "p_Var11->_mp_alloc = iVar12" (field_expression "p_Var11->_mp_alloc" identifier -> field_identifier) = identifier) ;) (expression_statement "piVar4 = piVar3 + 1;" (assignment_expression "piVar4 = piVar3 + 1" identifier = (binary_expression "piVar3 + 1" identifier + number_literal)) ;) (expression_statement "iVar12 = *piVar3;" (assignment_expression "iVar12 = *piVar3" identifier = (pointer_expression "*piVar3" * identifier)) ;) (expression_statement "piVar3 = piVar4;" (assignment_expression "piVar3 = piVar4" identifier = identifier) ;) (expression_statement "p_Var11 = (mpz_ptr)&p_Var11->_mp_size;" (assignment_expression "p_Var11 = (mpz_ptr)&p_Var11->_mp_size" identifier = (binary_expression "(mpz_ptr)&p_Var11->_mp_size" (parenthesized_expression "(mpz_ptr)" ( identifier )) & (field_expression "p_Var11->_mp_size" identifier -> field_identifier))) ;) }) while (parenthesized_expression "(unaff_s3 != piVar4)" ( (binary_expression "unaff_s3 != piVar4" identifier != identifier) )) ;) (expression_statement "unaff_s4 = (mpz_ptr)&unaff_s4[-1]._mp_d;" (assignment_expression "unaff_s4 = (mpz_ptr)&unaff_s4[-1]._mp_d" identifier = (binary_expression "(mpz_ptr)&unaff_s4[-1]._mp_d" (parenthesized_expression "(mpz_ptr)" ( identifier )) & (field_expression "unaff_s4[-1]._mp_d" (subscript_expression "unaff_s4[-1]" identifier [ number_literal ]) . field_identifier))) ;) (expression_statement "unaff_s2 = (mpz_ptr)((int)unaff_s4 + (int)&unaff_s2->_mp_alloc);" (assignment_expression "unaff_s2 = (mpz_ptr)((int)unaff_s4 + (int)&unaff_s2->_mp_alloc)" identifier = (call_expression "(mpz_ptr)((int)unaff_s4 + (int)&unaff_s2->_mp_alloc)" (parenthesized_expression "(mpz_ptr)" ( identifier )) (argument_list "((int)unaff_s4 + (int)&unaff_s2->_mp_alloc)" ( (binary_expression "(int)unaff_s4 + (int)&unaff_s2->_mp_alloc" (cast_expression "(int)unaff_s4" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)&unaff_s2->_mp_alloc" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&unaff_s2->_mp_alloc" & (field_expression "unaff_s2->_mp_alloc" identifier -> field_identifier)))) )))) ;) })) (expression_statement "unaff_s2->_mp_alloc = iVar12;" (assignment_expression "unaff_s2->_mp_alloc = iVar12" (field_expression "unaff_s2->_mp_alloc" identifier -> field_identifier) = identifier) ;) (expression_statement "root = (mpz_ptr)__tmp_marker;" (assignment_expression "root = (mpz_ptr)__tmp_marker" identifier = (cast_expression "(mpz_ptr)__tmp_marker" ( (type_descriptor "mpz_ptr" type_identifier) ) identifier)) ;) (expression_statement "puVar28 = puVar29;" (assignment_expression "puVar28 = puVar29" identifier = identifier) ;) (if_statement "if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n        (*(code *)PTR___gmp_tmp_reentrant_free_0009b614)();\n      }" if (parenthesized_expression "(__tmp_marker != (tmp_reentrant_t *)0x0)" ( (binary_expression "__tmp_marker != (tmp_reentrant_t *)0x0" identifier != (cast_expression "(tmp_reentrant_t *)0x0" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        (*(code *)PTR___gmp_tmp_reentrant_free_0009b614)();\n      }" { (expression_statement "(*(code *)PTR___gmp_tmp_reentrant_free_0009b614)();" (call_expression "(*(code *)PTR___gmp_tmp_reentrant_free_0009b614)()" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_free_0009b614)" ( (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_free_0009b614" * (cast_expression "(code *)PTR___gmp_tmp_reentrant_free_0009b614" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) })) }) (else_clause "else {\n      if (root->_mp_alloc < unaff_s0) {\n        root = (mpz_ptr)(*(code *)PTR___gmpz_realloc_0009b5bc)(root,unaff_s0);\n      }\n      else {\n        root = (mpz_ptr)root->_mp_d;\n      }\n      op = (mpz_ptr)0x0;\n      in_a2 = unaff_s2;\n      (*(code *)PTR___gmpn_sqrtrem_0009b0e0)();\n      puVar28 = auStack_40;\n    }" else (compound_statement "{\n      if (root->_mp_alloc < unaff_s0) {\n        root = (mpz_ptr)(*(code *)PTR___gmpz_realloc_0009b5bc)(root,unaff_s0);\n      }\n      else {\n        root = (mpz_ptr)root->_mp_d;\n      }\n      op = (mpz_ptr)0x0;\n      in_a2 = unaff_s2;\n      (*(code *)PTR___gmpn_sqrtrem_0009b0e0)();\n      puVar28 = auStack_40;\n    }" { (if_statement "if (root->_mp_alloc < unaff_s0) {\n        root = (mpz_ptr)(*(code *)PTR___gmpz_realloc_0009b5bc)(root,unaff_s0);\n      }\n      else {\n        root = (mpz_ptr)root->_mp_d;\n      }" if (parenthesized_expression "(root->_mp_alloc < unaff_s0)" ( (binary_expression "root->_mp_alloc < unaff_s0" (field_expression "root->_mp_alloc" identifier -> field_identifier) < identifier) )) (compound_statement "{\n        root = (mpz_ptr)(*(code *)PTR___gmpz_realloc_0009b5bc)(root,unaff_s0);\n      }" { (expression_statement "root = (mpz_ptr)(*(code *)PTR___gmpz_realloc_0009b5bc)(root,unaff_s0);" (assignment_expression "root = (mpz_ptr)(*(code *)PTR___gmpz_realloc_0009b5bc)(root,unaff_s0)" identifier = (call_expression "(mpz_ptr)(*(code *)PTR___gmpz_realloc_0009b5bc)(root,unaff_s0)" (call_expression "(mpz_ptr)(*(code *)PTR___gmpz_realloc_0009b5bc)" (parenthesized_expression "(mpz_ptr)" ( identifier )) (argument_list "(*(code *)PTR___gmpz_realloc_0009b5bc)" ( (pointer_expression "*(code *)PTR___gmpz_realloc_0009b5bc" * (cast_expression "(code *)PTR___gmpz_realloc_0009b5bc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ))) (argument_list "(root,unaff_s0)" ( identifier , identifier )))) ;) }) (else_clause "else {\n        root = (mpz_ptr)root->_mp_d;\n      }" else (compound_statement "{\n        root = (mpz_ptr)root->_mp_d;\n      }" { (expression_statement "root = (mpz_ptr)root->_mp_d;" (assignment_expression "root = (mpz_ptr)root->_mp_d" identifier = (cast_expression "(mpz_ptr)root->_mp_d" ( (type_descriptor "mpz_ptr" type_identifier) ) (field_expression "root->_mp_d" identifier -> field_identifier))) ;) }))) (expression_statement "op = (mpz_ptr)0x0;" (assignment_expression "op = (mpz_ptr)0x0" identifier = (cast_expression "(mpz_ptr)0x0" ( (type_descriptor "mpz_ptr" type_identifier) ) number_literal)) ;) (expression_statement "in_a2 = unaff_s2;" (assignment_expression "in_a2 = unaff_s2" identifier = identifier) ;) (expression_statement "(*(code *)PTR___gmpn_sqrtrem_0009b0e0)();" (call_expression "(*(code *)PTR___gmpn_sqrtrem_0009b0e0)()" (parenthesized_expression "(*(code *)PTR___gmpn_sqrtrem_0009b0e0)" ( (pointer_expression "*(code *)PTR___gmpn_sqrtrem_0009b0e0" * (cast_expression "(code *)PTR___gmpn_sqrtrem_0009b0e0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "puVar28 = auStack_40;" (assignment_expression "puVar28 = auStack_40" identifier = identifier) ;) }))) }))) (if_statement "if (local_24 == *(int *)PTR___stack_chk_guard_0009b540) {\n    return;\n  }" if (parenthesized_expression "(local_24 == *(int *)PTR___stack_chk_guard_0009b540)" ( (binary_expression "local_24 == *(int *)PTR___stack_chk_guard_0009b540" identifier == (pointer_expression "*(int *)PTR___stack_chk_guard_0009b540" * (cast_expression "(int *)PTR___stack_chk_guard_0009b540" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "uVar32 = 0x34694;" (assignment_expression "uVar32 = 0x34694" identifier = number_literal) ;) (expression_statement "puVar24 = PTR___stack_chk_fail_0009b4d0;" (assignment_expression "puVar24 = PTR___stack_chk_fail_0009b4d0" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_0009b4d0)();" (call_expression "(*(code *)PTR___stack_chk_fail_0009b4d0)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0009b4d0)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_0009b4d0" * (cast_expression "(code *)PTR___stack_chk_fail_0009b4d0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "puVar26 = puVar24 + 0x6e9a0;" (assignment_expression "puVar26 = puVar24 + 0x6e9a0" identifier = (binary_expression "puVar24 + 0x6e9a0" identifier + number_literal)) ;) (expression_statement "puVar30 = puVar28 + -0x48;" (assignment_expression "puVar30 = puVar28 + -0x48" identifier = (binary_expression "puVar28 + -0x48" identifier + number_literal)) ;) (expression_statement "puVar31 = puVar28 + -0x48;" (assignment_expression "puVar31 = puVar28 + -0x48" identifier = (binary_expression "puVar28 + -0x48" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar28 + -4) = uVar32;" (assignment_expression "*(undefined4 *)(puVar28 + -4) = uVar32" (pointer_expression "*(undefined4 *)(puVar28 + -4)" * (cast_expression "(undefined4 *)(puVar28 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar28 + -4)" ( (binary_expression "puVar28 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 **)(puVar28 + -8) = auStack_40;" (assignment_expression "*(undefined1 **)(puVar28 + -8) = auStack_40" (pointer_expression "*(undefined1 **)(puVar28 + -8)" * (cast_expression "(undefined1 **)(puVar28 + -8)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar28 + -8)" ( (binary_expression "puVar28 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar28 + -0xc) = unaff_s7;" (assignment_expression "*(uint *)(puVar28 + -0xc) = unaff_s7" (pointer_expression "*(uint *)(puVar28 + -0xc)" * (cast_expression "(uint *)(puVar28 + -0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar28 + -0xc)" ( (binary_expression "puVar28 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mpz_ptr *)(puVar28 + -0x10) = unaff_s6;" (assignment_expression "*(mpz_ptr *)(puVar28 + -0x10) = unaff_s6" (pointer_expression "*(mpz_ptr *)(puVar28 + -0x10)" * (cast_expression "(mpz_ptr *)(puVar28 + -0x10)" ( (type_descriptor "mpz_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar28 + -0x10)" ( (binary_expression "puVar28 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mpz_ptr *)(puVar28 + -0x14) = unaff_s5;" (assignment_expression "*(mpz_ptr *)(puVar28 + -0x14) = unaff_s5" (pointer_expression "*(mpz_ptr *)(puVar28 + -0x14)" * (cast_expression "(mpz_ptr *)(puVar28 + -0x14)" ( (type_descriptor "mpz_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar28 + -0x14)" ( (binary_expression "puVar28 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mpz_ptr *)(puVar28 + -0x18) = unaff_s4;" (assignment_expression "*(mpz_ptr *)(puVar28 + -0x18) = unaff_s4" (pointer_expression "*(mpz_ptr *)(puVar28 + -0x18)" * (cast_expression "(mpz_ptr *)(puVar28 + -0x18)" ( (type_descriptor "mpz_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar28 + -0x18)" ( (binary_expression "puVar28 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar28 + -0x1c) = unaff_s3;" (assignment_expression "*(int **)(puVar28 + -0x1c) = unaff_s3" (pointer_expression "*(int **)(puVar28 + -0x1c)" * (cast_expression "(int **)(puVar28 + -0x1c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar28 + -0x1c)" ( (binary_expression "puVar28 + -0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mpz_ptr *)(puVar28 + -0x20) = unaff_s2;" (assignment_expression "*(mpz_ptr *)(puVar28 + -0x20) = unaff_s2" (pointer_expression "*(mpz_ptr *)(puVar28 + -0x20)" * (cast_expression "(mpz_ptr *)(puVar28 + -0x20)" ( (type_descriptor "mpz_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar28 + -0x20)" ( (binary_expression "puVar28 + -0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar28 + -0x24) = iVar17;" (assignment_expression "*(int *)(puVar28 + -0x24) = iVar17" (pointer_expression "*(int *)(puVar28 + -0x24)" * (cast_expression "(int *)(puVar28 + -0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar28 + -0x24)" ( (binary_expression "puVar28 + -0x24" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar28 + -0x28) = unaff_s0;" (assignment_expression "*(int *)(puVar28 + -0x28) = unaff_s0" (pointer_expression "*(int *)(puVar28 + -0x28)" * (cast_expression "(int *)(puVar28 + -0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar28 + -0x28)" ( (binary_expression "puVar28 + -0x28" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)(puVar28 + -0x38) = puVar26;" (assignment_expression "*(undefined **)(puVar28 + -0x38) = puVar26" (pointer_expression "*(undefined **)(puVar28 + -0x38)" * (cast_expression "(undefined **)(puVar28 + -0x38)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar28 + -0x38)" ( (binary_expression "puVar28 + -0x38" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar28 + -0x2c) = **(undefined4 **)(puVar24 + 0x66ea0);" (assignment_expression "*(undefined4 *)(puVar28 + -0x2c) = **(undefined4 **)(puVar24 + 0x66ea0)" (pointer_expression "*(undefined4 *)(puVar28 + -0x2c)" * (cast_expression "(undefined4 *)(puVar28 + -0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar28 + -0x2c)" ( (binary_expression "puVar28 + -0x2c" identifier + number_literal) )))) = (pointer_expression "**(undefined4 **)(puVar24 + 0x66ea0)" * (pointer_expression "*(undefined4 **)(puVar24 + 0x66ea0)" * (cast_expression "(undefined4 **)(puVar24 + 0x66ea0)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + 0x66ea0)" ( (binary_expression "puVar24 + 0x66ea0" identifier + number_literal) )))))) ;) (expression_statement "iVar17 = in_a2->_mp_size;" (assignment_expression "iVar17 = in_a2->_mp_size" identifier = (field_expression "in_a2->_mp_size" identifier -> field_identifier)) ;) (if_statement "if (iVar17 < 1) {\n    if (iVar17 < 0) {\n      (**(code **)(puVar24 + 0x66b2c))();\n      goto LAB_000347c8;\n    }\n    root->_mp_size = 0;\n    op->_mp_size = 0;\n    p_Var11 = root;\n    p_Var14 = op;\n  }\n  else {\n    unaff_s4 = in_a2;\n    if (op->_mp_alloc < iVar17) {\nLAB_000347c8:\n      unaff_s5 = (mpz_ptr)(**(code **)(puVar24 + 0x66f1c))(op,iVar17);\n      puVar26 = *(undefined **)(puVar28 + -0x38);\n    }\n    else {\n      unaff_s5 = (mpz_ptr)op->_mp_d;\n    }\n    unaff_s0 = (iVar17 + 1) / 2;\n    root->_mp_size = unaff_s0;\n    unaff_s6 = (mpz_ptr)unaff_s4->_mp_d;\n    p_Var14 = unaff_s5;\n    in_a2 = unaff_s6;\n    if (unaff_s4 == root) {\n      unaff_s7 = unaff_s0 * 4;\n      *(undefined4 *)(puVar28 + -0x30) = 0;\n      if (unaff_s7 < 0x7f01) {\n        iVar12 = -(unaff_s7 + 7 & 0xfffffff8);\n        puVar31 = puVar28 + iVar12 + -0x48;\n        unaff_s4 = (mpz_ptr)(puVar28 + iVar12 + -0x38);\n      }\n      else {\n        unaff_s4 = (mpz_ptr)(**(code **)(puVar26 + -0x7d50))(puVar28 + -0x30,unaff_s7);\n        puVar26 = *(undefined **)(puVar28 + -0x38);\n      }\n      iVar17 = (**(code **)(puVar26 + -0x7f60))(unaff_s4,unaff_s5,unaff_s6,iVar17);\n      puVar26 = *(undefined **)(puVar28 + -0x38);\n      if (root != op) {\n        iVar12 = unaff_s4->_mp_alloc;\n        if (unaff_s0 != 1) {\n          ppmVar5 = (mp_limb_t **)&unaff_s4->_mp_size;\n          unaff_s4 = (mpz_ptr)(&unaff_s4->_mp_alloc + unaff_s0);\n          p_Var11 = unaff_s6;\n          do {\n            p_Var11->_mp_alloc = iVar12;\n            ppmVar6 = ppmVar5 + 1;\n            iVar12 = (int)*ppmVar5;\n            ppmVar5 = ppmVar6;\n            p_Var11 = (mpz_ptr)&p_Var11->_mp_size;\n          } while (unaff_s4 != (mpz_ptr)ppmVar6);\n          unaff_s7 = unaff_s7 - 4;\n          unaff_s6 = (mpz_ptr)((int)unaff_s6 + unaff_s7);\n        }\n        unaff_s6->_mp_alloc = iVar12;\n      }\n      p_Var11 = *(mpz_ptr *)(puVar28 + -0x30);\n      if (p_Var11 != (mpz_ptr)0x0) {\n        (**(code **)(puVar26 + -0x7a2c))();\n        puVar26 = *(undefined **)(puVar28 + -0x38);\n        op->_mp_size = iVar17;\n        puVar30 = puVar31;\n        goto LAB_00034768;\n      }\n    }\n    else {\n      if (root->_mp_alloc < unaff_s0) {\n        p_Var11 = (mpz_ptr)(**(code **)(puVar26 + -0x7a84))(root,unaff_s0);\n        puVar26 = *(undefined **)(puVar28 + -0x38);\n      }\n      else {\n        p_Var11 = (mpz_ptr)root->_mp_d;\n      }\n      iVar17 = (**(code **)(puVar26 + -0x7f60))();\n      puVar26 = *(undefined **)(puVar28 + -0x38);\n      puVar31 = puVar28 + -0x48;\n    }\n    op->_mp_size = iVar17;\n    puVar30 = puVar31;\n  }" if (parenthesized_expression "(iVar17 < 1)" ( (binary_expression "iVar17 < 1" identifier < number_literal) )) (compound_statement "{\n    if (iVar17 < 0) {\n      (**(code **)(puVar24 + 0x66b2c))();\n      goto LAB_000347c8;\n    }\n    root->_mp_size = 0;\n    op->_mp_size = 0;\n    p_Var11 = root;\n    p_Var14 = op;\n  }" { (if_statement "if (iVar17 < 0) {\n      (**(code **)(puVar24 + 0x66b2c))();\n      goto LAB_000347c8;\n    }" if (parenthesized_expression "(iVar17 < 0)" ( (binary_expression "iVar17 < 0" identifier < number_literal) )) (compound_statement "{\n      (**(code **)(puVar24 + 0x66b2c))();\n      goto LAB_000347c8;\n    }" { (expression_statement "(**(code **)(puVar24 + 0x66b2c))();" (call_expression "(**(code **)(puVar24 + 0x66b2c))()" (parenthesized_expression "(**(code **)(puVar24 + 0x66b2c))" ( (pointer_expression "**(code **)(puVar24 + 0x66b2c)" * (pointer_expression "*(code **)(puVar24 + 0x66b2c)" * (cast_expression "(code **)(puVar24 + 0x66b2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + 0x66b2c)" ( (binary_expression "puVar24 + 0x66b2c" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (goto_statement "goto LAB_000347c8;" goto statement_identifier ;) })) (expression_statement "root->_mp_size = 0;" (assignment_expression "root->_mp_size = 0" (field_expression "root->_mp_size" identifier -> field_identifier) = number_literal) ;) (expression_statement "op->_mp_size = 0;" (assignment_expression "op->_mp_size = 0" (field_expression "op->_mp_size" identifier -> field_identifier) = number_literal) ;) (expression_statement "p_Var11 = root;" (assignment_expression "p_Var11 = root" identifier = identifier) ;) (expression_statement "p_Var14 = op;" (assignment_expression "p_Var14 = op" identifier = identifier) ;) }) (else_clause "else {\n    unaff_s4 = in_a2;\n    if (op->_mp_alloc < iVar17) {\nLAB_000347c8:\n      unaff_s5 = (mpz_ptr)(**(code **)(puVar24 + 0x66f1c))(op,iVar17);\n      puVar26 = *(undefined **)(puVar28 + -0x38);\n    }\n    else {\n      unaff_s5 = (mpz_ptr)op->_mp_d;\n    }\n    unaff_s0 = (iVar17 + 1) / 2;\n    root->_mp_size = unaff_s0;\n    unaff_s6 = (mpz_ptr)unaff_s4->_mp_d;\n    p_Var14 = unaff_s5;\n    in_a2 = unaff_s6;\n    if (unaff_s4 == root) {\n      unaff_s7 = unaff_s0 * 4;\n      *(undefined4 *)(puVar28 + -0x30) = 0;\n      if (unaff_s7 < 0x7f01) {\n        iVar12 = -(unaff_s7 + 7 & 0xfffffff8);\n        puVar31 = puVar28 + iVar12 + -0x48;\n        unaff_s4 = (mpz_ptr)(puVar28 + iVar12 + -0x38);\n      }\n      else {\n        unaff_s4 = (mpz_ptr)(**(code **)(puVar26 + -0x7d50))(puVar28 + -0x30,unaff_s7);\n        puVar26 = *(undefined **)(puVar28 + -0x38);\n      }\n      iVar17 = (**(code **)(puVar26 + -0x7f60))(unaff_s4,unaff_s5,unaff_s6,iVar17);\n      puVar26 = *(undefined **)(puVar28 + -0x38);\n      if (root != op) {\n        iVar12 = unaff_s4->_mp_alloc;\n        if (unaff_s0 != 1) {\n          ppmVar5 = (mp_limb_t **)&unaff_s4->_mp_size;\n          unaff_s4 = (mpz_ptr)(&unaff_s4->_mp_alloc + unaff_s0);\n          p_Var11 = unaff_s6;\n          do {\n            p_Var11->_mp_alloc = iVar12;\n            ppmVar6 = ppmVar5 + 1;\n            iVar12 = (int)*ppmVar5;\n            ppmVar5 = ppmVar6;\n            p_Var11 = (mpz_ptr)&p_Var11->_mp_size;\n          } while (unaff_s4 != (mpz_ptr)ppmVar6);\n          unaff_s7 = unaff_s7 - 4;\n          unaff_s6 = (mpz_ptr)((int)unaff_s6 + unaff_s7);\n        }\n        unaff_s6->_mp_alloc = iVar12;\n      }\n      p_Var11 = *(mpz_ptr *)(puVar28 + -0x30);\n      if (p_Var11 != (mpz_ptr)0x0) {\n        (**(code **)(puVar26 + -0x7a2c))();\n        puVar26 = *(undefined **)(puVar28 + -0x38);\n        op->_mp_size = iVar17;\n        puVar30 = puVar31;\n        goto LAB_00034768;\n      }\n    }\n    else {\n      if (root->_mp_alloc < unaff_s0) {\n        p_Var11 = (mpz_ptr)(**(code **)(puVar26 + -0x7a84))(root,unaff_s0);\n        puVar26 = *(undefined **)(puVar28 + -0x38);\n      }\n      else {\n        p_Var11 = (mpz_ptr)root->_mp_d;\n      }\n      iVar17 = (**(code **)(puVar26 + -0x7f60))();\n      puVar26 = *(undefined **)(puVar28 + -0x38);\n      puVar31 = puVar28 + -0x48;\n    }\n    op->_mp_size = iVar17;\n    puVar30 = puVar31;\n  }" else (compound_statement "{\n    unaff_s4 = in_a2;\n    if (op->_mp_alloc < iVar17) {\nLAB_000347c8:\n      unaff_s5 = (mpz_ptr)(**(code **)(puVar24 + 0x66f1c))(op,iVar17);\n      puVar26 = *(undefined **)(puVar28 + -0x38);\n    }\n    else {\n      unaff_s5 = (mpz_ptr)op->_mp_d;\n    }\n    unaff_s0 = (iVar17 + 1) / 2;\n    root->_mp_size = unaff_s0;\n    unaff_s6 = (mpz_ptr)unaff_s4->_mp_d;\n    p_Var14 = unaff_s5;\n    in_a2 = unaff_s6;\n    if (unaff_s4 == root) {\n      unaff_s7 = unaff_s0 * 4;\n      *(undefined4 *)(puVar28 + -0x30) = 0;\n      if (unaff_s7 < 0x7f01) {\n        iVar12 = -(unaff_s7 + 7 & 0xfffffff8);\n        puVar31 = puVar28 + iVar12 + -0x48;\n        unaff_s4 = (mpz_ptr)(puVar28 + iVar12 + -0x38);\n      }\n      else {\n        unaff_s4 = (mpz_ptr)(**(code **)(puVar26 + -0x7d50))(puVar28 + -0x30,unaff_s7);\n        puVar26 = *(undefined **)(puVar28 + -0x38);\n      }\n      iVar17 = (**(code **)(puVar26 + -0x7f60))(unaff_s4,unaff_s5,unaff_s6,iVar17);\n      puVar26 = *(undefined **)(puVar28 + -0x38);\n      if (root != op) {\n        iVar12 = unaff_s4->_mp_alloc;\n        if (unaff_s0 != 1) {\n          ppmVar5 = (mp_limb_t **)&unaff_s4->_mp_size;\n          unaff_s4 = (mpz_ptr)(&unaff_s4->_mp_alloc + unaff_s0);\n          p_Var11 = unaff_s6;\n          do {\n            p_Var11->_mp_alloc = iVar12;\n            ppmVar6 = ppmVar5 + 1;\n            iVar12 = (int)*ppmVar5;\n            ppmVar5 = ppmVar6;\n            p_Var11 = (mpz_ptr)&p_Var11->_mp_size;\n          } while (unaff_s4 != (mpz_ptr)ppmVar6);\n          unaff_s7 = unaff_s7 - 4;\n          unaff_s6 = (mpz_ptr)((int)unaff_s6 + unaff_s7);\n        }\n        unaff_s6->_mp_alloc = iVar12;\n      }\n      p_Var11 = *(mpz_ptr *)(puVar28 + -0x30);\n      if (p_Var11 != (mpz_ptr)0x0) {\n        (**(code **)(puVar26 + -0x7a2c))();\n        puVar26 = *(undefined **)(puVar28 + -0x38);\n        op->_mp_size = iVar17;\n        puVar30 = puVar31;\n        goto LAB_00034768;\n      }\n    }\n    else {\n      if (root->_mp_alloc < unaff_s0) {\n        p_Var11 = (mpz_ptr)(**(code **)(puVar26 + -0x7a84))(root,unaff_s0);\n        puVar26 = *(undefined **)(puVar28 + -0x38);\n      }\n      else {\n        p_Var11 = (mpz_ptr)root->_mp_d;\n      }\n      iVar17 = (**(code **)(puVar26 + -0x7f60))();\n      puVar26 = *(undefined **)(puVar28 + -0x38);\n      puVar31 = puVar28 + -0x48;\n    }\n    op->_mp_size = iVar17;\n    puVar30 = puVar31;\n  }" { (expression_statement "unaff_s4 = in_a2;" (assignment_expression "unaff_s4 = in_a2" identifier = identifier) ;) (if_statement "if (op->_mp_alloc < iVar17) {\nLAB_000347c8:\n      unaff_s5 = (mpz_ptr)(**(code **)(puVar24 + 0x66f1c))(op,iVar17);\n      puVar26 = *(undefined **)(puVar28 + -0x38);\n    }\n    else {\n      unaff_s5 = (mpz_ptr)op->_mp_d;\n    }" if (parenthesized_expression "(op->_mp_alloc < iVar17)" ( (binary_expression "op->_mp_alloc < iVar17" (field_expression "op->_mp_alloc" identifier -> field_identifier) < identifier) )) (compound_statement "{\nLAB_000347c8:\n      unaff_s5 = (mpz_ptr)(**(code **)(puVar24 + 0x66f1c))(op,iVar17);\n      puVar26 = *(undefined **)(puVar28 + -0x38);\n    }" { (labeled_statement "LAB_000347c8:\n      unaff_s5 = (mpz_ptr)(**(code **)(puVar24 + 0x66f1c))(op,iVar17);" statement_identifier : (expression_statement "unaff_s5 = (mpz_ptr)(**(code **)(puVar24 + 0x66f1c))(op,iVar17);" (assignment_expression "unaff_s5 = (mpz_ptr)(**(code **)(puVar24 + 0x66f1c))(op,iVar17)" identifier = (call_expression "(mpz_ptr)(**(code **)(puVar24 + 0x66f1c))(op,iVar17)" (call_expression "(mpz_ptr)(**(code **)(puVar24 + 0x66f1c))" (parenthesized_expression "(mpz_ptr)" ( identifier )) (argument_list "(**(code **)(puVar24 + 0x66f1c))" ( (pointer_expression "**(code **)(puVar24 + 0x66f1c)" * (pointer_expression "*(code **)(puVar24 + 0x66f1c)" * (cast_expression "(code **)(puVar24 + 0x66f1c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + 0x66f1c)" ( (binary_expression "puVar24 + 0x66f1c" identifier + number_literal) ))))) ))) (argument_list "(op,iVar17)" ( identifier , identifier )))) ;)) (expression_statement "puVar26 = *(undefined **)(puVar28 + -0x38);" (assignment_expression "puVar26 = *(undefined **)(puVar28 + -0x38)" identifier = (pointer_expression "*(undefined **)(puVar28 + -0x38)" * (cast_expression "(undefined **)(puVar28 + -0x38)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar28 + -0x38)" ( (binary_expression "puVar28 + -0x38" identifier + number_literal) ))))) ;) }) (else_clause "else {\n      unaff_s5 = (mpz_ptr)op->_mp_d;\n    }" else (compound_statement "{\n      unaff_s5 = (mpz_ptr)op->_mp_d;\n    }" { (expression_statement "unaff_s5 = (mpz_ptr)op->_mp_d;" (assignment_expression "unaff_s5 = (mpz_ptr)op->_mp_d" identifier = (cast_expression "(mpz_ptr)op->_mp_d" ( (type_descriptor "mpz_ptr" type_identifier) ) (field_expression "op->_mp_d" identifier -> field_identifier))) ;) }))) (expression_statement "unaff_s0 = (iVar17 + 1) / 2;" (assignment_expression "unaff_s0 = (iVar17 + 1) / 2" identifier = (binary_expression "(iVar17 + 1) / 2" (parenthesized_expression "(iVar17 + 1)" ( (binary_expression "iVar17 + 1" identifier + number_literal) )) / number_literal)) ;) (expression_statement "root->_mp_size = unaff_s0;" (assignment_expression "root->_mp_size = unaff_s0" (field_expression "root->_mp_size" identifier -> field_identifier) = identifier) ;) (expression_statement "unaff_s6 = (mpz_ptr)unaff_s4->_mp_d;" (assignment_expression "unaff_s6 = (mpz_ptr)unaff_s4->_mp_d" identifier = (cast_expression "(mpz_ptr)unaff_s4->_mp_d" ( (type_descriptor "mpz_ptr" type_identifier) ) (field_expression "unaff_s4->_mp_d" identifier -> field_identifier))) ;) (expression_statement "p_Var14 = unaff_s5;" (assignment_expression "p_Var14 = unaff_s5" identifier = identifier) ;) (expression_statement "in_a2 = unaff_s6;" (assignment_expression "in_a2 = unaff_s6" identifier = identifier) ;) (if_statement "if (unaff_s4 == root) {\n      unaff_s7 = unaff_s0 * 4;\n      *(undefined4 *)(puVar28 + -0x30) = 0;\n      if (unaff_s7 < 0x7f01) {\n        iVar12 = -(unaff_s7 + 7 & 0xfffffff8);\n        puVar31 = puVar28 + iVar12 + -0x48;\n        unaff_s4 = (mpz_ptr)(puVar28 + iVar12 + -0x38);\n      }\n      else {\n        unaff_s4 = (mpz_ptr)(**(code **)(puVar26 + -0x7d50))(puVar28 + -0x30,unaff_s7);\n        puVar26 = *(undefined **)(puVar28 + -0x38);\n      }\n      iVar17 = (**(code **)(puVar26 + -0x7f60))(unaff_s4,unaff_s5,unaff_s6,iVar17);\n      puVar26 = *(undefined **)(puVar28 + -0x38);\n      if (root != op) {\n        iVar12 = unaff_s4->_mp_alloc;\n        if (unaff_s0 != 1) {\n          ppmVar5 = (mp_limb_t **)&unaff_s4->_mp_size;\n          unaff_s4 = (mpz_ptr)(&unaff_s4->_mp_alloc + unaff_s0);\n          p_Var11 = unaff_s6;\n          do {\n            p_Var11->_mp_alloc = iVar12;\n            ppmVar6 = ppmVar5 + 1;\n            iVar12 = (int)*ppmVar5;\n            ppmVar5 = ppmVar6;\n            p_Var11 = (mpz_ptr)&p_Var11->_mp_size;\n          } while (unaff_s4 != (mpz_ptr)ppmVar6);\n          unaff_s7 = unaff_s7 - 4;\n          unaff_s6 = (mpz_ptr)((int)unaff_s6 + unaff_s7);\n        }\n        unaff_s6->_mp_alloc = iVar12;\n      }\n      p_Var11 = *(mpz_ptr *)(puVar28 + -0x30);\n      if (p_Var11 != (mpz_ptr)0x0) {\n        (**(code **)(puVar26 + -0x7a2c))();\n        puVar26 = *(undefined **)(puVar28 + -0x38);\n        op->_mp_size = iVar17;\n        puVar30 = puVar31;\n        goto LAB_00034768;\n      }\n    }\n    else {\n      if (root->_mp_alloc < unaff_s0) {\n        p_Var11 = (mpz_ptr)(**(code **)(puVar26 + -0x7a84))(root,unaff_s0);\n        puVar26 = *(undefined **)(puVar28 + -0x38);\n      }\n      else {\n        p_Var11 = (mpz_ptr)root->_mp_d;\n      }\n      iVar17 = (**(code **)(puVar26 + -0x7f60))();\n      puVar26 = *(undefined **)(puVar28 + -0x38);\n      puVar31 = puVar28 + -0x48;\n    }" if (parenthesized_expression "(unaff_s4 == root)" ( (binary_expression "unaff_s4 == root" identifier == identifier) )) (compound_statement "{\n      unaff_s7 = unaff_s0 * 4;\n      *(undefined4 *)(puVar28 + -0x30) = 0;\n      if (unaff_s7 < 0x7f01) {\n        iVar12 = -(unaff_s7 + 7 & 0xfffffff8);\n        puVar31 = puVar28 + iVar12 + -0x48;\n        unaff_s4 = (mpz_ptr)(puVar28 + iVar12 + -0x38);\n      }\n      else {\n        unaff_s4 = (mpz_ptr)(**(code **)(puVar26 + -0x7d50))(puVar28 + -0x30,unaff_s7);\n        puVar26 = *(undefined **)(puVar28 + -0x38);\n      }\n      iVar17 = (**(code **)(puVar26 + -0x7f60))(unaff_s4,unaff_s5,unaff_s6,iVar17);\n      puVar26 = *(undefined **)(puVar28 + -0x38);\n      if (root != op) {\n        iVar12 = unaff_s4->_mp_alloc;\n        if (unaff_s0 != 1) {\n          ppmVar5 = (mp_limb_t **)&unaff_s4->_mp_size;\n          unaff_s4 = (mpz_ptr)(&unaff_s4->_mp_alloc + unaff_s0);\n          p_Var11 = unaff_s6;\n          do {\n            p_Var11->_mp_alloc = iVar12;\n            ppmVar6 = ppmVar5 + 1;\n            iVar12 = (int)*ppmVar5;\n            ppmVar5 = ppmVar6;\n            p_Var11 = (mpz_ptr)&p_Var11->_mp_size;\n          } while (unaff_s4 != (mpz_ptr)ppmVar6);\n          unaff_s7 = unaff_s7 - 4;\n          unaff_s6 = (mpz_ptr)((int)unaff_s6 + unaff_s7);\n        }\n        unaff_s6->_mp_alloc = iVar12;\n      }\n      p_Var11 = *(mpz_ptr *)(puVar28 + -0x30);\n      if (p_Var11 != (mpz_ptr)0x0) {\n        (**(code **)(puVar26 + -0x7a2c))();\n        puVar26 = *(undefined **)(puVar28 + -0x38);\n        op->_mp_size = iVar17;\n        puVar30 = puVar31;\n        goto LAB_00034768;\n      }\n    }" { (expression_statement "unaff_s7 = unaff_s0 * 4;" (assignment_expression "unaff_s7 = unaff_s0 * 4" identifier = (binary_expression "unaff_s0 * 4" identifier * number_literal)) ;) (expression_statement "*(undefined4 *)(puVar28 + -0x30) = 0;" (assignment_expression "*(undefined4 *)(puVar28 + -0x30) = 0" (pointer_expression "*(undefined4 *)(puVar28 + -0x30)" * (cast_expression "(undefined4 *)(puVar28 + -0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar28 + -0x30)" ( (binary_expression "puVar28 + -0x30" identifier + number_literal) )))) = number_literal) ;) (if_statement "if (unaff_s7 < 0x7f01) {\n        iVar12 = -(unaff_s7 + 7 & 0xfffffff8);\n        puVar31 = puVar28 + iVar12 + -0x48;\n        unaff_s4 = (mpz_ptr)(puVar28 + iVar12 + -0x38);\n      }\n      else {\n        unaff_s4 = (mpz_ptr)(**(code **)(puVar26 + -0x7d50))(puVar28 + -0x30,unaff_s7);\n        puVar26 = *(undefined **)(puVar28 + -0x38);\n      }" if (parenthesized_expression "(unaff_s7 < 0x7f01)" ( (binary_expression "unaff_s7 < 0x7f01" identifier < number_literal) )) (compound_statement "{\n        iVar12 = -(unaff_s7 + 7 & 0xfffffff8);\n        puVar31 = puVar28 + iVar12 + -0x48;\n        unaff_s4 = (mpz_ptr)(puVar28 + iVar12 + -0x38);\n      }" { (expression_statement "iVar12 = -(unaff_s7 + 7 & 0xfffffff8);" (assignment_expression "iVar12 = -(unaff_s7 + 7 & 0xfffffff8)" identifier = (unary_expression "-(unaff_s7 + 7 & 0xfffffff8)" - (parenthesized_expression "(unaff_s7 + 7 & 0xfffffff8)" ( (binary_expression "unaff_s7 + 7 & 0xfffffff8" (binary_expression "unaff_s7 + 7" identifier + number_literal) & number_literal) )))) ;) (expression_statement "puVar31 = puVar28 + iVar12 + -0x48;" (assignment_expression "puVar31 = puVar28 + iVar12 + -0x48" identifier = (binary_expression "puVar28 + iVar12 + -0x48" (binary_expression "puVar28 + iVar12" identifier + identifier) + number_literal)) ;) (expression_statement "unaff_s4 = (mpz_ptr)(puVar28 + iVar12 + -0x38);" (assignment_expression "unaff_s4 = (mpz_ptr)(puVar28 + iVar12 + -0x38)" identifier = (call_expression "(mpz_ptr)(puVar28 + iVar12 + -0x38)" (parenthesized_expression "(mpz_ptr)" ( identifier )) (argument_list "(puVar28 + iVar12 + -0x38)" ( (binary_expression "puVar28 + iVar12 + -0x38" (binary_expression "puVar28 + iVar12" identifier + identifier) + number_literal) )))) ;) }) (else_clause "else {\n        unaff_s4 = (mpz_ptr)(**(code **)(puVar26 + -0x7d50))(puVar28 + -0x30,unaff_s7);\n        puVar26 = *(undefined **)(puVar28 + -0x38);\n      }" else (compound_statement "{\n        unaff_s4 = (mpz_ptr)(**(code **)(puVar26 + -0x7d50))(puVar28 + -0x30,unaff_s7);\n        puVar26 = *(undefined **)(puVar28 + -0x38);\n      }" { (expression_statement "unaff_s4 = (mpz_ptr)(**(code **)(puVar26 + -0x7d50))(puVar28 + -0x30,unaff_s7);" (assignment_expression "unaff_s4 = (mpz_ptr)(**(code **)(puVar26 + -0x7d50))(puVar28 + -0x30,unaff_s7)" identifier = (call_expression "(mpz_ptr)(**(code **)(puVar26 + -0x7d50))(puVar28 + -0x30,unaff_s7)" (call_expression "(mpz_ptr)(**(code **)(puVar26 + -0x7d50))" (parenthesized_expression "(mpz_ptr)" ( identifier )) (argument_list "(**(code **)(puVar26 + -0x7d50))" ( (pointer_expression "**(code **)(puVar26 + -0x7d50)" * (pointer_expression "*(code **)(puVar26 + -0x7d50)" * (cast_expression "(code **)(puVar26 + -0x7d50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar26 + -0x7d50)" ( (binary_expression "puVar26 + -0x7d50" identifier + number_literal) ))))) ))) (argument_list "(puVar28 + -0x30,unaff_s7)" ( (binary_expression "puVar28 + -0x30" identifier + number_literal) , identifier )))) ;) (expression_statement "puVar26 = *(undefined **)(puVar28 + -0x38);" (assignment_expression "puVar26 = *(undefined **)(puVar28 + -0x38)" identifier = (pointer_expression "*(undefined **)(puVar28 + -0x38)" * (cast_expression "(undefined **)(puVar28 + -0x38)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar28 + -0x38)" ( (binary_expression "puVar28 + -0x38" identifier + number_literal) ))))) ;) }))) (expression_statement "iVar17 = (**(code **)(puVar26 + -0x7f60))(unaff_s4,unaff_s5,unaff_s6,iVar17);" (assignment_expression "iVar17 = (**(code **)(puVar26 + -0x7f60))(unaff_s4,unaff_s5,unaff_s6,iVar17)" identifier = (call_expression "(**(code **)(puVar26 + -0x7f60))(unaff_s4,unaff_s5,unaff_s6,iVar17)" (parenthesized_expression "(**(code **)(puVar26 + -0x7f60))" ( (pointer_expression "**(code **)(puVar26 + -0x7f60)" * (pointer_expression "*(code **)(puVar26 + -0x7f60)" * (cast_expression "(code **)(puVar26 + -0x7f60)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar26 + -0x7f60)" ( (binary_expression "puVar26 + -0x7f60" identifier + number_literal) ))))) )) (argument_list "(unaff_s4,unaff_s5,unaff_s6,iVar17)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "puVar26 = *(undefined **)(puVar28 + -0x38);" (assignment_expression "puVar26 = *(undefined **)(puVar28 + -0x38)" identifier = (pointer_expression "*(undefined **)(puVar28 + -0x38)" * (cast_expression "(undefined **)(puVar28 + -0x38)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar28 + -0x38)" ( (binary_expression "puVar28 + -0x38" identifier + number_literal) ))))) ;) (if_statement "if (root != op) {\n        iVar12 = unaff_s4->_mp_alloc;\n        if (unaff_s0 != 1) {\n          ppmVar5 = (mp_limb_t **)&unaff_s4->_mp_size;\n          unaff_s4 = (mpz_ptr)(&unaff_s4->_mp_alloc + unaff_s0);\n          p_Var11 = unaff_s6;\n          do {\n            p_Var11->_mp_alloc = iVar12;\n            ppmVar6 = ppmVar5 + 1;\n            iVar12 = (int)*ppmVar5;\n            ppmVar5 = ppmVar6;\n            p_Var11 = (mpz_ptr)&p_Var11->_mp_size;\n          } while (unaff_s4 != (mpz_ptr)ppmVar6);\n          unaff_s7 = unaff_s7 - 4;\n          unaff_s6 = (mpz_ptr)((int)unaff_s6 + unaff_s7);\n        }\n        unaff_s6->_mp_alloc = iVar12;\n      }" if (parenthesized_expression "(root != op)" ( (binary_expression "root != op" identifier != identifier) )) (compound_statement "{\n        iVar12 = unaff_s4->_mp_alloc;\n        if (unaff_s0 != 1) {\n          ppmVar5 = (mp_limb_t **)&unaff_s4->_mp_size;\n          unaff_s4 = (mpz_ptr)(&unaff_s4->_mp_alloc + unaff_s0);\n          p_Var11 = unaff_s6;\n          do {\n            p_Var11->_mp_alloc = iVar12;\n            ppmVar6 = ppmVar5 + 1;\n            iVar12 = (int)*ppmVar5;\n            ppmVar5 = ppmVar6;\n            p_Var11 = (mpz_ptr)&p_Var11->_mp_size;\n          } while (unaff_s4 != (mpz_ptr)ppmVar6);\n          unaff_s7 = unaff_s7 - 4;\n          unaff_s6 = (mpz_ptr)((int)unaff_s6 + unaff_s7);\n        }\n        unaff_s6->_mp_alloc = iVar12;\n      }" { (expression_statement "iVar12 = unaff_s4->_mp_alloc;" (assignment_expression "iVar12 = unaff_s4->_mp_alloc" identifier = (field_expression "unaff_s4->_mp_alloc" identifier -> field_identifier)) ;) (if_statement "if (unaff_s0 != 1) {\n          ppmVar5 = (mp_limb_t **)&unaff_s4->_mp_size;\n          unaff_s4 = (mpz_ptr)(&unaff_s4->_mp_alloc + unaff_s0);\n          p_Var11 = unaff_s6;\n          do {\n            p_Var11->_mp_alloc = iVar12;\n            ppmVar6 = ppmVar5 + 1;\n            iVar12 = (int)*ppmVar5;\n            ppmVar5 = ppmVar6;\n            p_Var11 = (mpz_ptr)&p_Var11->_mp_size;\n          } while (unaff_s4 != (mpz_ptr)ppmVar6);\n          unaff_s7 = unaff_s7 - 4;\n          unaff_s6 = (mpz_ptr)((int)unaff_s6 + unaff_s7);\n        }" if (parenthesized_expression "(unaff_s0 != 1)" ( (binary_expression "unaff_s0 != 1" identifier != number_literal) )) (compound_statement "{\n          ppmVar5 = (mp_limb_t **)&unaff_s4->_mp_size;\n          unaff_s4 = (mpz_ptr)(&unaff_s4->_mp_alloc + unaff_s0);\n          p_Var11 = unaff_s6;\n          do {\n            p_Var11->_mp_alloc = iVar12;\n            ppmVar6 = ppmVar5 + 1;\n            iVar12 = (int)*ppmVar5;\n            ppmVar5 = ppmVar6;\n            p_Var11 = (mpz_ptr)&p_Var11->_mp_size;\n          } while (unaff_s4 != (mpz_ptr)ppmVar6);\n          unaff_s7 = unaff_s7 - 4;\n          unaff_s6 = (mpz_ptr)((int)unaff_s6 + unaff_s7);\n        }" { (expression_statement "ppmVar5 = (mp_limb_t **)&unaff_s4->_mp_size;" (assignment_expression "ppmVar5 = (mp_limb_t **)&unaff_s4->_mp_size" identifier = (cast_expression "(mp_limb_t **)&unaff_s4->_mp_size" ( (type_descriptor "mp_limb_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&unaff_s4->_mp_size" & (field_expression "unaff_s4->_mp_size" identifier -> field_identifier)))) ;) (expression_statement "unaff_s4 = (mpz_ptr)(&unaff_s4->_mp_alloc + unaff_s0);" (assignment_expression "unaff_s4 = (mpz_ptr)(&unaff_s4->_mp_alloc + unaff_s0)" identifier = (call_expression "(mpz_ptr)(&unaff_s4->_mp_alloc + unaff_s0)" (parenthesized_expression "(mpz_ptr)" ( identifier )) (argument_list "(&unaff_s4->_mp_alloc + unaff_s0)" ( (binary_expression "&unaff_s4->_mp_alloc + unaff_s0" (pointer_expression "&unaff_s4->_mp_alloc" & (field_expression "unaff_s4->_mp_alloc" identifier -> field_identifier)) + identifier) )))) ;) (expression_statement "p_Var11 = unaff_s6;" (assignment_expression "p_Var11 = unaff_s6" identifier = identifier) ;) (do_statement "do {\n            p_Var11->_mp_alloc = iVar12;\n            ppmVar6 = ppmVar5 + 1;\n            iVar12 = (int)*ppmVar5;\n            ppmVar5 = ppmVar6;\n            p_Var11 = (mpz_ptr)&p_Var11->_mp_size;\n          } while (unaff_s4 != (mpz_ptr)ppmVar6);" do (compound_statement "{\n            p_Var11->_mp_alloc = iVar12;\n            ppmVar6 = ppmVar5 + 1;\n            iVar12 = (int)*ppmVar5;\n            ppmVar5 = ppmVar6;\n            p_Var11 = (mpz_ptr)&p_Var11->_mp_size;\n          }" { (expression_statement "p_Var11->_mp_alloc = iVar12;" (assignment_expression "p_Var11->_mp_alloc = iVar12" (field_expression "p_Var11->_mp_alloc" identifier -> field_identifier) = identifier) ;) (expression_statement "ppmVar6 = ppmVar5 + 1;" (assignment_expression "ppmVar6 = ppmVar5 + 1" identifier = (binary_expression "ppmVar5 + 1" identifier + number_literal)) ;) (expression_statement "iVar12 = (int)*ppmVar5;" (assignment_expression "iVar12 = (int)*ppmVar5" identifier = (cast_expression "(int)*ppmVar5" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*ppmVar5" * identifier))) ;) (expression_statement "ppmVar5 = ppmVar6;" (assignment_expression "ppmVar5 = ppmVar6" identifier = identifier) ;) (expression_statement "p_Var11 = (mpz_ptr)&p_Var11->_mp_size;" (assignment_expression "p_Var11 = (mpz_ptr)&p_Var11->_mp_size" identifier = (binary_expression "(mpz_ptr)&p_Var11->_mp_size" (parenthesized_expression "(mpz_ptr)" ( identifier )) & (field_expression "p_Var11->_mp_size" identifier -> field_identifier))) ;) }) while (parenthesized_expression "(unaff_s4 != (mpz_ptr)ppmVar6)" ( (binary_expression "unaff_s4 != (mpz_ptr)ppmVar6" identifier != (cast_expression "(mpz_ptr)ppmVar6" ( (type_descriptor "mpz_ptr" type_identifier) ) identifier)) )) ;) (expression_statement "unaff_s7 = unaff_s7 - 4;" (assignment_expression "unaff_s7 = unaff_s7 - 4" identifier = (binary_expression "unaff_s7 - 4" identifier - number_literal)) ;) (expression_statement "unaff_s6 = (mpz_ptr)((int)unaff_s6 + unaff_s7);" (assignment_expression "unaff_s6 = (mpz_ptr)((int)unaff_s6 + unaff_s7)" identifier = (call_expression "(mpz_ptr)((int)unaff_s6 + unaff_s7)" (parenthesized_expression "(mpz_ptr)" ( identifier )) (argument_list "((int)unaff_s6 + unaff_s7)" ( (binary_expression "(int)unaff_s6 + unaff_s7" (cast_expression "(int)unaff_s6" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) })) (expression_statement "unaff_s6->_mp_alloc = iVar12;" (assignment_expression "unaff_s6->_mp_alloc = iVar12" (field_expression "unaff_s6->_mp_alloc" identifier -> field_identifier) = identifier) ;) })) (expression_statement "p_Var11 = *(mpz_ptr *)(puVar28 + -0x30);" (assignment_expression "p_Var11 = *(mpz_ptr *)(puVar28 + -0x30)" identifier = (pointer_expression "*(mpz_ptr *)(puVar28 + -0x30)" * (cast_expression "(mpz_ptr *)(puVar28 + -0x30)" ( (type_descriptor "mpz_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar28 + -0x30)" ( (binary_expression "puVar28 + -0x30" identifier + number_literal) ))))) ;) (if_statement "if (p_Var11 != (mpz_ptr)0x0) {\n        (**(code **)(puVar26 + -0x7a2c))();\n        puVar26 = *(undefined **)(puVar28 + -0x38);\n        op->_mp_size = iVar17;\n        puVar30 = puVar31;\n        goto LAB_00034768;\n      }" if (parenthesized_expression "(p_Var11 != (mpz_ptr)0x0)" ( (binary_expression "p_Var11 != (mpz_ptr)0x0" identifier != (cast_expression "(mpz_ptr)0x0" ( (type_descriptor "mpz_ptr" type_identifier) ) number_literal)) )) (compound_statement "{\n        (**(code **)(puVar26 + -0x7a2c))();\n        puVar26 = *(undefined **)(puVar28 + -0x38);\n        op->_mp_size = iVar17;\n        puVar30 = puVar31;\n        goto LAB_00034768;\n      }" { (expression_statement "(**(code **)(puVar26 + -0x7a2c))();" (call_expression "(**(code **)(puVar26 + -0x7a2c))()" (parenthesized_expression "(**(code **)(puVar26 + -0x7a2c))" ( (pointer_expression "**(code **)(puVar26 + -0x7a2c)" * (pointer_expression "*(code **)(puVar26 + -0x7a2c)" * (cast_expression "(code **)(puVar26 + -0x7a2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar26 + -0x7a2c)" ( (binary_expression "puVar26 + -0x7a2c" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "puVar26 = *(undefined **)(puVar28 + -0x38);" (assignment_expression "puVar26 = *(undefined **)(puVar28 + -0x38)" identifier = (pointer_expression "*(undefined **)(puVar28 + -0x38)" * (cast_expression "(undefined **)(puVar28 + -0x38)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar28 + -0x38)" ( (binary_expression "puVar28 + -0x38" identifier + number_literal) ))))) ;) (expression_statement "op->_mp_size = iVar17;" (assignment_expression "op->_mp_size = iVar17" (field_expression "op->_mp_size" identifier -> field_identifier) = identifier) ;) (expression_statement "puVar30 = puVar31;" (assignment_expression "puVar30 = puVar31" identifier = identifier) ;) (goto_statement "goto LAB_00034768;" goto statement_identifier ;) })) }) (else_clause "else {\n      if (root->_mp_alloc < unaff_s0) {\n        p_Var11 = (mpz_ptr)(**(code **)(puVar26 + -0x7a84))(root,unaff_s0);\n        puVar26 = *(undefined **)(puVar28 + -0x38);\n      }\n      else {\n        p_Var11 = (mpz_ptr)root->_mp_d;\n      }\n      iVar17 = (**(code **)(puVar26 + -0x7f60))();\n      puVar26 = *(undefined **)(puVar28 + -0x38);\n      puVar31 = puVar28 + -0x48;\n    }" else (compound_statement "{\n      if (root->_mp_alloc < unaff_s0) {\n        p_Var11 = (mpz_ptr)(**(code **)(puVar26 + -0x7a84))(root,unaff_s0);\n        puVar26 = *(undefined **)(puVar28 + -0x38);\n      }\n      else {\n        p_Var11 = (mpz_ptr)root->_mp_d;\n      }\n      iVar17 = (**(code **)(puVar26 + -0x7f60))();\n      puVar26 = *(undefined **)(puVar28 + -0x38);\n      puVar31 = puVar28 + -0x48;\n    }" { (if_statement "if (root->_mp_alloc < unaff_s0) {\n        p_Var11 = (mpz_ptr)(**(code **)(puVar26 + -0x7a84))(root,unaff_s0);\n        puVar26 = *(undefined **)(puVar28 + -0x38);\n      }\n      else {\n        p_Var11 = (mpz_ptr)root->_mp_d;\n      }" if (parenthesized_expression "(root->_mp_alloc < unaff_s0)" ( (binary_expression "root->_mp_alloc < unaff_s0" (field_expression "root->_mp_alloc" identifier -> field_identifier) < identifier) )) (compound_statement "{\n        p_Var11 = (mpz_ptr)(**(code **)(puVar26 + -0x7a84))(root,unaff_s0);\n        puVar26 = *(undefined **)(puVar28 + -0x38);\n      }" { (expression_statement "p_Var11 = (mpz_ptr)(**(code **)(puVar26 + -0x7a84))(root,unaff_s0);" (assignment_expression "p_Var11 = (mpz_ptr)(**(code **)(puVar26 + -0x7a84))(root,unaff_s0)" identifier = (call_expression "(mpz_ptr)(**(code **)(puVar26 + -0x7a84))(root,unaff_s0)" (call_expression "(mpz_ptr)(**(code **)(puVar26 + -0x7a84))" (parenthesized_expression "(mpz_ptr)" ( identifier )) (argument_list "(**(code **)(puVar26 + -0x7a84))" ( (pointer_expression "**(code **)(puVar26 + -0x7a84)" * (pointer_expression "*(code **)(puVar26 + -0x7a84)" * (cast_expression "(code **)(puVar26 + -0x7a84)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar26 + -0x7a84)" ( (binary_expression "puVar26 + -0x7a84" identifier + number_literal) ))))) ))) (argument_list "(root,unaff_s0)" ( identifier , identifier )))) ;) (expression_statement "puVar26 = *(undefined **)(puVar28 + -0x38);" (assignment_expression "puVar26 = *(undefined **)(puVar28 + -0x38)" identifier = (pointer_expression "*(undefined **)(puVar28 + -0x38)" * (cast_expression "(undefined **)(puVar28 + -0x38)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar28 + -0x38)" ( (binary_expression "puVar28 + -0x38" identifier + number_literal) ))))) ;) }) (else_clause "else {\n        p_Var11 = (mpz_ptr)root->_mp_d;\n      }" else (compound_statement "{\n        p_Var11 = (mpz_ptr)root->_mp_d;\n      }" { (expression_statement "p_Var11 = (mpz_ptr)root->_mp_d;" (assignment_expression "p_Var11 = (mpz_ptr)root->_mp_d" identifier = (cast_expression "(mpz_ptr)root->_mp_d" ( (type_descriptor "mpz_ptr" type_identifier) ) (field_expression "root->_mp_d" identifier -> field_identifier))) ;) }))) (expression_statement "iVar17 = (**(code **)(puVar26 + -0x7f60))();" (assignment_expression "iVar17 = (**(code **)(puVar26 + -0x7f60))()" identifier = (call_expression "(**(code **)(puVar26 + -0x7f60))()" (parenthesized_expression "(**(code **)(puVar26 + -0x7f60))" ( (pointer_expression "**(code **)(puVar26 + -0x7f60)" * (pointer_expression "*(code **)(puVar26 + -0x7f60)" * (cast_expression "(code **)(puVar26 + -0x7f60)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar26 + -0x7f60)" ( (binary_expression "puVar26 + -0x7f60" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;) (expression_statement "puVar26 = *(undefined **)(puVar28 + -0x38);" (assignment_expression "puVar26 = *(undefined **)(puVar28 + -0x38)" identifier = (pointer_expression "*(undefined **)(puVar28 + -0x38)" * (cast_expression "(undefined **)(puVar28 + -0x38)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar28 + -0x38)" ( (binary_expression "puVar28 + -0x38" identifier + number_literal) ))))) ;) (expression_statement "puVar31 = puVar28 + -0x48;" (assignment_expression "puVar31 = puVar28 + -0x48" identifier = (binary_expression "puVar28 + -0x48" identifier + number_literal)) ;) }))) (expression_statement "op->_mp_size = iVar17;" (assignment_expression "op->_mp_size = iVar17" (field_expression "op->_mp_size" identifier -> field_identifier) = identifier) ;) (expression_statement "puVar30 = puVar31;" (assignment_expression "puVar30 = puVar31" identifier = identifier) ;) }))) (labeled_statement "LAB_00034768:\n  if (*(int *)(puVar28 + -0x2c) == **(int **)(puVar26 + -0x7b00)) {\n    return;\n  }" statement_identifier : (if_statement "if (*(int *)(puVar28 + -0x2c) == **(int **)(puVar26 + -0x7b00)) {\n    return;\n  }" if (parenthesized_expression "(*(int *)(puVar28 + -0x2c) == **(int **)(puVar26 + -0x7b00))" ( (binary_expression "*(int *)(puVar28 + -0x2c) == **(int **)(puVar26 + -0x7b00)" (pointer_expression "*(int *)(puVar28 + -0x2c)" * (cast_expression "(int *)(puVar28 + -0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar28 + -0x2c)" ( (binary_expression "puVar28 + -0x2c" identifier + number_literal) )))) == (pointer_expression "**(int **)(puVar26 + -0x7b00)" * (pointer_expression "*(int **)(puVar26 + -0x7b00)" * (cast_expression "(int **)(puVar26 + -0x7b00)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar26 + -0x7b00)" ( (binary_expression "puVar26 + -0x7b00" identifier + number_literal) )))))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) }))) (expression_statement "pcVar25 = *(code **)(puVar26 + -0x7b70);" (assignment_expression "pcVar25 = *(code **)(puVar26 + -0x7b70)" identifier = (pointer_expression "*(code **)(puVar26 + -0x7b70)" * (cast_expression "(code **)(puVar26 + -0x7b70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar26 + -0x7b70)" ( (binary_expression "puVar26 + -0x7b70" identifier + number_literal) ))))) ;) (expression_statement "uVar32 = 0x348d4;" (assignment_expression "uVar32 = 0x348d4" identifier = number_literal) ;) (expression_statement "(*pcVar25)();" (call_expression "(*pcVar25)()" (parenthesized_expression "(*pcVar25)" ( (pointer_expression "*pcVar25" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar27 = pcVar25 + 0x6e760;" (assignment_expression "pcVar27 = pcVar25 + 0x6e760" identifier = (binary_expression "pcVar25 + 0x6e760" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar30 + -4) = uVar32;" (assignment_expression "*(undefined4 *)(puVar30 + -4) = uVar32" (pointer_expression "*(undefined4 *)(puVar30 + -4)" * (cast_expression "(undefined4 *)(puVar30 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -4)" ( (binary_expression "puVar30 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar30 + -8) = unaff_s7;" (assignment_expression "*(uint *)(puVar30 + -8) = unaff_s7" (pointer_expression "*(uint *)(puVar30 + -8)" * (cast_expression "(uint *)(puVar30 + -8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -8)" ( (binary_expression "puVar30 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mpz_ptr *)(puVar30 + -0xc) = unaff_s6;" (assignment_expression "*(mpz_ptr *)(puVar30 + -0xc) = unaff_s6" (pointer_expression "*(mpz_ptr *)(puVar30 + -0xc)" * (cast_expression "(mpz_ptr *)(puVar30 + -0xc)" ( (type_descriptor "mpz_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0xc)" ( (binary_expression "puVar30 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mpz_ptr *)(puVar30 + -0x10) = unaff_s5;" (assignment_expression "*(mpz_ptr *)(puVar30 + -0x10) = unaff_s5" (pointer_expression "*(mpz_ptr *)(puVar30 + -0x10)" * (cast_expression "(mpz_ptr *)(puVar30 + -0x10)" ( (type_descriptor "mpz_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x10)" ( (binary_expression "puVar30 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mpz_ptr *)(puVar30 + -0x14) = unaff_s4;" (assignment_expression "*(mpz_ptr *)(puVar30 + -0x14) = unaff_s4" (pointer_expression "*(mpz_ptr *)(puVar30 + -0x14)" * (cast_expression "(mpz_ptr *)(puVar30 + -0x14)" ( (type_descriptor "mpz_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x14)" ( (binary_expression "puVar30 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mpz_srcptr *)(puVar30 + -0x18) = op;" (assignment_expression "*(mpz_srcptr *)(puVar30 + -0x18) = op" (pointer_expression "*(mpz_srcptr *)(puVar30 + -0x18)" * (cast_expression "(mpz_srcptr *)(puVar30 + -0x18)" ( (type_descriptor "mpz_srcptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x18)" ( (binary_expression "puVar30 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mpz_ptr *)(puVar30 + -0x1c) = root;" (assignment_expression "*(mpz_ptr *)(puVar30 + -0x1c) = root" (pointer_expression "*(mpz_ptr *)(puVar30 + -0x1c)" * (cast_expression "(mpz_ptr *)(puVar30 + -0x1c)" ( (type_descriptor "mpz_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x1c)" ( (binary_expression "puVar30 + -0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar30 + -0x20) = iVar17;" (assignment_expression "*(int *)(puVar30 + -0x20) = iVar17" (pointer_expression "*(int *)(puVar30 + -0x20)" * (cast_expression "(int *)(puVar30 + -0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x20)" ( (binary_expression "puVar30 + -0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar30 + -0x24) = unaff_s0;" (assignment_expression "*(int *)(puVar30 + -0x24) = unaff_s0" (pointer_expression "*(int *)(puVar30 + -0x24)" * (cast_expression "(int *)(puVar30 + -0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x24)" ( (binary_expression "puVar30 + -0x24" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar30 + -0x30) = pcVar27;" (assignment_expression "*(code **)(puVar30 + -0x30) = pcVar27" (pointer_expression "*(code **)(puVar30 + -0x30)" * (cast_expression "(code **)(puVar30 + -0x30)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0x30)" ( (binary_expression "puVar30 + -0x30" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar19 = p_Var14->_mp_size;" (assignment_expression "uVar19 = p_Var14->_mp_size" identifier = (field_expression "p_Var14->_mp_size" identifier -> field_identifier)) ;) (expression_statement "uVar7 = in_a2->_mp_size;" (assignment_expression "uVar7 = in_a2->_mp_size" identifier = (field_expression "in_a2->_mp_size" identifier -> field_identifier)) ;) (expression_statement "uVar8 = -uVar7;" (assignment_expression "uVar8 = -uVar7" identifier = (unary_expression "-uVar7" - identifier)) ;) (expression_statement "uVar18 = uVar19;" (assignment_expression "uVar18 = uVar19" identifier = identifier) ;) (if_statement "if ((int)uVar19 < 0) {\n    uVar18 = -uVar19;\n  }" if (parenthesized_expression "((int)uVar19 < 0)" ( (binary_expression "(int)uVar19 < 0" (cast_expression "(int)uVar19" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    uVar18 = -uVar19;\n  }" { (expression_statement "uVar18 = -uVar19;" (assignment_expression "uVar18 = -uVar19" identifier = (unary_expression "-uVar19" - identifier)) ;) })) (if_statement "if ((int)uVar7 < 0) {\n    uVar7 = -uVar7;\n  }" if (parenthesized_expression "((int)uVar7 < 0)" ( (binary_expression "(int)uVar7 < 0" (cast_expression "(int)uVar7" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    uVar7 = -uVar7;\n  }" { (expression_statement "uVar7 = -uVar7;" (assignment_expression "uVar7 = -uVar7" identifier = (unary_expression "-uVar7" - identifier)) ;) })) (expression_statement "uVar16 = uVar7;" (assignment_expression "uVar16 = uVar7" identifier = identifier) ;) (expression_statement "uVar20 = uVar19;" (assignment_expression "uVar20 = uVar19" identifier = identifier) ;) (expression_statement "p_Var22 = p_Var14;" (assignment_expression "p_Var22 = p_Var14" identifier = identifier) ;) (if_statement "if ((int)uVar18 < (int)uVar7) {\n    uVar16 = uVar18;\n    uVar18 = uVar7;\n    uVar20 = uVar8;\n    p_Var22 = in_a2;\n    uVar8 = uVar19;\n    in_a2 = p_Var14;\n  }" if (parenthesized_expression "((int)uVar18 < (int)uVar7)" ( (binary_expression "(int)uVar18 < (int)uVar7" (cast_expression "(int)uVar18" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)uVar7" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    uVar16 = uVar18;\n    uVar18 = uVar7;\n    uVar20 = uVar8;\n    p_Var22 = in_a2;\n    uVar8 = uVar19;\n    in_a2 = p_Var14;\n  }" { (expression_statement "uVar16 = uVar18;" (assignment_expression "uVar16 = uVar18" identifier = identifier) ;) (expression_statement "uVar18 = uVar7;" (assignment_expression "uVar18 = uVar7" identifier = identifier) ;) (expression_statement "uVar20 = uVar8;" (assignment_expression "uVar20 = uVar8" identifier = identifier) ;) (expression_statement "p_Var22 = in_a2;" (assignment_expression "p_Var22 = in_a2" identifier = identifier) ;) (expression_statement "uVar8 = uVar19;" (assignment_expression "uVar8 = uVar19" identifier = identifier) ;) (expression_statement "in_a2 = p_Var14;" (assignment_expression "in_a2 = p_Var14" identifier = identifier) ;) })) (if_statement "if (p_Var11->_mp_alloc < (int)(uVar18 + 1)) {\n    pmVar21 = (mp_limb_t *)(**(code **)(pcVar25 + 0x66cdc))(p_Var11);\n    pcVar27 = *(code **)(puVar30 + -0x30);\n  }\n  else {\n    pmVar21 = p_Var11->_mp_d;\n  }" if (parenthesized_expression "(p_Var11->_mp_alloc < (int)(uVar18 + 1))" ( (binary_expression "p_Var11->_mp_alloc < (int)(uVar18 + 1)" (field_expression "p_Var11->_mp_alloc" identifier -> field_identifier) < (cast_expression "(int)(uVar18 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar18 + 1)" ( (binary_expression "uVar18 + 1" identifier + number_literal) )))) )) (compound_statement "{\n    pmVar21 = (mp_limb_t *)(**(code **)(pcVar25 + 0x66cdc))(p_Var11);\n    pcVar27 = *(code **)(puVar30 + -0x30);\n  }" { (expression_statement "pmVar21 = (mp_limb_t *)(**(code **)(pcVar25 + 0x66cdc))(p_Var11);" (assignment_expression "pmVar21 = (mp_limb_t *)(**(code **)(pcVar25 + 0x66cdc))(p_Var11)" identifier = (cast_expression "(mp_limb_t *)(**(code **)(pcVar25 + 0x66cdc))(p_Var11)" ( (type_descriptor "mp_limb_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(pcVar25 + 0x66cdc))(p_Var11)" (parenthesized_expression "(**(code **)(pcVar25 + 0x66cdc))" ( (pointer_expression "**(code **)(pcVar25 + 0x66cdc)" * (pointer_expression "*(code **)(pcVar25 + 0x66cdc)" * (cast_expression "(code **)(pcVar25 + 0x66cdc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar25 + 0x66cdc)" ( (binary_expression "pcVar25 + 0x66cdc" identifier + number_literal) ))))) )) (argument_list "(p_Var11)" ( identifier ))))) ;) (expression_statement "pcVar27 = *(code **)(puVar30 + -0x30);" (assignment_expression "pcVar27 = *(code **)(puVar30 + -0x30)" identifier = (pointer_expression "*(code **)(puVar30 + -0x30)" * (cast_expression "(code **)(puVar30 + -0x30)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0x30)" ( (binary_expression "puVar30 + -0x30" identifier + number_literal) ))))) ;) }) (else_clause "else {\n    pmVar21 = p_Var11->_mp_d;\n  }" else (compound_statement "{\n    pmVar21 = p_Var11->_mp_d;\n  }" { (expression_statement "pmVar21 = p_Var11->_mp_d;" (assignment_expression "pmVar21 = p_Var11->_mp_d" identifier = (field_expression "p_Var11->_mp_d" identifier -> field_identifier)) ;) }))) (expression_statement "pmVar23 = p_Var22->_mp_d;" (assignment_expression "pmVar23 = p_Var22->_mp_d" identifier = (field_expression "p_Var22->_mp_d" identifier -> field_identifier)) ;) (expression_statement "pmVar15 = in_a2->_mp_d;" (assignment_expression "pmVar15 = in_a2->_mp_d" identifier = (field_expression "in_a2->_mp_d" identifier -> field_identifier)) ;) (if_statement "if ((int)(uVar20 ^ uVar8) < 0) {\n    if (uVar18 == uVar16) {\n      pmVar13 = pmVar23 + uVar18;\n      pmVar9 = pmVar15 + uVar18;\n      uVar8 = uVar18;\n      do {\n        uVar8 = uVar8 - 1;\n        if (uVar8 == 0xffffffff) goto LAB_00034bf8;\n        pmVar1 = pmVar13 + -1;\n        pmVar2 = pmVar9 + -1;\n        pmVar13 = pmVar13 + -1;\n        pmVar9 = pmVar9 + -1;\n      } while (*pmVar1 == *pmVar2);\n      if (*pmVar2 < *pmVar1) {\nLAB_00034bf8:\n        (**(code **)(pcVar27 + -0x7b2c))(pmVar21,pmVar23,pmVar15,uVar18);\n        if ((0 < (int)uVar18) && (pmVar21[uVar18 - 1] == 0)) {\n          pmVar21 = pmVar21 + uVar18;\n          do {\n            uVar18 = uVar18 - 1;\n            if (uVar18 == 0) break;\n            pmVar15 = pmVar21 + -2;\n            pmVar21 = pmVar21 + -1;\n          } while (*pmVar15 == 0);\n        }\n        if ((int)uVar20 < 0) {\n          uVar18 = -uVar18;\n        }\n      }\n      else {\n        (**(code **)(pcVar27 + -0x7b2c))(pmVar21,pmVar15,pmVar23);\n        if ((0 < (int)uVar18) && (pmVar21[uVar18 - 1] == 0)) {\n          pmVar21 = pmVar21 + uVar18;\n          do {\n            uVar18 = uVar18 - 1;\n            if (uVar18 == 0) break;\n            pmVar15 = pmVar21 + -2;\n            pmVar21 = pmVar21 + -1;\n          } while (*pmVar15 == 0);\n        }\n        if (-1 < (int)uVar20) {\n          uVar18 = -uVar18;\n        }\n      }\n      goto LAB_000349e8;\n    }\n    if (uVar16 == 0) {\nLAB_00034a50:\n      if ((pmVar21 != pmVar23) && ((int)uVar16 < (int)uVar18)) {\n        pmVar15 = pmVar23 + uVar16;\n        pmVar9 = pmVar21 + uVar16;\n        do {\n          *pmVar9 = *pmVar15;\n          pmVar15 = pmVar15 + 1;\n          pmVar9 = pmVar9 + 1;\n        } while (pmVar15 != pmVar23 + uVar18);\n      }\n    }\n    else {\n      iVar17 = (**(code **)(pcVar27 + -0x7b2c))(pmVar21,pmVar23,pmVar15,uVar16);\n      if (iVar17 == 0) goto LAB_00034a50;\n      if ((int)uVar16 < (int)uVar18) {\n        pmVar15 = pmVar23 + uVar16;\n        mVar10 = *pmVar15;\n        pmVar9 = pmVar21 + uVar16;\n        *pmVar9 = mVar10 - 1;\n        while (uVar16 = uVar16 + 1, mVar10 == 0) {\n          if (uVar18 == uVar16) goto LAB_00034a84;\n          mVar10 = pmVar15[1];\n          pmVar9[1] = mVar10 - 1;\n          pmVar15 = pmVar15 + 1;\n          pmVar9 = pmVar9 + 1;\n        }\n        goto LAB_00034a50;\n      }\n    }\nLAB_00034a84:\n    if ((0 < (int)uVar18) && (pmVar21[uVar18 + 0x3fffffff] == 0)) {\n      pmVar21 = pmVar21 + uVar18 + 0x40000000;\n      do {\n        uVar18 = uVar18 - 1;\n        if (uVar18 == 0) break;\n        pmVar15 = pmVar21 + -2;\n        pmVar21 = pmVar21 + -1;\n      } while (*pmVar15 == 0);\n    }\n    if ((int)uVar20 < 0) {\n      uVar18 = -uVar18;\n    }\n    goto LAB_000349e8;\n  }" if (parenthesized_expression "((int)(uVar20 ^ uVar8) < 0)" ( (binary_expression "(int)(uVar20 ^ uVar8) < 0" (cast_expression "(int)(uVar20 ^ uVar8)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar20 ^ uVar8)" ( (binary_expression "uVar20 ^ uVar8" identifier ^ identifier) ))) < number_literal) )) (compound_statement "{\n    if (uVar18 == uVar16) {\n      pmVar13 = pmVar23 + uVar18;\n      pmVar9 = pmVar15 + uVar18;\n      uVar8 = uVar18;\n      do {\n        uVar8 = uVar8 - 1;\n        if (uVar8 == 0xffffffff) goto LAB_00034bf8;\n        pmVar1 = pmVar13 + -1;\n        pmVar2 = pmVar9 + -1;\n        pmVar13 = pmVar13 + -1;\n        pmVar9 = pmVar9 + -1;\n      } while (*pmVar1 == *pmVar2);\n      if (*pmVar2 < *pmVar1) {\nLAB_00034bf8:\n        (**(code **)(pcVar27 + -0x7b2c))(pmVar21,pmVar23,pmVar15,uVar18);\n        if ((0 < (int)uVar18) && (pmVar21[uVar18 - 1] == 0)) {\n          pmVar21 = pmVar21 + uVar18;\n          do {\n            uVar18 = uVar18 - 1;\n            if (uVar18 == 0) break;\n            pmVar15 = pmVar21 + -2;\n            pmVar21 = pmVar21 + -1;\n          } while (*pmVar15 == 0);\n        }\n        if ((int)uVar20 < 0) {\n          uVar18 = -uVar18;\n        }\n      }\n      else {\n        (**(code **)(pcVar27 + -0x7b2c))(pmVar21,pmVar15,pmVar23);\n        if ((0 < (int)uVar18) && (pmVar21[uVar18 - 1] == 0)) {\n          pmVar21 = pmVar21 + uVar18;\n          do {\n            uVar18 = uVar18 - 1;\n            if (uVar18 == 0) break;\n            pmVar15 = pmVar21 + -2;\n            pmVar21 = pmVar21 + -1;\n          } while (*pmVar15 == 0);\n        }\n        if (-1 < (int)uVar20) {\n          uVar18 = -uVar18;\n        }\n      }\n      goto LAB_000349e8;\n    }\n    if (uVar16 == 0) {\nLAB_00034a50:\n      if ((pmVar21 != pmVar23) && ((int)uVar16 < (int)uVar18)) {\n        pmVar15 = pmVar23 + uVar16;\n        pmVar9 = pmVar21 + uVar16;\n        do {\n          *pmVar9 = *pmVar15;\n          pmVar15 = pmVar15 + 1;\n          pmVar9 = pmVar9 + 1;\n        } while (pmVar15 != pmVar23 + uVar18);\n      }\n    }\n    else {\n      iVar17 = (**(code **)(pcVar27 + -0x7b2c))(pmVar21,pmVar23,pmVar15,uVar16);\n      if (iVar17 == 0) goto LAB_00034a50;\n      if ((int)uVar16 < (int)uVar18) {\n        pmVar15 = pmVar23 + uVar16;\n        mVar10 = *pmVar15;\n        pmVar9 = pmVar21 + uVar16;\n        *pmVar9 = mVar10 - 1;\n        while (uVar16 = uVar16 + 1, mVar10 == 0) {\n          if (uVar18 == uVar16) goto LAB_00034a84;\n          mVar10 = pmVar15[1];\n          pmVar9[1] = mVar10 - 1;\n          pmVar15 = pmVar15 + 1;\n          pmVar9 = pmVar9 + 1;\n        }\n        goto LAB_00034a50;\n      }\n    }\nLAB_00034a84:\n    if ((0 < (int)uVar18) && (pmVar21[uVar18 + 0x3fffffff] == 0)) {\n      pmVar21 = pmVar21 + uVar18 + 0x40000000;\n      do {\n        uVar18 = uVar18 - 1;\n        if (uVar18 == 0) break;\n        pmVar15 = pmVar21 + -2;\n        pmVar21 = pmVar21 + -1;\n      } while (*pmVar15 == 0);\n    }\n    if ((int)uVar20 < 0) {\n      uVar18 = -uVar18;\n    }\n    goto LAB_000349e8;\n  }" { (if_statement "if (uVar18 == uVar16) {\n      pmVar13 = pmVar23 + uVar18;\n      pmVar9 = pmVar15 + uVar18;\n      uVar8 = uVar18;\n      do {\n        uVar8 = uVar8 - 1;\n        if (uVar8 == 0xffffffff) goto LAB_00034bf8;\n        pmVar1 = pmVar13 + -1;\n        pmVar2 = pmVar9 + -1;\n        pmVar13 = pmVar13 + -1;\n        pmVar9 = pmVar9 + -1;\n      } while (*pmVar1 == *pmVar2);\n      if (*pmVar2 < *pmVar1) {\nLAB_00034bf8:\n        (**(code **)(pcVar27 + -0x7b2c))(pmVar21,pmVar23,pmVar15,uVar18);\n        if ((0 < (int)uVar18) && (pmVar21[uVar18 - 1] == 0)) {\n          pmVar21 = pmVar21 + uVar18;\n          do {\n            uVar18 = uVar18 - 1;\n            if (uVar18 == 0) break;\n            pmVar15 = pmVar21 + -2;\n            pmVar21 = pmVar21 + -1;\n          } while (*pmVar15 == 0);\n        }\n        if ((int)uVar20 < 0) {\n          uVar18 = -uVar18;\n        }\n      }\n      else {\n        (**(code **)(pcVar27 + -0x7b2c))(pmVar21,pmVar15,pmVar23);\n        if ((0 < (int)uVar18) && (pmVar21[uVar18 - 1] == 0)) {\n          pmVar21 = pmVar21 + uVar18;\n          do {\n            uVar18 = uVar18 - 1;\n            if (uVar18 == 0) break;\n            pmVar15 = pmVar21 + -2;\n            pmVar21 = pmVar21 + -1;\n          } while (*pmVar15 == 0);\n        }\n        if (-1 < (int)uVar20) {\n          uVar18 = -uVar18;\n        }\n      }\n      goto LAB_000349e8;\n    }" if (parenthesized_expression "(uVar18 == uVar16)" ( (binary_expression "uVar18 == uVar16" identifier == identifier) )) (compound_statement "{\n      pmVar13 = pmVar23 + uVar18;\n      pmVar9 = pmVar15 + uVar18;\n      uVar8 = uVar18;\n      do {\n        uVar8 = uVar8 - 1;\n        if (uVar8 == 0xffffffff) goto LAB_00034bf8;\n        pmVar1 = pmVar13 + -1;\n        pmVar2 = pmVar9 + -1;\n        pmVar13 = pmVar13 + -1;\n        pmVar9 = pmVar9 + -1;\n      } while (*pmVar1 == *pmVar2);\n      if (*pmVar2 < *pmVar1) {\nLAB_00034bf8:\n        (**(code **)(pcVar27 + -0x7b2c))(pmVar21,pmVar23,pmVar15,uVar18);\n        if ((0 < (int)uVar18) && (pmVar21[uVar18 - 1] == 0)) {\n          pmVar21 = pmVar21 + uVar18;\n          do {\n            uVar18 = uVar18 - 1;\n            if (uVar18 == 0) break;\n            pmVar15 = pmVar21 + -2;\n            pmVar21 = pmVar21 + -1;\n          } while (*pmVar15 == 0);\n        }\n        if ((int)uVar20 < 0) {\n          uVar18 = -uVar18;\n        }\n      }\n      else {\n        (**(code **)(pcVar27 + -0x7b2c))(pmVar21,pmVar15,pmVar23);\n        if ((0 < (int)uVar18) && (pmVar21[uVar18 - 1] == 0)) {\n          pmVar21 = pmVar21 + uVar18;\n          do {\n            uVar18 = uVar18 - 1;\n            if (uVar18 == 0) break;\n            pmVar15 = pmVar21 + -2;\n            pmVar21 = pmVar21 + -1;\n          } while (*pmVar15 == 0);\n        }\n        if (-1 < (int)uVar20) {\n          uVar18 = -uVar18;\n        }\n      }\n      goto LAB_000349e8;\n    }" { (expression_statement "pmVar13 = pmVar23 + uVar18;" (assignment_expression "pmVar13 = pmVar23 + uVar18" identifier = (binary_expression "pmVar23 + uVar18" identifier + identifier)) ;) (expression_statement "pmVar9 = pmVar15 + uVar18;" (assignment_expression "pmVar9 = pmVar15 + uVar18" identifier = (binary_expression "pmVar15 + uVar18" identifier + identifier)) ;) (expression_statement "uVar8 = uVar18;" (assignment_expression "uVar8 = uVar18" identifier = identifier) ;) (do_statement "do {\n        uVar8 = uVar8 - 1;\n        if (uVar8 == 0xffffffff) goto LAB_00034bf8;\n        pmVar1 = pmVar13 + -1;\n        pmVar2 = pmVar9 + -1;\n        pmVar13 = pmVar13 + -1;\n        pmVar9 = pmVar9 + -1;\n      } while (*pmVar1 == *pmVar2);" do (compound_statement "{\n        uVar8 = uVar8 - 1;\n        if (uVar8 == 0xffffffff) goto LAB_00034bf8;\n        pmVar1 = pmVar13 + -1;\n        pmVar2 = pmVar9 + -1;\n        pmVar13 = pmVar13 + -1;\n        pmVar9 = pmVar9 + -1;\n      }" { (expression_statement "uVar8 = uVar8 - 1;" (assignment_expression "uVar8 = uVar8 - 1" identifier = (binary_expression "uVar8 - 1" identifier - number_literal)) ;) (if_statement "if (uVar8 == 0xffffffff) goto LAB_00034bf8;" if (parenthesized_expression "(uVar8 == 0xffffffff)" ( (binary_expression "uVar8 == 0xffffffff" identifier == number_literal) )) (goto_statement "goto LAB_00034bf8;" goto statement_identifier ;)) (expression_statement "pmVar1 = pmVar13 + -1;" (assignment_expression "pmVar1 = pmVar13 + -1" identifier = (binary_expression "pmVar13 + -1" identifier + number_literal)) ;) (expression_statement "pmVar2 = pmVar9 + -1;" (assignment_expression "pmVar2 = pmVar9 + -1" identifier = (binary_expression "pmVar9 + -1" identifier + number_literal)) ;) (expression_statement "pmVar13 = pmVar13 + -1;" (assignment_expression "pmVar13 = pmVar13 + -1" identifier = (binary_expression "pmVar13 + -1" identifier + number_literal)) ;) (expression_statement "pmVar9 = pmVar9 + -1;" (assignment_expression "pmVar9 = pmVar9 + -1" identifier = (binary_expression "pmVar9 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(*pmVar1 == *pmVar2)" ( (binary_expression "*pmVar1 == *pmVar2" (pointer_expression "*pmVar1" * identifier) == (pointer_expression "*pmVar2" * identifier)) )) ;) (if_statement "if (*pmVar2 < *pmVar1) {\nLAB_00034bf8:\n        (**(code **)(pcVar27 + -0x7b2c))(pmVar21,pmVar23,pmVar15,uVar18);\n        if ((0 < (int)uVar18) && (pmVar21[uVar18 - 1] == 0)) {\n          pmVar21 = pmVar21 + uVar18;\n          do {\n            uVar18 = uVar18 - 1;\n            if (uVar18 == 0) break;\n            pmVar15 = pmVar21 + -2;\n            pmVar21 = pmVar21 + -1;\n          } while (*pmVar15 == 0);\n        }\n        if ((int)uVar20 < 0) {\n          uVar18 = -uVar18;\n        }\n      }\n      else {\n        (**(code **)(pcVar27 + -0x7b2c))(pmVar21,pmVar15,pmVar23);\n        if ((0 < (int)uVar18) && (pmVar21[uVar18 - 1] == 0)) {\n          pmVar21 = pmVar21 + uVar18;\n          do {\n            uVar18 = uVar18 - 1;\n            if (uVar18 == 0) break;\n            pmVar15 = pmVar21 + -2;\n            pmVar21 = pmVar21 + -1;\n          } while (*pmVar15 == 0);\n        }\n        if (-1 < (int)uVar20) {\n          uVar18 = -uVar18;\n        }\n      }" if (parenthesized_expression "(*pmVar2 < *pmVar1)" ( (binary_expression "*pmVar2 < *pmVar1" (pointer_expression "*pmVar2" * identifier) < (pointer_expression "*pmVar1" * identifier)) )) (compound_statement "{\nLAB_00034bf8:\n        (**(code **)(pcVar27 + -0x7b2c))(pmVar21,pmVar23,pmVar15,uVar18);\n        if ((0 < (int)uVar18) && (pmVar21[uVar18 - 1] == 0)) {\n          pmVar21 = pmVar21 + uVar18;\n          do {\n            uVar18 = uVar18 - 1;\n            if (uVar18 == 0) break;\n            pmVar15 = pmVar21 + -2;\n            pmVar21 = pmVar21 + -1;\n          } while (*pmVar15 == 0);\n        }\n        if ((int)uVar20 < 0) {\n          uVar18 = -uVar18;\n        }\n      }" { (labeled_statement "LAB_00034bf8:\n        (**(code **)(pcVar27 + -0x7b2c))(pmVar21,pmVar23,pmVar15,uVar18);" statement_identifier : (expression_statement "(**(code **)(pcVar27 + -0x7b2c))(pmVar21,pmVar23,pmVar15,uVar18);" (call_expression "(**(code **)(pcVar27 + -0x7b2c))(pmVar21,pmVar23,pmVar15,uVar18)" (parenthesized_expression "(**(code **)(pcVar27 + -0x7b2c))" ( (pointer_expression "**(code **)(pcVar27 + -0x7b2c)" * (pointer_expression "*(code **)(pcVar27 + -0x7b2c)" * (cast_expression "(code **)(pcVar27 + -0x7b2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar27 + -0x7b2c)" ( (binary_expression "pcVar27 + -0x7b2c" identifier + number_literal) ))))) )) (argument_list "(pmVar21,pmVar23,pmVar15,uVar18)" ( identifier , identifier , identifier , identifier ))) ;)) (if_statement "if ((0 < (int)uVar18) && (pmVar21[uVar18 - 1] == 0)) {\n          pmVar21 = pmVar21 + uVar18;\n          do {\n            uVar18 = uVar18 - 1;\n            if (uVar18 == 0) break;\n            pmVar15 = pmVar21 + -2;\n            pmVar21 = pmVar21 + -1;\n          } while (*pmVar15 == 0);\n        }" if (parenthesized_expression "((0 < (int)uVar18) && (pmVar21[uVar18 - 1] == 0))" ( (binary_expression "(0 < (int)uVar18) && (pmVar21[uVar18 - 1] == 0)" (parenthesized_expression "(0 < (int)uVar18)" ( (binary_expression "0 < (int)uVar18" number_literal < (cast_expression "(int)uVar18" ( (type_descriptor "int" primitive_type) ) identifier)) )) && (parenthesized_expression "(pmVar21[uVar18 - 1] == 0)" ( (binary_expression "pmVar21[uVar18 - 1] == 0" (subscript_expression "pmVar21[uVar18 - 1]" identifier [ (binary_expression "uVar18 - 1" identifier - number_literal) ]) == number_literal) ))) )) (compound_statement "{\n          pmVar21 = pmVar21 + uVar18;\n          do {\n            uVar18 = uVar18 - 1;\n            if (uVar18 == 0) break;\n            pmVar15 = pmVar21 + -2;\n            pmVar21 = pmVar21 + -1;\n          } while (*pmVar15 == 0);\n        }" { (expression_statement "pmVar21 = pmVar21 + uVar18;" (assignment_expression "pmVar21 = pmVar21 + uVar18" identifier = (binary_expression "pmVar21 + uVar18" identifier + identifier)) ;) (do_statement "do {\n            uVar18 = uVar18 - 1;\n            if (uVar18 == 0) break;\n            pmVar15 = pmVar21 + -2;\n            pmVar21 = pmVar21 + -1;\n          } while (*pmVar15 == 0);" do (compound_statement "{\n            uVar18 = uVar18 - 1;\n            if (uVar18 == 0) break;\n            pmVar15 = pmVar21 + -2;\n            pmVar21 = pmVar21 + -1;\n          }" { (expression_statement "uVar18 = uVar18 - 1;" (assignment_expression "uVar18 = uVar18 - 1" identifier = (binary_expression "uVar18 - 1" identifier - number_literal)) ;) (if_statement "if (uVar18 == 0) break;" if (parenthesized_expression "(uVar18 == 0)" ( (binary_expression "uVar18 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "pmVar15 = pmVar21 + -2;" (assignment_expression "pmVar15 = pmVar21 + -2" identifier = (binary_expression "pmVar21 + -2" identifier + number_literal)) ;) (expression_statement "pmVar21 = pmVar21 + -1;" (assignment_expression "pmVar21 = pmVar21 + -1" identifier = (binary_expression "pmVar21 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(*pmVar15 == 0)" ( (binary_expression "*pmVar15 == 0" (pointer_expression "*pmVar15" * identifier) == number_literal) )) ;) })) (if_statement "if ((int)uVar20 < 0) {\n          uVar18 = -uVar18;\n        }" if (parenthesized_expression "((int)uVar20 < 0)" ( (binary_expression "(int)uVar20 < 0" (cast_expression "(int)uVar20" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n          uVar18 = -uVar18;\n        }" { (expression_statement "uVar18 = -uVar18;" (assignment_expression "uVar18 = -uVar18" identifier = (unary_expression "-uVar18" - identifier)) ;) })) }) (else_clause "else {\n        (**(code **)(pcVar27 + -0x7b2c))(pmVar21,pmVar15,pmVar23);\n        if ((0 < (int)uVar18) && (pmVar21[uVar18 - 1] == 0)) {\n          pmVar21 = pmVar21 + uVar18;\n          do {\n            uVar18 = uVar18 - 1;\n            if (uVar18 == 0) break;\n            pmVar15 = pmVar21 + -2;\n            pmVar21 = pmVar21 + -1;\n          } while (*pmVar15 == 0);\n        }\n        if (-1 < (int)uVar20) {\n          uVar18 = -uVar18;\n        }\n      }" else (compound_statement "{\n        (**(code **)(pcVar27 + -0x7b2c))(pmVar21,pmVar15,pmVar23);\n        if ((0 < (int)uVar18) && (pmVar21[uVar18 - 1] == 0)) {\n          pmVar21 = pmVar21 + uVar18;\n          do {\n            uVar18 = uVar18 - 1;\n            if (uVar18 == 0) break;\n            pmVar15 = pmVar21 + -2;\n            pmVar21 = pmVar21 + -1;\n          } while (*pmVar15 == 0);\n        }\n        if (-1 < (int)uVar20) {\n          uVar18 = -uVar18;\n        }\n      }" { (expression_statement "(**(code **)(pcVar27 + -0x7b2c))(pmVar21,pmVar15,pmVar23);" (call_expression "(**(code **)(pcVar27 + -0x7b2c))(pmVar21,pmVar15,pmVar23)" (parenthesized_expression "(**(code **)(pcVar27 + -0x7b2c))" ( (pointer_expression "**(code **)(pcVar27 + -0x7b2c)" * (pointer_expression "*(code **)(pcVar27 + -0x7b2c)" * (cast_expression "(code **)(pcVar27 + -0x7b2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar27 + -0x7b2c)" ( (binary_expression "pcVar27 + -0x7b2c" identifier + number_literal) ))))) )) (argument_list "(pmVar21,pmVar15,pmVar23)" ( identifier , identifier , identifier ))) ;) (if_statement "if ((0 < (int)uVar18) && (pmVar21[uVar18 - 1] == 0)) {\n          pmVar21 = pmVar21 + uVar18;\n          do {\n            uVar18 = uVar18 - 1;\n            if (uVar18 == 0) break;\n            pmVar15 = pmVar21 + -2;\n            pmVar21 = pmVar21 + -1;\n          } while (*pmVar15 == 0);\n        }" if (parenthesized_expression "((0 < (int)uVar18) && (pmVar21[uVar18 - 1] == 0))" ( (binary_expression "(0 < (int)uVar18) && (pmVar21[uVar18 - 1] == 0)" (parenthesized_expression "(0 < (int)uVar18)" ( (binary_expression "0 < (int)uVar18" number_literal < (cast_expression "(int)uVar18" ( (type_descriptor "int" primitive_type) ) identifier)) )) && (parenthesized_expression "(pmVar21[uVar18 - 1] == 0)" ( (binary_expression "pmVar21[uVar18 - 1] == 0" (subscript_expression "pmVar21[uVar18 - 1]" identifier [ (binary_expression "uVar18 - 1" identifier - number_literal) ]) == number_literal) ))) )) (compound_statement "{\n          pmVar21 = pmVar21 + uVar18;\n          do {\n            uVar18 = uVar18 - 1;\n            if (uVar18 == 0) break;\n            pmVar15 = pmVar21 + -2;\n            pmVar21 = pmVar21 + -1;\n          } while (*pmVar15 == 0);\n        }" { (expression_statement "pmVar21 = pmVar21 + uVar18;" (assignment_expression "pmVar21 = pmVar21 + uVar18" identifier = (binary_expression "pmVar21 + uVar18" identifier + identifier)) ;) (do_statement "do {\n            uVar18 = uVar18 - 1;\n            if (uVar18 == 0) break;\n            pmVar15 = pmVar21 + -2;\n            pmVar21 = pmVar21 + -1;\n          } while (*pmVar15 == 0);" do (compound_statement "{\n            uVar18 = uVar18 - 1;\n            if (uVar18 == 0) break;\n            pmVar15 = pmVar21 + -2;\n            pmVar21 = pmVar21 + -1;\n          }" { (expression_statement "uVar18 = uVar18 - 1;" (assignment_expression "uVar18 = uVar18 - 1" identifier = (binary_expression "uVar18 - 1" identifier - number_literal)) ;) (if_statement "if (uVar18 == 0) break;" if (parenthesized_expression "(uVar18 == 0)" ( (binary_expression "uVar18 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "pmVar15 = pmVar21 + -2;" (assignment_expression "pmVar15 = pmVar21 + -2" identifier = (binary_expression "pmVar21 + -2" identifier + number_literal)) ;) (expression_statement "pmVar21 = pmVar21 + -1;" (assignment_expression "pmVar21 = pmVar21 + -1" identifier = (binary_expression "pmVar21 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(*pmVar15 == 0)" ( (binary_expression "*pmVar15 == 0" (pointer_expression "*pmVar15" * identifier) == number_literal) )) ;) })) (if_statement "if (-1 < (int)uVar20) {\n          uVar18 = -uVar18;\n        }" if (parenthesized_expression "(-1 < (int)uVar20)" ( (binary_expression "-1 < (int)uVar20" number_literal < (cast_expression "(int)uVar20" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          uVar18 = -uVar18;\n        }" { (expression_statement "uVar18 = -uVar18;" (assignment_expression "uVar18 = -uVar18" identifier = (unary_expression "-uVar18" - identifier)) ;) })) }))) (goto_statement "goto LAB_000349e8;" goto statement_identifier ;) })) (if_statement "if (uVar16 == 0) {\nLAB_00034a50:\n      if ((pmVar21 != pmVar23) && ((int)uVar16 < (int)uVar18)) {\n        pmVar15 = pmVar23 + uVar16;\n        pmVar9 = pmVar21 + uVar16;\n        do {\n          *pmVar9 = *pmVar15;\n          pmVar15 = pmVar15 + 1;\n          pmVar9 = pmVar9 + 1;\n        } while (pmVar15 != pmVar23 + uVar18);\n      }\n    }\n    else {\n      iVar17 = (**(code **)(pcVar27 + -0x7b2c))(pmVar21,pmVar23,pmVar15,uVar16);\n      if (iVar17 == 0) goto LAB_00034a50;\n      if ((int)uVar16 < (int)uVar18) {\n        pmVar15 = pmVar23 + uVar16;\n        mVar10 = *pmVar15;\n        pmVar9 = pmVar21 + uVar16;\n        *pmVar9 = mVar10 - 1;\n        while (uVar16 = uVar16 + 1, mVar10 == 0) {\n          if (uVar18 == uVar16) goto LAB_00034a84;\n          mVar10 = pmVar15[1];\n          pmVar9[1] = mVar10 - 1;\n          pmVar15 = pmVar15 + 1;\n          pmVar9 = pmVar9 + 1;\n        }\n        goto LAB_00034a50;\n      }\n    }" if (parenthesized_expression "(uVar16 == 0)" ( (binary_expression "uVar16 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_00034a50:\n      if ((pmVar21 != pmVar23) && ((int)uVar16 < (int)uVar18)) {\n        pmVar15 = pmVar23 + uVar16;\n        pmVar9 = pmVar21 + uVar16;\n        do {\n          *pmVar9 = *pmVar15;\n          pmVar15 = pmVar15 + 1;\n          pmVar9 = pmVar9 + 1;\n        } while (pmVar15 != pmVar23 + uVar18);\n      }\n    }" { (labeled_statement "LAB_00034a50:\n      if ((pmVar21 != pmVar23) && ((int)uVar16 < (int)uVar18)) {\n        pmVar15 = pmVar23 + uVar16;\n        pmVar9 = pmVar21 + uVar16;\n        do {\n          *pmVar9 = *pmVar15;\n          pmVar15 = pmVar15 + 1;\n          pmVar9 = pmVar9 + 1;\n        } while (pmVar15 != pmVar23 + uVar18);\n      }" statement_identifier : (if_statement "if ((pmVar21 != pmVar23) && ((int)uVar16 < (int)uVar18)) {\n        pmVar15 = pmVar23 + uVar16;\n        pmVar9 = pmVar21 + uVar16;\n        do {\n          *pmVar9 = *pmVar15;\n          pmVar15 = pmVar15 + 1;\n          pmVar9 = pmVar9 + 1;\n        } while (pmVar15 != pmVar23 + uVar18);\n      }" if (parenthesized_expression "((pmVar21 != pmVar23) && ((int)uVar16 < (int)uVar18))" ( (binary_expression "(pmVar21 != pmVar23) && ((int)uVar16 < (int)uVar18)" (parenthesized_expression "(pmVar21 != pmVar23)" ( (binary_expression "pmVar21 != pmVar23" identifier != identifier) )) && (parenthesized_expression "((int)uVar16 < (int)uVar18)" ( (binary_expression "(int)uVar16 < (int)uVar18" (cast_expression "(int)uVar16" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)uVar18" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) (compound_statement "{\n        pmVar15 = pmVar23 + uVar16;\n        pmVar9 = pmVar21 + uVar16;\n        do {\n          *pmVar9 = *pmVar15;\n          pmVar15 = pmVar15 + 1;\n          pmVar9 = pmVar9 + 1;\n        } while (pmVar15 != pmVar23 + uVar18);\n      }" { (expression_statement "pmVar15 = pmVar23 + uVar16;" (assignment_expression "pmVar15 = pmVar23 + uVar16" identifier = (binary_expression "pmVar23 + uVar16" identifier + identifier)) ;) (expression_statement "pmVar9 = pmVar21 + uVar16;" (assignment_expression "pmVar9 = pmVar21 + uVar16" identifier = (binary_expression "pmVar21 + uVar16" identifier + identifier)) ;) (do_statement "do {\n          *pmVar9 = *pmVar15;\n          pmVar15 = pmVar15 + 1;\n          pmVar9 = pmVar9 + 1;\n        } while (pmVar15 != pmVar23 + uVar18);" do (compound_statement "{\n          *pmVar9 = *pmVar15;\n          pmVar15 = pmVar15 + 1;\n          pmVar9 = pmVar9 + 1;\n        }" { (expression_statement "*pmVar9 = *pmVar15;" (assignment_expression "*pmVar9 = *pmVar15" (pointer_expression "*pmVar9" * identifier) = (pointer_expression "*pmVar15" * identifier)) ;) (expression_statement "pmVar15 = pmVar15 + 1;" (assignment_expression "pmVar15 = pmVar15 + 1" identifier = (binary_expression "pmVar15 + 1" identifier + number_literal)) ;) (expression_statement "pmVar9 = pmVar9 + 1;" (assignment_expression "pmVar9 = pmVar9 + 1" identifier = (binary_expression "pmVar9 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(pmVar15 != pmVar23 + uVar18)" ( (binary_expression "pmVar15 != pmVar23 + uVar18" identifier != (binary_expression "pmVar23 + uVar18" identifier + identifier)) )) ;) }))) }) (else_clause "else {\n      iVar17 = (**(code **)(pcVar27 + -0x7b2c))(pmVar21,pmVar23,pmVar15,uVar16);\n      if (iVar17 == 0) goto LAB_00034a50;\n      if ((int)uVar16 < (int)uVar18) {\n        pmVar15 = pmVar23 + uVar16;\n        mVar10 = *pmVar15;\n        pmVar9 = pmVar21 + uVar16;\n        *pmVar9 = mVar10 - 1;\n        while (uVar16 = uVar16 + 1, mVar10 == 0) {\n          if (uVar18 == uVar16) goto LAB_00034a84;\n          mVar10 = pmVar15[1];\n          pmVar9[1] = mVar10 - 1;\n          pmVar15 = pmVar15 + 1;\n          pmVar9 = pmVar9 + 1;\n        }\n        goto LAB_00034a50;\n      }\n    }" else (compound_statement "{\n      iVar17 = (**(code **)(pcVar27 + -0x7b2c))(pmVar21,pmVar23,pmVar15,uVar16);\n      if (iVar17 == 0) goto LAB_00034a50;\n      if ((int)uVar16 < (int)uVar18) {\n        pmVar15 = pmVar23 + uVar16;\n        mVar10 = *pmVar15;\n        pmVar9 = pmVar21 + uVar16;\n        *pmVar9 = mVar10 - 1;\n        while (uVar16 = uVar16 + 1, mVar10 == 0) {\n          if (uVar18 == uVar16) goto LAB_00034a84;\n          mVar10 = pmVar15[1];\n          pmVar9[1] = mVar10 - 1;\n          pmVar15 = pmVar15 + 1;\n          pmVar9 = pmVar9 + 1;\n        }\n        goto LAB_00034a50;\n      }\n    }" { (expression_statement "iVar17 = (**(code **)(pcVar27 + -0x7b2c))(pmVar21,pmVar23,pmVar15,uVar16);" (assignment_expression "iVar17 = (**(code **)(pcVar27 + -0x7b2c))(pmVar21,pmVar23,pmVar15,uVar16)" identifier = (call_expression "(**(code **)(pcVar27 + -0x7b2c))(pmVar21,pmVar23,pmVar15,uVar16)" (parenthesized_expression "(**(code **)(pcVar27 + -0x7b2c))" ( (pointer_expression "**(code **)(pcVar27 + -0x7b2c)" * (pointer_expression "*(code **)(pcVar27 + -0x7b2c)" * (cast_expression "(code **)(pcVar27 + -0x7b2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar27 + -0x7b2c)" ( (binary_expression "pcVar27 + -0x7b2c" identifier + number_literal) ))))) )) (argument_list "(pmVar21,pmVar23,pmVar15,uVar16)" ( identifier , identifier , identifier , identifier )))) ;) (if_statement "if (iVar17 == 0) goto LAB_00034a50;" if (parenthesized_expression "(iVar17 == 0)" ( (binary_expression "iVar17 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00034a50;" goto statement_identifier ;)) (if_statement "if ((int)uVar16 < (int)uVar18) {\n        pmVar15 = pmVar23 + uVar16;\n        mVar10 = *pmVar15;\n        pmVar9 = pmVar21 + uVar16;\n        *pmVar9 = mVar10 - 1;\n        while (uVar16 = uVar16 + 1, mVar10 == 0) {\n          if (uVar18 == uVar16) goto LAB_00034a84;\n          mVar10 = pmVar15[1];\n          pmVar9[1] = mVar10 - 1;\n          pmVar15 = pmVar15 + 1;\n          pmVar9 = pmVar9 + 1;\n        }\n        goto LAB_00034a50;\n      }" if (parenthesized_expression "((int)uVar16 < (int)uVar18)" ( (binary_expression "(int)uVar16 < (int)uVar18" (cast_expression "(int)uVar16" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)uVar18" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        pmVar15 = pmVar23 + uVar16;\n        mVar10 = *pmVar15;\n        pmVar9 = pmVar21 + uVar16;\n        *pmVar9 = mVar10 - 1;\n        while (uVar16 = uVar16 + 1, mVar10 == 0) {\n          if (uVar18 == uVar16) goto LAB_00034a84;\n          mVar10 = pmVar15[1];\n          pmVar9[1] = mVar10 - 1;\n          pmVar15 = pmVar15 + 1;\n          pmVar9 = pmVar9 + 1;\n        }\n        goto LAB_00034a50;\n      }" { (expression_statement "pmVar15 = pmVar23 + uVar16;" (assignment_expression "pmVar15 = pmVar23 + uVar16" identifier = (binary_expression "pmVar23 + uVar16" identifier + identifier)) ;) (expression_statement "mVar10 = *pmVar15;" (assignment_expression "mVar10 = *pmVar15" identifier = (pointer_expression "*pmVar15" * identifier)) ;) (expression_statement "pmVar9 = pmVar21 + uVar16;" (assignment_expression "pmVar9 = pmVar21 + uVar16" identifier = (binary_expression "pmVar21 + uVar16" identifier + identifier)) ;) (expression_statement "*pmVar9 = mVar10 - 1;" (assignment_expression "*pmVar9 = mVar10 - 1" (pointer_expression "*pmVar9" * identifier) = (binary_expression "mVar10 - 1" identifier - number_literal)) ;) (while_statement "while (uVar16 = uVar16 + 1, mVar10 == 0) {\n          if (uVar18 == uVar16) goto LAB_00034a84;\n          mVar10 = pmVar15[1];\n          pmVar9[1] = mVar10 - 1;\n          pmVar15 = pmVar15 + 1;\n          pmVar9 = pmVar9 + 1;\n        }" while (parenthesized_expression "(uVar16 = uVar16 + 1, mVar10 == 0)" ( (comma_expression "uVar16 = uVar16 + 1, mVar10 == 0" (assignment_expression "uVar16 = uVar16 + 1" identifier = (binary_expression "uVar16 + 1" identifier + number_literal)) , (binary_expression "mVar10 == 0" identifier == number_literal)) )) (compound_statement "{\n          if (uVar18 == uVar16) goto LAB_00034a84;\n          mVar10 = pmVar15[1];\n          pmVar9[1] = mVar10 - 1;\n          pmVar15 = pmVar15 + 1;\n          pmVar9 = pmVar9 + 1;\n        }" { (if_statement "if (uVar18 == uVar16) goto LAB_00034a84;" if (parenthesized_expression "(uVar18 == uVar16)" ( (binary_expression "uVar18 == uVar16" identifier == identifier) )) (goto_statement "goto LAB_00034a84;" goto statement_identifier ;)) (expression_statement "mVar10 = pmVar15[1];" (assignment_expression "mVar10 = pmVar15[1]" identifier = (subscript_expression "pmVar15[1]" identifier [ number_literal ])) ;) (expression_statement "pmVar9[1] = mVar10 - 1;" (assignment_expression "pmVar9[1] = mVar10 - 1" (subscript_expression "pmVar9[1]" identifier [ number_literal ]) = (binary_expression "mVar10 - 1" identifier - number_literal)) ;) (expression_statement "pmVar15 = pmVar15 + 1;" (assignment_expression "pmVar15 = pmVar15 + 1" identifier = (binary_expression "pmVar15 + 1" identifier + number_literal)) ;) (expression_statement "pmVar9 = pmVar9 + 1;" (assignment_expression "pmVar9 = pmVar9 + 1" identifier = (binary_expression "pmVar9 + 1" identifier + number_literal)) ;) })) (goto_statement "goto LAB_00034a50;" goto statement_identifier ;) })) }))) (labeled_statement "LAB_00034a84:\n    if ((0 < (int)uVar18) && (pmVar21[uVar18 + 0x3fffffff] == 0)) {\n      pmVar21 = pmVar21 + uVar18 + 0x40000000;\n      do {\n        uVar18 = uVar18 - 1;\n        if (uVar18 == 0) break;\n        pmVar15 = pmVar21 + -2;\n        pmVar21 = pmVar21 + -1;\n      } while (*pmVar15 == 0);\n    }" statement_identifier : (if_statement "if ((0 < (int)uVar18) && (pmVar21[uVar18 + 0x3fffffff] == 0)) {\n      pmVar21 = pmVar21 + uVar18 + 0x40000000;\n      do {\n        uVar18 = uVar18 - 1;\n        if (uVar18 == 0) break;\n        pmVar15 = pmVar21 + -2;\n        pmVar21 = pmVar21 + -1;\n      } while (*pmVar15 == 0);\n    }" if (parenthesized_expression "((0 < (int)uVar18) && (pmVar21[uVar18 + 0x3fffffff] == 0))" ( (binary_expression "(0 < (int)uVar18) && (pmVar21[uVar18 + 0x3fffffff] == 0)" (parenthesized_expression "(0 < (int)uVar18)" ( (binary_expression "0 < (int)uVar18" number_literal < (cast_expression "(int)uVar18" ( (type_descriptor "int" primitive_type) ) identifier)) )) && (parenthesized_expression "(pmVar21[uVar18 + 0x3fffffff] == 0)" ( (binary_expression "pmVar21[uVar18 + 0x3fffffff] == 0" (subscript_expression "pmVar21[uVar18 + 0x3fffffff]" identifier [ (binary_expression "uVar18 + 0x3fffffff" identifier + number_literal) ]) == number_literal) ))) )) (compound_statement "{\n      pmVar21 = pmVar21 + uVar18 + 0x40000000;\n      do {\n        uVar18 = uVar18 - 1;\n        if (uVar18 == 0) break;\n        pmVar15 = pmVar21 + -2;\n        pmVar21 = pmVar21 + -1;\n      } while (*pmVar15 == 0);\n    }" { (expression_statement "pmVar21 = pmVar21 + uVar18 + 0x40000000;" (assignment_expression "pmVar21 = pmVar21 + uVar18 + 0x40000000" identifier = (binary_expression "pmVar21 + uVar18 + 0x40000000" (binary_expression "pmVar21 + uVar18" identifier + identifier) + number_literal)) ;) (do_statement "do {\n        uVar18 = uVar18 - 1;\n        if (uVar18 == 0) break;\n        pmVar15 = pmVar21 + -2;\n        pmVar21 = pmVar21 + -1;\n      } while (*pmVar15 == 0);" do (compound_statement "{\n        uVar18 = uVar18 - 1;\n        if (uVar18 == 0) break;\n        pmVar15 = pmVar21 + -2;\n        pmVar21 = pmVar21 + -1;\n      }" { (expression_statement "uVar18 = uVar18 - 1;" (assignment_expression "uVar18 = uVar18 - 1" identifier = (binary_expression "uVar18 - 1" identifier - number_literal)) ;) (if_statement "if (uVar18 == 0) break;" if (parenthesized_expression "(uVar18 == 0)" ( (binary_expression "uVar18 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "pmVar15 = pmVar21 + -2;" (assignment_expression "pmVar15 = pmVar21 + -2" identifier = (binary_expression "pmVar21 + -2" identifier + number_literal)) ;) (expression_statement "pmVar21 = pmVar21 + -1;" (assignment_expression "pmVar21 = pmVar21 + -1" identifier = (binary_expression "pmVar21 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(*pmVar15 == 0)" ( (binary_expression "*pmVar15 == 0" (pointer_expression "*pmVar15" * identifier) == number_literal) )) ;) }))) (if_statement "if ((int)uVar20 < 0) {\n      uVar18 = -uVar18;\n    }" if (parenthesized_expression "((int)uVar20 < 0)" ( (binary_expression "(int)uVar20 < 0" (cast_expression "(int)uVar20" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      uVar18 = -uVar18;\n    }" { (expression_statement "uVar18 = -uVar18;" (assignment_expression "uVar18 = -uVar18" identifier = (unary_expression "-uVar18" - identifier)) ;) })) (goto_statement "goto LAB_000349e8;" goto statement_identifier ;) })) (if_statement "if (uVar16 == 0) {\nLAB_0003499c:\n    if (pmVar21 == pmVar23) {\n      mVar10 = 0;\n    }\n    else if ((int)uVar16 < (int)uVar18) {\n      pmVar9 = pmVar23 + uVar16;\n      pmVar15 = pmVar21 + uVar16;\n      do {\n        *pmVar15 = *pmVar9;\n        pmVar9 = pmVar9 + 1;\n        pmVar15 = pmVar15 + 1;\n      } while (pmVar9 != pmVar23 + uVar18);\n      mVar10 = 0;\n    }\n    else {\n      mVar10 = 0;\n    }\n  }\n  else {\n    iVar17 = (**(code **)(pcVar27 + -0x7d0c))(pmVar21,pmVar23,pmVar15,uVar16);\n    if (iVar17 == 0) goto LAB_0003499c;\n    mVar10 = 1;\n    if ((int)uVar16 < (int)uVar18) {\n      pmVar15 = pmVar23 + uVar16;\n      pmVar9 = pmVar21 + uVar16;\n      mVar10 = *pmVar15 + 1;\n      *pmVar9 = mVar10;\n      while (uVar16 = uVar16 + 1, mVar10 == 0) {\n        if (uVar18 == uVar16) {\n          mVar10 = 1;\n          goto LAB_000349d4;\n        }\n        mVar10 = pmVar15[1] + 1;\n        pmVar9[1] = mVar10;\n        pmVar15 = pmVar15 + 1;\n        pmVar9 = pmVar9 + 1;\n      }\n      goto LAB_0003499c;\n    }\n  }" if (parenthesized_expression "(uVar16 == 0)" ( (binary_expression "uVar16 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0003499c:\n    if (pmVar21 == pmVar23) {\n      mVar10 = 0;\n    }\n    else if ((int)uVar16 < (int)uVar18) {\n      pmVar9 = pmVar23 + uVar16;\n      pmVar15 = pmVar21 + uVar16;\n      do {\n        *pmVar15 = *pmVar9;\n        pmVar9 = pmVar9 + 1;\n        pmVar15 = pmVar15 + 1;\n      } while (pmVar9 != pmVar23 + uVar18);\n      mVar10 = 0;\n    }\n    else {\n      mVar10 = 0;\n    }\n  }" { (labeled_statement "LAB_0003499c:\n    if (pmVar21 == pmVar23) {\n      mVar10 = 0;\n    }\n    else if ((int)uVar16 < (int)uVar18) {\n      pmVar9 = pmVar23 + uVar16;\n      pmVar15 = pmVar21 + uVar16;\n      do {\n        *pmVar15 = *pmVar9;\n        pmVar9 = pmVar9 + 1;\n        pmVar15 = pmVar15 + 1;\n      } while (pmVar9 != pmVar23 + uVar18);\n      mVar10 = 0;\n    }\n    else {\n      mVar10 = 0;\n    }" statement_identifier : (if_statement "if (pmVar21 == pmVar23) {\n      mVar10 = 0;\n    }\n    else if ((int)uVar16 < (int)uVar18) {\n      pmVar9 = pmVar23 + uVar16;\n      pmVar15 = pmVar21 + uVar16;\n      do {\n        *pmVar15 = *pmVar9;\n        pmVar9 = pmVar9 + 1;\n        pmVar15 = pmVar15 + 1;\n      } while (pmVar9 != pmVar23 + uVar18);\n      mVar10 = 0;\n    }\n    else {\n      mVar10 = 0;\n    }" if (parenthesized_expression "(pmVar21 == pmVar23)" ( (binary_expression "pmVar21 == pmVar23" identifier == identifier) )) (compound_statement "{\n      mVar10 = 0;\n    }" { (expression_statement "mVar10 = 0;" (assignment_expression "mVar10 = 0" identifier = number_literal) ;) }) (else_clause "else if ((int)uVar16 < (int)uVar18) {\n      pmVar9 = pmVar23 + uVar16;\n      pmVar15 = pmVar21 + uVar16;\n      do {\n        *pmVar15 = *pmVar9;\n        pmVar9 = pmVar9 + 1;\n        pmVar15 = pmVar15 + 1;\n      } while (pmVar9 != pmVar23 + uVar18);\n      mVar10 = 0;\n    }\n    else {\n      mVar10 = 0;\n    }" else (if_statement "if ((int)uVar16 < (int)uVar18) {\n      pmVar9 = pmVar23 + uVar16;\n      pmVar15 = pmVar21 + uVar16;\n      do {\n        *pmVar15 = *pmVar9;\n        pmVar9 = pmVar9 + 1;\n        pmVar15 = pmVar15 + 1;\n      } while (pmVar9 != pmVar23 + uVar18);\n      mVar10 = 0;\n    }\n    else {\n      mVar10 = 0;\n    }" if (parenthesized_expression "((int)uVar16 < (int)uVar18)" ( (binary_expression "(int)uVar16 < (int)uVar18" (cast_expression "(int)uVar16" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)uVar18" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      pmVar9 = pmVar23 + uVar16;\n      pmVar15 = pmVar21 + uVar16;\n      do {\n        *pmVar15 = *pmVar9;\n        pmVar9 = pmVar9 + 1;\n        pmVar15 = pmVar15 + 1;\n      } while (pmVar9 != pmVar23 + uVar18);\n      mVar10 = 0;\n    }" { (expression_statement "pmVar9 = pmVar23 + uVar16;" (assignment_expression "pmVar9 = pmVar23 + uVar16" identifier = (binary_expression "pmVar23 + uVar16" identifier + identifier)) ;) (expression_statement "pmVar15 = pmVar21 + uVar16;" (assignment_expression "pmVar15 = pmVar21 + uVar16" identifier = (binary_expression "pmVar21 + uVar16" identifier + identifier)) ;) (do_statement "do {\n        *pmVar15 = *pmVar9;\n        pmVar9 = pmVar9 + 1;\n        pmVar15 = pmVar15 + 1;\n      } while (pmVar9 != pmVar23 + uVar18);" do (compound_statement "{\n        *pmVar15 = *pmVar9;\n        pmVar9 = pmVar9 + 1;\n        pmVar15 = pmVar15 + 1;\n      }" { (expression_statement "*pmVar15 = *pmVar9;" (assignment_expression "*pmVar15 = *pmVar9" (pointer_expression "*pmVar15" * identifier) = (pointer_expression "*pmVar9" * identifier)) ;) (expression_statement "pmVar9 = pmVar9 + 1;" (assignment_expression "pmVar9 = pmVar9 + 1" identifier = (binary_expression "pmVar9 + 1" identifier + number_literal)) ;) (expression_statement "pmVar15 = pmVar15 + 1;" (assignment_expression "pmVar15 = pmVar15 + 1" identifier = (binary_expression "pmVar15 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(pmVar9 != pmVar23 + uVar18)" ( (binary_expression "pmVar9 != pmVar23 + uVar18" identifier != (binary_expression "pmVar23 + uVar18" identifier + identifier)) )) ;) (expression_statement "mVar10 = 0;" (assignment_expression "mVar10 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      mVar10 = 0;\n    }" else (compound_statement "{\n      mVar10 = 0;\n    }" { (expression_statement "mVar10 = 0;" (assignment_expression "mVar10 = 0" identifier = number_literal) ;) })))))) }) (else_clause "else {\n    iVar17 = (**(code **)(pcVar27 + -0x7d0c))(pmVar21,pmVar23,pmVar15,uVar16);\n    if (iVar17 == 0) goto LAB_0003499c;\n    mVar10 = 1;\n    if ((int)uVar16 < (int)uVar18) {\n      pmVar15 = pmVar23 + uVar16;\n      pmVar9 = pmVar21 + uVar16;\n      mVar10 = *pmVar15 + 1;\n      *pmVar9 = mVar10;\n      while (uVar16 = uVar16 + 1, mVar10 == 0) {\n        if (uVar18 == uVar16) {\n          mVar10 = 1;\n          goto LAB_000349d4;\n        }\n        mVar10 = pmVar15[1] + 1;\n        pmVar9[1] = mVar10;\n        pmVar15 = pmVar15 + 1;\n        pmVar9 = pmVar9 + 1;\n      }\n      goto LAB_0003499c;\n    }\n  }" else (compound_statement "{\n    iVar17 = (**(code **)(pcVar27 + -0x7d0c))(pmVar21,pmVar23,pmVar15,uVar16);\n    if (iVar17 == 0) goto LAB_0003499c;\n    mVar10 = 1;\n    if ((int)uVar16 < (int)uVar18) {\n      pmVar15 = pmVar23 + uVar16;\n      pmVar9 = pmVar21 + uVar16;\n      mVar10 = *pmVar15 + 1;\n      *pmVar9 = mVar10;\n      while (uVar16 = uVar16 + 1, mVar10 == 0) {\n        if (uVar18 == uVar16) {\n          mVar10 = 1;\n          goto LAB_000349d4;\n        }\n        mVar10 = pmVar15[1] + 1;\n        pmVar9[1] = mVar10;\n        pmVar15 = pmVar15 + 1;\n        pmVar9 = pmVar9 + 1;\n      }\n      goto LAB_0003499c;\n    }\n  }" { (expression_statement "iVar17 = (**(code **)(pcVar27 + -0x7d0c))(pmVar21,pmVar23,pmVar15,uVar16);" (assignment_expression "iVar17 = (**(code **)(pcVar27 + -0x7d0c))(pmVar21,pmVar23,pmVar15,uVar16)" identifier = (call_expression "(**(code **)(pcVar27 + -0x7d0c))(pmVar21,pmVar23,pmVar15,uVar16)" (parenthesized_expression "(**(code **)(pcVar27 + -0x7d0c))" ( (pointer_expression "**(code **)(pcVar27 + -0x7d0c)" * (pointer_expression "*(code **)(pcVar27 + -0x7d0c)" * (cast_expression "(code **)(pcVar27 + -0x7d0c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar27 + -0x7d0c)" ( (binary_expression "pcVar27 + -0x7d0c" identifier + number_literal) ))))) )) (argument_list "(pmVar21,pmVar23,pmVar15,uVar16)" ( identifier , identifier , identifier , identifier )))) ;) (if_statement "if (iVar17 == 0) goto LAB_0003499c;" if (parenthesized_expression "(iVar17 == 0)" ( (binary_expression "iVar17 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0003499c;" goto statement_identifier ;)) (expression_statement "mVar10 = 1;" (assignment_expression "mVar10 = 1" identifier = number_literal) ;) (if_statement "if ((int)uVar16 < (int)uVar18) {\n      pmVar15 = pmVar23 + uVar16;\n      pmVar9 = pmVar21 + uVar16;\n      mVar10 = *pmVar15 + 1;\n      *pmVar9 = mVar10;\n      while (uVar16 = uVar16 + 1, mVar10 == 0) {\n        if (uVar18 == uVar16) {\n          mVar10 = 1;\n          goto LAB_000349d4;\n        }\n        mVar10 = pmVar15[1] + 1;\n        pmVar9[1] = mVar10;\n        pmVar15 = pmVar15 + 1;\n        pmVar9 = pmVar9 + 1;\n      }\n      goto LAB_0003499c;\n    }" if (parenthesized_expression "((int)uVar16 < (int)uVar18)" ( (binary_expression "(int)uVar16 < (int)uVar18" (cast_expression "(int)uVar16" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)uVar18" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      pmVar15 = pmVar23 + uVar16;\n      pmVar9 = pmVar21 + uVar16;\n      mVar10 = *pmVar15 + 1;\n      *pmVar9 = mVar10;\n      while (uVar16 = uVar16 + 1, mVar10 == 0) {\n        if (uVar18 == uVar16) {\n          mVar10 = 1;\n          goto LAB_000349d4;\n        }\n        mVar10 = pmVar15[1] + 1;\n        pmVar9[1] = mVar10;\n        pmVar15 = pmVar15 + 1;\n        pmVar9 = pmVar9 + 1;\n      }\n      goto LAB_0003499c;\n    }" { (expression_statement "pmVar15 = pmVar23 + uVar16;" (assignment_expression "pmVar15 = pmVar23 + uVar16" identifier = (binary_expression "pmVar23 + uVar16" identifier + identifier)) ;) (expression_statement "pmVar9 = pmVar21 + uVar16;" (assignment_expression "pmVar9 = pmVar21 + uVar16" identifier = (binary_expression "pmVar21 + uVar16" identifier + identifier)) ;) (expression_statement "mVar10 = *pmVar15 + 1;" (assignment_expression "mVar10 = *pmVar15 + 1" identifier = (binary_expression "*pmVar15 + 1" (pointer_expression "*pmVar15" * identifier) + number_literal)) ;) (expression_statement "*pmVar9 = mVar10;" (assignment_expression "*pmVar9 = mVar10" (pointer_expression "*pmVar9" * identifier) = identifier) ;) (while_statement "while (uVar16 = uVar16 + 1, mVar10 == 0) {\n        if (uVar18 == uVar16) {\n          mVar10 = 1;\n          goto LAB_000349d4;\n        }\n        mVar10 = pmVar15[1] + 1;\n        pmVar9[1] = mVar10;\n        pmVar15 = pmVar15 + 1;\n        pmVar9 = pmVar9 + 1;\n      }" while (parenthesized_expression "(uVar16 = uVar16 + 1, mVar10 == 0)" ( (comma_expression "uVar16 = uVar16 + 1, mVar10 == 0" (assignment_expression "uVar16 = uVar16 + 1" identifier = (binary_expression "uVar16 + 1" identifier + number_literal)) , (binary_expression "mVar10 == 0" identifier == number_literal)) )) (compound_statement "{\n        if (uVar18 == uVar16) {\n          mVar10 = 1;\n          goto LAB_000349d4;\n        }\n        mVar10 = pmVar15[1] + 1;\n        pmVar9[1] = mVar10;\n        pmVar15 = pmVar15 + 1;\n        pmVar9 = pmVar9 + 1;\n      }" { (if_statement "if (uVar18 == uVar16) {\n          mVar10 = 1;\n          goto LAB_000349d4;\n        }" if (parenthesized_expression "(uVar18 == uVar16)" ( (binary_expression "uVar18 == uVar16" identifier == identifier) )) (compound_statement "{\n          mVar10 = 1;\n          goto LAB_000349d4;\n        }" { (expression_statement "mVar10 = 1;" (assignment_expression "mVar10 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_000349d4;" goto statement_identifier ;) })) (expression_statement "mVar10 = pmVar15[1] + 1;" (assignment_expression "mVar10 = pmVar15[1] + 1" identifier = (binary_expression "pmVar15[1] + 1" (subscript_expression "pmVar15[1]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "pmVar9[1] = mVar10;" (assignment_expression "pmVar9[1] = mVar10" (subscript_expression "pmVar9[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "pmVar15 = pmVar15 + 1;" (assignment_expression "pmVar15 = pmVar15 + 1" identifier = (binary_expression "pmVar15 + 1" identifier + number_literal)) ;) (expression_statement "pmVar9 = pmVar9 + 1;" (assignment_expression "pmVar9 = pmVar9 + 1" identifier = (binary_expression "pmVar9 + 1" identifier + number_literal)) ;) })) (goto_statement "goto LAB_0003499c;" goto statement_identifier ;) })) }))) (labeled_statement "LAB_000349d4:\n  pmVar21[uVar18] = mVar10;" statement_identifier : (expression_statement "pmVar21[uVar18] = mVar10;" (assignment_expression "pmVar21[uVar18] = mVar10" (subscript_expression "pmVar21[uVar18]" identifier [ identifier ]) = identifier) ;)) (expression_statement "uVar18 = uVar18 + mVar10;" (assignment_expression "uVar18 = uVar18 + mVar10" identifier = (binary_expression "uVar18 + mVar10" identifier + identifier)) ;) (if_statement "if ((int)uVar20 < 0) {\n    uVar18 = -uVar18;\n  }" if (parenthesized_expression "((int)uVar20 < 0)" ( (binary_expression "(int)uVar20 < 0" (cast_expression "(int)uVar20" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    uVar18 = -uVar18;\n  }" { (expression_statement "uVar18 = -uVar18;" (assignment_expression "uVar18 = -uVar18" identifier = (unary_expression "-uVar18" - identifier)) ;) })) (labeled_statement "LAB_000349e8:\n  p_Var11->_mp_size = uVar18;" statement_identifier : (expression_statement "p_Var11->_mp_size = uVar18;" (assignment_expression "p_Var11->_mp_size = uVar18" (field_expression "p_Var11->_mp_size" identifier -> field_identifier) = identifier) ;)) (return_statement "return;" return ;) })))
(translation_unit "void __gmpz_sqrt(int *param_1,int *param_2,int *param_3)\n\n{\n  uint *puVar1;\n  uint *puVar2;\n  int *piVar3;\n  uint uVar4;\n  undefined4 *puVar5;\n  uint uVar6;\n  undefined4 *puVar7;\n  int iVar8;\n  int *piVar9;\n  int *piVar10;\n  int iVar11;\n  int *piVar12;\n  int iVar13;\n  int unaff_s0;\n  uint uVar14;\n  int iVar15;\n  int iVar16;\n  uint uVar17;\n  int *unaff_s2;\n  uint uVar18;\n  uint uVar19;\n  int *unaff_s3;\n  int *unaff_s4;\n  int *unaff_s5;\n  int iVar20;\n  int *unaff_s6;\n  uint unaff_s7;\n  undefined *puVar21;\n  code *pcVar22;\n  undefined *puVar23;\n  code *pcVar24;\n  undefined1 *puVar25;\n  undefined1 *puVar26;\n  undefined1 *puVar27;\n  undefined1 *puVar28;\n  undefined4 uVar29;\n  undefined1 auStack_40 [16];\n  int *local_28;\n  int local_24;\n  \n  puVar25 = auStack_40;\n  puVar26 = auStack_40;\n  local_24 = *(int *)PTR___stack_chk_guard_0009b540;\n  iVar16 = param_2[1];\n  if (iVar16 < 1) {\n    if (iVar16 < 0) {\n      (*(code *)PTR___gmp_sqrt_of_negative_0009b1cc)();\n      goto LAB_000345b4;\n    }\n    param_1[1] = 0;\n  }\n  else {\n    unaff_s0 = (iVar16 + 1) / 2;\n    param_1[1] = unaff_s0;\n    unaff_s2 = (int *)param_2[2];\n    if (param_2 == param_1) {\nLAB_000345b4:\n      unaff_s4 = (int *)(unaff_s0 * 4);\n      local_28 = (int *)0x0;\n      if (unaff_s4 < (int *)0x7f01) {\n        iVar13 = -((int)unaff_s4 + 7U & 0xfffffff8);\n        puVar26 = auStack_40 + iVar13;\n        unaff_s3 = (int *)(&stack0xffffffd0 + iVar13);\n      }\n      else {\n        unaff_s3 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)(&local_28,unaff_s4);\n      }\n      param_2 = (int *)0x0;\n      param_3 = unaff_s2;\n      (*(code *)PTR___gmpn_sqrtrem_0009b0e0)(unaff_s3,0,unaff_s2,iVar16);\n      iVar13 = *unaff_s3;\n      if (unaff_s0 != 1) {\n        piVar10 = unaff_s3 + 1;\n        unaff_s3 = unaff_s3 + unaff_s0;\n        piVar12 = unaff_s2;\n        do {\n          *piVar12 = iVar13;\n          piVar9 = piVar10 + 1;\n          iVar13 = *piVar10;\n          piVar10 = piVar9;\n          piVar12 = piVar12 + 1;\n        } while (unaff_s3 != piVar9);\n        unaff_s4 = unaff_s4 + -1;\n        unaff_s2 = (int *)((int)unaff_s2 + (int)unaff_s4);\n      }\n      *unaff_s2 = iVar13;\n      param_1 = local_28;\n      puVar25 = puVar26;\n      if (local_28 != (int *)0x0) {\n        (*(code *)PTR___gmp_tmp_reentrant_free_0009b614)();\n      }\n    }\n    else {\n      if (*param_1 < unaff_s0) {\n        param_1 = (int *)(*(code *)PTR___gmpz_realloc_0009b5bc)(param_1,unaff_s0);\n      }\n      else {\n        param_1 = (int *)param_1[2];\n      }\n      param_2 = (int *)0x0;\n      param_3 = unaff_s2;\n      (*(code *)PTR___gmpn_sqrtrem_0009b0e0)();\n      puVar25 = auStack_40;\n    }\n  }\n  if (local_24 == *(int *)PTR___stack_chk_guard_0009b540) {\n    return;\n  }\n  uVar29 = 0x34694;\n  puVar21 = PTR___stack_chk_fail_0009b4d0;\n  (*(code *)PTR___stack_chk_fail_0009b4d0)();\n  puVar23 = puVar21 + 0x6e9a0;\n  puVar27 = puVar25 + -0x48;\n  puVar28 = puVar25 + -0x48;\n  *(undefined4 *)(puVar25 + -4) = uVar29;\n  *(undefined1 **)(puVar25 + -8) = auStack_40;\n  *(uint *)(puVar25 + -0xc) = unaff_s7;\n  *(int **)(puVar25 + -0x10) = unaff_s6;\n  *(int **)(puVar25 + -0x14) = unaff_s5;\n  *(int **)(puVar25 + -0x18) = unaff_s4;\n  *(int **)(puVar25 + -0x1c) = unaff_s3;\n  *(int **)(puVar25 + -0x20) = unaff_s2;\n  *(int *)(puVar25 + -0x24) = iVar16;\n  *(int *)(puVar25 + -0x28) = unaff_s0;\n  *(undefined **)(puVar25 + -0x38) = puVar23;\n  *(undefined4 *)(puVar25 + -0x2c) = **(undefined4 **)(puVar21 + 0x66ea0);\n  iVar16 = param_3[1];\n  if (iVar16 < 1) {\n    if (iVar16 < 0) {\n      (**(code **)(puVar21 + 0x66b2c))();\n      goto LAB_000347c8;\n    }\n    param_1[1] = 0;\n    param_2[1] = 0;\n    piVar10 = param_1;\n    piVar12 = param_2;\n  }\n  else {\n    unaff_s4 = param_3;\n    if (*param_2 < iVar16) {\nLAB_000347c8:\n      unaff_s5 = (int *)(**(code **)(puVar21 + 0x66f1c))(param_2,iVar16);\n      puVar23 = *(undefined **)(puVar25 + -0x38);\n    }\n    else {\n      unaff_s5 = (int *)param_2[2];\n    }\n    unaff_s0 = (iVar16 + 1) / 2;\n    param_1[1] = unaff_s0;\n    unaff_s6 = (int *)unaff_s4[2];\n    piVar12 = unaff_s5;\n    param_3 = unaff_s6;\n    if (unaff_s4 == param_1) {\n      unaff_s7 = unaff_s0 * 4;\n      *(undefined4 *)(puVar25 + -0x30) = 0;\n      if (unaff_s7 < 0x7f01) {\n        iVar13 = -(unaff_s7 + 7 & 0xfffffff8);\n        puVar28 = puVar25 + iVar13 + -0x48;\n        unaff_s4 = (int *)(puVar25 + iVar13 + -0x38);\n      }\n      else {\n        unaff_s4 = (int *)(**(code **)(puVar23 + -0x7d50))(puVar25 + -0x30,unaff_s7);\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n      }\n      iVar16 = (**(code **)(puVar23 + -0x7f60))(unaff_s4,unaff_s5,unaff_s6,iVar16);\n      puVar23 = *(undefined **)(puVar25 + -0x38);\n      if (param_1 != param_2) {\n        iVar13 = *unaff_s4;\n        if (unaff_s0 != 1) {\n          piVar10 = unaff_s4 + 1;\n          unaff_s4 = unaff_s4 + unaff_s0;\n          piVar9 = unaff_s6;\n          do {\n            *piVar9 = iVar13;\n            piVar3 = piVar10 + 1;\n            iVar13 = *piVar10;\n            piVar10 = piVar3;\n            piVar9 = piVar9 + 1;\n          } while (unaff_s4 != piVar3);\n          unaff_s7 = unaff_s7 - 4;\n          unaff_s6 = unaff_s6 + unaff_s0 + -1;\n        }\n        *unaff_s6 = iVar13;\n      }\n      piVar10 = *(int **)(puVar25 + -0x30);\n      if (piVar10 != (int *)0x0) {\n        (**(code **)(puVar23 + -0x7a2c))();\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n        param_2[1] = iVar16;\n        puVar27 = puVar28;\n        goto LAB_00034768;\n      }\n    }\n    else {\n      if (*param_1 < unaff_s0) {\n        piVar10 = (int *)(**(code **)(puVar23 + -0x7a84))(param_1,unaff_s0);\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n      }\n      else {\n        piVar10 = (int *)param_1[2];\n      }\n      iVar16 = (**(code **)(puVar23 + -0x7f60))();\n      puVar23 = *(undefined **)(puVar25 + -0x38);\n      puVar28 = puVar25 + -0x48;\n    }\n    param_2[1] = iVar16;\n    puVar27 = puVar28;\n  }\nLAB_00034768:\n  if (*(int *)(puVar25 + -0x2c) == **(int **)(puVar23 + -0x7b00)) {\n    return;\n  }\n  pcVar22 = *(code **)(puVar23 + -0x7b70);\n  uVar29 = 0x348d4;\n  (*pcVar22)();\n  pcVar24 = pcVar22 + 0x6e760;\n  *(undefined4 *)(puVar27 + -4) = uVar29;\n  *(uint *)(puVar27 + -8) = unaff_s7;\n  *(int **)(puVar27 + -0xc) = unaff_s6;\n  *(int **)(puVar27 + -0x10) = unaff_s5;\n  *(int **)(puVar27 + -0x14) = unaff_s4;\n  *(int **)(puVar27 + -0x18) = param_2;\n  *(int **)(puVar27 + -0x1c) = param_1;\n  *(int *)(puVar27 + -0x20) = iVar16;\n  *(int *)(puVar27 + -0x24) = unaff_s0;\n  *(code **)(puVar27 + -0x30) = pcVar24;\n  uVar18 = piVar12[1];\n  uVar4 = param_3[1];\n  uVar6 = -uVar4;\n  uVar17 = uVar18;\n  if ((int)uVar18 < 0) {\n    uVar17 = -uVar18;\n  }\n  if ((int)uVar4 < 0) {\n    uVar4 = -uVar4;\n  }\n  uVar14 = uVar4;\n  uVar19 = uVar18;\n  piVar9 = piVar12;\n  if ((int)uVar17 < (int)uVar4) {\n    uVar14 = uVar17;\n    uVar17 = uVar4;\n    uVar19 = uVar6;\n    piVar9 = param_3;\n    uVar6 = uVar18;\n    param_3 = piVar12;\n  }\n  if (*piVar10 < (int)(uVar17 + 1)) {\n    iVar16 = (**(code **)(pcVar22 + 0x66cdc))(piVar10);\n    pcVar24 = *(code **)(puVar27 + -0x30);\n  }\n  else {\n    iVar16 = piVar10[2];\n  }\n  iVar20 = piVar9[2];\n  iVar13 = param_3[2];\n  if ((int)(uVar19 ^ uVar6) < 0) {\n    if (uVar17 == uVar14) {\n      iVar15 = uVar17 * 4;\n      iVar11 = iVar20 + iVar15;\n      iVar8 = iVar13 + iVar15;\n      uVar6 = uVar17;\n      do {\n        uVar6 = uVar6 - 1;\n        if (uVar6 == 0xffffffff) goto LAB_00034bf8;\n        puVar1 = (uint *)(iVar11 + -4);\n        puVar2 = (uint *)(iVar8 + -4);\n        iVar11 = iVar11 + -4;\n        iVar8 = iVar8 + -4;\n      } while (*puVar1 == *puVar2);\n      if (*puVar2 < *puVar1) {\nLAB_00034bf8:\n        (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar20,iVar13,uVar17);\n        if ((0 < (int)uVar17) && (*(int *)(iVar16 + iVar15 + -4) == 0)) {\n          iVar16 = iVar16 + iVar15;\n          do {\n            uVar17 = uVar17 - 1;\n            if (uVar17 == 0) break;\n            piVar12 = (int *)(iVar16 + -8);\n            iVar16 = iVar16 + -4;\n          } while (*piVar12 == 0);\n        }\n        if ((int)uVar19 < 0) {\n          uVar17 = -uVar17;\n        }\n      }\n      else {\n        (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar13,iVar20);\n        if ((0 < (int)uVar17) && (*(int *)(iVar16 + iVar15 + -4) == 0)) {\n          iVar16 = iVar16 + iVar15;\n          do {\n            uVar17 = uVar17 - 1;\n            if (uVar17 == 0) break;\n            piVar12 = (int *)(iVar16 + -8);\n            iVar16 = iVar16 + -4;\n          } while (*piVar12 == 0);\n        }\n        if (-1 < (int)uVar19) {\n          uVar17 = -uVar17;\n        }\n      }\n      goto LAB_000349e8;\n    }\n    if (uVar14 == 0) {\nLAB_00034a50:\n      if ((iVar16 != iVar20) && ((int)uVar14 < (int)uVar17)) {\n        puVar5 = (undefined4 *)(iVar20 + uVar14 * 4);\n        puVar7 = (undefined4 *)(iVar16 + uVar14 * 4);\n        do {\n          *puVar7 = *puVar5;\n          puVar5 = puVar5 + 1;\n          puVar7 = puVar7 + 1;\n        } while (puVar5 != (undefined4 *)(iVar20 + uVar17 * 4));\n      }\n    }\n    else {\n      iVar13 = (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar20,iVar13,uVar14);\n      if (iVar13 == 0) goto LAB_00034a50;\n      if ((int)uVar14 < (int)uVar17) {\n        piVar12 = (int *)(iVar20 + uVar14 * 4);\n        iVar13 = *piVar12;\n        piVar9 = (int *)(iVar16 + uVar14 * 4);\n        *piVar9 = iVar13 + -1;\n        while (uVar14 = uVar14 + 1, iVar13 == 0) {\n          if (uVar17 == uVar14) goto LAB_00034a84;\n          iVar13 = piVar12[1];\n          piVar9[1] = iVar13 + -1;\n          piVar12 = piVar12 + 1;\n          piVar9 = piVar9 + 1;\n        }\n        goto LAB_00034a50;\n      }\n    }\nLAB_00034a84:\n    if ((0 < (int)uVar17) && (iVar13 = (uVar17 + 0x3fffffff) * 4, *(int *)(iVar16 + iVar13) == 0)) {\n      iVar16 = iVar16 + iVar13 + 4;\n      do {\n        uVar17 = uVar17 - 1;\n        if (uVar17 == 0) break;\n        piVar12 = (int *)(iVar16 + -8);\n        iVar16 = iVar16 + -4;\n      } while (*piVar12 == 0);\n    }\n    if ((int)uVar19 < 0) {\n      uVar17 = -uVar17;\n    }\n    goto LAB_000349e8;\n  }\n  if (uVar14 == 0) {\nLAB_0003499c:\n    if (iVar16 == iVar20) {\n      iVar13 = 0;\n    }\n    else if ((int)uVar14 < (int)uVar17) {\n      puVar7 = (undefined4 *)(iVar20 + uVar14 * 4);\n      puVar5 = (undefined4 *)(iVar16 + uVar14 * 4);\n      do {\n        *puVar5 = *puVar7;\n        puVar7 = puVar7 + 1;\n        puVar5 = puVar5 + 1;\n      } while (puVar7 != (undefined4 *)(iVar20 + uVar17 * 4));\n      iVar13 = 0;\n    }\n    else {\n      iVar13 = 0;\n    }\n  }\n  else {\n    iVar13 = (**(code **)(pcVar24 + -0x7d0c))(iVar16,iVar20,iVar13,uVar14);\n    if (iVar13 == 0) goto LAB_0003499c;\n    iVar13 = 1;\n    if ((int)uVar14 < (int)uVar17) {\n      piVar12 = (int *)(iVar20 + uVar14 * 4);\n      piVar9 = (int *)(iVar16 + uVar14 * 4);\n      iVar13 = *piVar12 + 1;\n      *piVar9 = iVar13;\n      while (uVar14 = uVar14 + 1, iVar13 == 0) {\n        if (uVar17 == uVar14) {\n          iVar13 = 1;\n          goto LAB_000349d4;\n        }\n        iVar13 = piVar12[1] + 1;\n        piVar9[1] = iVar13;\n        piVar12 = piVar12 + 1;\n        piVar9 = piVar9 + 1;\n      }\n      goto LAB_0003499c;\n    }\n  }\nLAB_000349d4:\n  *(int *)(iVar16 + uVar17 * 4) = iVar13;\n  uVar17 = uVar17 + iVar13;\n  if ((int)uVar19 < 0) {\n    uVar17 = -uVar17;\n  }\nLAB_000349e8:\n  piVar10[1] = uVar17;\n  return;\n}\n\n" (function_definition "void __gmpz_sqrt(int *param_1,int *param_2,int *param_3)\n\n{\n  uint *puVar1;\n  uint *puVar2;\n  int *piVar3;\n  uint uVar4;\n  undefined4 *puVar5;\n  uint uVar6;\n  undefined4 *puVar7;\n  int iVar8;\n  int *piVar9;\n  int *piVar10;\n  int iVar11;\n  int *piVar12;\n  int iVar13;\n  int unaff_s0;\n  uint uVar14;\n  int iVar15;\n  int iVar16;\n  uint uVar17;\n  int *unaff_s2;\n  uint uVar18;\n  uint uVar19;\n  int *unaff_s3;\n  int *unaff_s4;\n  int *unaff_s5;\n  int iVar20;\n  int *unaff_s6;\n  uint unaff_s7;\n  undefined *puVar21;\n  code *pcVar22;\n  undefined *puVar23;\n  code *pcVar24;\n  undefined1 *puVar25;\n  undefined1 *puVar26;\n  undefined1 *puVar27;\n  undefined1 *puVar28;\n  undefined4 uVar29;\n  undefined1 auStack_40 [16];\n  int *local_28;\n  int local_24;\n  \n  puVar25 = auStack_40;\n  puVar26 = auStack_40;\n  local_24 = *(int *)PTR___stack_chk_guard_0009b540;\n  iVar16 = param_2[1];\n  if (iVar16 < 1) {\n    if (iVar16 < 0) {\n      (*(code *)PTR___gmp_sqrt_of_negative_0009b1cc)();\n      goto LAB_000345b4;\n    }\n    param_1[1] = 0;\n  }\n  else {\n    unaff_s0 = (iVar16 + 1) / 2;\n    param_1[1] = unaff_s0;\n    unaff_s2 = (int *)param_2[2];\n    if (param_2 == param_1) {\nLAB_000345b4:\n      unaff_s4 = (int *)(unaff_s0 * 4);\n      local_28 = (int *)0x0;\n      if (unaff_s4 < (int *)0x7f01) {\n        iVar13 = -((int)unaff_s4 + 7U & 0xfffffff8);\n        puVar26 = auStack_40 + iVar13;\n        unaff_s3 = (int *)(&stack0xffffffd0 + iVar13);\n      }\n      else {\n        unaff_s3 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)(&local_28,unaff_s4);\n      }\n      param_2 = (int *)0x0;\n      param_3 = unaff_s2;\n      (*(code *)PTR___gmpn_sqrtrem_0009b0e0)(unaff_s3,0,unaff_s2,iVar16);\n      iVar13 = *unaff_s3;\n      if (unaff_s0 != 1) {\n        piVar10 = unaff_s3 + 1;\n        unaff_s3 = unaff_s3 + unaff_s0;\n        piVar12 = unaff_s2;\n        do {\n          *piVar12 = iVar13;\n          piVar9 = piVar10 + 1;\n          iVar13 = *piVar10;\n          piVar10 = piVar9;\n          piVar12 = piVar12 + 1;\n        } while (unaff_s3 != piVar9);\n        unaff_s4 = unaff_s4 + -1;\n        unaff_s2 = (int *)((int)unaff_s2 + (int)unaff_s4);\n      }\n      *unaff_s2 = iVar13;\n      param_1 = local_28;\n      puVar25 = puVar26;\n      if (local_28 != (int *)0x0) {\n        (*(code *)PTR___gmp_tmp_reentrant_free_0009b614)();\n      }\n    }\n    else {\n      if (*param_1 < unaff_s0) {\n        param_1 = (int *)(*(code *)PTR___gmpz_realloc_0009b5bc)(param_1,unaff_s0);\n      }\n      else {\n        param_1 = (int *)param_1[2];\n      }\n      param_2 = (int *)0x0;\n      param_3 = unaff_s2;\n      (*(code *)PTR___gmpn_sqrtrem_0009b0e0)();\n      puVar25 = auStack_40;\n    }\n  }\n  if (local_24 == *(int *)PTR___stack_chk_guard_0009b540) {\n    return;\n  }\n  uVar29 = 0x34694;\n  puVar21 = PTR___stack_chk_fail_0009b4d0;\n  (*(code *)PTR___stack_chk_fail_0009b4d0)();\n  puVar23 = puVar21 + 0x6e9a0;\n  puVar27 = puVar25 + -0x48;\n  puVar28 = puVar25 + -0x48;\n  *(undefined4 *)(puVar25 + -4) = uVar29;\n  *(undefined1 **)(puVar25 + -8) = auStack_40;\n  *(uint *)(puVar25 + -0xc) = unaff_s7;\n  *(int **)(puVar25 + -0x10) = unaff_s6;\n  *(int **)(puVar25 + -0x14) = unaff_s5;\n  *(int **)(puVar25 + -0x18) = unaff_s4;\n  *(int **)(puVar25 + -0x1c) = unaff_s3;\n  *(int **)(puVar25 + -0x20) = unaff_s2;\n  *(int *)(puVar25 + -0x24) = iVar16;\n  *(int *)(puVar25 + -0x28) = unaff_s0;\n  *(undefined **)(puVar25 + -0x38) = puVar23;\n  *(undefined4 *)(puVar25 + -0x2c) = **(undefined4 **)(puVar21 + 0x66ea0);\n  iVar16 = param_3[1];\n  if (iVar16 < 1) {\n    if (iVar16 < 0) {\n      (**(code **)(puVar21 + 0x66b2c))();\n      goto LAB_000347c8;\n    }\n    param_1[1] = 0;\n    param_2[1] = 0;\n    piVar10 = param_1;\n    piVar12 = param_2;\n  }\n  else {\n    unaff_s4 = param_3;\n    if (*param_2 < iVar16) {\nLAB_000347c8:\n      unaff_s5 = (int *)(**(code **)(puVar21 + 0x66f1c))(param_2,iVar16);\n      puVar23 = *(undefined **)(puVar25 + -0x38);\n    }\n    else {\n      unaff_s5 = (int *)param_2[2];\n    }\n    unaff_s0 = (iVar16 + 1) / 2;\n    param_1[1] = unaff_s0;\n    unaff_s6 = (int *)unaff_s4[2];\n    piVar12 = unaff_s5;\n    param_3 = unaff_s6;\n    if (unaff_s4 == param_1) {\n      unaff_s7 = unaff_s0 * 4;\n      *(undefined4 *)(puVar25 + -0x30) = 0;\n      if (unaff_s7 < 0x7f01) {\n        iVar13 = -(unaff_s7 + 7 & 0xfffffff8);\n        puVar28 = puVar25 + iVar13 + -0x48;\n        unaff_s4 = (int *)(puVar25 + iVar13 + -0x38);\n      }\n      else {\n        unaff_s4 = (int *)(**(code **)(puVar23 + -0x7d50))(puVar25 + -0x30,unaff_s7);\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n      }\n      iVar16 = (**(code **)(puVar23 + -0x7f60))(unaff_s4,unaff_s5,unaff_s6,iVar16);\n      puVar23 = *(undefined **)(puVar25 + -0x38);\n      if (param_1 != param_2) {\n        iVar13 = *unaff_s4;\n        if (unaff_s0 != 1) {\n          piVar10 = unaff_s4 + 1;\n          unaff_s4 = unaff_s4 + unaff_s0;\n          piVar9 = unaff_s6;\n          do {\n            *piVar9 = iVar13;\n            piVar3 = piVar10 + 1;\n            iVar13 = *piVar10;\n            piVar10 = piVar3;\n            piVar9 = piVar9 + 1;\n          } while (unaff_s4 != piVar3);\n          unaff_s7 = unaff_s7 - 4;\n          unaff_s6 = unaff_s6 + unaff_s0 + -1;\n        }\n        *unaff_s6 = iVar13;\n      }\n      piVar10 = *(int **)(puVar25 + -0x30);\n      if (piVar10 != (int *)0x0) {\n        (**(code **)(puVar23 + -0x7a2c))();\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n        param_2[1] = iVar16;\n        puVar27 = puVar28;\n        goto LAB_00034768;\n      }\n    }\n    else {\n      if (*param_1 < unaff_s0) {\n        piVar10 = (int *)(**(code **)(puVar23 + -0x7a84))(param_1,unaff_s0);\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n      }\n      else {\n        piVar10 = (int *)param_1[2];\n      }\n      iVar16 = (**(code **)(puVar23 + -0x7f60))();\n      puVar23 = *(undefined **)(puVar25 + -0x38);\n      puVar28 = puVar25 + -0x48;\n    }\n    param_2[1] = iVar16;\n    puVar27 = puVar28;\n  }\nLAB_00034768:\n  if (*(int *)(puVar25 + -0x2c) == **(int **)(puVar23 + -0x7b00)) {\n    return;\n  }\n  pcVar22 = *(code **)(puVar23 + -0x7b70);\n  uVar29 = 0x348d4;\n  (*pcVar22)();\n  pcVar24 = pcVar22 + 0x6e760;\n  *(undefined4 *)(puVar27 + -4) = uVar29;\n  *(uint *)(puVar27 + -8) = unaff_s7;\n  *(int **)(puVar27 + -0xc) = unaff_s6;\n  *(int **)(puVar27 + -0x10) = unaff_s5;\n  *(int **)(puVar27 + -0x14) = unaff_s4;\n  *(int **)(puVar27 + -0x18) = param_2;\n  *(int **)(puVar27 + -0x1c) = param_1;\n  *(int *)(puVar27 + -0x20) = iVar16;\n  *(int *)(puVar27 + -0x24) = unaff_s0;\n  *(code **)(puVar27 + -0x30) = pcVar24;\n  uVar18 = piVar12[1];\n  uVar4 = param_3[1];\n  uVar6 = -uVar4;\n  uVar17 = uVar18;\n  if ((int)uVar18 < 0) {\n    uVar17 = -uVar18;\n  }\n  if ((int)uVar4 < 0) {\n    uVar4 = -uVar4;\n  }\n  uVar14 = uVar4;\n  uVar19 = uVar18;\n  piVar9 = piVar12;\n  if ((int)uVar17 < (int)uVar4) {\n    uVar14 = uVar17;\n    uVar17 = uVar4;\n    uVar19 = uVar6;\n    piVar9 = param_3;\n    uVar6 = uVar18;\n    param_3 = piVar12;\n  }\n  if (*piVar10 < (int)(uVar17 + 1)) {\n    iVar16 = (**(code **)(pcVar22 + 0x66cdc))(piVar10);\n    pcVar24 = *(code **)(puVar27 + -0x30);\n  }\n  else {\n    iVar16 = piVar10[2];\n  }\n  iVar20 = piVar9[2];\n  iVar13 = param_3[2];\n  if ((int)(uVar19 ^ uVar6) < 0) {\n    if (uVar17 == uVar14) {\n      iVar15 = uVar17 * 4;\n      iVar11 = iVar20 + iVar15;\n      iVar8 = iVar13 + iVar15;\n      uVar6 = uVar17;\n      do {\n        uVar6 = uVar6 - 1;\n        if (uVar6 == 0xffffffff) goto LAB_00034bf8;\n        puVar1 = (uint *)(iVar11 + -4);\n        puVar2 = (uint *)(iVar8 + -4);\n        iVar11 = iVar11 + -4;\n        iVar8 = iVar8 + -4;\n      } while (*puVar1 == *puVar2);\n      if (*puVar2 < *puVar1) {\nLAB_00034bf8:\n        (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar20,iVar13,uVar17);\n        if ((0 < (int)uVar17) && (*(int *)(iVar16 + iVar15 + -4) == 0)) {\n          iVar16 = iVar16 + iVar15;\n          do {\n            uVar17 = uVar17 - 1;\n            if (uVar17 == 0) break;\n            piVar12 = (int *)(iVar16 + -8);\n            iVar16 = iVar16 + -4;\n          } while (*piVar12 == 0);\n        }\n        if ((int)uVar19 < 0) {\n          uVar17 = -uVar17;\n        }\n      }\n      else {\n        (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar13,iVar20);\n        if ((0 < (int)uVar17) && (*(int *)(iVar16 + iVar15 + -4) == 0)) {\n          iVar16 = iVar16 + iVar15;\n          do {\n            uVar17 = uVar17 - 1;\n            if (uVar17 == 0) break;\n            piVar12 = (int *)(iVar16 + -8);\n            iVar16 = iVar16 + -4;\n          } while (*piVar12 == 0);\n        }\n        if (-1 < (int)uVar19) {\n          uVar17 = -uVar17;\n        }\n      }\n      goto LAB_000349e8;\n    }\n    if (uVar14 == 0) {\nLAB_00034a50:\n      if ((iVar16 != iVar20) && ((int)uVar14 < (int)uVar17)) {\n        puVar5 = (undefined4 *)(iVar20 + uVar14 * 4);\n        puVar7 = (undefined4 *)(iVar16 + uVar14 * 4);\n        do {\n          *puVar7 = *puVar5;\n          puVar5 = puVar5 + 1;\n          puVar7 = puVar7 + 1;\n        } while (puVar5 != (undefined4 *)(iVar20 + uVar17 * 4));\n      }\n    }\n    else {\n      iVar13 = (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar20,iVar13,uVar14);\n      if (iVar13 == 0) goto LAB_00034a50;\n      if ((int)uVar14 < (int)uVar17) {\n        piVar12 = (int *)(iVar20 + uVar14 * 4);\n        iVar13 = *piVar12;\n        piVar9 = (int *)(iVar16 + uVar14 * 4);\n        *piVar9 = iVar13 + -1;\n        while (uVar14 = uVar14 + 1, iVar13 == 0) {\n          if (uVar17 == uVar14) goto LAB_00034a84;\n          iVar13 = piVar12[1];\n          piVar9[1] = iVar13 + -1;\n          piVar12 = piVar12 + 1;\n          piVar9 = piVar9 + 1;\n        }\n        goto LAB_00034a50;\n      }\n    }\nLAB_00034a84:\n    if ((0 < (int)uVar17) && (iVar13 = (uVar17 + 0x3fffffff) * 4, *(int *)(iVar16 + iVar13) == 0)) {\n      iVar16 = iVar16 + iVar13 + 4;\n      do {\n        uVar17 = uVar17 - 1;\n        if (uVar17 == 0) break;\n        piVar12 = (int *)(iVar16 + -8);\n        iVar16 = iVar16 + -4;\n      } while (*piVar12 == 0);\n    }\n    if ((int)uVar19 < 0) {\n      uVar17 = -uVar17;\n    }\n    goto LAB_000349e8;\n  }\n  if (uVar14 == 0) {\nLAB_0003499c:\n    if (iVar16 == iVar20) {\n      iVar13 = 0;\n    }\n    else if ((int)uVar14 < (int)uVar17) {\n      puVar7 = (undefined4 *)(iVar20 + uVar14 * 4);\n      puVar5 = (undefined4 *)(iVar16 + uVar14 * 4);\n      do {\n        *puVar5 = *puVar7;\n        puVar7 = puVar7 + 1;\n        puVar5 = puVar5 + 1;\n      } while (puVar7 != (undefined4 *)(iVar20 + uVar17 * 4));\n      iVar13 = 0;\n    }\n    else {\n      iVar13 = 0;\n    }\n  }\n  else {\n    iVar13 = (**(code **)(pcVar24 + -0x7d0c))(iVar16,iVar20,iVar13,uVar14);\n    if (iVar13 == 0) goto LAB_0003499c;\n    iVar13 = 1;\n    if ((int)uVar14 < (int)uVar17) {\n      piVar12 = (int *)(iVar20 + uVar14 * 4);\n      piVar9 = (int *)(iVar16 + uVar14 * 4);\n      iVar13 = *piVar12 + 1;\n      *piVar9 = iVar13;\n      while (uVar14 = uVar14 + 1, iVar13 == 0) {\n        if (uVar17 == uVar14) {\n          iVar13 = 1;\n          goto LAB_000349d4;\n        }\n        iVar13 = piVar12[1] + 1;\n        piVar9[1] = iVar13;\n        piVar12 = piVar12 + 1;\n        piVar9 = piVar9 + 1;\n      }\n      goto LAB_0003499c;\n    }\n  }\nLAB_000349d4:\n  *(int *)(iVar16 + uVar17 * 4) = iVar13;\n  uVar17 = uVar17 + iVar13;\n  if ((int)uVar19 < 0) {\n    uVar17 = -uVar17;\n  }\nLAB_000349e8:\n  piVar10[1] = uVar17;\n  return;\n}" primitive_type (function_declarator "__gmpz_sqrt(int *param_1,int *param_2,int *param_3)" identifier (parameter_list "(int *param_1,int *param_2,int *param_3)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  uint *puVar1;\n  uint *puVar2;\n  int *piVar3;\n  uint uVar4;\n  undefined4 *puVar5;\n  uint uVar6;\n  undefined4 *puVar7;\n  int iVar8;\n  int *piVar9;\n  int *piVar10;\n  int iVar11;\n  int *piVar12;\n  int iVar13;\n  int unaff_s0;\n  uint uVar14;\n  int iVar15;\n  int iVar16;\n  uint uVar17;\n  int *unaff_s2;\n  uint uVar18;\n  uint uVar19;\n  int *unaff_s3;\n  int *unaff_s4;\n  int *unaff_s5;\n  int iVar20;\n  int *unaff_s6;\n  uint unaff_s7;\n  undefined *puVar21;\n  code *pcVar22;\n  undefined *puVar23;\n  code *pcVar24;\n  undefined1 *puVar25;\n  undefined1 *puVar26;\n  undefined1 *puVar27;\n  undefined1 *puVar28;\n  undefined4 uVar29;\n  undefined1 auStack_40 [16];\n  int *local_28;\n  int local_24;\n  \n  puVar25 = auStack_40;\n  puVar26 = auStack_40;\n  local_24 = *(int *)PTR___stack_chk_guard_0009b540;\n  iVar16 = param_2[1];\n  if (iVar16 < 1) {\n    if (iVar16 < 0) {\n      (*(code *)PTR___gmp_sqrt_of_negative_0009b1cc)();\n      goto LAB_000345b4;\n    }\n    param_1[1] = 0;\n  }\n  else {\n    unaff_s0 = (iVar16 + 1) / 2;\n    param_1[1] = unaff_s0;\n    unaff_s2 = (int *)param_2[2];\n    if (param_2 == param_1) {\nLAB_000345b4:\n      unaff_s4 = (int *)(unaff_s0 * 4);\n      local_28 = (int *)0x0;\n      if (unaff_s4 < (int *)0x7f01) {\n        iVar13 = -((int)unaff_s4 + 7U & 0xfffffff8);\n        puVar26 = auStack_40 + iVar13;\n        unaff_s3 = (int *)(&stack0xffffffd0 + iVar13);\n      }\n      else {\n        unaff_s3 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)(&local_28,unaff_s4);\n      }\n      param_2 = (int *)0x0;\n      param_3 = unaff_s2;\n      (*(code *)PTR___gmpn_sqrtrem_0009b0e0)(unaff_s3,0,unaff_s2,iVar16);\n      iVar13 = *unaff_s3;\n      if (unaff_s0 != 1) {\n        piVar10 = unaff_s3 + 1;\n        unaff_s3 = unaff_s3 + unaff_s0;\n        piVar12 = unaff_s2;\n        do {\n          *piVar12 = iVar13;\n          piVar9 = piVar10 + 1;\n          iVar13 = *piVar10;\n          piVar10 = piVar9;\n          piVar12 = piVar12 + 1;\n        } while (unaff_s3 != piVar9);\n        unaff_s4 = unaff_s4 + -1;\n        unaff_s2 = (int *)((int)unaff_s2 + (int)unaff_s4);\n      }\n      *unaff_s2 = iVar13;\n      param_1 = local_28;\n      puVar25 = puVar26;\n      if (local_28 != (int *)0x0) {\n        (*(code *)PTR___gmp_tmp_reentrant_free_0009b614)();\n      }\n    }\n    else {\n      if (*param_1 < unaff_s0) {\n        param_1 = (int *)(*(code *)PTR___gmpz_realloc_0009b5bc)(param_1,unaff_s0);\n      }\n      else {\n        param_1 = (int *)param_1[2];\n      }\n      param_2 = (int *)0x0;\n      param_3 = unaff_s2;\n      (*(code *)PTR___gmpn_sqrtrem_0009b0e0)();\n      puVar25 = auStack_40;\n    }\n  }\n  if (local_24 == *(int *)PTR___stack_chk_guard_0009b540) {\n    return;\n  }\n  uVar29 = 0x34694;\n  puVar21 = PTR___stack_chk_fail_0009b4d0;\n  (*(code *)PTR___stack_chk_fail_0009b4d0)();\n  puVar23 = puVar21 + 0x6e9a0;\n  puVar27 = puVar25 + -0x48;\n  puVar28 = puVar25 + -0x48;\n  *(undefined4 *)(puVar25 + -4) = uVar29;\n  *(undefined1 **)(puVar25 + -8) = auStack_40;\n  *(uint *)(puVar25 + -0xc) = unaff_s7;\n  *(int **)(puVar25 + -0x10) = unaff_s6;\n  *(int **)(puVar25 + -0x14) = unaff_s5;\n  *(int **)(puVar25 + -0x18) = unaff_s4;\n  *(int **)(puVar25 + -0x1c) = unaff_s3;\n  *(int **)(puVar25 + -0x20) = unaff_s2;\n  *(int *)(puVar25 + -0x24) = iVar16;\n  *(int *)(puVar25 + -0x28) = unaff_s0;\n  *(undefined **)(puVar25 + -0x38) = puVar23;\n  *(undefined4 *)(puVar25 + -0x2c) = **(undefined4 **)(puVar21 + 0x66ea0);\n  iVar16 = param_3[1];\n  if (iVar16 < 1) {\n    if (iVar16 < 0) {\n      (**(code **)(puVar21 + 0x66b2c))();\n      goto LAB_000347c8;\n    }\n    param_1[1] = 0;\n    param_2[1] = 0;\n    piVar10 = param_1;\n    piVar12 = param_2;\n  }\n  else {\n    unaff_s4 = param_3;\n    if (*param_2 < iVar16) {\nLAB_000347c8:\n      unaff_s5 = (int *)(**(code **)(puVar21 + 0x66f1c))(param_2,iVar16);\n      puVar23 = *(undefined **)(puVar25 + -0x38);\n    }\n    else {\n      unaff_s5 = (int *)param_2[2];\n    }\n    unaff_s0 = (iVar16 + 1) / 2;\n    param_1[1] = unaff_s0;\n    unaff_s6 = (int *)unaff_s4[2];\n    piVar12 = unaff_s5;\n    param_3 = unaff_s6;\n    if (unaff_s4 == param_1) {\n      unaff_s7 = unaff_s0 * 4;\n      *(undefined4 *)(puVar25 + -0x30) = 0;\n      if (unaff_s7 < 0x7f01) {\n        iVar13 = -(unaff_s7 + 7 & 0xfffffff8);\n        puVar28 = puVar25 + iVar13 + -0x48;\n        unaff_s4 = (int *)(puVar25 + iVar13 + -0x38);\n      }\n      else {\n        unaff_s4 = (int *)(**(code **)(puVar23 + -0x7d50))(puVar25 + -0x30,unaff_s7);\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n      }\n      iVar16 = (**(code **)(puVar23 + -0x7f60))(unaff_s4,unaff_s5,unaff_s6,iVar16);\n      puVar23 = *(undefined **)(puVar25 + -0x38);\n      if (param_1 != param_2) {\n        iVar13 = *unaff_s4;\n        if (unaff_s0 != 1) {\n          piVar10 = unaff_s4 + 1;\n          unaff_s4 = unaff_s4 + unaff_s0;\n          piVar9 = unaff_s6;\n          do {\n            *piVar9 = iVar13;\n            piVar3 = piVar10 + 1;\n            iVar13 = *piVar10;\n            piVar10 = piVar3;\n            piVar9 = piVar9 + 1;\n          } while (unaff_s4 != piVar3);\n          unaff_s7 = unaff_s7 - 4;\n          unaff_s6 = unaff_s6 + unaff_s0 + -1;\n        }\n        *unaff_s6 = iVar13;\n      }\n      piVar10 = *(int **)(puVar25 + -0x30);\n      if (piVar10 != (int *)0x0) {\n        (**(code **)(puVar23 + -0x7a2c))();\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n        param_2[1] = iVar16;\n        puVar27 = puVar28;\n        goto LAB_00034768;\n      }\n    }\n    else {\n      if (*param_1 < unaff_s0) {\n        piVar10 = (int *)(**(code **)(puVar23 + -0x7a84))(param_1,unaff_s0);\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n      }\n      else {\n        piVar10 = (int *)param_1[2];\n      }\n      iVar16 = (**(code **)(puVar23 + -0x7f60))();\n      puVar23 = *(undefined **)(puVar25 + -0x38);\n      puVar28 = puVar25 + -0x48;\n    }\n    param_2[1] = iVar16;\n    puVar27 = puVar28;\n  }\nLAB_00034768:\n  if (*(int *)(puVar25 + -0x2c) == **(int **)(puVar23 + -0x7b00)) {\n    return;\n  }\n  pcVar22 = *(code **)(puVar23 + -0x7b70);\n  uVar29 = 0x348d4;\n  (*pcVar22)();\n  pcVar24 = pcVar22 + 0x6e760;\n  *(undefined4 *)(puVar27 + -4) = uVar29;\n  *(uint *)(puVar27 + -8) = unaff_s7;\n  *(int **)(puVar27 + -0xc) = unaff_s6;\n  *(int **)(puVar27 + -0x10) = unaff_s5;\n  *(int **)(puVar27 + -0x14) = unaff_s4;\n  *(int **)(puVar27 + -0x18) = param_2;\n  *(int **)(puVar27 + -0x1c) = param_1;\n  *(int *)(puVar27 + -0x20) = iVar16;\n  *(int *)(puVar27 + -0x24) = unaff_s0;\n  *(code **)(puVar27 + -0x30) = pcVar24;\n  uVar18 = piVar12[1];\n  uVar4 = param_3[1];\n  uVar6 = -uVar4;\n  uVar17 = uVar18;\n  if ((int)uVar18 < 0) {\n    uVar17 = -uVar18;\n  }\n  if ((int)uVar4 < 0) {\n    uVar4 = -uVar4;\n  }\n  uVar14 = uVar4;\n  uVar19 = uVar18;\n  piVar9 = piVar12;\n  if ((int)uVar17 < (int)uVar4) {\n    uVar14 = uVar17;\n    uVar17 = uVar4;\n    uVar19 = uVar6;\n    piVar9 = param_3;\n    uVar6 = uVar18;\n    param_3 = piVar12;\n  }\n  if (*piVar10 < (int)(uVar17 + 1)) {\n    iVar16 = (**(code **)(pcVar22 + 0x66cdc))(piVar10);\n    pcVar24 = *(code **)(puVar27 + -0x30);\n  }\n  else {\n    iVar16 = piVar10[2];\n  }\n  iVar20 = piVar9[2];\n  iVar13 = param_3[2];\n  if ((int)(uVar19 ^ uVar6) < 0) {\n    if (uVar17 == uVar14) {\n      iVar15 = uVar17 * 4;\n      iVar11 = iVar20 + iVar15;\n      iVar8 = iVar13 + iVar15;\n      uVar6 = uVar17;\n      do {\n        uVar6 = uVar6 - 1;\n        if (uVar6 == 0xffffffff) goto LAB_00034bf8;\n        puVar1 = (uint *)(iVar11 + -4);\n        puVar2 = (uint *)(iVar8 + -4);\n        iVar11 = iVar11 + -4;\n        iVar8 = iVar8 + -4;\n      } while (*puVar1 == *puVar2);\n      if (*puVar2 < *puVar1) {\nLAB_00034bf8:\n        (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar20,iVar13,uVar17);\n        if ((0 < (int)uVar17) && (*(int *)(iVar16 + iVar15 + -4) == 0)) {\n          iVar16 = iVar16 + iVar15;\n          do {\n            uVar17 = uVar17 - 1;\n            if (uVar17 == 0) break;\n            piVar12 = (int *)(iVar16 + -8);\n            iVar16 = iVar16 + -4;\n          } while (*piVar12 == 0);\n        }\n        if ((int)uVar19 < 0) {\n          uVar17 = -uVar17;\n        }\n      }\n      else {\n        (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar13,iVar20);\n        if ((0 < (int)uVar17) && (*(int *)(iVar16 + iVar15 + -4) == 0)) {\n          iVar16 = iVar16 + iVar15;\n          do {\n            uVar17 = uVar17 - 1;\n            if (uVar17 == 0) break;\n            piVar12 = (int *)(iVar16 + -8);\n            iVar16 = iVar16 + -4;\n          } while (*piVar12 == 0);\n        }\n        if (-1 < (int)uVar19) {\n          uVar17 = -uVar17;\n        }\n      }\n      goto LAB_000349e8;\n    }\n    if (uVar14 == 0) {\nLAB_00034a50:\n      if ((iVar16 != iVar20) && ((int)uVar14 < (int)uVar17)) {\n        puVar5 = (undefined4 *)(iVar20 + uVar14 * 4);\n        puVar7 = (undefined4 *)(iVar16 + uVar14 * 4);\n        do {\n          *puVar7 = *puVar5;\n          puVar5 = puVar5 + 1;\n          puVar7 = puVar7 + 1;\n        } while (puVar5 != (undefined4 *)(iVar20 + uVar17 * 4));\n      }\n    }\n    else {\n      iVar13 = (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar20,iVar13,uVar14);\n      if (iVar13 == 0) goto LAB_00034a50;\n      if ((int)uVar14 < (int)uVar17) {\n        piVar12 = (int *)(iVar20 + uVar14 * 4);\n        iVar13 = *piVar12;\n        piVar9 = (int *)(iVar16 + uVar14 * 4);\n        *piVar9 = iVar13 + -1;\n        while (uVar14 = uVar14 + 1, iVar13 == 0) {\n          if (uVar17 == uVar14) goto LAB_00034a84;\n          iVar13 = piVar12[1];\n          piVar9[1] = iVar13 + -1;\n          piVar12 = piVar12 + 1;\n          piVar9 = piVar9 + 1;\n        }\n        goto LAB_00034a50;\n      }\n    }\nLAB_00034a84:\n    if ((0 < (int)uVar17) && (iVar13 = (uVar17 + 0x3fffffff) * 4, *(int *)(iVar16 + iVar13) == 0)) {\n      iVar16 = iVar16 + iVar13 + 4;\n      do {\n        uVar17 = uVar17 - 1;\n        if (uVar17 == 0) break;\n        piVar12 = (int *)(iVar16 + -8);\n        iVar16 = iVar16 + -4;\n      } while (*piVar12 == 0);\n    }\n    if ((int)uVar19 < 0) {\n      uVar17 = -uVar17;\n    }\n    goto LAB_000349e8;\n  }\n  if (uVar14 == 0) {\nLAB_0003499c:\n    if (iVar16 == iVar20) {\n      iVar13 = 0;\n    }\n    else if ((int)uVar14 < (int)uVar17) {\n      puVar7 = (undefined4 *)(iVar20 + uVar14 * 4);\n      puVar5 = (undefined4 *)(iVar16 + uVar14 * 4);\n      do {\n        *puVar5 = *puVar7;\n        puVar7 = puVar7 + 1;\n        puVar5 = puVar5 + 1;\n      } while (puVar7 != (undefined4 *)(iVar20 + uVar17 * 4));\n      iVar13 = 0;\n    }\n    else {\n      iVar13 = 0;\n    }\n  }\n  else {\n    iVar13 = (**(code **)(pcVar24 + -0x7d0c))(iVar16,iVar20,iVar13,uVar14);\n    if (iVar13 == 0) goto LAB_0003499c;\n    iVar13 = 1;\n    if ((int)uVar14 < (int)uVar17) {\n      piVar12 = (int *)(iVar20 + uVar14 * 4);\n      piVar9 = (int *)(iVar16 + uVar14 * 4);\n      iVar13 = *piVar12 + 1;\n      *piVar9 = iVar13;\n      while (uVar14 = uVar14 + 1, iVar13 == 0) {\n        if (uVar17 == uVar14) {\n          iVar13 = 1;\n          goto LAB_000349d4;\n        }\n        iVar13 = piVar12[1] + 1;\n        piVar9[1] = iVar13;\n        piVar12 = piVar12 + 1;\n        piVar9 = piVar9 + 1;\n      }\n      goto LAB_0003499c;\n    }\n  }\nLAB_000349d4:\n  *(int *)(iVar16 + uVar17 * 4) = iVar13;\n  uVar17 = uVar17 + iVar13;\n  if ((int)uVar19 < 0) {\n    uVar17 = -uVar17;\n  }\nLAB_000349e8:\n  piVar10[1] = uVar17;\n  return;\n}" { (declaration "uint *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "uint *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "undefined4 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "undefined4 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "int *piVar10;" primitive_type (pointer_declarator "*piVar10" * identifier) ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "int *piVar12;" primitive_type (pointer_declarator "*piVar12" * identifier) ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "int unaff_s0;" primitive_type identifier ;) (declaration "uint uVar14;" type_identifier identifier ;) (declaration "int iVar15;" primitive_type identifier ;) (declaration "int iVar16;" primitive_type identifier ;) (declaration "uint uVar17;" type_identifier identifier ;) (declaration "int *unaff_s2;" primitive_type (pointer_declarator "*unaff_s2" * identifier) ;) (declaration "uint uVar18;" type_identifier identifier ;) (declaration "uint uVar19;" type_identifier identifier ;) (declaration "int *unaff_s3;" primitive_type (pointer_declarator "*unaff_s3" * identifier) ;) (declaration "int *unaff_s4;" primitive_type (pointer_declarator "*unaff_s4" * identifier) ;) (declaration "int *unaff_s5;" primitive_type (pointer_declarator "*unaff_s5" * identifier) ;) (declaration "int iVar20;" primitive_type identifier ;) (declaration "int *unaff_s6;" primitive_type (pointer_declarator "*unaff_s6" * identifier) ;) (declaration "uint unaff_s7;" type_identifier identifier ;) (declaration "undefined *puVar21;" type_identifier (pointer_declarator "*puVar21" * identifier) ;) (declaration "code *pcVar22;" type_identifier (pointer_declarator "*pcVar22" * identifier) ;) (declaration "undefined *puVar23;" type_identifier (pointer_declarator "*puVar23" * identifier) ;) (declaration "code *pcVar24;" type_identifier (pointer_declarator "*pcVar24" * identifier) ;) (declaration "undefined1 *puVar25;" type_identifier (pointer_declarator "*puVar25" * identifier) ;) (declaration "undefined1 *puVar26;" type_identifier (pointer_declarator "*puVar26" * identifier) ;) (declaration "undefined1 *puVar27;" type_identifier (pointer_declarator "*puVar27" * identifier) ;) (declaration "undefined1 *puVar28;" type_identifier (pointer_declarator "*puVar28" * identifier) ;) (declaration "undefined4 uVar29;" type_identifier identifier ;) (declaration "undefined1 auStack_40 [16];" type_identifier (array_declarator "auStack_40 [16]" identifier [ number_literal ]) ;) (declaration "int *local_28;" primitive_type (pointer_declarator "*local_28" * identifier) ;) (declaration "int local_24;" primitive_type identifier ;) (expression_statement "puVar25 = auStack_40;" (assignment_expression "puVar25 = auStack_40" identifier = identifier) ;) (expression_statement "puVar26 = auStack_40;" (assignment_expression "puVar26 = auStack_40" identifier = identifier) ;) (expression_statement "local_24 = *(int *)PTR___stack_chk_guard_0009b540;" (assignment_expression "local_24 = *(int *)PTR___stack_chk_guard_0009b540" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_0009b540" * (cast_expression "(int *)PTR___stack_chk_guard_0009b540" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "iVar16 = param_2[1];" (assignment_expression "iVar16 = param_2[1]" identifier = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (if_statement "if (iVar16 < 1) {\n    if (iVar16 < 0) {\n      (*(code *)PTR___gmp_sqrt_of_negative_0009b1cc)();\n      goto LAB_000345b4;\n    }\n    param_1[1] = 0;\n  }\n  else {\n    unaff_s0 = (iVar16 + 1) / 2;\n    param_1[1] = unaff_s0;\n    unaff_s2 = (int *)param_2[2];\n    if (param_2 == param_1) {\nLAB_000345b4:\n      unaff_s4 = (int *)(unaff_s0 * 4);\n      local_28 = (int *)0x0;\n      if (unaff_s4 < (int *)0x7f01) {\n        iVar13 = -((int)unaff_s4 + 7U & 0xfffffff8);\n        puVar26 = auStack_40 + iVar13;\n        unaff_s3 = (int *)(&stack0xffffffd0 + iVar13);\n      }\n      else {\n        unaff_s3 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)(&local_28,unaff_s4);\n      }\n      param_2 = (int *)0x0;\n      param_3 = unaff_s2;\n      (*(code *)PTR___gmpn_sqrtrem_0009b0e0)(unaff_s3,0,unaff_s2,iVar16);\n      iVar13 = *unaff_s3;\n      if (unaff_s0 != 1) {\n        piVar10 = unaff_s3 + 1;\n        unaff_s3 = unaff_s3 + unaff_s0;\n        piVar12 = unaff_s2;\n        do {\n          *piVar12 = iVar13;\n          piVar9 = piVar10 + 1;\n          iVar13 = *piVar10;\n          piVar10 = piVar9;\n          piVar12 = piVar12 + 1;\n        } while (unaff_s3 != piVar9);\n        unaff_s4 = unaff_s4 + -1;\n        unaff_s2 = (int *)((int)unaff_s2 + (int)unaff_s4);\n      }\n      *unaff_s2 = iVar13;\n      param_1 = local_28;\n      puVar25 = puVar26;\n      if (local_28 != (int *)0x0) {\n        (*(code *)PTR___gmp_tmp_reentrant_free_0009b614)();\n      }\n    }\n    else {\n      if (*param_1 < unaff_s0) {\n        param_1 = (int *)(*(code *)PTR___gmpz_realloc_0009b5bc)(param_1,unaff_s0);\n      }\n      else {\n        param_1 = (int *)param_1[2];\n      }\n      param_2 = (int *)0x0;\n      param_3 = unaff_s2;\n      (*(code *)PTR___gmpn_sqrtrem_0009b0e0)();\n      puVar25 = auStack_40;\n    }\n  }" if (parenthesized_expression "(iVar16 < 1)" ( (binary_expression "iVar16 < 1" identifier < number_literal) )) (compound_statement "{\n    if (iVar16 < 0) {\n      (*(code *)PTR___gmp_sqrt_of_negative_0009b1cc)();\n      goto LAB_000345b4;\n    }\n    param_1[1] = 0;\n  }" { (if_statement "if (iVar16 < 0) {\n      (*(code *)PTR___gmp_sqrt_of_negative_0009b1cc)();\n      goto LAB_000345b4;\n    }" if (parenthesized_expression "(iVar16 < 0)" ( (binary_expression "iVar16 < 0" identifier < number_literal) )) (compound_statement "{\n      (*(code *)PTR___gmp_sqrt_of_negative_0009b1cc)();\n      goto LAB_000345b4;\n    }" { (expression_statement "(*(code *)PTR___gmp_sqrt_of_negative_0009b1cc)();" (call_expression "(*(code *)PTR___gmp_sqrt_of_negative_0009b1cc)()" (parenthesized_expression "(*(code *)PTR___gmp_sqrt_of_negative_0009b1cc)" ( (pointer_expression "*(code *)PTR___gmp_sqrt_of_negative_0009b1cc" * (cast_expression "(code *)PTR___gmp_sqrt_of_negative_0009b1cc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (goto_statement "goto LAB_000345b4;" goto statement_identifier ;) })) (expression_statement "param_1[1] = 0;" (assignment_expression "param_1[1] = 0" (subscript_expression "param_1[1]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else {\n    unaff_s0 = (iVar16 + 1) / 2;\n    param_1[1] = unaff_s0;\n    unaff_s2 = (int *)param_2[2];\n    if (param_2 == param_1) {\nLAB_000345b4:\n      unaff_s4 = (int *)(unaff_s0 * 4);\n      local_28 = (int *)0x0;\n      if (unaff_s4 < (int *)0x7f01) {\n        iVar13 = -((int)unaff_s4 + 7U & 0xfffffff8);\n        puVar26 = auStack_40 + iVar13;\n        unaff_s3 = (int *)(&stack0xffffffd0 + iVar13);\n      }\n      else {\n        unaff_s3 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)(&local_28,unaff_s4);\n      }\n      param_2 = (int *)0x0;\n      param_3 = unaff_s2;\n      (*(code *)PTR___gmpn_sqrtrem_0009b0e0)(unaff_s3,0,unaff_s2,iVar16);\n      iVar13 = *unaff_s3;\n      if (unaff_s0 != 1) {\n        piVar10 = unaff_s3 + 1;\n        unaff_s3 = unaff_s3 + unaff_s0;\n        piVar12 = unaff_s2;\n        do {\n          *piVar12 = iVar13;\n          piVar9 = piVar10 + 1;\n          iVar13 = *piVar10;\n          piVar10 = piVar9;\n          piVar12 = piVar12 + 1;\n        } while (unaff_s3 != piVar9);\n        unaff_s4 = unaff_s4 + -1;\n        unaff_s2 = (int *)((int)unaff_s2 + (int)unaff_s4);\n      }\n      *unaff_s2 = iVar13;\n      param_1 = local_28;\n      puVar25 = puVar26;\n      if (local_28 != (int *)0x0) {\n        (*(code *)PTR___gmp_tmp_reentrant_free_0009b614)();\n      }\n    }\n    else {\n      if (*param_1 < unaff_s0) {\n        param_1 = (int *)(*(code *)PTR___gmpz_realloc_0009b5bc)(param_1,unaff_s0);\n      }\n      else {\n        param_1 = (int *)param_1[2];\n      }\n      param_2 = (int *)0x0;\n      param_3 = unaff_s2;\n      (*(code *)PTR___gmpn_sqrtrem_0009b0e0)();\n      puVar25 = auStack_40;\n    }\n  }" else (compound_statement "{\n    unaff_s0 = (iVar16 + 1) / 2;\n    param_1[1] = unaff_s0;\n    unaff_s2 = (int *)param_2[2];\n    if (param_2 == param_1) {\nLAB_000345b4:\n      unaff_s4 = (int *)(unaff_s0 * 4);\n      local_28 = (int *)0x0;\n      if (unaff_s4 < (int *)0x7f01) {\n        iVar13 = -((int)unaff_s4 + 7U & 0xfffffff8);\n        puVar26 = auStack_40 + iVar13;\n        unaff_s3 = (int *)(&stack0xffffffd0 + iVar13);\n      }\n      else {\n        unaff_s3 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)(&local_28,unaff_s4);\n      }\n      param_2 = (int *)0x0;\n      param_3 = unaff_s2;\n      (*(code *)PTR___gmpn_sqrtrem_0009b0e0)(unaff_s3,0,unaff_s2,iVar16);\n      iVar13 = *unaff_s3;\n      if (unaff_s0 != 1) {\n        piVar10 = unaff_s3 + 1;\n        unaff_s3 = unaff_s3 + unaff_s0;\n        piVar12 = unaff_s2;\n        do {\n          *piVar12 = iVar13;\n          piVar9 = piVar10 + 1;\n          iVar13 = *piVar10;\n          piVar10 = piVar9;\n          piVar12 = piVar12 + 1;\n        } while (unaff_s3 != piVar9);\n        unaff_s4 = unaff_s4 + -1;\n        unaff_s2 = (int *)((int)unaff_s2 + (int)unaff_s4);\n      }\n      *unaff_s2 = iVar13;\n      param_1 = local_28;\n      puVar25 = puVar26;\n      if (local_28 != (int *)0x0) {\n        (*(code *)PTR___gmp_tmp_reentrant_free_0009b614)();\n      }\n    }\n    else {\n      if (*param_1 < unaff_s0) {\n        param_1 = (int *)(*(code *)PTR___gmpz_realloc_0009b5bc)(param_1,unaff_s0);\n      }\n      else {\n        param_1 = (int *)param_1[2];\n      }\n      param_2 = (int *)0x0;\n      param_3 = unaff_s2;\n      (*(code *)PTR___gmpn_sqrtrem_0009b0e0)();\n      puVar25 = auStack_40;\n    }\n  }" { (expression_statement "unaff_s0 = (iVar16 + 1) / 2;" (assignment_expression "unaff_s0 = (iVar16 + 1) / 2" identifier = (binary_expression "(iVar16 + 1) / 2" (parenthesized_expression "(iVar16 + 1)" ( (binary_expression "iVar16 + 1" identifier + number_literal) )) / number_literal)) ;) (expression_statement "param_1[1] = unaff_s0;" (assignment_expression "param_1[1] = unaff_s0" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "unaff_s2 = (int *)param_2[2];" (assignment_expression "unaff_s2 = (int *)param_2[2]" identifier = (cast_expression "(int *)param_2[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[2]" identifier [ number_literal ]))) ;) (if_statement "if (param_2 == param_1) {\nLAB_000345b4:\n      unaff_s4 = (int *)(unaff_s0 * 4);\n      local_28 = (int *)0x0;\n      if (unaff_s4 < (int *)0x7f01) {\n        iVar13 = -((int)unaff_s4 + 7U & 0xfffffff8);\n        puVar26 = auStack_40 + iVar13;\n        unaff_s3 = (int *)(&stack0xffffffd0 + iVar13);\n      }\n      else {\n        unaff_s3 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)(&local_28,unaff_s4);\n      }\n      param_2 = (int *)0x0;\n      param_3 = unaff_s2;\n      (*(code *)PTR___gmpn_sqrtrem_0009b0e0)(unaff_s3,0,unaff_s2,iVar16);\n      iVar13 = *unaff_s3;\n      if (unaff_s0 != 1) {\n        piVar10 = unaff_s3 + 1;\n        unaff_s3 = unaff_s3 + unaff_s0;\n        piVar12 = unaff_s2;\n        do {\n          *piVar12 = iVar13;\n          piVar9 = piVar10 + 1;\n          iVar13 = *piVar10;\n          piVar10 = piVar9;\n          piVar12 = piVar12 + 1;\n        } while (unaff_s3 != piVar9);\n        unaff_s4 = unaff_s4 + -1;\n        unaff_s2 = (int *)((int)unaff_s2 + (int)unaff_s4);\n      }\n      *unaff_s2 = iVar13;\n      param_1 = local_28;\n      puVar25 = puVar26;\n      if (local_28 != (int *)0x0) {\n        (*(code *)PTR___gmp_tmp_reentrant_free_0009b614)();\n      }\n    }\n    else {\n      if (*param_1 < unaff_s0) {\n        param_1 = (int *)(*(code *)PTR___gmpz_realloc_0009b5bc)(param_1,unaff_s0);\n      }\n      else {\n        param_1 = (int *)param_1[2];\n      }\n      param_2 = (int *)0x0;\n      param_3 = unaff_s2;\n      (*(code *)PTR___gmpn_sqrtrem_0009b0e0)();\n      puVar25 = auStack_40;\n    }" if (parenthesized_expression "(param_2 == param_1)" ( (binary_expression "param_2 == param_1" identifier == identifier) )) (compound_statement "{\nLAB_000345b4:\n      unaff_s4 = (int *)(unaff_s0 * 4);\n      local_28 = (int *)0x0;\n      if (unaff_s4 < (int *)0x7f01) {\n        iVar13 = -((int)unaff_s4 + 7U & 0xfffffff8);\n        puVar26 = auStack_40 + iVar13;\n        unaff_s3 = (int *)(&stack0xffffffd0 + iVar13);\n      }\n      else {\n        unaff_s3 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)(&local_28,unaff_s4);\n      }\n      param_2 = (int *)0x0;\n      param_3 = unaff_s2;\n      (*(code *)PTR___gmpn_sqrtrem_0009b0e0)(unaff_s3,0,unaff_s2,iVar16);\n      iVar13 = *unaff_s3;\n      if (unaff_s0 != 1) {\n        piVar10 = unaff_s3 + 1;\n        unaff_s3 = unaff_s3 + unaff_s0;\n        piVar12 = unaff_s2;\n        do {\n          *piVar12 = iVar13;\n          piVar9 = piVar10 + 1;\n          iVar13 = *piVar10;\n          piVar10 = piVar9;\n          piVar12 = piVar12 + 1;\n        } while (unaff_s3 != piVar9);\n        unaff_s4 = unaff_s4 + -1;\n        unaff_s2 = (int *)((int)unaff_s2 + (int)unaff_s4);\n      }\n      *unaff_s2 = iVar13;\n      param_1 = local_28;\n      puVar25 = puVar26;\n      if (local_28 != (int *)0x0) {\n        (*(code *)PTR___gmp_tmp_reentrant_free_0009b614)();\n      }\n    }" { (labeled_statement "LAB_000345b4:\n      unaff_s4 = (int *)(unaff_s0 * 4);" statement_identifier : (expression_statement "unaff_s4 = (int *)(unaff_s0 * 4);" (assignment_expression "unaff_s4 = (int *)(unaff_s0 * 4)" identifier = (cast_expression "(int *)(unaff_s0 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_s0 * 4)" ( (binary_expression "unaff_s0 * 4" identifier * number_literal) )))) ;)) (expression_statement "local_28 = (int *)0x0;" (assignment_expression "local_28 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (unaff_s4 < (int *)0x7f01) {\n        iVar13 = -((int)unaff_s4 + 7U & 0xfffffff8);\n        puVar26 = auStack_40 + iVar13;\n        unaff_s3 = (int *)(&stack0xffffffd0 + iVar13);\n      }\n      else {\n        unaff_s3 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)(&local_28,unaff_s4);\n      }" if (parenthesized_expression "(unaff_s4 < (int *)0x7f01)" ( (binary_expression "unaff_s4 < (int *)0x7f01" identifier < (cast_expression "(int *)0x7f01" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        iVar13 = -((int)unaff_s4 + 7U & 0xfffffff8);\n        puVar26 = auStack_40 + iVar13;\n        unaff_s3 = (int *)(&stack0xffffffd0 + iVar13);\n      }" { (expression_statement "iVar13 = -((int)unaff_s4 + 7U & 0xfffffff8);" (assignment_expression "iVar13 = -((int)unaff_s4 + 7U & 0xfffffff8)" identifier = (unary_expression "-((int)unaff_s4 + 7U & 0xfffffff8)" - (parenthesized_expression "((int)unaff_s4 + 7U & 0xfffffff8)" ( (binary_expression "(int)unaff_s4 + 7U & 0xfffffff8" (binary_expression "(int)unaff_s4 + 7U" (cast_expression "(int)unaff_s4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) & number_literal) )))) ;) (expression_statement "puVar26 = auStack_40 + iVar13;" (assignment_expression "puVar26 = auStack_40 + iVar13" identifier = (binary_expression "auStack_40 + iVar13" identifier + identifier)) ;) (expression_statement "unaff_s3 = (int *)(&stack0xffffffd0 + iVar13);" (assignment_expression "unaff_s3 = (int *)(&stack0xffffffd0 + iVar13)" identifier = (cast_expression "(int *)(&stack0xffffffd0 + iVar13)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&stack0xffffffd0 + iVar13)" ( (binary_expression "&stack0xffffffd0 + iVar13" (pointer_expression "&stack0xffffffd0" & identifier) + identifier) )))) ;) }) (else_clause "else {\n        unaff_s3 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)(&local_28,unaff_s4);\n      }" else (compound_statement "{\n        unaff_s3 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)(&local_28,unaff_s4);\n      }" { (expression_statement "unaff_s3 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)(&local_28,unaff_s4);" (assignment_expression "unaff_s3 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)(&local_28,unaff_s4)" identifier = (cast_expression "(int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)(&local_28,unaff_s4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)(&local_28,unaff_s4)" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)" ( (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0" * (cast_expression "(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(&local_28,unaff_s4)" ( (pointer_expression "&local_28" & identifier) , identifier ))))) ;) }))) (expression_statement "param_2 = (int *)0x0;" (assignment_expression "param_2 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "param_3 = unaff_s2;" (assignment_expression "param_3 = unaff_s2" identifier = identifier) ;) (expression_statement "(*(code *)PTR___gmpn_sqrtrem_0009b0e0)(unaff_s3,0,unaff_s2,iVar16);" (call_expression "(*(code *)PTR___gmpn_sqrtrem_0009b0e0)(unaff_s3,0,unaff_s2,iVar16)" (parenthesized_expression "(*(code *)PTR___gmpn_sqrtrem_0009b0e0)" ( (pointer_expression "*(code *)PTR___gmpn_sqrtrem_0009b0e0" * (cast_expression "(code *)PTR___gmpn_sqrtrem_0009b0e0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(unaff_s3,0,unaff_s2,iVar16)" ( identifier , number_literal , identifier , identifier ))) ;) (expression_statement "iVar13 = *unaff_s3;" (assignment_expression "iVar13 = *unaff_s3" identifier = (pointer_expression "*unaff_s3" * identifier)) ;) (if_statement "if (unaff_s0 != 1) {\n        piVar10 = unaff_s3 + 1;\n        unaff_s3 = unaff_s3 + unaff_s0;\n        piVar12 = unaff_s2;\n        do {\n          *piVar12 = iVar13;\n          piVar9 = piVar10 + 1;\n          iVar13 = *piVar10;\n          piVar10 = piVar9;\n          piVar12 = piVar12 + 1;\n        } while (unaff_s3 != piVar9);\n        unaff_s4 = unaff_s4 + -1;\n        unaff_s2 = (int *)((int)unaff_s2 + (int)unaff_s4);\n      }" if (parenthesized_expression "(unaff_s0 != 1)" ( (binary_expression "unaff_s0 != 1" identifier != number_literal) )) (compound_statement "{\n        piVar10 = unaff_s3 + 1;\n        unaff_s3 = unaff_s3 + unaff_s0;\n        piVar12 = unaff_s2;\n        do {\n          *piVar12 = iVar13;\n          piVar9 = piVar10 + 1;\n          iVar13 = *piVar10;\n          piVar10 = piVar9;\n          piVar12 = piVar12 + 1;\n        } while (unaff_s3 != piVar9);\n        unaff_s4 = unaff_s4 + -1;\n        unaff_s2 = (int *)((int)unaff_s2 + (int)unaff_s4);\n      }" { (expression_statement "piVar10 = unaff_s3 + 1;" (assignment_expression "piVar10 = unaff_s3 + 1" identifier = (binary_expression "unaff_s3 + 1" identifier + number_literal)) ;) (expression_statement "unaff_s3 = unaff_s3 + unaff_s0;" (assignment_expression "unaff_s3 = unaff_s3 + unaff_s0" identifier = (binary_expression "unaff_s3 + unaff_s0" identifier + identifier)) ;) (expression_statement "piVar12 = unaff_s2;" (assignment_expression "piVar12 = unaff_s2" identifier = identifier) ;) (do_statement "do {\n          *piVar12 = iVar13;\n          piVar9 = piVar10 + 1;\n          iVar13 = *piVar10;\n          piVar10 = piVar9;\n          piVar12 = piVar12 + 1;\n        } while (unaff_s3 != piVar9);" do (compound_statement "{\n          *piVar12 = iVar13;\n          piVar9 = piVar10 + 1;\n          iVar13 = *piVar10;\n          piVar10 = piVar9;\n          piVar12 = piVar12 + 1;\n        }" { (expression_statement "*piVar12 = iVar13;" (assignment_expression "*piVar12 = iVar13" (pointer_expression "*piVar12" * identifier) = identifier) ;) (expression_statement "piVar9 = piVar10 + 1;" (assignment_expression "piVar9 = piVar10 + 1" identifier = (binary_expression "piVar10 + 1" identifier + number_literal)) ;) (expression_statement "iVar13 = *piVar10;" (assignment_expression "iVar13 = *piVar10" identifier = (pointer_expression "*piVar10" * identifier)) ;) (expression_statement "piVar10 = piVar9;" (assignment_expression "piVar10 = piVar9" identifier = identifier) ;) (expression_statement "piVar12 = piVar12 + 1;" (assignment_expression "piVar12 = piVar12 + 1" identifier = (binary_expression "piVar12 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(unaff_s3 != piVar9)" ( (binary_expression "unaff_s3 != piVar9" identifier != identifier) )) ;) (expression_statement "unaff_s4 = unaff_s4 + -1;" (assignment_expression "unaff_s4 = unaff_s4 + -1" identifier = (binary_expression "unaff_s4 + -1" identifier + number_literal)) ;) (expression_statement "unaff_s2 = (int *)((int)unaff_s2 + (int)unaff_s4);" (assignment_expression "unaff_s2 = (int *)((int)unaff_s2 + (int)unaff_s4)" identifier = (cast_expression "(int *)((int)unaff_s2 + (int)unaff_s4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)unaff_s2 + (int)unaff_s4)" ( (binary_expression "(int)unaff_s2 + (int)unaff_s4" (cast_expression "(int)unaff_s2" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)unaff_s4" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) })) (expression_statement "*unaff_s2 = iVar13;" (assignment_expression "*unaff_s2 = iVar13" (pointer_expression "*unaff_s2" * identifier) = identifier) ;) (expression_statement "param_1 = local_28;" (assignment_expression "param_1 = local_28" identifier = identifier) ;) (expression_statement "puVar25 = puVar26;" (assignment_expression "puVar25 = puVar26" identifier = identifier) ;) (if_statement "if (local_28 != (int *)0x0) {\n        (*(code *)PTR___gmp_tmp_reentrant_free_0009b614)();\n      }" if (parenthesized_expression "(local_28 != (int *)0x0)" ( (binary_expression "local_28 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        (*(code *)PTR___gmp_tmp_reentrant_free_0009b614)();\n      }" { (expression_statement "(*(code *)PTR___gmp_tmp_reentrant_free_0009b614)();" (call_expression "(*(code *)PTR___gmp_tmp_reentrant_free_0009b614)()" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_free_0009b614)" ( (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_free_0009b614" * (cast_expression "(code *)PTR___gmp_tmp_reentrant_free_0009b614" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) })) }) (else_clause "else {\n      if (*param_1 < unaff_s0) {\n        param_1 = (int *)(*(code *)PTR___gmpz_realloc_0009b5bc)(param_1,unaff_s0);\n      }\n      else {\n        param_1 = (int *)param_1[2];\n      }\n      param_2 = (int *)0x0;\n      param_3 = unaff_s2;\n      (*(code *)PTR___gmpn_sqrtrem_0009b0e0)();\n      puVar25 = auStack_40;\n    }" else (compound_statement "{\n      if (*param_1 < unaff_s0) {\n        param_1 = (int *)(*(code *)PTR___gmpz_realloc_0009b5bc)(param_1,unaff_s0);\n      }\n      else {\n        param_1 = (int *)param_1[2];\n      }\n      param_2 = (int *)0x0;\n      param_3 = unaff_s2;\n      (*(code *)PTR___gmpn_sqrtrem_0009b0e0)();\n      puVar25 = auStack_40;\n    }" { (if_statement "if (*param_1 < unaff_s0) {\n        param_1 = (int *)(*(code *)PTR___gmpz_realloc_0009b5bc)(param_1,unaff_s0);\n      }\n      else {\n        param_1 = (int *)param_1[2];\n      }" if (parenthesized_expression "(*param_1 < unaff_s0)" ( (binary_expression "*param_1 < unaff_s0" (pointer_expression "*param_1" * identifier) < identifier) )) (compound_statement "{\n        param_1 = (int *)(*(code *)PTR___gmpz_realloc_0009b5bc)(param_1,unaff_s0);\n      }" { (expression_statement "param_1 = (int *)(*(code *)PTR___gmpz_realloc_0009b5bc)(param_1,unaff_s0);" (assignment_expression "param_1 = (int *)(*(code *)PTR___gmpz_realloc_0009b5bc)(param_1,unaff_s0)" identifier = (cast_expression "(int *)(*(code *)PTR___gmpz_realloc_0009b5bc)(param_1,unaff_s0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___gmpz_realloc_0009b5bc)(param_1,unaff_s0)" (parenthesized_expression "(*(code *)PTR___gmpz_realloc_0009b5bc)" ( (pointer_expression "*(code *)PTR___gmpz_realloc_0009b5bc" * (cast_expression "(code *)PTR___gmpz_realloc_0009b5bc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,unaff_s0)" ( identifier , identifier ))))) ;) }) (else_clause "else {\n        param_1 = (int *)param_1[2];\n      }" else (compound_statement "{\n        param_1 = (int *)param_1[2];\n      }" { (expression_statement "param_1 = (int *)param_1[2];" (assignment_expression "param_1 = (int *)param_1[2]" identifier = (cast_expression "(int *)param_1[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[2]" identifier [ number_literal ]))) ;) }))) (expression_statement "param_2 = (int *)0x0;" (assignment_expression "param_2 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "param_3 = unaff_s2;" (assignment_expression "param_3 = unaff_s2" identifier = identifier) ;) (expression_statement "(*(code *)PTR___gmpn_sqrtrem_0009b0e0)();" (call_expression "(*(code *)PTR___gmpn_sqrtrem_0009b0e0)()" (parenthesized_expression "(*(code *)PTR___gmpn_sqrtrem_0009b0e0)" ( (pointer_expression "*(code *)PTR___gmpn_sqrtrem_0009b0e0" * (cast_expression "(code *)PTR___gmpn_sqrtrem_0009b0e0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "puVar25 = auStack_40;" (assignment_expression "puVar25 = auStack_40" identifier = identifier) ;) }))) }))) (if_statement "if (local_24 == *(int *)PTR___stack_chk_guard_0009b540) {\n    return;\n  }" if (parenthesized_expression "(local_24 == *(int *)PTR___stack_chk_guard_0009b540)" ( (binary_expression "local_24 == *(int *)PTR___stack_chk_guard_0009b540" identifier == (pointer_expression "*(int *)PTR___stack_chk_guard_0009b540" * (cast_expression "(int *)PTR___stack_chk_guard_0009b540" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "uVar29 = 0x34694;" (assignment_expression "uVar29 = 0x34694" identifier = number_literal) ;) (expression_statement "puVar21 = PTR___stack_chk_fail_0009b4d0;" (assignment_expression "puVar21 = PTR___stack_chk_fail_0009b4d0" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_0009b4d0)();" (call_expression "(*(code *)PTR___stack_chk_fail_0009b4d0)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0009b4d0)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_0009b4d0" * (cast_expression "(code *)PTR___stack_chk_fail_0009b4d0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "puVar23 = puVar21 + 0x6e9a0;" (assignment_expression "puVar23 = puVar21 + 0x6e9a0" identifier = (binary_expression "puVar21 + 0x6e9a0" identifier + number_literal)) ;) (expression_statement "puVar27 = puVar25 + -0x48;" (assignment_expression "puVar27 = puVar25 + -0x48" identifier = (binary_expression "puVar25 + -0x48" identifier + number_literal)) ;) (expression_statement "puVar28 = puVar25 + -0x48;" (assignment_expression "puVar28 = puVar25 + -0x48" identifier = (binary_expression "puVar25 + -0x48" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar25 + -4) = uVar29;" (assignment_expression "*(undefined4 *)(puVar25 + -4) = uVar29" (pointer_expression "*(undefined4 *)(puVar25 + -4)" * (cast_expression "(undefined4 *)(puVar25 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar25 + -4)" ( (binary_expression "puVar25 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 **)(puVar25 + -8) = auStack_40;" (assignment_expression "*(undefined1 **)(puVar25 + -8) = auStack_40" (pointer_expression "*(undefined1 **)(puVar25 + -8)" * (cast_expression "(undefined1 **)(puVar25 + -8)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + -8)" ( (binary_expression "puVar25 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar25 + -0xc) = unaff_s7;" (assignment_expression "*(uint *)(puVar25 + -0xc) = unaff_s7" (pointer_expression "*(uint *)(puVar25 + -0xc)" * (cast_expression "(uint *)(puVar25 + -0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar25 + -0xc)" ( (binary_expression "puVar25 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar25 + -0x10) = unaff_s6;" (assignment_expression "*(int **)(puVar25 + -0x10) = unaff_s6" (pointer_expression "*(int **)(puVar25 + -0x10)" * (cast_expression "(int **)(puVar25 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + -0x10)" ( (binary_expression "puVar25 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar25 + -0x14) = unaff_s5;" (assignment_expression "*(int **)(puVar25 + -0x14) = unaff_s5" (pointer_expression "*(int **)(puVar25 + -0x14)" * (cast_expression "(int **)(puVar25 + -0x14)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + -0x14)" ( (binary_expression "puVar25 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar25 + -0x18) = unaff_s4;" (assignment_expression "*(int **)(puVar25 + -0x18) = unaff_s4" (pointer_expression "*(int **)(puVar25 + -0x18)" * (cast_expression "(int **)(puVar25 + -0x18)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + -0x18)" ( (binary_expression "puVar25 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar25 + -0x1c) = unaff_s3;" (assignment_expression "*(int **)(puVar25 + -0x1c) = unaff_s3" (pointer_expression "*(int **)(puVar25 + -0x1c)" * (cast_expression "(int **)(puVar25 + -0x1c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + -0x1c)" ( (binary_expression "puVar25 + -0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar25 + -0x20) = unaff_s2;" (assignment_expression "*(int **)(puVar25 + -0x20) = unaff_s2" (pointer_expression "*(int **)(puVar25 + -0x20)" * (cast_expression "(int **)(puVar25 + -0x20)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + -0x20)" ( (binary_expression "puVar25 + -0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar25 + -0x24) = iVar16;" (assignment_expression "*(int *)(puVar25 + -0x24) = iVar16" (pointer_expression "*(int *)(puVar25 + -0x24)" * (cast_expression "(int *)(puVar25 + -0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar25 + -0x24)" ( (binary_expression "puVar25 + -0x24" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar25 + -0x28) = unaff_s0;" (assignment_expression "*(int *)(puVar25 + -0x28) = unaff_s0" (pointer_expression "*(int *)(puVar25 + -0x28)" * (cast_expression "(int *)(puVar25 + -0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar25 + -0x28)" ( (binary_expression "puVar25 + -0x28" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)(puVar25 + -0x38) = puVar23;" (assignment_expression "*(undefined **)(puVar25 + -0x38) = puVar23" (pointer_expression "*(undefined **)(puVar25 + -0x38)" * (cast_expression "(undefined **)(puVar25 + -0x38)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + -0x38)" ( (binary_expression "puVar25 + -0x38" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar25 + -0x2c) = **(undefined4 **)(puVar21 + 0x66ea0);" (assignment_expression "*(undefined4 *)(puVar25 + -0x2c) = **(undefined4 **)(puVar21 + 0x66ea0)" (pointer_expression "*(undefined4 *)(puVar25 + -0x2c)" * (cast_expression "(undefined4 *)(puVar25 + -0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar25 + -0x2c)" ( (binary_expression "puVar25 + -0x2c" identifier + number_literal) )))) = (pointer_expression "**(undefined4 **)(puVar21 + 0x66ea0)" * (pointer_expression "*(undefined4 **)(puVar21 + 0x66ea0)" * (cast_expression "(undefined4 **)(puVar21 + 0x66ea0)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar21 + 0x66ea0)" ( (binary_expression "puVar21 + 0x66ea0" identifier + number_literal) )))))) ;) (expression_statement "iVar16 = param_3[1];" (assignment_expression "iVar16 = param_3[1]" identifier = (subscript_expression "param_3[1]" identifier [ number_literal ])) ;) (if_statement "if (iVar16 < 1) {\n    if (iVar16 < 0) {\n      (**(code **)(puVar21 + 0x66b2c))();\n      goto LAB_000347c8;\n    }\n    param_1[1] = 0;\n    param_2[1] = 0;\n    piVar10 = param_1;\n    piVar12 = param_2;\n  }\n  else {\n    unaff_s4 = param_3;\n    if (*param_2 < iVar16) {\nLAB_000347c8:\n      unaff_s5 = (int *)(**(code **)(puVar21 + 0x66f1c))(param_2,iVar16);\n      puVar23 = *(undefined **)(puVar25 + -0x38);\n    }\n    else {\n      unaff_s5 = (int *)param_2[2];\n    }\n    unaff_s0 = (iVar16 + 1) / 2;\n    param_1[1] = unaff_s0;\n    unaff_s6 = (int *)unaff_s4[2];\n    piVar12 = unaff_s5;\n    param_3 = unaff_s6;\n    if (unaff_s4 == param_1) {\n      unaff_s7 = unaff_s0 * 4;\n      *(undefined4 *)(puVar25 + -0x30) = 0;\n      if (unaff_s7 < 0x7f01) {\n        iVar13 = -(unaff_s7 + 7 & 0xfffffff8);\n        puVar28 = puVar25 + iVar13 + -0x48;\n        unaff_s4 = (int *)(puVar25 + iVar13 + -0x38);\n      }\n      else {\n        unaff_s4 = (int *)(**(code **)(puVar23 + -0x7d50))(puVar25 + -0x30,unaff_s7);\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n      }\n      iVar16 = (**(code **)(puVar23 + -0x7f60))(unaff_s4,unaff_s5,unaff_s6,iVar16);\n      puVar23 = *(undefined **)(puVar25 + -0x38);\n      if (param_1 != param_2) {\n        iVar13 = *unaff_s4;\n        if (unaff_s0 != 1) {\n          piVar10 = unaff_s4 + 1;\n          unaff_s4 = unaff_s4 + unaff_s0;\n          piVar9 = unaff_s6;\n          do {\n            *piVar9 = iVar13;\n            piVar3 = piVar10 + 1;\n            iVar13 = *piVar10;\n            piVar10 = piVar3;\n            piVar9 = piVar9 + 1;\n          } while (unaff_s4 != piVar3);\n          unaff_s7 = unaff_s7 - 4;\n          unaff_s6 = unaff_s6 + unaff_s0 + -1;\n        }\n        *unaff_s6 = iVar13;\n      }\n      piVar10 = *(int **)(puVar25 + -0x30);\n      if (piVar10 != (int *)0x0) {\n        (**(code **)(puVar23 + -0x7a2c))();\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n        param_2[1] = iVar16;\n        puVar27 = puVar28;\n        goto LAB_00034768;\n      }\n    }\n    else {\n      if (*param_1 < unaff_s0) {\n        piVar10 = (int *)(**(code **)(puVar23 + -0x7a84))(param_1,unaff_s0);\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n      }\n      else {\n        piVar10 = (int *)param_1[2];\n      }\n      iVar16 = (**(code **)(puVar23 + -0x7f60))();\n      puVar23 = *(undefined **)(puVar25 + -0x38);\n      puVar28 = puVar25 + -0x48;\n    }\n    param_2[1] = iVar16;\n    puVar27 = puVar28;\n  }" if (parenthesized_expression "(iVar16 < 1)" ( (binary_expression "iVar16 < 1" identifier < number_literal) )) (compound_statement "{\n    if (iVar16 < 0) {\n      (**(code **)(puVar21 + 0x66b2c))();\n      goto LAB_000347c8;\n    }\n    param_1[1] = 0;\n    param_2[1] = 0;\n    piVar10 = param_1;\n    piVar12 = param_2;\n  }" { (if_statement "if (iVar16 < 0) {\n      (**(code **)(puVar21 + 0x66b2c))();\n      goto LAB_000347c8;\n    }" if (parenthesized_expression "(iVar16 < 0)" ( (binary_expression "iVar16 < 0" identifier < number_literal) )) (compound_statement "{\n      (**(code **)(puVar21 + 0x66b2c))();\n      goto LAB_000347c8;\n    }" { (expression_statement "(**(code **)(puVar21 + 0x66b2c))();" (call_expression "(**(code **)(puVar21 + 0x66b2c))()" (parenthesized_expression "(**(code **)(puVar21 + 0x66b2c))" ( (pointer_expression "**(code **)(puVar21 + 0x66b2c)" * (pointer_expression "*(code **)(puVar21 + 0x66b2c)" * (cast_expression "(code **)(puVar21 + 0x66b2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar21 + 0x66b2c)" ( (binary_expression "puVar21 + 0x66b2c" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (goto_statement "goto LAB_000347c8;" goto statement_identifier ;) })) (expression_statement "param_1[1] = 0;" (assignment_expression "param_1[1] = 0" (subscript_expression "param_1[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[1] = 0;" (assignment_expression "param_2[1] = 0" (subscript_expression "param_2[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar10 = param_1;" (assignment_expression "piVar10 = param_1" identifier = identifier) ;) (expression_statement "piVar12 = param_2;" (assignment_expression "piVar12 = param_2" identifier = identifier) ;) }) (else_clause "else {\n    unaff_s4 = param_3;\n    if (*param_2 < iVar16) {\nLAB_000347c8:\n      unaff_s5 = (int *)(**(code **)(puVar21 + 0x66f1c))(param_2,iVar16);\n      puVar23 = *(undefined **)(puVar25 + -0x38);\n    }\n    else {\n      unaff_s5 = (int *)param_2[2];\n    }\n    unaff_s0 = (iVar16 + 1) / 2;\n    param_1[1] = unaff_s0;\n    unaff_s6 = (int *)unaff_s4[2];\n    piVar12 = unaff_s5;\n    param_3 = unaff_s6;\n    if (unaff_s4 == param_1) {\n      unaff_s7 = unaff_s0 * 4;\n      *(undefined4 *)(puVar25 + -0x30) = 0;\n      if (unaff_s7 < 0x7f01) {\n        iVar13 = -(unaff_s7 + 7 & 0xfffffff8);\n        puVar28 = puVar25 + iVar13 + -0x48;\n        unaff_s4 = (int *)(puVar25 + iVar13 + -0x38);\n      }\n      else {\n        unaff_s4 = (int *)(**(code **)(puVar23 + -0x7d50))(puVar25 + -0x30,unaff_s7);\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n      }\n      iVar16 = (**(code **)(puVar23 + -0x7f60))(unaff_s4,unaff_s5,unaff_s6,iVar16);\n      puVar23 = *(undefined **)(puVar25 + -0x38);\n      if (param_1 != param_2) {\n        iVar13 = *unaff_s4;\n        if (unaff_s0 != 1) {\n          piVar10 = unaff_s4 + 1;\n          unaff_s4 = unaff_s4 + unaff_s0;\n          piVar9 = unaff_s6;\n          do {\n            *piVar9 = iVar13;\n            piVar3 = piVar10 + 1;\n            iVar13 = *piVar10;\n            piVar10 = piVar3;\n            piVar9 = piVar9 + 1;\n          } while (unaff_s4 != piVar3);\n          unaff_s7 = unaff_s7 - 4;\n          unaff_s6 = unaff_s6 + unaff_s0 + -1;\n        }\n        *unaff_s6 = iVar13;\n      }\n      piVar10 = *(int **)(puVar25 + -0x30);\n      if (piVar10 != (int *)0x0) {\n        (**(code **)(puVar23 + -0x7a2c))();\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n        param_2[1] = iVar16;\n        puVar27 = puVar28;\n        goto LAB_00034768;\n      }\n    }\n    else {\n      if (*param_1 < unaff_s0) {\n        piVar10 = (int *)(**(code **)(puVar23 + -0x7a84))(param_1,unaff_s0);\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n      }\n      else {\n        piVar10 = (int *)param_1[2];\n      }\n      iVar16 = (**(code **)(puVar23 + -0x7f60))();\n      puVar23 = *(undefined **)(puVar25 + -0x38);\n      puVar28 = puVar25 + -0x48;\n    }\n    param_2[1] = iVar16;\n    puVar27 = puVar28;\n  }" else (compound_statement "{\n    unaff_s4 = param_3;\n    if (*param_2 < iVar16) {\nLAB_000347c8:\n      unaff_s5 = (int *)(**(code **)(puVar21 + 0x66f1c))(param_2,iVar16);\n      puVar23 = *(undefined **)(puVar25 + -0x38);\n    }\n    else {\n      unaff_s5 = (int *)param_2[2];\n    }\n    unaff_s0 = (iVar16 + 1) / 2;\n    param_1[1] = unaff_s0;\n    unaff_s6 = (int *)unaff_s4[2];\n    piVar12 = unaff_s5;\n    param_3 = unaff_s6;\n    if (unaff_s4 == param_1) {\n      unaff_s7 = unaff_s0 * 4;\n      *(undefined4 *)(puVar25 + -0x30) = 0;\n      if (unaff_s7 < 0x7f01) {\n        iVar13 = -(unaff_s7 + 7 & 0xfffffff8);\n        puVar28 = puVar25 + iVar13 + -0x48;\n        unaff_s4 = (int *)(puVar25 + iVar13 + -0x38);\n      }\n      else {\n        unaff_s4 = (int *)(**(code **)(puVar23 + -0x7d50))(puVar25 + -0x30,unaff_s7);\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n      }\n      iVar16 = (**(code **)(puVar23 + -0x7f60))(unaff_s4,unaff_s5,unaff_s6,iVar16);\n      puVar23 = *(undefined **)(puVar25 + -0x38);\n      if (param_1 != param_2) {\n        iVar13 = *unaff_s4;\n        if (unaff_s0 != 1) {\n          piVar10 = unaff_s4 + 1;\n          unaff_s4 = unaff_s4 + unaff_s0;\n          piVar9 = unaff_s6;\n          do {\n            *piVar9 = iVar13;\n            piVar3 = piVar10 + 1;\n            iVar13 = *piVar10;\n            piVar10 = piVar3;\n            piVar9 = piVar9 + 1;\n          } while (unaff_s4 != piVar3);\n          unaff_s7 = unaff_s7 - 4;\n          unaff_s6 = unaff_s6 + unaff_s0 + -1;\n        }\n        *unaff_s6 = iVar13;\n      }\n      piVar10 = *(int **)(puVar25 + -0x30);\n      if (piVar10 != (int *)0x0) {\n        (**(code **)(puVar23 + -0x7a2c))();\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n        param_2[1] = iVar16;\n        puVar27 = puVar28;\n        goto LAB_00034768;\n      }\n    }\n    else {\n      if (*param_1 < unaff_s0) {\n        piVar10 = (int *)(**(code **)(puVar23 + -0x7a84))(param_1,unaff_s0);\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n      }\n      else {\n        piVar10 = (int *)param_1[2];\n      }\n      iVar16 = (**(code **)(puVar23 + -0x7f60))();\n      puVar23 = *(undefined **)(puVar25 + -0x38);\n      puVar28 = puVar25 + -0x48;\n    }\n    param_2[1] = iVar16;\n    puVar27 = puVar28;\n  }" { (expression_statement "unaff_s4 = param_3;" (assignment_expression "unaff_s4 = param_3" identifier = identifier) ;) (if_statement "if (*param_2 < iVar16) {\nLAB_000347c8:\n      unaff_s5 = (int *)(**(code **)(puVar21 + 0x66f1c))(param_2,iVar16);\n      puVar23 = *(undefined **)(puVar25 + -0x38);\n    }\n    else {\n      unaff_s5 = (int *)param_2[2];\n    }" if (parenthesized_expression "(*param_2 < iVar16)" ( (binary_expression "*param_2 < iVar16" (pointer_expression "*param_2" * identifier) < identifier) )) (compound_statement "{\nLAB_000347c8:\n      unaff_s5 = (int *)(**(code **)(puVar21 + 0x66f1c))(param_2,iVar16);\n      puVar23 = *(undefined **)(puVar25 + -0x38);\n    }" { (labeled_statement "LAB_000347c8:\n      unaff_s5 = (int *)(**(code **)(puVar21 + 0x66f1c))(param_2,iVar16);" statement_identifier : (expression_statement "unaff_s5 = (int *)(**(code **)(puVar21 + 0x66f1c))(param_2,iVar16);" (assignment_expression "unaff_s5 = (int *)(**(code **)(puVar21 + 0x66f1c))(param_2,iVar16)" identifier = (cast_expression "(int *)(**(code **)(puVar21 + 0x66f1c))(param_2,iVar16)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar21 + 0x66f1c))(param_2,iVar16)" (parenthesized_expression "(**(code **)(puVar21 + 0x66f1c))" ( (pointer_expression "**(code **)(puVar21 + 0x66f1c)" * (pointer_expression "*(code **)(puVar21 + 0x66f1c)" * (cast_expression "(code **)(puVar21 + 0x66f1c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar21 + 0x66f1c)" ( (binary_expression "puVar21 + 0x66f1c" identifier + number_literal) ))))) )) (argument_list "(param_2,iVar16)" ( identifier , identifier ))))) ;)) (expression_statement "puVar23 = *(undefined **)(puVar25 + -0x38);" (assignment_expression "puVar23 = *(undefined **)(puVar25 + -0x38)" identifier = (pointer_expression "*(undefined **)(puVar25 + -0x38)" * (cast_expression "(undefined **)(puVar25 + -0x38)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + -0x38)" ( (binary_expression "puVar25 + -0x38" identifier + number_literal) ))))) ;) }) (else_clause "else {\n      unaff_s5 = (int *)param_2[2];\n    }" else (compound_statement "{\n      unaff_s5 = (int *)param_2[2];\n    }" { (expression_statement "unaff_s5 = (int *)param_2[2];" (assignment_expression "unaff_s5 = (int *)param_2[2]" identifier = (cast_expression "(int *)param_2[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[2]" identifier [ number_literal ]))) ;) }))) (expression_statement "unaff_s0 = (iVar16 + 1) / 2;" (assignment_expression "unaff_s0 = (iVar16 + 1) / 2" identifier = (binary_expression "(iVar16 + 1) / 2" (parenthesized_expression "(iVar16 + 1)" ( (binary_expression "iVar16 + 1" identifier + number_literal) )) / number_literal)) ;) (expression_statement "param_1[1] = unaff_s0;" (assignment_expression "param_1[1] = unaff_s0" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "unaff_s6 = (int *)unaff_s4[2];" (assignment_expression "unaff_s6 = (int *)unaff_s4[2]" identifier = (cast_expression "(int *)unaff_s4[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "unaff_s4[2]" identifier [ number_literal ]))) ;) (expression_statement "piVar12 = unaff_s5;" (assignment_expression "piVar12 = unaff_s5" identifier = identifier) ;) (expression_statement "param_3 = unaff_s6;" (assignment_expression "param_3 = unaff_s6" identifier = identifier) ;) (if_statement "if (unaff_s4 == param_1) {\n      unaff_s7 = unaff_s0 * 4;\n      *(undefined4 *)(puVar25 + -0x30) = 0;\n      if (unaff_s7 < 0x7f01) {\n        iVar13 = -(unaff_s7 + 7 & 0xfffffff8);\n        puVar28 = puVar25 + iVar13 + -0x48;\n        unaff_s4 = (int *)(puVar25 + iVar13 + -0x38);\n      }\n      else {\n        unaff_s4 = (int *)(**(code **)(puVar23 + -0x7d50))(puVar25 + -0x30,unaff_s7);\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n      }\n      iVar16 = (**(code **)(puVar23 + -0x7f60))(unaff_s4,unaff_s5,unaff_s6,iVar16);\n      puVar23 = *(undefined **)(puVar25 + -0x38);\n      if (param_1 != param_2) {\n        iVar13 = *unaff_s4;\n        if (unaff_s0 != 1) {\n          piVar10 = unaff_s4 + 1;\n          unaff_s4 = unaff_s4 + unaff_s0;\n          piVar9 = unaff_s6;\n          do {\n            *piVar9 = iVar13;\n            piVar3 = piVar10 + 1;\n            iVar13 = *piVar10;\n            piVar10 = piVar3;\n            piVar9 = piVar9 + 1;\n          } while (unaff_s4 != piVar3);\n          unaff_s7 = unaff_s7 - 4;\n          unaff_s6 = unaff_s6 + unaff_s0 + -1;\n        }\n        *unaff_s6 = iVar13;\n      }\n      piVar10 = *(int **)(puVar25 + -0x30);\n      if (piVar10 != (int *)0x0) {\n        (**(code **)(puVar23 + -0x7a2c))();\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n        param_2[1] = iVar16;\n        puVar27 = puVar28;\n        goto LAB_00034768;\n      }\n    }\n    else {\n      if (*param_1 < unaff_s0) {\n        piVar10 = (int *)(**(code **)(puVar23 + -0x7a84))(param_1,unaff_s0);\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n      }\n      else {\n        piVar10 = (int *)param_1[2];\n      }\n      iVar16 = (**(code **)(puVar23 + -0x7f60))();\n      puVar23 = *(undefined **)(puVar25 + -0x38);\n      puVar28 = puVar25 + -0x48;\n    }" if (parenthesized_expression "(unaff_s4 == param_1)" ( (binary_expression "unaff_s4 == param_1" identifier == identifier) )) (compound_statement "{\n      unaff_s7 = unaff_s0 * 4;\n      *(undefined4 *)(puVar25 + -0x30) = 0;\n      if (unaff_s7 < 0x7f01) {\n        iVar13 = -(unaff_s7 + 7 & 0xfffffff8);\n        puVar28 = puVar25 + iVar13 + -0x48;\n        unaff_s4 = (int *)(puVar25 + iVar13 + -0x38);\n      }\n      else {\n        unaff_s4 = (int *)(**(code **)(puVar23 + -0x7d50))(puVar25 + -0x30,unaff_s7);\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n      }\n      iVar16 = (**(code **)(puVar23 + -0x7f60))(unaff_s4,unaff_s5,unaff_s6,iVar16);\n      puVar23 = *(undefined **)(puVar25 + -0x38);\n      if (param_1 != param_2) {\n        iVar13 = *unaff_s4;\n        if (unaff_s0 != 1) {\n          piVar10 = unaff_s4 + 1;\n          unaff_s4 = unaff_s4 + unaff_s0;\n          piVar9 = unaff_s6;\n          do {\n            *piVar9 = iVar13;\n            piVar3 = piVar10 + 1;\n            iVar13 = *piVar10;\n            piVar10 = piVar3;\n            piVar9 = piVar9 + 1;\n          } while (unaff_s4 != piVar3);\n          unaff_s7 = unaff_s7 - 4;\n          unaff_s6 = unaff_s6 + unaff_s0 + -1;\n        }\n        *unaff_s6 = iVar13;\n      }\n      piVar10 = *(int **)(puVar25 + -0x30);\n      if (piVar10 != (int *)0x0) {\n        (**(code **)(puVar23 + -0x7a2c))();\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n        param_2[1] = iVar16;\n        puVar27 = puVar28;\n        goto LAB_00034768;\n      }\n    }" { (expression_statement "unaff_s7 = unaff_s0 * 4;" (assignment_expression "unaff_s7 = unaff_s0 * 4" identifier = (binary_expression "unaff_s0 * 4" identifier * number_literal)) ;) (expression_statement "*(undefined4 *)(puVar25 + -0x30) = 0;" (assignment_expression "*(undefined4 *)(puVar25 + -0x30) = 0" (pointer_expression "*(undefined4 *)(puVar25 + -0x30)" * (cast_expression "(undefined4 *)(puVar25 + -0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar25 + -0x30)" ( (binary_expression "puVar25 + -0x30" identifier + number_literal) )))) = number_literal) ;) (if_statement "if (unaff_s7 < 0x7f01) {\n        iVar13 = -(unaff_s7 + 7 & 0xfffffff8);\n        puVar28 = puVar25 + iVar13 + -0x48;\n        unaff_s4 = (int *)(puVar25 + iVar13 + -0x38);\n      }\n      else {\n        unaff_s4 = (int *)(**(code **)(puVar23 + -0x7d50))(puVar25 + -0x30,unaff_s7);\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n      }" if (parenthesized_expression "(unaff_s7 < 0x7f01)" ( (binary_expression "unaff_s7 < 0x7f01" identifier < number_literal) )) (compound_statement "{\n        iVar13 = -(unaff_s7 + 7 & 0xfffffff8);\n        puVar28 = puVar25 + iVar13 + -0x48;\n        unaff_s4 = (int *)(puVar25 + iVar13 + -0x38);\n      }" { (expression_statement "iVar13 = -(unaff_s7 + 7 & 0xfffffff8);" (assignment_expression "iVar13 = -(unaff_s7 + 7 & 0xfffffff8)" identifier = (unary_expression "-(unaff_s7 + 7 & 0xfffffff8)" - (parenthesized_expression "(unaff_s7 + 7 & 0xfffffff8)" ( (binary_expression "unaff_s7 + 7 & 0xfffffff8" (binary_expression "unaff_s7 + 7" identifier + number_literal) & number_literal) )))) ;) (expression_statement "puVar28 = puVar25 + iVar13 + -0x48;" (assignment_expression "puVar28 = puVar25 + iVar13 + -0x48" identifier = (binary_expression "puVar25 + iVar13 + -0x48" (binary_expression "puVar25 + iVar13" identifier + identifier) + number_literal)) ;) (expression_statement "unaff_s4 = (int *)(puVar25 + iVar13 + -0x38);" (assignment_expression "unaff_s4 = (int *)(puVar25 + iVar13 + -0x38)" identifier = (cast_expression "(int *)(puVar25 + iVar13 + -0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar25 + iVar13 + -0x38)" ( (binary_expression "puVar25 + iVar13 + -0x38" (binary_expression "puVar25 + iVar13" identifier + identifier) + number_literal) )))) ;) }) (else_clause "else {\n        unaff_s4 = (int *)(**(code **)(puVar23 + -0x7d50))(puVar25 + -0x30,unaff_s7);\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n      }" else (compound_statement "{\n        unaff_s4 = (int *)(**(code **)(puVar23 + -0x7d50))(puVar25 + -0x30,unaff_s7);\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n      }" { (expression_statement "unaff_s4 = (int *)(**(code **)(puVar23 + -0x7d50))(puVar25 + -0x30,unaff_s7);" (assignment_expression "unaff_s4 = (int *)(**(code **)(puVar23 + -0x7d50))(puVar25 + -0x30,unaff_s7)" identifier = (cast_expression "(int *)(**(code **)(puVar23 + -0x7d50))(puVar25 + -0x30,unaff_s7)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar23 + -0x7d50))(puVar25 + -0x30,unaff_s7)" (parenthesized_expression "(**(code **)(puVar23 + -0x7d50))" ( (pointer_expression "**(code **)(puVar23 + -0x7d50)" * (pointer_expression "*(code **)(puVar23 + -0x7d50)" * (cast_expression "(code **)(puVar23 + -0x7d50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar23 + -0x7d50)" ( (binary_expression "puVar23 + -0x7d50" identifier + number_literal) ))))) )) (argument_list "(puVar25 + -0x30,unaff_s7)" ( (binary_expression "puVar25 + -0x30" identifier + number_literal) , identifier ))))) ;) (expression_statement "puVar23 = *(undefined **)(puVar25 + -0x38);" (assignment_expression "puVar23 = *(undefined **)(puVar25 + -0x38)" identifier = (pointer_expression "*(undefined **)(puVar25 + -0x38)" * (cast_expression "(undefined **)(puVar25 + -0x38)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + -0x38)" ( (binary_expression "puVar25 + -0x38" identifier + number_literal) ))))) ;) }))) (expression_statement "iVar16 = (**(code **)(puVar23 + -0x7f60))(unaff_s4,unaff_s5,unaff_s6,iVar16);" (assignment_expression "iVar16 = (**(code **)(puVar23 + -0x7f60))(unaff_s4,unaff_s5,unaff_s6,iVar16)" identifier = (call_expression "(**(code **)(puVar23 + -0x7f60))(unaff_s4,unaff_s5,unaff_s6,iVar16)" (parenthesized_expression "(**(code **)(puVar23 + -0x7f60))" ( (pointer_expression "**(code **)(puVar23 + -0x7f60)" * (pointer_expression "*(code **)(puVar23 + -0x7f60)" * (cast_expression "(code **)(puVar23 + -0x7f60)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar23 + -0x7f60)" ( (binary_expression "puVar23 + -0x7f60" identifier + number_literal) ))))) )) (argument_list "(unaff_s4,unaff_s5,unaff_s6,iVar16)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "puVar23 = *(undefined **)(puVar25 + -0x38);" (assignment_expression "puVar23 = *(undefined **)(puVar25 + -0x38)" identifier = (pointer_expression "*(undefined **)(puVar25 + -0x38)" * (cast_expression "(undefined **)(puVar25 + -0x38)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + -0x38)" ( (binary_expression "puVar25 + -0x38" identifier + number_literal) ))))) ;) (if_statement "if (param_1 != param_2) {\n        iVar13 = *unaff_s4;\n        if (unaff_s0 != 1) {\n          piVar10 = unaff_s4 + 1;\n          unaff_s4 = unaff_s4 + unaff_s0;\n          piVar9 = unaff_s6;\n          do {\n            *piVar9 = iVar13;\n            piVar3 = piVar10 + 1;\n            iVar13 = *piVar10;\n            piVar10 = piVar3;\n            piVar9 = piVar9 + 1;\n          } while (unaff_s4 != piVar3);\n          unaff_s7 = unaff_s7 - 4;\n          unaff_s6 = unaff_s6 + unaff_s0 + -1;\n        }\n        *unaff_s6 = iVar13;\n      }" if (parenthesized_expression "(param_1 != param_2)" ( (binary_expression "param_1 != param_2" identifier != identifier) )) (compound_statement "{\n        iVar13 = *unaff_s4;\n        if (unaff_s0 != 1) {\n          piVar10 = unaff_s4 + 1;\n          unaff_s4 = unaff_s4 + unaff_s0;\n          piVar9 = unaff_s6;\n          do {\n            *piVar9 = iVar13;\n            piVar3 = piVar10 + 1;\n            iVar13 = *piVar10;\n            piVar10 = piVar3;\n            piVar9 = piVar9 + 1;\n          } while (unaff_s4 != piVar3);\n          unaff_s7 = unaff_s7 - 4;\n          unaff_s6 = unaff_s6 + unaff_s0 + -1;\n        }\n        *unaff_s6 = iVar13;\n      }" { (expression_statement "iVar13 = *unaff_s4;" (assignment_expression "iVar13 = *unaff_s4" identifier = (pointer_expression "*unaff_s4" * identifier)) ;) (if_statement "if (unaff_s0 != 1) {\n          piVar10 = unaff_s4 + 1;\n          unaff_s4 = unaff_s4 + unaff_s0;\n          piVar9 = unaff_s6;\n          do {\n            *piVar9 = iVar13;\n            piVar3 = piVar10 + 1;\n            iVar13 = *piVar10;\n            piVar10 = piVar3;\n            piVar9 = piVar9 + 1;\n          } while (unaff_s4 != piVar3);\n          unaff_s7 = unaff_s7 - 4;\n          unaff_s6 = unaff_s6 + unaff_s0 + -1;\n        }" if (parenthesized_expression "(unaff_s0 != 1)" ( (binary_expression "unaff_s0 != 1" identifier != number_literal) )) (compound_statement "{\n          piVar10 = unaff_s4 + 1;\n          unaff_s4 = unaff_s4 + unaff_s0;\n          piVar9 = unaff_s6;\n          do {\n            *piVar9 = iVar13;\n            piVar3 = piVar10 + 1;\n            iVar13 = *piVar10;\n            piVar10 = piVar3;\n            piVar9 = piVar9 + 1;\n          } while (unaff_s4 != piVar3);\n          unaff_s7 = unaff_s7 - 4;\n          unaff_s6 = unaff_s6 + unaff_s0 + -1;\n        }" { (expression_statement "piVar10 = unaff_s4 + 1;" (assignment_expression "piVar10 = unaff_s4 + 1" identifier = (binary_expression "unaff_s4 + 1" identifier + number_literal)) ;) (expression_statement "unaff_s4 = unaff_s4 + unaff_s0;" (assignment_expression "unaff_s4 = unaff_s4 + unaff_s0" identifier = (binary_expression "unaff_s4 + unaff_s0" identifier + identifier)) ;) (expression_statement "piVar9 = unaff_s6;" (assignment_expression "piVar9 = unaff_s6" identifier = identifier) ;) (do_statement "do {\n            *piVar9 = iVar13;\n            piVar3 = piVar10 + 1;\n            iVar13 = *piVar10;\n            piVar10 = piVar3;\n            piVar9 = piVar9 + 1;\n          } while (unaff_s4 != piVar3);" do (compound_statement "{\n            *piVar9 = iVar13;\n            piVar3 = piVar10 + 1;\n            iVar13 = *piVar10;\n            piVar10 = piVar3;\n            piVar9 = piVar9 + 1;\n          }" { (expression_statement "*piVar9 = iVar13;" (assignment_expression "*piVar9 = iVar13" (pointer_expression "*piVar9" * identifier) = identifier) ;) (expression_statement "piVar3 = piVar10 + 1;" (assignment_expression "piVar3 = piVar10 + 1" identifier = (binary_expression "piVar10 + 1" identifier + number_literal)) ;) (expression_statement "iVar13 = *piVar10;" (assignment_expression "iVar13 = *piVar10" identifier = (pointer_expression "*piVar10" * identifier)) ;) (expression_statement "piVar10 = piVar3;" (assignment_expression "piVar10 = piVar3" identifier = identifier) ;) (expression_statement "piVar9 = piVar9 + 1;" (assignment_expression "piVar9 = piVar9 + 1" identifier = (binary_expression "piVar9 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(unaff_s4 != piVar3)" ( (binary_expression "unaff_s4 != piVar3" identifier != identifier) )) ;) (expression_statement "unaff_s7 = unaff_s7 - 4;" (assignment_expression "unaff_s7 = unaff_s7 - 4" identifier = (binary_expression "unaff_s7 - 4" identifier - number_literal)) ;) (expression_statement "unaff_s6 = unaff_s6 + unaff_s0 + -1;" (assignment_expression "unaff_s6 = unaff_s6 + unaff_s0 + -1" identifier = (binary_expression "unaff_s6 + unaff_s0 + -1" (binary_expression "unaff_s6 + unaff_s0" identifier + identifier) + number_literal)) ;) })) (expression_statement "*unaff_s6 = iVar13;" (assignment_expression "*unaff_s6 = iVar13" (pointer_expression "*unaff_s6" * identifier) = identifier) ;) })) (expression_statement "piVar10 = *(int **)(puVar25 + -0x30);" (assignment_expression "piVar10 = *(int **)(puVar25 + -0x30)" identifier = (pointer_expression "*(int **)(puVar25 + -0x30)" * (cast_expression "(int **)(puVar25 + -0x30)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + -0x30)" ( (binary_expression "puVar25 + -0x30" identifier + number_literal) ))))) ;) (if_statement "if (piVar10 != (int *)0x0) {\n        (**(code **)(puVar23 + -0x7a2c))();\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n        param_2[1] = iVar16;\n        puVar27 = puVar28;\n        goto LAB_00034768;\n      }" if (parenthesized_expression "(piVar10 != (int *)0x0)" ( (binary_expression "piVar10 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        (**(code **)(puVar23 + -0x7a2c))();\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n        param_2[1] = iVar16;\n        puVar27 = puVar28;\n        goto LAB_00034768;\n      }" { (expression_statement "(**(code **)(puVar23 + -0x7a2c))();" (call_expression "(**(code **)(puVar23 + -0x7a2c))()" (parenthesized_expression "(**(code **)(puVar23 + -0x7a2c))" ( (pointer_expression "**(code **)(puVar23 + -0x7a2c)" * (pointer_expression "*(code **)(puVar23 + -0x7a2c)" * (cast_expression "(code **)(puVar23 + -0x7a2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar23 + -0x7a2c)" ( (binary_expression "puVar23 + -0x7a2c" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "puVar23 = *(undefined **)(puVar25 + -0x38);" (assignment_expression "puVar23 = *(undefined **)(puVar25 + -0x38)" identifier = (pointer_expression "*(undefined **)(puVar25 + -0x38)" * (cast_expression "(undefined **)(puVar25 + -0x38)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + -0x38)" ( (binary_expression "puVar25 + -0x38" identifier + number_literal) ))))) ;) (expression_statement "param_2[1] = iVar16;" (assignment_expression "param_2[1] = iVar16" (subscript_expression "param_2[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar27 = puVar28;" (assignment_expression "puVar27 = puVar28" identifier = identifier) ;) (goto_statement "goto LAB_00034768;" goto statement_identifier ;) })) }) (else_clause "else {\n      if (*param_1 < unaff_s0) {\n        piVar10 = (int *)(**(code **)(puVar23 + -0x7a84))(param_1,unaff_s0);\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n      }\n      else {\n        piVar10 = (int *)param_1[2];\n      }\n      iVar16 = (**(code **)(puVar23 + -0x7f60))();\n      puVar23 = *(undefined **)(puVar25 + -0x38);\n      puVar28 = puVar25 + -0x48;\n    }" else (compound_statement "{\n      if (*param_1 < unaff_s0) {\n        piVar10 = (int *)(**(code **)(puVar23 + -0x7a84))(param_1,unaff_s0);\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n      }\n      else {\n        piVar10 = (int *)param_1[2];\n      }\n      iVar16 = (**(code **)(puVar23 + -0x7f60))();\n      puVar23 = *(undefined **)(puVar25 + -0x38);\n      puVar28 = puVar25 + -0x48;\n    }" { (if_statement "if (*param_1 < unaff_s0) {\n        piVar10 = (int *)(**(code **)(puVar23 + -0x7a84))(param_1,unaff_s0);\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n      }\n      else {\n        piVar10 = (int *)param_1[2];\n      }" if (parenthesized_expression "(*param_1 < unaff_s0)" ( (binary_expression "*param_1 < unaff_s0" (pointer_expression "*param_1" * identifier) < identifier) )) (compound_statement "{\n        piVar10 = (int *)(**(code **)(puVar23 + -0x7a84))(param_1,unaff_s0);\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n      }" { (expression_statement "piVar10 = (int *)(**(code **)(puVar23 + -0x7a84))(param_1,unaff_s0);" (assignment_expression "piVar10 = (int *)(**(code **)(puVar23 + -0x7a84))(param_1,unaff_s0)" identifier = (cast_expression "(int *)(**(code **)(puVar23 + -0x7a84))(param_1,unaff_s0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar23 + -0x7a84))(param_1,unaff_s0)" (parenthesized_expression "(**(code **)(puVar23 + -0x7a84))" ( (pointer_expression "**(code **)(puVar23 + -0x7a84)" * (pointer_expression "*(code **)(puVar23 + -0x7a84)" * (cast_expression "(code **)(puVar23 + -0x7a84)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar23 + -0x7a84)" ( (binary_expression "puVar23 + -0x7a84" identifier + number_literal) ))))) )) (argument_list "(param_1,unaff_s0)" ( identifier , identifier ))))) ;) (expression_statement "puVar23 = *(undefined **)(puVar25 + -0x38);" (assignment_expression "puVar23 = *(undefined **)(puVar25 + -0x38)" identifier = (pointer_expression "*(undefined **)(puVar25 + -0x38)" * (cast_expression "(undefined **)(puVar25 + -0x38)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + -0x38)" ( (binary_expression "puVar25 + -0x38" identifier + number_literal) ))))) ;) }) (else_clause "else {\n        piVar10 = (int *)param_1[2];\n      }" else (compound_statement "{\n        piVar10 = (int *)param_1[2];\n      }" { (expression_statement "piVar10 = (int *)param_1[2];" (assignment_expression "piVar10 = (int *)param_1[2]" identifier = (cast_expression "(int *)param_1[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[2]" identifier [ number_literal ]))) ;) }))) (expression_statement "iVar16 = (**(code **)(puVar23 + -0x7f60))();" (assignment_expression "iVar16 = (**(code **)(puVar23 + -0x7f60))()" identifier = (call_expression "(**(code **)(puVar23 + -0x7f60))()" (parenthesized_expression "(**(code **)(puVar23 + -0x7f60))" ( (pointer_expression "**(code **)(puVar23 + -0x7f60)" * (pointer_expression "*(code **)(puVar23 + -0x7f60)" * (cast_expression "(code **)(puVar23 + -0x7f60)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar23 + -0x7f60)" ( (binary_expression "puVar23 + -0x7f60" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;) (expression_statement "puVar23 = *(undefined **)(puVar25 + -0x38);" (assignment_expression "puVar23 = *(undefined **)(puVar25 + -0x38)" identifier = (pointer_expression "*(undefined **)(puVar25 + -0x38)" * (cast_expression "(undefined **)(puVar25 + -0x38)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + -0x38)" ( (binary_expression "puVar25 + -0x38" identifier + number_literal) ))))) ;) (expression_statement "puVar28 = puVar25 + -0x48;" (assignment_expression "puVar28 = puVar25 + -0x48" identifier = (binary_expression "puVar25 + -0x48" identifier + number_literal)) ;) }))) (expression_statement "param_2[1] = iVar16;" (assignment_expression "param_2[1] = iVar16" (subscript_expression "param_2[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar27 = puVar28;" (assignment_expression "puVar27 = puVar28" identifier = identifier) ;) }))) (labeled_statement "LAB_00034768:\n  if (*(int *)(puVar25 + -0x2c) == **(int **)(puVar23 + -0x7b00)) {\n    return;\n  }" statement_identifier : (if_statement "if (*(int *)(puVar25 + -0x2c) == **(int **)(puVar23 + -0x7b00)) {\n    return;\n  }" if (parenthesized_expression "(*(int *)(puVar25 + -0x2c) == **(int **)(puVar23 + -0x7b00))" ( (binary_expression "*(int *)(puVar25 + -0x2c) == **(int **)(puVar23 + -0x7b00)" (pointer_expression "*(int *)(puVar25 + -0x2c)" * (cast_expression "(int *)(puVar25 + -0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar25 + -0x2c)" ( (binary_expression "puVar25 + -0x2c" identifier + number_literal) )))) == (pointer_expression "**(int **)(puVar23 + -0x7b00)" * (pointer_expression "*(int **)(puVar23 + -0x7b00)" * (cast_expression "(int **)(puVar23 + -0x7b00)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar23 + -0x7b00)" ( (binary_expression "puVar23 + -0x7b00" identifier + number_literal) )))))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) }))) (expression_statement "pcVar22 = *(code **)(puVar23 + -0x7b70);" (assignment_expression "pcVar22 = *(code **)(puVar23 + -0x7b70)" identifier = (pointer_expression "*(code **)(puVar23 + -0x7b70)" * (cast_expression "(code **)(puVar23 + -0x7b70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar23 + -0x7b70)" ( (binary_expression "puVar23 + -0x7b70" identifier + number_literal) ))))) ;) (expression_statement "uVar29 = 0x348d4;" (assignment_expression "uVar29 = 0x348d4" identifier = number_literal) ;) (expression_statement "(*pcVar22)();" (call_expression "(*pcVar22)()" (parenthesized_expression "(*pcVar22)" ( (pointer_expression "*pcVar22" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar24 = pcVar22 + 0x6e760;" (assignment_expression "pcVar24 = pcVar22 + 0x6e760" identifier = (binary_expression "pcVar22 + 0x6e760" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar27 + -4) = uVar29;" (assignment_expression "*(undefined4 *)(puVar27 + -4) = uVar29" (pointer_expression "*(undefined4 *)(puVar27 + -4)" * (cast_expression "(undefined4 *)(puVar27 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar27 + -4)" ( (binary_expression "puVar27 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar27 + -8) = unaff_s7;" (assignment_expression "*(uint *)(puVar27 + -8) = unaff_s7" (pointer_expression "*(uint *)(puVar27 + -8)" * (cast_expression "(uint *)(puVar27 + -8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar27 + -8)" ( (binary_expression "puVar27 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar27 + -0xc) = unaff_s6;" (assignment_expression "*(int **)(puVar27 + -0xc) = unaff_s6" (pointer_expression "*(int **)(puVar27 + -0xc)" * (cast_expression "(int **)(puVar27 + -0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar27 + -0xc)" ( (binary_expression "puVar27 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar27 + -0x10) = unaff_s5;" (assignment_expression "*(int **)(puVar27 + -0x10) = unaff_s5" (pointer_expression "*(int **)(puVar27 + -0x10)" * (cast_expression "(int **)(puVar27 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar27 + -0x10)" ( (binary_expression "puVar27 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar27 + -0x14) = unaff_s4;" (assignment_expression "*(int **)(puVar27 + -0x14) = unaff_s4" (pointer_expression "*(int **)(puVar27 + -0x14)" * (cast_expression "(int **)(puVar27 + -0x14)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar27 + -0x14)" ( (binary_expression "puVar27 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar27 + -0x18) = param_2;" (assignment_expression "*(int **)(puVar27 + -0x18) = param_2" (pointer_expression "*(int **)(puVar27 + -0x18)" * (cast_expression "(int **)(puVar27 + -0x18)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar27 + -0x18)" ( (binary_expression "puVar27 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar27 + -0x1c) = param_1;" (assignment_expression "*(int **)(puVar27 + -0x1c) = param_1" (pointer_expression "*(int **)(puVar27 + -0x1c)" * (cast_expression "(int **)(puVar27 + -0x1c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar27 + -0x1c)" ( (binary_expression "puVar27 + -0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar27 + -0x20) = iVar16;" (assignment_expression "*(int *)(puVar27 + -0x20) = iVar16" (pointer_expression "*(int *)(puVar27 + -0x20)" * (cast_expression "(int *)(puVar27 + -0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar27 + -0x20)" ( (binary_expression "puVar27 + -0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar27 + -0x24) = unaff_s0;" (assignment_expression "*(int *)(puVar27 + -0x24) = unaff_s0" (pointer_expression "*(int *)(puVar27 + -0x24)" * (cast_expression "(int *)(puVar27 + -0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar27 + -0x24)" ( (binary_expression "puVar27 + -0x24" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar27 + -0x30) = pcVar24;" (assignment_expression "*(code **)(puVar27 + -0x30) = pcVar24" (pointer_expression "*(code **)(puVar27 + -0x30)" * (cast_expression "(code **)(puVar27 + -0x30)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar27 + -0x30)" ( (binary_expression "puVar27 + -0x30" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar18 = piVar12[1];" (assignment_expression "uVar18 = piVar12[1]" identifier = (subscript_expression "piVar12[1]" identifier [ number_literal ])) ;) (expression_statement "uVar4 = param_3[1];" (assignment_expression "uVar4 = param_3[1]" identifier = (subscript_expression "param_3[1]" identifier [ number_literal ])) ;) (expression_statement "uVar6 = -uVar4;" (assignment_expression "uVar6 = -uVar4" identifier = (unary_expression "-uVar4" - identifier)) ;) (expression_statement "uVar17 = uVar18;" (assignment_expression "uVar17 = uVar18" identifier = identifier) ;) (if_statement "if ((int)uVar18 < 0) {\n    uVar17 = -uVar18;\n  }" if (parenthesized_expression "((int)uVar18 < 0)" ( (binary_expression "(int)uVar18 < 0" (cast_expression "(int)uVar18" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    uVar17 = -uVar18;\n  }" { (expression_statement "uVar17 = -uVar18;" (assignment_expression "uVar17 = -uVar18" identifier = (unary_expression "-uVar18" - identifier)) ;) })) (if_statement "if ((int)uVar4 < 0) {\n    uVar4 = -uVar4;\n  }" if (parenthesized_expression "((int)uVar4 < 0)" ( (binary_expression "(int)uVar4 < 0" (cast_expression "(int)uVar4" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    uVar4 = -uVar4;\n  }" { (expression_statement "uVar4 = -uVar4;" (assignment_expression "uVar4 = -uVar4" identifier = (unary_expression "-uVar4" - identifier)) ;) })) (expression_statement "uVar14 = uVar4;" (assignment_expression "uVar14 = uVar4" identifier = identifier) ;) (expression_statement "uVar19 = uVar18;" (assignment_expression "uVar19 = uVar18" identifier = identifier) ;) (expression_statement "piVar9 = piVar12;" (assignment_expression "piVar9 = piVar12" identifier = identifier) ;) (if_statement "if ((int)uVar17 < (int)uVar4) {\n    uVar14 = uVar17;\n    uVar17 = uVar4;\n    uVar19 = uVar6;\n    piVar9 = param_3;\n    uVar6 = uVar18;\n    param_3 = piVar12;\n  }" if (parenthesized_expression "((int)uVar17 < (int)uVar4)" ( (binary_expression "(int)uVar17 < (int)uVar4" (cast_expression "(int)uVar17" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)uVar4" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    uVar14 = uVar17;\n    uVar17 = uVar4;\n    uVar19 = uVar6;\n    piVar9 = param_3;\n    uVar6 = uVar18;\n    param_3 = piVar12;\n  }" { (expression_statement "uVar14 = uVar17;" (assignment_expression "uVar14 = uVar17" identifier = identifier) ;) (expression_statement "uVar17 = uVar4;" (assignment_expression "uVar17 = uVar4" identifier = identifier) ;) (expression_statement "uVar19 = uVar6;" (assignment_expression "uVar19 = uVar6" identifier = identifier) ;) (expression_statement "piVar9 = param_3;" (assignment_expression "piVar9 = param_3" identifier = identifier) ;) (expression_statement "uVar6 = uVar18;" (assignment_expression "uVar6 = uVar18" identifier = identifier) ;) (expression_statement "param_3 = piVar12;" (assignment_expression "param_3 = piVar12" identifier = identifier) ;) })) (if_statement "if (*piVar10 < (int)(uVar17 + 1)) {\n    iVar16 = (**(code **)(pcVar22 + 0x66cdc))(piVar10);\n    pcVar24 = *(code **)(puVar27 + -0x30);\n  }\n  else {\n    iVar16 = piVar10[2];\n  }" if (parenthesized_expression "(*piVar10 < (int)(uVar17 + 1))" ( (binary_expression "*piVar10 < (int)(uVar17 + 1)" (pointer_expression "*piVar10" * identifier) < (cast_expression "(int)(uVar17 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar17 + 1)" ( (binary_expression "uVar17 + 1" identifier + number_literal) )))) )) (compound_statement "{\n    iVar16 = (**(code **)(pcVar22 + 0x66cdc))(piVar10);\n    pcVar24 = *(code **)(puVar27 + -0x30);\n  }" { (expression_statement "iVar16 = (**(code **)(pcVar22 + 0x66cdc))(piVar10);" (assignment_expression "iVar16 = (**(code **)(pcVar22 + 0x66cdc))(piVar10)" identifier = (call_expression "(**(code **)(pcVar22 + 0x66cdc))(piVar10)" (parenthesized_expression "(**(code **)(pcVar22 + 0x66cdc))" ( (pointer_expression "**(code **)(pcVar22 + 0x66cdc)" * (pointer_expression "*(code **)(pcVar22 + 0x66cdc)" * (cast_expression "(code **)(pcVar22 + 0x66cdc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar22 + 0x66cdc)" ( (binary_expression "pcVar22 + 0x66cdc" identifier + number_literal) ))))) )) (argument_list "(piVar10)" ( identifier )))) ;) (expression_statement "pcVar24 = *(code **)(puVar27 + -0x30);" (assignment_expression "pcVar24 = *(code **)(puVar27 + -0x30)" identifier = (pointer_expression "*(code **)(puVar27 + -0x30)" * (cast_expression "(code **)(puVar27 + -0x30)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar27 + -0x30)" ( (binary_expression "puVar27 + -0x30" identifier + number_literal) ))))) ;) }) (else_clause "else {\n    iVar16 = piVar10[2];\n  }" else (compound_statement "{\n    iVar16 = piVar10[2];\n  }" { (expression_statement "iVar16 = piVar10[2];" (assignment_expression "iVar16 = piVar10[2]" identifier = (subscript_expression "piVar10[2]" identifier [ number_literal ])) ;) }))) (expression_statement "iVar20 = piVar9[2];" (assignment_expression "iVar20 = piVar9[2]" identifier = (subscript_expression "piVar9[2]" identifier [ number_literal ])) ;) (expression_statement "iVar13 = param_3[2];" (assignment_expression "iVar13 = param_3[2]" identifier = (subscript_expression "param_3[2]" identifier [ number_literal ])) ;) (if_statement "if ((int)(uVar19 ^ uVar6) < 0) {\n    if (uVar17 == uVar14) {\n      iVar15 = uVar17 * 4;\n      iVar11 = iVar20 + iVar15;\n      iVar8 = iVar13 + iVar15;\n      uVar6 = uVar17;\n      do {\n        uVar6 = uVar6 - 1;\n        if (uVar6 == 0xffffffff) goto LAB_00034bf8;\n        puVar1 = (uint *)(iVar11 + -4);\n        puVar2 = (uint *)(iVar8 + -4);\n        iVar11 = iVar11 + -4;\n        iVar8 = iVar8 + -4;\n      } while (*puVar1 == *puVar2);\n      if (*puVar2 < *puVar1) {\nLAB_00034bf8:\n        (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar20,iVar13,uVar17);\n        if ((0 < (int)uVar17) && (*(int *)(iVar16 + iVar15 + -4) == 0)) {\n          iVar16 = iVar16 + iVar15;\n          do {\n            uVar17 = uVar17 - 1;\n            if (uVar17 == 0) break;\n            piVar12 = (int *)(iVar16 + -8);\n            iVar16 = iVar16 + -4;\n          } while (*piVar12 == 0);\n        }\n        if ((int)uVar19 < 0) {\n          uVar17 = -uVar17;\n        }\n      }\n      else {\n        (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar13,iVar20);\n        if ((0 < (int)uVar17) && (*(int *)(iVar16 + iVar15 + -4) == 0)) {\n          iVar16 = iVar16 + iVar15;\n          do {\n            uVar17 = uVar17 - 1;\n            if (uVar17 == 0) break;\n            piVar12 = (int *)(iVar16 + -8);\n            iVar16 = iVar16 + -4;\n          } while (*piVar12 == 0);\n        }\n        if (-1 < (int)uVar19) {\n          uVar17 = -uVar17;\n        }\n      }\n      goto LAB_000349e8;\n    }\n    if (uVar14 == 0) {\nLAB_00034a50:\n      if ((iVar16 != iVar20) && ((int)uVar14 < (int)uVar17)) {\n        puVar5 = (undefined4 *)(iVar20 + uVar14 * 4);\n        puVar7 = (undefined4 *)(iVar16 + uVar14 * 4);\n        do {\n          *puVar7 = *puVar5;\n          puVar5 = puVar5 + 1;\n          puVar7 = puVar7 + 1;\n        } while (puVar5 != (undefined4 *)(iVar20 + uVar17 * 4));\n      }\n    }\n    else {\n      iVar13 = (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar20,iVar13,uVar14);\n      if (iVar13 == 0) goto LAB_00034a50;\n      if ((int)uVar14 < (int)uVar17) {\n        piVar12 = (int *)(iVar20 + uVar14 * 4);\n        iVar13 = *piVar12;\n        piVar9 = (int *)(iVar16 + uVar14 * 4);\n        *piVar9 = iVar13 + -1;\n        while (uVar14 = uVar14 + 1, iVar13 == 0) {\n          if (uVar17 == uVar14) goto LAB_00034a84;\n          iVar13 = piVar12[1];\n          piVar9[1] = iVar13 + -1;\n          piVar12 = piVar12 + 1;\n          piVar9 = piVar9 + 1;\n        }\n        goto LAB_00034a50;\n      }\n    }\nLAB_00034a84:\n    if ((0 < (int)uVar17) && (iVar13 = (uVar17 + 0x3fffffff) * 4, *(int *)(iVar16 + iVar13) == 0)) {\n      iVar16 = iVar16 + iVar13 + 4;\n      do {\n        uVar17 = uVar17 - 1;\n        if (uVar17 == 0) break;\n        piVar12 = (int *)(iVar16 + -8);\n        iVar16 = iVar16 + -4;\n      } while (*piVar12 == 0);\n    }\n    if ((int)uVar19 < 0) {\n      uVar17 = -uVar17;\n    }\n    goto LAB_000349e8;\n  }" if (parenthesized_expression "((int)(uVar19 ^ uVar6) < 0)" ( (binary_expression "(int)(uVar19 ^ uVar6) < 0" (cast_expression "(int)(uVar19 ^ uVar6)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar19 ^ uVar6)" ( (binary_expression "uVar19 ^ uVar6" identifier ^ identifier) ))) < number_literal) )) (compound_statement "{\n    if (uVar17 == uVar14) {\n      iVar15 = uVar17 * 4;\n      iVar11 = iVar20 + iVar15;\n      iVar8 = iVar13 + iVar15;\n      uVar6 = uVar17;\n      do {\n        uVar6 = uVar6 - 1;\n        if (uVar6 == 0xffffffff) goto LAB_00034bf8;\n        puVar1 = (uint *)(iVar11 + -4);\n        puVar2 = (uint *)(iVar8 + -4);\n        iVar11 = iVar11 + -4;\n        iVar8 = iVar8 + -4;\n      } while (*puVar1 == *puVar2);\n      if (*puVar2 < *puVar1) {\nLAB_00034bf8:\n        (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar20,iVar13,uVar17);\n        if ((0 < (int)uVar17) && (*(int *)(iVar16 + iVar15 + -4) == 0)) {\n          iVar16 = iVar16 + iVar15;\n          do {\n            uVar17 = uVar17 - 1;\n            if (uVar17 == 0) break;\n            piVar12 = (int *)(iVar16 + -8);\n            iVar16 = iVar16 + -4;\n          } while (*piVar12 == 0);\n        }\n        if ((int)uVar19 < 0) {\n          uVar17 = -uVar17;\n        }\n      }\n      else {\n        (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar13,iVar20);\n        if ((0 < (int)uVar17) && (*(int *)(iVar16 + iVar15 + -4) == 0)) {\n          iVar16 = iVar16 + iVar15;\n          do {\n            uVar17 = uVar17 - 1;\n            if (uVar17 == 0) break;\n            piVar12 = (int *)(iVar16 + -8);\n            iVar16 = iVar16 + -4;\n          } while (*piVar12 == 0);\n        }\n        if (-1 < (int)uVar19) {\n          uVar17 = -uVar17;\n        }\n      }\n      goto LAB_000349e8;\n    }\n    if (uVar14 == 0) {\nLAB_00034a50:\n      if ((iVar16 != iVar20) && ((int)uVar14 < (int)uVar17)) {\n        puVar5 = (undefined4 *)(iVar20 + uVar14 * 4);\n        puVar7 = (undefined4 *)(iVar16 + uVar14 * 4);\n        do {\n          *puVar7 = *puVar5;\n          puVar5 = puVar5 + 1;\n          puVar7 = puVar7 + 1;\n        } while (puVar5 != (undefined4 *)(iVar20 + uVar17 * 4));\n      }\n    }\n    else {\n      iVar13 = (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar20,iVar13,uVar14);\n      if (iVar13 == 0) goto LAB_00034a50;\n      if ((int)uVar14 < (int)uVar17) {\n        piVar12 = (int *)(iVar20 + uVar14 * 4);\n        iVar13 = *piVar12;\n        piVar9 = (int *)(iVar16 + uVar14 * 4);\n        *piVar9 = iVar13 + -1;\n        while (uVar14 = uVar14 + 1, iVar13 == 0) {\n          if (uVar17 == uVar14) goto LAB_00034a84;\n          iVar13 = piVar12[1];\n          piVar9[1] = iVar13 + -1;\n          piVar12 = piVar12 + 1;\n          piVar9 = piVar9 + 1;\n        }\n        goto LAB_00034a50;\n      }\n    }\nLAB_00034a84:\n    if ((0 < (int)uVar17) && (iVar13 = (uVar17 + 0x3fffffff) * 4, *(int *)(iVar16 + iVar13) == 0)) {\n      iVar16 = iVar16 + iVar13 + 4;\n      do {\n        uVar17 = uVar17 - 1;\n        if (uVar17 == 0) break;\n        piVar12 = (int *)(iVar16 + -8);\n        iVar16 = iVar16 + -4;\n      } while (*piVar12 == 0);\n    }\n    if ((int)uVar19 < 0) {\n      uVar17 = -uVar17;\n    }\n    goto LAB_000349e8;\n  }" { (if_statement "if (uVar17 == uVar14) {\n      iVar15 = uVar17 * 4;\n      iVar11 = iVar20 + iVar15;\n      iVar8 = iVar13 + iVar15;\n      uVar6 = uVar17;\n      do {\n        uVar6 = uVar6 - 1;\n        if (uVar6 == 0xffffffff) goto LAB_00034bf8;\n        puVar1 = (uint *)(iVar11 + -4);\n        puVar2 = (uint *)(iVar8 + -4);\n        iVar11 = iVar11 + -4;\n        iVar8 = iVar8 + -4;\n      } while (*puVar1 == *puVar2);\n      if (*puVar2 < *puVar1) {\nLAB_00034bf8:\n        (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar20,iVar13,uVar17);\n        if ((0 < (int)uVar17) && (*(int *)(iVar16 + iVar15 + -4) == 0)) {\n          iVar16 = iVar16 + iVar15;\n          do {\n            uVar17 = uVar17 - 1;\n            if (uVar17 == 0) break;\n            piVar12 = (int *)(iVar16 + -8);\n            iVar16 = iVar16 + -4;\n          } while (*piVar12 == 0);\n        }\n        if ((int)uVar19 < 0) {\n          uVar17 = -uVar17;\n        }\n      }\n      else {\n        (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar13,iVar20);\n        if ((0 < (int)uVar17) && (*(int *)(iVar16 + iVar15 + -4) == 0)) {\n          iVar16 = iVar16 + iVar15;\n          do {\n            uVar17 = uVar17 - 1;\n            if (uVar17 == 0) break;\n            piVar12 = (int *)(iVar16 + -8);\n            iVar16 = iVar16 + -4;\n          } while (*piVar12 == 0);\n        }\n        if (-1 < (int)uVar19) {\n          uVar17 = -uVar17;\n        }\n      }\n      goto LAB_000349e8;\n    }" if (parenthesized_expression "(uVar17 == uVar14)" ( (binary_expression "uVar17 == uVar14" identifier == identifier) )) (compound_statement "{\n      iVar15 = uVar17 * 4;\n      iVar11 = iVar20 + iVar15;\n      iVar8 = iVar13 + iVar15;\n      uVar6 = uVar17;\n      do {\n        uVar6 = uVar6 - 1;\n        if (uVar6 == 0xffffffff) goto LAB_00034bf8;\n        puVar1 = (uint *)(iVar11 + -4);\n        puVar2 = (uint *)(iVar8 + -4);\n        iVar11 = iVar11 + -4;\n        iVar8 = iVar8 + -4;\n      } while (*puVar1 == *puVar2);\n      if (*puVar2 < *puVar1) {\nLAB_00034bf8:\n        (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar20,iVar13,uVar17);\n        if ((0 < (int)uVar17) && (*(int *)(iVar16 + iVar15 + -4) == 0)) {\n          iVar16 = iVar16 + iVar15;\n          do {\n            uVar17 = uVar17 - 1;\n            if (uVar17 == 0) break;\n            piVar12 = (int *)(iVar16 + -8);\n            iVar16 = iVar16 + -4;\n          } while (*piVar12 == 0);\n        }\n        if ((int)uVar19 < 0) {\n          uVar17 = -uVar17;\n        }\n      }\n      else {\n        (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar13,iVar20);\n        if ((0 < (int)uVar17) && (*(int *)(iVar16 + iVar15 + -4) == 0)) {\n          iVar16 = iVar16 + iVar15;\n          do {\n            uVar17 = uVar17 - 1;\n            if (uVar17 == 0) break;\n            piVar12 = (int *)(iVar16 + -8);\n            iVar16 = iVar16 + -4;\n          } while (*piVar12 == 0);\n        }\n        if (-1 < (int)uVar19) {\n          uVar17 = -uVar17;\n        }\n      }\n      goto LAB_000349e8;\n    }" { (expression_statement "iVar15 = uVar17 * 4;" (assignment_expression "iVar15 = uVar17 * 4" identifier = (binary_expression "uVar17 * 4" identifier * number_literal)) ;) (expression_statement "iVar11 = iVar20 + iVar15;" (assignment_expression "iVar11 = iVar20 + iVar15" identifier = (binary_expression "iVar20 + iVar15" identifier + identifier)) ;) (expression_statement "iVar8 = iVar13 + iVar15;" (assignment_expression "iVar8 = iVar13 + iVar15" identifier = (binary_expression "iVar13 + iVar15" identifier + identifier)) ;) (expression_statement "uVar6 = uVar17;" (assignment_expression "uVar6 = uVar17" identifier = identifier) ;) (do_statement "do {\n        uVar6 = uVar6 - 1;\n        if (uVar6 == 0xffffffff) goto LAB_00034bf8;\n        puVar1 = (uint *)(iVar11 + -4);\n        puVar2 = (uint *)(iVar8 + -4);\n        iVar11 = iVar11 + -4;\n        iVar8 = iVar8 + -4;\n      } while (*puVar1 == *puVar2);" do (compound_statement "{\n        uVar6 = uVar6 - 1;\n        if (uVar6 == 0xffffffff) goto LAB_00034bf8;\n        puVar1 = (uint *)(iVar11 + -4);\n        puVar2 = (uint *)(iVar8 + -4);\n        iVar11 = iVar11 + -4;\n        iVar8 = iVar8 + -4;\n      }" { (expression_statement "uVar6 = uVar6 - 1;" (assignment_expression "uVar6 = uVar6 - 1" identifier = (binary_expression "uVar6 - 1" identifier - number_literal)) ;) (if_statement "if (uVar6 == 0xffffffff) goto LAB_00034bf8;" if (parenthesized_expression "(uVar6 == 0xffffffff)" ( (binary_expression "uVar6 == 0xffffffff" identifier == number_literal) )) (goto_statement "goto LAB_00034bf8;" goto statement_identifier ;)) (expression_statement "puVar1 = (uint *)(iVar11 + -4);" (assignment_expression "puVar1 = (uint *)(iVar11 + -4)" identifier = (cast_expression "(uint *)(iVar11 + -4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + -4)" ( (binary_expression "iVar11 + -4" identifier + number_literal) )))) ;) (expression_statement "puVar2 = (uint *)(iVar8 + -4);" (assignment_expression "puVar2 = (uint *)(iVar8 + -4)" identifier = (cast_expression "(uint *)(iVar8 + -4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + -4)" ( (binary_expression "iVar8 + -4" identifier + number_literal) )))) ;) (expression_statement "iVar11 = iVar11 + -4;" (assignment_expression "iVar11 = iVar11 + -4" identifier = (binary_expression "iVar11 + -4" identifier + number_literal)) ;) (expression_statement "iVar8 = iVar8 + -4;" (assignment_expression "iVar8 = iVar8 + -4" identifier = (binary_expression "iVar8 + -4" identifier + number_literal)) ;) }) while (parenthesized_expression "(*puVar1 == *puVar2)" ( (binary_expression "*puVar1 == *puVar2" (pointer_expression "*puVar1" * identifier) == (pointer_expression "*puVar2" * identifier)) )) ;) (if_statement "if (*puVar2 < *puVar1) {\nLAB_00034bf8:\n        (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar20,iVar13,uVar17);\n        if ((0 < (int)uVar17) && (*(int *)(iVar16 + iVar15 + -4) == 0)) {\n          iVar16 = iVar16 + iVar15;\n          do {\n            uVar17 = uVar17 - 1;\n            if (uVar17 == 0) break;\n            piVar12 = (int *)(iVar16 + -8);\n            iVar16 = iVar16 + -4;\n          } while (*piVar12 == 0);\n        }\n        if ((int)uVar19 < 0) {\n          uVar17 = -uVar17;\n        }\n      }\n      else {\n        (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar13,iVar20);\n        if ((0 < (int)uVar17) && (*(int *)(iVar16 + iVar15 + -4) == 0)) {\n          iVar16 = iVar16 + iVar15;\n          do {\n            uVar17 = uVar17 - 1;\n            if (uVar17 == 0) break;\n            piVar12 = (int *)(iVar16 + -8);\n            iVar16 = iVar16 + -4;\n          } while (*piVar12 == 0);\n        }\n        if (-1 < (int)uVar19) {\n          uVar17 = -uVar17;\n        }\n      }" if (parenthesized_expression "(*puVar2 < *puVar1)" ( (binary_expression "*puVar2 < *puVar1" (pointer_expression "*puVar2" * identifier) < (pointer_expression "*puVar1" * identifier)) )) (compound_statement "{\nLAB_00034bf8:\n        (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar20,iVar13,uVar17);\n        if ((0 < (int)uVar17) && (*(int *)(iVar16 + iVar15 + -4) == 0)) {\n          iVar16 = iVar16 + iVar15;\n          do {\n            uVar17 = uVar17 - 1;\n            if (uVar17 == 0) break;\n            piVar12 = (int *)(iVar16 + -8);\n            iVar16 = iVar16 + -4;\n          } while (*piVar12 == 0);\n        }\n        if ((int)uVar19 < 0) {\n          uVar17 = -uVar17;\n        }\n      }" { (labeled_statement "LAB_00034bf8:\n        (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar20,iVar13,uVar17);" statement_identifier : (expression_statement "(**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar20,iVar13,uVar17);" (call_expression "(**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar20,iVar13,uVar17)" (parenthesized_expression "(**(code **)(pcVar24 + -0x7b2c))" ( (pointer_expression "**(code **)(pcVar24 + -0x7b2c)" * (pointer_expression "*(code **)(pcVar24 + -0x7b2c)" * (cast_expression "(code **)(pcVar24 + -0x7b2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar24 + -0x7b2c)" ( (binary_expression "pcVar24 + -0x7b2c" identifier + number_literal) ))))) )) (argument_list "(iVar16,iVar20,iVar13,uVar17)" ( identifier , identifier , identifier , identifier ))) ;)) (if_statement "if ((0 < (int)uVar17) && (*(int *)(iVar16 + iVar15 + -4) == 0)) {\n          iVar16 = iVar16 + iVar15;\n          do {\n            uVar17 = uVar17 - 1;\n            if (uVar17 == 0) break;\n            piVar12 = (int *)(iVar16 + -8);\n            iVar16 = iVar16 + -4;\n          } while (*piVar12 == 0);\n        }" if (parenthesized_expression "((0 < (int)uVar17) && (*(int *)(iVar16 + iVar15 + -4) == 0))" ( (binary_expression "(0 < (int)uVar17) && (*(int *)(iVar16 + iVar15 + -4) == 0)" (parenthesized_expression "(0 < (int)uVar17)" ( (binary_expression "0 < (int)uVar17" number_literal < (cast_expression "(int)uVar17" ( (type_descriptor "int" primitive_type) ) identifier)) )) && (parenthesized_expression "(*(int *)(iVar16 + iVar15 + -4) == 0)" ( (binary_expression "*(int *)(iVar16 + iVar15 + -4) == 0" (pointer_expression "*(int *)(iVar16 + iVar15 + -4)" * (cast_expression "(int *)(iVar16 + iVar15 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + iVar15 + -4)" ( (binary_expression "iVar16 + iVar15 + -4" (binary_expression "iVar16 + iVar15" identifier + identifier) + number_literal) )))) == number_literal) ))) )) (compound_statement "{\n          iVar16 = iVar16 + iVar15;\n          do {\n            uVar17 = uVar17 - 1;\n            if (uVar17 == 0) break;\n            piVar12 = (int *)(iVar16 + -8);\n            iVar16 = iVar16 + -4;\n          } while (*piVar12 == 0);\n        }" { (expression_statement "iVar16 = iVar16 + iVar15;" (assignment_expression "iVar16 = iVar16 + iVar15" identifier = (binary_expression "iVar16 + iVar15" identifier + identifier)) ;) (do_statement "do {\n            uVar17 = uVar17 - 1;\n            if (uVar17 == 0) break;\n            piVar12 = (int *)(iVar16 + -8);\n            iVar16 = iVar16 + -4;\n          } while (*piVar12 == 0);" do (compound_statement "{\n            uVar17 = uVar17 - 1;\n            if (uVar17 == 0) break;\n            piVar12 = (int *)(iVar16 + -8);\n            iVar16 = iVar16 + -4;\n          }" { (expression_statement "uVar17 = uVar17 - 1;" (assignment_expression "uVar17 = uVar17 - 1" identifier = (binary_expression "uVar17 - 1" identifier - number_literal)) ;) (if_statement "if (uVar17 == 0) break;" if (parenthesized_expression "(uVar17 == 0)" ( (binary_expression "uVar17 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "piVar12 = (int *)(iVar16 + -8);" (assignment_expression "piVar12 = (int *)(iVar16 + -8)" identifier = (cast_expression "(int *)(iVar16 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + -8)" ( (binary_expression "iVar16 + -8" identifier + number_literal) )))) ;) (expression_statement "iVar16 = iVar16 + -4;" (assignment_expression "iVar16 = iVar16 + -4" identifier = (binary_expression "iVar16 + -4" identifier + number_literal)) ;) }) while (parenthesized_expression "(*piVar12 == 0)" ( (binary_expression "*piVar12 == 0" (pointer_expression "*piVar12" * identifier) == number_literal) )) ;) })) (if_statement "if ((int)uVar19 < 0) {\n          uVar17 = -uVar17;\n        }" if (parenthesized_expression "((int)uVar19 < 0)" ( (binary_expression "(int)uVar19 < 0" (cast_expression "(int)uVar19" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n          uVar17 = -uVar17;\n        }" { (expression_statement "uVar17 = -uVar17;" (assignment_expression "uVar17 = -uVar17" identifier = (unary_expression "-uVar17" - identifier)) ;) })) }) (else_clause "else {\n        (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar13,iVar20);\n        if ((0 < (int)uVar17) && (*(int *)(iVar16 + iVar15 + -4) == 0)) {\n          iVar16 = iVar16 + iVar15;\n          do {\n            uVar17 = uVar17 - 1;\n            if (uVar17 == 0) break;\n            piVar12 = (int *)(iVar16 + -8);\n            iVar16 = iVar16 + -4;\n          } while (*piVar12 == 0);\n        }\n        if (-1 < (int)uVar19) {\n          uVar17 = -uVar17;\n        }\n      }" else (compound_statement "{\n        (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar13,iVar20);\n        if ((0 < (int)uVar17) && (*(int *)(iVar16 + iVar15 + -4) == 0)) {\n          iVar16 = iVar16 + iVar15;\n          do {\n            uVar17 = uVar17 - 1;\n            if (uVar17 == 0) break;\n            piVar12 = (int *)(iVar16 + -8);\n            iVar16 = iVar16 + -4;\n          } while (*piVar12 == 0);\n        }\n        if (-1 < (int)uVar19) {\n          uVar17 = -uVar17;\n        }\n      }" { (expression_statement "(**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar13,iVar20);" (call_expression "(**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar13,iVar20)" (parenthesized_expression "(**(code **)(pcVar24 + -0x7b2c))" ( (pointer_expression "**(code **)(pcVar24 + -0x7b2c)" * (pointer_expression "*(code **)(pcVar24 + -0x7b2c)" * (cast_expression "(code **)(pcVar24 + -0x7b2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar24 + -0x7b2c)" ( (binary_expression "pcVar24 + -0x7b2c" identifier + number_literal) ))))) )) (argument_list "(iVar16,iVar13,iVar20)" ( identifier , identifier , identifier ))) ;) (if_statement "if ((0 < (int)uVar17) && (*(int *)(iVar16 + iVar15 + -4) == 0)) {\n          iVar16 = iVar16 + iVar15;\n          do {\n            uVar17 = uVar17 - 1;\n            if (uVar17 == 0) break;\n            piVar12 = (int *)(iVar16 + -8);\n            iVar16 = iVar16 + -4;\n          } while (*piVar12 == 0);\n        }" if (parenthesized_expression "((0 < (int)uVar17) && (*(int *)(iVar16 + iVar15 + -4) == 0))" ( (binary_expression "(0 < (int)uVar17) && (*(int *)(iVar16 + iVar15 + -4) == 0)" (parenthesized_expression "(0 < (int)uVar17)" ( (binary_expression "0 < (int)uVar17" number_literal < (cast_expression "(int)uVar17" ( (type_descriptor "int" primitive_type) ) identifier)) )) && (parenthesized_expression "(*(int *)(iVar16 + iVar15 + -4) == 0)" ( (binary_expression "*(int *)(iVar16 + iVar15 + -4) == 0" (pointer_expression "*(int *)(iVar16 + iVar15 + -4)" * (cast_expression "(int *)(iVar16 + iVar15 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + iVar15 + -4)" ( (binary_expression "iVar16 + iVar15 + -4" (binary_expression "iVar16 + iVar15" identifier + identifier) + number_literal) )))) == number_literal) ))) )) (compound_statement "{\n          iVar16 = iVar16 + iVar15;\n          do {\n            uVar17 = uVar17 - 1;\n            if (uVar17 == 0) break;\n            piVar12 = (int *)(iVar16 + -8);\n            iVar16 = iVar16 + -4;\n          } while (*piVar12 == 0);\n        }" { (expression_statement "iVar16 = iVar16 + iVar15;" (assignment_expression "iVar16 = iVar16 + iVar15" identifier = (binary_expression "iVar16 + iVar15" identifier + identifier)) ;) (do_statement "do {\n            uVar17 = uVar17 - 1;\n            if (uVar17 == 0) break;\n            piVar12 = (int *)(iVar16 + -8);\n            iVar16 = iVar16 + -4;\n          } while (*piVar12 == 0);" do (compound_statement "{\n            uVar17 = uVar17 - 1;\n            if (uVar17 == 0) break;\n            piVar12 = (int *)(iVar16 + -8);\n            iVar16 = iVar16 + -4;\n          }" { (expression_statement "uVar17 = uVar17 - 1;" (assignment_expression "uVar17 = uVar17 - 1" identifier = (binary_expression "uVar17 - 1" identifier - number_literal)) ;) (if_statement "if (uVar17 == 0) break;" if (parenthesized_expression "(uVar17 == 0)" ( (binary_expression "uVar17 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "piVar12 = (int *)(iVar16 + -8);" (assignment_expression "piVar12 = (int *)(iVar16 + -8)" identifier = (cast_expression "(int *)(iVar16 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + -8)" ( (binary_expression "iVar16 + -8" identifier + number_literal) )))) ;) (expression_statement "iVar16 = iVar16 + -4;" (assignment_expression "iVar16 = iVar16 + -4" identifier = (binary_expression "iVar16 + -4" identifier + number_literal)) ;) }) while (parenthesized_expression "(*piVar12 == 0)" ( (binary_expression "*piVar12 == 0" (pointer_expression "*piVar12" * identifier) == number_literal) )) ;) })) (if_statement "if (-1 < (int)uVar19) {\n          uVar17 = -uVar17;\n        }" if (parenthesized_expression "(-1 < (int)uVar19)" ( (binary_expression "-1 < (int)uVar19" number_literal < (cast_expression "(int)uVar19" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          uVar17 = -uVar17;\n        }" { (expression_statement "uVar17 = -uVar17;" (assignment_expression "uVar17 = -uVar17" identifier = (unary_expression "-uVar17" - identifier)) ;) })) }))) (goto_statement "goto LAB_000349e8;" goto statement_identifier ;) })) (if_statement "if (uVar14 == 0) {\nLAB_00034a50:\n      if ((iVar16 != iVar20) && ((int)uVar14 < (int)uVar17)) {\n        puVar5 = (undefined4 *)(iVar20 + uVar14 * 4);\n        puVar7 = (undefined4 *)(iVar16 + uVar14 * 4);\n        do {\n          *puVar7 = *puVar5;\n          puVar5 = puVar5 + 1;\n          puVar7 = puVar7 + 1;\n        } while (puVar5 != (undefined4 *)(iVar20 + uVar17 * 4));\n      }\n    }\n    else {\n      iVar13 = (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar20,iVar13,uVar14);\n      if (iVar13 == 0) goto LAB_00034a50;\n      if ((int)uVar14 < (int)uVar17) {\n        piVar12 = (int *)(iVar20 + uVar14 * 4);\n        iVar13 = *piVar12;\n        piVar9 = (int *)(iVar16 + uVar14 * 4);\n        *piVar9 = iVar13 + -1;\n        while (uVar14 = uVar14 + 1, iVar13 == 0) {\n          if (uVar17 == uVar14) goto LAB_00034a84;\n          iVar13 = piVar12[1];\n          piVar9[1] = iVar13 + -1;\n          piVar12 = piVar12 + 1;\n          piVar9 = piVar9 + 1;\n        }\n        goto LAB_00034a50;\n      }\n    }" if (parenthesized_expression "(uVar14 == 0)" ( (binary_expression "uVar14 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_00034a50:\n      if ((iVar16 != iVar20) && ((int)uVar14 < (int)uVar17)) {\n        puVar5 = (undefined4 *)(iVar20 + uVar14 * 4);\n        puVar7 = (undefined4 *)(iVar16 + uVar14 * 4);\n        do {\n          *puVar7 = *puVar5;\n          puVar5 = puVar5 + 1;\n          puVar7 = puVar7 + 1;\n        } while (puVar5 != (undefined4 *)(iVar20 + uVar17 * 4));\n      }\n    }" { (labeled_statement "LAB_00034a50:\n      if ((iVar16 != iVar20) && ((int)uVar14 < (int)uVar17)) {\n        puVar5 = (undefined4 *)(iVar20 + uVar14 * 4);\n        puVar7 = (undefined4 *)(iVar16 + uVar14 * 4);\n        do {\n          *puVar7 = *puVar5;\n          puVar5 = puVar5 + 1;\n          puVar7 = puVar7 + 1;\n        } while (puVar5 != (undefined4 *)(iVar20 + uVar17 * 4));\n      }" statement_identifier : (if_statement "if ((iVar16 != iVar20) && ((int)uVar14 < (int)uVar17)) {\n        puVar5 = (undefined4 *)(iVar20 + uVar14 * 4);\n        puVar7 = (undefined4 *)(iVar16 + uVar14 * 4);\n        do {\n          *puVar7 = *puVar5;\n          puVar5 = puVar5 + 1;\n          puVar7 = puVar7 + 1;\n        } while (puVar5 != (undefined4 *)(iVar20 + uVar17 * 4));\n      }" if (parenthesized_expression "((iVar16 != iVar20) && ((int)uVar14 < (int)uVar17))" ( (binary_expression "(iVar16 != iVar20) && ((int)uVar14 < (int)uVar17)" (parenthesized_expression "(iVar16 != iVar20)" ( (binary_expression "iVar16 != iVar20" identifier != identifier) )) && (parenthesized_expression "((int)uVar14 < (int)uVar17)" ( (binary_expression "(int)uVar14 < (int)uVar17" (cast_expression "(int)uVar14" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)uVar17" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) (compound_statement "{\n        puVar5 = (undefined4 *)(iVar20 + uVar14 * 4);\n        puVar7 = (undefined4 *)(iVar16 + uVar14 * 4);\n        do {\n          *puVar7 = *puVar5;\n          puVar5 = puVar5 + 1;\n          puVar7 = puVar7 + 1;\n        } while (puVar5 != (undefined4 *)(iVar20 + uVar17 * 4));\n      }" { (expression_statement "puVar5 = (undefined4 *)(iVar20 + uVar14 * 4);" (assignment_expression "puVar5 = (undefined4 *)(iVar20 + uVar14 * 4)" identifier = (cast_expression "(undefined4 *)(iVar20 + uVar14 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + uVar14 * 4)" ( (binary_expression "iVar20 + uVar14 * 4" identifier + (binary_expression "uVar14 * 4" identifier * number_literal)) )))) ;) (expression_statement "puVar7 = (undefined4 *)(iVar16 + uVar14 * 4);" (assignment_expression "puVar7 = (undefined4 *)(iVar16 + uVar14 * 4)" identifier = (cast_expression "(undefined4 *)(iVar16 + uVar14 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + uVar14 * 4)" ( (binary_expression "iVar16 + uVar14 * 4" identifier + (binary_expression "uVar14 * 4" identifier * number_literal)) )))) ;) (do_statement "do {\n          *puVar7 = *puVar5;\n          puVar5 = puVar5 + 1;\n          puVar7 = puVar7 + 1;\n        } while (puVar5 != (undefined4 *)(iVar20 + uVar17 * 4));" do (compound_statement "{\n          *puVar7 = *puVar5;\n          puVar5 = puVar5 + 1;\n          puVar7 = puVar7 + 1;\n        }" { (expression_statement "*puVar7 = *puVar5;" (assignment_expression "*puVar7 = *puVar5" (pointer_expression "*puVar7" * identifier) = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) (expression_statement "puVar7 = puVar7 + 1;" (assignment_expression "puVar7 = puVar7 + 1" identifier = (binary_expression "puVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar5 != (undefined4 *)(iVar20 + uVar17 * 4))" ( (binary_expression "puVar5 != (undefined4 *)(iVar20 + uVar17 * 4)" identifier != (cast_expression "(undefined4 *)(iVar20 + uVar17 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + uVar17 * 4)" ( (binary_expression "iVar20 + uVar17 * 4" identifier + (binary_expression "uVar17 * 4" identifier * number_literal)) )))) )) ;) }))) }) (else_clause "else {\n      iVar13 = (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar20,iVar13,uVar14);\n      if (iVar13 == 0) goto LAB_00034a50;\n      if ((int)uVar14 < (int)uVar17) {\n        piVar12 = (int *)(iVar20 + uVar14 * 4);\n        iVar13 = *piVar12;\n        piVar9 = (int *)(iVar16 + uVar14 * 4);\n        *piVar9 = iVar13 + -1;\n        while (uVar14 = uVar14 + 1, iVar13 == 0) {\n          if (uVar17 == uVar14) goto LAB_00034a84;\n          iVar13 = piVar12[1];\n          piVar9[1] = iVar13 + -1;\n          piVar12 = piVar12 + 1;\n          piVar9 = piVar9 + 1;\n        }\n        goto LAB_00034a50;\n      }\n    }" else (compound_statement "{\n      iVar13 = (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar20,iVar13,uVar14);\n      if (iVar13 == 0) goto LAB_00034a50;\n      if ((int)uVar14 < (int)uVar17) {\n        piVar12 = (int *)(iVar20 + uVar14 * 4);\n        iVar13 = *piVar12;\n        piVar9 = (int *)(iVar16 + uVar14 * 4);\n        *piVar9 = iVar13 + -1;\n        while (uVar14 = uVar14 + 1, iVar13 == 0) {\n          if (uVar17 == uVar14) goto LAB_00034a84;\n          iVar13 = piVar12[1];\n          piVar9[1] = iVar13 + -1;\n          piVar12 = piVar12 + 1;\n          piVar9 = piVar9 + 1;\n        }\n        goto LAB_00034a50;\n      }\n    }" { (expression_statement "iVar13 = (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar20,iVar13,uVar14);" (assignment_expression "iVar13 = (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar20,iVar13,uVar14)" identifier = (call_expression "(**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar20,iVar13,uVar14)" (parenthesized_expression "(**(code **)(pcVar24 + -0x7b2c))" ( (pointer_expression "**(code **)(pcVar24 + -0x7b2c)" * (pointer_expression "*(code **)(pcVar24 + -0x7b2c)" * (cast_expression "(code **)(pcVar24 + -0x7b2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar24 + -0x7b2c)" ( (binary_expression "pcVar24 + -0x7b2c" identifier + number_literal) ))))) )) (argument_list "(iVar16,iVar20,iVar13,uVar14)" ( identifier , identifier , identifier , identifier )))) ;) (if_statement "if (iVar13 == 0) goto LAB_00034a50;" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00034a50;" goto statement_identifier ;)) (if_statement "if ((int)uVar14 < (int)uVar17) {\n        piVar12 = (int *)(iVar20 + uVar14 * 4);\n        iVar13 = *piVar12;\n        piVar9 = (int *)(iVar16 + uVar14 * 4);\n        *piVar9 = iVar13 + -1;\n        while (uVar14 = uVar14 + 1, iVar13 == 0) {\n          if (uVar17 == uVar14) goto LAB_00034a84;\n          iVar13 = piVar12[1];\n          piVar9[1] = iVar13 + -1;\n          piVar12 = piVar12 + 1;\n          piVar9 = piVar9 + 1;\n        }\n        goto LAB_00034a50;\n      }" if (parenthesized_expression "((int)uVar14 < (int)uVar17)" ( (binary_expression "(int)uVar14 < (int)uVar17" (cast_expression "(int)uVar14" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)uVar17" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        piVar12 = (int *)(iVar20 + uVar14 * 4);\n        iVar13 = *piVar12;\n        piVar9 = (int *)(iVar16 + uVar14 * 4);\n        *piVar9 = iVar13 + -1;\n        while (uVar14 = uVar14 + 1, iVar13 == 0) {\n          if (uVar17 == uVar14) goto LAB_00034a84;\n          iVar13 = piVar12[1];\n          piVar9[1] = iVar13 + -1;\n          piVar12 = piVar12 + 1;\n          piVar9 = piVar9 + 1;\n        }\n        goto LAB_00034a50;\n      }" { (expression_statement "piVar12 = (int *)(iVar20 + uVar14 * 4);" (assignment_expression "piVar12 = (int *)(iVar20 + uVar14 * 4)" identifier = (cast_expression "(int *)(iVar20 + uVar14 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + uVar14 * 4)" ( (binary_expression "iVar20 + uVar14 * 4" identifier + (binary_expression "uVar14 * 4" identifier * number_literal)) )))) ;) (expression_statement "iVar13 = *piVar12;" (assignment_expression "iVar13 = *piVar12" identifier = (pointer_expression "*piVar12" * identifier)) ;) (expression_statement "piVar9 = (int *)(iVar16 + uVar14 * 4);" (assignment_expression "piVar9 = (int *)(iVar16 + uVar14 * 4)" identifier = (cast_expression "(int *)(iVar16 + uVar14 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + uVar14 * 4)" ( (binary_expression "iVar16 + uVar14 * 4" identifier + (binary_expression "uVar14 * 4" identifier * number_literal)) )))) ;) (expression_statement "*piVar9 = iVar13 + -1;" (assignment_expression "*piVar9 = iVar13 + -1" (pointer_expression "*piVar9" * identifier) = (binary_expression "iVar13 + -1" identifier + number_literal)) ;) (while_statement "while (uVar14 = uVar14 + 1, iVar13 == 0) {\n          if (uVar17 == uVar14) goto LAB_00034a84;\n          iVar13 = piVar12[1];\n          piVar9[1] = iVar13 + -1;\n          piVar12 = piVar12 + 1;\n          piVar9 = piVar9 + 1;\n        }" while (parenthesized_expression "(uVar14 = uVar14 + 1, iVar13 == 0)" ( (comma_expression "uVar14 = uVar14 + 1, iVar13 == 0" (assignment_expression "uVar14 = uVar14 + 1" identifier = (binary_expression "uVar14 + 1" identifier + number_literal)) , (binary_expression "iVar13 == 0" identifier == number_literal)) )) (compound_statement "{\n          if (uVar17 == uVar14) goto LAB_00034a84;\n          iVar13 = piVar12[1];\n          piVar9[1] = iVar13 + -1;\n          piVar12 = piVar12 + 1;\n          piVar9 = piVar9 + 1;\n        }" { (if_statement "if (uVar17 == uVar14) goto LAB_00034a84;" if (parenthesized_expression "(uVar17 == uVar14)" ( (binary_expression "uVar17 == uVar14" identifier == identifier) )) (goto_statement "goto LAB_00034a84;" goto statement_identifier ;)) (expression_statement "iVar13 = piVar12[1];" (assignment_expression "iVar13 = piVar12[1]" identifier = (subscript_expression "piVar12[1]" identifier [ number_literal ])) ;) (expression_statement "piVar9[1] = iVar13 + -1;" (assignment_expression "piVar9[1] = iVar13 + -1" (subscript_expression "piVar9[1]" identifier [ number_literal ]) = (binary_expression "iVar13 + -1" identifier + number_literal)) ;) (expression_statement "piVar12 = piVar12 + 1;" (assignment_expression "piVar12 = piVar12 + 1" identifier = (binary_expression "piVar12 + 1" identifier + number_literal)) ;) (expression_statement "piVar9 = piVar9 + 1;" (assignment_expression "piVar9 = piVar9 + 1" identifier = (binary_expression "piVar9 + 1" identifier + number_literal)) ;) })) (goto_statement "goto LAB_00034a50;" goto statement_identifier ;) })) }))) (labeled_statement "LAB_00034a84:\n    if ((0 < (int)uVar17) && (iVar13 = (uVar17 + 0x3fffffff) * 4, *(int *)(iVar16 + iVar13) == 0)) {\n      iVar16 = iVar16 + iVar13 + 4;\n      do {\n        uVar17 = uVar17 - 1;\n        if (uVar17 == 0) break;\n        piVar12 = (int *)(iVar16 + -8);\n        iVar16 = iVar16 + -4;\n      } while (*piVar12 == 0);\n    }" statement_identifier : (if_statement "if ((0 < (int)uVar17) && (iVar13 = (uVar17 + 0x3fffffff) * 4, *(int *)(iVar16 + iVar13) == 0)) {\n      iVar16 = iVar16 + iVar13 + 4;\n      do {\n        uVar17 = uVar17 - 1;\n        if (uVar17 == 0) break;\n        piVar12 = (int *)(iVar16 + -8);\n        iVar16 = iVar16 + -4;\n      } while (*piVar12 == 0);\n    }" if (parenthesized_expression "((0 < (int)uVar17) && (iVar13 = (uVar17 + 0x3fffffff) * 4, *(int *)(iVar16 + iVar13) == 0))" ( (binary_expression "(0 < (int)uVar17) && (iVar13 = (uVar17 + 0x3fffffff) * 4, *(int *)(iVar16 + iVar13) == 0)" (parenthesized_expression "(0 < (int)uVar17)" ( (binary_expression "0 < (int)uVar17" number_literal < (cast_expression "(int)uVar17" ( (type_descriptor "int" primitive_type) ) identifier)) )) && (parenthesized_expression "(iVar13 = (uVar17 + 0x3fffffff) * 4, *(int *)(iVar16 + iVar13) == 0)" ( (comma_expression "iVar13 = (uVar17 + 0x3fffffff) * 4, *(int *)(iVar16 + iVar13) == 0" (assignment_expression "iVar13 = (uVar17 + 0x3fffffff) * 4" identifier = (binary_expression "(uVar17 + 0x3fffffff) * 4" (parenthesized_expression "(uVar17 + 0x3fffffff)" ( (binary_expression "uVar17 + 0x3fffffff" identifier + number_literal) )) * number_literal)) , (binary_expression "*(int *)(iVar16 + iVar13) == 0" (pointer_expression "*(int *)(iVar16 + iVar13)" * (cast_expression "(int *)(iVar16 + iVar13)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + iVar13)" ( (binary_expression "iVar16 + iVar13" identifier + identifier) )))) == number_literal)) ))) )) (compound_statement "{\n      iVar16 = iVar16 + iVar13 + 4;\n      do {\n        uVar17 = uVar17 - 1;\n        if (uVar17 == 0) break;\n        piVar12 = (int *)(iVar16 + -8);\n        iVar16 = iVar16 + -4;\n      } while (*piVar12 == 0);\n    }" { (expression_statement "iVar16 = iVar16 + iVar13 + 4;" (assignment_expression "iVar16 = iVar16 + iVar13 + 4" identifier = (binary_expression "iVar16 + iVar13 + 4" (binary_expression "iVar16 + iVar13" identifier + identifier) + number_literal)) ;) (do_statement "do {\n        uVar17 = uVar17 - 1;\n        if (uVar17 == 0) break;\n        piVar12 = (int *)(iVar16 + -8);\n        iVar16 = iVar16 + -4;\n      } while (*piVar12 == 0);" do (compound_statement "{\n        uVar17 = uVar17 - 1;\n        if (uVar17 == 0) break;\n        piVar12 = (int *)(iVar16 + -8);\n        iVar16 = iVar16 + -4;\n      }" { (expression_statement "uVar17 = uVar17 - 1;" (assignment_expression "uVar17 = uVar17 - 1" identifier = (binary_expression "uVar17 - 1" identifier - number_literal)) ;) (if_statement "if (uVar17 == 0) break;" if (parenthesized_expression "(uVar17 == 0)" ( (binary_expression "uVar17 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "piVar12 = (int *)(iVar16 + -8);" (assignment_expression "piVar12 = (int *)(iVar16 + -8)" identifier = (cast_expression "(int *)(iVar16 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + -8)" ( (binary_expression "iVar16 + -8" identifier + number_literal) )))) ;) (expression_statement "iVar16 = iVar16 + -4;" (assignment_expression "iVar16 = iVar16 + -4" identifier = (binary_expression "iVar16 + -4" identifier + number_literal)) ;) }) while (parenthesized_expression "(*piVar12 == 0)" ( (binary_expression "*piVar12 == 0" (pointer_expression "*piVar12" * identifier) == number_literal) )) ;) }))) (if_statement "if ((int)uVar19 < 0) {\n      uVar17 = -uVar17;\n    }" if (parenthesized_expression "((int)uVar19 < 0)" ( (binary_expression "(int)uVar19 < 0" (cast_expression "(int)uVar19" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      uVar17 = -uVar17;\n    }" { (expression_statement "uVar17 = -uVar17;" (assignment_expression "uVar17 = -uVar17" identifier = (unary_expression "-uVar17" - identifier)) ;) })) (goto_statement "goto LAB_000349e8;" goto statement_identifier ;) })) (if_statement "if (uVar14 == 0) {\nLAB_0003499c:\n    if (iVar16 == iVar20) {\n      iVar13 = 0;\n    }\n    else if ((int)uVar14 < (int)uVar17) {\n      puVar7 = (undefined4 *)(iVar20 + uVar14 * 4);\n      puVar5 = (undefined4 *)(iVar16 + uVar14 * 4);\n      do {\n        *puVar5 = *puVar7;\n        puVar7 = puVar7 + 1;\n        puVar5 = puVar5 + 1;\n      } while (puVar7 != (undefined4 *)(iVar20 + uVar17 * 4));\n      iVar13 = 0;\n    }\n    else {\n      iVar13 = 0;\n    }\n  }\n  else {\n    iVar13 = (**(code **)(pcVar24 + -0x7d0c))(iVar16,iVar20,iVar13,uVar14);\n    if (iVar13 == 0) goto LAB_0003499c;\n    iVar13 = 1;\n    if ((int)uVar14 < (int)uVar17) {\n      piVar12 = (int *)(iVar20 + uVar14 * 4);\n      piVar9 = (int *)(iVar16 + uVar14 * 4);\n      iVar13 = *piVar12 + 1;\n      *piVar9 = iVar13;\n      while (uVar14 = uVar14 + 1, iVar13 == 0) {\n        if (uVar17 == uVar14) {\n          iVar13 = 1;\n          goto LAB_000349d4;\n        }\n        iVar13 = piVar12[1] + 1;\n        piVar9[1] = iVar13;\n        piVar12 = piVar12 + 1;\n        piVar9 = piVar9 + 1;\n      }\n      goto LAB_0003499c;\n    }\n  }" if (parenthesized_expression "(uVar14 == 0)" ( (binary_expression "uVar14 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0003499c:\n    if (iVar16 == iVar20) {\n      iVar13 = 0;\n    }\n    else if ((int)uVar14 < (int)uVar17) {\n      puVar7 = (undefined4 *)(iVar20 + uVar14 * 4);\n      puVar5 = (undefined4 *)(iVar16 + uVar14 * 4);\n      do {\n        *puVar5 = *puVar7;\n        puVar7 = puVar7 + 1;\n        puVar5 = puVar5 + 1;\n      } while (puVar7 != (undefined4 *)(iVar20 + uVar17 * 4));\n      iVar13 = 0;\n    }\n    else {\n      iVar13 = 0;\n    }\n  }" { (labeled_statement "LAB_0003499c:\n    if (iVar16 == iVar20) {\n      iVar13 = 0;\n    }\n    else if ((int)uVar14 < (int)uVar17) {\n      puVar7 = (undefined4 *)(iVar20 + uVar14 * 4);\n      puVar5 = (undefined4 *)(iVar16 + uVar14 * 4);\n      do {\n        *puVar5 = *puVar7;\n        puVar7 = puVar7 + 1;\n        puVar5 = puVar5 + 1;\n      } while (puVar7 != (undefined4 *)(iVar20 + uVar17 * 4));\n      iVar13 = 0;\n    }\n    else {\n      iVar13 = 0;\n    }" statement_identifier : (if_statement "if (iVar16 == iVar20) {\n      iVar13 = 0;\n    }\n    else if ((int)uVar14 < (int)uVar17) {\n      puVar7 = (undefined4 *)(iVar20 + uVar14 * 4);\n      puVar5 = (undefined4 *)(iVar16 + uVar14 * 4);\n      do {\n        *puVar5 = *puVar7;\n        puVar7 = puVar7 + 1;\n        puVar5 = puVar5 + 1;\n      } while (puVar7 != (undefined4 *)(iVar20 + uVar17 * 4));\n      iVar13 = 0;\n    }\n    else {\n      iVar13 = 0;\n    }" if (parenthesized_expression "(iVar16 == iVar20)" ( (binary_expression "iVar16 == iVar20" identifier == identifier) )) (compound_statement "{\n      iVar13 = 0;\n    }" { (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" identifier = number_literal) ;) }) (else_clause "else if ((int)uVar14 < (int)uVar17) {\n      puVar7 = (undefined4 *)(iVar20 + uVar14 * 4);\n      puVar5 = (undefined4 *)(iVar16 + uVar14 * 4);\n      do {\n        *puVar5 = *puVar7;\n        puVar7 = puVar7 + 1;\n        puVar5 = puVar5 + 1;\n      } while (puVar7 != (undefined4 *)(iVar20 + uVar17 * 4));\n      iVar13 = 0;\n    }\n    else {\n      iVar13 = 0;\n    }" else (if_statement "if ((int)uVar14 < (int)uVar17) {\n      puVar7 = (undefined4 *)(iVar20 + uVar14 * 4);\n      puVar5 = (undefined4 *)(iVar16 + uVar14 * 4);\n      do {\n        *puVar5 = *puVar7;\n        puVar7 = puVar7 + 1;\n        puVar5 = puVar5 + 1;\n      } while (puVar7 != (undefined4 *)(iVar20 + uVar17 * 4));\n      iVar13 = 0;\n    }\n    else {\n      iVar13 = 0;\n    }" if (parenthesized_expression "((int)uVar14 < (int)uVar17)" ( (binary_expression "(int)uVar14 < (int)uVar17" (cast_expression "(int)uVar14" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)uVar17" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      puVar7 = (undefined4 *)(iVar20 + uVar14 * 4);\n      puVar5 = (undefined4 *)(iVar16 + uVar14 * 4);\n      do {\n        *puVar5 = *puVar7;\n        puVar7 = puVar7 + 1;\n        puVar5 = puVar5 + 1;\n      } while (puVar7 != (undefined4 *)(iVar20 + uVar17 * 4));\n      iVar13 = 0;\n    }" { (expression_statement "puVar7 = (undefined4 *)(iVar20 + uVar14 * 4);" (assignment_expression "puVar7 = (undefined4 *)(iVar20 + uVar14 * 4)" identifier = (cast_expression "(undefined4 *)(iVar20 + uVar14 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + uVar14 * 4)" ( (binary_expression "iVar20 + uVar14 * 4" identifier + (binary_expression "uVar14 * 4" identifier * number_literal)) )))) ;) (expression_statement "puVar5 = (undefined4 *)(iVar16 + uVar14 * 4);" (assignment_expression "puVar5 = (undefined4 *)(iVar16 + uVar14 * 4)" identifier = (cast_expression "(undefined4 *)(iVar16 + uVar14 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + uVar14 * 4)" ( (binary_expression "iVar16 + uVar14 * 4" identifier + (binary_expression "uVar14 * 4" identifier * number_literal)) )))) ;) (do_statement "do {\n        *puVar5 = *puVar7;\n        puVar7 = puVar7 + 1;\n        puVar5 = puVar5 + 1;\n      } while (puVar7 != (undefined4 *)(iVar20 + uVar17 * 4));" do (compound_statement "{\n        *puVar5 = *puVar7;\n        puVar7 = puVar7 + 1;\n        puVar5 = puVar5 + 1;\n      }" { (expression_statement "*puVar5 = *puVar7;" (assignment_expression "*puVar5 = *puVar7" (pointer_expression "*puVar5" * identifier) = (pointer_expression "*puVar7" * identifier)) ;) (expression_statement "puVar7 = puVar7 + 1;" (assignment_expression "puVar7 = puVar7 + 1" identifier = (binary_expression "puVar7 + 1" identifier + number_literal)) ;) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar7 != (undefined4 *)(iVar20 + uVar17 * 4))" ( (binary_expression "puVar7 != (undefined4 *)(iVar20 + uVar17 * 4)" identifier != (cast_expression "(undefined4 *)(iVar20 + uVar17 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + uVar17 * 4)" ( (binary_expression "iVar20 + uVar17 * 4" identifier + (binary_expression "uVar17 * 4" identifier * number_literal)) )))) )) ;) (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      iVar13 = 0;\n    }" else (compound_statement "{\n      iVar13 = 0;\n    }" { (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" identifier = number_literal) ;) })))))) }) (else_clause "else {\n    iVar13 = (**(code **)(pcVar24 + -0x7d0c))(iVar16,iVar20,iVar13,uVar14);\n    if (iVar13 == 0) goto LAB_0003499c;\n    iVar13 = 1;\n    if ((int)uVar14 < (int)uVar17) {\n      piVar12 = (int *)(iVar20 + uVar14 * 4);\n      piVar9 = (int *)(iVar16 + uVar14 * 4);\n      iVar13 = *piVar12 + 1;\n      *piVar9 = iVar13;\n      while (uVar14 = uVar14 + 1, iVar13 == 0) {\n        if (uVar17 == uVar14) {\n          iVar13 = 1;\n          goto LAB_000349d4;\n        }\n        iVar13 = piVar12[1] + 1;\n        piVar9[1] = iVar13;\n        piVar12 = piVar12 + 1;\n        piVar9 = piVar9 + 1;\n      }\n      goto LAB_0003499c;\n    }\n  }" else (compound_statement "{\n    iVar13 = (**(code **)(pcVar24 + -0x7d0c))(iVar16,iVar20,iVar13,uVar14);\n    if (iVar13 == 0) goto LAB_0003499c;\n    iVar13 = 1;\n    if ((int)uVar14 < (int)uVar17) {\n      piVar12 = (int *)(iVar20 + uVar14 * 4);\n      piVar9 = (int *)(iVar16 + uVar14 * 4);\n      iVar13 = *piVar12 + 1;\n      *piVar9 = iVar13;\n      while (uVar14 = uVar14 + 1, iVar13 == 0) {\n        if (uVar17 == uVar14) {\n          iVar13 = 1;\n          goto LAB_000349d4;\n        }\n        iVar13 = piVar12[1] + 1;\n        piVar9[1] = iVar13;\n        piVar12 = piVar12 + 1;\n        piVar9 = piVar9 + 1;\n      }\n      goto LAB_0003499c;\n    }\n  }" { (expression_statement "iVar13 = (**(code **)(pcVar24 + -0x7d0c))(iVar16,iVar20,iVar13,uVar14);" (assignment_expression "iVar13 = (**(code **)(pcVar24 + -0x7d0c))(iVar16,iVar20,iVar13,uVar14)" identifier = (call_expression "(**(code **)(pcVar24 + -0x7d0c))(iVar16,iVar20,iVar13,uVar14)" (parenthesized_expression "(**(code **)(pcVar24 + -0x7d0c))" ( (pointer_expression "**(code **)(pcVar24 + -0x7d0c)" * (pointer_expression "*(code **)(pcVar24 + -0x7d0c)" * (cast_expression "(code **)(pcVar24 + -0x7d0c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar24 + -0x7d0c)" ( (binary_expression "pcVar24 + -0x7d0c" identifier + number_literal) ))))) )) (argument_list "(iVar16,iVar20,iVar13,uVar14)" ( identifier , identifier , identifier , identifier )))) ;) (if_statement "if (iVar13 == 0) goto LAB_0003499c;" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0003499c;" goto statement_identifier ;)) (expression_statement "iVar13 = 1;" (assignment_expression "iVar13 = 1" identifier = number_literal) ;) (if_statement "if ((int)uVar14 < (int)uVar17) {\n      piVar12 = (int *)(iVar20 + uVar14 * 4);\n      piVar9 = (int *)(iVar16 + uVar14 * 4);\n      iVar13 = *piVar12 + 1;\n      *piVar9 = iVar13;\n      while (uVar14 = uVar14 + 1, iVar13 == 0) {\n        if (uVar17 == uVar14) {\n          iVar13 = 1;\n          goto LAB_000349d4;\n        }\n        iVar13 = piVar12[1] + 1;\n        piVar9[1] = iVar13;\n        piVar12 = piVar12 + 1;\n        piVar9 = piVar9 + 1;\n      }\n      goto LAB_0003499c;\n    }" if (parenthesized_expression "((int)uVar14 < (int)uVar17)" ( (binary_expression "(int)uVar14 < (int)uVar17" (cast_expression "(int)uVar14" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)uVar17" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      piVar12 = (int *)(iVar20 + uVar14 * 4);\n      piVar9 = (int *)(iVar16 + uVar14 * 4);\n      iVar13 = *piVar12 + 1;\n      *piVar9 = iVar13;\n      while (uVar14 = uVar14 + 1, iVar13 == 0) {\n        if (uVar17 == uVar14) {\n          iVar13 = 1;\n          goto LAB_000349d4;\n        }\n        iVar13 = piVar12[1] + 1;\n        piVar9[1] = iVar13;\n        piVar12 = piVar12 + 1;\n        piVar9 = piVar9 + 1;\n      }\n      goto LAB_0003499c;\n    }" { (expression_statement "piVar12 = (int *)(iVar20 + uVar14 * 4);" (assignment_expression "piVar12 = (int *)(iVar20 + uVar14 * 4)" identifier = (cast_expression "(int *)(iVar20 + uVar14 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + uVar14 * 4)" ( (binary_expression "iVar20 + uVar14 * 4" identifier + (binary_expression "uVar14 * 4" identifier * number_literal)) )))) ;) (expression_statement "piVar9 = (int *)(iVar16 + uVar14 * 4);" (assignment_expression "piVar9 = (int *)(iVar16 + uVar14 * 4)" identifier = (cast_expression "(int *)(iVar16 + uVar14 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + uVar14 * 4)" ( (binary_expression "iVar16 + uVar14 * 4" identifier + (binary_expression "uVar14 * 4" identifier * number_literal)) )))) ;) (expression_statement "iVar13 = *piVar12 + 1;" (assignment_expression "iVar13 = *piVar12 + 1" identifier = (binary_expression "*piVar12 + 1" (pointer_expression "*piVar12" * identifier) + number_literal)) ;) (expression_statement "*piVar9 = iVar13;" (assignment_expression "*piVar9 = iVar13" (pointer_expression "*piVar9" * identifier) = identifier) ;) (while_statement "while (uVar14 = uVar14 + 1, iVar13 == 0) {\n        if (uVar17 == uVar14) {\n          iVar13 = 1;\n          goto LAB_000349d4;\n        }\n        iVar13 = piVar12[1] + 1;\n        piVar9[1] = iVar13;\n        piVar12 = piVar12 + 1;\n        piVar9 = piVar9 + 1;\n      }" while (parenthesized_expression "(uVar14 = uVar14 + 1, iVar13 == 0)" ( (comma_expression "uVar14 = uVar14 + 1, iVar13 == 0" (assignment_expression "uVar14 = uVar14 + 1" identifier = (binary_expression "uVar14 + 1" identifier + number_literal)) , (binary_expression "iVar13 == 0" identifier == number_literal)) )) (compound_statement "{\n        if (uVar17 == uVar14) {\n          iVar13 = 1;\n          goto LAB_000349d4;\n        }\n        iVar13 = piVar12[1] + 1;\n        piVar9[1] = iVar13;\n        piVar12 = piVar12 + 1;\n        piVar9 = piVar9 + 1;\n      }" { (if_statement "if (uVar17 == uVar14) {\n          iVar13 = 1;\n          goto LAB_000349d4;\n        }" if (parenthesized_expression "(uVar17 == uVar14)" ( (binary_expression "uVar17 == uVar14" identifier == identifier) )) (compound_statement "{\n          iVar13 = 1;\n          goto LAB_000349d4;\n        }" { (expression_statement "iVar13 = 1;" (assignment_expression "iVar13 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_000349d4;" goto statement_identifier ;) })) (expression_statement "iVar13 = piVar12[1] + 1;" (assignment_expression "iVar13 = piVar12[1] + 1" identifier = (binary_expression "piVar12[1] + 1" (subscript_expression "piVar12[1]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "piVar9[1] = iVar13;" (assignment_expression "piVar9[1] = iVar13" (subscript_expression "piVar9[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar12 = piVar12 + 1;" (assignment_expression "piVar12 = piVar12 + 1" identifier = (binary_expression "piVar12 + 1" identifier + number_literal)) ;) (expression_statement "piVar9 = piVar9 + 1;" (assignment_expression "piVar9 = piVar9 + 1" identifier = (binary_expression "piVar9 + 1" identifier + number_literal)) ;) })) (goto_statement "goto LAB_0003499c;" goto statement_identifier ;) })) }))) (labeled_statement "LAB_000349d4:\n  *(int *)(iVar16 + uVar17 * 4) = iVar13;" statement_identifier : (expression_statement "*(int *)(iVar16 + uVar17 * 4) = iVar13;" (assignment_expression "*(int *)(iVar16 + uVar17 * 4) = iVar13" (pointer_expression "*(int *)(iVar16 + uVar17 * 4)" * (cast_expression "(int *)(iVar16 + uVar17 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + uVar17 * 4)" ( (binary_expression "iVar16 + uVar17 * 4" identifier + (binary_expression "uVar17 * 4" identifier * number_literal)) )))) = identifier) ;)) (expression_statement "uVar17 = uVar17 + iVar13;" (assignment_expression "uVar17 = uVar17 + iVar13" identifier = (binary_expression "uVar17 + iVar13" identifier + identifier)) ;) (if_statement "if ((int)uVar19 < 0) {\n    uVar17 = -uVar17;\n  }" if (parenthesized_expression "((int)uVar19 < 0)" ( (binary_expression "(int)uVar19 < 0" (cast_expression "(int)uVar19" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    uVar17 = -uVar17;\n  }" { (expression_statement "uVar17 = -uVar17;" (assignment_expression "uVar17 = -uVar17" identifier = (unary_expression "-uVar17" - identifier)) ;) })) (labeled_statement "LAB_000349e8:\n  piVar10[1] = uVar17;" statement_identifier : (expression_statement "piVar10[1] = uVar17;" (assignment_expression "piVar10[1] = uVar17" (subscript_expression "piVar10[1]" identifier [ number_literal ]) = identifier) ;)) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * 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 (pointer_declarator * 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 ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (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 (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) / LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = 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 == IDENT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT * LIT) )))) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) 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 = (unary_expression - (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + IDENT) )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (pointer_expression & IDENT) , IDENT ))))) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , LIT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (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 { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) })) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( ))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) < IDENT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , IDENT ))))) ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) (else_clause else (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 (parenthesized_expression ( (binary_expression IDENT + LIT) )) / LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (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 IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (unary_expression - (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (binary_expression IDENT + LIT) , IDENT ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }))) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + LIT)) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , IDENT ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) }))) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }))) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) )) (compound_statement { (return_statement return ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (unary_expression - IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (unary_expression - IDENT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (unary_expression - IDENT)) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) < (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }))) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT ^ IDENT) ))) < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (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 = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT)) )) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT)) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (unary_expression - IDENT)) ;) })) }) (else_clause else (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) ;) })) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (unary_expression - IDENT)) ;) })) }))) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != IDENT) )) && (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) )) ;) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , IDENT , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT + LIT)) , (binary_expression IDENT == LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (goto_statement goto statement_identifier ;) })) }))) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) * LIT)) , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) == LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (unary_expression - IDENT)) ;) })) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) )) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })))))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , IDENT , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT + LIT)) , (binary_expression IDENT == LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (goto_statement goto statement_identifier ;) })) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) = IDENT) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (unary_expression - IDENT)) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;)) (return_statement return ;) })))
(function_definition "void __gmpz_sqrt(int *param_1,int *param_2,int *param_3)\n\n{\n  uint *puVar1;\n  uint *puVar2;\n  int *piVar3;\n  uint uVar4;\n  undefined4 *puVar5;\n  uint uVar6;\n  undefined4 *puVar7;\n  int iVar8;\n  int *piVar9;\n  int *piVar10;\n  int iVar11;\n  int *piVar12;\n  int iVar13;\n  int unaff_s0;\n  uint uVar14;\n  int iVar15;\n  int iVar16;\n  uint uVar17;\n  int *unaff_s2;\n  uint uVar18;\n  uint uVar19;\n  int *unaff_s3;\n  int *unaff_s4;\n  int *unaff_s5;\n  int iVar20;\n  int *unaff_s6;\n  uint unaff_s7;\n  undefined *puVar21;\n  code *pcVar22;\n  undefined *puVar23;\n  code *pcVar24;\n  undefined1 *puVar25;\n  undefined1 *puVar26;\n  undefined1 *puVar27;\n  undefined1 *puVar28;\n  undefined4 uVar29;\n  undefined1 auStack_40 [16];\n  int *local_28;\n  int local_24;\n  \n  puVar25 = auStack_40;\n  puVar26 = auStack_40;\n  local_24 = *(int *)PTR___stack_chk_guard_0009b540;\n  iVar16 = param_2[1];\n  if (iVar16 < 1) {\n    if (iVar16 < 0) {\n      (*(code *)PTR___gmp_sqrt_of_negative_0009b1cc)();\n      goto LAB_000345b4;\n    }\n    param_1[1] = 0;\n  }\n  else {\n    unaff_s0 = (iVar16 + 1) / 2;\n    param_1[1] = unaff_s0;\n    unaff_s2 = (int *)param_2[2];\n    if (param_2 == param_1) {\nLAB_000345b4:\n      unaff_s4 = (int *)(unaff_s0 * 4);\n      local_28 = (int *)0x0;\n      if (unaff_s4 < (int *)0x7f01) {\n        iVar13 = -((int)unaff_s4 + 7U & 0xfffffff8);\n        puVar26 = auStack_40 + iVar13;\n        unaff_s3 = (int *)(&stack0xffffffd0 + iVar13);\n      }\n      else {\n        unaff_s3 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)(&local_28,unaff_s4);\n      }\n      param_2 = (int *)0x0;\n      param_3 = unaff_s2;\n      (*(code *)PTR___gmpn_sqrtrem_0009b0e0)(unaff_s3,0,unaff_s2,iVar16);\n      iVar13 = *unaff_s3;\n      if (unaff_s0 != 1) {\n        piVar10 = unaff_s3 + 1;\n        unaff_s3 = unaff_s3 + unaff_s0;\n        piVar12 = unaff_s2;\n        do {\n          *piVar12 = iVar13;\n          piVar9 = piVar10 + 1;\n          iVar13 = *piVar10;\n          piVar10 = piVar9;\n          piVar12 = piVar12 + 1;\n        } while (unaff_s3 != piVar9);\n        unaff_s4 = unaff_s4 + -1;\n        unaff_s2 = (int *)((int)unaff_s2 + (int)unaff_s4);\n      }\n      *unaff_s2 = iVar13;\n      param_1 = local_28;\n      puVar25 = puVar26;\n      if (local_28 != (int *)0x0) {\n        (*(code *)PTR___gmp_tmp_reentrant_free_0009b614)();\n      }\n    }\n    else {\n      if (*param_1 < unaff_s0) {\n        param_1 = (int *)(*(code *)PTR___gmpz_realloc_0009b5bc)(param_1,unaff_s0);\n      }\n      else {\n        param_1 = (int *)param_1[2];\n      }\n      param_2 = (int *)0x0;\n      param_3 = unaff_s2;\n      (*(code *)PTR___gmpn_sqrtrem_0009b0e0)();\n      puVar25 = auStack_40;\n    }\n  }\n  if (local_24 == *(int *)PTR___stack_chk_guard_0009b540) {\n    return;\n  }\n  uVar29 = 0x34694;\n  puVar21 = PTR___stack_chk_fail_0009b4d0;\n  (*(code *)PTR___stack_chk_fail_0009b4d0)();\n  puVar23 = puVar21 + 0x6e9a0;\n  puVar27 = puVar25 + -0x48;\n  puVar28 = puVar25 + -0x48;\n  *(undefined4 *)(puVar25 + -4) = uVar29;\n  *(undefined1 **)(puVar25 + -8) = auStack_40;\n  *(uint *)(puVar25 + -0xc) = unaff_s7;\n  *(int **)(puVar25 + -0x10) = unaff_s6;\n  *(int **)(puVar25 + -0x14) = unaff_s5;\n  *(int **)(puVar25 + -0x18) = unaff_s4;\n  *(int **)(puVar25 + -0x1c) = unaff_s3;\n  *(int **)(puVar25 + -0x20) = unaff_s2;\n  *(int *)(puVar25 + -0x24) = iVar16;\n  *(int *)(puVar25 + -0x28) = unaff_s0;\n  *(undefined **)(puVar25 + -0x38) = puVar23;\n  *(undefined4 *)(puVar25 + -0x2c) = **(undefined4 **)(puVar21 + 0x66ea0);\n  iVar16 = param_3[1];\n  if (iVar16 < 1) {\n    if (iVar16 < 0) {\n      (**(code **)(puVar21 + 0x66b2c))();\n      goto LAB_000347c8;\n    }\n    param_1[1] = 0;\n    param_2[1] = 0;\n    piVar10 = param_1;\n    piVar12 = param_2;\n  }\n  else {\n    unaff_s4 = param_3;\n    if (*param_2 < iVar16) {\nLAB_000347c8:\n      unaff_s5 = (int *)(**(code **)(puVar21 + 0x66f1c))(param_2,iVar16);\n      puVar23 = *(undefined **)(puVar25 + -0x38);\n    }\n    else {\n      unaff_s5 = (int *)param_2[2];\n    }\n    unaff_s0 = (iVar16 + 1) / 2;\n    param_1[1] = unaff_s0;\n    unaff_s6 = (int *)unaff_s4[2];\n    piVar12 = unaff_s5;\n    param_3 = unaff_s6;\n    if (unaff_s4 == param_1) {\n      unaff_s7 = unaff_s0 * 4;\n      *(undefined4 *)(puVar25 + -0x30) = 0;\n      if (unaff_s7 < 0x7f01) {\n        iVar13 = -(unaff_s7 + 7 & 0xfffffff8);\n        puVar28 = puVar25 + iVar13 + -0x48;\n        unaff_s4 = (int *)(puVar25 + iVar13 + -0x38);\n      }\n      else {\n        unaff_s4 = (int *)(**(code **)(puVar23 + -0x7d50))(puVar25 + -0x30,unaff_s7);\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n      }\n      iVar16 = (**(code **)(puVar23 + -0x7f60))(unaff_s4,unaff_s5,unaff_s6,iVar16);\n      puVar23 = *(undefined **)(puVar25 + -0x38);\n      if (param_1 != param_2) {\n        iVar13 = *unaff_s4;\n        if (unaff_s0 != 1) {\n          piVar10 = unaff_s4 + 1;\n          unaff_s4 = unaff_s4 + unaff_s0;\n          piVar9 = unaff_s6;\n          do {\n            *piVar9 = iVar13;\n            piVar3 = piVar10 + 1;\n            iVar13 = *piVar10;\n            piVar10 = piVar3;\n            piVar9 = piVar9 + 1;\n          } while (unaff_s4 != piVar3);\n          unaff_s7 = unaff_s7 - 4;\n          unaff_s6 = unaff_s6 + unaff_s0 + -1;\n        }\n        *unaff_s6 = iVar13;\n      }\n      piVar10 = *(int **)(puVar25 + -0x30);\n      if (piVar10 != (int *)0x0) {\n        (**(code **)(puVar23 + -0x7a2c))();\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n        param_2[1] = iVar16;\n        puVar27 = puVar28;\n        goto LAB_00034768;\n      }\n    }\n    else {\n      if (*param_1 < unaff_s0) {\n        piVar10 = (int *)(**(code **)(puVar23 + -0x7a84))(param_1,unaff_s0);\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n      }\n      else {\n        piVar10 = (int *)param_1[2];\n      }\n      iVar16 = (**(code **)(puVar23 + -0x7f60))();\n      puVar23 = *(undefined **)(puVar25 + -0x38);\n      puVar28 = puVar25 + -0x48;\n    }\n    param_2[1] = iVar16;\n    puVar27 = puVar28;\n  }\nLAB_00034768:\n  if (*(int *)(puVar25 + -0x2c) == **(int **)(puVar23 + -0x7b00)) {\n    return;\n  }\n  pcVar22 = *(code **)(puVar23 + -0x7b70);\n  uVar29 = 0x348d4;\n  (*pcVar22)();\n  pcVar24 = pcVar22 + 0x6e760;\n  *(undefined4 *)(puVar27 + -4) = uVar29;\n  *(uint *)(puVar27 + -8) = unaff_s7;\n  *(int **)(puVar27 + -0xc) = unaff_s6;\n  *(int **)(puVar27 + -0x10) = unaff_s5;\n  *(int **)(puVar27 + -0x14) = unaff_s4;\n  *(int **)(puVar27 + -0x18) = param_2;\n  *(int **)(puVar27 + -0x1c) = param_1;\n  *(int *)(puVar27 + -0x20) = iVar16;\n  *(int *)(puVar27 + -0x24) = unaff_s0;\n  *(code **)(puVar27 + -0x30) = pcVar24;\n  uVar18 = piVar12[1];\n  uVar4 = param_3[1];\n  uVar6 = -uVar4;\n  uVar17 = uVar18;\n  if ((int)uVar18 < 0) {\n    uVar17 = -uVar18;\n  }\n  if ((int)uVar4 < 0) {\n    uVar4 = -uVar4;\n  }\n  uVar14 = uVar4;\n  uVar19 = uVar18;\n  piVar9 = piVar12;\n  if ((int)uVar17 < (int)uVar4) {\n    uVar14 = uVar17;\n    uVar17 = uVar4;\n    uVar19 = uVar6;\n    piVar9 = param_3;\n    uVar6 = uVar18;\n    param_3 = piVar12;\n  }\n  if (*piVar10 < (int)(uVar17 + 1)) {\n    iVar16 = (**(code **)(pcVar22 + 0x66cdc))(piVar10);\n    pcVar24 = *(code **)(puVar27 + -0x30);\n  }\n  else {\n    iVar16 = piVar10[2];\n  }\n  iVar20 = piVar9[2];\n  iVar13 = param_3[2];\n  if ((int)(uVar19 ^ uVar6) < 0) {\n    if (uVar17 == uVar14) {\n      iVar15 = uVar17 * 4;\n      iVar11 = iVar20 + iVar15;\n      iVar8 = iVar13 + iVar15;\n      uVar6 = uVar17;\n      do {\n        uVar6 = uVar6 - 1;\n        if (uVar6 == 0xffffffff) goto LAB_00034bf8;\n        puVar1 = (uint *)(iVar11 + -4);\n        puVar2 = (uint *)(iVar8 + -4);\n        iVar11 = iVar11 + -4;\n        iVar8 = iVar8 + -4;\n      } while (*puVar1 == *puVar2);\n      if (*puVar2 < *puVar1) {\nLAB_00034bf8:\n        (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar20,iVar13,uVar17);\n        if ((0 < (int)uVar17) && (*(int *)(iVar16 + iVar15 + -4) == 0)) {\n          iVar16 = iVar16 + iVar15;\n          do {\n            uVar17 = uVar17 - 1;\n            if (uVar17 == 0) break;\n            piVar12 = (int *)(iVar16 + -8);\n            iVar16 = iVar16 + -4;\n          } while (*piVar12 == 0);\n        }\n        if ((int)uVar19 < 0) {\n          uVar17 = -uVar17;\n        }\n      }\n      else {\n        (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar13,iVar20);\n        if ((0 < (int)uVar17) && (*(int *)(iVar16 + iVar15 + -4) == 0)) {\n          iVar16 = iVar16 + iVar15;\n          do {\n            uVar17 = uVar17 - 1;\n            if (uVar17 == 0) break;\n            piVar12 = (int *)(iVar16 + -8);\n            iVar16 = iVar16 + -4;\n          } while (*piVar12 == 0);\n        }\n        if (-1 < (int)uVar19) {\n          uVar17 = -uVar17;\n        }\n      }\n      goto LAB_000349e8;\n    }\n    if (uVar14 == 0) {\nLAB_00034a50:\n      if ((iVar16 != iVar20) && ((int)uVar14 < (int)uVar17)) {\n        puVar5 = (undefined4 *)(iVar20 + uVar14 * 4);\n        puVar7 = (undefined4 *)(iVar16 + uVar14 * 4);\n        do {\n          *puVar7 = *puVar5;\n          puVar5 = puVar5 + 1;\n          puVar7 = puVar7 + 1;\n        } while (puVar5 != (undefined4 *)(iVar20 + uVar17 * 4));\n      }\n    }\n    else {\n      iVar13 = (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar20,iVar13,uVar14);\n      if (iVar13 == 0) goto LAB_00034a50;\n      if ((int)uVar14 < (int)uVar17) {\n        piVar12 = (int *)(iVar20 + uVar14 * 4);\n        iVar13 = *piVar12;\n        piVar9 = (int *)(iVar16 + uVar14 * 4);\n        *piVar9 = iVar13 + -1;\n        while (uVar14 = uVar14 + 1, iVar13 == 0) {\n          if (uVar17 == uVar14) goto LAB_00034a84;\n          iVar13 = piVar12[1];\n          piVar9[1] = iVar13 + -1;\n          piVar12 = piVar12 + 1;\n          piVar9 = piVar9 + 1;\n        }\n        goto LAB_00034a50;\n      }\n    }\nLAB_00034a84:\n    if ((0 < (int)uVar17) && (iVar13 = (uVar17 + 0x3fffffff) * 4, *(int *)(iVar16 + iVar13) == 0)) {\n      iVar16 = iVar16 + iVar13 + 4;\n      do {\n        uVar17 = uVar17 - 1;\n        if (uVar17 == 0) break;\n        piVar12 = (int *)(iVar16 + -8);\n        iVar16 = iVar16 + -4;\n      } while (*piVar12 == 0);\n    }\n    if ((int)uVar19 < 0) {\n      uVar17 = -uVar17;\n    }\n    goto LAB_000349e8;\n  }\n  if (uVar14 == 0) {\nLAB_0003499c:\n    if (iVar16 == iVar20) {\n      iVar13 = 0;\n    }\n    else if ((int)uVar14 < (int)uVar17) {\n      puVar7 = (undefined4 *)(iVar20 + uVar14 * 4);\n      puVar5 = (undefined4 *)(iVar16 + uVar14 * 4);\n      do {\n        *puVar5 = *puVar7;\n        puVar7 = puVar7 + 1;\n        puVar5 = puVar5 + 1;\n      } while (puVar7 != (undefined4 *)(iVar20 + uVar17 * 4));\n      iVar13 = 0;\n    }\n    else {\n      iVar13 = 0;\n    }\n  }\n  else {\n    iVar13 = (**(code **)(pcVar24 + -0x7d0c))(iVar16,iVar20,iVar13,uVar14);\n    if (iVar13 == 0) goto LAB_0003499c;\n    iVar13 = 1;\n    if ((int)uVar14 < (int)uVar17) {\n      piVar12 = (int *)(iVar20 + uVar14 * 4);\n      piVar9 = (int *)(iVar16 + uVar14 * 4);\n      iVar13 = *piVar12 + 1;\n      *piVar9 = iVar13;\n      while (uVar14 = uVar14 + 1, iVar13 == 0) {\n        if (uVar17 == uVar14) {\n          iVar13 = 1;\n          goto LAB_000349d4;\n        }\n        iVar13 = piVar12[1] + 1;\n        piVar9[1] = iVar13;\n        piVar12 = piVar12 + 1;\n        piVar9 = piVar9 + 1;\n      }\n      goto LAB_0003499c;\n    }\n  }\nLAB_000349d4:\n  *(int *)(iVar16 + uVar17 * 4) = iVar13;\n  uVar17 = uVar17 + iVar13;\n  if ((int)uVar19 < 0) {\n    uVar17 = -uVar17;\n  }\nLAB_000349e8:\n  piVar10[1] = uVar17;\n  return;\n}" (primitive_type "void") (function_declarator "__gmpz_sqrt(int *param_1,int *param_2,int *param_3)" (identifier "__gmpz_sqrt") (parameter_list "(int *param_1,int *param_2,int *param_3)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int *param_2" (primitive_type "int") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "int *param_3" (primitive_type "int") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) () ")"))) (compound_statement "{\n  uint *puVar1;\n  uint *puVar2;\n  int *piVar3;\n  uint uVar4;\n  undefined4 *puVar5;\n  uint uVar6;\n  undefined4 *puVar7;\n  int iVar8;\n  int *piVar9;\n  int *piVar10;\n  int iVar11;\n  int *piVar12;\n  int iVar13;\n  int unaff_s0;\n  uint uVar14;\n  int iVar15;\n  int iVar16;\n  uint uVar17;\n  int *unaff_s2;\n  uint uVar18;\n  uint uVar19;\n  int *unaff_s3;\n  int *unaff_s4;\n  int *unaff_s5;\n  int iVar20;\n  int *unaff_s6;\n  uint unaff_s7;\n  undefined *puVar21;\n  code *pcVar22;\n  undefined *puVar23;\n  code *pcVar24;\n  undefined1 *puVar25;\n  undefined1 *puVar26;\n  undefined1 *puVar27;\n  undefined1 *puVar28;\n  undefined4 uVar29;\n  undefined1 auStack_40 [16];\n  int *local_28;\n  int local_24;\n  \n  puVar25 = auStack_40;\n  puVar26 = auStack_40;\n  local_24 = *(int *)PTR___stack_chk_guard_0009b540;\n  iVar16 = param_2[1];\n  if (iVar16 < 1) {\n    if (iVar16 < 0) {\n      (*(code *)PTR___gmp_sqrt_of_negative_0009b1cc)();\n      goto LAB_000345b4;\n    }\n    param_1[1] = 0;\n  }\n  else {\n    unaff_s0 = (iVar16 + 1) / 2;\n    param_1[1] = unaff_s0;\n    unaff_s2 = (int *)param_2[2];\n    if (param_2 == param_1) {\nLAB_000345b4:\n      unaff_s4 = (int *)(unaff_s0 * 4);\n      local_28 = (int *)0x0;\n      if (unaff_s4 < (int *)0x7f01) {\n        iVar13 = -((int)unaff_s4 + 7U & 0xfffffff8);\n        puVar26 = auStack_40 + iVar13;\n        unaff_s3 = (int *)(&stack0xffffffd0 + iVar13);\n      }\n      else {\n        unaff_s3 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)(&local_28,unaff_s4);\n      }\n      param_2 = (int *)0x0;\n      param_3 = unaff_s2;\n      (*(code *)PTR___gmpn_sqrtrem_0009b0e0)(unaff_s3,0,unaff_s2,iVar16);\n      iVar13 = *unaff_s3;\n      if (unaff_s0 != 1) {\n        piVar10 = unaff_s3 + 1;\n        unaff_s3 = unaff_s3 + unaff_s0;\n        piVar12 = unaff_s2;\n        do {\n          *piVar12 = iVar13;\n          piVar9 = piVar10 + 1;\n          iVar13 = *piVar10;\n          piVar10 = piVar9;\n          piVar12 = piVar12 + 1;\n        } while (unaff_s3 != piVar9);\n        unaff_s4 = unaff_s4 + -1;\n        unaff_s2 = (int *)((int)unaff_s2 + (int)unaff_s4);\n      }\n      *unaff_s2 = iVar13;\n      param_1 = local_28;\n      puVar25 = puVar26;\n      if (local_28 != (int *)0x0) {\n        (*(code *)PTR___gmp_tmp_reentrant_free_0009b614)();\n      }\n    }\n    else {\n      if (*param_1 < unaff_s0) {\n        param_1 = (int *)(*(code *)PTR___gmpz_realloc_0009b5bc)(param_1,unaff_s0);\n      }\n      else {\n        param_1 = (int *)param_1[2];\n      }\n      param_2 = (int *)0x0;\n      param_3 = unaff_s2;\n      (*(code *)PTR___gmpn_sqrtrem_0009b0e0)();\n      puVar25 = auStack_40;\n    }\n  }\n  if (local_24 == *(int *)PTR___stack_chk_guard_0009b540) {\n    return;\n  }\n  uVar29 = 0x34694;\n  puVar21 = PTR___stack_chk_fail_0009b4d0;\n  (*(code *)PTR___stack_chk_fail_0009b4d0)();\n  puVar23 = puVar21 + 0x6e9a0;\n  puVar27 = puVar25 + -0x48;\n  puVar28 = puVar25 + -0x48;\n  *(undefined4 *)(puVar25 + -4) = uVar29;\n  *(undefined1 **)(puVar25 + -8) = auStack_40;\n  *(uint *)(puVar25 + -0xc) = unaff_s7;\n  *(int **)(puVar25 + -0x10) = unaff_s6;\n  *(int **)(puVar25 + -0x14) = unaff_s5;\n  *(int **)(puVar25 + -0x18) = unaff_s4;\n  *(int **)(puVar25 + -0x1c) = unaff_s3;\n  *(int **)(puVar25 + -0x20) = unaff_s2;\n  *(int *)(puVar25 + -0x24) = iVar16;\n  *(int *)(puVar25 + -0x28) = unaff_s0;\n  *(undefined **)(puVar25 + -0x38) = puVar23;\n  *(undefined4 *)(puVar25 + -0x2c) = **(undefined4 **)(puVar21 + 0x66ea0);\n  iVar16 = param_3[1];\n  if (iVar16 < 1) {\n    if (iVar16 < 0) {\n      (**(code **)(puVar21 + 0x66b2c))();\n      goto LAB_000347c8;\n    }\n    param_1[1] = 0;\n    param_2[1] = 0;\n    piVar10 = param_1;\n    piVar12 = param_2;\n  }\n  else {\n    unaff_s4 = param_3;\n    if (*param_2 < iVar16) {\nLAB_000347c8:\n      unaff_s5 = (int *)(**(code **)(puVar21 + 0x66f1c))(param_2,iVar16);\n      puVar23 = *(undefined **)(puVar25 + -0x38);\n    }\n    else {\n      unaff_s5 = (int *)param_2[2];\n    }\n    unaff_s0 = (iVar16 + 1) / 2;\n    param_1[1] = unaff_s0;\n    unaff_s6 = (int *)unaff_s4[2];\n    piVar12 = unaff_s5;\n    param_3 = unaff_s6;\n    if (unaff_s4 == param_1) {\n      unaff_s7 = unaff_s0 * 4;\n      *(undefined4 *)(puVar25 + -0x30) = 0;\n      if (unaff_s7 < 0x7f01) {\n        iVar13 = -(unaff_s7 + 7 & 0xfffffff8);\n        puVar28 = puVar25 + iVar13 + -0x48;\n        unaff_s4 = (int *)(puVar25 + iVar13 + -0x38);\n      }\n      else {\n        unaff_s4 = (int *)(**(code **)(puVar23 + -0x7d50))(puVar25 + -0x30,unaff_s7);\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n      }\n      iVar16 = (**(code **)(puVar23 + -0x7f60))(unaff_s4,unaff_s5,unaff_s6,iVar16);\n      puVar23 = *(undefined **)(puVar25 + -0x38);\n      if (param_1 != param_2) {\n        iVar13 = *unaff_s4;\n        if (unaff_s0 != 1) {\n          piVar10 = unaff_s4 + 1;\n          unaff_s4 = unaff_s4 + unaff_s0;\n          piVar9 = unaff_s6;\n          do {\n            *piVar9 = iVar13;\n            piVar3 = piVar10 + 1;\n            iVar13 = *piVar10;\n            piVar10 = piVar3;\n            piVar9 = piVar9 + 1;\n          } while (unaff_s4 != piVar3);\n          unaff_s7 = unaff_s7 - 4;\n          unaff_s6 = unaff_s6 + unaff_s0 + -1;\n        }\n        *unaff_s6 = iVar13;\n      }\n      piVar10 = *(int **)(puVar25 + -0x30);\n      if (piVar10 != (int *)0x0) {\n        (**(code **)(puVar23 + -0x7a2c))();\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n        param_2[1] = iVar16;\n        puVar27 = puVar28;\n        goto LAB_00034768;\n      }\n    }\n    else {\n      if (*param_1 < unaff_s0) {\n        piVar10 = (int *)(**(code **)(puVar23 + -0x7a84))(param_1,unaff_s0);\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n      }\n      else {\n        piVar10 = (int *)param_1[2];\n      }\n      iVar16 = (**(code **)(puVar23 + -0x7f60))();\n      puVar23 = *(undefined **)(puVar25 + -0x38);\n      puVar28 = puVar25 + -0x48;\n    }\n    param_2[1] = iVar16;\n    puVar27 = puVar28;\n  }\nLAB_00034768:\n  if (*(int *)(puVar25 + -0x2c) == **(int **)(puVar23 + -0x7b00)) {\n    return;\n  }\n  pcVar22 = *(code **)(puVar23 + -0x7b70);\n  uVar29 = 0x348d4;\n  (*pcVar22)();\n  pcVar24 = pcVar22 + 0x6e760;\n  *(undefined4 *)(puVar27 + -4) = uVar29;\n  *(uint *)(puVar27 + -8) = unaff_s7;\n  *(int **)(puVar27 + -0xc) = unaff_s6;\n  *(int **)(puVar27 + -0x10) = unaff_s5;\n  *(int **)(puVar27 + -0x14) = unaff_s4;\n  *(int **)(puVar27 + -0x18) = param_2;\n  *(int **)(puVar27 + -0x1c) = param_1;\n  *(int *)(puVar27 + -0x20) = iVar16;\n  *(int *)(puVar27 + -0x24) = unaff_s0;\n  *(code **)(puVar27 + -0x30) = pcVar24;\n  uVar18 = piVar12[1];\n  uVar4 = param_3[1];\n  uVar6 = -uVar4;\n  uVar17 = uVar18;\n  if ((int)uVar18 < 0) {\n    uVar17 = -uVar18;\n  }\n  if ((int)uVar4 < 0) {\n    uVar4 = -uVar4;\n  }\n  uVar14 = uVar4;\n  uVar19 = uVar18;\n  piVar9 = piVar12;\n  if ((int)uVar17 < (int)uVar4) {\n    uVar14 = uVar17;\n    uVar17 = uVar4;\n    uVar19 = uVar6;\n    piVar9 = param_3;\n    uVar6 = uVar18;\n    param_3 = piVar12;\n  }\n  if (*piVar10 < (int)(uVar17 + 1)) {\n    iVar16 = (**(code **)(pcVar22 + 0x66cdc))(piVar10);\n    pcVar24 = *(code **)(puVar27 + -0x30);\n  }\n  else {\n    iVar16 = piVar10[2];\n  }\n  iVar20 = piVar9[2];\n  iVar13 = param_3[2];\n  if ((int)(uVar19 ^ uVar6) < 0) {\n    if (uVar17 == uVar14) {\n      iVar15 = uVar17 * 4;\n      iVar11 = iVar20 + iVar15;\n      iVar8 = iVar13 + iVar15;\n      uVar6 = uVar17;\n      do {\n        uVar6 = uVar6 - 1;\n        if (uVar6 == 0xffffffff) goto LAB_00034bf8;\n        puVar1 = (uint *)(iVar11 + -4);\n        puVar2 = (uint *)(iVar8 + -4);\n        iVar11 = iVar11 + -4;\n        iVar8 = iVar8 + -4;\n      } while (*puVar1 == *puVar2);\n      if (*puVar2 < *puVar1) {\nLAB_00034bf8:\n        (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar20,iVar13,uVar17);\n        if ((0 < (int)uVar17) && (*(int *)(iVar16 + iVar15 + -4) == 0)) {\n          iVar16 = iVar16 + iVar15;\n          do {\n            uVar17 = uVar17 - 1;\n            if (uVar17 == 0) break;\n            piVar12 = (int *)(iVar16 + -8);\n            iVar16 = iVar16 + -4;\n          } while (*piVar12 == 0);\n        }\n        if ((int)uVar19 < 0) {\n          uVar17 = -uVar17;\n        }\n      }\n      else {\n        (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar13,iVar20);\n        if ((0 < (int)uVar17) && (*(int *)(iVar16 + iVar15 + -4) == 0)) {\n          iVar16 = iVar16 + iVar15;\n          do {\n            uVar17 = uVar17 - 1;\n            if (uVar17 == 0) break;\n            piVar12 = (int *)(iVar16 + -8);\n            iVar16 = iVar16 + -4;\n          } while (*piVar12 == 0);\n        }\n        if (-1 < (int)uVar19) {\n          uVar17 = -uVar17;\n        }\n      }\n      goto LAB_000349e8;\n    }\n    if (uVar14 == 0) {\nLAB_00034a50:\n      if ((iVar16 != iVar20) && ((int)uVar14 < (int)uVar17)) {\n        puVar5 = (undefined4 *)(iVar20 + uVar14 * 4);\n        puVar7 = (undefined4 *)(iVar16 + uVar14 * 4);\n        do {\n          *puVar7 = *puVar5;\n          puVar5 = puVar5 + 1;\n          puVar7 = puVar7 + 1;\n        } while (puVar5 != (undefined4 *)(iVar20 + uVar17 * 4));\n      }\n    }\n    else {\n      iVar13 = (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar20,iVar13,uVar14);\n      if (iVar13 == 0) goto LAB_00034a50;\n      if ((int)uVar14 < (int)uVar17) {\n        piVar12 = (int *)(iVar20 + uVar14 * 4);\n        iVar13 = *piVar12;\n        piVar9 = (int *)(iVar16 + uVar14 * 4);\n        *piVar9 = iVar13 + -1;\n        while (uVar14 = uVar14 + 1, iVar13 == 0) {\n          if (uVar17 == uVar14) goto LAB_00034a84;\n          iVar13 = piVar12[1];\n          piVar9[1] = iVar13 + -1;\n          piVar12 = piVar12 + 1;\n          piVar9 = piVar9 + 1;\n        }\n        goto LAB_00034a50;\n      }\n    }\nLAB_00034a84:\n    if ((0 < (int)uVar17) && (iVar13 = (uVar17 + 0x3fffffff) * 4, *(int *)(iVar16 + iVar13) == 0)) {\n      iVar16 = iVar16 + iVar13 + 4;\n      do {\n        uVar17 = uVar17 - 1;\n        if (uVar17 == 0) break;\n        piVar12 = (int *)(iVar16 + -8);\n        iVar16 = iVar16 + -4;\n      } while (*piVar12 == 0);\n    }\n    if ((int)uVar19 < 0) {\n      uVar17 = -uVar17;\n    }\n    goto LAB_000349e8;\n  }\n  if (uVar14 == 0) {\nLAB_0003499c:\n    if (iVar16 == iVar20) {\n      iVar13 = 0;\n    }\n    else if ((int)uVar14 < (int)uVar17) {\n      puVar7 = (undefined4 *)(iVar20 + uVar14 * 4);\n      puVar5 = (undefined4 *)(iVar16 + uVar14 * 4);\n      do {\n        *puVar5 = *puVar7;\n        puVar7 = puVar7 + 1;\n        puVar5 = puVar5 + 1;\n      } while (puVar7 != (undefined4 *)(iVar20 + uVar17 * 4));\n      iVar13 = 0;\n    }\n    else {\n      iVar13 = 0;\n    }\n  }\n  else {\n    iVar13 = (**(code **)(pcVar24 + -0x7d0c))(iVar16,iVar20,iVar13,uVar14);\n    if (iVar13 == 0) goto LAB_0003499c;\n    iVar13 = 1;\n    if ((int)uVar14 < (int)uVar17) {\n      piVar12 = (int *)(iVar20 + uVar14 * 4);\n      piVar9 = (int *)(iVar16 + uVar14 * 4);\n      iVar13 = *piVar12 + 1;\n      *piVar9 = iVar13;\n      while (uVar14 = uVar14 + 1, iVar13 == 0) {\n        if (uVar17 == uVar14) {\n          iVar13 = 1;\n          goto LAB_000349d4;\n        }\n        iVar13 = piVar12[1] + 1;\n        piVar9[1] = iVar13;\n        piVar12 = piVar12 + 1;\n        piVar9 = piVar9 + 1;\n      }\n      goto LAB_0003499c;\n    }\n  }\nLAB_000349d4:\n  *(int *)(iVar16 + uVar17 * 4) = iVar13;\n  uVar17 = uVar17 + iVar13;\n  if ((int)uVar19 < 0) {\n    uVar17 = -uVar17;\n  }\nLAB_000349e8:\n  piVar10[1] = uVar17;\n  return;\n}" ({ "{") (declaration "uint *puVar1;" (type_identifier "uint") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "uint *puVar2;" (type_identifier "uint") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "int *piVar3;" (primitive_type "int") (pointer_declarator "*piVar3" (* "*") (identifier "piVar3")) (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "undefined4 *puVar5;" (type_identifier "undefined4") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (declaration "undefined4 *puVar7;" (type_identifier "undefined4") (pointer_declarator "*puVar7" (* "*") (identifier "puVar7")) (; ";")) (declaration "int iVar8;" (primitive_type "int") (identifier "iVar8") (; ";")) (declaration "int *piVar9;" (primitive_type "int") (pointer_declarator "*piVar9" (* "*") (identifier "piVar9")) (; ";")) (declaration "int *piVar10;" (primitive_type "int") (pointer_declarator "*piVar10" (* "*") (identifier "piVar10")) (; ";")) (declaration "int iVar11;" (primitive_type "int") (identifier "iVar11") (; ";")) (declaration "int *piVar12;" (primitive_type "int") (pointer_declarator "*piVar12" (* "*") (identifier "piVar12")) (; ";")) (declaration "int iVar13;" (primitive_type "int") (identifier "iVar13") (; ";")) (declaration "int unaff_s0;" (primitive_type "int") (identifier "unaff_s0") (; ";")) (declaration "uint uVar14;" (type_identifier "uint") (identifier "uVar14") (; ";")) (declaration "int iVar15;" (primitive_type "int") (identifier "iVar15") (; ";")) (declaration "int iVar16;" (primitive_type "int") (identifier "iVar16") (; ";")) (declaration "uint uVar17;" (type_identifier "uint") (identifier "uVar17") (; ";")) (declaration "int *unaff_s2;" (primitive_type "int") (pointer_declarator "*unaff_s2" (* "*") (identifier "unaff_s2")) (; ";")) (declaration "uint uVar18;" (type_identifier "uint") (identifier "uVar18") (; ";")) (declaration "uint uVar19;" (type_identifier "uint") (identifier "uVar19") (; ";")) (declaration "int *unaff_s3;" (primitive_type "int") (pointer_declarator "*unaff_s3" (* "*") (identifier "unaff_s3")) (; ";")) (declaration "int *unaff_s4;" (primitive_type "int") (pointer_declarator "*unaff_s4" (* "*") (identifier "unaff_s4")) (; ";")) (declaration "int *unaff_s5;" (primitive_type "int") (pointer_declarator "*unaff_s5" (* "*") (identifier "unaff_s5")) (; ";")) (declaration "int iVar20;" (primitive_type "int") (identifier "iVar20") (; ";")) (declaration "int *unaff_s6;" (primitive_type "int") (pointer_declarator "*unaff_s6" (* "*") (identifier "unaff_s6")) (; ";")) (declaration "uint unaff_s7;" (type_identifier "uint") (identifier "unaff_s7") (; ";")) (declaration "undefined *puVar21;" (type_identifier "undefined") (pointer_declarator "*puVar21" (* "*") (identifier "puVar21")) (; ";")) (declaration "code *pcVar22;" (type_identifier "code") (pointer_declarator "*pcVar22" (* "*") (identifier "pcVar22")) (; ";")) (declaration "undefined *puVar23;" (type_identifier "undefined") (pointer_declarator "*puVar23" (* "*") (identifier "puVar23")) (; ";")) (declaration "code *pcVar24;" (type_identifier "code") (pointer_declarator "*pcVar24" (* "*") (identifier "pcVar24")) (; ";")) (declaration "undefined1 *puVar25;" (type_identifier "undefined1") (pointer_declarator "*puVar25" (* "*") (identifier "puVar25")) (; ";")) (declaration "undefined1 *puVar26;" (type_identifier "undefined1") (pointer_declarator "*puVar26" (* "*") (identifier "puVar26")) (; ";")) (declaration "undefined1 *puVar27;" (type_identifier "undefined1") (pointer_declarator "*puVar27" (* "*") (identifier "puVar27")) (; ";")) (declaration "undefined1 *puVar28;" (type_identifier "undefined1") (pointer_declarator "*puVar28" (* "*") (identifier "puVar28")) (; ";")) (declaration "undefined4 uVar29;" (type_identifier "undefined4") (identifier "uVar29") (; ";")) (declaration "undefined1 auStack_40 [16];" (type_identifier "undefined1") (array_declarator "auStack_40 [16]" (identifier "auStack_40") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "int *local_28;" (primitive_type "int") (pointer_declarator "*local_28" (* "*") (identifier "local_28")) (; ";")) (declaration "int local_24;" (primitive_type "int") (identifier "local_24") (; ";")) (expression_statement "puVar25 = auStack_40;" (assignment_expression "puVar25 = auStack_40" (identifier "puVar25") (= "=") (identifier "auStack_40")) (; ";")) (expression_statement "puVar26 = auStack_40;" (assignment_expression "puVar26 = auStack_40" (identifier "puVar26") (= "=") (identifier "auStack_40")) (; ";")) (expression_statement "local_24 = *(int *)PTR___stack_chk_guard_0009b540;" (assignment_expression "local_24 = *(int *)PTR___stack_chk_guard_0009b540" (identifier "local_24") (= "=") (pointer_expression "*(int *)PTR___stack_chk_guard_0009b540" (* "*") (cast_expression "(int *)PTR___stack_chk_guard_0009b540" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_0009b540")))) (; ";")) (expression_statement "iVar16 = param_2[1];" (assignment_expression "iVar16 = param_2[1]" (identifier "iVar16") (= "=") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]"))) (; ";")) (if_statement "if (iVar16 < 1) {\n    if (iVar16 < 0) {\n      (*(code *)PTR___gmp_sqrt_of_negative_0009b1cc)();\n      goto LAB_000345b4;\n    }\n    param_1[1] = 0;\n  }\n  else {\n    unaff_s0 = (iVar16 + 1) / 2;\n    param_1[1] = unaff_s0;\n    unaff_s2 = (int *)param_2[2];\n    if (param_2 == param_1) {\nLAB_000345b4:\n      unaff_s4 = (int *)(unaff_s0 * 4);\n      local_28 = (int *)0x0;\n      if (unaff_s4 < (int *)0x7f01) {\n        iVar13 = -((int)unaff_s4 + 7U & 0xfffffff8);\n        puVar26 = auStack_40 + iVar13;\n        unaff_s3 = (int *)(&stack0xffffffd0 + iVar13);\n      }\n      else {\n        unaff_s3 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)(&local_28,unaff_s4);\n      }\n      param_2 = (int *)0x0;\n      param_3 = unaff_s2;\n      (*(code *)PTR___gmpn_sqrtrem_0009b0e0)(unaff_s3,0,unaff_s2,iVar16);\n      iVar13 = *unaff_s3;\n      if (unaff_s0 != 1) {\n        piVar10 = unaff_s3 + 1;\n        unaff_s3 = unaff_s3 + unaff_s0;\n        piVar12 = unaff_s2;\n        do {\n          *piVar12 = iVar13;\n          piVar9 = piVar10 + 1;\n          iVar13 = *piVar10;\n          piVar10 = piVar9;\n          piVar12 = piVar12 + 1;\n        } while (unaff_s3 != piVar9);\n        unaff_s4 = unaff_s4 + -1;\n        unaff_s2 = (int *)((int)unaff_s2 + (int)unaff_s4);\n      }\n      *unaff_s2 = iVar13;\n      param_1 = local_28;\n      puVar25 = puVar26;\n      if (local_28 != (int *)0x0) {\n        (*(code *)PTR___gmp_tmp_reentrant_free_0009b614)();\n      }\n    }\n    else {\n      if (*param_1 < unaff_s0) {\n        param_1 = (int *)(*(code *)PTR___gmpz_realloc_0009b5bc)(param_1,unaff_s0);\n      }\n      else {\n        param_1 = (int *)param_1[2];\n      }\n      param_2 = (int *)0x0;\n      param_3 = unaff_s2;\n      (*(code *)PTR___gmpn_sqrtrem_0009b0e0)();\n      puVar25 = auStack_40;\n    }\n  }" (if "if") (parenthesized_expression "(iVar16 < 1)" (( "(") (binary_expression "iVar16 < 1" (identifier "iVar16") (< "<") (number_literal "1")) () ")")) (compound_statement "{\n    if (iVar16 < 0) {\n      (*(code *)PTR___gmp_sqrt_of_negative_0009b1cc)();\n      goto LAB_000345b4;\n    }\n    param_1[1] = 0;\n  }" ({ "{") (if_statement "if (iVar16 < 0) {\n      (*(code *)PTR___gmp_sqrt_of_negative_0009b1cc)();\n      goto LAB_000345b4;\n    }" (if "if") (parenthesized_expression "(iVar16 < 0)" (( "(") (binary_expression "iVar16 < 0" (identifier "iVar16") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n      (*(code *)PTR___gmp_sqrt_of_negative_0009b1cc)();\n      goto LAB_000345b4;\n    }" ({ "{") (expression_statement "(*(code *)PTR___gmp_sqrt_of_negative_0009b1cc)();" (call_expression "(*(code *)PTR___gmp_sqrt_of_negative_0009b1cc)()" (parenthesized_expression "(*(code *)PTR___gmp_sqrt_of_negative_0009b1cc)" (( "(") (pointer_expression "*(code *)PTR___gmp_sqrt_of_negative_0009b1cc" (* "*") (cast_expression "(code *)PTR___gmp_sqrt_of_negative_0009b1cc" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmp_sqrt_of_negative_0009b1cc"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (goto_statement "goto LAB_000345b4;" (goto "goto") (statement_identifier "LAB_000345b4") (; ";")) (} "}"))) (expression_statement "param_1[1] = 0;" (assignment_expression "param_1[1] = 0" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n    unaff_s0 = (iVar16 + 1) / 2;\n    param_1[1] = unaff_s0;\n    unaff_s2 = (int *)param_2[2];\n    if (param_2 == param_1) {\nLAB_000345b4:\n      unaff_s4 = (int *)(unaff_s0 * 4);\n      local_28 = (int *)0x0;\n      if (unaff_s4 < (int *)0x7f01) {\n        iVar13 = -((int)unaff_s4 + 7U & 0xfffffff8);\n        puVar26 = auStack_40 + iVar13;\n        unaff_s3 = (int *)(&stack0xffffffd0 + iVar13);\n      }\n      else {\n        unaff_s3 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)(&local_28,unaff_s4);\n      }\n      param_2 = (int *)0x0;\n      param_3 = unaff_s2;\n      (*(code *)PTR___gmpn_sqrtrem_0009b0e0)(unaff_s3,0,unaff_s2,iVar16);\n      iVar13 = *unaff_s3;\n      if (unaff_s0 != 1) {\n        piVar10 = unaff_s3 + 1;\n        unaff_s3 = unaff_s3 + unaff_s0;\n        piVar12 = unaff_s2;\n        do {\n          *piVar12 = iVar13;\n          piVar9 = piVar10 + 1;\n          iVar13 = *piVar10;\n          piVar10 = piVar9;\n          piVar12 = piVar12 + 1;\n        } while (unaff_s3 != piVar9);\n        unaff_s4 = unaff_s4 + -1;\n        unaff_s2 = (int *)((int)unaff_s2 + (int)unaff_s4);\n      }\n      *unaff_s2 = iVar13;\n      param_1 = local_28;\n      puVar25 = puVar26;\n      if (local_28 != (int *)0x0) {\n        (*(code *)PTR___gmp_tmp_reentrant_free_0009b614)();\n      }\n    }\n    else {\n      if (*param_1 < unaff_s0) {\n        param_1 = (int *)(*(code *)PTR___gmpz_realloc_0009b5bc)(param_1,unaff_s0);\n      }\n      else {\n        param_1 = (int *)param_1[2];\n      }\n      param_2 = (int *)0x0;\n      param_3 = unaff_s2;\n      (*(code *)PTR___gmpn_sqrtrem_0009b0e0)();\n      puVar25 = auStack_40;\n    }\n  }" (else "else") (compound_statement "{\n    unaff_s0 = (iVar16 + 1) / 2;\n    param_1[1] = unaff_s0;\n    unaff_s2 = (int *)param_2[2];\n    if (param_2 == param_1) {\nLAB_000345b4:\n      unaff_s4 = (int *)(unaff_s0 * 4);\n      local_28 = (int *)0x0;\n      if (unaff_s4 < (int *)0x7f01) {\n        iVar13 = -((int)unaff_s4 + 7U & 0xfffffff8);\n        puVar26 = auStack_40 + iVar13;\n        unaff_s3 = (int *)(&stack0xffffffd0 + iVar13);\n      }\n      else {\n        unaff_s3 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)(&local_28,unaff_s4);\n      }\n      param_2 = (int *)0x0;\n      param_3 = unaff_s2;\n      (*(code *)PTR___gmpn_sqrtrem_0009b0e0)(unaff_s3,0,unaff_s2,iVar16);\n      iVar13 = *unaff_s3;\n      if (unaff_s0 != 1) {\n        piVar10 = unaff_s3 + 1;\n        unaff_s3 = unaff_s3 + unaff_s0;\n        piVar12 = unaff_s2;\n        do {\n          *piVar12 = iVar13;\n          piVar9 = piVar10 + 1;\n          iVar13 = *piVar10;\n          piVar10 = piVar9;\n          piVar12 = piVar12 + 1;\n        } while (unaff_s3 != piVar9);\n        unaff_s4 = unaff_s4 + -1;\n        unaff_s2 = (int *)((int)unaff_s2 + (int)unaff_s4);\n      }\n      *unaff_s2 = iVar13;\n      param_1 = local_28;\n      puVar25 = puVar26;\n      if (local_28 != (int *)0x0) {\n        (*(code *)PTR___gmp_tmp_reentrant_free_0009b614)();\n      }\n    }\n    else {\n      if (*param_1 < unaff_s0) {\n        param_1 = (int *)(*(code *)PTR___gmpz_realloc_0009b5bc)(param_1,unaff_s0);\n      }\n      else {\n        param_1 = (int *)param_1[2];\n      }\n      param_2 = (int *)0x0;\n      param_3 = unaff_s2;\n      (*(code *)PTR___gmpn_sqrtrem_0009b0e0)();\n      puVar25 = auStack_40;\n    }\n  }" ({ "{") (expression_statement "unaff_s0 = (iVar16 + 1) / 2;" (assignment_expression "unaff_s0 = (iVar16 + 1) / 2" (identifier "unaff_s0") (= "=") (binary_expression "(iVar16 + 1) / 2" (parenthesized_expression "(iVar16 + 1)" (( "(") (binary_expression "iVar16 + 1" (identifier "iVar16") (+ "+") (number_literal "1")) () ")")) (/ "/") (number_literal "2"))) (; ";")) (expression_statement "param_1[1] = unaff_s0;" (assignment_expression "param_1[1] = unaff_s0" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "unaff_s0")) (; ";")) (expression_statement "unaff_s2 = (int *)param_2[2];" (assignment_expression "unaff_s2 = (int *)param_2[2]" (identifier "unaff_s2") (= "=") (cast_expression "(int *)param_2[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]")))) (; ";")) (if_statement "if (param_2 == param_1) {\nLAB_000345b4:\n      unaff_s4 = (int *)(unaff_s0 * 4);\n      local_28 = (int *)0x0;\n      if (unaff_s4 < (int *)0x7f01) {\n        iVar13 = -((int)unaff_s4 + 7U & 0xfffffff8);\n        puVar26 = auStack_40 + iVar13;\n        unaff_s3 = (int *)(&stack0xffffffd0 + iVar13);\n      }\n      else {\n        unaff_s3 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)(&local_28,unaff_s4);\n      }\n      param_2 = (int *)0x0;\n      param_3 = unaff_s2;\n      (*(code *)PTR___gmpn_sqrtrem_0009b0e0)(unaff_s3,0,unaff_s2,iVar16);\n      iVar13 = *unaff_s3;\n      if (unaff_s0 != 1) {\n        piVar10 = unaff_s3 + 1;\n        unaff_s3 = unaff_s3 + unaff_s0;\n        piVar12 = unaff_s2;\n        do {\n          *piVar12 = iVar13;\n          piVar9 = piVar10 + 1;\n          iVar13 = *piVar10;\n          piVar10 = piVar9;\n          piVar12 = piVar12 + 1;\n        } while (unaff_s3 != piVar9);\n        unaff_s4 = unaff_s4 + -1;\n        unaff_s2 = (int *)((int)unaff_s2 + (int)unaff_s4);\n      }\n      *unaff_s2 = iVar13;\n      param_1 = local_28;\n      puVar25 = puVar26;\n      if (local_28 != (int *)0x0) {\n        (*(code *)PTR___gmp_tmp_reentrant_free_0009b614)();\n      }\n    }\n    else {\n      if (*param_1 < unaff_s0) {\n        param_1 = (int *)(*(code *)PTR___gmpz_realloc_0009b5bc)(param_1,unaff_s0);\n      }\n      else {\n        param_1 = (int *)param_1[2];\n      }\n      param_2 = (int *)0x0;\n      param_3 = unaff_s2;\n      (*(code *)PTR___gmpn_sqrtrem_0009b0e0)();\n      puVar25 = auStack_40;\n    }" (if "if") (parenthesized_expression "(param_2 == param_1)" (( "(") (binary_expression "param_2 == param_1" (identifier "param_2") (== "==") (identifier "param_1")) () ")")) (compound_statement "{\nLAB_000345b4:\n      unaff_s4 = (int *)(unaff_s0 * 4);\n      local_28 = (int *)0x0;\n      if (unaff_s4 < (int *)0x7f01) {\n        iVar13 = -((int)unaff_s4 + 7U & 0xfffffff8);\n        puVar26 = auStack_40 + iVar13;\n        unaff_s3 = (int *)(&stack0xffffffd0 + iVar13);\n      }\n      else {\n        unaff_s3 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)(&local_28,unaff_s4);\n      }\n      param_2 = (int *)0x0;\n      param_3 = unaff_s2;\n      (*(code *)PTR___gmpn_sqrtrem_0009b0e0)(unaff_s3,0,unaff_s2,iVar16);\n      iVar13 = *unaff_s3;\n      if (unaff_s0 != 1) {\n        piVar10 = unaff_s3 + 1;\n        unaff_s3 = unaff_s3 + unaff_s0;\n        piVar12 = unaff_s2;\n        do {\n          *piVar12 = iVar13;\n          piVar9 = piVar10 + 1;\n          iVar13 = *piVar10;\n          piVar10 = piVar9;\n          piVar12 = piVar12 + 1;\n        } while (unaff_s3 != piVar9);\n        unaff_s4 = unaff_s4 + -1;\n        unaff_s2 = (int *)((int)unaff_s2 + (int)unaff_s4);\n      }\n      *unaff_s2 = iVar13;\n      param_1 = local_28;\n      puVar25 = puVar26;\n      if (local_28 != (int *)0x0) {\n        (*(code *)PTR___gmp_tmp_reentrant_free_0009b614)();\n      }\n    }" ({ "{") (labeled_statement "LAB_000345b4:\n      unaff_s4 = (int *)(unaff_s0 * 4);" (statement_identifier "LAB_000345b4") (: ":") (expression_statement "unaff_s4 = (int *)(unaff_s0 * 4);" (assignment_expression "unaff_s4 = (int *)(unaff_s0 * 4)" (identifier "unaff_s4") (= "=") (cast_expression "(int *)(unaff_s0 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_s0 * 4)" (( "(") (binary_expression "unaff_s0 * 4" (identifier "unaff_s0") (* "*") (number_literal "4")) () ")")))) (; ";"))) (expression_statement "local_28 = (int *)0x0;" (assignment_expression "local_28 = (int *)0x0" (identifier "local_28") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (if_statement "if (unaff_s4 < (int *)0x7f01) {\n        iVar13 = -((int)unaff_s4 + 7U & 0xfffffff8);\n        puVar26 = auStack_40 + iVar13;\n        unaff_s3 = (int *)(&stack0xffffffd0 + iVar13);\n      }\n      else {\n        unaff_s3 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)(&local_28,unaff_s4);\n      }" (if "if") (parenthesized_expression "(unaff_s4 < (int *)0x7f01)" (( "(") (binary_expression "unaff_s4 < (int *)0x7f01" (identifier "unaff_s4") (< "<") (cast_expression "(int *)0x7f01" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x7f01"))) () ")")) (compound_statement "{\n        iVar13 = -((int)unaff_s4 + 7U & 0xfffffff8);\n        puVar26 = auStack_40 + iVar13;\n        unaff_s3 = (int *)(&stack0xffffffd0 + iVar13);\n      }" ({ "{") (expression_statement "iVar13 = -((int)unaff_s4 + 7U & 0xfffffff8);" (assignment_expression "iVar13 = -((int)unaff_s4 + 7U & 0xfffffff8)" (identifier "iVar13") (= "=") (unary_expression "-((int)unaff_s4 + 7U & 0xfffffff8)" (- "-") (parenthesized_expression "((int)unaff_s4 + 7U & 0xfffffff8)" (( "(") (binary_expression "(int)unaff_s4 + 7U & 0xfffffff8" (binary_expression "(int)unaff_s4 + 7U" (cast_expression "(int)unaff_s4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s4")) (+ "+") (number_literal "7U")) (& "&") (number_literal "0xfffffff8")) () ")")))) (; ";")) (expression_statement "puVar26 = auStack_40 + iVar13;" (assignment_expression "puVar26 = auStack_40 + iVar13" (identifier "puVar26") (= "=") (binary_expression "auStack_40 + iVar13" (identifier "auStack_40") (+ "+") (identifier "iVar13"))) (; ";")) (expression_statement "unaff_s3 = (int *)(&stack0xffffffd0 + iVar13);" (assignment_expression "unaff_s3 = (int *)(&stack0xffffffd0 + iVar13)" (identifier "unaff_s3") (= "=") (cast_expression "(int *)(&stack0xffffffd0 + iVar13)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&stack0xffffffd0 + iVar13)" (( "(") (binary_expression "&stack0xffffffd0 + iVar13" (pointer_expression "&stack0xffffffd0" (& "&") (identifier "stack0xffffffd0")) (+ "+") (identifier "iVar13")) () ")")))) (; ";")) (} "}")) (else_clause "else {\n        unaff_s3 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)(&local_28,unaff_s4);\n      }" (else "else") (compound_statement "{\n        unaff_s3 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)(&local_28,unaff_s4);\n      }" ({ "{") (expression_statement "unaff_s3 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)(&local_28,unaff_s4);" (assignment_expression "unaff_s3 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)(&local_28,unaff_s4)" (identifier "unaff_s3") (= "=") (cast_expression "(int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)(&local_28,unaff_s4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)(&local_28,unaff_s4)" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)" (( "(") (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0" (* "*") (cast_expression "(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmp_tmp_reentrant_alloc_0009b2f0"))) () ")")) (argument_list "(&local_28,unaff_s4)" (( "(") (pointer_expression "&local_28" (& "&") (identifier "local_28")) (, ",") (identifier "unaff_s4") () ")"))))) (; ";")) (} "}")))) (expression_statement "param_2 = (int *)0x0;" (assignment_expression "param_2 = (int *)0x0" (identifier "param_2") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "param_3 = unaff_s2;" (assignment_expression "param_3 = unaff_s2" (identifier "param_3") (= "=") (identifier "unaff_s2")) (; ";")) (expression_statement "(*(code *)PTR___gmpn_sqrtrem_0009b0e0)(unaff_s3,0,unaff_s2,iVar16);" (call_expression "(*(code *)PTR___gmpn_sqrtrem_0009b0e0)(unaff_s3,0,unaff_s2,iVar16)" (parenthesized_expression "(*(code *)PTR___gmpn_sqrtrem_0009b0e0)" (( "(") (pointer_expression "*(code *)PTR___gmpn_sqrtrem_0009b0e0" (* "*") (cast_expression "(code *)PTR___gmpn_sqrtrem_0009b0e0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_sqrtrem_0009b0e0"))) () ")")) (argument_list "(unaff_s3,0,unaff_s2,iVar16)" (( "(") (identifier "unaff_s3") (, ",") (number_literal "0") (, ",") (identifier "unaff_s2") (, ",") (identifier "iVar16") () ")"))) (; ";")) (expression_statement "iVar13 = *unaff_s3;" (assignment_expression "iVar13 = *unaff_s3" (identifier "iVar13") (= "=") (pointer_expression "*unaff_s3" (* "*") (identifier "unaff_s3"))) (; ";")) (if_statement "if (unaff_s0 != 1) {\n        piVar10 = unaff_s3 + 1;\n        unaff_s3 = unaff_s3 + unaff_s0;\n        piVar12 = unaff_s2;\n        do {\n          *piVar12 = iVar13;\n          piVar9 = piVar10 + 1;\n          iVar13 = *piVar10;\n          piVar10 = piVar9;\n          piVar12 = piVar12 + 1;\n        } while (unaff_s3 != piVar9);\n        unaff_s4 = unaff_s4 + -1;\n        unaff_s2 = (int *)((int)unaff_s2 + (int)unaff_s4);\n      }" (if "if") (parenthesized_expression "(unaff_s0 != 1)" (( "(") (binary_expression "unaff_s0 != 1" (identifier "unaff_s0") (!= "!=") (number_literal "1")) () ")")) (compound_statement "{\n        piVar10 = unaff_s3 + 1;\n        unaff_s3 = unaff_s3 + unaff_s0;\n        piVar12 = unaff_s2;\n        do {\n          *piVar12 = iVar13;\n          piVar9 = piVar10 + 1;\n          iVar13 = *piVar10;\n          piVar10 = piVar9;\n          piVar12 = piVar12 + 1;\n        } while (unaff_s3 != piVar9);\n        unaff_s4 = unaff_s4 + -1;\n        unaff_s2 = (int *)((int)unaff_s2 + (int)unaff_s4);\n      }" ({ "{") (expression_statement "piVar10 = unaff_s3 + 1;" (assignment_expression "piVar10 = unaff_s3 + 1" (identifier "piVar10") (= "=") (binary_expression "unaff_s3 + 1" (identifier "unaff_s3") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "unaff_s3 = unaff_s3 + unaff_s0;" (assignment_expression "unaff_s3 = unaff_s3 + unaff_s0" (identifier "unaff_s3") (= "=") (binary_expression "unaff_s3 + unaff_s0" (identifier "unaff_s3") (+ "+") (identifier "unaff_s0"))) (; ";")) (expression_statement "piVar12 = unaff_s2;" (assignment_expression "piVar12 = unaff_s2" (identifier "piVar12") (= "=") (identifier "unaff_s2")) (; ";")) (do_statement "do {\n          *piVar12 = iVar13;\n          piVar9 = piVar10 + 1;\n          iVar13 = *piVar10;\n          piVar10 = piVar9;\n          piVar12 = piVar12 + 1;\n        } while (unaff_s3 != piVar9);" (do "do") (compound_statement "{\n          *piVar12 = iVar13;\n          piVar9 = piVar10 + 1;\n          iVar13 = *piVar10;\n          piVar10 = piVar9;\n          piVar12 = piVar12 + 1;\n        }" ({ "{") (expression_statement "*piVar12 = iVar13;" (assignment_expression "*piVar12 = iVar13" (pointer_expression "*piVar12" (* "*") (identifier "piVar12")) (= "=") (identifier "iVar13")) (; ";")) (expression_statement "piVar9 = piVar10 + 1;" (assignment_expression "piVar9 = piVar10 + 1" (identifier "piVar9") (= "=") (binary_expression "piVar10 + 1" (identifier "piVar10") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar13 = *piVar10;" (assignment_expression "iVar13 = *piVar10" (identifier "iVar13") (= "=") (pointer_expression "*piVar10" (* "*") (identifier "piVar10"))) (; ";")) (expression_statement "piVar10 = piVar9;" (assignment_expression "piVar10 = piVar9" (identifier "piVar10") (= "=") (identifier "piVar9")) (; ";")) (expression_statement "piVar12 = piVar12 + 1;" (assignment_expression "piVar12 = piVar12 + 1" (identifier "piVar12") (= "=") (binary_expression "piVar12 + 1" (identifier "piVar12") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(unaff_s3 != piVar9)" (( "(") (binary_expression "unaff_s3 != piVar9" (identifier "unaff_s3") (!= "!=") (identifier "piVar9")) () ")")) (; ";")) (expression_statement "unaff_s4 = unaff_s4 + -1;" (assignment_expression "unaff_s4 = unaff_s4 + -1" (identifier "unaff_s4") (= "=") (binary_expression "unaff_s4 + -1" (identifier "unaff_s4") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "unaff_s2 = (int *)((int)unaff_s2 + (int)unaff_s4);" (assignment_expression "unaff_s2 = (int *)((int)unaff_s2 + (int)unaff_s4)" (identifier "unaff_s2") (= "=") (cast_expression "(int *)((int)unaff_s2 + (int)unaff_s4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)unaff_s2 + (int)unaff_s4)" (( "(") (binary_expression "(int)unaff_s2 + (int)unaff_s4" (cast_expression "(int)unaff_s2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s2")) (+ "+") (cast_expression "(int)unaff_s4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s4"))) () ")")))) (; ";")) (} "}"))) (expression_statement "*unaff_s2 = iVar13;" (assignment_expression "*unaff_s2 = iVar13" (pointer_expression "*unaff_s2" (* "*") (identifier "unaff_s2")) (= "=") (identifier "iVar13")) (; ";")) (expression_statement "param_1 = local_28;" (assignment_expression "param_1 = local_28" (identifier "param_1") (= "=") (identifier "local_28")) (; ";")) (expression_statement "puVar25 = puVar26;" (assignment_expression "puVar25 = puVar26" (identifier "puVar25") (= "=") (identifier "puVar26")) (; ";")) (if_statement "if (local_28 != (int *)0x0) {\n        (*(code *)PTR___gmp_tmp_reentrant_free_0009b614)();\n      }" (if "if") (parenthesized_expression "(local_28 != (int *)0x0)" (( "(") (binary_expression "local_28 != (int *)0x0" (identifier "local_28") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        (*(code *)PTR___gmp_tmp_reentrant_free_0009b614)();\n      }" ({ "{") (expression_statement "(*(code *)PTR___gmp_tmp_reentrant_free_0009b614)();" (call_expression "(*(code *)PTR___gmp_tmp_reentrant_free_0009b614)()" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_free_0009b614)" (( "(") (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_free_0009b614" (* "*") (cast_expression "(code *)PTR___gmp_tmp_reentrant_free_0009b614" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmp_tmp_reentrant_free_0009b614"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n      if (*param_1 < unaff_s0) {\n        param_1 = (int *)(*(code *)PTR___gmpz_realloc_0009b5bc)(param_1,unaff_s0);\n      }\n      else {\n        param_1 = (int *)param_1[2];\n      }\n      param_2 = (int *)0x0;\n      param_3 = unaff_s2;\n      (*(code *)PTR___gmpn_sqrtrem_0009b0e0)();\n      puVar25 = auStack_40;\n    }" (else "else") (compound_statement "{\n      if (*param_1 < unaff_s0) {\n        param_1 = (int *)(*(code *)PTR___gmpz_realloc_0009b5bc)(param_1,unaff_s0);\n      }\n      else {\n        param_1 = (int *)param_1[2];\n      }\n      param_2 = (int *)0x0;\n      param_3 = unaff_s2;\n      (*(code *)PTR___gmpn_sqrtrem_0009b0e0)();\n      puVar25 = auStack_40;\n    }" ({ "{") (if_statement "if (*param_1 < unaff_s0) {\n        param_1 = (int *)(*(code *)PTR___gmpz_realloc_0009b5bc)(param_1,unaff_s0);\n      }\n      else {\n        param_1 = (int *)param_1[2];\n      }" (if "if") (parenthesized_expression "(*param_1 < unaff_s0)" (( "(") (binary_expression "*param_1 < unaff_s0" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (< "<") (identifier "unaff_s0")) () ")")) (compound_statement "{\n        param_1 = (int *)(*(code *)PTR___gmpz_realloc_0009b5bc)(param_1,unaff_s0);\n      }" ({ "{") (expression_statement "param_1 = (int *)(*(code *)PTR___gmpz_realloc_0009b5bc)(param_1,unaff_s0);" (assignment_expression "param_1 = (int *)(*(code *)PTR___gmpz_realloc_0009b5bc)(param_1,unaff_s0)" (identifier "param_1") (= "=") (cast_expression "(int *)(*(code *)PTR___gmpz_realloc_0009b5bc)(param_1,unaff_s0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR___gmpz_realloc_0009b5bc)(param_1,unaff_s0)" (parenthesized_expression "(*(code *)PTR___gmpz_realloc_0009b5bc)" (( "(") (pointer_expression "*(code *)PTR___gmpz_realloc_0009b5bc" (* "*") (cast_expression "(code *)PTR___gmpz_realloc_0009b5bc" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpz_realloc_0009b5bc"))) () ")")) (argument_list "(param_1,unaff_s0)" (( "(") (identifier "param_1") (, ",") (identifier "unaff_s0") () ")"))))) (; ";")) (} "}")) (else_clause "else {\n        param_1 = (int *)param_1[2];\n      }" (else "else") (compound_statement "{\n        param_1 = (int *)param_1[2];\n      }" ({ "{") (expression_statement "param_1 = (int *)param_1[2];" (assignment_expression "param_1 = (int *)param_1[2]" (identifier "param_1") (= "=") (cast_expression "(int *)param_1[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")))) (; ";")) (} "}")))) (expression_statement "param_2 = (int *)0x0;" (assignment_expression "param_2 = (int *)0x0" (identifier "param_2") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "param_3 = unaff_s2;" (assignment_expression "param_3 = unaff_s2" (identifier "param_3") (= "=") (identifier "unaff_s2")) (; ";")) (expression_statement "(*(code *)PTR___gmpn_sqrtrem_0009b0e0)();" (call_expression "(*(code *)PTR___gmpn_sqrtrem_0009b0e0)()" (parenthesized_expression "(*(code *)PTR___gmpn_sqrtrem_0009b0e0)" (( "(") (pointer_expression "*(code *)PTR___gmpn_sqrtrem_0009b0e0" (* "*") (cast_expression "(code *)PTR___gmpn_sqrtrem_0009b0e0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_sqrtrem_0009b0e0"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar25 = auStack_40;" (assignment_expression "puVar25 = auStack_40" (identifier "puVar25") (= "=") (identifier "auStack_40")) (; ";")) (} "}")))) (} "}")))) (if_statement "if (local_24 == *(int *)PTR___stack_chk_guard_0009b540) {\n    return;\n  }" (if "if") (parenthesized_expression "(local_24 == *(int *)PTR___stack_chk_guard_0009b540)" (( "(") (binary_expression "local_24 == *(int *)PTR___stack_chk_guard_0009b540" (identifier "local_24") (== "==") (pointer_expression "*(int *)PTR___stack_chk_guard_0009b540" (* "*") (cast_expression "(int *)PTR___stack_chk_guard_0009b540" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_0009b540")))) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "uVar29 = 0x34694;" (assignment_expression "uVar29 = 0x34694" (identifier "uVar29") (= "=") (number_literal "0x34694")) (; ";")) (expression_statement "puVar21 = PTR___stack_chk_fail_0009b4d0;" (assignment_expression "puVar21 = PTR___stack_chk_fail_0009b4d0" (identifier "puVar21") (= "=") (identifier "PTR___stack_chk_fail_0009b4d0")) (; ";")) (expression_statement "(*(code *)PTR___stack_chk_fail_0009b4d0)();" (call_expression "(*(code *)PTR___stack_chk_fail_0009b4d0)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0009b4d0)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_0009b4d0" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_0009b4d0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_0009b4d0"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar23 = puVar21 + 0x6e9a0;" (assignment_expression "puVar23 = puVar21 + 0x6e9a0" (identifier "puVar23") (= "=") (binary_expression "puVar21 + 0x6e9a0" (identifier "puVar21") (+ "+") (number_literal "0x6e9a0"))) (; ";")) (expression_statement "puVar27 = puVar25 + -0x48;" (assignment_expression "puVar27 = puVar25 + -0x48" (identifier "puVar27") (= "=") (binary_expression "puVar25 + -0x48" (identifier "puVar25") (+ "+") (number_literal "-0x48"))) (; ";")) (expression_statement "puVar28 = puVar25 + -0x48;" (assignment_expression "puVar28 = puVar25 + -0x48" (identifier "puVar28") (= "=") (binary_expression "puVar25 + -0x48" (identifier "puVar25") (+ "+") (number_literal "-0x48"))) (; ";")) (expression_statement "*(undefined4 *)(puVar25 + -4) = uVar29;" (assignment_expression "*(undefined4 *)(puVar25 + -4) = uVar29" (pointer_expression "*(undefined4 *)(puVar25 + -4)" (* "*") (cast_expression "(undefined4 *)(puVar25 + -4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar25 + -4)" (( "(") (binary_expression "puVar25 + -4" (identifier "puVar25") (+ "+") (number_literal "-4")) () ")")))) (= "=") (identifier "uVar29")) (; ";")) (expression_statement "*(undefined1 **)(puVar25 + -8) = auStack_40;" (assignment_expression "*(undefined1 **)(puVar25 + -8) = auStack_40" (pointer_expression "*(undefined1 **)(puVar25 + -8)" (* "*") (cast_expression "(undefined1 **)(puVar25 + -8)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar25 + -8)" (( "(") (binary_expression "puVar25 + -8" (identifier "puVar25") (+ "+") (number_literal "-8")) () ")")))) (= "=") (identifier "auStack_40")) (; ";")) (expression_statement "*(uint *)(puVar25 + -0xc) = unaff_s7;" (assignment_expression "*(uint *)(puVar25 + -0xc) = unaff_s7" (pointer_expression "*(uint *)(puVar25 + -0xc)" (* "*") (cast_expression "(uint *)(puVar25 + -0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar25 + -0xc)" (( "(") (binary_expression "puVar25 + -0xc" (identifier "puVar25") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "unaff_s7")) (; ";")) (expression_statement "*(int **)(puVar25 + -0x10) = unaff_s6;" (assignment_expression "*(int **)(puVar25 + -0x10) = unaff_s6" (pointer_expression "*(int **)(puVar25 + -0x10)" (* "*") (cast_expression "(int **)(puVar25 + -0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar25 + -0x10)" (( "(") (binary_expression "puVar25 + -0x10" (identifier "puVar25") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "unaff_s6")) (; ";")) (expression_statement "*(int **)(puVar25 + -0x14) = unaff_s5;" (assignment_expression "*(int **)(puVar25 + -0x14) = unaff_s5" (pointer_expression "*(int **)(puVar25 + -0x14)" (* "*") (cast_expression "(int **)(puVar25 + -0x14)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar25 + -0x14)" (( "(") (binary_expression "puVar25 + -0x14" (identifier "puVar25") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (identifier "unaff_s5")) (; ";")) (expression_statement "*(int **)(puVar25 + -0x18) = unaff_s4;" (assignment_expression "*(int **)(puVar25 + -0x18) = unaff_s4" (pointer_expression "*(int **)(puVar25 + -0x18)" (* "*") (cast_expression "(int **)(puVar25 + -0x18)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar25 + -0x18)" (( "(") (binary_expression "puVar25 + -0x18" (identifier "puVar25") (+ "+") (number_literal "-0x18")) () ")")))) (= "=") (identifier "unaff_s4")) (; ";")) (expression_statement "*(int **)(puVar25 + -0x1c) = unaff_s3;" (assignment_expression "*(int **)(puVar25 + -0x1c) = unaff_s3" (pointer_expression "*(int **)(puVar25 + -0x1c)" (* "*") (cast_expression "(int **)(puVar25 + -0x1c)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar25 + -0x1c)" (( "(") (binary_expression "puVar25 + -0x1c" (identifier "puVar25") (+ "+") (number_literal "-0x1c")) () ")")))) (= "=") (identifier "unaff_s3")) (; ";")) (expression_statement "*(int **)(puVar25 + -0x20) = unaff_s2;" (assignment_expression "*(int **)(puVar25 + -0x20) = unaff_s2" (pointer_expression "*(int **)(puVar25 + -0x20)" (* "*") (cast_expression "(int **)(puVar25 + -0x20)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar25 + -0x20)" (( "(") (binary_expression "puVar25 + -0x20" (identifier "puVar25") (+ "+") (number_literal "-0x20")) () ")")))) (= "=") (identifier "unaff_s2")) (; ";")) (expression_statement "*(int *)(puVar25 + -0x24) = iVar16;" (assignment_expression "*(int *)(puVar25 + -0x24) = iVar16" (pointer_expression "*(int *)(puVar25 + -0x24)" (* "*") (cast_expression "(int *)(puVar25 + -0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar25 + -0x24)" (( "(") (binary_expression "puVar25 + -0x24" (identifier "puVar25") (+ "+") (number_literal "-0x24")) () ")")))) (= "=") (identifier "iVar16")) (; ";")) (expression_statement "*(int *)(puVar25 + -0x28) = unaff_s0;" (assignment_expression "*(int *)(puVar25 + -0x28) = unaff_s0" (pointer_expression "*(int *)(puVar25 + -0x28)" (* "*") (cast_expression "(int *)(puVar25 + -0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar25 + -0x28)" (( "(") (binary_expression "puVar25 + -0x28" (identifier "puVar25") (+ "+") (number_literal "-0x28")) () ")")))) (= "=") (identifier "unaff_s0")) (; ";")) (expression_statement "*(undefined **)(puVar25 + -0x38) = puVar23;" (assignment_expression "*(undefined **)(puVar25 + -0x38) = puVar23" (pointer_expression "*(undefined **)(puVar25 + -0x38)" (* "*") (cast_expression "(undefined **)(puVar25 + -0x38)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar25 + -0x38)" (( "(") (binary_expression "puVar25 + -0x38" (identifier "puVar25") (+ "+") (number_literal "-0x38")) () ")")))) (= "=") (identifier "puVar23")) (; ";")) (expression_statement "*(undefined4 *)(puVar25 + -0x2c) = **(undefined4 **)(puVar21 + 0x66ea0);" (assignment_expression "*(undefined4 *)(puVar25 + -0x2c) = **(undefined4 **)(puVar21 + 0x66ea0)" (pointer_expression "*(undefined4 *)(puVar25 + -0x2c)" (* "*") (cast_expression "(undefined4 *)(puVar25 + -0x2c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar25 + -0x2c)" (( "(") (binary_expression "puVar25 + -0x2c" (identifier "puVar25") (+ "+") (number_literal "-0x2c")) () ")")))) (= "=") (pointer_expression "**(undefined4 **)(puVar21 + 0x66ea0)" (* "*") (pointer_expression "*(undefined4 **)(puVar21 + 0x66ea0)" (* "*") (cast_expression "(undefined4 **)(puVar21 + 0x66ea0)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar21 + 0x66ea0)" (( "(") (binary_expression "puVar21 + 0x66ea0" (identifier "puVar21") (+ "+") (number_literal "0x66ea0")) () ")")))))) (; ";")) (expression_statement "iVar16 = param_3[1];" (assignment_expression "iVar16 = param_3[1]" (identifier "iVar16") (= "=") (subscript_expression "param_3[1]" (identifier "param_3") ([ "[") (number_literal "1") (] "]"))) (; ";")) (if_statement "if (iVar16 < 1) {\n    if (iVar16 < 0) {\n      (**(code **)(puVar21 + 0x66b2c))();\n      goto LAB_000347c8;\n    }\n    param_1[1] = 0;\n    param_2[1] = 0;\n    piVar10 = param_1;\n    piVar12 = param_2;\n  }\n  else {\n    unaff_s4 = param_3;\n    if (*param_2 < iVar16) {\nLAB_000347c8:\n      unaff_s5 = (int *)(**(code **)(puVar21 + 0x66f1c))(param_2,iVar16);\n      puVar23 = *(undefined **)(puVar25 + -0x38);\n    }\n    else {\n      unaff_s5 = (int *)param_2[2];\n    }\n    unaff_s0 = (iVar16 + 1) / 2;\n    param_1[1] = unaff_s0;\n    unaff_s6 = (int *)unaff_s4[2];\n    piVar12 = unaff_s5;\n    param_3 = unaff_s6;\n    if (unaff_s4 == param_1) {\n      unaff_s7 = unaff_s0 * 4;\n      *(undefined4 *)(puVar25 + -0x30) = 0;\n      if (unaff_s7 < 0x7f01) {\n        iVar13 = -(unaff_s7 + 7 & 0xfffffff8);\n        puVar28 = puVar25 + iVar13 + -0x48;\n        unaff_s4 = (int *)(puVar25 + iVar13 + -0x38);\n      }\n      else {\n        unaff_s4 = (int *)(**(code **)(puVar23 + -0x7d50))(puVar25 + -0x30,unaff_s7);\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n      }\n      iVar16 = (**(code **)(puVar23 + -0x7f60))(unaff_s4,unaff_s5,unaff_s6,iVar16);\n      puVar23 = *(undefined **)(puVar25 + -0x38);\n      if (param_1 != param_2) {\n        iVar13 = *unaff_s4;\n        if (unaff_s0 != 1) {\n          piVar10 = unaff_s4 + 1;\n          unaff_s4 = unaff_s4 + unaff_s0;\n          piVar9 = unaff_s6;\n          do {\n            *piVar9 = iVar13;\n            piVar3 = piVar10 + 1;\n            iVar13 = *piVar10;\n            piVar10 = piVar3;\n            piVar9 = piVar9 + 1;\n          } while (unaff_s4 != piVar3);\n          unaff_s7 = unaff_s7 - 4;\n          unaff_s6 = unaff_s6 + unaff_s0 + -1;\n        }\n        *unaff_s6 = iVar13;\n      }\n      piVar10 = *(int **)(puVar25 + -0x30);\n      if (piVar10 != (int *)0x0) {\n        (**(code **)(puVar23 + -0x7a2c))();\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n        param_2[1] = iVar16;\n        puVar27 = puVar28;\n        goto LAB_00034768;\n      }\n    }\n    else {\n      if (*param_1 < unaff_s0) {\n        piVar10 = (int *)(**(code **)(puVar23 + -0x7a84))(param_1,unaff_s0);\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n      }\n      else {\n        piVar10 = (int *)param_1[2];\n      }\n      iVar16 = (**(code **)(puVar23 + -0x7f60))();\n      puVar23 = *(undefined **)(puVar25 + -0x38);\n      puVar28 = puVar25 + -0x48;\n    }\n    param_2[1] = iVar16;\n    puVar27 = puVar28;\n  }" (if "if") (parenthesized_expression "(iVar16 < 1)" (( "(") (binary_expression "iVar16 < 1" (identifier "iVar16") (< "<") (number_literal "1")) () ")")) (compound_statement "{\n    if (iVar16 < 0) {\n      (**(code **)(puVar21 + 0x66b2c))();\n      goto LAB_000347c8;\n    }\n    param_1[1] = 0;\n    param_2[1] = 0;\n    piVar10 = param_1;\n    piVar12 = param_2;\n  }" ({ "{") (if_statement "if (iVar16 < 0) {\n      (**(code **)(puVar21 + 0x66b2c))();\n      goto LAB_000347c8;\n    }" (if "if") (parenthesized_expression "(iVar16 < 0)" (( "(") (binary_expression "iVar16 < 0" (identifier "iVar16") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n      (**(code **)(puVar21 + 0x66b2c))();\n      goto LAB_000347c8;\n    }" ({ "{") (expression_statement "(**(code **)(puVar21 + 0x66b2c))();" (call_expression "(**(code **)(puVar21 + 0x66b2c))()" (parenthesized_expression "(**(code **)(puVar21 + 0x66b2c))" (( "(") (pointer_expression "**(code **)(puVar21 + 0x66b2c)" (* "*") (pointer_expression "*(code **)(puVar21 + 0x66b2c)" (* "*") (cast_expression "(code **)(puVar21 + 0x66b2c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar21 + 0x66b2c)" (( "(") (binary_expression "puVar21 + 0x66b2c" (identifier "puVar21") (+ "+") (number_literal "0x66b2c")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (goto_statement "goto LAB_000347c8;" (goto "goto") (statement_identifier "LAB_000347c8") (; ";")) (} "}"))) (expression_statement "param_1[1] = 0;" (assignment_expression "param_1[1] = 0" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2[1] = 0;" (assignment_expression "param_2[1] = 0" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar10 = param_1;" (assignment_expression "piVar10 = param_1" (identifier "piVar10") (= "=") (identifier "param_1")) (; ";")) (expression_statement "piVar12 = param_2;" (assignment_expression "piVar12 = param_2" (identifier "piVar12") (= "=") (identifier "param_2")) (; ";")) (} "}")) (else_clause "else {\n    unaff_s4 = param_3;\n    if (*param_2 < iVar16) {\nLAB_000347c8:\n      unaff_s5 = (int *)(**(code **)(puVar21 + 0x66f1c))(param_2,iVar16);\n      puVar23 = *(undefined **)(puVar25 + -0x38);\n    }\n    else {\n      unaff_s5 = (int *)param_2[2];\n    }\n    unaff_s0 = (iVar16 + 1) / 2;\n    param_1[1] = unaff_s0;\n    unaff_s6 = (int *)unaff_s4[2];\n    piVar12 = unaff_s5;\n    param_3 = unaff_s6;\n    if (unaff_s4 == param_1) {\n      unaff_s7 = unaff_s0 * 4;\n      *(undefined4 *)(puVar25 + -0x30) = 0;\n      if (unaff_s7 < 0x7f01) {\n        iVar13 = -(unaff_s7 + 7 & 0xfffffff8);\n        puVar28 = puVar25 + iVar13 + -0x48;\n        unaff_s4 = (int *)(puVar25 + iVar13 + -0x38);\n      }\n      else {\n        unaff_s4 = (int *)(**(code **)(puVar23 + -0x7d50))(puVar25 + -0x30,unaff_s7);\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n      }\n      iVar16 = (**(code **)(puVar23 + -0x7f60))(unaff_s4,unaff_s5,unaff_s6,iVar16);\n      puVar23 = *(undefined **)(puVar25 + -0x38);\n      if (param_1 != param_2) {\n        iVar13 = *unaff_s4;\n        if (unaff_s0 != 1) {\n          piVar10 = unaff_s4 + 1;\n          unaff_s4 = unaff_s4 + unaff_s0;\n          piVar9 = unaff_s6;\n          do {\n            *piVar9 = iVar13;\n            piVar3 = piVar10 + 1;\n            iVar13 = *piVar10;\n            piVar10 = piVar3;\n            piVar9 = piVar9 + 1;\n          } while (unaff_s4 != piVar3);\n          unaff_s7 = unaff_s7 - 4;\n          unaff_s6 = unaff_s6 + unaff_s0 + -1;\n        }\n        *unaff_s6 = iVar13;\n      }\n      piVar10 = *(int **)(puVar25 + -0x30);\n      if (piVar10 != (int *)0x0) {\n        (**(code **)(puVar23 + -0x7a2c))();\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n        param_2[1] = iVar16;\n        puVar27 = puVar28;\n        goto LAB_00034768;\n      }\n    }\n    else {\n      if (*param_1 < unaff_s0) {\n        piVar10 = (int *)(**(code **)(puVar23 + -0x7a84))(param_1,unaff_s0);\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n      }\n      else {\n        piVar10 = (int *)param_1[2];\n      }\n      iVar16 = (**(code **)(puVar23 + -0x7f60))();\n      puVar23 = *(undefined **)(puVar25 + -0x38);\n      puVar28 = puVar25 + -0x48;\n    }\n    param_2[1] = iVar16;\n    puVar27 = puVar28;\n  }" (else "else") (compound_statement "{\n    unaff_s4 = param_3;\n    if (*param_2 < iVar16) {\nLAB_000347c8:\n      unaff_s5 = (int *)(**(code **)(puVar21 + 0x66f1c))(param_2,iVar16);\n      puVar23 = *(undefined **)(puVar25 + -0x38);\n    }\n    else {\n      unaff_s5 = (int *)param_2[2];\n    }\n    unaff_s0 = (iVar16 + 1) / 2;\n    param_1[1] = unaff_s0;\n    unaff_s6 = (int *)unaff_s4[2];\n    piVar12 = unaff_s5;\n    param_3 = unaff_s6;\n    if (unaff_s4 == param_1) {\n      unaff_s7 = unaff_s0 * 4;\n      *(undefined4 *)(puVar25 + -0x30) = 0;\n      if (unaff_s7 < 0x7f01) {\n        iVar13 = -(unaff_s7 + 7 & 0xfffffff8);\n        puVar28 = puVar25 + iVar13 + -0x48;\n        unaff_s4 = (int *)(puVar25 + iVar13 + -0x38);\n      }\n      else {\n        unaff_s4 = (int *)(**(code **)(puVar23 + -0x7d50))(puVar25 + -0x30,unaff_s7);\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n      }\n      iVar16 = (**(code **)(puVar23 + -0x7f60))(unaff_s4,unaff_s5,unaff_s6,iVar16);\n      puVar23 = *(undefined **)(puVar25 + -0x38);\n      if (param_1 != param_2) {\n        iVar13 = *unaff_s4;\n        if (unaff_s0 != 1) {\n          piVar10 = unaff_s4 + 1;\n          unaff_s4 = unaff_s4 + unaff_s0;\n          piVar9 = unaff_s6;\n          do {\n            *piVar9 = iVar13;\n            piVar3 = piVar10 + 1;\n            iVar13 = *piVar10;\n            piVar10 = piVar3;\n            piVar9 = piVar9 + 1;\n          } while (unaff_s4 != piVar3);\n          unaff_s7 = unaff_s7 - 4;\n          unaff_s6 = unaff_s6 + unaff_s0 + -1;\n        }\n        *unaff_s6 = iVar13;\n      }\n      piVar10 = *(int **)(puVar25 + -0x30);\n      if (piVar10 != (int *)0x0) {\n        (**(code **)(puVar23 + -0x7a2c))();\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n        param_2[1] = iVar16;\n        puVar27 = puVar28;\n        goto LAB_00034768;\n      }\n    }\n    else {\n      if (*param_1 < unaff_s0) {\n        piVar10 = (int *)(**(code **)(puVar23 + -0x7a84))(param_1,unaff_s0);\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n      }\n      else {\n        piVar10 = (int *)param_1[2];\n      }\n      iVar16 = (**(code **)(puVar23 + -0x7f60))();\n      puVar23 = *(undefined **)(puVar25 + -0x38);\n      puVar28 = puVar25 + -0x48;\n    }\n    param_2[1] = iVar16;\n    puVar27 = puVar28;\n  }" ({ "{") (expression_statement "unaff_s4 = param_3;" (assignment_expression "unaff_s4 = param_3" (identifier "unaff_s4") (= "=") (identifier "param_3")) (; ";")) (if_statement "if (*param_2 < iVar16) {\nLAB_000347c8:\n      unaff_s5 = (int *)(**(code **)(puVar21 + 0x66f1c))(param_2,iVar16);\n      puVar23 = *(undefined **)(puVar25 + -0x38);\n    }\n    else {\n      unaff_s5 = (int *)param_2[2];\n    }" (if "if") (parenthesized_expression "(*param_2 < iVar16)" (( "(") (binary_expression "*param_2 < iVar16" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (< "<") (identifier "iVar16")) () ")")) (compound_statement "{\nLAB_000347c8:\n      unaff_s5 = (int *)(**(code **)(puVar21 + 0x66f1c))(param_2,iVar16);\n      puVar23 = *(undefined **)(puVar25 + -0x38);\n    }" ({ "{") (labeled_statement "LAB_000347c8:\n      unaff_s5 = (int *)(**(code **)(puVar21 + 0x66f1c))(param_2,iVar16);" (statement_identifier "LAB_000347c8") (: ":") (expression_statement "unaff_s5 = (int *)(**(code **)(puVar21 + 0x66f1c))(param_2,iVar16);" (assignment_expression "unaff_s5 = (int *)(**(code **)(puVar21 + 0x66f1c))(param_2,iVar16)" (identifier "unaff_s5") (= "=") (cast_expression "(int *)(**(code **)(puVar21 + 0x66f1c))(param_2,iVar16)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(**(code **)(puVar21 + 0x66f1c))(param_2,iVar16)" (parenthesized_expression "(**(code **)(puVar21 + 0x66f1c))" (( "(") (pointer_expression "**(code **)(puVar21 + 0x66f1c)" (* "*") (pointer_expression "*(code **)(puVar21 + 0x66f1c)" (* "*") (cast_expression "(code **)(puVar21 + 0x66f1c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar21 + 0x66f1c)" (( "(") (binary_expression "puVar21 + 0x66f1c" (identifier "puVar21") (+ "+") (number_literal "0x66f1c")) () ")"))))) () ")")) (argument_list "(param_2,iVar16)" (( "(") (identifier "param_2") (, ",") (identifier "iVar16") () ")"))))) (; ";"))) (expression_statement "puVar23 = *(undefined **)(puVar25 + -0x38);" (assignment_expression "puVar23 = *(undefined **)(puVar25 + -0x38)" (identifier "puVar23") (= "=") (pointer_expression "*(undefined **)(puVar25 + -0x38)" (* "*") (cast_expression "(undefined **)(puVar25 + -0x38)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar25 + -0x38)" (( "(") (binary_expression "puVar25 + -0x38" (identifier "puVar25") (+ "+") (number_literal "-0x38")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n      unaff_s5 = (int *)param_2[2];\n    }" (else "else") (compound_statement "{\n      unaff_s5 = (int *)param_2[2];\n    }" ({ "{") (expression_statement "unaff_s5 = (int *)param_2[2];" (assignment_expression "unaff_s5 = (int *)param_2[2]" (identifier "unaff_s5") (= "=") (cast_expression "(int *)param_2[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]")))) (; ";")) (} "}")))) (expression_statement "unaff_s0 = (iVar16 + 1) / 2;" (assignment_expression "unaff_s0 = (iVar16 + 1) / 2" (identifier "unaff_s0") (= "=") (binary_expression "(iVar16 + 1) / 2" (parenthesized_expression "(iVar16 + 1)" (( "(") (binary_expression "iVar16 + 1" (identifier "iVar16") (+ "+") (number_literal "1")) () ")")) (/ "/") (number_literal "2"))) (; ";")) (expression_statement "param_1[1] = unaff_s0;" (assignment_expression "param_1[1] = unaff_s0" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "unaff_s0")) (; ";")) (expression_statement "unaff_s6 = (int *)unaff_s4[2];" (assignment_expression "unaff_s6 = (int *)unaff_s4[2]" (identifier "unaff_s6") (= "=") (cast_expression "(int *)unaff_s4[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "unaff_s4[2]" (identifier "unaff_s4") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "piVar12 = unaff_s5;" (assignment_expression "piVar12 = unaff_s5" (identifier "piVar12") (= "=") (identifier "unaff_s5")) (; ";")) (expression_statement "param_3 = unaff_s6;" (assignment_expression "param_3 = unaff_s6" (identifier "param_3") (= "=") (identifier "unaff_s6")) (; ";")) (if_statement "if (unaff_s4 == param_1) {\n      unaff_s7 = unaff_s0 * 4;\n      *(undefined4 *)(puVar25 + -0x30) = 0;\n      if (unaff_s7 < 0x7f01) {\n        iVar13 = -(unaff_s7 + 7 & 0xfffffff8);\n        puVar28 = puVar25 + iVar13 + -0x48;\n        unaff_s4 = (int *)(puVar25 + iVar13 + -0x38);\n      }\n      else {\n        unaff_s4 = (int *)(**(code **)(puVar23 + -0x7d50))(puVar25 + -0x30,unaff_s7);\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n      }\n      iVar16 = (**(code **)(puVar23 + -0x7f60))(unaff_s4,unaff_s5,unaff_s6,iVar16);\n      puVar23 = *(undefined **)(puVar25 + -0x38);\n      if (param_1 != param_2) {\n        iVar13 = *unaff_s4;\n        if (unaff_s0 != 1) {\n          piVar10 = unaff_s4 + 1;\n          unaff_s4 = unaff_s4 + unaff_s0;\n          piVar9 = unaff_s6;\n          do {\n            *piVar9 = iVar13;\n            piVar3 = piVar10 + 1;\n            iVar13 = *piVar10;\n            piVar10 = piVar3;\n            piVar9 = piVar9 + 1;\n          } while (unaff_s4 != piVar3);\n          unaff_s7 = unaff_s7 - 4;\n          unaff_s6 = unaff_s6 + unaff_s0 + -1;\n        }\n        *unaff_s6 = iVar13;\n      }\n      piVar10 = *(int **)(puVar25 + -0x30);\n      if (piVar10 != (int *)0x0) {\n        (**(code **)(puVar23 + -0x7a2c))();\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n        param_2[1] = iVar16;\n        puVar27 = puVar28;\n        goto LAB_00034768;\n      }\n    }\n    else {\n      if (*param_1 < unaff_s0) {\n        piVar10 = (int *)(**(code **)(puVar23 + -0x7a84))(param_1,unaff_s0);\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n      }\n      else {\n        piVar10 = (int *)param_1[2];\n      }\n      iVar16 = (**(code **)(puVar23 + -0x7f60))();\n      puVar23 = *(undefined **)(puVar25 + -0x38);\n      puVar28 = puVar25 + -0x48;\n    }" (if "if") (parenthesized_expression "(unaff_s4 == param_1)" (( "(") (binary_expression "unaff_s4 == param_1" (identifier "unaff_s4") (== "==") (identifier "param_1")) () ")")) (compound_statement "{\n      unaff_s7 = unaff_s0 * 4;\n      *(undefined4 *)(puVar25 + -0x30) = 0;\n      if (unaff_s7 < 0x7f01) {\n        iVar13 = -(unaff_s7 + 7 & 0xfffffff8);\n        puVar28 = puVar25 + iVar13 + -0x48;\n        unaff_s4 = (int *)(puVar25 + iVar13 + -0x38);\n      }\n      else {\n        unaff_s4 = (int *)(**(code **)(puVar23 + -0x7d50))(puVar25 + -0x30,unaff_s7);\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n      }\n      iVar16 = (**(code **)(puVar23 + -0x7f60))(unaff_s4,unaff_s5,unaff_s6,iVar16);\n      puVar23 = *(undefined **)(puVar25 + -0x38);\n      if (param_1 != param_2) {\n        iVar13 = *unaff_s4;\n        if (unaff_s0 != 1) {\n          piVar10 = unaff_s4 + 1;\n          unaff_s4 = unaff_s4 + unaff_s0;\n          piVar9 = unaff_s6;\n          do {\n            *piVar9 = iVar13;\n            piVar3 = piVar10 + 1;\n            iVar13 = *piVar10;\n            piVar10 = piVar3;\n            piVar9 = piVar9 + 1;\n          } while (unaff_s4 != piVar3);\n          unaff_s7 = unaff_s7 - 4;\n          unaff_s6 = unaff_s6 + unaff_s0 + -1;\n        }\n        *unaff_s6 = iVar13;\n      }\n      piVar10 = *(int **)(puVar25 + -0x30);\n      if (piVar10 != (int *)0x0) {\n        (**(code **)(puVar23 + -0x7a2c))();\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n        param_2[1] = iVar16;\n        puVar27 = puVar28;\n        goto LAB_00034768;\n      }\n    }" ({ "{") (expression_statement "unaff_s7 = unaff_s0 * 4;" (assignment_expression "unaff_s7 = unaff_s0 * 4" (identifier "unaff_s7") (= "=") (binary_expression "unaff_s0 * 4" (identifier "unaff_s0") (* "*") (number_literal "4"))) (; ";")) (expression_statement "*(undefined4 *)(puVar25 + -0x30) = 0;" (assignment_expression "*(undefined4 *)(puVar25 + -0x30) = 0" (pointer_expression "*(undefined4 *)(puVar25 + -0x30)" (* "*") (cast_expression "(undefined4 *)(puVar25 + -0x30)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar25 + -0x30)" (( "(") (binary_expression "puVar25 + -0x30" (identifier "puVar25") (+ "+") (number_literal "-0x30")) () ")")))) (= "=") (number_literal "0")) (; ";")) (if_statement "if (unaff_s7 < 0x7f01) {\n        iVar13 = -(unaff_s7 + 7 & 0xfffffff8);\n        puVar28 = puVar25 + iVar13 + -0x48;\n        unaff_s4 = (int *)(puVar25 + iVar13 + -0x38);\n      }\n      else {\n        unaff_s4 = (int *)(**(code **)(puVar23 + -0x7d50))(puVar25 + -0x30,unaff_s7);\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n      }" (if "if") (parenthesized_expression "(unaff_s7 < 0x7f01)" (( "(") (binary_expression "unaff_s7 < 0x7f01" (identifier "unaff_s7") (< "<") (number_literal "0x7f01")) () ")")) (compound_statement "{\n        iVar13 = -(unaff_s7 + 7 & 0xfffffff8);\n        puVar28 = puVar25 + iVar13 + -0x48;\n        unaff_s4 = (int *)(puVar25 + iVar13 + -0x38);\n      }" ({ "{") (expression_statement "iVar13 = -(unaff_s7 + 7 & 0xfffffff8);" (assignment_expression "iVar13 = -(unaff_s7 + 7 & 0xfffffff8)" (identifier "iVar13") (= "=") (unary_expression "-(unaff_s7 + 7 & 0xfffffff8)" (- "-") (parenthesized_expression "(unaff_s7 + 7 & 0xfffffff8)" (( "(") (binary_expression "unaff_s7 + 7 & 0xfffffff8" (binary_expression "unaff_s7 + 7" (identifier "unaff_s7") (+ "+") (number_literal "7")) (& "&") (number_literal "0xfffffff8")) () ")")))) (; ";")) (expression_statement "puVar28 = puVar25 + iVar13 + -0x48;" (assignment_expression "puVar28 = puVar25 + iVar13 + -0x48" (identifier "puVar28") (= "=") (binary_expression "puVar25 + iVar13 + -0x48" (binary_expression "puVar25 + iVar13" (identifier "puVar25") (+ "+") (identifier "iVar13")) (+ "+") (number_literal "-0x48"))) (; ";")) (expression_statement "unaff_s4 = (int *)(puVar25 + iVar13 + -0x38);" (assignment_expression "unaff_s4 = (int *)(puVar25 + iVar13 + -0x38)" (identifier "unaff_s4") (= "=") (cast_expression "(int *)(puVar25 + iVar13 + -0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar25 + iVar13 + -0x38)" (( "(") (binary_expression "puVar25 + iVar13 + -0x38" (binary_expression "puVar25 + iVar13" (identifier "puVar25") (+ "+") (identifier "iVar13")) (+ "+") (number_literal "-0x38")) () ")")))) (; ";")) (} "}")) (else_clause "else {\n        unaff_s4 = (int *)(**(code **)(puVar23 + -0x7d50))(puVar25 + -0x30,unaff_s7);\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n      }" (else "else") (compound_statement "{\n        unaff_s4 = (int *)(**(code **)(puVar23 + -0x7d50))(puVar25 + -0x30,unaff_s7);\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n      }" ({ "{") (expression_statement "unaff_s4 = (int *)(**(code **)(puVar23 + -0x7d50))(puVar25 + -0x30,unaff_s7);" (assignment_expression "unaff_s4 = (int *)(**(code **)(puVar23 + -0x7d50))(puVar25 + -0x30,unaff_s7)" (identifier "unaff_s4") (= "=") (cast_expression "(int *)(**(code **)(puVar23 + -0x7d50))(puVar25 + -0x30,unaff_s7)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(**(code **)(puVar23 + -0x7d50))(puVar25 + -0x30,unaff_s7)" (parenthesized_expression "(**(code **)(puVar23 + -0x7d50))" (( "(") (pointer_expression "**(code **)(puVar23 + -0x7d50)" (* "*") (pointer_expression "*(code **)(puVar23 + -0x7d50)" (* "*") (cast_expression "(code **)(puVar23 + -0x7d50)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar23 + -0x7d50)" (( "(") (binary_expression "puVar23 + -0x7d50" (identifier "puVar23") (+ "+") (number_literal "-0x7d50")) () ")"))))) () ")")) (argument_list "(puVar25 + -0x30,unaff_s7)" (( "(") (binary_expression "puVar25 + -0x30" (identifier "puVar25") (+ "+") (number_literal "-0x30")) (, ",") (identifier "unaff_s7") () ")"))))) (; ";")) (expression_statement "puVar23 = *(undefined **)(puVar25 + -0x38);" (assignment_expression "puVar23 = *(undefined **)(puVar25 + -0x38)" (identifier "puVar23") (= "=") (pointer_expression "*(undefined **)(puVar25 + -0x38)" (* "*") (cast_expression "(undefined **)(puVar25 + -0x38)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar25 + -0x38)" (( "(") (binary_expression "puVar25 + -0x38" (identifier "puVar25") (+ "+") (number_literal "-0x38")) () ")"))))) (; ";")) (} "}")))) (expression_statement "iVar16 = (**(code **)(puVar23 + -0x7f60))(unaff_s4,unaff_s5,unaff_s6,iVar16);" (assignment_expression "iVar16 = (**(code **)(puVar23 + -0x7f60))(unaff_s4,unaff_s5,unaff_s6,iVar16)" (identifier "iVar16") (= "=") (call_expression "(**(code **)(puVar23 + -0x7f60))(unaff_s4,unaff_s5,unaff_s6,iVar16)" (parenthesized_expression "(**(code **)(puVar23 + -0x7f60))" (( "(") (pointer_expression "**(code **)(puVar23 + -0x7f60)" (* "*") (pointer_expression "*(code **)(puVar23 + -0x7f60)" (* "*") (cast_expression "(code **)(puVar23 + -0x7f60)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar23 + -0x7f60)" (( "(") (binary_expression "puVar23 + -0x7f60" (identifier "puVar23") (+ "+") (number_literal "-0x7f60")) () ")"))))) () ")")) (argument_list "(unaff_s4,unaff_s5,unaff_s6,iVar16)" (( "(") (identifier "unaff_s4") (, ",") (identifier "unaff_s5") (, ",") (identifier "unaff_s6") (, ",") (identifier "iVar16") () ")")))) (; ";")) (expression_statement "puVar23 = *(undefined **)(puVar25 + -0x38);" (assignment_expression "puVar23 = *(undefined **)(puVar25 + -0x38)" (identifier "puVar23") (= "=") (pointer_expression "*(undefined **)(puVar25 + -0x38)" (* "*") (cast_expression "(undefined **)(puVar25 + -0x38)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar25 + -0x38)" (( "(") (binary_expression "puVar25 + -0x38" (identifier "puVar25") (+ "+") (number_literal "-0x38")) () ")"))))) (; ";")) (if_statement "if (param_1 != param_2) {\n        iVar13 = *unaff_s4;\n        if (unaff_s0 != 1) {\n          piVar10 = unaff_s4 + 1;\n          unaff_s4 = unaff_s4 + unaff_s0;\n          piVar9 = unaff_s6;\n          do {\n            *piVar9 = iVar13;\n            piVar3 = piVar10 + 1;\n            iVar13 = *piVar10;\n            piVar10 = piVar3;\n            piVar9 = piVar9 + 1;\n          } while (unaff_s4 != piVar3);\n          unaff_s7 = unaff_s7 - 4;\n          unaff_s6 = unaff_s6 + unaff_s0 + -1;\n        }\n        *unaff_s6 = iVar13;\n      }" (if "if") (parenthesized_expression "(param_1 != param_2)" (( "(") (binary_expression "param_1 != param_2" (identifier "param_1") (!= "!=") (identifier "param_2")) () ")")) (compound_statement "{\n        iVar13 = *unaff_s4;\n        if (unaff_s0 != 1) {\n          piVar10 = unaff_s4 + 1;\n          unaff_s4 = unaff_s4 + unaff_s0;\n          piVar9 = unaff_s6;\n          do {\n            *piVar9 = iVar13;\n            piVar3 = piVar10 + 1;\n            iVar13 = *piVar10;\n            piVar10 = piVar3;\n            piVar9 = piVar9 + 1;\n          } while (unaff_s4 != piVar3);\n          unaff_s7 = unaff_s7 - 4;\n          unaff_s6 = unaff_s6 + unaff_s0 + -1;\n        }\n        *unaff_s6 = iVar13;\n      }" ({ "{") (expression_statement "iVar13 = *unaff_s4;" (assignment_expression "iVar13 = *unaff_s4" (identifier "iVar13") (= "=") (pointer_expression "*unaff_s4" (* "*") (identifier "unaff_s4"))) (; ";")) (if_statement "if (unaff_s0 != 1) {\n          piVar10 = unaff_s4 + 1;\n          unaff_s4 = unaff_s4 + unaff_s0;\n          piVar9 = unaff_s6;\n          do {\n            *piVar9 = iVar13;\n            piVar3 = piVar10 + 1;\n            iVar13 = *piVar10;\n            piVar10 = piVar3;\n            piVar9 = piVar9 + 1;\n          } while (unaff_s4 != piVar3);\n          unaff_s7 = unaff_s7 - 4;\n          unaff_s6 = unaff_s6 + unaff_s0 + -1;\n        }" (if "if") (parenthesized_expression "(unaff_s0 != 1)" (( "(") (binary_expression "unaff_s0 != 1" (identifier "unaff_s0") (!= "!=") (number_literal "1")) () ")")) (compound_statement "{\n          piVar10 = unaff_s4 + 1;\n          unaff_s4 = unaff_s4 + unaff_s0;\n          piVar9 = unaff_s6;\n          do {\n            *piVar9 = iVar13;\n            piVar3 = piVar10 + 1;\n            iVar13 = *piVar10;\n            piVar10 = piVar3;\n            piVar9 = piVar9 + 1;\n          } while (unaff_s4 != piVar3);\n          unaff_s7 = unaff_s7 - 4;\n          unaff_s6 = unaff_s6 + unaff_s0 + -1;\n        }" ({ "{") (expression_statement "piVar10 = unaff_s4 + 1;" (assignment_expression "piVar10 = unaff_s4 + 1" (identifier "piVar10") (= "=") (binary_expression "unaff_s4 + 1" (identifier "unaff_s4") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "unaff_s4 = unaff_s4 + unaff_s0;" (assignment_expression "unaff_s4 = unaff_s4 + unaff_s0" (identifier "unaff_s4") (= "=") (binary_expression "unaff_s4 + unaff_s0" (identifier "unaff_s4") (+ "+") (identifier "unaff_s0"))) (; ";")) (expression_statement "piVar9 = unaff_s6;" (assignment_expression "piVar9 = unaff_s6" (identifier "piVar9") (= "=") (identifier "unaff_s6")) (; ";")) (do_statement "do {\n            *piVar9 = iVar13;\n            piVar3 = piVar10 + 1;\n            iVar13 = *piVar10;\n            piVar10 = piVar3;\n            piVar9 = piVar9 + 1;\n          } while (unaff_s4 != piVar3);" (do "do") (compound_statement "{\n            *piVar9 = iVar13;\n            piVar3 = piVar10 + 1;\n            iVar13 = *piVar10;\n            piVar10 = piVar3;\n            piVar9 = piVar9 + 1;\n          }" ({ "{") (expression_statement "*piVar9 = iVar13;" (assignment_expression "*piVar9 = iVar13" (pointer_expression "*piVar9" (* "*") (identifier "piVar9")) (= "=") (identifier "iVar13")) (; ";")) (expression_statement "piVar3 = piVar10 + 1;" (assignment_expression "piVar3 = piVar10 + 1" (identifier "piVar3") (= "=") (binary_expression "piVar10 + 1" (identifier "piVar10") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar13 = *piVar10;" (assignment_expression "iVar13 = *piVar10" (identifier "iVar13") (= "=") (pointer_expression "*piVar10" (* "*") (identifier "piVar10"))) (; ";")) (expression_statement "piVar10 = piVar3;" (assignment_expression "piVar10 = piVar3" (identifier "piVar10") (= "=") (identifier "piVar3")) (; ";")) (expression_statement "piVar9 = piVar9 + 1;" (assignment_expression "piVar9 = piVar9 + 1" (identifier "piVar9") (= "=") (binary_expression "piVar9 + 1" (identifier "piVar9") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(unaff_s4 != piVar3)" (( "(") (binary_expression "unaff_s4 != piVar3" (identifier "unaff_s4") (!= "!=") (identifier "piVar3")) () ")")) (; ";")) (expression_statement "unaff_s7 = unaff_s7 - 4;" (assignment_expression "unaff_s7 = unaff_s7 - 4" (identifier "unaff_s7") (= "=") (binary_expression "unaff_s7 - 4" (identifier "unaff_s7") (- "-") (number_literal "4"))) (; ";")) (expression_statement "unaff_s6 = unaff_s6 + unaff_s0 + -1;" (assignment_expression "unaff_s6 = unaff_s6 + unaff_s0 + -1" (identifier "unaff_s6") (= "=") (binary_expression "unaff_s6 + unaff_s0 + -1" (binary_expression "unaff_s6 + unaff_s0" (identifier "unaff_s6") (+ "+") (identifier "unaff_s0")) (+ "+") (number_literal "-1"))) (; ";")) (} "}"))) (expression_statement "*unaff_s6 = iVar13;" (assignment_expression "*unaff_s6 = iVar13" (pointer_expression "*unaff_s6" (* "*") (identifier "unaff_s6")) (= "=") (identifier "iVar13")) (; ";")) (} "}"))) (expression_statement "piVar10 = *(int **)(puVar25 + -0x30);" (assignment_expression "piVar10 = *(int **)(puVar25 + -0x30)" (identifier "piVar10") (= "=") (pointer_expression "*(int **)(puVar25 + -0x30)" (* "*") (cast_expression "(int **)(puVar25 + -0x30)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar25 + -0x30)" (( "(") (binary_expression "puVar25 + -0x30" (identifier "puVar25") (+ "+") (number_literal "-0x30")) () ")"))))) (; ";")) (if_statement "if (piVar10 != (int *)0x0) {\n        (**(code **)(puVar23 + -0x7a2c))();\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n        param_2[1] = iVar16;\n        puVar27 = puVar28;\n        goto LAB_00034768;\n      }" (if "if") (parenthesized_expression "(piVar10 != (int *)0x0)" (( "(") (binary_expression "piVar10 != (int *)0x0" (identifier "piVar10") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        (**(code **)(puVar23 + -0x7a2c))();\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n        param_2[1] = iVar16;\n        puVar27 = puVar28;\n        goto LAB_00034768;\n      }" ({ "{") (expression_statement "(**(code **)(puVar23 + -0x7a2c))();" (call_expression "(**(code **)(puVar23 + -0x7a2c))()" (parenthesized_expression "(**(code **)(puVar23 + -0x7a2c))" (( "(") (pointer_expression "**(code **)(puVar23 + -0x7a2c)" (* "*") (pointer_expression "*(code **)(puVar23 + -0x7a2c)" (* "*") (cast_expression "(code **)(puVar23 + -0x7a2c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar23 + -0x7a2c)" (( "(") (binary_expression "puVar23 + -0x7a2c" (identifier "puVar23") (+ "+") (number_literal "-0x7a2c")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar23 = *(undefined **)(puVar25 + -0x38);" (assignment_expression "puVar23 = *(undefined **)(puVar25 + -0x38)" (identifier "puVar23") (= "=") (pointer_expression "*(undefined **)(puVar25 + -0x38)" (* "*") (cast_expression "(undefined **)(puVar25 + -0x38)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar25 + -0x38)" (( "(") (binary_expression "puVar25 + -0x38" (identifier "puVar25") (+ "+") (number_literal "-0x38")) () ")"))))) (; ";")) (expression_statement "param_2[1] = iVar16;" (assignment_expression "param_2[1] = iVar16" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "iVar16")) (; ";")) (expression_statement "puVar27 = puVar28;" (assignment_expression "puVar27 = puVar28" (identifier "puVar27") (= "=") (identifier "puVar28")) (; ";")) (goto_statement "goto LAB_00034768;" (goto "goto") (statement_identifier "LAB_00034768") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n      if (*param_1 < unaff_s0) {\n        piVar10 = (int *)(**(code **)(puVar23 + -0x7a84))(param_1,unaff_s0);\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n      }\n      else {\n        piVar10 = (int *)param_1[2];\n      }\n      iVar16 = (**(code **)(puVar23 + -0x7f60))();\n      puVar23 = *(undefined **)(puVar25 + -0x38);\n      puVar28 = puVar25 + -0x48;\n    }" (else "else") (compound_statement "{\n      if (*param_1 < unaff_s0) {\n        piVar10 = (int *)(**(code **)(puVar23 + -0x7a84))(param_1,unaff_s0);\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n      }\n      else {\n        piVar10 = (int *)param_1[2];\n      }\n      iVar16 = (**(code **)(puVar23 + -0x7f60))();\n      puVar23 = *(undefined **)(puVar25 + -0x38);\n      puVar28 = puVar25 + -0x48;\n    }" ({ "{") (if_statement "if (*param_1 < unaff_s0) {\n        piVar10 = (int *)(**(code **)(puVar23 + -0x7a84))(param_1,unaff_s0);\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n      }\n      else {\n        piVar10 = (int *)param_1[2];\n      }" (if "if") (parenthesized_expression "(*param_1 < unaff_s0)" (( "(") (binary_expression "*param_1 < unaff_s0" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (< "<") (identifier "unaff_s0")) () ")")) (compound_statement "{\n        piVar10 = (int *)(**(code **)(puVar23 + -0x7a84))(param_1,unaff_s0);\n        puVar23 = *(undefined **)(puVar25 + -0x38);\n      }" ({ "{") (expression_statement "piVar10 = (int *)(**(code **)(puVar23 + -0x7a84))(param_1,unaff_s0);" (assignment_expression "piVar10 = (int *)(**(code **)(puVar23 + -0x7a84))(param_1,unaff_s0)" (identifier "piVar10") (= "=") (cast_expression "(int *)(**(code **)(puVar23 + -0x7a84))(param_1,unaff_s0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(**(code **)(puVar23 + -0x7a84))(param_1,unaff_s0)" (parenthesized_expression "(**(code **)(puVar23 + -0x7a84))" (( "(") (pointer_expression "**(code **)(puVar23 + -0x7a84)" (* "*") (pointer_expression "*(code **)(puVar23 + -0x7a84)" (* "*") (cast_expression "(code **)(puVar23 + -0x7a84)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar23 + -0x7a84)" (( "(") (binary_expression "puVar23 + -0x7a84" (identifier "puVar23") (+ "+") (number_literal "-0x7a84")) () ")"))))) () ")")) (argument_list "(param_1,unaff_s0)" (( "(") (identifier "param_1") (, ",") (identifier "unaff_s0") () ")"))))) (; ";")) (expression_statement "puVar23 = *(undefined **)(puVar25 + -0x38);" (assignment_expression "puVar23 = *(undefined **)(puVar25 + -0x38)" (identifier "puVar23") (= "=") (pointer_expression "*(undefined **)(puVar25 + -0x38)" (* "*") (cast_expression "(undefined **)(puVar25 + -0x38)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar25 + -0x38)" (( "(") (binary_expression "puVar25 + -0x38" (identifier "puVar25") (+ "+") (number_literal "-0x38")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n        piVar10 = (int *)param_1[2];\n      }" (else "else") (compound_statement "{\n        piVar10 = (int *)param_1[2];\n      }" ({ "{") (expression_statement "piVar10 = (int *)param_1[2];" (assignment_expression "piVar10 = (int *)param_1[2]" (identifier "piVar10") (= "=") (cast_expression "(int *)param_1[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")))) (; ";")) (} "}")))) (expression_statement "iVar16 = (**(code **)(puVar23 + -0x7f60))();" (assignment_expression "iVar16 = (**(code **)(puVar23 + -0x7f60))()" (identifier "iVar16") (= "=") (call_expression "(**(code **)(puVar23 + -0x7f60))()" (parenthesized_expression "(**(code **)(puVar23 + -0x7f60))" (( "(") (pointer_expression "**(code **)(puVar23 + -0x7f60)" (* "*") (pointer_expression "*(code **)(puVar23 + -0x7f60)" (* "*") (cast_expression "(code **)(puVar23 + -0x7f60)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar23 + -0x7f60)" (( "(") (binary_expression "puVar23 + -0x7f60" (identifier "puVar23") (+ "+") (number_literal "-0x7f60")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "puVar23 = *(undefined **)(puVar25 + -0x38);" (assignment_expression "puVar23 = *(undefined **)(puVar25 + -0x38)" (identifier "puVar23") (= "=") (pointer_expression "*(undefined **)(puVar25 + -0x38)" (* "*") (cast_expression "(undefined **)(puVar25 + -0x38)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar25 + -0x38)" (( "(") (binary_expression "puVar25 + -0x38" (identifier "puVar25") (+ "+") (number_literal "-0x38")) () ")"))))) (; ";")) (expression_statement "puVar28 = puVar25 + -0x48;" (assignment_expression "puVar28 = puVar25 + -0x48" (identifier "puVar28") (= "=") (binary_expression "puVar25 + -0x48" (identifier "puVar25") (+ "+") (number_literal "-0x48"))) (; ";")) (} "}")))) (expression_statement "param_2[1] = iVar16;" (assignment_expression "param_2[1] = iVar16" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "iVar16")) (; ";")) (expression_statement "puVar27 = puVar28;" (assignment_expression "puVar27 = puVar28" (identifier "puVar27") (= "=") (identifier "puVar28")) (; ";")) (} "}")))) (labeled_statement "LAB_00034768:\n  if (*(int *)(puVar25 + -0x2c) == **(int **)(puVar23 + -0x7b00)) {\n    return;\n  }" (statement_identifier "LAB_00034768") (: ":") (if_statement "if (*(int *)(puVar25 + -0x2c) == **(int **)(puVar23 + -0x7b00)) {\n    return;\n  }" (if "if") (parenthesized_expression "(*(int *)(puVar25 + -0x2c) == **(int **)(puVar23 + -0x7b00))" (( "(") (binary_expression "*(int *)(puVar25 + -0x2c) == **(int **)(puVar23 + -0x7b00)" (pointer_expression "*(int *)(puVar25 + -0x2c)" (* "*") (cast_expression "(int *)(puVar25 + -0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar25 + -0x2c)" (( "(") (binary_expression "puVar25 + -0x2c" (identifier "puVar25") (+ "+") (number_literal "-0x2c")) () ")")))) (== "==") (pointer_expression "**(int **)(puVar23 + -0x7b00)" (* "*") (pointer_expression "*(int **)(puVar23 + -0x7b00)" (* "*") (cast_expression "(int **)(puVar23 + -0x7b00)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar23 + -0x7b00)" (( "(") (binary_expression "puVar23 + -0x7b00" (identifier "puVar23") (+ "+") (number_literal "-0x7b00")) () ")")))))) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}")))) (expression_statement "pcVar22 = *(code **)(puVar23 + -0x7b70);" (assignment_expression "pcVar22 = *(code **)(puVar23 + -0x7b70)" (identifier "pcVar22") (= "=") (pointer_expression "*(code **)(puVar23 + -0x7b70)" (* "*") (cast_expression "(code **)(puVar23 + -0x7b70)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar23 + -0x7b70)" (( "(") (binary_expression "puVar23 + -0x7b70" (identifier "puVar23") (+ "+") (number_literal "-0x7b70")) () ")"))))) (; ";")) (expression_statement "uVar29 = 0x348d4;" (assignment_expression "uVar29 = 0x348d4" (identifier "uVar29") (= "=") (number_literal "0x348d4")) (; ";")) (expression_statement "(*pcVar22)();" (call_expression "(*pcVar22)()" (parenthesized_expression "(*pcVar22)" (( "(") (pointer_expression "*pcVar22" (* "*") (identifier "pcVar22")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "pcVar24 = pcVar22 + 0x6e760;" (assignment_expression "pcVar24 = pcVar22 + 0x6e760" (identifier "pcVar24") (= "=") (binary_expression "pcVar22 + 0x6e760" (identifier "pcVar22") (+ "+") (number_literal "0x6e760"))) (; ";")) (expression_statement "*(undefined4 *)(puVar27 + -4) = uVar29;" (assignment_expression "*(undefined4 *)(puVar27 + -4) = uVar29" (pointer_expression "*(undefined4 *)(puVar27 + -4)" (* "*") (cast_expression "(undefined4 *)(puVar27 + -4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar27 + -4)" (( "(") (binary_expression "puVar27 + -4" (identifier "puVar27") (+ "+") (number_literal "-4")) () ")")))) (= "=") (identifier "uVar29")) (; ";")) (expression_statement "*(uint *)(puVar27 + -8) = unaff_s7;" (assignment_expression "*(uint *)(puVar27 + -8) = unaff_s7" (pointer_expression "*(uint *)(puVar27 + -8)" (* "*") (cast_expression "(uint *)(puVar27 + -8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar27 + -8)" (( "(") (binary_expression "puVar27 + -8" (identifier "puVar27") (+ "+") (number_literal "-8")) () ")")))) (= "=") (identifier "unaff_s7")) (; ";")) (expression_statement "*(int **)(puVar27 + -0xc) = unaff_s6;" (assignment_expression "*(int **)(puVar27 + -0xc) = unaff_s6" (pointer_expression "*(int **)(puVar27 + -0xc)" (* "*") (cast_expression "(int **)(puVar27 + -0xc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar27 + -0xc)" (( "(") (binary_expression "puVar27 + -0xc" (identifier "puVar27") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "unaff_s6")) (; ";")) (expression_statement "*(int **)(puVar27 + -0x10) = unaff_s5;" (assignment_expression "*(int **)(puVar27 + -0x10) = unaff_s5" (pointer_expression "*(int **)(puVar27 + -0x10)" (* "*") (cast_expression "(int **)(puVar27 + -0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar27 + -0x10)" (( "(") (binary_expression "puVar27 + -0x10" (identifier "puVar27") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "unaff_s5")) (; ";")) (expression_statement "*(int **)(puVar27 + -0x14) = unaff_s4;" (assignment_expression "*(int **)(puVar27 + -0x14) = unaff_s4" (pointer_expression "*(int **)(puVar27 + -0x14)" (* "*") (cast_expression "(int **)(puVar27 + -0x14)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar27 + -0x14)" (( "(") (binary_expression "puVar27 + -0x14" (identifier "puVar27") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (identifier "unaff_s4")) (; ";")) (expression_statement "*(int **)(puVar27 + -0x18) = param_2;" (assignment_expression "*(int **)(puVar27 + -0x18) = param_2" (pointer_expression "*(int **)(puVar27 + -0x18)" (* "*") (cast_expression "(int **)(puVar27 + -0x18)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar27 + -0x18)" (( "(") (binary_expression "puVar27 + -0x18" (identifier "puVar27") (+ "+") (number_literal "-0x18")) () ")")))) (= "=") (identifier "param_2")) (; ";")) (expression_statement "*(int **)(puVar27 + -0x1c) = param_1;" (assignment_expression "*(int **)(puVar27 + -0x1c) = param_1" (pointer_expression "*(int **)(puVar27 + -0x1c)" (* "*") (cast_expression "(int **)(puVar27 + -0x1c)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar27 + -0x1c)" (( "(") (binary_expression "puVar27 + -0x1c" (identifier "puVar27") (+ "+") (number_literal "-0x1c")) () ")")))) (= "=") (identifier "param_1")) (; ";")) (expression_statement "*(int *)(puVar27 + -0x20) = iVar16;" (assignment_expression "*(int *)(puVar27 + -0x20) = iVar16" (pointer_expression "*(int *)(puVar27 + -0x20)" (* "*") (cast_expression "(int *)(puVar27 + -0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar27 + -0x20)" (( "(") (binary_expression "puVar27 + -0x20" (identifier "puVar27") (+ "+") (number_literal "-0x20")) () ")")))) (= "=") (identifier "iVar16")) (; ";")) (expression_statement "*(int *)(puVar27 + -0x24) = unaff_s0;" (assignment_expression "*(int *)(puVar27 + -0x24) = unaff_s0" (pointer_expression "*(int *)(puVar27 + -0x24)" (* "*") (cast_expression "(int *)(puVar27 + -0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar27 + -0x24)" (( "(") (binary_expression "puVar27 + -0x24" (identifier "puVar27") (+ "+") (number_literal "-0x24")) () ")")))) (= "=") (identifier "unaff_s0")) (; ";")) (expression_statement "*(code **)(puVar27 + -0x30) = pcVar24;" (assignment_expression "*(code **)(puVar27 + -0x30) = pcVar24" (pointer_expression "*(code **)(puVar27 + -0x30)" (* "*") (cast_expression "(code **)(puVar27 + -0x30)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar27 + -0x30)" (( "(") (binary_expression "puVar27 + -0x30" (identifier "puVar27") (+ "+") (number_literal "-0x30")) () ")")))) (= "=") (identifier "pcVar24")) (; ";")) (expression_statement "uVar18 = piVar12[1];" (assignment_expression "uVar18 = piVar12[1]" (identifier "uVar18") (= "=") (subscript_expression "piVar12[1]" (identifier "piVar12") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "uVar4 = param_3[1];" (assignment_expression "uVar4 = param_3[1]" (identifier "uVar4") (= "=") (subscript_expression "param_3[1]" (identifier "param_3") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "uVar6 = -uVar4;" (assignment_expression "uVar6 = -uVar4" (identifier "uVar6") (= "=") (unary_expression "-uVar4" (- "-") (identifier "uVar4"))) (; ";")) (expression_statement "uVar17 = uVar18;" (assignment_expression "uVar17 = uVar18" (identifier "uVar17") (= "=") (identifier "uVar18")) (; ";")) (if_statement "if ((int)uVar18 < 0) {\n    uVar17 = -uVar18;\n  }" (if "if") (parenthesized_expression "((int)uVar18 < 0)" (( "(") (binary_expression "(int)uVar18 < 0" (cast_expression "(int)uVar18" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar18")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n    uVar17 = -uVar18;\n  }" ({ "{") (expression_statement "uVar17 = -uVar18;" (assignment_expression "uVar17 = -uVar18" (identifier "uVar17") (= "=") (unary_expression "-uVar18" (- "-") (identifier "uVar18"))) (; ";")) (} "}"))) (if_statement "if ((int)uVar4 < 0) {\n    uVar4 = -uVar4;\n  }" (if "if") (parenthesized_expression "((int)uVar4 < 0)" (( "(") (binary_expression "(int)uVar4 < 0" (cast_expression "(int)uVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar4")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n    uVar4 = -uVar4;\n  }" ({ "{") (expression_statement "uVar4 = -uVar4;" (assignment_expression "uVar4 = -uVar4" (identifier "uVar4") (= "=") (unary_expression "-uVar4" (- "-") (identifier "uVar4"))) (; ";")) (} "}"))) (expression_statement "uVar14 = uVar4;" (assignment_expression "uVar14 = uVar4" (identifier "uVar14") (= "=") (identifier "uVar4")) (; ";")) (expression_statement "uVar19 = uVar18;" (assignment_expression "uVar19 = uVar18" (identifier "uVar19") (= "=") (identifier "uVar18")) (; ";")) (expression_statement "piVar9 = piVar12;" (assignment_expression "piVar9 = piVar12" (identifier "piVar9") (= "=") (identifier "piVar12")) (; ";")) (if_statement "if ((int)uVar17 < (int)uVar4) {\n    uVar14 = uVar17;\n    uVar17 = uVar4;\n    uVar19 = uVar6;\n    piVar9 = param_3;\n    uVar6 = uVar18;\n    param_3 = piVar12;\n  }" (if "if") (parenthesized_expression "((int)uVar17 < (int)uVar4)" (( "(") (binary_expression "(int)uVar17 < (int)uVar4" (cast_expression "(int)uVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar17")) (< "<") (cast_expression "(int)uVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar4"))) () ")")) (compound_statement "{\n    uVar14 = uVar17;\n    uVar17 = uVar4;\n    uVar19 = uVar6;\n    piVar9 = param_3;\n    uVar6 = uVar18;\n    param_3 = piVar12;\n  }" ({ "{") (expression_statement "uVar14 = uVar17;" (assignment_expression "uVar14 = uVar17" (identifier "uVar14") (= "=") (identifier "uVar17")) (; ";")) (expression_statement "uVar17 = uVar4;" (assignment_expression "uVar17 = uVar4" (identifier "uVar17") (= "=") (identifier "uVar4")) (; ";")) (expression_statement "uVar19 = uVar6;" (assignment_expression "uVar19 = uVar6" (identifier "uVar19") (= "=") (identifier "uVar6")) (; ";")) (expression_statement "piVar9 = param_3;" (assignment_expression "piVar9 = param_3" (identifier "piVar9") (= "=") (identifier "param_3")) (; ";")) (expression_statement "uVar6 = uVar18;" (assignment_expression "uVar6 = uVar18" (identifier "uVar6") (= "=") (identifier "uVar18")) (; ";")) (expression_statement "param_3 = piVar12;" (assignment_expression "param_3 = piVar12" (identifier "param_3") (= "=") (identifier "piVar12")) (; ";")) (} "}"))) (if_statement "if (*piVar10 < (int)(uVar17 + 1)) {\n    iVar16 = (**(code **)(pcVar22 + 0x66cdc))(piVar10);\n    pcVar24 = *(code **)(puVar27 + -0x30);\n  }\n  else {\n    iVar16 = piVar10[2];\n  }" (if "if") (parenthesized_expression "(*piVar10 < (int)(uVar17 + 1))" (( "(") (binary_expression "*piVar10 < (int)(uVar17 + 1)" (pointer_expression "*piVar10" (* "*") (identifier "piVar10")) (< "<") (cast_expression "(int)(uVar17 + 1)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(uVar17 + 1)" (( "(") (binary_expression "uVar17 + 1" (identifier "uVar17") (+ "+") (number_literal "1")) () ")")))) () ")")) (compound_statement "{\n    iVar16 = (**(code **)(pcVar22 + 0x66cdc))(piVar10);\n    pcVar24 = *(code **)(puVar27 + -0x30);\n  }" ({ "{") (expression_statement "iVar16 = (**(code **)(pcVar22 + 0x66cdc))(piVar10);" (assignment_expression "iVar16 = (**(code **)(pcVar22 + 0x66cdc))(piVar10)" (identifier "iVar16") (= "=") (call_expression "(**(code **)(pcVar22 + 0x66cdc))(piVar10)" (parenthesized_expression "(**(code **)(pcVar22 + 0x66cdc))" (( "(") (pointer_expression "**(code **)(pcVar22 + 0x66cdc)" (* "*") (pointer_expression "*(code **)(pcVar22 + 0x66cdc)" (* "*") (cast_expression "(code **)(pcVar22 + 0x66cdc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar22 + 0x66cdc)" (( "(") (binary_expression "pcVar22 + 0x66cdc" (identifier "pcVar22") (+ "+") (number_literal "0x66cdc")) () ")"))))) () ")")) (argument_list "(piVar10)" (( "(") (identifier "piVar10") () ")")))) (; ";")) (expression_statement "pcVar24 = *(code **)(puVar27 + -0x30);" (assignment_expression "pcVar24 = *(code **)(puVar27 + -0x30)" (identifier "pcVar24") (= "=") (pointer_expression "*(code **)(puVar27 + -0x30)" (* "*") (cast_expression "(code **)(puVar27 + -0x30)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar27 + -0x30)" (( "(") (binary_expression "puVar27 + -0x30" (identifier "puVar27") (+ "+") (number_literal "-0x30")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n    iVar16 = piVar10[2];\n  }" (else "else") (compound_statement "{\n    iVar16 = piVar10[2];\n  }" ({ "{") (expression_statement "iVar16 = piVar10[2];" (assignment_expression "iVar16 = piVar10[2]" (identifier "iVar16") (= "=") (subscript_expression "piVar10[2]" (identifier "piVar10") ([ "[") (number_literal "2") (] "]"))) (; ";")) (} "}")))) (expression_statement "iVar20 = piVar9[2];" (assignment_expression "iVar20 = piVar9[2]" (identifier "iVar20") (= "=") (subscript_expression "piVar9[2]" (identifier "piVar9") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "iVar13 = param_3[2];" (assignment_expression "iVar13 = param_3[2]" (identifier "iVar13") (= "=") (subscript_expression "param_3[2]" (identifier "param_3") ([ "[") (number_literal "2") (] "]"))) (; ";")) (if_statement "if ((int)(uVar19 ^ uVar6) < 0) {\n    if (uVar17 == uVar14) {\n      iVar15 = uVar17 * 4;\n      iVar11 = iVar20 + iVar15;\n      iVar8 = iVar13 + iVar15;\n      uVar6 = uVar17;\n      do {\n        uVar6 = uVar6 - 1;\n        if (uVar6 == 0xffffffff) goto LAB_00034bf8;\n        puVar1 = (uint *)(iVar11 + -4);\n        puVar2 = (uint *)(iVar8 + -4);\n        iVar11 = iVar11 + -4;\n        iVar8 = iVar8 + -4;\n      } while (*puVar1 == *puVar2);\n      if (*puVar2 < *puVar1) {\nLAB_00034bf8:\n        (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar20,iVar13,uVar17);\n        if ((0 < (int)uVar17) && (*(int *)(iVar16 + iVar15 + -4) == 0)) {\n          iVar16 = iVar16 + iVar15;\n          do {\n            uVar17 = uVar17 - 1;\n            if (uVar17 == 0) break;\n            piVar12 = (int *)(iVar16 + -8);\n            iVar16 = iVar16 + -4;\n          } while (*piVar12 == 0);\n        }\n        if ((int)uVar19 < 0) {\n          uVar17 = -uVar17;\n        }\n      }\n      else {\n        (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar13,iVar20);\n        if ((0 < (int)uVar17) && (*(int *)(iVar16 + iVar15 + -4) == 0)) {\n          iVar16 = iVar16 + iVar15;\n          do {\n            uVar17 = uVar17 - 1;\n            if (uVar17 == 0) break;\n            piVar12 = (int *)(iVar16 + -8);\n            iVar16 = iVar16 + -4;\n          } while (*piVar12 == 0);\n        }\n        if (-1 < (int)uVar19) {\n          uVar17 = -uVar17;\n        }\n      }\n      goto LAB_000349e8;\n    }\n    if (uVar14 == 0) {\nLAB_00034a50:\n      if ((iVar16 != iVar20) && ((int)uVar14 < (int)uVar17)) {\n        puVar5 = (undefined4 *)(iVar20 + uVar14 * 4);\n        puVar7 = (undefined4 *)(iVar16 + uVar14 * 4);\n        do {\n          *puVar7 = *puVar5;\n          puVar5 = puVar5 + 1;\n          puVar7 = puVar7 + 1;\n        } while (puVar5 != (undefined4 *)(iVar20 + uVar17 * 4));\n      }\n    }\n    else {\n      iVar13 = (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar20,iVar13,uVar14);\n      if (iVar13 == 0) goto LAB_00034a50;\n      if ((int)uVar14 < (int)uVar17) {\n        piVar12 = (int *)(iVar20 + uVar14 * 4);\n        iVar13 = *piVar12;\n        piVar9 = (int *)(iVar16 + uVar14 * 4);\n        *piVar9 = iVar13 + -1;\n        while (uVar14 = uVar14 + 1, iVar13 == 0) {\n          if (uVar17 == uVar14) goto LAB_00034a84;\n          iVar13 = piVar12[1];\n          piVar9[1] = iVar13 + -1;\n          piVar12 = piVar12 + 1;\n          piVar9 = piVar9 + 1;\n        }\n        goto LAB_00034a50;\n      }\n    }\nLAB_00034a84:\n    if ((0 < (int)uVar17) && (iVar13 = (uVar17 + 0x3fffffff) * 4, *(int *)(iVar16 + iVar13) == 0)) {\n      iVar16 = iVar16 + iVar13 + 4;\n      do {\n        uVar17 = uVar17 - 1;\n        if (uVar17 == 0) break;\n        piVar12 = (int *)(iVar16 + -8);\n        iVar16 = iVar16 + -4;\n      } while (*piVar12 == 0);\n    }\n    if ((int)uVar19 < 0) {\n      uVar17 = -uVar17;\n    }\n    goto LAB_000349e8;\n  }" (if "if") (parenthesized_expression "((int)(uVar19 ^ uVar6) < 0)" (( "(") (binary_expression "(int)(uVar19 ^ uVar6) < 0" (cast_expression "(int)(uVar19 ^ uVar6)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(uVar19 ^ uVar6)" (( "(") (binary_expression "uVar19 ^ uVar6" (identifier "uVar19") (^ "^") (identifier "uVar6")) () ")"))) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n    if (uVar17 == uVar14) {\n      iVar15 = uVar17 * 4;\n      iVar11 = iVar20 + iVar15;\n      iVar8 = iVar13 + iVar15;\n      uVar6 = uVar17;\n      do {\n        uVar6 = uVar6 - 1;\n        if (uVar6 == 0xffffffff) goto LAB_00034bf8;\n        puVar1 = (uint *)(iVar11 + -4);\n        puVar2 = (uint *)(iVar8 + -4);\n        iVar11 = iVar11 + -4;\n        iVar8 = iVar8 + -4;\n      } while (*puVar1 == *puVar2);\n      if (*puVar2 < *puVar1) {\nLAB_00034bf8:\n        (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar20,iVar13,uVar17);\n        if ((0 < (int)uVar17) && (*(int *)(iVar16 + iVar15 + -4) == 0)) {\n          iVar16 = iVar16 + iVar15;\n          do {\n            uVar17 = uVar17 - 1;\n            if (uVar17 == 0) break;\n            piVar12 = (int *)(iVar16 + -8);\n            iVar16 = iVar16 + -4;\n          } while (*piVar12 == 0);\n        }\n        if ((int)uVar19 < 0) {\n          uVar17 = -uVar17;\n        }\n      }\n      else {\n        (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar13,iVar20);\n        if ((0 < (int)uVar17) && (*(int *)(iVar16 + iVar15 + -4) == 0)) {\n          iVar16 = iVar16 + iVar15;\n          do {\n            uVar17 = uVar17 - 1;\n            if (uVar17 == 0) break;\n            piVar12 = (int *)(iVar16 + -8);\n            iVar16 = iVar16 + -4;\n          } while (*piVar12 == 0);\n        }\n        if (-1 < (int)uVar19) {\n          uVar17 = -uVar17;\n        }\n      }\n      goto LAB_000349e8;\n    }\n    if (uVar14 == 0) {\nLAB_00034a50:\n      if ((iVar16 != iVar20) && ((int)uVar14 < (int)uVar17)) {\n        puVar5 = (undefined4 *)(iVar20 + uVar14 * 4);\n        puVar7 = (undefined4 *)(iVar16 + uVar14 * 4);\n        do {\n          *puVar7 = *puVar5;\n          puVar5 = puVar5 + 1;\n          puVar7 = puVar7 + 1;\n        } while (puVar5 != (undefined4 *)(iVar20 + uVar17 * 4));\n      }\n    }\n    else {\n      iVar13 = (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar20,iVar13,uVar14);\n      if (iVar13 == 0) goto LAB_00034a50;\n      if ((int)uVar14 < (int)uVar17) {\n        piVar12 = (int *)(iVar20 + uVar14 * 4);\n        iVar13 = *piVar12;\n        piVar9 = (int *)(iVar16 + uVar14 * 4);\n        *piVar9 = iVar13 + -1;\n        while (uVar14 = uVar14 + 1, iVar13 == 0) {\n          if (uVar17 == uVar14) goto LAB_00034a84;\n          iVar13 = piVar12[1];\n          piVar9[1] = iVar13 + -1;\n          piVar12 = piVar12 + 1;\n          piVar9 = piVar9 + 1;\n        }\n        goto LAB_00034a50;\n      }\n    }\nLAB_00034a84:\n    if ((0 < (int)uVar17) && (iVar13 = (uVar17 + 0x3fffffff) * 4, *(int *)(iVar16 + iVar13) == 0)) {\n      iVar16 = iVar16 + iVar13 + 4;\n      do {\n        uVar17 = uVar17 - 1;\n        if (uVar17 == 0) break;\n        piVar12 = (int *)(iVar16 + -8);\n        iVar16 = iVar16 + -4;\n      } while (*piVar12 == 0);\n    }\n    if ((int)uVar19 < 0) {\n      uVar17 = -uVar17;\n    }\n    goto LAB_000349e8;\n  }" ({ "{") (if_statement "if (uVar17 == uVar14) {\n      iVar15 = uVar17 * 4;\n      iVar11 = iVar20 + iVar15;\n      iVar8 = iVar13 + iVar15;\n      uVar6 = uVar17;\n      do {\n        uVar6 = uVar6 - 1;\n        if (uVar6 == 0xffffffff) goto LAB_00034bf8;\n        puVar1 = (uint *)(iVar11 + -4);\n        puVar2 = (uint *)(iVar8 + -4);\n        iVar11 = iVar11 + -4;\n        iVar8 = iVar8 + -4;\n      } while (*puVar1 == *puVar2);\n      if (*puVar2 < *puVar1) {\nLAB_00034bf8:\n        (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar20,iVar13,uVar17);\n        if ((0 < (int)uVar17) && (*(int *)(iVar16 + iVar15 + -4) == 0)) {\n          iVar16 = iVar16 + iVar15;\n          do {\n            uVar17 = uVar17 - 1;\n            if (uVar17 == 0) break;\n            piVar12 = (int *)(iVar16 + -8);\n            iVar16 = iVar16 + -4;\n          } while (*piVar12 == 0);\n        }\n        if ((int)uVar19 < 0) {\n          uVar17 = -uVar17;\n        }\n      }\n      else {\n        (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar13,iVar20);\n        if ((0 < (int)uVar17) && (*(int *)(iVar16 + iVar15 + -4) == 0)) {\n          iVar16 = iVar16 + iVar15;\n          do {\n            uVar17 = uVar17 - 1;\n            if (uVar17 == 0) break;\n            piVar12 = (int *)(iVar16 + -8);\n            iVar16 = iVar16 + -4;\n          } while (*piVar12 == 0);\n        }\n        if (-1 < (int)uVar19) {\n          uVar17 = -uVar17;\n        }\n      }\n      goto LAB_000349e8;\n    }" (if "if") (parenthesized_expression "(uVar17 == uVar14)" (( "(") (binary_expression "uVar17 == uVar14" (identifier "uVar17") (== "==") (identifier "uVar14")) () ")")) (compound_statement "{\n      iVar15 = uVar17 * 4;\n      iVar11 = iVar20 + iVar15;\n      iVar8 = iVar13 + iVar15;\n      uVar6 = uVar17;\n      do {\n        uVar6 = uVar6 - 1;\n        if (uVar6 == 0xffffffff) goto LAB_00034bf8;\n        puVar1 = (uint *)(iVar11 + -4);\n        puVar2 = (uint *)(iVar8 + -4);\n        iVar11 = iVar11 + -4;\n        iVar8 = iVar8 + -4;\n      } while (*puVar1 == *puVar2);\n      if (*puVar2 < *puVar1) {\nLAB_00034bf8:\n        (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar20,iVar13,uVar17);\n        if ((0 < (int)uVar17) && (*(int *)(iVar16 + iVar15 + -4) == 0)) {\n          iVar16 = iVar16 + iVar15;\n          do {\n            uVar17 = uVar17 - 1;\n            if (uVar17 == 0) break;\n            piVar12 = (int *)(iVar16 + -8);\n            iVar16 = iVar16 + -4;\n          } while (*piVar12 == 0);\n        }\n        if ((int)uVar19 < 0) {\n          uVar17 = -uVar17;\n        }\n      }\n      else {\n        (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar13,iVar20);\n        if ((0 < (int)uVar17) && (*(int *)(iVar16 + iVar15 + -4) == 0)) {\n          iVar16 = iVar16 + iVar15;\n          do {\n            uVar17 = uVar17 - 1;\n            if (uVar17 == 0) break;\n            piVar12 = (int *)(iVar16 + -8);\n            iVar16 = iVar16 + -4;\n          } while (*piVar12 == 0);\n        }\n        if (-1 < (int)uVar19) {\n          uVar17 = -uVar17;\n        }\n      }\n      goto LAB_000349e8;\n    }" ({ "{") (expression_statement "iVar15 = uVar17 * 4;" (assignment_expression "iVar15 = uVar17 * 4" (identifier "iVar15") (= "=") (binary_expression "uVar17 * 4" (identifier "uVar17") (* "*") (number_literal "4"))) (; ";")) (expression_statement "iVar11 = iVar20 + iVar15;" (assignment_expression "iVar11 = iVar20 + iVar15" (identifier "iVar11") (= "=") (binary_expression "iVar20 + iVar15" (identifier "iVar20") (+ "+") (identifier "iVar15"))) (; ";")) (expression_statement "iVar8 = iVar13 + iVar15;" (assignment_expression "iVar8 = iVar13 + iVar15" (identifier "iVar8") (= "=") (binary_expression "iVar13 + iVar15" (identifier "iVar13") (+ "+") (identifier "iVar15"))) (; ";")) (expression_statement "uVar6 = uVar17;" (assignment_expression "uVar6 = uVar17" (identifier "uVar6") (= "=") (identifier "uVar17")) (; ";")) (do_statement "do {\n        uVar6 = uVar6 - 1;\n        if (uVar6 == 0xffffffff) goto LAB_00034bf8;\n        puVar1 = (uint *)(iVar11 + -4);\n        puVar2 = (uint *)(iVar8 + -4);\n        iVar11 = iVar11 + -4;\n        iVar8 = iVar8 + -4;\n      } while (*puVar1 == *puVar2);" (do "do") (compound_statement "{\n        uVar6 = uVar6 - 1;\n        if (uVar6 == 0xffffffff) goto LAB_00034bf8;\n        puVar1 = (uint *)(iVar11 + -4);\n        puVar2 = (uint *)(iVar8 + -4);\n        iVar11 = iVar11 + -4;\n        iVar8 = iVar8 + -4;\n      }" ({ "{") (expression_statement "uVar6 = uVar6 - 1;" (assignment_expression "uVar6 = uVar6 - 1" (identifier "uVar6") (= "=") (binary_expression "uVar6 - 1" (identifier "uVar6") (- "-") (number_literal "1"))) (; ";")) (if_statement "if (uVar6 == 0xffffffff) goto LAB_00034bf8;" (if "if") (parenthesized_expression "(uVar6 == 0xffffffff)" (( "(") (binary_expression "uVar6 == 0xffffffff" (identifier "uVar6") (== "==") (number_literal "0xffffffff")) () ")")) (goto_statement "goto LAB_00034bf8;" (goto "goto") (statement_identifier "LAB_00034bf8") (; ";"))) (expression_statement "puVar1 = (uint *)(iVar11 + -4);" (assignment_expression "puVar1 = (uint *)(iVar11 + -4)" (identifier "puVar1") (= "=") (cast_expression "(uint *)(iVar11 + -4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar11 + -4)" (( "(") (binary_expression "iVar11 + -4" (identifier "iVar11") (+ "+") (number_literal "-4")) () ")")))) (; ";")) (expression_statement "puVar2 = (uint *)(iVar8 + -4);" (assignment_expression "puVar2 = (uint *)(iVar8 + -4)" (identifier "puVar2") (= "=") (cast_expression "(uint *)(iVar8 + -4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + -4)" (( "(") (binary_expression "iVar8 + -4" (identifier "iVar8") (+ "+") (number_literal "-4")) () ")")))) (; ";")) (expression_statement "iVar11 = iVar11 + -4;" (assignment_expression "iVar11 = iVar11 + -4" (identifier "iVar11") (= "=") (binary_expression "iVar11 + -4" (identifier "iVar11") (+ "+") (number_literal "-4"))) (; ";")) (expression_statement "iVar8 = iVar8 + -4;" (assignment_expression "iVar8 = iVar8 + -4" (identifier "iVar8") (= "=") (binary_expression "iVar8 + -4" (identifier "iVar8") (+ "+") (number_literal "-4"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(*puVar1 == *puVar2)" (( "(") (binary_expression "*puVar1 == *puVar2" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (== "==") (pointer_expression "*puVar2" (* "*") (identifier "puVar2"))) () ")")) (; ";")) (if_statement "if (*puVar2 < *puVar1) {\nLAB_00034bf8:\n        (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar20,iVar13,uVar17);\n        if ((0 < (int)uVar17) && (*(int *)(iVar16 + iVar15 + -4) == 0)) {\n          iVar16 = iVar16 + iVar15;\n          do {\n            uVar17 = uVar17 - 1;\n            if (uVar17 == 0) break;\n            piVar12 = (int *)(iVar16 + -8);\n            iVar16 = iVar16 + -4;\n          } while (*piVar12 == 0);\n        }\n        if ((int)uVar19 < 0) {\n          uVar17 = -uVar17;\n        }\n      }\n      else {\n        (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar13,iVar20);\n        if ((0 < (int)uVar17) && (*(int *)(iVar16 + iVar15 + -4) == 0)) {\n          iVar16 = iVar16 + iVar15;\n          do {\n            uVar17 = uVar17 - 1;\n            if (uVar17 == 0) break;\n            piVar12 = (int *)(iVar16 + -8);\n            iVar16 = iVar16 + -4;\n          } while (*piVar12 == 0);\n        }\n        if (-1 < (int)uVar19) {\n          uVar17 = -uVar17;\n        }\n      }" (if "if") (parenthesized_expression "(*puVar2 < *puVar1)" (( "(") (binary_expression "*puVar2 < *puVar1" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (< "<") (pointer_expression "*puVar1" (* "*") (identifier "puVar1"))) () ")")) (compound_statement "{\nLAB_00034bf8:\n        (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar20,iVar13,uVar17);\n        if ((0 < (int)uVar17) && (*(int *)(iVar16 + iVar15 + -4) == 0)) {\n          iVar16 = iVar16 + iVar15;\n          do {\n            uVar17 = uVar17 - 1;\n            if (uVar17 == 0) break;\n            piVar12 = (int *)(iVar16 + -8);\n            iVar16 = iVar16 + -4;\n          } while (*piVar12 == 0);\n        }\n        if ((int)uVar19 < 0) {\n          uVar17 = -uVar17;\n        }\n      }" ({ "{") (labeled_statement "LAB_00034bf8:\n        (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar20,iVar13,uVar17);" (statement_identifier "LAB_00034bf8") (: ":") (expression_statement "(**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar20,iVar13,uVar17);" (call_expression "(**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar20,iVar13,uVar17)" (parenthesized_expression "(**(code **)(pcVar24 + -0x7b2c))" (( "(") (pointer_expression "**(code **)(pcVar24 + -0x7b2c)" (* "*") (pointer_expression "*(code **)(pcVar24 + -0x7b2c)" (* "*") (cast_expression "(code **)(pcVar24 + -0x7b2c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar24 + -0x7b2c)" (( "(") (binary_expression "pcVar24 + -0x7b2c" (identifier "pcVar24") (+ "+") (number_literal "-0x7b2c")) () ")"))))) () ")")) (argument_list "(iVar16,iVar20,iVar13,uVar17)" (( "(") (identifier "iVar16") (, ",") (identifier "iVar20") (, ",") (identifier "iVar13") (, ",") (identifier "uVar17") () ")"))) (; ";"))) (if_statement "if ((0 < (int)uVar17) && (*(int *)(iVar16 + iVar15 + -4) == 0)) {\n          iVar16 = iVar16 + iVar15;\n          do {\n            uVar17 = uVar17 - 1;\n            if (uVar17 == 0) break;\n            piVar12 = (int *)(iVar16 + -8);\n            iVar16 = iVar16 + -4;\n          } while (*piVar12 == 0);\n        }" (if "if") (parenthesized_expression "((0 < (int)uVar17) && (*(int *)(iVar16 + iVar15 + -4) == 0))" (( "(") (binary_expression "(0 < (int)uVar17) && (*(int *)(iVar16 + iVar15 + -4) == 0)" (parenthesized_expression "(0 < (int)uVar17)" (( "(") (binary_expression "0 < (int)uVar17" (number_literal "0") (< "<") (cast_expression "(int)uVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar17"))) () ")")) (&& "&&") (parenthesized_expression "(*(int *)(iVar16 + iVar15 + -4) == 0)" (( "(") (binary_expression "*(int *)(iVar16 + iVar15 + -4) == 0" (pointer_expression "*(int *)(iVar16 + iVar15 + -4)" (* "*") (cast_expression "(int *)(iVar16 + iVar15 + -4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar16 + iVar15 + -4)" (( "(") (binary_expression "iVar16 + iVar15 + -4" (binary_expression "iVar16 + iVar15" (identifier "iVar16") (+ "+") (identifier "iVar15")) (+ "+") (number_literal "-4")) () ")")))) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n          iVar16 = iVar16 + iVar15;\n          do {\n            uVar17 = uVar17 - 1;\n            if (uVar17 == 0) break;\n            piVar12 = (int *)(iVar16 + -8);\n            iVar16 = iVar16 + -4;\n          } while (*piVar12 == 0);\n        }" ({ "{") (expression_statement "iVar16 = iVar16 + iVar15;" (assignment_expression "iVar16 = iVar16 + iVar15" (identifier "iVar16") (= "=") (binary_expression "iVar16 + iVar15" (identifier "iVar16") (+ "+") (identifier "iVar15"))) (; ";")) (do_statement "do {\n            uVar17 = uVar17 - 1;\n            if (uVar17 == 0) break;\n            piVar12 = (int *)(iVar16 + -8);\n            iVar16 = iVar16 + -4;\n          } while (*piVar12 == 0);" (do "do") (compound_statement "{\n            uVar17 = uVar17 - 1;\n            if (uVar17 == 0) break;\n            piVar12 = (int *)(iVar16 + -8);\n            iVar16 = iVar16 + -4;\n          }" ({ "{") (expression_statement "uVar17 = uVar17 - 1;" (assignment_expression "uVar17 = uVar17 - 1" (identifier "uVar17") (= "=") (binary_expression "uVar17 - 1" (identifier "uVar17") (- "-") (number_literal "1"))) (; ";")) (if_statement "if (uVar17 == 0) break;" (if "if") (parenthesized_expression "(uVar17 == 0)" (( "(") (binary_expression "uVar17 == 0" (identifier "uVar17") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "piVar12 = (int *)(iVar16 + -8);" (assignment_expression "piVar12 = (int *)(iVar16 + -8)" (identifier "piVar12") (= "=") (cast_expression "(int *)(iVar16 + -8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar16 + -8)" (( "(") (binary_expression "iVar16 + -8" (identifier "iVar16") (+ "+") (number_literal "-8")) () ")")))) (; ";")) (expression_statement "iVar16 = iVar16 + -4;" (assignment_expression "iVar16 = iVar16 + -4" (identifier "iVar16") (= "=") (binary_expression "iVar16 + -4" (identifier "iVar16") (+ "+") (number_literal "-4"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(*piVar12 == 0)" (( "(") (binary_expression "*piVar12 == 0" (pointer_expression "*piVar12" (* "*") (identifier "piVar12")) (== "==") (number_literal "0")) () ")")) (; ";")) (} "}"))) (if_statement "if ((int)uVar19 < 0) {\n          uVar17 = -uVar17;\n        }" (if "if") (parenthesized_expression "((int)uVar19 < 0)" (( "(") (binary_expression "(int)uVar19 < 0" (cast_expression "(int)uVar19" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar19")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n          uVar17 = -uVar17;\n        }" ({ "{") (expression_statement "uVar17 = -uVar17;" (assignment_expression "uVar17 = -uVar17" (identifier "uVar17") (= "=") (unary_expression "-uVar17" (- "-") (identifier "uVar17"))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n        (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar13,iVar20);\n        if ((0 < (int)uVar17) && (*(int *)(iVar16 + iVar15 + -4) == 0)) {\n          iVar16 = iVar16 + iVar15;\n          do {\n            uVar17 = uVar17 - 1;\n            if (uVar17 == 0) break;\n            piVar12 = (int *)(iVar16 + -8);\n            iVar16 = iVar16 + -4;\n          } while (*piVar12 == 0);\n        }\n        if (-1 < (int)uVar19) {\n          uVar17 = -uVar17;\n        }\n      }" (else "else") (compound_statement "{\n        (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar13,iVar20);\n        if ((0 < (int)uVar17) && (*(int *)(iVar16 + iVar15 + -4) == 0)) {\n          iVar16 = iVar16 + iVar15;\n          do {\n            uVar17 = uVar17 - 1;\n            if (uVar17 == 0) break;\n            piVar12 = (int *)(iVar16 + -8);\n            iVar16 = iVar16 + -4;\n          } while (*piVar12 == 0);\n        }\n        if (-1 < (int)uVar19) {\n          uVar17 = -uVar17;\n        }\n      }" ({ "{") (expression_statement "(**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar13,iVar20);" (call_expression "(**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar13,iVar20)" (parenthesized_expression "(**(code **)(pcVar24 + -0x7b2c))" (( "(") (pointer_expression "**(code **)(pcVar24 + -0x7b2c)" (* "*") (pointer_expression "*(code **)(pcVar24 + -0x7b2c)" (* "*") (cast_expression "(code **)(pcVar24 + -0x7b2c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar24 + -0x7b2c)" (( "(") (binary_expression "pcVar24 + -0x7b2c" (identifier "pcVar24") (+ "+") (number_literal "-0x7b2c")) () ")"))))) () ")")) (argument_list "(iVar16,iVar13,iVar20)" (( "(") (identifier "iVar16") (, ",") (identifier "iVar13") (, ",") (identifier "iVar20") () ")"))) (; ";")) (if_statement "if ((0 < (int)uVar17) && (*(int *)(iVar16 + iVar15 + -4) == 0)) {\n          iVar16 = iVar16 + iVar15;\n          do {\n            uVar17 = uVar17 - 1;\n            if (uVar17 == 0) break;\n            piVar12 = (int *)(iVar16 + -8);\n            iVar16 = iVar16 + -4;\n          } while (*piVar12 == 0);\n        }" (if "if") (parenthesized_expression "((0 < (int)uVar17) && (*(int *)(iVar16 + iVar15 + -4) == 0))" (( "(") (binary_expression "(0 < (int)uVar17) && (*(int *)(iVar16 + iVar15 + -4) == 0)" (parenthesized_expression "(0 < (int)uVar17)" (( "(") (binary_expression "0 < (int)uVar17" (number_literal "0") (< "<") (cast_expression "(int)uVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar17"))) () ")")) (&& "&&") (parenthesized_expression "(*(int *)(iVar16 + iVar15 + -4) == 0)" (( "(") (binary_expression "*(int *)(iVar16 + iVar15 + -4) == 0" (pointer_expression "*(int *)(iVar16 + iVar15 + -4)" (* "*") (cast_expression "(int *)(iVar16 + iVar15 + -4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar16 + iVar15 + -4)" (( "(") (binary_expression "iVar16 + iVar15 + -4" (binary_expression "iVar16 + iVar15" (identifier "iVar16") (+ "+") (identifier "iVar15")) (+ "+") (number_literal "-4")) () ")")))) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n          iVar16 = iVar16 + iVar15;\n          do {\n            uVar17 = uVar17 - 1;\n            if (uVar17 == 0) break;\n            piVar12 = (int *)(iVar16 + -8);\n            iVar16 = iVar16 + -4;\n          } while (*piVar12 == 0);\n        }" ({ "{") (expression_statement "iVar16 = iVar16 + iVar15;" (assignment_expression "iVar16 = iVar16 + iVar15" (identifier "iVar16") (= "=") (binary_expression "iVar16 + iVar15" (identifier "iVar16") (+ "+") (identifier "iVar15"))) (; ";")) (do_statement "do {\n            uVar17 = uVar17 - 1;\n            if (uVar17 == 0) break;\n            piVar12 = (int *)(iVar16 + -8);\n            iVar16 = iVar16 + -4;\n          } while (*piVar12 == 0);" (do "do") (compound_statement "{\n            uVar17 = uVar17 - 1;\n            if (uVar17 == 0) break;\n            piVar12 = (int *)(iVar16 + -8);\n            iVar16 = iVar16 + -4;\n          }" ({ "{") (expression_statement "uVar17 = uVar17 - 1;" (assignment_expression "uVar17 = uVar17 - 1" (identifier "uVar17") (= "=") (binary_expression "uVar17 - 1" (identifier "uVar17") (- "-") (number_literal "1"))) (; ";")) (if_statement "if (uVar17 == 0) break;" (if "if") (parenthesized_expression "(uVar17 == 0)" (( "(") (binary_expression "uVar17 == 0" (identifier "uVar17") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "piVar12 = (int *)(iVar16 + -8);" (assignment_expression "piVar12 = (int *)(iVar16 + -8)" (identifier "piVar12") (= "=") (cast_expression "(int *)(iVar16 + -8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar16 + -8)" (( "(") (binary_expression "iVar16 + -8" (identifier "iVar16") (+ "+") (number_literal "-8")) () ")")))) (; ";")) (expression_statement "iVar16 = iVar16 + -4;" (assignment_expression "iVar16 = iVar16 + -4" (identifier "iVar16") (= "=") (binary_expression "iVar16 + -4" (identifier "iVar16") (+ "+") (number_literal "-4"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(*piVar12 == 0)" (( "(") (binary_expression "*piVar12 == 0" (pointer_expression "*piVar12" (* "*") (identifier "piVar12")) (== "==") (number_literal "0")) () ")")) (; ";")) (} "}"))) (if_statement "if (-1 < (int)uVar19) {\n          uVar17 = -uVar17;\n        }" (if "if") (parenthesized_expression "(-1 < (int)uVar19)" (( "(") (binary_expression "-1 < (int)uVar19" (number_literal "-1") (< "<") (cast_expression "(int)uVar19" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar19"))) () ")")) (compound_statement "{\n          uVar17 = -uVar17;\n        }" ({ "{") (expression_statement "uVar17 = -uVar17;" (assignment_expression "uVar17 = -uVar17" (identifier "uVar17") (= "=") (unary_expression "-uVar17" (- "-") (identifier "uVar17"))) (; ";")) (} "}"))) (} "}")))) (goto_statement "goto LAB_000349e8;" (goto "goto") (statement_identifier "LAB_000349e8") (; ";")) (} "}"))) (if_statement "if (uVar14 == 0) {\nLAB_00034a50:\n      if ((iVar16 != iVar20) && ((int)uVar14 < (int)uVar17)) {\n        puVar5 = (undefined4 *)(iVar20 + uVar14 * 4);\n        puVar7 = (undefined4 *)(iVar16 + uVar14 * 4);\n        do {\n          *puVar7 = *puVar5;\n          puVar5 = puVar5 + 1;\n          puVar7 = puVar7 + 1;\n        } while (puVar5 != (undefined4 *)(iVar20 + uVar17 * 4));\n      }\n    }\n    else {\n      iVar13 = (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar20,iVar13,uVar14);\n      if (iVar13 == 0) goto LAB_00034a50;\n      if ((int)uVar14 < (int)uVar17) {\n        piVar12 = (int *)(iVar20 + uVar14 * 4);\n        iVar13 = *piVar12;\n        piVar9 = (int *)(iVar16 + uVar14 * 4);\n        *piVar9 = iVar13 + -1;\n        while (uVar14 = uVar14 + 1, iVar13 == 0) {\n          if (uVar17 == uVar14) goto LAB_00034a84;\n          iVar13 = piVar12[1];\n          piVar9[1] = iVar13 + -1;\n          piVar12 = piVar12 + 1;\n          piVar9 = piVar9 + 1;\n        }\n        goto LAB_00034a50;\n      }\n    }" (if "if") (parenthesized_expression "(uVar14 == 0)" (( "(") (binary_expression "uVar14 == 0" (identifier "uVar14") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_00034a50:\n      if ((iVar16 != iVar20) && ((int)uVar14 < (int)uVar17)) {\n        puVar5 = (undefined4 *)(iVar20 + uVar14 * 4);\n        puVar7 = (undefined4 *)(iVar16 + uVar14 * 4);\n        do {\n          *puVar7 = *puVar5;\n          puVar5 = puVar5 + 1;\n          puVar7 = puVar7 + 1;\n        } while (puVar5 != (undefined4 *)(iVar20 + uVar17 * 4));\n      }\n    }" ({ "{") (labeled_statement "LAB_00034a50:\n      if ((iVar16 != iVar20) && ((int)uVar14 < (int)uVar17)) {\n        puVar5 = (undefined4 *)(iVar20 + uVar14 * 4);\n        puVar7 = (undefined4 *)(iVar16 + uVar14 * 4);\n        do {\n          *puVar7 = *puVar5;\n          puVar5 = puVar5 + 1;\n          puVar7 = puVar7 + 1;\n        } while (puVar5 != (undefined4 *)(iVar20 + uVar17 * 4));\n      }" (statement_identifier "LAB_00034a50") (: ":") (if_statement "if ((iVar16 != iVar20) && ((int)uVar14 < (int)uVar17)) {\n        puVar5 = (undefined4 *)(iVar20 + uVar14 * 4);\n        puVar7 = (undefined4 *)(iVar16 + uVar14 * 4);\n        do {\n          *puVar7 = *puVar5;\n          puVar5 = puVar5 + 1;\n          puVar7 = puVar7 + 1;\n        } while (puVar5 != (undefined4 *)(iVar20 + uVar17 * 4));\n      }" (if "if") (parenthesized_expression "((iVar16 != iVar20) && ((int)uVar14 < (int)uVar17))" (( "(") (binary_expression "(iVar16 != iVar20) && ((int)uVar14 < (int)uVar17)" (parenthesized_expression "(iVar16 != iVar20)" (( "(") (binary_expression "iVar16 != iVar20" (identifier "iVar16") (!= "!=") (identifier "iVar20")) () ")")) (&& "&&") (parenthesized_expression "((int)uVar14 < (int)uVar17)" (( "(") (binary_expression "(int)uVar14 < (int)uVar17" (cast_expression "(int)uVar14" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar14")) (< "<") (cast_expression "(int)uVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar17"))) () ")"))) () ")")) (compound_statement "{\n        puVar5 = (undefined4 *)(iVar20 + uVar14 * 4);\n        puVar7 = (undefined4 *)(iVar16 + uVar14 * 4);\n        do {\n          *puVar7 = *puVar5;\n          puVar5 = puVar5 + 1;\n          puVar7 = puVar7 + 1;\n        } while (puVar5 != (undefined4 *)(iVar20 + uVar17 * 4));\n      }" ({ "{") (expression_statement "puVar5 = (undefined4 *)(iVar20 + uVar14 * 4);" (assignment_expression "puVar5 = (undefined4 *)(iVar20 + uVar14 * 4)" (identifier "puVar5") (= "=") (cast_expression "(undefined4 *)(iVar20 + uVar14 * 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar20 + uVar14 * 4)" (( "(") (binary_expression "iVar20 + uVar14 * 4" (identifier "iVar20") (+ "+") (binary_expression "uVar14 * 4" (identifier "uVar14") (* "*") (number_literal "4"))) () ")")))) (; ";")) (expression_statement "puVar7 = (undefined4 *)(iVar16 + uVar14 * 4);" (assignment_expression "puVar7 = (undefined4 *)(iVar16 + uVar14 * 4)" (identifier "puVar7") (= "=") (cast_expression "(undefined4 *)(iVar16 + uVar14 * 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar16 + uVar14 * 4)" (( "(") (binary_expression "iVar16 + uVar14 * 4" (identifier "iVar16") (+ "+") (binary_expression "uVar14 * 4" (identifier "uVar14") (* "*") (number_literal "4"))) () ")")))) (; ";")) (do_statement "do {\n          *puVar7 = *puVar5;\n          puVar5 = puVar5 + 1;\n          puVar7 = puVar7 + 1;\n        } while (puVar5 != (undefined4 *)(iVar20 + uVar17 * 4));" (do "do") (compound_statement "{\n          *puVar7 = *puVar5;\n          puVar5 = puVar5 + 1;\n          puVar7 = puVar7 + 1;\n        }" ({ "{") (expression_statement "*puVar7 = *puVar5;" (assignment_expression "*puVar7 = *puVar5" (pointer_expression "*puVar7" (* "*") (identifier "puVar7")) (= "=") (pointer_expression "*puVar5" (* "*") (identifier "puVar5"))) (; ";")) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" (identifier "puVar5") (= "=") (binary_expression "puVar5 + 1" (identifier "puVar5") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar7 = puVar7 + 1;" (assignment_expression "puVar7 = puVar7 + 1" (identifier "puVar7") (= "=") (binary_expression "puVar7 + 1" (identifier "puVar7") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar5 != (undefined4 *)(iVar20 + uVar17 * 4))" (( "(") (binary_expression "puVar5 != (undefined4 *)(iVar20 + uVar17 * 4)" (identifier "puVar5") (!= "!=") (cast_expression "(undefined4 *)(iVar20 + uVar17 * 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar20 + uVar17 * 4)" (( "(") (binary_expression "iVar20 + uVar17 * 4" (identifier "iVar20") (+ "+") (binary_expression "uVar17 * 4" (identifier "uVar17") (* "*") (number_literal "4"))) () ")")))) () ")")) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n      iVar13 = (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar20,iVar13,uVar14);\n      if (iVar13 == 0) goto LAB_00034a50;\n      if ((int)uVar14 < (int)uVar17) {\n        piVar12 = (int *)(iVar20 + uVar14 * 4);\n        iVar13 = *piVar12;\n        piVar9 = (int *)(iVar16 + uVar14 * 4);\n        *piVar9 = iVar13 + -1;\n        while (uVar14 = uVar14 + 1, iVar13 == 0) {\n          if (uVar17 == uVar14) goto LAB_00034a84;\n          iVar13 = piVar12[1];\n          piVar9[1] = iVar13 + -1;\n          piVar12 = piVar12 + 1;\n          piVar9 = piVar9 + 1;\n        }\n        goto LAB_00034a50;\n      }\n    }" (else "else") (compound_statement "{\n      iVar13 = (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar20,iVar13,uVar14);\n      if (iVar13 == 0) goto LAB_00034a50;\n      if ((int)uVar14 < (int)uVar17) {\n        piVar12 = (int *)(iVar20 + uVar14 * 4);\n        iVar13 = *piVar12;\n        piVar9 = (int *)(iVar16 + uVar14 * 4);\n        *piVar9 = iVar13 + -1;\n        while (uVar14 = uVar14 + 1, iVar13 == 0) {\n          if (uVar17 == uVar14) goto LAB_00034a84;\n          iVar13 = piVar12[1];\n          piVar9[1] = iVar13 + -1;\n          piVar12 = piVar12 + 1;\n          piVar9 = piVar9 + 1;\n        }\n        goto LAB_00034a50;\n      }\n    }" ({ "{") (expression_statement "iVar13 = (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar20,iVar13,uVar14);" (assignment_expression "iVar13 = (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar20,iVar13,uVar14)" (identifier "iVar13") (= "=") (call_expression "(**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar20,iVar13,uVar14)" (parenthesized_expression "(**(code **)(pcVar24 + -0x7b2c))" (( "(") (pointer_expression "**(code **)(pcVar24 + -0x7b2c)" (* "*") (pointer_expression "*(code **)(pcVar24 + -0x7b2c)" (* "*") (cast_expression "(code **)(pcVar24 + -0x7b2c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar24 + -0x7b2c)" (( "(") (binary_expression "pcVar24 + -0x7b2c" (identifier "pcVar24") (+ "+") (number_literal "-0x7b2c")) () ")"))))) () ")")) (argument_list "(iVar16,iVar20,iVar13,uVar14)" (( "(") (identifier "iVar16") (, ",") (identifier "iVar20") (, ",") (identifier "iVar13") (, ",") (identifier "uVar14") () ")")))) (; ";")) (if_statement "if (iVar13 == 0) goto LAB_00034a50;" (if "if") (parenthesized_expression "(iVar13 == 0)" (( "(") (binary_expression "iVar13 == 0" (identifier "iVar13") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00034a50;" (goto "goto") (statement_identifier "LAB_00034a50") (; ";"))) (if_statement "if ((int)uVar14 < (int)uVar17) {\n        piVar12 = (int *)(iVar20 + uVar14 * 4);\n        iVar13 = *piVar12;\n        piVar9 = (int *)(iVar16 + uVar14 * 4);\n        *piVar9 = iVar13 + -1;\n        while (uVar14 = uVar14 + 1, iVar13 == 0) {\n          if (uVar17 == uVar14) goto LAB_00034a84;\n          iVar13 = piVar12[1];\n          piVar9[1] = iVar13 + -1;\n          piVar12 = piVar12 + 1;\n          piVar9 = piVar9 + 1;\n        }\n        goto LAB_00034a50;\n      }" (if "if") (parenthesized_expression "((int)uVar14 < (int)uVar17)" (( "(") (binary_expression "(int)uVar14 < (int)uVar17" (cast_expression "(int)uVar14" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar14")) (< "<") (cast_expression "(int)uVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar17"))) () ")")) (compound_statement "{\n        piVar12 = (int *)(iVar20 + uVar14 * 4);\n        iVar13 = *piVar12;\n        piVar9 = (int *)(iVar16 + uVar14 * 4);\n        *piVar9 = iVar13 + -1;\n        while (uVar14 = uVar14 + 1, iVar13 == 0) {\n          if (uVar17 == uVar14) goto LAB_00034a84;\n          iVar13 = piVar12[1];\n          piVar9[1] = iVar13 + -1;\n          piVar12 = piVar12 + 1;\n          piVar9 = piVar9 + 1;\n        }\n        goto LAB_00034a50;\n      }" ({ "{") (expression_statement "piVar12 = (int *)(iVar20 + uVar14 * 4);" (assignment_expression "piVar12 = (int *)(iVar20 + uVar14 * 4)" (identifier "piVar12") (= "=") (cast_expression "(int *)(iVar20 + uVar14 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar20 + uVar14 * 4)" (( "(") (binary_expression "iVar20 + uVar14 * 4" (identifier "iVar20") (+ "+") (binary_expression "uVar14 * 4" (identifier "uVar14") (* "*") (number_literal "4"))) () ")")))) (; ";")) (expression_statement "iVar13 = *piVar12;" (assignment_expression "iVar13 = *piVar12" (identifier "iVar13") (= "=") (pointer_expression "*piVar12" (* "*") (identifier "piVar12"))) (; ";")) (expression_statement "piVar9 = (int *)(iVar16 + uVar14 * 4);" (assignment_expression "piVar9 = (int *)(iVar16 + uVar14 * 4)" (identifier "piVar9") (= "=") (cast_expression "(int *)(iVar16 + uVar14 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar16 + uVar14 * 4)" (( "(") (binary_expression "iVar16 + uVar14 * 4" (identifier "iVar16") (+ "+") (binary_expression "uVar14 * 4" (identifier "uVar14") (* "*") (number_literal "4"))) () ")")))) (; ";")) (expression_statement "*piVar9 = iVar13 + -1;" (assignment_expression "*piVar9 = iVar13 + -1" (pointer_expression "*piVar9" (* "*") (identifier "piVar9")) (= "=") (binary_expression "iVar13 + -1" (identifier "iVar13") (+ "+") (number_literal "-1"))) (; ";")) (while_statement "while (uVar14 = uVar14 + 1, iVar13 == 0) {\n          if (uVar17 == uVar14) goto LAB_00034a84;\n          iVar13 = piVar12[1];\n          piVar9[1] = iVar13 + -1;\n          piVar12 = piVar12 + 1;\n          piVar9 = piVar9 + 1;\n        }" (while "while") (parenthesized_expression "(uVar14 = uVar14 + 1, iVar13 == 0)" (( "(") (comma_expression "uVar14 = uVar14 + 1, iVar13 == 0" (assignment_expression "uVar14 = uVar14 + 1" (identifier "uVar14") (= "=") (binary_expression "uVar14 + 1" (identifier "uVar14") (+ "+") (number_literal "1"))) (, ",") (binary_expression "iVar13 == 0" (identifier "iVar13") (== "==") (number_literal "0"))) () ")")) (compound_statement "{\n          if (uVar17 == uVar14) goto LAB_00034a84;\n          iVar13 = piVar12[1];\n          piVar9[1] = iVar13 + -1;\n          piVar12 = piVar12 + 1;\n          piVar9 = piVar9 + 1;\n        }" ({ "{") (if_statement "if (uVar17 == uVar14) goto LAB_00034a84;" (if "if") (parenthesized_expression "(uVar17 == uVar14)" (( "(") (binary_expression "uVar17 == uVar14" (identifier "uVar17") (== "==") (identifier "uVar14")) () ")")) (goto_statement "goto LAB_00034a84;" (goto "goto") (statement_identifier "LAB_00034a84") (; ";"))) (expression_statement "iVar13 = piVar12[1];" (assignment_expression "iVar13 = piVar12[1]" (identifier "iVar13") (= "=") (subscript_expression "piVar12[1]" (identifier "piVar12") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "piVar9[1] = iVar13 + -1;" (assignment_expression "piVar9[1] = iVar13 + -1" (subscript_expression "piVar9[1]" (identifier "piVar9") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "iVar13 + -1" (identifier "iVar13") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "piVar12 = piVar12 + 1;" (assignment_expression "piVar12 = piVar12 + 1" (identifier "piVar12") (= "=") (binary_expression "piVar12 + 1" (identifier "piVar12") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar9 = piVar9 + 1;" (assignment_expression "piVar9 = piVar9 + 1" (identifier "piVar9") (= "=") (binary_expression "piVar9 + 1" (identifier "piVar9") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (goto_statement "goto LAB_00034a50;" (goto "goto") (statement_identifier "LAB_00034a50") (; ";")) (} "}"))) (} "}")))) (labeled_statement "LAB_00034a84:\n    if ((0 < (int)uVar17) && (iVar13 = (uVar17 + 0x3fffffff) * 4, *(int *)(iVar16 + iVar13) == 0)) {\n      iVar16 = iVar16 + iVar13 + 4;\n      do {\n        uVar17 = uVar17 - 1;\n        if (uVar17 == 0) break;\n        piVar12 = (int *)(iVar16 + -8);\n        iVar16 = iVar16 + -4;\n      } while (*piVar12 == 0);\n    }" (statement_identifier "LAB_00034a84") (: ":") (if_statement "if ((0 < (int)uVar17) && (iVar13 = (uVar17 + 0x3fffffff) * 4, *(int *)(iVar16 + iVar13) == 0)) {\n      iVar16 = iVar16 + iVar13 + 4;\n      do {\n        uVar17 = uVar17 - 1;\n        if (uVar17 == 0) break;\n        piVar12 = (int *)(iVar16 + -8);\n        iVar16 = iVar16 + -4;\n      } while (*piVar12 == 0);\n    }" (if "if") (parenthesized_expression "((0 < (int)uVar17) && (iVar13 = (uVar17 + 0x3fffffff) * 4, *(int *)(iVar16 + iVar13) == 0))" (( "(") (binary_expression "(0 < (int)uVar17) && (iVar13 = (uVar17 + 0x3fffffff) * 4, *(int *)(iVar16 + iVar13) == 0)" (parenthesized_expression "(0 < (int)uVar17)" (( "(") (binary_expression "0 < (int)uVar17" (number_literal "0") (< "<") (cast_expression "(int)uVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar17"))) () ")")) (&& "&&") (parenthesized_expression "(iVar13 = (uVar17 + 0x3fffffff) * 4, *(int *)(iVar16 + iVar13) == 0)" (( "(") (comma_expression "iVar13 = (uVar17 + 0x3fffffff) * 4, *(int *)(iVar16 + iVar13) == 0" (assignment_expression "iVar13 = (uVar17 + 0x3fffffff) * 4" (identifier "iVar13") (= "=") (binary_expression "(uVar17 + 0x3fffffff) * 4" (parenthesized_expression "(uVar17 + 0x3fffffff)" (( "(") (binary_expression "uVar17 + 0x3fffffff" (identifier "uVar17") (+ "+") (number_literal "0x3fffffff")) () ")")) (* "*") (number_literal "4"))) (, ",") (binary_expression "*(int *)(iVar16 + iVar13) == 0" (pointer_expression "*(int *)(iVar16 + iVar13)" (* "*") (cast_expression "(int *)(iVar16 + iVar13)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar16 + iVar13)" (( "(") (binary_expression "iVar16 + iVar13" (identifier "iVar16") (+ "+") (identifier "iVar13")) () ")")))) (== "==") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n      iVar16 = iVar16 + iVar13 + 4;\n      do {\n        uVar17 = uVar17 - 1;\n        if (uVar17 == 0) break;\n        piVar12 = (int *)(iVar16 + -8);\n        iVar16 = iVar16 + -4;\n      } while (*piVar12 == 0);\n    }" ({ "{") (expression_statement "iVar16 = iVar16 + iVar13 + 4;" (assignment_expression "iVar16 = iVar16 + iVar13 + 4" (identifier "iVar16") (= "=") (binary_expression "iVar16 + iVar13 + 4" (binary_expression "iVar16 + iVar13" (identifier "iVar16") (+ "+") (identifier "iVar13")) (+ "+") (number_literal "4"))) (; ";")) (do_statement "do {\n        uVar17 = uVar17 - 1;\n        if (uVar17 == 0) break;\n        piVar12 = (int *)(iVar16 + -8);\n        iVar16 = iVar16 + -4;\n      } while (*piVar12 == 0);" (do "do") (compound_statement "{\n        uVar17 = uVar17 - 1;\n        if (uVar17 == 0) break;\n        piVar12 = (int *)(iVar16 + -8);\n        iVar16 = iVar16 + -4;\n      }" ({ "{") (expression_statement "uVar17 = uVar17 - 1;" (assignment_expression "uVar17 = uVar17 - 1" (identifier "uVar17") (= "=") (binary_expression "uVar17 - 1" (identifier "uVar17") (- "-") (number_literal "1"))) (; ";")) (if_statement "if (uVar17 == 0) break;" (if "if") (parenthesized_expression "(uVar17 == 0)" (( "(") (binary_expression "uVar17 == 0" (identifier "uVar17") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "piVar12 = (int *)(iVar16 + -8);" (assignment_expression "piVar12 = (int *)(iVar16 + -8)" (identifier "piVar12") (= "=") (cast_expression "(int *)(iVar16 + -8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar16 + -8)" (( "(") (binary_expression "iVar16 + -8" (identifier "iVar16") (+ "+") (number_literal "-8")) () ")")))) (; ";")) (expression_statement "iVar16 = iVar16 + -4;" (assignment_expression "iVar16 = iVar16 + -4" (identifier "iVar16") (= "=") (binary_expression "iVar16 + -4" (identifier "iVar16") (+ "+") (number_literal "-4"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(*piVar12 == 0)" (( "(") (binary_expression "*piVar12 == 0" (pointer_expression "*piVar12" (* "*") (identifier "piVar12")) (== "==") (number_literal "0")) () ")")) (; ";")) (} "}")))) (if_statement "if ((int)uVar19 < 0) {\n      uVar17 = -uVar17;\n    }" (if "if") (parenthesized_expression "((int)uVar19 < 0)" (( "(") (binary_expression "(int)uVar19 < 0" (cast_expression "(int)uVar19" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar19")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n      uVar17 = -uVar17;\n    }" ({ "{") (expression_statement "uVar17 = -uVar17;" (assignment_expression "uVar17 = -uVar17" (identifier "uVar17") (= "=") (unary_expression "-uVar17" (- "-") (identifier "uVar17"))) (; ";")) (} "}"))) (goto_statement "goto LAB_000349e8;" (goto "goto") (statement_identifier "LAB_000349e8") (; ";")) (} "}"))) (if_statement "if (uVar14 == 0) {\nLAB_0003499c:\n    if (iVar16 == iVar20) {\n      iVar13 = 0;\n    }\n    else if ((int)uVar14 < (int)uVar17) {\n      puVar7 = (undefined4 *)(iVar20 + uVar14 * 4);\n      puVar5 = (undefined4 *)(iVar16 + uVar14 * 4);\n      do {\n        *puVar5 = *puVar7;\n        puVar7 = puVar7 + 1;\n        puVar5 = puVar5 + 1;\n      } while (puVar7 != (undefined4 *)(iVar20 + uVar17 * 4));\n      iVar13 = 0;\n    }\n    else {\n      iVar13 = 0;\n    }\n  }\n  else {\n    iVar13 = (**(code **)(pcVar24 + -0x7d0c))(iVar16,iVar20,iVar13,uVar14);\n    if (iVar13 == 0) goto LAB_0003499c;\n    iVar13 = 1;\n    if ((int)uVar14 < (int)uVar17) {\n      piVar12 = (int *)(iVar20 + uVar14 * 4);\n      piVar9 = (int *)(iVar16 + uVar14 * 4);\n      iVar13 = *piVar12 + 1;\n      *piVar9 = iVar13;\n      while (uVar14 = uVar14 + 1, iVar13 == 0) {\n        if (uVar17 == uVar14) {\n          iVar13 = 1;\n          goto LAB_000349d4;\n        }\n        iVar13 = piVar12[1] + 1;\n        piVar9[1] = iVar13;\n        piVar12 = piVar12 + 1;\n        piVar9 = piVar9 + 1;\n      }\n      goto LAB_0003499c;\n    }\n  }" (if "if") (parenthesized_expression "(uVar14 == 0)" (( "(") (binary_expression "uVar14 == 0" (identifier "uVar14") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_0003499c:\n    if (iVar16 == iVar20) {\n      iVar13 = 0;\n    }\n    else if ((int)uVar14 < (int)uVar17) {\n      puVar7 = (undefined4 *)(iVar20 + uVar14 * 4);\n      puVar5 = (undefined4 *)(iVar16 + uVar14 * 4);\n      do {\n        *puVar5 = *puVar7;\n        puVar7 = puVar7 + 1;\n        puVar5 = puVar5 + 1;\n      } while (puVar7 != (undefined4 *)(iVar20 + uVar17 * 4));\n      iVar13 = 0;\n    }\n    else {\n      iVar13 = 0;\n    }\n  }" ({ "{") (labeled_statement "LAB_0003499c:\n    if (iVar16 == iVar20) {\n      iVar13 = 0;\n    }\n    else if ((int)uVar14 < (int)uVar17) {\n      puVar7 = (undefined4 *)(iVar20 + uVar14 * 4);\n      puVar5 = (undefined4 *)(iVar16 + uVar14 * 4);\n      do {\n        *puVar5 = *puVar7;\n        puVar7 = puVar7 + 1;\n        puVar5 = puVar5 + 1;\n      } while (puVar7 != (undefined4 *)(iVar20 + uVar17 * 4));\n      iVar13 = 0;\n    }\n    else {\n      iVar13 = 0;\n    }" (statement_identifier "LAB_0003499c") (: ":") (if_statement "if (iVar16 == iVar20) {\n      iVar13 = 0;\n    }\n    else if ((int)uVar14 < (int)uVar17) {\n      puVar7 = (undefined4 *)(iVar20 + uVar14 * 4);\n      puVar5 = (undefined4 *)(iVar16 + uVar14 * 4);\n      do {\n        *puVar5 = *puVar7;\n        puVar7 = puVar7 + 1;\n        puVar5 = puVar5 + 1;\n      } while (puVar7 != (undefined4 *)(iVar20 + uVar17 * 4));\n      iVar13 = 0;\n    }\n    else {\n      iVar13 = 0;\n    }" (if "if") (parenthesized_expression "(iVar16 == iVar20)" (( "(") (binary_expression "iVar16 == iVar20" (identifier "iVar16") (== "==") (identifier "iVar20")) () ")")) (compound_statement "{\n      iVar13 = 0;\n    }" ({ "{") (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" (identifier "iVar13") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else if ((int)uVar14 < (int)uVar17) {\n      puVar7 = (undefined4 *)(iVar20 + uVar14 * 4);\n      puVar5 = (undefined4 *)(iVar16 + uVar14 * 4);\n      do {\n        *puVar5 = *puVar7;\n        puVar7 = puVar7 + 1;\n        puVar5 = puVar5 + 1;\n      } while (puVar7 != (undefined4 *)(iVar20 + uVar17 * 4));\n      iVar13 = 0;\n    }\n    else {\n      iVar13 = 0;\n    }" (else "else") (if_statement "if ((int)uVar14 < (int)uVar17) {\n      puVar7 = (undefined4 *)(iVar20 + uVar14 * 4);\n      puVar5 = (undefined4 *)(iVar16 + uVar14 * 4);\n      do {\n        *puVar5 = *puVar7;\n        puVar7 = puVar7 + 1;\n        puVar5 = puVar5 + 1;\n      } while (puVar7 != (undefined4 *)(iVar20 + uVar17 * 4));\n      iVar13 = 0;\n    }\n    else {\n      iVar13 = 0;\n    }" (if "if") (parenthesized_expression "((int)uVar14 < (int)uVar17)" (( "(") (binary_expression "(int)uVar14 < (int)uVar17" (cast_expression "(int)uVar14" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar14")) (< "<") (cast_expression "(int)uVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar17"))) () ")")) (compound_statement "{\n      puVar7 = (undefined4 *)(iVar20 + uVar14 * 4);\n      puVar5 = (undefined4 *)(iVar16 + uVar14 * 4);\n      do {\n        *puVar5 = *puVar7;\n        puVar7 = puVar7 + 1;\n        puVar5 = puVar5 + 1;\n      } while (puVar7 != (undefined4 *)(iVar20 + uVar17 * 4));\n      iVar13 = 0;\n    }" ({ "{") (expression_statement "puVar7 = (undefined4 *)(iVar20 + uVar14 * 4);" (assignment_expression "puVar7 = (undefined4 *)(iVar20 + uVar14 * 4)" (identifier "puVar7") (= "=") (cast_expression "(undefined4 *)(iVar20 + uVar14 * 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar20 + uVar14 * 4)" (( "(") (binary_expression "iVar20 + uVar14 * 4" (identifier "iVar20") (+ "+") (binary_expression "uVar14 * 4" (identifier "uVar14") (* "*") (number_literal "4"))) () ")")))) (; ";")) (expression_statement "puVar5 = (undefined4 *)(iVar16 + uVar14 * 4);" (assignment_expression "puVar5 = (undefined4 *)(iVar16 + uVar14 * 4)" (identifier "puVar5") (= "=") (cast_expression "(undefined4 *)(iVar16 + uVar14 * 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar16 + uVar14 * 4)" (( "(") (binary_expression "iVar16 + uVar14 * 4" (identifier "iVar16") (+ "+") (binary_expression "uVar14 * 4" (identifier "uVar14") (* "*") (number_literal "4"))) () ")")))) (; ";")) (do_statement "do {\n        *puVar5 = *puVar7;\n        puVar7 = puVar7 + 1;\n        puVar5 = puVar5 + 1;\n      } while (puVar7 != (undefined4 *)(iVar20 + uVar17 * 4));" (do "do") (compound_statement "{\n        *puVar5 = *puVar7;\n        puVar7 = puVar7 + 1;\n        puVar5 = puVar5 + 1;\n      }" ({ "{") (expression_statement "*puVar5 = *puVar7;" (assignment_expression "*puVar5 = *puVar7" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (pointer_expression "*puVar7" (* "*") (identifier "puVar7"))) (; ";")) (expression_statement "puVar7 = puVar7 + 1;" (assignment_expression "puVar7 = puVar7 + 1" (identifier "puVar7") (= "=") (binary_expression "puVar7 + 1" (identifier "puVar7") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" (identifier "puVar5") (= "=") (binary_expression "puVar5 + 1" (identifier "puVar5") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar7 != (undefined4 *)(iVar20 + uVar17 * 4))" (( "(") (binary_expression "puVar7 != (undefined4 *)(iVar20 + uVar17 * 4)" (identifier "puVar7") (!= "!=") (cast_expression "(undefined4 *)(iVar20 + uVar17 * 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar20 + uVar17 * 4)" (( "(") (binary_expression "iVar20 + uVar17 * 4" (identifier "iVar20") (+ "+") (binary_expression "uVar17 * 4" (identifier "uVar17") (* "*") (number_literal "4"))) () ")")))) () ")")) (; ";")) (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" (identifier "iVar13") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n      iVar13 = 0;\n    }" (else "else") (compound_statement "{\n      iVar13 = 0;\n    }" ({ "{") (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" (identifier "iVar13") (= "=") (number_literal "0")) (; ";")) (} "}"))))))) (} "}")) (else_clause "else {\n    iVar13 = (**(code **)(pcVar24 + -0x7d0c))(iVar16,iVar20,iVar13,uVar14);\n    if (iVar13 == 0) goto LAB_0003499c;\n    iVar13 = 1;\n    if ((int)uVar14 < (int)uVar17) {\n      piVar12 = (int *)(iVar20 + uVar14 * 4);\n      piVar9 = (int *)(iVar16 + uVar14 * 4);\n      iVar13 = *piVar12 + 1;\n      *piVar9 = iVar13;\n      while (uVar14 = uVar14 + 1, iVar13 == 0) {\n        if (uVar17 == uVar14) {\n          iVar13 = 1;\n          goto LAB_000349d4;\n        }\n        iVar13 = piVar12[1] + 1;\n        piVar9[1] = iVar13;\n        piVar12 = piVar12 + 1;\n        piVar9 = piVar9 + 1;\n      }\n      goto LAB_0003499c;\n    }\n  }" (else "else") (compound_statement "{\n    iVar13 = (**(code **)(pcVar24 + -0x7d0c))(iVar16,iVar20,iVar13,uVar14);\n    if (iVar13 == 0) goto LAB_0003499c;\n    iVar13 = 1;\n    if ((int)uVar14 < (int)uVar17) {\n      piVar12 = (int *)(iVar20 + uVar14 * 4);\n      piVar9 = (int *)(iVar16 + uVar14 * 4);\n      iVar13 = *piVar12 + 1;\n      *piVar9 = iVar13;\n      while (uVar14 = uVar14 + 1, iVar13 == 0) {\n        if (uVar17 == uVar14) {\n          iVar13 = 1;\n          goto LAB_000349d4;\n        }\n        iVar13 = piVar12[1] + 1;\n        piVar9[1] = iVar13;\n        piVar12 = piVar12 + 1;\n        piVar9 = piVar9 + 1;\n      }\n      goto LAB_0003499c;\n    }\n  }" ({ "{") (expression_statement "iVar13 = (**(code **)(pcVar24 + -0x7d0c))(iVar16,iVar20,iVar13,uVar14);" (assignment_expression "iVar13 = (**(code **)(pcVar24 + -0x7d0c))(iVar16,iVar20,iVar13,uVar14)" (identifier "iVar13") (= "=") (call_expression "(**(code **)(pcVar24 + -0x7d0c))(iVar16,iVar20,iVar13,uVar14)" (parenthesized_expression "(**(code **)(pcVar24 + -0x7d0c))" (( "(") (pointer_expression "**(code **)(pcVar24 + -0x7d0c)" (* "*") (pointer_expression "*(code **)(pcVar24 + -0x7d0c)" (* "*") (cast_expression "(code **)(pcVar24 + -0x7d0c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar24 + -0x7d0c)" (( "(") (binary_expression "pcVar24 + -0x7d0c" (identifier "pcVar24") (+ "+") (number_literal "-0x7d0c")) () ")"))))) () ")")) (argument_list "(iVar16,iVar20,iVar13,uVar14)" (( "(") (identifier "iVar16") (, ",") (identifier "iVar20") (, ",") (identifier "iVar13") (, ",") (identifier "uVar14") () ")")))) (; ";")) (if_statement "if (iVar13 == 0) goto LAB_0003499c;" (if "if") (parenthesized_expression "(iVar13 == 0)" (( "(") (binary_expression "iVar13 == 0" (identifier "iVar13") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0003499c;" (goto "goto") (statement_identifier "LAB_0003499c") (; ";"))) (expression_statement "iVar13 = 1;" (assignment_expression "iVar13 = 1" (identifier "iVar13") (= "=") (number_literal "1")) (; ";")) (if_statement "if ((int)uVar14 < (int)uVar17) {\n      piVar12 = (int *)(iVar20 + uVar14 * 4);\n      piVar9 = (int *)(iVar16 + uVar14 * 4);\n      iVar13 = *piVar12 + 1;\n      *piVar9 = iVar13;\n      while (uVar14 = uVar14 + 1, iVar13 == 0) {\n        if (uVar17 == uVar14) {\n          iVar13 = 1;\n          goto LAB_000349d4;\n        }\n        iVar13 = piVar12[1] + 1;\n        piVar9[1] = iVar13;\n        piVar12 = piVar12 + 1;\n        piVar9 = piVar9 + 1;\n      }\n      goto LAB_0003499c;\n    }" (if "if") (parenthesized_expression "((int)uVar14 < (int)uVar17)" (( "(") (binary_expression "(int)uVar14 < (int)uVar17" (cast_expression "(int)uVar14" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar14")) (< "<") (cast_expression "(int)uVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar17"))) () ")")) (compound_statement "{\n      piVar12 = (int *)(iVar20 + uVar14 * 4);\n      piVar9 = (int *)(iVar16 + uVar14 * 4);\n      iVar13 = *piVar12 + 1;\n      *piVar9 = iVar13;\n      while (uVar14 = uVar14 + 1, iVar13 == 0) {\n        if (uVar17 == uVar14) {\n          iVar13 = 1;\n          goto LAB_000349d4;\n        }\n        iVar13 = piVar12[1] + 1;\n        piVar9[1] = iVar13;\n        piVar12 = piVar12 + 1;\n        piVar9 = piVar9 + 1;\n      }\n      goto LAB_0003499c;\n    }" ({ "{") (expression_statement "piVar12 = (int *)(iVar20 + uVar14 * 4);" (assignment_expression "piVar12 = (int *)(iVar20 + uVar14 * 4)" (identifier "piVar12") (= "=") (cast_expression "(int *)(iVar20 + uVar14 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar20 + uVar14 * 4)" (( "(") (binary_expression "iVar20 + uVar14 * 4" (identifier "iVar20") (+ "+") (binary_expression "uVar14 * 4" (identifier "uVar14") (* "*") (number_literal "4"))) () ")")))) (; ";")) (expression_statement "piVar9 = (int *)(iVar16 + uVar14 * 4);" (assignment_expression "piVar9 = (int *)(iVar16 + uVar14 * 4)" (identifier "piVar9") (= "=") (cast_expression "(int *)(iVar16 + uVar14 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar16 + uVar14 * 4)" (( "(") (binary_expression "iVar16 + uVar14 * 4" (identifier "iVar16") (+ "+") (binary_expression "uVar14 * 4" (identifier "uVar14") (* "*") (number_literal "4"))) () ")")))) (; ";")) (expression_statement "iVar13 = *piVar12 + 1;" (assignment_expression "iVar13 = *piVar12 + 1" (identifier "iVar13") (= "=") (binary_expression "*piVar12 + 1" (pointer_expression "*piVar12" (* "*") (identifier "piVar12")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*piVar9 = iVar13;" (assignment_expression "*piVar9 = iVar13" (pointer_expression "*piVar9" (* "*") (identifier "piVar9")) (= "=") (identifier "iVar13")) (; ";")) (while_statement "while (uVar14 = uVar14 + 1, iVar13 == 0) {\n        if (uVar17 == uVar14) {\n          iVar13 = 1;\n          goto LAB_000349d4;\n        }\n        iVar13 = piVar12[1] + 1;\n        piVar9[1] = iVar13;\n        piVar12 = piVar12 + 1;\n        piVar9 = piVar9 + 1;\n      }" (while "while") (parenthesized_expression "(uVar14 = uVar14 + 1, iVar13 == 0)" (( "(") (comma_expression "uVar14 = uVar14 + 1, iVar13 == 0" (assignment_expression "uVar14 = uVar14 + 1" (identifier "uVar14") (= "=") (binary_expression "uVar14 + 1" (identifier "uVar14") (+ "+") (number_literal "1"))) (, ",") (binary_expression "iVar13 == 0" (identifier "iVar13") (== "==") (number_literal "0"))) () ")")) (compound_statement "{\n        if (uVar17 == uVar14) {\n          iVar13 = 1;\n          goto LAB_000349d4;\n        }\n        iVar13 = piVar12[1] + 1;\n        piVar9[1] = iVar13;\n        piVar12 = piVar12 + 1;\n        piVar9 = piVar9 + 1;\n      }" ({ "{") (if_statement "if (uVar17 == uVar14) {\n          iVar13 = 1;\n          goto LAB_000349d4;\n        }" (if "if") (parenthesized_expression "(uVar17 == uVar14)" (( "(") (binary_expression "uVar17 == uVar14" (identifier "uVar17") (== "==") (identifier "uVar14")) () ")")) (compound_statement "{\n          iVar13 = 1;\n          goto LAB_000349d4;\n        }" ({ "{") (expression_statement "iVar13 = 1;" (assignment_expression "iVar13 = 1" (identifier "iVar13") (= "=") (number_literal "1")) (; ";")) (goto_statement "goto LAB_000349d4;" (goto "goto") (statement_identifier "LAB_000349d4") (; ";")) (} "}"))) (expression_statement "iVar13 = piVar12[1] + 1;" (assignment_expression "iVar13 = piVar12[1] + 1" (identifier "iVar13") (= "=") (binary_expression "piVar12[1] + 1" (subscript_expression "piVar12[1]" (identifier "piVar12") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar9[1] = iVar13;" (assignment_expression "piVar9[1] = iVar13" (subscript_expression "piVar9[1]" (identifier "piVar9") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "iVar13")) (; ";")) (expression_statement "piVar12 = piVar12 + 1;" (assignment_expression "piVar12 = piVar12 + 1" (identifier "piVar12") (= "=") (binary_expression "piVar12 + 1" (identifier "piVar12") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar9 = piVar9 + 1;" (assignment_expression "piVar9 = piVar9 + 1" (identifier "piVar9") (= "=") (binary_expression "piVar9 + 1" (identifier "piVar9") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (goto_statement "goto LAB_0003499c;" (goto "goto") (statement_identifier "LAB_0003499c") (; ";")) (} "}"))) (} "}")))) (labeled_statement "LAB_000349d4:\n  *(int *)(iVar16 + uVar17 * 4) = iVar13;" (statement_identifier "LAB_000349d4") (: ":") (expression_statement "*(int *)(iVar16 + uVar17 * 4) = iVar13;" (assignment_expression "*(int *)(iVar16 + uVar17 * 4) = iVar13" (pointer_expression "*(int *)(iVar16 + uVar17 * 4)" (* "*") (cast_expression "(int *)(iVar16 + uVar17 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar16 + uVar17 * 4)" (( "(") (binary_expression "iVar16 + uVar17 * 4" (identifier "iVar16") (+ "+") (binary_expression "uVar17 * 4" (identifier "uVar17") (* "*") (number_literal "4"))) () ")")))) (= "=") (identifier "iVar13")) (; ";"))) (expression_statement "uVar17 = uVar17 + iVar13;" (assignment_expression "uVar17 = uVar17 + iVar13" (identifier "uVar17") (= "=") (binary_expression "uVar17 + iVar13" (identifier "uVar17") (+ "+") (identifier "iVar13"))) (; ";")) (if_statement "if ((int)uVar19 < 0) {\n    uVar17 = -uVar17;\n  }" (if "if") (parenthesized_expression "((int)uVar19 < 0)" (( "(") (binary_expression "(int)uVar19 < 0" (cast_expression "(int)uVar19" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar19")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n    uVar17 = -uVar17;\n  }" ({ "{") (expression_statement "uVar17 = -uVar17;" (assignment_expression "uVar17 = -uVar17" (identifier "uVar17") (= "=") (unary_expression "-uVar17" (- "-") (identifier "uVar17"))) (; ";")) (} "}"))) (labeled_statement "LAB_000349e8:\n  piVar10[1] = uVar17;" (statement_identifier "LAB_000349e8") (: ":") (expression_statement "piVar10[1] = uVar17;" (assignment_expression "piVar10[1] = uVar17" (subscript_expression "piVar10[1]" (identifier "piVar10") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar17")) (; ";"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

void function_1(type_1 var_3,type_2 var_2)

{
  type_3 *pmVar1;
  type_3 *pmVar2;
  int *var_9;
  int *var_10;
  type_3 **var_17;
  type_3 **ppmVar6;
  type_4 uVar7;
  type_4 var_23;
  type_3 *var_28;
  type_3 var_31;
  type_1 var_18;
  int var_7;
  type_3 *var_27;
  type_1 p_Var14;
  type_3 *var_26;
  type_1 in_a2;
  int var_4;
  type_4 var_24;
  int var_1;
  type_4 var_21;
  type_1 unaff_s2;
  type_4 uVar19;
  type_4 var_22;
  int *var_8;
  type_1 var_5;
  type_3 *var_30;
  type_1 unaff_s5;
  type_1 p_Var22;
  type_3 *var_25;
  type_1 unaff_s6;
  type_4 var_15;
  type_5 *var_13;
  type_6 *var_19;
  type_5 *var_16;
  type_6 *var_29;
  type_7 *var_14;
  type_7 *puVar29;
  type_7 *var_20;
  type_7 *puVar31;
  type_8 uVar32;
  type_7 var_6 [16];
  type_9 *var_11;
  int var_12;
  
  var_14 = var_6;
  puVar29 = var_6;
  var_12 = *(int *)PTR___stack_chk_guard_0009b540;
  var_1 = var_2->_mp_size;
  if (var_1 < 1) {
    if (var_1 < 0) {
      (*(type_6 *)PTR___gmp_sqrt_of_negative_0009b1cc)();
      goto LAB_000345b4;
    }
    var_3->_mp_size = 0;
  }
  else {
    var_4 = (var_1 + 1) / 2;
    var_3->_mp_size = var_4;
    unaff_s2 = (type_1)var_2->_mp_d;
    if (var_2 == var_3) {
LAB_000345b4:
      var_5 = (type_1)(var_4 * 4);
      var_11 = (type_9 *)0x0;
      if (var_5 < (type_1)0x7f01) {
        var_7 = -((type_4)((int)&var_5->_mp_size + 3U) & 0xfffffff8);
        puVar29 = var_6 + var_7;
        var_8 = (int *)(&stack0xffffffd0 + var_7);
      }
      else {
        var_8 = (int *)(*(type_6 *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)(&var_11,var_5);
      }
      var_2 = (type_1)0x0;
      in_a2 = unaff_s2;
      (*(type_6 *)PTR___gmpn_sqrtrem_0009b0e0)(var_8,0,unaff_s2,var_1);
      var_7 = *var_8;
      if (var_4 != 1) {
        var_9 = var_8 + 1;
        var_8 = var_8 + var_4;
        var_18 = unaff_s2;
        do {
          var_18->_mp_alloc = var_7;
          var_10 = var_9 + 1;
          var_7 = *var_9;
          var_9 = var_10;
          var_18 = (type_1)&var_18->_mp_size;
        } while (var_8 != var_10);
        var_5 = (type_1)&var_5[-1]._mp_d;
        unaff_s2 = (type_1)((int)var_5 + (int)&unaff_s2->_mp_alloc);
      }
      unaff_s2->_mp_alloc = var_7;
      var_3 = (type_1)var_11;
      var_14 = puVar29;
      if (var_11 != (type_9 *)0x0) {
        (*(type_6 *)PTR___gmp_tmp_reentrant_free_0009b614)();
      }
    }
    else {
      if (var_3->_mp_alloc < var_4) {
        var_3 = (type_1)(*(type_6 *)PTR___gmpz_realloc_0009b5bc)(var_3,var_4);
      }
      else {
        var_3 = (type_1)var_3->_mp_d;
      }
      var_2 = (type_1)0x0;
      in_a2 = unaff_s2;
      (*(type_6 *)PTR___gmpn_sqrtrem_0009b0e0)();
      var_14 = var_6;
    }
  }
  if (var_12 == *(int *)PTR___stack_chk_guard_0009b540) {
    return;
  }
  uVar32 = 0x34694;
  var_13 = PTR___stack_chk_fail_0009b4d0;
  (*(type_6 *)PTR___stack_chk_fail_0009b4d0)();
  var_16 = var_13 + 0x6e9a0;
  var_20 = var_14 + -0x48;
  puVar31 = var_14 + -0x48;
  *(type_8 *)(var_14 + -4) = uVar32;
  *(type_7 **)(var_14 + -8) = var_6;
  *(type_4 *)(var_14 + -0xc) = var_15;
  *(type_1 *)(var_14 + -0x10) = unaff_s6;
  *(type_1 *)(var_14 + -0x14) = unaff_s5;
  *(type_1 *)(var_14 + -0x18) = var_5;
  *(int **)(var_14 + -0x1c) = var_8;
  *(type_1 *)(var_14 + -0x20) = unaff_s2;
  *(int *)(var_14 + -0x24) = var_1;
  *(int *)(var_14 + -0x28) = var_4;
  *(type_5 **)(var_14 + -0x38) = var_16;
  *(type_8 *)(var_14 + -0x2c) = **(type_8 **)(var_13 + 0x66ea0);
  var_1 = in_a2->_mp_size;
  if (var_1 < 1) {
    if (var_1 < 0) {
      (**(type_6 **)(var_13 + 0x66b2c))();
      goto LAB_000347c8;
    }
    var_3->_mp_size = 0;
    var_2->_mp_size = 0;
    var_18 = var_3;
    p_Var14 = var_2;
  }
  else {
    var_5 = in_a2;
    if (var_2->_mp_alloc < var_1) {
LAB_000347c8:
      unaff_s5 = (type_1)(**(type_6 **)(var_13 + 0x66f1c))(var_2,var_1);
      var_16 = *(type_5 **)(var_14 + -0x38);
    }
    else {
      unaff_s5 = (type_1)var_2->_mp_d;
    }
    var_4 = (var_1 + 1) / 2;
    var_3->_mp_size = var_4;
    unaff_s6 = (type_1)var_5->_mp_d;
    p_Var14 = unaff_s5;
    in_a2 = unaff_s6;
    if (var_5 == var_3) {
      var_15 = var_4 * 4;
      *(type_8 *)(var_14 + -0x30) = 0;
      if (var_15 < 0x7f01) {
        var_7 = -(var_15 + 7 & 0xfffffff8);
        puVar31 = var_14 + var_7 + -0x48;
        var_5 = (type_1)(var_14 + var_7 + -0x38);
      }
      else {
        var_5 = (type_1)(**(type_6 **)(var_16 + -0x7d50))(var_14 + -0x30,var_15);
        var_16 = *(type_5 **)(var_14 + -0x38);
      }
      var_1 = (**(type_6 **)(var_16 + -0x7f60))(var_5,unaff_s5,unaff_s6,var_1);
      var_16 = *(type_5 **)(var_14 + -0x38);
      if (var_3 != var_2) {
        var_7 = var_5->_mp_alloc;
        if (var_4 != 1) {
          var_17 = (type_3 **)&var_5->_mp_size;
          var_5 = (type_1)(&var_5->_mp_alloc + var_4);
          var_18 = unaff_s6;
          do {
            var_18->_mp_alloc = var_7;
            ppmVar6 = var_17 + 1;
            var_7 = (int)*var_17;
            var_17 = ppmVar6;
            var_18 = (type_1)&var_18->_mp_size;
          } while (var_5 != (type_1)ppmVar6);
          var_15 = var_15 - 4;
          unaff_s6 = (type_1)((int)unaff_s6 + var_15);
        }
        unaff_s6->_mp_alloc = var_7;
      }
      var_18 = *(type_1 *)(var_14 + -0x30);
      if (var_18 != (type_1)0x0) {
        (**(type_6 **)(var_16 + -0x7a2c))();
        var_16 = *(type_5 **)(var_14 + -0x38);
        var_2->_mp_size = var_1;
        var_20 = puVar31;
        goto LAB_00034768;
      }
    }
    else {
      if (var_3->_mp_alloc < var_4) {
        var_18 = (type_1)(**(type_6 **)(var_16 + -0x7a84))(var_3,var_4);
        var_16 = *(type_5 **)(var_14 + -0x38);
      }
      else {
        var_18 = (type_1)var_3->_mp_d;
      }
      var_1 = (**(type_6 **)(var_16 + -0x7f60))();
      var_16 = *(type_5 **)(var_14 + -0x38);
      puVar31 = var_14 + -0x48;
    }
    var_2->_mp_size = var_1;
    var_20 = puVar31;
  }
LAB_00034768:
  if (*(int *)(var_14 + -0x2c) == **(int **)(var_16 + -0x7b00)) {
    return;
  }
  var_19 = *(type_6 **)(var_16 + -0x7b70);
  uVar32 = 0x348d4;
  (*var_19)();
  var_29 = var_19 + 0x6e760;
  *(type_8 *)(var_20 + -4) = uVar32;
  *(type_4 *)(var_20 + -8) = var_15;
  *(type_1 *)(var_20 + -0xc) = unaff_s6;
  *(type_1 *)(var_20 + -0x10) = unaff_s5;
  *(type_1 *)(var_20 + -0x14) = var_5;
  *(type_2 *)(var_20 + -0x18) = var_2;
  *(type_1 *)(var_20 + -0x1c) = var_3;
  *(int *)(var_20 + -0x20) = var_1;
  *(int *)(var_20 + -0x24) = var_4;
  *(type_6 **)(var_20 + -0x30) = var_29;
  uVar19 = p_Var14->_mp_size;
  uVar7 = in_a2->_mp_size;
  var_23 = -uVar7;
  var_21 = uVar19;
  if ((int)uVar19 < 0) {
    var_21 = -uVar19;
  }
  if ((int)uVar7 < 0) {
    uVar7 = -uVar7;
  }
  var_24 = uVar7;
  var_22 = uVar19;
  p_Var22 = p_Var14;
  if ((int)var_21 < (int)uVar7) {
    var_24 = var_21;
    var_21 = uVar7;
    var_22 = var_23;
    p_Var22 = in_a2;
    var_23 = uVar19;
    in_a2 = p_Var14;
  }
  if (var_18->_mp_alloc < (int)(var_21 + 1)) {
    var_30 = (type_3 *)(**(type_6 **)(var_19 + 0x66cdc))(var_18);
    var_29 = *(type_6 **)(var_20 + -0x30);
  }
  else {
    var_30 = var_18->_mp_d;
  }
  var_25 = p_Var22->_mp_d;
  var_26 = in_a2->_mp_d;
  if ((int)(var_22 ^ var_23) < 0) {
    if (var_21 == var_24) {
      var_27 = var_25 + var_21;
      var_28 = var_26 + var_21;
      var_23 = var_21;
      do {
        var_23 = var_23 - 1;
        if (var_23 == 0xffffffff) goto LAB_00034bf8;
        pmVar1 = var_27 + -1;
        pmVar2 = var_28 + -1;
        var_27 = var_27 + -1;
        var_28 = var_28 + -1;
      } while (*pmVar1 == *pmVar2);
      if (*pmVar2 < *pmVar1) {
LAB_00034bf8:
        (**(type_6 **)(var_29 + -0x7b2c))(var_30,var_25,var_26,var_21);
        if ((0 < (int)var_21) && (var_30[var_21 - 1] == 0)) {
          var_30 = var_30 + var_21;
          do {
            var_21 = var_21 - 1;
            if (var_21 == 0) break;
            var_26 = var_30 + -2;
            var_30 = var_30 + -1;
          } while (*var_26 == 0);
        }
        if ((int)var_22 < 0) {
          var_21 = -var_21;
        }
      }
      else {
        (**(type_6 **)(var_29 + -0x7b2c))(var_30,var_26,var_25);
        if ((0 < (int)var_21) && (var_30[var_21 - 1] == 0)) {
          var_30 = var_30 + var_21;
          do {
            var_21 = var_21 - 1;
            if (var_21 == 0) break;
            var_26 = var_30 + -2;
            var_30 = var_30 + -1;
          } while (*var_26 == 0);
        }
        if (-1 < (int)var_22) {
          var_21 = -var_21;
        }
      }
      goto LAB_000349e8;
    }
    if (var_24 == 0) {
LAB_00034a50:
      if ((var_30 != var_25) && ((int)var_24 < (int)var_21)) {
        var_26 = var_25 + var_24;
        var_28 = var_30 + var_24;
        do {
          *var_28 = *var_26;
          var_26 = var_26 + 1;
          var_28 = var_28 + 1;
        } while (var_26 != var_25 + var_21);
      }
    }
    else {
      var_1 = (**(type_6 **)(var_29 + -0x7b2c))(var_30,var_25,var_26,var_24);
      if (var_1 == 0) goto LAB_00034a50;
      if ((int)var_24 < (int)var_21) {
        var_26 = var_25 + var_24;
        var_31 = *var_26;
        var_28 = var_30 + var_24;
        *var_28 = var_31 - 1;
        while (var_24 = var_24 + 1, var_31 == 0) {
          if (var_21 == var_24) goto LAB_00034a84;
          var_31 = var_26[1];
          var_28[1] = var_31 - 1;
          var_26 = var_26 + 1;
          var_28 = var_28 + 1;
        }
        goto LAB_00034a50;
      }
    }
LAB_00034a84:
    if ((0 < (int)var_21) && (var_30[var_21 + 0x3fffffff] == 0)) {
      var_30 = var_30 + var_21 + 0x40000000;
      do {
        var_21 = var_21 - 1;
        if (var_21 == 0) break;
        var_26 = var_30 + -2;
        var_30 = var_30 + -1;
      } while (*var_26 == 0);
    }
    if ((int)var_22 < 0) {
      var_21 = -var_21;
    }
    goto LAB_000349e8;
  }
  if (var_24 == 0) {
LAB_0003499c:
    if (var_30 == var_25) {
      var_31 = 0;
    }
    else if ((int)var_24 < (int)var_21) {
      var_28 = var_25 + var_24;
      var_26 = var_30 + var_24;
      do {
        *var_26 = *var_28;
        var_28 = var_28 + 1;
        var_26 = var_26 + 1;
      } while (var_28 != var_25 + var_21);
      var_31 = 0;
    }
    else {
      var_31 = 0;
    }
  }
  else {
    var_1 = (**(type_6 **)(var_29 + -0x7d0c))(var_30,var_25,var_26,var_24);
    if (var_1 == 0) goto LAB_0003499c;
    var_31 = 1;
    if ((int)var_24 < (int)var_21) {
      var_26 = var_25 + var_24;
      var_28 = var_30 + var_24;
      var_31 = *var_26 + 1;
      *var_28 = var_31;
      while (var_24 = var_24 + 1, var_31 == 0) {
        if (var_21 == var_24) {
          var_31 = 1;
          goto LAB_000349d4;
        }
        var_31 = var_26[1] + 1;
        var_28[1] = var_31;
        var_26 = var_26 + 1;
        var_28 = var_28 + 1;
      }
      goto LAB_0003499c;
    }
  }
LAB_000349d4:
  var_30[var_21] = var_31;
  var_21 = var_21 + var_31;
  if ((int)var_22 < 0) {
    var_21 = -var_21;
  }
LAB_000349e8:
  var_18->_mp_size = var_21;
  return;
}


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

void MASKED(int *param_1,int *param_2,int *param_3)

{
  uint *puVar1;
  uint *puVar2;
  int *piVar3;
  uint uVar4;
  undefined4 *puVar5;
  uint uVar6;
  undefined4 *puVar7;
  int iVar8;
  int *piVar9;
  int *piVar10;
  int iVar11;
  int *piVar12;
  int iVar13;
  int unaff_s0;
  uint uVar14;
  int iVar15;
  int iVar16;
  uint uVar17;
  int *unaff_s2;
  uint uVar18;
  uint uVar19;
  int *unaff_s3;
  int *unaff_s4;
  int *unaff_s5;
  int iVar20;
  int *unaff_s6;
  uint unaff_s7;
  undefined *puVar21;
  code *pcVar22;
  undefined *puVar23;
  code *pcVar24;
  undefined1 *puVar25;
  undefined1 *puVar26;
  undefined1 *puVar27;
  undefined1 *puVar28;
  undefined4 uVar29;
  undefined1 auStack_40 [16];
  int *local_28;
  int local_24;
  
  puVar25 = auStack_40;
  puVar26 = auStack_40;
  local_24 = *(int *)PTR___stack_chk_guard_0009b540;
  iVar16 = param_2[1];
  if (iVar16 < 1) {
    if (iVar16 < 0) {
      (*(code *)PTR___gmp_sqrt_of_negative_0009b1cc)();
      goto LAB_000345b4;
    }
    param_1[1] = 0;
  }
  else {
    unaff_s0 = (iVar16 + 1) / 2;
    param_1[1] = unaff_s0;
    unaff_s2 = (int *)param_2[2];
    if (param_2 == param_1) {
LAB_000345b4:
      unaff_s4 = (int *)(unaff_s0 * 4);
      local_28 = (int *)0x0;
      if (unaff_s4 < (int *)0x7f01) {
        iVar13 = -((int)unaff_s4 + 7U & 0xfffffff8);
        puVar26 = auStack_40 + iVar13;
        unaff_s3 = (int *)(&stack0xffffffd0 + iVar13);
      }
      else {
        unaff_s3 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)(&local_28,unaff_s4);
      }
      param_2 = (int *)0x0;
      param_3 = unaff_s2;
      (*(code *)PTR___gmpn_sqrtrem_0009b0e0)(unaff_s3,0,unaff_s2,iVar16);
      iVar13 = *unaff_s3;
      if (unaff_s0 != 1) {
        piVar10 = unaff_s3 + 1;
        unaff_s3 = unaff_s3 + unaff_s0;
        piVar12 = unaff_s2;
        do {
          *piVar12 = iVar13;
          piVar9 = piVar10 + 1;
          iVar13 = *piVar10;
          piVar10 = piVar9;
          piVar12 = piVar12 + 1;
        } while (unaff_s3 != piVar9);
        unaff_s4 = unaff_s4 + -1;
        unaff_s2 = (int *)((int)unaff_s2 + (int)unaff_s4);
      }
      *unaff_s2 = iVar13;
      param_1 = local_28;
      puVar25 = puVar26;
      if (local_28 != (int *)0x0) {
        (*(code *)PTR___gmp_tmp_reentrant_free_0009b614)();
      }
    }
    else {
      if (*param_1 < unaff_s0) {
        param_1 = (int *)(*(code *)PTR___gmpz_realloc_0009b5bc)(param_1,unaff_s0);
      }
      else {
        param_1 = (int *)param_1[2];
      }
      param_2 = (int *)0x0;
      param_3 = unaff_s2;
      (*(code *)PTR___gmpn_sqrtrem_0009b0e0)();
      puVar25 = auStack_40;
    }
  }
  if (local_24 == *(int *)PTR___stack_chk_guard_0009b540) {
    return;
  }
  uVar29 = 0x34694;
  puVar21 = PTR___stack_chk_fail_0009b4d0;
  (*(code *)PTR___stack_chk_fail_0009b4d0)();
  puVar23 = puVar21 + 0x6e9a0;
  puVar27 = puVar25 + -0x48;
  puVar28 = puVar25 + -0x48;
  *(undefined4 *)(puVar25 + -4) = uVar29;
  *(undefined1 **)(puVar25 + -8) = auStack_40;
  *(uint *)(puVar25 + -0xc) = unaff_s7;
  *(int **)(puVar25 + -0x10) = unaff_s6;
  *(int **)(puVar25 + -0x14) = unaff_s5;
  *(int **)(puVar25 + -0x18) = unaff_s4;
  *(int **)(puVar25 + -0x1c) = unaff_s3;
  *(int **)(puVar25 + -0x20) = unaff_s2;
  *(int *)(puVar25 + -0x24) = iVar16;
  *(int *)(puVar25 + -0x28) = unaff_s0;
  *(undefined **)(puVar25 + -0x38) = puVar23;
  *(undefined4 *)(puVar25 + -0x2c) = **(undefined4 **)(puVar21 + 0x66ea0);
  iVar16 = param_3[1];
  if (iVar16 < 1) {
    if (iVar16 < 0) {
      (**(code **)(puVar21 + 0x66b2c))();
      goto LAB_000347c8;
    }
    param_1[1] = 0;
    param_2[1] = 0;
    piVar10 = param_1;
    piVar12 = param_2;
  }
  else {
    unaff_s4 = param_3;
    if (*param_2 < iVar16) {
LAB_000347c8:
      unaff_s5 = (int *)(**(code **)(puVar21 + 0x66f1c))(param_2,iVar16);
      puVar23 = *(undefined **)(puVar25 + -0x38);
    }
    else {
      unaff_s5 = (int *)param_2[2];
    }
    unaff_s0 = (iVar16 + 1) / 2;
    param_1[1] = unaff_s0;
    unaff_s6 = (int *)unaff_s4[2];
    piVar12 = unaff_s5;
    param_3 = unaff_s6;
    if (unaff_s4 == param_1) {
      unaff_s7 = unaff_s0 * 4;
      *(undefined4 *)(puVar25 + -0x30) = 0;
      if (unaff_s7 < 0x7f01) {
        iVar13 = -(unaff_s7 + 7 & 0xfffffff8);
        puVar28 = puVar25 + iVar13 + -0x48;
        unaff_s4 = (int *)(puVar25 + iVar13 + -0x38);
      }
      else {
        unaff_s4 = (int *)(**(code **)(puVar23 + -0x7d50))(puVar25 + -0x30,unaff_s7);
        puVar23 = *(undefined **)(puVar25 + -0x38);
      }
      iVar16 = (**(code **)(puVar23 + -0x7f60))(unaff_s4,unaff_s5,unaff_s6,iVar16);
      puVar23 = *(undefined **)(puVar25 + -0x38);
      if (param_1 != param_2) {
        iVar13 = *unaff_s4;
        if (unaff_s0 != 1) {
          piVar10 = unaff_s4 + 1;
          unaff_s4 = unaff_s4 + unaff_s0;
          piVar9 = unaff_s6;
          do {
            *piVar9 = iVar13;
            piVar3 = piVar10 + 1;
            iVar13 = *piVar10;
            piVar10 = piVar3;
            piVar9 = piVar9 + 1;
          } while (unaff_s4 != piVar3);
          unaff_s7 = unaff_s7 - 4;
          unaff_s6 = unaff_s6 + unaff_s0 + -1;
        }
        *unaff_s6 = iVar13;
      }
      piVar10 = *(int **)(puVar25 + -0x30);
      if (piVar10 != (int *)0x0) {
        (**(code **)(puVar23 + -0x7a2c))();
        puVar23 = *(undefined **)(puVar25 + -0x38);
        param_2[1] = iVar16;
        puVar27 = puVar28;
        goto LAB_00034768;
      }
    }
    else {
      if (*param_1 < unaff_s0) {
        piVar10 = (int *)(**(code **)(puVar23 + -0x7a84))(param_1,unaff_s0);
        puVar23 = *(undefined **)(puVar25 + -0x38);
      }
      else {
        piVar10 = (int *)param_1[2];
      }
      iVar16 = (**(code **)(puVar23 + -0x7f60))();
      puVar23 = *(undefined **)(puVar25 + -0x38);
      puVar28 = puVar25 + -0x48;
    }
    param_2[1] = iVar16;
    puVar27 = puVar28;
  }
LAB_00034768:
  if (*(int *)(puVar25 + -0x2c) == **(int **)(puVar23 + -0x7b00)) {
    return;
  }
  pcVar22 = *(code **)(puVar23 + -0x7b70);
  uVar29 = 0x348d4;
  (*pcVar22)();
  pcVar24 = pcVar22 + 0x6e760;
  *(undefined4 *)(puVar27 + -4) = uVar29;
  *(uint *)(puVar27 + -8) = unaff_s7;
  *(int **)(puVar27 + -0xc) = unaff_s6;
  *(int **)(puVar27 + -0x10) = unaff_s5;
  *(int **)(puVar27 + -0x14) = unaff_s4;
  *(int **)(puVar27 + -0x18) = param_2;
  *(int **)(puVar27 + -0x1c) = param_1;
  *(int *)(puVar27 + -0x20) = iVar16;
  *(int *)(puVar27 + -0x24) = unaff_s0;
  *(code **)(puVar27 + -0x30) = pcVar24;
  uVar18 = piVar12[1];
  uVar4 = param_3[1];
  uVar6 = -uVar4;
  uVar17 = uVar18;
  if ((int)uVar18 < 0) {
    uVar17 = -uVar18;
  }
  if ((int)uVar4 < 0) {
    uVar4 = -uVar4;
  }
  uVar14 = uVar4;
  uVar19 = uVar18;
  piVar9 = piVar12;
  if ((int)uVar17 < (int)uVar4) {
    uVar14 = uVar17;
    uVar17 = uVar4;
    uVar19 = uVar6;
    piVar9 = param_3;
    uVar6 = uVar18;
    param_3 = piVar12;
  }
  if (*piVar10 < (int)(uVar17 + 1)) {
    iVar16 = (**(code **)(pcVar22 + 0x66cdc))(piVar10);
    pcVar24 = *(code **)(puVar27 + -0x30);
  }
  else {
    iVar16 = piVar10[2];
  }
  iVar20 = piVar9[2];
  iVar13 = param_3[2];
  if ((int)(uVar19 ^ uVar6) < 0) {
    if (uVar17 == uVar14) {
      iVar15 = uVar17 * 4;
      iVar11 = iVar20 + iVar15;
      iVar8 = iVar13 + iVar15;
      uVar6 = uVar17;
      do {
        uVar6 = uVar6 - 1;
        if (uVar6 == 0xffffffff) goto LAB_00034bf8;
        puVar1 = (uint *)(iVar11 + -4);
        puVar2 = (uint *)(iVar8 + -4);
        iVar11 = iVar11 + -4;
        iVar8 = iVar8 + -4;
      } while (*puVar1 == *puVar2);
      if (*puVar2 < *puVar1) {
LAB_00034bf8:
        (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar20,iVar13,uVar17);
        if ((0 < (int)uVar17) && (*(int *)(iVar16 + iVar15 + -4) == 0)) {
          iVar16 = iVar16 + iVar15;
          do {
            uVar17 = uVar17 - 1;
            if (uVar17 == 0) break;
            piVar12 = (int *)(iVar16 + -8);
            iVar16 = iVar16 + -4;
          } while (*piVar12 == 0);
        }
        if ((int)uVar19 < 0) {
          uVar17 = -uVar17;
        }
      }
      else {
        (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar13,iVar20);
        if ((0 < (int)uVar17) && (*(int *)(iVar16 + iVar15 + -4) == 0)) {
          iVar16 = iVar16 + iVar15;
          do {
            uVar17 = uVar17 - 1;
            if (uVar17 == 0) break;
            piVar12 = (int *)(iVar16 + -8);
            iVar16 = iVar16 + -4;
          } while (*piVar12 == 0);
        }
        if (-1 < (int)uVar19) {
          uVar17 = -uVar17;
        }
      }
      goto LAB_000349e8;
    }
    if (uVar14 == 0) {
LAB_00034a50:
      if ((iVar16 != iVar20) && ((int)uVar14 < (int)uVar17)) {
        puVar5 = (undefined4 *)(iVar20 + uVar14 * 4);
        puVar7 = (undefined4 *)(iVar16 + uVar14 * 4);
        do {
          *puVar7 = *puVar5;
          puVar5 = puVar5 + 1;
          puVar7 = puVar7 + 1;
        } while (puVar5 != (undefined4 *)(iVar20 + uVar17 * 4));
      }
    }
    else {
      iVar13 = (**(code **)(pcVar24 + -0x7b2c))(iVar16,iVar20,iVar13,uVar14);
      if (iVar13 == 0) goto LAB_00034a50;
      if ((int)uVar14 < (int)uVar17) {
        piVar12 = (int *)(iVar20 + uVar14 * 4);
        iVar13 = *piVar12;
        piVar9 = (int *)(iVar16 + uVar14 * 4);
        *piVar9 = iVar13 + -1;
        while (uVar14 = uVar14 + 1, iVar13 == 0) {
          if (uVar17 == uVar14) goto LAB_00034a84;
          iVar13 = piVar12[1];
          piVar9[1] = iVar13 + -1;
          piVar12 = piVar12 + 1;
          piVar9 = piVar9 + 1;
        }
        goto LAB_00034a50;
      }
    }
LAB_00034a84:
    if ((0 < (int)uVar17) && (iVar13 = (uVar17 + 0x3fffffff) * 4, *(int *)(iVar16 + iVar13) == 0)) {
      iVar16 = iVar16 + iVar13 + 4;
      do {
        uVar17 = uVar17 - 1;
        if (uVar17 == 0) break;
        piVar12 = (int *)(iVar16 + -8);
        iVar16 = iVar16 + -4;
      } while (*piVar12 == 0);
    }
    if ((int)uVar19 < 0) {
      uVar17 = -uVar17;
    }
    goto LAB_000349e8;
  }
  if (uVar14 == 0) {
LAB_0003499c:
    if (iVar16 == iVar20) {
      iVar13 = 0;
    }
    else if ((int)uVar14 < (int)uVar17) {
      puVar7 = (undefined4 *)(iVar20 + uVar14 * 4);
      puVar5 = (undefined4 *)(iVar16 + uVar14 * 4);
      do {
        *puVar5 = *puVar7;
        puVar7 = puVar7 + 1;
        puVar5 = puVar5 + 1;
      } while (puVar7 != (undefined4 *)(iVar20 + uVar17 * 4));
      iVar13 = 0;
    }
    else {
      iVar13 = 0;
    }
  }
  else {
    iVar13 = (**(code **)(pcVar24 + -0x7d0c))(iVar16,iVar20,iVar13,uVar14);
    if (iVar13 == 0) goto LAB_0003499c;
    iVar13 = 1;
    if ((int)uVar14 < (int)uVar17) {
      piVar12 = (int *)(iVar20 + uVar14 * 4);
      piVar9 = (int *)(iVar16 + uVar14 * 4);
      iVar13 = *piVar12 + 1;
      *piVar9 = iVar13;
      while (uVar14 = uVar14 + 1, iVar13 == 0) {
        if (uVar17 == uVar14) {
          iVar13 = 1;
          goto LAB_000349d4;
        }
        iVar13 = piVar12[1] + 1;
        piVar9[1] = iVar13;
        piVar12 = piVar12 + 1;
        piVar9 = piVar9 + 1;
      }
      goto LAB_0003499c;
    }
  }
LAB_000349d4:
  *(int *)(iVar16 + uVar17 * 4) = iVar13;
  uVar17 = uVar17 + iVar13;
  if ((int)uVar19 < 0) {
    uVar17 = -uVar17;
  }
LAB_000349e8:
  piVar10[1] = uVar17;
  return;
}

