
void __gmpf_sqrt(mpf_ptr r,mpf_srcptr u)

{
  int iVar1;
  uint uVar2;
  int iVar3;
  mpf_srcptr p_Var4;
  int *piVar5;
  uint uVar6;
  int iVar7;
  mpf_ptr p_Var8;
  int *piVar9;
  mpf_ptr p_Var10;
  undefined1 *puVar11;
  mpf_ptr in_a2;
  mpf_ptr p_Var12;
  int iVar13;
  int unaff_s1;
  mpf_srcptr unaff_s2;
  int *piVar14;
  undefined4 unaff_s4;
  uint uVar15;
  undefined4 unaff_s5;
  undefined4 unaff_s6;
  undefined4 unaff_s7;
  undefined *puVar16;
  undefined *puVar17;
  undefined1 *puVar18;
  undefined1 *puVar19;
  undefined4 *puVar20;
  code *pcVar21;
  undefined4 uVar22;
  undefined1 auStack_38 [16];
  tmp_reentrant_t *__tmp_marker;
  
  puVar19 = auStack_38;
  puVar18 = auStack_38;
  iVar1 = *(int *)PTR___stack_chk_guard_0009b540;
  iVar13 = u->_mp_size;
  if (iVar13 < 1) {
    if (-1 < iVar13) {
      r->_mp_size = 0;
      r->_mp_exp = 0;
      __tmp_marker = (tmp_reentrant_t *)r;
      goto LAB_0001a69c;
    }
    (*(code *)PTR___gmp_sqrt_of_negative_0009b1cc)();
LAB_0001a654:
    in_a2 = (mpf_ptr)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)();
  }
  else {
    __tmp_marker = (tmp_reentrant_t *)0x0;
    uVar2 = u->_mp_exp;
    unaff_s2 = (mpf_srcptr)u->_mp_d;
    uVar6 = uVar2 & 1;
    unaff_s1 = r->_mp_prec * 2 - uVar6;
    r->_mp_size = r->_mp_prec;
    r->_mp_exp = (int)(uVar2 + uVar6) / 2;
    if (0x7f00 < (uint)(unaff_s1 * 4)) goto LAB_0001a654;
    iVar3 = -(unaff_s1 * 4 + 7U & 0xfffffff8);
    puVar18 = auStack_38 + iVar3;
    in_a2 = (mpf_ptr)(&stack0xffffffd8 + iVar3);
  }
  if (unaff_s1 < iVar13) {
    if (unaff_s1 != 0) {
      iVar13 = (iVar13 - unaff_s1) * 4;
      unaff_s2 = (mpf_srcptr)((int)unaff_s2 + iVar13);
      iVar7 = unaff_s1 + -1;
      iVar3 = unaff_s2->_mp_prec;
      p_Var10 = in_a2;
      if (iVar7 != 0) {
        piVar5 = &unaff_s2->_mp_size;
        do {
          p_Var10->_mp_prec = iVar3;
          unaff_s2 = (mpf_srcptr)(piVar5 + 1);
          iVar7 = iVar7 + -1;
          iVar3 = *piVar5;
          p_Var10 = (mpf_ptr)&p_Var10->_mp_size;
          piVar5 = (int *)unaff_s2;
        } while (iVar7 != 0);
        p_Var10 = (mpf_ptr)((int)in_a2 + (unaff_s1 + 0x3fffffff) * 4);
      }
      p_Var10->_mp_prec = iVar3;
    }
  }
  else {
    iVar3 = unaff_s1 - iVar13;
    p_Var10 = in_a2;
    if (iVar13 != unaff_s1) {
      do {
        iVar3 = iVar3 + -1;
        p_Var10->_mp_prec = 0;
        p_Var10 = (mpf_ptr)&p_Var10->_mp_size;
      } while (iVar3 != 0);
    }
    iVar7 = iVar13 + -1;
    piVar5 = (int *)((int)in_a2 + (unaff_s1 - iVar13) * 4);
    iVar3 = unaff_s2->_mp_prec;
    if (iVar7 != 0) {
      piVar9 = piVar5;
      piVar14 = &unaff_s2->_mp_size;
      do {
        *piVar9 = iVar3;
        unaff_s2 = (mpf_srcptr)(piVar14 + 1);
        iVar7 = iVar7 + -1;
        iVar3 = *piVar14;
        piVar9 = piVar9 + 1;
        piVar14 = (int *)unaff_s2;
      } while (iVar7 != 0);
      iVar7 = iVar13 + 0x3fffffff;
      iVar13 = iVar7 * 4;
      piVar5 = piVar5 + iVar7;
    }
    *piVar5 = iVar3;
  }
  u = (mpf_srcptr)0x0;
  (*(code *)PTR___gmpn_sqrtrem_0009b0e0)(r->_mp_d,0,in_a2,unaff_s1);
  puVar19 = puVar18;
  if (__tmp_marker != (tmp_reentrant_t *)0x0) {
    (*(code *)PTR___gmp_tmp_reentrant_free_0009b614)();
  }
LAB_0001a69c:
  if (iVar1 == *(int *)PTR___stack_chk_guard_0009b540) {
    return;
  }
  pcVar21 = __gmpf_random2;
  puVar16 = PTR___stack_chk_fail_0009b4d0;
  (*(code *)PTR___stack_chk_fail_0009b4d0)();
  puVar17 = puVar16 + 0x888e0;
  *(code **)(puVar19 + -4) = pcVar21;
  *(mpf_ptr *)(puVar19 + -8) = r;
  *(mpf_srcptr *)(puVar19 + -0xc) = unaff_s2;
  *(int *)(puVar19 + -0x10) = unaff_s1;
  *(int *)(puVar19 + -0x14) = iVar13;
  *(undefined **)(puVar19 + -0x28) = puVar17;
  *(undefined4 *)(puVar19 + -0x1c) = **(undefined4 **)(puVar16 + 0x80de0);
  if (u == (mpf_srcptr)0x0) {
    ((mpf_ptr)__tmp_marker)->_mp_exp = 0;
    ((mpf_ptr)__tmp_marker)->_mp_size = 0;
    puVar11 = (undefined1 *)0x0;
    p_Var10 = (mpf_ptr)__tmp_marker;
    p_Var12 = in_a2;
  }
  else {
    unaff_s2 = u;
    if ((int)u < 0) {
      unaff_s2 = (mpf_srcptr)-(int)u;
    }
    p_Var4 = (mpf_srcptr)(((mpf_ptr)__tmp_marker)->_mp_prec + 1);
    if ((int)p_Var4 <= (int)unaff_s2) {
      unaff_s2 = p_Var4;
    }
    (**(code **)(puVar16 + 0x809f4))(((mpf_ptr)__tmp_marker)->_mp_d,unaff_s2);
    iVar1 = *(int *)(puVar19 + -0x28);
    if (**(char **)(iVar1 + -0x7eb8) == '\0') {
      **(undefined1 **)(iVar1 + -0x7eb8) = 1;
      (**(code **)(iVar1 + -0x7a40))(*(undefined4 *)(iVar1 + -0x7dc4));
      iVar1 = *(int *)(*(int *)(puVar19 + -0x28) + -0x7dc4);
    }
    else {
      iVar1 = *(int *)(iVar1 + -0x7dc4);
    }
    p_Var12 = (mpf_ptr)0x20;
    puVar11 = puVar19 + -0x20;
    (**(code **)(*(int *)(iVar1 + 0x10) + 4))();
    puVar17 = *(undefined **)(puVar19 + -0x28);
    p_Var8 = in_a2;
    if ((int)in_a2 < 0) {
      p_Var8 = (mpf_ptr)-(int)in_a2;
    }
    uVar2 = (int)p_Var8 * 2 + 1;
    p_Var10 = *(mpf_ptr *)(puVar19 + -0x20);
    if (uVar2 == 0) {
      trap(7);
    }
    ((mpf_ptr)__tmp_marker)->_mp_exp = (uint)p_Var10 % uVar2 - (int)p_Var8;
    if ((int)u < 0) {
      unaff_s2 = (mpf_srcptr)-(int)unaff_s2;
    }
    ((mpf_ptr)__tmp_marker)->_mp_size = (int)unaff_s2;
    r = in_a2;
  }
  if (*(int *)(puVar19 + -0x1c) == **(int **)(puVar17 + -0x7b00)) {
    return;
  }
  pcVar21 = *(code **)(puVar17 + -0x7b70);
  uVar22 = 0x1a8b8;
  (*pcVar21)();
  *(undefined4 *)(puVar19 + -0x3c) = uVar22;
  *(undefined1 **)(puVar19 + -0x40) = auStack_38;
  *(undefined4 *)(puVar19 + -0x44) = unaff_s7;
  *(undefined4 *)(puVar19 + -0x48) = unaff_s6;
  *(undefined4 *)(puVar19 + -0x4c) = unaff_s5;
  *(undefined4 *)(puVar19 + -0x50) = unaff_s4;
  *(mpf_ptr *)(puVar19 + -0x54) = r;
  *(mpf_srcptr *)(puVar19 + -0x58) = unaff_s2;
  *(mpf_srcptr *)(puVar19 + -0x5c) = u;
  *(tmp_reentrant_t **)(puVar19 + -0x60) = __tmp_marker;
  *(code **)(puVar19 + -0x68) = pcVar21 + 0x88780;
  *(mpf_ptr *)(puVar19 + -0x38) = p_Var10;
  *(undefined1 **)(puVar19 + -0x34) = puVar11;
  *(mpf_ptr *)(puVar19 + -0x30) = p_Var12;
  if (puVar11 == (undefined1 *)0x0) {
    *(undefined4 *)(puVar19 + -0x34) = **(undefined4 **)(pcVar21 + 0x80a54);
  }
  iVar1 = (*(code *)**(undefined4 **)(pcVar21 + 0x80c4c))(100);
  iVar13 = *(int *)(puVar19 + -0x68);
  do {
    iVar3 = (**(code **)(iVar13 + -0x7f3c))(*(undefined4 *)(puVar19 + -0x34));
    piVar5 = (int *)(**(code **)(*(int *)(puVar19 + -0x68) + -0x7f94))();
    iVar13 = *(int *)(puVar19 + -0x68);
  } while ((*(ushort *)(*piVar5 + iVar3 * 2) & 0x20) != 0);
  puVar20 = *(undefined4 **)(iVar13 + -0x7aa0);
  uVar2 = 0;
  uVar6 = 100;
  while ((iVar3 != -1 && (uVar15 = uVar2 + 1, (*(ushort *)(*piVar5 + iVar3 * 2) & 0x20) == 0))) {
    *(char *)(iVar1 + uVar2) = (char)iVar3;
    iVar3 = (**(code **)(iVar13 + -0x7f3c))(*(undefined4 *)(puVar19 + -0x34));
    iVar13 = *(int *)(puVar19 + -0x68);
    uVar2 = uVar15;
    if (uVar6 <= uVar15) {
      uVar15 = uVar6 * 3 >> 1;
      iVar1 = (*(code *)*puVar20)(iVar1,uVar6,uVar15);
      iVar13 = *(int *)(puVar19 + -0x68);
      uVar6 = uVar15;
    }
  }
  (**(code **)(iVar13 + -0x7d5c))(iVar3,*(undefined4 *)(puVar19 + -0x34));
  iVar13 = *(int *)(puVar19 + -0x68);
  uVar15 = uVar6;
  if (uVar6 <= uVar2) {
    uVar15 = uVar6 * 3 >> 1;
    iVar1 = (*(code *)**(undefined4 **)(iVar13 + -0x7aa0))(iVar1,uVar6,uVar15);
    iVar13 = *(int *)(puVar19 + -0x68);
  }
  *(undefined1 *)(iVar1 + uVar2) = 0;
  (**(code **)(iVar13 + -0x7ae8))
            (*(undefined4 *)(puVar19 + -0x38),iVar1,*(undefined4 *)(puVar19 + -0x30));
  (*(code *)**(undefined4 **)(*(int *)(puVar19 + -0x68) + -0x7e70))(iVar1,uVar15);
  return;
}



int __gmpf_sqrt(int *param_1,int *param_2,int *param_3)

{
  int iVar1;
  uint uVar2;
  uint uVar3;
  int iVar4;
  int *piVar5;
  int *piVar6;
  undefined1 *puVar7;
  int *piVar8;
  int iVar9;
  int iVar10;
  int unaff_s1;
  int *unaff_s2;
  undefined4 unaff_s4;
  uint uVar11;
  undefined4 unaff_s5;
  undefined4 unaff_s6;
  int iVar12;
  undefined4 unaff_s7;
  undefined *puVar13;
  undefined *puVar14;
  undefined1 *puVar15;
  undefined1 *puVar16;
  undefined4 *puVar17;
  code *pcVar18;
  undefined4 uVar19;
  undefined1 auStack_38 [16];
  int *local_20;
  
  puVar16 = auStack_38;
  puVar15 = auStack_38;
  iVar1 = *(int *)PTR___stack_chk_guard_0009b540;
  iVar9 = param_2[1];
  if (iVar9 < 1) {
    if (-1 < iVar9) {
      param_1[1] = 0;
      param_1[2] = 0;
      local_20 = param_1;
      goto LAB_0001a69c;
    }
    (*(code *)PTR___gmp_sqrt_of_negative_0009b1cc)();
LAB_0001a654:
    param_3 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)();
  }
  else {
    local_20 = (int *)0x0;
    uVar2 = param_2[2];
    unaff_s2 = (int *)param_2[3];
    uVar3 = uVar2 & 1;
    unaff_s1 = *param_1 * 2 - uVar3;
    param_1[1] = *param_1;
    param_1[2] = (int)(uVar2 + uVar3) / 2;
    if (0x7f00 < (uint)(unaff_s1 * 4)) goto LAB_0001a654;
    iVar10 = -(unaff_s1 * 4 + 7U & 0xfffffff8);
    puVar15 = auStack_38 + iVar10;
    param_3 = (int *)(&stack0xffffffd8 + iVar10);
  }
  if (unaff_s1 < iVar9) {
    if (unaff_s1 != 0) {
      iVar10 = iVar9 - unaff_s1;
      iVar9 = iVar10 * 4;
      unaff_s2 = unaff_s2 + iVar10;
      iVar4 = unaff_s1 + -1;
      iVar10 = *unaff_s2;
      piVar6 = param_3;
      if (iVar4 != 0) {
        piVar8 = unaff_s2 + 1;
        do {
          *piVar6 = iVar10;
          unaff_s2 = piVar8 + 1;
          iVar4 = iVar4 + -1;
          iVar10 = *piVar8;
          piVar6 = piVar6 + 1;
          piVar8 = unaff_s2;
        } while (iVar4 != 0);
        piVar6 = param_3 + unaff_s1 + 0x3fffffff;
      }
      *piVar6 = iVar10;
    }
  }
  else {
    iVar10 = unaff_s1 - iVar9;
    piVar6 = param_3;
    if (iVar9 != unaff_s1) {
      do {
        iVar10 = iVar10 + -1;
        *piVar6 = 0;
        piVar6 = piVar6 + 1;
      } while (iVar10 != 0);
    }
    iVar4 = iVar9 + -1;
    piVar6 = param_3 + (unaff_s1 - iVar9);
    iVar10 = *unaff_s2;
    if (iVar4 != 0) {
      piVar8 = piVar6;
      piVar5 = unaff_s2 + 1;
      do {
        *piVar8 = iVar10;
        unaff_s2 = piVar5 + 1;
        iVar4 = iVar4 + -1;
        iVar10 = *piVar5;
        piVar8 = piVar8 + 1;
        piVar5 = unaff_s2;
      } while (iVar4 != 0);
      iVar4 = iVar9 + 0x3fffffff;
      iVar9 = iVar4 * 4;
      piVar6 = piVar6 + iVar4;
    }
    *piVar6 = iVar10;
  }
  param_2 = (int *)0x0;
  (*(code *)PTR___gmpn_sqrtrem_0009b0e0)(param_1[3],0,param_3,unaff_s1);
  puVar16 = puVar15;
  if (local_20 != (int *)0x0) {
    (*(code *)PTR___gmp_tmp_reentrant_free_0009b614)();
  }
LAB_0001a69c:
  if (iVar1 == *(int *)PTR___stack_chk_guard_0009b540) {
    return *(int *)PTR___stack_chk_guard_0009b540;
  }
  pcVar18 = __gmpf_random2;
  puVar13 = PTR___stack_chk_fail_0009b4d0;
  (*(code *)PTR___stack_chk_fail_0009b4d0)();
  puVar14 = puVar13 + 0x888e0;
  *(code **)(puVar16 + -4) = pcVar18;
  *(int **)(puVar16 + -8) = param_1;
  *(int **)(puVar16 + -0xc) = unaff_s2;
  *(int *)(puVar16 + -0x10) = unaff_s1;
  *(int *)(puVar16 + -0x14) = iVar9;
  *(undefined **)(puVar16 + -0x28) = puVar14;
  *(undefined4 *)(puVar16 + -0x1c) = **(undefined4 **)(puVar13 + 0x80de0);
  if (param_2 == (int *)0x0) {
    local_20[2] = 0;
    local_20[1] = 0;
    puVar7 = (undefined1 *)0x0;
    piVar6 = local_20;
    piVar8 = param_3;
  }
  else {
    unaff_s2 = param_2;
    if ((int)param_2 < 0) {
      unaff_s2 = (int *)-(int)param_2;
    }
    if (*local_20 + 1 <= (int)unaff_s2) {
      unaff_s2 = (int *)(*local_20 + 1);
    }
    (**(code **)(puVar13 + 0x809f4))(local_20[3],unaff_s2);
    iVar1 = *(int *)(puVar16 + -0x28);
    if (**(char **)(iVar1 + -0x7eb8) == '\0') {
      **(undefined1 **)(iVar1 + -0x7eb8) = 1;
      (**(code **)(iVar1 + -0x7a40))(*(undefined4 *)(iVar1 + -0x7dc4));
      iVar1 = *(int *)(*(int *)(puVar16 + -0x28) + -0x7dc4);
    }
    else {
      iVar1 = *(int *)(iVar1 + -0x7dc4);
    }
    piVar8 = (int *)0x20;
    puVar7 = puVar16 + -0x20;
    (**(code **)(*(int *)(iVar1 + 0x10) + 4))();
    puVar14 = *(undefined **)(puVar16 + -0x28);
    piVar5 = param_3;
    if ((int)param_3 < 0) {
      piVar5 = (int *)-(int)param_3;
    }
    uVar2 = (int)piVar5 * 2 + 1;
    piVar6 = *(int **)(puVar16 + -0x20);
    if (uVar2 == 0) {
      trap(7);
    }
    local_20[2] = (uint)piVar6 % uVar2 - (int)piVar5;
    if ((int)param_2 < 0) {
      unaff_s2 = (int *)-(int)unaff_s2;
    }
    local_20[1] = (int)unaff_s2;
    param_1 = param_3;
  }
  if (*(int *)(puVar16 + -0x1c) != **(int **)(puVar14 + -0x7b00)) {
    pcVar18 = *(code **)(puVar14 + -0x7b70);
    uVar19 = 0x1a8b8;
    (*pcVar18)();
    *(undefined4 *)(puVar16 + -0x3c) = uVar19;
    *(undefined1 **)(puVar16 + -0x40) = auStack_38;
    *(undefined4 *)(puVar16 + -0x44) = unaff_s7;
    *(undefined4 *)(puVar16 + -0x48) = unaff_s6;
    *(undefined4 *)(puVar16 + -0x4c) = unaff_s5;
    *(undefined4 *)(puVar16 + -0x50) = unaff_s4;
    *(int **)(puVar16 + -0x54) = param_1;
    *(int **)(puVar16 + -0x58) = unaff_s2;
    *(int **)(puVar16 + -0x5c) = param_2;
    *(int **)(puVar16 + -0x60) = local_20;
    *(code **)(puVar16 + -0x68) = pcVar18 + 0x88780;
    *(int **)(puVar16 + -0x38) = piVar6;
    *(undefined1 **)(puVar16 + -0x34) = puVar7;
    *(int **)(puVar16 + -0x30) = piVar8;
    if (puVar7 == (undefined1 *)0x0) {
      *(undefined4 *)(puVar16 + -0x34) = **(undefined4 **)(pcVar18 + 0x80a54);
    }
    iVar9 = (*(code *)**(undefined4 **)(pcVar18 + 0x80c4c))(100);
    iVar10 = *(int *)(puVar16 + -0x68);
    iVar1 = 0;
    do {
      iVar12 = iVar1;
      iVar4 = (**(code **)(iVar10 + -0x7f3c))(*(undefined4 *)(puVar16 + -0x34));
      piVar6 = (int *)(**(code **)(*(int *)(puVar16 + -0x68) + -0x7f94))();
      iVar10 = *(int *)(puVar16 + -0x68);
      iVar1 = iVar12 + 1;
    } while ((*(ushort *)(*piVar6 + iVar4 * 2) & 0x20) != 0);
    puVar17 = *(undefined4 **)(iVar10 + -0x7aa0);
    uVar2 = 0;
    uVar3 = 100;
    while ((iVar4 != -1 && (uVar11 = uVar2 + 1, (*(ushort *)(*piVar6 + iVar4 * 2) & 0x20) == 0))) {
      *(char *)(iVar9 + uVar2) = (char)iVar4;
      iVar4 = (**(code **)(iVar10 + -0x7f3c))(*(undefined4 *)(puVar16 + -0x34));
      iVar10 = *(int *)(puVar16 + -0x68);
      uVar2 = uVar11;
      if (uVar3 <= uVar11) {
        uVar11 = uVar3 * 3 >> 1;
        iVar9 = (*(code *)*puVar17)(iVar9,uVar3,uVar11);
        iVar10 = *(int *)(puVar16 + -0x68);
        uVar3 = uVar11;
      }
    }
    (**(code **)(iVar10 + -0x7d5c))(iVar4,*(undefined4 *)(puVar16 + -0x34));
    iVar1 = *(int *)(puVar16 + -0x68);
    uVar11 = uVar3;
    if (uVar3 <= uVar2) {
      uVar11 = uVar3 * 3 >> 1;
      iVar9 = (*(code *)**(undefined4 **)(iVar1 + -0x7aa0))(iVar9,uVar3,uVar11);
      iVar1 = *(int *)(puVar16 + -0x68);
    }
    *(undefined1 *)(iVar9 + uVar2) = 0;
    iVar1 = (**(code **)(iVar1 + -0x7ae8))
                      (*(undefined4 *)(puVar16 + -0x38),iVar9,*(undefined4 *)(puVar16 + -0x30));
    (*(code *)**(undefined4 **)(*(int *)(puVar16 + -0x68) + -0x7e70))(iVar9,uVar11);
    iVar9 = 0;
    if (iVar1 != -1) {
      iVar9 = iVar12 + uVar2;
    }
    return iVar9;
  }
  return **(int **)(puVar14 + -0x7b00);
}


lui gp,0x9
addiu gp,gp,-0x74f0
addu gp,gp,t9
addiu sp,sp,-0x38
sw ra,0x34(sp)
sw s8,0x30(sp)
sw s3,0x2c(sp)
sw s2,0x28(sp)
sw s1,0x24(sp)
sw s0,0x20(sp)
or s8,sp,zero
sw gp,0x10(sp)
or s3,a0,zero
lw v0,-0x7b00(gp)
lw v0,0x0(v0)
sw v0,0x1c(s8)
lw s0,0x4(a1)
blez s0,0x0001a638
_nop
sw zero,0x18(s8)
lw v0,0x8(a1)
lw a0,0x0(a0)
lw s2,0xc(a1)
andi v1,v0,0x1
sll s1,a0,0x1
subu s1,s1,v1
sw a0,0x4(s3)
addu v1,v0,v1
srl v0,v1,0x1f
addu v0,v0,v1
sra v0,v0,0x1
sw v0,0x8(s3)
sll a1,s1,0x2
sltiu v0,a1,0x7f01
beq v0,zero,0x0001a654
_addiu a0,s8,0x18
addiu a1,a1,0x7
srl a1,a1,0x3
sll a1,a1,0x3
subu sp,sp,a1
addiu a2,sp,0x10
slt v0,s1,s0
beq v0,zero,0x0001a6d0
_nop
beq s1,zero,0x0001a678
_or a3,s1,zero
subu s0,s0,s1
sll s0,s0,0x2
addu s2,s2,s0
addiu v1,s1,-0x1
beq v1,zero,0x0001a66c
_lw v0,0x0(s2)
addiu s2,s2,0x4
or a0,a2,zero
addiu a0,a0,0x4
sw v0,-0x4(a0)
addiu s2,s2,0x4
addiu v1,v1,-0x1
bne v1,zero,0x0001a608
_lw v0,-0x4(s2)
lui v1,0x3fff
ori v1,v1,0xffff
addu v1,s1,v1
sll v1,v1,0x2
b 0x0001a670
_addu v1,a2,v1
bltz s0,0x0001a64c
_lw t9,-0x7e74(gp)
sw zero,0x4(a0)
b 0x0001a69c
_sw zero,0x8(a0)
jalr t9
_nop
lw t9,-0x7d50(gp)
jalr t9
_nop
lw gp,0x10(s8)
b 0x0001a5d4
_or a2,v0,zero
or v1,a2,zero
sw v0,0x0(v1)
or a3,s1,zero
or a1,zero,zero
lw a0,0xc(s3)
lw t9,-0x7f60(gp)
jalr t9
_nop
lw gp,0x10(s8)
lw a0,0x18(s8)
bne a0,zero,0x0001a740
_lw t9,-0x7a2c(gp)
lw v1,0x1c(s8)
lw v0,-0x7b00(gp)
lw v0,0x0(v0)
bne v1,v0,0x0001a754
_lw ra,0x34(s8)
or sp,s8,zero
lw s8,0x30(sp)
lw s3,0x2c(sp)
lw s2,0x28(sp)
lw s1,0x24(sp)
lw s0,0x20(sp)
jr ra
_addiu sp,sp,0x38
beq s0,s1,0x0001a6ec
_subu a0,s1,s0
or v1,a2,zero
addiu v1,v1,0x4
addiu a0,a0,-0x1
bne a0,zero,0x0001a6dc
_sw zero,-0x4(v1)
addiu v1,s0,-0x1
subu a1,s1,s0
sll a1,a1,0x2
addu a1,a2,a1
beq v1,zero,0x0001a738
_lw v0,0x0(s2)
addiu s2,s2,0x4
or a0,a1,zero
addiu a0,a0,0x4
sw v0,-0x4(a0)
addiu s2,s2,0x4
addiu v1,v1,-0x1
bne v1,zero,0x0001a70c
_lw v0,-0x4(s2)
lui v1,0x3fff
ori v1,v1,0xffff
addu s0,s0,v1
sll s0,s0,0x2
addu a1,a1,s0
b 0x0001a674
_sw v0,0x0(a1)
jalr t9
_nop
lw gp,0x10(s8)
b 0x0001a69c
_nop
lw t9,-0x7b70(gp)
jalr t9
_nop
(translation_unit "int __gmpf_sqrt(int *param_1,int *param_2,int *param_3)\n\n{\n  int iVar1;\n  uint uVar2;\n  uint uVar3;\n  int iVar4;\n  int *piVar5;\n  int *piVar6;\n  undefined1 *puVar7;\n  int *piVar8;\n  int iVar9;\n  int iVar10;\n  int unaff_s1;\n  int *unaff_s2;\n  undefined4 unaff_s4;\n  uint uVar11;\n  undefined4 unaff_s5;\n  undefined4 unaff_s6;\n  int iVar12;\n  undefined4 unaff_s7;\n  undefined *puVar13;\n  undefined *puVar14;\n  undefined1 *puVar15;\n  undefined1 *puVar16;\n  undefined4 *puVar17;\n  code *pcVar18;\n  undefined4 uVar19;\n  undefined1 auStack_38 [16];\n  int *local_20;\n  \n  puVar16 = auStack_38;\n  puVar15 = auStack_38;\n  iVar1 = *(int *)PTR___stack_chk_guard_0009b540;\n  iVar9 = param_2[1];\n  if (iVar9 < 1) {\n    if (-1 < iVar9) {\n      param_1[1] = 0;\n      param_1[2] = 0;\n      local_20 = param_1;\n      goto LAB_0001a69c;\n    }\n    (*(code *)PTR___gmp_sqrt_of_negative_0009b1cc)();\nLAB_0001a654:\n    param_3 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)();\n  }\n  else {\n    local_20 = (int *)0x0;\n    uVar2 = param_2[2];\n    unaff_s2 = (int *)param_2[3];\n    uVar3 = uVar2 & 1;\n    unaff_s1 = *param_1 * 2 - uVar3;\n    param_1[1] = *param_1;\n    param_1[2] = (int)(uVar2 + uVar3) / 2;\n    if (0x7f00 < (uint)(unaff_s1 * 4)) goto LAB_0001a654;\n    iVar10 = -(unaff_s1 * 4 + 7U & 0xfffffff8);\n    puVar15 = auStack_38 + iVar10;\n    param_3 = (int *)(&stack0xffffffd8 + iVar10);\n  }\n  if (unaff_s1 < iVar9) {\n    if (unaff_s1 != 0) {\n      iVar10 = iVar9 - unaff_s1;\n      iVar9 = iVar10 * 4;\n      unaff_s2 = unaff_s2 + iVar10;\n      iVar4 = unaff_s1 + -1;\n      iVar10 = *unaff_s2;\n      piVar6 = param_3;\n      if (iVar4 != 0) {\n        piVar8 = unaff_s2 + 1;\n        do {\n          *piVar6 = iVar10;\n          unaff_s2 = piVar8 + 1;\n          iVar4 = iVar4 + -1;\n          iVar10 = *piVar8;\n          piVar6 = piVar6 + 1;\n          piVar8 = unaff_s2;\n        } while (iVar4 != 0);\n        piVar6 = param_3 + unaff_s1 + 0x3fffffff;\n      }\n      *piVar6 = iVar10;\n    }\n  }\n  else {\n    iVar10 = unaff_s1 - iVar9;\n    piVar6 = param_3;\n    if (iVar9 != unaff_s1) {\n      do {\n        iVar10 = iVar10 + -1;\n        *piVar6 = 0;\n        piVar6 = piVar6 + 1;\n      } while (iVar10 != 0);\n    }\n    iVar4 = iVar9 + -1;\n    piVar6 = param_3 + (unaff_s1 - iVar9);\n    iVar10 = *unaff_s2;\n    if (iVar4 != 0) {\n      piVar8 = piVar6;\n      piVar5 = unaff_s2 + 1;\n      do {\n        *piVar8 = iVar10;\n        unaff_s2 = piVar5 + 1;\n        iVar4 = iVar4 + -1;\n        iVar10 = *piVar5;\n        piVar8 = piVar8 + 1;\n        piVar5 = unaff_s2;\n      } while (iVar4 != 0);\n      iVar4 = iVar9 + 0x3fffffff;\n      iVar9 = iVar4 * 4;\n      piVar6 = piVar6 + iVar4;\n    }\n    *piVar6 = iVar10;\n  }\n  param_2 = (int *)0x0;\n  (*(code *)PTR___gmpn_sqrtrem_0009b0e0)(param_1[3],0,param_3,unaff_s1);\n  puVar16 = puVar15;\n  if (local_20 != (int *)0x0) {\n    (*(code *)PTR___gmp_tmp_reentrant_free_0009b614)();\n  }\nLAB_0001a69c:\n  if (iVar1 == *(int *)PTR___stack_chk_guard_0009b540) {\n    return *(int *)PTR___stack_chk_guard_0009b540;\n  }\n  pcVar18 = __gmpf_random2;\n  puVar13 = PTR___stack_chk_fail_0009b4d0;\n  (*(code *)PTR___stack_chk_fail_0009b4d0)();\n  puVar14 = puVar13 + 0x888e0;\n  *(code **)(puVar16 + -4) = pcVar18;\n  *(int **)(puVar16 + -8) = param_1;\n  *(int **)(puVar16 + -0xc) = unaff_s2;\n  *(int *)(puVar16 + -0x10) = unaff_s1;\n  *(int *)(puVar16 + -0x14) = iVar9;\n  *(undefined **)(puVar16 + -0x28) = puVar14;\n  *(undefined4 *)(puVar16 + -0x1c) = **(undefined4 **)(puVar13 + 0x80de0);\n  if (param_2 == (int *)0x0) {\n    local_20[2] = 0;\n    local_20[1] = 0;\n    puVar7 = (undefined1 *)0x0;\n    piVar6 = local_20;\n    piVar8 = param_3;\n  }\n  else {\n    unaff_s2 = param_2;\n    if ((int)param_2 < 0) {\n      unaff_s2 = (int *)-(int)param_2;\n    }\n    if (*local_20 + 1 <= (int)unaff_s2) {\n      unaff_s2 = (int *)(*local_20 + 1);\n    }\n    (**(code **)(puVar13 + 0x809f4))(local_20[3],unaff_s2);\n    iVar1 = *(int *)(puVar16 + -0x28);\n    if (**(char **)(iVar1 + -0x7eb8) == '\0') {\n      **(undefined1 **)(iVar1 + -0x7eb8) = 1;\n      (**(code **)(iVar1 + -0x7a40))(*(undefined4 *)(iVar1 + -0x7dc4));\n      iVar1 = *(int *)(*(int *)(puVar16 + -0x28) + -0x7dc4);\n    }\n    else {\n      iVar1 = *(int *)(iVar1 + -0x7dc4);\n    }\n    piVar8 = (int *)0x20;\n    puVar7 = puVar16 + -0x20;\n    (**(code **)(*(int *)(iVar1 + 0x10) + 4))();\n    puVar14 = *(undefined **)(puVar16 + -0x28);\n    piVar5 = param_3;\n    if ((int)param_3 < 0) {\n      piVar5 = (int *)-(int)param_3;\n    }\n    uVar2 = (int)piVar5 * 2 + 1;\n    piVar6 = *(int **)(puVar16 + -0x20);\n    if (uVar2 == 0) {\n      trap(7);\n    }\n    local_20[2] = (uint)piVar6 % uVar2 - (int)piVar5;\n    if ((int)param_2 < 0) {\n      unaff_s2 = (int *)-(int)unaff_s2;\n    }\n    local_20[1] = (int)unaff_s2;\n    param_1 = param_3;\n  }\n  if (*(int *)(puVar16 + -0x1c) != **(int **)(puVar14 + -0x7b00)) {\n    pcVar18 = *(code **)(puVar14 + -0x7b70);\n    uVar19 = 0x1a8b8;\n    (*pcVar18)();\n    *(undefined4 *)(puVar16 + -0x3c) = uVar19;\n    *(undefined1 **)(puVar16 + -0x40) = auStack_38;\n    *(undefined4 *)(puVar16 + -0x44) = unaff_s7;\n    *(undefined4 *)(puVar16 + -0x48) = unaff_s6;\n    *(undefined4 *)(puVar16 + -0x4c) = unaff_s5;\n    *(undefined4 *)(puVar16 + -0x50) = unaff_s4;\n    *(int **)(puVar16 + -0x54) = param_1;\n    *(int **)(puVar16 + -0x58) = unaff_s2;\n    *(int **)(puVar16 + -0x5c) = param_2;\n    *(int **)(puVar16 + -0x60) = local_20;\n    *(code **)(puVar16 + -0x68) = pcVar18 + 0x88780;\n    *(int **)(puVar16 + -0x38) = piVar6;\n    *(undefined1 **)(puVar16 + -0x34) = puVar7;\n    *(int **)(puVar16 + -0x30) = piVar8;\n    if (puVar7 == (undefined1 *)0x0) {\n      *(undefined4 *)(puVar16 + -0x34) = **(undefined4 **)(pcVar18 + 0x80a54);\n    }\n    iVar9 = (*(code *)**(undefined4 **)(pcVar18 + 0x80c4c))(100);\n    iVar10 = *(int *)(puVar16 + -0x68);\n    iVar1 = 0;\n    do {\n      iVar12 = iVar1;\n      iVar4 = (**(code **)(iVar10 + -0x7f3c))(*(undefined4 *)(puVar16 + -0x34));\n      piVar6 = (int *)(**(code **)(*(int *)(puVar16 + -0x68) + -0x7f94))();\n      iVar10 = *(int *)(puVar16 + -0x68);\n      iVar1 = iVar12 + 1;\n    } while ((*(ushort *)(*piVar6 + iVar4 * 2) & 0x20) != 0);\n    puVar17 = *(undefined4 **)(iVar10 + -0x7aa0);\n    uVar2 = 0;\n    uVar3 = 100;\n    while ((iVar4 != -1 && (uVar11 = uVar2 + 1, (*(ushort *)(*piVar6 + iVar4 * 2) & 0x20) == 0))) {\n      *(char *)(iVar9 + uVar2) = (char)iVar4;\n      iVar4 = (**(code **)(iVar10 + -0x7f3c))(*(undefined4 *)(puVar16 + -0x34));\n      iVar10 = *(int *)(puVar16 + -0x68);\n      uVar2 = uVar11;\n      if (uVar3 <= uVar11) {\n        uVar11 = uVar3 * 3 >> 1;\n        iVar9 = (*(code *)*puVar17)(iVar9,uVar3,uVar11);\n        iVar10 = *(int *)(puVar16 + -0x68);\n        uVar3 = uVar11;\n      }\n    }\n    (**(code **)(iVar10 + -0x7d5c))(iVar4,*(undefined4 *)(puVar16 + -0x34));\n    iVar1 = *(int *)(puVar16 + -0x68);\n    uVar11 = uVar3;\n    if (uVar3 <= uVar2) {\n      uVar11 = uVar3 * 3 >> 1;\n      iVar9 = (*(code *)**(undefined4 **)(iVar1 + -0x7aa0))(iVar9,uVar3,uVar11);\n      iVar1 = *(int *)(puVar16 + -0x68);\n    }\n    *(undefined1 *)(iVar9 + uVar2) = 0;\n    iVar1 = (**(code **)(iVar1 + -0x7ae8))\n                      (*(undefined4 *)(puVar16 + -0x38),iVar9,*(undefined4 *)(puVar16 + -0x30));\n    (*(code *)**(undefined4 **)(*(int *)(puVar16 + -0x68) + -0x7e70))(iVar9,uVar11);\n    iVar9 = 0;\n    if (iVar1 != -1) {\n      iVar9 = iVar12 + uVar2;\n    }\n    return iVar9;\n  }\n  return **(int **)(puVar14 + -0x7b00);\n}\n\n" (function_definition "int __gmpf_sqrt(int *param_1,int *param_2,int *param_3)\n\n{\n  int iVar1;\n  uint uVar2;\n  uint uVar3;\n  int iVar4;\n  int *piVar5;\n  int *piVar6;\n  undefined1 *puVar7;\n  int *piVar8;\n  int iVar9;\n  int iVar10;\n  int unaff_s1;\n  int *unaff_s2;\n  undefined4 unaff_s4;\n  uint uVar11;\n  undefined4 unaff_s5;\n  undefined4 unaff_s6;\n  int iVar12;\n  undefined4 unaff_s7;\n  undefined *puVar13;\n  undefined *puVar14;\n  undefined1 *puVar15;\n  undefined1 *puVar16;\n  undefined4 *puVar17;\n  code *pcVar18;\n  undefined4 uVar19;\n  undefined1 auStack_38 [16];\n  int *local_20;\n  \n  puVar16 = auStack_38;\n  puVar15 = auStack_38;\n  iVar1 = *(int *)PTR___stack_chk_guard_0009b540;\n  iVar9 = param_2[1];\n  if (iVar9 < 1) {\n    if (-1 < iVar9) {\n      param_1[1] = 0;\n      param_1[2] = 0;\n      local_20 = param_1;\n      goto LAB_0001a69c;\n    }\n    (*(code *)PTR___gmp_sqrt_of_negative_0009b1cc)();\nLAB_0001a654:\n    param_3 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)();\n  }\n  else {\n    local_20 = (int *)0x0;\n    uVar2 = param_2[2];\n    unaff_s2 = (int *)param_2[3];\n    uVar3 = uVar2 & 1;\n    unaff_s1 = *param_1 * 2 - uVar3;\n    param_1[1] = *param_1;\n    param_1[2] = (int)(uVar2 + uVar3) / 2;\n    if (0x7f00 < (uint)(unaff_s1 * 4)) goto LAB_0001a654;\n    iVar10 = -(unaff_s1 * 4 + 7U & 0xfffffff8);\n    puVar15 = auStack_38 + iVar10;\n    param_3 = (int *)(&stack0xffffffd8 + iVar10);\n  }\n  if (unaff_s1 < iVar9) {\n    if (unaff_s1 != 0) {\n      iVar10 = iVar9 - unaff_s1;\n      iVar9 = iVar10 * 4;\n      unaff_s2 = unaff_s2 + iVar10;\n      iVar4 = unaff_s1 + -1;\n      iVar10 = *unaff_s2;\n      piVar6 = param_3;\n      if (iVar4 != 0) {\n        piVar8 = unaff_s2 + 1;\n        do {\n          *piVar6 = iVar10;\n          unaff_s2 = piVar8 + 1;\n          iVar4 = iVar4 + -1;\n          iVar10 = *piVar8;\n          piVar6 = piVar6 + 1;\n          piVar8 = unaff_s2;\n        } while (iVar4 != 0);\n        piVar6 = param_3 + unaff_s1 + 0x3fffffff;\n      }\n      *piVar6 = iVar10;\n    }\n  }\n  else {\n    iVar10 = unaff_s1 - iVar9;\n    piVar6 = param_3;\n    if (iVar9 != unaff_s1) {\n      do {\n        iVar10 = iVar10 + -1;\n        *piVar6 = 0;\n        piVar6 = piVar6 + 1;\n      } while (iVar10 != 0);\n    }\n    iVar4 = iVar9 + -1;\n    piVar6 = param_3 + (unaff_s1 - iVar9);\n    iVar10 = *unaff_s2;\n    if (iVar4 != 0) {\n      piVar8 = piVar6;\n      piVar5 = unaff_s2 + 1;\n      do {\n        *piVar8 = iVar10;\n        unaff_s2 = piVar5 + 1;\n        iVar4 = iVar4 + -1;\n        iVar10 = *piVar5;\n        piVar8 = piVar8 + 1;\n        piVar5 = unaff_s2;\n      } while (iVar4 != 0);\n      iVar4 = iVar9 + 0x3fffffff;\n      iVar9 = iVar4 * 4;\n      piVar6 = piVar6 + iVar4;\n    }\n    *piVar6 = iVar10;\n  }\n  param_2 = (int *)0x0;\n  (*(code *)PTR___gmpn_sqrtrem_0009b0e0)(param_1[3],0,param_3,unaff_s1);\n  puVar16 = puVar15;\n  if (local_20 != (int *)0x0) {\n    (*(code *)PTR___gmp_tmp_reentrant_free_0009b614)();\n  }\nLAB_0001a69c:\n  if (iVar1 == *(int *)PTR___stack_chk_guard_0009b540) {\n    return *(int *)PTR___stack_chk_guard_0009b540;\n  }\n  pcVar18 = __gmpf_random2;\n  puVar13 = PTR___stack_chk_fail_0009b4d0;\n  (*(code *)PTR___stack_chk_fail_0009b4d0)();\n  puVar14 = puVar13 + 0x888e0;\n  *(code **)(puVar16 + -4) = pcVar18;\n  *(int **)(puVar16 + -8) = param_1;\n  *(int **)(puVar16 + -0xc) = unaff_s2;\n  *(int *)(puVar16 + -0x10) = unaff_s1;\n  *(int *)(puVar16 + -0x14) = iVar9;\n  *(undefined **)(puVar16 + -0x28) = puVar14;\n  *(undefined4 *)(puVar16 + -0x1c) = **(undefined4 **)(puVar13 + 0x80de0);\n  if (param_2 == (int *)0x0) {\n    local_20[2] = 0;\n    local_20[1] = 0;\n    puVar7 = (undefined1 *)0x0;\n    piVar6 = local_20;\n    piVar8 = param_3;\n  }\n  else {\n    unaff_s2 = param_2;\n    if ((int)param_2 < 0) {\n      unaff_s2 = (int *)-(int)param_2;\n    }\n    if (*local_20 + 1 <= (int)unaff_s2) {\n      unaff_s2 = (int *)(*local_20 + 1);\n    }\n    (**(code **)(puVar13 + 0x809f4))(local_20[3],unaff_s2);\n    iVar1 = *(int *)(puVar16 + -0x28);\n    if (**(char **)(iVar1 + -0x7eb8) == '\0') {\n      **(undefined1 **)(iVar1 + -0x7eb8) = 1;\n      (**(code **)(iVar1 + -0x7a40))(*(undefined4 *)(iVar1 + -0x7dc4));\n      iVar1 = *(int *)(*(int *)(puVar16 + -0x28) + -0x7dc4);\n    }\n    else {\n      iVar1 = *(int *)(iVar1 + -0x7dc4);\n    }\n    piVar8 = (int *)0x20;\n    puVar7 = puVar16 + -0x20;\n    (**(code **)(*(int *)(iVar1 + 0x10) + 4))();\n    puVar14 = *(undefined **)(puVar16 + -0x28);\n    piVar5 = param_3;\n    if ((int)param_3 < 0) {\n      piVar5 = (int *)-(int)param_3;\n    }\n    uVar2 = (int)piVar5 * 2 + 1;\n    piVar6 = *(int **)(puVar16 + -0x20);\n    if (uVar2 == 0) {\n      trap(7);\n    }\n    local_20[2] = (uint)piVar6 % uVar2 - (int)piVar5;\n    if ((int)param_2 < 0) {\n      unaff_s2 = (int *)-(int)unaff_s2;\n    }\n    local_20[1] = (int)unaff_s2;\n    param_1 = param_3;\n  }\n  if (*(int *)(puVar16 + -0x1c) != **(int **)(puVar14 + -0x7b00)) {\n    pcVar18 = *(code **)(puVar14 + -0x7b70);\n    uVar19 = 0x1a8b8;\n    (*pcVar18)();\n    *(undefined4 *)(puVar16 + -0x3c) = uVar19;\n    *(undefined1 **)(puVar16 + -0x40) = auStack_38;\n    *(undefined4 *)(puVar16 + -0x44) = unaff_s7;\n    *(undefined4 *)(puVar16 + -0x48) = unaff_s6;\n    *(undefined4 *)(puVar16 + -0x4c) = unaff_s5;\n    *(undefined4 *)(puVar16 + -0x50) = unaff_s4;\n    *(int **)(puVar16 + -0x54) = param_1;\n    *(int **)(puVar16 + -0x58) = unaff_s2;\n    *(int **)(puVar16 + -0x5c) = param_2;\n    *(int **)(puVar16 + -0x60) = local_20;\n    *(code **)(puVar16 + -0x68) = pcVar18 + 0x88780;\n    *(int **)(puVar16 + -0x38) = piVar6;\n    *(undefined1 **)(puVar16 + -0x34) = puVar7;\n    *(int **)(puVar16 + -0x30) = piVar8;\n    if (puVar7 == (undefined1 *)0x0) {\n      *(undefined4 *)(puVar16 + -0x34) = **(undefined4 **)(pcVar18 + 0x80a54);\n    }\n    iVar9 = (*(code *)**(undefined4 **)(pcVar18 + 0x80c4c))(100);\n    iVar10 = *(int *)(puVar16 + -0x68);\n    iVar1 = 0;\n    do {\n      iVar12 = iVar1;\n      iVar4 = (**(code **)(iVar10 + -0x7f3c))(*(undefined4 *)(puVar16 + -0x34));\n      piVar6 = (int *)(**(code **)(*(int *)(puVar16 + -0x68) + -0x7f94))();\n      iVar10 = *(int *)(puVar16 + -0x68);\n      iVar1 = iVar12 + 1;\n    } while ((*(ushort *)(*piVar6 + iVar4 * 2) & 0x20) != 0);\n    puVar17 = *(undefined4 **)(iVar10 + -0x7aa0);\n    uVar2 = 0;\n    uVar3 = 100;\n    while ((iVar4 != -1 && (uVar11 = uVar2 + 1, (*(ushort *)(*piVar6 + iVar4 * 2) & 0x20) == 0))) {\n      *(char *)(iVar9 + uVar2) = (char)iVar4;\n      iVar4 = (**(code **)(iVar10 + -0x7f3c))(*(undefined4 *)(puVar16 + -0x34));\n      iVar10 = *(int *)(puVar16 + -0x68);\n      uVar2 = uVar11;\n      if (uVar3 <= uVar11) {\n        uVar11 = uVar3 * 3 >> 1;\n        iVar9 = (*(code *)*puVar17)(iVar9,uVar3,uVar11);\n        iVar10 = *(int *)(puVar16 + -0x68);\n        uVar3 = uVar11;\n      }\n    }\n    (**(code **)(iVar10 + -0x7d5c))(iVar4,*(undefined4 *)(puVar16 + -0x34));\n    iVar1 = *(int *)(puVar16 + -0x68);\n    uVar11 = uVar3;\n    if (uVar3 <= uVar2) {\n      uVar11 = uVar3 * 3 >> 1;\n      iVar9 = (*(code *)**(undefined4 **)(iVar1 + -0x7aa0))(iVar9,uVar3,uVar11);\n      iVar1 = *(int *)(puVar16 + -0x68);\n    }\n    *(undefined1 *)(iVar9 + uVar2) = 0;\n    iVar1 = (**(code **)(iVar1 + -0x7ae8))\n                      (*(undefined4 *)(puVar16 + -0x38),iVar9,*(undefined4 *)(puVar16 + -0x30));\n    (*(code *)**(undefined4 **)(*(int *)(puVar16 + -0x68) + -0x7e70))(iVar9,uVar11);\n    iVar9 = 0;\n    if (iVar1 != -1) {\n      iVar9 = iVar12 + uVar2;\n    }\n    return iVar9;\n  }\n  return **(int **)(puVar14 + -0x7b00);\n}" primitive_type (function_declarator "__gmpf_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  int iVar1;\n  uint uVar2;\n  uint uVar3;\n  int iVar4;\n  int *piVar5;\n  int *piVar6;\n  undefined1 *puVar7;\n  int *piVar8;\n  int iVar9;\n  int iVar10;\n  int unaff_s1;\n  int *unaff_s2;\n  undefined4 unaff_s4;\n  uint uVar11;\n  undefined4 unaff_s5;\n  undefined4 unaff_s6;\n  int iVar12;\n  undefined4 unaff_s7;\n  undefined *puVar13;\n  undefined *puVar14;\n  undefined1 *puVar15;\n  undefined1 *puVar16;\n  undefined4 *puVar17;\n  code *pcVar18;\n  undefined4 uVar19;\n  undefined1 auStack_38 [16];\n  int *local_20;\n  \n  puVar16 = auStack_38;\n  puVar15 = auStack_38;\n  iVar1 = *(int *)PTR___stack_chk_guard_0009b540;\n  iVar9 = param_2[1];\n  if (iVar9 < 1) {\n    if (-1 < iVar9) {\n      param_1[1] = 0;\n      param_1[2] = 0;\n      local_20 = param_1;\n      goto LAB_0001a69c;\n    }\n    (*(code *)PTR___gmp_sqrt_of_negative_0009b1cc)();\nLAB_0001a654:\n    param_3 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)();\n  }\n  else {\n    local_20 = (int *)0x0;\n    uVar2 = param_2[2];\n    unaff_s2 = (int *)param_2[3];\n    uVar3 = uVar2 & 1;\n    unaff_s1 = *param_1 * 2 - uVar3;\n    param_1[1] = *param_1;\n    param_1[2] = (int)(uVar2 + uVar3) / 2;\n    if (0x7f00 < (uint)(unaff_s1 * 4)) goto LAB_0001a654;\n    iVar10 = -(unaff_s1 * 4 + 7U & 0xfffffff8);\n    puVar15 = auStack_38 + iVar10;\n    param_3 = (int *)(&stack0xffffffd8 + iVar10);\n  }\n  if (unaff_s1 < iVar9) {\n    if (unaff_s1 != 0) {\n      iVar10 = iVar9 - unaff_s1;\n      iVar9 = iVar10 * 4;\n      unaff_s2 = unaff_s2 + iVar10;\n      iVar4 = unaff_s1 + -1;\n      iVar10 = *unaff_s2;\n      piVar6 = param_3;\n      if (iVar4 != 0) {\n        piVar8 = unaff_s2 + 1;\n        do {\n          *piVar6 = iVar10;\n          unaff_s2 = piVar8 + 1;\n          iVar4 = iVar4 + -1;\n          iVar10 = *piVar8;\n          piVar6 = piVar6 + 1;\n          piVar8 = unaff_s2;\n        } while (iVar4 != 0);\n        piVar6 = param_3 + unaff_s1 + 0x3fffffff;\n      }\n      *piVar6 = iVar10;\n    }\n  }\n  else {\n    iVar10 = unaff_s1 - iVar9;\n    piVar6 = param_3;\n    if (iVar9 != unaff_s1) {\n      do {\n        iVar10 = iVar10 + -1;\n        *piVar6 = 0;\n        piVar6 = piVar6 + 1;\n      } while (iVar10 != 0);\n    }\n    iVar4 = iVar9 + -1;\n    piVar6 = param_3 + (unaff_s1 - iVar9);\n    iVar10 = *unaff_s2;\n    if (iVar4 != 0) {\n      piVar8 = piVar6;\n      piVar5 = unaff_s2 + 1;\n      do {\n        *piVar8 = iVar10;\n        unaff_s2 = piVar5 + 1;\n        iVar4 = iVar4 + -1;\n        iVar10 = *piVar5;\n        piVar8 = piVar8 + 1;\n        piVar5 = unaff_s2;\n      } while (iVar4 != 0);\n      iVar4 = iVar9 + 0x3fffffff;\n      iVar9 = iVar4 * 4;\n      piVar6 = piVar6 + iVar4;\n    }\n    *piVar6 = iVar10;\n  }\n  param_2 = (int *)0x0;\n  (*(code *)PTR___gmpn_sqrtrem_0009b0e0)(param_1[3],0,param_3,unaff_s1);\n  puVar16 = puVar15;\n  if (local_20 != (int *)0x0) {\n    (*(code *)PTR___gmp_tmp_reentrant_free_0009b614)();\n  }\nLAB_0001a69c:\n  if (iVar1 == *(int *)PTR___stack_chk_guard_0009b540) {\n    return *(int *)PTR___stack_chk_guard_0009b540;\n  }\n  pcVar18 = __gmpf_random2;\n  puVar13 = PTR___stack_chk_fail_0009b4d0;\n  (*(code *)PTR___stack_chk_fail_0009b4d0)();\n  puVar14 = puVar13 + 0x888e0;\n  *(code **)(puVar16 + -4) = pcVar18;\n  *(int **)(puVar16 + -8) = param_1;\n  *(int **)(puVar16 + -0xc) = unaff_s2;\n  *(int *)(puVar16 + -0x10) = unaff_s1;\n  *(int *)(puVar16 + -0x14) = iVar9;\n  *(undefined **)(puVar16 + -0x28) = puVar14;\n  *(undefined4 *)(puVar16 + -0x1c) = **(undefined4 **)(puVar13 + 0x80de0);\n  if (param_2 == (int *)0x0) {\n    local_20[2] = 0;\n    local_20[1] = 0;\n    puVar7 = (undefined1 *)0x0;\n    piVar6 = local_20;\n    piVar8 = param_3;\n  }\n  else {\n    unaff_s2 = param_2;\n    if ((int)param_2 < 0) {\n      unaff_s2 = (int *)-(int)param_2;\n    }\n    if (*local_20 + 1 <= (int)unaff_s2) {\n      unaff_s2 = (int *)(*local_20 + 1);\n    }\n    (**(code **)(puVar13 + 0x809f4))(local_20[3],unaff_s2);\n    iVar1 = *(int *)(puVar16 + -0x28);\n    if (**(char **)(iVar1 + -0x7eb8) == '\0') {\n      **(undefined1 **)(iVar1 + -0x7eb8) = 1;\n      (**(code **)(iVar1 + -0x7a40))(*(undefined4 *)(iVar1 + -0x7dc4));\n      iVar1 = *(int *)(*(int *)(puVar16 + -0x28) + -0x7dc4);\n    }\n    else {\n      iVar1 = *(int *)(iVar1 + -0x7dc4);\n    }\n    piVar8 = (int *)0x20;\n    puVar7 = puVar16 + -0x20;\n    (**(code **)(*(int *)(iVar1 + 0x10) + 4))();\n    puVar14 = *(undefined **)(puVar16 + -0x28);\n    piVar5 = param_3;\n    if ((int)param_3 < 0) {\n      piVar5 = (int *)-(int)param_3;\n    }\n    uVar2 = (int)piVar5 * 2 + 1;\n    piVar6 = *(int **)(puVar16 + -0x20);\n    if (uVar2 == 0) {\n      trap(7);\n    }\n    local_20[2] = (uint)piVar6 % uVar2 - (int)piVar5;\n    if ((int)param_2 < 0) {\n      unaff_s2 = (int *)-(int)unaff_s2;\n    }\n    local_20[1] = (int)unaff_s2;\n    param_1 = param_3;\n  }\n  if (*(int *)(puVar16 + -0x1c) != **(int **)(puVar14 + -0x7b00)) {\n    pcVar18 = *(code **)(puVar14 + -0x7b70);\n    uVar19 = 0x1a8b8;\n    (*pcVar18)();\n    *(undefined4 *)(puVar16 + -0x3c) = uVar19;\n    *(undefined1 **)(puVar16 + -0x40) = auStack_38;\n    *(undefined4 *)(puVar16 + -0x44) = unaff_s7;\n    *(undefined4 *)(puVar16 + -0x48) = unaff_s6;\n    *(undefined4 *)(puVar16 + -0x4c) = unaff_s5;\n    *(undefined4 *)(puVar16 + -0x50) = unaff_s4;\n    *(int **)(puVar16 + -0x54) = param_1;\n    *(int **)(puVar16 + -0x58) = unaff_s2;\n    *(int **)(puVar16 + -0x5c) = param_2;\n    *(int **)(puVar16 + -0x60) = local_20;\n    *(code **)(puVar16 + -0x68) = pcVar18 + 0x88780;\n    *(int **)(puVar16 + -0x38) = piVar6;\n    *(undefined1 **)(puVar16 + -0x34) = puVar7;\n    *(int **)(puVar16 + -0x30) = piVar8;\n    if (puVar7 == (undefined1 *)0x0) {\n      *(undefined4 *)(puVar16 + -0x34) = **(undefined4 **)(pcVar18 + 0x80a54);\n    }\n    iVar9 = (*(code *)**(undefined4 **)(pcVar18 + 0x80c4c))(100);\n    iVar10 = *(int *)(puVar16 + -0x68);\n    iVar1 = 0;\n    do {\n      iVar12 = iVar1;\n      iVar4 = (**(code **)(iVar10 + -0x7f3c))(*(undefined4 *)(puVar16 + -0x34));\n      piVar6 = (int *)(**(code **)(*(int *)(puVar16 + -0x68) + -0x7f94))();\n      iVar10 = *(int *)(puVar16 + -0x68);\n      iVar1 = iVar12 + 1;\n    } while ((*(ushort *)(*piVar6 + iVar4 * 2) & 0x20) != 0);\n    puVar17 = *(undefined4 **)(iVar10 + -0x7aa0);\n    uVar2 = 0;\n    uVar3 = 100;\n    while ((iVar4 != -1 && (uVar11 = uVar2 + 1, (*(ushort *)(*piVar6 + iVar4 * 2) & 0x20) == 0))) {\n      *(char *)(iVar9 + uVar2) = (char)iVar4;\n      iVar4 = (**(code **)(iVar10 + -0x7f3c))(*(undefined4 *)(puVar16 + -0x34));\n      iVar10 = *(int *)(puVar16 + -0x68);\n      uVar2 = uVar11;\n      if (uVar3 <= uVar11) {\n        uVar11 = uVar3 * 3 >> 1;\n        iVar9 = (*(code *)*puVar17)(iVar9,uVar3,uVar11);\n        iVar10 = *(int *)(puVar16 + -0x68);\n        uVar3 = uVar11;\n      }\n    }\n    (**(code **)(iVar10 + -0x7d5c))(iVar4,*(undefined4 *)(puVar16 + -0x34));\n    iVar1 = *(int *)(puVar16 + -0x68);\n    uVar11 = uVar3;\n    if (uVar3 <= uVar2) {\n      uVar11 = uVar3 * 3 >> 1;\n      iVar9 = (*(code *)**(undefined4 **)(iVar1 + -0x7aa0))(iVar9,uVar3,uVar11);\n      iVar1 = *(int *)(puVar16 + -0x68);\n    }\n    *(undefined1 *)(iVar9 + uVar2) = 0;\n    iVar1 = (**(code **)(iVar1 + -0x7ae8))\n                      (*(undefined4 *)(puVar16 + -0x38),iVar9,*(undefined4 *)(puVar16 + -0x30));\n    (*(code *)**(undefined4 **)(*(int *)(puVar16 + -0x68) + -0x7e70))(iVar9,uVar11);\n    iVar9 = 0;\n    if (iVar1 != -1) {\n      iVar9 = iVar12 + uVar2;\n    }\n    return iVar9;\n  }\n  return **(int **)(puVar14 + -0x7b00);\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "int *piVar6;" primitive_type (pointer_declarator "*piVar6" * identifier) ;) (declaration "undefined1 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "int *piVar8;" primitive_type (pointer_declarator "*piVar8" * identifier) ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "int unaff_s1;" primitive_type identifier ;) (declaration "int *unaff_s2;" primitive_type (pointer_declarator "*unaff_s2" * identifier) ;) (declaration "undefined4 unaff_s4;" type_identifier identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "undefined4 unaff_s5;" type_identifier identifier ;) (declaration "undefined4 unaff_s6;" type_identifier identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "undefined4 unaff_s7;" type_identifier identifier ;) (declaration "undefined *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "undefined *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "undefined1 *puVar15;" type_identifier (pointer_declarator "*puVar15" * identifier) ;) (declaration "undefined1 *puVar16;" type_identifier (pointer_declarator "*puVar16" * identifier) ;) (declaration "undefined4 *puVar17;" type_identifier (pointer_declarator "*puVar17" * identifier) ;) (declaration "code *pcVar18;" type_identifier (pointer_declarator "*pcVar18" * identifier) ;) (declaration "undefined4 uVar19;" type_identifier identifier ;) (declaration "undefined1 auStack_38 [16];" type_identifier (array_declarator "auStack_38 [16]" identifier [ number_literal ]) ;) (declaration "int *local_20;" primitive_type (pointer_declarator "*local_20" * identifier) ;) (expression_statement "puVar16 = auStack_38;" (assignment_expression "puVar16 = auStack_38" identifier = identifier) ;) (expression_statement "puVar15 = auStack_38;" (assignment_expression "puVar15 = auStack_38" identifier = identifier) ;) (expression_statement "iVar1 = *(int *)PTR___stack_chk_guard_0009b540;" (assignment_expression "iVar1 = *(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 "iVar9 = param_2[1];" (assignment_expression "iVar9 = param_2[1]" identifier = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (if_statement "if (iVar9 < 1) {\n    if (-1 < iVar9) {\n      param_1[1] = 0;\n      param_1[2] = 0;\n      local_20 = param_1;\n      goto LAB_0001a69c;\n    }\n    (*(code *)PTR___gmp_sqrt_of_negative_0009b1cc)();\nLAB_0001a654:\n    param_3 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)();\n  }\n  else {\n    local_20 = (int *)0x0;\n    uVar2 = param_2[2];\n    unaff_s2 = (int *)param_2[3];\n    uVar3 = uVar2 & 1;\n    unaff_s1 = *param_1 * 2 - uVar3;\n    param_1[1] = *param_1;\n    param_1[2] = (int)(uVar2 + uVar3) / 2;\n    if (0x7f00 < (uint)(unaff_s1 * 4)) goto LAB_0001a654;\n    iVar10 = -(unaff_s1 * 4 + 7U & 0xfffffff8);\n    puVar15 = auStack_38 + iVar10;\n    param_3 = (int *)(&stack0xffffffd8 + iVar10);\n  }" if (parenthesized_expression "(iVar9 < 1)" ( (binary_expression "iVar9 < 1" identifier < number_literal) )) (compound_statement "{\n    if (-1 < iVar9) {\n      param_1[1] = 0;\n      param_1[2] = 0;\n      local_20 = param_1;\n      goto LAB_0001a69c;\n    }\n    (*(code *)PTR___gmp_sqrt_of_negative_0009b1cc)();\nLAB_0001a654:\n    param_3 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)();\n  }" { (if_statement "if (-1 < iVar9) {\n      param_1[1] = 0;\n      param_1[2] = 0;\n      local_20 = param_1;\n      goto LAB_0001a69c;\n    }" if (parenthesized_expression "(-1 < iVar9)" ( (binary_expression "-1 < iVar9" number_literal < identifier) )) (compound_statement "{\n      param_1[1] = 0;\n      param_1[2] = 0;\n      local_20 = param_1;\n      goto LAB_0001a69c;\n    }" { (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_1[2] = 0;" (assignment_expression "param_1[2] = 0" (subscript_expression "param_1[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_20 = param_1;" (assignment_expression "local_20 = param_1" identifier = identifier) ;) (goto_statement "goto LAB_0001a69c;" goto statement_identifier ;) })) (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 "()" ( ))) ;) (labeled_statement "LAB_0001a654:\n    param_3 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)();" statement_identifier : (expression_statement "param_3 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)();" (assignment_expression "param_3 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)()" identifier = (cast_expression "(int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)()" (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 "()" ( ))))) ;)) }) (else_clause "else {\n    local_20 = (int *)0x0;\n    uVar2 = param_2[2];\n    unaff_s2 = (int *)param_2[3];\n    uVar3 = uVar2 & 1;\n    unaff_s1 = *param_1 * 2 - uVar3;\n    param_1[1] = *param_1;\n    param_1[2] = (int)(uVar2 + uVar3) / 2;\n    if (0x7f00 < (uint)(unaff_s1 * 4)) goto LAB_0001a654;\n    iVar10 = -(unaff_s1 * 4 + 7U & 0xfffffff8);\n    puVar15 = auStack_38 + iVar10;\n    param_3 = (int *)(&stack0xffffffd8 + iVar10);\n  }" else (compound_statement "{\n    local_20 = (int *)0x0;\n    uVar2 = param_2[2];\n    unaff_s2 = (int *)param_2[3];\n    uVar3 = uVar2 & 1;\n    unaff_s1 = *param_1 * 2 - uVar3;\n    param_1[1] = *param_1;\n    param_1[2] = (int)(uVar2 + uVar3) / 2;\n    if (0x7f00 < (uint)(unaff_s1 * 4)) goto LAB_0001a654;\n    iVar10 = -(unaff_s1 * 4 + 7U & 0xfffffff8);\n    puVar15 = auStack_38 + iVar10;\n    param_3 = (int *)(&stack0xffffffd8 + iVar10);\n  }" { (expression_statement "local_20 = (int *)0x0;" (assignment_expression "local_20 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uVar2 = param_2[2];" (assignment_expression "uVar2 = param_2[2]" identifier = (subscript_expression "param_2[2]" identifier [ number_literal ])) ;) (expression_statement "unaff_s2 = (int *)param_2[3];" (assignment_expression "unaff_s2 = (int *)param_2[3]" identifier = (cast_expression "(int *)param_2[3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[3]" identifier [ number_literal ]))) ;) (expression_statement "uVar3 = uVar2 & 1;" (assignment_expression "uVar3 = uVar2 & 1" identifier = (binary_expression "uVar2 & 1" identifier & number_literal)) ;) (expression_statement "unaff_s1 = *param_1 * 2 - uVar3;" (assignment_expression "unaff_s1 = *param_1 * 2 - uVar3" identifier = (binary_expression "*param_1 * 2 - uVar3" (binary_expression "*param_1 * 2" (pointer_expression "*param_1" * identifier) * number_literal) - identifier)) ;) (expression_statement "param_1[1] = *param_1;" (assignment_expression "param_1[1] = *param_1" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "param_1[2] = (int)(uVar2 + uVar3) / 2;" (assignment_expression "param_1[2] = (int)(uVar2 + uVar3) / 2" (subscript_expression "param_1[2]" identifier [ number_literal ]) = (binary_expression "(int)(uVar2 + uVar3) / 2" (cast_expression "(int)(uVar2 + uVar3)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar2 + uVar3)" ( (binary_expression "uVar2 + uVar3" identifier + identifier) ))) / number_literal)) ;) (if_statement "if (0x7f00 < (uint)(unaff_s1 * 4)) goto LAB_0001a654;" if (parenthesized_expression "(0x7f00 < (uint)(unaff_s1 * 4))" ( (binary_expression "0x7f00 < (uint)(unaff_s1 * 4)" number_literal < (call_expression "(uint)(unaff_s1 * 4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(unaff_s1 * 4)" ( (binary_expression "unaff_s1 * 4" identifier * number_literal) )))) )) (goto_statement "goto LAB_0001a654;" goto statement_identifier ;)) (expression_statement "iVar10 = -(unaff_s1 * 4 + 7U & 0xfffffff8);" (assignment_expression "iVar10 = -(unaff_s1 * 4 + 7U & 0xfffffff8)" identifier = (unary_expression "-(unaff_s1 * 4 + 7U & 0xfffffff8)" - (parenthesized_expression "(unaff_s1 * 4 + 7U & 0xfffffff8)" ( (binary_expression "unaff_s1 * 4 + 7U & 0xfffffff8" (binary_expression "unaff_s1 * 4 + 7U" (binary_expression "unaff_s1 * 4" identifier * number_literal) + number_literal) & number_literal) )))) ;) (expression_statement "puVar15 = auStack_38 + iVar10;" (assignment_expression "puVar15 = auStack_38 + iVar10" identifier = (binary_expression "auStack_38 + iVar10" identifier + identifier)) ;) (expression_statement "param_3 = (int *)(&stack0xffffffd8 + iVar10);" (assignment_expression "param_3 = (int *)(&stack0xffffffd8 + iVar10)" identifier = (cast_expression "(int *)(&stack0xffffffd8 + iVar10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&stack0xffffffd8 + iVar10)" ( (binary_expression "&stack0xffffffd8 + iVar10" (pointer_expression "&stack0xffffffd8" & identifier) + identifier) )))) ;) }))) (if_statement "if (unaff_s1 < iVar9) {\n    if (unaff_s1 != 0) {\n      iVar10 = iVar9 - unaff_s1;\n      iVar9 = iVar10 * 4;\n      unaff_s2 = unaff_s2 + iVar10;\n      iVar4 = unaff_s1 + -1;\n      iVar10 = *unaff_s2;\n      piVar6 = param_3;\n      if (iVar4 != 0) {\n        piVar8 = unaff_s2 + 1;\n        do {\n          *piVar6 = iVar10;\n          unaff_s2 = piVar8 + 1;\n          iVar4 = iVar4 + -1;\n          iVar10 = *piVar8;\n          piVar6 = piVar6 + 1;\n          piVar8 = unaff_s2;\n        } while (iVar4 != 0);\n        piVar6 = param_3 + unaff_s1 + 0x3fffffff;\n      }\n      *piVar6 = iVar10;\n    }\n  }\n  else {\n    iVar10 = unaff_s1 - iVar9;\n    piVar6 = param_3;\n    if (iVar9 != unaff_s1) {\n      do {\n        iVar10 = iVar10 + -1;\n        *piVar6 = 0;\n        piVar6 = piVar6 + 1;\n      } while (iVar10 != 0);\n    }\n    iVar4 = iVar9 + -1;\n    piVar6 = param_3 + (unaff_s1 - iVar9);\n    iVar10 = *unaff_s2;\n    if (iVar4 != 0) {\n      piVar8 = piVar6;\n      piVar5 = unaff_s2 + 1;\n      do {\n        *piVar8 = iVar10;\n        unaff_s2 = piVar5 + 1;\n        iVar4 = iVar4 + -1;\n        iVar10 = *piVar5;\n        piVar8 = piVar8 + 1;\n        piVar5 = unaff_s2;\n      } while (iVar4 != 0);\n      iVar4 = iVar9 + 0x3fffffff;\n      iVar9 = iVar4 * 4;\n      piVar6 = piVar6 + iVar4;\n    }\n    *piVar6 = iVar10;\n  }" if (parenthesized_expression "(unaff_s1 < iVar9)" ( (binary_expression "unaff_s1 < iVar9" identifier < identifier) )) (compound_statement "{\n    if (unaff_s1 != 0) {\n      iVar10 = iVar9 - unaff_s1;\n      iVar9 = iVar10 * 4;\n      unaff_s2 = unaff_s2 + iVar10;\n      iVar4 = unaff_s1 + -1;\n      iVar10 = *unaff_s2;\n      piVar6 = param_3;\n      if (iVar4 != 0) {\n        piVar8 = unaff_s2 + 1;\n        do {\n          *piVar6 = iVar10;\n          unaff_s2 = piVar8 + 1;\n          iVar4 = iVar4 + -1;\n          iVar10 = *piVar8;\n          piVar6 = piVar6 + 1;\n          piVar8 = unaff_s2;\n        } while (iVar4 != 0);\n        piVar6 = param_3 + unaff_s1 + 0x3fffffff;\n      }\n      *piVar6 = iVar10;\n    }\n  }" { (if_statement "if (unaff_s1 != 0) {\n      iVar10 = iVar9 - unaff_s1;\n      iVar9 = iVar10 * 4;\n      unaff_s2 = unaff_s2 + iVar10;\n      iVar4 = unaff_s1 + -1;\n      iVar10 = *unaff_s2;\n      piVar6 = param_3;\n      if (iVar4 != 0) {\n        piVar8 = unaff_s2 + 1;\n        do {\n          *piVar6 = iVar10;\n          unaff_s2 = piVar8 + 1;\n          iVar4 = iVar4 + -1;\n          iVar10 = *piVar8;\n          piVar6 = piVar6 + 1;\n          piVar8 = unaff_s2;\n        } while (iVar4 != 0);\n        piVar6 = param_3 + unaff_s1 + 0x3fffffff;\n      }\n      *piVar6 = iVar10;\n    }" if (parenthesized_expression "(unaff_s1 != 0)" ( (binary_expression "unaff_s1 != 0" identifier != number_literal) )) (compound_statement "{\n      iVar10 = iVar9 - unaff_s1;\n      iVar9 = iVar10 * 4;\n      unaff_s2 = unaff_s2 + iVar10;\n      iVar4 = unaff_s1 + -1;\n      iVar10 = *unaff_s2;\n      piVar6 = param_3;\n      if (iVar4 != 0) {\n        piVar8 = unaff_s2 + 1;\n        do {\n          *piVar6 = iVar10;\n          unaff_s2 = piVar8 + 1;\n          iVar4 = iVar4 + -1;\n          iVar10 = *piVar8;\n          piVar6 = piVar6 + 1;\n          piVar8 = unaff_s2;\n        } while (iVar4 != 0);\n        piVar6 = param_3 + unaff_s1 + 0x3fffffff;\n      }\n      *piVar6 = iVar10;\n    }" { (expression_statement "iVar10 = iVar9 - unaff_s1;" (assignment_expression "iVar10 = iVar9 - unaff_s1" identifier = (binary_expression "iVar9 - unaff_s1" identifier - identifier)) ;) (expression_statement "iVar9 = iVar10 * 4;" (assignment_expression "iVar9 = iVar10 * 4" identifier = (binary_expression "iVar10 * 4" identifier * number_literal)) ;) (expression_statement "unaff_s2 = unaff_s2 + iVar10;" (assignment_expression "unaff_s2 = unaff_s2 + iVar10" identifier = (binary_expression "unaff_s2 + iVar10" identifier + identifier)) ;) (expression_statement "iVar4 = unaff_s1 + -1;" (assignment_expression "iVar4 = unaff_s1 + -1" identifier = (binary_expression "unaff_s1 + -1" identifier + number_literal)) ;) (expression_statement "iVar10 = *unaff_s2;" (assignment_expression "iVar10 = *unaff_s2" identifier = (pointer_expression "*unaff_s2" * identifier)) ;) (expression_statement "piVar6 = param_3;" (assignment_expression "piVar6 = param_3" identifier = identifier) ;) (if_statement "if (iVar4 != 0) {\n        piVar8 = unaff_s2 + 1;\n        do {\n          *piVar6 = iVar10;\n          unaff_s2 = piVar8 + 1;\n          iVar4 = iVar4 + -1;\n          iVar10 = *piVar8;\n          piVar6 = piVar6 + 1;\n          piVar8 = unaff_s2;\n        } while (iVar4 != 0);\n        piVar6 = param_3 + unaff_s1 + 0x3fffffff;\n      }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n        piVar8 = unaff_s2 + 1;\n        do {\n          *piVar6 = iVar10;\n          unaff_s2 = piVar8 + 1;\n          iVar4 = iVar4 + -1;\n          iVar10 = *piVar8;\n          piVar6 = piVar6 + 1;\n          piVar8 = unaff_s2;\n        } while (iVar4 != 0);\n        piVar6 = param_3 + unaff_s1 + 0x3fffffff;\n      }" { (expression_statement "piVar8 = unaff_s2 + 1;" (assignment_expression "piVar8 = unaff_s2 + 1" identifier = (binary_expression "unaff_s2 + 1" identifier + number_literal)) ;) (do_statement "do {\n          *piVar6 = iVar10;\n          unaff_s2 = piVar8 + 1;\n          iVar4 = iVar4 + -1;\n          iVar10 = *piVar8;\n          piVar6 = piVar6 + 1;\n          piVar8 = unaff_s2;\n        } while (iVar4 != 0);" do (compound_statement "{\n          *piVar6 = iVar10;\n          unaff_s2 = piVar8 + 1;\n          iVar4 = iVar4 + -1;\n          iVar10 = *piVar8;\n          piVar6 = piVar6 + 1;\n          piVar8 = unaff_s2;\n        }" { (expression_statement "*piVar6 = iVar10;" (assignment_expression "*piVar6 = iVar10" (pointer_expression "*piVar6" * identifier) = identifier) ;) (expression_statement "unaff_s2 = piVar8 + 1;" (assignment_expression "unaff_s2 = piVar8 + 1" identifier = (binary_expression "piVar8 + 1" identifier + number_literal)) ;) (expression_statement "iVar4 = iVar4 + -1;" (assignment_expression "iVar4 = iVar4 + -1" identifier = (binary_expression "iVar4 + -1" identifier + number_literal)) ;) (expression_statement "iVar10 = *piVar8;" (assignment_expression "iVar10 = *piVar8" identifier = (pointer_expression "*piVar8" * identifier)) ;) (expression_statement "piVar6 = piVar6 + 1;" (assignment_expression "piVar6 = piVar6 + 1" identifier = (binary_expression "piVar6 + 1" identifier + number_literal)) ;) (expression_statement "piVar8 = unaff_s2;" (assignment_expression "piVar8 = unaff_s2" identifier = identifier) ;) }) while (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) ;) (expression_statement "piVar6 = param_3 + unaff_s1 + 0x3fffffff;" (assignment_expression "piVar6 = param_3 + unaff_s1 + 0x3fffffff" identifier = (binary_expression "param_3 + unaff_s1 + 0x3fffffff" (binary_expression "param_3 + unaff_s1" identifier + identifier) + number_literal)) ;) })) (expression_statement "*piVar6 = iVar10;" (assignment_expression "*piVar6 = iVar10" (pointer_expression "*piVar6" * identifier) = identifier) ;) })) }) (else_clause "else {\n    iVar10 = unaff_s1 - iVar9;\n    piVar6 = param_3;\n    if (iVar9 != unaff_s1) {\n      do {\n        iVar10 = iVar10 + -1;\n        *piVar6 = 0;\n        piVar6 = piVar6 + 1;\n      } while (iVar10 != 0);\n    }\n    iVar4 = iVar9 + -1;\n    piVar6 = param_3 + (unaff_s1 - iVar9);\n    iVar10 = *unaff_s2;\n    if (iVar4 != 0) {\n      piVar8 = piVar6;\n      piVar5 = unaff_s2 + 1;\n      do {\n        *piVar8 = iVar10;\n        unaff_s2 = piVar5 + 1;\n        iVar4 = iVar4 + -1;\n        iVar10 = *piVar5;\n        piVar8 = piVar8 + 1;\n        piVar5 = unaff_s2;\n      } while (iVar4 != 0);\n      iVar4 = iVar9 + 0x3fffffff;\n      iVar9 = iVar4 * 4;\n      piVar6 = piVar6 + iVar4;\n    }\n    *piVar6 = iVar10;\n  }" else (compound_statement "{\n    iVar10 = unaff_s1 - iVar9;\n    piVar6 = param_3;\n    if (iVar9 != unaff_s1) {\n      do {\n        iVar10 = iVar10 + -1;\n        *piVar6 = 0;\n        piVar6 = piVar6 + 1;\n      } while (iVar10 != 0);\n    }\n    iVar4 = iVar9 + -1;\n    piVar6 = param_3 + (unaff_s1 - iVar9);\n    iVar10 = *unaff_s2;\n    if (iVar4 != 0) {\n      piVar8 = piVar6;\n      piVar5 = unaff_s2 + 1;\n      do {\n        *piVar8 = iVar10;\n        unaff_s2 = piVar5 + 1;\n        iVar4 = iVar4 + -1;\n        iVar10 = *piVar5;\n        piVar8 = piVar8 + 1;\n        piVar5 = unaff_s2;\n      } while (iVar4 != 0);\n      iVar4 = iVar9 + 0x3fffffff;\n      iVar9 = iVar4 * 4;\n      piVar6 = piVar6 + iVar4;\n    }\n    *piVar6 = iVar10;\n  }" { (expression_statement "iVar10 = unaff_s1 - iVar9;" (assignment_expression "iVar10 = unaff_s1 - iVar9" identifier = (binary_expression "unaff_s1 - iVar9" identifier - identifier)) ;) (expression_statement "piVar6 = param_3;" (assignment_expression "piVar6 = param_3" identifier = identifier) ;) (if_statement "if (iVar9 != unaff_s1) {\n      do {\n        iVar10 = iVar10 + -1;\n        *piVar6 = 0;\n        piVar6 = piVar6 + 1;\n      } while (iVar10 != 0);\n    }" if (parenthesized_expression "(iVar9 != unaff_s1)" ( (binary_expression "iVar9 != unaff_s1" identifier != identifier) )) (compound_statement "{\n      do {\n        iVar10 = iVar10 + -1;\n        *piVar6 = 0;\n        piVar6 = piVar6 + 1;\n      } while (iVar10 != 0);\n    }" { (do_statement "do {\n        iVar10 = iVar10 + -1;\n        *piVar6 = 0;\n        piVar6 = piVar6 + 1;\n      } while (iVar10 != 0);" do (compound_statement "{\n        iVar10 = iVar10 + -1;\n        *piVar6 = 0;\n        piVar6 = piVar6 + 1;\n      }" { (expression_statement "iVar10 = iVar10 + -1;" (assignment_expression "iVar10 = iVar10 + -1" identifier = (binary_expression "iVar10 + -1" identifier + number_literal)) ;) (expression_statement "*piVar6 = 0;" (assignment_expression "*piVar6 = 0" (pointer_expression "*piVar6" * identifier) = number_literal) ;) (expression_statement "piVar6 = piVar6 + 1;" (assignment_expression "piVar6 = piVar6 + 1" identifier = (binary_expression "piVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) ;) })) (expression_statement "iVar4 = iVar9 + -1;" (assignment_expression "iVar4 = iVar9 + -1" identifier = (binary_expression "iVar9 + -1" identifier + number_literal)) ;) (expression_statement "piVar6 = param_3 + (unaff_s1 - iVar9);" (assignment_expression "piVar6 = param_3 + (unaff_s1 - iVar9)" identifier = (binary_expression "param_3 + (unaff_s1 - iVar9)" identifier + (parenthesized_expression "(unaff_s1 - iVar9)" ( (binary_expression "unaff_s1 - iVar9" identifier - identifier) )))) ;) (expression_statement "iVar10 = *unaff_s2;" (assignment_expression "iVar10 = *unaff_s2" identifier = (pointer_expression "*unaff_s2" * identifier)) ;) (if_statement "if (iVar4 != 0) {\n      piVar8 = piVar6;\n      piVar5 = unaff_s2 + 1;\n      do {\n        *piVar8 = iVar10;\n        unaff_s2 = piVar5 + 1;\n        iVar4 = iVar4 + -1;\n        iVar10 = *piVar5;\n        piVar8 = piVar8 + 1;\n        piVar5 = unaff_s2;\n      } while (iVar4 != 0);\n      iVar4 = iVar9 + 0x3fffffff;\n      iVar9 = iVar4 * 4;\n      piVar6 = piVar6 + iVar4;\n    }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n      piVar8 = piVar6;\n      piVar5 = unaff_s2 + 1;\n      do {\n        *piVar8 = iVar10;\n        unaff_s2 = piVar5 + 1;\n        iVar4 = iVar4 + -1;\n        iVar10 = *piVar5;\n        piVar8 = piVar8 + 1;\n        piVar5 = unaff_s2;\n      } while (iVar4 != 0);\n      iVar4 = iVar9 + 0x3fffffff;\n      iVar9 = iVar4 * 4;\n      piVar6 = piVar6 + iVar4;\n    }" { (expression_statement "piVar8 = piVar6;" (assignment_expression "piVar8 = piVar6" identifier = identifier) ;) (expression_statement "piVar5 = unaff_s2 + 1;" (assignment_expression "piVar5 = unaff_s2 + 1" identifier = (binary_expression "unaff_s2 + 1" identifier + number_literal)) ;) (do_statement "do {\n        *piVar8 = iVar10;\n        unaff_s2 = piVar5 + 1;\n        iVar4 = iVar4 + -1;\n        iVar10 = *piVar5;\n        piVar8 = piVar8 + 1;\n        piVar5 = unaff_s2;\n      } while (iVar4 != 0);" do (compound_statement "{\n        *piVar8 = iVar10;\n        unaff_s2 = piVar5 + 1;\n        iVar4 = iVar4 + -1;\n        iVar10 = *piVar5;\n        piVar8 = piVar8 + 1;\n        piVar5 = unaff_s2;\n      }" { (expression_statement "*piVar8 = iVar10;" (assignment_expression "*piVar8 = iVar10" (pointer_expression "*piVar8" * identifier) = identifier) ;) (expression_statement "unaff_s2 = piVar5 + 1;" (assignment_expression "unaff_s2 = piVar5 + 1" identifier = (binary_expression "piVar5 + 1" identifier + number_literal)) ;) (expression_statement "iVar4 = iVar4 + -1;" (assignment_expression "iVar4 = iVar4 + -1" identifier = (binary_expression "iVar4 + -1" identifier + number_literal)) ;) (expression_statement "iVar10 = *piVar5;" (assignment_expression "iVar10 = *piVar5" identifier = (pointer_expression "*piVar5" * identifier)) ;) (expression_statement "piVar8 = piVar8 + 1;" (assignment_expression "piVar8 = piVar8 + 1" identifier = (binary_expression "piVar8 + 1" identifier + number_literal)) ;) (expression_statement "piVar5 = unaff_s2;" (assignment_expression "piVar5 = unaff_s2" identifier = identifier) ;) }) while (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) ;) (expression_statement "iVar4 = iVar9 + 0x3fffffff;" (assignment_expression "iVar4 = iVar9 + 0x3fffffff" identifier = (binary_expression "iVar9 + 0x3fffffff" identifier + number_literal)) ;) (expression_statement "iVar9 = iVar4 * 4;" (assignment_expression "iVar9 = iVar4 * 4" identifier = (binary_expression "iVar4 * 4" identifier * number_literal)) ;) (expression_statement "piVar6 = piVar6 + iVar4;" (assignment_expression "piVar6 = piVar6 + iVar4" identifier = (binary_expression "piVar6 + iVar4" identifier + identifier)) ;) })) (expression_statement "*piVar6 = iVar10;" (assignment_expression "*piVar6 = iVar10" (pointer_expression "*piVar6" * 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 "(*(code *)PTR___gmpn_sqrtrem_0009b0e0)(param_1[3],0,param_3,unaff_s1);" (call_expression "(*(code *)PTR___gmpn_sqrtrem_0009b0e0)(param_1[3],0,param_3,unaff_s1)" (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 "(param_1[3],0,param_3,unaff_s1)" ( (subscript_expression "param_1[3]" identifier [ number_literal ]) , number_literal , identifier , identifier ))) ;) (expression_statement "puVar16 = puVar15;" (assignment_expression "puVar16 = puVar15" identifier = identifier) ;) (if_statement "if (local_20 != (int *)0x0) {\n    (*(code *)PTR___gmp_tmp_reentrant_free_0009b614)();\n  }" if (parenthesized_expression "(local_20 != (int *)0x0)" ( (binary_expression "local_20 != (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 "()" ( ))) ;) })) (labeled_statement "LAB_0001a69c:\n  if (iVar1 == *(int *)PTR___stack_chk_guard_0009b540) {\n    return *(int *)PTR___stack_chk_guard_0009b540;\n  }" statement_identifier : (if_statement "if (iVar1 == *(int *)PTR___stack_chk_guard_0009b540) {\n    return *(int *)PTR___stack_chk_guard_0009b540;\n  }" if (parenthesized_expression "(iVar1 == *(int *)PTR___stack_chk_guard_0009b540)" ( (binary_expression "iVar1 == *(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 *(int *)PTR___stack_chk_guard_0009b540;\n  }" { (return_statement "return *(int *)PTR___stack_chk_guard_0009b540;" return (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 "pcVar18 = __gmpf_random2;" (assignment_expression "pcVar18 = __gmpf_random2" identifier = identifier) ;) (expression_statement "puVar13 = PTR___stack_chk_fail_0009b4d0;" (assignment_expression "puVar13 = 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 "puVar14 = puVar13 + 0x888e0;" (assignment_expression "puVar14 = puVar13 + 0x888e0" identifier = (binary_expression "puVar13 + 0x888e0" identifier + number_literal)) ;) (expression_statement "*(code **)(puVar16 + -4) = pcVar18;" (assignment_expression "*(code **)(puVar16 + -4) = pcVar18" (pointer_expression "*(code **)(puVar16 + -4)" * (cast_expression "(code **)(puVar16 + -4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -4)" ( (binary_expression "puVar16 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar16 + -8) = param_1;" (assignment_expression "*(int **)(puVar16 + -8) = param_1" (pointer_expression "*(int **)(puVar16 + -8)" * (cast_expression "(int **)(puVar16 + -8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar16 + -0xc) = unaff_s2;" (assignment_expression "*(int **)(puVar16 + -0xc) = unaff_s2" (pointer_expression "*(int **)(puVar16 + -0xc)" * (cast_expression "(int **)(puVar16 + -0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar16 + -0x10) = unaff_s1;" (assignment_expression "*(int *)(puVar16 + -0x10) = unaff_s1" (pointer_expression "*(int *)(puVar16 + -0x10)" * (cast_expression "(int *)(puVar16 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar16 + -0x14) = iVar9;" (assignment_expression "*(int *)(puVar16 + -0x14) = iVar9" (pointer_expression "*(int *)(puVar16 + -0x14)" * (cast_expression "(int *)(puVar16 + -0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)(puVar16 + -0x28) = puVar14;" (assignment_expression "*(undefined **)(puVar16 + -0x28) = puVar14" (pointer_expression "*(undefined **)(puVar16 + -0x28)" * (cast_expression "(undefined **)(puVar16 + -0x28)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x28)" ( (binary_expression "puVar16 + -0x28" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x1c) = **(undefined4 **)(puVar13 + 0x80de0);" (assignment_expression "*(undefined4 *)(puVar16 + -0x1c) = **(undefined4 **)(puVar13 + 0x80de0)" (pointer_expression "*(undefined4 *)(puVar16 + -0x1c)" * (cast_expression "(undefined4 *)(puVar16 + -0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x1c)" ( (binary_expression "puVar16 + -0x1c" identifier + number_literal) )))) = (pointer_expression "**(undefined4 **)(puVar13 + 0x80de0)" * (pointer_expression "*(undefined4 **)(puVar13 + 0x80de0)" * (cast_expression "(undefined4 **)(puVar13 + 0x80de0)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar13 + 0x80de0)" ( (binary_expression "puVar13 + 0x80de0" identifier + number_literal) )))))) ;) (if_statement "if (param_2 == (int *)0x0) {\n    local_20[2] = 0;\n    local_20[1] = 0;\n    puVar7 = (undefined1 *)0x0;\n    piVar6 = local_20;\n    piVar8 = param_3;\n  }\n  else {\n    unaff_s2 = param_2;\n    if ((int)param_2 < 0) {\n      unaff_s2 = (int *)-(int)param_2;\n    }\n    if (*local_20 + 1 <= (int)unaff_s2) {\n      unaff_s2 = (int *)(*local_20 + 1);\n    }\n    (**(code **)(puVar13 + 0x809f4))(local_20[3],unaff_s2);\n    iVar1 = *(int *)(puVar16 + -0x28);\n    if (**(char **)(iVar1 + -0x7eb8) == '\0') {\n      **(undefined1 **)(iVar1 + -0x7eb8) = 1;\n      (**(code **)(iVar1 + -0x7a40))(*(undefined4 *)(iVar1 + -0x7dc4));\n      iVar1 = *(int *)(*(int *)(puVar16 + -0x28) + -0x7dc4);\n    }\n    else {\n      iVar1 = *(int *)(iVar1 + -0x7dc4);\n    }\n    piVar8 = (int *)0x20;\n    puVar7 = puVar16 + -0x20;\n    (**(code **)(*(int *)(iVar1 + 0x10) + 4))();\n    puVar14 = *(undefined **)(puVar16 + -0x28);\n    piVar5 = param_3;\n    if ((int)param_3 < 0) {\n      piVar5 = (int *)-(int)param_3;\n    }\n    uVar2 = (int)piVar5 * 2 + 1;\n    piVar6 = *(int **)(puVar16 + -0x20);\n    if (uVar2 == 0) {\n      trap(7);\n    }\n    local_20[2] = (uint)piVar6 % uVar2 - (int)piVar5;\n    if ((int)param_2 < 0) {\n      unaff_s2 = (int *)-(int)unaff_s2;\n    }\n    local_20[1] = (int)unaff_s2;\n    param_1 = param_3;\n  }" if (parenthesized_expression "(param_2 == (int *)0x0)" ( (binary_expression "param_2 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    local_20[2] = 0;\n    local_20[1] = 0;\n    puVar7 = (undefined1 *)0x0;\n    piVar6 = local_20;\n    piVar8 = param_3;\n  }" { (expression_statement "local_20[2] = 0;" (assignment_expression "local_20[2] = 0" (subscript_expression "local_20[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_20[1] = 0;" (assignment_expression "local_20[1] = 0" (subscript_expression "local_20[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar7 = (undefined1 *)0x0;" (assignment_expression "puVar7 = (undefined1 *)0x0" identifier = (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "piVar6 = local_20;" (assignment_expression "piVar6 = local_20" identifier = identifier) ;) (expression_statement "piVar8 = param_3;" (assignment_expression "piVar8 = param_3" identifier = identifier) ;) }) (else_clause "else {\n    unaff_s2 = param_2;\n    if ((int)param_2 < 0) {\n      unaff_s2 = (int *)-(int)param_2;\n    }\n    if (*local_20 + 1 <= (int)unaff_s2) {\n      unaff_s2 = (int *)(*local_20 + 1);\n    }\n    (**(code **)(puVar13 + 0x809f4))(local_20[3],unaff_s2);\n    iVar1 = *(int *)(puVar16 + -0x28);\n    if (**(char **)(iVar1 + -0x7eb8) == '\0') {\n      **(undefined1 **)(iVar1 + -0x7eb8) = 1;\n      (**(code **)(iVar1 + -0x7a40))(*(undefined4 *)(iVar1 + -0x7dc4));\n      iVar1 = *(int *)(*(int *)(puVar16 + -0x28) + -0x7dc4);\n    }\n    else {\n      iVar1 = *(int *)(iVar1 + -0x7dc4);\n    }\n    piVar8 = (int *)0x20;\n    puVar7 = puVar16 + -0x20;\n    (**(code **)(*(int *)(iVar1 + 0x10) + 4))();\n    puVar14 = *(undefined **)(puVar16 + -0x28);\n    piVar5 = param_3;\n    if ((int)param_3 < 0) {\n      piVar5 = (int *)-(int)param_3;\n    }\n    uVar2 = (int)piVar5 * 2 + 1;\n    piVar6 = *(int **)(puVar16 + -0x20);\n    if (uVar2 == 0) {\n      trap(7);\n    }\n    local_20[2] = (uint)piVar6 % uVar2 - (int)piVar5;\n    if ((int)param_2 < 0) {\n      unaff_s2 = (int *)-(int)unaff_s2;\n    }\n    local_20[1] = (int)unaff_s2;\n    param_1 = param_3;\n  }" else (compound_statement "{\n    unaff_s2 = param_2;\n    if ((int)param_2 < 0) {\n      unaff_s2 = (int *)-(int)param_2;\n    }\n    if (*local_20 + 1 <= (int)unaff_s2) {\n      unaff_s2 = (int *)(*local_20 + 1);\n    }\n    (**(code **)(puVar13 + 0x809f4))(local_20[3],unaff_s2);\n    iVar1 = *(int *)(puVar16 + -0x28);\n    if (**(char **)(iVar1 + -0x7eb8) == '\0') {\n      **(undefined1 **)(iVar1 + -0x7eb8) = 1;\n      (**(code **)(iVar1 + -0x7a40))(*(undefined4 *)(iVar1 + -0x7dc4));\n      iVar1 = *(int *)(*(int *)(puVar16 + -0x28) + -0x7dc4);\n    }\n    else {\n      iVar1 = *(int *)(iVar1 + -0x7dc4);\n    }\n    piVar8 = (int *)0x20;\n    puVar7 = puVar16 + -0x20;\n    (**(code **)(*(int *)(iVar1 + 0x10) + 4))();\n    puVar14 = *(undefined **)(puVar16 + -0x28);\n    piVar5 = param_3;\n    if ((int)param_3 < 0) {\n      piVar5 = (int *)-(int)param_3;\n    }\n    uVar2 = (int)piVar5 * 2 + 1;\n    piVar6 = *(int **)(puVar16 + -0x20);\n    if (uVar2 == 0) {\n      trap(7);\n    }\n    local_20[2] = (uint)piVar6 % uVar2 - (int)piVar5;\n    if ((int)param_2 < 0) {\n      unaff_s2 = (int *)-(int)unaff_s2;\n    }\n    local_20[1] = (int)unaff_s2;\n    param_1 = param_3;\n  }" { (expression_statement "unaff_s2 = param_2;" (assignment_expression "unaff_s2 = param_2" identifier = identifier) ;) (if_statement "if ((int)param_2 < 0) {\n      unaff_s2 = (int *)-(int)param_2;\n    }" if (parenthesized_expression "((int)param_2 < 0)" ( (binary_expression "(int)param_2 < 0" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      unaff_s2 = (int *)-(int)param_2;\n    }" { (expression_statement "unaff_s2 = (int *)-(int)param_2;" (assignment_expression "unaff_s2 = (int *)-(int)param_2" identifier = (cast_expression "(int *)-(int)param_2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (unary_expression "-(int)param_2" - (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) })) (if_statement "if (*local_20 + 1 <= (int)unaff_s2) {\n      unaff_s2 = (int *)(*local_20 + 1);\n    }" if (parenthesized_expression "(*local_20 + 1 <= (int)unaff_s2)" ( (binary_expression "*local_20 + 1 <= (int)unaff_s2" (binary_expression "*local_20 + 1" (pointer_expression "*local_20" * identifier) + number_literal) <= (cast_expression "(int)unaff_s2" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      unaff_s2 = (int *)(*local_20 + 1);\n    }" { (expression_statement "unaff_s2 = (int *)(*local_20 + 1);" (assignment_expression "unaff_s2 = (int *)(*local_20 + 1)" identifier = (cast_expression "(int *)(*local_20 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*local_20 + 1)" ( (binary_expression "*local_20 + 1" (pointer_expression "*local_20" * identifier) + number_literal) )))) ;) })) (expression_statement "(**(code **)(puVar13 + 0x809f4))(local_20[3],unaff_s2);" (call_expression "(**(code **)(puVar13 + 0x809f4))(local_20[3],unaff_s2)" (parenthesized_expression "(**(code **)(puVar13 + 0x809f4))" ( (pointer_expression "**(code **)(puVar13 + 0x809f4)" * (pointer_expression "*(code **)(puVar13 + 0x809f4)" * (cast_expression "(code **)(puVar13 + 0x809f4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar13 + 0x809f4)" ( (binary_expression "puVar13 + 0x809f4" identifier + number_literal) ))))) )) (argument_list "(local_20[3],unaff_s2)" ( (subscript_expression "local_20[3]" identifier [ number_literal ]) , identifier ))) ;) (expression_statement "iVar1 = *(int *)(puVar16 + -0x28);" (assignment_expression "iVar1 = *(int *)(puVar16 + -0x28)" identifier = (pointer_expression "*(int *)(puVar16 + -0x28)" * (cast_expression "(int *)(puVar16 + -0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x28)" ( (binary_expression "puVar16 + -0x28" identifier + number_literal) ))))) ;) (if_statement "if (**(char **)(iVar1 + -0x7eb8) == '\0') {\n      **(undefined1 **)(iVar1 + -0x7eb8) = 1;\n      (**(code **)(iVar1 + -0x7a40))(*(undefined4 *)(iVar1 + -0x7dc4));\n      iVar1 = *(int *)(*(int *)(puVar16 + -0x28) + -0x7dc4);\n    }\n    else {\n      iVar1 = *(int *)(iVar1 + -0x7dc4);\n    }" if (parenthesized_expression "(**(char **)(iVar1 + -0x7eb8) == '\0')" ( (binary_expression "**(char **)(iVar1 + -0x7eb8) == '\0'" (pointer_expression "**(char **)(iVar1 + -0x7eb8)" * (pointer_expression "*(char **)(iVar1 + -0x7eb8)" * (cast_expression "(char **)(iVar1 + -0x7eb8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + -0x7eb8)" ( (binary_expression "iVar1 + -0x7eb8" identifier + number_literal) ))))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      **(undefined1 **)(iVar1 + -0x7eb8) = 1;\n      (**(code **)(iVar1 + -0x7a40))(*(undefined4 *)(iVar1 + -0x7dc4));\n      iVar1 = *(int *)(*(int *)(puVar16 + -0x28) + -0x7dc4);\n    }" { (expression_statement "**(undefined1 **)(iVar1 + -0x7eb8) = 1;" (assignment_expression "**(undefined1 **)(iVar1 + -0x7eb8) = 1" (pointer_expression "**(undefined1 **)(iVar1 + -0x7eb8)" * (pointer_expression "*(undefined1 **)(iVar1 + -0x7eb8)" * (cast_expression "(undefined1 **)(iVar1 + -0x7eb8)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + -0x7eb8)" ( (binary_expression "iVar1 + -0x7eb8" identifier + number_literal) ))))) = number_literal) ;) (expression_statement "(**(code **)(iVar1 + -0x7a40))(*(undefined4 *)(iVar1 + -0x7dc4));" (call_expression "(**(code **)(iVar1 + -0x7a40))(*(undefined4 *)(iVar1 + -0x7dc4))" (parenthesized_expression "(**(code **)(iVar1 + -0x7a40))" ( (pointer_expression "**(code **)(iVar1 + -0x7a40)" * (pointer_expression "*(code **)(iVar1 + -0x7a40)" * (cast_expression "(code **)(iVar1 + -0x7a40)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + -0x7a40)" ( (binary_expression "iVar1 + -0x7a40" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(iVar1 + -0x7dc4))" ( (pointer_expression "*(undefined4 *)(iVar1 + -0x7dc4)" * (cast_expression "(undefined4 *)(iVar1 + -0x7dc4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + -0x7dc4)" ( (binary_expression "iVar1 + -0x7dc4" identifier + number_literal) )))) ))) ;) (expression_statement "iVar1 = *(int *)(*(int *)(puVar16 + -0x28) + -0x7dc4);" (assignment_expression "iVar1 = *(int *)(*(int *)(puVar16 + -0x28) + -0x7dc4)" identifier = (pointer_expression "*(int *)(*(int *)(puVar16 + -0x28) + -0x7dc4)" * (cast_expression "(int *)(*(int *)(puVar16 + -0x28) + -0x7dc4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar16 + -0x28) + -0x7dc4)" ( (binary_expression "*(int *)(puVar16 + -0x28) + -0x7dc4" (pointer_expression "*(int *)(puVar16 + -0x28)" * (cast_expression "(int *)(puVar16 + -0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x28)" ( (binary_expression "puVar16 + -0x28" identifier + number_literal) )))) + number_literal) ))))) ;) }) (else_clause "else {\n      iVar1 = *(int *)(iVar1 + -0x7dc4);\n    }" else (compound_statement "{\n      iVar1 = *(int *)(iVar1 + -0x7dc4);\n    }" { (expression_statement "iVar1 = *(int *)(iVar1 + -0x7dc4);" (assignment_expression "iVar1 = *(int *)(iVar1 + -0x7dc4)" identifier = (pointer_expression "*(int *)(iVar1 + -0x7dc4)" * (cast_expression "(int *)(iVar1 + -0x7dc4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + -0x7dc4)" ( (binary_expression "iVar1 + -0x7dc4" identifier + number_literal) ))))) ;) }))) (expression_statement "piVar8 = (int *)0x20;" (assignment_expression "piVar8 = (int *)0x20" identifier = (cast_expression "(int *)0x20" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar7 = puVar16 + -0x20;" (assignment_expression "puVar7 = puVar16 + -0x20" identifier = (binary_expression "puVar16 + -0x20" identifier + number_literal)) ;) (expression_statement "(**(code **)(*(int *)(iVar1 + 0x10) + 4))();" (call_expression "(**(code **)(*(int *)(iVar1 + 0x10) + 4))()" (parenthesized_expression "(**(code **)(*(int *)(iVar1 + 0x10) + 4))" ( (pointer_expression "**(code **)(*(int *)(iVar1 + 0x10) + 4)" * (pointer_expression "*(code **)(*(int *)(iVar1 + 0x10) + 4)" * (cast_expression "(code **)(*(int *)(iVar1 + 0x10) + 4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(iVar1 + 0x10) + 4)" ( (binary_expression "*(int *)(iVar1 + 0x10) + 4" (pointer_expression "*(int *)(iVar1 + 0x10)" * (cast_expression "(int *)(iVar1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x10)" ( (binary_expression "iVar1 + 0x10" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "puVar14 = *(undefined **)(puVar16 + -0x28);" (assignment_expression "puVar14 = *(undefined **)(puVar16 + -0x28)" identifier = (pointer_expression "*(undefined **)(puVar16 + -0x28)" * (cast_expression "(undefined **)(puVar16 + -0x28)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x28)" ( (binary_expression "puVar16 + -0x28" identifier + number_literal) ))))) ;) (expression_statement "piVar5 = param_3;" (assignment_expression "piVar5 = param_3" identifier = identifier) ;) (if_statement "if ((int)param_3 < 0) {\n      piVar5 = (int *)-(int)param_3;\n    }" if (parenthesized_expression "((int)param_3 < 0)" ( (binary_expression "(int)param_3 < 0" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      piVar5 = (int *)-(int)param_3;\n    }" { (expression_statement "piVar5 = (int *)-(int)param_3;" (assignment_expression "piVar5 = (int *)-(int)param_3" identifier = (cast_expression "(int *)-(int)param_3" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (unary_expression "-(int)param_3" - (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) })) (expression_statement "uVar2 = (int)piVar5 * 2 + 1;" (assignment_expression "uVar2 = (int)piVar5 * 2 + 1" identifier = (binary_expression "(int)piVar5 * 2 + 1" (binary_expression "(int)piVar5 * 2" (cast_expression "(int)piVar5" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) + number_literal)) ;) (expression_statement "piVar6 = *(int **)(puVar16 + -0x20);" (assignment_expression "piVar6 = *(int **)(puVar16 + -0x20)" identifier = (pointer_expression "*(int **)(puVar16 + -0x20)" * (cast_expression "(int **)(puVar16 + -0x20)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x20)" ( (binary_expression "puVar16 + -0x20" identifier + number_literal) ))))) ;) (if_statement "if (uVar2 == 0) {\n      trap(7);\n    }" if (parenthesized_expression "(uVar2 == 0)" ( (binary_expression "uVar2 == 0" identifier == number_literal) )) (compound_statement "{\n      trap(7);\n    }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "local_20[2] = (uint)piVar6 % uVar2 - (int)piVar5;" (assignment_expression "local_20[2] = (uint)piVar6 % uVar2 - (int)piVar5" (subscript_expression "local_20[2]" identifier [ number_literal ]) = (binary_expression "(uint)piVar6 % uVar2 - (int)piVar5" (binary_expression "(uint)piVar6 % uVar2" (cast_expression "(uint)piVar6" ( (type_descriptor "uint" type_identifier) ) identifier) % identifier) - (cast_expression "(int)piVar5" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if ((int)param_2 < 0) {\n      unaff_s2 = (int *)-(int)unaff_s2;\n    }" if (parenthesized_expression "((int)param_2 < 0)" ( (binary_expression "(int)param_2 < 0" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      unaff_s2 = (int *)-(int)unaff_s2;\n    }" { (expression_statement "unaff_s2 = (int *)-(int)unaff_s2;" (assignment_expression "unaff_s2 = (int *)-(int)unaff_s2" identifier = (cast_expression "(int *)-(int)unaff_s2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (unary_expression "-(int)unaff_s2" - (cast_expression "(int)unaff_s2" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) })) (expression_statement "local_20[1] = (int)unaff_s2;" (assignment_expression "local_20[1] = (int)unaff_s2" (subscript_expression "local_20[1]" identifier [ number_literal ]) = (cast_expression "(int)unaff_s2" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "param_1 = param_3;" (assignment_expression "param_1 = param_3" identifier = identifier) ;) }))) (if_statement "if (*(int *)(puVar16 + -0x1c) != **(int **)(puVar14 + -0x7b00)) {\n    pcVar18 = *(code **)(puVar14 + -0x7b70);\n    uVar19 = 0x1a8b8;\n    (*pcVar18)();\n    *(undefined4 *)(puVar16 + -0x3c) = uVar19;\n    *(undefined1 **)(puVar16 + -0x40) = auStack_38;\n    *(undefined4 *)(puVar16 + -0x44) = unaff_s7;\n    *(undefined4 *)(puVar16 + -0x48) = unaff_s6;\n    *(undefined4 *)(puVar16 + -0x4c) = unaff_s5;\n    *(undefined4 *)(puVar16 + -0x50) = unaff_s4;\n    *(int **)(puVar16 + -0x54) = param_1;\n    *(int **)(puVar16 + -0x58) = unaff_s2;\n    *(int **)(puVar16 + -0x5c) = param_2;\n    *(int **)(puVar16 + -0x60) = local_20;\n    *(code **)(puVar16 + -0x68) = pcVar18 + 0x88780;\n    *(int **)(puVar16 + -0x38) = piVar6;\n    *(undefined1 **)(puVar16 + -0x34) = puVar7;\n    *(int **)(puVar16 + -0x30) = piVar8;\n    if (puVar7 == (undefined1 *)0x0) {\n      *(undefined4 *)(puVar16 + -0x34) = **(undefined4 **)(pcVar18 + 0x80a54);\n    }\n    iVar9 = (*(code *)**(undefined4 **)(pcVar18 + 0x80c4c))(100);\n    iVar10 = *(int *)(puVar16 + -0x68);\n    iVar1 = 0;\n    do {\n      iVar12 = iVar1;\n      iVar4 = (**(code **)(iVar10 + -0x7f3c))(*(undefined4 *)(puVar16 + -0x34));\n      piVar6 = (int *)(**(code **)(*(int *)(puVar16 + -0x68) + -0x7f94))();\n      iVar10 = *(int *)(puVar16 + -0x68);\n      iVar1 = iVar12 + 1;\n    } while ((*(ushort *)(*piVar6 + iVar4 * 2) & 0x20) != 0);\n    puVar17 = *(undefined4 **)(iVar10 + -0x7aa0);\n    uVar2 = 0;\n    uVar3 = 100;\n    while ((iVar4 != -1 && (uVar11 = uVar2 + 1, (*(ushort *)(*piVar6 + iVar4 * 2) & 0x20) == 0))) {\n      *(char *)(iVar9 + uVar2) = (char)iVar4;\n      iVar4 = (**(code **)(iVar10 + -0x7f3c))(*(undefined4 *)(puVar16 + -0x34));\n      iVar10 = *(int *)(puVar16 + -0x68);\n      uVar2 = uVar11;\n      if (uVar3 <= uVar11) {\n        uVar11 = uVar3 * 3 >> 1;\n        iVar9 = (*(code *)*puVar17)(iVar9,uVar3,uVar11);\n        iVar10 = *(int *)(puVar16 + -0x68);\n        uVar3 = uVar11;\n      }\n    }\n    (**(code **)(iVar10 + -0x7d5c))(iVar4,*(undefined4 *)(puVar16 + -0x34));\n    iVar1 = *(int *)(puVar16 + -0x68);\n    uVar11 = uVar3;\n    if (uVar3 <= uVar2) {\n      uVar11 = uVar3 * 3 >> 1;\n      iVar9 = (*(code *)**(undefined4 **)(iVar1 + -0x7aa0))(iVar9,uVar3,uVar11);\n      iVar1 = *(int *)(puVar16 + -0x68);\n    }\n    *(undefined1 *)(iVar9 + uVar2) = 0;\n    iVar1 = (**(code **)(iVar1 + -0x7ae8))\n                      (*(undefined4 *)(puVar16 + -0x38),iVar9,*(undefined4 *)(puVar16 + -0x30));\n    (*(code *)**(undefined4 **)(*(int *)(puVar16 + -0x68) + -0x7e70))(iVar9,uVar11);\n    iVar9 = 0;\n    if (iVar1 != -1) {\n      iVar9 = iVar12 + uVar2;\n    }\n    return iVar9;\n  }" if (parenthesized_expression "(*(int *)(puVar16 + -0x1c) != **(int **)(puVar14 + -0x7b00))" ( (binary_expression "*(int *)(puVar16 + -0x1c) != **(int **)(puVar14 + -0x7b00)" (pointer_expression "*(int *)(puVar16 + -0x1c)" * (cast_expression "(int *)(puVar16 + -0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x1c)" ( (binary_expression "puVar16 + -0x1c" identifier + number_literal) )))) != (pointer_expression "**(int **)(puVar14 + -0x7b00)" * (pointer_expression "*(int **)(puVar14 + -0x7b00)" * (cast_expression "(int **)(puVar14 + -0x7b00)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + -0x7b00)" ( (binary_expression "puVar14 + -0x7b00" identifier + number_literal) )))))) )) (compound_statement "{\n    pcVar18 = *(code **)(puVar14 + -0x7b70);\n    uVar19 = 0x1a8b8;\n    (*pcVar18)();\n    *(undefined4 *)(puVar16 + -0x3c) = uVar19;\n    *(undefined1 **)(puVar16 + -0x40) = auStack_38;\n    *(undefined4 *)(puVar16 + -0x44) = unaff_s7;\n    *(undefined4 *)(puVar16 + -0x48) = unaff_s6;\n    *(undefined4 *)(puVar16 + -0x4c) = unaff_s5;\n    *(undefined4 *)(puVar16 + -0x50) = unaff_s4;\n    *(int **)(puVar16 + -0x54) = param_1;\n    *(int **)(puVar16 + -0x58) = unaff_s2;\n    *(int **)(puVar16 + -0x5c) = param_2;\n    *(int **)(puVar16 + -0x60) = local_20;\n    *(code **)(puVar16 + -0x68) = pcVar18 + 0x88780;\n    *(int **)(puVar16 + -0x38) = piVar6;\n    *(undefined1 **)(puVar16 + -0x34) = puVar7;\n    *(int **)(puVar16 + -0x30) = piVar8;\n    if (puVar7 == (undefined1 *)0x0) {\n      *(undefined4 *)(puVar16 + -0x34) = **(undefined4 **)(pcVar18 + 0x80a54);\n    }\n    iVar9 = (*(code *)**(undefined4 **)(pcVar18 + 0x80c4c))(100);\n    iVar10 = *(int *)(puVar16 + -0x68);\n    iVar1 = 0;\n    do {\n      iVar12 = iVar1;\n      iVar4 = (**(code **)(iVar10 + -0x7f3c))(*(undefined4 *)(puVar16 + -0x34));\n      piVar6 = (int *)(**(code **)(*(int *)(puVar16 + -0x68) + -0x7f94))();\n      iVar10 = *(int *)(puVar16 + -0x68);\n      iVar1 = iVar12 + 1;\n    } while ((*(ushort *)(*piVar6 + iVar4 * 2) & 0x20) != 0);\n    puVar17 = *(undefined4 **)(iVar10 + -0x7aa0);\n    uVar2 = 0;\n    uVar3 = 100;\n    while ((iVar4 != -1 && (uVar11 = uVar2 + 1, (*(ushort *)(*piVar6 + iVar4 * 2) & 0x20) == 0))) {\n      *(char *)(iVar9 + uVar2) = (char)iVar4;\n      iVar4 = (**(code **)(iVar10 + -0x7f3c))(*(undefined4 *)(puVar16 + -0x34));\n      iVar10 = *(int *)(puVar16 + -0x68);\n      uVar2 = uVar11;\n      if (uVar3 <= uVar11) {\n        uVar11 = uVar3 * 3 >> 1;\n        iVar9 = (*(code *)*puVar17)(iVar9,uVar3,uVar11);\n        iVar10 = *(int *)(puVar16 + -0x68);\n        uVar3 = uVar11;\n      }\n    }\n    (**(code **)(iVar10 + -0x7d5c))(iVar4,*(undefined4 *)(puVar16 + -0x34));\n    iVar1 = *(int *)(puVar16 + -0x68);\n    uVar11 = uVar3;\n    if (uVar3 <= uVar2) {\n      uVar11 = uVar3 * 3 >> 1;\n      iVar9 = (*(code *)**(undefined4 **)(iVar1 + -0x7aa0))(iVar9,uVar3,uVar11);\n      iVar1 = *(int *)(puVar16 + -0x68);\n    }\n    *(undefined1 *)(iVar9 + uVar2) = 0;\n    iVar1 = (**(code **)(iVar1 + -0x7ae8))\n                      (*(undefined4 *)(puVar16 + -0x38),iVar9,*(undefined4 *)(puVar16 + -0x30));\n    (*(code *)**(undefined4 **)(*(int *)(puVar16 + -0x68) + -0x7e70))(iVar9,uVar11);\n    iVar9 = 0;\n    if (iVar1 != -1) {\n      iVar9 = iVar12 + uVar2;\n    }\n    return iVar9;\n  }" { (expression_statement "pcVar18 = *(code **)(puVar14 + -0x7b70);" (assignment_expression "pcVar18 = *(code **)(puVar14 + -0x7b70)" identifier = (pointer_expression "*(code **)(puVar14 + -0x7b70)" * (cast_expression "(code **)(puVar14 + -0x7b70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + -0x7b70)" ( (binary_expression "puVar14 + -0x7b70" identifier + number_literal) ))))) ;) (expression_statement "uVar19 = 0x1a8b8;" (assignment_expression "uVar19 = 0x1a8b8" identifier = number_literal) ;) (expression_statement "(*pcVar18)();" (call_expression "(*pcVar18)()" (parenthesized_expression "(*pcVar18)" ( (pointer_expression "*pcVar18" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x3c) = uVar19;" (assignment_expression "*(undefined4 *)(puVar16 + -0x3c) = uVar19" (pointer_expression "*(undefined4 *)(puVar16 + -0x3c)" * (cast_expression "(undefined4 *)(puVar16 + -0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x3c)" ( (binary_expression "puVar16 + -0x3c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 **)(puVar16 + -0x40) = auStack_38;" (assignment_expression "*(undefined1 **)(puVar16 + -0x40) = auStack_38" (pointer_expression "*(undefined1 **)(puVar16 + -0x40)" * (cast_expression "(undefined1 **)(puVar16 + -0x40)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x40)" ( (binary_expression "puVar16 + -0x40" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x44) = unaff_s7;" (assignment_expression "*(undefined4 *)(puVar16 + -0x44) = unaff_s7" (pointer_expression "*(undefined4 *)(puVar16 + -0x44)" * (cast_expression "(undefined4 *)(puVar16 + -0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x44)" ( (binary_expression "puVar16 + -0x44" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x48) = unaff_s6;" (assignment_expression "*(undefined4 *)(puVar16 + -0x48) = unaff_s6" (pointer_expression "*(undefined4 *)(puVar16 + -0x48)" * (cast_expression "(undefined4 *)(puVar16 + -0x48)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x48)" ( (binary_expression "puVar16 + -0x48" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x4c) = unaff_s5;" (assignment_expression "*(undefined4 *)(puVar16 + -0x4c) = unaff_s5" (pointer_expression "*(undefined4 *)(puVar16 + -0x4c)" * (cast_expression "(undefined4 *)(puVar16 + -0x4c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x4c)" ( (binary_expression "puVar16 + -0x4c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x50) = unaff_s4;" (assignment_expression "*(undefined4 *)(puVar16 + -0x50) = unaff_s4" (pointer_expression "*(undefined4 *)(puVar16 + -0x50)" * (cast_expression "(undefined4 *)(puVar16 + -0x50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x50)" ( (binary_expression "puVar16 + -0x50" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar16 + -0x54) = param_1;" (assignment_expression "*(int **)(puVar16 + -0x54) = param_1" (pointer_expression "*(int **)(puVar16 + -0x54)" * (cast_expression "(int **)(puVar16 + -0x54)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x54)" ( (binary_expression "puVar16 + -0x54" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar16 + -0x58) = unaff_s2;" (assignment_expression "*(int **)(puVar16 + -0x58) = unaff_s2" (pointer_expression "*(int **)(puVar16 + -0x58)" * (cast_expression "(int **)(puVar16 + -0x58)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x58)" ( (binary_expression "puVar16 + -0x58" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar16 + -0x5c) = param_2;" (assignment_expression "*(int **)(puVar16 + -0x5c) = param_2" (pointer_expression "*(int **)(puVar16 + -0x5c)" * (cast_expression "(int **)(puVar16 + -0x5c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x5c)" ( (binary_expression "puVar16 + -0x5c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar16 + -0x60) = local_20;" (assignment_expression "*(int **)(puVar16 + -0x60) = local_20" (pointer_expression "*(int **)(puVar16 + -0x60)" * (cast_expression "(int **)(puVar16 + -0x60)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x60)" ( (binary_expression "puVar16 + -0x60" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar16 + -0x68) = pcVar18 + 0x88780;" (assignment_expression "*(code **)(puVar16 + -0x68) = pcVar18 + 0x88780" (pointer_expression "*(code **)(puVar16 + -0x68)" * (cast_expression "(code **)(puVar16 + -0x68)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x68)" ( (binary_expression "puVar16 + -0x68" identifier + number_literal) )))) = (binary_expression "pcVar18 + 0x88780" identifier + number_literal)) ;) (expression_statement "*(int **)(puVar16 + -0x38) = piVar6;" (assignment_expression "*(int **)(puVar16 + -0x38) = piVar6" (pointer_expression "*(int **)(puVar16 + -0x38)" * (cast_expression "(int **)(puVar16 + -0x38)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x38)" ( (binary_expression "puVar16 + -0x38" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 **)(puVar16 + -0x34) = puVar7;" (assignment_expression "*(undefined1 **)(puVar16 + -0x34) = puVar7" (pointer_expression "*(undefined1 **)(puVar16 + -0x34)" * (cast_expression "(undefined1 **)(puVar16 + -0x34)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x34)" ( (binary_expression "puVar16 + -0x34" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar16 + -0x30) = piVar8;" (assignment_expression "*(int **)(puVar16 + -0x30) = piVar8" (pointer_expression "*(int **)(puVar16 + -0x30)" * (cast_expression "(int **)(puVar16 + -0x30)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x30)" ( (binary_expression "puVar16 + -0x30" identifier + number_literal) )))) = identifier) ;) (if_statement "if (puVar7 == (undefined1 *)0x0) {\n      *(undefined4 *)(puVar16 + -0x34) = **(undefined4 **)(pcVar18 + 0x80a54);\n    }" if (parenthesized_expression "(puVar7 == (undefined1 *)0x0)" ( (binary_expression "puVar7 == (undefined1 *)0x0" identifier == (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      *(undefined4 *)(puVar16 + -0x34) = **(undefined4 **)(pcVar18 + 0x80a54);\n    }" { (expression_statement "*(undefined4 *)(puVar16 + -0x34) = **(undefined4 **)(pcVar18 + 0x80a54);" (assignment_expression "*(undefined4 *)(puVar16 + -0x34) = **(undefined4 **)(pcVar18 + 0x80a54)" (pointer_expression "*(undefined4 *)(puVar16 + -0x34)" * (cast_expression "(undefined4 *)(puVar16 + -0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x34)" ( (binary_expression "puVar16 + -0x34" identifier + number_literal) )))) = (pointer_expression "**(undefined4 **)(pcVar18 + 0x80a54)" * (pointer_expression "*(undefined4 **)(pcVar18 + 0x80a54)" * (cast_expression "(undefined4 **)(pcVar18 + 0x80a54)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar18 + 0x80a54)" ( (binary_expression "pcVar18 + 0x80a54" identifier + number_literal) )))))) ;) })) (expression_statement "iVar9 = (*(code *)**(undefined4 **)(pcVar18 + 0x80c4c))(100);" (assignment_expression "iVar9 = (*(code *)**(undefined4 **)(pcVar18 + 0x80c4c))(100)" identifier = (call_expression "(*(code *)**(undefined4 **)(pcVar18 + 0x80c4c))(100)" (parenthesized_expression "(*(code *)**(undefined4 **)(pcVar18 + 0x80c4c))" ( (pointer_expression "*(code *)**(undefined4 **)(pcVar18 + 0x80c4c)" * (cast_expression "(code *)**(undefined4 **)(pcVar18 + 0x80c4c)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "**(undefined4 **)(pcVar18 + 0x80c4c)" * (pointer_expression "*(undefined4 **)(pcVar18 + 0x80c4c)" * (cast_expression "(undefined4 **)(pcVar18 + 0x80c4c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar18 + 0x80c4c)" ( (binary_expression "pcVar18 + 0x80c4c" identifier + number_literal) ))))))) )) (argument_list "(100)" ( number_literal )))) ;) (expression_statement "iVar10 = *(int *)(puVar16 + -0x68);" (assignment_expression "iVar10 = *(int *)(puVar16 + -0x68)" identifier = (pointer_expression "*(int *)(puVar16 + -0x68)" * (cast_expression "(int *)(puVar16 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x68)" ( (binary_expression "puVar16 + -0x68" identifier + number_literal) ))))) ;) (expression_statement "iVar1 = 0;" (assignment_expression "iVar1 = 0" identifier = number_literal) ;) (do_statement "do {\n      iVar12 = iVar1;\n      iVar4 = (**(code **)(iVar10 + -0x7f3c))(*(undefined4 *)(puVar16 + -0x34));\n      piVar6 = (int *)(**(code **)(*(int *)(puVar16 + -0x68) + -0x7f94))();\n      iVar10 = *(int *)(puVar16 + -0x68);\n      iVar1 = iVar12 + 1;\n    } while ((*(ushort *)(*piVar6 + iVar4 * 2) & 0x20) != 0);" do (compound_statement "{\n      iVar12 = iVar1;\n      iVar4 = (**(code **)(iVar10 + -0x7f3c))(*(undefined4 *)(puVar16 + -0x34));\n      piVar6 = (int *)(**(code **)(*(int *)(puVar16 + -0x68) + -0x7f94))();\n      iVar10 = *(int *)(puVar16 + -0x68);\n      iVar1 = iVar12 + 1;\n    }" { (expression_statement "iVar12 = iVar1;" (assignment_expression "iVar12 = iVar1" identifier = identifier) ;) (expression_statement "iVar4 = (**(code **)(iVar10 + -0x7f3c))(*(undefined4 *)(puVar16 + -0x34));" (assignment_expression "iVar4 = (**(code **)(iVar10 + -0x7f3c))(*(undefined4 *)(puVar16 + -0x34))" identifier = (call_expression "(**(code **)(iVar10 + -0x7f3c))(*(undefined4 *)(puVar16 + -0x34))" (parenthesized_expression "(**(code **)(iVar10 + -0x7f3c))" ( (pointer_expression "**(code **)(iVar10 + -0x7f3c)" * (pointer_expression "*(code **)(iVar10 + -0x7f3c)" * (cast_expression "(code **)(iVar10 + -0x7f3c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar10 + -0x7f3c)" ( (binary_expression "iVar10 + -0x7f3c" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(puVar16 + -0x34))" ( (pointer_expression "*(undefined4 *)(puVar16 + -0x34)" * (cast_expression "(undefined4 *)(puVar16 + -0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x34)" ( (binary_expression "puVar16 + -0x34" identifier + number_literal) )))) )))) ;) (expression_statement "piVar6 = (int *)(**(code **)(*(int *)(puVar16 + -0x68) + -0x7f94))();" (assignment_expression "piVar6 = (int *)(**(code **)(*(int *)(puVar16 + -0x68) + -0x7f94))()" identifier = (cast_expression "(int *)(**(code **)(*(int *)(puVar16 + -0x68) + -0x7f94))()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(*(int *)(puVar16 + -0x68) + -0x7f94))()" (parenthesized_expression "(**(code **)(*(int *)(puVar16 + -0x68) + -0x7f94))" ( (pointer_expression "**(code **)(*(int *)(puVar16 + -0x68) + -0x7f94)" * (pointer_expression "*(code **)(*(int *)(puVar16 + -0x68) + -0x7f94)" * (cast_expression "(code **)(*(int *)(puVar16 + -0x68) + -0x7f94)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar16 + -0x68) + -0x7f94)" ( (binary_expression "*(int *)(puVar16 + -0x68) + -0x7f94" (pointer_expression "*(int *)(puVar16 + -0x68)" * (cast_expression "(int *)(puVar16 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x68)" ( (binary_expression "puVar16 + -0x68" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "()" ( ))))) ;) (expression_statement "iVar10 = *(int *)(puVar16 + -0x68);" (assignment_expression "iVar10 = *(int *)(puVar16 + -0x68)" identifier = (pointer_expression "*(int *)(puVar16 + -0x68)" * (cast_expression "(int *)(puVar16 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x68)" ( (binary_expression "puVar16 + -0x68" identifier + number_literal) ))))) ;) (expression_statement "iVar1 = iVar12 + 1;" (assignment_expression "iVar1 = iVar12 + 1" identifier = (binary_expression "iVar12 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((*(ushort *)(*piVar6 + iVar4 * 2) & 0x20) != 0)" ( (binary_expression "(*(ushort *)(*piVar6 + iVar4 * 2) & 0x20) != 0" (parenthesized_expression "(*(ushort *)(*piVar6 + iVar4 * 2) & 0x20)" ( (binary_expression "*(ushort *)(*piVar6 + iVar4 * 2) & 0x20" (pointer_expression "*(ushort *)(*piVar6 + iVar4 * 2)" * (cast_expression "(ushort *)(*piVar6 + iVar4 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar6 + iVar4 * 2)" ( (binary_expression "*piVar6 + iVar4 * 2" (pointer_expression "*piVar6" * identifier) + (binary_expression "iVar4 * 2" identifier * number_literal)) )))) & number_literal) )) != number_literal) )) ;) (expression_statement "puVar17 = *(undefined4 **)(iVar10 + -0x7aa0);" (assignment_expression "puVar17 = *(undefined4 **)(iVar10 + -0x7aa0)" identifier = (pointer_expression "*(undefined4 **)(iVar10 + -0x7aa0)" * (cast_expression "(undefined4 **)(iVar10 + -0x7aa0)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar10 + -0x7aa0)" ( (binary_expression "iVar10 + -0x7aa0" identifier + number_literal) ))))) ;) (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" identifier = number_literal) ;) (expression_statement "uVar3 = 100;" (assignment_expression "uVar3 = 100" identifier = number_literal) ;) (while_statement "while ((iVar4 != -1 && (uVar11 = uVar2 + 1, (*(ushort *)(*piVar6 + iVar4 * 2) & 0x20) == 0))) {\n      *(char *)(iVar9 + uVar2) = (char)iVar4;\n      iVar4 = (**(code **)(iVar10 + -0x7f3c))(*(undefined4 *)(puVar16 + -0x34));\n      iVar10 = *(int *)(puVar16 + -0x68);\n      uVar2 = uVar11;\n      if (uVar3 <= uVar11) {\n        uVar11 = uVar3 * 3 >> 1;\n        iVar9 = (*(code *)*puVar17)(iVar9,uVar3,uVar11);\n        iVar10 = *(int *)(puVar16 + -0x68);\n        uVar3 = uVar11;\n      }\n    }" while (parenthesized_expression "((iVar4 != -1 && (uVar11 = uVar2 + 1, (*(ushort *)(*piVar6 + iVar4 * 2) & 0x20) == 0)))" ( (parenthesized_expression "(iVar4 != -1 && (uVar11 = uVar2 + 1, (*(ushort *)(*piVar6 + iVar4 * 2) & 0x20) == 0))" ( (binary_expression "iVar4 != -1 && (uVar11 = uVar2 + 1, (*(ushort *)(*piVar6 + iVar4 * 2) & 0x20) == 0)" (binary_expression "iVar4 != -1" identifier != number_literal) && (parenthesized_expression "(uVar11 = uVar2 + 1, (*(ushort *)(*piVar6 + iVar4 * 2) & 0x20) == 0)" ( (comma_expression "uVar11 = uVar2 + 1, (*(ushort *)(*piVar6 + iVar4 * 2) & 0x20) == 0" (assignment_expression "uVar11 = uVar2 + 1" identifier = (binary_expression "uVar2 + 1" identifier + number_literal)) , (binary_expression "(*(ushort *)(*piVar6 + iVar4 * 2) & 0x20) == 0" (parenthesized_expression "(*(ushort *)(*piVar6 + iVar4 * 2) & 0x20)" ( (binary_expression "*(ushort *)(*piVar6 + iVar4 * 2) & 0x20" (pointer_expression "*(ushort *)(*piVar6 + iVar4 * 2)" * (cast_expression "(ushort *)(*piVar6 + iVar4 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar6 + iVar4 * 2)" ( (binary_expression "*piVar6 + iVar4 * 2" (pointer_expression "*piVar6" * identifier) + (binary_expression "iVar4 * 2" identifier * number_literal)) )))) & number_literal) )) == number_literal)) ))) )) )) (compound_statement "{\n      *(char *)(iVar9 + uVar2) = (char)iVar4;\n      iVar4 = (**(code **)(iVar10 + -0x7f3c))(*(undefined4 *)(puVar16 + -0x34));\n      iVar10 = *(int *)(puVar16 + -0x68);\n      uVar2 = uVar11;\n      if (uVar3 <= uVar11) {\n        uVar11 = uVar3 * 3 >> 1;\n        iVar9 = (*(code *)*puVar17)(iVar9,uVar3,uVar11);\n        iVar10 = *(int *)(puVar16 + -0x68);\n        uVar3 = uVar11;\n      }\n    }" { (expression_statement "*(char *)(iVar9 + uVar2) = (char)iVar4;" (assignment_expression "*(char *)(iVar9 + uVar2) = (char)iVar4" (pointer_expression "*(char *)(iVar9 + uVar2)" * (cast_expression "(char *)(iVar9 + uVar2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + uVar2)" ( (binary_expression "iVar9 + uVar2" identifier + identifier) )))) = (cast_expression "(char)iVar4" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "iVar4 = (**(code **)(iVar10 + -0x7f3c))(*(undefined4 *)(puVar16 + -0x34));" (assignment_expression "iVar4 = (**(code **)(iVar10 + -0x7f3c))(*(undefined4 *)(puVar16 + -0x34))" identifier = (call_expression "(**(code **)(iVar10 + -0x7f3c))(*(undefined4 *)(puVar16 + -0x34))" (parenthesized_expression "(**(code **)(iVar10 + -0x7f3c))" ( (pointer_expression "**(code **)(iVar10 + -0x7f3c)" * (pointer_expression "*(code **)(iVar10 + -0x7f3c)" * (cast_expression "(code **)(iVar10 + -0x7f3c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar10 + -0x7f3c)" ( (binary_expression "iVar10 + -0x7f3c" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(puVar16 + -0x34))" ( (pointer_expression "*(undefined4 *)(puVar16 + -0x34)" * (cast_expression "(undefined4 *)(puVar16 + -0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x34)" ( (binary_expression "puVar16 + -0x34" identifier + number_literal) )))) )))) ;) (expression_statement "iVar10 = *(int *)(puVar16 + -0x68);" (assignment_expression "iVar10 = *(int *)(puVar16 + -0x68)" identifier = (pointer_expression "*(int *)(puVar16 + -0x68)" * (cast_expression "(int *)(puVar16 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x68)" ( (binary_expression "puVar16 + -0x68" identifier + number_literal) ))))) ;) (expression_statement "uVar2 = uVar11;" (assignment_expression "uVar2 = uVar11" identifier = identifier) ;) (if_statement "if (uVar3 <= uVar11) {\n        uVar11 = uVar3 * 3 >> 1;\n        iVar9 = (*(code *)*puVar17)(iVar9,uVar3,uVar11);\n        iVar10 = *(int *)(puVar16 + -0x68);\n        uVar3 = uVar11;\n      }" if (parenthesized_expression "(uVar3 <= uVar11)" ( (binary_expression "uVar3 <= uVar11" identifier <= identifier) )) (compound_statement "{\n        uVar11 = uVar3 * 3 >> 1;\n        iVar9 = (*(code *)*puVar17)(iVar9,uVar3,uVar11);\n        iVar10 = *(int *)(puVar16 + -0x68);\n        uVar3 = uVar11;\n      }" { (expression_statement "uVar11 = uVar3 * 3 >> 1;" (assignment_expression "uVar11 = uVar3 * 3 >> 1" identifier = (binary_expression "uVar3 * 3 >> 1" (binary_expression "uVar3 * 3" identifier * number_literal) >> number_literal)) ;) (expression_statement "iVar9 = (*(code *)*puVar17)(iVar9,uVar3,uVar11);" (assignment_expression "iVar9 = (*(code *)*puVar17)(iVar9,uVar3,uVar11)" identifier = (call_expression "(*(code *)*puVar17)(iVar9,uVar3,uVar11)" (parenthesized_expression "(*(code *)*puVar17)" ( (pointer_expression "*(code *)*puVar17" * (cast_expression "(code *)*puVar17" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar17" * identifier))) )) (argument_list "(iVar9,uVar3,uVar11)" ( identifier , identifier , identifier )))) ;) (expression_statement "iVar10 = *(int *)(puVar16 + -0x68);" (assignment_expression "iVar10 = *(int *)(puVar16 + -0x68)" identifier = (pointer_expression "*(int *)(puVar16 + -0x68)" * (cast_expression "(int *)(puVar16 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x68)" ( (binary_expression "puVar16 + -0x68" identifier + number_literal) ))))) ;) (expression_statement "uVar3 = uVar11;" (assignment_expression "uVar3 = uVar11" identifier = identifier) ;) })) })) (expression_statement "(**(code **)(iVar10 + -0x7d5c))(iVar4,*(undefined4 *)(puVar16 + -0x34));" (call_expression "(**(code **)(iVar10 + -0x7d5c))(iVar4,*(undefined4 *)(puVar16 + -0x34))" (parenthesized_expression "(**(code **)(iVar10 + -0x7d5c))" ( (pointer_expression "**(code **)(iVar10 + -0x7d5c)" * (pointer_expression "*(code **)(iVar10 + -0x7d5c)" * (cast_expression "(code **)(iVar10 + -0x7d5c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar10 + -0x7d5c)" ( (binary_expression "iVar10 + -0x7d5c" identifier + number_literal) ))))) )) (argument_list "(iVar4,*(undefined4 *)(puVar16 + -0x34))" ( identifier , (pointer_expression "*(undefined4 *)(puVar16 + -0x34)" * (cast_expression "(undefined4 *)(puVar16 + -0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x34)" ( (binary_expression "puVar16 + -0x34" identifier + number_literal) )))) ))) ;) (expression_statement "iVar1 = *(int *)(puVar16 + -0x68);" (assignment_expression "iVar1 = *(int *)(puVar16 + -0x68)" identifier = (pointer_expression "*(int *)(puVar16 + -0x68)" * (cast_expression "(int *)(puVar16 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x68)" ( (binary_expression "puVar16 + -0x68" identifier + number_literal) ))))) ;) (expression_statement "uVar11 = uVar3;" (assignment_expression "uVar11 = uVar3" identifier = identifier) ;) (if_statement "if (uVar3 <= uVar2) {\n      uVar11 = uVar3 * 3 >> 1;\n      iVar9 = (*(code *)**(undefined4 **)(iVar1 + -0x7aa0))(iVar9,uVar3,uVar11);\n      iVar1 = *(int *)(puVar16 + -0x68);\n    }" if (parenthesized_expression "(uVar3 <= uVar2)" ( (binary_expression "uVar3 <= uVar2" identifier <= identifier) )) (compound_statement "{\n      uVar11 = uVar3 * 3 >> 1;\n      iVar9 = (*(code *)**(undefined4 **)(iVar1 + -0x7aa0))(iVar9,uVar3,uVar11);\n      iVar1 = *(int *)(puVar16 + -0x68);\n    }" { (expression_statement "uVar11 = uVar3 * 3 >> 1;" (assignment_expression "uVar11 = uVar3 * 3 >> 1" identifier = (binary_expression "uVar3 * 3 >> 1" (binary_expression "uVar3 * 3" identifier * number_literal) >> number_literal)) ;) (expression_statement "iVar9 = (*(code *)**(undefined4 **)(iVar1 + -0x7aa0))(iVar9,uVar3,uVar11);" (assignment_expression "iVar9 = (*(code *)**(undefined4 **)(iVar1 + -0x7aa0))(iVar9,uVar3,uVar11)" identifier = (call_expression "(*(code *)**(undefined4 **)(iVar1 + -0x7aa0))(iVar9,uVar3,uVar11)" (parenthesized_expression "(*(code *)**(undefined4 **)(iVar1 + -0x7aa0))" ( (pointer_expression "*(code *)**(undefined4 **)(iVar1 + -0x7aa0)" * (cast_expression "(code *)**(undefined4 **)(iVar1 + -0x7aa0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "**(undefined4 **)(iVar1 + -0x7aa0)" * (pointer_expression "*(undefined4 **)(iVar1 + -0x7aa0)" * (cast_expression "(undefined4 **)(iVar1 + -0x7aa0)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + -0x7aa0)" ( (binary_expression "iVar1 + -0x7aa0" identifier + number_literal) ))))))) )) (argument_list "(iVar9,uVar3,uVar11)" ( identifier , identifier , identifier )))) ;) (expression_statement "iVar1 = *(int *)(puVar16 + -0x68);" (assignment_expression "iVar1 = *(int *)(puVar16 + -0x68)" identifier = (pointer_expression "*(int *)(puVar16 + -0x68)" * (cast_expression "(int *)(puVar16 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x68)" ( (binary_expression "puVar16 + -0x68" identifier + number_literal) ))))) ;) })) (expression_statement "*(undefined1 *)(iVar9 + uVar2) = 0;" (assignment_expression "*(undefined1 *)(iVar9 + uVar2) = 0" (pointer_expression "*(undefined1 *)(iVar9 + uVar2)" * (cast_expression "(undefined1 *)(iVar9 + uVar2)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + uVar2)" ( (binary_expression "iVar9 + uVar2" identifier + identifier) )))) = number_literal) ;) (expression_statement "iVar1 = (**(code **)(iVar1 + -0x7ae8))\n                      (*(undefined4 *)(puVar16 + -0x38),iVar9,*(undefined4 *)(puVar16 + -0x30));" (assignment_expression "iVar1 = (**(code **)(iVar1 + -0x7ae8))\n                      (*(undefined4 *)(puVar16 + -0x38),iVar9,*(undefined4 *)(puVar16 + -0x30))" identifier = (call_expression "(**(code **)(iVar1 + -0x7ae8))\n                      (*(undefined4 *)(puVar16 + -0x38),iVar9,*(undefined4 *)(puVar16 + -0x30))" (parenthesized_expression "(**(code **)(iVar1 + -0x7ae8))" ( (pointer_expression "**(code **)(iVar1 + -0x7ae8)" * (pointer_expression "*(code **)(iVar1 + -0x7ae8)" * (cast_expression "(code **)(iVar1 + -0x7ae8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + -0x7ae8)" ( (binary_expression "iVar1 + -0x7ae8" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(puVar16 + -0x38),iVar9,*(undefined4 *)(puVar16 + -0x30))" ( (pointer_expression "*(undefined4 *)(puVar16 + -0x38)" * (cast_expression "(undefined4 *)(puVar16 + -0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x38)" ( (binary_expression "puVar16 + -0x38" identifier + number_literal) )))) , identifier , (pointer_expression "*(undefined4 *)(puVar16 + -0x30)" * (cast_expression "(undefined4 *)(puVar16 + -0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x30)" ( (binary_expression "puVar16 + -0x30" identifier + number_literal) )))) )))) ;) (expression_statement "(*(code *)**(undefined4 **)(*(int *)(puVar16 + -0x68) + -0x7e70))(iVar9,uVar11);" (call_expression "(*(code *)**(undefined4 **)(*(int *)(puVar16 + -0x68) + -0x7e70))(iVar9,uVar11)" (parenthesized_expression "(*(code *)**(undefined4 **)(*(int *)(puVar16 + -0x68) + -0x7e70))" ( (pointer_expression "*(code *)**(undefined4 **)(*(int *)(puVar16 + -0x68) + -0x7e70)" * (cast_expression "(code *)**(undefined4 **)(*(int *)(puVar16 + -0x68) + -0x7e70)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "**(undefined4 **)(*(int *)(puVar16 + -0x68) + -0x7e70)" * (pointer_expression "*(undefined4 **)(*(int *)(puVar16 + -0x68) + -0x7e70)" * (cast_expression "(undefined4 **)(*(int *)(puVar16 + -0x68) + -0x7e70)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar16 + -0x68) + -0x7e70)" ( (binary_expression "*(int *)(puVar16 + -0x68) + -0x7e70" (pointer_expression "*(int *)(puVar16 + -0x68)" * (cast_expression "(int *)(puVar16 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x68)" ( (binary_expression "puVar16 + -0x68" identifier + number_literal) )))) + number_literal) ))))))) )) (argument_list "(iVar9,uVar11)" ( identifier , identifier ))) ;) (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" identifier = number_literal) ;) (if_statement "if (iVar1 != -1) {\n      iVar9 = iVar12 + uVar2;\n    }" if (parenthesized_expression "(iVar1 != -1)" ( (binary_expression "iVar1 != -1" identifier != number_literal) )) (compound_statement "{\n      iVar9 = iVar12 + uVar2;\n    }" { (expression_statement "iVar9 = iVar12 + uVar2;" (assignment_expression "iVar9 = iVar12 + uVar2" identifier = (binary_expression "iVar12 + uVar2" identifier + identifier)) ;) })) (return_statement "return iVar9;" return identifier ;) })) (return_statement "return **(int **)(puVar14 + -0x7b00);" return (pointer_expression "**(int **)(puVar14 + -0x7b00)" * (pointer_expression "*(int **)(puVar14 + -0x7b00)" * (cast_expression "(int **)(puVar14 + -0x7b00)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + -0x7b00)" ( (binary_expression "puVar14 + -0x7b00" identifier + number_literal) ))))) ;) })))
(translation_unit "void __gmpf_sqrt(mpf_ptr r,mpf_srcptr u)\n\n{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  mpf_srcptr p_Var4;\n  int *piVar5;\n  uint uVar6;\n  int iVar7;\n  mpf_ptr p_Var8;\n  int *piVar9;\n  mpf_ptr p_Var10;\n  undefined1 *puVar11;\n  mpf_ptr in_a2;\n  mpf_ptr p_Var12;\n  int iVar13;\n  int unaff_s1;\n  mpf_srcptr unaff_s2;\n  int *piVar14;\n  undefined4 unaff_s4;\n  uint uVar15;\n  undefined4 unaff_s5;\n  undefined4 unaff_s6;\n  undefined4 unaff_s7;\n  undefined *puVar16;\n  undefined *puVar17;\n  undefined1 *puVar18;\n  undefined1 *puVar19;\n  undefined4 *puVar20;\n  code *pcVar21;\n  undefined4 uVar22;\n  undefined1 auStack_38 [16];\n  tmp_reentrant_t *__tmp_marker;\n  \n  puVar19 = auStack_38;\n  puVar18 = auStack_38;\n  iVar1 = *(int *)PTR___stack_chk_guard_0009b540;\n  iVar13 = u->_mp_size;\n  if (iVar13 < 1) {\n    if (-1 < iVar13) {\n      r->_mp_size = 0;\n      r->_mp_exp = 0;\n      __tmp_marker = (tmp_reentrant_t *)r;\n      goto LAB_0001a69c;\n    }\n    (*(code *)PTR___gmp_sqrt_of_negative_0009b1cc)();\nLAB_0001a654:\n    in_a2 = (mpf_ptr)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)();\n  }\n  else {\n    __tmp_marker = (tmp_reentrant_t *)0x0;\n    uVar2 = u->_mp_exp;\n    unaff_s2 = (mpf_srcptr)u->_mp_d;\n    uVar6 = uVar2 & 1;\n    unaff_s1 = r->_mp_prec * 2 - uVar6;\n    r->_mp_size = r->_mp_prec;\n    r->_mp_exp = (int)(uVar2 + uVar6) / 2;\n    if (0x7f00 < (uint)(unaff_s1 * 4)) goto LAB_0001a654;\n    iVar3 = -(unaff_s1 * 4 + 7U & 0xfffffff8);\n    puVar18 = auStack_38 + iVar3;\n    in_a2 = (mpf_ptr)(&stack0xffffffd8 + iVar3);\n  }\n  if (unaff_s1 < iVar13) {\n    if (unaff_s1 != 0) {\n      iVar13 = (iVar13 - unaff_s1) * 4;\n      unaff_s2 = (mpf_srcptr)((int)unaff_s2 + iVar13);\n      iVar7 = unaff_s1 + -1;\n      iVar3 = unaff_s2->_mp_prec;\n      p_Var10 = in_a2;\n      if (iVar7 != 0) {\n        piVar5 = &unaff_s2->_mp_size;\n        do {\n          p_Var10->_mp_prec = iVar3;\n          unaff_s2 = (mpf_srcptr)(piVar5 + 1);\n          iVar7 = iVar7 + -1;\n          iVar3 = *piVar5;\n          p_Var10 = (mpf_ptr)&p_Var10->_mp_size;\n          piVar5 = (int *)unaff_s2;\n        } while (iVar7 != 0);\n        p_Var10 = (mpf_ptr)((int)in_a2 + (unaff_s1 + 0x3fffffff) * 4);\n      }\n      p_Var10->_mp_prec = iVar3;\n    }\n  }\n  else {\n    iVar3 = unaff_s1 - iVar13;\n    p_Var10 = in_a2;\n    if (iVar13 != unaff_s1) {\n      do {\n        iVar3 = iVar3 + -1;\n        p_Var10->_mp_prec = 0;\n        p_Var10 = (mpf_ptr)&p_Var10->_mp_size;\n      } while (iVar3 != 0);\n    }\n    iVar7 = iVar13 + -1;\n    piVar5 = (int *)((int)in_a2 + (unaff_s1 - iVar13) * 4);\n    iVar3 = unaff_s2->_mp_prec;\n    if (iVar7 != 0) {\n      piVar9 = piVar5;\n      piVar14 = &unaff_s2->_mp_size;\n      do {\n        *piVar9 = iVar3;\n        unaff_s2 = (mpf_srcptr)(piVar14 + 1);\n        iVar7 = iVar7 + -1;\n        iVar3 = *piVar14;\n        piVar9 = piVar9 + 1;\n        piVar14 = (int *)unaff_s2;\n      } while (iVar7 != 0);\n      iVar7 = iVar13 + 0x3fffffff;\n      iVar13 = iVar7 * 4;\n      piVar5 = piVar5 + iVar7;\n    }\n    *piVar5 = iVar3;\n  }\n  u = (mpf_srcptr)0x0;\n  (*(code *)PTR___gmpn_sqrtrem_0009b0e0)(r->_mp_d,0,in_a2,unaff_s1);\n  puVar19 = puVar18;\n  if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n    (*(code *)PTR___gmp_tmp_reentrant_free_0009b614)();\n  }\nLAB_0001a69c:\n  if (iVar1 == *(int *)PTR___stack_chk_guard_0009b540) {\n    return;\n  }\n  pcVar21 = __gmpf_random2;\n  puVar16 = PTR___stack_chk_fail_0009b4d0;\n  (*(code *)PTR___stack_chk_fail_0009b4d0)();\n  puVar17 = puVar16 + 0x888e0;\n  *(code **)(puVar19 + -4) = pcVar21;\n  *(mpf_ptr *)(puVar19 + -8) = r;\n  *(mpf_srcptr *)(puVar19 + -0xc) = unaff_s2;\n  *(int *)(puVar19 + -0x10) = unaff_s1;\n  *(int *)(puVar19 + -0x14) = iVar13;\n  *(undefined **)(puVar19 + -0x28) = puVar17;\n  *(undefined4 *)(puVar19 + -0x1c) = **(undefined4 **)(puVar16 + 0x80de0);\n  if (u == (mpf_srcptr)0x0) {\n    ((mpf_ptr)__tmp_marker)->_mp_exp = 0;\n    ((mpf_ptr)__tmp_marker)->_mp_size = 0;\n    puVar11 = (undefined1 *)0x0;\n    p_Var10 = (mpf_ptr)__tmp_marker;\n    p_Var12 = in_a2;\n  }\n  else {\n    unaff_s2 = u;\n    if ((int)u < 0) {\n      unaff_s2 = (mpf_srcptr)-(int)u;\n    }\n    p_Var4 = (mpf_srcptr)(((mpf_ptr)__tmp_marker)->_mp_prec + 1);\n    if ((int)p_Var4 <= (int)unaff_s2) {\n      unaff_s2 = p_Var4;\n    }\n    (**(code **)(puVar16 + 0x809f4))(((mpf_ptr)__tmp_marker)->_mp_d,unaff_s2);\n    iVar1 = *(int *)(puVar19 + -0x28);\n    if (**(char **)(iVar1 + -0x7eb8) == '\0') {\n      **(undefined1 **)(iVar1 + -0x7eb8) = 1;\n      (**(code **)(iVar1 + -0x7a40))(*(undefined4 *)(iVar1 + -0x7dc4));\n      iVar1 = *(int *)(*(int *)(puVar19 + -0x28) + -0x7dc4);\n    }\n    else {\n      iVar1 = *(int *)(iVar1 + -0x7dc4);\n    }\n    p_Var12 = (mpf_ptr)0x20;\n    puVar11 = puVar19 + -0x20;\n    (**(code **)(*(int *)(iVar1 + 0x10) + 4))();\n    puVar17 = *(undefined **)(puVar19 + -0x28);\n    p_Var8 = in_a2;\n    if ((int)in_a2 < 0) {\n      p_Var8 = (mpf_ptr)-(int)in_a2;\n    }\n    uVar2 = (int)p_Var8 * 2 + 1;\n    p_Var10 = *(mpf_ptr *)(puVar19 + -0x20);\n    if (uVar2 == 0) {\n      trap(7);\n    }\n    ((mpf_ptr)__tmp_marker)->_mp_exp = (uint)p_Var10 % uVar2 - (int)p_Var8;\n    if ((int)u < 0) {\n      unaff_s2 = (mpf_srcptr)-(int)unaff_s2;\n    }\n    ((mpf_ptr)__tmp_marker)->_mp_size = (int)unaff_s2;\n    r = in_a2;\n  }\n  if (*(int *)(puVar19 + -0x1c) == **(int **)(puVar17 + -0x7b00)) {\n    return;\n  }\n  pcVar21 = *(code **)(puVar17 + -0x7b70);\n  uVar22 = 0x1a8b8;\n  (*pcVar21)();\n  *(undefined4 *)(puVar19 + -0x3c) = uVar22;\n  *(undefined1 **)(puVar19 + -0x40) = auStack_38;\n  *(undefined4 *)(puVar19 + -0x44) = unaff_s7;\n  *(undefined4 *)(puVar19 + -0x48) = unaff_s6;\n  *(undefined4 *)(puVar19 + -0x4c) = unaff_s5;\n  *(undefined4 *)(puVar19 + -0x50) = unaff_s4;\n  *(mpf_ptr *)(puVar19 + -0x54) = r;\n  *(mpf_srcptr *)(puVar19 + -0x58) = unaff_s2;\n  *(mpf_srcptr *)(puVar19 + -0x5c) = u;\n  *(tmp_reentrant_t **)(puVar19 + -0x60) = __tmp_marker;\n  *(code **)(puVar19 + -0x68) = pcVar21 + 0x88780;\n  *(mpf_ptr *)(puVar19 + -0x38) = p_Var10;\n  *(undefined1 **)(puVar19 + -0x34) = puVar11;\n  *(mpf_ptr *)(puVar19 + -0x30) = p_Var12;\n  if (puVar11 == (undefined1 *)0x0) {\n    *(undefined4 *)(puVar19 + -0x34) = **(undefined4 **)(pcVar21 + 0x80a54);\n  }\n  iVar1 = (*(code *)**(undefined4 **)(pcVar21 + 0x80c4c))(100);\n  iVar13 = *(int *)(puVar19 + -0x68);\n  do {\n    iVar3 = (**(code **)(iVar13 + -0x7f3c))(*(undefined4 *)(puVar19 + -0x34));\n    piVar5 = (int *)(**(code **)(*(int *)(puVar19 + -0x68) + -0x7f94))();\n    iVar13 = *(int *)(puVar19 + -0x68);\n  } while ((*(ushort *)(*piVar5 + iVar3 * 2) & 0x20) != 0);\n  puVar20 = *(undefined4 **)(iVar13 + -0x7aa0);\n  uVar2 = 0;\n  uVar6 = 100;\n  while ((iVar3 != -1 && (uVar15 = uVar2 + 1, (*(ushort *)(*piVar5 + iVar3 * 2) & 0x20) == 0))) {\n    *(char *)(iVar1 + uVar2) = (char)iVar3;\n    iVar3 = (**(code **)(iVar13 + -0x7f3c))(*(undefined4 *)(puVar19 + -0x34));\n    iVar13 = *(int *)(puVar19 + -0x68);\n    uVar2 = uVar15;\n    if (uVar6 <= uVar15) {\n      uVar15 = uVar6 * 3 >> 1;\n      iVar1 = (*(code *)*puVar20)(iVar1,uVar6,uVar15);\n      iVar13 = *(int *)(puVar19 + -0x68);\n      uVar6 = uVar15;\n    }\n  }\n  (**(code **)(iVar13 + -0x7d5c))(iVar3,*(undefined4 *)(puVar19 + -0x34));\n  iVar13 = *(int *)(puVar19 + -0x68);\n  uVar15 = uVar6;\n  if (uVar6 <= uVar2) {\n    uVar15 = uVar6 * 3 >> 1;\n    iVar1 = (*(code *)**(undefined4 **)(iVar13 + -0x7aa0))(iVar1,uVar6,uVar15);\n    iVar13 = *(int *)(puVar19 + -0x68);\n  }\n  *(undefined1 *)(iVar1 + uVar2) = 0;\n  (**(code **)(iVar13 + -0x7ae8))\n            (*(undefined4 *)(puVar19 + -0x38),iVar1,*(undefined4 *)(puVar19 + -0x30));\n  (*(code *)**(undefined4 **)(*(int *)(puVar19 + -0x68) + -0x7e70))(iVar1,uVar15);\n  return;\n}\n\n" (function_definition "void __gmpf_sqrt(mpf_ptr r,mpf_srcptr u)\n\n{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  mpf_srcptr p_Var4;\n  int *piVar5;\n  uint uVar6;\n  int iVar7;\n  mpf_ptr p_Var8;\n  int *piVar9;\n  mpf_ptr p_Var10;\n  undefined1 *puVar11;\n  mpf_ptr in_a2;\n  mpf_ptr p_Var12;\n  int iVar13;\n  int unaff_s1;\n  mpf_srcptr unaff_s2;\n  int *piVar14;\n  undefined4 unaff_s4;\n  uint uVar15;\n  undefined4 unaff_s5;\n  undefined4 unaff_s6;\n  undefined4 unaff_s7;\n  undefined *puVar16;\n  undefined *puVar17;\n  undefined1 *puVar18;\n  undefined1 *puVar19;\n  undefined4 *puVar20;\n  code *pcVar21;\n  undefined4 uVar22;\n  undefined1 auStack_38 [16];\n  tmp_reentrant_t *__tmp_marker;\n  \n  puVar19 = auStack_38;\n  puVar18 = auStack_38;\n  iVar1 = *(int *)PTR___stack_chk_guard_0009b540;\n  iVar13 = u->_mp_size;\n  if (iVar13 < 1) {\n    if (-1 < iVar13) {\n      r->_mp_size = 0;\n      r->_mp_exp = 0;\n      __tmp_marker = (tmp_reentrant_t *)r;\n      goto LAB_0001a69c;\n    }\n    (*(code *)PTR___gmp_sqrt_of_negative_0009b1cc)();\nLAB_0001a654:\n    in_a2 = (mpf_ptr)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)();\n  }\n  else {\n    __tmp_marker = (tmp_reentrant_t *)0x0;\n    uVar2 = u->_mp_exp;\n    unaff_s2 = (mpf_srcptr)u->_mp_d;\n    uVar6 = uVar2 & 1;\n    unaff_s1 = r->_mp_prec * 2 - uVar6;\n    r->_mp_size = r->_mp_prec;\n    r->_mp_exp = (int)(uVar2 + uVar6) / 2;\n    if (0x7f00 < (uint)(unaff_s1 * 4)) goto LAB_0001a654;\n    iVar3 = -(unaff_s1 * 4 + 7U & 0xfffffff8);\n    puVar18 = auStack_38 + iVar3;\n    in_a2 = (mpf_ptr)(&stack0xffffffd8 + iVar3);\n  }\n  if (unaff_s1 < iVar13) {\n    if (unaff_s1 != 0) {\n      iVar13 = (iVar13 - unaff_s1) * 4;\n      unaff_s2 = (mpf_srcptr)((int)unaff_s2 + iVar13);\n      iVar7 = unaff_s1 + -1;\n      iVar3 = unaff_s2->_mp_prec;\n      p_Var10 = in_a2;\n      if (iVar7 != 0) {\n        piVar5 = &unaff_s2->_mp_size;\n        do {\n          p_Var10->_mp_prec = iVar3;\n          unaff_s2 = (mpf_srcptr)(piVar5 + 1);\n          iVar7 = iVar7 + -1;\n          iVar3 = *piVar5;\n          p_Var10 = (mpf_ptr)&p_Var10->_mp_size;\n          piVar5 = (int *)unaff_s2;\n        } while (iVar7 != 0);\n        p_Var10 = (mpf_ptr)((int)in_a2 + (unaff_s1 + 0x3fffffff) * 4);\n      }\n      p_Var10->_mp_prec = iVar3;\n    }\n  }\n  else {\n    iVar3 = unaff_s1 - iVar13;\n    p_Var10 = in_a2;\n    if (iVar13 != unaff_s1) {\n      do {\n        iVar3 = iVar3 + -1;\n        p_Var10->_mp_prec = 0;\n        p_Var10 = (mpf_ptr)&p_Var10->_mp_size;\n      } while (iVar3 != 0);\n    }\n    iVar7 = iVar13 + -1;\n    piVar5 = (int *)((int)in_a2 + (unaff_s1 - iVar13) * 4);\n    iVar3 = unaff_s2->_mp_prec;\n    if (iVar7 != 0) {\n      piVar9 = piVar5;\n      piVar14 = &unaff_s2->_mp_size;\n      do {\n        *piVar9 = iVar3;\n        unaff_s2 = (mpf_srcptr)(piVar14 + 1);\n        iVar7 = iVar7 + -1;\n        iVar3 = *piVar14;\n        piVar9 = piVar9 + 1;\n        piVar14 = (int *)unaff_s2;\n      } while (iVar7 != 0);\n      iVar7 = iVar13 + 0x3fffffff;\n      iVar13 = iVar7 * 4;\n      piVar5 = piVar5 + iVar7;\n    }\n    *piVar5 = iVar3;\n  }\n  u = (mpf_srcptr)0x0;\n  (*(code *)PTR___gmpn_sqrtrem_0009b0e0)(r->_mp_d,0,in_a2,unaff_s1);\n  puVar19 = puVar18;\n  if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n    (*(code *)PTR___gmp_tmp_reentrant_free_0009b614)();\n  }\nLAB_0001a69c:\n  if (iVar1 == *(int *)PTR___stack_chk_guard_0009b540) {\n    return;\n  }\n  pcVar21 = __gmpf_random2;\n  puVar16 = PTR___stack_chk_fail_0009b4d0;\n  (*(code *)PTR___stack_chk_fail_0009b4d0)();\n  puVar17 = puVar16 + 0x888e0;\n  *(code **)(puVar19 + -4) = pcVar21;\n  *(mpf_ptr *)(puVar19 + -8) = r;\n  *(mpf_srcptr *)(puVar19 + -0xc) = unaff_s2;\n  *(int *)(puVar19 + -0x10) = unaff_s1;\n  *(int *)(puVar19 + -0x14) = iVar13;\n  *(undefined **)(puVar19 + -0x28) = puVar17;\n  *(undefined4 *)(puVar19 + -0x1c) = **(undefined4 **)(puVar16 + 0x80de0);\n  if (u == (mpf_srcptr)0x0) {\n    ((mpf_ptr)__tmp_marker)->_mp_exp = 0;\n    ((mpf_ptr)__tmp_marker)->_mp_size = 0;\n    puVar11 = (undefined1 *)0x0;\n    p_Var10 = (mpf_ptr)__tmp_marker;\n    p_Var12 = in_a2;\n  }\n  else {\n    unaff_s2 = u;\n    if ((int)u < 0) {\n      unaff_s2 = (mpf_srcptr)-(int)u;\n    }\n    p_Var4 = (mpf_srcptr)(((mpf_ptr)__tmp_marker)->_mp_prec + 1);\n    if ((int)p_Var4 <= (int)unaff_s2) {\n      unaff_s2 = p_Var4;\n    }\n    (**(code **)(puVar16 + 0x809f4))(((mpf_ptr)__tmp_marker)->_mp_d,unaff_s2);\n    iVar1 = *(int *)(puVar19 + -0x28);\n    if (**(char **)(iVar1 + -0x7eb8) == '\0') {\n      **(undefined1 **)(iVar1 + -0x7eb8) = 1;\n      (**(code **)(iVar1 + -0x7a40))(*(undefined4 *)(iVar1 + -0x7dc4));\n      iVar1 = *(int *)(*(int *)(puVar19 + -0x28) + -0x7dc4);\n    }\n    else {\n      iVar1 = *(int *)(iVar1 + -0x7dc4);\n    }\n    p_Var12 = (mpf_ptr)0x20;\n    puVar11 = puVar19 + -0x20;\n    (**(code **)(*(int *)(iVar1 + 0x10) + 4))();\n    puVar17 = *(undefined **)(puVar19 + -0x28);\n    p_Var8 = in_a2;\n    if ((int)in_a2 < 0) {\n      p_Var8 = (mpf_ptr)-(int)in_a2;\n    }\n    uVar2 = (int)p_Var8 * 2 + 1;\n    p_Var10 = *(mpf_ptr *)(puVar19 + -0x20);\n    if (uVar2 == 0) {\n      trap(7);\n    }\n    ((mpf_ptr)__tmp_marker)->_mp_exp = (uint)p_Var10 % uVar2 - (int)p_Var8;\n    if ((int)u < 0) {\n      unaff_s2 = (mpf_srcptr)-(int)unaff_s2;\n    }\n    ((mpf_ptr)__tmp_marker)->_mp_size = (int)unaff_s2;\n    r = in_a2;\n  }\n  if (*(int *)(puVar19 + -0x1c) == **(int **)(puVar17 + -0x7b00)) {\n    return;\n  }\n  pcVar21 = *(code **)(puVar17 + -0x7b70);\n  uVar22 = 0x1a8b8;\n  (*pcVar21)();\n  *(undefined4 *)(puVar19 + -0x3c) = uVar22;\n  *(undefined1 **)(puVar19 + -0x40) = auStack_38;\n  *(undefined4 *)(puVar19 + -0x44) = unaff_s7;\n  *(undefined4 *)(puVar19 + -0x48) = unaff_s6;\n  *(undefined4 *)(puVar19 + -0x4c) = unaff_s5;\n  *(undefined4 *)(puVar19 + -0x50) = unaff_s4;\n  *(mpf_ptr *)(puVar19 + -0x54) = r;\n  *(mpf_srcptr *)(puVar19 + -0x58) = unaff_s2;\n  *(mpf_srcptr *)(puVar19 + -0x5c) = u;\n  *(tmp_reentrant_t **)(puVar19 + -0x60) = __tmp_marker;\n  *(code **)(puVar19 + -0x68) = pcVar21 + 0x88780;\n  *(mpf_ptr *)(puVar19 + -0x38) = p_Var10;\n  *(undefined1 **)(puVar19 + -0x34) = puVar11;\n  *(mpf_ptr *)(puVar19 + -0x30) = p_Var12;\n  if (puVar11 == (undefined1 *)0x0) {\n    *(undefined4 *)(puVar19 + -0x34) = **(undefined4 **)(pcVar21 + 0x80a54);\n  }\n  iVar1 = (*(code *)**(undefined4 **)(pcVar21 + 0x80c4c))(100);\n  iVar13 = *(int *)(puVar19 + -0x68);\n  do {\n    iVar3 = (**(code **)(iVar13 + -0x7f3c))(*(undefined4 *)(puVar19 + -0x34));\n    piVar5 = (int *)(**(code **)(*(int *)(puVar19 + -0x68) + -0x7f94))();\n    iVar13 = *(int *)(puVar19 + -0x68);\n  } while ((*(ushort *)(*piVar5 + iVar3 * 2) & 0x20) != 0);\n  puVar20 = *(undefined4 **)(iVar13 + -0x7aa0);\n  uVar2 = 0;\n  uVar6 = 100;\n  while ((iVar3 != -1 && (uVar15 = uVar2 + 1, (*(ushort *)(*piVar5 + iVar3 * 2) & 0x20) == 0))) {\n    *(char *)(iVar1 + uVar2) = (char)iVar3;\n    iVar3 = (**(code **)(iVar13 + -0x7f3c))(*(undefined4 *)(puVar19 + -0x34));\n    iVar13 = *(int *)(puVar19 + -0x68);\n    uVar2 = uVar15;\n    if (uVar6 <= uVar15) {\n      uVar15 = uVar6 * 3 >> 1;\n      iVar1 = (*(code *)*puVar20)(iVar1,uVar6,uVar15);\n      iVar13 = *(int *)(puVar19 + -0x68);\n      uVar6 = uVar15;\n    }\n  }\n  (**(code **)(iVar13 + -0x7d5c))(iVar3,*(undefined4 *)(puVar19 + -0x34));\n  iVar13 = *(int *)(puVar19 + -0x68);\n  uVar15 = uVar6;\n  if (uVar6 <= uVar2) {\n    uVar15 = uVar6 * 3 >> 1;\n    iVar1 = (*(code *)**(undefined4 **)(iVar13 + -0x7aa0))(iVar1,uVar6,uVar15);\n    iVar13 = *(int *)(puVar19 + -0x68);\n  }\n  *(undefined1 *)(iVar1 + uVar2) = 0;\n  (**(code **)(iVar13 + -0x7ae8))\n            (*(undefined4 *)(puVar19 + -0x38),iVar1,*(undefined4 *)(puVar19 + -0x30));\n  (*(code *)**(undefined4 **)(*(int *)(puVar19 + -0x68) + -0x7e70))(iVar1,uVar15);\n  return;\n}" primitive_type (function_declarator "__gmpf_sqrt(mpf_ptr r,mpf_srcptr u)" identifier (parameter_list "(mpf_ptr r,mpf_srcptr u)" ( (parameter_declaration "mpf_ptr r" type_identifier identifier) , (parameter_declaration "mpf_srcptr u" type_identifier identifier) ))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  mpf_srcptr p_Var4;\n  int *piVar5;\n  uint uVar6;\n  int iVar7;\n  mpf_ptr p_Var8;\n  int *piVar9;\n  mpf_ptr p_Var10;\n  undefined1 *puVar11;\n  mpf_ptr in_a2;\n  mpf_ptr p_Var12;\n  int iVar13;\n  int unaff_s1;\n  mpf_srcptr unaff_s2;\n  int *piVar14;\n  undefined4 unaff_s4;\n  uint uVar15;\n  undefined4 unaff_s5;\n  undefined4 unaff_s6;\n  undefined4 unaff_s7;\n  undefined *puVar16;\n  undefined *puVar17;\n  undefined1 *puVar18;\n  undefined1 *puVar19;\n  undefined4 *puVar20;\n  code *pcVar21;\n  undefined4 uVar22;\n  undefined1 auStack_38 [16];\n  tmp_reentrant_t *__tmp_marker;\n  \n  puVar19 = auStack_38;\n  puVar18 = auStack_38;\n  iVar1 = *(int *)PTR___stack_chk_guard_0009b540;\n  iVar13 = u->_mp_size;\n  if (iVar13 < 1) {\n    if (-1 < iVar13) {\n      r->_mp_size = 0;\n      r->_mp_exp = 0;\n      __tmp_marker = (tmp_reentrant_t *)r;\n      goto LAB_0001a69c;\n    }\n    (*(code *)PTR___gmp_sqrt_of_negative_0009b1cc)();\nLAB_0001a654:\n    in_a2 = (mpf_ptr)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)();\n  }\n  else {\n    __tmp_marker = (tmp_reentrant_t *)0x0;\n    uVar2 = u->_mp_exp;\n    unaff_s2 = (mpf_srcptr)u->_mp_d;\n    uVar6 = uVar2 & 1;\n    unaff_s1 = r->_mp_prec * 2 - uVar6;\n    r->_mp_size = r->_mp_prec;\n    r->_mp_exp = (int)(uVar2 + uVar6) / 2;\n    if (0x7f00 < (uint)(unaff_s1 * 4)) goto LAB_0001a654;\n    iVar3 = -(unaff_s1 * 4 + 7U & 0xfffffff8);\n    puVar18 = auStack_38 + iVar3;\n    in_a2 = (mpf_ptr)(&stack0xffffffd8 + iVar3);\n  }\n  if (unaff_s1 < iVar13) {\n    if (unaff_s1 != 0) {\n      iVar13 = (iVar13 - unaff_s1) * 4;\n      unaff_s2 = (mpf_srcptr)((int)unaff_s2 + iVar13);\n      iVar7 = unaff_s1 + -1;\n      iVar3 = unaff_s2->_mp_prec;\n      p_Var10 = in_a2;\n      if (iVar7 != 0) {\n        piVar5 = &unaff_s2->_mp_size;\n        do {\n          p_Var10->_mp_prec = iVar3;\n          unaff_s2 = (mpf_srcptr)(piVar5 + 1);\n          iVar7 = iVar7 + -1;\n          iVar3 = *piVar5;\n          p_Var10 = (mpf_ptr)&p_Var10->_mp_size;\n          piVar5 = (int *)unaff_s2;\n        } while (iVar7 != 0);\n        p_Var10 = (mpf_ptr)((int)in_a2 + (unaff_s1 + 0x3fffffff) * 4);\n      }\n      p_Var10->_mp_prec = iVar3;\n    }\n  }\n  else {\n    iVar3 = unaff_s1 - iVar13;\n    p_Var10 = in_a2;\n    if (iVar13 != unaff_s1) {\n      do {\n        iVar3 = iVar3 + -1;\n        p_Var10->_mp_prec = 0;\n        p_Var10 = (mpf_ptr)&p_Var10->_mp_size;\n      } while (iVar3 != 0);\n    }\n    iVar7 = iVar13 + -1;\n    piVar5 = (int *)((int)in_a2 + (unaff_s1 - iVar13) * 4);\n    iVar3 = unaff_s2->_mp_prec;\n    if (iVar7 != 0) {\n      piVar9 = piVar5;\n      piVar14 = &unaff_s2->_mp_size;\n      do {\n        *piVar9 = iVar3;\n        unaff_s2 = (mpf_srcptr)(piVar14 + 1);\n        iVar7 = iVar7 + -1;\n        iVar3 = *piVar14;\n        piVar9 = piVar9 + 1;\n        piVar14 = (int *)unaff_s2;\n      } while (iVar7 != 0);\n      iVar7 = iVar13 + 0x3fffffff;\n      iVar13 = iVar7 * 4;\n      piVar5 = piVar5 + iVar7;\n    }\n    *piVar5 = iVar3;\n  }\n  u = (mpf_srcptr)0x0;\n  (*(code *)PTR___gmpn_sqrtrem_0009b0e0)(r->_mp_d,0,in_a2,unaff_s1);\n  puVar19 = puVar18;\n  if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n    (*(code *)PTR___gmp_tmp_reentrant_free_0009b614)();\n  }\nLAB_0001a69c:\n  if (iVar1 == *(int *)PTR___stack_chk_guard_0009b540) {\n    return;\n  }\n  pcVar21 = __gmpf_random2;\n  puVar16 = PTR___stack_chk_fail_0009b4d0;\n  (*(code *)PTR___stack_chk_fail_0009b4d0)();\n  puVar17 = puVar16 + 0x888e0;\n  *(code **)(puVar19 + -4) = pcVar21;\n  *(mpf_ptr *)(puVar19 + -8) = r;\n  *(mpf_srcptr *)(puVar19 + -0xc) = unaff_s2;\n  *(int *)(puVar19 + -0x10) = unaff_s1;\n  *(int *)(puVar19 + -0x14) = iVar13;\n  *(undefined **)(puVar19 + -0x28) = puVar17;\n  *(undefined4 *)(puVar19 + -0x1c) = **(undefined4 **)(puVar16 + 0x80de0);\n  if (u == (mpf_srcptr)0x0) {\n    ((mpf_ptr)__tmp_marker)->_mp_exp = 0;\n    ((mpf_ptr)__tmp_marker)->_mp_size = 0;\n    puVar11 = (undefined1 *)0x0;\n    p_Var10 = (mpf_ptr)__tmp_marker;\n    p_Var12 = in_a2;\n  }\n  else {\n    unaff_s2 = u;\n    if ((int)u < 0) {\n      unaff_s2 = (mpf_srcptr)-(int)u;\n    }\n    p_Var4 = (mpf_srcptr)(((mpf_ptr)__tmp_marker)->_mp_prec + 1);\n    if ((int)p_Var4 <= (int)unaff_s2) {\n      unaff_s2 = p_Var4;\n    }\n    (**(code **)(puVar16 + 0x809f4))(((mpf_ptr)__tmp_marker)->_mp_d,unaff_s2);\n    iVar1 = *(int *)(puVar19 + -0x28);\n    if (**(char **)(iVar1 + -0x7eb8) == '\0') {\n      **(undefined1 **)(iVar1 + -0x7eb8) = 1;\n      (**(code **)(iVar1 + -0x7a40))(*(undefined4 *)(iVar1 + -0x7dc4));\n      iVar1 = *(int *)(*(int *)(puVar19 + -0x28) + -0x7dc4);\n    }\n    else {\n      iVar1 = *(int *)(iVar1 + -0x7dc4);\n    }\n    p_Var12 = (mpf_ptr)0x20;\n    puVar11 = puVar19 + -0x20;\n    (**(code **)(*(int *)(iVar1 + 0x10) + 4))();\n    puVar17 = *(undefined **)(puVar19 + -0x28);\n    p_Var8 = in_a2;\n    if ((int)in_a2 < 0) {\n      p_Var8 = (mpf_ptr)-(int)in_a2;\n    }\n    uVar2 = (int)p_Var8 * 2 + 1;\n    p_Var10 = *(mpf_ptr *)(puVar19 + -0x20);\n    if (uVar2 == 0) {\n      trap(7);\n    }\n    ((mpf_ptr)__tmp_marker)->_mp_exp = (uint)p_Var10 % uVar2 - (int)p_Var8;\n    if ((int)u < 0) {\n      unaff_s2 = (mpf_srcptr)-(int)unaff_s2;\n    }\n    ((mpf_ptr)__tmp_marker)->_mp_size = (int)unaff_s2;\n    r = in_a2;\n  }\n  if (*(int *)(puVar19 + -0x1c) == **(int **)(puVar17 + -0x7b00)) {\n    return;\n  }\n  pcVar21 = *(code **)(puVar17 + -0x7b70);\n  uVar22 = 0x1a8b8;\n  (*pcVar21)();\n  *(undefined4 *)(puVar19 + -0x3c) = uVar22;\n  *(undefined1 **)(puVar19 + -0x40) = auStack_38;\n  *(undefined4 *)(puVar19 + -0x44) = unaff_s7;\n  *(undefined4 *)(puVar19 + -0x48) = unaff_s6;\n  *(undefined4 *)(puVar19 + -0x4c) = unaff_s5;\n  *(undefined4 *)(puVar19 + -0x50) = unaff_s4;\n  *(mpf_ptr *)(puVar19 + -0x54) = r;\n  *(mpf_srcptr *)(puVar19 + -0x58) = unaff_s2;\n  *(mpf_srcptr *)(puVar19 + -0x5c) = u;\n  *(tmp_reentrant_t **)(puVar19 + -0x60) = __tmp_marker;\n  *(code **)(puVar19 + -0x68) = pcVar21 + 0x88780;\n  *(mpf_ptr *)(puVar19 + -0x38) = p_Var10;\n  *(undefined1 **)(puVar19 + -0x34) = puVar11;\n  *(mpf_ptr *)(puVar19 + -0x30) = p_Var12;\n  if (puVar11 == (undefined1 *)0x0) {\n    *(undefined4 *)(puVar19 + -0x34) = **(undefined4 **)(pcVar21 + 0x80a54);\n  }\n  iVar1 = (*(code *)**(undefined4 **)(pcVar21 + 0x80c4c))(100);\n  iVar13 = *(int *)(puVar19 + -0x68);\n  do {\n    iVar3 = (**(code **)(iVar13 + -0x7f3c))(*(undefined4 *)(puVar19 + -0x34));\n    piVar5 = (int *)(**(code **)(*(int *)(puVar19 + -0x68) + -0x7f94))();\n    iVar13 = *(int *)(puVar19 + -0x68);\n  } while ((*(ushort *)(*piVar5 + iVar3 * 2) & 0x20) != 0);\n  puVar20 = *(undefined4 **)(iVar13 + -0x7aa0);\n  uVar2 = 0;\n  uVar6 = 100;\n  while ((iVar3 != -1 && (uVar15 = uVar2 + 1, (*(ushort *)(*piVar5 + iVar3 * 2) & 0x20) == 0))) {\n    *(char *)(iVar1 + uVar2) = (char)iVar3;\n    iVar3 = (**(code **)(iVar13 + -0x7f3c))(*(undefined4 *)(puVar19 + -0x34));\n    iVar13 = *(int *)(puVar19 + -0x68);\n    uVar2 = uVar15;\n    if (uVar6 <= uVar15) {\n      uVar15 = uVar6 * 3 >> 1;\n      iVar1 = (*(code *)*puVar20)(iVar1,uVar6,uVar15);\n      iVar13 = *(int *)(puVar19 + -0x68);\n      uVar6 = uVar15;\n    }\n  }\n  (**(code **)(iVar13 + -0x7d5c))(iVar3,*(undefined4 *)(puVar19 + -0x34));\n  iVar13 = *(int *)(puVar19 + -0x68);\n  uVar15 = uVar6;\n  if (uVar6 <= uVar2) {\n    uVar15 = uVar6 * 3 >> 1;\n    iVar1 = (*(code *)**(undefined4 **)(iVar13 + -0x7aa0))(iVar1,uVar6,uVar15);\n    iVar13 = *(int *)(puVar19 + -0x68);\n  }\n  *(undefined1 *)(iVar1 + uVar2) = 0;\n  (**(code **)(iVar13 + -0x7ae8))\n            (*(undefined4 *)(puVar19 + -0x38),iVar1,*(undefined4 *)(puVar19 + -0x30));\n  (*(code *)**(undefined4 **)(*(int *)(puVar19 + -0x68) + -0x7e70))(iVar1,uVar15);\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "mpf_srcptr p_Var4;" type_identifier identifier ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "mpf_ptr p_Var8;" type_identifier identifier ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "mpf_ptr p_Var10;" type_identifier identifier ;) (declaration "undefined1 *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "mpf_ptr in_a2;" type_identifier identifier ;) (declaration "mpf_ptr p_Var12;" type_identifier identifier ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "int unaff_s1;" primitive_type identifier ;) (declaration "mpf_srcptr unaff_s2;" type_identifier identifier ;) (declaration "int *piVar14;" primitive_type (pointer_declarator "*piVar14" * identifier) ;) (declaration "undefined4 unaff_s4;" type_identifier identifier ;) (declaration "uint uVar15;" type_identifier identifier ;) (declaration "undefined4 unaff_s5;" type_identifier identifier ;) (declaration "undefined4 unaff_s6;" type_identifier identifier ;) (declaration "undefined4 unaff_s7;" type_identifier identifier ;) (declaration "undefined *puVar16;" type_identifier (pointer_declarator "*puVar16" * identifier) ;) (declaration "undefined *puVar17;" type_identifier (pointer_declarator "*puVar17" * identifier) ;) (declaration "undefined1 *puVar18;" type_identifier (pointer_declarator "*puVar18" * identifier) ;) (declaration "undefined1 *puVar19;" type_identifier (pointer_declarator "*puVar19" * identifier) ;) (declaration "undefined4 *puVar20;" type_identifier (pointer_declarator "*puVar20" * identifier) ;) (declaration "code *pcVar21;" type_identifier (pointer_declarator "*pcVar21" * identifier) ;) (declaration "undefined4 uVar22;" type_identifier identifier ;) (declaration "undefined1 auStack_38 [16];" type_identifier (array_declarator "auStack_38 [16]" identifier [ number_literal ]) ;) (declaration "tmp_reentrant_t *__tmp_marker;" type_identifier (pointer_declarator "*__tmp_marker" * identifier) ;) (expression_statement "puVar19 = auStack_38;" (assignment_expression "puVar19 = auStack_38" identifier = identifier) ;) (expression_statement "puVar18 = auStack_38;" (assignment_expression "puVar18 = auStack_38" identifier = identifier) ;) (expression_statement "iVar1 = *(int *)PTR___stack_chk_guard_0009b540;" (assignment_expression "iVar1 = *(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 "iVar13 = u->_mp_size;" (assignment_expression "iVar13 = u->_mp_size" identifier = (field_expression "u->_mp_size" identifier -> field_identifier)) ;) (if_statement "if (iVar13 < 1) {\n    if (-1 < iVar13) {\n      r->_mp_size = 0;\n      r->_mp_exp = 0;\n      __tmp_marker = (tmp_reentrant_t *)r;\n      goto LAB_0001a69c;\n    }\n    (*(code *)PTR___gmp_sqrt_of_negative_0009b1cc)();\nLAB_0001a654:\n    in_a2 = (mpf_ptr)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)();\n  }\n  else {\n    __tmp_marker = (tmp_reentrant_t *)0x0;\n    uVar2 = u->_mp_exp;\n    unaff_s2 = (mpf_srcptr)u->_mp_d;\n    uVar6 = uVar2 & 1;\n    unaff_s1 = r->_mp_prec * 2 - uVar6;\n    r->_mp_size = r->_mp_prec;\n    r->_mp_exp = (int)(uVar2 + uVar6) / 2;\n    if (0x7f00 < (uint)(unaff_s1 * 4)) goto LAB_0001a654;\n    iVar3 = -(unaff_s1 * 4 + 7U & 0xfffffff8);\n    puVar18 = auStack_38 + iVar3;\n    in_a2 = (mpf_ptr)(&stack0xffffffd8 + iVar3);\n  }" if (parenthesized_expression "(iVar13 < 1)" ( (binary_expression "iVar13 < 1" identifier < number_literal) )) (compound_statement "{\n    if (-1 < iVar13) {\n      r->_mp_size = 0;\n      r->_mp_exp = 0;\n      __tmp_marker = (tmp_reentrant_t *)r;\n      goto LAB_0001a69c;\n    }\n    (*(code *)PTR___gmp_sqrt_of_negative_0009b1cc)();\nLAB_0001a654:\n    in_a2 = (mpf_ptr)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)();\n  }" { (if_statement "if (-1 < iVar13) {\n      r->_mp_size = 0;\n      r->_mp_exp = 0;\n      __tmp_marker = (tmp_reentrant_t *)r;\n      goto LAB_0001a69c;\n    }" if (parenthesized_expression "(-1 < iVar13)" ( (binary_expression "-1 < iVar13" number_literal < identifier) )) (compound_statement "{\n      r->_mp_size = 0;\n      r->_mp_exp = 0;\n      __tmp_marker = (tmp_reentrant_t *)r;\n      goto LAB_0001a69c;\n    }" { (expression_statement "r->_mp_size = 0;" (assignment_expression "r->_mp_size = 0" (field_expression "r->_mp_size" identifier -> field_identifier) = number_literal) ;) (expression_statement "r->_mp_exp = 0;" (assignment_expression "r->_mp_exp = 0" (field_expression "r->_mp_exp" identifier -> field_identifier) = number_literal) ;) (expression_statement "__tmp_marker = (tmp_reentrant_t *)r;" (assignment_expression "__tmp_marker = (tmp_reentrant_t *)r" identifier = (cast_expression "(tmp_reentrant_t *)r" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (goto_statement "goto LAB_0001a69c;" goto statement_identifier ;) })) (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 "()" ( ))) ;) (labeled_statement "LAB_0001a654:\n    in_a2 = (mpf_ptr)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)();" statement_identifier : (expression_statement "in_a2 = (mpf_ptr)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)();" (assignment_expression "in_a2 = (mpf_ptr)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)()" identifier = (call_expression "(mpf_ptr)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)()" (call_expression "(mpf_ptr)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)" (parenthesized_expression "(mpf_ptr)" ( identifier )) (argument_list "(*(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 "()" ( )))) ;)) }) (else_clause "else {\n    __tmp_marker = (tmp_reentrant_t *)0x0;\n    uVar2 = u->_mp_exp;\n    unaff_s2 = (mpf_srcptr)u->_mp_d;\n    uVar6 = uVar2 & 1;\n    unaff_s1 = r->_mp_prec * 2 - uVar6;\n    r->_mp_size = r->_mp_prec;\n    r->_mp_exp = (int)(uVar2 + uVar6) / 2;\n    if (0x7f00 < (uint)(unaff_s1 * 4)) goto LAB_0001a654;\n    iVar3 = -(unaff_s1 * 4 + 7U & 0xfffffff8);\n    puVar18 = auStack_38 + iVar3;\n    in_a2 = (mpf_ptr)(&stack0xffffffd8 + iVar3);\n  }" else (compound_statement "{\n    __tmp_marker = (tmp_reentrant_t *)0x0;\n    uVar2 = u->_mp_exp;\n    unaff_s2 = (mpf_srcptr)u->_mp_d;\n    uVar6 = uVar2 & 1;\n    unaff_s1 = r->_mp_prec * 2 - uVar6;\n    r->_mp_size = r->_mp_prec;\n    r->_mp_exp = (int)(uVar2 + uVar6) / 2;\n    if (0x7f00 < (uint)(unaff_s1 * 4)) goto LAB_0001a654;\n    iVar3 = -(unaff_s1 * 4 + 7U & 0xfffffff8);\n    puVar18 = auStack_38 + iVar3;\n    in_a2 = (mpf_ptr)(&stack0xffffffd8 + iVar3);\n  }" { (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)) ;) (expression_statement "uVar2 = u->_mp_exp;" (assignment_expression "uVar2 = u->_mp_exp" identifier = (field_expression "u->_mp_exp" identifier -> field_identifier)) ;) (expression_statement "unaff_s2 = (mpf_srcptr)u->_mp_d;" (assignment_expression "unaff_s2 = (mpf_srcptr)u->_mp_d" identifier = (cast_expression "(mpf_srcptr)u->_mp_d" ( (type_descriptor "mpf_srcptr" type_identifier) ) (field_expression "u->_mp_d" identifier -> field_identifier))) ;) (expression_statement "uVar6 = uVar2 & 1;" (assignment_expression "uVar6 = uVar2 & 1" identifier = (binary_expression "uVar2 & 1" identifier & number_literal)) ;) (expression_statement "unaff_s1 = r->_mp_prec * 2 - uVar6;" (assignment_expression "unaff_s1 = r->_mp_prec * 2 - uVar6" identifier = (binary_expression "r->_mp_prec * 2 - uVar6" (binary_expression "r->_mp_prec * 2" (field_expression "r->_mp_prec" identifier -> field_identifier) * number_literal) - identifier)) ;) (expression_statement "r->_mp_size = r->_mp_prec;" (assignment_expression "r->_mp_size = r->_mp_prec" (field_expression "r->_mp_size" identifier -> field_identifier) = (field_expression "r->_mp_prec" identifier -> field_identifier)) ;) (expression_statement "r->_mp_exp = (int)(uVar2 + uVar6) / 2;" (assignment_expression "r->_mp_exp = (int)(uVar2 + uVar6) / 2" (field_expression "r->_mp_exp" identifier -> field_identifier) = (binary_expression "(int)(uVar2 + uVar6) / 2" (cast_expression "(int)(uVar2 + uVar6)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar2 + uVar6)" ( (binary_expression "uVar2 + uVar6" identifier + identifier) ))) / number_literal)) ;) (if_statement "if (0x7f00 < (uint)(unaff_s1 * 4)) goto LAB_0001a654;" if (parenthesized_expression "(0x7f00 < (uint)(unaff_s1 * 4))" ( (binary_expression "0x7f00 < (uint)(unaff_s1 * 4)" number_literal < (call_expression "(uint)(unaff_s1 * 4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(unaff_s1 * 4)" ( (binary_expression "unaff_s1 * 4" identifier * number_literal) )))) )) (goto_statement "goto LAB_0001a654;" goto statement_identifier ;)) (expression_statement "iVar3 = -(unaff_s1 * 4 + 7U & 0xfffffff8);" (assignment_expression "iVar3 = -(unaff_s1 * 4 + 7U & 0xfffffff8)" identifier = (unary_expression "-(unaff_s1 * 4 + 7U & 0xfffffff8)" - (parenthesized_expression "(unaff_s1 * 4 + 7U & 0xfffffff8)" ( (binary_expression "unaff_s1 * 4 + 7U & 0xfffffff8" (binary_expression "unaff_s1 * 4 + 7U" (binary_expression "unaff_s1 * 4" identifier * number_literal) + number_literal) & number_literal) )))) ;) (expression_statement "puVar18 = auStack_38 + iVar3;" (assignment_expression "puVar18 = auStack_38 + iVar3" identifier = (binary_expression "auStack_38 + iVar3" identifier + identifier)) ;) (expression_statement "in_a2 = (mpf_ptr)(&stack0xffffffd8 + iVar3);" (assignment_expression "in_a2 = (mpf_ptr)(&stack0xffffffd8 + iVar3)" identifier = (call_expression "(mpf_ptr)(&stack0xffffffd8 + iVar3)" (parenthesized_expression "(mpf_ptr)" ( identifier )) (argument_list "(&stack0xffffffd8 + iVar3)" ( (binary_expression "&stack0xffffffd8 + iVar3" (pointer_expression "&stack0xffffffd8" & identifier) + identifier) )))) ;) }))) (if_statement "if (unaff_s1 < iVar13) {\n    if (unaff_s1 != 0) {\n      iVar13 = (iVar13 - unaff_s1) * 4;\n      unaff_s2 = (mpf_srcptr)((int)unaff_s2 + iVar13);\n      iVar7 = unaff_s1 + -1;\n      iVar3 = unaff_s2->_mp_prec;\n      p_Var10 = in_a2;\n      if (iVar7 != 0) {\n        piVar5 = &unaff_s2->_mp_size;\n        do {\n          p_Var10->_mp_prec = iVar3;\n          unaff_s2 = (mpf_srcptr)(piVar5 + 1);\n          iVar7 = iVar7 + -1;\n          iVar3 = *piVar5;\n          p_Var10 = (mpf_ptr)&p_Var10->_mp_size;\n          piVar5 = (int *)unaff_s2;\n        } while (iVar7 != 0);\n        p_Var10 = (mpf_ptr)((int)in_a2 + (unaff_s1 + 0x3fffffff) * 4);\n      }\n      p_Var10->_mp_prec = iVar3;\n    }\n  }\n  else {\n    iVar3 = unaff_s1 - iVar13;\n    p_Var10 = in_a2;\n    if (iVar13 != unaff_s1) {\n      do {\n        iVar3 = iVar3 + -1;\n        p_Var10->_mp_prec = 0;\n        p_Var10 = (mpf_ptr)&p_Var10->_mp_size;\n      } while (iVar3 != 0);\n    }\n    iVar7 = iVar13 + -1;\n    piVar5 = (int *)((int)in_a2 + (unaff_s1 - iVar13) * 4);\n    iVar3 = unaff_s2->_mp_prec;\n    if (iVar7 != 0) {\n      piVar9 = piVar5;\n      piVar14 = &unaff_s2->_mp_size;\n      do {\n        *piVar9 = iVar3;\n        unaff_s2 = (mpf_srcptr)(piVar14 + 1);\n        iVar7 = iVar7 + -1;\n        iVar3 = *piVar14;\n        piVar9 = piVar9 + 1;\n        piVar14 = (int *)unaff_s2;\n      } while (iVar7 != 0);\n      iVar7 = iVar13 + 0x3fffffff;\n      iVar13 = iVar7 * 4;\n      piVar5 = piVar5 + iVar7;\n    }\n    *piVar5 = iVar3;\n  }" if (parenthesized_expression "(unaff_s1 < iVar13)" ( (binary_expression "unaff_s1 < iVar13" identifier < identifier) )) (compound_statement "{\n    if (unaff_s1 != 0) {\n      iVar13 = (iVar13 - unaff_s1) * 4;\n      unaff_s2 = (mpf_srcptr)((int)unaff_s2 + iVar13);\n      iVar7 = unaff_s1 + -1;\n      iVar3 = unaff_s2->_mp_prec;\n      p_Var10 = in_a2;\n      if (iVar7 != 0) {\n        piVar5 = &unaff_s2->_mp_size;\n        do {\n          p_Var10->_mp_prec = iVar3;\n          unaff_s2 = (mpf_srcptr)(piVar5 + 1);\n          iVar7 = iVar7 + -1;\n          iVar3 = *piVar5;\n          p_Var10 = (mpf_ptr)&p_Var10->_mp_size;\n          piVar5 = (int *)unaff_s2;\n        } while (iVar7 != 0);\n        p_Var10 = (mpf_ptr)((int)in_a2 + (unaff_s1 + 0x3fffffff) * 4);\n      }\n      p_Var10->_mp_prec = iVar3;\n    }\n  }" { (if_statement "if (unaff_s1 != 0) {\n      iVar13 = (iVar13 - unaff_s1) * 4;\n      unaff_s2 = (mpf_srcptr)((int)unaff_s2 + iVar13);\n      iVar7 = unaff_s1 + -1;\n      iVar3 = unaff_s2->_mp_prec;\n      p_Var10 = in_a2;\n      if (iVar7 != 0) {\n        piVar5 = &unaff_s2->_mp_size;\n        do {\n          p_Var10->_mp_prec = iVar3;\n          unaff_s2 = (mpf_srcptr)(piVar5 + 1);\n          iVar7 = iVar7 + -1;\n          iVar3 = *piVar5;\n          p_Var10 = (mpf_ptr)&p_Var10->_mp_size;\n          piVar5 = (int *)unaff_s2;\n        } while (iVar7 != 0);\n        p_Var10 = (mpf_ptr)((int)in_a2 + (unaff_s1 + 0x3fffffff) * 4);\n      }\n      p_Var10->_mp_prec = iVar3;\n    }" if (parenthesized_expression "(unaff_s1 != 0)" ( (binary_expression "unaff_s1 != 0" identifier != number_literal) )) (compound_statement "{\n      iVar13 = (iVar13 - unaff_s1) * 4;\n      unaff_s2 = (mpf_srcptr)((int)unaff_s2 + iVar13);\n      iVar7 = unaff_s1 + -1;\n      iVar3 = unaff_s2->_mp_prec;\n      p_Var10 = in_a2;\n      if (iVar7 != 0) {\n        piVar5 = &unaff_s2->_mp_size;\n        do {\n          p_Var10->_mp_prec = iVar3;\n          unaff_s2 = (mpf_srcptr)(piVar5 + 1);\n          iVar7 = iVar7 + -1;\n          iVar3 = *piVar5;\n          p_Var10 = (mpf_ptr)&p_Var10->_mp_size;\n          piVar5 = (int *)unaff_s2;\n        } while (iVar7 != 0);\n        p_Var10 = (mpf_ptr)((int)in_a2 + (unaff_s1 + 0x3fffffff) * 4);\n      }\n      p_Var10->_mp_prec = iVar3;\n    }" { (expression_statement "iVar13 = (iVar13 - unaff_s1) * 4;" (assignment_expression "iVar13 = (iVar13 - unaff_s1) * 4" identifier = (binary_expression "(iVar13 - unaff_s1) * 4" (parenthesized_expression "(iVar13 - unaff_s1)" ( (binary_expression "iVar13 - unaff_s1" identifier - identifier) )) * number_literal)) ;) (expression_statement "unaff_s2 = (mpf_srcptr)((int)unaff_s2 + iVar13);" (assignment_expression "unaff_s2 = (mpf_srcptr)((int)unaff_s2 + iVar13)" identifier = (call_expression "(mpf_srcptr)((int)unaff_s2 + iVar13)" (parenthesized_expression "(mpf_srcptr)" ( identifier )) (argument_list "((int)unaff_s2 + iVar13)" ( (binary_expression "(int)unaff_s2 + iVar13" (cast_expression "(int)unaff_s2" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "iVar7 = unaff_s1 + -1;" (assignment_expression "iVar7 = unaff_s1 + -1" identifier = (binary_expression "unaff_s1 + -1" identifier + number_literal)) ;) (expression_statement "iVar3 = unaff_s2->_mp_prec;" (assignment_expression "iVar3 = unaff_s2->_mp_prec" identifier = (field_expression "unaff_s2->_mp_prec" identifier -> field_identifier)) ;) (expression_statement "p_Var10 = in_a2;" (assignment_expression "p_Var10 = in_a2" identifier = identifier) ;) (if_statement "if (iVar7 != 0) {\n        piVar5 = &unaff_s2->_mp_size;\n        do {\n          p_Var10->_mp_prec = iVar3;\n          unaff_s2 = (mpf_srcptr)(piVar5 + 1);\n          iVar7 = iVar7 + -1;\n          iVar3 = *piVar5;\n          p_Var10 = (mpf_ptr)&p_Var10->_mp_size;\n          piVar5 = (int *)unaff_s2;\n        } while (iVar7 != 0);\n        p_Var10 = (mpf_ptr)((int)in_a2 + (unaff_s1 + 0x3fffffff) * 4);\n      }" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (compound_statement "{\n        piVar5 = &unaff_s2->_mp_size;\n        do {\n          p_Var10->_mp_prec = iVar3;\n          unaff_s2 = (mpf_srcptr)(piVar5 + 1);\n          iVar7 = iVar7 + -1;\n          iVar3 = *piVar5;\n          p_Var10 = (mpf_ptr)&p_Var10->_mp_size;\n          piVar5 = (int *)unaff_s2;\n        } while (iVar7 != 0);\n        p_Var10 = (mpf_ptr)((int)in_a2 + (unaff_s1 + 0x3fffffff) * 4);\n      }" { (expression_statement "piVar5 = &unaff_s2->_mp_size;" (assignment_expression "piVar5 = &unaff_s2->_mp_size" identifier = (pointer_expression "&unaff_s2->_mp_size" & (field_expression "unaff_s2->_mp_size" identifier -> field_identifier))) ;) (do_statement "do {\n          p_Var10->_mp_prec = iVar3;\n          unaff_s2 = (mpf_srcptr)(piVar5 + 1);\n          iVar7 = iVar7 + -1;\n          iVar3 = *piVar5;\n          p_Var10 = (mpf_ptr)&p_Var10->_mp_size;\n          piVar5 = (int *)unaff_s2;\n        } while (iVar7 != 0);" do (compound_statement "{\n          p_Var10->_mp_prec = iVar3;\n          unaff_s2 = (mpf_srcptr)(piVar5 + 1);\n          iVar7 = iVar7 + -1;\n          iVar3 = *piVar5;\n          p_Var10 = (mpf_ptr)&p_Var10->_mp_size;\n          piVar5 = (int *)unaff_s2;\n        }" { (expression_statement "p_Var10->_mp_prec = iVar3;" (assignment_expression "p_Var10->_mp_prec = iVar3" (field_expression "p_Var10->_mp_prec" identifier -> field_identifier) = identifier) ;) (expression_statement "unaff_s2 = (mpf_srcptr)(piVar5 + 1);" (assignment_expression "unaff_s2 = (mpf_srcptr)(piVar5 + 1)" identifier = (call_expression "(mpf_srcptr)(piVar5 + 1)" (parenthesized_expression "(mpf_srcptr)" ( identifier )) (argument_list "(piVar5 + 1)" ( (binary_expression "piVar5 + 1" identifier + number_literal) )))) ;) (expression_statement "iVar7 = iVar7 + -1;" (assignment_expression "iVar7 = iVar7 + -1" identifier = (binary_expression "iVar7 + -1" identifier + number_literal)) ;) (expression_statement "iVar3 = *piVar5;" (assignment_expression "iVar3 = *piVar5" identifier = (pointer_expression "*piVar5" * identifier)) ;) (expression_statement "p_Var10 = (mpf_ptr)&p_Var10->_mp_size;" (assignment_expression "p_Var10 = (mpf_ptr)&p_Var10->_mp_size" identifier = (binary_expression "(mpf_ptr)&p_Var10->_mp_size" (parenthesized_expression "(mpf_ptr)" ( identifier )) & (field_expression "p_Var10->_mp_size" identifier -> field_identifier))) ;) (expression_statement "piVar5 = (int *)unaff_s2;" (assignment_expression "piVar5 = (int *)unaff_s2" identifier = (cast_expression "(int *)unaff_s2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) }) while (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) ;) (expression_statement "p_Var10 = (mpf_ptr)((int)in_a2 + (unaff_s1 + 0x3fffffff) * 4);" (assignment_expression "p_Var10 = (mpf_ptr)((int)in_a2 + (unaff_s1 + 0x3fffffff) * 4)" identifier = (call_expression "(mpf_ptr)((int)in_a2 + (unaff_s1 + 0x3fffffff) * 4)" (parenthesized_expression "(mpf_ptr)" ( identifier )) (argument_list "((int)in_a2 + (unaff_s1 + 0x3fffffff) * 4)" ( (binary_expression "(int)in_a2 + (unaff_s1 + 0x3fffffff) * 4" (cast_expression "(int)in_a2" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "(unaff_s1 + 0x3fffffff) * 4" (parenthesized_expression "(unaff_s1 + 0x3fffffff)" ( (binary_expression "unaff_s1 + 0x3fffffff" identifier + number_literal) )) * number_literal)) )))) ;) })) (expression_statement "p_Var10->_mp_prec = iVar3;" (assignment_expression "p_Var10->_mp_prec = iVar3" (field_expression "p_Var10->_mp_prec" identifier -> field_identifier) = identifier) ;) })) }) (else_clause "else {\n    iVar3 = unaff_s1 - iVar13;\n    p_Var10 = in_a2;\n    if (iVar13 != unaff_s1) {\n      do {\n        iVar3 = iVar3 + -1;\n        p_Var10->_mp_prec = 0;\n        p_Var10 = (mpf_ptr)&p_Var10->_mp_size;\n      } while (iVar3 != 0);\n    }\n    iVar7 = iVar13 + -1;\n    piVar5 = (int *)((int)in_a2 + (unaff_s1 - iVar13) * 4);\n    iVar3 = unaff_s2->_mp_prec;\n    if (iVar7 != 0) {\n      piVar9 = piVar5;\n      piVar14 = &unaff_s2->_mp_size;\n      do {\n        *piVar9 = iVar3;\n        unaff_s2 = (mpf_srcptr)(piVar14 + 1);\n        iVar7 = iVar7 + -1;\n        iVar3 = *piVar14;\n        piVar9 = piVar9 + 1;\n        piVar14 = (int *)unaff_s2;\n      } while (iVar7 != 0);\n      iVar7 = iVar13 + 0x3fffffff;\n      iVar13 = iVar7 * 4;\n      piVar5 = piVar5 + iVar7;\n    }\n    *piVar5 = iVar3;\n  }" else (compound_statement "{\n    iVar3 = unaff_s1 - iVar13;\n    p_Var10 = in_a2;\n    if (iVar13 != unaff_s1) {\n      do {\n        iVar3 = iVar3 + -1;\n        p_Var10->_mp_prec = 0;\n        p_Var10 = (mpf_ptr)&p_Var10->_mp_size;\n      } while (iVar3 != 0);\n    }\n    iVar7 = iVar13 + -1;\n    piVar5 = (int *)((int)in_a2 + (unaff_s1 - iVar13) * 4);\n    iVar3 = unaff_s2->_mp_prec;\n    if (iVar7 != 0) {\n      piVar9 = piVar5;\n      piVar14 = &unaff_s2->_mp_size;\n      do {\n        *piVar9 = iVar3;\n        unaff_s2 = (mpf_srcptr)(piVar14 + 1);\n        iVar7 = iVar7 + -1;\n        iVar3 = *piVar14;\n        piVar9 = piVar9 + 1;\n        piVar14 = (int *)unaff_s2;\n      } while (iVar7 != 0);\n      iVar7 = iVar13 + 0x3fffffff;\n      iVar13 = iVar7 * 4;\n      piVar5 = piVar5 + iVar7;\n    }\n    *piVar5 = iVar3;\n  }" { (expression_statement "iVar3 = unaff_s1 - iVar13;" (assignment_expression "iVar3 = unaff_s1 - iVar13" identifier = (binary_expression "unaff_s1 - iVar13" identifier - identifier)) ;) (expression_statement "p_Var10 = in_a2;" (assignment_expression "p_Var10 = in_a2" identifier = identifier) ;) (if_statement "if (iVar13 != unaff_s1) {\n      do {\n        iVar3 = iVar3 + -1;\n        p_Var10->_mp_prec = 0;\n        p_Var10 = (mpf_ptr)&p_Var10->_mp_size;\n      } while (iVar3 != 0);\n    }" if (parenthesized_expression "(iVar13 != unaff_s1)" ( (binary_expression "iVar13 != unaff_s1" identifier != identifier) )) (compound_statement "{\n      do {\n        iVar3 = iVar3 + -1;\n        p_Var10->_mp_prec = 0;\n        p_Var10 = (mpf_ptr)&p_Var10->_mp_size;\n      } while (iVar3 != 0);\n    }" { (do_statement "do {\n        iVar3 = iVar3 + -1;\n        p_Var10->_mp_prec = 0;\n        p_Var10 = (mpf_ptr)&p_Var10->_mp_size;\n      } while (iVar3 != 0);" do (compound_statement "{\n        iVar3 = iVar3 + -1;\n        p_Var10->_mp_prec = 0;\n        p_Var10 = (mpf_ptr)&p_Var10->_mp_size;\n      }" { (expression_statement "iVar3 = iVar3 + -1;" (assignment_expression "iVar3 = iVar3 + -1" identifier = (binary_expression "iVar3 + -1" identifier + number_literal)) ;) (expression_statement "p_Var10->_mp_prec = 0;" (assignment_expression "p_Var10->_mp_prec = 0" (field_expression "p_Var10->_mp_prec" identifier -> field_identifier) = number_literal) ;) (expression_statement "p_Var10 = (mpf_ptr)&p_Var10->_mp_size;" (assignment_expression "p_Var10 = (mpf_ptr)&p_Var10->_mp_size" identifier = (binary_expression "(mpf_ptr)&p_Var10->_mp_size" (parenthesized_expression "(mpf_ptr)" ( identifier )) & (field_expression "p_Var10->_mp_size" identifier -> field_identifier))) ;) }) while (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) ;) })) (expression_statement "iVar7 = iVar13 + -1;" (assignment_expression "iVar7 = iVar13 + -1" identifier = (binary_expression "iVar13 + -1" identifier + number_literal)) ;) (expression_statement "piVar5 = (int *)((int)in_a2 + (unaff_s1 - iVar13) * 4);" (assignment_expression "piVar5 = (int *)((int)in_a2 + (unaff_s1 - iVar13) * 4)" identifier = (cast_expression "(int *)((int)in_a2 + (unaff_s1 - iVar13) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)in_a2 + (unaff_s1 - iVar13) * 4)" ( (binary_expression "(int)in_a2 + (unaff_s1 - iVar13) * 4" (cast_expression "(int)in_a2" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "(unaff_s1 - iVar13) * 4" (parenthesized_expression "(unaff_s1 - iVar13)" ( (binary_expression "unaff_s1 - iVar13" identifier - identifier) )) * number_literal)) )))) ;) (expression_statement "iVar3 = unaff_s2->_mp_prec;" (assignment_expression "iVar3 = unaff_s2->_mp_prec" identifier = (field_expression "unaff_s2->_mp_prec" identifier -> field_identifier)) ;) (if_statement "if (iVar7 != 0) {\n      piVar9 = piVar5;\n      piVar14 = &unaff_s2->_mp_size;\n      do {\n        *piVar9 = iVar3;\n        unaff_s2 = (mpf_srcptr)(piVar14 + 1);\n        iVar7 = iVar7 + -1;\n        iVar3 = *piVar14;\n        piVar9 = piVar9 + 1;\n        piVar14 = (int *)unaff_s2;\n      } while (iVar7 != 0);\n      iVar7 = iVar13 + 0x3fffffff;\n      iVar13 = iVar7 * 4;\n      piVar5 = piVar5 + iVar7;\n    }" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (compound_statement "{\n      piVar9 = piVar5;\n      piVar14 = &unaff_s2->_mp_size;\n      do {\n        *piVar9 = iVar3;\n        unaff_s2 = (mpf_srcptr)(piVar14 + 1);\n        iVar7 = iVar7 + -1;\n        iVar3 = *piVar14;\n        piVar9 = piVar9 + 1;\n        piVar14 = (int *)unaff_s2;\n      } while (iVar7 != 0);\n      iVar7 = iVar13 + 0x3fffffff;\n      iVar13 = iVar7 * 4;\n      piVar5 = piVar5 + iVar7;\n    }" { (expression_statement "piVar9 = piVar5;" (assignment_expression "piVar9 = piVar5" identifier = identifier) ;) (expression_statement "piVar14 = &unaff_s2->_mp_size;" (assignment_expression "piVar14 = &unaff_s2->_mp_size" identifier = (pointer_expression "&unaff_s2->_mp_size" & (field_expression "unaff_s2->_mp_size" identifier -> field_identifier))) ;) (do_statement "do {\n        *piVar9 = iVar3;\n        unaff_s2 = (mpf_srcptr)(piVar14 + 1);\n        iVar7 = iVar7 + -1;\n        iVar3 = *piVar14;\n        piVar9 = piVar9 + 1;\n        piVar14 = (int *)unaff_s2;\n      } while (iVar7 != 0);" do (compound_statement "{\n        *piVar9 = iVar3;\n        unaff_s2 = (mpf_srcptr)(piVar14 + 1);\n        iVar7 = iVar7 + -1;\n        iVar3 = *piVar14;\n        piVar9 = piVar9 + 1;\n        piVar14 = (int *)unaff_s2;\n      }" { (expression_statement "*piVar9 = iVar3;" (assignment_expression "*piVar9 = iVar3" (pointer_expression "*piVar9" * identifier) = identifier) ;) (expression_statement "unaff_s2 = (mpf_srcptr)(piVar14 + 1);" (assignment_expression "unaff_s2 = (mpf_srcptr)(piVar14 + 1)" identifier = (call_expression "(mpf_srcptr)(piVar14 + 1)" (parenthesized_expression "(mpf_srcptr)" ( identifier )) (argument_list "(piVar14 + 1)" ( (binary_expression "piVar14 + 1" identifier + number_literal) )))) ;) (expression_statement "iVar7 = iVar7 + -1;" (assignment_expression "iVar7 = iVar7 + -1" identifier = (binary_expression "iVar7 + -1" identifier + number_literal)) ;) (expression_statement "iVar3 = *piVar14;" (assignment_expression "iVar3 = *piVar14" identifier = (pointer_expression "*piVar14" * identifier)) ;) (expression_statement "piVar9 = piVar9 + 1;" (assignment_expression "piVar9 = piVar9 + 1" identifier = (binary_expression "piVar9 + 1" identifier + number_literal)) ;) (expression_statement "piVar14 = (int *)unaff_s2;" (assignment_expression "piVar14 = (int *)unaff_s2" identifier = (cast_expression "(int *)unaff_s2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) }) while (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) ;) (expression_statement "iVar7 = iVar13 + 0x3fffffff;" (assignment_expression "iVar7 = iVar13 + 0x3fffffff" identifier = (binary_expression "iVar13 + 0x3fffffff" identifier + number_literal)) ;) (expression_statement "iVar13 = iVar7 * 4;" (assignment_expression "iVar13 = iVar7 * 4" identifier = (binary_expression "iVar7 * 4" identifier * number_literal)) ;) (expression_statement "piVar5 = piVar5 + iVar7;" (assignment_expression "piVar5 = piVar5 + iVar7" identifier = (binary_expression "piVar5 + iVar7" identifier + identifier)) ;) })) (expression_statement "*piVar5 = iVar3;" (assignment_expression "*piVar5 = iVar3" (pointer_expression "*piVar5" * identifier) = identifier) ;) }))) (expression_statement "u = (mpf_srcptr)0x0;" (assignment_expression "u = (mpf_srcptr)0x0" identifier = (cast_expression "(mpf_srcptr)0x0" ( (type_descriptor "mpf_srcptr" type_identifier) ) number_literal)) ;) (expression_statement "(*(code *)PTR___gmpn_sqrtrem_0009b0e0)(r->_mp_d,0,in_a2,unaff_s1);" (call_expression "(*(code *)PTR___gmpn_sqrtrem_0009b0e0)(r->_mp_d,0,in_a2,unaff_s1)" (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 "(r->_mp_d,0,in_a2,unaff_s1)" ( (field_expression "r->_mp_d" identifier -> field_identifier) , number_literal , identifier , identifier ))) ;) (expression_statement "puVar19 = puVar18;" (assignment_expression "puVar19 = puVar18" 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 "()" ( ))) ;) })) (labeled_statement "LAB_0001a69c:\n  if (iVar1 == *(int *)PTR___stack_chk_guard_0009b540) {\n    return;\n  }" statement_identifier : (if_statement "if (iVar1 == *(int *)PTR___stack_chk_guard_0009b540) {\n    return;\n  }" if (parenthesized_expression "(iVar1 == *(int *)PTR___stack_chk_guard_0009b540)" ( (binary_expression "iVar1 == *(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 "pcVar21 = __gmpf_random2;" (assignment_expression "pcVar21 = __gmpf_random2" identifier = identifier) ;) (expression_statement "puVar16 = PTR___stack_chk_fail_0009b4d0;" (assignment_expression "puVar16 = 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 "puVar17 = puVar16 + 0x888e0;" (assignment_expression "puVar17 = puVar16 + 0x888e0" identifier = (binary_expression "puVar16 + 0x888e0" identifier + number_literal)) ;) (expression_statement "*(code **)(puVar19 + -4) = pcVar21;" (assignment_expression "*(code **)(puVar19 + -4) = pcVar21" (pointer_expression "*(code **)(puVar19 + -4)" * (cast_expression "(code **)(puVar19 + -4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar19 + -4)" ( (binary_expression "puVar19 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mpf_ptr *)(puVar19 + -8) = r;" (assignment_expression "*(mpf_ptr *)(puVar19 + -8) = r" (pointer_expression "*(mpf_ptr *)(puVar19 + -8)" * (cast_expression "(mpf_ptr *)(puVar19 + -8)" ( (type_descriptor "mpf_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -8)" ( (binary_expression "puVar19 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mpf_srcptr *)(puVar19 + -0xc) = unaff_s2;" (assignment_expression "*(mpf_srcptr *)(puVar19 + -0xc) = unaff_s2" (pointer_expression "*(mpf_srcptr *)(puVar19 + -0xc)" * (cast_expression "(mpf_srcptr *)(puVar19 + -0xc)" ( (type_descriptor "mpf_srcptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0xc)" ( (binary_expression "puVar19 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar19 + -0x10) = unaff_s1;" (assignment_expression "*(int *)(puVar19 + -0x10) = unaff_s1" (pointer_expression "*(int *)(puVar19 + -0x10)" * (cast_expression "(int *)(puVar19 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x10)" ( (binary_expression "puVar19 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar19 + -0x14) = iVar13;" (assignment_expression "*(int *)(puVar19 + -0x14) = iVar13" (pointer_expression "*(int *)(puVar19 + -0x14)" * (cast_expression "(int *)(puVar19 + -0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x14)" ( (binary_expression "puVar19 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)(puVar19 + -0x28) = puVar17;" (assignment_expression "*(undefined **)(puVar19 + -0x28) = puVar17" (pointer_expression "*(undefined **)(puVar19 + -0x28)" * (cast_expression "(undefined **)(puVar19 + -0x28)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar19 + -0x28)" ( (binary_expression "puVar19 + -0x28" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar19 + -0x1c) = **(undefined4 **)(puVar16 + 0x80de0);" (assignment_expression "*(undefined4 *)(puVar19 + -0x1c) = **(undefined4 **)(puVar16 + 0x80de0)" (pointer_expression "*(undefined4 *)(puVar19 + -0x1c)" * (cast_expression "(undefined4 *)(puVar19 + -0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x1c)" ( (binary_expression "puVar19 + -0x1c" identifier + number_literal) )))) = (pointer_expression "**(undefined4 **)(puVar16 + 0x80de0)" * (pointer_expression "*(undefined4 **)(puVar16 + 0x80de0)" * (cast_expression "(undefined4 **)(puVar16 + 0x80de0)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x80de0)" ( (binary_expression "puVar16 + 0x80de0" identifier + number_literal) )))))) ;) (if_statement "if (u == (mpf_srcptr)0x0) {\n    ((mpf_ptr)__tmp_marker)->_mp_exp = 0;\n    ((mpf_ptr)__tmp_marker)->_mp_size = 0;\n    puVar11 = (undefined1 *)0x0;\n    p_Var10 = (mpf_ptr)__tmp_marker;\n    p_Var12 = in_a2;\n  }\n  else {\n    unaff_s2 = u;\n    if ((int)u < 0) {\n      unaff_s2 = (mpf_srcptr)-(int)u;\n    }\n    p_Var4 = (mpf_srcptr)(((mpf_ptr)__tmp_marker)->_mp_prec + 1);\n    if ((int)p_Var4 <= (int)unaff_s2) {\n      unaff_s2 = p_Var4;\n    }\n    (**(code **)(puVar16 + 0x809f4))(((mpf_ptr)__tmp_marker)->_mp_d,unaff_s2);\n    iVar1 = *(int *)(puVar19 + -0x28);\n    if (**(char **)(iVar1 + -0x7eb8) == '\0') {\n      **(undefined1 **)(iVar1 + -0x7eb8) = 1;\n      (**(code **)(iVar1 + -0x7a40))(*(undefined4 *)(iVar1 + -0x7dc4));\n      iVar1 = *(int *)(*(int *)(puVar19 + -0x28) + -0x7dc4);\n    }\n    else {\n      iVar1 = *(int *)(iVar1 + -0x7dc4);\n    }\n    p_Var12 = (mpf_ptr)0x20;\n    puVar11 = puVar19 + -0x20;\n    (**(code **)(*(int *)(iVar1 + 0x10) + 4))();\n    puVar17 = *(undefined **)(puVar19 + -0x28);\n    p_Var8 = in_a2;\n    if ((int)in_a2 < 0) {\n      p_Var8 = (mpf_ptr)-(int)in_a2;\n    }\n    uVar2 = (int)p_Var8 * 2 + 1;\n    p_Var10 = *(mpf_ptr *)(puVar19 + -0x20);\n    if (uVar2 == 0) {\n      trap(7);\n    }\n    ((mpf_ptr)__tmp_marker)->_mp_exp = (uint)p_Var10 % uVar2 - (int)p_Var8;\n    if ((int)u < 0) {\n      unaff_s2 = (mpf_srcptr)-(int)unaff_s2;\n    }\n    ((mpf_ptr)__tmp_marker)->_mp_size = (int)unaff_s2;\n    r = in_a2;\n  }" if (parenthesized_expression "(u == (mpf_srcptr)0x0)" ( (binary_expression "u == (mpf_srcptr)0x0" identifier == (cast_expression "(mpf_srcptr)0x0" ( (type_descriptor "mpf_srcptr" type_identifier) ) number_literal)) )) (compound_statement "{\n    ((mpf_ptr)__tmp_marker)->_mp_exp = 0;\n    ((mpf_ptr)__tmp_marker)->_mp_size = 0;\n    puVar11 = (undefined1 *)0x0;\n    p_Var10 = (mpf_ptr)__tmp_marker;\n    p_Var12 = in_a2;\n  }" { (expression_statement "((mpf_ptr)__tmp_marker)->_mp_exp = 0;" (assignment_expression "((mpf_ptr)__tmp_marker)->_mp_exp = 0" (field_expression "((mpf_ptr)__tmp_marker)->_mp_exp" (parenthesized_expression "((mpf_ptr)__tmp_marker)" ( (cast_expression "(mpf_ptr)__tmp_marker" ( (type_descriptor "mpf_ptr" type_identifier) ) identifier) )) -> field_identifier) = number_literal) ;) (expression_statement "((mpf_ptr)__tmp_marker)->_mp_size = 0;" (assignment_expression "((mpf_ptr)__tmp_marker)->_mp_size = 0" (field_expression "((mpf_ptr)__tmp_marker)->_mp_size" (parenthesized_expression "((mpf_ptr)__tmp_marker)" ( (cast_expression "(mpf_ptr)__tmp_marker" ( (type_descriptor "mpf_ptr" type_identifier) ) identifier) )) -> field_identifier) = number_literal) ;) (expression_statement "puVar11 = (undefined1 *)0x0;" (assignment_expression "puVar11 = (undefined1 *)0x0" identifier = (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "p_Var10 = (mpf_ptr)__tmp_marker;" (assignment_expression "p_Var10 = (mpf_ptr)__tmp_marker" identifier = (cast_expression "(mpf_ptr)__tmp_marker" ( (type_descriptor "mpf_ptr" type_identifier) ) identifier)) ;) (expression_statement "p_Var12 = in_a2;" (assignment_expression "p_Var12 = in_a2" identifier = identifier) ;) }) (else_clause "else {\n    unaff_s2 = u;\n    if ((int)u < 0) {\n      unaff_s2 = (mpf_srcptr)-(int)u;\n    }\n    p_Var4 = (mpf_srcptr)(((mpf_ptr)__tmp_marker)->_mp_prec + 1);\n    if ((int)p_Var4 <= (int)unaff_s2) {\n      unaff_s2 = p_Var4;\n    }\n    (**(code **)(puVar16 + 0x809f4))(((mpf_ptr)__tmp_marker)->_mp_d,unaff_s2);\n    iVar1 = *(int *)(puVar19 + -0x28);\n    if (**(char **)(iVar1 + -0x7eb8) == '\0') {\n      **(undefined1 **)(iVar1 + -0x7eb8) = 1;\n      (**(code **)(iVar1 + -0x7a40))(*(undefined4 *)(iVar1 + -0x7dc4));\n      iVar1 = *(int *)(*(int *)(puVar19 + -0x28) + -0x7dc4);\n    }\n    else {\n      iVar1 = *(int *)(iVar1 + -0x7dc4);\n    }\n    p_Var12 = (mpf_ptr)0x20;\n    puVar11 = puVar19 + -0x20;\n    (**(code **)(*(int *)(iVar1 + 0x10) + 4))();\n    puVar17 = *(undefined **)(puVar19 + -0x28);\n    p_Var8 = in_a2;\n    if ((int)in_a2 < 0) {\n      p_Var8 = (mpf_ptr)-(int)in_a2;\n    }\n    uVar2 = (int)p_Var8 * 2 + 1;\n    p_Var10 = *(mpf_ptr *)(puVar19 + -0x20);\n    if (uVar2 == 0) {\n      trap(7);\n    }\n    ((mpf_ptr)__tmp_marker)->_mp_exp = (uint)p_Var10 % uVar2 - (int)p_Var8;\n    if ((int)u < 0) {\n      unaff_s2 = (mpf_srcptr)-(int)unaff_s2;\n    }\n    ((mpf_ptr)__tmp_marker)->_mp_size = (int)unaff_s2;\n    r = in_a2;\n  }" else (compound_statement "{\n    unaff_s2 = u;\n    if ((int)u < 0) {\n      unaff_s2 = (mpf_srcptr)-(int)u;\n    }\n    p_Var4 = (mpf_srcptr)(((mpf_ptr)__tmp_marker)->_mp_prec + 1);\n    if ((int)p_Var4 <= (int)unaff_s2) {\n      unaff_s2 = p_Var4;\n    }\n    (**(code **)(puVar16 + 0x809f4))(((mpf_ptr)__tmp_marker)->_mp_d,unaff_s2);\n    iVar1 = *(int *)(puVar19 + -0x28);\n    if (**(char **)(iVar1 + -0x7eb8) == '\0') {\n      **(undefined1 **)(iVar1 + -0x7eb8) = 1;\n      (**(code **)(iVar1 + -0x7a40))(*(undefined4 *)(iVar1 + -0x7dc4));\n      iVar1 = *(int *)(*(int *)(puVar19 + -0x28) + -0x7dc4);\n    }\n    else {\n      iVar1 = *(int *)(iVar1 + -0x7dc4);\n    }\n    p_Var12 = (mpf_ptr)0x20;\n    puVar11 = puVar19 + -0x20;\n    (**(code **)(*(int *)(iVar1 + 0x10) + 4))();\n    puVar17 = *(undefined **)(puVar19 + -0x28);\n    p_Var8 = in_a2;\n    if ((int)in_a2 < 0) {\n      p_Var8 = (mpf_ptr)-(int)in_a2;\n    }\n    uVar2 = (int)p_Var8 * 2 + 1;\n    p_Var10 = *(mpf_ptr *)(puVar19 + -0x20);\n    if (uVar2 == 0) {\n      trap(7);\n    }\n    ((mpf_ptr)__tmp_marker)->_mp_exp = (uint)p_Var10 % uVar2 - (int)p_Var8;\n    if ((int)u < 0) {\n      unaff_s2 = (mpf_srcptr)-(int)unaff_s2;\n    }\n    ((mpf_ptr)__tmp_marker)->_mp_size = (int)unaff_s2;\n    r = in_a2;\n  }" { (expression_statement "unaff_s2 = u;" (assignment_expression "unaff_s2 = u" identifier = identifier) ;) (if_statement "if ((int)u < 0) {\n      unaff_s2 = (mpf_srcptr)-(int)u;\n    }" if (parenthesized_expression "((int)u < 0)" ( (binary_expression "(int)u < 0" (cast_expression "(int)u" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      unaff_s2 = (mpf_srcptr)-(int)u;\n    }" { (expression_statement "unaff_s2 = (mpf_srcptr)-(int)u;" (assignment_expression "unaff_s2 = (mpf_srcptr)-(int)u" identifier = (binary_expression "(mpf_srcptr)-(int)u" (parenthesized_expression "(mpf_srcptr)" ( identifier )) - (cast_expression "(int)u" ( (type_descriptor "int" primitive_type) ) identifier))) ;) })) (expression_statement "p_Var4 = (mpf_srcptr)(((mpf_ptr)__tmp_marker)->_mp_prec + 1);" (assignment_expression "p_Var4 = (mpf_srcptr)(((mpf_ptr)__tmp_marker)->_mp_prec + 1)" identifier = (call_expression "(mpf_srcptr)(((mpf_ptr)__tmp_marker)->_mp_prec + 1)" (parenthesized_expression "(mpf_srcptr)" ( identifier )) (argument_list "(((mpf_ptr)__tmp_marker)->_mp_prec + 1)" ( (binary_expression "((mpf_ptr)__tmp_marker)->_mp_prec + 1" (field_expression "((mpf_ptr)__tmp_marker)->_mp_prec" (parenthesized_expression "((mpf_ptr)__tmp_marker)" ( (cast_expression "(mpf_ptr)__tmp_marker" ( (type_descriptor "mpf_ptr" type_identifier) ) identifier) )) -> field_identifier) + number_literal) )))) ;) (if_statement "if ((int)p_Var4 <= (int)unaff_s2) {\n      unaff_s2 = p_Var4;\n    }" if (parenthesized_expression "((int)p_Var4 <= (int)unaff_s2)" ( (binary_expression "(int)p_Var4 <= (int)unaff_s2" (cast_expression "(int)p_Var4" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)unaff_s2" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      unaff_s2 = p_Var4;\n    }" { (expression_statement "unaff_s2 = p_Var4;" (assignment_expression "unaff_s2 = p_Var4" identifier = identifier) ;) })) (expression_statement "(**(code **)(puVar16 + 0x809f4))(((mpf_ptr)__tmp_marker)->_mp_d,unaff_s2);" (call_expression "(**(code **)(puVar16 + 0x809f4))(((mpf_ptr)__tmp_marker)->_mp_d,unaff_s2)" (parenthesized_expression "(**(code **)(puVar16 + 0x809f4))" ( (pointer_expression "**(code **)(puVar16 + 0x809f4)" * (pointer_expression "*(code **)(puVar16 + 0x809f4)" * (cast_expression "(code **)(puVar16 + 0x809f4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x809f4)" ( (binary_expression "puVar16 + 0x809f4" identifier + number_literal) ))))) )) (argument_list "(((mpf_ptr)__tmp_marker)->_mp_d,unaff_s2)" ( (field_expression "((mpf_ptr)__tmp_marker)->_mp_d" (parenthesized_expression "((mpf_ptr)__tmp_marker)" ( (cast_expression "(mpf_ptr)__tmp_marker" ( (type_descriptor "mpf_ptr" type_identifier) ) identifier) )) -> field_identifier) , identifier ))) ;) (expression_statement "iVar1 = *(int *)(puVar19 + -0x28);" (assignment_expression "iVar1 = *(int *)(puVar19 + -0x28)" identifier = (pointer_expression "*(int *)(puVar19 + -0x28)" * (cast_expression "(int *)(puVar19 + -0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x28)" ( (binary_expression "puVar19 + -0x28" identifier + number_literal) ))))) ;) (if_statement "if (**(char **)(iVar1 + -0x7eb8) == '\0') {\n      **(undefined1 **)(iVar1 + -0x7eb8) = 1;\n      (**(code **)(iVar1 + -0x7a40))(*(undefined4 *)(iVar1 + -0x7dc4));\n      iVar1 = *(int *)(*(int *)(puVar19 + -0x28) + -0x7dc4);\n    }\n    else {\n      iVar1 = *(int *)(iVar1 + -0x7dc4);\n    }" if (parenthesized_expression "(**(char **)(iVar1 + -0x7eb8) == '\0')" ( (binary_expression "**(char **)(iVar1 + -0x7eb8) == '\0'" (pointer_expression "**(char **)(iVar1 + -0x7eb8)" * (pointer_expression "*(char **)(iVar1 + -0x7eb8)" * (cast_expression "(char **)(iVar1 + -0x7eb8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + -0x7eb8)" ( (binary_expression "iVar1 + -0x7eb8" identifier + number_literal) ))))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      **(undefined1 **)(iVar1 + -0x7eb8) = 1;\n      (**(code **)(iVar1 + -0x7a40))(*(undefined4 *)(iVar1 + -0x7dc4));\n      iVar1 = *(int *)(*(int *)(puVar19 + -0x28) + -0x7dc4);\n    }" { (expression_statement "**(undefined1 **)(iVar1 + -0x7eb8) = 1;" (assignment_expression "**(undefined1 **)(iVar1 + -0x7eb8) = 1" (pointer_expression "**(undefined1 **)(iVar1 + -0x7eb8)" * (pointer_expression "*(undefined1 **)(iVar1 + -0x7eb8)" * (cast_expression "(undefined1 **)(iVar1 + -0x7eb8)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + -0x7eb8)" ( (binary_expression "iVar1 + -0x7eb8" identifier + number_literal) ))))) = number_literal) ;) (expression_statement "(**(code **)(iVar1 + -0x7a40))(*(undefined4 *)(iVar1 + -0x7dc4));" (call_expression "(**(code **)(iVar1 + -0x7a40))(*(undefined4 *)(iVar1 + -0x7dc4))" (parenthesized_expression "(**(code **)(iVar1 + -0x7a40))" ( (pointer_expression "**(code **)(iVar1 + -0x7a40)" * (pointer_expression "*(code **)(iVar1 + -0x7a40)" * (cast_expression "(code **)(iVar1 + -0x7a40)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + -0x7a40)" ( (binary_expression "iVar1 + -0x7a40" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(iVar1 + -0x7dc4))" ( (pointer_expression "*(undefined4 *)(iVar1 + -0x7dc4)" * (cast_expression "(undefined4 *)(iVar1 + -0x7dc4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + -0x7dc4)" ( (binary_expression "iVar1 + -0x7dc4" identifier + number_literal) )))) ))) ;) (expression_statement "iVar1 = *(int *)(*(int *)(puVar19 + -0x28) + -0x7dc4);" (assignment_expression "iVar1 = *(int *)(*(int *)(puVar19 + -0x28) + -0x7dc4)" identifier = (pointer_expression "*(int *)(*(int *)(puVar19 + -0x28) + -0x7dc4)" * (cast_expression "(int *)(*(int *)(puVar19 + -0x28) + -0x7dc4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar19 + -0x28) + -0x7dc4)" ( (binary_expression "*(int *)(puVar19 + -0x28) + -0x7dc4" (pointer_expression "*(int *)(puVar19 + -0x28)" * (cast_expression "(int *)(puVar19 + -0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x28)" ( (binary_expression "puVar19 + -0x28" identifier + number_literal) )))) + number_literal) ))))) ;) }) (else_clause "else {\n      iVar1 = *(int *)(iVar1 + -0x7dc4);\n    }" else (compound_statement "{\n      iVar1 = *(int *)(iVar1 + -0x7dc4);\n    }" { (expression_statement "iVar1 = *(int *)(iVar1 + -0x7dc4);" (assignment_expression "iVar1 = *(int *)(iVar1 + -0x7dc4)" identifier = (pointer_expression "*(int *)(iVar1 + -0x7dc4)" * (cast_expression "(int *)(iVar1 + -0x7dc4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + -0x7dc4)" ( (binary_expression "iVar1 + -0x7dc4" identifier + number_literal) ))))) ;) }))) (expression_statement "p_Var12 = (mpf_ptr)0x20;" (assignment_expression "p_Var12 = (mpf_ptr)0x20" identifier = (cast_expression "(mpf_ptr)0x20" ( (type_descriptor "mpf_ptr" type_identifier) ) number_literal)) ;) (expression_statement "puVar11 = puVar19 + -0x20;" (assignment_expression "puVar11 = puVar19 + -0x20" identifier = (binary_expression "puVar19 + -0x20" identifier + number_literal)) ;) (expression_statement "(**(code **)(*(int *)(iVar1 + 0x10) + 4))();" (call_expression "(**(code **)(*(int *)(iVar1 + 0x10) + 4))()" (parenthesized_expression "(**(code **)(*(int *)(iVar1 + 0x10) + 4))" ( (pointer_expression "**(code **)(*(int *)(iVar1 + 0x10) + 4)" * (pointer_expression "*(code **)(*(int *)(iVar1 + 0x10) + 4)" * (cast_expression "(code **)(*(int *)(iVar1 + 0x10) + 4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(iVar1 + 0x10) + 4)" ( (binary_expression "*(int *)(iVar1 + 0x10) + 4" (pointer_expression "*(int *)(iVar1 + 0x10)" * (cast_expression "(int *)(iVar1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x10)" ( (binary_expression "iVar1 + 0x10" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "puVar17 = *(undefined **)(puVar19 + -0x28);" (assignment_expression "puVar17 = *(undefined **)(puVar19 + -0x28)" identifier = (pointer_expression "*(undefined **)(puVar19 + -0x28)" * (cast_expression "(undefined **)(puVar19 + -0x28)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar19 + -0x28)" ( (binary_expression "puVar19 + -0x28" identifier + number_literal) ))))) ;) (expression_statement "p_Var8 = in_a2;" (assignment_expression "p_Var8 = in_a2" identifier = identifier) ;) (if_statement "if ((int)in_a2 < 0) {\n      p_Var8 = (mpf_ptr)-(int)in_a2;\n    }" if (parenthesized_expression "((int)in_a2 < 0)" ( (binary_expression "(int)in_a2 < 0" (cast_expression "(int)in_a2" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      p_Var8 = (mpf_ptr)-(int)in_a2;\n    }" { (expression_statement "p_Var8 = (mpf_ptr)-(int)in_a2;" (assignment_expression "p_Var8 = (mpf_ptr)-(int)in_a2" identifier = (binary_expression "(mpf_ptr)-(int)in_a2" (parenthesized_expression "(mpf_ptr)" ( identifier )) - (cast_expression "(int)in_a2" ( (type_descriptor "int" primitive_type) ) identifier))) ;) })) (expression_statement "uVar2 = (int)p_Var8 * 2 + 1;" (assignment_expression "uVar2 = (int)p_Var8 * 2 + 1" identifier = (binary_expression "(int)p_Var8 * 2 + 1" (binary_expression "(int)p_Var8 * 2" (cast_expression "(int)p_Var8" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) + number_literal)) ;) (expression_statement "p_Var10 = *(mpf_ptr *)(puVar19 + -0x20);" (assignment_expression "p_Var10 = *(mpf_ptr *)(puVar19 + -0x20)" identifier = (pointer_expression "*(mpf_ptr *)(puVar19 + -0x20)" * (cast_expression "(mpf_ptr *)(puVar19 + -0x20)" ( (type_descriptor "mpf_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x20)" ( (binary_expression "puVar19 + -0x20" identifier + number_literal) ))))) ;) (if_statement "if (uVar2 == 0) {\n      trap(7);\n    }" if (parenthesized_expression "(uVar2 == 0)" ( (binary_expression "uVar2 == 0" identifier == number_literal) )) (compound_statement "{\n      trap(7);\n    }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "((mpf_ptr)__tmp_marker)->_mp_exp = (uint)p_Var10 % uVar2 - (int)p_Var8;" (assignment_expression "((mpf_ptr)__tmp_marker)->_mp_exp = (uint)p_Var10 % uVar2 - (int)p_Var8" (field_expression "((mpf_ptr)__tmp_marker)->_mp_exp" (parenthesized_expression "((mpf_ptr)__tmp_marker)" ( (cast_expression "(mpf_ptr)__tmp_marker" ( (type_descriptor "mpf_ptr" type_identifier) ) identifier) )) -> field_identifier) = (binary_expression "(uint)p_Var10 % uVar2 - (int)p_Var8" (binary_expression "(uint)p_Var10 % uVar2" (cast_expression "(uint)p_Var10" ( (type_descriptor "uint" type_identifier) ) identifier) % identifier) - (cast_expression "(int)p_Var8" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if ((int)u < 0) {\n      unaff_s2 = (mpf_srcptr)-(int)unaff_s2;\n    }" if (parenthesized_expression "((int)u < 0)" ( (binary_expression "(int)u < 0" (cast_expression "(int)u" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      unaff_s2 = (mpf_srcptr)-(int)unaff_s2;\n    }" { (expression_statement "unaff_s2 = (mpf_srcptr)-(int)unaff_s2;" (assignment_expression "unaff_s2 = (mpf_srcptr)-(int)unaff_s2" identifier = (binary_expression "(mpf_srcptr)-(int)unaff_s2" (parenthesized_expression "(mpf_srcptr)" ( identifier )) - (cast_expression "(int)unaff_s2" ( (type_descriptor "int" primitive_type) ) identifier))) ;) })) (expression_statement "((mpf_ptr)__tmp_marker)->_mp_size = (int)unaff_s2;" (assignment_expression "((mpf_ptr)__tmp_marker)->_mp_size = (int)unaff_s2" (field_expression "((mpf_ptr)__tmp_marker)->_mp_size" (parenthesized_expression "((mpf_ptr)__tmp_marker)" ( (cast_expression "(mpf_ptr)__tmp_marker" ( (type_descriptor "mpf_ptr" type_identifier) ) identifier) )) -> field_identifier) = (cast_expression "(int)unaff_s2" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "r = in_a2;" (assignment_expression "r = in_a2" identifier = identifier) ;) }))) (if_statement "if (*(int *)(puVar19 + -0x1c) == **(int **)(puVar17 + -0x7b00)) {\n    return;\n  }" if (parenthesized_expression "(*(int *)(puVar19 + -0x1c) == **(int **)(puVar17 + -0x7b00))" ( (binary_expression "*(int *)(puVar19 + -0x1c) == **(int **)(puVar17 + -0x7b00)" (pointer_expression "*(int *)(puVar19 + -0x1c)" * (cast_expression "(int *)(puVar19 + -0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x1c)" ( (binary_expression "puVar19 + -0x1c" identifier + number_literal) )))) == (pointer_expression "**(int **)(puVar17 + -0x7b00)" * (pointer_expression "*(int **)(puVar17 + -0x7b00)" * (cast_expression "(int **)(puVar17 + -0x7b00)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar17 + -0x7b00)" ( (binary_expression "puVar17 + -0x7b00" identifier + number_literal) )))))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "pcVar21 = *(code **)(puVar17 + -0x7b70);" (assignment_expression "pcVar21 = *(code **)(puVar17 + -0x7b70)" identifier = (pointer_expression "*(code **)(puVar17 + -0x7b70)" * (cast_expression "(code **)(puVar17 + -0x7b70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar17 + -0x7b70)" ( (binary_expression "puVar17 + -0x7b70" identifier + number_literal) ))))) ;) (expression_statement "uVar22 = 0x1a8b8;" (assignment_expression "uVar22 = 0x1a8b8" identifier = number_literal) ;) (expression_statement "(*pcVar21)();" (call_expression "(*pcVar21)()" (parenthesized_expression "(*pcVar21)" ( (pointer_expression "*pcVar21" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "*(undefined4 *)(puVar19 + -0x3c) = uVar22;" (assignment_expression "*(undefined4 *)(puVar19 + -0x3c) = uVar22" (pointer_expression "*(undefined4 *)(puVar19 + -0x3c)" * (cast_expression "(undefined4 *)(puVar19 + -0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x3c)" ( (binary_expression "puVar19 + -0x3c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 **)(puVar19 + -0x40) = auStack_38;" (assignment_expression "*(undefined1 **)(puVar19 + -0x40) = auStack_38" (pointer_expression "*(undefined1 **)(puVar19 + -0x40)" * (cast_expression "(undefined1 **)(puVar19 + -0x40)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar19 + -0x40)" ( (binary_expression "puVar19 + -0x40" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar19 + -0x44) = unaff_s7;" (assignment_expression "*(undefined4 *)(puVar19 + -0x44) = unaff_s7" (pointer_expression "*(undefined4 *)(puVar19 + -0x44)" * (cast_expression "(undefined4 *)(puVar19 + -0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x44)" ( (binary_expression "puVar19 + -0x44" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar19 + -0x48) = unaff_s6;" (assignment_expression "*(undefined4 *)(puVar19 + -0x48) = unaff_s6" (pointer_expression "*(undefined4 *)(puVar19 + -0x48)" * (cast_expression "(undefined4 *)(puVar19 + -0x48)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x48)" ( (binary_expression "puVar19 + -0x48" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar19 + -0x4c) = unaff_s5;" (assignment_expression "*(undefined4 *)(puVar19 + -0x4c) = unaff_s5" (pointer_expression "*(undefined4 *)(puVar19 + -0x4c)" * (cast_expression "(undefined4 *)(puVar19 + -0x4c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x4c)" ( (binary_expression "puVar19 + -0x4c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar19 + -0x50) = unaff_s4;" (assignment_expression "*(undefined4 *)(puVar19 + -0x50) = unaff_s4" (pointer_expression "*(undefined4 *)(puVar19 + -0x50)" * (cast_expression "(undefined4 *)(puVar19 + -0x50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x50)" ( (binary_expression "puVar19 + -0x50" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mpf_ptr *)(puVar19 + -0x54) = r;" (assignment_expression "*(mpf_ptr *)(puVar19 + -0x54) = r" (pointer_expression "*(mpf_ptr *)(puVar19 + -0x54)" * (cast_expression "(mpf_ptr *)(puVar19 + -0x54)" ( (type_descriptor "mpf_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x54)" ( (binary_expression "puVar19 + -0x54" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mpf_srcptr *)(puVar19 + -0x58) = unaff_s2;" (assignment_expression "*(mpf_srcptr *)(puVar19 + -0x58) = unaff_s2" (pointer_expression "*(mpf_srcptr *)(puVar19 + -0x58)" * (cast_expression "(mpf_srcptr *)(puVar19 + -0x58)" ( (type_descriptor "mpf_srcptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x58)" ( (binary_expression "puVar19 + -0x58" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mpf_srcptr *)(puVar19 + -0x5c) = u;" (assignment_expression "*(mpf_srcptr *)(puVar19 + -0x5c) = u" (pointer_expression "*(mpf_srcptr *)(puVar19 + -0x5c)" * (cast_expression "(mpf_srcptr *)(puVar19 + -0x5c)" ( (type_descriptor "mpf_srcptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x5c)" ( (binary_expression "puVar19 + -0x5c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(tmp_reentrant_t **)(puVar19 + -0x60) = __tmp_marker;" (assignment_expression "*(tmp_reentrant_t **)(puVar19 + -0x60) = __tmp_marker" (pointer_expression "*(tmp_reentrant_t **)(puVar19 + -0x60)" * (cast_expression "(tmp_reentrant_t **)(puVar19 + -0x60)" ( (type_descriptor "tmp_reentrant_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar19 + -0x60)" ( (binary_expression "puVar19 + -0x60" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar19 + -0x68) = pcVar21 + 0x88780;" (assignment_expression "*(code **)(puVar19 + -0x68) = pcVar21 + 0x88780" (pointer_expression "*(code **)(puVar19 + -0x68)" * (cast_expression "(code **)(puVar19 + -0x68)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar19 + -0x68)" ( (binary_expression "puVar19 + -0x68" identifier + number_literal) )))) = (binary_expression "pcVar21 + 0x88780" identifier + number_literal)) ;) (expression_statement "*(mpf_ptr *)(puVar19 + -0x38) = p_Var10;" (assignment_expression "*(mpf_ptr *)(puVar19 + -0x38) = p_Var10" (pointer_expression "*(mpf_ptr *)(puVar19 + -0x38)" * (cast_expression "(mpf_ptr *)(puVar19 + -0x38)" ( (type_descriptor "mpf_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x38)" ( (binary_expression "puVar19 + -0x38" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 **)(puVar19 + -0x34) = puVar11;" (assignment_expression "*(undefined1 **)(puVar19 + -0x34) = puVar11" (pointer_expression "*(undefined1 **)(puVar19 + -0x34)" * (cast_expression "(undefined1 **)(puVar19 + -0x34)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar19 + -0x34)" ( (binary_expression "puVar19 + -0x34" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mpf_ptr *)(puVar19 + -0x30) = p_Var12;" (assignment_expression "*(mpf_ptr *)(puVar19 + -0x30) = p_Var12" (pointer_expression "*(mpf_ptr *)(puVar19 + -0x30)" * (cast_expression "(mpf_ptr *)(puVar19 + -0x30)" ( (type_descriptor "mpf_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x30)" ( (binary_expression "puVar19 + -0x30" identifier + number_literal) )))) = identifier) ;) (if_statement "if (puVar11 == (undefined1 *)0x0) {\n    *(undefined4 *)(puVar19 + -0x34) = **(undefined4 **)(pcVar21 + 0x80a54);\n  }" if (parenthesized_expression "(puVar11 == (undefined1 *)0x0)" ( (binary_expression "puVar11 == (undefined1 *)0x0" identifier == (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    *(undefined4 *)(puVar19 + -0x34) = **(undefined4 **)(pcVar21 + 0x80a54);\n  }" { (expression_statement "*(undefined4 *)(puVar19 + -0x34) = **(undefined4 **)(pcVar21 + 0x80a54);" (assignment_expression "*(undefined4 *)(puVar19 + -0x34) = **(undefined4 **)(pcVar21 + 0x80a54)" (pointer_expression "*(undefined4 *)(puVar19 + -0x34)" * (cast_expression "(undefined4 *)(puVar19 + -0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x34)" ( (binary_expression "puVar19 + -0x34" identifier + number_literal) )))) = (pointer_expression "**(undefined4 **)(pcVar21 + 0x80a54)" * (pointer_expression "*(undefined4 **)(pcVar21 + 0x80a54)" * (cast_expression "(undefined4 **)(pcVar21 + 0x80a54)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar21 + 0x80a54)" ( (binary_expression "pcVar21 + 0x80a54" identifier + number_literal) )))))) ;) })) (expression_statement "iVar1 = (*(code *)**(undefined4 **)(pcVar21 + 0x80c4c))(100);" (assignment_expression "iVar1 = (*(code *)**(undefined4 **)(pcVar21 + 0x80c4c))(100)" identifier = (call_expression "(*(code *)**(undefined4 **)(pcVar21 + 0x80c4c))(100)" (parenthesized_expression "(*(code *)**(undefined4 **)(pcVar21 + 0x80c4c))" ( (pointer_expression "*(code *)**(undefined4 **)(pcVar21 + 0x80c4c)" * (cast_expression "(code *)**(undefined4 **)(pcVar21 + 0x80c4c)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "**(undefined4 **)(pcVar21 + 0x80c4c)" * (pointer_expression "*(undefined4 **)(pcVar21 + 0x80c4c)" * (cast_expression "(undefined4 **)(pcVar21 + 0x80c4c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar21 + 0x80c4c)" ( (binary_expression "pcVar21 + 0x80c4c" identifier + number_literal) ))))))) )) (argument_list "(100)" ( number_literal )))) ;) (expression_statement "iVar13 = *(int *)(puVar19 + -0x68);" (assignment_expression "iVar13 = *(int *)(puVar19 + -0x68)" identifier = (pointer_expression "*(int *)(puVar19 + -0x68)" * (cast_expression "(int *)(puVar19 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x68)" ( (binary_expression "puVar19 + -0x68" identifier + number_literal) ))))) ;) (do_statement "do {\n    iVar3 = (**(code **)(iVar13 + -0x7f3c))(*(undefined4 *)(puVar19 + -0x34));\n    piVar5 = (int *)(**(code **)(*(int *)(puVar19 + -0x68) + -0x7f94))();\n    iVar13 = *(int *)(puVar19 + -0x68);\n  } while ((*(ushort *)(*piVar5 + iVar3 * 2) & 0x20) != 0);" do (compound_statement "{\n    iVar3 = (**(code **)(iVar13 + -0x7f3c))(*(undefined4 *)(puVar19 + -0x34));\n    piVar5 = (int *)(**(code **)(*(int *)(puVar19 + -0x68) + -0x7f94))();\n    iVar13 = *(int *)(puVar19 + -0x68);\n  }" { (expression_statement "iVar3 = (**(code **)(iVar13 + -0x7f3c))(*(undefined4 *)(puVar19 + -0x34));" (assignment_expression "iVar3 = (**(code **)(iVar13 + -0x7f3c))(*(undefined4 *)(puVar19 + -0x34))" identifier = (call_expression "(**(code **)(iVar13 + -0x7f3c))(*(undefined4 *)(puVar19 + -0x34))" (parenthesized_expression "(**(code **)(iVar13 + -0x7f3c))" ( (pointer_expression "**(code **)(iVar13 + -0x7f3c)" * (pointer_expression "*(code **)(iVar13 + -0x7f3c)" * (cast_expression "(code **)(iVar13 + -0x7f3c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar13 + -0x7f3c)" ( (binary_expression "iVar13 + -0x7f3c" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(puVar19 + -0x34))" ( (pointer_expression "*(undefined4 *)(puVar19 + -0x34)" * (cast_expression "(undefined4 *)(puVar19 + -0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x34)" ( (binary_expression "puVar19 + -0x34" identifier + number_literal) )))) )))) ;) (expression_statement "piVar5 = (int *)(**(code **)(*(int *)(puVar19 + -0x68) + -0x7f94))();" (assignment_expression "piVar5 = (int *)(**(code **)(*(int *)(puVar19 + -0x68) + -0x7f94))()" identifier = (cast_expression "(int *)(**(code **)(*(int *)(puVar19 + -0x68) + -0x7f94))()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(*(int *)(puVar19 + -0x68) + -0x7f94))()" (parenthesized_expression "(**(code **)(*(int *)(puVar19 + -0x68) + -0x7f94))" ( (pointer_expression "**(code **)(*(int *)(puVar19 + -0x68) + -0x7f94)" * (pointer_expression "*(code **)(*(int *)(puVar19 + -0x68) + -0x7f94)" * (cast_expression "(code **)(*(int *)(puVar19 + -0x68) + -0x7f94)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar19 + -0x68) + -0x7f94)" ( (binary_expression "*(int *)(puVar19 + -0x68) + -0x7f94" (pointer_expression "*(int *)(puVar19 + -0x68)" * (cast_expression "(int *)(puVar19 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x68)" ( (binary_expression "puVar19 + -0x68" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "()" ( ))))) ;) (expression_statement "iVar13 = *(int *)(puVar19 + -0x68);" (assignment_expression "iVar13 = *(int *)(puVar19 + -0x68)" identifier = (pointer_expression "*(int *)(puVar19 + -0x68)" * (cast_expression "(int *)(puVar19 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x68)" ( (binary_expression "puVar19 + -0x68" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "((*(ushort *)(*piVar5 + iVar3 * 2) & 0x20) != 0)" ( (binary_expression "(*(ushort *)(*piVar5 + iVar3 * 2) & 0x20) != 0" (parenthesized_expression "(*(ushort *)(*piVar5 + iVar3 * 2) & 0x20)" ( (binary_expression "*(ushort *)(*piVar5 + iVar3 * 2) & 0x20" (pointer_expression "*(ushort *)(*piVar5 + iVar3 * 2)" * (cast_expression "(ushort *)(*piVar5 + iVar3 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar5 + iVar3 * 2)" ( (binary_expression "*piVar5 + iVar3 * 2" (pointer_expression "*piVar5" * identifier) + (binary_expression "iVar3 * 2" identifier * number_literal)) )))) & number_literal) )) != number_literal) )) ;) (expression_statement "puVar20 = *(undefined4 **)(iVar13 + -0x7aa0);" (assignment_expression "puVar20 = *(undefined4 **)(iVar13 + -0x7aa0)" identifier = (pointer_expression "*(undefined4 **)(iVar13 + -0x7aa0)" * (cast_expression "(undefined4 **)(iVar13 + -0x7aa0)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar13 + -0x7aa0)" ( (binary_expression "iVar13 + -0x7aa0" identifier + number_literal) ))))) ;) (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" identifier = number_literal) ;) (expression_statement "uVar6 = 100;" (assignment_expression "uVar6 = 100" identifier = number_literal) ;) (while_statement "while ((iVar3 != -1 && (uVar15 = uVar2 + 1, (*(ushort *)(*piVar5 + iVar3 * 2) & 0x20) == 0))) {\n    *(char *)(iVar1 + uVar2) = (char)iVar3;\n    iVar3 = (**(code **)(iVar13 + -0x7f3c))(*(undefined4 *)(puVar19 + -0x34));\n    iVar13 = *(int *)(puVar19 + -0x68);\n    uVar2 = uVar15;\n    if (uVar6 <= uVar15) {\n      uVar15 = uVar6 * 3 >> 1;\n      iVar1 = (*(code *)*puVar20)(iVar1,uVar6,uVar15);\n      iVar13 = *(int *)(puVar19 + -0x68);\n      uVar6 = uVar15;\n    }\n  }" while (parenthesized_expression "((iVar3 != -1 && (uVar15 = uVar2 + 1, (*(ushort *)(*piVar5 + iVar3 * 2) & 0x20) == 0)))" ( (parenthesized_expression "(iVar3 != -1 && (uVar15 = uVar2 + 1, (*(ushort *)(*piVar5 + iVar3 * 2) & 0x20) == 0))" ( (binary_expression "iVar3 != -1 && (uVar15 = uVar2 + 1, (*(ushort *)(*piVar5 + iVar3 * 2) & 0x20) == 0)" (binary_expression "iVar3 != -1" identifier != number_literal) && (parenthesized_expression "(uVar15 = uVar2 + 1, (*(ushort *)(*piVar5 + iVar3 * 2) & 0x20) == 0)" ( (comma_expression "uVar15 = uVar2 + 1, (*(ushort *)(*piVar5 + iVar3 * 2) & 0x20) == 0" (assignment_expression "uVar15 = uVar2 + 1" identifier = (binary_expression "uVar2 + 1" identifier + number_literal)) , (binary_expression "(*(ushort *)(*piVar5 + iVar3 * 2) & 0x20) == 0" (parenthesized_expression "(*(ushort *)(*piVar5 + iVar3 * 2) & 0x20)" ( (binary_expression "*(ushort *)(*piVar5 + iVar3 * 2) & 0x20" (pointer_expression "*(ushort *)(*piVar5 + iVar3 * 2)" * (cast_expression "(ushort *)(*piVar5 + iVar3 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar5 + iVar3 * 2)" ( (binary_expression "*piVar5 + iVar3 * 2" (pointer_expression "*piVar5" * identifier) + (binary_expression "iVar3 * 2" identifier * number_literal)) )))) & number_literal) )) == number_literal)) ))) )) )) (compound_statement "{\n    *(char *)(iVar1 + uVar2) = (char)iVar3;\n    iVar3 = (**(code **)(iVar13 + -0x7f3c))(*(undefined4 *)(puVar19 + -0x34));\n    iVar13 = *(int *)(puVar19 + -0x68);\n    uVar2 = uVar15;\n    if (uVar6 <= uVar15) {\n      uVar15 = uVar6 * 3 >> 1;\n      iVar1 = (*(code *)*puVar20)(iVar1,uVar6,uVar15);\n      iVar13 = *(int *)(puVar19 + -0x68);\n      uVar6 = uVar15;\n    }\n  }" { (expression_statement "*(char *)(iVar1 + uVar2) = (char)iVar3;" (assignment_expression "*(char *)(iVar1 + uVar2) = (char)iVar3" (pointer_expression "*(char *)(iVar1 + uVar2)" * (cast_expression "(char *)(iVar1 + uVar2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + uVar2)" ( (binary_expression "iVar1 + uVar2" identifier + identifier) )))) = (cast_expression "(char)iVar3" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "iVar3 = (**(code **)(iVar13 + -0x7f3c))(*(undefined4 *)(puVar19 + -0x34));" (assignment_expression "iVar3 = (**(code **)(iVar13 + -0x7f3c))(*(undefined4 *)(puVar19 + -0x34))" identifier = (call_expression "(**(code **)(iVar13 + -0x7f3c))(*(undefined4 *)(puVar19 + -0x34))" (parenthesized_expression "(**(code **)(iVar13 + -0x7f3c))" ( (pointer_expression "**(code **)(iVar13 + -0x7f3c)" * (pointer_expression "*(code **)(iVar13 + -0x7f3c)" * (cast_expression "(code **)(iVar13 + -0x7f3c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar13 + -0x7f3c)" ( (binary_expression "iVar13 + -0x7f3c" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(puVar19 + -0x34))" ( (pointer_expression "*(undefined4 *)(puVar19 + -0x34)" * (cast_expression "(undefined4 *)(puVar19 + -0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x34)" ( (binary_expression "puVar19 + -0x34" identifier + number_literal) )))) )))) ;) (expression_statement "iVar13 = *(int *)(puVar19 + -0x68);" (assignment_expression "iVar13 = *(int *)(puVar19 + -0x68)" identifier = (pointer_expression "*(int *)(puVar19 + -0x68)" * (cast_expression "(int *)(puVar19 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x68)" ( (binary_expression "puVar19 + -0x68" identifier + number_literal) ))))) ;) (expression_statement "uVar2 = uVar15;" (assignment_expression "uVar2 = uVar15" identifier = identifier) ;) (if_statement "if (uVar6 <= uVar15) {\n      uVar15 = uVar6 * 3 >> 1;\n      iVar1 = (*(code *)*puVar20)(iVar1,uVar6,uVar15);\n      iVar13 = *(int *)(puVar19 + -0x68);\n      uVar6 = uVar15;\n    }" if (parenthesized_expression "(uVar6 <= uVar15)" ( (binary_expression "uVar6 <= uVar15" identifier <= identifier) )) (compound_statement "{\n      uVar15 = uVar6 * 3 >> 1;\n      iVar1 = (*(code *)*puVar20)(iVar1,uVar6,uVar15);\n      iVar13 = *(int *)(puVar19 + -0x68);\n      uVar6 = uVar15;\n    }" { (expression_statement "uVar15 = uVar6 * 3 >> 1;" (assignment_expression "uVar15 = uVar6 * 3 >> 1" identifier = (binary_expression "uVar6 * 3 >> 1" (binary_expression "uVar6 * 3" identifier * number_literal) >> number_literal)) ;) (expression_statement "iVar1 = (*(code *)*puVar20)(iVar1,uVar6,uVar15);" (assignment_expression "iVar1 = (*(code *)*puVar20)(iVar1,uVar6,uVar15)" identifier = (call_expression "(*(code *)*puVar20)(iVar1,uVar6,uVar15)" (parenthesized_expression "(*(code *)*puVar20)" ( (pointer_expression "*(code *)*puVar20" * (cast_expression "(code *)*puVar20" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar20" * identifier))) )) (argument_list "(iVar1,uVar6,uVar15)" ( identifier , identifier , identifier )))) ;) (expression_statement "iVar13 = *(int *)(puVar19 + -0x68);" (assignment_expression "iVar13 = *(int *)(puVar19 + -0x68)" identifier = (pointer_expression "*(int *)(puVar19 + -0x68)" * (cast_expression "(int *)(puVar19 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x68)" ( (binary_expression "puVar19 + -0x68" identifier + number_literal) ))))) ;) (expression_statement "uVar6 = uVar15;" (assignment_expression "uVar6 = uVar15" identifier = identifier) ;) })) })) (expression_statement "(**(code **)(iVar13 + -0x7d5c))(iVar3,*(undefined4 *)(puVar19 + -0x34));" (call_expression "(**(code **)(iVar13 + -0x7d5c))(iVar3,*(undefined4 *)(puVar19 + -0x34))" (parenthesized_expression "(**(code **)(iVar13 + -0x7d5c))" ( (pointer_expression "**(code **)(iVar13 + -0x7d5c)" * (pointer_expression "*(code **)(iVar13 + -0x7d5c)" * (cast_expression "(code **)(iVar13 + -0x7d5c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar13 + -0x7d5c)" ( (binary_expression "iVar13 + -0x7d5c" identifier + number_literal) ))))) )) (argument_list "(iVar3,*(undefined4 *)(puVar19 + -0x34))" ( identifier , (pointer_expression "*(undefined4 *)(puVar19 + -0x34)" * (cast_expression "(undefined4 *)(puVar19 + -0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x34)" ( (binary_expression "puVar19 + -0x34" identifier + number_literal) )))) ))) ;) (expression_statement "iVar13 = *(int *)(puVar19 + -0x68);" (assignment_expression "iVar13 = *(int *)(puVar19 + -0x68)" identifier = (pointer_expression "*(int *)(puVar19 + -0x68)" * (cast_expression "(int *)(puVar19 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x68)" ( (binary_expression "puVar19 + -0x68" identifier + number_literal) ))))) ;) (expression_statement "uVar15 = uVar6;" (assignment_expression "uVar15 = uVar6" identifier = identifier) ;) (if_statement "if (uVar6 <= uVar2) {\n    uVar15 = uVar6 * 3 >> 1;\n    iVar1 = (*(code *)**(undefined4 **)(iVar13 + -0x7aa0))(iVar1,uVar6,uVar15);\n    iVar13 = *(int *)(puVar19 + -0x68);\n  }" if (parenthesized_expression "(uVar6 <= uVar2)" ( (binary_expression "uVar6 <= uVar2" identifier <= identifier) )) (compound_statement "{\n    uVar15 = uVar6 * 3 >> 1;\n    iVar1 = (*(code *)**(undefined4 **)(iVar13 + -0x7aa0))(iVar1,uVar6,uVar15);\n    iVar13 = *(int *)(puVar19 + -0x68);\n  }" { (expression_statement "uVar15 = uVar6 * 3 >> 1;" (assignment_expression "uVar15 = uVar6 * 3 >> 1" identifier = (binary_expression "uVar6 * 3 >> 1" (binary_expression "uVar6 * 3" identifier * number_literal) >> number_literal)) ;) (expression_statement "iVar1 = (*(code *)**(undefined4 **)(iVar13 + -0x7aa0))(iVar1,uVar6,uVar15);" (assignment_expression "iVar1 = (*(code *)**(undefined4 **)(iVar13 + -0x7aa0))(iVar1,uVar6,uVar15)" identifier = (call_expression "(*(code *)**(undefined4 **)(iVar13 + -0x7aa0))(iVar1,uVar6,uVar15)" (parenthesized_expression "(*(code *)**(undefined4 **)(iVar13 + -0x7aa0))" ( (pointer_expression "*(code *)**(undefined4 **)(iVar13 + -0x7aa0)" * (cast_expression "(code *)**(undefined4 **)(iVar13 + -0x7aa0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "**(undefined4 **)(iVar13 + -0x7aa0)" * (pointer_expression "*(undefined4 **)(iVar13 + -0x7aa0)" * (cast_expression "(undefined4 **)(iVar13 + -0x7aa0)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar13 + -0x7aa0)" ( (binary_expression "iVar13 + -0x7aa0" identifier + number_literal) ))))))) )) (argument_list "(iVar1,uVar6,uVar15)" ( identifier , identifier , identifier )))) ;) (expression_statement "iVar13 = *(int *)(puVar19 + -0x68);" (assignment_expression "iVar13 = *(int *)(puVar19 + -0x68)" identifier = (pointer_expression "*(int *)(puVar19 + -0x68)" * (cast_expression "(int *)(puVar19 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x68)" ( (binary_expression "puVar19 + -0x68" identifier + number_literal) ))))) ;) })) (expression_statement "*(undefined1 *)(iVar1 + uVar2) = 0;" (assignment_expression "*(undefined1 *)(iVar1 + uVar2) = 0" (pointer_expression "*(undefined1 *)(iVar1 + uVar2)" * (cast_expression "(undefined1 *)(iVar1 + uVar2)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + uVar2)" ( (binary_expression "iVar1 + uVar2" identifier + identifier) )))) = number_literal) ;) (expression_statement "(**(code **)(iVar13 + -0x7ae8))\n            (*(undefined4 *)(puVar19 + -0x38),iVar1,*(undefined4 *)(puVar19 + -0x30));" (call_expression "(**(code **)(iVar13 + -0x7ae8))\n            (*(undefined4 *)(puVar19 + -0x38),iVar1,*(undefined4 *)(puVar19 + -0x30))" (parenthesized_expression "(**(code **)(iVar13 + -0x7ae8))" ( (pointer_expression "**(code **)(iVar13 + -0x7ae8)" * (pointer_expression "*(code **)(iVar13 + -0x7ae8)" * (cast_expression "(code **)(iVar13 + -0x7ae8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar13 + -0x7ae8)" ( (binary_expression "iVar13 + -0x7ae8" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(puVar19 + -0x38),iVar1,*(undefined4 *)(puVar19 + -0x30))" ( (pointer_expression "*(undefined4 *)(puVar19 + -0x38)" * (cast_expression "(undefined4 *)(puVar19 + -0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x38)" ( (binary_expression "puVar19 + -0x38" identifier + number_literal) )))) , identifier , (pointer_expression "*(undefined4 *)(puVar19 + -0x30)" * (cast_expression "(undefined4 *)(puVar19 + -0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x30)" ( (binary_expression "puVar19 + -0x30" identifier + number_literal) )))) ))) ;) (expression_statement "(*(code *)**(undefined4 **)(*(int *)(puVar19 + -0x68) + -0x7e70))(iVar1,uVar15);" (call_expression "(*(code *)**(undefined4 **)(*(int *)(puVar19 + -0x68) + -0x7e70))(iVar1,uVar15)" (parenthesized_expression "(*(code *)**(undefined4 **)(*(int *)(puVar19 + -0x68) + -0x7e70))" ( (pointer_expression "*(code *)**(undefined4 **)(*(int *)(puVar19 + -0x68) + -0x7e70)" * (cast_expression "(code *)**(undefined4 **)(*(int *)(puVar19 + -0x68) + -0x7e70)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "**(undefined4 **)(*(int *)(puVar19 + -0x68) + -0x7e70)" * (pointer_expression "*(undefined4 **)(*(int *)(puVar19 + -0x68) + -0x7e70)" * (cast_expression "(undefined4 **)(*(int *)(puVar19 + -0x68) + -0x7e70)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar19 + -0x68) + -0x7e70)" ( (binary_expression "*(int *)(puVar19 + -0x68) + -0x7e70" (pointer_expression "*(int *)(puVar19 + -0x68)" * (cast_expression "(int *)(puVar19 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x68)" ( (binary_expression "puVar19 + -0x68" identifier + number_literal) )))) + number_literal) ))))))) )) (argument_list "(iVar1,uVar15)" ( identifier , identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit "int __gmpf_sqrt(int *param_1,int *param_2,int *param_3)\n\n{\n  int iVar1;\n  uint uVar2;\n  uint uVar3;\n  int iVar4;\n  int *piVar5;\n  int *piVar6;\n  undefined1 *puVar7;\n  int *piVar8;\n  int iVar9;\n  int iVar10;\n  int unaff_s1;\n  int *unaff_s2;\n  undefined4 unaff_s4;\n  uint uVar11;\n  undefined4 unaff_s5;\n  undefined4 unaff_s6;\n  int iVar12;\n  undefined4 unaff_s7;\n  undefined *puVar13;\n  undefined *puVar14;\n  undefined1 *puVar15;\n  undefined1 *puVar16;\n  undefined4 *puVar17;\n  code *pcVar18;\n  undefined4 uVar19;\n  undefined1 auStack_38 [16];\n  int *local_20;\n  \n  puVar16 = auStack_38;\n  puVar15 = auStack_38;\n  iVar1 = *(int *)PTR___stack_chk_guard_0009b540;\n  iVar9 = param_2[1];\n  if (iVar9 < 1) {\n    if (-1 < iVar9) {\n      param_1[1] = 0;\n      param_1[2] = 0;\n      local_20 = param_1;\n      goto LAB_0001a69c;\n    }\n    (*(code *)PTR___gmp_sqrt_of_negative_0009b1cc)();\nLAB_0001a654:\n    param_3 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)();\n  }\n  else {\n    local_20 = (int *)0x0;\n    uVar2 = param_2[2];\n    unaff_s2 = (int *)param_2[3];\n    uVar3 = uVar2 & 1;\n    unaff_s1 = *param_1 * 2 - uVar3;\n    param_1[1] = *param_1;\n    param_1[2] = (int)(uVar2 + uVar3) / 2;\n    if (0x7f00 < (uint)(unaff_s1 * 4)) goto LAB_0001a654;\n    iVar10 = -(unaff_s1 * 4 + 7U & 0xfffffff8);\n    puVar15 = auStack_38 + iVar10;\n    param_3 = (int *)(&stack0xffffffd8 + iVar10);\n  }\n  if (unaff_s1 < iVar9) {\n    if (unaff_s1 != 0) {\n      iVar10 = iVar9 - unaff_s1;\n      iVar9 = iVar10 * 4;\n      unaff_s2 = unaff_s2 + iVar10;\n      iVar4 = unaff_s1 + -1;\n      iVar10 = *unaff_s2;\n      piVar6 = param_3;\n      if (iVar4 != 0) {\n        piVar8 = unaff_s2 + 1;\n        do {\n          *piVar6 = iVar10;\n          unaff_s2 = piVar8 + 1;\n          iVar4 = iVar4 + -1;\n          iVar10 = *piVar8;\n          piVar6 = piVar6 + 1;\n          piVar8 = unaff_s2;\n        } while (iVar4 != 0);\n        piVar6 = param_3 + unaff_s1 + 0x3fffffff;\n      }\n      *piVar6 = iVar10;\n    }\n  }\n  else {\n    iVar10 = unaff_s1 - iVar9;\n    piVar6 = param_3;\n    if (iVar9 != unaff_s1) {\n      do {\n        iVar10 = iVar10 + -1;\n        *piVar6 = 0;\n        piVar6 = piVar6 + 1;\n      } while (iVar10 != 0);\n    }\n    iVar4 = iVar9 + -1;\n    piVar6 = param_3 + (unaff_s1 - iVar9);\n    iVar10 = *unaff_s2;\n    if (iVar4 != 0) {\n      piVar8 = piVar6;\n      piVar5 = unaff_s2 + 1;\n      do {\n        *piVar8 = iVar10;\n        unaff_s2 = piVar5 + 1;\n        iVar4 = iVar4 + -1;\n        iVar10 = *piVar5;\n        piVar8 = piVar8 + 1;\n        piVar5 = unaff_s2;\n      } while (iVar4 != 0);\n      iVar4 = iVar9 + 0x3fffffff;\n      iVar9 = iVar4 * 4;\n      piVar6 = piVar6 + iVar4;\n    }\n    *piVar6 = iVar10;\n  }\n  param_2 = (int *)0x0;\n  (*(code *)PTR___gmpn_sqrtrem_0009b0e0)(param_1[3],0,param_3,unaff_s1);\n  puVar16 = puVar15;\n  if (local_20 != (int *)0x0) {\n    (*(code *)PTR___gmp_tmp_reentrant_free_0009b614)();\n  }\nLAB_0001a69c:\n  if (iVar1 == *(int *)PTR___stack_chk_guard_0009b540) {\n    return *(int *)PTR___stack_chk_guard_0009b540;\n  }\n  pcVar18 = __gmpf_random2;\n  puVar13 = PTR___stack_chk_fail_0009b4d0;\n  (*(code *)PTR___stack_chk_fail_0009b4d0)();\n  puVar14 = puVar13 + 0x888e0;\n  *(code **)(puVar16 + -4) = pcVar18;\n  *(int **)(puVar16 + -8) = param_1;\n  *(int **)(puVar16 + -0xc) = unaff_s2;\n  *(int *)(puVar16 + -0x10) = unaff_s1;\n  *(int *)(puVar16 + -0x14) = iVar9;\n  *(undefined **)(puVar16 + -0x28) = puVar14;\n  *(undefined4 *)(puVar16 + -0x1c) = **(undefined4 **)(puVar13 + 0x80de0);\n  if (param_2 == (int *)0x0) {\n    local_20[2] = 0;\n    local_20[1] = 0;\n    puVar7 = (undefined1 *)0x0;\n    piVar6 = local_20;\n    piVar8 = param_3;\n  }\n  else {\n    unaff_s2 = param_2;\n    if ((int)param_2 < 0) {\n      unaff_s2 = (int *)-(int)param_2;\n    }\n    if (*local_20 + 1 <= (int)unaff_s2) {\n      unaff_s2 = (int *)(*local_20 + 1);\n    }\n    (**(code **)(puVar13 + 0x809f4))(local_20[3],unaff_s2);\n    iVar1 = *(int *)(puVar16 + -0x28);\n    if (**(char **)(iVar1 + -0x7eb8) == '\0') {\n      **(undefined1 **)(iVar1 + -0x7eb8) = 1;\n      (**(code **)(iVar1 + -0x7a40))(*(undefined4 *)(iVar1 + -0x7dc4));\n      iVar1 = *(int *)(*(int *)(puVar16 + -0x28) + -0x7dc4);\n    }\n    else {\n      iVar1 = *(int *)(iVar1 + -0x7dc4);\n    }\n    piVar8 = (int *)0x20;\n    puVar7 = puVar16 + -0x20;\n    (**(code **)(*(int *)(iVar1 + 0x10) + 4))();\n    puVar14 = *(undefined **)(puVar16 + -0x28);\n    piVar5 = param_3;\n    if ((int)param_3 < 0) {\n      piVar5 = (int *)-(int)param_3;\n    }\n    uVar2 = (int)piVar5 * 2 + 1;\n    piVar6 = *(int **)(puVar16 + -0x20);\n    if (uVar2 == 0) {\n      trap(7);\n    }\n    local_20[2] = (uint)piVar6 % uVar2 - (int)piVar5;\n    if ((int)param_2 < 0) {\n      unaff_s2 = (int *)-(int)unaff_s2;\n    }\n    local_20[1] = (int)unaff_s2;\n    param_1 = param_3;\n  }\n  if (*(int *)(puVar16 + -0x1c) != **(int **)(puVar14 + -0x7b00)) {\n    pcVar18 = *(code **)(puVar14 + -0x7b70);\n    uVar19 = 0x1a8b8;\n    (*pcVar18)();\n    *(undefined4 *)(puVar16 + -0x3c) = uVar19;\n    *(undefined1 **)(puVar16 + -0x40) = auStack_38;\n    *(undefined4 *)(puVar16 + -0x44) = unaff_s7;\n    *(undefined4 *)(puVar16 + -0x48) = unaff_s6;\n    *(undefined4 *)(puVar16 + -0x4c) = unaff_s5;\n    *(undefined4 *)(puVar16 + -0x50) = unaff_s4;\n    *(int **)(puVar16 + -0x54) = param_1;\n    *(int **)(puVar16 + -0x58) = unaff_s2;\n    *(int **)(puVar16 + -0x5c) = param_2;\n    *(int **)(puVar16 + -0x60) = local_20;\n    *(code **)(puVar16 + -0x68) = pcVar18 + 0x88780;\n    *(int **)(puVar16 + -0x38) = piVar6;\n    *(undefined1 **)(puVar16 + -0x34) = puVar7;\n    *(int **)(puVar16 + -0x30) = piVar8;\n    if (puVar7 == (undefined1 *)0x0) {\n      *(undefined4 *)(puVar16 + -0x34) = **(undefined4 **)(pcVar18 + 0x80a54);\n    }\n    iVar9 = (*(code *)**(undefined4 **)(pcVar18 + 0x80c4c))(100);\n    iVar10 = *(int *)(puVar16 + -0x68);\n    iVar1 = 0;\n    do {\n      iVar12 = iVar1;\n      iVar4 = (**(code **)(iVar10 + -0x7f3c))(*(undefined4 *)(puVar16 + -0x34));\n      piVar6 = (int *)(**(code **)(*(int *)(puVar16 + -0x68) + -0x7f94))();\n      iVar10 = *(int *)(puVar16 + -0x68);\n      iVar1 = iVar12 + 1;\n    } while ((*(ushort *)(*piVar6 + iVar4 * 2) & 0x20) != 0);\n    puVar17 = *(undefined4 **)(iVar10 + -0x7aa0);\n    uVar2 = 0;\n    uVar3 = 100;\n    while ((iVar4 != -1 && (uVar11 = uVar2 + 1, (*(ushort *)(*piVar6 + iVar4 * 2) & 0x20) == 0))) {\n      *(char *)(iVar9 + uVar2) = (char)iVar4;\n      iVar4 = (**(code **)(iVar10 + -0x7f3c))(*(undefined4 *)(puVar16 + -0x34));\n      iVar10 = *(int *)(puVar16 + -0x68);\n      uVar2 = uVar11;\n      if (uVar3 <= uVar11) {\n        uVar11 = uVar3 * 3 >> 1;\n        iVar9 = (*(code *)*puVar17)(iVar9,uVar3,uVar11);\n        iVar10 = *(int *)(puVar16 + -0x68);\n        uVar3 = uVar11;\n      }\n    }\n    (**(code **)(iVar10 + -0x7d5c))(iVar4,*(undefined4 *)(puVar16 + -0x34));\n    iVar1 = *(int *)(puVar16 + -0x68);\n    uVar11 = uVar3;\n    if (uVar3 <= uVar2) {\n      uVar11 = uVar3 * 3 >> 1;\n      iVar9 = (*(code *)**(undefined4 **)(iVar1 + -0x7aa0))(iVar9,uVar3,uVar11);\n      iVar1 = *(int *)(puVar16 + -0x68);\n    }\n    *(undefined1 *)(iVar9 + uVar2) = 0;\n    iVar1 = (**(code **)(iVar1 + -0x7ae8))\n                      (*(undefined4 *)(puVar16 + -0x38),iVar9,*(undefined4 *)(puVar16 + -0x30));\n    (*(code *)**(undefined4 **)(*(int *)(puVar16 + -0x68) + -0x7e70))(iVar9,uVar11);\n    iVar9 = 0;\n    if (iVar1 != -1) {\n      iVar9 = iVar12 + uVar2;\n    }\n    return iVar9;\n  }\n  return **(int **)(puVar14 + -0x7b00);\n}\n\n" (function_definition "int __gmpf_sqrt(int *param_1,int *param_2,int *param_3)\n\n{\n  int iVar1;\n  uint uVar2;\n  uint uVar3;\n  int iVar4;\n  int *piVar5;\n  int *piVar6;\n  undefined1 *puVar7;\n  int *piVar8;\n  int iVar9;\n  int iVar10;\n  int unaff_s1;\n  int *unaff_s2;\n  undefined4 unaff_s4;\n  uint uVar11;\n  undefined4 unaff_s5;\n  undefined4 unaff_s6;\n  int iVar12;\n  undefined4 unaff_s7;\n  undefined *puVar13;\n  undefined *puVar14;\n  undefined1 *puVar15;\n  undefined1 *puVar16;\n  undefined4 *puVar17;\n  code *pcVar18;\n  undefined4 uVar19;\n  undefined1 auStack_38 [16];\n  int *local_20;\n  \n  puVar16 = auStack_38;\n  puVar15 = auStack_38;\n  iVar1 = *(int *)PTR___stack_chk_guard_0009b540;\n  iVar9 = param_2[1];\n  if (iVar9 < 1) {\n    if (-1 < iVar9) {\n      param_1[1] = 0;\n      param_1[2] = 0;\n      local_20 = param_1;\n      goto LAB_0001a69c;\n    }\n    (*(code *)PTR___gmp_sqrt_of_negative_0009b1cc)();\nLAB_0001a654:\n    param_3 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)();\n  }\n  else {\n    local_20 = (int *)0x0;\n    uVar2 = param_2[2];\n    unaff_s2 = (int *)param_2[3];\n    uVar3 = uVar2 & 1;\n    unaff_s1 = *param_1 * 2 - uVar3;\n    param_1[1] = *param_1;\n    param_1[2] = (int)(uVar2 + uVar3) / 2;\n    if (0x7f00 < (uint)(unaff_s1 * 4)) goto LAB_0001a654;\n    iVar10 = -(unaff_s1 * 4 + 7U & 0xfffffff8);\n    puVar15 = auStack_38 + iVar10;\n    param_3 = (int *)(&stack0xffffffd8 + iVar10);\n  }\n  if (unaff_s1 < iVar9) {\n    if (unaff_s1 != 0) {\n      iVar10 = iVar9 - unaff_s1;\n      iVar9 = iVar10 * 4;\n      unaff_s2 = unaff_s2 + iVar10;\n      iVar4 = unaff_s1 + -1;\n      iVar10 = *unaff_s2;\n      piVar6 = param_3;\n      if (iVar4 != 0) {\n        piVar8 = unaff_s2 + 1;\n        do {\n          *piVar6 = iVar10;\n          unaff_s2 = piVar8 + 1;\n          iVar4 = iVar4 + -1;\n          iVar10 = *piVar8;\n          piVar6 = piVar6 + 1;\n          piVar8 = unaff_s2;\n        } while (iVar4 != 0);\n        piVar6 = param_3 + unaff_s1 + 0x3fffffff;\n      }\n      *piVar6 = iVar10;\n    }\n  }\n  else {\n    iVar10 = unaff_s1 - iVar9;\n    piVar6 = param_3;\n    if (iVar9 != unaff_s1) {\n      do {\n        iVar10 = iVar10 + -1;\n        *piVar6 = 0;\n        piVar6 = piVar6 + 1;\n      } while (iVar10 != 0);\n    }\n    iVar4 = iVar9 + -1;\n    piVar6 = param_3 + (unaff_s1 - iVar9);\n    iVar10 = *unaff_s2;\n    if (iVar4 != 0) {\n      piVar8 = piVar6;\n      piVar5 = unaff_s2 + 1;\n      do {\n        *piVar8 = iVar10;\n        unaff_s2 = piVar5 + 1;\n        iVar4 = iVar4 + -1;\n        iVar10 = *piVar5;\n        piVar8 = piVar8 + 1;\n        piVar5 = unaff_s2;\n      } while (iVar4 != 0);\n      iVar4 = iVar9 + 0x3fffffff;\n      iVar9 = iVar4 * 4;\n      piVar6 = piVar6 + iVar4;\n    }\n    *piVar6 = iVar10;\n  }\n  param_2 = (int *)0x0;\n  (*(code *)PTR___gmpn_sqrtrem_0009b0e0)(param_1[3],0,param_3,unaff_s1);\n  puVar16 = puVar15;\n  if (local_20 != (int *)0x0) {\n    (*(code *)PTR___gmp_tmp_reentrant_free_0009b614)();\n  }\nLAB_0001a69c:\n  if (iVar1 == *(int *)PTR___stack_chk_guard_0009b540) {\n    return *(int *)PTR___stack_chk_guard_0009b540;\n  }\n  pcVar18 = __gmpf_random2;\n  puVar13 = PTR___stack_chk_fail_0009b4d0;\n  (*(code *)PTR___stack_chk_fail_0009b4d0)();\n  puVar14 = puVar13 + 0x888e0;\n  *(code **)(puVar16 + -4) = pcVar18;\n  *(int **)(puVar16 + -8) = param_1;\n  *(int **)(puVar16 + -0xc) = unaff_s2;\n  *(int *)(puVar16 + -0x10) = unaff_s1;\n  *(int *)(puVar16 + -0x14) = iVar9;\n  *(undefined **)(puVar16 + -0x28) = puVar14;\n  *(undefined4 *)(puVar16 + -0x1c) = **(undefined4 **)(puVar13 + 0x80de0);\n  if (param_2 == (int *)0x0) {\n    local_20[2] = 0;\n    local_20[1] = 0;\n    puVar7 = (undefined1 *)0x0;\n    piVar6 = local_20;\n    piVar8 = param_3;\n  }\n  else {\n    unaff_s2 = param_2;\n    if ((int)param_2 < 0) {\n      unaff_s2 = (int *)-(int)param_2;\n    }\n    if (*local_20 + 1 <= (int)unaff_s2) {\n      unaff_s2 = (int *)(*local_20 + 1);\n    }\n    (**(code **)(puVar13 + 0x809f4))(local_20[3],unaff_s2);\n    iVar1 = *(int *)(puVar16 + -0x28);\n    if (**(char **)(iVar1 + -0x7eb8) == '\0') {\n      **(undefined1 **)(iVar1 + -0x7eb8) = 1;\n      (**(code **)(iVar1 + -0x7a40))(*(undefined4 *)(iVar1 + -0x7dc4));\n      iVar1 = *(int *)(*(int *)(puVar16 + -0x28) + -0x7dc4);\n    }\n    else {\n      iVar1 = *(int *)(iVar1 + -0x7dc4);\n    }\n    piVar8 = (int *)0x20;\n    puVar7 = puVar16 + -0x20;\n    (**(code **)(*(int *)(iVar1 + 0x10) + 4))();\n    puVar14 = *(undefined **)(puVar16 + -0x28);\n    piVar5 = param_3;\n    if ((int)param_3 < 0) {\n      piVar5 = (int *)-(int)param_3;\n    }\n    uVar2 = (int)piVar5 * 2 + 1;\n    piVar6 = *(int **)(puVar16 + -0x20);\n    if (uVar2 == 0) {\n      trap(7);\n    }\n    local_20[2] = (uint)piVar6 % uVar2 - (int)piVar5;\n    if ((int)param_2 < 0) {\n      unaff_s2 = (int *)-(int)unaff_s2;\n    }\n    local_20[1] = (int)unaff_s2;\n    param_1 = param_3;\n  }\n  if (*(int *)(puVar16 + -0x1c) != **(int **)(puVar14 + -0x7b00)) {\n    pcVar18 = *(code **)(puVar14 + -0x7b70);\n    uVar19 = 0x1a8b8;\n    (*pcVar18)();\n    *(undefined4 *)(puVar16 + -0x3c) = uVar19;\n    *(undefined1 **)(puVar16 + -0x40) = auStack_38;\n    *(undefined4 *)(puVar16 + -0x44) = unaff_s7;\n    *(undefined4 *)(puVar16 + -0x48) = unaff_s6;\n    *(undefined4 *)(puVar16 + -0x4c) = unaff_s5;\n    *(undefined4 *)(puVar16 + -0x50) = unaff_s4;\n    *(int **)(puVar16 + -0x54) = param_1;\n    *(int **)(puVar16 + -0x58) = unaff_s2;\n    *(int **)(puVar16 + -0x5c) = param_2;\n    *(int **)(puVar16 + -0x60) = local_20;\n    *(code **)(puVar16 + -0x68) = pcVar18 + 0x88780;\n    *(int **)(puVar16 + -0x38) = piVar6;\n    *(undefined1 **)(puVar16 + -0x34) = puVar7;\n    *(int **)(puVar16 + -0x30) = piVar8;\n    if (puVar7 == (undefined1 *)0x0) {\n      *(undefined4 *)(puVar16 + -0x34) = **(undefined4 **)(pcVar18 + 0x80a54);\n    }\n    iVar9 = (*(code *)**(undefined4 **)(pcVar18 + 0x80c4c))(100);\n    iVar10 = *(int *)(puVar16 + -0x68);\n    iVar1 = 0;\n    do {\n      iVar12 = iVar1;\n      iVar4 = (**(code **)(iVar10 + -0x7f3c))(*(undefined4 *)(puVar16 + -0x34));\n      piVar6 = (int *)(**(code **)(*(int *)(puVar16 + -0x68) + -0x7f94))();\n      iVar10 = *(int *)(puVar16 + -0x68);\n      iVar1 = iVar12 + 1;\n    } while ((*(ushort *)(*piVar6 + iVar4 * 2) & 0x20) != 0);\n    puVar17 = *(undefined4 **)(iVar10 + -0x7aa0);\n    uVar2 = 0;\n    uVar3 = 100;\n    while ((iVar4 != -1 && (uVar11 = uVar2 + 1, (*(ushort *)(*piVar6 + iVar4 * 2) & 0x20) == 0))) {\n      *(char *)(iVar9 + uVar2) = (char)iVar4;\n      iVar4 = (**(code **)(iVar10 + -0x7f3c))(*(undefined4 *)(puVar16 + -0x34));\n      iVar10 = *(int *)(puVar16 + -0x68);\n      uVar2 = uVar11;\n      if (uVar3 <= uVar11) {\n        uVar11 = uVar3 * 3 >> 1;\n        iVar9 = (*(code *)*puVar17)(iVar9,uVar3,uVar11);\n        iVar10 = *(int *)(puVar16 + -0x68);\n        uVar3 = uVar11;\n      }\n    }\n    (**(code **)(iVar10 + -0x7d5c))(iVar4,*(undefined4 *)(puVar16 + -0x34));\n    iVar1 = *(int *)(puVar16 + -0x68);\n    uVar11 = uVar3;\n    if (uVar3 <= uVar2) {\n      uVar11 = uVar3 * 3 >> 1;\n      iVar9 = (*(code *)**(undefined4 **)(iVar1 + -0x7aa0))(iVar9,uVar3,uVar11);\n      iVar1 = *(int *)(puVar16 + -0x68);\n    }\n    *(undefined1 *)(iVar9 + uVar2) = 0;\n    iVar1 = (**(code **)(iVar1 + -0x7ae8))\n                      (*(undefined4 *)(puVar16 + -0x38),iVar9,*(undefined4 *)(puVar16 + -0x30));\n    (*(code *)**(undefined4 **)(*(int *)(puVar16 + -0x68) + -0x7e70))(iVar9,uVar11);\n    iVar9 = 0;\n    if (iVar1 != -1) {\n      iVar9 = iVar12 + uVar2;\n    }\n    return iVar9;\n  }\n  return **(int **)(puVar14 + -0x7b00);\n}" primitive_type (function_declarator "__gmpf_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  int iVar1;\n  uint uVar2;\n  uint uVar3;\n  int iVar4;\n  int *piVar5;\n  int *piVar6;\n  undefined1 *puVar7;\n  int *piVar8;\n  int iVar9;\n  int iVar10;\n  int unaff_s1;\n  int *unaff_s2;\n  undefined4 unaff_s4;\n  uint uVar11;\n  undefined4 unaff_s5;\n  undefined4 unaff_s6;\n  int iVar12;\n  undefined4 unaff_s7;\n  undefined *puVar13;\n  undefined *puVar14;\n  undefined1 *puVar15;\n  undefined1 *puVar16;\n  undefined4 *puVar17;\n  code *pcVar18;\n  undefined4 uVar19;\n  undefined1 auStack_38 [16];\n  int *local_20;\n  \n  puVar16 = auStack_38;\n  puVar15 = auStack_38;\n  iVar1 = *(int *)PTR___stack_chk_guard_0009b540;\n  iVar9 = param_2[1];\n  if (iVar9 < 1) {\n    if (-1 < iVar9) {\n      param_1[1] = 0;\n      param_1[2] = 0;\n      local_20 = param_1;\n      goto LAB_0001a69c;\n    }\n    (*(code *)PTR___gmp_sqrt_of_negative_0009b1cc)();\nLAB_0001a654:\n    param_3 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)();\n  }\n  else {\n    local_20 = (int *)0x0;\n    uVar2 = param_2[2];\n    unaff_s2 = (int *)param_2[3];\n    uVar3 = uVar2 & 1;\n    unaff_s1 = *param_1 * 2 - uVar3;\n    param_1[1] = *param_1;\n    param_1[2] = (int)(uVar2 + uVar3) / 2;\n    if (0x7f00 < (uint)(unaff_s1 * 4)) goto LAB_0001a654;\n    iVar10 = -(unaff_s1 * 4 + 7U & 0xfffffff8);\n    puVar15 = auStack_38 + iVar10;\n    param_3 = (int *)(&stack0xffffffd8 + iVar10);\n  }\n  if (unaff_s1 < iVar9) {\n    if (unaff_s1 != 0) {\n      iVar10 = iVar9 - unaff_s1;\n      iVar9 = iVar10 * 4;\n      unaff_s2 = unaff_s2 + iVar10;\n      iVar4 = unaff_s1 + -1;\n      iVar10 = *unaff_s2;\n      piVar6 = param_3;\n      if (iVar4 != 0) {\n        piVar8 = unaff_s2 + 1;\n        do {\n          *piVar6 = iVar10;\n          unaff_s2 = piVar8 + 1;\n          iVar4 = iVar4 + -1;\n          iVar10 = *piVar8;\n          piVar6 = piVar6 + 1;\n          piVar8 = unaff_s2;\n        } while (iVar4 != 0);\n        piVar6 = param_3 + unaff_s1 + 0x3fffffff;\n      }\n      *piVar6 = iVar10;\n    }\n  }\n  else {\n    iVar10 = unaff_s1 - iVar9;\n    piVar6 = param_3;\n    if (iVar9 != unaff_s1) {\n      do {\n        iVar10 = iVar10 + -1;\n        *piVar6 = 0;\n        piVar6 = piVar6 + 1;\n      } while (iVar10 != 0);\n    }\n    iVar4 = iVar9 + -1;\n    piVar6 = param_3 + (unaff_s1 - iVar9);\n    iVar10 = *unaff_s2;\n    if (iVar4 != 0) {\n      piVar8 = piVar6;\n      piVar5 = unaff_s2 + 1;\n      do {\n        *piVar8 = iVar10;\n        unaff_s2 = piVar5 + 1;\n        iVar4 = iVar4 + -1;\n        iVar10 = *piVar5;\n        piVar8 = piVar8 + 1;\n        piVar5 = unaff_s2;\n      } while (iVar4 != 0);\n      iVar4 = iVar9 + 0x3fffffff;\n      iVar9 = iVar4 * 4;\n      piVar6 = piVar6 + iVar4;\n    }\n    *piVar6 = iVar10;\n  }\n  param_2 = (int *)0x0;\n  (*(code *)PTR___gmpn_sqrtrem_0009b0e0)(param_1[3],0,param_3,unaff_s1);\n  puVar16 = puVar15;\n  if (local_20 != (int *)0x0) {\n    (*(code *)PTR___gmp_tmp_reentrant_free_0009b614)();\n  }\nLAB_0001a69c:\n  if (iVar1 == *(int *)PTR___stack_chk_guard_0009b540) {\n    return *(int *)PTR___stack_chk_guard_0009b540;\n  }\n  pcVar18 = __gmpf_random2;\n  puVar13 = PTR___stack_chk_fail_0009b4d0;\n  (*(code *)PTR___stack_chk_fail_0009b4d0)();\n  puVar14 = puVar13 + 0x888e0;\n  *(code **)(puVar16 + -4) = pcVar18;\n  *(int **)(puVar16 + -8) = param_1;\n  *(int **)(puVar16 + -0xc) = unaff_s2;\n  *(int *)(puVar16 + -0x10) = unaff_s1;\n  *(int *)(puVar16 + -0x14) = iVar9;\n  *(undefined **)(puVar16 + -0x28) = puVar14;\n  *(undefined4 *)(puVar16 + -0x1c) = **(undefined4 **)(puVar13 + 0x80de0);\n  if (param_2 == (int *)0x0) {\n    local_20[2] = 0;\n    local_20[1] = 0;\n    puVar7 = (undefined1 *)0x0;\n    piVar6 = local_20;\n    piVar8 = param_3;\n  }\n  else {\n    unaff_s2 = param_2;\n    if ((int)param_2 < 0) {\n      unaff_s2 = (int *)-(int)param_2;\n    }\n    if (*local_20 + 1 <= (int)unaff_s2) {\n      unaff_s2 = (int *)(*local_20 + 1);\n    }\n    (**(code **)(puVar13 + 0x809f4))(local_20[3],unaff_s2);\n    iVar1 = *(int *)(puVar16 + -0x28);\n    if (**(char **)(iVar1 + -0x7eb8) == '\0') {\n      **(undefined1 **)(iVar1 + -0x7eb8) = 1;\n      (**(code **)(iVar1 + -0x7a40))(*(undefined4 *)(iVar1 + -0x7dc4));\n      iVar1 = *(int *)(*(int *)(puVar16 + -0x28) + -0x7dc4);\n    }\n    else {\n      iVar1 = *(int *)(iVar1 + -0x7dc4);\n    }\n    piVar8 = (int *)0x20;\n    puVar7 = puVar16 + -0x20;\n    (**(code **)(*(int *)(iVar1 + 0x10) + 4))();\n    puVar14 = *(undefined **)(puVar16 + -0x28);\n    piVar5 = param_3;\n    if ((int)param_3 < 0) {\n      piVar5 = (int *)-(int)param_3;\n    }\n    uVar2 = (int)piVar5 * 2 + 1;\n    piVar6 = *(int **)(puVar16 + -0x20);\n    if (uVar2 == 0) {\n      trap(7);\n    }\n    local_20[2] = (uint)piVar6 % uVar2 - (int)piVar5;\n    if ((int)param_2 < 0) {\n      unaff_s2 = (int *)-(int)unaff_s2;\n    }\n    local_20[1] = (int)unaff_s2;\n    param_1 = param_3;\n  }\n  if (*(int *)(puVar16 + -0x1c) != **(int **)(puVar14 + -0x7b00)) {\n    pcVar18 = *(code **)(puVar14 + -0x7b70);\n    uVar19 = 0x1a8b8;\n    (*pcVar18)();\n    *(undefined4 *)(puVar16 + -0x3c) = uVar19;\n    *(undefined1 **)(puVar16 + -0x40) = auStack_38;\n    *(undefined4 *)(puVar16 + -0x44) = unaff_s7;\n    *(undefined4 *)(puVar16 + -0x48) = unaff_s6;\n    *(undefined4 *)(puVar16 + -0x4c) = unaff_s5;\n    *(undefined4 *)(puVar16 + -0x50) = unaff_s4;\n    *(int **)(puVar16 + -0x54) = param_1;\n    *(int **)(puVar16 + -0x58) = unaff_s2;\n    *(int **)(puVar16 + -0x5c) = param_2;\n    *(int **)(puVar16 + -0x60) = local_20;\n    *(code **)(puVar16 + -0x68) = pcVar18 + 0x88780;\n    *(int **)(puVar16 + -0x38) = piVar6;\n    *(undefined1 **)(puVar16 + -0x34) = puVar7;\n    *(int **)(puVar16 + -0x30) = piVar8;\n    if (puVar7 == (undefined1 *)0x0) {\n      *(undefined4 *)(puVar16 + -0x34) = **(undefined4 **)(pcVar18 + 0x80a54);\n    }\n    iVar9 = (*(code *)**(undefined4 **)(pcVar18 + 0x80c4c))(100);\n    iVar10 = *(int *)(puVar16 + -0x68);\n    iVar1 = 0;\n    do {\n      iVar12 = iVar1;\n      iVar4 = (**(code **)(iVar10 + -0x7f3c))(*(undefined4 *)(puVar16 + -0x34));\n      piVar6 = (int *)(**(code **)(*(int *)(puVar16 + -0x68) + -0x7f94))();\n      iVar10 = *(int *)(puVar16 + -0x68);\n      iVar1 = iVar12 + 1;\n    } while ((*(ushort *)(*piVar6 + iVar4 * 2) & 0x20) != 0);\n    puVar17 = *(undefined4 **)(iVar10 + -0x7aa0);\n    uVar2 = 0;\n    uVar3 = 100;\n    while ((iVar4 != -1 && (uVar11 = uVar2 + 1, (*(ushort *)(*piVar6 + iVar4 * 2) & 0x20) == 0))) {\n      *(char *)(iVar9 + uVar2) = (char)iVar4;\n      iVar4 = (**(code **)(iVar10 + -0x7f3c))(*(undefined4 *)(puVar16 + -0x34));\n      iVar10 = *(int *)(puVar16 + -0x68);\n      uVar2 = uVar11;\n      if (uVar3 <= uVar11) {\n        uVar11 = uVar3 * 3 >> 1;\n        iVar9 = (*(code *)*puVar17)(iVar9,uVar3,uVar11);\n        iVar10 = *(int *)(puVar16 + -0x68);\n        uVar3 = uVar11;\n      }\n    }\n    (**(code **)(iVar10 + -0x7d5c))(iVar4,*(undefined4 *)(puVar16 + -0x34));\n    iVar1 = *(int *)(puVar16 + -0x68);\n    uVar11 = uVar3;\n    if (uVar3 <= uVar2) {\n      uVar11 = uVar3 * 3 >> 1;\n      iVar9 = (*(code *)**(undefined4 **)(iVar1 + -0x7aa0))(iVar9,uVar3,uVar11);\n      iVar1 = *(int *)(puVar16 + -0x68);\n    }\n    *(undefined1 *)(iVar9 + uVar2) = 0;\n    iVar1 = (**(code **)(iVar1 + -0x7ae8))\n                      (*(undefined4 *)(puVar16 + -0x38),iVar9,*(undefined4 *)(puVar16 + -0x30));\n    (*(code *)**(undefined4 **)(*(int *)(puVar16 + -0x68) + -0x7e70))(iVar9,uVar11);\n    iVar9 = 0;\n    if (iVar1 != -1) {\n      iVar9 = iVar12 + uVar2;\n    }\n    return iVar9;\n  }\n  return **(int **)(puVar14 + -0x7b00);\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "int *piVar6;" primitive_type (pointer_declarator "*piVar6" * identifier) ;) (declaration "undefined1 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "int *piVar8;" primitive_type (pointer_declarator "*piVar8" * identifier) ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "int unaff_s1;" primitive_type identifier ;) (declaration "int *unaff_s2;" primitive_type (pointer_declarator "*unaff_s2" * identifier) ;) (declaration "undefined4 unaff_s4;" type_identifier identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "undefined4 unaff_s5;" type_identifier identifier ;) (declaration "undefined4 unaff_s6;" type_identifier identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "undefined4 unaff_s7;" type_identifier identifier ;) (declaration "undefined *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "undefined *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "undefined1 *puVar15;" type_identifier (pointer_declarator "*puVar15" * identifier) ;) (declaration "undefined1 *puVar16;" type_identifier (pointer_declarator "*puVar16" * identifier) ;) (declaration "undefined4 *puVar17;" type_identifier (pointer_declarator "*puVar17" * identifier) ;) (declaration "code *pcVar18;" type_identifier (pointer_declarator "*pcVar18" * identifier) ;) (declaration "undefined4 uVar19;" type_identifier identifier ;) (declaration "undefined1 auStack_38 [16];" type_identifier (array_declarator "auStack_38 [16]" identifier [ number_literal ]) ;) (declaration "int *local_20;" primitive_type (pointer_declarator "*local_20" * identifier) ;) (expression_statement "puVar16 = auStack_38;" (assignment_expression "puVar16 = auStack_38" identifier = identifier) ;) (expression_statement "puVar15 = auStack_38;" (assignment_expression "puVar15 = auStack_38" identifier = identifier) ;) (expression_statement "iVar1 = *(int *)PTR___stack_chk_guard_0009b540;" (assignment_expression "iVar1 = *(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 "iVar9 = param_2[1];" (assignment_expression "iVar9 = param_2[1]" identifier = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (if_statement "if (iVar9 < 1) {\n    if (-1 < iVar9) {\n      param_1[1] = 0;\n      param_1[2] = 0;\n      local_20 = param_1;\n      goto LAB_0001a69c;\n    }\n    (*(code *)PTR___gmp_sqrt_of_negative_0009b1cc)();\nLAB_0001a654:\n    param_3 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)();\n  }\n  else {\n    local_20 = (int *)0x0;\n    uVar2 = param_2[2];\n    unaff_s2 = (int *)param_2[3];\n    uVar3 = uVar2 & 1;\n    unaff_s1 = *param_1 * 2 - uVar3;\n    param_1[1] = *param_1;\n    param_1[2] = (int)(uVar2 + uVar3) / 2;\n    if (0x7f00 < (uint)(unaff_s1 * 4)) goto LAB_0001a654;\n    iVar10 = -(unaff_s1 * 4 + 7U & 0xfffffff8);\n    puVar15 = auStack_38 + iVar10;\n    param_3 = (int *)(&stack0xffffffd8 + iVar10);\n  }" if (parenthesized_expression "(iVar9 < 1)" ( (binary_expression "iVar9 < 1" identifier < number_literal) )) (compound_statement "{\n    if (-1 < iVar9) {\n      param_1[1] = 0;\n      param_1[2] = 0;\n      local_20 = param_1;\n      goto LAB_0001a69c;\n    }\n    (*(code *)PTR___gmp_sqrt_of_negative_0009b1cc)();\nLAB_0001a654:\n    param_3 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)();\n  }" { (if_statement "if (-1 < iVar9) {\n      param_1[1] = 0;\n      param_1[2] = 0;\n      local_20 = param_1;\n      goto LAB_0001a69c;\n    }" if (parenthesized_expression "(-1 < iVar9)" ( (binary_expression "-1 < iVar9" number_literal < identifier) )) (compound_statement "{\n      param_1[1] = 0;\n      param_1[2] = 0;\n      local_20 = param_1;\n      goto LAB_0001a69c;\n    }" { (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_1[2] = 0;" (assignment_expression "param_1[2] = 0" (subscript_expression "param_1[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_20 = param_1;" (assignment_expression "local_20 = param_1" identifier = identifier) ;) (goto_statement "goto LAB_0001a69c;" goto statement_identifier ;) })) (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 "()" ( ))) ;) (labeled_statement "LAB_0001a654:\n    param_3 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)();" statement_identifier : (expression_statement "param_3 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)();" (assignment_expression "param_3 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)()" identifier = (cast_expression "(int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)()" (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 "()" ( ))))) ;)) }) (else_clause "else {\n    local_20 = (int *)0x0;\n    uVar2 = param_2[2];\n    unaff_s2 = (int *)param_2[3];\n    uVar3 = uVar2 & 1;\n    unaff_s1 = *param_1 * 2 - uVar3;\n    param_1[1] = *param_1;\n    param_1[2] = (int)(uVar2 + uVar3) / 2;\n    if (0x7f00 < (uint)(unaff_s1 * 4)) goto LAB_0001a654;\n    iVar10 = -(unaff_s1 * 4 + 7U & 0xfffffff8);\n    puVar15 = auStack_38 + iVar10;\n    param_3 = (int *)(&stack0xffffffd8 + iVar10);\n  }" else (compound_statement "{\n    local_20 = (int *)0x0;\n    uVar2 = param_2[2];\n    unaff_s2 = (int *)param_2[3];\n    uVar3 = uVar2 & 1;\n    unaff_s1 = *param_1 * 2 - uVar3;\n    param_1[1] = *param_1;\n    param_1[2] = (int)(uVar2 + uVar3) / 2;\n    if (0x7f00 < (uint)(unaff_s1 * 4)) goto LAB_0001a654;\n    iVar10 = -(unaff_s1 * 4 + 7U & 0xfffffff8);\n    puVar15 = auStack_38 + iVar10;\n    param_3 = (int *)(&stack0xffffffd8 + iVar10);\n  }" { (expression_statement "local_20 = (int *)0x0;" (assignment_expression "local_20 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uVar2 = param_2[2];" (assignment_expression "uVar2 = param_2[2]" identifier = (subscript_expression "param_2[2]" identifier [ number_literal ])) ;) (expression_statement "unaff_s2 = (int *)param_2[3];" (assignment_expression "unaff_s2 = (int *)param_2[3]" identifier = (cast_expression "(int *)param_2[3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[3]" identifier [ number_literal ]))) ;) (expression_statement "uVar3 = uVar2 & 1;" (assignment_expression "uVar3 = uVar2 & 1" identifier = (binary_expression "uVar2 & 1" identifier & number_literal)) ;) (expression_statement "unaff_s1 = *param_1 * 2 - uVar3;" (assignment_expression "unaff_s1 = *param_1 * 2 - uVar3" identifier = (binary_expression "*param_1 * 2 - uVar3" (binary_expression "*param_1 * 2" (pointer_expression "*param_1" * identifier) * number_literal) - identifier)) ;) (expression_statement "param_1[1] = *param_1;" (assignment_expression "param_1[1] = *param_1" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "param_1[2] = (int)(uVar2 + uVar3) / 2;" (assignment_expression "param_1[2] = (int)(uVar2 + uVar3) / 2" (subscript_expression "param_1[2]" identifier [ number_literal ]) = (binary_expression "(int)(uVar2 + uVar3) / 2" (cast_expression "(int)(uVar2 + uVar3)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar2 + uVar3)" ( (binary_expression "uVar2 + uVar3" identifier + identifier) ))) / number_literal)) ;) (if_statement "if (0x7f00 < (uint)(unaff_s1 * 4)) goto LAB_0001a654;" if (parenthesized_expression "(0x7f00 < (uint)(unaff_s1 * 4))" ( (binary_expression "0x7f00 < (uint)(unaff_s1 * 4)" number_literal < (call_expression "(uint)(unaff_s1 * 4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(unaff_s1 * 4)" ( (binary_expression "unaff_s1 * 4" identifier * number_literal) )))) )) (goto_statement "goto LAB_0001a654;" goto statement_identifier ;)) (expression_statement "iVar10 = -(unaff_s1 * 4 + 7U & 0xfffffff8);" (assignment_expression "iVar10 = -(unaff_s1 * 4 + 7U & 0xfffffff8)" identifier = (unary_expression "-(unaff_s1 * 4 + 7U & 0xfffffff8)" - (parenthesized_expression "(unaff_s1 * 4 + 7U & 0xfffffff8)" ( (binary_expression "unaff_s1 * 4 + 7U & 0xfffffff8" (binary_expression "unaff_s1 * 4 + 7U" (binary_expression "unaff_s1 * 4" identifier * number_literal) + number_literal) & number_literal) )))) ;) (expression_statement "puVar15 = auStack_38 + iVar10;" (assignment_expression "puVar15 = auStack_38 + iVar10" identifier = (binary_expression "auStack_38 + iVar10" identifier + identifier)) ;) (expression_statement "param_3 = (int *)(&stack0xffffffd8 + iVar10);" (assignment_expression "param_3 = (int *)(&stack0xffffffd8 + iVar10)" identifier = (cast_expression "(int *)(&stack0xffffffd8 + iVar10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&stack0xffffffd8 + iVar10)" ( (binary_expression "&stack0xffffffd8 + iVar10" (pointer_expression "&stack0xffffffd8" & identifier) + identifier) )))) ;) }))) (if_statement "if (unaff_s1 < iVar9) {\n    if (unaff_s1 != 0) {\n      iVar10 = iVar9 - unaff_s1;\n      iVar9 = iVar10 * 4;\n      unaff_s2 = unaff_s2 + iVar10;\n      iVar4 = unaff_s1 + -1;\n      iVar10 = *unaff_s2;\n      piVar6 = param_3;\n      if (iVar4 != 0) {\n        piVar8 = unaff_s2 + 1;\n        do {\n          *piVar6 = iVar10;\n          unaff_s2 = piVar8 + 1;\n          iVar4 = iVar4 + -1;\n          iVar10 = *piVar8;\n          piVar6 = piVar6 + 1;\n          piVar8 = unaff_s2;\n        } while (iVar4 != 0);\n        piVar6 = param_3 + unaff_s1 + 0x3fffffff;\n      }\n      *piVar6 = iVar10;\n    }\n  }\n  else {\n    iVar10 = unaff_s1 - iVar9;\n    piVar6 = param_3;\n    if (iVar9 != unaff_s1) {\n      do {\n        iVar10 = iVar10 + -1;\n        *piVar6 = 0;\n        piVar6 = piVar6 + 1;\n      } while (iVar10 != 0);\n    }\n    iVar4 = iVar9 + -1;\n    piVar6 = param_3 + (unaff_s1 - iVar9);\n    iVar10 = *unaff_s2;\n    if (iVar4 != 0) {\n      piVar8 = piVar6;\n      piVar5 = unaff_s2 + 1;\n      do {\n        *piVar8 = iVar10;\n        unaff_s2 = piVar5 + 1;\n        iVar4 = iVar4 + -1;\n        iVar10 = *piVar5;\n        piVar8 = piVar8 + 1;\n        piVar5 = unaff_s2;\n      } while (iVar4 != 0);\n      iVar4 = iVar9 + 0x3fffffff;\n      iVar9 = iVar4 * 4;\n      piVar6 = piVar6 + iVar4;\n    }\n    *piVar6 = iVar10;\n  }" if (parenthesized_expression "(unaff_s1 < iVar9)" ( (binary_expression "unaff_s1 < iVar9" identifier < identifier) )) (compound_statement "{\n    if (unaff_s1 != 0) {\n      iVar10 = iVar9 - unaff_s1;\n      iVar9 = iVar10 * 4;\n      unaff_s2 = unaff_s2 + iVar10;\n      iVar4 = unaff_s1 + -1;\n      iVar10 = *unaff_s2;\n      piVar6 = param_3;\n      if (iVar4 != 0) {\n        piVar8 = unaff_s2 + 1;\n        do {\n          *piVar6 = iVar10;\n          unaff_s2 = piVar8 + 1;\n          iVar4 = iVar4 + -1;\n          iVar10 = *piVar8;\n          piVar6 = piVar6 + 1;\n          piVar8 = unaff_s2;\n        } while (iVar4 != 0);\n        piVar6 = param_3 + unaff_s1 + 0x3fffffff;\n      }\n      *piVar6 = iVar10;\n    }\n  }" { (if_statement "if (unaff_s1 != 0) {\n      iVar10 = iVar9 - unaff_s1;\n      iVar9 = iVar10 * 4;\n      unaff_s2 = unaff_s2 + iVar10;\n      iVar4 = unaff_s1 + -1;\n      iVar10 = *unaff_s2;\n      piVar6 = param_3;\n      if (iVar4 != 0) {\n        piVar8 = unaff_s2 + 1;\n        do {\n          *piVar6 = iVar10;\n          unaff_s2 = piVar8 + 1;\n          iVar4 = iVar4 + -1;\n          iVar10 = *piVar8;\n          piVar6 = piVar6 + 1;\n          piVar8 = unaff_s2;\n        } while (iVar4 != 0);\n        piVar6 = param_3 + unaff_s1 + 0x3fffffff;\n      }\n      *piVar6 = iVar10;\n    }" if (parenthesized_expression "(unaff_s1 != 0)" ( (binary_expression "unaff_s1 != 0" identifier != number_literal) )) (compound_statement "{\n      iVar10 = iVar9 - unaff_s1;\n      iVar9 = iVar10 * 4;\n      unaff_s2 = unaff_s2 + iVar10;\n      iVar4 = unaff_s1 + -1;\n      iVar10 = *unaff_s2;\n      piVar6 = param_3;\n      if (iVar4 != 0) {\n        piVar8 = unaff_s2 + 1;\n        do {\n          *piVar6 = iVar10;\n          unaff_s2 = piVar8 + 1;\n          iVar4 = iVar4 + -1;\n          iVar10 = *piVar8;\n          piVar6 = piVar6 + 1;\n          piVar8 = unaff_s2;\n        } while (iVar4 != 0);\n        piVar6 = param_3 + unaff_s1 + 0x3fffffff;\n      }\n      *piVar6 = iVar10;\n    }" { (expression_statement "iVar10 = iVar9 - unaff_s1;" (assignment_expression "iVar10 = iVar9 - unaff_s1" identifier = (binary_expression "iVar9 - unaff_s1" identifier - identifier)) ;) (expression_statement "iVar9 = iVar10 * 4;" (assignment_expression "iVar9 = iVar10 * 4" identifier = (binary_expression "iVar10 * 4" identifier * number_literal)) ;) (expression_statement "unaff_s2 = unaff_s2 + iVar10;" (assignment_expression "unaff_s2 = unaff_s2 + iVar10" identifier = (binary_expression "unaff_s2 + iVar10" identifier + identifier)) ;) (expression_statement "iVar4 = unaff_s1 + -1;" (assignment_expression "iVar4 = unaff_s1 + -1" identifier = (binary_expression "unaff_s1 + -1" identifier + number_literal)) ;) (expression_statement "iVar10 = *unaff_s2;" (assignment_expression "iVar10 = *unaff_s2" identifier = (pointer_expression "*unaff_s2" * identifier)) ;) (expression_statement "piVar6 = param_3;" (assignment_expression "piVar6 = param_3" identifier = identifier) ;) (if_statement "if (iVar4 != 0) {\n        piVar8 = unaff_s2 + 1;\n        do {\n          *piVar6 = iVar10;\n          unaff_s2 = piVar8 + 1;\n          iVar4 = iVar4 + -1;\n          iVar10 = *piVar8;\n          piVar6 = piVar6 + 1;\n          piVar8 = unaff_s2;\n        } while (iVar4 != 0);\n        piVar6 = param_3 + unaff_s1 + 0x3fffffff;\n      }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n        piVar8 = unaff_s2 + 1;\n        do {\n          *piVar6 = iVar10;\n          unaff_s2 = piVar8 + 1;\n          iVar4 = iVar4 + -1;\n          iVar10 = *piVar8;\n          piVar6 = piVar6 + 1;\n          piVar8 = unaff_s2;\n        } while (iVar4 != 0);\n        piVar6 = param_3 + unaff_s1 + 0x3fffffff;\n      }" { (expression_statement "piVar8 = unaff_s2 + 1;" (assignment_expression "piVar8 = unaff_s2 + 1" identifier = (binary_expression "unaff_s2 + 1" identifier + number_literal)) ;) (do_statement "do {\n          *piVar6 = iVar10;\n          unaff_s2 = piVar8 + 1;\n          iVar4 = iVar4 + -1;\n          iVar10 = *piVar8;\n          piVar6 = piVar6 + 1;\n          piVar8 = unaff_s2;\n        } while (iVar4 != 0);" do (compound_statement "{\n          *piVar6 = iVar10;\n          unaff_s2 = piVar8 + 1;\n          iVar4 = iVar4 + -1;\n          iVar10 = *piVar8;\n          piVar6 = piVar6 + 1;\n          piVar8 = unaff_s2;\n        }" { (expression_statement "*piVar6 = iVar10;" (assignment_expression "*piVar6 = iVar10" (pointer_expression "*piVar6" * identifier) = identifier) ;) (expression_statement "unaff_s2 = piVar8 + 1;" (assignment_expression "unaff_s2 = piVar8 + 1" identifier = (binary_expression "piVar8 + 1" identifier + number_literal)) ;) (expression_statement "iVar4 = iVar4 + -1;" (assignment_expression "iVar4 = iVar4 + -1" identifier = (binary_expression "iVar4 + -1" identifier + number_literal)) ;) (expression_statement "iVar10 = *piVar8;" (assignment_expression "iVar10 = *piVar8" identifier = (pointer_expression "*piVar8" * identifier)) ;) (expression_statement "piVar6 = piVar6 + 1;" (assignment_expression "piVar6 = piVar6 + 1" identifier = (binary_expression "piVar6 + 1" identifier + number_literal)) ;) (expression_statement "piVar8 = unaff_s2;" (assignment_expression "piVar8 = unaff_s2" identifier = identifier) ;) }) while (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) ;) (expression_statement "piVar6 = param_3 + unaff_s1 + 0x3fffffff;" (assignment_expression "piVar6 = param_3 + unaff_s1 + 0x3fffffff" identifier = (binary_expression "param_3 + unaff_s1 + 0x3fffffff" (binary_expression "param_3 + unaff_s1" identifier + identifier) + number_literal)) ;) })) (expression_statement "*piVar6 = iVar10;" (assignment_expression "*piVar6 = iVar10" (pointer_expression "*piVar6" * identifier) = identifier) ;) })) }) (else_clause "else {\n    iVar10 = unaff_s1 - iVar9;\n    piVar6 = param_3;\n    if (iVar9 != unaff_s1) {\n      do {\n        iVar10 = iVar10 + -1;\n        *piVar6 = 0;\n        piVar6 = piVar6 + 1;\n      } while (iVar10 != 0);\n    }\n    iVar4 = iVar9 + -1;\n    piVar6 = param_3 + (unaff_s1 - iVar9);\n    iVar10 = *unaff_s2;\n    if (iVar4 != 0) {\n      piVar8 = piVar6;\n      piVar5 = unaff_s2 + 1;\n      do {\n        *piVar8 = iVar10;\n        unaff_s2 = piVar5 + 1;\n        iVar4 = iVar4 + -1;\n        iVar10 = *piVar5;\n        piVar8 = piVar8 + 1;\n        piVar5 = unaff_s2;\n      } while (iVar4 != 0);\n      iVar4 = iVar9 + 0x3fffffff;\n      iVar9 = iVar4 * 4;\n      piVar6 = piVar6 + iVar4;\n    }\n    *piVar6 = iVar10;\n  }" else (compound_statement "{\n    iVar10 = unaff_s1 - iVar9;\n    piVar6 = param_3;\n    if (iVar9 != unaff_s1) {\n      do {\n        iVar10 = iVar10 + -1;\n        *piVar6 = 0;\n        piVar6 = piVar6 + 1;\n      } while (iVar10 != 0);\n    }\n    iVar4 = iVar9 + -1;\n    piVar6 = param_3 + (unaff_s1 - iVar9);\n    iVar10 = *unaff_s2;\n    if (iVar4 != 0) {\n      piVar8 = piVar6;\n      piVar5 = unaff_s2 + 1;\n      do {\n        *piVar8 = iVar10;\n        unaff_s2 = piVar5 + 1;\n        iVar4 = iVar4 + -1;\n        iVar10 = *piVar5;\n        piVar8 = piVar8 + 1;\n        piVar5 = unaff_s2;\n      } while (iVar4 != 0);\n      iVar4 = iVar9 + 0x3fffffff;\n      iVar9 = iVar4 * 4;\n      piVar6 = piVar6 + iVar4;\n    }\n    *piVar6 = iVar10;\n  }" { (expression_statement "iVar10 = unaff_s1 - iVar9;" (assignment_expression "iVar10 = unaff_s1 - iVar9" identifier = (binary_expression "unaff_s1 - iVar9" identifier - identifier)) ;) (expression_statement "piVar6 = param_3;" (assignment_expression "piVar6 = param_3" identifier = identifier) ;) (if_statement "if (iVar9 != unaff_s1) {\n      do {\n        iVar10 = iVar10 + -1;\n        *piVar6 = 0;\n        piVar6 = piVar6 + 1;\n      } while (iVar10 != 0);\n    }" if (parenthesized_expression "(iVar9 != unaff_s1)" ( (binary_expression "iVar9 != unaff_s1" identifier != identifier) )) (compound_statement "{\n      do {\n        iVar10 = iVar10 + -1;\n        *piVar6 = 0;\n        piVar6 = piVar6 + 1;\n      } while (iVar10 != 0);\n    }" { (do_statement "do {\n        iVar10 = iVar10 + -1;\n        *piVar6 = 0;\n        piVar6 = piVar6 + 1;\n      } while (iVar10 != 0);" do (compound_statement "{\n        iVar10 = iVar10 + -1;\n        *piVar6 = 0;\n        piVar6 = piVar6 + 1;\n      }" { (expression_statement "iVar10 = iVar10 + -1;" (assignment_expression "iVar10 = iVar10 + -1" identifier = (binary_expression "iVar10 + -1" identifier + number_literal)) ;) (expression_statement "*piVar6 = 0;" (assignment_expression "*piVar6 = 0" (pointer_expression "*piVar6" * identifier) = number_literal) ;) (expression_statement "piVar6 = piVar6 + 1;" (assignment_expression "piVar6 = piVar6 + 1" identifier = (binary_expression "piVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) ;) })) (expression_statement "iVar4 = iVar9 + -1;" (assignment_expression "iVar4 = iVar9 + -1" identifier = (binary_expression "iVar9 + -1" identifier + number_literal)) ;) (expression_statement "piVar6 = param_3 + (unaff_s1 - iVar9);" (assignment_expression "piVar6 = param_3 + (unaff_s1 - iVar9)" identifier = (binary_expression "param_3 + (unaff_s1 - iVar9)" identifier + (parenthesized_expression "(unaff_s1 - iVar9)" ( (binary_expression "unaff_s1 - iVar9" identifier - identifier) )))) ;) (expression_statement "iVar10 = *unaff_s2;" (assignment_expression "iVar10 = *unaff_s2" identifier = (pointer_expression "*unaff_s2" * identifier)) ;) (if_statement "if (iVar4 != 0) {\n      piVar8 = piVar6;\n      piVar5 = unaff_s2 + 1;\n      do {\n        *piVar8 = iVar10;\n        unaff_s2 = piVar5 + 1;\n        iVar4 = iVar4 + -1;\n        iVar10 = *piVar5;\n        piVar8 = piVar8 + 1;\n        piVar5 = unaff_s2;\n      } while (iVar4 != 0);\n      iVar4 = iVar9 + 0x3fffffff;\n      iVar9 = iVar4 * 4;\n      piVar6 = piVar6 + iVar4;\n    }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n      piVar8 = piVar6;\n      piVar5 = unaff_s2 + 1;\n      do {\n        *piVar8 = iVar10;\n        unaff_s2 = piVar5 + 1;\n        iVar4 = iVar4 + -1;\n        iVar10 = *piVar5;\n        piVar8 = piVar8 + 1;\n        piVar5 = unaff_s2;\n      } while (iVar4 != 0);\n      iVar4 = iVar9 + 0x3fffffff;\n      iVar9 = iVar4 * 4;\n      piVar6 = piVar6 + iVar4;\n    }" { (expression_statement "piVar8 = piVar6;" (assignment_expression "piVar8 = piVar6" identifier = identifier) ;) (expression_statement "piVar5 = unaff_s2 + 1;" (assignment_expression "piVar5 = unaff_s2 + 1" identifier = (binary_expression "unaff_s2 + 1" identifier + number_literal)) ;) (do_statement "do {\n        *piVar8 = iVar10;\n        unaff_s2 = piVar5 + 1;\n        iVar4 = iVar4 + -1;\n        iVar10 = *piVar5;\n        piVar8 = piVar8 + 1;\n        piVar5 = unaff_s2;\n      } while (iVar4 != 0);" do (compound_statement "{\n        *piVar8 = iVar10;\n        unaff_s2 = piVar5 + 1;\n        iVar4 = iVar4 + -1;\n        iVar10 = *piVar5;\n        piVar8 = piVar8 + 1;\n        piVar5 = unaff_s2;\n      }" { (expression_statement "*piVar8 = iVar10;" (assignment_expression "*piVar8 = iVar10" (pointer_expression "*piVar8" * identifier) = identifier) ;) (expression_statement "unaff_s2 = piVar5 + 1;" (assignment_expression "unaff_s2 = piVar5 + 1" identifier = (binary_expression "piVar5 + 1" identifier + number_literal)) ;) (expression_statement "iVar4 = iVar4 + -1;" (assignment_expression "iVar4 = iVar4 + -1" identifier = (binary_expression "iVar4 + -1" identifier + number_literal)) ;) (expression_statement "iVar10 = *piVar5;" (assignment_expression "iVar10 = *piVar5" identifier = (pointer_expression "*piVar5" * identifier)) ;) (expression_statement "piVar8 = piVar8 + 1;" (assignment_expression "piVar8 = piVar8 + 1" identifier = (binary_expression "piVar8 + 1" identifier + number_literal)) ;) (expression_statement "piVar5 = unaff_s2;" (assignment_expression "piVar5 = unaff_s2" identifier = identifier) ;) }) while (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) ;) (expression_statement "iVar4 = iVar9 + 0x3fffffff;" (assignment_expression "iVar4 = iVar9 + 0x3fffffff" identifier = (binary_expression "iVar9 + 0x3fffffff" identifier + number_literal)) ;) (expression_statement "iVar9 = iVar4 * 4;" (assignment_expression "iVar9 = iVar4 * 4" identifier = (binary_expression "iVar4 * 4" identifier * number_literal)) ;) (expression_statement "piVar6 = piVar6 + iVar4;" (assignment_expression "piVar6 = piVar6 + iVar4" identifier = (binary_expression "piVar6 + iVar4" identifier + identifier)) ;) })) (expression_statement "*piVar6 = iVar10;" (assignment_expression "*piVar6 = iVar10" (pointer_expression "*piVar6" * 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 "(*(code *)PTR___gmpn_sqrtrem_0009b0e0)(param_1[3],0,param_3,unaff_s1);" (call_expression "(*(code *)PTR___gmpn_sqrtrem_0009b0e0)(param_1[3],0,param_3,unaff_s1)" (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 "(param_1[3],0,param_3,unaff_s1)" ( (subscript_expression "param_1[3]" identifier [ number_literal ]) , number_literal , identifier , identifier ))) ;) (expression_statement "puVar16 = puVar15;" (assignment_expression "puVar16 = puVar15" identifier = identifier) ;) (if_statement "if (local_20 != (int *)0x0) {\n    (*(code *)PTR___gmp_tmp_reentrant_free_0009b614)();\n  }" if (parenthesized_expression "(local_20 != (int *)0x0)" ( (binary_expression "local_20 != (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 "()" ( ))) ;) })) (labeled_statement "LAB_0001a69c:\n  if (iVar1 == *(int *)PTR___stack_chk_guard_0009b540) {\n    return *(int *)PTR___stack_chk_guard_0009b540;\n  }" statement_identifier : (if_statement "if (iVar1 == *(int *)PTR___stack_chk_guard_0009b540) {\n    return *(int *)PTR___stack_chk_guard_0009b540;\n  }" if (parenthesized_expression "(iVar1 == *(int *)PTR___stack_chk_guard_0009b540)" ( (binary_expression "iVar1 == *(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 *(int *)PTR___stack_chk_guard_0009b540;\n  }" { (return_statement "return *(int *)PTR___stack_chk_guard_0009b540;" return (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 "pcVar18 = __gmpf_random2;" (assignment_expression "pcVar18 = __gmpf_random2" identifier = identifier) ;) (expression_statement "puVar13 = PTR___stack_chk_fail_0009b4d0;" (assignment_expression "puVar13 = 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 "puVar14 = puVar13 + 0x888e0;" (assignment_expression "puVar14 = puVar13 + 0x888e0" identifier = (binary_expression "puVar13 + 0x888e0" identifier + number_literal)) ;) (expression_statement "*(code **)(puVar16 + -4) = pcVar18;" (assignment_expression "*(code **)(puVar16 + -4) = pcVar18" (pointer_expression "*(code **)(puVar16 + -4)" * (cast_expression "(code **)(puVar16 + -4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -4)" ( (binary_expression "puVar16 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar16 + -8) = param_1;" (assignment_expression "*(int **)(puVar16 + -8) = param_1" (pointer_expression "*(int **)(puVar16 + -8)" * (cast_expression "(int **)(puVar16 + -8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar16 + -0xc) = unaff_s2;" (assignment_expression "*(int **)(puVar16 + -0xc) = unaff_s2" (pointer_expression "*(int **)(puVar16 + -0xc)" * (cast_expression "(int **)(puVar16 + -0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar16 + -0x10) = unaff_s1;" (assignment_expression "*(int *)(puVar16 + -0x10) = unaff_s1" (pointer_expression "*(int *)(puVar16 + -0x10)" * (cast_expression "(int *)(puVar16 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar16 + -0x14) = iVar9;" (assignment_expression "*(int *)(puVar16 + -0x14) = iVar9" (pointer_expression "*(int *)(puVar16 + -0x14)" * (cast_expression "(int *)(puVar16 + -0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)(puVar16 + -0x28) = puVar14;" (assignment_expression "*(undefined **)(puVar16 + -0x28) = puVar14" (pointer_expression "*(undefined **)(puVar16 + -0x28)" * (cast_expression "(undefined **)(puVar16 + -0x28)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x28)" ( (binary_expression "puVar16 + -0x28" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x1c) = **(undefined4 **)(puVar13 + 0x80de0);" (assignment_expression "*(undefined4 *)(puVar16 + -0x1c) = **(undefined4 **)(puVar13 + 0x80de0)" (pointer_expression "*(undefined4 *)(puVar16 + -0x1c)" * (cast_expression "(undefined4 *)(puVar16 + -0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x1c)" ( (binary_expression "puVar16 + -0x1c" identifier + number_literal) )))) = (pointer_expression "**(undefined4 **)(puVar13 + 0x80de0)" * (pointer_expression "*(undefined4 **)(puVar13 + 0x80de0)" * (cast_expression "(undefined4 **)(puVar13 + 0x80de0)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar13 + 0x80de0)" ( (binary_expression "puVar13 + 0x80de0" identifier + number_literal) )))))) ;) (if_statement "if (param_2 == (int *)0x0) {\n    local_20[2] = 0;\n    local_20[1] = 0;\n    puVar7 = (undefined1 *)0x0;\n    piVar6 = local_20;\n    piVar8 = param_3;\n  }\n  else {\n    unaff_s2 = param_2;\n    if ((int)param_2 < 0) {\n      unaff_s2 = (int *)-(int)param_2;\n    }\n    if (*local_20 + 1 <= (int)unaff_s2) {\n      unaff_s2 = (int *)(*local_20 + 1);\n    }\n    (**(code **)(puVar13 + 0x809f4))(local_20[3],unaff_s2);\n    iVar1 = *(int *)(puVar16 + -0x28);\n    if (**(char **)(iVar1 + -0x7eb8) == '\0') {\n      **(undefined1 **)(iVar1 + -0x7eb8) = 1;\n      (**(code **)(iVar1 + -0x7a40))(*(undefined4 *)(iVar1 + -0x7dc4));\n      iVar1 = *(int *)(*(int *)(puVar16 + -0x28) + -0x7dc4);\n    }\n    else {\n      iVar1 = *(int *)(iVar1 + -0x7dc4);\n    }\n    piVar8 = (int *)0x20;\n    puVar7 = puVar16 + -0x20;\n    (**(code **)(*(int *)(iVar1 + 0x10) + 4))();\n    puVar14 = *(undefined **)(puVar16 + -0x28);\n    piVar5 = param_3;\n    if ((int)param_3 < 0) {\n      piVar5 = (int *)-(int)param_3;\n    }\n    uVar2 = (int)piVar5 * 2 + 1;\n    piVar6 = *(int **)(puVar16 + -0x20);\n    if (uVar2 == 0) {\n      trap(7);\n    }\n    local_20[2] = (uint)piVar6 % uVar2 - (int)piVar5;\n    if ((int)param_2 < 0) {\n      unaff_s2 = (int *)-(int)unaff_s2;\n    }\n    local_20[1] = (int)unaff_s2;\n    param_1 = param_3;\n  }" if (parenthesized_expression "(param_2 == (int *)0x0)" ( (binary_expression "param_2 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    local_20[2] = 0;\n    local_20[1] = 0;\n    puVar7 = (undefined1 *)0x0;\n    piVar6 = local_20;\n    piVar8 = param_3;\n  }" { (expression_statement "local_20[2] = 0;" (assignment_expression "local_20[2] = 0" (subscript_expression "local_20[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_20[1] = 0;" (assignment_expression "local_20[1] = 0" (subscript_expression "local_20[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar7 = (undefined1 *)0x0;" (assignment_expression "puVar7 = (undefined1 *)0x0" identifier = (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "piVar6 = local_20;" (assignment_expression "piVar6 = local_20" identifier = identifier) ;) (expression_statement "piVar8 = param_3;" (assignment_expression "piVar8 = param_3" identifier = identifier) ;) }) (else_clause "else {\n    unaff_s2 = param_2;\n    if ((int)param_2 < 0) {\n      unaff_s2 = (int *)-(int)param_2;\n    }\n    if (*local_20 + 1 <= (int)unaff_s2) {\n      unaff_s2 = (int *)(*local_20 + 1);\n    }\n    (**(code **)(puVar13 + 0x809f4))(local_20[3],unaff_s2);\n    iVar1 = *(int *)(puVar16 + -0x28);\n    if (**(char **)(iVar1 + -0x7eb8) == '\0') {\n      **(undefined1 **)(iVar1 + -0x7eb8) = 1;\n      (**(code **)(iVar1 + -0x7a40))(*(undefined4 *)(iVar1 + -0x7dc4));\n      iVar1 = *(int *)(*(int *)(puVar16 + -0x28) + -0x7dc4);\n    }\n    else {\n      iVar1 = *(int *)(iVar1 + -0x7dc4);\n    }\n    piVar8 = (int *)0x20;\n    puVar7 = puVar16 + -0x20;\n    (**(code **)(*(int *)(iVar1 + 0x10) + 4))();\n    puVar14 = *(undefined **)(puVar16 + -0x28);\n    piVar5 = param_3;\n    if ((int)param_3 < 0) {\n      piVar5 = (int *)-(int)param_3;\n    }\n    uVar2 = (int)piVar5 * 2 + 1;\n    piVar6 = *(int **)(puVar16 + -0x20);\n    if (uVar2 == 0) {\n      trap(7);\n    }\n    local_20[2] = (uint)piVar6 % uVar2 - (int)piVar5;\n    if ((int)param_2 < 0) {\n      unaff_s2 = (int *)-(int)unaff_s2;\n    }\n    local_20[1] = (int)unaff_s2;\n    param_1 = param_3;\n  }" else (compound_statement "{\n    unaff_s2 = param_2;\n    if ((int)param_2 < 0) {\n      unaff_s2 = (int *)-(int)param_2;\n    }\n    if (*local_20 + 1 <= (int)unaff_s2) {\n      unaff_s2 = (int *)(*local_20 + 1);\n    }\n    (**(code **)(puVar13 + 0x809f4))(local_20[3],unaff_s2);\n    iVar1 = *(int *)(puVar16 + -0x28);\n    if (**(char **)(iVar1 + -0x7eb8) == '\0') {\n      **(undefined1 **)(iVar1 + -0x7eb8) = 1;\n      (**(code **)(iVar1 + -0x7a40))(*(undefined4 *)(iVar1 + -0x7dc4));\n      iVar1 = *(int *)(*(int *)(puVar16 + -0x28) + -0x7dc4);\n    }\n    else {\n      iVar1 = *(int *)(iVar1 + -0x7dc4);\n    }\n    piVar8 = (int *)0x20;\n    puVar7 = puVar16 + -0x20;\n    (**(code **)(*(int *)(iVar1 + 0x10) + 4))();\n    puVar14 = *(undefined **)(puVar16 + -0x28);\n    piVar5 = param_3;\n    if ((int)param_3 < 0) {\n      piVar5 = (int *)-(int)param_3;\n    }\n    uVar2 = (int)piVar5 * 2 + 1;\n    piVar6 = *(int **)(puVar16 + -0x20);\n    if (uVar2 == 0) {\n      trap(7);\n    }\n    local_20[2] = (uint)piVar6 % uVar2 - (int)piVar5;\n    if ((int)param_2 < 0) {\n      unaff_s2 = (int *)-(int)unaff_s2;\n    }\n    local_20[1] = (int)unaff_s2;\n    param_1 = param_3;\n  }" { (expression_statement "unaff_s2 = param_2;" (assignment_expression "unaff_s2 = param_2" identifier = identifier) ;) (if_statement "if ((int)param_2 < 0) {\n      unaff_s2 = (int *)-(int)param_2;\n    }" if (parenthesized_expression "((int)param_2 < 0)" ( (binary_expression "(int)param_2 < 0" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      unaff_s2 = (int *)-(int)param_2;\n    }" { (expression_statement "unaff_s2 = (int *)-(int)param_2;" (assignment_expression "unaff_s2 = (int *)-(int)param_2" identifier = (cast_expression "(int *)-(int)param_2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (unary_expression "-(int)param_2" - (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) })) (if_statement "if (*local_20 + 1 <= (int)unaff_s2) {\n      unaff_s2 = (int *)(*local_20 + 1);\n    }" if (parenthesized_expression "(*local_20 + 1 <= (int)unaff_s2)" ( (binary_expression "*local_20 + 1 <= (int)unaff_s2" (binary_expression "*local_20 + 1" (pointer_expression "*local_20" * identifier) + number_literal) <= (cast_expression "(int)unaff_s2" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      unaff_s2 = (int *)(*local_20 + 1);\n    }" { (expression_statement "unaff_s2 = (int *)(*local_20 + 1);" (assignment_expression "unaff_s2 = (int *)(*local_20 + 1)" identifier = (cast_expression "(int *)(*local_20 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*local_20 + 1)" ( (binary_expression "*local_20 + 1" (pointer_expression "*local_20" * identifier) + number_literal) )))) ;) })) (expression_statement "(**(code **)(puVar13 + 0x809f4))(local_20[3],unaff_s2);" (call_expression "(**(code **)(puVar13 + 0x809f4))(local_20[3],unaff_s2)" (parenthesized_expression "(**(code **)(puVar13 + 0x809f4))" ( (pointer_expression "**(code **)(puVar13 + 0x809f4)" * (pointer_expression "*(code **)(puVar13 + 0x809f4)" * (cast_expression "(code **)(puVar13 + 0x809f4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar13 + 0x809f4)" ( (binary_expression "puVar13 + 0x809f4" identifier + number_literal) ))))) )) (argument_list "(local_20[3],unaff_s2)" ( (subscript_expression "local_20[3]" identifier [ number_literal ]) , identifier ))) ;) (expression_statement "iVar1 = *(int *)(puVar16 + -0x28);" (assignment_expression "iVar1 = *(int *)(puVar16 + -0x28)" identifier = (pointer_expression "*(int *)(puVar16 + -0x28)" * (cast_expression "(int *)(puVar16 + -0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x28)" ( (binary_expression "puVar16 + -0x28" identifier + number_literal) ))))) ;) (if_statement "if (**(char **)(iVar1 + -0x7eb8) == '\0') {\n      **(undefined1 **)(iVar1 + -0x7eb8) = 1;\n      (**(code **)(iVar1 + -0x7a40))(*(undefined4 *)(iVar1 + -0x7dc4));\n      iVar1 = *(int *)(*(int *)(puVar16 + -0x28) + -0x7dc4);\n    }\n    else {\n      iVar1 = *(int *)(iVar1 + -0x7dc4);\n    }" if (parenthesized_expression "(**(char **)(iVar1 + -0x7eb8) == '\0')" ( (binary_expression "**(char **)(iVar1 + -0x7eb8) == '\0'" (pointer_expression "**(char **)(iVar1 + -0x7eb8)" * (pointer_expression "*(char **)(iVar1 + -0x7eb8)" * (cast_expression "(char **)(iVar1 + -0x7eb8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + -0x7eb8)" ( (binary_expression "iVar1 + -0x7eb8" identifier + number_literal) ))))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      **(undefined1 **)(iVar1 + -0x7eb8) = 1;\n      (**(code **)(iVar1 + -0x7a40))(*(undefined4 *)(iVar1 + -0x7dc4));\n      iVar1 = *(int *)(*(int *)(puVar16 + -0x28) + -0x7dc4);\n    }" { (expression_statement "**(undefined1 **)(iVar1 + -0x7eb8) = 1;" (assignment_expression "**(undefined1 **)(iVar1 + -0x7eb8) = 1" (pointer_expression "**(undefined1 **)(iVar1 + -0x7eb8)" * (pointer_expression "*(undefined1 **)(iVar1 + -0x7eb8)" * (cast_expression "(undefined1 **)(iVar1 + -0x7eb8)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + -0x7eb8)" ( (binary_expression "iVar1 + -0x7eb8" identifier + number_literal) ))))) = number_literal) ;) (expression_statement "(**(code **)(iVar1 + -0x7a40))(*(undefined4 *)(iVar1 + -0x7dc4));" (call_expression "(**(code **)(iVar1 + -0x7a40))(*(undefined4 *)(iVar1 + -0x7dc4))" (parenthesized_expression "(**(code **)(iVar1 + -0x7a40))" ( (pointer_expression "**(code **)(iVar1 + -0x7a40)" * (pointer_expression "*(code **)(iVar1 + -0x7a40)" * (cast_expression "(code **)(iVar1 + -0x7a40)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + -0x7a40)" ( (binary_expression "iVar1 + -0x7a40" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(iVar1 + -0x7dc4))" ( (pointer_expression "*(undefined4 *)(iVar1 + -0x7dc4)" * (cast_expression "(undefined4 *)(iVar1 + -0x7dc4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + -0x7dc4)" ( (binary_expression "iVar1 + -0x7dc4" identifier + number_literal) )))) ))) ;) (expression_statement "iVar1 = *(int *)(*(int *)(puVar16 + -0x28) + -0x7dc4);" (assignment_expression "iVar1 = *(int *)(*(int *)(puVar16 + -0x28) + -0x7dc4)" identifier = (pointer_expression "*(int *)(*(int *)(puVar16 + -0x28) + -0x7dc4)" * (cast_expression "(int *)(*(int *)(puVar16 + -0x28) + -0x7dc4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar16 + -0x28) + -0x7dc4)" ( (binary_expression "*(int *)(puVar16 + -0x28) + -0x7dc4" (pointer_expression "*(int *)(puVar16 + -0x28)" * (cast_expression "(int *)(puVar16 + -0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x28)" ( (binary_expression "puVar16 + -0x28" identifier + number_literal) )))) + number_literal) ))))) ;) }) (else_clause "else {\n      iVar1 = *(int *)(iVar1 + -0x7dc4);\n    }" else (compound_statement "{\n      iVar1 = *(int *)(iVar1 + -0x7dc4);\n    }" { (expression_statement "iVar1 = *(int *)(iVar1 + -0x7dc4);" (assignment_expression "iVar1 = *(int *)(iVar1 + -0x7dc4)" identifier = (pointer_expression "*(int *)(iVar1 + -0x7dc4)" * (cast_expression "(int *)(iVar1 + -0x7dc4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + -0x7dc4)" ( (binary_expression "iVar1 + -0x7dc4" identifier + number_literal) ))))) ;) }))) (expression_statement "piVar8 = (int *)0x20;" (assignment_expression "piVar8 = (int *)0x20" identifier = (cast_expression "(int *)0x20" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar7 = puVar16 + -0x20;" (assignment_expression "puVar7 = puVar16 + -0x20" identifier = (binary_expression "puVar16 + -0x20" identifier + number_literal)) ;) (expression_statement "(**(code **)(*(int *)(iVar1 + 0x10) + 4))();" (call_expression "(**(code **)(*(int *)(iVar1 + 0x10) + 4))()" (parenthesized_expression "(**(code **)(*(int *)(iVar1 + 0x10) + 4))" ( (pointer_expression "**(code **)(*(int *)(iVar1 + 0x10) + 4)" * (pointer_expression "*(code **)(*(int *)(iVar1 + 0x10) + 4)" * (cast_expression "(code **)(*(int *)(iVar1 + 0x10) + 4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(iVar1 + 0x10) + 4)" ( (binary_expression "*(int *)(iVar1 + 0x10) + 4" (pointer_expression "*(int *)(iVar1 + 0x10)" * (cast_expression "(int *)(iVar1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x10)" ( (binary_expression "iVar1 + 0x10" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "puVar14 = *(undefined **)(puVar16 + -0x28);" (assignment_expression "puVar14 = *(undefined **)(puVar16 + -0x28)" identifier = (pointer_expression "*(undefined **)(puVar16 + -0x28)" * (cast_expression "(undefined **)(puVar16 + -0x28)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x28)" ( (binary_expression "puVar16 + -0x28" identifier + number_literal) ))))) ;) (expression_statement "piVar5 = param_3;" (assignment_expression "piVar5 = param_3" identifier = identifier) ;) (if_statement "if ((int)param_3 < 0) {\n      piVar5 = (int *)-(int)param_3;\n    }" if (parenthesized_expression "((int)param_3 < 0)" ( (binary_expression "(int)param_3 < 0" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      piVar5 = (int *)-(int)param_3;\n    }" { (expression_statement "piVar5 = (int *)-(int)param_3;" (assignment_expression "piVar5 = (int *)-(int)param_3" identifier = (cast_expression "(int *)-(int)param_3" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (unary_expression "-(int)param_3" - (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) })) (expression_statement "uVar2 = (int)piVar5 * 2 + 1;" (assignment_expression "uVar2 = (int)piVar5 * 2 + 1" identifier = (binary_expression "(int)piVar5 * 2 + 1" (binary_expression "(int)piVar5 * 2" (cast_expression "(int)piVar5" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) + number_literal)) ;) (expression_statement "piVar6 = *(int **)(puVar16 + -0x20);" (assignment_expression "piVar6 = *(int **)(puVar16 + -0x20)" identifier = (pointer_expression "*(int **)(puVar16 + -0x20)" * (cast_expression "(int **)(puVar16 + -0x20)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x20)" ( (binary_expression "puVar16 + -0x20" identifier + number_literal) ))))) ;) (if_statement "if (uVar2 == 0) {\n      trap(7);\n    }" if (parenthesized_expression "(uVar2 == 0)" ( (binary_expression "uVar2 == 0" identifier == number_literal) )) (compound_statement "{\n      trap(7);\n    }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "local_20[2] = (uint)piVar6 % uVar2 - (int)piVar5;" (assignment_expression "local_20[2] = (uint)piVar6 % uVar2 - (int)piVar5" (subscript_expression "local_20[2]" identifier [ number_literal ]) = (binary_expression "(uint)piVar6 % uVar2 - (int)piVar5" (binary_expression "(uint)piVar6 % uVar2" (cast_expression "(uint)piVar6" ( (type_descriptor "uint" type_identifier) ) identifier) % identifier) - (cast_expression "(int)piVar5" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if ((int)param_2 < 0) {\n      unaff_s2 = (int *)-(int)unaff_s2;\n    }" if (parenthesized_expression "((int)param_2 < 0)" ( (binary_expression "(int)param_2 < 0" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      unaff_s2 = (int *)-(int)unaff_s2;\n    }" { (expression_statement "unaff_s2 = (int *)-(int)unaff_s2;" (assignment_expression "unaff_s2 = (int *)-(int)unaff_s2" identifier = (cast_expression "(int *)-(int)unaff_s2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (unary_expression "-(int)unaff_s2" - (cast_expression "(int)unaff_s2" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) })) (expression_statement "local_20[1] = (int)unaff_s2;" (assignment_expression "local_20[1] = (int)unaff_s2" (subscript_expression "local_20[1]" identifier [ number_literal ]) = (cast_expression "(int)unaff_s2" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "param_1 = param_3;" (assignment_expression "param_1 = param_3" identifier = identifier) ;) }))) (if_statement "if (*(int *)(puVar16 + -0x1c) != **(int **)(puVar14 + -0x7b00)) {\n    pcVar18 = *(code **)(puVar14 + -0x7b70);\n    uVar19 = 0x1a8b8;\n    (*pcVar18)();\n    *(undefined4 *)(puVar16 + -0x3c) = uVar19;\n    *(undefined1 **)(puVar16 + -0x40) = auStack_38;\n    *(undefined4 *)(puVar16 + -0x44) = unaff_s7;\n    *(undefined4 *)(puVar16 + -0x48) = unaff_s6;\n    *(undefined4 *)(puVar16 + -0x4c) = unaff_s5;\n    *(undefined4 *)(puVar16 + -0x50) = unaff_s4;\n    *(int **)(puVar16 + -0x54) = param_1;\n    *(int **)(puVar16 + -0x58) = unaff_s2;\n    *(int **)(puVar16 + -0x5c) = param_2;\n    *(int **)(puVar16 + -0x60) = local_20;\n    *(code **)(puVar16 + -0x68) = pcVar18 + 0x88780;\n    *(int **)(puVar16 + -0x38) = piVar6;\n    *(undefined1 **)(puVar16 + -0x34) = puVar7;\n    *(int **)(puVar16 + -0x30) = piVar8;\n    if (puVar7 == (undefined1 *)0x0) {\n      *(undefined4 *)(puVar16 + -0x34) = **(undefined4 **)(pcVar18 + 0x80a54);\n    }\n    iVar9 = (*(code *)**(undefined4 **)(pcVar18 + 0x80c4c))(100);\n    iVar10 = *(int *)(puVar16 + -0x68);\n    iVar1 = 0;\n    do {\n      iVar12 = iVar1;\n      iVar4 = (**(code **)(iVar10 + -0x7f3c))(*(undefined4 *)(puVar16 + -0x34));\n      piVar6 = (int *)(**(code **)(*(int *)(puVar16 + -0x68) + -0x7f94))();\n      iVar10 = *(int *)(puVar16 + -0x68);\n      iVar1 = iVar12 + 1;\n    } while ((*(ushort *)(*piVar6 + iVar4 * 2) & 0x20) != 0);\n    puVar17 = *(undefined4 **)(iVar10 + -0x7aa0);\n    uVar2 = 0;\n    uVar3 = 100;\n    while ((iVar4 != -1 && (uVar11 = uVar2 + 1, (*(ushort *)(*piVar6 + iVar4 * 2) & 0x20) == 0))) {\n      *(char *)(iVar9 + uVar2) = (char)iVar4;\n      iVar4 = (**(code **)(iVar10 + -0x7f3c))(*(undefined4 *)(puVar16 + -0x34));\n      iVar10 = *(int *)(puVar16 + -0x68);\n      uVar2 = uVar11;\n      if (uVar3 <= uVar11) {\n        uVar11 = uVar3 * 3 >> 1;\n        iVar9 = (*(code *)*puVar17)(iVar9,uVar3,uVar11);\n        iVar10 = *(int *)(puVar16 + -0x68);\n        uVar3 = uVar11;\n      }\n    }\n    (**(code **)(iVar10 + -0x7d5c))(iVar4,*(undefined4 *)(puVar16 + -0x34));\n    iVar1 = *(int *)(puVar16 + -0x68);\n    uVar11 = uVar3;\n    if (uVar3 <= uVar2) {\n      uVar11 = uVar3 * 3 >> 1;\n      iVar9 = (*(code *)**(undefined4 **)(iVar1 + -0x7aa0))(iVar9,uVar3,uVar11);\n      iVar1 = *(int *)(puVar16 + -0x68);\n    }\n    *(undefined1 *)(iVar9 + uVar2) = 0;\n    iVar1 = (**(code **)(iVar1 + -0x7ae8))\n                      (*(undefined4 *)(puVar16 + -0x38),iVar9,*(undefined4 *)(puVar16 + -0x30));\n    (*(code *)**(undefined4 **)(*(int *)(puVar16 + -0x68) + -0x7e70))(iVar9,uVar11);\n    iVar9 = 0;\n    if (iVar1 != -1) {\n      iVar9 = iVar12 + uVar2;\n    }\n    return iVar9;\n  }" if (parenthesized_expression "(*(int *)(puVar16 + -0x1c) != **(int **)(puVar14 + -0x7b00))" ( (binary_expression "*(int *)(puVar16 + -0x1c) != **(int **)(puVar14 + -0x7b00)" (pointer_expression "*(int *)(puVar16 + -0x1c)" * (cast_expression "(int *)(puVar16 + -0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x1c)" ( (binary_expression "puVar16 + -0x1c" identifier + number_literal) )))) != (pointer_expression "**(int **)(puVar14 + -0x7b00)" * (pointer_expression "*(int **)(puVar14 + -0x7b00)" * (cast_expression "(int **)(puVar14 + -0x7b00)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + -0x7b00)" ( (binary_expression "puVar14 + -0x7b00" identifier + number_literal) )))))) )) (compound_statement "{\n    pcVar18 = *(code **)(puVar14 + -0x7b70);\n    uVar19 = 0x1a8b8;\n    (*pcVar18)();\n    *(undefined4 *)(puVar16 + -0x3c) = uVar19;\n    *(undefined1 **)(puVar16 + -0x40) = auStack_38;\n    *(undefined4 *)(puVar16 + -0x44) = unaff_s7;\n    *(undefined4 *)(puVar16 + -0x48) = unaff_s6;\n    *(undefined4 *)(puVar16 + -0x4c) = unaff_s5;\n    *(undefined4 *)(puVar16 + -0x50) = unaff_s4;\n    *(int **)(puVar16 + -0x54) = param_1;\n    *(int **)(puVar16 + -0x58) = unaff_s2;\n    *(int **)(puVar16 + -0x5c) = param_2;\n    *(int **)(puVar16 + -0x60) = local_20;\n    *(code **)(puVar16 + -0x68) = pcVar18 + 0x88780;\n    *(int **)(puVar16 + -0x38) = piVar6;\n    *(undefined1 **)(puVar16 + -0x34) = puVar7;\n    *(int **)(puVar16 + -0x30) = piVar8;\n    if (puVar7 == (undefined1 *)0x0) {\n      *(undefined4 *)(puVar16 + -0x34) = **(undefined4 **)(pcVar18 + 0x80a54);\n    }\n    iVar9 = (*(code *)**(undefined4 **)(pcVar18 + 0x80c4c))(100);\n    iVar10 = *(int *)(puVar16 + -0x68);\n    iVar1 = 0;\n    do {\n      iVar12 = iVar1;\n      iVar4 = (**(code **)(iVar10 + -0x7f3c))(*(undefined4 *)(puVar16 + -0x34));\n      piVar6 = (int *)(**(code **)(*(int *)(puVar16 + -0x68) + -0x7f94))();\n      iVar10 = *(int *)(puVar16 + -0x68);\n      iVar1 = iVar12 + 1;\n    } while ((*(ushort *)(*piVar6 + iVar4 * 2) & 0x20) != 0);\n    puVar17 = *(undefined4 **)(iVar10 + -0x7aa0);\n    uVar2 = 0;\n    uVar3 = 100;\n    while ((iVar4 != -1 && (uVar11 = uVar2 + 1, (*(ushort *)(*piVar6 + iVar4 * 2) & 0x20) == 0))) {\n      *(char *)(iVar9 + uVar2) = (char)iVar4;\n      iVar4 = (**(code **)(iVar10 + -0x7f3c))(*(undefined4 *)(puVar16 + -0x34));\n      iVar10 = *(int *)(puVar16 + -0x68);\n      uVar2 = uVar11;\n      if (uVar3 <= uVar11) {\n        uVar11 = uVar3 * 3 >> 1;\n        iVar9 = (*(code *)*puVar17)(iVar9,uVar3,uVar11);\n        iVar10 = *(int *)(puVar16 + -0x68);\n        uVar3 = uVar11;\n      }\n    }\n    (**(code **)(iVar10 + -0x7d5c))(iVar4,*(undefined4 *)(puVar16 + -0x34));\n    iVar1 = *(int *)(puVar16 + -0x68);\n    uVar11 = uVar3;\n    if (uVar3 <= uVar2) {\n      uVar11 = uVar3 * 3 >> 1;\n      iVar9 = (*(code *)**(undefined4 **)(iVar1 + -0x7aa0))(iVar9,uVar3,uVar11);\n      iVar1 = *(int *)(puVar16 + -0x68);\n    }\n    *(undefined1 *)(iVar9 + uVar2) = 0;\n    iVar1 = (**(code **)(iVar1 + -0x7ae8))\n                      (*(undefined4 *)(puVar16 + -0x38),iVar9,*(undefined4 *)(puVar16 + -0x30));\n    (*(code *)**(undefined4 **)(*(int *)(puVar16 + -0x68) + -0x7e70))(iVar9,uVar11);\n    iVar9 = 0;\n    if (iVar1 != -1) {\n      iVar9 = iVar12 + uVar2;\n    }\n    return iVar9;\n  }" { (expression_statement "pcVar18 = *(code **)(puVar14 + -0x7b70);" (assignment_expression "pcVar18 = *(code **)(puVar14 + -0x7b70)" identifier = (pointer_expression "*(code **)(puVar14 + -0x7b70)" * (cast_expression "(code **)(puVar14 + -0x7b70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + -0x7b70)" ( (binary_expression "puVar14 + -0x7b70" identifier + number_literal) ))))) ;) (expression_statement "uVar19 = 0x1a8b8;" (assignment_expression "uVar19 = 0x1a8b8" identifier = number_literal) ;) (expression_statement "(*pcVar18)();" (call_expression "(*pcVar18)()" (parenthesized_expression "(*pcVar18)" ( (pointer_expression "*pcVar18" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x3c) = uVar19;" (assignment_expression "*(undefined4 *)(puVar16 + -0x3c) = uVar19" (pointer_expression "*(undefined4 *)(puVar16 + -0x3c)" * (cast_expression "(undefined4 *)(puVar16 + -0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x3c)" ( (binary_expression "puVar16 + -0x3c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 **)(puVar16 + -0x40) = auStack_38;" (assignment_expression "*(undefined1 **)(puVar16 + -0x40) = auStack_38" (pointer_expression "*(undefined1 **)(puVar16 + -0x40)" * (cast_expression "(undefined1 **)(puVar16 + -0x40)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x40)" ( (binary_expression "puVar16 + -0x40" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x44) = unaff_s7;" (assignment_expression "*(undefined4 *)(puVar16 + -0x44) = unaff_s7" (pointer_expression "*(undefined4 *)(puVar16 + -0x44)" * (cast_expression "(undefined4 *)(puVar16 + -0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x44)" ( (binary_expression "puVar16 + -0x44" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x48) = unaff_s6;" (assignment_expression "*(undefined4 *)(puVar16 + -0x48) = unaff_s6" (pointer_expression "*(undefined4 *)(puVar16 + -0x48)" * (cast_expression "(undefined4 *)(puVar16 + -0x48)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x48)" ( (binary_expression "puVar16 + -0x48" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x4c) = unaff_s5;" (assignment_expression "*(undefined4 *)(puVar16 + -0x4c) = unaff_s5" (pointer_expression "*(undefined4 *)(puVar16 + -0x4c)" * (cast_expression "(undefined4 *)(puVar16 + -0x4c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x4c)" ( (binary_expression "puVar16 + -0x4c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x50) = unaff_s4;" (assignment_expression "*(undefined4 *)(puVar16 + -0x50) = unaff_s4" (pointer_expression "*(undefined4 *)(puVar16 + -0x50)" * (cast_expression "(undefined4 *)(puVar16 + -0x50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x50)" ( (binary_expression "puVar16 + -0x50" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar16 + -0x54) = param_1;" (assignment_expression "*(int **)(puVar16 + -0x54) = param_1" (pointer_expression "*(int **)(puVar16 + -0x54)" * (cast_expression "(int **)(puVar16 + -0x54)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x54)" ( (binary_expression "puVar16 + -0x54" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar16 + -0x58) = unaff_s2;" (assignment_expression "*(int **)(puVar16 + -0x58) = unaff_s2" (pointer_expression "*(int **)(puVar16 + -0x58)" * (cast_expression "(int **)(puVar16 + -0x58)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x58)" ( (binary_expression "puVar16 + -0x58" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar16 + -0x5c) = param_2;" (assignment_expression "*(int **)(puVar16 + -0x5c) = param_2" (pointer_expression "*(int **)(puVar16 + -0x5c)" * (cast_expression "(int **)(puVar16 + -0x5c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x5c)" ( (binary_expression "puVar16 + -0x5c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar16 + -0x60) = local_20;" (assignment_expression "*(int **)(puVar16 + -0x60) = local_20" (pointer_expression "*(int **)(puVar16 + -0x60)" * (cast_expression "(int **)(puVar16 + -0x60)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x60)" ( (binary_expression "puVar16 + -0x60" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar16 + -0x68) = pcVar18 + 0x88780;" (assignment_expression "*(code **)(puVar16 + -0x68) = pcVar18 + 0x88780" (pointer_expression "*(code **)(puVar16 + -0x68)" * (cast_expression "(code **)(puVar16 + -0x68)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x68)" ( (binary_expression "puVar16 + -0x68" identifier + number_literal) )))) = (binary_expression "pcVar18 + 0x88780" identifier + number_literal)) ;) (expression_statement "*(int **)(puVar16 + -0x38) = piVar6;" (assignment_expression "*(int **)(puVar16 + -0x38) = piVar6" (pointer_expression "*(int **)(puVar16 + -0x38)" * (cast_expression "(int **)(puVar16 + -0x38)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x38)" ( (binary_expression "puVar16 + -0x38" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 **)(puVar16 + -0x34) = puVar7;" (assignment_expression "*(undefined1 **)(puVar16 + -0x34) = puVar7" (pointer_expression "*(undefined1 **)(puVar16 + -0x34)" * (cast_expression "(undefined1 **)(puVar16 + -0x34)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x34)" ( (binary_expression "puVar16 + -0x34" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar16 + -0x30) = piVar8;" (assignment_expression "*(int **)(puVar16 + -0x30) = piVar8" (pointer_expression "*(int **)(puVar16 + -0x30)" * (cast_expression "(int **)(puVar16 + -0x30)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x30)" ( (binary_expression "puVar16 + -0x30" identifier + number_literal) )))) = identifier) ;) (if_statement "if (puVar7 == (undefined1 *)0x0) {\n      *(undefined4 *)(puVar16 + -0x34) = **(undefined4 **)(pcVar18 + 0x80a54);\n    }" if (parenthesized_expression "(puVar7 == (undefined1 *)0x0)" ( (binary_expression "puVar7 == (undefined1 *)0x0" identifier == (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      *(undefined4 *)(puVar16 + -0x34) = **(undefined4 **)(pcVar18 + 0x80a54);\n    }" { (expression_statement "*(undefined4 *)(puVar16 + -0x34) = **(undefined4 **)(pcVar18 + 0x80a54);" (assignment_expression "*(undefined4 *)(puVar16 + -0x34) = **(undefined4 **)(pcVar18 + 0x80a54)" (pointer_expression "*(undefined4 *)(puVar16 + -0x34)" * (cast_expression "(undefined4 *)(puVar16 + -0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x34)" ( (binary_expression "puVar16 + -0x34" identifier + number_literal) )))) = (pointer_expression "**(undefined4 **)(pcVar18 + 0x80a54)" * (pointer_expression "*(undefined4 **)(pcVar18 + 0x80a54)" * (cast_expression "(undefined4 **)(pcVar18 + 0x80a54)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar18 + 0x80a54)" ( (binary_expression "pcVar18 + 0x80a54" identifier + number_literal) )))))) ;) })) (expression_statement "iVar9 = (*(code *)**(undefined4 **)(pcVar18 + 0x80c4c))(100);" (assignment_expression "iVar9 = (*(code *)**(undefined4 **)(pcVar18 + 0x80c4c))(100)" identifier = (call_expression "(*(code *)**(undefined4 **)(pcVar18 + 0x80c4c))(100)" (parenthesized_expression "(*(code *)**(undefined4 **)(pcVar18 + 0x80c4c))" ( (pointer_expression "*(code *)**(undefined4 **)(pcVar18 + 0x80c4c)" * (cast_expression "(code *)**(undefined4 **)(pcVar18 + 0x80c4c)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "**(undefined4 **)(pcVar18 + 0x80c4c)" * (pointer_expression "*(undefined4 **)(pcVar18 + 0x80c4c)" * (cast_expression "(undefined4 **)(pcVar18 + 0x80c4c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar18 + 0x80c4c)" ( (binary_expression "pcVar18 + 0x80c4c" identifier + number_literal) ))))))) )) (argument_list "(100)" ( number_literal )))) ;) (expression_statement "iVar10 = *(int *)(puVar16 + -0x68);" (assignment_expression "iVar10 = *(int *)(puVar16 + -0x68)" identifier = (pointer_expression "*(int *)(puVar16 + -0x68)" * (cast_expression "(int *)(puVar16 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x68)" ( (binary_expression "puVar16 + -0x68" identifier + number_literal) ))))) ;) (expression_statement "iVar1 = 0;" (assignment_expression "iVar1 = 0" identifier = number_literal) ;) (do_statement "do {\n      iVar12 = iVar1;\n      iVar4 = (**(code **)(iVar10 + -0x7f3c))(*(undefined4 *)(puVar16 + -0x34));\n      piVar6 = (int *)(**(code **)(*(int *)(puVar16 + -0x68) + -0x7f94))();\n      iVar10 = *(int *)(puVar16 + -0x68);\n      iVar1 = iVar12 + 1;\n    } while ((*(ushort *)(*piVar6 + iVar4 * 2) & 0x20) != 0);" do (compound_statement "{\n      iVar12 = iVar1;\n      iVar4 = (**(code **)(iVar10 + -0x7f3c))(*(undefined4 *)(puVar16 + -0x34));\n      piVar6 = (int *)(**(code **)(*(int *)(puVar16 + -0x68) + -0x7f94))();\n      iVar10 = *(int *)(puVar16 + -0x68);\n      iVar1 = iVar12 + 1;\n    }" { (expression_statement "iVar12 = iVar1;" (assignment_expression "iVar12 = iVar1" identifier = identifier) ;) (expression_statement "iVar4 = (**(code **)(iVar10 + -0x7f3c))(*(undefined4 *)(puVar16 + -0x34));" (assignment_expression "iVar4 = (**(code **)(iVar10 + -0x7f3c))(*(undefined4 *)(puVar16 + -0x34))" identifier = (call_expression "(**(code **)(iVar10 + -0x7f3c))(*(undefined4 *)(puVar16 + -0x34))" (parenthesized_expression "(**(code **)(iVar10 + -0x7f3c))" ( (pointer_expression "**(code **)(iVar10 + -0x7f3c)" * (pointer_expression "*(code **)(iVar10 + -0x7f3c)" * (cast_expression "(code **)(iVar10 + -0x7f3c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar10 + -0x7f3c)" ( (binary_expression "iVar10 + -0x7f3c" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(puVar16 + -0x34))" ( (pointer_expression "*(undefined4 *)(puVar16 + -0x34)" * (cast_expression "(undefined4 *)(puVar16 + -0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x34)" ( (binary_expression "puVar16 + -0x34" identifier + number_literal) )))) )))) ;) (expression_statement "piVar6 = (int *)(**(code **)(*(int *)(puVar16 + -0x68) + -0x7f94))();" (assignment_expression "piVar6 = (int *)(**(code **)(*(int *)(puVar16 + -0x68) + -0x7f94))()" identifier = (cast_expression "(int *)(**(code **)(*(int *)(puVar16 + -0x68) + -0x7f94))()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(*(int *)(puVar16 + -0x68) + -0x7f94))()" (parenthesized_expression "(**(code **)(*(int *)(puVar16 + -0x68) + -0x7f94))" ( (pointer_expression "**(code **)(*(int *)(puVar16 + -0x68) + -0x7f94)" * (pointer_expression "*(code **)(*(int *)(puVar16 + -0x68) + -0x7f94)" * (cast_expression "(code **)(*(int *)(puVar16 + -0x68) + -0x7f94)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar16 + -0x68) + -0x7f94)" ( (binary_expression "*(int *)(puVar16 + -0x68) + -0x7f94" (pointer_expression "*(int *)(puVar16 + -0x68)" * (cast_expression "(int *)(puVar16 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x68)" ( (binary_expression "puVar16 + -0x68" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "()" ( ))))) ;) (expression_statement "iVar10 = *(int *)(puVar16 + -0x68);" (assignment_expression "iVar10 = *(int *)(puVar16 + -0x68)" identifier = (pointer_expression "*(int *)(puVar16 + -0x68)" * (cast_expression "(int *)(puVar16 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x68)" ( (binary_expression "puVar16 + -0x68" identifier + number_literal) ))))) ;) (expression_statement "iVar1 = iVar12 + 1;" (assignment_expression "iVar1 = iVar12 + 1" identifier = (binary_expression "iVar12 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((*(ushort *)(*piVar6 + iVar4 * 2) & 0x20) != 0)" ( (binary_expression "(*(ushort *)(*piVar6 + iVar4 * 2) & 0x20) != 0" (parenthesized_expression "(*(ushort *)(*piVar6 + iVar4 * 2) & 0x20)" ( (binary_expression "*(ushort *)(*piVar6 + iVar4 * 2) & 0x20" (pointer_expression "*(ushort *)(*piVar6 + iVar4 * 2)" * (cast_expression "(ushort *)(*piVar6 + iVar4 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar6 + iVar4 * 2)" ( (binary_expression "*piVar6 + iVar4 * 2" (pointer_expression "*piVar6" * identifier) + (binary_expression "iVar4 * 2" identifier * number_literal)) )))) & number_literal) )) != number_literal) )) ;) (expression_statement "puVar17 = *(undefined4 **)(iVar10 + -0x7aa0);" (assignment_expression "puVar17 = *(undefined4 **)(iVar10 + -0x7aa0)" identifier = (pointer_expression "*(undefined4 **)(iVar10 + -0x7aa0)" * (cast_expression "(undefined4 **)(iVar10 + -0x7aa0)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar10 + -0x7aa0)" ( (binary_expression "iVar10 + -0x7aa0" identifier + number_literal) ))))) ;) (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" identifier = number_literal) ;) (expression_statement "uVar3 = 100;" (assignment_expression "uVar3 = 100" identifier = number_literal) ;) (while_statement "while ((iVar4 != -1 && (uVar11 = uVar2 + 1, (*(ushort *)(*piVar6 + iVar4 * 2) & 0x20) == 0))) {\n      *(char *)(iVar9 + uVar2) = (char)iVar4;\n      iVar4 = (**(code **)(iVar10 + -0x7f3c))(*(undefined4 *)(puVar16 + -0x34));\n      iVar10 = *(int *)(puVar16 + -0x68);\n      uVar2 = uVar11;\n      if (uVar3 <= uVar11) {\n        uVar11 = uVar3 * 3 >> 1;\n        iVar9 = (*(code *)*puVar17)(iVar9,uVar3,uVar11);\n        iVar10 = *(int *)(puVar16 + -0x68);\n        uVar3 = uVar11;\n      }\n    }" while (parenthesized_expression "((iVar4 != -1 && (uVar11 = uVar2 + 1, (*(ushort *)(*piVar6 + iVar4 * 2) & 0x20) == 0)))" ( (parenthesized_expression "(iVar4 != -1 && (uVar11 = uVar2 + 1, (*(ushort *)(*piVar6 + iVar4 * 2) & 0x20) == 0))" ( (binary_expression "iVar4 != -1 && (uVar11 = uVar2 + 1, (*(ushort *)(*piVar6 + iVar4 * 2) & 0x20) == 0)" (binary_expression "iVar4 != -1" identifier != number_literal) && (parenthesized_expression "(uVar11 = uVar2 + 1, (*(ushort *)(*piVar6 + iVar4 * 2) & 0x20) == 0)" ( (comma_expression "uVar11 = uVar2 + 1, (*(ushort *)(*piVar6 + iVar4 * 2) & 0x20) == 0" (assignment_expression "uVar11 = uVar2 + 1" identifier = (binary_expression "uVar2 + 1" identifier + number_literal)) , (binary_expression "(*(ushort *)(*piVar6 + iVar4 * 2) & 0x20) == 0" (parenthesized_expression "(*(ushort *)(*piVar6 + iVar4 * 2) & 0x20)" ( (binary_expression "*(ushort *)(*piVar6 + iVar4 * 2) & 0x20" (pointer_expression "*(ushort *)(*piVar6 + iVar4 * 2)" * (cast_expression "(ushort *)(*piVar6 + iVar4 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar6 + iVar4 * 2)" ( (binary_expression "*piVar6 + iVar4 * 2" (pointer_expression "*piVar6" * identifier) + (binary_expression "iVar4 * 2" identifier * number_literal)) )))) & number_literal) )) == number_literal)) ))) )) )) (compound_statement "{\n      *(char *)(iVar9 + uVar2) = (char)iVar4;\n      iVar4 = (**(code **)(iVar10 + -0x7f3c))(*(undefined4 *)(puVar16 + -0x34));\n      iVar10 = *(int *)(puVar16 + -0x68);\n      uVar2 = uVar11;\n      if (uVar3 <= uVar11) {\n        uVar11 = uVar3 * 3 >> 1;\n        iVar9 = (*(code *)*puVar17)(iVar9,uVar3,uVar11);\n        iVar10 = *(int *)(puVar16 + -0x68);\n        uVar3 = uVar11;\n      }\n    }" { (expression_statement "*(char *)(iVar9 + uVar2) = (char)iVar4;" (assignment_expression "*(char *)(iVar9 + uVar2) = (char)iVar4" (pointer_expression "*(char *)(iVar9 + uVar2)" * (cast_expression "(char *)(iVar9 + uVar2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + uVar2)" ( (binary_expression "iVar9 + uVar2" identifier + identifier) )))) = (cast_expression "(char)iVar4" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "iVar4 = (**(code **)(iVar10 + -0x7f3c))(*(undefined4 *)(puVar16 + -0x34));" (assignment_expression "iVar4 = (**(code **)(iVar10 + -0x7f3c))(*(undefined4 *)(puVar16 + -0x34))" identifier = (call_expression "(**(code **)(iVar10 + -0x7f3c))(*(undefined4 *)(puVar16 + -0x34))" (parenthesized_expression "(**(code **)(iVar10 + -0x7f3c))" ( (pointer_expression "**(code **)(iVar10 + -0x7f3c)" * (pointer_expression "*(code **)(iVar10 + -0x7f3c)" * (cast_expression "(code **)(iVar10 + -0x7f3c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar10 + -0x7f3c)" ( (binary_expression "iVar10 + -0x7f3c" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(puVar16 + -0x34))" ( (pointer_expression "*(undefined4 *)(puVar16 + -0x34)" * (cast_expression "(undefined4 *)(puVar16 + -0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x34)" ( (binary_expression "puVar16 + -0x34" identifier + number_literal) )))) )))) ;) (expression_statement "iVar10 = *(int *)(puVar16 + -0x68);" (assignment_expression "iVar10 = *(int *)(puVar16 + -0x68)" identifier = (pointer_expression "*(int *)(puVar16 + -0x68)" * (cast_expression "(int *)(puVar16 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x68)" ( (binary_expression "puVar16 + -0x68" identifier + number_literal) ))))) ;) (expression_statement "uVar2 = uVar11;" (assignment_expression "uVar2 = uVar11" identifier = identifier) ;) (if_statement "if (uVar3 <= uVar11) {\n        uVar11 = uVar3 * 3 >> 1;\n        iVar9 = (*(code *)*puVar17)(iVar9,uVar3,uVar11);\n        iVar10 = *(int *)(puVar16 + -0x68);\n        uVar3 = uVar11;\n      }" if (parenthesized_expression "(uVar3 <= uVar11)" ( (binary_expression "uVar3 <= uVar11" identifier <= identifier) )) (compound_statement "{\n        uVar11 = uVar3 * 3 >> 1;\n        iVar9 = (*(code *)*puVar17)(iVar9,uVar3,uVar11);\n        iVar10 = *(int *)(puVar16 + -0x68);\n        uVar3 = uVar11;\n      }" { (expression_statement "uVar11 = uVar3 * 3 >> 1;" (assignment_expression "uVar11 = uVar3 * 3 >> 1" identifier = (binary_expression "uVar3 * 3 >> 1" (binary_expression "uVar3 * 3" identifier * number_literal) >> number_literal)) ;) (expression_statement "iVar9 = (*(code *)*puVar17)(iVar9,uVar3,uVar11);" (assignment_expression "iVar9 = (*(code *)*puVar17)(iVar9,uVar3,uVar11)" identifier = (call_expression "(*(code *)*puVar17)(iVar9,uVar3,uVar11)" (parenthesized_expression "(*(code *)*puVar17)" ( (pointer_expression "*(code *)*puVar17" * (cast_expression "(code *)*puVar17" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar17" * identifier))) )) (argument_list "(iVar9,uVar3,uVar11)" ( identifier , identifier , identifier )))) ;) (expression_statement "iVar10 = *(int *)(puVar16 + -0x68);" (assignment_expression "iVar10 = *(int *)(puVar16 + -0x68)" identifier = (pointer_expression "*(int *)(puVar16 + -0x68)" * (cast_expression "(int *)(puVar16 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x68)" ( (binary_expression "puVar16 + -0x68" identifier + number_literal) ))))) ;) (expression_statement "uVar3 = uVar11;" (assignment_expression "uVar3 = uVar11" identifier = identifier) ;) })) })) (expression_statement "(**(code **)(iVar10 + -0x7d5c))(iVar4,*(undefined4 *)(puVar16 + -0x34));" (call_expression "(**(code **)(iVar10 + -0x7d5c))(iVar4,*(undefined4 *)(puVar16 + -0x34))" (parenthesized_expression "(**(code **)(iVar10 + -0x7d5c))" ( (pointer_expression "**(code **)(iVar10 + -0x7d5c)" * (pointer_expression "*(code **)(iVar10 + -0x7d5c)" * (cast_expression "(code **)(iVar10 + -0x7d5c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar10 + -0x7d5c)" ( (binary_expression "iVar10 + -0x7d5c" identifier + number_literal) ))))) )) (argument_list "(iVar4,*(undefined4 *)(puVar16 + -0x34))" ( identifier , (pointer_expression "*(undefined4 *)(puVar16 + -0x34)" * (cast_expression "(undefined4 *)(puVar16 + -0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x34)" ( (binary_expression "puVar16 + -0x34" identifier + number_literal) )))) ))) ;) (expression_statement "iVar1 = *(int *)(puVar16 + -0x68);" (assignment_expression "iVar1 = *(int *)(puVar16 + -0x68)" identifier = (pointer_expression "*(int *)(puVar16 + -0x68)" * (cast_expression "(int *)(puVar16 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x68)" ( (binary_expression "puVar16 + -0x68" identifier + number_literal) ))))) ;) (expression_statement "uVar11 = uVar3;" (assignment_expression "uVar11 = uVar3" identifier = identifier) ;) (if_statement "if (uVar3 <= uVar2) {\n      uVar11 = uVar3 * 3 >> 1;\n      iVar9 = (*(code *)**(undefined4 **)(iVar1 + -0x7aa0))(iVar9,uVar3,uVar11);\n      iVar1 = *(int *)(puVar16 + -0x68);\n    }" if (parenthesized_expression "(uVar3 <= uVar2)" ( (binary_expression "uVar3 <= uVar2" identifier <= identifier) )) (compound_statement "{\n      uVar11 = uVar3 * 3 >> 1;\n      iVar9 = (*(code *)**(undefined4 **)(iVar1 + -0x7aa0))(iVar9,uVar3,uVar11);\n      iVar1 = *(int *)(puVar16 + -0x68);\n    }" { (expression_statement "uVar11 = uVar3 * 3 >> 1;" (assignment_expression "uVar11 = uVar3 * 3 >> 1" identifier = (binary_expression "uVar3 * 3 >> 1" (binary_expression "uVar3 * 3" identifier * number_literal) >> number_literal)) ;) (expression_statement "iVar9 = (*(code *)**(undefined4 **)(iVar1 + -0x7aa0))(iVar9,uVar3,uVar11);" (assignment_expression "iVar9 = (*(code *)**(undefined4 **)(iVar1 + -0x7aa0))(iVar9,uVar3,uVar11)" identifier = (call_expression "(*(code *)**(undefined4 **)(iVar1 + -0x7aa0))(iVar9,uVar3,uVar11)" (parenthesized_expression "(*(code *)**(undefined4 **)(iVar1 + -0x7aa0))" ( (pointer_expression "*(code *)**(undefined4 **)(iVar1 + -0x7aa0)" * (cast_expression "(code *)**(undefined4 **)(iVar1 + -0x7aa0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "**(undefined4 **)(iVar1 + -0x7aa0)" * (pointer_expression "*(undefined4 **)(iVar1 + -0x7aa0)" * (cast_expression "(undefined4 **)(iVar1 + -0x7aa0)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + -0x7aa0)" ( (binary_expression "iVar1 + -0x7aa0" identifier + number_literal) ))))))) )) (argument_list "(iVar9,uVar3,uVar11)" ( identifier , identifier , identifier )))) ;) (expression_statement "iVar1 = *(int *)(puVar16 + -0x68);" (assignment_expression "iVar1 = *(int *)(puVar16 + -0x68)" identifier = (pointer_expression "*(int *)(puVar16 + -0x68)" * (cast_expression "(int *)(puVar16 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x68)" ( (binary_expression "puVar16 + -0x68" identifier + number_literal) ))))) ;) })) (expression_statement "*(undefined1 *)(iVar9 + uVar2) = 0;" (assignment_expression "*(undefined1 *)(iVar9 + uVar2) = 0" (pointer_expression "*(undefined1 *)(iVar9 + uVar2)" * (cast_expression "(undefined1 *)(iVar9 + uVar2)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + uVar2)" ( (binary_expression "iVar9 + uVar2" identifier + identifier) )))) = number_literal) ;) (expression_statement "iVar1 = (**(code **)(iVar1 + -0x7ae8))\n                      (*(undefined4 *)(puVar16 + -0x38),iVar9,*(undefined4 *)(puVar16 + -0x30));" (assignment_expression "iVar1 = (**(code **)(iVar1 + -0x7ae8))\n                      (*(undefined4 *)(puVar16 + -0x38),iVar9,*(undefined4 *)(puVar16 + -0x30))" identifier = (call_expression "(**(code **)(iVar1 + -0x7ae8))\n                      (*(undefined4 *)(puVar16 + -0x38),iVar9,*(undefined4 *)(puVar16 + -0x30))" (parenthesized_expression "(**(code **)(iVar1 + -0x7ae8))" ( (pointer_expression "**(code **)(iVar1 + -0x7ae8)" * (pointer_expression "*(code **)(iVar1 + -0x7ae8)" * (cast_expression "(code **)(iVar1 + -0x7ae8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + -0x7ae8)" ( (binary_expression "iVar1 + -0x7ae8" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(puVar16 + -0x38),iVar9,*(undefined4 *)(puVar16 + -0x30))" ( (pointer_expression "*(undefined4 *)(puVar16 + -0x38)" * (cast_expression "(undefined4 *)(puVar16 + -0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x38)" ( (binary_expression "puVar16 + -0x38" identifier + number_literal) )))) , identifier , (pointer_expression "*(undefined4 *)(puVar16 + -0x30)" * (cast_expression "(undefined4 *)(puVar16 + -0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x30)" ( (binary_expression "puVar16 + -0x30" identifier + number_literal) )))) )))) ;) (expression_statement "(*(code *)**(undefined4 **)(*(int *)(puVar16 + -0x68) + -0x7e70))(iVar9,uVar11);" (call_expression "(*(code *)**(undefined4 **)(*(int *)(puVar16 + -0x68) + -0x7e70))(iVar9,uVar11)" (parenthesized_expression "(*(code *)**(undefined4 **)(*(int *)(puVar16 + -0x68) + -0x7e70))" ( (pointer_expression "*(code *)**(undefined4 **)(*(int *)(puVar16 + -0x68) + -0x7e70)" * (cast_expression "(code *)**(undefined4 **)(*(int *)(puVar16 + -0x68) + -0x7e70)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "**(undefined4 **)(*(int *)(puVar16 + -0x68) + -0x7e70)" * (pointer_expression "*(undefined4 **)(*(int *)(puVar16 + -0x68) + -0x7e70)" * (cast_expression "(undefined4 **)(*(int *)(puVar16 + -0x68) + -0x7e70)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar16 + -0x68) + -0x7e70)" ( (binary_expression "*(int *)(puVar16 + -0x68) + -0x7e70" (pointer_expression "*(int *)(puVar16 + -0x68)" * (cast_expression "(int *)(puVar16 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x68)" ( (binary_expression "puVar16 + -0x68" identifier + number_literal) )))) + number_literal) ))))))) )) (argument_list "(iVar9,uVar11)" ( identifier , identifier ))) ;) (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" identifier = number_literal) ;) (if_statement "if (iVar1 != -1) {\n      iVar9 = iVar12 + uVar2;\n    }" if (parenthesized_expression "(iVar1 != -1)" ( (binary_expression "iVar1 != -1" identifier != number_literal) )) (compound_statement "{\n      iVar9 = iVar12 + uVar2;\n    }" { (expression_statement "iVar9 = iVar12 + uVar2;" (assignment_expression "iVar9 = iVar12 + uVar2" identifier = (binary_expression "iVar12 + uVar2" identifier + identifier)) ;) })) (return_statement "return iVar9;" return identifier ;) })) (return_statement "return **(int **)(puVar14 + -0x7b00);" return (pointer_expression "**(int **)(puVar14 + -0x7b00)" * (pointer_expression "*(int **)(puVar14 + -0x7b00)" * (cast_expression "(int **)(puVar14 + -0x7b00)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + -0x7b00)" ( (binary_expression "puVar14 + -0x7b00" identifier + number_literal) ))))) ;) })))
(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 IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE 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 IDENT ;) (declaration TYPE 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 (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) ;) (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 LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (labeled_statement statement_identifier : (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 ( ))))) ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (pointer_expression * IDENT) * LIT) - IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) ))) / LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT * LIT) )))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (unary_expression - (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT * LIT) + 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) )))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (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 + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (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 = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + LIT)) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression 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 = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (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 = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (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 IDENT = (binary_expression IDENT + IDENT)) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (subscript_expression IDENT [ LIT ]) , LIT , 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 ( ))) ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) )) (compound_statement { (return_statement return (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (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 (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) )))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) 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 (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (unary_expression - (cast_expression ( (type_descriptor TYPE) ) IDENT)))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * IDENT) + LIT) <= (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 (pointer_expression * IDENT) + LIT) )))) ;) })) (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 ( (subscript_expression IDENT [ LIT ]) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) = LIT) ;) (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 ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + 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 = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (unary_expression - (cast_expression ( (type_descriptor TYPE) ) IDENT)))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT) + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) % IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (unary_expression - (cast_expression ( (type_descriptor TYPE) ) IDENT)))) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) (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 { (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 (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 *)) ) (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 * (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) )))) = (binary_expression IDENT + LIT)) ;) (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) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (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 = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))))) )) (argument_list ( LIT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (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 ( (pointer_expression * (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 *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) )) (argument_list ( ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + (binary_expression IDENT * LIT)) )))) & LIT) )) != LIT) )) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (while_statement while (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT != LIT) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT + LIT)) , (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + (binary_expression IDENT * LIT)) )))) & LIT) )) == LIT)) ))) )) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (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 ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT * LIT) >> LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) )) (argument_list ( IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) })) (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 , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT * LIT) >> LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (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 )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + 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 ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))))) )) (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) })) (return_statement return IDENT ;) })) (return_statement return (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })))
(function_definition "int __gmpf_sqrt(int *param_1,int *param_2,int *param_3)\n\n{\n  int iVar1;\n  uint uVar2;\n  uint uVar3;\n  int iVar4;\n  int *piVar5;\n  int *piVar6;\n  undefined1 *puVar7;\n  int *piVar8;\n  int iVar9;\n  int iVar10;\n  int unaff_s1;\n  int *unaff_s2;\n  undefined4 unaff_s4;\n  uint uVar11;\n  undefined4 unaff_s5;\n  undefined4 unaff_s6;\n  int iVar12;\n  undefined4 unaff_s7;\n  undefined *puVar13;\n  undefined *puVar14;\n  undefined1 *puVar15;\n  undefined1 *puVar16;\n  undefined4 *puVar17;\n  code *pcVar18;\n  undefined4 uVar19;\n  undefined1 auStack_38 [16];\n  int *local_20;\n  \n  puVar16 = auStack_38;\n  puVar15 = auStack_38;\n  iVar1 = *(int *)PTR___stack_chk_guard_0009b540;\n  iVar9 = param_2[1];\n  if (iVar9 < 1) {\n    if (-1 < iVar9) {\n      param_1[1] = 0;\n      param_1[2] = 0;\n      local_20 = param_1;\n      goto LAB_0001a69c;\n    }\n    (*(code *)PTR___gmp_sqrt_of_negative_0009b1cc)();\nLAB_0001a654:\n    param_3 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)();\n  }\n  else {\n    local_20 = (int *)0x0;\n    uVar2 = param_2[2];\n    unaff_s2 = (int *)param_2[3];\n    uVar3 = uVar2 & 1;\n    unaff_s1 = *param_1 * 2 - uVar3;\n    param_1[1] = *param_1;\n    param_1[2] = (int)(uVar2 + uVar3) / 2;\n    if (0x7f00 < (uint)(unaff_s1 * 4)) goto LAB_0001a654;\n    iVar10 = -(unaff_s1 * 4 + 7U & 0xfffffff8);\n    puVar15 = auStack_38 + iVar10;\n    param_3 = (int *)(&stack0xffffffd8 + iVar10);\n  }\n  if (unaff_s1 < iVar9) {\n    if (unaff_s1 != 0) {\n      iVar10 = iVar9 - unaff_s1;\n      iVar9 = iVar10 * 4;\n      unaff_s2 = unaff_s2 + iVar10;\n      iVar4 = unaff_s1 + -1;\n      iVar10 = *unaff_s2;\n      piVar6 = param_3;\n      if (iVar4 != 0) {\n        piVar8 = unaff_s2 + 1;\n        do {\n          *piVar6 = iVar10;\n          unaff_s2 = piVar8 + 1;\n          iVar4 = iVar4 + -1;\n          iVar10 = *piVar8;\n          piVar6 = piVar6 + 1;\n          piVar8 = unaff_s2;\n        } while (iVar4 != 0);\n        piVar6 = param_3 + unaff_s1 + 0x3fffffff;\n      }\n      *piVar6 = iVar10;\n    }\n  }\n  else {\n    iVar10 = unaff_s1 - iVar9;\n    piVar6 = param_3;\n    if (iVar9 != unaff_s1) {\n      do {\n        iVar10 = iVar10 + -1;\n        *piVar6 = 0;\n        piVar6 = piVar6 + 1;\n      } while (iVar10 != 0);\n    }\n    iVar4 = iVar9 + -1;\n    piVar6 = param_3 + (unaff_s1 - iVar9);\n    iVar10 = *unaff_s2;\n    if (iVar4 != 0) {\n      piVar8 = piVar6;\n      piVar5 = unaff_s2 + 1;\n      do {\n        *piVar8 = iVar10;\n        unaff_s2 = piVar5 + 1;\n        iVar4 = iVar4 + -1;\n        iVar10 = *piVar5;\n        piVar8 = piVar8 + 1;\n        piVar5 = unaff_s2;\n      } while (iVar4 != 0);\n      iVar4 = iVar9 + 0x3fffffff;\n      iVar9 = iVar4 * 4;\n      piVar6 = piVar6 + iVar4;\n    }\n    *piVar6 = iVar10;\n  }\n  param_2 = (int *)0x0;\n  (*(code *)PTR___gmpn_sqrtrem_0009b0e0)(param_1[3],0,param_3,unaff_s1);\n  puVar16 = puVar15;\n  if (local_20 != (int *)0x0) {\n    (*(code *)PTR___gmp_tmp_reentrant_free_0009b614)();\n  }\nLAB_0001a69c:\n  if (iVar1 == *(int *)PTR___stack_chk_guard_0009b540) {\n    return *(int *)PTR___stack_chk_guard_0009b540;\n  }\n  pcVar18 = __gmpf_random2;\n  puVar13 = PTR___stack_chk_fail_0009b4d0;\n  (*(code *)PTR___stack_chk_fail_0009b4d0)();\n  puVar14 = puVar13 + 0x888e0;\n  *(code **)(puVar16 + -4) = pcVar18;\n  *(int **)(puVar16 + -8) = param_1;\n  *(int **)(puVar16 + -0xc) = unaff_s2;\n  *(int *)(puVar16 + -0x10) = unaff_s1;\n  *(int *)(puVar16 + -0x14) = iVar9;\n  *(undefined **)(puVar16 + -0x28) = puVar14;\n  *(undefined4 *)(puVar16 + -0x1c) = **(undefined4 **)(puVar13 + 0x80de0);\n  if (param_2 == (int *)0x0) {\n    local_20[2] = 0;\n    local_20[1] = 0;\n    puVar7 = (undefined1 *)0x0;\n    piVar6 = local_20;\n    piVar8 = param_3;\n  }\n  else {\n    unaff_s2 = param_2;\n    if ((int)param_2 < 0) {\n      unaff_s2 = (int *)-(int)param_2;\n    }\n    if (*local_20 + 1 <= (int)unaff_s2) {\n      unaff_s2 = (int *)(*local_20 + 1);\n    }\n    (**(code **)(puVar13 + 0x809f4))(local_20[3],unaff_s2);\n    iVar1 = *(int *)(puVar16 + -0x28);\n    if (**(char **)(iVar1 + -0x7eb8) == '\0') {\n      **(undefined1 **)(iVar1 + -0x7eb8) = 1;\n      (**(code **)(iVar1 + -0x7a40))(*(undefined4 *)(iVar1 + -0x7dc4));\n      iVar1 = *(int *)(*(int *)(puVar16 + -0x28) + -0x7dc4);\n    }\n    else {\n      iVar1 = *(int *)(iVar1 + -0x7dc4);\n    }\n    piVar8 = (int *)0x20;\n    puVar7 = puVar16 + -0x20;\n    (**(code **)(*(int *)(iVar1 + 0x10) + 4))();\n    puVar14 = *(undefined **)(puVar16 + -0x28);\n    piVar5 = param_3;\n    if ((int)param_3 < 0) {\n      piVar5 = (int *)-(int)param_3;\n    }\n    uVar2 = (int)piVar5 * 2 + 1;\n    piVar6 = *(int **)(puVar16 + -0x20);\n    if (uVar2 == 0) {\n      trap(7);\n    }\n    local_20[2] = (uint)piVar6 % uVar2 - (int)piVar5;\n    if ((int)param_2 < 0) {\n      unaff_s2 = (int *)-(int)unaff_s2;\n    }\n    local_20[1] = (int)unaff_s2;\n    param_1 = param_3;\n  }\n  if (*(int *)(puVar16 + -0x1c) != **(int **)(puVar14 + -0x7b00)) {\n    pcVar18 = *(code **)(puVar14 + -0x7b70);\n    uVar19 = 0x1a8b8;\n    (*pcVar18)();\n    *(undefined4 *)(puVar16 + -0x3c) = uVar19;\n    *(undefined1 **)(puVar16 + -0x40) = auStack_38;\n    *(undefined4 *)(puVar16 + -0x44) = unaff_s7;\n    *(undefined4 *)(puVar16 + -0x48) = unaff_s6;\n    *(undefined4 *)(puVar16 + -0x4c) = unaff_s5;\n    *(undefined4 *)(puVar16 + -0x50) = unaff_s4;\n    *(int **)(puVar16 + -0x54) = param_1;\n    *(int **)(puVar16 + -0x58) = unaff_s2;\n    *(int **)(puVar16 + -0x5c) = param_2;\n    *(int **)(puVar16 + -0x60) = local_20;\n    *(code **)(puVar16 + -0x68) = pcVar18 + 0x88780;\n    *(int **)(puVar16 + -0x38) = piVar6;\n    *(undefined1 **)(puVar16 + -0x34) = puVar7;\n    *(int **)(puVar16 + -0x30) = piVar8;\n    if (puVar7 == (undefined1 *)0x0) {\n      *(undefined4 *)(puVar16 + -0x34) = **(undefined4 **)(pcVar18 + 0x80a54);\n    }\n    iVar9 = (*(code *)**(undefined4 **)(pcVar18 + 0x80c4c))(100);\n    iVar10 = *(int *)(puVar16 + -0x68);\n    iVar1 = 0;\n    do {\n      iVar12 = iVar1;\n      iVar4 = (**(code **)(iVar10 + -0x7f3c))(*(undefined4 *)(puVar16 + -0x34));\n      piVar6 = (int *)(**(code **)(*(int *)(puVar16 + -0x68) + -0x7f94))();\n      iVar10 = *(int *)(puVar16 + -0x68);\n      iVar1 = iVar12 + 1;\n    } while ((*(ushort *)(*piVar6 + iVar4 * 2) & 0x20) != 0);\n    puVar17 = *(undefined4 **)(iVar10 + -0x7aa0);\n    uVar2 = 0;\n    uVar3 = 100;\n    while ((iVar4 != -1 && (uVar11 = uVar2 + 1, (*(ushort *)(*piVar6 + iVar4 * 2) & 0x20) == 0))) {\n      *(char *)(iVar9 + uVar2) = (char)iVar4;\n      iVar4 = (**(code **)(iVar10 + -0x7f3c))(*(undefined4 *)(puVar16 + -0x34));\n      iVar10 = *(int *)(puVar16 + -0x68);\n      uVar2 = uVar11;\n      if (uVar3 <= uVar11) {\n        uVar11 = uVar3 * 3 >> 1;\n        iVar9 = (*(code *)*puVar17)(iVar9,uVar3,uVar11);\n        iVar10 = *(int *)(puVar16 + -0x68);\n        uVar3 = uVar11;\n      }\n    }\n    (**(code **)(iVar10 + -0x7d5c))(iVar4,*(undefined4 *)(puVar16 + -0x34));\n    iVar1 = *(int *)(puVar16 + -0x68);\n    uVar11 = uVar3;\n    if (uVar3 <= uVar2) {\n      uVar11 = uVar3 * 3 >> 1;\n      iVar9 = (*(code *)**(undefined4 **)(iVar1 + -0x7aa0))(iVar9,uVar3,uVar11);\n      iVar1 = *(int *)(puVar16 + -0x68);\n    }\n    *(undefined1 *)(iVar9 + uVar2) = 0;\n    iVar1 = (**(code **)(iVar1 + -0x7ae8))\n                      (*(undefined4 *)(puVar16 + -0x38),iVar9,*(undefined4 *)(puVar16 + -0x30));\n    (*(code *)**(undefined4 **)(*(int *)(puVar16 + -0x68) + -0x7e70))(iVar9,uVar11);\n    iVar9 = 0;\n    if (iVar1 != -1) {\n      iVar9 = iVar12 + uVar2;\n    }\n    return iVar9;\n  }\n  return **(int **)(puVar14 + -0x7b00);\n}" (primitive_type "int") (function_declarator "__gmpf_sqrt(int *param_1,int *param_2,int *param_3)" (identifier "__gmpf_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  int iVar1;\n  uint uVar2;\n  uint uVar3;\n  int iVar4;\n  int *piVar5;\n  int *piVar6;\n  undefined1 *puVar7;\n  int *piVar8;\n  int iVar9;\n  int iVar10;\n  int unaff_s1;\n  int *unaff_s2;\n  undefined4 unaff_s4;\n  uint uVar11;\n  undefined4 unaff_s5;\n  undefined4 unaff_s6;\n  int iVar12;\n  undefined4 unaff_s7;\n  undefined *puVar13;\n  undefined *puVar14;\n  undefined1 *puVar15;\n  undefined1 *puVar16;\n  undefined4 *puVar17;\n  code *pcVar18;\n  undefined4 uVar19;\n  undefined1 auStack_38 [16];\n  int *local_20;\n  \n  puVar16 = auStack_38;\n  puVar15 = auStack_38;\n  iVar1 = *(int *)PTR___stack_chk_guard_0009b540;\n  iVar9 = param_2[1];\n  if (iVar9 < 1) {\n    if (-1 < iVar9) {\n      param_1[1] = 0;\n      param_1[2] = 0;\n      local_20 = param_1;\n      goto LAB_0001a69c;\n    }\n    (*(code *)PTR___gmp_sqrt_of_negative_0009b1cc)();\nLAB_0001a654:\n    param_3 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)();\n  }\n  else {\n    local_20 = (int *)0x0;\n    uVar2 = param_2[2];\n    unaff_s2 = (int *)param_2[3];\n    uVar3 = uVar2 & 1;\n    unaff_s1 = *param_1 * 2 - uVar3;\n    param_1[1] = *param_1;\n    param_1[2] = (int)(uVar2 + uVar3) / 2;\n    if (0x7f00 < (uint)(unaff_s1 * 4)) goto LAB_0001a654;\n    iVar10 = -(unaff_s1 * 4 + 7U & 0xfffffff8);\n    puVar15 = auStack_38 + iVar10;\n    param_3 = (int *)(&stack0xffffffd8 + iVar10);\n  }\n  if (unaff_s1 < iVar9) {\n    if (unaff_s1 != 0) {\n      iVar10 = iVar9 - unaff_s1;\n      iVar9 = iVar10 * 4;\n      unaff_s2 = unaff_s2 + iVar10;\n      iVar4 = unaff_s1 + -1;\n      iVar10 = *unaff_s2;\n      piVar6 = param_3;\n      if (iVar4 != 0) {\n        piVar8 = unaff_s2 + 1;\n        do {\n          *piVar6 = iVar10;\n          unaff_s2 = piVar8 + 1;\n          iVar4 = iVar4 + -1;\n          iVar10 = *piVar8;\n          piVar6 = piVar6 + 1;\n          piVar8 = unaff_s2;\n        } while (iVar4 != 0);\n        piVar6 = param_3 + unaff_s1 + 0x3fffffff;\n      }\n      *piVar6 = iVar10;\n    }\n  }\n  else {\n    iVar10 = unaff_s1 - iVar9;\n    piVar6 = param_3;\n    if (iVar9 != unaff_s1) {\n      do {\n        iVar10 = iVar10 + -1;\n        *piVar6 = 0;\n        piVar6 = piVar6 + 1;\n      } while (iVar10 != 0);\n    }\n    iVar4 = iVar9 + -1;\n    piVar6 = param_3 + (unaff_s1 - iVar9);\n    iVar10 = *unaff_s2;\n    if (iVar4 != 0) {\n      piVar8 = piVar6;\n      piVar5 = unaff_s2 + 1;\n      do {\n        *piVar8 = iVar10;\n        unaff_s2 = piVar5 + 1;\n        iVar4 = iVar4 + -1;\n        iVar10 = *piVar5;\n        piVar8 = piVar8 + 1;\n        piVar5 = unaff_s2;\n      } while (iVar4 != 0);\n      iVar4 = iVar9 + 0x3fffffff;\n      iVar9 = iVar4 * 4;\n      piVar6 = piVar6 + iVar4;\n    }\n    *piVar6 = iVar10;\n  }\n  param_2 = (int *)0x0;\n  (*(code *)PTR___gmpn_sqrtrem_0009b0e0)(param_1[3],0,param_3,unaff_s1);\n  puVar16 = puVar15;\n  if (local_20 != (int *)0x0) {\n    (*(code *)PTR___gmp_tmp_reentrant_free_0009b614)();\n  }\nLAB_0001a69c:\n  if (iVar1 == *(int *)PTR___stack_chk_guard_0009b540) {\n    return *(int *)PTR___stack_chk_guard_0009b540;\n  }\n  pcVar18 = __gmpf_random2;\n  puVar13 = PTR___stack_chk_fail_0009b4d0;\n  (*(code *)PTR___stack_chk_fail_0009b4d0)();\n  puVar14 = puVar13 + 0x888e0;\n  *(code **)(puVar16 + -4) = pcVar18;\n  *(int **)(puVar16 + -8) = param_1;\n  *(int **)(puVar16 + -0xc) = unaff_s2;\n  *(int *)(puVar16 + -0x10) = unaff_s1;\n  *(int *)(puVar16 + -0x14) = iVar9;\n  *(undefined **)(puVar16 + -0x28) = puVar14;\n  *(undefined4 *)(puVar16 + -0x1c) = **(undefined4 **)(puVar13 + 0x80de0);\n  if (param_2 == (int *)0x0) {\n    local_20[2] = 0;\n    local_20[1] = 0;\n    puVar7 = (undefined1 *)0x0;\n    piVar6 = local_20;\n    piVar8 = param_3;\n  }\n  else {\n    unaff_s2 = param_2;\n    if ((int)param_2 < 0) {\n      unaff_s2 = (int *)-(int)param_2;\n    }\n    if (*local_20 + 1 <= (int)unaff_s2) {\n      unaff_s2 = (int *)(*local_20 + 1);\n    }\n    (**(code **)(puVar13 + 0x809f4))(local_20[3],unaff_s2);\n    iVar1 = *(int *)(puVar16 + -0x28);\n    if (**(char **)(iVar1 + -0x7eb8) == '\0') {\n      **(undefined1 **)(iVar1 + -0x7eb8) = 1;\n      (**(code **)(iVar1 + -0x7a40))(*(undefined4 *)(iVar1 + -0x7dc4));\n      iVar1 = *(int *)(*(int *)(puVar16 + -0x28) + -0x7dc4);\n    }\n    else {\n      iVar1 = *(int *)(iVar1 + -0x7dc4);\n    }\n    piVar8 = (int *)0x20;\n    puVar7 = puVar16 + -0x20;\n    (**(code **)(*(int *)(iVar1 + 0x10) + 4))();\n    puVar14 = *(undefined **)(puVar16 + -0x28);\n    piVar5 = param_3;\n    if ((int)param_3 < 0) {\n      piVar5 = (int *)-(int)param_3;\n    }\n    uVar2 = (int)piVar5 * 2 + 1;\n    piVar6 = *(int **)(puVar16 + -0x20);\n    if (uVar2 == 0) {\n      trap(7);\n    }\n    local_20[2] = (uint)piVar6 % uVar2 - (int)piVar5;\n    if ((int)param_2 < 0) {\n      unaff_s2 = (int *)-(int)unaff_s2;\n    }\n    local_20[1] = (int)unaff_s2;\n    param_1 = param_3;\n  }\n  if (*(int *)(puVar16 + -0x1c) != **(int **)(puVar14 + -0x7b00)) {\n    pcVar18 = *(code **)(puVar14 + -0x7b70);\n    uVar19 = 0x1a8b8;\n    (*pcVar18)();\n    *(undefined4 *)(puVar16 + -0x3c) = uVar19;\n    *(undefined1 **)(puVar16 + -0x40) = auStack_38;\n    *(undefined4 *)(puVar16 + -0x44) = unaff_s7;\n    *(undefined4 *)(puVar16 + -0x48) = unaff_s6;\n    *(undefined4 *)(puVar16 + -0x4c) = unaff_s5;\n    *(undefined4 *)(puVar16 + -0x50) = unaff_s4;\n    *(int **)(puVar16 + -0x54) = param_1;\n    *(int **)(puVar16 + -0x58) = unaff_s2;\n    *(int **)(puVar16 + -0x5c) = param_2;\n    *(int **)(puVar16 + -0x60) = local_20;\n    *(code **)(puVar16 + -0x68) = pcVar18 + 0x88780;\n    *(int **)(puVar16 + -0x38) = piVar6;\n    *(undefined1 **)(puVar16 + -0x34) = puVar7;\n    *(int **)(puVar16 + -0x30) = piVar8;\n    if (puVar7 == (undefined1 *)0x0) {\n      *(undefined4 *)(puVar16 + -0x34) = **(undefined4 **)(pcVar18 + 0x80a54);\n    }\n    iVar9 = (*(code *)**(undefined4 **)(pcVar18 + 0x80c4c))(100);\n    iVar10 = *(int *)(puVar16 + -0x68);\n    iVar1 = 0;\n    do {\n      iVar12 = iVar1;\n      iVar4 = (**(code **)(iVar10 + -0x7f3c))(*(undefined4 *)(puVar16 + -0x34));\n      piVar6 = (int *)(**(code **)(*(int *)(puVar16 + -0x68) + -0x7f94))();\n      iVar10 = *(int *)(puVar16 + -0x68);\n      iVar1 = iVar12 + 1;\n    } while ((*(ushort *)(*piVar6 + iVar4 * 2) & 0x20) != 0);\n    puVar17 = *(undefined4 **)(iVar10 + -0x7aa0);\n    uVar2 = 0;\n    uVar3 = 100;\n    while ((iVar4 != -1 && (uVar11 = uVar2 + 1, (*(ushort *)(*piVar6 + iVar4 * 2) & 0x20) == 0))) {\n      *(char *)(iVar9 + uVar2) = (char)iVar4;\n      iVar4 = (**(code **)(iVar10 + -0x7f3c))(*(undefined4 *)(puVar16 + -0x34));\n      iVar10 = *(int *)(puVar16 + -0x68);\n      uVar2 = uVar11;\n      if (uVar3 <= uVar11) {\n        uVar11 = uVar3 * 3 >> 1;\n        iVar9 = (*(code *)*puVar17)(iVar9,uVar3,uVar11);\n        iVar10 = *(int *)(puVar16 + -0x68);\n        uVar3 = uVar11;\n      }\n    }\n    (**(code **)(iVar10 + -0x7d5c))(iVar4,*(undefined4 *)(puVar16 + -0x34));\n    iVar1 = *(int *)(puVar16 + -0x68);\n    uVar11 = uVar3;\n    if (uVar3 <= uVar2) {\n      uVar11 = uVar3 * 3 >> 1;\n      iVar9 = (*(code *)**(undefined4 **)(iVar1 + -0x7aa0))(iVar9,uVar3,uVar11);\n      iVar1 = *(int *)(puVar16 + -0x68);\n    }\n    *(undefined1 *)(iVar9 + uVar2) = 0;\n    iVar1 = (**(code **)(iVar1 + -0x7ae8))\n                      (*(undefined4 *)(puVar16 + -0x38),iVar9,*(undefined4 *)(puVar16 + -0x30));\n    (*(code *)**(undefined4 **)(*(int *)(puVar16 + -0x68) + -0x7e70))(iVar9,uVar11);\n    iVar9 = 0;\n    if (iVar1 != -1) {\n      iVar9 = iVar12 + uVar2;\n    }\n    return iVar9;\n  }\n  return **(int **)(puVar14 + -0x7b00);\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "int *piVar5;" (primitive_type "int") (pointer_declarator "*piVar5" (* "*") (identifier "piVar5")) (; ";")) (declaration "int *piVar6;" (primitive_type "int") (pointer_declarator "*piVar6" (* "*") (identifier "piVar6")) (; ";")) (declaration "undefined1 *puVar7;" (type_identifier "undefined1") (pointer_declarator "*puVar7" (* "*") (identifier "puVar7")) (; ";")) (declaration "int *piVar8;" (primitive_type "int") (pointer_declarator "*piVar8" (* "*") (identifier "piVar8")) (; ";")) (declaration "int iVar9;" (primitive_type "int") (identifier "iVar9") (; ";")) (declaration "int iVar10;" (primitive_type "int") (identifier "iVar10") (; ";")) (declaration "int unaff_s1;" (primitive_type "int") (identifier "unaff_s1") (; ";")) (declaration "int *unaff_s2;" (primitive_type "int") (pointer_declarator "*unaff_s2" (* "*") (identifier "unaff_s2")) (; ";")) (declaration "undefined4 unaff_s4;" (type_identifier "undefined4") (identifier "unaff_s4") (; ";")) (declaration "uint uVar11;" (type_identifier "uint") (identifier "uVar11") (; ";")) (declaration "undefined4 unaff_s5;" (type_identifier "undefined4") (identifier "unaff_s5") (; ";")) (declaration "undefined4 unaff_s6;" (type_identifier "undefined4") (identifier "unaff_s6") (; ";")) (declaration "int iVar12;" (primitive_type "int") (identifier "iVar12") (; ";")) (declaration "undefined4 unaff_s7;" (type_identifier "undefined4") (identifier "unaff_s7") (; ";")) (declaration "undefined *puVar13;" (type_identifier "undefined") (pointer_declarator "*puVar13" (* "*") (identifier "puVar13")) (; ";")) (declaration "undefined *puVar14;" (type_identifier "undefined") (pointer_declarator "*puVar14" (* "*") (identifier "puVar14")) (; ";")) (declaration "undefined1 *puVar15;" (type_identifier "undefined1") (pointer_declarator "*puVar15" (* "*") (identifier "puVar15")) (; ";")) (declaration "undefined1 *puVar16;" (type_identifier "undefined1") (pointer_declarator "*puVar16" (* "*") (identifier "puVar16")) (; ";")) (declaration "undefined4 *puVar17;" (type_identifier "undefined4") (pointer_declarator "*puVar17" (* "*") (identifier "puVar17")) (; ";")) (declaration "code *pcVar18;" (type_identifier "code") (pointer_declarator "*pcVar18" (* "*") (identifier "pcVar18")) (; ";")) (declaration "undefined4 uVar19;" (type_identifier "undefined4") (identifier "uVar19") (; ";")) (declaration "undefined1 auStack_38 [16];" (type_identifier "undefined1") (array_declarator "auStack_38 [16]" (identifier "auStack_38") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "int *local_20;" (primitive_type "int") (pointer_declarator "*local_20" (* "*") (identifier "local_20")) (; ";")) (expression_statement "puVar16 = auStack_38;" (assignment_expression "puVar16 = auStack_38" (identifier "puVar16") (= "=") (identifier "auStack_38")) (; ";")) (expression_statement "puVar15 = auStack_38;" (assignment_expression "puVar15 = auStack_38" (identifier "puVar15") (= "=") (identifier "auStack_38")) (; ";")) (expression_statement "iVar1 = *(int *)PTR___stack_chk_guard_0009b540;" (assignment_expression "iVar1 = *(int *)PTR___stack_chk_guard_0009b540" (identifier "iVar1") (= "=") (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 "iVar9 = param_2[1];" (assignment_expression "iVar9 = param_2[1]" (identifier "iVar9") (= "=") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]"))) (; ";")) (if_statement "if (iVar9 < 1) {\n    if (-1 < iVar9) {\n      param_1[1] = 0;\n      param_1[2] = 0;\n      local_20 = param_1;\n      goto LAB_0001a69c;\n    }\n    (*(code *)PTR___gmp_sqrt_of_negative_0009b1cc)();\nLAB_0001a654:\n    param_3 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)();\n  }\n  else {\n    local_20 = (int *)0x0;\n    uVar2 = param_2[2];\n    unaff_s2 = (int *)param_2[3];\n    uVar3 = uVar2 & 1;\n    unaff_s1 = *param_1 * 2 - uVar3;\n    param_1[1] = *param_1;\n    param_1[2] = (int)(uVar2 + uVar3) / 2;\n    if (0x7f00 < (uint)(unaff_s1 * 4)) goto LAB_0001a654;\n    iVar10 = -(unaff_s1 * 4 + 7U & 0xfffffff8);\n    puVar15 = auStack_38 + iVar10;\n    param_3 = (int *)(&stack0xffffffd8 + iVar10);\n  }" (if "if") (parenthesized_expression "(iVar9 < 1)" (( "(") (binary_expression "iVar9 < 1" (identifier "iVar9") (< "<") (number_literal "1")) () ")")) (compound_statement "{\n    if (-1 < iVar9) {\n      param_1[1] = 0;\n      param_1[2] = 0;\n      local_20 = param_1;\n      goto LAB_0001a69c;\n    }\n    (*(code *)PTR___gmp_sqrt_of_negative_0009b1cc)();\nLAB_0001a654:\n    param_3 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)();\n  }" ({ "{") (if_statement "if (-1 < iVar9) {\n      param_1[1] = 0;\n      param_1[2] = 0;\n      local_20 = param_1;\n      goto LAB_0001a69c;\n    }" (if "if") (parenthesized_expression "(-1 < iVar9)" (( "(") (binary_expression "-1 < iVar9" (number_literal "-1") (< "<") (identifier "iVar9")) () ")")) (compound_statement "{\n      param_1[1] = 0;\n      param_1[2] = 0;\n      local_20 = param_1;\n      goto LAB_0001a69c;\n    }" ({ "{") (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_1[2] = 0;" (assignment_expression "param_1[2] = 0" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_20 = param_1;" (assignment_expression "local_20 = param_1" (identifier "local_20") (= "=") (identifier "param_1")) (; ";")) (goto_statement "goto LAB_0001a69c;" (goto "goto") (statement_identifier "LAB_0001a69c") (; ";")) (} "}"))) (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 "()" (( "(") () ")"))) (; ";")) (labeled_statement "LAB_0001a654:\n    param_3 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)();" (statement_identifier "LAB_0001a654") (: ":") (expression_statement "param_3 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)();" (assignment_expression "param_3 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)()" (identifier "param_3") (= "=") (cast_expression "(int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)()" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)()" (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 "()" (( "(") () ")"))))) (; ";"))) (} "}")) (else_clause "else {\n    local_20 = (int *)0x0;\n    uVar2 = param_2[2];\n    unaff_s2 = (int *)param_2[3];\n    uVar3 = uVar2 & 1;\n    unaff_s1 = *param_1 * 2 - uVar3;\n    param_1[1] = *param_1;\n    param_1[2] = (int)(uVar2 + uVar3) / 2;\n    if (0x7f00 < (uint)(unaff_s1 * 4)) goto LAB_0001a654;\n    iVar10 = -(unaff_s1 * 4 + 7U & 0xfffffff8);\n    puVar15 = auStack_38 + iVar10;\n    param_3 = (int *)(&stack0xffffffd8 + iVar10);\n  }" (else "else") (compound_statement "{\n    local_20 = (int *)0x0;\n    uVar2 = param_2[2];\n    unaff_s2 = (int *)param_2[3];\n    uVar3 = uVar2 & 1;\n    unaff_s1 = *param_1 * 2 - uVar3;\n    param_1[1] = *param_1;\n    param_1[2] = (int)(uVar2 + uVar3) / 2;\n    if (0x7f00 < (uint)(unaff_s1 * 4)) goto LAB_0001a654;\n    iVar10 = -(unaff_s1 * 4 + 7U & 0xfffffff8);\n    puVar15 = auStack_38 + iVar10;\n    param_3 = (int *)(&stack0xffffffd8 + iVar10);\n  }" ({ "{") (expression_statement "local_20 = (int *)0x0;" (assignment_expression "local_20 = (int *)0x0" (identifier "local_20") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "uVar2 = param_2[2];" (assignment_expression "uVar2 = param_2[2]" (identifier "uVar2") (= "=") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "unaff_s2 = (int *)param_2[3];" (assignment_expression "unaff_s2 = (int *)param_2[3]" (identifier "unaff_s2") (= "=") (cast_expression "(int *)param_2[3]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]")))) (; ";")) (expression_statement "uVar3 = uVar2 & 1;" (assignment_expression "uVar3 = uVar2 & 1" (identifier "uVar3") (= "=") (binary_expression "uVar2 & 1" (identifier "uVar2") (& "&") (number_literal "1"))) (; ";")) (expression_statement "unaff_s1 = *param_1 * 2 - uVar3;" (assignment_expression "unaff_s1 = *param_1 * 2 - uVar3" (identifier "unaff_s1") (= "=") (binary_expression "*param_1 * 2 - uVar3" (binary_expression "*param_1 * 2" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (* "*") (number_literal "2")) (- "-") (identifier "uVar3"))) (; ";")) (expression_statement "param_1[1] = *param_1;" (assignment_expression "param_1[1] = *param_1" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "param_1[2] = (int)(uVar2 + uVar3) / 2;" (assignment_expression "param_1[2] = (int)(uVar2 + uVar3) / 2" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "(int)(uVar2 + uVar3) / 2" (cast_expression "(int)(uVar2 + uVar3)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(uVar2 + uVar3)" (( "(") (binary_expression "uVar2 + uVar3" (identifier "uVar2") (+ "+") (identifier "uVar3")) () ")"))) (/ "/") (number_literal "2"))) (; ";")) (if_statement "if (0x7f00 < (uint)(unaff_s1 * 4)) goto LAB_0001a654;" (if "if") (parenthesized_expression "(0x7f00 < (uint)(unaff_s1 * 4))" (( "(") (binary_expression "0x7f00 < (uint)(unaff_s1 * 4)" (number_literal "0x7f00") (< "<") (call_expression "(uint)(unaff_s1 * 4)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(unaff_s1 * 4)" (( "(") (binary_expression "unaff_s1 * 4" (identifier "unaff_s1") (* "*") (number_literal "4")) () ")")))) () ")")) (goto_statement "goto LAB_0001a654;" (goto "goto") (statement_identifier "LAB_0001a654") (; ";"))) (expression_statement "iVar10 = -(unaff_s1 * 4 + 7U & 0xfffffff8);" (assignment_expression "iVar10 = -(unaff_s1 * 4 + 7U & 0xfffffff8)" (identifier "iVar10") (= "=") (unary_expression "-(unaff_s1 * 4 + 7U & 0xfffffff8)" (- "-") (parenthesized_expression "(unaff_s1 * 4 + 7U & 0xfffffff8)" (( "(") (binary_expression "unaff_s1 * 4 + 7U & 0xfffffff8" (binary_expression "unaff_s1 * 4 + 7U" (binary_expression "unaff_s1 * 4" (identifier "unaff_s1") (* "*") (number_literal "4")) (+ "+") (number_literal "7U")) (& "&") (number_literal "0xfffffff8")) () ")")))) (; ";")) (expression_statement "puVar15 = auStack_38 + iVar10;" (assignment_expression "puVar15 = auStack_38 + iVar10" (identifier "puVar15") (= "=") (binary_expression "auStack_38 + iVar10" (identifier "auStack_38") (+ "+") (identifier "iVar10"))) (; ";")) (expression_statement "param_3 = (int *)(&stack0xffffffd8 + iVar10);" (assignment_expression "param_3 = (int *)(&stack0xffffffd8 + iVar10)" (identifier "param_3") (= "=") (cast_expression "(int *)(&stack0xffffffd8 + iVar10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&stack0xffffffd8 + iVar10)" (( "(") (binary_expression "&stack0xffffffd8 + iVar10" (pointer_expression "&stack0xffffffd8" (& "&") (identifier "stack0xffffffd8")) (+ "+") (identifier "iVar10")) () ")")))) (; ";")) (} "}")))) (if_statement "if (unaff_s1 < iVar9) {\n    if (unaff_s1 != 0) {\n      iVar10 = iVar9 - unaff_s1;\n      iVar9 = iVar10 * 4;\n      unaff_s2 = unaff_s2 + iVar10;\n      iVar4 = unaff_s1 + -1;\n      iVar10 = *unaff_s2;\n      piVar6 = param_3;\n      if (iVar4 != 0) {\n        piVar8 = unaff_s2 + 1;\n        do {\n          *piVar6 = iVar10;\n          unaff_s2 = piVar8 + 1;\n          iVar4 = iVar4 + -1;\n          iVar10 = *piVar8;\n          piVar6 = piVar6 + 1;\n          piVar8 = unaff_s2;\n        } while (iVar4 != 0);\n        piVar6 = param_3 + unaff_s1 + 0x3fffffff;\n      }\n      *piVar6 = iVar10;\n    }\n  }\n  else {\n    iVar10 = unaff_s1 - iVar9;\n    piVar6 = param_3;\n    if (iVar9 != unaff_s1) {\n      do {\n        iVar10 = iVar10 + -1;\n        *piVar6 = 0;\n        piVar6 = piVar6 + 1;\n      } while (iVar10 != 0);\n    }\n    iVar4 = iVar9 + -1;\n    piVar6 = param_3 + (unaff_s1 - iVar9);\n    iVar10 = *unaff_s2;\n    if (iVar4 != 0) {\n      piVar8 = piVar6;\n      piVar5 = unaff_s2 + 1;\n      do {\n        *piVar8 = iVar10;\n        unaff_s2 = piVar5 + 1;\n        iVar4 = iVar4 + -1;\n        iVar10 = *piVar5;\n        piVar8 = piVar8 + 1;\n        piVar5 = unaff_s2;\n      } while (iVar4 != 0);\n      iVar4 = iVar9 + 0x3fffffff;\n      iVar9 = iVar4 * 4;\n      piVar6 = piVar6 + iVar4;\n    }\n    *piVar6 = iVar10;\n  }" (if "if") (parenthesized_expression "(unaff_s1 < iVar9)" (( "(") (binary_expression "unaff_s1 < iVar9" (identifier "unaff_s1") (< "<") (identifier "iVar9")) () ")")) (compound_statement "{\n    if (unaff_s1 != 0) {\n      iVar10 = iVar9 - unaff_s1;\n      iVar9 = iVar10 * 4;\n      unaff_s2 = unaff_s2 + iVar10;\n      iVar4 = unaff_s1 + -1;\n      iVar10 = *unaff_s2;\n      piVar6 = param_3;\n      if (iVar4 != 0) {\n        piVar8 = unaff_s2 + 1;\n        do {\n          *piVar6 = iVar10;\n          unaff_s2 = piVar8 + 1;\n          iVar4 = iVar4 + -1;\n          iVar10 = *piVar8;\n          piVar6 = piVar6 + 1;\n          piVar8 = unaff_s2;\n        } while (iVar4 != 0);\n        piVar6 = param_3 + unaff_s1 + 0x3fffffff;\n      }\n      *piVar6 = iVar10;\n    }\n  }" ({ "{") (if_statement "if (unaff_s1 != 0) {\n      iVar10 = iVar9 - unaff_s1;\n      iVar9 = iVar10 * 4;\n      unaff_s2 = unaff_s2 + iVar10;\n      iVar4 = unaff_s1 + -1;\n      iVar10 = *unaff_s2;\n      piVar6 = param_3;\n      if (iVar4 != 0) {\n        piVar8 = unaff_s2 + 1;\n        do {\n          *piVar6 = iVar10;\n          unaff_s2 = piVar8 + 1;\n          iVar4 = iVar4 + -1;\n          iVar10 = *piVar8;\n          piVar6 = piVar6 + 1;\n          piVar8 = unaff_s2;\n        } while (iVar4 != 0);\n        piVar6 = param_3 + unaff_s1 + 0x3fffffff;\n      }\n      *piVar6 = iVar10;\n    }" (if "if") (parenthesized_expression "(unaff_s1 != 0)" (( "(") (binary_expression "unaff_s1 != 0" (identifier "unaff_s1") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      iVar10 = iVar9 - unaff_s1;\n      iVar9 = iVar10 * 4;\n      unaff_s2 = unaff_s2 + iVar10;\n      iVar4 = unaff_s1 + -1;\n      iVar10 = *unaff_s2;\n      piVar6 = param_3;\n      if (iVar4 != 0) {\n        piVar8 = unaff_s2 + 1;\n        do {\n          *piVar6 = iVar10;\n          unaff_s2 = piVar8 + 1;\n          iVar4 = iVar4 + -1;\n          iVar10 = *piVar8;\n          piVar6 = piVar6 + 1;\n          piVar8 = unaff_s2;\n        } while (iVar4 != 0);\n        piVar6 = param_3 + unaff_s1 + 0x3fffffff;\n      }\n      *piVar6 = iVar10;\n    }" ({ "{") (expression_statement "iVar10 = iVar9 - unaff_s1;" (assignment_expression "iVar10 = iVar9 - unaff_s1" (identifier "iVar10") (= "=") (binary_expression "iVar9 - unaff_s1" (identifier "iVar9") (- "-") (identifier "unaff_s1"))) (; ";")) (expression_statement "iVar9 = iVar10 * 4;" (assignment_expression "iVar9 = iVar10 * 4" (identifier "iVar9") (= "=") (binary_expression "iVar10 * 4" (identifier "iVar10") (* "*") (number_literal "4"))) (; ";")) (expression_statement "unaff_s2 = unaff_s2 + iVar10;" (assignment_expression "unaff_s2 = unaff_s2 + iVar10" (identifier "unaff_s2") (= "=") (binary_expression "unaff_s2 + iVar10" (identifier "unaff_s2") (+ "+") (identifier "iVar10"))) (; ";")) (expression_statement "iVar4 = unaff_s1 + -1;" (assignment_expression "iVar4 = unaff_s1 + -1" (identifier "iVar4") (= "=") (binary_expression "unaff_s1 + -1" (identifier "unaff_s1") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "iVar10 = *unaff_s2;" (assignment_expression "iVar10 = *unaff_s2" (identifier "iVar10") (= "=") (pointer_expression "*unaff_s2" (* "*") (identifier "unaff_s2"))) (; ";")) (expression_statement "piVar6 = param_3;" (assignment_expression "piVar6 = param_3" (identifier "piVar6") (= "=") (identifier "param_3")) (; ";")) (if_statement "if (iVar4 != 0) {\n        piVar8 = unaff_s2 + 1;\n        do {\n          *piVar6 = iVar10;\n          unaff_s2 = piVar8 + 1;\n          iVar4 = iVar4 + -1;\n          iVar10 = *piVar8;\n          piVar6 = piVar6 + 1;\n          piVar8 = unaff_s2;\n        } while (iVar4 != 0);\n        piVar6 = param_3 + unaff_s1 + 0x3fffffff;\n      }" (if "if") (parenthesized_expression "(iVar4 != 0)" (( "(") (binary_expression "iVar4 != 0" (identifier "iVar4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        piVar8 = unaff_s2 + 1;\n        do {\n          *piVar6 = iVar10;\n          unaff_s2 = piVar8 + 1;\n          iVar4 = iVar4 + -1;\n          iVar10 = *piVar8;\n          piVar6 = piVar6 + 1;\n          piVar8 = unaff_s2;\n        } while (iVar4 != 0);\n        piVar6 = param_3 + unaff_s1 + 0x3fffffff;\n      }" ({ "{") (expression_statement "piVar8 = unaff_s2 + 1;" (assignment_expression "piVar8 = unaff_s2 + 1" (identifier "piVar8") (= "=") (binary_expression "unaff_s2 + 1" (identifier "unaff_s2") (+ "+") (number_literal "1"))) (; ";")) (do_statement "do {\n          *piVar6 = iVar10;\n          unaff_s2 = piVar8 + 1;\n          iVar4 = iVar4 + -1;\n          iVar10 = *piVar8;\n          piVar6 = piVar6 + 1;\n          piVar8 = unaff_s2;\n        } while (iVar4 != 0);" (do "do") (compound_statement "{\n          *piVar6 = iVar10;\n          unaff_s2 = piVar8 + 1;\n          iVar4 = iVar4 + -1;\n          iVar10 = *piVar8;\n          piVar6 = piVar6 + 1;\n          piVar8 = unaff_s2;\n        }" ({ "{") (expression_statement "*piVar6 = iVar10;" (assignment_expression "*piVar6 = iVar10" (pointer_expression "*piVar6" (* "*") (identifier "piVar6")) (= "=") (identifier "iVar10")) (; ";")) (expression_statement "unaff_s2 = piVar8 + 1;" (assignment_expression "unaff_s2 = piVar8 + 1" (identifier "unaff_s2") (= "=") (binary_expression "piVar8 + 1" (identifier "piVar8") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar4 = iVar4 + -1;" (assignment_expression "iVar4 = iVar4 + -1" (identifier "iVar4") (= "=") (binary_expression "iVar4 + -1" (identifier "iVar4") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "iVar10 = *piVar8;" (assignment_expression "iVar10 = *piVar8" (identifier "iVar10") (= "=") (pointer_expression "*piVar8" (* "*") (identifier "piVar8"))) (; ";")) (expression_statement "piVar6 = piVar6 + 1;" (assignment_expression "piVar6 = piVar6 + 1" (identifier "piVar6") (= "=") (binary_expression "piVar6 + 1" (identifier "piVar6") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar8 = unaff_s2;" (assignment_expression "piVar8 = unaff_s2" (identifier "piVar8") (= "=") (identifier "unaff_s2")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar4 != 0)" (( "(") (binary_expression "iVar4 != 0" (identifier "iVar4") (!= "!=") (number_literal "0")) () ")")) (; ";")) (expression_statement "piVar6 = param_3 + unaff_s1 + 0x3fffffff;" (assignment_expression "piVar6 = param_3 + unaff_s1 + 0x3fffffff" (identifier "piVar6") (= "=") (binary_expression "param_3 + unaff_s1 + 0x3fffffff" (binary_expression "param_3 + unaff_s1" (identifier "param_3") (+ "+") (identifier "unaff_s1")) (+ "+") (number_literal "0x3fffffff"))) (; ";")) (} "}"))) (expression_statement "*piVar6 = iVar10;" (assignment_expression "*piVar6 = iVar10" (pointer_expression "*piVar6" (* "*") (identifier "piVar6")) (= "=") (identifier "iVar10")) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    iVar10 = unaff_s1 - iVar9;\n    piVar6 = param_3;\n    if (iVar9 != unaff_s1) {\n      do {\n        iVar10 = iVar10 + -1;\n        *piVar6 = 0;\n        piVar6 = piVar6 + 1;\n      } while (iVar10 != 0);\n    }\n    iVar4 = iVar9 + -1;\n    piVar6 = param_3 + (unaff_s1 - iVar9);\n    iVar10 = *unaff_s2;\n    if (iVar4 != 0) {\n      piVar8 = piVar6;\n      piVar5 = unaff_s2 + 1;\n      do {\n        *piVar8 = iVar10;\n        unaff_s2 = piVar5 + 1;\n        iVar4 = iVar4 + -1;\n        iVar10 = *piVar5;\n        piVar8 = piVar8 + 1;\n        piVar5 = unaff_s2;\n      } while (iVar4 != 0);\n      iVar4 = iVar9 + 0x3fffffff;\n      iVar9 = iVar4 * 4;\n      piVar6 = piVar6 + iVar4;\n    }\n    *piVar6 = iVar10;\n  }" (else "else") (compound_statement "{\n    iVar10 = unaff_s1 - iVar9;\n    piVar6 = param_3;\n    if (iVar9 != unaff_s1) {\n      do {\n        iVar10 = iVar10 + -1;\n        *piVar6 = 0;\n        piVar6 = piVar6 + 1;\n      } while (iVar10 != 0);\n    }\n    iVar4 = iVar9 + -1;\n    piVar6 = param_3 + (unaff_s1 - iVar9);\n    iVar10 = *unaff_s2;\n    if (iVar4 != 0) {\n      piVar8 = piVar6;\n      piVar5 = unaff_s2 + 1;\n      do {\n        *piVar8 = iVar10;\n        unaff_s2 = piVar5 + 1;\n        iVar4 = iVar4 + -1;\n        iVar10 = *piVar5;\n        piVar8 = piVar8 + 1;\n        piVar5 = unaff_s2;\n      } while (iVar4 != 0);\n      iVar4 = iVar9 + 0x3fffffff;\n      iVar9 = iVar4 * 4;\n      piVar6 = piVar6 + iVar4;\n    }\n    *piVar6 = iVar10;\n  }" ({ "{") (expression_statement "iVar10 = unaff_s1 - iVar9;" (assignment_expression "iVar10 = unaff_s1 - iVar9" (identifier "iVar10") (= "=") (binary_expression "unaff_s1 - iVar9" (identifier "unaff_s1") (- "-") (identifier "iVar9"))) (; ";")) (expression_statement "piVar6 = param_3;" (assignment_expression "piVar6 = param_3" (identifier "piVar6") (= "=") (identifier "param_3")) (; ";")) (if_statement "if (iVar9 != unaff_s1) {\n      do {\n        iVar10 = iVar10 + -1;\n        *piVar6 = 0;\n        piVar6 = piVar6 + 1;\n      } while (iVar10 != 0);\n    }" (if "if") (parenthesized_expression "(iVar9 != unaff_s1)" (( "(") (binary_expression "iVar9 != unaff_s1" (identifier "iVar9") (!= "!=") (identifier "unaff_s1")) () ")")) (compound_statement "{\n      do {\n        iVar10 = iVar10 + -1;\n        *piVar6 = 0;\n        piVar6 = piVar6 + 1;\n      } while (iVar10 != 0);\n    }" ({ "{") (do_statement "do {\n        iVar10 = iVar10 + -1;\n        *piVar6 = 0;\n        piVar6 = piVar6 + 1;\n      } while (iVar10 != 0);" (do "do") (compound_statement "{\n        iVar10 = iVar10 + -1;\n        *piVar6 = 0;\n        piVar6 = piVar6 + 1;\n      }" ({ "{") (expression_statement "iVar10 = iVar10 + -1;" (assignment_expression "iVar10 = iVar10 + -1" (identifier "iVar10") (= "=") (binary_expression "iVar10 + -1" (identifier "iVar10") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "*piVar6 = 0;" (assignment_expression "*piVar6 = 0" (pointer_expression "*piVar6" (* "*") (identifier "piVar6")) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar6 = piVar6 + 1;" (assignment_expression "piVar6 = piVar6 + 1" (identifier "piVar6") (= "=") (binary_expression "piVar6 + 1" (identifier "piVar6") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar10 != 0)" (( "(") (binary_expression "iVar10 != 0" (identifier "iVar10") (!= "!=") (number_literal "0")) () ")")) (; ";")) (} "}"))) (expression_statement "iVar4 = iVar9 + -1;" (assignment_expression "iVar4 = iVar9 + -1" (identifier "iVar4") (= "=") (binary_expression "iVar9 + -1" (identifier "iVar9") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "piVar6 = param_3 + (unaff_s1 - iVar9);" (assignment_expression "piVar6 = param_3 + (unaff_s1 - iVar9)" (identifier "piVar6") (= "=") (binary_expression "param_3 + (unaff_s1 - iVar9)" (identifier "param_3") (+ "+") (parenthesized_expression "(unaff_s1 - iVar9)" (( "(") (binary_expression "unaff_s1 - iVar9" (identifier "unaff_s1") (- "-") (identifier "iVar9")) () ")")))) (; ";")) (expression_statement "iVar10 = *unaff_s2;" (assignment_expression "iVar10 = *unaff_s2" (identifier "iVar10") (= "=") (pointer_expression "*unaff_s2" (* "*") (identifier "unaff_s2"))) (; ";")) (if_statement "if (iVar4 != 0) {\n      piVar8 = piVar6;\n      piVar5 = unaff_s2 + 1;\n      do {\n        *piVar8 = iVar10;\n        unaff_s2 = piVar5 + 1;\n        iVar4 = iVar4 + -1;\n        iVar10 = *piVar5;\n        piVar8 = piVar8 + 1;\n        piVar5 = unaff_s2;\n      } while (iVar4 != 0);\n      iVar4 = iVar9 + 0x3fffffff;\n      iVar9 = iVar4 * 4;\n      piVar6 = piVar6 + iVar4;\n    }" (if "if") (parenthesized_expression "(iVar4 != 0)" (( "(") (binary_expression "iVar4 != 0" (identifier "iVar4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      piVar8 = piVar6;\n      piVar5 = unaff_s2 + 1;\n      do {\n        *piVar8 = iVar10;\n        unaff_s2 = piVar5 + 1;\n        iVar4 = iVar4 + -1;\n        iVar10 = *piVar5;\n        piVar8 = piVar8 + 1;\n        piVar5 = unaff_s2;\n      } while (iVar4 != 0);\n      iVar4 = iVar9 + 0x3fffffff;\n      iVar9 = iVar4 * 4;\n      piVar6 = piVar6 + iVar4;\n    }" ({ "{") (expression_statement "piVar8 = piVar6;" (assignment_expression "piVar8 = piVar6" (identifier "piVar8") (= "=") (identifier "piVar6")) (; ";")) (expression_statement "piVar5 = unaff_s2 + 1;" (assignment_expression "piVar5 = unaff_s2 + 1" (identifier "piVar5") (= "=") (binary_expression "unaff_s2 + 1" (identifier "unaff_s2") (+ "+") (number_literal "1"))) (; ";")) (do_statement "do {\n        *piVar8 = iVar10;\n        unaff_s2 = piVar5 + 1;\n        iVar4 = iVar4 + -1;\n        iVar10 = *piVar5;\n        piVar8 = piVar8 + 1;\n        piVar5 = unaff_s2;\n      } while (iVar4 != 0);" (do "do") (compound_statement "{\n        *piVar8 = iVar10;\n        unaff_s2 = piVar5 + 1;\n        iVar4 = iVar4 + -1;\n        iVar10 = *piVar5;\n        piVar8 = piVar8 + 1;\n        piVar5 = unaff_s2;\n      }" ({ "{") (expression_statement "*piVar8 = iVar10;" (assignment_expression "*piVar8 = iVar10" (pointer_expression "*piVar8" (* "*") (identifier "piVar8")) (= "=") (identifier "iVar10")) (; ";")) (expression_statement "unaff_s2 = piVar5 + 1;" (assignment_expression "unaff_s2 = piVar5 + 1" (identifier "unaff_s2") (= "=") (binary_expression "piVar5 + 1" (identifier "piVar5") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar4 = iVar4 + -1;" (assignment_expression "iVar4 = iVar4 + -1" (identifier "iVar4") (= "=") (binary_expression "iVar4 + -1" (identifier "iVar4") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "iVar10 = *piVar5;" (assignment_expression "iVar10 = *piVar5" (identifier "iVar10") (= "=") (pointer_expression "*piVar5" (* "*") (identifier "piVar5"))) (; ";")) (expression_statement "piVar8 = piVar8 + 1;" (assignment_expression "piVar8 = piVar8 + 1" (identifier "piVar8") (= "=") (binary_expression "piVar8 + 1" (identifier "piVar8") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar5 = unaff_s2;" (assignment_expression "piVar5 = unaff_s2" (identifier "piVar5") (= "=") (identifier "unaff_s2")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar4 != 0)" (( "(") (binary_expression "iVar4 != 0" (identifier "iVar4") (!= "!=") (number_literal "0")) () ")")) (; ";")) (expression_statement "iVar4 = iVar9 + 0x3fffffff;" (assignment_expression "iVar4 = iVar9 + 0x3fffffff" (identifier "iVar4") (= "=") (binary_expression "iVar9 + 0x3fffffff" (identifier "iVar9") (+ "+") (number_literal "0x3fffffff"))) (; ";")) (expression_statement "iVar9 = iVar4 * 4;" (assignment_expression "iVar9 = iVar4 * 4" (identifier "iVar9") (= "=") (binary_expression "iVar4 * 4" (identifier "iVar4") (* "*") (number_literal "4"))) (; ";")) (expression_statement "piVar6 = piVar6 + iVar4;" (assignment_expression "piVar6 = piVar6 + iVar4" (identifier "piVar6") (= "=") (binary_expression "piVar6 + iVar4" (identifier "piVar6") (+ "+") (identifier "iVar4"))) (; ";")) (} "}"))) (expression_statement "*piVar6 = iVar10;" (assignment_expression "*piVar6 = iVar10" (pointer_expression "*piVar6" (* "*") (identifier "piVar6")) (= "=") (identifier "iVar10")) (; ";")) (} "}")))) (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 "(*(code *)PTR___gmpn_sqrtrem_0009b0e0)(param_1[3],0,param_3,unaff_s1);" (call_expression "(*(code *)PTR___gmpn_sqrtrem_0009b0e0)(param_1[3],0,param_3,unaff_s1)" (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 "(param_1[3],0,param_3,unaff_s1)" (( "(") (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")) (, ",") (number_literal "0") (, ",") (identifier "param_3") (, ",") (identifier "unaff_s1") () ")"))) (; ";")) (expression_statement "puVar16 = puVar15;" (assignment_expression "puVar16 = puVar15" (identifier "puVar16") (= "=") (identifier "puVar15")) (; ";")) (if_statement "if (local_20 != (int *)0x0) {\n    (*(code *)PTR___gmp_tmp_reentrant_free_0009b614)();\n  }" (if "if") (parenthesized_expression "(local_20 != (int *)0x0)" (( "(") (binary_expression "local_20 != (int *)0x0" (identifier "local_20") (!= "!=") (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 "()" (( "(") () ")"))) (; ";")) (} "}"))) (labeled_statement "LAB_0001a69c:\n  if (iVar1 == *(int *)PTR___stack_chk_guard_0009b540) {\n    return *(int *)PTR___stack_chk_guard_0009b540;\n  }" (statement_identifier "LAB_0001a69c") (: ":") (if_statement "if (iVar1 == *(int *)PTR___stack_chk_guard_0009b540) {\n    return *(int *)PTR___stack_chk_guard_0009b540;\n  }" (if "if") (parenthesized_expression "(iVar1 == *(int *)PTR___stack_chk_guard_0009b540)" (( "(") (binary_expression "iVar1 == *(int *)PTR___stack_chk_guard_0009b540" (identifier "iVar1") (== "==") (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 *(int *)PTR___stack_chk_guard_0009b540;\n  }" ({ "{") (return_statement "return *(int *)PTR___stack_chk_guard_0009b540;" (return "return") (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 "pcVar18 = __gmpf_random2;" (assignment_expression "pcVar18 = __gmpf_random2" (identifier "pcVar18") (= "=") (identifier "__gmpf_random2")) (; ";")) (expression_statement "puVar13 = PTR___stack_chk_fail_0009b4d0;" (assignment_expression "puVar13 = PTR___stack_chk_fail_0009b4d0" (identifier "puVar13") (= "=") (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 "puVar14 = puVar13 + 0x888e0;" (assignment_expression "puVar14 = puVar13 + 0x888e0" (identifier "puVar14") (= "=") (binary_expression "puVar13 + 0x888e0" (identifier "puVar13") (+ "+") (number_literal "0x888e0"))) (; ";")) (expression_statement "*(code **)(puVar16 + -4) = pcVar18;" (assignment_expression "*(code **)(puVar16 + -4) = pcVar18" (pointer_expression "*(code **)(puVar16 + -4)" (* "*") (cast_expression "(code **)(puVar16 + -4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -4)" (( "(") (binary_expression "puVar16 + -4" (identifier "puVar16") (+ "+") (number_literal "-4")) () ")")))) (= "=") (identifier "pcVar18")) (; ";")) (expression_statement "*(int **)(puVar16 + -8) = param_1;" (assignment_expression "*(int **)(puVar16 + -8) = param_1" (pointer_expression "*(int **)(puVar16 + -8)" (* "*") (cast_expression "(int **)(puVar16 + -8)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -8)" (( "(") (binary_expression "puVar16 + -8" (identifier "puVar16") (+ "+") (number_literal "-8")) () ")")))) (= "=") (identifier "param_1")) (; ";")) (expression_statement "*(int **)(puVar16 + -0xc) = unaff_s2;" (assignment_expression "*(int **)(puVar16 + -0xc) = unaff_s2" (pointer_expression "*(int **)(puVar16 + -0xc)" (* "*") (cast_expression "(int **)(puVar16 + -0xc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -0xc)" (( "(") (binary_expression "puVar16 + -0xc" (identifier "puVar16") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "unaff_s2")) (; ";")) (expression_statement "*(int *)(puVar16 + -0x10) = unaff_s1;" (assignment_expression "*(int *)(puVar16 + -0x10) = unaff_s1" (pointer_expression "*(int *)(puVar16 + -0x10)" (* "*") (cast_expression "(int *)(puVar16 + -0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "unaff_s1")) (; ";")) (expression_statement "*(int *)(puVar16 + -0x14) = iVar9;" (assignment_expression "*(int *)(puVar16 + -0x14) = iVar9" (pointer_expression "*(int *)(puVar16 + -0x14)" (* "*") (cast_expression "(int *)(puVar16 + -0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (identifier "iVar9")) (; ";")) (expression_statement "*(undefined **)(puVar16 + -0x28) = puVar14;" (assignment_expression "*(undefined **)(puVar16 + -0x28) = puVar14" (pointer_expression "*(undefined **)(puVar16 + -0x28)" (* "*") (cast_expression "(undefined **)(puVar16 + -0x28)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -0x28)" (( "(") (binary_expression "puVar16 + -0x28" (identifier "puVar16") (+ "+") (number_literal "-0x28")) () ")")))) (= "=") (identifier "puVar14")) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x1c) = **(undefined4 **)(puVar13 + 0x80de0);" (assignment_expression "*(undefined4 *)(puVar16 + -0x1c) = **(undefined4 **)(puVar13 + 0x80de0)" (pointer_expression "*(undefined4 *)(puVar16 + -0x1c)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x1c)" (( "(") (binary_expression "puVar16 + -0x1c" (identifier "puVar16") (+ "+") (number_literal "-0x1c")) () ")")))) (= "=") (pointer_expression "**(undefined4 **)(puVar13 + 0x80de0)" (* "*") (pointer_expression "*(undefined4 **)(puVar13 + 0x80de0)" (* "*") (cast_expression "(undefined4 **)(puVar13 + 0x80de0)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar13 + 0x80de0)" (( "(") (binary_expression "puVar13 + 0x80de0" (identifier "puVar13") (+ "+") (number_literal "0x80de0")) () ")")))))) (; ";")) (if_statement "if (param_2 == (int *)0x0) {\n    local_20[2] = 0;\n    local_20[1] = 0;\n    puVar7 = (undefined1 *)0x0;\n    piVar6 = local_20;\n    piVar8 = param_3;\n  }\n  else {\n    unaff_s2 = param_2;\n    if ((int)param_2 < 0) {\n      unaff_s2 = (int *)-(int)param_2;\n    }\n    if (*local_20 + 1 <= (int)unaff_s2) {\n      unaff_s2 = (int *)(*local_20 + 1);\n    }\n    (**(code **)(puVar13 + 0x809f4))(local_20[3],unaff_s2);\n    iVar1 = *(int *)(puVar16 + -0x28);\n    if (**(char **)(iVar1 + -0x7eb8) == '\0') {\n      **(undefined1 **)(iVar1 + -0x7eb8) = 1;\n      (**(code **)(iVar1 + -0x7a40))(*(undefined4 *)(iVar1 + -0x7dc4));\n      iVar1 = *(int *)(*(int *)(puVar16 + -0x28) + -0x7dc4);\n    }\n    else {\n      iVar1 = *(int *)(iVar1 + -0x7dc4);\n    }\n    piVar8 = (int *)0x20;\n    puVar7 = puVar16 + -0x20;\n    (**(code **)(*(int *)(iVar1 + 0x10) + 4))();\n    puVar14 = *(undefined **)(puVar16 + -0x28);\n    piVar5 = param_3;\n    if ((int)param_3 < 0) {\n      piVar5 = (int *)-(int)param_3;\n    }\n    uVar2 = (int)piVar5 * 2 + 1;\n    piVar6 = *(int **)(puVar16 + -0x20);\n    if (uVar2 == 0) {\n      trap(7);\n    }\n    local_20[2] = (uint)piVar6 % uVar2 - (int)piVar5;\n    if ((int)param_2 < 0) {\n      unaff_s2 = (int *)-(int)unaff_s2;\n    }\n    local_20[1] = (int)unaff_s2;\n    param_1 = param_3;\n  }" (if "if") (parenthesized_expression "(param_2 == (int *)0x0)" (( "(") (binary_expression "param_2 == (int *)0x0" (identifier "param_2") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    local_20[2] = 0;\n    local_20[1] = 0;\n    puVar7 = (undefined1 *)0x0;\n    piVar6 = local_20;\n    piVar8 = param_3;\n  }" ({ "{") (expression_statement "local_20[2] = 0;" (assignment_expression "local_20[2] = 0" (subscript_expression "local_20[2]" (identifier "local_20") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_20[1] = 0;" (assignment_expression "local_20[1] = 0" (subscript_expression "local_20[1]" (identifier "local_20") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar7 = (undefined1 *)0x0;" (assignment_expression "puVar7 = (undefined1 *)0x0" (identifier "puVar7") (= "=") (cast_expression "(undefined1 *)0x0" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "piVar6 = local_20;" (assignment_expression "piVar6 = local_20" (identifier "piVar6") (= "=") (identifier "local_20")) (; ";")) (expression_statement "piVar8 = param_3;" (assignment_expression "piVar8 = param_3" (identifier "piVar8") (= "=") (identifier "param_3")) (; ";")) (} "}")) (else_clause "else {\n    unaff_s2 = param_2;\n    if ((int)param_2 < 0) {\n      unaff_s2 = (int *)-(int)param_2;\n    }\n    if (*local_20 + 1 <= (int)unaff_s2) {\n      unaff_s2 = (int *)(*local_20 + 1);\n    }\n    (**(code **)(puVar13 + 0x809f4))(local_20[3],unaff_s2);\n    iVar1 = *(int *)(puVar16 + -0x28);\n    if (**(char **)(iVar1 + -0x7eb8) == '\0') {\n      **(undefined1 **)(iVar1 + -0x7eb8) = 1;\n      (**(code **)(iVar1 + -0x7a40))(*(undefined4 *)(iVar1 + -0x7dc4));\n      iVar1 = *(int *)(*(int *)(puVar16 + -0x28) + -0x7dc4);\n    }\n    else {\n      iVar1 = *(int *)(iVar1 + -0x7dc4);\n    }\n    piVar8 = (int *)0x20;\n    puVar7 = puVar16 + -0x20;\n    (**(code **)(*(int *)(iVar1 + 0x10) + 4))();\n    puVar14 = *(undefined **)(puVar16 + -0x28);\n    piVar5 = param_3;\n    if ((int)param_3 < 0) {\n      piVar5 = (int *)-(int)param_3;\n    }\n    uVar2 = (int)piVar5 * 2 + 1;\n    piVar6 = *(int **)(puVar16 + -0x20);\n    if (uVar2 == 0) {\n      trap(7);\n    }\n    local_20[2] = (uint)piVar6 % uVar2 - (int)piVar5;\n    if ((int)param_2 < 0) {\n      unaff_s2 = (int *)-(int)unaff_s2;\n    }\n    local_20[1] = (int)unaff_s2;\n    param_1 = param_3;\n  }" (else "else") (compound_statement "{\n    unaff_s2 = param_2;\n    if ((int)param_2 < 0) {\n      unaff_s2 = (int *)-(int)param_2;\n    }\n    if (*local_20 + 1 <= (int)unaff_s2) {\n      unaff_s2 = (int *)(*local_20 + 1);\n    }\n    (**(code **)(puVar13 + 0x809f4))(local_20[3],unaff_s2);\n    iVar1 = *(int *)(puVar16 + -0x28);\n    if (**(char **)(iVar1 + -0x7eb8) == '\0') {\n      **(undefined1 **)(iVar1 + -0x7eb8) = 1;\n      (**(code **)(iVar1 + -0x7a40))(*(undefined4 *)(iVar1 + -0x7dc4));\n      iVar1 = *(int *)(*(int *)(puVar16 + -0x28) + -0x7dc4);\n    }\n    else {\n      iVar1 = *(int *)(iVar1 + -0x7dc4);\n    }\n    piVar8 = (int *)0x20;\n    puVar7 = puVar16 + -0x20;\n    (**(code **)(*(int *)(iVar1 + 0x10) + 4))();\n    puVar14 = *(undefined **)(puVar16 + -0x28);\n    piVar5 = param_3;\n    if ((int)param_3 < 0) {\n      piVar5 = (int *)-(int)param_3;\n    }\n    uVar2 = (int)piVar5 * 2 + 1;\n    piVar6 = *(int **)(puVar16 + -0x20);\n    if (uVar2 == 0) {\n      trap(7);\n    }\n    local_20[2] = (uint)piVar6 % uVar2 - (int)piVar5;\n    if ((int)param_2 < 0) {\n      unaff_s2 = (int *)-(int)unaff_s2;\n    }\n    local_20[1] = (int)unaff_s2;\n    param_1 = param_3;\n  }" ({ "{") (expression_statement "unaff_s2 = param_2;" (assignment_expression "unaff_s2 = param_2" (identifier "unaff_s2") (= "=") (identifier "param_2")) (; ";")) (if_statement "if ((int)param_2 < 0) {\n      unaff_s2 = (int *)-(int)param_2;\n    }" (if "if") (parenthesized_expression "((int)param_2 < 0)" (( "(") (binary_expression "(int)param_2 < 0" (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n      unaff_s2 = (int *)-(int)param_2;\n    }" ({ "{") (expression_statement "unaff_s2 = (int *)-(int)param_2;" (assignment_expression "unaff_s2 = (int *)-(int)param_2" (identifier "unaff_s2") (= "=") (cast_expression "(int *)-(int)param_2" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (unary_expression "-(int)param_2" (- "-") (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2"))))) (; ";")) (} "}"))) (if_statement "if (*local_20 + 1 <= (int)unaff_s2) {\n      unaff_s2 = (int *)(*local_20 + 1);\n    }" (if "if") (parenthesized_expression "(*local_20 + 1 <= (int)unaff_s2)" (( "(") (binary_expression "*local_20 + 1 <= (int)unaff_s2" (binary_expression "*local_20 + 1" (pointer_expression "*local_20" (* "*") (identifier "local_20")) (+ "+") (number_literal "1")) (<= "<=") (cast_expression "(int)unaff_s2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s2"))) () ")")) (compound_statement "{\n      unaff_s2 = (int *)(*local_20 + 1);\n    }" ({ "{") (expression_statement "unaff_s2 = (int *)(*local_20 + 1);" (assignment_expression "unaff_s2 = (int *)(*local_20 + 1)" (identifier "unaff_s2") (= "=") (cast_expression "(int *)(*local_20 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*local_20 + 1)" (( "(") (binary_expression "*local_20 + 1" (pointer_expression "*local_20" (* "*") (identifier "local_20")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (} "}"))) (expression_statement "(**(code **)(puVar13 + 0x809f4))(local_20[3],unaff_s2);" (call_expression "(**(code **)(puVar13 + 0x809f4))(local_20[3],unaff_s2)" (parenthesized_expression "(**(code **)(puVar13 + 0x809f4))" (( "(") (pointer_expression "**(code **)(puVar13 + 0x809f4)" (* "*") (pointer_expression "*(code **)(puVar13 + 0x809f4)" (* "*") (cast_expression "(code **)(puVar13 + 0x809f4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar13 + 0x809f4)" (( "(") (binary_expression "puVar13 + 0x809f4" (identifier "puVar13") (+ "+") (number_literal "0x809f4")) () ")"))))) () ")")) (argument_list "(local_20[3],unaff_s2)" (( "(") (subscript_expression "local_20[3]" (identifier "local_20") ([ "[") (number_literal "3") (] "]")) (, ",") (identifier "unaff_s2") () ")"))) (; ";")) (expression_statement "iVar1 = *(int *)(puVar16 + -0x28);" (assignment_expression "iVar1 = *(int *)(puVar16 + -0x28)" (identifier "iVar1") (= "=") (pointer_expression "*(int *)(puVar16 + -0x28)" (* "*") (cast_expression "(int *)(puVar16 + -0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x28)" (( "(") (binary_expression "puVar16 + -0x28" (identifier "puVar16") (+ "+") (number_literal "-0x28")) () ")"))))) (; ";")) (if_statement "if (**(char **)(iVar1 + -0x7eb8) == '\0') {\n      **(undefined1 **)(iVar1 + -0x7eb8) = 1;\n      (**(code **)(iVar1 + -0x7a40))(*(undefined4 *)(iVar1 + -0x7dc4));\n      iVar1 = *(int *)(*(int *)(puVar16 + -0x28) + -0x7dc4);\n    }\n    else {\n      iVar1 = *(int *)(iVar1 + -0x7dc4);\n    }" (if "if") (parenthesized_expression "(**(char **)(iVar1 + -0x7eb8) == '\0')" (( "(") (binary_expression "**(char **)(iVar1 + -0x7eb8) == '\0'" (pointer_expression "**(char **)(iVar1 + -0x7eb8)" (* "*") (pointer_expression "*(char **)(iVar1 + -0x7eb8)" (* "*") (cast_expression "(char **)(iVar1 + -0x7eb8)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar1 + -0x7eb8)" (( "(") (binary_expression "iVar1 + -0x7eb8" (identifier "iVar1") (+ "+") (number_literal "-0x7eb8")) () ")"))))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      **(undefined1 **)(iVar1 + -0x7eb8) = 1;\n      (**(code **)(iVar1 + -0x7a40))(*(undefined4 *)(iVar1 + -0x7dc4));\n      iVar1 = *(int *)(*(int *)(puVar16 + -0x28) + -0x7dc4);\n    }" ({ "{") (expression_statement "**(undefined1 **)(iVar1 + -0x7eb8) = 1;" (assignment_expression "**(undefined1 **)(iVar1 + -0x7eb8) = 1" (pointer_expression "**(undefined1 **)(iVar1 + -0x7eb8)" (* "*") (pointer_expression "*(undefined1 **)(iVar1 + -0x7eb8)" (* "*") (cast_expression "(undefined1 **)(iVar1 + -0x7eb8)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar1 + -0x7eb8)" (( "(") (binary_expression "iVar1 + -0x7eb8" (identifier "iVar1") (+ "+") (number_literal "-0x7eb8")) () ")"))))) (= "=") (number_literal "1")) (; ";")) (expression_statement "(**(code **)(iVar1 + -0x7a40))(*(undefined4 *)(iVar1 + -0x7dc4));" (call_expression "(**(code **)(iVar1 + -0x7a40))(*(undefined4 *)(iVar1 + -0x7dc4))" (parenthesized_expression "(**(code **)(iVar1 + -0x7a40))" (( "(") (pointer_expression "**(code **)(iVar1 + -0x7a40)" (* "*") (pointer_expression "*(code **)(iVar1 + -0x7a40)" (* "*") (cast_expression "(code **)(iVar1 + -0x7a40)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar1 + -0x7a40)" (( "(") (binary_expression "iVar1 + -0x7a40" (identifier "iVar1") (+ "+") (number_literal "-0x7a40")) () ")"))))) () ")")) (argument_list "(*(undefined4 *)(iVar1 + -0x7dc4))" (( "(") (pointer_expression "*(undefined4 *)(iVar1 + -0x7dc4)" (* "*") (cast_expression "(undefined4 *)(iVar1 + -0x7dc4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + -0x7dc4)" (( "(") (binary_expression "iVar1 + -0x7dc4" (identifier "iVar1") (+ "+") (number_literal "-0x7dc4")) () ")")))) () ")"))) (; ";")) (expression_statement "iVar1 = *(int *)(*(int *)(puVar16 + -0x28) + -0x7dc4);" (assignment_expression "iVar1 = *(int *)(*(int *)(puVar16 + -0x28) + -0x7dc4)" (identifier "iVar1") (= "=") (pointer_expression "*(int *)(*(int *)(puVar16 + -0x28) + -0x7dc4)" (* "*") (cast_expression "(int *)(*(int *)(puVar16 + -0x28) + -0x7dc4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puVar16 + -0x28) + -0x7dc4)" (( "(") (binary_expression "*(int *)(puVar16 + -0x28) + -0x7dc4" (pointer_expression "*(int *)(puVar16 + -0x28)" (* "*") (cast_expression "(int *)(puVar16 + -0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x28)" (( "(") (binary_expression "puVar16 + -0x28" (identifier "puVar16") (+ "+") (number_literal "-0x28")) () ")")))) (+ "+") (number_literal "-0x7dc4")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n      iVar1 = *(int *)(iVar1 + -0x7dc4);\n    }" (else "else") (compound_statement "{\n      iVar1 = *(int *)(iVar1 + -0x7dc4);\n    }" ({ "{") (expression_statement "iVar1 = *(int *)(iVar1 + -0x7dc4);" (assignment_expression "iVar1 = *(int *)(iVar1 + -0x7dc4)" (identifier "iVar1") (= "=") (pointer_expression "*(int *)(iVar1 + -0x7dc4)" (* "*") (cast_expression "(int *)(iVar1 + -0x7dc4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + -0x7dc4)" (( "(") (binary_expression "iVar1 + -0x7dc4" (identifier "iVar1") (+ "+") (number_literal "-0x7dc4")) () ")"))))) (; ";")) (} "}")))) (expression_statement "piVar8 = (int *)0x20;" (assignment_expression "piVar8 = (int *)0x20" (identifier "piVar8") (= "=") (cast_expression "(int *)0x20" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x20"))) (; ";")) (expression_statement "puVar7 = puVar16 + -0x20;" (assignment_expression "puVar7 = puVar16 + -0x20" (identifier "puVar7") (= "=") (binary_expression "puVar16 + -0x20" (identifier "puVar16") (+ "+") (number_literal "-0x20"))) (; ";")) (expression_statement "(**(code **)(*(int *)(iVar1 + 0x10) + 4))();" (call_expression "(**(code **)(*(int *)(iVar1 + 0x10) + 4))()" (parenthesized_expression "(**(code **)(*(int *)(iVar1 + 0x10) + 4))" (( "(") (pointer_expression "**(code **)(*(int *)(iVar1 + 0x10) + 4)" (* "*") (pointer_expression "*(code **)(*(int *)(iVar1 + 0x10) + 4)" (* "*") (cast_expression "(code **)(*(int *)(iVar1 + 0x10) + 4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(iVar1 + 0x10) + 4)" (( "(") (binary_expression "*(int *)(iVar1 + 0x10) + 4" (pointer_expression "*(int *)(iVar1 + 0x10)" (* "*") (cast_expression "(int *)(iVar1 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x10)" (( "(") (binary_expression "iVar1 + 0x10" (identifier "iVar1") (+ "+") (number_literal "0x10")) () ")")))) (+ "+") (number_literal "4")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar14 = *(undefined **)(puVar16 + -0x28);" (assignment_expression "puVar14 = *(undefined **)(puVar16 + -0x28)" (identifier "puVar14") (= "=") (pointer_expression "*(undefined **)(puVar16 + -0x28)" (* "*") (cast_expression "(undefined **)(puVar16 + -0x28)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -0x28)" (( "(") (binary_expression "puVar16 + -0x28" (identifier "puVar16") (+ "+") (number_literal "-0x28")) () ")"))))) (; ";")) (expression_statement "piVar5 = param_3;" (assignment_expression "piVar5 = param_3" (identifier "piVar5") (= "=") (identifier "param_3")) (; ";")) (if_statement "if ((int)param_3 < 0) {\n      piVar5 = (int *)-(int)param_3;\n    }" (if "if") (parenthesized_expression "((int)param_3 < 0)" (( "(") (binary_expression "(int)param_3 < 0" (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n      piVar5 = (int *)-(int)param_3;\n    }" ({ "{") (expression_statement "piVar5 = (int *)-(int)param_3;" (assignment_expression "piVar5 = (int *)-(int)param_3" (identifier "piVar5") (= "=") (cast_expression "(int *)-(int)param_3" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (unary_expression "-(int)param_3" (- "-") (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3"))))) (; ";")) (} "}"))) (expression_statement "uVar2 = (int)piVar5 * 2 + 1;" (assignment_expression "uVar2 = (int)piVar5 * 2 + 1" (identifier "uVar2") (= "=") (binary_expression "(int)piVar5 * 2 + 1" (binary_expression "(int)piVar5 * 2" (cast_expression "(int)piVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar5")) (* "*") (number_literal "2")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar6 = *(int **)(puVar16 + -0x20);" (assignment_expression "piVar6 = *(int **)(puVar16 + -0x20)" (identifier "piVar6") (= "=") (pointer_expression "*(int **)(puVar16 + -0x20)" (* "*") (cast_expression "(int **)(puVar16 + -0x20)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -0x20)" (( "(") (binary_expression "puVar16 + -0x20" (identifier "puVar16") (+ "+") (number_literal "-0x20")) () ")"))))) (; ";")) (if_statement "if (uVar2 == 0) {\n      trap(7);\n    }" (if "if") (parenthesized_expression "(uVar2 == 0)" (( "(") (binary_expression "uVar2 == 0" (identifier "uVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      trap(7);\n    }" ({ "{") (expression_statement "trap(7);" (call_expression "trap(7)" (identifier "trap") (argument_list "(7)" (( "(") (number_literal "7") () ")"))) (; ";")) (} "}"))) (expression_statement "local_20[2] = (uint)piVar6 % uVar2 - (int)piVar5;" (assignment_expression "local_20[2] = (uint)piVar6 % uVar2 - (int)piVar5" (subscript_expression "local_20[2]" (identifier "local_20") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "(uint)piVar6 % uVar2 - (int)piVar5" (binary_expression "(uint)piVar6 % uVar2" (cast_expression "(uint)piVar6" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "piVar6")) (% "%") (identifier "uVar2")) (- "-") (cast_expression "(int)piVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar5")))) (; ";")) (if_statement "if ((int)param_2 < 0) {\n      unaff_s2 = (int *)-(int)unaff_s2;\n    }" (if "if") (parenthesized_expression "((int)param_2 < 0)" (( "(") (binary_expression "(int)param_2 < 0" (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n      unaff_s2 = (int *)-(int)unaff_s2;\n    }" ({ "{") (expression_statement "unaff_s2 = (int *)-(int)unaff_s2;" (assignment_expression "unaff_s2 = (int *)-(int)unaff_s2" (identifier "unaff_s2") (= "=") (cast_expression "(int *)-(int)unaff_s2" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (unary_expression "-(int)unaff_s2" (- "-") (cast_expression "(int)unaff_s2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s2"))))) (; ";")) (} "}"))) (expression_statement "local_20[1] = (int)unaff_s2;" (assignment_expression "local_20[1] = (int)unaff_s2" (subscript_expression "local_20[1]" (identifier "local_20") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(int)unaff_s2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s2"))) (; ";")) (expression_statement "param_1 = param_3;" (assignment_expression "param_1 = param_3" (identifier "param_1") (= "=") (identifier "param_3")) (; ";")) (} "}")))) (if_statement "if (*(int *)(puVar16 + -0x1c) != **(int **)(puVar14 + -0x7b00)) {\n    pcVar18 = *(code **)(puVar14 + -0x7b70);\n    uVar19 = 0x1a8b8;\n    (*pcVar18)();\n    *(undefined4 *)(puVar16 + -0x3c) = uVar19;\n    *(undefined1 **)(puVar16 + -0x40) = auStack_38;\n    *(undefined4 *)(puVar16 + -0x44) = unaff_s7;\n    *(undefined4 *)(puVar16 + -0x48) = unaff_s6;\n    *(undefined4 *)(puVar16 + -0x4c) = unaff_s5;\n    *(undefined4 *)(puVar16 + -0x50) = unaff_s4;\n    *(int **)(puVar16 + -0x54) = param_1;\n    *(int **)(puVar16 + -0x58) = unaff_s2;\n    *(int **)(puVar16 + -0x5c) = param_2;\n    *(int **)(puVar16 + -0x60) = local_20;\n    *(code **)(puVar16 + -0x68) = pcVar18 + 0x88780;\n    *(int **)(puVar16 + -0x38) = piVar6;\n    *(undefined1 **)(puVar16 + -0x34) = puVar7;\n    *(int **)(puVar16 + -0x30) = piVar8;\n    if (puVar7 == (undefined1 *)0x0) {\n      *(undefined4 *)(puVar16 + -0x34) = **(undefined4 **)(pcVar18 + 0x80a54);\n    }\n    iVar9 = (*(code *)**(undefined4 **)(pcVar18 + 0x80c4c))(100);\n    iVar10 = *(int *)(puVar16 + -0x68);\n    iVar1 = 0;\n    do {\n      iVar12 = iVar1;\n      iVar4 = (**(code **)(iVar10 + -0x7f3c))(*(undefined4 *)(puVar16 + -0x34));\n      piVar6 = (int *)(**(code **)(*(int *)(puVar16 + -0x68) + -0x7f94))();\n      iVar10 = *(int *)(puVar16 + -0x68);\n      iVar1 = iVar12 + 1;\n    } while ((*(ushort *)(*piVar6 + iVar4 * 2) & 0x20) != 0);\n    puVar17 = *(undefined4 **)(iVar10 + -0x7aa0);\n    uVar2 = 0;\n    uVar3 = 100;\n    while ((iVar4 != -1 && (uVar11 = uVar2 + 1, (*(ushort *)(*piVar6 + iVar4 * 2) & 0x20) == 0))) {\n      *(char *)(iVar9 + uVar2) = (char)iVar4;\n      iVar4 = (**(code **)(iVar10 + -0x7f3c))(*(undefined4 *)(puVar16 + -0x34));\n      iVar10 = *(int *)(puVar16 + -0x68);\n      uVar2 = uVar11;\n      if (uVar3 <= uVar11) {\n        uVar11 = uVar3 * 3 >> 1;\n        iVar9 = (*(code *)*puVar17)(iVar9,uVar3,uVar11);\n        iVar10 = *(int *)(puVar16 + -0x68);\n        uVar3 = uVar11;\n      }\n    }\n    (**(code **)(iVar10 + -0x7d5c))(iVar4,*(undefined4 *)(puVar16 + -0x34));\n    iVar1 = *(int *)(puVar16 + -0x68);\n    uVar11 = uVar3;\n    if (uVar3 <= uVar2) {\n      uVar11 = uVar3 * 3 >> 1;\n      iVar9 = (*(code *)**(undefined4 **)(iVar1 + -0x7aa0))(iVar9,uVar3,uVar11);\n      iVar1 = *(int *)(puVar16 + -0x68);\n    }\n    *(undefined1 *)(iVar9 + uVar2) = 0;\n    iVar1 = (**(code **)(iVar1 + -0x7ae8))\n                      (*(undefined4 *)(puVar16 + -0x38),iVar9,*(undefined4 *)(puVar16 + -0x30));\n    (*(code *)**(undefined4 **)(*(int *)(puVar16 + -0x68) + -0x7e70))(iVar9,uVar11);\n    iVar9 = 0;\n    if (iVar1 != -1) {\n      iVar9 = iVar12 + uVar2;\n    }\n    return iVar9;\n  }" (if "if") (parenthesized_expression "(*(int *)(puVar16 + -0x1c) != **(int **)(puVar14 + -0x7b00))" (( "(") (binary_expression "*(int *)(puVar16 + -0x1c) != **(int **)(puVar14 + -0x7b00)" (pointer_expression "*(int *)(puVar16 + -0x1c)" (* "*") (cast_expression "(int *)(puVar16 + -0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x1c)" (( "(") (binary_expression "puVar16 + -0x1c" (identifier "puVar16") (+ "+") (number_literal "-0x1c")) () ")")))) (!= "!=") (pointer_expression "**(int **)(puVar14 + -0x7b00)" (* "*") (pointer_expression "*(int **)(puVar14 + -0x7b00)" (* "*") (cast_expression "(int **)(puVar14 + -0x7b00)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar14 + -0x7b00)" (( "(") (binary_expression "puVar14 + -0x7b00" (identifier "puVar14") (+ "+") (number_literal "-0x7b00")) () ")")))))) () ")")) (compound_statement "{\n    pcVar18 = *(code **)(puVar14 + -0x7b70);\n    uVar19 = 0x1a8b8;\n    (*pcVar18)();\n    *(undefined4 *)(puVar16 + -0x3c) = uVar19;\n    *(undefined1 **)(puVar16 + -0x40) = auStack_38;\n    *(undefined4 *)(puVar16 + -0x44) = unaff_s7;\n    *(undefined4 *)(puVar16 + -0x48) = unaff_s6;\n    *(undefined4 *)(puVar16 + -0x4c) = unaff_s5;\n    *(undefined4 *)(puVar16 + -0x50) = unaff_s4;\n    *(int **)(puVar16 + -0x54) = param_1;\n    *(int **)(puVar16 + -0x58) = unaff_s2;\n    *(int **)(puVar16 + -0x5c) = param_2;\n    *(int **)(puVar16 + -0x60) = local_20;\n    *(code **)(puVar16 + -0x68) = pcVar18 + 0x88780;\n    *(int **)(puVar16 + -0x38) = piVar6;\n    *(undefined1 **)(puVar16 + -0x34) = puVar7;\n    *(int **)(puVar16 + -0x30) = piVar8;\n    if (puVar7 == (undefined1 *)0x0) {\n      *(undefined4 *)(puVar16 + -0x34) = **(undefined4 **)(pcVar18 + 0x80a54);\n    }\n    iVar9 = (*(code *)**(undefined4 **)(pcVar18 + 0x80c4c))(100);\n    iVar10 = *(int *)(puVar16 + -0x68);\n    iVar1 = 0;\n    do {\n      iVar12 = iVar1;\n      iVar4 = (**(code **)(iVar10 + -0x7f3c))(*(undefined4 *)(puVar16 + -0x34));\n      piVar6 = (int *)(**(code **)(*(int *)(puVar16 + -0x68) + -0x7f94))();\n      iVar10 = *(int *)(puVar16 + -0x68);\n      iVar1 = iVar12 + 1;\n    } while ((*(ushort *)(*piVar6 + iVar4 * 2) & 0x20) != 0);\n    puVar17 = *(undefined4 **)(iVar10 + -0x7aa0);\n    uVar2 = 0;\n    uVar3 = 100;\n    while ((iVar4 != -1 && (uVar11 = uVar2 + 1, (*(ushort *)(*piVar6 + iVar4 * 2) & 0x20) == 0))) {\n      *(char *)(iVar9 + uVar2) = (char)iVar4;\n      iVar4 = (**(code **)(iVar10 + -0x7f3c))(*(undefined4 *)(puVar16 + -0x34));\n      iVar10 = *(int *)(puVar16 + -0x68);\n      uVar2 = uVar11;\n      if (uVar3 <= uVar11) {\n        uVar11 = uVar3 * 3 >> 1;\n        iVar9 = (*(code *)*puVar17)(iVar9,uVar3,uVar11);\n        iVar10 = *(int *)(puVar16 + -0x68);\n        uVar3 = uVar11;\n      }\n    }\n    (**(code **)(iVar10 + -0x7d5c))(iVar4,*(undefined4 *)(puVar16 + -0x34));\n    iVar1 = *(int *)(puVar16 + -0x68);\n    uVar11 = uVar3;\n    if (uVar3 <= uVar2) {\n      uVar11 = uVar3 * 3 >> 1;\n      iVar9 = (*(code *)**(undefined4 **)(iVar1 + -0x7aa0))(iVar9,uVar3,uVar11);\n      iVar1 = *(int *)(puVar16 + -0x68);\n    }\n    *(undefined1 *)(iVar9 + uVar2) = 0;\n    iVar1 = (**(code **)(iVar1 + -0x7ae8))\n                      (*(undefined4 *)(puVar16 + -0x38),iVar9,*(undefined4 *)(puVar16 + -0x30));\n    (*(code *)**(undefined4 **)(*(int *)(puVar16 + -0x68) + -0x7e70))(iVar9,uVar11);\n    iVar9 = 0;\n    if (iVar1 != -1) {\n      iVar9 = iVar12 + uVar2;\n    }\n    return iVar9;\n  }" ({ "{") (expression_statement "pcVar18 = *(code **)(puVar14 + -0x7b70);" (assignment_expression "pcVar18 = *(code **)(puVar14 + -0x7b70)" (identifier "pcVar18") (= "=") (pointer_expression "*(code **)(puVar14 + -0x7b70)" (* "*") (cast_expression "(code **)(puVar14 + -0x7b70)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar14 + -0x7b70)" (( "(") (binary_expression "puVar14 + -0x7b70" (identifier "puVar14") (+ "+") (number_literal "-0x7b70")) () ")"))))) (; ";")) (expression_statement "uVar19 = 0x1a8b8;" (assignment_expression "uVar19 = 0x1a8b8" (identifier "uVar19") (= "=") (number_literal "0x1a8b8")) (; ";")) (expression_statement "(*pcVar18)();" (call_expression "(*pcVar18)()" (parenthesized_expression "(*pcVar18)" (( "(") (pointer_expression "*pcVar18" (* "*") (identifier "pcVar18")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x3c) = uVar19;" (assignment_expression "*(undefined4 *)(puVar16 + -0x3c) = uVar19" (pointer_expression "*(undefined4 *)(puVar16 + -0x3c)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x3c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x3c)" (( "(") (binary_expression "puVar16 + -0x3c" (identifier "puVar16") (+ "+") (number_literal "-0x3c")) () ")")))) (= "=") (identifier "uVar19")) (; ";")) (expression_statement "*(undefined1 **)(puVar16 + -0x40) = auStack_38;" (assignment_expression "*(undefined1 **)(puVar16 + -0x40) = auStack_38" (pointer_expression "*(undefined1 **)(puVar16 + -0x40)" (* "*") (cast_expression "(undefined1 **)(puVar16 + -0x40)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -0x40)" (( "(") (binary_expression "puVar16 + -0x40" (identifier "puVar16") (+ "+") (number_literal "-0x40")) () ")")))) (= "=") (identifier "auStack_38")) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x44) = unaff_s7;" (assignment_expression "*(undefined4 *)(puVar16 + -0x44) = unaff_s7" (pointer_expression "*(undefined4 *)(puVar16 + -0x44)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x44)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x44)" (( "(") (binary_expression "puVar16 + -0x44" (identifier "puVar16") (+ "+") (number_literal "-0x44")) () ")")))) (= "=") (identifier "unaff_s7")) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x48) = unaff_s6;" (assignment_expression "*(undefined4 *)(puVar16 + -0x48) = unaff_s6" (pointer_expression "*(undefined4 *)(puVar16 + -0x48)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x48)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x48)" (( "(") (binary_expression "puVar16 + -0x48" (identifier "puVar16") (+ "+") (number_literal "-0x48")) () ")")))) (= "=") (identifier "unaff_s6")) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x4c) = unaff_s5;" (assignment_expression "*(undefined4 *)(puVar16 + -0x4c) = unaff_s5" (pointer_expression "*(undefined4 *)(puVar16 + -0x4c)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x4c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x4c)" (( "(") (binary_expression "puVar16 + -0x4c" (identifier "puVar16") (+ "+") (number_literal "-0x4c")) () ")")))) (= "=") (identifier "unaff_s5")) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x50) = unaff_s4;" (assignment_expression "*(undefined4 *)(puVar16 + -0x50) = unaff_s4" (pointer_expression "*(undefined4 *)(puVar16 + -0x50)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x50)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x50)" (( "(") (binary_expression "puVar16 + -0x50" (identifier "puVar16") (+ "+") (number_literal "-0x50")) () ")")))) (= "=") (identifier "unaff_s4")) (; ";")) (expression_statement "*(int **)(puVar16 + -0x54) = param_1;" (assignment_expression "*(int **)(puVar16 + -0x54) = param_1" (pointer_expression "*(int **)(puVar16 + -0x54)" (* "*") (cast_expression "(int **)(puVar16 + -0x54)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -0x54)" (( "(") (binary_expression "puVar16 + -0x54" (identifier "puVar16") (+ "+") (number_literal "-0x54")) () ")")))) (= "=") (identifier "param_1")) (; ";")) (expression_statement "*(int **)(puVar16 + -0x58) = unaff_s2;" (assignment_expression "*(int **)(puVar16 + -0x58) = unaff_s2" (pointer_expression "*(int **)(puVar16 + -0x58)" (* "*") (cast_expression "(int **)(puVar16 + -0x58)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -0x58)" (( "(") (binary_expression "puVar16 + -0x58" (identifier "puVar16") (+ "+") (number_literal "-0x58")) () ")")))) (= "=") (identifier "unaff_s2")) (; ";")) (expression_statement "*(int **)(puVar16 + -0x5c) = param_2;" (assignment_expression "*(int **)(puVar16 + -0x5c) = param_2" (pointer_expression "*(int **)(puVar16 + -0x5c)" (* "*") (cast_expression "(int **)(puVar16 + -0x5c)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -0x5c)" (( "(") (binary_expression "puVar16 + -0x5c" (identifier "puVar16") (+ "+") (number_literal "-0x5c")) () ")")))) (= "=") (identifier "param_2")) (; ";")) (expression_statement "*(int **)(puVar16 + -0x60) = local_20;" (assignment_expression "*(int **)(puVar16 + -0x60) = local_20" (pointer_expression "*(int **)(puVar16 + -0x60)" (* "*") (cast_expression "(int **)(puVar16 + -0x60)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -0x60)" (( "(") (binary_expression "puVar16 + -0x60" (identifier "puVar16") (+ "+") (number_literal "-0x60")) () ")")))) (= "=") (identifier "local_20")) (; ";")) (expression_statement "*(code **)(puVar16 + -0x68) = pcVar18 + 0x88780;" (assignment_expression "*(code **)(puVar16 + -0x68) = pcVar18 + 0x88780" (pointer_expression "*(code **)(puVar16 + -0x68)" (* "*") (cast_expression "(code **)(puVar16 + -0x68)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -0x68)" (( "(") (binary_expression "puVar16 + -0x68" (identifier "puVar16") (+ "+") (number_literal "-0x68")) () ")")))) (= "=") (binary_expression "pcVar18 + 0x88780" (identifier "pcVar18") (+ "+") (number_literal "0x88780"))) (; ";")) (expression_statement "*(int **)(puVar16 + -0x38) = piVar6;" (assignment_expression "*(int **)(puVar16 + -0x38) = piVar6" (pointer_expression "*(int **)(puVar16 + -0x38)" (* "*") (cast_expression "(int **)(puVar16 + -0x38)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -0x38)" (( "(") (binary_expression "puVar16 + -0x38" (identifier "puVar16") (+ "+") (number_literal "-0x38")) () ")")))) (= "=") (identifier "piVar6")) (; ";")) (expression_statement "*(undefined1 **)(puVar16 + -0x34) = puVar7;" (assignment_expression "*(undefined1 **)(puVar16 + -0x34) = puVar7" (pointer_expression "*(undefined1 **)(puVar16 + -0x34)" (* "*") (cast_expression "(undefined1 **)(puVar16 + -0x34)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -0x34)" (( "(") (binary_expression "puVar16 + -0x34" (identifier "puVar16") (+ "+") (number_literal "-0x34")) () ")")))) (= "=") (identifier "puVar7")) (; ";")) (expression_statement "*(int **)(puVar16 + -0x30) = piVar8;" (assignment_expression "*(int **)(puVar16 + -0x30) = piVar8" (pointer_expression "*(int **)(puVar16 + -0x30)" (* "*") (cast_expression "(int **)(puVar16 + -0x30)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -0x30)" (( "(") (binary_expression "puVar16 + -0x30" (identifier "puVar16") (+ "+") (number_literal "-0x30")) () ")")))) (= "=") (identifier "piVar8")) (; ";")) (if_statement "if (puVar7 == (undefined1 *)0x0) {\n      *(undefined4 *)(puVar16 + -0x34) = **(undefined4 **)(pcVar18 + 0x80a54);\n    }" (if "if") (parenthesized_expression "(puVar7 == (undefined1 *)0x0)" (( "(") (binary_expression "puVar7 == (undefined1 *)0x0" (identifier "puVar7") (== "==") (cast_expression "(undefined1 *)0x0" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      *(undefined4 *)(puVar16 + -0x34) = **(undefined4 **)(pcVar18 + 0x80a54);\n    }" ({ "{") (expression_statement "*(undefined4 *)(puVar16 + -0x34) = **(undefined4 **)(pcVar18 + 0x80a54);" (assignment_expression "*(undefined4 *)(puVar16 + -0x34) = **(undefined4 **)(pcVar18 + 0x80a54)" (pointer_expression "*(undefined4 *)(puVar16 + -0x34)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x34)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x34)" (( "(") (binary_expression "puVar16 + -0x34" (identifier "puVar16") (+ "+") (number_literal "-0x34")) () ")")))) (= "=") (pointer_expression "**(undefined4 **)(pcVar18 + 0x80a54)" (* "*") (pointer_expression "*(undefined4 **)(pcVar18 + 0x80a54)" (* "*") (cast_expression "(undefined4 **)(pcVar18 + 0x80a54)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar18 + 0x80a54)" (( "(") (binary_expression "pcVar18 + 0x80a54" (identifier "pcVar18") (+ "+") (number_literal "0x80a54")) () ")")))))) (; ";")) (} "}"))) (expression_statement "iVar9 = (*(code *)**(undefined4 **)(pcVar18 + 0x80c4c))(100);" (assignment_expression "iVar9 = (*(code *)**(undefined4 **)(pcVar18 + 0x80c4c))(100)" (identifier "iVar9") (= "=") (call_expression "(*(code *)**(undefined4 **)(pcVar18 + 0x80c4c))(100)" (parenthesized_expression "(*(code *)**(undefined4 **)(pcVar18 + 0x80c4c))" (( "(") (pointer_expression "*(code *)**(undefined4 **)(pcVar18 + 0x80c4c)" (* "*") (cast_expression "(code *)**(undefined4 **)(pcVar18 + 0x80c4c)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "**(undefined4 **)(pcVar18 + 0x80c4c)" (* "*") (pointer_expression "*(undefined4 **)(pcVar18 + 0x80c4c)" (* "*") (cast_expression "(undefined4 **)(pcVar18 + 0x80c4c)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar18 + 0x80c4c)" (( "(") (binary_expression "pcVar18 + 0x80c4c" (identifier "pcVar18") (+ "+") (number_literal "0x80c4c")) () ")"))))))) () ")")) (argument_list "(100)" (( "(") (number_literal "100") () ")")))) (; ";")) (expression_statement "iVar10 = *(int *)(puVar16 + -0x68);" (assignment_expression "iVar10 = *(int *)(puVar16 + -0x68)" (identifier "iVar10") (= "=") (pointer_expression "*(int *)(puVar16 + -0x68)" (* "*") (cast_expression "(int *)(puVar16 + -0x68)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x68)" (( "(") (binary_expression "puVar16 + -0x68" (identifier "puVar16") (+ "+") (number_literal "-0x68")) () ")"))))) (; ";")) (expression_statement "iVar1 = 0;" (assignment_expression "iVar1 = 0" (identifier "iVar1") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n      iVar12 = iVar1;\n      iVar4 = (**(code **)(iVar10 + -0x7f3c))(*(undefined4 *)(puVar16 + -0x34));\n      piVar6 = (int *)(**(code **)(*(int *)(puVar16 + -0x68) + -0x7f94))();\n      iVar10 = *(int *)(puVar16 + -0x68);\n      iVar1 = iVar12 + 1;\n    } while ((*(ushort *)(*piVar6 + iVar4 * 2) & 0x20) != 0);" (do "do") (compound_statement "{\n      iVar12 = iVar1;\n      iVar4 = (**(code **)(iVar10 + -0x7f3c))(*(undefined4 *)(puVar16 + -0x34));\n      piVar6 = (int *)(**(code **)(*(int *)(puVar16 + -0x68) + -0x7f94))();\n      iVar10 = *(int *)(puVar16 + -0x68);\n      iVar1 = iVar12 + 1;\n    }" ({ "{") (expression_statement "iVar12 = iVar1;" (assignment_expression "iVar12 = iVar1" (identifier "iVar12") (= "=") (identifier "iVar1")) (; ";")) (expression_statement "iVar4 = (**(code **)(iVar10 + -0x7f3c))(*(undefined4 *)(puVar16 + -0x34));" (assignment_expression "iVar4 = (**(code **)(iVar10 + -0x7f3c))(*(undefined4 *)(puVar16 + -0x34))" (identifier "iVar4") (= "=") (call_expression "(**(code **)(iVar10 + -0x7f3c))(*(undefined4 *)(puVar16 + -0x34))" (parenthesized_expression "(**(code **)(iVar10 + -0x7f3c))" (( "(") (pointer_expression "**(code **)(iVar10 + -0x7f3c)" (* "*") (pointer_expression "*(code **)(iVar10 + -0x7f3c)" (* "*") (cast_expression "(code **)(iVar10 + -0x7f3c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar10 + -0x7f3c)" (( "(") (binary_expression "iVar10 + -0x7f3c" (identifier "iVar10") (+ "+") (number_literal "-0x7f3c")) () ")"))))) () ")")) (argument_list "(*(undefined4 *)(puVar16 + -0x34))" (( "(") (pointer_expression "*(undefined4 *)(puVar16 + -0x34)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x34)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x34)" (( "(") (binary_expression "puVar16 + -0x34" (identifier "puVar16") (+ "+") (number_literal "-0x34")) () ")")))) () ")")))) (; ";")) (expression_statement "piVar6 = (int *)(**(code **)(*(int *)(puVar16 + -0x68) + -0x7f94))();" (assignment_expression "piVar6 = (int *)(**(code **)(*(int *)(puVar16 + -0x68) + -0x7f94))()" (identifier "piVar6") (= "=") (cast_expression "(int *)(**(code **)(*(int *)(puVar16 + -0x68) + -0x7f94))()" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(**(code **)(*(int *)(puVar16 + -0x68) + -0x7f94))()" (parenthesized_expression "(**(code **)(*(int *)(puVar16 + -0x68) + -0x7f94))" (( "(") (pointer_expression "**(code **)(*(int *)(puVar16 + -0x68) + -0x7f94)" (* "*") (pointer_expression "*(code **)(*(int *)(puVar16 + -0x68) + -0x7f94)" (* "*") (cast_expression "(code **)(*(int *)(puVar16 + -0x68) + -0x7f94)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(puVar16 + -0x68) + -0x7f94)" (( "(") (binary_expression "*(int *)(puVar16 + -0x68) + -0x7f94" (pointer_expression "*(int *)(puVar16 + -0x68)" (* "*") (cast_expression "(int *)(puVar16 + -0x68)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x68)" (( "(") (binary_expression "puVar16 + -0x68" (identifier "puVar16") (+ "+") (number_literal "-0x68")) () ")")))) (+ "+") (number_literal "-0x7f94")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "iVar10 = *(int *)(puVar16 + -0x68);" (assignment_expression "iVar10 = *(int *)(puVar16 + -0x68)" (identifier "iVar10") (= "=") (pointer_expression "*(int *)(puVar16 + -0x68)" (* "*") (cast_expression "(int *)(puVar16 + -0x68)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x68)" (( "(") (binary_expression "puVar16 + -0x68" (identifier "puVar16") (+ "+") (number_literal "-0x68")) () ")"))))) (; ";")) (expression_statement "iVar1 = iVar12 + 1;" (assignment_expression "iVar1 = iVar12 + 1" (identifier "iVar1") (= "=") (binary_expression "iVar12 + 1" (identifier "iVar12") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((*(ushort *)(*piVar6 + iVar4 * 2) & 0x20) != 0)" (( "(") (binary_expression "(*(ushort *)(*piVar6 + iVar4 * 2) & 0x20) != 0" (parenthesized_expression "(*(ushort *)(*piVar6 + iVar4 * 2) & 0x20)" (( "(") (binary_expression "*(ushort *)(*piVar6 + iVar4 * 2) & 0x20" (pointer_expression "*(ushort *)(*piVar6 + iVar4 * 2)" (* "*") (cast_expression "(ushort *)(*piVar6 + iVar4 * 2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*piVar6 + iVar4 * 2)" (( "(") (binary_expression "*piVar6 + iVar4 * 2" (pointer_expression "*piVar6" (* "*") (identifier "piVar6")) (+ "+") (binary_expression "iVar4 * 2" (identifier "iVar4") (* "*") (number_literal "2"))) () ")")))) (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")")) (; ";")) (expression_statement "puVar17 = *(undefined4 **)(iVar10 + -0x7aa0);" (assignment_expression "puVar17 = *(undefined4 **)(iVar10 + -0x7aa0)" (identifier "puVar17") (= "=") (pointer_expression "*(undefined4 **)(iVar10 + -0x7aa0)" (* "*") (cast_expression "(undefined4 **)(iVar10 + -0x7aa0)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar10 + -0x7aa0)" (( "(") (binary_expression "iVar10 + -0x7aa0" (identifier "iVar10") (+ "+") (number_literal "-0x7aa0")) () ")"))))) (; ";")) (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" (identifier "uVar2") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar3 = 100;" (assignment_expression "uVar3 = 100" (identifier "uVar3") (= "=") (number_literal "100")) (; ";")) (while_statement "while ((iVar4 != -1 && (uVar11 = uVar2 + 1, (*(ushort *)(*piVar6 + iVar4 * 2) & 0x20) == 0))) {\n      *(char *)(iVar9 + uVar2) = (char)iVar4;\n      iVar4 = (**(code **)(iVar10 + -0x7f3c))(*(undefined4 *)(puVar16 + -0x34));\n      iVar10 = *(int *)(puVar16 + -0x68);\n      uVar2 = uVar11;\n      if (uVar3 <= uVar11) {\n        uVar11 = uVar3 * 3 >> 1;\n        iVar9 = (*(code *)*puVar17)(iVar9,uVar3,uVar11);\n        iVar10 = *(int *)(puVar16 + -0x68);\n        uVar3 = uVar11;\n      }\n    }" (while "while") (parenthesized_expression "((iVar4 != -1 && (uVar11 = uVar2 + 1, (*(ushort *)(*piVar6 + iVar4 * 2) & 0x20) == 0)))" (( "(") (parenthesized_expression "(iVar4 != -1 && (uVar11 = uVar2 + 1, (*(ushort *)(*piVar6 + iVar4 * 2) & 0x20) == 0))" (( "(") (binary_expression "iVar4 != -1 && (uVar11 = uVar2 + 1, (*(ushort *)(*piVar6 + iVar4 * 2) & 0x20) == 0)" (binary_expression "iVar4 != -1" (identifier "iVar4") (!= "!=") (number_literal "-1")) (&& "&&") (parenthesized_expression "(uVar11 = uVar2 + 1, (*(ushort *)(*piVar6 + iVar4 * 2) & 0x20) == 0)" (( "(") (comma_expression "uVar11 = uVar2 + 1, (*(ushort *)(*piVar6 + iVar4 * 2) & 0x20) == 0" (assignment_expression "uVar11 = uVar2 + 1" (identifier "uVar11") (= "=") (binary_expression "uVar2 + 1" (identifier "uVar2") (+ "+") (number_literal "1"))) (, ",") (binary_expression "(*(ushort *)(*piVar6 + iVar4 * 2) & 0x20) == 0" (parenthesized_expression "(*(ushort *)(*piVar6 + iVar4 * 2) & 0x20)" (( "(") (binary_expression "*(ushort *)(*piVar6 + iVar4 * 2) & 0x20" (pointer_expression "*(ushort *)(*piVar6 + iVar4 * 2)" (* "*") (cast_expression "(ushort *)(*piVar6 + iVar4 * 2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*piVar6 + iVar4 * 2)" (( "(") (binary_expression "*piVar6 + iVar4 * 2" (pointer_expression "*piVar6" (* "*") (identifier "piVar6")) (+ "+") (binary_expression "iVar4 * 2" (identifier "iVar4") (* "*") (number_literal "2"))) () ")")))) (& "&") (number_literal "0x20")) () ")")) (== "==") (number_literal "0"))) () ")"))) () ")")) () ")")) (compound_statement "{\n      *(char *)(iVar9 + uVar2) = (char)iVar4;\n      iVar4 = (**(code **)(iVar10 + -0x7f3c))(*(undefined4 *)(puVar16 + -0x34));\n      iVar10 = *(int *)(puVar16 + -0x68);\n      uVar2 = uVar11;\n      if (uVar3 <= uVar11) {\n        uVar11 = uVar3 * 3 >> 1;\n        iVar9 = (*(code *)*puVar17)(iVar9,uVar3,uVar11);\n        iVar10 = *(int *)(puVar16 + -0x68);\n        uVar3 = uVar11;\n      }\n    }" ({ "{") (expression_statement "*(char *)(iVar9 + uVar2) = (char)iVar4;" (assignment_expression "*(char *)(iVar9 + uVar2) = (char)iVar4" (pointer_expression "*(char *)(iVar9 + uVar2)" (* "*") (cast_expression "(char *)(iVar9 + uVar2)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + uVar2)" (( "(") (binary_expression "iVar9 + uVar2" (identifier "iVar9") (+ "+") (identifier "uVar2")) () ")")))) (= "=") (cast_expression "(char)iVar4" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "iVar4"))) (; ";")) (expression_statement "iVar4 = (**(code **)(iVar10 + -0x7f3c))(*(undefined4 *)(puVar16 + -0x34));" (assignment_expression "iVar4 = (**(code **)(iVar10 + -0x7f3c))(*(undefined4 *)(puVar16 + -0x34))" (identifier "iVar4") (= "=") (call_expression "(**(code **)(iVar10 + -0x7f3c))(*(undefined4 *)(puVar16 + -0x34))" (parenthesized_expression "(**(code **)(iVar10 + -0x7f3c))" (( "(") (pointer_expression "**(code **)(iVar10 + -0x7f3c)" (* "*") (pointer_expression "*(code **)(iVar10 + -0x7f3c)" (* "*") (cast_expression "(code **)(iVar10 + -0x7f3c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar10 + -0x7f3c)" (( "(") (binary_expression "iVar10 + -0x7f3c" (identifier "iVar10") (+ "+") (number_literal "-0x7f3c")) () ")"))))) () ")")) (argument_list "(*(undefined4 *)(puVar16 + -0x34))" (( "(") (pointer_expression "*(undefined4 *)(puVar16 + -0x34)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x34)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x34)" (( "(") (binary_expression "puVar16 + -0x34" (identifier "puVar16") (+ "+") (number_literal "-0x34")) () ")")))) () ")")))) (; ";")) (expression_statement "iVar10 = *(int *)(puVar16 + -0x68);" (assignment_expression "iVar10 = *(int *)(puVar16 + -0x68)" (identifier "iVar10") (= "=") (pointer_expression "*(int *)(puVar16 + -0x68)" (* "*") (cast_expression "(int *)(puVar16 + -0x68)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x68)" (( "(") (binary_expression "puVar16 + -0x68" (identifier "puVar16") (+ "+") (number_literal "-0x68")) () ")"))))) (; ";")) (expression_statement "uVar2 = uVar11;" (assignment_expression "uVar2 = uVar11" (identifier "uVar2") (= "=") (identifier "uVar11")) (; ";")) (if_statement "if (uVar3 <= uVar11) {\n        uVar11 = uVar3 * 3 >> 1;\n        iVar9 = (*(code *)*puVar17)(iVar9,uVar3,uVar11);\n        iVar10 = *(int *)(puVar16 + -0x68);\n        uVar3 = uVar11;\n      }" (if "if") (parenthesized_expression "(uVar3 <= uVar11)" (( "(") (binary_expression "uVar3 <= uVar11" (identifier "uVar3") (<= "<=") (identifier "uVar11")) () ")")) (compound_statement "{\n        uVar11 = uVar3 * 3 >> 1;\n        iVar9 = (*(code *)*puVar17)(iVar9,uVar3,uVar11);\n        iVar10 = *(int *)(puVar16 + -0x68);\n        uVar3 = uVar11;\n      }" ({ "{") (expression_statement "uVar11 = uVar3 * 3 >> 1;" (assignment_expression "uVar11 = uVar3 * 3 >> 1" (identifier "uVar11") (= "=") (binary_expression "uVar3 * 3 >> 1" (binary_expression "uVar3 * 3" (identifier "uVar3") (* "*") (number_literal "3")) (>> ">>") (number_literal "1"))) (; ";")) (expression_statement "iVar9 = (*(code *)*puVar17)(iVar9,uVar3,uVar11);" (assignment_expression "iVar9 = (*(code *)*puVar17)(iVar9,uVar3,uVar11)" (identifier "iVar9") (= "=") (call_expression "(*(code *)*puVar17)(iVar9,uVar3,uVar11)" (parenthesized_expression "(*(code *)*puVar17)" (( "(") (pointer_expression "*(code *)*puVar17" (* "*") (cast_expression "(code *)*puVar17" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar17" (* "*") (identifier "puVar17")))) () ")")) (argument_list "(iVar9,uVar3,uVar11)" (( "(") (identifier "iVar9") (, ",") (identifier "uVar3") (, ",") (identifier "uVar11") () ")")))) (; ";")) (expression_statement "iVar10 = *(int *)(puVar16 + -0x68);" (assignment_expression "iVar10 = *(int *)(puVar16 + -0x68)" (identifier "iVar10") (= "=") (pointer_expression "*(int *)(puVar16 + -0x68)" (* "*") (cast_expression "(int *)(puVar16 + -0x68)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x68)" (( "(") (binary_expression "puVar16 + -0x68" (identifier "puVar16") (+ "+") (number_literal "-0x68")) () ")"))))) (; ";")) (expression_statement "uVar3 = uVar11;" (assignment_expression "uVar3 = uVar11" (identifier "uVar3") (= "=") (identifier "uVar11")) (; ";")) (} "}"))) (} "}"))) (expression_statement "(**(code **)(iVar10 + -0x7d5c))(iVar4,*(undefined4 *)(puVar16 + -0x34));" (call_expression "(**(code **)(iVar10 + -0x7d5c))(iVar4,*(undefined4 *)(puVar16 + -0x34))" (parenthesized_expression "(**(code **)(iVar10 + -0x7d5c))" (( "(") (pointer_expression "**(code **)(iVar10 + -0x7d5c)" (* "*") (pointer_expression "*(code **)(iVar10 + -0x7d5c)" (* "*") (cast_expression "(code **)(iVar10 + -0x7d5c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar10 + -0x7d5c)" (( "(") (binary_expression "iVar10 + -0x7d5c" (identifier "iVar10") (+ "+") (number_literal "-0x7d5c")) () ")"))))) () ")")) (argument_list "(iVar4,*(undefined4 *)(puVar16 + -0x34))" (( "(") (identifier "iVar4") (, ",") (pointer_expression "*(undefined4 *)(puVar16 + -0x34)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x34)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x34)" (( "(") (binary_expression "puVar16 + -0x34" (identifier "puVar16") (+ "+") (number_literal "-0x34")) () ")")))) () ")"))) (; ";")) (expression_statement "iVar1 = *(int *)(puVar16 + -0x68);" (assignment_expression "iVar1 = *(int *)(puVar16 + -0x68)" (identifier "iVar1") (= "=") (pointer_expression "*(int *)(puVar16 + -0x68)" (* "*") (cast_expression "(int *)(puVar16 + -0x68)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x68)" (( "(") (binary_expression "puVar16 + -0x68" (identifier "puVar16") (+ "+") (number_literal "-0x68")) () ")"))))) (; ";")) (expression_statement "uVar11 = uVar3;" (assignment_expression "uVar11 = uVar3" (identifier "uVar11") (= "=") (identifier "uVar3")) (; ";")) (if_statement "if (uVar3 <= uVar2) {\n      uVar11 = uVar3 * 3 >> 1;\n      iVar9 = (*(code *)**(undefined4 **)(iVar1 + -0x7aa0))(iVar9,uVar3,uVar11);\n      iVar1 = *(int *)(puVar16 + -0x68);\n    }" (if "if") (parenthesized_expression "(uVar3 <= uVar2)" (( "(") (binary_expression "uVar3 <= uVar2" (identifier "uVar3") (<= "<=") (identifier "uVar2")) () ")")) (compound_statement "{\n      uVar11 = uVar3 * 3 >> 1;\n      iVar9 = (*(code *)**(undefined4 **)(iVar1 + -0x7aa0))(iVar9,uVar3,uVar11);\n      iVar1 = *(int *)(puVar16 + -0x68);\n    }" ({ "{") (expression_statement "uVar11 = uVar3 * 3 >> 1;" (assignment_expression "uVar11 = uVar3 * 3 >> 1" (identifier "uVar11") (= "=") (binary_expression "uVar3 * 3 >> 1" (binary_expression "uVar3 * 3" (identifier "uVar3") (* "*") (number_literal "3")) (>> ">>") (number_literal "1"))) (; ";")) (expression_statement "iVar9 = (*(code *)**(undefined4 **)(iVar1 + -0x7aa0))(iVar9,uVar3,uVar11);" (assignment_expression "iVar9 = (*(code *)**(undefined4 **)(iVar1 + -0x7aa0))(iVar9,uVar3,uVar11)" (identifier "iVar9") (= "=") (call_expression "(*(code *)**(undefined4 **)(iVar1 + -0x7aa0))(iVar9,uVar3,uVar11)" (parenthesized_expression "(*(code *)**(undefined4 **)(iVar1 + -0x7aa0))" (( "(") (pointer_expression "*(code *)**(undefined4 **)(iVar1 + -0x7aa0)" (* "*") (cast_expression "(code *)**(undefined4 **)(iVar1 + -0x7aa0)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "**(undefined4 **)(iVar1 + -0x7aa0)" (* "*") (pointer_expression "*(undefined4 **)(iVar1 + -0x7aa0)" (* "*") (cast_expression "(undefined4 **)(iVar1 + -0x7aa0)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar1 + -0x7aa0)" (( "(") (binary_expression "iVar1 + -0x7aa0" (identifier "iVar1") (+ "+") (number_literal "-0x7aa0")) () ")"))))))) () ")")) (argument_list "(iVar9,uVar3,uVar11)" (( "(") (identifier "iVar9") (, ",") (identifier "uVar3") (, ",") (identifier "uVar11") () ")")))) (; ";")) (expression_statement "iVar1 = *(int *)(puVar16 + -0x68);" (assignment_expression "iVar1 = *(int *)(puVar16 + -0x68)" (identifier "iVar1") (= "=") (pointer_expression "*(int *)(puVar16 + -0x68)" (* "*") (cast_expression "(int *)(puVar16 + -0x68)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x68)" (( "(") (binary_expression "puVar16 + -0x68" (identifier "puVar16") (+ "+") (number_literal "-0x68")) () ")"))))) (; ";")) (} "}"))) (expression_statement "*(undefined1 *)(iVar9 + uVar2) = 0;" (assignment_expression "*(undefined1 *)(iVar9 + uVar2) = 0" (pointer_expression "*(undefined1 *)(iVar9 + uVar2)" (* "*") (cast_expression "(undefined1 *)(iVar9 + uVar2)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + uVar2)" (( "(") (binary_expression "iVar9 + uVar2" (identifier "iVar9") (+ "+") (identifier "uVar2")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar1 = (**(code **)(iVar1 + -0x7ae8))\n                      (*(undefined4 *)(puVar16 + -0x38),iVar9,*(undefined4 *)(puVar16 + -0x30));" (assignment_expression "iVar1 = (**(code **)(iVar1 + -0x7ae8))\n                      (*(undefined4 *)(puVar16 + -0x38),iVar9,*(undefined4 *)(puVar16 + -0x30))" (identifier "iVar1") (= "=") (call_expression "(**(code **)(iVar1 + -0x7ae8))\n                      (*(undefined4 *)(puVar16 + -0x38),iVar9,*(undefined4 *)(puVar16 + -0x30))" (parenthesized_expression "(**(code **)(iVar1 + -0x7ae8))" (( "(") (pointer_expression "**(code **)(iVar1 + -0x7ae8)" (* "*") (pointer_expression "*(code **)(iVar1 + -0x7ae8)" (* "*") (cast_expression "(code **)(iVar1 + -0x7ae8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar1 + -0x7ae8)" (( "(") (binary_expression "iVar1 + -0x7ae8" (identifier "iVar1") (+ "+") (number_literal "-0x7ae8")) () ")"))))) () ")")) (argument_list "(*(undefined4 *)(puVar16 + -0x38),iVar9,*(undefined4 *)(puVar16 + -0x30))" (( "(") (pointer_expression "*(undefined4 *)(puVar16 + -0x38)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x38)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x38)" (( "(") (binary_expression "puVar16 + -0x38" (identifier "puVar16") (+ "+") (number_literal "-0x38")) () ")")))) (, ",") (identifier "iVar9") (, ",") (pointer_expression "*(undefined4 *)(puVar16 + -0x30)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x30)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x30)" (( "(") (binary_expression "puVar16 + -0x30" (identifier "puVar16") (+ "+") (number_literal "-0x30")) () ")")))) () ")")))) (; ";")) (expression_statement "(*(code *)**(undefined4 **)(*(int *)(puVar16 + -0x68) + -0x7e70))(iVar9,uVar11);" (call_expression "(*(code *)**(undefined4 **)(*(int *)(puVar16 + -0x68) + -0x7e70))(iVar9,uVar11)" (parenthesized_expression "(*(code *)**(undefined4 **)(*(int *)(puVar16 + -0x68) + -0x7e70))" (( "(") (pointer_expression "*(code *)**(undefined4 **)(*(int *)(puVar16 + -0x68) + -0x7e70)" (* "*") (cast_expression "(code *)**(undefined4 **)(*(int *)(puVar16 + -0x68) + -0x7e70)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "**(undefined4 **)(*(int *)(puVar16 + -0x68) + -0x7e70)" (* "*") (pointer_expression "*(undefined4 **)(*(int *)(puVar16 + -0x68) + -0x7e70)" (* "*") (cast_expression "(undefined4 **)(*(int *)(puVar16 + -0x68) + -0x7e70)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(puVar16 + -0x68) + -0x7e70)" (( "(") (binary_expression "*(int *)(puVar16 + -0x68) + -0x7e70" (pointer_expression "*(int *)(puVar16 + -0x68)" (* "*") (cast_expression "(int *)(puVar16 + -0x68)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x68)" (( "(") (binary_expression "puVar16 + -0x68" (identifier "puVar16") (+ "+") (number_literal "-0x68")) () ")")))) (+ "+") (number_literal "-0x7e70")) () ")"))))))) () ")")) (argument_list "(iVar9,uVar11)" (( "(") (identifier "iVar9") (, ",") (identifier "uVar11") () ")"))) (; ";")) (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" (identifier "iVar9") (= "=") (number_literal "0")) (; ";")) (if_statement "if (iVar1 != -1) {\n      iVar9 = iVar12 + uVar2;\n    }" (if "if") (parenthesized_expression "(iVar1 != -1)" (( "(") (binary_expression "iVar1 != -1" (identifier "iVar1") (!= "!=") (number_literal "-1")) () ")")) (compound_statement "{\n      iVar9 = iVar12 + uVar2;\n    }" ({ "{") (expression_statement "iVar9 = iVar12 + uVar2;" (assignment_expression "iVar9 = iVar12 + uVar2" (identifier "iVar9") (= "=") (binary_expression "iVar12 + uVar2" (identifier "iVar12") (+ "+") (identifier "uVar2"))) (; ";")) (} "}"))) (return_statement "return iVar9;" (return "return") (identifier "iVar9") (; ";")) (} "}"))) (return_statement "return **(int **)(puVar14 + -0x7b00);" (return "return") (pointer_expression "**(int **)(puVar14 + -0x7b00)" (* "*") (pointer_expression "*(int **)(puVar14 + -0x7b00)" (* "*") (cast_expression "(int **)(puVar14 + -0x7b00)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar14 + -0x7b00)" (( "(") (binary_expression "puVar14 + -0x7b00" (identifier "puVar14") (+ "+") (number_literal "-0x7b00")) () ")"))))) (; ";")) (} "}")))
(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: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) 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: (type_identifier) 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: (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: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (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))) (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: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (goto_statement label: (statement_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))) (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list))))))) 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: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal)) right: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (unary_expression argument: (parenthesized_expression (binary_expression left: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) 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))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (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: (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))) (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)))) (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: (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: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (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)))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_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 (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (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: (parenthesized_expression (binary_expression left: (identifier) right: (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: (identifier))) (expression_statement (assignment_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: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (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: (identifier)))) condition: (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)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (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 (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 (subscript_expression argument: (identifier) index: (number_literal)) (number_literal) (identifier) (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))))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))))) consequence: (compound_statement (return_statement (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (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: (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: (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)))))))) (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: (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (unary_expression argument: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal)) 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: (pointer_expression argument: (identifier)) right: (number_literal)))))))) (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 (subscript_expression argument: (identifier) index: (number_literal)) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (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)))))) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (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)))))) right: (number_literal))) (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 (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (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: (number_literal)))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (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: (binary_expression left: (identifier) right: (number_literal)))) (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))))) 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: (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: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (unary_expression argument: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))))) (expression_statement (assignment_expression left: (identifier) right: (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: (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: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (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: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (unary_expression argument: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (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 (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: (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: (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: (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: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator 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: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (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: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (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 (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (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 (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))) (expression_statement (assignment_expression left: (identifier) right: (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))))) arguments: (argument_list))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))))) right: (number_literal))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (while_statement condition: (parenthesized_expression (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) right: (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))))) right: (number_literal))) right: (number_literal))))))) body: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (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 (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) arguments: (argument_list (identifier) (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (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) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (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))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (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: (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 (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) (identifier) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))))))) arguments: (argument_list (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))))) (return_statement (identifier)))) (return_statement (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))))))))))

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

{
  int iVar1;
  uint uVar2;
  uint uVar3;
  int iVar4;
  int *piVar5;
  int *piVar6;
  undefined1 *puVar7;
  int *piVar8;
  int iVar9;
  int iVar10;
  int unaff_s1;
  int *unaff_s2;
  undefined4 unaff_s4;
  uint uVar11;
  undefined4 unaff_s5;
  undefined4 unaff_s6;
  int iVar12;
  undefined4 unaff_s7;
  undefined *puVar13;
  undefined *puVar14;
  undefined1 *puVar15;
  undefined1 *puVar16;
  undefined4 *puVar17;
  code *pcVar18;
  undefined4 uVar19;
  undefined1 auStack_38 [16];
  int *local_20;
  
  puVar16 = auStack_38;
  puVar15 = auStack_38;
  iVar1 = *(int *)PTR___stack_chk_guard_0009b540;
  iVar9 = param_2[1];
  if (iVar9 < 1) {
    if (-1 < iVar9) {
      param_1[1] = 0;
      param_1[2] = 0;
      local_20 = param_1;
      goto LAB_0001a69c;
    }
    (*(code *)PTR___gmp_sqrt_of_negative_0009b1cc)();
LAB_0001a654:
    param_3 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009b2f0)();
  }
  else {
    local_20 = (int *)0x0;
    uVar2 = param_2[2];
    unaff_s2 = (int *)param_2[3];
    uVar3 = uVar2 & 1;
    unaff_s1 = *param_1 * 2 - uVar3;
    param_1[1] = *param_1;
    param_1[2] = (int)(uVar2 + uVar3) / 2;
    if (0x7f00 < (uint)(unaff_s1 * 4)) goto LAB_0001a654;
    iVar10 = -(unaff_s1 * 4 + 7U & 0xfffffff8);
    puVar15 = auStack_38 + iVar10;
    param_3 = (int *)(&stack0xffffffd8 + iVar10);
  }
  if (unaff_s1 < iVar9) {
    if (unaff_s1 != 0) {
      iVar10 = iVar9 - unaff_s1;
      iVar9 = iVar10 * 4;
      unaff_s2 = unaff_s2 + iVar10;
      iVar4 = unaff_s1 + -1;
      iVar10 = *unaff_s2;
      piVar6 = param_3;
      if (iVar4 != 0) {
        piVar8 = unaff_s2 + 1;
        do {
          *piVar6 = iVar10;
          unaff_s2 = piVar8 + 1;
          iVar4 = iVar4 + -1;
          iVar10 = *piVar8;
          piVar6 = piVar6 + 1;
          piVar8 = unaff_s2;
        } while (iVar4 != 0);
        piVar6 = param_3 + unaff_s1 + 0x3fffffff;
      }
      *piVar6 = iVar10;
    }
  }
  else {
    iVar10 = unaff_s1 - iVar9;
    piVar6 = param_3;
    if (iVar9 != unaff_s1) {
      do {
        iVar10 = iVar10 + -1;
        *piVar6 = 0;
        piVar6 = piVar6 + 1;
      } while (iVar10 != 0);
    }
    iVar4 = iVar9 + -1;
    piVar6 = param_3 + (unaff_s1 - iVar9);
    iVar10 = *unaff_s2;
    if (iVar4 != 0) {
      piVar8 = piVar6;
      piVar5 = unaff_s2 + 1;
      do {
        *piVar8 = iVar10;
        unaff_s2 = piVar5 + 1;
        iVar4 = iVar4 + -1;
        iVar10 = *piVar5;
        piVar8 = piVar8 + 1;
        piVar5 = unaff_s2;
      } while (iVar4 != 0);
      iVar4 = iVar9 + 0x3fffffff;
      iVar9 = iVar4 * 4;
      piVar6 = piVar6 + iVar4;
    }
    *piVar6 = iVar10;
  }
  param_2 = (int *)0x0;
  (*(code *)PTR___gmpn_sqrtrem_0009b0e0)(param_1[3],0,param_3,unaff_s1);
  puVar16 = puVar15;
  if (local_20 != (int *)0x0) {
    (*(code *)PTR___gmp_tmp_reentrant_free_0009b614)();
  }
LAB_0001a69c:
  if (iVar1 == *(int *)PTR___stack_chk_guard_0009b540) {
    return *(int *)PTR___stack_chk_guard_0009b540;
  }
  pcVar18 = __gmpf_random2;
  puVar13 = PTR___stack_chk_fail_0009b4d0;
  (*(code *)PTR___stack_chk_fail_0009b4d0)();
  puVar14 = puVar13 + 0x888e0;
  *(code **)(puVar16 + -4) = pcVar18;
  *(int **)(puVar16 + -8) = param_1;
  *(int **)(puVar16 + -0xc) = unaff_s2;
  *(int *)(puVar16 + -0x10) = unaff_s1;
  *(int *)(puVar16 + -0x14) = iVar9;
  *(undefined **)(puVar16 + -0x28) = puVar14;
  *(undefined4 *)(puVar16 + -0x1c) = **(undefined4 **)(puVar13 + 0x80de0);
  if (param_2 == (int *)0x0) {
    local_20[2] = 0;
    local_20[1] = 0;
    puVar7 = (undefined1 *)0x0;
    piVar6 = local_20;
    piVar8 = param_3;
  }
  else {
    unaff_s2 = param_2;
    if ((int)param_2 < 0) {
      unaff_s2 = (int *)-(int)param_2;
    }
    if (*local_20 + 1 <= (int)unaff_s2) {
      unaff_s2 = (int *)(*local_20 + 1);
    }
    (**(code **)(puVar13 + 0x809f4))(local_20[3],unaff_s2);
    iVar1 = *(int *)(puVar16 + -0x28);
    if (**(char **)(iVar1 + -0x7eb8) == '\0') {
      **(undefined1 **)(iVar1 + -0x7eb8) = 1;
      (**(code **)(iVar1 + -0x7a40))(*(undefined4 *)(iVar1 + -0x7dc4));
      iVar1 = *(int *)(*(int *)(puVar16 + -0x28) + -0x7dc4);
    }
    else {
      iVar1 = *(int *)(iVar1 + -0x7dc4);
    }
    piVar8 = (int *)0x20;
    puVar7 = puVar16 + -0x20;
    (**(code **)(*(int *)(iVar1 + 0x10) + 4))();
    puVar14 = *(undefined **)(puVar16 + -0x28);
    piVar5 = param_3;
    if ((int)param_3 < 0) {
      piVar5 = (int *)-(int)param_3;
    }
    uVar2 = (int)piVar5 * 2 + 1;
    piVar6 = *(int **)(puVar16 + -0x20);
    if (uVar2 == 0) {
      trap(7);
    }
    local_20[2] = (uint)piVar6 % uVar2 - (int)piVar5;
    if ((int)param_2 < 0) {
      unaff_s2 = (int *)-(int)unaff_s2;
    }
    local_20[1] = (int)unaff_s2;
    param_1 = param_3;
  }
  if (*(int *)(puVar16 + -0x1c) != **(int **)(puVar14 + -0x7b00)) {
    pcVar18 = *(code **)(puVar14 + -0x7b70);
    uVar19 = 0x1a8b8;
    (*pcVar18)();
    *(undefined4 *)(puVar16 + -0x3c) = uVar19;
    *(undefined1 **)(puVar16 + -0x40) = auStack_38;
    *(undefined4 *)(puVar16 + -0x44) = unaff_s7;
    *(undefined4 *)(puVar16 + -0x48) = unaff_s6;
    *(undefined4 *)(puVar16 + -0x4c) = unaff_s5;
    *(undefined4 *)(puVar16 + -0x50) = unaff_s4;
    *(int **)(puVar16 + -0x54) = param_1;
    *(int **)(puVar16 + -0x58) = unaff_s2;
    *(int **)(puVar16 + -0x5c) = param_2;
    *(int **)(puVar16 + -0x60) = local_20;
    *(code **)(puVar16 + -0x68) = pcVar18 + 0x88780;
    *(int **)(puVar16 + -0x38) = piVar6;
    *(undefined1 **)(puVar16 + -0x34) = puVar7;
    *(int **)(puVar16 + -0x30) = piVar8;
    if (puVar7 == (undefined1 *)0x0) {
      *(undefined4 *)(puVar16 + -0x34) = **(undefined4 **)(pcVar18 + 0x80a54);
    }
    iVar9 = (*(code *)**(undefined4 **)(pcVar18 + 0x80c4c))(100);
    iVar10 = *(int *)(puVar16 + -0x68);
    iVar1 = 0;
    do {
      iVar12 = iVar1;
      iVar4 = (**(code **)(iVar10 + -0x7f3c))(*(undefined4 *)(puVar16 + -0x34));
      piVar6 = (int *)(**(code **)(*(int *)(puVar16 + -0x68) + -0x7f94))();
      iVar10 = *(int *)(puVar16 + -0x68);
      iVar1 = iVar12 + 1;
    } while ((*(ushort *)(*piVar6 + iVar4 * 2) & 0x20) != 0);
    puVar17 = *(undefined4 **)(iVar10 + -0x7aa0);
    uVar2 = 0;
    uVar3 = 100;
    while ((iVar4 != -1 && (uVar11 = uVar2 + 1, (*(ushort *)(*piVar6 + iVar4 * 2) & 0x20) == 0))) {
      *(char *)(iVar9 + uVar2) = (char)iVar4;
      iVar4 = (**(code **)(iVar10 + -0x7f3c))(*(undefined4 *)(puVar16 + -0x34));
      iVar10 = *(int *)(puVar16 + -0x68);
      uVar2 = uVar11;
      if (uVar3 <= uVar11) {
        uVar11 = uVar3 * 3 >> 1;
        iVar9 = (*(code *)*puVar17)(iVar9,uVar3,uVar11);
        iVar10 = *(int *)(puVar16 + -0x68);
        uVar3 = uVar11;
      }
    }
    (**(code **)(iVar10 + -0x7d5c))(iVar4,*(undefined4 *)(puVar16 + -0x34));
    iVar1 = *(int *)(puVar16 + -0x68);
    uVar11 = uVar3;
    if (uVar3 <= uVar2) {
      uVar11 = uVar3 * 3 >> 1;
      iVar9 = (*(code *)**(undefined4 **)(iVar1 + -0x7aa0))(iVar9,uVar3,uVar11);
      iVar1 = *(int *)(puVar16 + -0x68);
    }
    *(undefined1 *)(iVar9 + uVar2) = 0;
    iVar1 = (**(code **)(iVar1 + -0x7ae8))
                      (*(undefined4 *)(puVar16 + -0x38),iVar9,*(undefined4 *)(puVar16 + -0x30));
    (*(code *)**(undefined4 **)(*(int *)(puVar16 + -0x68) + -0x7e70))(iVar9,uVar11);
    iVar9 = 0;
    if (iVar1 != -1) {
      iVar9 = iVar12 + uVar2;
    }
    return iVar9;
  }
  return **(int **)(puVar14 + -0x7b00);
}

